[{"data":1,"prerenderedAt":12282},["ShallowReactive",2],{"navigation_docs":3,"-html-css-22a-css-nesting-modern-syntax":2784,"-html-css-22a-css-nesting-modern-syntax-surround":12277},[4,1640,1721,2175,2203,2410,2476,2526,2583,2617,2743,2780],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"C#","i-devicon-csharp","/csharp","01.csharp",[10,13,60,90,120,202,219,253,379,404,457,650,1346,1636],{"title":11,"path":7,"stem":12},"C# Roadmap","01.csharp/index",{"title":14,"icon":15,"path":16,"stem":17,"children":18,"page":59},"Fundamentals","i-lucide-book-open","/csharp/fundamentals","01.csharp/01.fundamentals",[19,23,27,31,35,39,43,47,51,55],{"title":20,"path":21,"stem":22},"Вступ до екосистеми .NET","/csharp/fundamentals/introduction-to-ecosystem","01.csharp/01.fundamentals/01.introduction-to-ecosystem",{"title":24,"path":25,"stem":26},"Структура програми на C#","/csharp/fundamentals/program-structure","01.csharp/01.fundamentals/02.program-structure",{"title":28,"path":29,"stem":30},"Змінні та Типи Даних","/csharp/fundamentals/variables-data-types","01.csharp/01.fundamentals/03.variables-data-types",{"title":32,"path":33,"stem":34},"Масиви","/csharp/fundamentals/arrays","01.csharp/01.fundamentals/04.arrays",{"title":36,"path":37,"stem":38},"Strings & Text Handling","/csharp/fundamentals/strings-text-handling","01.csharp/01.fundamentals/05.strings-text-handling",{"title":40,"path":41,"stem":42},"Дати і Час","/csharp/fundamentals/dates-time-handling","01.csharp/01.fundamentals/06.dates-time-handling",{"title":44,"path":45,"stem":46},"Потік Керування","/csharp/fundamentals/control-flow","01.csharp/01.fundamentals/07.control-flow",{"title":48,"path":49,"stem":50},"Методи","/csharp/fundamentals/methods","01.csharp/01.fundamentals/08.methods",{"title":52,"path":53,"stem":54},"Основи Відлагодження","/csharp/fundamentals/debugging-basics","01.csharp/01.fundamentals/09.debugging-basics",{"title":56,"path":57,"stem":58},"Інтерактивна Консоль (Classic)","/csharp/fundamentals/interactive-console","01.csharp/01.fundamentals/10.interactive-console",false,{"title":61,"icon":62,"path":63,"stem":64,"children":65,"page":59},"OOP","i-lucide-box","/csharp/oop","01.csharp/02.oop",[66,70,74,78,82,86],{"title":67,"path":68,"stem":69},"Package Management (Управління Пакетами)","/csharp/oop/package-management","01.csharp/02.oop/01.package-management",{"title":71,"path":72,"stem":73},"Класи та Об'єкти","/csharp/oop/classes-objects","01.csharp/02.oop/02.classes-objects",{"title":75,"path":76,"stem":77},"Властивості та Поля","/csharp/oop/properties-fields","01.csharp/02.oop/03.properties-fields",{"title":79,"path":80,"stem":81},"Стовпи ООП","/csharp/oop/oop-pillars","01.csharp/02.oop/04.oop-pillars",{"title":83,"path":84,"stem":85},"Advanced Types","/csharp/oop/advanced-types","01.csharp/02.oop/05.advanced-types",{"title":87,"path":88,"stem":89},"Namespaces (Простори Імен)","/csharp/oop/namespaces","01.csharp/02.oop/06.namespaces",{"title":91,"icon":92,"path":93,"stem":94,"children":95,"page":59},"Advanced Core","i-lucide-zap","/csharp/advanced-core","01.csharp/03.advanced-core",[96,100,104,108,112,116],{"title":97,"path":98,"stem":99},"Generics (Узагальнення)","/csharp/advanced-core/generics","01.csharp/03.advanced-core/01.generics",{"title":101,"path":102,"stem":103},"Делегати, Події та Лямбда-вирази","/csharp/advanced-core/delegates-events-lambdas","01.csharp/03.advanced-core/02.delegates-events-lambdas",{"title":105,"path":106,"stem":107},"Interfaces Deep Dive (Інтерфейси: Поглиблений Розгляд)","/csharp/advanced-core/interfaces-deep-dive","01.csharp/03.advanced-core/03.interfaces-deep-dive",{"title":109,"path":110,"stem":111},"Обробка Винятків","/csharp/advanced-core/exception-handling","01.csharp/03.advanced-core/04.exception-handling",{"title":113,"path":114,"stem":115},"Pattern Matching","/csharp/advanced-core/pattern-matching","01.csharp/03.advanced-core/05.pattern-matching",{"title":117,"path":118,"stem":119},"Додаткові Можливості C#","/csharp/advanced-core/additional-features","01.csharp/03.advanced-core/06.additional-features",{"title":121,"icon":122,"path":123,"stem":124,"children":125,"page":59},"Architecture Best Practices","i-lucide-building-2","/csharp/architecture-best-practices","01.csharp/04.architecture-best-practices",[126,130,149,153,157,161,165,169],{"title":127,"path":128,"stem":129},"Software Design Principles (Частина 1)","/csharp/architecture-best-practices/software-design-principles","01.csharp/04.architecture-best-practices/01.software-design-principles",{"title":131,"icon":132,"path":133,"stem":134,"children":135,"page":59},"Design Patterns","i-lucide-folder","/csharp/architecture-best-practices/design-patterns","01.csharp/04.architecture-best-practices/02.design-patterns",[136],{"title":137,"icon":132,"path":138,"stem":139,"children":140,"page":59},"Creational","/csharp/architecture-best-practices/design-patterns/creational","01.csharp/04.architecture-best-practices/02.design-patterns/creational",[141,145],{"title":142,"path":143,"stem":144},"Singleton (Одинак)","/csharp/architecture-best-practices/design-patterns/creational/singleton","01.csharp/04.architecture-best-practices/02.design-patterns/creational/01.singleton",{"title":146,"path":147,"stem":148},"Builder (Будівельник)","/csharp/architecture-best-practices/design-patterns/creational/builder","01.csharp/04.architecture-best-practices/02.design-patterns/creational/02.builder",{"title":150,"path":151,"stem":152},"Building Professional CLIs","/csharp/architecture-best-practices/building-professional-clis","01.csharp/04.architecture-best-practices/03.building-professional-clis",{"title":154,"path":155,"stem":156},"Validation & Flow Control","/csharp/architecture-best-practices/validation-flow-control","01.csharp/04.architecture-best-practices/04.validation-flow-control",{"title":158,"path":159,"stem":160},"The Modern .NET Host (Microsoft.Extensions)","/csharp/architecture-best-practices/modern-dotnet-host","01.csharp/04.architecture-best-practices/05.modern-dotnet-host",{"title":162,"path":163,"stem":164},"Data Mapper: Repository та DAO патерни (Частина 1)","/csharp/architecture-best-practices/data-mapper-part1","01.csharp/04.architecture-best-practices/06.data-mapper-part1",{"title":166,"path":167,"stem":168},"Data Mapper: Repository та DAO патерни (Частина 2)","/csharp/architecture-best-practices/data-mapper-part2","01.csharp/04.architecture-best-practices/07.data-mapper-part2",{"title":170,"icon":132,"path":171,"stem":172,"children":173,"page":59},"Di Ioc","/csharp/architecture-best-practices/di-ioc","01.csharp/04.architecture-best-practices/08.di-ioc",[174,178,182,186,190,194,198],{"title":175,"path":176,"stem":177},"Проблема залежностей та Інверсія Контролю","/csharp/architecture-best-practices/di-ioc/the-dependency-problem","01.csharp/04.architecture-best-practices/08.di-ioc/01.the-dependency-problem",{"title":179,"path":180,"stem":181},"Будуємо власний Service Container","/csharp/architecture-best-practices/di-ioc/build-your-own-container","01.csharp/04.architecture-best-practices/08.di-ioc/02.build-your-own-container",{"title":183,"path":184,"stem":185},"Service Locator: Паттерн та Анти-паттерн","/csharp/architecture-best-practices/di-ioc/service-locator-pattern","01.csharp/04.architecture-best-practices/08.di-ioc/03.service-locator-pattern",{"title":187,"path":188,"stem":189},"Паттерни Dependency Injection","/csharp/architecture-best-practices/di-ioc/dependency-injection-patterns","01.csharp/04.architecture-best-practices/08.di-ioc/04.dependency-injection-patterns",{"title":191,"path":192,"stem":193},"Microsoft DI: IServiceCollection та IServiceProvider","/csharp/architecture-best-practices/di-ioc/microsoft-di-deep-dive","01.csharp/04.architecture-best-practices/08.di-ioc/05.microsoft-di-deep-dive",{"title":195,"path":196,"stem":197},"Service Lifetimes та Scopes","/csharp/architecture-best-practices/di-ioc/service-lifetimes-and-scopes","01.csharp/04.architecture-best-practices/08.di-ioc/06.service-lifetimes-and-scopes",{"title":199,"path":200,"stem":201},"DI Анти-паттерни та Найкращі Практики","/csharp/architecture-best-practices/di-ioc/di-anti-patterns-and-best-practices","01.csharp/04.architecture-best-practices/08.di-ioc/07.di-anti-patterns-and-best-practices",{"title":203,"icon":132,"path":204,"stem":205,"children":206,"page":59},"Standard Library","/csharp/standard-library","01.csharp/05.standard-library",[207,211,215],{"title":208,"path":209,"stem":210},"Collections (Колекції)","/csharp/standard-library/collections","01.csharp/05.standard-library/01.collections",{"title":212,"path":213,"stem":214},"High Performance Types (Високопродуктивні Типи)","/csharp/standard-library/high-performance-types","01.csharp/05.standard-library/02.high-performance-types",{"title":216,"path":217,"stem":218},"LINQ (Language Integrated Query)","/csharp/standard-library/linq","01.csharp/05.standard-library/03.linq",{"title":220,"icon":221,"path":222,"stem":223,"children":224,"page":59},"System Internals Concurrency","i-lucide-server","/csharp/system-internals-concurrency","01.csharp/06.system-internals-concurrency",[225,229,233,237,241,245,249],{"title":226,"path":227,"stem":228},"Memory Management","/csharp/system-internals-concurrency/memory-management","01.csharp/06.system-internals-concurrency/01.memory-management",{"title":230,"path":231,"stem":232},"Reflection API: System.Type та Метадані","/csharp/system-internals-concurrency/reflection-fundamentals","01.csharp/06.system-internals-concurrency/02.reflection-fundamentals",{"title":234,"path":235,"stem":236},"Attributes та Dynamic Language Runtime","/csharp/system-internals-concurrency/attributes-dynamic","01.csharp/06.system-internals-concurrency/03.attributes-dynamic",{"title":238,"path":239,"stem":240},"Expression Trees: Швидка Альтернатива Рефлексії","/csharp/system-internals-concurrency/expression-trees-compiled","01.csharp/06.system-internals-concurrency/04.expression-trees-compiled",{"title":242,"path":243,"stem":244},"Source Generators: Compile-Time Code Generation","/csharp/system-internals-concurrency/source-generators","01.csharp/06.system-internals-concurrency/05.source-generators",{"title":246,"path":247,"stem":248},"Multithreading Fundamentals","/csharp/system-internals-concurrency/multithreading-fundamentals","01.csharp/06.system-internals-concurrency/06.multithreading-fundamentals",{"title":250,"path":251,"stem":252},"Synchronization Primitives","/csharp/system-internals-concurrency/synchronization-primitives","01.csharp/06.system-internals-concurrency/07.synchronization-primitives",{"title":254,"icon":255,"path":256,"stem":257,"children":258,"page":59},"System Programming Windows","i-lucide-cpu","/csharp/system-programming-windows","01.csharp/07.system-programming-windows",[259,263,267,271,275,279,283,287,291,295,299,303,307,311,315,319,323,327,331,335,339,343,347,351,355,359,363,367,371,375],{"title":260,"path":261,"stem":262},"Як Працює Операційна Система","/csharp/system-programming-windows/how-os-works","01.csharp/07.system-programming-windows/01.how-os-works",{"title":264,"path":265,"stem":266},"Процеси в .NET — API та Запуск","/csharp/system-programming-windows/processes-in-dotnet","01.csharp/07.system-programming-windows/02.processes-in-dotnet",{"title":268,"path":269,"stem":270},"Процеси в .NET — IPC та Міжпроцесна Комунікація","/csharp/system-programming-windows/02a.processes-ipc","01.csharp/07.system-programming-windows/02a.processes-ipc",{"title":272,"path":273,"stem":274},"Application Domains та Збірки — AppDomain і AssemblyLoadContext","/csharp/system-programming-windows/appdomains-assemblies","01.csharp/07.system-programming-windows/03.appdomains-assemblies",{"title":276,"path":277,"stem":278},"Application Domains та Збірки — Plug-in Система з Hot-Reload","/csharp/system-programming-windows/03a.appdomains-plugin-system","01.csharp/07.system-programming-windows/03a.appdomains-plugin-system",{"title":280,"path":281,"stem":282},"Потоки — Основи та API Thread","/csharp/system-programming-windows/thread-fundamentals","01.csharp/07.system-programming-windows/04.thread-fundamentals",{"title":284,"path":285,"stem":286},"Потоки — Lifecycle, Пріоритети та Безпечне Завершення","/csharp/system-programming-windows/04a.thread-lifecycle-priorities","01.csharp/07.system-programming-windows/04a.thread-lifecycle-priorities",{"title":288,"path":289,"stem":290},"Проблеми Спільного Стану — Race Condition та Data Race","/csharp/system-programming-windows/shared-state-problems","01.csharp/07.system-programming-windows/05.shared-state-problems",{"title":292,"path":293,"stem":294},"Проблеми Спільного Стану — Memory Model та volatile","/csharp/system-programming-windows/05a.shared-state-memory-model","01.csharp/07.system-programming-windows/05a.shared-state-memory-model",{"title":296,"path":297,"stem":298},"Синхронізація — Monitor, lock та еволюція примітивів","/csharp/system-programming-windows/synchronization-fundamentals","01.csharp/07.system-programming-windows/06.synchronization-fundamentals",{"title":300,"path":301,"stem":302},"Синхронізація — Наскрізний Приклад та Deadlock Detection","/csharp/system-programming-windows/06a.synchronization-walkthrough","01.csharp/07.system-programming-windows/06a.synchronization-walkthrough",{"title":304,"path":305,"stem":306},"Синхронізація — Mutex, Semaphore та Event-Based Primitives","/csharp/system-programming-windows/synchronization-advanced","01.csharp/07.system-programming-windows/07.synchronization-advanced",{"title":308,"path":309,"stem":310},"Синхронізація — Interlocked, Volatile та Lock-Free Структури","/csharp/system-programming-windows/07a.synchronization-advanced-walkthrough","01.csharp/07.system-programming-windows/07a.synchronization-advanced-walkthrough",{"title":312,"path":313,"stem":314},"Interlocked, CAS та Lock-Free Структури","/csharp/system-programming-windows/interlocked-cas-lockfree","01.csharp/07.system-programming-windows/08.interlocked-cas-lockfree",{"title":316,"path":317,"stem":318},"Volatile, Memory Model та Spinning","/csharp/system-programming-windows/08a.volatile-memory-model","01.csharp/07.system-programming-windows/08a.volatile-memory-model",{"title":320,"path":321,"stem":322},"ThreadPool — Пул Потоків для Ефективного Виконання","/csharp/system-programming-windows/thread-pool","01.csharp/07.system-programming-windows/09.thread-pool",{"title":324,"path":325,"stem":326},"ThreadPool — Просунуті Сценарії та Внутрішня Будова","/csharp/system-programming-windows/09a.thread-pool-advanced","01.csharp/07.system-programming-windows/09a.thread-pool-advanced",{"title":328,"path":329,"stem":330},"Concurrent та Immutable Collections","/csharp/system-programming-windows/concurrent-collections","01.csharp/07.system-programming-windows/10.concurrent-collections",{"title":332,"path":333,"stem":334},"TPL, Task та Композиція — Від Thread до Task","/csharp/system-programming-windows/tpl-parallel-plinq","01.csharp/07.system-programming-windows/11.tpl-parallel-plinq",{"title":336,"path":337,"stem":338},"Parallel Class та PLINQ — Data Parallelism","/csharp/system-programming-windows/11a.tpl-parallel-plinq-advanced","01.csharp/07.system-programming-windows/11a.tpl-parallel-plinq-advanced",{"title":340,"path":341,"stem":342},"Async/Await — Фундамент Асинхронного Програмування","/csharp/system-programming-windows/async-fundamentals","01.csharp/07.system-programming-windows/12.async-fundamentals",{"title":344,"path":345,"stem":346},"SynchronizationContext та ConfigureAwait — Контекст Виконання","/csharp/system-programming-windows/async-context-configureawait","01.csharp/07.system-programming-windows/13.async-context-configureawait",{"title":348,"path":349,"stem":350},"Async — Просунуті Паттерни","/csharp/system-programming-windows/async-advanced","01.csharp/07.system-programming-windows/14.async-advanced",{"title":352,"path":353,"stem":354},"System.Threading.Channels — Async Producer-Consumer","/csharp/system-programming-windows/channels","01.csharp/07.system-programming-windows/15.channels",{"title":356,"path":357,"stem":358},"Асинхронна Синхронізація","/csharp/system-programming-windows/async-synchronization","01.csharp/07.system-programming-windows/16.async-synchronization",{"title":360,"path":361,"stem":362},"Unsafe Code та Вказівники","/csharp/system-programming-windows/unsafe-code","01.csharp/07.system-programming-windows/17.unsafe-code",{"title":364,"path":365,"stem":366},"P/Invoke та Windows API — Міст між .NET та Native Code","/csharp/system-programming-windows/pinvoke-winapi","01.csharp/07.system-programming-windows/18.pinvoke-winapi",{"title":368,"path":369,"stem":370},"Реєстр Windows — Центральна База Конфігурації Системи","/csharp/system-programming-windows/windows-registry","01.csharp/07.system-programming-windows/19.windows-registry",{"title":372,"path":373,"stem":374},"Windows Hooks, Hotkeys та Services — Глибока Інтеграція з ОС","/csharp/system-programming-windows/windows-hooks-services","01.csharp/07.system-programming-windows/20.windows-hooks-services",{"title":376,"path":377,"stem":378},"Системне Програмування C# (Windows) — 07.system-programming-windows","/csharp/system-programming-windows/implementation_plan","01.csharp/07.system-programming-windows/implementation_plan",{"title":380,"icon":132,"path":381,"stem":382,"children":383,"page":59},"Io","/csharp/io","01.csharp/08.io",[384,388,392,396,400],{"title":385,"path":386,"stem":387},"8.1.1. Основи роботи з файловою системою","/csharp/io/file-system-basics","01.csharp/08.io/01.file-system-basics",{"title":389,"path":390,"stem":391},"8.1.2. Потоки (Streams) та Серіалізація Даних","/csharp/io/streams-serialization","01.csharp/08.io/02.streams-serialization",{"title":393,"path":394,"stem":395},"8.2.1. JSON Serialization з System.Text.Json","/csharp/io/json-serialization","01.csharp/08.io/03.json-serialization",{"title":397,"path":398,"stem":399},"8.2.2. XML Serialization та LINQ to XML","/csharp/io/xml-serialization","01.csharp/08.io/04.xml-serialization",{"title":401,"path":402,"stem":403},"8.2.3. Binary Serialization: MessagePack та Protocol Buffers","/csharp/io/binary-serialization","01.csharp/08.io/05.binary-serialization",{"title":405,"icon":132,"path":406,"stem":407,"children":408,"page":59},"Ado Net","/csharp/ado-net","01.csharp/09.ado-net",[409,413,417,421,425,429,433,437,441,445,449,453],{"title":410,"path":411,"stem":412},"9.1. Введення в ADO.NET","/csharp/ado-net/introduction-to-adonet","01.csharp/09.ado-net/01.introduction-to-adonet",{"title":414,"path":415,"stem":416},"9.2. Клас DbConnection — з'єднання з базою даних","/csharp/ado-net/connection","01.csharp/09.ado-net/02.connection",{"title":418,"path":419,"stem":420},"9.3. Клас DbCommand — виконання SQL-запитів","/csharp/ado-net/command-and-queries","01.csharp/09.ado-net/03.command-and-queries",{"title":422,"path":423,"stem":424},"9.4. Клас DbDataReader — ефективне читання даних","/csharp/ado-net/datareader","01.csharp/09.ado-net/04.datareader",{"title":426,"path":427,"stem":428},"9.5. Параметризовані запити та захист від SQL Injection","/csharp/ado-net/parameters-and-sql-injection","01.csharp/09.ado-net/05.parameters-and-sql-injection",{"title":430,"path":431,"stem":432},"9.6. Транзакції в ADO.NET","/csharp/ado-net/transactions","01.csharp/09.ado-net/06.transactions",{"title":434,"path":435,"stem":436},"9.7. DbProviderFactory — провайдер-незалежний код","/csharp/ado-net/provider-factory","01.csharp/09.ado-net/07.provider-factory",{"title":438,"path":439,"stem":440},"9.8. Асинхронний доступ до даних","/csharp/ado-net/async-data-access","01.csharp/09.ado-net/08.async-data-access",{"title":442,"path":443,"stem":444},"9.9. Від'єднаний режим: DataSet, DataTable, DataRow","/csharp/ado-net/disconnected-mode-dataset","01.csharp/09.ado-net/09.disconnected-mode-dataset",{"title":446,"path":447,"stem":448},"9.10. DataAdapter — міст між DataSet та базою даних","/csharp/ado-net/data-adapter","01.csharp/09.ado-net/10.data-adapter",{"title":450,"path":451,"stem":452},"9.11. Data Mapper та Repository: Архітектура доступу до даних","/csharp/ado-net/data-mapper-repository","01.csharp/09.ado-net/11.data-mapper-repository",{"title":454,"path":455,"stem":456},"9.12. Identity Map, Unit of Work та Specification Pattern","/csharp/ado-net/advanced-patterns","01.csharp/09.ado-net/12.advanced-patterns",{"title":458,"icon":255,"path":459,"stem":460,"children":461,"page":59},"Ef Core","/csharp/ef-core","01.csharp/10.ef-core",[462,466,470,474,478,482,486,490,494,498,502,506,510,514,518,522,526,532,538,542,546,550,554,558,562,566,570,574,578,582,586,590,594,598,602,606,610,614,618,622,626,630,634,638,642,646],{"title":463,"path":464,"stem":465},"Що таке ORM? Від SQL до об'єктів","/csharp/ef-core/what-is-orm","01.csharp/10.ef-core/01.what-is-orm",{"title":467,"path":468,"stem":469},"Перший проєкт — від нуля до CRUD","/csharp/ef-core/first-project","01.csharp/10.ef-core/02.first-project",{"title":471,"path":472,"stem":473},"DbContext — Серце EF Core","/csharp/ef-core/dbcontext-deep-dive","01.csharp/10.ef-core/03.dbcontext-deep-dive",{"title":475,"path":476,"stem":477},"Провайдери баз даних — Архітектура та Вибір СУБД","/csharp/ef-core/database-providers","01.csharp/10.ef-core/04.database-providers",{"title":479,"path":480,"stem":481},"Конвенції EF Core — Магія без конфігурації","/csharp/ef-core/conventions","01.csharp/10.ef-core/05.conventions",{"title":483,"path":484,"stem":485},"Fluent API та Data Annotations — Явна конфігурація моделі","/csharp/ef-core/fluent-api-vs-annotations","01.csharp/10.ef-core/06.fluent-api-vs-annotations",{"title":487,"path":488,"stem":489},"Зв'язки — One-to-One та One-to-Many","/csharp/ef-core/relationships-basics","01.csharp/10.ef-core/07.relationships-basics",{"title":491,"path":492,"stem":493},"Зв'язки Advanced — Many-to-Many та Складні Сценарії","/csharp/ef-core/relationships-advanced","01.csharp/10.ef-core/08.relationships-advanced",{"title":495,"path":496,"stem":497},"Властивості — Типи, Конвертери, Компаратори (Частина 1)","/csharp/ef-core/property-configuration-part1","01.csharp/10.ef-core/09.property-configuration-part1",{"title":499,"path":500,"stem":501},"Властивості — Value Comparers, Generators, Shadow Properties (Частина 2)","/csharp/ef-core/property-configuration-part2","01.csharp/10.ef-core/09.property-configuration-part2",{"title":503,"path":504,"stem":505},"Складні типи — Owned Types та Complex Types (Частина 1)","/csharp/ef-core/complex-types-owned-part1","01.csharp/10.ef-core/10.complex-types-owned-part1",{"title":507,"path":508,"stem":509},"Складні типи — Complex Types, Keyless Entities, Порівняння (Частина 2)","/csharp/ef-core/complex-types-owned-part2","01.csharp/10.ef-core/10.complex-types-owned-part2",{"title":511,"path":512,"stem":513},"JSON Columns — Складні дані у JSON (Частина 1)","/csharp/ef-core/json-columns-part1","01.csharp/10.ef-core/11.json-columns-part1",{"title":515,"path":516,"stem":517},"JSON Columns — Value Comparers, Індекси, Провайдери (Частина 2)","/csharp/ef-core/json-columns-part2","01.csharp/10.ef-core/11.json-columns-part2",{"title":519,"path":520,"stem":521},"Успадкування — Абстрактні класи та TPH (Частина 1)","/csharp/ef-core/inheritance-part1","01.csharp/10.ef-core/12.inheritance-part1",{"title":523,"path":524,"stem":525},"Успадкування — TPT, TPC та Порівняння Стратегій (Частина 2)","/csharp/ef-core/inheritance-part2","01.csharp/10.ef-core/12.inheritance-part2",{"title":527,"path":528,"stem":529,"children":530},"Індекси, Обмеження та Схема (Частина 1)","/csharp/ef-core/indexes-constraints-part1","01.csharp/10.ef-core/13.indexes-constraints-part1",[531],{"title":527,"path":528,"stem":529},{"title":533,"path":534,"stem":535,"children":536},"Індекси, Обмеження та Схема (Частина 2)","/csharp/ef-core/indexes-constraints-part2","01.csharp/10.ef-core/13.indexes-constraints-part2",[537],{"title":533,"path":534,"stem":535},{"title":539,"path":540,"stem":541},"Seed Data — Початкові Дані (Частина 1)","/csharp/ef-core/seeding-part1","01.csharp/10.ef-core/14.seeding-part1",{"title":543,"path":544,"stem":545},"Seed Data — SQL-скрипти, Bogus та Стратегії (Частина 2)","/csharp/ef-core/seeding-part2","01.csharp/10.ef-core/14.seeding-part2",{"title":547,"path":548,"stem":549},"Global Query Filters — Глобальні Фільтри (Частина 1)","/csharp/ef-core/global-query-filters-part1","01.csharp/10.ef-core/15.global-query-filters-part1",{"title":551,"path":552,"stem":553},"Global Query Filters — Підводні камені та Інтеграція (Частина 2)","/csharp/ef-core/global-query-filters-part2","01.csharp/10.ef-core/15.global-query-filters-part2",{"title":555,"path":556,"stem":557},"LINQ-запити в EF Core (Частина 1)","/csharp/ef-core/linq-queries-part1","01.csharp/10.ef-core/16.linq-queries-part1",{"title":559,"path":560,"stem":561},"LINQ-запити в EF Core (Частина 2)","/csharp/ef-core/linq-queries-part2","01.csharp/10.ef-core/16.linq-queries-part2",{"title":563,"path":564,"stem":565},"Завантаження Пов'язаних Даних (Частина 1)","/csharp/ef-core/loading-related-data-part1","01.csharp/10.ef-core/17.loading-related-data-part1",{"title":567,"path":568,"stem":569},"Завантаження Пов'язаних Даних (Частина 2)","/csharp/ef-core/loading-related-data-part2","01.csharp/10.ef-core/17.loading-related-data-part2",{"title":571,"path":572,"stem":573},"Raw SQL, Views та Stored Procedures (Частина 1)","/csharp/ef-core/raw-sql-part1","01.csharp/10.ef-core/18.raw-sql-part1",{"title":575,"path":576,"stem":577},"Raw SQL — Stored Procedures, DbFunction та Bulk Operations (Частина 2)","/csharp/ef-core/raw-sql-part2","01.csharp/10.ef-core/18.raw-sql-part2",{"title":579,"path":580,"stem":581},"Продвинуті Запити — Compiled Queries, Bulk та Оптимізація (Частина 1)","/csharp/ef-core/advanced-queries-part1","01.csharp/10.ef-core/19.advanced-queries-part1",{"title":583,"path":584,"stem":585},"Продвинуті Запити — Query Tags, Bulk та Interceptors (Частина 2)","/csharp/ef-core/advanced-queries-part2","01.csharp/10.ef-core/19.advanced-queries-part2",{"title":587,"path":588,"stem":589},"Change Tracker — Відстеження Змін (Частина 1)","/csharp/ef-core/change-tracking-part1","01.csharp/10.ef-core/20.change-tracking-part1",{"title":591,"path":592,"stem":593},"Change Tracker — Графи Об'єктів та Disconnected (Частина 2)","/csharp/ef-core/change-tracking-part2","01.csharp/10.ef-core/20.change-tracking-part2",{"title":595,"path":596,"stem":597},"Збереження Даних та Транзакції (Частина 1)","/csharp/ef-core/saving-data-part1","01.csharp/10.ef-core/21.saving-data-part1",{"title":599,"path":600,"stem":601},"Збереження Даних — Concurrency та Outbox (Частина 2)","/csharp/ef-core/saving-data-part2","01.csharp/10.ef-core/21.saving-data-part2",{"title":603,"path":604,"stem":605},"Конкурентність та Блокування (Частина 1)","/csharp/ef-core/concurrency-part1","01.csharp/10.ef-core/22.concurrency-part1",{"title":607,"path":608,"stem":609},"Конкурентність — Дедлоки та Queue Processing (Частина 2)","/csharp/ef-core/concurrency-part2","01.csharp/10.ef-core/22.concurrency-part2",{"title":611,"path":612,"stem":613},"Міграції в EF Core — Основи (Частина 1)","/csharp/ef-core/migrations-basics-part1","01.csharp/10.ef-core/23.migrations-basics-part1",{"title":615,"path":616,"stem":617},"Міграції в EF Core — Основи (Частина 2)","/csharp/ef-core/migrations-basics-part2","01.csharp/10.ef-core/23.migrations-basics-part2",{"title":619,"path":620,"stem":621},"Міграції — Просунуті Сценарії (Частина 1)","/csharp/ef-core/migrations-advanced-part1","01.csharp/10.ef-core/24.migrations-advanced-part1",{"title":623,"path":624,"stem":625},"Міграції — Просунуті Сценарії (Частина 2)","/csharp/ef-core/migrations-advanced-part2","01.csharp/10.ef-core/24.migrations-advanced-part2",{"title":627,"path":628,"stem":629},"Управління Схемою та Database-First (Частина 1)","/csharp/ef-core/schema-management-part1","01.csharp/10.ef-core/25.schema-management-part1",{"title":631,"path":632,"stem":633},"Управління Схемою та Database-First (Частина 2)","/csharp/ef-core/schema-management-part2","01.csharp/10.ef-core/25.schema-management-part2",{"title":635,"path":636,"stem":637},"Продуктивність EF Core — Основи (Частина 1)","/csharp/ef-core/performance-fundamentals-part1","01.csharp/10.ef-core/26.performance-fundamentals-part1",{"title":639,"path":640,"stem":641},"Interceptors в EF Core (Частина 1)","/csharp/ef-core/interceptors-part1","01.csharp/10.ef-core/29.interceptors-part1",{"title":643,"path":644,"stem":645},"Interceptors в EF Core — Connection, Transaction та Materialization (Частина 2)","/csharp/ef-core/interceptors-part2","01.csharp/10.ef-core/29.interceptors-part2",{"title":647,"path":648,"stem":649},"План вивчення Entity Framework Core — Повний курс","/csharp/ef-core/implementation_plan","01.csharp/10.ef-core/implementation_plan",{"title":651,"icon":652,"path":653,"stem":654,"children":655,"page":59},"ASP.NET","i-devicon-dotnetcore","/csharp/aspnet","01.csharp/11.aspnet",[656,730,791,869,927,941,967,1057,1111,1182,1212,1289],{"title":657,"icon":658,"path":659,"stem":660,"children":661,"page":59},"Minimal API","i-lucide-network","/csharp/aspnet/minimal-api","01.csharp/11.aspnet/01.minimal-api",[662,666,670,674,678,682,686,690,694,698,702,706,710,714,718,722,726],{"title":663,"path":664,"stem":665},"Вступ до ASP.NET та еволюція фреймворку","/csharp/aspnet/minimal-api/introduction","01.csharp/11.aspnet/01.minimal-api/01.introduction",{"title":667,"path":668,"stem":669},"Перший додаток на ASP.NET Core","/csharp/aspnet/minimal-api/first-application","01.csharp/11.aspnet/01.minimal-api/02.first-application",{"title":671,"path":672,"stem":673},"WebApplication, Builder та Dependency Injection","/csharp/aspnet/minimal-api/webapplication-builder","01.csharp/11.aspnet/01.minimal-api/03.webapplication-builder",{"title":675,"path":676,"stem":677},"Конвеєр запитів та Middleware","/csharp/aspnet/minimal-api/request-pipeline-middleware","01.csharp/11.aspnet/01.minimal-api/04.request-pipeline-middleware",{"title":679,"path":680,"stem":681},"Маршрутизація в ASP.NET Core: Основи","/csharp/aspnet/minimal-api/routing-basics","01.csharp/11.aspnet/01.minimal-api/05.routing-basics",{"title":683,"path":684,"stem":685},"Маршрутизація в ASP.NET Core: Розширені можливості","/csharp/aspnet/minimal-api/routing-advanced","01.csharp/11.aspnet/01.minimal-api/06.routing-advanced",{"title":687,"path":688,"stem":689},"Статичні файли в ASP.NET Core","/csharp/aspnet/minimal-api/static-files","01.csharp/11.aspnet/01.minimal-api/07.static-files",{"title":691,"path":692,"stem":693},"Статичні Активи: MapStaticAssets (ASP.NET Core 9.0)","/csharp/aspnet/minimal-api/static-assets","01.csharp/11.aspnet/01.minimal-api/08.static-assets",{"title":695,"path":696,"stem":697},"Конфігурація в ASP.NET Core: Основи","/csharp/aspnet/minimal-api/configuration-fundamentals","01.csharp/11.aspnet/01.minimal-api/09.configuration-fundamentals",{"title":699,"path":700,"stem":701},"Конфігурація: Паттерн Options","/csharp/aspnet/minimal-api/configuration-options","01.csharp/11.aspnet/01.minimal-api/10.configuration-options",{"title":703,"path":704,"stem":705},"Логування в ASP.NET Core: Основи","/csharp/aspnet/minimal-api/logging-basics","01.csharp/11.aspnet/01.minimal-api/11.logging-basics",{"title":707,"path":708,"stem":709},"Логування: Serilog та Middleware","/csharp/aspnet/minimal-api/logging-advanced","01.csharp/11.aspnet/01.minimal-api/12.logging-advanced",{"title":711,"path":712,"stem":713},"Управління станом: HttpContext.Items та Cookies","/csharp/aspnet/minimal-api/state-management","01.csharp/11.aspnet/01.minimal-api/13.state-management",{"title":715,"path":716,"stem":717},"Стан сесії: Sessions","/csharp/aspnet/minimal-api/session-state","01.csharp/11.aspnet/01.minimal-api/14.session-state",{"title":719,"path":720,"stem":721},"Структура проєкту: від хаосу до архітектури","/csharp/aspnet/minimal-api/project-structure","01.csharp/11.aspnet/01.minimal-api/15.project-structure",{"title":723,"path":724,"stem":725},"Scalar у Minimal API: повний проєкт і Fluent OpenAPI","/csharp/aspnet/minimal-api/scalar-openapi-fluent","01.csharp/11.aspnet/01.minimal-api/16.scalar-openapi-fluent",{"title":727,"path":728,"stem":729},"Swagger / Swashbuckle у Minimal API: окремий класичний шлях","/csharp/aspnet/minimal-api/swagger-swashbuckle","01.csharp/11.aspnet/01.minimal-api/17.swagger-swashbuckle",{"title":731,"icon":658,"path":732,"stem":733,"children":734,"page":59},"API","/csharp/aspnet/api","01.csharp/11.aspnet/02.api",[735,739,743,747,751,755,759,763,767,771,775,779,783,787],{"title":736,"path":737,"stem":738},"Що таке API. Клієнт-серверна архітектура","/csharp/aspnet/api/what-is-api","01.csharp/11.aspnet/02.api/01.what-is-api",{"title":740,"path":741,"stem":742},"Формати даних: JSON, XML, TOML та бінарні формати","/csharp/aspnet/api/data-formats","01.csharp/11.aspnet/02.api/02.data-formats",{"title":744,"path":745,"stem":746},"Парадигми API та концепція REST","/csharp/aspnet/api/api-paradigms-rest","01.csharp/11.aspnet/02.api/03.api-paradigms-rest",{"title":748,"path":749,"stem":750},"HTTP-методи, статус-коди та заголовки","/csharp/aspnet/api/http-methods-status-codes","01.csharp/11.aspnet/02.api/04.http-methods-status-codes",{"title":752,"path":753,"stem":754},"Організація HTTP API за принципами REST","/csharp/aspnet/api/rest-organizing","01.csharp/11.aspnet/02.api/05.rest-organizing",{"title":756,"path":757,"stem":758},"Номенклатура URL та CRUD-операції","/csharp/aspnet/api/url-nomenclature-crud","01.csharp/11.aspnet/02.api/06.url-nomenclature-crud",{"title":760,"path":761,"stem":762},"Правила дизайну: іменування та стандарти","/csharp/aspnet/api/api-design-naming","01.csharp/11.aspnet/02.api/07.api-design-naming",{"title":764,"path":765,"stem":766},"Валідація, ліміти та обробка помилок","/csharp/aspnet/api/api-design-validation","01.csharp/11.aspnet/02.api/08.api-design-validation",{"title":768,"path":769,"stem":770},"Обробка помилок у Minimal API","/csharp/aspnet/api/error-handling-http","01.csharp/11.aspnet/02.api/09.error-handling-http",{"title":772,"path":773,"stem":774},"Ідемпотентність та синхронізація стану","/csharp/aspnet/api/idempotency-sync","01.csharp/11.aspnet/02.api/10.idempotency-sync",{"title":776,"path":777,"stem":778},"Пагінація та організація списків","/csharp/aspnet/api/pagination-lists","01.csharp/11.aspnet/02.api/11.pagination-lists",{"title":780,"path":781,"stem":782},"Безпека API, кешування та інтернаціоналізація","/csharp/aspnet/api/security-auth","01.csharp/11.aspnet/02.api/12.security-auth",{"title":784,"path":785,"stem":786},"Процес проєктування API та документування","/csharp/aspnet/api/api-design-process","01.csharp/11.aspnet/02.api/13.api-design-process",{"title":788,"path":789,"stem":790},"OpenAPI: контракт, специфікація та документація API","/csharp/aspnet/api/openapi","01.csharp/11.aspnet/02.api/14.openapi",{"title":792,"icon":793,"path":794,"stem":795,"children":796,"page":59},"Auth","i-lucide-shield-check","/csharp/aspnet/auth","01.csharp/11.aspnet/03.auth",[797,801,805,809,813,817,821,825,829,833,837,841,845,849,853,857,861,865],{"title":798,"path":799,"stem":800},"Основи аутентифікації та авторизації","/csharp/aspnet/auth/auth-fundamentals","01.csharp/11.aspnet/03.auth/01.auth-fundamentals",{"title":802,"path":803,"stem":804},"JWT-аутентифікація","/csharp/aspnet/auth/jwt-authentication","01.csharp/11.aspnet/03.auth/02.jwt-authentication",{"title":806,"path":807,"stem":808},"Авторизація: ролі, політики та resource-based доступ","/csharp/aspnet/auth/authorization-policies","01.csharp/11.aspnet/03.auth/03.authorization-policies",{"title":810,"path":811,"stem":812},"Cookie-аутентифікація та ASP.NET Core Identity","/csharp/aspnet/auth/cookie-auth-identity","01.csharp/11.aspnet/03.auth/04.cookie-auth-identity",{"title":814,"path":815,"stem":816},"JWT + Refresh Tokens (HttpOnly Cookie)","/csharp/aspnet/auth/04b.identity-auth-jwt","01.csharp/11.aspnet/03.auth/04b.identity-auth-jwt",{"title":818,"path":819,"stem":820},"Identity: Підтвердження Email та Скидання Пароля","/csharp/aspnet/auth/identity-email-confirmation","01.csharp/11.aspnet/03.auth/05.identity-email-confirmation",{"title":822,"path":823,"stem":824},"Identity: Двофакторна Аутентифікація (2FA)","/csharp/aspnet/auth/identity-two-factor","01.csharp/11.aspnet/03.auth/06.identity-two-factor",{"title":826,"path":827,"stem":828},"Identity: Внутрішня Архітектура та Кастомізація","/csharp/aspnet/auth/identity-internals","01.csharp/11.aspnet/03.auth/07.identity-internals",{"title":830,"path":831,"stem":832},"OAuth 2.0 та зовнішні провайдери","/csharp/aspnet/auth/oauth-external-providers","01.csharp/11.aspnet/03.auth/08.oauth-external-providers",{"title":834,"path":835,"stem":836},"Безпека на практиці: CORS, HTTPS та захист від атак","/csharp/aspnet/auth/security-hardening","01.csharp/11.aspnet/03.auth/09.security-hardening",{"title":838,"path":839,"stem":840},"Теорія OAuth 2.0: Поняття, Аналогії та Флоу","/csharp/aspnet/auth/oauth-theory","01.csharp/11.aspnet/03.auth/10.oauth-theory",{"title":842,"path":843,"stem":844},"OIDC, OAuth 2.0 та Keycloak в ASP.NET Core","/csharp/aspnet/auth/oidc-keycloak","01.csharp/11.aspnet/03.auth/10.oidc-keycloak",{"title":846,"path":847,"stem":848},"API Keys аутентифікація в ASP.NET Core","/csharp/aspnet/auth/api-keys","01.csharp/11.aspnet/03.auth/11.api-keys",{"title":850,"path":851,"stem":852},"Rate Limiting та Throttling в ASP.NET Core","/csharp/aspnet/auth/rate-limiting","01.csharp/11.aspnet/03.auth/12.rate-limiting",{"title":854,"path":855,"stem":856},"Refresh Token Rotation в ASP.NET Core","/csharp/aspnet/auth/refresh-token-rotation","01.csharp/11.aspnet/03.auth/13.refresh-token-rotation",{"title":858,"path":859,"stem":860},"Certificate Authentication та mTLS в ASP.NET Core","/csharp/aspnet/auth/certificate-auth","01.csharp/11.aspnet/03.auth/14.certificate-auth",{"title":862,"path":863,"stem":864},"RBAC, ABAC та ReBAC в ASP.NET Core","/csharp/aspnet/auth/rbac-abac-rebac","01.csharp/11.aspnet/03.auth/15.rbac-abac-rebac",{"title":866,"path":867,"stem":868},"Multi-tenancy та ізоляція даних в ASP.NET Core","/csharp/aspnet/auth/multi-tenancy","01.csharp/11.aspnet/03.auth/16.multi-tenancy",{"title":870,"icon":871,"path":872,"stem":873,"children":874,"page":59},"Нотифікації","i-lucide-bell","/csharp/aspnet/notifications","01.csharp/11.aspnet/04.notifications",[875,879,883,887,891,895,899,903,907,911,915,919,923],{"title":876,"path":877,"stem":878},"In-App нотифікації через базу даних","/csharp/aspnet/notifications/in-app-database-notifications","01.csharp/11.aspnet/04.notifications/01.in-app-database-notifications",{"title":880,"path":881,"stem":882},"Polling: Регулярний запит оновлень","/csharp/aspnet/notifications/polling","01.csharp/11.aspnet/04.notifications/02.polling",{"title":884,"path":885,"stem":886},"Server-Sent Events: Однострімовий push від сервера","/csharp/aspnet/notifications/server-sent-events","01.csharp/11.aspnet/04.notifications/03.server-sent-events",{"title":888,"path":889,"stem":890},"WebSockets: Двостороннє з'єднання в реальному часі","/csharp/aspnet/notifications/websockets","01.csharp/11.aspnet/04.notifications/04.websockets",{"title":892,"path":893,"stem":894},"SignalR: Абстракція над транспортами реального часу","/csharp/aspnet/notifications/signalr","01.csharp/11.aspnet/04.notifications/05.signalr",{"title":896,"path":897,"stem":898},"Background Services: Фонові задачі в ASP.NET Core","/csharp/aspnet/notifications/background-services","01.csharp/11.aspnet/04.notifications/06.background-services",{"title":900,"path":901,"stem":902},"Web Push нотифікації","/csharp/aspnet/notifications/web-push","01.csharp/11.aspnet/04.notifications/07.web-push",{"title":904,"path":905,"stem":906},"Email нотифікації","/csharp/aspnet/notifications/email-notifications","01.csharp/11.aspnet/04.notifications/08.email-notifications",{"title":908,"path":909,"stem":910},"Порівняння підходів: Як вибрати правильну технологію нотифікацій","/csharp/aspnet/notifications/choosing-the-right-approach","01.csharp/11.aspnet/04.notifications/09.choosing-the-right-approach",{"title":912,"path":913,"stem":914},"Hangfire: Надійне планування фонових задач","/csharp/aspnet/notifications/hangfire","01.csharp/11.aspnet/04.notifications/10.hangfire",{"title":916,"path":917,"stem":918},"Практика: Конвертація зображень у WebP через Hangfire","/csharp/aspnet/notifications/hangfire-image-webp","01.csharp/11.aspnet/04.notifications/11.hangfire-image-webp",{"title":920,"path":921,"stem":922},"Практика: Підготовка відео до HLS-стрімінгу через Hangfire","/csharp/aspnet/notifications/hangfire-video-hls","01.csharp/11.aspnet/04.notifications/12.hangfire-video-hls",{"title":924,"path":925,"stem":926},"Telegram-нотифікації: від одного повідомлення до масових розсилок і мульти-канального підходу","/csharp/aspnet/notifications/telegram-notifications","01.csharp/11.aspnet/04.notifications/13.telegram-notifications",{"title":928,"icon":929,"path":930,"stem":931,"children":932,"page":59},"Інтернаціоналізація","i-lucide-languages","/csharp/aspnet/i18n","01.csharp/11.aspnet/05.i18n",[933,937],{"title":934,"path":935,"stem":936},"Інтернаціоналізація (i18n) у Minimal API: від A до Я","/csharp/aspnet/i18n/internationalization","01.csharp/11.aspnet/05.i18n/01.internationalization",{"title":938,"path":939,"stem":940},"Humanizer: людиномовні рядки у .NET","/csharp/aspnet/i18n/humanizer","01.csharp/11.aspnet/05.i18n/02.humanizer",{"title":942,"icon":943,"path":944,"stem":945,"children":946,"page":59},"Кешування","i-lucide-layers","/csharp/aspnet/caching","01.csharp/11.aspnet/06.caching",[947,951,955,959,963],{"title":948,"path":949,"stem":950},"Огляд кешування: чотири рівні і коли що обирати","/csharp/aspnet/caching/caching","01.csharp/11.aspnet/06.caching/01.caching",{"title":952,"path":953,"stem":954},"IMemoryCache: кеш в оперативній пам'яті","/csharp/aspnet/caching/memory-cache","01.csharp/11.aspnet/06.caching/02.memory-cache",{"title":956,"path":957,"stem":958},"IDistributedCache і Redis: розподілений кеш","/csharp/aspnet/caching/distributed-cache","01.csharp/11.aspnet/06.caching/03.distributed-cache",{"title":960,"path":961,"stem":962},"Response Cache: HTTP-кешування через Cache-Control","/csharp/aspnet/caching/response-cache","01.csharp/11.aspnet/06.caching/04.response-cache",{"title":964,"path":965,"stem":966},"Output Cache: серверний кеш HTTP-відповідей (.NET 7+)","/csharp/aspnet/caching/output-cache","01.csharp/11.aspnet/06.caching/05.output-cache",{"title":968,"icon":969,"path":970,"stem":971,"children":972,"page":59},"Тестування","i-lucide-test-tube","/csharp/aspnet/testing","01.csharp/11.aspnet/07.testing",[973,977,981,985,989,993,997,1001,1005,1009,1013,1017,1021,1025,1029,1033,1037,1041,1045,1049,1053],{"title":974,"path":975,"stem":976},"Що таке тестування? Від інтуїції до науки","/csharp/aspnet/testing/what-is-testing","01.csharp/11.aspnet/07.testing/01.what-is-testing",{"title":978,"path":979,"stem":980},"Піраміда тестування — Стратегія, а не Догма","/csharp/aspnet/testing/testing-pyramid","01.csharp/11.aspnet/07.testing/02.testing-pyramid",{"title":982,"path":983,"stem":984},"Дві Школи Тестування — Лондон проти Детройту","/csharp/aspnet/testing/testing-schools","01.csharp/11.aspnet/07.testing/03.testing-schools",{"title":986,"path":987,"stem":988},"TDD та BDD — Тести як Дизайн-інструмент","/csharp/aspnet/testing/tdd-and-bdd","01.csharp/11.aspnet/07.testing/04.tdd-and-bdd",{"title":990,"path":991,"stem":992},"Що саме тестувати — Техніки аналізу та Циклomatична складність","/csharp/aspnet/testing/what-to-test","01.csharp/11.aspnet/07.testing/05.what-to-test",{"title":994,"path":995,"stem":996},"Тестові Фреймворки — Навіщо вони і що всередині","/csharp/aspnet/testing/test-frameworks","01.csharp/11.aspnet/07.testing/06.test-frameworks",{"title":998,"path":999,"stem":1000},"xUnit — Факти, Теорії та Lifecycle тестів","/csharp/aspnet/testing/xunit-basics","01.csharp/11.aspnet/07.testing/07.xunit-basics",{"title":1002,"path":1003,"stem":1004},"xUnit Advanced — Fixtures, Кастомізація та Розширення","/csharp/aspnet/testing/xunit-advanced","01.csharp/11.aspnet/07.testing/08.xunit-advanced",{"title":1006,"path":1007,"stem":1008},"Moq — Глибоке занурення в мокування","/csharp/aspnet/testing/mocking-with-moq","01.csharp/11.aspnet/07.testing/09.mocking-with-moq",{"title":1010,"path":1011,"stem":1012},"Тестування Баз Даних — EF Core, SQLite та Testcontainers","/csharp/aspnet/testing/database-testing","01.csharp/11.aspnet/07.testing/10.database-testing",{"title":1014,"path":1015,"stem":1016},"Integration Testing — Частина 1 [Теорія та WebApplicationFactory]","/csharp/aspnet/testing/integration-testing","01.csharp/11.aspnet/07.testing/11.integration-testing",{"title":1018,"path":1019,"stem":1020},"Інтеграційне тестування — Практика","/csharp/aspnet/testing/11a.integration-testing-practice","01.csharp/11.aspnet/07.testing/11a.integration-testing-practice",{"title":1022,"path":1023,"stem":1024},"Integration Testing — Частина 2 [Просунуті Сценарії та Testcontainers]","/csharp/aspnet/testing/integration-testing-advanced","01.csharp/11.aspnet/07.testing/12.integration-testing-advanced",{"title":1026,"path":1027,"stem":1028},"Професійний Postman: Колекції, Змінні та GitHub Інтеграція","/csharp/aspnet/testing/postman-professional","01.csharp/11.aspnet/07.testing/13.postman-professional",{"title":1030,"path":1031,"stem":1032},"HttpClient у Тестах Частина 1: Архітектура та MockHttpMessageHandler","/csharp/aspnet/testing/httpclient-testing","01.csharp/11.aspnet/07.testing/14.httpclient-testing",{"title":1034,"path":1035,"stem":1036},"HttpClient у Тестах Частина 2: WireMock.Net та Resilience","/csharp/aspnet/testing/wiremock-net","01.csharp/11.aspnet/07.testing/15.wiremock-net",{"title":1038,"path":1039,"stem":1040},"Патерни та Анти-патерни Тестування: Test Smells","/csharp/aspnet/testing/testing-patterns","01.csharp/11.aspnet/07.testing/16.testing-patterns",{"title":1042,"path":1043,"stem":1044},"Просунуті інструменти: Time, Snapshots та Властивості","/csharp/aspnet/testing/advanced-testing-tools","01.csharp/11.aspnet/07.testing/17.advanced-testing-tools",{"title":1046,"path":1047,"stem":1048},"Тестування Архітектури з NetArchTest","/csharp/aspnet/testing/architecture-testing","01.csharp/11.aspnet/07.testing/18.architecture-testing",{"title":1050,"path":1051,"stem":1052},"Тестування Продуктивності: BenchmarkDotNet, NBomber та k6","/csharp/aspnet/testing/performance-testing","01.csharp/11.aspnet/07.testing/19.performance-testing",{"title":1054,"path":1055,"stem":1056},"Залишок плану для курсу \"Тестування ASP.NET Minimal API\"","/csharp/aspnet/testing/remaining_plan","01.csharp/11.aspnet/07.testing/remaining_plan",{"title":1058,"icon":1059,"path":1060,"stem":1061,"children":1062,"page":59},"Платежі","i-lucide-credit-card","/csharp/aspnet/payments","01.csharp/11.aspnet/08.payments",[1063,1067,1071,1075,1079,1083,1087,1091,1095,1099,1103,1107],{"title":1064,"path":1065,"stem":1066},"Основи платіжної інфраструктури","/csharp/aspnet/payments/payment-fundamentals","01.csharp/11.aspnet/08.payments/01.payment-fundamentals",{"title":1068,"path":1069,"stem":1070},"Методи оплати в Україні","/csharp/aspnet/payments/payment-methods-ukraine","01.csharp/11.aspnet/08.payments/02.payment-methods-ukraine",{"title":1072,"path":1073,"stem":1074},"PCI DSS та безпека платежів","/csharp/aspnet/payments/pci-dss-security","01.csharp/11.aspnet/08.payments/03.pci-dss-security",{"title":1076,"path":1077,"stem":1078},"Архітектура платіжної підсистеми","/csharp/aspnet/payments/payment-architecture","01.csharp/11.aspnet/08.payments/04.payment-architecture",{"title":1080,"path":1081,"stem":1082},"Інтеграція LiqPay (ПриватБанк)","/csharp/aspnet/payments/liqpay-integration","01.csharp/11.aspnet/08.payments/05.liqpay-integration",{"title":1084,"path":1085,"stem":1086},"Інтеграція Monobank Acquiring API","/csharp/aspnet/payments/monobank-acquiring","01.csharp/11.aspnet/08.payments/06.monobank-acquiring",{"title":1088,"path":1089,"stem":1090},"Інтеграція Stripe","/csharp/aspnet/payments/stripe-integration","01.csharp/11.aspnet/08.payments/07.stripe-integration",{"title":1092,"path":1093,"stem":1094},"Webhooks — глибоке занурення","/csharp/aspnet/payments/webhooks-deep-dive","01.csharp/11.aspnet/08.payments/08.webhooks-deep-dive",{"title":1096,"path":1097,"stem":1098},"Підписки та рекурентні платежі","/csharp/aspnet/payments/subscriptions-recurring","01.csharp/11.aspnet/08.payments/09.subscriptions-recurring",{"title":1100,"path":1101,"stem":1102},"Повернення коштів та диспути","/csharp/aspnet/payments/refunds-disputes","01.csharp/11.aspnet/08.payments/10.refunds-disputes",{"title":1104,"path":1105,"stem":1106},"Тестування платіжних інтеграцій","/csharp/aspnet/payments/testing-payments","01.csharp/11.aspnet/08.payments/11.testing-payments",{"title":1108,"path":1109,"stem":1110},"Чекліст виходу в Production","/csharp/aspnet/payments/production-checklist","01.csharp/11.aspnet/08.payments/12.production-checklist",{"title":1112,"icon":1113,"items":1114,"path":1127,"stem":1128,"children":1129,"page":59},"Популярні бібліотеки","lucide:box",[1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126],"01.fluent-validation","02.mapster","03.erroror-result-pattern","04.serilog","05.mediatr","06.polly","07.health-checks","08.feature-management","09.fluent-email","10.quest-pdf","11.bogus","12.humanizer-guard","/csharp/aspnet/libraries","01.csharp/11.aspnet/09.libraries",[1130,1134,1138,1142,1146,1150,1154,1158,1162,1166,1170,1174,1178],{"title":1131,"path":1132,"stem":1133},"Валідація з FluentValidation в ASP.NET Core","/csharp/aspnet/libraries/fluent-validation","01.csharp/11.aspnet/09.libraries/01.fluent-validation",{"title":1135,"path":1136,"stem":1137},"Маппінг об","/csharp/aspnet/libraries/mapster","01.csharp/11.aspnet/09.libraries/02.mapster",{"title":1139,"path":1140,"stem":1141},"Обробка помилок з ErrorOr та Result Pattern в ASP.NET Core","/csharp/aspnet/libraries/erroror-result-pattern","01.csharp/11.aspnet/09.libraries/03.erroror-result-pattern",{"title":1143,"path":1144,"stem":1145},"Структуроване логування з Serilog в ASP.NET Core","/csharp/aspnet/libraries/serilog","01.csharp/11.aspnet/09.libraries/04.serilog",{"title":1147,"path":1148,"stem":1149},"CQRS та Mediator з MediatR в ASP.NET Core","/csharp/aspnet/libraries/mediatr","01.csharp/11.aspnet/09.libraries/05.mediatr",{"title":1151,"path":1152,"stem":1153},"Відмовостійкість з Polly в ASP.NET Core","/csharp/aspnet/libraries/polly","01.csharp/11.aspnet/09.libraries/06.polly",{"title":1155,"path":1156,"stem":1157},"Health Checks в ASP.NET Core","/csharp/aspnet/libraries/health-checks","01.csharp/11.aspnet/09.libraries/07.health-checks",{"title":1159,"path":1160,"stem":1161},"Feature Management та Feature Flags в ASP.NET Core","/csharp/aspnet/libraries/feature-management","01.csharp/11.aspnet/09.libraries/08.feature-management",{"title":1163,"path":1164,"stem":1165},"Відправка Email з FluentEmail в ASP.NET Core","/csharp/aspnet/libraries/fluent-email","01.csharp/11.aspnet/09.libraries/09.fluent-email",{"title":1167,"path":1168,"stem":1169},"Генерація PDF з QuestPDF в ASP.NET Core","/csharp/aspnet/libraries/quest-pdf","01.csharp/11.aspnet/09.libraries/10.quest-pdf",{"title":1171,"path":1172,"stem":1173},"Генерація тестових даних з Bogus в ASP.NET Core","/csharp/aspnet/libraries/bogus","01.csharp/11.aspnet/09.libraries/11.bogus",{"title":1175,"path":1176,"stem":1177},"Humanizer та Guard Clauses в ASP.NET Core","/csharp/aspnet/libraries/humanizer-guard","01.csharp/11.aspnet/09.libraries/12.humanizer-guard",{"title":1179,"path":1180,"stem":1181},"План модуля 10.libraries — Популярні бібліотеки ASP.NET","/csharp/aspnet/libraries/plan","01.csharp/11.aspnet/09.libraries/plan",{"title":1183,"icon":1184,"path":1185,"stem":1186,"children":1187,"page":59},"Razor Pages","i-lucide-layout-template","/csharp/aspnet/razor-pages","01.csharp/11.aspnet/10.razor-pages",[1188,1192,1196,1200,1204,1208],{"title":1189,"path":1190,"stem":1191},"Від Minimal API до Razor Pages: концептуальний перехід","/csharp/aspnet/razor-pages/from-minimal-api","01.csharp/11.aspnet/10.razor-pages/01.from-minimal-api",{"title":1193,"path":1194,"stem":1195},"PageModel: логіка сторінки Razor Pages","/csharp/aspnet/razor-pages/page-model","01.csharp/11.aspnet/10.razor-pages/02.page-model",{"title":1197,"path":1198,"stem":1199},"Razor синтаксис: шаблонізатор у .cshtml","/csharp/aspnet/razor-pages/razor-syntax","01.csharp/11.aspnet/10.razor-pages/03.razor-syntax",{"title":1201,"path":1202,"stem":1203},"Tag Helpers: типізований HTML","/csharp/aspnet/razor-pages/tag-helpers","01.csharp/11.aspnet/10.razor-pages/04.tag-helpers",{"title":1205,"path":1206,"stem":1207},"Форми і валідація: повний цикл обробки даних","/csharp/aspnet/razor-pages/forms-validation","01.csharp/11.aspnet/10.razor-pages/05.forms-validation",{"title":1209,"path":1210,"stem":1211},"Практичний проєкт: TaskManager на Razor Pages","/csharp/aspnet/razor-pages/project-task-manager","01.csharp/11.aspnet/10.razor-pages/06.project-task-manager",{"title":1213,"path":1214,"stem":1215,"children":1216,"page":59},"ASP.NET Core MVC","/csharp/aspnet/mvc","01.csharp/11.aspnet/11.mvc",[1217,1221,1225,1229,1233,1237,1241,1245,1249,1253,1257,1261,1265,1269,1273,1277,1281,1285],{"title":1218,"path":1219,"stem":1220},"Патерн MVC: архітектура, що змінила веб","/csharp/aspnet/mvc/mvc-pattern","01.csharp/11.aspnet/11.mvc/01.mvc-pattern",{"title":1222,"path":1223,"stem":1224},"Від Razor Pages до MVC: концептуальний перехід","/csharp/aspnet/mvc/from-razor-pages","01.csharp/11.aspnet/11.mvc/02.from-razor-pages",{"title":1226,"path":1227,"stem":1228},"Controllers та Actions: серце MVC","/csharp/aspnet/mvc/controllers-actions","01.csharp/11.aspnet/11.mvc/03.controllers-actions",{"title":1230,"path":1231,"stem":1232},"Маршрутизація в MVC: Convention vs Attribute Routing","/csharp/aspnet/mvc/routing-mvc","01.csharp/11.aspnet/11.mvc/04.routing-mvc",{"title":1234,"path":1235,"stem":1236},"Model Binding: від HTTP до C#","/csharp/aspnet/mvc/model-binding","01.csharp/11.aspnet/11.mvc/05.model-binding",{"title":1238,"path":1239,"stem":1240},"Views, ViewData, ViewBag, TempData і ViewModel","/csharp/aspnet/mvc/views-viewdata-tempdata","01.csharp/11.aspnet/11.mvc/06.views-viewdata-tempdata",{"title":1242,"path":1243,"stem":1244},"Filters: аспектно-орієнтоване програмування в MVC","/csharp/aspnet/mvc/filters","01.csharp/11.aspnet/11.mvc/07.filters",{"title":1246,"path":1247,"stem":1248},"Areas: структурування великих застосунків","/csharp/aspnet/mvc/areas","01.csharp/11.aspnet/11.mvc/08.areas",{"title":1250,"path":1251,"stem":1252},"View Components: повторювані незалежні блоки UI","/csharp/aspnet/mvc/view-components","01.csharp/11.aspnet/11.mvc/09.view-components",{"title":1254,"path":1255,"stem":1256},"Display та Editor Templates","/csharp/aspnet/mvc/display-editor-templates","01.csharp/11.aspnet/11.mvc/10.display-editor-templates",{"title":1258,"path":1259,"stem":1260},"Валідація: IValidatableObject та FluentValidation","/csharp/aspnet/mvc/validation-advanced","01.csharp/11.aspnet/11.mvc/11.validation-advanced",{"title":1262,"path":1263,"stem":1264},"HTMX: інтерактивність через HTML-атрибути","/csharp/aspnet/mvc/htmx","01.csharp/11.aspnet/11.mvc/12.htmx",{"title":1266,"path":1267,"stem":1268},"HTMX у ASP.NET Core MVC: серверна інтеграція","/csharp/aspnet/mvc/ajax-htmx-mvc","01.csharp/11.aspnet/11.mvc/13.ajax-htmx-mvc",{"title":1270,"path":1271,"stem":1272},"Практичний проєкт: Каталог товарів з HTMX","/csharp/aspnet/mvc/htmx-project","01.csharp/11.aspnet/11.mvc/14.htmx-project",{"title":1274,"path":1275,"stem":1276},"Завантаження та обробка файлів","/csharp/aspnet/mvc/file-upload","01.csharp/11.aspnet/11.mvc/15.file-upload",{"title":1278,"path":1279,"stem":1280},"Глобалізація та Локалізація MVC","/csharp/aspnet/mvc/globalization-localization","01.csharp/11.aspnet/11.mvc/16.globalization-localization",{"title":1282,"path":1283,"stem":1284},"Підсумковий проєкт: Блог-платформа","/csharp/aspnet/mvc/mvc-project","01.csharp/11.aspnet/11.mvc/17.mvc-project",{"title":1286,"path":1287,"stem":1288},"План курсу: ASP.NET Core MVC","/csharp/aspnet/mvc/plan","01.csharp/11.aspnet/11.mvc/plan",{"title":1290,"path":1291,"stem":1292,"children":1293,"page":59},"Web Api","/csharp/aspnet/web-api","01.csharp/11.aspnet/12.web-api",[1294,1298,1302,1306,1310,1314,1318,1322,1326,1330,1334,1338,1342],{"title":1295,"path":1296,"stem":1297},"Від Minimal API до Controller-based API","/csharp/aspnet/web-api/from-minimal-api-to-controllers","01.csharp/11.aspnet/12.web-api/01.from-minimal-api-to-controllers",{"title":1299,"path":1300,"stem":1301},"ControllerBase, ActionResult\u003CT> та Response Types","/csharp/aspnet/web-api/controller-base-actionresult","01.csharp/11.aspnet/12.web-api/02.controller-base-actionresult",{"title":1303,"path":1304,"stem":1305},"Content Negotiation - JSON, XML та власні форматери","/csharp/aspnet/web-api/content-negotiation","01.csharp/11.aspnet/12.web-api/03.content-negotiation",{"title":1307,"path":1308,"stem":1309},"Версіонування API","/csharp/aspnet/web-api/api-versioning","01.csharp/11.aspnet/12.web-api/04.api-versioning",{"title":1311,"path":1312,"stem":1313},"ProblemDetails та структурована обробка помилок","/csharp/aspnet/web-api/problemdetails-error-handling","01.csharp/11.aspnet/12.web-api/05.problemdetails-error-handling",{"title":1315,"path":1316,"stem":1317},"Фільтри у Web API контексті","/csharp/aspnet/web-api/filters-for-api","01.csharp/11.aspnet/12.web-api/06.filters-for-api",{"title":1319,"path":1320,"stem":1321},"Пагінація, фільтрація та сортування","/csharp/aspnet/web-api/pagination-filtering-sorting","01.csharp/11.aspnet/12.web-api/07.pagination-filtering-sorting",{"title":1323,"path":1324,"stem":1325},"HATEOAS та Resource Expansion","/csharp/aspnet/web-api/hateoas-resource-expansion","01.csharp/11.aspnet/12.web-api/08.hateoas-resource-expansion",{"title":1327,"path":1328,"stem":1329},"Гібридна архітектура - Minimal API + Controllers","/csharp/aspnet/web-api/minimal-api-vs-controllers-hybrid","01.csharp/11.aspnet/12.web-api/09.minimal-api-vs-controllers-hybrid",{"title":1331,"path":1332,"stem":1333},"Документація API - Swashbuckle, NSwag та генерація клієнтів","/csharp/aspnet/web-api/api-documentation-generation","01.csharp/11.aspnet/12.web-api/10.api-documentation-generation",{"title":1335,"path":1336,"stem":1337},"Health Checks та моніторинг API","/csharp/aspnet/web-api/health-checks-monitoring","01.csharp/11.aspnet/12.web-api/11.health-checks-monitoring",{"title":1339,"path":1340,"stem":1341},"Підсумковий проєкт - Production-Ready REST API","/csharp/aspnet/web-api/web-api-project","01.csharp/11.aspnet/12.web-api/12.web-api-project",{"title":1343,"path":1344,"stem":1345},"План курсу: ASP.NET Core Web API (Controllers)","/csharp/aspnet/web-api/plan","01.csharp/11.aspnet/12.web-api/plan",{"title":1347,"icon":1348,"path":1349,"stem":1350,"children":1351,"page":59},"Desktop UI","i-lucide-app-window","/csharp/desktop-ui","01.csharp/12.desktop-ui",[1352,1356,1360,1364,1368,1372,1376,1380,1384,1388,1392,1396,1400,1404,1408,1412,1416,1420,1424,1428,1432,1436,1440,1444,1448,1452,1456,1460,1464,1468,1472,1476,1480,1484,1488,1492,1496,1500,1504,1508,1512,1516,1520,1524,1528,1532,1536,1540,1544,1548,1552,1556,1560,1564,1568,1572,1576,1580,1584,1588,1592,1596,1600,1604,1608,1612,1616,1620,1624,1628,1632],{"title":1353,"path":1354,"stem":1355},"Що таке десктопна розробка?","/csharp/desktop-ui/what-is-desktop-dev","01.csharp/12.desktop-ui/01.what-is-desktop-dev",{"title":1357,"path":1358,"stem":1359},"Архітектура WPF — як влаштований графічний інтерфейс","/csharp/desktop-ui/wpf-architecture","01.csharp/12.desktop-ui/02.wpf-architecture",{"title":1361,"path":1362,"stem":1363},"Перший WPF-проєкт — від нуля до вікна","/csharp/desktop-ui/first-wpf-app","01.csharp/12.desktop-ui/03.first-wpf-app",{"title":1365,"path":1366,"stem":1367},"Перший Avalonia-проєкт: WPF для всіх платформ","/csharp/desktop-ui/03a.first-avalonia-app","01.csharp/12.desktop-ui/03a.first-avalonia-app",{"title":1369,"path":1370,"stem":1371},"XAML: декларативний інтерфейс","/csharp/desktop-ui/xaml-basics","01.csharp/12.desktop-ui/04.xaml-basics",{"title":1373,"path":1374,"stem":1375},"Fluent UI у WPF — сучасний дизайн Windows 11","/csharp/desktop-ui/04a.wpf-fluent-ui","01.csharp/12.desktop-ui/04a.wpf-fluent-ui",{"title":1377,"path":1378,"stem":1379},"WPF UI — сучасна бібліотека Fluent контролів","/csharp/desktop-ui/04b.wpf-ui-library","01.csharp/12.desktop-ui/04b.wpf-ui-library",{"title":1381,"path":1382,"stem":1383},"HandyControl — велика бібліотека UI контролів для WPF","/csharp/desktop-ui/04c.handycontrol-library","01.csharp/12.desktop-ui/04c.handycontrol-library",{"title":1385,"path":1386,"stem":1387},"Простори імен та ресурси XAML","/csharp/desktop-ui/xaml-namespaces-resources","01.csharp/12.desktop-ui/05.xaml-namespaces-resources",{"title":1389,"path":1390,"stem":1391},"XAML в Avalonia: ключові відмінності від WPF","/csharp/desktop-ui/05a.avalonia-xaml-differences","01.csharp/12.desktop-ui/05a.avalonia-xaml-differences",{"title":1393,"path":1394,"stem":1395},"Розширення розмітки XAML (Markup Extensions)","/csharp/desktop-ui/xaml-markup-extensions","01.csharp/12.desktop-ui/06.xaml-markup-extensions",{"title":1397,"path":1398,"stem":1399},"Панелі Layout: StackPanel, WrapPanel, DockPanel","/csharp/desktop-ui/layout-panels-part1","01.csharp/12.desktop-ui/07.layout-panels-part1",{"title":1401,"path":1402,"stem":1403},"Grid, Canvas, UniformGrid","/csharp/desktop-ui/layout-panels-part2","01.csharp/12.desktop-ui/07.layout-panels-part2",{"title":1405,"path":1406,"stem":1407},"Просунуті техніки Layout","/csharp/desktop-ui/layout-advanced","01.csharp/12.desktop-ui/08.layout-advanced",{"title":1409,"path":1410,"stem":1411},"Адаптивний Layout та найкращі практики","/csharp/desktop-ui/layout-responsive","01.csharp/12.desktop-ui/09.layout-responsive",{"title":1413,"path":1414,"stem":1415},"Layout в Avalonia: відмінності та нові можливості","/csharp/desktop-ui/09a.layout-avalonia","01.csharp/12.desktop-ui/09a.layout-avalonia",{"title":1417,"path":1418,"stem":1419},"Button, Image, ProgressBar та інші базові контроли","/csharp/desktop-ui/basic-controls","01.csharp/12.desktop-ui/10.basic-controls",{"title":1421,"path":1422,"stem":1423},"Контроли в Avalonia: відмінності від WPF","/csharp/desktop-ui/10a.controls-avalonia","01.csharp/12.desktop-ui/10a.controls-avalonia",{"title":1425,"path":1426,"stem":1427},"Текстові контроли — TextBlock, TextBox, RichTextBox","/csharp/desktop-ui/text-controls","01.csharp/12.desktop-ui/11.text-controls",{"title":1429,"path":1430,"stem":1431},"Контроли вибору — CheckBox, RadioButton, ComboBox, ListBox, DatePicker","/csharp/desktop-ui/selection-controls","01.csharp/12.desktop-ui/12.selection-controls",{"title":1433,"path":1434,"stem":1435},"Content Model — GroupBox, Expander, TabControl, StatusBar","/csharp/desktop-ui/content-controls","01.csharp/12.desktop-ui/13.content-controls",{"title":1437,"path":1438,"stem":1439},"UI/UX принципи десктопних застосунків","/csharp/desktop-ui/13a.ui-ux-principles","01.csharp/12.desktop-ui/13a.ui-ux-principles",{"title":1441,"path":1442,"stem":1443},"Dependency Properties — Концепція та Value Resolution","/csharp/desktop-ui/dependency-properties-part1","01.csharp/12.desktop-ui/14.dependency-properties-part1",{"title":1445,"path":1446,"stem":1447},"Avalonia Property System — StyledProperty та DirectProperty","/csharp/desktop-ui/14a.avalonia-property-system","01.csharp/12.desktop-ui/14a.avalonia-property-system",{"title":1449,"path":1450,"stem":1451},"Attached Properties — Властивості без меж","/csharp/desktop-ui/attached-properties","01.csharp/12.desktop-ui/15.attached-properties",{"title":1453,"path":1454,"stem":1455},"Routed Events — Маршрутизація подій у WPF","/csharp/desktop-ui/routed-events","01.csharp/12.desktop-ui/16.routed-events",{"title":1457,"path":1458,"stem":1459},"Data Binding — Від Code-Behind до Декларативності","/csharp/desktop-ui/data-binding-basics-part1","01.csharp/12.desktop-ui/17.data-binding-basics-part1",{"title":1461,"path":1462,"stem":1463},"INotifyPropertyChanged — Живе оновлення UI","/csharp/desktop-ui/data-binding-basics-part2","01.csharp/12.desktop-ui/17.data-binding-basics-part2",{"title":1465,"path":1466,"stem":1467},"Compiled Bindings в Avalonia — Безпека на етапі компіляції","/csharp/desktop-ui/17a.avalonia-compiled-bindings","01.csharp/12.desktop-ui/17a.avalonia-compiled-bindings",{"title":1469,"path":1470,"stem":1471},"Просунутий Data Binding — ElementName, RelativeSource, MultiBinding","/csharp/desktop-ui/data-binding-advanced","01.csharp/12.desktop-ui/18.data-binding-advanced",{"title":1473,"path":1474,"stem":1475},"Value Converters — Перетворення типів даних у Data Binding","/csharp/desktop-ui/value-converters","01.csharp/12.desktop-ui/19.value-converters",{"title":1477,"path":1478,"stem":1479},"Data Templates — Візуалізація об'єктів у WPF","/csharp/desktop-ui/data-templates","01.csharp/12.desktop-ui/20.data-templates",{"title":1481,"path":1482,"stem":1483},"Collections Binding Part 1 — ObservableCollection та ItemsControl","/csharp/desktop-ui/collections-binding-part1","01.csharp/12.desktop-ui/21.collections-binding-part1",{"title":1485,"path":1486,"stem":1487},"Collections Binding Part 2 — ICollectionView, Filtering, Sorting та Virtualization","/csharp/desktop-ui/collections-binding-part2","01.csharp/12.desktop-ui/21.collections-binding-part2",{"title":1489,"path":1490,"stem":1491},"MVVM Pattern — Від Spaghetti Code до архітектури","/csharp/desktop-ui/mvvm-pattern","01.csharp/12.desktop-ui/22.mvvm-pattern",{"title":1493,"path":1494,"stem":1495},"ViewModel Implementation — Від BaseViewModel до валідації","/csharp/desktop-ui/viewmodel-implementation","01.csharp/12.desktop-ui/23.viewmodel-implementation",{"title":1497,"path":1498,"stem":1499},"Commands — Від event handlers до декларативних команд","/csharp/desktop-ui/commands","01.csharp/12.desktop-ui/24.commands",{"title":1501,"path":1502,"stem":1503},"MVVM Toolkit — MVVM без boilerplate через Source Generators","/csharp/desktop-ui/mvvm-toolkit","01.csharp/12.desktop-ui/25.mvvm-toolkit",{"title":1505,"path":1506,"stem":1507},"Messenger Pattern — Комунікація між ViewModel без прямих посилань","/csharp/desktop-ui/messenger-pattern","01.csharp/12.desktop-ui/26.messenger-pattern",{"title":1509,"path":1510,"stem":1511},"Стилі WPF — CSS для десктопу","/csharp/desktop-ui/styles-basics","01.csharp/12.desktop-ui/27.styles-basics",{"title":1513,"path":1514,"stem":1515},"CSS-like стилі Avalonia","/csharp/desktop-ui/27a.avalonia-css-styling","01.csharp/12.desktop-ui/27a.avalonia-css-styling",{"title":1517,"path":1518,"stem":1519},"Control Templates — Частина 1. Концепція та TemplateBinding","/csharp/desktop-ui/control-templates-part1","01.csharp/12.desktop-ui/28.control-templates-part1",{"title":1521,"path":1522,"stem":1523},"Control Templates — Частина 2. Named Parts та ContentPresenter","/csharp/desktop-ui/control-templates-part2","01.csharp/12.desktop-ui/28.control-templates-part2",{"title":1525,"path":1526,"stem":1527},"Control Themes в Avalonia — нова ера стилізації","/csharp/desktop-ui/28a.avalonia-control-themes","01.csharp/12.desktop-ui/28a.avalonia-control-themes",{"title":1529,"path":1530,"stem":1531},"Triggers та Visual State Manager у WPF","/csharp/desktop-ui/triggers-visual-states","01.csharp/12.desktop-ui/29.triggers-visual-states",{"title":1533,"path":1534,"stem":1535},"Pseudo-classes в Avalonia — замість WPF Triggers","/csharp/desktop-ui/29a.avalonia-pseudo-classes","01.csharp/12.desktop-ui/29a.avalonia-pseudo-classes",{"title":1537,"path":1538,"stem":1539},"Теми та ресурсні словники у WPF","/csharp/desktop-ui/resources-themes","01.csharp/12.desktop-ui/30.resources-themes",{"title":1541,"path":1542,"stem":1543},"Avalonia Themes — Fluent Design та система тематизації","/csharp/desktop-ui/30a.avalonia-themes-fluent","01.csharp/12.desktop-ui/30a.avalonia-themes-fluent",{"title":1545,"path":1546,"stem":1547},"Контроли колекцій — глибоке занурення","/csharp/desktop-ui/collection-controls","01.csharp/12.desktop-ui/31.collection-controls",{"title":1549,"path":1550,"stem":1551},"DataGrid — колонки та базове відображення","/csharp/desktop-ui/datagrid-part1","01.csharp/12.desktop-ui/32.datagrid-part1",{"title":1553,"path":1554,"stem":1555},"DataGrid — сортування, фільтрація, редагування","/csharp/desktop-ui/datagrid-part2","01.csharp/12.desktop-ui/32.datagrid-part2",{"title":1557,"path":1558,"stem":1559},"TreeView та GridView","/csharp/desktop-ui/treeview-listview","01.csharp/12.desktop-ui/33.treeview-listview",{"title":1561,"path":1562,"stem":1563},"Меню, Toolbar, ContextMenu, StatusBar","/csharp/desktop-ui/menus-toolbars","01.csharp/12.desktop-ui/34.menus-toolbars",{"title":1565,"path":1566,"stem":1567},"Навігація та керування вікнами. Частина 1: вікна та сторінки","/csharp/desktop-ui/navigation-windows-part1","01.csharp/12.desktop-ui/35.navigation-windows-part1",{"title":1569,"path":1570,"stem":1571},"Навігація та керування вікнами. Частина 2: MVVM-навігація","/csharp/desktop-ui/navigation-windows-part2","01.csharp/12.desktop-ui/35.navigation-windows-part2",{"title":1573,"path":1574,"stem":1575},"Avalonia — Навігація та діалоги","/csharp/desktop-ui/35a.avalonia-navigation-dialogs","01.csharp/12.desktop-ui/35a.avalonia-navigation-dialogs",{"title":1577,"path":1578,"stem":1579},"Діалоги та File Pickers у WPF","/csharp/desktop-ui/dialogs-file-pickers","01.csharp/12.desktop-ui/36.dialogs-file-pickers",{"title":1581,"path":1582,"stem":1583},"UserControl: компонентний підхід у WPF","/csharp/desktop-ui/user-controls","01.csharp/12.desktop-ui/37.user-controls",{"title":1585,"path":1586,"stem":1587},"Custom Controls: Lookless Controls у WPF","/csharp/desktop-ui/custom-controls","01.csharp/12.desktop-ui/38.custom-controls",{"title":1589,"path":1590,"stem":1591},"Avalonia TemplatedControl — Lookless Controls","/csharp/desktop-ui/38a.avalonia-templated-controls","01.csharp/12.desktop-ui/38a.avalonia-templated-controls",{"title":1593,"path":1594,"stem":1595},"Анімації у WPF: Storyboard та Easing Functions","/csharp/desktop-ui/animations-transitions","01.csharp/12.desktop-ui/39.animations-transitions",{"title":1597,"path":1598,"stem":1599},"Анімації в Avalonia","/csharp/desktop-ui/39a.avalonia-animations","01.csharp/12.desktop-ui/39a.avalonia-animations",{"title":1601,"path":1602,"stem":1603},"2D Графіка та Мультимедіа у WPF","/csharp/desktop-ui/media-graphics","01.csharp/12.desktop-ui/40.media-graphics",{"title":1605,"path":1606,"stem":1607},"Dependency Injection у WPF та Avalonia","/csharp/desktop-ui/di-integration","01.csharp/12.desktop-ui/41.di-integration",{"title":1609,"path":1610,"stem":1611},"SQLite та EF Core у десктопних додатках","/csharp/desktop-ui/data-persistence-part1","01.csharp/12.desktop-ui/42.data-persistence-part1",{"title":1613,"path":1614,"stem":1615},"Repository Pattern та Unit of Work","/csharp/desktop-ui/data-persistence-part2","01.csharp/12.desktop-ui/43.data-persistence-part2",{"title":1617,"path":1618,"stem":1619},"Тестування ViewModels","/csharp/desktop-ui/viewmodel-testing","01.csharp/12.desktop-ui/44.viewmodel-testing",{"title":1621,"path":1622,"stem":1623},"Avalonia Headless Testing — тестування UI без вікон","/csharp/desktop-ui/44a.avalonia-headless-testing","01.csharp/12.desktop-ui/44a.avalonia-headless-testing",{"title":1625,"path":1626,"stem":1627},"Кросплатформна розробка з Avalonia","/csharp/desktop-ui/avalonia-cross-platform","01.csharp/12.desktop-ui/45.avalonia-cross-platform",{"title":1629,"path":1630,"stem":1631},"Пакування та розгортання Avalonia додатків","/csharp/desktop-ui/avalonia-packaging-deployment","01.csharp/12.desktop-ui/46.avalonia-packaging-deployment",{"title":1633,"path":1634,"stem":1635},"Розгортання WPF застосунків","/csharp/desktop-ui/wpf-packaging-deployment","01.csharp/12.desktop-ui/47.wpf-packaging-deployment",{"title":1637,"path":1638,"stem":1639},"C# & .NET: The Ultimate Roadmap","/csharp/roadmap","01.csharp/roadmap",{"title":1641,"icon":1642,"path":1643,"stem":1644,"children":1645,"page":59},"C++","i-devicon-cplusplus","/cpp","02.cpp",[1646,1650,1654,1658,1662,1666,1670,1674,1678,1681,1685,1689,1693,1697,1701,1705,1709,1713,1717],{"title":1647,"path":1648,"stem":1649},"Вступ у програмування та алгоритми","/cpp/intro-algorithms","02.cpp/01.intro-algorithms",{"title":1651,"path":1652,"stem":1653},"Code Style: угоди про оформлення коду","/cpp/code-style","02.cpp/02.code-style",{"title":1655,"path":1656,"stem":1657},"Середовище розробки та перший проєкт","/cpp/ide-setup","02.cpp/03.ide-setup",{"title":1659,"path":1660,"stem":1661},"Вивід даних на екран","/cpp/data-output","02.cpp/04.data-output",{"title":1663,"path":1664,"stem":1665},"Типи даних, змінні та константи","/cpp/data-types-variables","02.cpp/05.data-types-variables",{"title":1667,"path":1668,"stem":1669},"Ввід даних з клавіатури","/cpp/data-input","02.cpp/06.data-input",{"title":1671,"path":1672,"stem":1673},"Оператори, перетворення типів та логічні операції","/cpp/operators-type-conversion","02.cpp/07.operators-type-conversion",{"title":1675,"path":1676,"stem":1677},"Цикли","/cpp/loops","02.cpp/08.loops",{"title":32,"path":1679,"stem":1680},"/cpp/arrays","02.cpp/09.arrays",{"title":1682,"path":1683,"stem":1684},"Алгоритми сортування та аналіз складності","/cpp/sorting","02.cpp/10.sorting",{"title":1686,"path":1687,"stem":1688},"Алгоритми пошуку","/cpp/searching","02.cpp/11.searching",{"title":1690,"path":1691,"stem":1692},"Функції: основи","/cpp/functions-basics","02.cpp/12.functions-basics",{"title":1694,"path":1695,"stem":1696},"Функції: прототипи, область видимості та додаткові можливості","/cpp/functions-scope","02.cpp/13.functions-scope",{"title":1698,"path":1699,"stem":1700},"Функції: перевантаження та шаблони","/cpp/functions-overloading-templates","02.cpp/14.functions-overloading-templates",{"title":1702,"path":1703,"stem":1704},"Вказівники: основи","/cpp/pointers-basics","02.cpp/15.pointers-basics",{"title":1706,"path":1707,"stem":1708},"Посилання (References)","/cpp/references","02.cpp/16.references",{"title":1710,"path":1711,"stem":1712},"Вказівники, const і масиви","/cpp/pointers-const-arrays","02.cpp/17.pointers-const-arrays",{"title":1714,"path":1715,"stem":1716},"Адресна арифметика","/cpp/pointer-arithmetic","02.cpp/18.pointer-arithmetic",{"title":1718,"path":1719,"stem":1720},"Динамічна пам'ять","/cpp/dynamic-memory","02.cpp/19.dynamic-memory",{"title":1722,"icon":1723,"path":1724,"stem":1725,"children":1726,"page":59},"JavaScript","i-devicon-javascript","/javascript","03.javascript",[1727,1753,1807,1829,2133,2171],{"title":1728,"icon":1729,"path":1730,"stem":1731,"children":1732,"page":59},"Events","i-lucide-mouse-pointer-click","/javascript/events","03.javascript/01.events",[1733,1737,1741,1745,1749],{"title":1734,"path":1735,"stem":1736},"Вступ до подій браузера","/javascript/events/intro","03.javascript/01.events/01.intro",{"title":1738,"path":1739,"stem":1740},"Бульбашковий механізм (Bubbling) та занурення (Capturing)","/javascript/events/bubbling-capturing","03.javascript/01.events/02.bubbling-capturing",{"title":1742,"path":1743,"stem":1744},"Делегування подій (Event Delegation)","/javascript/events/delegate-events","03.javascript/01.events/03.delegate-events",{"title":1746,"path":1747,"stem":1748},"Типові дії браузера та preventDefault()","/javascript/events/prevent-default","03.javascript/01.events/04.prevent-default",{"title":1750,"path":1751,"stem":1752},"Запуск користувацьких подій (Custom Events)","/javascript/events/custom-events","03.javascript/01.events/05.custom-events",{"title":1754,"icon":1755,"path":1756,"stem":1757,"children":1758,"page":59},"Network","i-lucide-globe","/javascript/network","03.javascript/02.network",[1759,1763,1767,1771,1775,1779,1783,1787,1791,1795,1799,1803],{"title":1760,"path":1761,"stem":1762},"Fetch API - Сучасний підхід до HTTP-запитів","/javascript/network/01-fetch-api","03.javascript/02.network/01-fetch-api",{"title":1764,"path":1765,"stem":1766},"FormData - Робота з формами та файлами","/javascript/network/02-formdata","03.javascript/02.network/02-formdata",{"title":1768,"path":1769,"stem":1770},"Відстеження прогресу завантаження","/javascript/network/03-download-progress","03.javascript/02.network/03-download-progress",{"title":1772,"path":1773,"stem":1774},"Переривання fetch-запитів","/javascript/network/04-abort-requests","03.javascript/02.network/04-abort-requests",{"title":1776,"path":1777,"stem":1778},"CORS - Запити між різними джерелами","/javascript/network/05-cors","03.javascript/02.network/05-cors",{"title":1780,"path":1781,"stem":1782},"Fetch API - Повний довідник опцій","/javascript/network/06-fetch-options","03.javascript/02.network/06-fetch-options",{"title":1784,"path":1785,"stem":1786},"URL Objects - Робота з посиланнями","/javascript/network/07-url-objects","03.javascript/02.network/07-url-objects",{"title":1788,"path":1789,"stem":1790},"XMLHttpRequest - AJAX та низькорівневі запити","/javascript/network/08-xmlhttprequest","03.javascript/02.network/08-xmlhttprequest",{"title":1792,"path":1793,"stem":1794},"Відновлюване завантаження файлів","/javascript/network/09-resumable-upload","03.javascript/02.network/09-resumable-upload",{"title":1796,"path":1797,"stem":1798},"Cookies, document.cookie та світ після \"Cookiepocalypse\"","/javascript/network/10-cookies","03.javascript/02.network/10-cookies",{"title":1800,"path":1801,"stem":1802},"js-cookie: Керування Cookies без Болю","/javascript/network/11-js-cookie","03.javascript/02.network/11-js-cookie",{"title":1804,"path":1805,"stem":1806},"Axios: Потужний HTTP-клієнт для JavaScript","/javascript/network/12-axios","03.javascript/02.network/12-axios",{"title":1808,"icon":1809,"path":1810,"stem":1811,"children":1812,"page":59},"Bom","i-lucide-monitor","/javascript/bom","03.javascript/03.bom",[1813,1817,1821,1825],{"title":1814,"path":1815,"stem":1816},"LocalStorage, SessionStorage та patterns збереження даних","/javascript/bom/01-localstorage","03.javascript/03.bom/01-localstorage",{"title":1818,"path":1819,"stem":1820},"Location Object - Керування адресою сторінки","/javascript/bom/02-location-object","03.javascript/03.bom/02-location-object",{"title":1822,"path":1823,"stem":1824},"History API - Керування історією браузера","/javascript/bom/03-history-api","03.javascript/03.bom/03-history-api",{"title":1826,"path":1827,"stem":1828},"Navigator Object - Ідентифікація та Можливості Пристрою","/javascript/bom/04-navigator-object","03.javascript/03.bom/04-navigator-object",{"title":1830,"icon":1831,"path":1832,"stem":1833,"children":1834},"React","i-devicon-react","/javascript/react","03.javascript/04.react/index",[1835,1836,1840,1844,1848,1852,1915,1950,2102],{"title":1830,"path":1832,"stem":1833},{"title":1837,"path":1838,"stem":1839},"Робота з Формами в React","/javascript/react/react-forms","03.javascript/04.react/01.react-forms",{"title":1841,"path":1842,"stem":1843},"React Hook Form: Професійна Робота з Формами","/javascript/react/react-hook-form","03.javascript/04.react/02.react-hook-form",{"title":1845,"path":1846,"stem":1847},"React Hook Form: Глибоке Розуміння Архітектури та Оптимізації","/javascript/react/react-hook-form-new","03.javascript/04.react/02.react-hook-form-new",{"title":1849,"path":1850,"stem":1851},"Axios та React: Професійна Архітектура Запитів","/javascript/react/data-fetching-axios","03.javascript/04.react/03.data-fetching-axios",{"title":1853,"icon":132,"path":1854,"stem":1855,"children":1856},"Tanstack Query","/javascript/react/tanstack-query","03.javascript/04.react/04.tanstack-query/index",[1857,1859,1863,1867,1871,1875,1879,1883,1887,1891,1895,1899,1903,1907,1911],{"title":1858,"path":1854,"stem":1855},"TanStack Query: Майстерність Керування Станом Сервера",{"title":1860,"path":1861,"stem":1862},"Парадигма Server State: Чому useEffect недостатньо","/javascript/react/tanstack-query/server-state-paradigm","03.javascript/04.react/04.tanstack-query/01.server-state-paradigm",{"title":1864,"path":1865,"stem":1866},"Встановлення та Налаштування: Фундамент","/javascript/react/tanstack-query/installation-and-devtools","03.javascript/04.react/04.tanstack-query/02.installation-and-devtools",{"title":1868,"path":1869,"stem":1870},"Основи Запитів та Магія Ключів","/javascript/react/tanstack-query/query-basics-and-keys","03.javascript/04.react/04.tanstack-query/03.query-basics-and-keys",{"title":1872,"path":1873,"stem":1874},"Синхронізація Даних: Життєвий Цикл Запиту","/javascript/react/tanstack-query/data-synchronization","03.javascript/04.react/04.tanstack-query/04.data-synchronization",{"title":1876,"path":1877,"stem":1878},"Мутації та Інвалідація: Зміна Даних","/javascript/react/tanstack-query/mutations-and-invalidation","03.javascript/04.react/04.tanstack-query/05.mutations-and-invalidation",{"title":1880,"path":1881,"stem":1882},"Оптимістичні Оновлення: Швидше за Світло","/javascript/react/tanstack-query/optimistic-updates","03.javascript/04.react/04.tanstack-query/06.optimistic-updates",{"title":1884,"path":1885,"stem":1886},"Пагінація та Infinite Scroll","/javascript/react/tanstack-query/pagination-and-load-more","03.javascript/04.react/04.tanstack-query/07.pagination-and-load-more",{"title":1888,"path":1889,"stem":1890},"Просунуті Патерни та Оптимізація","/javascript/react/tanstack-query/advanced-patterns","03.javascript/04.react/04.tanstack-query/08.advanced-patterns",{"title":1892,"path":1893,"stem":1894},"Архітектура та Best Practices","/javascript/react/tanstack-query/architecture-and-best-practices","03.javascript/04.react/04.tanstack-query/09.architecture-and-best-practices",{"title":1896,"path":1897,"stem":1898},"Server-Side Rendering (SSR) та Гідратація","/javascript/react/tanstack-query/server-side-rendering","03.javascript/04.react/04.tanstack-query/10.server-side-rendering",{"title":1900,"path":1901,"stem":1902},"Стратегії Тестування","/javascript/react/tanstack-query/testing-strategies","03.javascript/04.react/04.tanstack-query/11.testing-strategies",{"title":1904,"path":1905,"stem":1906},"Аутентифікація та Обробка Помилок","/javascript/react/tanstack-query/authentication-and-errors","03.javascript/04.react/04.tanstack-query/12.authentication-and-errors",{"title":1908,"path":1909,"stem":1910},"React Suspense та Майбутнє","/javascript/react/tanstack-query/react-suspense","03.javascript/04.react/04.tanstack-query/13.react-suspense",{"title":1912,"path":1913,"stem":1914},"Глибоке Занурення в Продуктивність","/javascript/react/tanstack-query/performance-deep-dive","03.javascript/04.react/04.tanstack-query/14.performance-deep-dive",{"title":1916,"icon":1831,"path":1917,"stem":1918,"children":1919},"React Router","/javascript/react/react-router","03.javascript/04.react/05.react-router/index",[1920,1922,1926,1930,1934,1938,1942,1946],{"title":1921,"path":1917,"stem":1918},"React Router: Навігаційна система сучасного вебу",{"title":1923,"path":1924,"stem":1925},"Налаштування та Базовий Роутинг","/javascript/react/react-router/setup-and-basic-routing","03.javascript/04.react/05.react-router/01.setup-and-basic-routing",{"title":1927,"path":1928,"stem":1929},"Динамічна Навігація","/javascript/react/react-router/navigation-and-links","03.javascript/04.react/05.react-router/02.navigation-and-links",{"title":1931,"path":1932,"stem":1933},"Вкладені Маршрути та Макети","/javascript/react/react-router/nested-routes-and-layouts","03.javascript/04.react/05.react-router/03.nested-routes-and-layouts",{"title":1935,"path":1936,"stem":1937},"Динамічні Маршрути та Параметри","/javascript/react/react-router/dynamic-routing","03.javascript/04.react/05.react-router/04.dynamic-routing",{"title":1939,"path":1940,"stem":1941},"Data APIs: Loaders та Actions","/javascript/react/react-router/data-loading","03.javascript/04.react/05.react-router/05.data-loading",{"title":1943,"path":1944,"stem":1945},"Просунуті Патерни","/javascript/react/react-router/advanced-patterns","03.javascript/04.react/05.react-router/06.advanced-patterns",{"title":1947,"path":1948,"stem":1949},"Legacy Routing: Компонентний підхід","/javascript/react/react-router/legacy-routing","03.javascript/04.react/05.react-router/07.legacy-routing",{"title":1951,"icon":132,"path":1952,"stem":1953,"children":1954},"Redux","/javascript/react/redux","03.javascript/04.react/06.redux/index",[1955,1957,1973,2002,2011,2032,2048,2077],{"title":1956,"path":1952,"stem":1953},"Redux: Еволюція управління станом",{"title":14,"icon":15,"path":1958,"stem":1959,"children":1960,"page":59},"/javascript/react/redux/fundamentals","03.javascript/04.react/06.redux/01.fundamentals",[1961,1965,1969],{"title":1962,"path":1963,"stem":1964},"Вступ до State Management","/javascript/react/redux/fundamentals/intro-state-management","03.javascript/04.react/06.redux/01.fundamentals/01.intro-state-management",{"title":1966,"path":1967,"stem":1968},"Філософія Redux та Три Принципи","/javascript/react/redux/fundamentals/redux-philosophy","03.javascript/04.react/06.redux/01.fundamentals/02.redux-philosophy",{"title":1970,"path":1971,"stem":1972},"Чисті функції та Іммутабельність","/javascript/react/redux/fundamentals/pure-functions-immutability","03.javascript/04.react/06.redux/01.fundamentals/03.pure-functions-immutability",{"title":1974,"icon":132,"path":1975,"stem":1976,"children":1977,"page":59},"Classic Redux","/javascript/react/redux/classic-redux","03.javascript/04.react/06.redux/02.classic-redux",[1978,1982,1986,1990,1994,1998],{"title":1979,"path":1980,"stem":1981},"Створення Store (Classic Redux)","/javascript/react/redux/classic-redux/store-setup","03.javascript/04.react/06.redux/02.classic-redux/01.store-setup",{"title":1983,"path":1984,"stem":1985},"Actions, Constants та Action Creators","/javascript/react/redux/classic-redux/actions-constants","03.javascript/04.react/06.redux/02.classic-redux/02.actions-constants",{"title":1987,"path":1988,"stem":1989},"Логіка Reducers","/javascript/react/redux/classic-redux/reducers","03.javascript/04.react/06.redux/02.classic-redux/03.reducers",{"title":1991,"path":1992,"stem":1993},"Комбінування Reducers (Root Reducer)","/javascript/react/redux/classic-redux/data-flow","03.javascript/04.react/06.redux/02.classic-redux/04.data-flow",{"title":1995,"path":1996,"stem":1997},"Підключення до React (React-Redux)","/javascript/react/redux/classic-redux/react-redux-connection","03.javascript/04.react/06.redux/02.classic-redux/05.react-redux-connection",{"title":1999,"path":2000,"stem":2001},"Middleware та Асинхронність (Redux Thunk)","/javascript/react/redux/classic-redux/middleware-thunk","03.javascript/04.react/06.redux/02.classic-redux/06.middleware-thunk",{"title":2003,"icon":132,"path":2004,"stem":2005,"children":2006,"page":59},"Transition To Rtk","/javascript/react/redux/transition-to-rtk","03.javascript/04.react/06.redux/03.transition-to-rtk",[2007],{"title":2008,"path":2009,"stem":2010},"Проблеми класичного Redux","/javascript/react/redux/transition-to-rtk/problems-with-classic","03.javascript/04.react/06.redux/03.transition-to-rtk/01.problems-with-classic",{"title":2012,"icon":132,"path":2013,"stem":2014,"children":2015,"page":59},"Redux Toolkit","/javascript/react/redux/redux-toolkit","03.javascript/04.react/06.redux/04.redux-toolkit",[2016,2020,2024,2028],{"title":2017,"path":2018,"stem":2019},"Налаштування Store з configureStore","/javascript/react/redux/redux-toolkit/configure-store","03.javascript/04.react/06.redux/04.redux-toolkit/01.configure-store",{"title":2021,"path":2022,"stem":2023},"createSlice: Революція в Redux","/javascript/react/redux/redux-toolkit/create-slice","03.javascript/04.react/06.redux/04.redux-toolkit/02.create-slice",{"title":2025,"path":2026,"stem":2027},"Асинхронність з createAsyncThunk","/javascript/react/redux/redux-toolkit/async-thunks","03.javascript/04.react/06.redux/04.redux-toolkit/03.async-thunks",{"title":2029,"path":2030,"stem":2031},"04. Entity Adapter: Керування нормалізованим станом","/javascript/react/redux/redux-toolkit/entity-adapter","03.javascript/04.react/06.redux/04.redux-toolkit/04.entity-adapter",{"title":2033,"icon":92,"path":2034,"stem":2035,"children":2036,"page":59},"Advanced","/javascript/react/redux/advanced","03.javascript/04.react/06.redux/05.advanced",[2037,2041,2045],{"title":2038,"path":2039,"stem":2040},"Мемоізація та Селектори: Повний Гайд по Reselect","/javascript/react/redux/advanced/selectors-reselect","03.javascript/04.react/06.redux/05.advanced/01.selectors-reselect",{"title":2042,"path":2043,"stem":2044},"RTK Query: Архітектура Серверного Кешу","/javascript/react/redux/advanced/rtk-query-intro","03.javascript/04.react/06.redux/05.advanced/02.rtk-query-intro",{"title":1892,"path":2046,"stem":2047},"/javascript/react/redux/advanced/architecture-best-practices","03.javascript/04.react/06.redux/05.advanced/03.architecture-best-practices",{"title":2049,"icon":132,"path":2050,"stem":2051,"children":2052,"page":59},"Project Kanban","/javascript/react/redux/project-kanban","03.javascript/04.react/06.redux/06.project-kanban",[2053,2057,2061,2065,2069,2073],{"title":2054,"path":2055,"stem":2056},"Проєкт: Kanban Board (Trello Clone)","/javascript/react/redux/project-kanban/project-overview","03.javascript/04.react/06.redux/06.project-kanban/01.project-overview",{"title":2058,"path":2059,"stem":2060},"Налаштування та Типізація","/javascript/react/redux/project-kanban/setup-and-types","03.javascript/04.react/06.redux/06.project-kanban/02.setup-and-types",{"title":2062,"path":2063,"stem":2064},"Board Slice: Серце Дошки","/javascript/react/redux/project-kanban/board-slice","03.javascript/04.react/06.redux/06.project-kanban/03.board-slice",{"title":2066,"path":2067,"stem":2068},"Логіка Drag & Drop","/javascript/react/redux/project-kanban/drag-and-drop-logic","03.javascript/04.react/06.redux/06.project-kanban/04.drag-and-drop-logic",{"title":2070,"path":2071,"stem":2072},"Інтеграція з RTK Query","/javascript/react/redux/project-kanban/rtk-query-integration","03.javascript/04.react/06.redux/06.project-kanban/05.rtk-query-integration",{"title":2074,"path":2075,"stem":2076},"Optimistic Updates","/javascript/react/redux/project-kanban/optimistic-updates","03.javascript/04.react/06.redux/06.project-kanban/06.optimistic-updates",{"title":2078,"icon":132,"path":2079,"stem":2080,"children":2081,"page":59},"Testing","/javascript/react/redux/testing","03.javascript/04.react/06.redux/07.testing",[2082,2086,2090,2094,2098],{"title":2083,"path":2084,"stem":2085},"Тестування Redux","/javascript/react/redux/testing/intro-testing","03.javascript/04.react/06.redux/07.testing/01.intro-testing",{"title":2087,"path":2088,"stem":2089},"Тестування Reducers","/javascript/react/redux/testing/testing-reducers","03.javascript/04.react/06.redux/07.testing/02.testing-reducers",{"title":2091,"path":2092,"stem":2093},"Тестування Селекторів","/javascript/react/redux/testing/testing-selectors","03.javascript/04.react/06.redux/07.testing/03.testing-selectors",{"title":2095,"path":2096,"stem":2097},"Тестування Компонентів (Integration)","/javascript/react/redux/testing/testing-components","03.javascript/04.react/06.redux/07.testing/04.testing-components",{"title":2099,"path":2100,"stem":2101},"Тестування Async Thunks","/javascript/react/redux/testing/testing-thunks","03.javascript/04.react/06.redux/07.testing/05.testing-thunks",{"title":2103,"icon":132,"path":2104,"stem":2105,"children":2106},"Ui Libraries","/javascript/react/ui-libraries","03.javascript/04.react/07.ui-libraries/index",[2107,2109,2113,2117,2121,2125,2129],{"title":2108,"path":2104,"stem":2105},"UI Бібліотеки в React",{"title":2110,"path":2111,"stem":2112},"Вступ до UI Бібліотек: Навіщо Винаходити Велосипед Двічі?","/javascript/react/ui-libraries/introduction-to-ui-libraries","03.javascript/04.react/07.ui-libraries/01.introduction-to-ui-libraries",{"title":2114,"path":2115,"stem":2116},"Філософія shadcn/ui: \"Not a Component Library\"","/javascript/react/ui-libraries/shadcn-philosophy","03.javascript/04.react/07.ui-libraries/02.shadcn-philosophy",{"title":2118,"path":2119,"stem":2120},"Установка та Налаштування shadcn/ui","/javascript/react/ui-libraries/shadcn-installation","03.javascript/04.react/07.ui-libraries/03.shadcn-installation",{"title":2122,"path":2123,"stem":2124},"Базові Компоненти shadcn/ui: Фундамент Інтерфейсу","/javascript/react/ui-libraries/shadcn-components-basics","03.javascript/04.react/07.ui-libraries/04.shadcn-components-basics",{"title":2126,"path":2127,"stem":2128},"Компоненти Форм: Побудова Інтерактивних Form","/javascript/react/ui-libraries/shadcn-components-forms","03.javascript/04.react/07.ui-libraries/05.shadcn-components-forms",{"title":2130,"path":2131,"stem":2132},"Складні Компоненти: Dialog, Dropdown, Table та Command","/javascript/react/ui-libraries/shadcn-components-advanced","03.javascript/04.react/07.ui-libraries/06.shadcn-components-advanced",{"title":2134,"icon":2135,"path":2136,"stem":2137,"children":2138,"page":59},"TypeScript","i-devicon-typescript","/javascript/typescript","03.javascript/05.typescript",[2139,2143,2147,2151,2155,2159,2163,2167],{"title":2140,"path":2141,"stem":2142},"TypeScript: Броня для вашого коду","/javascript/typescript/intro-and-basic-types","03.javascript/05.typescript/01.intro-and-basic-types",{"title":2144,"path":2145,"stem":2146},"Майстерність Моделювання Даних: Інтерфейси та Просунуті Типи","/javascript/typescript/interfaces-and-advanced-types","03.javascript/05.typescript/02.interfaces-and-advanced-types",{"title":2148,"path":2149,"stem":2150},"Алхімія Типів: Generics та Utility Types","/javascript/typescript/generics-and-utilities","03.javascript/05.typescript/03.generics-and-utilities",{"title":2152,"path":2153,"stem":2154},"Архітектура та Шаблони: Класи в TypeScript","/javascript/typescript/classes-and-oop","03.javascript/05.typescript/04.classes-and-oop",{"title":2156,"path":2157,"stem":2158},"Продакшн та Екосистема: Advanced Config & Workflow","/javascript/typescript/advanced-patterns-and-config","03.javascript/05.typescript/05.advanced-patterns-and-config",{"title":2160,"path":2161,"stem":2162},"TypeScript у світі React","/javascript/typescript/react-basics","03.javascript/05.typescript/06.react-basics",{"title":2164,"path":2165,"stem":2166},"React + TypeScript: Продвинуті патерни","/javascript/typescript/react-advanced","03.javascript/05.typescript/07.react-advanced",{"title":2168,"path":2169,"stem":2170},"React + TypeScript: Екосистема та бібліотеки","/javascript/typescript/react-ecosystem","03.javascript/05.typescript/08.react-ecosystem",{"title":2172,"path":2173,"stem":2174},"Atomic Design","/javascript/atomic-design","03.javascript/2.atomic-design",{"title":2176,"icon":2177,"path":2178,"stem":2179,"children":2180,"page":59},"Java","i-devicon-java","/java","04.java",[2181,2184,2187,2191,2195,2199],{"title":162,"path":2182,"stem":2183},"/java/data-mapper-part1","04.java/01.data-mapper-part1",{"title":166,"path":2185,"stem":2186},"/java/data-mapper-part2","04.java/02.data-mapper-part2",{"title":2188,"path":2189,"stem":2190},"Service Layer: Організація бізнес-логіки","/java/service-layer","04.java/03.service-layer",{"title":2192,"path":2193,"stem":2194},"Rich Domain Model та State Pattern","/java/rich-domain-model","04.java/04.rich-domain-model",{"title":2196,"path":2197,"stem":2198},"Патерни для складної бізнес-логіки","/java/business-logic-patterns","04.java/05.business-logic-patterns",{"title":2200,"path":2201,"stem":2202},"Обробка помилок та валідація","/java/error-handling-validation","04.java/06.error-handling-validation",{"title":2204,"icon":2205,"path":2206,"stem":2207,"children":2208,"page":59},"Бази даних","i-lucide-database","/databases","06.databases",[2209,2239,2262,2299,2328,2346,2380,2392,2401],{"title":2210,"icon":2211,"path":2212,"stem":2213,"children":2214,"page":59},"Intro","i-lucide-play","/databases/intro","06.databases/01.intro",[2215,2219,2223,2227,2231,2235],{"title":2216,"path":2217,"stem":2218},"Введення в теорію баз даних","/databases/intro/introduction-to-databases","06.databases/01.intro/01.introduction-to-databases",{"title":2220,"path":2221,"stem":2222},"Реляційна модель даних","/databases/intro/relational-model-theory","06.databases/01.intro/02.relational-model-theory",{"title":2224,"path":2225,"stem":2226},"ER-моделювання","/databases/intro/er-modeling","06.databases/01.intro/03.er-modeling",{"title":2228,"path":2229,"stem":2230},"Логічне проектування БД","/databases/intro/logical-schema","06.databases/01.intro/04.logical-schema",{"title":2232,"path":2233,"stem":2234},"Класифікація таблиць","/databases/intro/table-classification","06.databases/01.intro/05.table-classification",{"title":2236,"path":2237,"stem":2238},"PlantUML для баз даних","/databases/intro/plantuml-diagrams","06.databases/01.intro/06.plantuml-diagrams",{"title":2240,"icon":2205,"path":2241,"stem":2242,"children":2243,"page":59},"MS SQL Server Start","/databases/ms-sql-server-start","06.databases/02.ms-sql-server-start",[2244,2248,2254,2258],{"title":2245,"path":2246,"stem":2247},"Типи даних у MS SQL Server","/databases/ms-sql-server-start/data-types","06.databases/02.ms-sql-server-start/01.data-types",{"title":2249,"path":2250,"stem":2251,"children":2252},"Індекси у MS SQL Server","/databases/ms-sql-server-start/sql-indexes","06.databases/02.ms-sql-server-start/02.sql-indexes",[2253],{"title":2249,"path":2250,"stem":2251},{"title":2255,"path":2256,"stem":2257},"Системні бази даних MS SQL Server","/databases/ms-sql-server-start/system-databases","06.databases/02.ms-sql-server-start/03.system-databases",{"title":2259,"path":2260,"stem":2261},"Огляд мови SQL та запитів","/databases/ms-sql-server-start/sql-queries-overview","06.databases/02.ms-sql-server-start/04.sql-queries-overview",{"title":2263,"icon":2205,"path":2264,"stem":2265,"children":2266,"page":59},"SQL","/databases/sql","06.databases/03.sql",[2267,2271,2275,2279,2283,2287,2291,2295],{"title":2268,"path":2269,"stem":2270},"Налаштування демонстраційної бази даних","/databases/sql/sample-database-setup","06.databases/03.sql/00.sample-database-setup",{"title":2272,"path":2273,"stem":2274},"DDL - Створення таблиць (CREATE TABLE)","/databases/sql/ddl-create-table","06.databases/03.sql/01.ddl-create-table",{"title":2276,"path":2277,"stem":2278},"DDL - Зміна та видалення таблиць (ALTER, DROP)","/databases/sql/ddl-alter-drop-table","06.databases/03.sql/02.ddl-alter-drop-table",{"title":2280,"path":2281,"stem":2282},"SELECT запити - Основи","/databases/sql/select-queries-fundamentals","06.databases/03.sql/03.select-queries-fundamentals",{"title":2284,"path":2285,"stem":2286},"SELECT запити - Розширені можливості","/databases/sql/select-queries-advanced","06.databases/03.sql/04.select-queries-advanced",{"title":2288,"path":2289,"stem":2290},"INSERT запити - Додавання даних","/databases/sql/insert-queries","06.databases/03.sql/05.insert-queries",{"title":2292,"path":2293,"stem":2294},"UPDATE та DELETE запити","/databases/sql/update-delete-queries","06.databases/03.sql/06.update-delete-queries",{"title":2296,"path":2297,"stem":2298},"Транзакції в SQL","/databases/sql/transactions","06.databases/03.sql/07.transactions",{"title":2300,"icon":2205,"path":2301,"stem":2302,"children":2303,"page":59},"Multi Table Databases","/databases/multi-table-databases","06.databases/04.multi-table-databases",[2304,2308,2312,2316,2320,2324],{"title":2305,"path":2306,"stem":2307},"Зв'язки та нормалізація БД","/databases/multi-table-databases/relationships-and-normalization","06.databases/04.multi-table-databases/00.relationships-and-normalization",{"title":2309,"path":2310,"stem":2311},"INNER JOIN - З'єднання таблиць","/databases/multi-table-databases/inner-join","06.databases/04.multi-table-databases/01.inner-join",{"title":2313,"path":2314,"stem":2315},"OUTER JOINs - LEFT, RIGHT, FULL","/databases/multi-table-databases/outer-joins","06.databases/04.multi-table-databases/02.outer-joins",{"title":2317,"path":2318,"stem":2319},"CROSS та SELF JOINs","/databases/multi-table-databases/cross-self-joins","06.databases/04.multi-table-databases/03.cross-self-joins",{"title":2321,"path":2322,"stem":2323},"Підзапити (Subqueries)","/databases/multi-table-databases/subqueries","06.databases/04.multi-table-databases/04.subqueries",{"title":2325,"path":2326,"stem":2327},"Агрегації з JOIN","/databases/multi-table-databases/aggregations-with-joins","06.databases/04.multi-table-databases/05.aggregations-with-joins",{"title":2329,"icon":2330,"path":2331,"stem":2332,"children":2333,"page":59},"Aggregate Functions","i-lucide-calculator","/databases/aggregate-functions","06.databases/05.aggregate-functions",[2334,2338,2342],{"title":2335,"path":2336,"stem":2337},"Функції агрегування в MS SQL Server","/databases/aggregate-functions/introduction-aggregate-functions","06.databases/05.aggregate-functions/01.introduction-aggregate-functions",{"title":2339,"path":2340,"stem":2341},"Групування даних в MS SQL Server","/databases/aggregate-functions/grouping-data","06.databases/05.aggregate-functions/02.grouping-data",{"title":2343,"path":2344,"stem":2345},"Підзапити з агрегатними функціями","/databases/aggregate-functions/subqueries-aggregates","06.databases/05.aggregate-functions/03.subqueries-aggregates",{"title":2347,"icon":2348,"path":2349,"stem":2350,"children":2351,"page":59},"Тригери та зберігаємі процедури","i-lucide-database-zap","/databases/triggers-stored-procedures","06.databases/07.triggers-stored-procedures",[2352,2356,2360,2364,2368,2372,2376],{"title":2353,"path":2354,"stem":2355},"DML-тригери","/databases/triggers-stored-procedures/dml-triggers","06.databases/07.triggers-stored-procedures/01.dml-triggers",{"title":2357,"path":2358,"stem":2359},"DDL-тригери","/databases/triggers-stored-procedures/ddl-triggers","06.databases/07.triggers-stored-procedures/02.ddl-triggers",{"title":2361,"path":2362,"stem":2363},"Transact-SQL розширення","/databases/triggers-stored-procedures/transact-sql-extensions","06.databases/07.triggers-stored-procedures/03.transact-sql-extensions",{"title":2365,"path":2366,"stem":2367},"Транзакції","/databases/triggers-stored-procedures/transactions","06.databases/07.triggers-stored-procedures/04.transactions",{"title":2369,"path":2370,"stem":2371},"Зберігаємі процедури","/databases/triggers-stored-procedures/stored-procedures","06.databases/07.triggers-stored-procedures/05.stored-procedures",{"title":2373,"path":2374,"stem":2375},"Користувацькі функції","/databases/triggers-stored-procedures/user-defined-functions","06.databases/07.triggers-stored-procedures/06.user-defined-functions",{"title":2377,"path":2378,"stem":2379},"Безпека баз даних","/databases/triggers-stored-procedures/security","06.databases/07.triggers-stored-procedures/08.security",{"title":2377,"icon":793,"path":2381,"stem":2382,"children":2383,"page":59},"/databases/security","06.databases/08.security",[2384,2388],{"title":2385,"path":2386,"stem":2387},"Вступ до безпеки баз даних","/databases/security/introduction","06.databases/08.security/01.introduction",{"title":2389,"path":2390,"stem":2391},"Системні представлення та метадані","/databases/security/system-views","06.databases/08.security/02.system-views",{"title":2393,"icon":2394,"path":2395,"stem":2396,"children":2397,"page":59},"Резервне копіювання та відновлення","i-lucide-database-backup","/databases/backup-recovery","06.databases/09.backup-recovery",[2398],{"title":2393,"path":2399,"stem":2400},"/databases/backup-recovery/backup-restore","06.databases/09.backup-recovery/01.backup-restore",{"title":2402,"icon":2403,"path":2404,"stem":2405,"children":2406,"page":59},"Повнотекстовий пошук","i-lucide-search","/databases/full-text-search","06.databases/10.full-text-search",[2407],{"title":2402,"path":2408,"stem":2409},"/databases/full-text-search/full-text-search","06.databases/10.full-text-search/01.full-text-search",{"title":2411,"icon":2412,"path":2413,"stem":2414,"children":2415,"page":59},"Tools","i-lucide-wrench","/tools","07.tools",[2416],{"title":2417,"icon":2418,"path":2419,"stem":2420,"children":2421},"Docker","i-simple-icons-docker","/tools/docker","07.tools/01.docker/index",[2422,2424,2428,2432,2436,2440,2444,2448,2452,2456,2460,2464,2468,2472],{"title":2423,"path":2419,"stem":2420},"Docker: від нуля до production",{"title":2425,"path":2426,"stem":2427},"Контейнеризація — від проблеми до рішення","/tools/docker/containerization-concept","07.tools/01.docker/01.containerization-concept",{"title":2429,"path":2430,"stem":2431},"Docker — що це і навіщо?","/tools/docker/docker-what-and-why","07.tools/01.docker/02.docker-what-and-why",{"title":2433,"path":2434,"stem":2435},"Архітектура Docker Engine","/tools/docker/docker-architecture","07.tools/01.docker/03.docker-architecture",{"title":2437,"path":2438,"stem":2439},"Встановлення Docker","/tools/docker/installation","07.tools/01.docker/04.installation",{"title":2441,"path":2442,"stem":2443},"Перший контейнер — docker run","/tools/docker/first-container","07.tools/01.docker/05.first-container",{"title":2445,"path":2446,"stem":2447},"Життєвий цикл контейнера","/tools/docker/container-lifecycle","07.tools/01.docker/06.container-lifecycle",{"title":2449,"path":2450,"stem":2451},"Docker Images — фундаментальні концепції","/tools/docker/docker-images-fundamentals","07.tools/01.docker/07.docker-images-fundamentals",{"title":2453,"path":2454,"stem":2455},"Dockerfile — основи","/tools/docker/dockerfile-basics","07.tools/01.docker/08.dockerfile-basics",{"title":2457,"path":2458,"stem":2459},"Dockerfile — просунуті техніки","/tools/docker/dockerfile-advanced","07.tools/01.docker/09.dockerfile-advanced",{"title":2461,"path":2462,"stem":2463},"Build Context та кешування шарів","/tools/docker/build-context-and-cache","07.tools/01.docker/10.build-context-and-cache",{"title":2465,"path":2466,"stem":2467},"Реєстри Docker-образів","/tools/docker/image-registries","07.tools/01.docker/11.image-registries",{"title":2469,"path":2470,"stem":2471},"Контейнеризація .NET додатків","/tools/docker/dotnet-containerization","07.tools/01.docker/12.dotnet-containerization",{"title":2473,"path":2474,"stem":2475},"Томи та збереження даних","/tools/docker/volumes-and-data","07.tools/01.docker/13.volumes-and-data",{"title":2477,"icon":2478,"path":2479,"stem":2480,"children":2481,"page":59},"Software Engineering","i-lucide-code-2","/software-engineering","09.software-engineering",[2482,2486,2490,2494,2498,2502,2506,2510,2514,2518,2522],{"title":2483,"path":2484,"stem":2485},"1. Аналіз предметної області. Експертні знання та складність","/software-engineering/intro.subdomains","09.software-engineering/01.intro.subdomains",{"title":2487,"path":2488,"stem":2489},"2. Обмежені контексти. Інтеграція обмежених контекстів","/software-engineering/integrating-limited-contexts","09.software-engineering/02.integrating-limited-contexts",{"title":2491,"path":2492,"stem":2493},"3. Реалізація простої бізнес-логіки","/software-engineering/simple","09.software-engineering/03.simple",{"title":2495,"path":2496,"stem":2497},"4. Опрацювання складної бізнес-логіки","/software-engineering/complex-business-logic","09.software-engineering/04.complex-business-logic",{"title":2499,"path":2500,"stem":2501},"5. Моделювання фактора часу. Подієво-орієнтована архітектура.","/software-engineering/modelling-the-time-factor","09.software-engineering/05.modelling-the-time-factor",{"title":2503,"path":2504,"stem":2505},"6. Архітектурні патерни","/software-engineering/architectural-patterns","09.software-engineering/06.architectural-patterns",{"title":2507,"path":2508,"stem":2509},"Паттерни взаємодії","/software-engineering/patterns-of-interaction","09.software-engineering/07.patterns-of-interaction",{"title":2511,"path":2512,"stem":2513},"Евристика проєктування","/software-engineering/design-heuristics","09.software-engineering/08.design-heuristics",{"title":2515,"path":2516,"stem":2517},"Еволюція проєктних рішень","/software-engineering/evolution-of-design-solutions","09.software-engineering/09.evolution-of-design-solutions",{"title":2519,"path":2520,"stem":2521},"EventStorming","/software-engineering/eventstorming","09.software-engineering/10.eventstorming",{"title":2523,"path":2524,"stem":2525},"DDD на практиці","/software-engineering/ddd-in-practice","09.software-engineering/11.ddd-in-practice",{"title":2527,"icon":943,"path":2528,"stem":2529,"children":2530,"page":59},"DDD","/ddd","10.ddd",[2531,2535,2539,2543,2547,2551,2555,2559,2563,2567,2571,2575,2579],{"title":2532,"path":2533,"stem":2534},"Аналіз предметної області","/ddd/domain-analysis","10.ddd/01.domain-analysis",{"title":2536,"path":2537,"stem":2538},"Експертні знання про предметну область","/ddd/domain-expert-knowledge","10.ddd/02.domain-expert-knowledge",{"title":2540,"path":2541,"stem":2542},"Як осмислити складність предметної області","/ddd/managing-domain-complexity","10.ddd/03.managing-domain-complexity",{"title":2544,"path":2545,"stem":2546},"Інтеграція обмежених контекстів","/ddd/bounded-context-integration","10.ddd/04.bounded-context-integration",{"title":2548,"path":2549,"stem":2550},"Реалізація простої бізнес-логіки","/ddd/simple-business-logic","10.ddd/05.simple-business-logic",{"title":2552,"path":2553,"stem":2554},"Обробка складної бізнес-логіки","/ddd/complex-business-logic","10.ddd/06.complex-business-logic",{"title":2556,"path":2557,"stem":2558},"Моделювання фактора часу","/ddd/time-modeling","10.ddd/07.time-modeling",{"title":2560,"path":2561,"stem":2562},"Глава 8. Архітектурні Патерни","/ddd/architectural-patterns","10.ddd/08.architectural-patterns",{"title":2564,"path":2565,"stem":2566},"Глава 9. Патерни Взаємодії","/ddd/interaction-patterns","10.ddd/09.interaction-patterns",{"title":2568,"path":2569,"stem":2570},"Глава 10. Проектні Евристики","/ddd/design-heuristics","10.ddd/10.design-heuristics",{"title":2572,"path":2573,"stem":2574},"Глава 11. Еволюція Проектних Рішень","/ddd/evolution-of-design-decisions","10.ddd/11.evolution-of-design-decisions",{"title":2576,"path":2577,"stem":2578},"Глава 12. EventStorming","/ddd/event-storming","10.ddd/12.event-storming",{"title":2580,"path":2581,"stem":2582},"Глава 13. DDD на Практиці","/ddd/ddd-in-practice","10.ddd/13.ddd-in-practice",{"title":2584,"icon":2585,"path":2586,"stem":2587,"children":2588,"page":59},"Media Streaming","i-lucide-video","/media-streaming","11.media-streaming",[2589,2593,2597,2601,2605,2609,2613],{"title":2590,"path":2591,"stem":2592},"01. Магія Стрімінгу: Що відбувається, коли ви натискаєте \"Play\"","/media-streaming/introduction","11.media-streaming/01.introduction",{"title":2594,"path":2595,"stem":2596},"02. Анатомія Медіа: Кодеки, Контейнери та Стиснення","/media-streaming/audio-video-anatomy","11.media-streaming/02.audio-video-anatomy",{"title":2598,"path":2599,"stem":2600},"03. The Gym: FFmpeg Deep Dive","/media-streaming/ffmpeg-gym","11.media-streaming/03.ffmpeg-gym",{"title":2602,"path":2603,"stem":2604},"04. HLS Protocol: HTTP Live Streaming у Деталях","/media-streaming/hls-protocol","11.media-streaming/04.hls-protocol",{"title":2606,"path":2607,"stem":2608},"05. DASH Protocol: Відкритий Стандарт","/media-streaming/dash-protocol","11.media-streaming/05.dash-protocol",{"title":2610,"path":2611,"stem":2612},"06. Масштабування: CDN та Adaptive Bitrate","/media-streaming/cdn-and-adaptive-bitrate","11.media-streaming/06.cdn-and-adaptive-bitrate",{"title":2614,"path":2615,"stem":2616},"07. Війна із Затримкою (Latency)","/media-streaming/realtime-latency","11.media-streaming/07.realtime-latency",{"title":2618,"icon":2619,"path":2620,"stem":2621,"children":2622,"page":59},"HTML & CSS","i-devicon-html5","/html-css","12.html-css",[2623,2627,2631,2635,2639,2643,2647,2651,2655,2659,2663,2667,2671,2675,2679,2683,2687,2691,2695,2699,2703,2707,2711,2715,2719,2723,2727,2731,2735,2739],{"title":2624,"path":2625,"stem":2626},"Вступ до HTML. Структура документа","/html-css/intro-html-structure","12.html-css/01.intro-html-structure",{"title":2628,"path":2629,"stem":2630},"Форматування тексту в HTML","/html-css/html-text-formatting","12.html-css/02.html-text-formatting",{"title":2632,"path":2633,"stem":2634},"Посилання та зображення в HTML","/html-css/html-links-images","12.html-css/03.html-links-images",{"title":2636,"path":2637,"stem":2638},"Списки та таблиці в HTML","/html-css/html-lists-tables","12.html-css/04.html-lists-tables",{"title":2640,"path":2641,"stem":2642},"Форми в HTML","/html-css/html-forms","12.html-css/05.html-forms",{"title":2644,"path":2645,"stem":2646},"Семантичні елементи HTML5","/html-css/html-semantic-elements","12.html-css/06.html-semantic-elements",{"title":2648,"path":2649,"stem":2650},"Мультимедіа та розширені елементи HTML","/html-css/html-multimedia-advanced","12.html-css/07.html-multimedia-advanced",{"title":2652,"path":2653,"stem":2654},"Мікророзмітка та SEO в HTML","/html-css/html-microdata-seo","12.html-css/08.html-microdata-seo",{"title":2656,"path":2657,"stem":2658},"Вступ до CSS. Селектори та специфічність","/html-css/css-intro-selectors","12.html-css/09.css-intro-selectors",{"title":2660,"path":2661,"stem":2662},"Блокова модель CSS. Відступи. Box Sizing","/html-css/css-box-model","12.html-css/10.css-box-model",{"title":2664,"path":2665,"stem":2666},"Розміри у CSS: повний довідник одиниць і ключових слів","/html-css/10a.css-sizing","12.html-css/10a.css-sizing",{"title":2668,"path":2669,"stem":2670},"Типографіка в CSS. Шрифти та текст","/html-css/css-typography","12.html-css/11.css-typography",{"title":2672,"path":2673,"stem":2674},"Кольори та фони в CSS","/html-css/css-colors-backgrounds","12.html-css/12.css-colors-backgrounds",{"title":2676,"path":2677,"stem":2678},"Тіні та фільтри в CSS","/html-css/12b.css-shadows-filters","12.html-css/12b.css-shadows-filters",{"title":2680,"path":2681,"stem":2682},"CSS Flexbox: Фундамент гнучких макетів","/html-css/css-flexbox-fundamentals","12.html-css/13.css-flexbox-fundamentals",{"title":2684,"path":2685,"stem":2686},"CSS Flexbox: Вирівнювання та Позиціонування","/html-css/css-flexbox-alignment-sizing-and-patterns","12.html-css/14.css-flexbox-alignment-sizing-and-patterns",{"title":2688,"path":2689,"stem":2690},"CSS Grid. Двовимірний макет. Частина 1","/html-css/css-layout-grid","12.html-css/15.css-layout-grid",{"title":2692,"path":2693,"stem":2694},"CSS Grid. Двовимірний макет. Частина 2","/html-css/css-layout-grid-advanced","12.html-css/16.css-layout-grid-advanced",{"title":2696,"path":2697,"stem":2698},"Позиціонування в CSS. Z-index. Stacking Context","/html-css/css-positioning","12.html-css/17.css-positioning",{"title":2700,"path":2701,"stem":2702},"CSS Анімації та Переходи","/html-css/css-animations-transitions","12.html-css/18.css-animations-transitions",{"title":2704,"path":2705,"stem":2706},"Адаптивний дизайн. Media Queries. Частина 1","/html-css/css-responsive-media-queries","12.html-css/19.css-responsive-media-queries",{"title":2708,"path":2709,"stem":2710},"Адаптивний дизайн. Частина 2: clamp(), Container Queries, @layer","/html-css/css-responsive-advanced","12.html-css/20.css-responsive-advanced",{"title":2712,"path":2713,"stem":2714},"CSS Custom Properties. Методології. Сучасний CSS","/html-css/css-variables-methodologies","12.html-css/21.css-variables-methodologies",{"title":2716,"path":2717,"stem":2718},"Сучасний CSS 2023–2025: Нові можливості","/html-css/css-modern-features","12.html-css/22.css-modern-features",{"title":2720,"path":2721,"stem":2722},"CSS Nesting, @layer, @scope та @property: нативний препроцесор","/html-css/22a.css-nesting-modern-syntax","12.html-css/22a.css-nesting-modern-syntax",{"title":2724,"path":2725,"stem":2726},"CSS для форм та інтерактивних станів","/html-css/css-forms-interactive-states","12.html-css/23.css-forms-interactive-states",{"title":2728,"path":2729,"stem":2730},"Доступність у CSS (CSS Accessibility)","/html-css/css-accessibility","12.html-css/24.css-accessibility",{"title":2732,"path":2733,"stem":2734},"CSS-функції та сучасні sizing primitives","/html-css/css-functions-sizing","12.html-css/25.css-functions-sizing",{"title":2736,"path":2737,"stem":2738},"Rendering Pipeline і CSS Performance","/html-css/css-rendering-performance","12.html-css/26.css-rendering-performance",{"title":2740,"path":2741,"stem":2742},"CSS Best Practices: типові ситуації та правильні рішення","/html-css/css-best-practices","12.html-css/27.css-best-practices",{"title":2744,"path":2745,"stem":2746,"children":2747,"page":59},"Tailwind","/tailwind","21.tailwind",[2748,2752,2756,2760,2764,2768,2772,2776],{"title":2749,"path":2750,"stem":2751},"Що таке Tailwind CSS і навіщо він потрібен","/tailwind/tailwind-intro-philosophy","21.tailwind/01.tailwind-intro-philosophy",{"title":2753,"path":2754,"stem":2755},"Встановлення та налаштування Tailwind CSS v4","/tailwind/tailwind-installation-setup","21.tailwind/02.tailwind-installation-setup",{"title":2757,"path":2758,"stem":2759},"Utility-класи: основи та система Tailwind","/tailwind/tailwind-utility-classes-core","21.tailwind/03.tailwind-utility-classes-core",{"title":2761,"path":2762,"stem":2763},"Layout: Flexbox та Grid через Tailwind","/tailwind/tailwind-flexbox-grid","21.tailwind/04.tailwind-flexbox-grid",{"title":2765,"path":2766,"stem":2767},"Кастомізація теми через @theme у Tailwind v4","/tailwind/tailwind-theme-customization","21.tailwind/05.tailwind-theme-customization",{"title":2769,"path":2770,"stem":2771},"Варіанти: hover, focus, responsive, dark mode та нові v4","/tailwind/tailwind-variants-states","21.tailwind/06.tailwind-variants-states",{"title":2773,"path":2774,"stem":2775},"Типографіка та система кольорів у Tailwind v4","/tailwind/tailwind-typography-colors","21.tailwind/07.tailwind-typography-colors",{"title":2777,"path":2778,"stem":2779},"Компоненти та повторюваність: @apply, @utility та патерни","/tailwind/tailwind-components-patterns","21.tailwind/08.tailwind-components-patterns",{"title":2781,"path":2782,"stem":2783},"Showcase Компонентів kostyl.dev","/test-new-components","98.test-new-components",{"id":2785,"title":2720,"body":2786,"description":12271,"extension":12272,"links":12273,"meta":12274,"navigation":3250,"path":2721,"seo":12275,"stem":2722,"__hash__":12276},"docs/12.html-css/22a.css-nesting-modern-syntax.md",{"type":2787,"value":2788,"toc":12238},"minimark",[2789,2793,2798,2802,2833,2836,2962,2965,2969,2974,2977,3190,3196,3200,3206,3479,3490,4904,4908,4915,5039,5781,5785,6439,6456,6458,6464,6468,6479,6488,6493,6497,6846,7924,7928,7935,8045,8060,8062,8068,8072,8085,8090,8208,9218,9220,9226,9230,9249,9258,9263,9373,9377,10563,10589,10595,10736,10738,10742,11789,11791,11795,12162,12164,12168,12234],[2790,2791,2720],"h1",{"id":2792},"css-nesting-layer-scope-та-property-нативний-препроцесор",[2794,2795,2797],"h2",{"id":2796},"коли-scss-перестав-бути-обовязковим","Коли SCSS перестав бути обов'язковим",[2799,2800,2801],"p",{},"Протягом понад десяти років Sass/SCSS був негласним стандартом у CSS-розробці. Причина проста: нативний CSS не мав вкладення правил, не мав пріоритетних шарів, не міг анімувати кастомні властивості, не мав засобів ізоляції стилів. Sass заповнював ці прогалини.",[2799,2803,2804,2805,2809,2810,2813,2814,2818,2819,2813,2822,2825,2826,2813,2829,2832],{},"З 2023–2024 років ситуація кардинально змінилась. CSS отримав ",[2806,2807,2808],"strong",{},"нативне вкладення"," (Nesting), ",[2806,2811,2812],{},"каскадні шари"," (",[2815,2816,2817],"code",{},"@layer","), ",[2806,2820,2821],{},"звуження стилів",[2815,2823,2824],{},"@scope",") та ",[2806,2827,2828],{},"типізовані Custom Properties",[2815,2830,2831],{},"@property","). Для більшості проєктів ці чотири специфікації замінюють те, навіщо раніше потрібен був препроцесор.",[2799,2834,2835],{},"Ця стаття — практичне порівняння: що ви робили у SCSS, і як це виглядає тепер у нативному CSS.",[2837,2838,2839],"mermaid",{},[2840,2841,2845],"pre",{"className":2842,"code":2843,"language":2837,"meta":2844,"style":2844},"language-mermaid shiki shiki-themes light-plus dark-plus dark-plus","graph LR\n    subgraph SCSS [\"SCSS (раніше)\"]\n        S1[\"&:hover { }\"]\n        S2[\"@mixin button { }\"]\n        S3[\"!default variables\"]\n        S4[\"@extend .class\"]\n    end\n    subgraph CSS [\"Native CSS (зараз)\"]\n        C1[\"&:hover { } ← Nesting\"]\n        C2[\"@layer + custom props ← Cascade Layers\"]\n        C3[\"@property ← Typed Custom Props\"]\n        C4[\"@scope ← Style Scoping\"]\n    end\n    S1 -->|\"замінено\"| C1\n    S2 -->|\"замінено\"| C2\n    S3 -->|\"замінено\"| C3\n    S4 -->|\"замінено\"| C4\n    style SCSS fill:#c084fc,color:#fff,stroke:#9333ea\n    style CSS fill:#3b82f6,color:#fff,stroke:#2563eb\n","",[2815,2846,2847,2855,2861,2867,2873,2879,2885,2891,2897,2903,2909,2915,2921,2926,2932,2938,2944,2950,2956],{"__ignoreMap":2844},[2848,2849,2852],"span",{"class":2850,"line":2851},"line",1,[2848,2853,2854],{},"graph LR\n",[2848,2856,2858],{"class":2850,"line":2857},2,[2848,2859,2860],{},"    subgraph SCSS [\"SCSS (раніше)\"]\n",[2848,2862,2864],{"class":2850,"line":2863},3,[2848,2865,2866],{},"        S1[\"&:hover { }\"]\n",[2848,2868,2870],{"class":2850,"line":2869},4,[2848,2871,2872],{},"        S2[\"@mixin button { }\"]\n",[2848,2874,2876],{"class":2850,"line":2875},5,[2848,2877,2878],{},"        S3[\"!default variables\"]\n",[2848,2880,2882],{"class":2850,"line":2881},6,[2848,2883,2884],{},"        S4[\"@extend .class\"]\n",[2848,2886,2888],{"class":2850,"line":2887},7,[2848,2889,2890],{},"    end\n",[2848,2892,2894],{"class":2850,"line":2893},8,[2848,2895,2896],{},"    subgraph CSS [\"Native CSS (зараз)\"]\n",[2848,2898,2900],{"class":2850,"line":2899},9,[2848,2901,2902],{},"        C1[\"&:hover { } ← Nesting\"]\n",[2848,2904,2906],{"class":2850,"line":2905},10,[2848,2907,2908],{},"        C2[\"@layer + custom props ← Cascade Layers\"]\n",[2848,2910,2912],{"class":2850,"line":2911},11,[2848,2913,2914],{},"        C3[\"@property ← Typed Custom Props\"]\n",[2848,2916,2918],{"class":2850,"line":2917},12,[2848,2919,2920],{},"        C4[\"@scope ← Style Scoping\"]\n",[2848,2922,2924],{"class":2850,"line":2923},13,[2848,2925,2890],{},[2848,2927,2929],{"class":2850,"line":2928},14,[2848,2930,2931],{},"    S1 -->|\"замінено\"| C1\n",[2848,2933,2935],{"class":2850,"line":2934},15,[2848,2936,2937],{},"    S2 -->|\"замінено\"| C2\n",[2848,2939,2941],{"class":2850,"line":2940},16,[2848,2942,2943],{},"    S3 -->|\"замінено\"| C3\n",[2848,2945,2947],{"class":2850,"line":2946},17,[2848,2948,2949],{},"    S4 -->|\"замінено\"| C4\n",[2848,2951,2953],{"class":2850,"line":2952},18,[2848,2954,2955],{},"    style SCSS fill:#c084fc,color:#fff,stroke:#9333ea\n",[2848,2957,2959],{"class":2850,"line":2958},19,[2848,2960,2961],{},"    style CSS fill:#3b82f6,color:#fff,stroke:#2563eb\n",[2963,2964],"hr",{},[2794,2966,2968],{"id":2967},"css-nesting-вкладення-правил","CSS Nesting — вкладення правил",[2970,2971,2973],"h3",{"id":2972},"проблема-дублювання-селекторів","Проблема: дублювання селекторів",[2799,2975,2976],{},"У класичному CSS стилізація компонента з кількома станами виглядала так:",[2840,2978,2982],{"className":2979,"code":2980,"language":2981,"meta":2844,"style":2844},"language-css shiki shiki-themes light-plus dark-plus dark-plus","/* Класичний CSS — багато повторень */\n.card { background: white; border-radius: 8px; }\n.card:hover { box-shadow: 0 4px 12px rgba(0,0,0,0.1); }\n.card.active { border-color: #6366f1; }\n.card__title { font-size: 1.25rem; color: #1e293b; }\n.card__title:hover { color: #6366f1; }\n.card__body { padding: 1rem; color: #64748b; }\n.card__footer { border-top: 1px solid #e2e8f0; padding: 0.75rem; }\n","css",[2815,2983,2984,2990,3026,3073,3090,3117,3132,3158],{"__ignoreMap":2844},[2848,2985,2986],{"class":2850,"line":2851},[2848,2987,2989],{"class":2988},"spJ8K","/* Класичний CSS — багато повторень */\n",[2848,2991,2992,2996,3000,3004,3007,3011,3014,3017,3019,3023],{"class":2850,"line":2857},[2848,2993,2995],{"class":2994},"sqdDX",".card",[2848,2997,2999],{"class":2998},"sHH4Y"," { ",[2848,3001,3003],{"class":3002},"sa4r_","background",[2848,3005,3006],{"class":2998},": ",[2848,3008,3010],{"class":3009},"sDUd3","white",[2848,3012,3013],{"class":2998},"; ",[2848,3015,3016],{"class":3002},"border-radius",[2848,3018,3006],{"class":2998},[2848,3020,3022],{"class":3021},"sJj4R","8px",[2848,3024,3025],{"class":2998},"; }\n",[2848,3027,3028,3031,3033,3036,3038,3041,3044,3047,3051,3054,3056,3059,3061,3063,3065,3067,3070],{"class":2850,"line":2863},[2848,3029,3030],{"class":2994},".card:hover",[2848,3032,2999],{"class":2998},[2848,3034,3035],{"class":3002},"box-shadow",[2848,3037,3006],{"class":2998},[2848,3039,3040],{"class":3021},"0",[2848,3042,3043],{"class":3021}," 4px",[2848,3045,3046],{"class":3021}," 12px",[2848,3048,3050],{"class":3049},"s8Opu"," rgba",[2848,3052,3053],{"class":2998},"(",[2848,3055,3040],{"class":3021},[2848,3057,3058],{"class":2998},",",[2848,3060,3040],{"class":3021},[2848,3062,3058],{"class":2998},[2848,3064,3040],{"class":3021},[2848,3066,3058],{"class":2998},[2848,3068,3069],{"class":3021},"0.1",[2848,3071,3072],{"class":2998},"); }\n",[2848,3074,3075,3078,3080,3083,3085,3088],{"class":2850,"line":2869},[2848,3076,3077],{"class":2994},".card.active",[2848,3079,2999],{"class":2998},[2848,3081,3082],{"class":3002},"border-color",[2848,3084,3006],{"class":2998},[2848,3086,3087],{"class":3009},"#6366f1",[2848,3089,3025],{"class":2998},[2848,3091,3092,3095,3097,3100,3102,3105,3107,3110,3112,3115],{"class":2850,"line":2875},[2848,3093,3094],{"class":2994},".card__title",[2848,3096,2999],{"class":2998},[2848,3098,3099],{"class":3002},"font-size",[2848,3101,3006],{"class":2998},[2848,3103,3104],{"class":3021},"1.25rem",[2848,3106,3013],{"class":2998},[2848,3108,3109],{"class":3002},"color",[2848,3111,3006],{"class":2998},[2848,3113,3114],{"class":3009},"#1e293b",[2848,3116,3025],{"class":2998},[2848,3118,3119,3122,3124,3126,3128,3130],{"class":2850,"line":2881},[2848,3120,3121],{"class":2994},".card__title:hover",[2848,3123,2999],{"class":2998},[2848,3125,3109],{"class":3002},[2848,3127,3006],{"class":2998},[2848,3129,3087],{"class":3009},[2848,3131,3025],{"class":2998},[2848,3133,3134,3137,3139,3142,3144,3147,3149,3151,3153,3156],{"class":2850,"line":2887},[2848,3135,3136],{"class":2994},".card__body",[2848,3138,2999],{"class":2998},[2848,3140,3141],{"class":3002},"padding",[2848,3143,3006],{"class":2998},[2848,3145,3146],{"class":3021},"1rem",[2848,3148,3013],{"class":2998},[2848,3150,3109],{"class":3002},[2848,3152,3006],{"class":2998},[2848,3154,3155],{"class":3009},"#64748b",[2848,3157,3025],{"class":2998},[2848,3159,3160,3163,3165,3168,3170,3173,3176,3179,3181,3183,3185,3188],{"class":2850,"line":2893},[2848,3161,3162],{"class":2994},".card__footer",[2848,3164,2999],{"class":2998},[2848,3166,3167],{"class":3002},"border-top",[2848,3169,3006],{"class":2998},[2848,3171,3172],{"class":3021},"1px",[2848,3174,3175],{"class":3009}," solid",[2848,3177,3178],{"class":3009}," #e2e8f0",[2848,3180,3013],{"class":2998},[2848,3182,3141],{"class":3002},[2848,3184,3006],{"class":2998},[2848,3186,3187],{"class":3021},"0.75rem",[2848,3189,3025],{"class":2998},[2799,3191,3192,3193,3195],{},"Щоразу потрібно повторювати ",[2815,3194,2995],{},", що важко підтримувати при перейменуванні. SCSS вирішував це через вкладення — і тепер це вміє нативний CSS.",[2970,3197,3199],{"id":3198},"базовий-синтаксис-css-nesting","Базовий синтаксис CSS Nesting",[2799,3201,3202,3205],{},[2806,3203,3204],{},"Підтримка:"," Chrome 112+, Firefox 117+, Safari 17+",[2840,3207,3209],{"className":2979,"code":3208,"language":2981,"meta":2844,"style":2844},"/* Native CSS Nesting */\n.card {\n  background: white;\n  border-radius: 8px;\n\n  /* Вкладений псевдоклас */\n  &:hover {\n    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n  }\n\n  /* Вкладена модифікація класу */\n  &.active {\n    border: 2px solid #6366f1;\n  }\n\n  /* Вкладений дочірній елемент (BEM) */\n  & .card__title {\n    font-size: 1.25rem;\n    color: #1e293b;\n\n    /* Ще глибше вкладення */\n    &:hover {\n      color: #6366f1;\n    }\n  }\n\n  /* Вкладений псевдоелемент */\n  &::before {\n    content: '';\n    display: block;\n  }\n}\n",[2815,3210,3211,3216,3223,3235,3246,3252,3257,3262,3295,3300,3304,3309,3319,3336,3340,3344,3349,3358,3369,3380,3385,3391,3397,3409,3415,3420,3425,3431,3441,3455,3468,3473],{"__ignoreMap":2844},[2848,3212,3213],{"class":2850,"line":2851},[2848,3214,3215],{"class":2988},"/* Native CSS Nesting */\n",[2848,3217,3218,3220],{"class":2850,"line":2857},[2848,3219,2995],{"class":2994},[2848,3221,3222],{"class":2998}," {\n",[2848,3224,3225,3228,3230,3232],{"class":2850,"line":2863},[2848,3226,3227],{"class":3002},"  background",[2848,3229,3006],{"class":2998},[2848,3231,3010],{"class":3009},[2848,3233,3234],{"class":2998},";\n",[2848,3236,3237,3240,3242,3244],{"class":2850,"line":2869},[2848,3238,3239],{"class":3002},"  border-radius",[2848,3241,3006],{"class":2998},[2848,3243,3022],{"class":3021},[2848,3245,3234],{"class":2998},[2848,3247,3248],{"class":2850,"line":2875},[2848,3249,3251],{"emptyLinePlaceholder":3250},true,"\n",[2848,3253,3254],{"class":2850,"line":2881},[2848,3255,3256],{"class":2988},"  /* Вкладений псевдоклас */\n",[2848,3258,3259],{"class":2850,"line":2887},[2848,3260,3261],{"class":2998},"  &:hover {\n",[2848,3263,3264,3267,3269,3271,3273,3275,3277,3279,3282,3284,3286,3288,3290,3292],{"class":2850,"line":2893},[2848,3265,3266],{"class":2998},"    box-shadow: ",[2848,3268,3040],{"class":3021},[2848,3270,3043],{"class":3021},[2848,3272,3046],{"class":3021},[2848,3274,3050],{"class":3049},[2848,3276,3053],{"class":2998},[2848,3278,3040],{"class":3021},[2848,3280,3281],{"class":2998},", ",[2848,3283,3040],{"class":3021},[2848,3285,3281],{"class":2998},[2848,3287,3040],{"class":3021},[2848,3289,3281],{"class":2998},[2848,3291,3069],{"class":3021},[2848,3293,3294],{"class":2998},");\n",[2848,3296,3297],{"class":2850,"line":2899},[2848,3298,3299],{"class":2998},"  }\n",[2848,3301,3302],{"class":2850,"line":2905},[2848,3303,3251],{"emptyLinePlaceholder":3250},[2848,3305,3306],{"class":2850,"line":2911},[2848,3307,3308],{"class":2988},"  /* Вкладена модифікація класу */\n",[2848,3310,3311,3314,3317],{"class":2850,"line":2917},[2848,3312,3313],{"class":2998},"  &",[2848,3315,3316],{"class":2994},".active",[2848,3318,3222],{"class":2998},[2848,3320,3321,3324,3326,3329,3331,3334],{"class":2850,"line":2923},[2848,3322,3323],{"class":3002},"    border",[2848,3325,3006],{"class":2998},[2848,3327,3328],{"class":3021},"2px",[2848,3330,3175],{"class":3009},[2848,3332,3333],{"class":3009}," #6366f1",[2848,3335,3234],{"class":2998},[2848,3337,3338],{"class":2850,"line":2928},[2848,3339,3299],{"class":2998},[2848,3341,3342],{"class":2850,"line":2934},[2848,3343,3251],{"emptyLinePlaceholder":3250},[2848,3345,3346],{"class":2850,"line":2940},[2848,3347,3348],{"class":2988},"  /* Вкладений дочірній елемент (BEM) */\n",[2848,3350,3351,3354,3356],{"class":2850,"line":2946},[2848,3352,3353],{"class":2998},"  & ",[2848,3355,3094],{"class":2994},[2848,3357,3222],{"class":2998},[2848,3359,3360,3363,3365,3367],{"class":2850,"line":2952},[2848,3361,3362],{"class":3002},"    font-size",[2848,3364,3006],{"class":2998},[2848,3366,3104],{"class":3021},[2848,3368,3234],{"class":2998},[2848,3370,3371,3374,3376,3378],{"class":2850,"line":2958},[2848,3372,3373],{"class":3002},"    color",[2848,3375,3006],{"class":2998},[2848,3377,3114],{"class":3009},[2848,3379,3234],{"class":2998},[2848,3381,3383],{"class":2850,"line":3382},20,[2848,3384,3251],{"emptyLinePlaceholder":3250},[2848,3386,3388],{"class":2850,"line":3387},21,[2848,3389,3390],{"class":2988},"    /* Ще глибше вкладення */\n",[2848,3392,3394],{"class":2850,"line":3393},22,[2848,3395,3396],{"class":2998},"    &:hover {\n",[2848,3398,3400,3403,3405,3407],{"class":2850,"line":3399},23,[2848,3401,3402],{"class":3009},"      color",[2848,3404,3006],{"class":2998},[2848,3406,3087],{"class":3009},[2848,3408,3234],{"class":2998},[2848,3410,3412],{"class":2850,"line":3411},24,[2848,3413,3414],{"class":2998},"    }\n",[2848,3416,3418],{"class":2850,"line":3417},25,[2848,3419,3299],{"class":2998},[2848,3421,3423],{"class":2850,"line":3422},26,[2848,3424,3251],{"emptyLinePlaceholder":3250},[2848,3426,3428],{"class":2850,"line":3427},27,[2848,3429,3430],{"class":2988},"  /* Вкладений псевдоелемент */\n",[2848,3432,3434,3436,3439],{"class":2850,"line":3433},28,[2848,3435,3313],{"class":2998},[2848,3437,3438],{"class":2994},"::before",[2848,3440,3222],{"class":2998},[2848,3442,3444,3447,3449,3453],{"class":2850,"line":3443},29,[2848,3445,3446],{"class":3002},"    content",[2848,3448,3006],{"class":2998},[2848,3450,3452],{"class":3451},"sbdoH","''",[2848,3454,3234],{"class":2998},[2848,3456,3458,3461,3463,3466],{"class":2850,"line":3457},30,[2848,3459,3460],{"class":3002},"    display",[2848,3462,3006],{"class":2998},[2848,3464,3465],{"class":3009},"block",[2848,3467,3234],{"class":2998},[2848,3469,3471],{"class":2850,"line":3470},31,[2848,3472,3299],{"class":2998},[2848,3474,3476],{"class":2850,"line":3475},32,[2848,3477,3478],{"class":2998},"}\n",[2799,3480,3481,3482,3485,3486,3489],{},"Символ ",[2815,3483,3484],{},"&"," — це ",[2806,3487,3488],{},"посилання на батьківський селектор",". Без нього CSS не знає, до якого елемента застосовувати вкладене правило.",[3491,3492,3493,3861],"html-preview",{},[2840,3494,3498],{"className":3495,"code":3496,"language":3497,"meta":2844,"style":2844},"language-html shiki shiki-themes light-plus dark-plus dark-plus","\u003Cdiv class=\"nesting-demo\">\n  \u003Cdiv class=\"n-card\">\n    \u003Cdiv class=\"n-card__badge\">Нове\u003C/div>\n    \u003Cdiv class=\"n-card__title\">CSS Nesting\u003C/div>\n    \u003Cdiv class=\"n-card__body\">Наведіть на картку, щоб побачити hover-стан. Нативне вкладення без SCSS.\u003C/div>\n    \u003Cdiv class=\"n-card__footer\">\n      \u003Cbutton class=\"n-btn n-btn--primary\">Дізнатись більше\u003C/button>\n      \u003Cbutton class=\"n-btn n-btn--ghost\">Пізніше\u003C/button>\n    \u003C/div>\n  \u003C/div>\n  \u003Cdiv class=\"n-card n-card--active\">\n    \u003Cdiv class=\"n-card__badge n-card__badge--active\">Активна\u003C/div>\n    \u003Cdiv class=\"n-card__title\">Стан .active\u003C/div>\n    \u003Cdiv class=\"n-card__body\">Ця картка має клас \u003Ccode>.n-card--active\u003C/code> — стилізована через вкладений &.active.\u003C/div>\n    \u003Cdiv class=\"n-card__footer\">\n      \u003Cbutton class=\"n-btn n-btn--primary\">Відкрити\u003C/button>\n    \u003C/div>\n  \u003C/div>\n\u003C/div>\n","html",[2815,3499,3500,3523,3539,3566,3590,3614,3629,3655,3679,3688,3697,3712,3736,3759,3800,3814,3837,3845,3853],{"__ignoreMap":2844},[2848,3501,3502,3506,3510,3513,3516,3520],{"class":2850,"line":2851},[2848,3503,3505],{"class":3504},"s0P7L","\u003C",[2848,3507,3509],{"class":3508},"sKtos","div",[2848,3511,3512],{"class":3002}," class",[2848,3514,3515],{"class":2998},"=",[2848,3517,3519],{"class":3518},"su9tN","\"nesting-demo\"",[2848,3521,3522],{"class":3504},">\n",[2848,3524,3525,3528,3530,3532,3534,3537],{"class":2850,"line":2857},[2848,3526,3527],{"class":3504},"  \u003C",[2848,3529,3509],{"class":3508},[2848,3531,3512],{"class":3002},[2848,3533,3515],{"class":2998},[2848,3535,3536],{"class":3518},"\"n-card\"",[2848,3538,3522],{"class":3504},[2848,3540,3541,3544,3546,3548,3550,3553,3556,3559,3562,3564],{"class":2850,"line":2863},[2848,3542,3543],{"class":3504},"    \u003C",[2848,3545,3509],{"class":3508},[2848,3547,3512],{"class":3002},[2848,3549,3515],{"class":2998},[2848,3551,3552],{"class":3518},"\"n-card__badge\"",[2848,3554,3555],{"class":3504},">",[2848,3557,3558],{"class":2998},"Нове",[2848,3560,3561],{"class":3504},"\u003C/",[2848,3563,3509],{"class":3508},[2848,3565,3522],{"class":3504},[2848,3567,3568,3570,3572,3574,3576,3579,3581,3584,3586,3588],{"class":2850,"line":2869},[2848,3569,3543],{"class":3504},[2848,3571,3509],{"class":3508},[2848,3573,3512],{"class":3002},[2848,3575,3515],{"class":2998},[2848,3577,3578],{"class":3518},"\"n-card__title\"",[2848,3580,3555],{"class":3504},[2848,3582,3583],{"class":2998},"CSS Nesting",[2848,3585,3561],{"class":3504},[2848,3587,3509],{"class":3508},[2848,3589,3522],{"class":3504},[2848,3591,3592,3594,3596,3598,3600,3603,3605,3608,3610,3612],{"class":2850,"line":2875},[2848,3593,3543],{"class":3504},[2848,3595,3509],{"class":3508},[2848,3597,3512],{"class":3002},[2848,3599,3515],{"class":2998},[2848,3601,3602],{"class":3518},"\"n-card__body\"",[2848,3604,3555],{"class":3504},[2848,3606,3607],{"class":2998},"Наведіть на картку, щоб побачити hover-стан. Нативне вкладення без SCSS.",[2848,3609,3561],{"class":3504},[2848,3611,3509],{"class":3508},[2848,3613,3522],{"class":3504},[2848,3615,3616,3618,3620,3622,3624,3627],{"class":2850,"line":2881},[2848,3617,3543],{"class":3504},[2848,3619,3509],{"class":3508},[2848,3621,3512],{"class":3002},[2848,3623,3515],{"class":2998},[2848,3625,3626],{"class":3518},"\"n-card__footer\"",[2848,3628,3522],{"class":3504},[2848,3630,3631,3634,3637,3639,3641,3644,3646,3649,3651,3653],{"class":2850,"line":2887},[2848,3632,3633],{"class":3504},"      \u003C",[2848,3635,3636],{"class":3508},"button",[2848,3638,3512],{"class":3002},[2848,3640,3515],{"class":2998},[2848,3642,3643],{"class":3518},"\"n-btn n-btn--primary\"",[2848,3645,3555],{"class":3504},[2848,3647,3648],{"class":2998},"Дізнатись більше",[2848,3650,3561],{"class":3504},[2848,3652,3636],{"class":3508},[2848,3654,3522],{"class":3504},[2848,3656,3657,3659,3661,3663,3665,3668,3670,3673,3675,3677],{"class":2850,"line":2893},[2848,3658,3633],{"class":3504},[2848,3660,3636],{"class":3508},[2848,3662,3512],{"class":3002},[2848,3664,3515],{"class":2998},[2848,3666,3667],{"class":3518},"\"n-btn n-btn--ghost\"",[2848,3669,3555],{"class":3504},[2848,3671,3672],{"class":2998},"Пізніше",[2848,3674,3561],{"class":3504},[2848,3676,3636],{"class":3508},[2848,3678,3522],{"class":3504},[2848,3680,3681,3684,3686],{"class":2850,"line":2899},[2848,3682,3683],{"class":3504},"    \u003C/",[2848,3685,3509],{"class":3508},[2848,3687,3522],{"class":3504},[2848,3689,3690,3693,3695],{"class":2850,"line":2905},[2848,3691,3692],{"class":3504},"  \u003C/",[2848,3694,3509],{"class":3508},[2848,3696,3522],{"class":3504},[2848,3698,3699,3701,3703,3705,3707,3710],{"class":2850,"line":2911},[2848,3700,3527],{"class":3504},[2848,3702,3509],{"class":3508},[2848,3704,3512],{"class":3002},[2848,3706,3515],{"class":2998},[2848,3708,3709],{"class":3518},"\"n-card n-card--active\"",[2848,3711,3522],{"class":3504},[2848,3713,3714,3716,3718,3720,3722,3725,3727,3730,3732,3734],{"class":2850,"line":2917},[2848,3715,3543],{"class":3504},[2848,3717,3509],{"class":3508},[2848,3719,3512],{"class":3002},[2848,3721,3515],{"class":2998},[2848,3723,3724],{"class":3518},"\"n-card__badge n-card__badge--active\"",[2848,3726,3555],{"class":3504},[2848,3728,3729],{"class":2998},"Активна",[2848,3731,3561],{"class":3504},[2848,3733,3509],{"class":3508},[2848,3735,3522],{"class":3504},[2848,3737,3738,3740,3742,3744,3746,3748,3750,3753,3755,3757],{"class":2850,"line":2923},[2848,3739,3543],{"class":3504},[2848,3741,3509],{"class":3508},[2848,3743,3512],{"class":3002},[2848,3745,3515],{"class":2998},[2848,3747,3578],{"class":3518},[2848,3749,3555],{"class":3504},[2848,3751,3752],{"class":2998},"Стан .active",[2848,3754,3561],{"class":3504},[2848,3756,3509],{"class":3508},[2848,3758,3522],{"class":3504},[2848,3760,3761,3763,3765,3767,3769,3771,3773,3776,3778,3780,3782,3785,3787,3789,3791,3794,3796,3798],{"class":2850,"line":2928},[2848,3762,3543],{"class":3504},[2848,3764,3509],{"class":3508},[2848,3766,3512],{"class":3002},[2848,3768,3515],{"class":2998},[2848,3770,3602],{"class":3518},[2848,3772,3555],{"class":3504},[2848,3774,3775],{"class":2998},"Ця картка має клас ",[2848,3777,3505],{"class":3504},[2848,3779,2815],{"class":3508},[2848,3781,3555],{"class":3504},[2848,3783,3784],{"class":2998},".n-card--active",[2848,3786,3561],{"class":3504},[2848,3788,2815],{"class":3508},[2848,3790,3555],{"class":3504},[2848,3792,3793],{"class":2998}," — стилізована через вкладений &.active.",[2848,3795,3561],{"class":3504},[2848,3797,3509],{"class":3508},[2848,3799,3522],{"class":3504},[2848,3801,3802,3804,3806,3808,3810,3812],{"class":2850,"line":2934},[2848,3803,3543],{"class":3504},[2848,3805,3509],{"class":3508},[2848,3807,3512],{"class":3002},[2848,3809,3515],{"class":2998},[2848,3811,3626],{"class":3518},[2848,3813,3522],{"class":3504},[2848,3815,3816,3818,3820,3822,3824,3826,3828,3831,3833,3835],{"class":2850,"line":2940},[2848,3817,3633],{"class":3504},[2848,3819,3636],{"class":3508},[2848,3821,3512],{"class":3002},[2848,3823,3515],{"class":2998},[2848,3825,3643],{"class":3518},[2848,3827,3555],{"class":3504},[2848,3829,3830],{"class":2998},"Відкрити",[2848,3832,3561],{"class":3504},[2848,3834,3636],{"class":3508},[2848,3836,3522],{"class":3504},[2848,3838,3839,3841,3843],{"class":2850,"line":2946},[2848,3840,3683],{"class":3504},[2848,3842,3509],{"class":3508},[2848,3844,3522],{"class":3504},[2848,3846,3847,3849,3851],{"class":2850,"line":2952},[2848,3848,3692],{"class":3504},[2848,3850,3509],{"class":3508},[2848,3852,3522],{"class":3504},[2848,3854,3855,3857,3859],{"class":2850,"line":2958},[2848,3856,3561],{"class":3504},[2848,3858,3509],{"class":3508},[2848,3860,3522],{"class":3504},[2840,3862,3864],{"className":2979,"code":3863,"language":2981,"meta":2844,"style":2844},".nesting-demo {\n  display: flex;\n  gap: 0.75rem;\n  flex-wrap: wrap;\n  padding: 1rem;\n  background: #f1f5f9;\n  font-family: system-ui, sans-serif;\n}\n\n.n-card {\n  flex: 1;\n  min-width: 200px;\n  background: white;\n  border-radius: 10px;\n  border: 1.5px solid #e2e8f0;\n  overflow: hidden;\n  transition: box-shadow 0.2s, border-color 0.2s;\n  cursor: pointer;\n\n  &:hover {\n    box-shadow: 0 8px 24px rgba(99, 102, 241, 0.12);\n    border-color: #c7d2fe;\n  }\n\n  &--active {\n    border-color: #6366f1;\n    box-shadow: 0 4px 16px rgba(99, 102, 241, 0.15);\n  }\n\n  &__badge {\n    display: inline-block;\n    margin: 0.75rem 0.75rem 0;\n    padding: 0.2rem 0.6rem;\n    background: #ede9fe;\n    color: #6366f1;\n    border-radius: 100px;\n    font-size: 0.72rem;\n    font-weight: 700;\n\n    &--active {\n      background: #6366f1;\n      color: white;\n    }\n  }\n\n  &__title {\n    padding: 0.4rem 0.75rem 0;\n    font-size: 1rem;\n    font-weight: 700;\n    color: #1e293b;\n  }\n\n  &__body {\n    padding: 0.4rem 0.75rem;\n    font-size: 0.82rem;\n    color: #64748b;\n    line-height: 1.5;\n\n    & code {\n      background: #f1f5f9;\n      padding: 0.1em 0.3em;\n      border-radius: 3px;\n      font-size: 0.9em;\n    }\n  }\n\n  &__footer {\n    padding: 0.6rem 0.75rem;\n    border-top: 1px solid #f1f5f9;\n    display: flex;\n    gap: 0.5rem;\n  }\n}\n\n.n-btn {\n  padding: 0.35rem 0.85rem;\n  border-radius: 6px;\n  font-size: 0.8rem;\n  font-weight: 600;\n  cursor: pointer;\n  border: 1.5px solid;\n  font-family: inherit;\n  transition: all 0.15s;\n\n  &--primary {\n    background: #6366f1;\n    color: white;\n    border-color: #6366f1;\n\n    &:hover { background: #4f46e5; border-color: #4f46e5; }\n  }\n\n  &--ghost {\n    background: transparent;\n    color: #64748b;\n    border-color: #e2e8f0;\n\n    &:hover { background: #f8fafc; color: #1e293b; }\n  }\n}\n",[2815,3865,3866,3873,3885,3896,3908,3919,3930,3947,3951,3955,3962,3974,3986,3996,4007,4023,4035,4053,4065,4069,4073,4109,4121,4125,4129,4134,4144,4179,4183,4187,4192,4203,4220,4236,4249,4260,4273,4285,4298,4303,4314,4326,4337,4342,4347,4352,4358,4374,4385,4396,4407,4412,4417,4423,4436,4448,4459,4472,4477,4483,4494,4510,4523,4536,4541,4546,4551,4557,4571,4588,4599,4612,4617,4622,4627,4635,4650,4662,4675,4688,4699,4712,4724,4739,4744,4754,4765,4776,4787,4792,4816,4821,4826,4832,4844,4855,4867,4872,4894,4899],{"__ignoreMap":2844},[2848,3867,3868,3871],{"class":2850,"line":2851},[2848,3869,3870],{"class":2994},".nesting-demo",[2848,3872,3222],{"class":2998},[2848,3874,3875,3878,3880,3883],{"class":2850,"line":2857},[2848,3876,3877],{"class":3002},"  display",[2848,3879,3006],{"class":2998},[2848,3881,3882],{"class":3009},"flex",[2848,3884,3234],{"class":2998},[2848,3886,3887,3890,3892,3894],{"class":2850,"line":2863},[2848,3888,3889],{"class":3002},"  gap",[2848,3891,3006],{"class":2998},[2848,3893,3187],{"class":3021},[2848,3895,3234],{"class":2998},[2848,3897,3898,3901,3903,3906],{"class":2850,"line":2869},[2848,3899,3900],{"class":3002},"  flex-wrap",[2848,3902,3006],{"class":2998},[2848,3904,3905],{"class":3009},"wrap",[2848,3907,3234],{"class":2998},[2848,3909,3910,3913,3915,3917],{"class":2850,"line":2875},[2848,3911,3912],{"class":3002},"  padding",[2848,3914,3006],{"class":2998},[2848,3916,3146],{"class":3021},[2848,3918,3234],{"class":2998},[2848,3920,3921,3923,3925,3928],{"class":2850,"line":2881},[2848,3922,3227],{"class":3002},[2848,3924,3006],{"class":2998},[2848,3926,3927],{"class":3009},"#f1f5f9",[2848,3929,3234],{"class":2998},[2848,3931,3932,3935,3937,3940,3942,3945],{"class":2850,"line":2887},[2848,3933,3934],{"class":3002},"  font-family",[2848,3936,3006],{"class":2998},[2848,3938,3939],{"class":3009},"system-ui",[2848,3941,3281],{"class":2998},[2848,3943,3944],{"class":3009},"sans-serif",[2848,3946,3234],{"class":2998},[2848,3948,3949],{"class":2850,"line":2893},[2848,3950,3478],{"class":2998},[2848,3952,3953],{"class":2850,"line":2899},[2848,3954,3251],{"emptyLinePlaceholder":3250},[2848,3956,3957,3960],{"class":2850,"line":2905},[2848,3958,3959],{"class":2994},".n-card",[2848,3961,3222],{"class":2998},[2848,3963,3964,3967,3969,3972],{"class":2850,"line":2911},[2848,3965,3966],{"class":3002},"  flex",[2848,3968,3006],{"class":2998},[2848,3970,3971],{"class":3021},"1",[2848,3973,3234],{"class":2998},[2848,3975,3976,3979,3981,3984],{"class":2850,"line":2917},[2848,3977,3978],{"class":3002},"  min-width",[2848,3980,3006],{"class":2998},[2848,3982,3983],{"class":3021},"200px",[2848,3985,3234],{"class":2998},[2848,3987,3988,3990,3992,3994],{"class":2850,"line":2923},[2848,3989,3227],{"class":3002},[2848,3991,3006],{"class":2998},[2848,3993,3010],{"class":3009},[2848,3995,3234],{"class":2998},[2848,3997,3998,4000,4002,4005],{"class":2850,"line":2928},[2848,3999,3239],{"class":3002},[2848,4001,3006],{"class":2998},[2848,4003,4004],{"class":3021},"10px",[2848,4006,3234],{"class":2998},[2848,4008,4009,4012,4014,4017,4019,4021],{"class":2850,"line":2934},[2848,4010,4011],{"class":3002},"  border",[2848,4013,3006],{"class":2998},[2848,4015,4016],{"class":3021},"1.5px",[2848,4018,3175],{"class":3009},[2848,4020,3178],{"class":3009},[2848,4022,3234],{"class":2998},[2848,4024,4025,4028,4030,4033],{"class":2850,"line":2940},[2848,4026,4027],{"class":3002},"  overflow",[2848,4029,3006],{"class":2998},[2848,4031,4032],{"class":3009},"hidden",[2848,4034,3234],{"class":2998},[2848,4036,4037,4040,4043,4046,4049,4051],{"class":2850,"line":2946},[2848,4038,4039],{"class":3002},"  transition",[2848,4041,4042],{"class":2998},": box-shadow ",[2848,4044,4045],{"class":3021},"0.2s",[2848,4047,4048],{"class":2998},", border-color ",[2848,4050,4045],{"class":3021},[2848,4052,3234],{"class":2998},[2848,4054,4055,4058,4060,4063],{"class":2850,"line":2952},[2848,4056,4057],{"class":3002},"  cursor",[2848,4059,3006],{"class":2998},[2848,4061,4062],{"class":3009},"pointer",[2848,4064,3234],{"class":2998},[2848,4066,4067],{"class":2850,"line":2958},[2848,4068,3251],{"emptyLinePlaceholder":3250},[2848,4070,4071],{"class":2850,"line":3382},[2848,4072,3261],{"class":2998},[2848,4074,4075,4077,4079,4082,4085,4087,4089,4092,4094,4097,4099,4102,4104,4107],{"class":2850,"line":3387},[2848,4076,3266],{"class":2998},[2848,4078,3040],{"class":3021},[2848,4080,4081],{"class":3021}," 8px",[2848,4083,4084],{"class":3021}," 24px",[2848,4086,3050],{"class":3049},[2848,4088,3053],{"class":2998},[2848,4090,4091],{"class":3021},"99",[2848,4093,3281],{"class":2998},[2848,4095,4096],{"class":3021},"102",[2848,4098,3281],{"class":2998},[2848,4100,4101],{"class":3021},"241",[2848,4103,3281],{"class":2998},[2848,4105,4106],{"class":3021},"0.12",[2848,4108,3294],{"class":2998},[2848,4110,4111,4114,4116,4119],{"class":2850,"line":3393},[2848,4112,4113],{"class":3002},"    border-color",[2848,4115,3006],{"class":2998},[2848,4117,4118],{"class":3009},"#c7d2fe",[2848,4120,3234],{"class":2998},[2848,4122,4123],{"class":2850,"line":3399},[2848,4124,3299],{"class":2998},[2848,4126,4127],{"class":2850,"line":3411},[2848,4128,3251],{"emptyLinePlaceholder":3250},[2848,4130,4131],{"class":2850,"line":3417},[2848,4132,4133],{"class":2998},"  &--active {\n",[2848,4135,4136,4138,4140,4142],{"class":2850,"line":3422},[2848,4137,4113],{"class":3002},[2848,4139,3006],{"class":2998},[2848,4141,3087],{"class":3009},[2848,4143,3234],{"class":2998},[2848,4145,4146,4149,4151,4153,4155,4158,4160,4162,4164,4166,4168,4170,4172,4174,4177],{"class":2850,"line":3427},[2848,4147,4148],{"class":3002},"    box-shadow",[2848,4150,3006],{"class":2998},[2848,4152,3040],{"class":3021},[2848,4154,3043],{"class":3021},[2848,4156,4157],{"class":3021}," 16px",[2848,4159,3050],{"class":3049},[2848,4161,3053],{"class":2998},[2848,4163,4091],{"class":3021},[2848,4165,3281],{"class":2998},[2848,4167,4096],{"class":3021},[2848,4169,3281],{"class":2998},[2848,4171,4101],{"class":3021},[2848,4173,3281],{"class":2998},[2848,4175,4176],{"class":3021},"0.15",[2848,4178,3294],{"class":2998},[2848,4180,4181],{"class":2850,"line":3433},[2848,4182,3299],{"class":2998},[2848,4184,4185],{"class":2850,"line":3443},[2848,4186,3251],{"emptyLinePlaceholder":3250},[2848,4188,4189],{"class":2850,"line":3457},[2848,4190,4191],{"class":2998},"  &__badge {\n",[2848,4193,4194,4196,4198,4201],{"class":2850,"line":3470},[2848,4195,3460],{"class":3002},[2848,4197,3006],{"class":2998},[2848,4199,4200],{"class":3009},"inline-block",[2848,4202,3234],{"class":2998},[2848,4204,4205,4208,4210,4212,4215,4218],{"class":2850,"line":3475},[2848,4206,4207],{"class":3002},"    margin",[2848,4209,3006],{"class":2998},[2848,4211,3187],{"class":3021},[2848,4213,4214],{"class":3021}," 0.75rem",[2848,4216,4217],{"class":3021}," 0",[2848,4219,3234],{"class":2998},[2848,4221,4223,4226,4228,4231,4234],{"class":2850,"line":4222},33,[2848,4224,4225],{"class":3002},"    padding",[2848,4227,3006],{"class":2998},[2848,4229,4230],{"class":3021},"0.2rem",[2848,4232,4233],{"class":3021}," 0.6rem",[2848,4235,3234],{"class":2998},[2848,4237,4239,4242,4244,4247],{"class":2850,"line":4238},34,[2848,4240,4241],{"class":3002},"    background",[2848,4243,3006],{"class":2998},[2848,4245,4246],{"class":3009},"#ede9fe",[2848,4248,3234],{"class":2998},[2848,4250,4252,4254,4256,4258],{"class":2850,"line":4251},35,[2848,4253,3373],{"class":3002},[2848,4255,3006],{"class":2998},[2848,4257,3087],{"class":3009},[2848,4259,3234],{"class":2998},[2848,4261,4263,4266,4268,4271],{"class":2850,"line":4262},36,[2848,4264,4265],{"class":3002},"    border-radius",[2848,4267,3006],{"class":2998},[2848,4269,4270],{"class":3021},"100px",[2848,4272,3234],{"class":2998},[2848,4274,4276,4278,4280,4283],{"class":2850,"line":4275},37,[2848,4277,3362],{"class":3002},[2848,4279,3006],{"class":2998},[2848,4281,4282],{"class":3021},"0.72rem",[2848,4284,3234],{"class":2998},[2848,4286,4288,4291,4293,4296],{"class":2850,"line":4287},38,[2848,4289,4290],{"class":3002},"    font-weight",[2848,4292,3006],{"class":2998},[2848,4294,4295],{"class":3021},"700",[2848,4297,3234],{"class":2998},[2848,4299,4301],{"class":2850,"line":4300},39,[2848,4302,3251],{"emptyLinePlaceholder":3250},[2848,4304,4306,4309,4312],{"class":2850,"line":4305},40,[2848,4307,4308],{"class":2998},"    &",[2848,4310,4311],{"class":3002},"--active",[2848,4313,3222],{"class":2998},[2848,4315,4317,4320,4322,4324],{"class":2850,"line":4316},41,[2848,4318,4319],{"class":3002},"      background",[2848,4321,3006],{"class":2998},[2848,4323,3087],{"class":3009},[2848,4325,3234],{"class":2998},[2848,4327,4329,4331,4333,4335],{"class":2850,"line":4328},42,[2848,4330,3402],{"class":3002},[2848,4332,3006],{"class":2998},[2848,4334,3010],{"class":3009},[2848,4336,3234],{"class":2998},[2848,4338,4340],{"class":2850,"line":4339},43,[2848,4341,3414],{"class":2998},[2848,4343,4345],{"class":2850,"line":4344},44,[2848,4346,3299],{"class":2998},[2848,4348,4350],{"class":2850,"line":4349},45,[2848,4351,3251],{"emptyLinePlaceholder":3250},[2848,4353,4355],{"class":2850,"line":4354},46,[2848,4356,4357],{"class":2998},"  &__title {\n",[2848,4359,4361,4363,4365,4368,4370,4372],{"class":2850,"line":4360},47,[2848,4362,4225],{"class":3002},[2848,4364,3006],{"class":2998},[2848,4366,4367],{"class":3021},"0.4rem",[2848,4369,4214],{"class":3021},[2848,4371,4217],{"class":3021},[2848,4373,3234],{"class":2998},[2848,4375,4377,4379,4381,4383],{"class":2850,"line":4376},48,[2848,4378,3362],{"class":3002},[2848,4380,3006],{"class":2998},[2848,4382,3146],{"class":3021},[2848,4384,3234],{"class":2998},[2848,4386,4388,4390,4392,4394],{"class":2850,"line":4387},49,[2848,4389,4290],{"class":3002},[2848,4391,3006],{"class":2998},[2848,4393,4295],{"class":3021},[2848,4395,3234],{"class":2998},[2848,4397,4399,4401,4403,4405],{"class":2850,"line":4398},50,[2848,4400,3373],{"class":3002},[2848,4402,3006],{"class":2998},[2848,4404,3114],{"class":3009},[2848,4406,3234],{"class":2998},[2848,4408,4410],{"class":2850,"line":4409},51,[2848,4411,3299],{"class":2998},[2848,4413,4415],{"class":2850,"line":4414},52,[2848,4416,3251],{"emptyLinePlaceholder":3250},[2848,4418,4420],{"class":2850,"line":4419},53,[2848,4421,4422],{"class":2998},"  &__body {\n",[2848,4424,4426,4428,4430,4432,4434],{"class":2850,"line":4425},54,[2848,4427,4225],{"class":3002},[2848,4429,3006],{"class":2998},[2848,4431,4367],{"class":3021},[2848,4433,4214],{"class":3021},[2848,4435,3234],{"class":2998},[2848,4437,4439,4441,4443,4446],{"class":2850,"line":4438},55,[2848,4440,3362],{"class":3002},[2848,4442,3006],{"class":2998},[2848,4444,4445],{"class":3021},"0.82rem",[2848,4447,3234],{"class":2998},[2848,4449,4451,4453,4455,4457],{"class":2850,"line":4450},56,[2848,4452,3373],{"class":3002},[2848,4454,3006],{"class":2998},[2848,4456,3155],{"class":3009},[2848,4458,3234],{"class":2998},[2848,4460,4462,4465,4467,4470],{"class":2850,"line":4461},57,[2848,4463,4464],{"class":3002},"    line-height",[2848,4466,3006],{"class":2998},[2848,4468,4469],{"class":3021},"1.5",[2848,4471,3234],{"class":2998},[2848,4473,4475],{"class":2850,"line":4474},58,[2848,4476,3251],{"emptyLinePlaceholder":3250},[2848,4478,4480],{"class":2850,"line":4479},59,[2848,4481,4482],{"class":2998},"    & code {\n",[2848,4484,4486,4488,4490,4492],{"class":2850,"line":4485},60,[2848,4487,4319],{"class":3002},[2848,4489,3006],{"class":2998},[2848,4491,3927],{"class":3009},[2848,4493,3234],{"class":2998},[2848,4495,4497,4500,4502,4505,4508],{"class":2850,"line":4496},61,[2848,4498,4499],{"class":3002},"      padding",[2848,4501,3006],{"class":2998},[2848,4503,4504],{"class":3021},"0.1em",[2848,4506,4507],{"class":3021}," 0.3em",[2848,4509,3234],{"class":2998},[2848,4511,4513,4516,4518,4521],{"class":2850,"line":4512},62,[2848,4514,4515],{"class":3002},"      border-radius",[2848,4517,3006],{"class":2998},[2848,4519,4520],{"class":3021},"3px",[2848,4522,3234],{"class":2998},[2848,4524,4526,4529,4531,4534],{"class":2850,"line":4525},63,[2848,4527,4528],{"class":3002},"      font-size",[2848,4530,3006],{"class":2998},[2848,4532,4533],{"class":3021},"0.9em",[2848,4535,3234],{"class":2998},[2848,4537,4539],{"class":2850,"line":4538},64,[2848,4540,3414],{"class":2998},[2848,4542,4544],{"class":2850,"line":4543},65,[2848,4545,3299],{"class":2998},[2848,4547,4549],{"class":2850,"line":4548},66,[2848,4550,3251],{"emptyLinePlaceholder":3250},[2848,4552,4554],{"class":2850,"line":4553},67,[2848,4555,4556],{"class":2998},"  &__footer {\n",[2848,4558,4560,4562,4564,4567,4569],{"class":2850,"line":4559},68,[2848,4561,4225],{"class":3002},[2848,4563,3006],{"class":2998},[2848,4565,4566],{"class":3021},"0.6rem",[2848,4568,4214],{"class":3021},[2848,4570,3234],{"class":2998},[2848,4572,4574,4577,4579,4581,4583,4586],{"class":2850,"line":4573},69,[2848,4575,4576],{"class":3002},"    border-top",[2848,4578,3006],{"class":2998},[2848,4580,3172],{"class":3021},[2848,4582,3175],{"class":3009},[2848,4584,4585],{"class":3009}," #f1f5f9",[2848,4587,3234],{"class":2998},[2848,4589,4591,4593,4595,4597],{"class":2850,"line":4590},70,[2848,4592,3460],{"class":3002},[2848,4594,3006],{"class":2998},[2848,4596,3882],{"class":3009},[2848,4598,3234],{"class":2998},[2848,4600,4602,4605,4607,4610],{"class":2850,"line":4601},71,[2848,4603,4604],{"class":3002},"    gap",[2848,4606,3006],{"class":2998},[2848,4608,4609],{"class":3021},"0.5rem",[2848,4611,3234],{"class":2998},[2848,4613,4615],{"class":2850,"line":4614},72,[2848,4616,3299],{"class":2998},[2848,4618,4620],{"class":2850,"line":4619},73,[2848,4621,3478],{"class":2998},[2848,4623,4625],{"class":2850,"line":4624},74,[2848,4626,3251],{"emptyLinePlaceholder":3250},[2848,4628,4630,4633],{"class":2850,"line":4629},75,[2848,4631,4632],{"class":2994},".n-btn",[2848,4634,3222],{"class":2998},[2848,4636,4638,4640,4642,4645,4648],{"class":2850,"line":4637},76,[2848,4639,3912],{"class":3002},[2848,4641,3006],{"class":2998},[2848,4643,4644],{"class":3021},"0.35rem",[2848,4646,4647],{"class":3021}," 0.85rem",[2848,4649,3234],{"class":2998},[2848,4651,4653,4655,4657,4660],{"class":2850,"line":4652},77,[2848,4654,3239],{"class":3002},[2848,4656,3006],{"class":2998},[2848,4658,4659],{"class":3021},"6px",[2848,4661,3234],{"class":2998},[2848,4663,4665,4668,4670,4673],{"class":2850,"line":4664},78,[2848,4666,4667],{"class":3002},"  font-size",[2848,4669,3006],{"class":2998},[2848,4671,4672],{"class":3021},"0.8rem",[2848,4674,3234],{"class":2998},[2848,4676,4678,4681,4683,4686],{"class":2850,"line":4677},79,[2848,4679,4680],{"class":3002},"  font-weight",[2848,4682,3006],{"class":2998},[2848,4684,4685],{"class":3021},"600",[2848,4687,3234],{"class":2998},[2848,4689,4691,4693,4695,4697],{"class":2850,"line":4690},80,[2848,4692,4057],{"class":3002},[2848,4694,3006],{"class":2998},[2848,4696,4062],{"class":3009},[2848,4698,3234],{"class":2998},[2848,4700,4702,4704,4706,4708,4710],{"class":2850,"line":4701},81,[2848,4703,4011],{"class":3002},[2848,4705,3006],{"class":2998},[2848,4707,4016],{"class":3021},[2848,4709,3175],{"class":3009},[2848,4711,3234],{"class":2998},[2848,4713,4715,4717,4719,4722],{"class":2850,"line":4714},82,[2848,4716,3934],{"class":3002},[2848,4718,3006],{"class":2998},[2848,4720,4721],{"class":3009},"inherit",[2848,4723,3234],{"class":2998},[2848,4725,4727,4729,4731,4734,4737],{"class":2850,"line":4726},83,[2848,4728,4039],{"class":3002},[2848,4730,3006],{"class":2998},[2848,4732,4733],{"class":3009},"all",[2848,4735,4736],{"class":3021}," 0.15s",[2848,4738,3234],{"class":2998},[2848,4740,4742],{"class":2850,"line":4741},84,[2848,4743,3251],{"emptyLinePlaceholder":3250},[2848,4745,4747,4749,4752],{"class":2850,"line":4746},85,[2848,4748,3313],{"class":2998},[2848,4750,4751],{"class":3002},"--primary",[2848,4753,3222],{"class":2998},[2848,4755,4757,4759,4761,4763],{"class":2850,"line":4756},86,[2848,4758,4241],{"class":3002},[2848,4760,3006],{"class":2998},[2848,4762,3087],{"class":3009},[2848,4764,3234],{"class":2998},[2848,4766,4768,4770,4772,4774],{"class":2850,"line":4767},87,[2848,4769,3373],{"class":3002},[2848,4771,3006],{"class":2998},[2848,4773,3010],{"class":3009},[2848,4775,3234],{"class":2998},[2848,4777,4779,4781,4783,4785],{"class":2850,"line":4778},88,[2848,4780,4113],{"class":3002},[2848,4782,3006],{"class":2998},[2848,4784,3087],{"class":3009},[2848,4786,3234],{"class":2998},[2848,4788,4790],{"class":2850,"line":4789},89,[2848,4791,3251],{"emptyLinePlaceholder":3250},[2848,4793,4795,4798,4801,4803,4806,4808,4810,4812,4814],{"class":2850,"line":4794},90,[2848,4796,4797],{"class":2998},"    &:hover { ",[2848,4799,3003],{"class":4800},"se1LK",[2848,4802,3006],{"class":2998},[2848,4804,4805],{"class":3009},"#4f46e5",[2848,4807,3013],{"class":2998},[2848,4809,3082],{"class":3002},[2848,4811,3006],{"class":2998},[2848,4813,4805],{"class":3009},[2848,4815,3025],{"class":2998},[2848,4817,4819],{"class":2850,"line":4818},91,[2848,4820,3299],{"class":2998},[2848,4822,4824],{"class":2850,"line":4823},92,[2848,4825,3251],{"emptyLinePlaceholder":3250},[2848,4827,4829],{"class":2850,"line":4828},93,[2848,4830,4831],{"class":2998},"  &--ghost {\n",[2848,4833,4835,4837,4839,4842],{"class":2850,"line":4834},94,[2848,4836,4241],{"class":3002},[2848,4838,3006],{"class":2998},[2848,4840,4841],{"class":3009},"transparent",[2848,4843,3234],{"class":2998},[2848,4845,4847,4849,4851,4853],{"class":2850,"line":4846},95,[2848,4848,3373],{"class":3002},[2848,4850,3006],{"class":2998},[2848,4852,3155],{"class":3009},[2848,4854,3234],{"class":2998},[2848,4856,4858,4860,4862,4865],{"class":2850,"line":4857},96,[2848,4859,4113],{"class":3002},[2848,4861,3006],{"class":2998},[2848,4863,4864],{"class":3009},"#e2e8f0",[2848,4866,3234],{"class":2998},[2848,4868,4870],{"class":2850,"line":4869},97,[2848,4871,3251],{"emptyLinePlaceholder":3250},[2848,4873,4875,4877,4879,4881,4884,4886,4888,4890,4892],{"class":2850,"line":4874},98,[2848,4876,4797],{"class":2998},[2848,4878,3003],{"class":4800},[2848,4880,3006],{"class":2998},[2848,4882,4883],{"class":3009},"#f8fafc",[2848,4885,3013],{"class":2998},[2848,4887,3109],{"class":3002},[2848,4889,3006],{"class":2998},[2848,4891,3114],{"class":3009},[2848,4893,3025],{"class":2998},[2848,4895,4897],{"class":2850,"line":4896},99,[2848,4898,3299],{"class":2998},[2848,4900,4902],{"class":2850,"line":4901},100,[2848,4903,3478],{"class":2998},[2970,4905,4907],{"id":4906},"вкладання-медіа-запитів","Вкладання медіа-запитів",[2799,4909,4910,4911,4914],{},"CSS Nesting дозволяє вкладати ",[2815,4912,4913],{},"@media"," безпосередньо всередині правила:",[2840,4916,4918],{"className":2979,"code":4917,"language":2981,"meta":2844,"style":2844},".hero {\n  padding: 2rem;\n  font-size: 1rem;\n\n  /* Замість окремого @media { .hero { } } */\n  @media (min-width: 768px) {\n    padding: 4rem;\n    font-size: 1.25rem;\n  }\n\n  @media (min-width: 1200px) {\n    padding: 6rem;\n    font-size: 1.5rem;\n  }\n}\n",[2815,4919,4920,4927,4938,4948,4952,4957,4973,4984,4994,4998,5002,5019,5024,5031,5035],{"__ignoreMap":2844},[2848,4921,4922,4925],{"class":2850,"line":2851},[2848,4923,4924],{"class":2994},".hero",[2848,4926,3222],{"class":2998},[2848,4928,4929,4931,4933,4936],{"class":2850,"line":2857},[2848,4930,3912],{"class":3002},[2848,4932,3006],{"class":2998},[2848,4934,4935],{"class":3021},"2rem",[2848,4937,3234],{"class":2998},[2848,4939,4940,4942,4944,4946],{"class":2850,"line":2863},[2848,4941,4667],{"class":3002},[2848,4943,3006],{"class":2998},[2848,4945,3146],{"class":3021},[2848,4947,3234],{"class":2998},[2848,4949,4950],{"class":2850,"line":2869},[2848,4951,3251],{"emptyLinePlaceholder":3250},[2848,4953,4954],{"class":2850,"line":2875},[2848,4955,4956],{"class":2988},"  /* Замість окремого @media { .hero { } } */\n",[2848,4958,4959,4962,4965,4967,4970],{"class":2850,"line":2881},[2848,4960,4961],{"class":2998},"  @media (",[2848,4963,4964],{"class":3002},"min-width",[2848,4966,3006],{"class":2998},[2848,4968,4969],{"class":3021},"768px",[2848,4971,4972],{"class":2998},") {\n",[2848,4974,4975,4977,4979,4982],{"class":2850,"line":2887},[2848,4976,4225],{"class":3002},[2848,4978,3006],{"class":2998},[2848,4980,4981],{"class":3021},"4rem",[2848,4983,3234],{"class":2998},[2848,4985,4986,4988,4990,4992],{"class":2850,"line":2893},[2848,4987,3362],{"class":3002},[2848,4989,3006],{"class":2998},[2848,4991,3104],{"class":3021},[2848,4993,3234],{"class":2998},[2848,4995,4996],{"class":2850,"line":2899},[2848,4997,3299],{"class":2998},[2848,4999,5000],{"class":2850,"line":2905},[2848,5001,3251],{"emptyLinePlaceholder":3250},[2848,5003,5004,5008,5010,5012,5014,5017],{"class":2850,"line":2911},[2848,5005,5007],{"class":5006},"sCDza","  @media",[2848,5009,2813],{"class":2998},[2848,5011,4964],{"class":3002},[2848,5013,3006],{"class":2998},[2848,5015,5016],{"class":3021},"1200px",[2848,5018,4972],{"class":2998},[2848,5020,5021],{"class":2850,"line":2917},[2848,5022,5023],{"class":2998},"    padding: 6rem;\n",[2848,5025,5026,5028],{"class":2850,"line":2923},[2848,5027,3362],{"class":3508},[2848,5029,5030],{"class":2998},": 1.5rem;\n",[2848,5032,5033],{"class":2850,"line":2928},[2848,5034,3299],{"class":2998},[2848,5036,5037],{"class":2850,"line":2934},[2848,5038,3478],{"class":2998},[3491,5040,5041,5259],{},[2840,5042,5044],{"className":3495,"code":5043,"language":3497,"meta":2844,"style":2844},"\u003Cdiv class=\"media-nesting-demo\">\n  \u003Cdiv class=\"responsive-hero\">\n    \u003Ch2>Адаптивний заголовок\u003C/h2>\n    \u003Cp>Padding та font-size змінюються через \u003Ccode>@media\u003C/code> вкладений у правило компонента. Змініть ширину вікна.\u003C/p>\n  \u003C/div>\n  \u003Cdiv class=\"responsive-grid\">\n    \u003Cdiv class=\"rg-item\">A\u003C/div>\n    \u003Cdiv class=\"rg-item\">B\u003C/div>\n    \u003Cdiv class=\"rg-item\">C\u003C/div>\n    \u003Cdiv class=\"rg-item\">D\u003C/div>\n  \u003C/div>\n\u003C/div>\n",[2815,5045,5046,5061,5076,5093,5127,5135,5150,5174,5197,5220,5243,5251],{"__ignoreMap":2844},[2848,5047,5048,5050,5052,5054,5056,5059],{"class":2850,"line":2851},[2848,5049,3505],{"class":3504},[2848,5051,3509],{"class":3508},[2848,5053,3512],{"class":3002},[2848,5055,3515],{"class":2998},[2848,5057,5058],{"class":3518},"\"media-nesting-demo\"",[2848,5060,3522],{"class":3504},[2848,5062,5063,5065,5067,5069,5071,5074],{"class":2850,"line":2857},[2848,5064,3527],{"class":3504},[2848,5066,3509],{"class":3508},[2848,5068,3512],{"class":3002},[2848,5070,3515],{"class":2998},[2848,5072,5073],{"class":3518},"\"responsive-hero\"",[2848,5075,3522],{"class":3504},[2848,5077,5078,5080,5082,5084,5087,5089,5091],{"class":2850,"line":2863},[2848,5079,3543],{"class":3504},[2848,5081,2794],{"class":3508},[2848,5083,3555],{"class":3504},[2848,5085,5086],{"class":2998},"Адаптивний заголовок",[2848,5088,3561],{"class":3504},[2848,5090,2794],{"class":3508},[2848,5092,3522],{"class":3504},[2848,5094,5095,5097,5099,5101,5104,5106,5108,5110,5112,5114,5116,5118,5121,5123,5125],{"class":2850,"line":2869},[2848,5096,3543],{"class":3504},[2848,5098,2799],{"class":3508},[2848,5100,3555],{"class":3504},[2848,5102,5103],{"class":2998},"Padding та font-size змінюються через ",[2848,5105,3505],{"class":3504},[2848,5107,2815],{"class":3508},[2848,5109,3555],{"class":3504},[2848,5111,4913],{"class":2998},[2848,5113,3561],{"class":3504},[2848,5115,2815],{"class":3508},[2848,5117,3555],{"class":3504},[2848,5119,5120],{"class":2998}," вкладений у правило компонента. Змініть ширину вікна.",[2848,5122,3561],{"class":3504},[2848,5124,2799],{"class":3508},[2848,5126,3522],{"class":3504},[2848,5128,5129,5131,5133],{"class":2850,"line":2875},[2848,5130,3692],{"class":3504},[2848,5132,3509],{"class":3508},[2848,5134,3522],{"class":3504},[2848,5136,5137,5139,5141,5143,5145,5148],{"class":2850,"line":2881},[2848,5138,3527],{"class":3504},[2848,5140,3509],{"class":3508},[2848,5142,3512],{"class":3002},[2848,5144,3515],{"class":2998},[2848,5146,5147],{"class":3518},"\"responsive-grid\"",[2848,5149,3522],{"class":3504},[2848,5151,5152,5154,5156,5158,5160,5163,5165,5168,5170,5172],{"class":2850,"line":2887},[2848,5153,3543],{"class":3504},[2848,5155,3509],{"class":3508},[2848,5157,3512],{"class":3002},[2848,5159,3515],{"class":2998},[2848,5161,5162],{"class":3518},"\"rg-item\"",[2848,5164,3555],{"class":3504},[2848,5166,5167],{"class":2998},"A",[2848,5169,3561],{"class":3504},[2848,5171,3509],{"class":3508},[2848,5173,3522],{"class":3504},[2848,5175,5176,5178,5180,5182,5184,5186,5188,5191,5193,5195],{"class":2850,"line":2893},[2848,5177,3543],{"class":3504},[2848,5179,3509],{"class":3508},[2848,5181,3512],{"class":3002},[2848,5183,3515],{"class":2998},[2848,5185,5162],{"class":3518},[2848,5187,3555],{"class":3504},[2848,5189,5190],{"class":2998},"B",[2848,5192,3561],{"class":3504},[2848,5194,3509],{"class":3508},[2848,5196,3522],{"class":3504},[2848,5198,5199,5201,5203,5205,5207,5209,5211,5214,5216,5218],{"class":2850,"line":2899},[2848,5200,3543],{"class":3504},[2848,5202,3509],{"class":3508},[2848,5204,3512],{"class":3002},[2848,5206,3515],{"class":2998},[2848,5208,5162],{"class":3518},[2848,5210,3555],{"class":3504},[2848,5212,5213],{"class":2998},"C",[2848,5215,3561],{"class":3504},[2848,5217,3509],{"class":3508},[2848,5219,3522],{"class":3504},[2848,5221,5222,5224,5226,5228,5230,5232,5234,5237,5239,5241],{"class":2850,"line":2905},[2848,5223,3543],{"class":3504},[2848,5225,3509],{"class":3508},[2848,5227,3512],{"class":3002},[2848,5229,3515],{"class":2998},[2848,5231,5162],{"class":3518},[2848,5233,3555],{"class":3504},[2848,5235,5236],{"class":2998},"D",[2848,5238,3561],{"class":3504},[2848,5240,3509],{"class":3508},[2848,5242,3522],{"class":3504},[2848,5244,5245,5247,5249],{"class":2850,"line":2911},[2848,5246,3692],{"class":3504},[2848,5248,3509],{"class":3508},[2848,5250,3522],{"class":3504},[2848,5252,5253,5255,5257],{"class":2850,"line":2917},[2848,5254,3561],{"class":3504},[2848,5256,3509],{"class":3508},[2848,5258,3522],{"class":3504},[2840,5260,5262],{"className":2979,"code":5261,"language":2981,"meta":2844,"style":2844},".media-nesting-demo {\n  font-family: system-ui, sans-serif;\n  color: #1e293b;\n  display: flex;\n  flex-direction: column;\n  gap: 0.75rem;\n  padding: 0.5rem;\n  background: #f8fafc;\n}\n\n.responsive-hero {\n  background: linear-gradient(135deg, #6366f1, #8b5cf6);\n  color: white;\n  border-radius: 10px;\n  padding: 1rem;\n  font-size: 0.85rem;\n\n  @media (min-width: 500px) {\n    padding: 2rem;\n    font-size: 1rem;\n  }\n\n  & h2 { margin: 0 0 0.5rem; font-size: 1.2em; }\n  & p  { margin: 0; opacity: 0.85; line-height: 1.5; }\n  & code { background: rgba(255,255,255,0.2); padding: 0.1em 0.3em; border-radius: 3px; }\n}\n\n.responsive-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 4px;\n\n  @media (min-width: 500px) {\n    grid-template-columns: repeat(4, 1fr);\n  }\n}\n\n.rg-item {\n  background: #6366f1;\n  color: white;\n  border-radius: 6px;\n  padding: 1rem;\n  text-align: center;\n  font-weight: 800;\n  font-size: 1.2rem;\n}\n",[2815,5263,5264,5271,5285,5296,5306,5318,5328,5338,5348,5352,5356,5363,5388,5398,5408,5418,5429,5433,5446,5456,5466,5470,5474,5505,5541,5595,5599,5603,5610,5621,5636,5647,5651,5663,5684,5688,5692,5696,5703,5713,5723,5733,5743,5755,5766,5777],{"__ignoreMap":2844},[2848,5265,5266,5269],{"class":2850,"line":2851},[2848,5267,5268],{"class":2994},".media-nesting-demo",[2848,5270,3222],{"class":2998},[2848,5272,5273,5275,5277,5279,5281,5283],{"class":2850,"line":2857},[2848,5274,3934],{"class":3002},[2848,5276,3006],{"class":2998},[2848,5278,3939],{"class":3009},[2848,5280,3281],{"class":2998},[2848,5282,3944],{"class":3009},[2848,5284,3234],{"class":2998},[2848,5286,5287,5290,5292,5294],{"class":2850,"line":2863},[2848,5288,5289],{"class":3002},"  color",[2848,5291,3006],{"class":2998},[2848,5293,3114],{"class":3009},[2848,5295,3234],{"class":2998},[2848,5297,5298,5300,5302,5304],{"class":2850,"line":2869},[2848,5299,3877],{"class":3002},[2848,5301,3006],{"class":2998},[2848,5303,3882],{"class":3009},[2848,5305,3234],{"class":2998},[2848,5307,5308,5311,5313,5316],{"class":2850,"line":2875},[2848,5309,5310],{"class":3002},"  flex-direction",[2848,5312,3006],{"class":2998},[2848,5314,5315],{"class":3009},"column",[2848,5317,3234],{"class":2998},[2848,5319,5320,5322,5324,5326],{"class":2850,"line":2881},[2848,5321,3889],{"class":3002},[2848,5323,3006],{"class":2998},[2848,5325,3187],{"class":3021},[2848,5327,3234],{"class":2998},[2848,5329,5330,5332,5334,5336],{"class":2850,"line":2887},[2848,5331,3912],{"class":3002},[2848,5333,3006],{"class":2998},[2848,5335,4609],{"class":3021},[2848,5337,3234],{"class":2998},[2848,5339,5340,5342,5344,5346],{"class":2850,"line":2893},[2848,5341,3227],{"class":3002},[2848,5343,3006],{"class":2998},[2848,5345,4883],{"class":3009},[2848,5347,3234],{"class":2998},[2848,5349,5350],{"class":2850,"line":2899},[2848,5351,3478],{"class":2998},[2848,5353,5354],{"class":2850,"line":2905},[2848,5355,3251],{"emptyLinePlaceholder":3250},[2848,5357,5358,5361],{"class":2850,"line":2911},[2848,5359,5360],{"class":2994},".responsive-hero",[2848,5362,3222],{"class":2998},[2848,5364,5365,5367,5369,5372,5374,5377,5379,5381,5383,5386],{"class":2850,"line":2917},[2848,5366,3227],{"class":3002},[2848,5368,3006],{"class":2998},[2848,5370,5371],{"class":3049},"linear-gradient",[2848,5373,3053],{"class":2998},[2848,5375,5376],{"class":3021},"135deg",[2848,5378,3281],{"class":2998},[2848,5380,3087],{"class":3009},[2848,5382,3281],{"class":2998},[2848,5384,5385],{"class":3009},"#8b5cf6",[2848,5387,3294],{"class":2998},[2848,5389,5390,5392,5394,5396],{"class":2850,"line":2923},[2848,5391,5289],{"class":3002},[2848,5393,3006],{"class":2998},[2848,5395,3010],{"class":3009},[2848,5397,3234],{"class":2998},[2848,5399,5400,5402,5404,5406],{"class":2850,"line":2928},[2848,5401,3239],{"class":3002},[2848,5403,3006],{"class":2998},[2848,5405,4004],{"class":3021},[2848,5407,3234],{"class":2998},[2848,5409,5410,5412,5414,5416],{"class":2850,"line":2934},[2848,5411,3912],{"class":3002},[2848,5413,3006],{"class":2998},[2848,5415,3146],{"class":3021},[2848,5417,3234],{"class":2998},[2848,5419,5420,5422,5424,5427],{"class":2850,"line":2940},[2848,5421,4667],{"class":3002},[2848,5423,3006],{"class":2998},[2848,5425,5426],{"class":3021},"0.85rem",[2848,5428,3234],{"class":2998},[2848,5430,5431],{"class":2850,"line":2946},[2848,5432,3251],{"emptyLinePlaceholder":3250},[2848,5434,5435,5437,5439,5441,5444],{"class":2850,"line":2952},[2848,5436,4961],{"class":2998},[2848,5438,4964],{"class":3002},[2848,5440,3006],{"class":2998},[2848,5442,5443],{"class":3021},"500px",[2848,5445,4972],{"class":2998},[2848,5447,5448,5450,5452,5454],{"class":2850,"line":2958},[2848,5449,4225],{"class":3002},[2848,5451,3006],{"class":2998},[2848,5453,4935],{"class":3021},[2848,5455,3234],{"class":2998},[2848,5457,5458,5460,5462,5464],{"class":2850,"line":3382},[2848,5459,3362],{"class":3002},[2848,5461,3006],{"class":2998},[2848,5463,3146],{"class":3021},[2848,5465,3234],{"class":2998},[2848,5467,5468],{"class":2850,"line":3387},[2848,5469,3299],{"class":2998},[2848,5471,5472],{"class":2850,"line":3393},[2848,5473,3251],{"emptyLinePlaceholder":3250},[2848,5475,5476,5478,5480,5482,5485,5487,5489,5491,5494,5496,5498,5500,5503],{"class":2850,"line":3399},[2848,5477,3353],{"class":2998},[2848,5479,2794],{"class":2994},[2848,5481,2999],{"class":2998},[2848,5483,5484],{"class":3002},"margin",[2848,5486,3006],{"class":2998},[2848,5488,3040],{"class":3021},[2848,5490,4217],{"class":3021},[2848,5492,5493],{"class":3021}," 0.5rem",[2848,5495,3013],{"class":2998},[2848,5497,3099],{"class":3002},[2848,5499,3006],{"class":2998},[2848,5501,5502],{"class":3021},"1.2em",[2848,5504,3025],{"class":2998},[2848,5506,5507,5509,5511,5514,5516,5518,5520,5522,5525,5527,5530,5532,5535,5537,5539],{"class":2850,"line":3411},[2848,5508,3353],{"class":2998},[2848,5510,2799],{"class":2994},[2848,5512,5513],{"class":2998},"  { ",[2848,5515,5484],{"class":3002},[2848,5517,3006],{"class":2998},[2848,5519,3040],{"class":3021},[2848,5521,3013],{"class":2998},[2848,5523,5524],{"class":3002},"opacity",[2848,5526,3006],{"class":2998},[2848,5528,5529],{"class":3021},"0.85",[2848,5531,3013],{"class":2998},[2848,5533,5534],{"class":3002},"line-height",[2848,5536,3006],{"class":2998},[2848,5538,4469],{"class":3021},[2848,5540,3025],{"class":2998},[2848,5542,5543,5545,5547,5549,5551,5553,5556,5558,5561,5563,5565,5567,5569,5571,5574,5577,5579,5581,5583,5585,5587,5589,5591,5593],{"class":2850,"line":3417},[2848,5544,3353],{"class":2998},[2848,5546,2815],{"class":2994},[2848,5548,2999],{"class":2998},[2848,5550,3003],{"class":3002},[2848,5552,3006],{"class":2998},[2848,5554,5555],{"class":3049},"rgba",[2848,5557,3053],{"class":2998},[2848,5559,5560],{"class":3021},"255",[2848,5562,3058],{"class":2998},[2848,5564,5560],{"class":3021},[2848,5566,3058],{"class":2998},[2848,5568,5560],{"class":3021},[2848,5570,3058],{"class":2998},[2848,5572,5573],{"class":3021},"0.2",[2848,5575,5576],{"class":2998},"); ",[2848,5578,3141],{"class":3002},[2848,5580,3006],{"class":2998},[2848,5582,4504],{"class":3021},[2848,5584,4507],{"class":3021},[2848,5586,3013],{"class":2998},[2848,5588,3016],{"class":3002},[2848,5590,3006],{"class":2998},[2848,5592,4520],{"class":3021},[2848,5594,3025],{"class":2998},[2848,5596,5597],{"class":2850,"line":3422},[2848,5598,3478],{"class":2998},[2848,5600,5601],{"class":2850,"line":3427},[2848,5602,3251],{"emptyLinePlaceholder":3250},[2848,5604,5605,5608],{"class":2850,"line":3433},[2848,5606,5607],{"class":2994},".responsive-grid",[2848,5609,3222],{"class":2998},[2848,5611,5612,5614,5616,5619],{"class":2850,"line":3443},[2848,5613,3877],{"class":3002},[2848,5615,3006],{"class":2998},[2848,5617,5618],{"class":3009},"grid",[2848,5620,3234],{"class":2998},[2848,5622,5623,5626,5628,5631,5634],{"class":2850,"line":3457},[2848,5624,5625],{"class":3002},"  grid-template-columns",[2848,5627,3006],{"class":2998},[2848,5629,5630],{"class":3021},"1fr",[2848,5632,5633],{"class":3021}," 1fr",[2848,5635,3234],{"class":2998},[2848,5637,5638,5640,5642,5645],{"class":2850,"line":3470},[2848,5639,3889],{"class":3002},[2848,5641,3006],{"class":2998},[2848,5643,5644],{"class":3021},"4px",[2848,5646,3234],{"class":2998},[2848,5648,5649],{"class":2850,"line":3475},[2848,5650,3251],{"emptyLinePlaceholder":3250},[2848,5652,5653,5655,5657,5659,5661],{"class":2850,"line":4222},[2848,5654,4961],{"class":2998},[2848,5656,4964],{"class":3002},[2848,5658,3006],{"class":2998},[2848,5660,5443],{"class":3021},[2848,5662,4972],{"class":2998},[2848,5664,5665,5668,5670,5673,5675,5678,5680,5682],{"class":2850,"line":4238},[2848,5666,5667],{"class":3002},"    grid-template-columns",[2848,5669,3006],{"class":2998},[2848,5671,5672],{"class":3049},"repeat",[2848,5674,3053],{"class":2998},[2848,5676,5677],{"class":3021},"4",[2848,5679,3281],{"class":2998},[2848,5681,5630],{"class":3021},[2848,5683,3294],{"class":2998},[2848,5685,5686],{"class":2850,"line":4251},[2848,5687,3299],{"class":2998},[2848,5689,5690],{"class":2850,"line":4262},[2848,5691,3478],{"class":2998},[2848,5693,5694],{"class":2850,"line":4275},[2848,5695,3251],{"emptyLinePlaceholder":3250},[2848,5697,5698,5701],{"class":2850,"line":4287},[2848,5699,5700],{"class":2994},".rg-item",[2848,5702,3222],{"class":2998},[2848,5704,5705,5707,5709,5711],{"class":2850,"line":4300},[2848,5706,3227],{"class":3002},[2848,5708,3006],{"class":2998},[2848,5710,3087],{"class":3009},[2848,5712,3234],{"class":2998},[2848,5714,5715,5717,5719,5721],{"class":2850,"line":4305},[2848,5716,5289],{"class":3002},[2848,5718,3006],{"class":2998},[2848,5720,3010],{"class":3009},[2848,5722,3234],{"class":2998},[2848,5724,5725,5727,5729,5731],{"class":2850,"line":4316},[2848,5726,3239],{"class":3002},[2848,5728,3006],{"class":2998},[2848,5730,4659],{"class":3021},[2848,5732,3234],{"class":2998},[2848,5734,5735,5737,5739,5741],{"class":2850,"line":4328},[2848,5736,3912],{"class":3002},[2848,5738,3006],{"class":2998},[2848,5740,3146],{"class":3021},[2848,5742,3234],{"class":2998},[2848,5744,5745,5748,5750,5753],{"class":2850,"line":4339},[2848,5746,5747],{"class":3002},"  text-align",[2848,5749,3006],{"class":2998},[2848,5751,5752],{"class":3009},"center",[2848,5754,3234],{"class":2998},[2848,5756,5757,5759,5761,5764],{"class":2850,"line":4344},[2848,5758,4680],{"class":3002},[2848,5760,3006],{"class":2998},[2848,5762,5763],{"class":3021},"800",[2848,5765,3234],{"class":2998},[2848,5767,5768,5770,5772,5775],{"class":2850,"line":4349},[2848,5769,4667],{"class":3002},[2848,5771,3006],{"class":2998},[2848,5773,5774],{"class":3021},"1.2rem",[2848,5776,3234],{"class":2998},[2848,5778,5779],{"class":2850,"line":4354},[2848,5780,3478],{"class":2998},[2970,5782,5784],{"id":5783},"порівняння-scss-vs-нативний-css","Порівняння SCSS vs нативний CSS",[5786,5787,5788,6104],"code-group",{},[2840,5789,5794],{"className":5790,"code":5791,"filename":5792,"language":5793,"meta":2844,"style":2844},"language-scss shiki shiki-themes light-plus dark-plus dark-plus","// Без компілятора — не працює в браузері\n.button {\n  padding: 0.6em 1.2em;\n  background: $primary;\n  border-radius: 6px;\n  transition: all 0.15s;\n\n  &:hover {\n    background: darken($primary, 10%);\n  }\n\n  &:focus-visible {\n    outline: 2px solid $primary;\n    outline-offset: 2px;\n  }\n\n  &--large {\n    padding: 0.8em 1.6em;\n    font-size: 1.125rem;\n  }\n\n  &--ghost {\n    background: transparent;\n    border: 2px solid $primary;\n    color: $primary;\n\n    &:hover {\n      background: rgba($primary, 0.1);\n    }\n  }\n\n  @include respond-to('md') {\n    padding: 0.75em 1.5em;\n  }\n}\n","SCSS (раніше)","scss",[2815,5795,5796,5801,5808,5822,5833,5843,5855,5859,5868,5888,5892,5896,5905,5921,5932,5936,5940,5949,5963,5974,5978,5982,5991,6001,6015,6025,6029,6037,6055,6059,6063,6067,6082,6096,6100],{"__ignoreMap":2844},[2848,5797,5798],{"class":2850,"line":2851},[2848,5799,5800],{"class":2988},"// Без компілятора — не працює в браузері\n",[2848,5802,5803,5806],{"class":2850,"line":2857},[2848,5804,5805],{"class":2994},".button",[2848,5807,3222],{"class":2998},[2848,5809,5810,5812,5814,5817,5820],{"class":2850,"line":2863},[2848,5811,3912],{"class":3002},[2848,5813,3006],{"class":2998},[2848,5815,5816],{"class":3021},"0.6em",[2848,5818,5819],{"class":3021}," 1.2em",[2848,5821,3234],{"class":2998},[2848,5823,5824,5826,5828,5831],{"class":2850,"line":2869},[2848,5825,3227],{"class":3002},[2848,5827,3006],{"class":2998},[2848,5829,5830],{"class":3002},"$primary",[2848,5832,3234],{"class":2998},[2848,5834,5835,5837,5839,5841],{"class":2850,"line":2875},[2848,5836,3239],{"class":3002},[2848,5838,3006],{"class":2998},[2848,5840,4659],{"class":3021},[2848,5842,3234],{"class":2998},[2848,5844,5845,5847,5849,5851,5853],{"class":2850,"line":2881},[2848,5846,4039],{"class":3002},[2848,5848,3006],{"class":2998},[2848,5850,4733],{"class":3009},[2848,5852,4736],{"class":3021},[2848,5854,3234],{"class":2998},[2848,5856,5857],{"class":2850,"line":2887},[2848,5858,3251],{"emptyLinePlaceholder":3250},[2848,5860,5861,5863,5866],{"class":2850,"line":2893},[2848,5862,3313],{"class":3508},[2848,5864,5865],{"class":2994},":hover",[2848,5867,3222],{"class":2998},[2848,5869,5870,5872,5874,5877,5879,5881,5883,5886],{"class":2850,"line":2899},[2848,5871,4241],{"class":3002},[2848,5873,3006],{"class":2998},[2848,5875,5876],{"class":3049},"darken",[2848,5878,3053],{"class":2998},[2848,5880,5830],{"class":3002},[2848,5882,3281],{"class":2998},[2848,5884,5885],{"class":3021},"10%",[2848,5887,3294],{"class":2998},[2848,5889,5890],{"class":2850,"line":2905},[2848,5891,3299],{"class":2998},[2848,5893,5894],{"class":2850,"line":2911},[2848,5895,3251],{"emptyLinePlaceholder":3250},[2848,5897,5898,5900,5903],{"class":2850,"line":2917},[2848,5899,3313],{"class":3508},[2848,5901,5902],{"class":2994},":focus-visible",[2848,5904,3222],{"class":2998},[2848,5906,5907,5910,5912,5914,5916,5919],{"class":2850,"line":2923},[2848,5908,5909],{"class":3002},"    outline",[2848,5911,3006],{"class":2998},[2848,5913,3328],{"class":3021},[2848,5915,3175],{"class":3009},[2848,5917,5918],{"class":3002}," $primary",[2848,5920,3234],{"class":2998},[2848,5922,5923,5926,5928,5930],{"class":2850,"line":2928},[2848,5924,5925],{"class":3002},"    outline-offset",[2848,5927,3006],{"class":2998},[2848,5929,3328],{"class":3021},[2848,5931,3234],{"class":2998},[2848,5933,5934],{"class":2850,"line":2934},[2848,5935,3299],{"class":2998},[2848,5937,5938],{"class":2850,"line":2940},[2848,5939,3251],{"emptyLinePlaceholder":3250},[2848,5941,5942,5944,5947],{"class":2850,"line":2946},[2848,5943,3313],{"class":3508},[2848,5945,5946],{"class":3002},"--large",[2848,5948,3222],{"class":2998},[2848,5950,5951,5953,5955,5958,5961],{"class":2850,"line":2952},[2848,5952,4225],{"class":3002},[2848,5954,3006],{"class":2998},[2848,5956,5957],{"class":3021},"0.8em",[2848,5959,5960],{"class":3021}," 1.6em",[2848,5962,3234],{"class":2998},[2848,5964,5965,5967,5969,5972],{"class":2850,"line":2958},[2848,5966,3362],{"class":3002},[2848,5968,3006],{"class":2998},[2848,5970,5971],{"class":3021},"1.125rem",[2848,5973,3234],{"class":2998},[2848,5975,5976],{"class":2850,"line":3382},[2848,5977,3299],{"class":2998},[2848,5979,5980],{"class":2850,"line":3387},[2848,5981,3251],{"emptyLinePlaceholder":3250},[2848,5983,5984,5986,5989],{"class":2850,"line":3393},[2848,5985,3313],{"class":3508},[2848,5987,5988],{"class":3002},"--ghost",[2848,5990,3222],{"class":2998},[2848,5992,5993,5995,5997,5999],{"class":2850,"line":3399},[2848,5994,4241],{"class":3002},[2848,5996,3006],{"class":2998},[2848,5998,4841],{"class":3009},[2848,6000,3234],{"class":2998},[2848,6002,6003,6005,6007,6009,6011,6013],{"class":2850,"line":3411},[2848,6004,3323],{"class":3002},[2848,6006,3006],{"class":2998},[2848,6008,3328],{"class":3021},[2848,6010,3175],{"class":3009},[2848,6012,5918],{"class":3002},[2848,6014,3234],{"class":2998},[2848,6016,6017,6019,6021,6023],{"class":2850,"line":3417},[2848,6018,3373],{"class":3002},[2848,6020,3006],{"class":2998},[2848,6022,5830],{"class":3002},[2848,6024,3234],{"class":2998},[2848,6026,6027],{"class":2850,"line":3422},[2848,6028,3251],{"emptyLinePlaceholder":3250},[2848,6030,6031,6033,6035],{"class":2850,"line":3427},[2848,6032,4308],{"class":3508},[2848,6034,5865],{"class":2994},[2848,6036,3222],{"class":2998},[2848,6038,6039,6041,6043,6045,6047,6049,6051,6053],{"class":2850,"line":3433},[2848,6040,4319],{"class":3002},[2848,6042,3006],{"class":2998},[2848,6044,5555],{"class":3049},[2848,6046,3053],{"class":2998},[2848,6048,5830],{"class":3002},[2848,6050,3281],{"class":2998},[2848,6052,3069],{"class":3021},[2848,6054,3294],{"class":2998},[2848,6056,6057],{"class":2850,"line":3443},[2848,6058,3414],{"class":2998},[2848,6060,6061],{"class":2850,"line":3457},[2848,6062,3299],{"class":2998},[2848,6064,6065],{"class":2850,"line":3470},[2848,6066,3251],{"emptyLinePlaceholder":3250},[2848,6068,6069,6072,6075,6077,6080],{"class":2850,"line":3475},[2848,6070,6071],{"class":5006},"  @include",[2848,6073,6074],{"class":3049}," respond-to",[2848,6076,3053],{"class":2998},[2848,6078,6079],{"class":3451},"'md'",[2848,6081,4972],{"class":2998},[2848,6083,6084,6086,6088,6091,6094],{"class":2850,"line":4222},[2848,6085,4225],{"class":3002},[2848,6087,3006],{"class":2998},[2848,6089,6090],{"class":3021},"0.75em",[2848,6092,6093],{"class":3021}," 1.5em",[2848,6095,3234],{"class":2998},[2848,6097,6098],{"class":2850,"line":4238},[2848,6099,3299],{"class":2998},[2848,6101,6102],{"class":2850,"line":4251},[2848,6103,3478],{"class":2998},[2840,6105,6108],{"className":2979,"code":6106,"filename":6107,"language":2981,"meta":2844,"style":2844},"/* Пряму в браузері — без компілятора */\n.button {\n  padding: 0.6em 1.2em;\n  background: var(--primary, #6366f1);\n  border-radius: 6px;\n  transition: all 0.15s;\n\n  &:hover {\n    background: color-mix(in srgb, var(--primary) 85%, black);\n  }\n\n  &:focus-visible {\n    outline: 2px solid var(--primary);\n    outline-offset: 2px;\n  }\n\n  &--large {\n    padding: 0.8em 1.6em;\n    font-size: 1.125rem;\n  }\n\n  &--ghost {\n    background: transparent;\n    border: 2px solid var(--primary);\n    color: var(--primary);\n\n    &:hover {\n      background: color-mix(in srgb, var(--primary) 10%, transparent);\n    }\n  }\n\n  @media (min-width: 768px) {\n    padding: 0.75em 1.5em;\n  }\n}\n","Native CSS (зараз)",[2815,6109,6110,6115,6121,6133,6152,6162,6174,6178,6182,6220,6224,6228,6236,6255,6265,6269,6273,6278,6290,6300,6304,6308,6312,6322,6340,6354,6358,6362,6394,6398,6402,6406,6420,6431,6435],{"__ignoreMap":2844},[2848,6111,6112],{"class":2850,"line":2851},[2848,6113,6114],{"class":2988},"/* Пряму в браузері — без компілятора */\n",[2848,6116,6117,6119],{"class":2850,"line":2857},[2848,6118,5805],{"class":2994},[2848,6120,3222],{"class":2998},[2848,6122,6123,6125,6127,6129,6131],{"class":2850,"line":2863},[2848,6124,3912],{"class":3002},[2848,6126,3006],{"class":2998},[2848,6128,5816],{"class":3021},[2848,6130,5819],{"class":3021},[2848,6132,3234],{"class":2998},[2848,6134,6135,6137,6139,6142,6144,6146,6148,6150],{"class":2850,"line":2869},[2848,6136,3227],{"class":3002},[2848,6138,3006],{"class":2998},[2848,6140,6141],{"class":3049},"var",[2848,6143,3053],{"class":2998},[2848,6145,4751],{"class":3002},[2848,6147,3281],{"class":2998},[2848,6149,3087],{"class":3009},[2848,6151,3294],{"class":2998},[2848,6153,6154,6156,6158,6160],{"class":2850,"line":2875},[2848,6155,3239],{"class":3002},[2848,6157,3006],{"class":2998},[2848,6159,4659],{"class":3021},[2848,6161,3234],{"class":2998},[2848,6163,6164,6166,6168,6170,6172],{"class":2850,"line":2881},[2848,6165,4039],{"class":3002},[2848,6167,3006],{"class":2998},[2848,6169,4733],{"class":3009},[2848,6171,4736],{"class":3021},[2848,6173,3234],{"class":2998},[2848,6175,6176],{"class":2850,"line":2887},[2848,6177,3251],{"emptyLinePlaceholder":3250},[2848,6179,6180],{"class":2850,"line":2893},[2848,6181,3261],{"class":2998},[2848,6183,6184,6186,6188,6191,6193,6196,6199,6201,6203,6205,6207,6210,6213,6215,6218],{"class":2850,"line":2899},[2848,6185,4241],{"class":4800},[2848,6187,3006],{"class":2998},[2848,6189,6190],{"class":3049},"color-mix",[2848,6192,3053],{"class":2998},[2848,6194,6195],{"class":3002},"in",[2848,6197,6198],{"class":3009}," srgb",[2848,6200,3281],{"class":2998},[2848,6202,6141],{"class":3049},[2848,6204,3053],{"class":2998},[2848,6206,4751],{"class":3002},[2848,6208,6209],{"class":2998},") ",[2848,6211,6212],{"class":3021},"85%",[2848,6214,3281],{"class":2998},[2848,6216,6217],{"class":3009},"black",[2848,6219,3294],{"class":2998},[2848,6221,6222],{"class":2850,"line":2905},[2848,6223,3299],{"class":2998},[2848,6225,6226],{"class":2850,"line":2911},[2848,6227,3251],{"emptyLinePlaceholder":3250},[2848,6229,6230,6232,6234],{"class":2850,"line":2917},[2848,6231,3313],{"class":2998},[2848,6233,5902],{"class":2994},[2848,6235,3222],{"class":2998},[2848,6237,6238,6240,6242,6244,6246,6249,6251,6253],{"class":2850,"line":2923},[2848,6239,5909],{"class":3002},[2848,6241,3006],{"class":2998},[2848,6243,3328],{"class":3021},[2848,6245,3175],{"class":3009},[2848,6247,6248],{"class":3049}," var",[2848,6250,3053],{"class":2998},[2848,6252,4751],{"class":3002},[2848,6254,3294],{"class":2998},[2848,6256,6257,6259,6261,6263],{"class":2850,"line":2928},[2848,6258,5925],{"class":3002},[2848,6260,3006],{"class":2998},[2848,6262,3328],{"class":3021},[2848,6264,3234],{"class":2998},[2848,6266,6267],{"class":2850,"line":2934},[2848,6268,3299],{"class":2998},[2848,6270,6271],{"class":2850,"line":2940},[2848,6272,3251],{"emptyLinePlaceholder":3250},[2848,6274,6275],{"class":2850,"line":2946},[2848,6276,6277],{"class":2998},"  &--large {\n",[2848,6279,6280,6282,6284,6286,6288],{"class":2850,"line":2952},[2848,6281,4225],{"class":3002},[2848,6283,3006],{"class":2998},[2848,6285,5957],{"class":3021},[2848,6287,5960],{"class":3021},[2848,6289,3234],{"class":2998},[2848,6291,6292,6294,6296,6298],{"class":2850,"line":2958},[2848,6293,3362],{"class":3002},[2848,6295,3006],{"class":2998},[2848,6297,5971],{"class":3021},[2848,6299,3234],{"class":2998},[2848,6301,6302],{"class":2850,"line":3382},[2848,6303,3299],{"class":2998},[2848,6305,6306],{"class":2850,"line":3387},[2848,6307,3251],{"emptyLinePlaceholder":3250},[2848,6309,6310],{"class":2850,"line":3393},[2848,6311,4831],{"class":2998},[2848,6313,6314,6316,6318,6320],{"class":2850,"line":3399},[2848,6315,4241],{"class":3002},[2848,6317,3006],{"class":2998},[2848,6319,4841],{"class":3009},[2848,6321,3234],{"class":2998},[2848,6323,6324,6326,6328,6330,6332,6334,6336,6338],{"class":2850,"line":3411},[2848,6325,3323],{"class":3002},[2848,6327,3006],{"class":2998},[2848,6329,3328],{"class":3021},[2848,6331,3175],{"class":3009},[2848,6333,6248],{"class":3049},[2848,6335,3053],{"class":2998},[2848,6337,4751],{"class":3002},[2848,6339,3294],{"class":2998},[2848,6341,6342,6344,6346,6348,6350,6352],{"class":2850,"line":3417},[2848,6343,3373],{"class":3002},[2848,6345,3006],{"class":2998},[2848,6347,6141],{"class":3049},[2848,6349,3053],{"class":2998},[2848,6351,4751],{"class":3002},[2848,6353,3294],{"class":2998},[2848,6355,6356],{"class":2850,"line":3422},[2848,6357,3251],{"emptyLinePlaceholder":3250},[2848,6359,6360],{"class":2850,"line":3427},[2848,6361,3396],{"class":2998},[2848,6363,6364,6366,6368,6370,6372,6374,6376,6378,6380,6382,6384,6386,6388,6390,6392],{"class":2850,"line":3433},[2848,6365,4319],{"class":4800},[2848,6367,3006],{"class":2998},[2848,6369,6190],{"class":3049},[2848,6371,3053],{"class":2998},[2848,6373,6195],{"class":3002},[2848,6375,6198],{"class":3009},[2848,6377,3281],{"class":2998},[2848,6379,6141],{"class":3049},[2848,6381,3053],{"class":2998},[2848,6383,4751],{"class":3002},[2848,6385,6209],{"class":2998},[2848,6387,5885],{"class":3021},[2848,6389,3281],{"class":2998},[2848,6391,4841],{"class":3009},[2848,6393,3294],{"class":2998},[2848,6395,6396],{"class":2850,"line":3443},[2848,6397,3414],{"class":2998},[2848,6399,6400],{"class":2850,"line":3457},[2848,6401,3299],{"class":2998},[2848,6403,6404],{"class":2850,"line":3470},[2848,6405,3251],{"emptyLinePlaceholder":3250},[2848,6407,6408,6410,6412,6414,6416,6418],{"class":2850,"line":3475},[2848,6409,5007],{"class":5006},[2848,6411,2813],{"class":2998},[2848,6413,4964],{"class":3002},[2848,6415,3006],{"class":2998},[2848,6417,4969],{"class":3021},[2848,6419,4972],{"class":2998},[2848,6421,6422,6425,6428],{"class":2850,"line":4222},[2848,6423,6424],{"class":2998},"    padding: 0",[2848,6426,6427],{"class":2994},".75em",[2848,6429,6430],{"class":2998}," 1.5em;\n",[2848,6432,6433],{"class":2850,"line":4238},[2848,6434,3299],{"class":2998},[2848,6436,6437],{"class":2850,"line":4251},[2848,6438,3478],{"class":2998},[6440,6441,6442,6445,6446,6449,6450,6455],"tip",{},[2815,6443,6444],{},"darken($color, 10%)"," із Sass тепер замінює ",[2815,6447,6448],{},"color-mix(in srgb, var(--color) 85%, black)"," — нативна CSS-функція, що стала доступною у 2023 році. Детальніше — у ",[6451,6452,6454],"a",{"href":6453},"/12.html-css/22.css-modern-features","статті про сучасні можливості CSS",".",[2963,6457],{},[2794,6459,6461,6463],{"id":6460},"layer-каскадні-шари-cascade-layers",[2815,6462,2817],{}," — Каскадні шари (Cascade Layers)",[2970,6465,6467],{"id":6466},"проблема-специфічності","Проблема специфічності",[2799,6469,6470,6471,6474,6475,6478],{},"Уявіть: ви підключаєте бібліотеку компонентів. Вона задає ",[2815,6472,6473],{},".button { background: blue }"," з певною специфічністю. Ваш код задає ",[2815,6476,6477],{},".button { background: green }",". Хто переможе? Залежить від порядку підключення та специфічності — і це часто непередбачувано.",[2799,6480,6481,6482,6484,6485,6455],{},"Ця проблема існувала роками: CSS-in-JS, BEM, CSS Modules — всі вони по-різному намагались її вирішити. ",[2815,6483,2817],{}," дає нативне рішення: явно оголошений ",[2806,6486,6487],{},"пріоритет шарів",[2799,6489,6490,6492],{},[2806,6491,3204],{}," Chrome 99+, Firefox 97+, Safari 15.4+",[2970,6494,6496],{"id":6495},"синтаксис-layer","Синтаксис @layer",[2840,6498,6500],{"className":2979,"code":6499,"language":2981,"meta":2844,"style":2844},"/* Крок 1: оголосити порядок шарів (від найнижчого до найвищого пріоритету) */\n@layer base, components, utilities;\n\n/* Крок 2: наповнити шари */\n@layer base {\n  /* Базові стилі, CSS Reset */\n  * { box-sizing: border-box; }\n  body { margin: 0; font-family: system-ui, sans-serif; }\n  h1, h2, h3 { line-height: 1.2; }\n}\n\n@layer components {\n  /* Стилі компонентів */\n  .button {\n    padding: 0.6em 1.2em;\n    background: #6366f1;\n    color: white;\n    border-radius: 6px;\n    border: none;\n    cursor: pointer;\n  }\n}\n\n@layer utilities {\n  /* Утиліти мають найвищий пріоритет серед шарів */\n  .hidden { display: none !important; }\n  .sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }\n}\n\n/* Стилі поза @layer мають НАЙВИЩИЙ пріоритет — вище всіх шарів */\n.button {\n  background: #ec4899; /* Переможе компонент у @layer */\n}\n",[2815,6501,6502,6507,6514,6518,6523,6530,6535,6552,6580,6604,6608,6612,6619,6624,6631,6643,6653,6663,6673,6684,6695,6699,6703,6707,6714,6719,6739,6809,6813,6817,6822,6828,6842],{"__ignoreMap":2844},[2848,6503,6504],{"class":2850,"line":2851},[2848,6505,6506],{"class":2988},"/* Крок 1: оголосити порядок шарів (від найнижчого до найвищого пріоритету) */\n",[2848,6508,6509,6511],{"class":2850,"line":2857},[2848,6510,2817],{"class":5006},[2848,6512,6513],{"class":2998}," base, components, utilities;\n",[2848,6515,6516],{"class":2850,"line":2863},[2848,6517,3251],{"emptyLinePlaceholder":3250},[2848,6519,6520],{"class":2850,"line":2869},[2848,6521,6522],{"class":2988},"/* Крок 2: наповнити шари */\n",[2848,6524,6525,6527],{"class":2850,"line":2875},[2848,6526,2817],{"class":5006},[2848,6528,6529],{"class":2998}," base {\n",[2848,6531,6532],{"class":2850,"line":2881},[2848,6533,6534],{"class":2988},"  /* Базові стилі, CSS Reset */\n",[2848,6536,6537,6540,6542,6545,6547,6550],{"class":2850,"line":2887},[2848,6538,6539],{"class":3508},"  *",[2848,6541,2999],{"class":2998},[2848,6543,6544],{"class":3002},"box-sizing",[2848,6546,3006],{"class":2998},[2848,6548,6549],{"class":3009},"border-box",[2848,6551,3025],{"class":2998},[2848,6553,6554,6557,6559,6561,6563,6565,6567,6570,6572,6574,6576,6578],{"class":2850,"line":2893},[2848,6555,6556],{"class":2994},"  body",[2848,6558,2999],{"class":2998},[2848,6560,5484],{"class":3002},[2848,6562,3006],{"class":2998},[2848,6564,3040],{"class":3021},[2848,6566,3013],{"class":2998},[2848,6568,6569],{"class":3002},"font-family",[2848,6571,3006],{"class":2998},[2848,6573,3939],{"class":3009},[2848,6575,3281],{"class":2998},[2848,6577,3944],{"class":3009},[2848,6579,3025],{"class":2998},[2848,6581,6582,6585,6587,6589,6591,6593,6595,6597,6599,6602],{"class":2850,"line":2899},[2848,6583,6584],{"class":2994},"  h1",[2848,6586,3281],{"class":2998},[2848,6588,2794],{"class":2994},[2848,6590,3281],{"class":2998},[2848,6592,2970],{"class":2994},[2848,6594,2999],{"class":2998},[2848,6596,5534],{"class":3002},[2848,6598,3006],{"class":2998},[2848,6600,6601],{"class":3021},"1.2",[2848,6603,3025],{"class":2998},[2848,6605,6606],{"class":2850,"line":2905},[2848,6607,3478],{"class":2998},[2848,6609,6610],{"class":2850,"line":2911},[2848,6611,3251],{"emptyLinePlaceholder":3250},[2848,6613,6614,6616],{"class":2850,"line":2917},[2848,6615,2817],{"class":5006},[2848,6617,6618],{"class":2998}," components {\n",[2848,6620,6621],{"class":2850,"line":2923},[2848,6622,6623],{"class":2988},"  /* Стилі компонентів */\n",[2848,6625,6626,6629],{"class":2850,"line":2928},[2848,6627,6628],{"class":2994},"  .button",[2848,6630,3222],{"class":2998},[2848,6632,6633,6635,6637,6639,6641],{"class":2850,"line":2934},[2848,6634,4225],{"class":3002},[2848,6636,3006],{"class":2998},[2848,6638,5816],{"class":3021},[2848,6640,5819],{"class":3021},[2848,6642,3234],{"class":2998},[2848,6644,6645,6647,6649,6651],{"class":2850,"line":2940},[2848,6646,4241],{"class":3002},[2848,6648,3006],{"class":2998},[2848,6650,3087],{"class":3009},[2848,6652,3234],{"class":2998},[2848,6654,6655,6657,6659,6661],{"class":2850,"line":2946},[2848,6656,3373],{"class":3002},[2848,6658,3006],{"class":2998},[2848,6660,3010],{"class":3009},[2848,6662,3234],{"class":2998},[2848,6664,6665,6667,6669,6671],{"class":2850,"line":2952},[2848,6666,4265],{"class":3002},[2848,6668,3006],{"class":2998},[2848,6670,4659],{"class":3021},[2848,6672,3234],{"class":2998},[2848,6674,6675,6677,6679,6682],{"class":2850,"line":2958},[2848,6676,3323],{"class":3002},[2848,6678,3006],{"class":2998},[2848,6680,6681],{"class":3009},"none",[2848,6683,3234],{"class":2998},[2848,6685,6686,6689,6691,6693],{"class":2850,"line":3382},[2848,6687,6688],{"class":3002},"    cursor",[2848,6690,3006],{"class":2998},[2848,6692,4062],{"class":3009},[2848,6694,3234],{"class":2998},[2848,6696,6697],{"class":2850,"line":3387},[2848,6698,3299],{"class":2998},[2848,6700,6701],{"class":2850,"line":3393},[2848,6702,3478],{"class":2998},[2848,6704,6705],{"class":2850,"line":3399},[2848,6706,3251],{"emptyLinePlaceholder":3250},[2848,6708,6709,6711],{"class":2850,"line":3411},[2848,6710,2817],{"class":5006},[2848,6712,6713],{"class":2998}," utilities {\n",[2848,6715,6716],{"class":2850,"line":3417},[2848,6717,6718],{"class":2988},"  /* Утиліти мають найвищий пріоритет серед шарів */\n",[2848,6720,6721,6724,6726,6729,6731,6733,6737],{"class":2850,"line":3422},[2848,6722,6723],{"class":2994},"  .hidden",[2848,6725,2999],{"class":2998},[2848,6727,6728],{"class":3002},"display",[2848,6730,3006],{"class":2998},[2848,6732,6681],{"class":3009},[2848,6734,6736],{"class":6735},"su1O8"," !important",[2848,6738,3025],{"class":2998},[2848,6740,6741,6744,6746,6749,6751,6754,6756,6759,6761,6763,6765,6768,6770,6772,6774,6777,6779,6781,6783,6786,6788,6791,6793,6795,6797,6799,6801,6803,6805,6807],{"class":2850,"line":3427},[2848,6742,6743],{"class":2994},"  .sr-only",[2848,6745,2999],{"class":2998},[2848,6747,6748],{"class":3002},"position",[2848,6750,3006],{"class":2998},[2848,6752,6753],{"class":3009},"absolute",[2848,6755,3013],{"class":2998},[2848,6757,6758],{"class":3002},"width",[2848,6760,3006],{"class":2998},[2848,6762,3172],{"class":3021},[2848,6764,3013],{"class":2998},[2848,6766,6767],{"class":3002},"height",[2848,6769,3006],{"class":2998},[2848,6771,3172],{"class":3021},[2848,6773,3013],{"class":2998},[2848,6775,6776],{"class":3002},"overflow",[2848,6778,3006],{"class":2998},[2848,6780,4032],{"class":3009},[2848,6782,3013],{"class":2998},[2848,6784,6785],{"class":3002},"clip",[2848,6787,3006],{"class":2998},[2848,6789,6790],{"class":3049},"rect",[2848,6792,3053],{"class":2998},[2848,6794,3040],{"class":3021},[2848,6796,3058],{"class":2998},[2848,6798,3040],{"class":3021},[2848,6800,3058],{"class":2998},[2848,6802,3040],{"class":3021},[2848,6804,3058],{"class":2998},[2848,6806,3040],{"class":3021},[2848,6808,3072],{"class":2998},[2848,6810,6811],{"class":2850,"line":3433},[2848,6812,3478],{"class":2998},[2848,6814,6815],{"class":2850,"line":3443},[2848,6816,3251],{"emptyLinePlaceholder":3250},[2848,6818,6819],{"class":2850,"line":3457},[2848,6820,6821],{"class":2988},"/* Стилі поза @layer мають НАЙВИЩИЙ пріоритет — вище всіх шарів */\n",[2848,6823,6824,6826],{"class":2850,"line":3470},[2848,6825,5805],{"class":2994},[2848,6827,3222],{"class":2998},[2848,6829,6830,6832,6834,6837,6839],{"class":2850,"line":3475},[2848,6831,3227],{"class":3002},[2848,6833,3006],{"class":2998},[2848,6835,6836],{"class":3009},"#ec4899",[2848,6838,3013],{"class":2998},[2848,6840,6841],{"class":2988},"/* Переможе компонент у @layer */\n",[2848,6843,6844],{"class":2850,"line":4222},[2848,6845,3478],{"class":2998},[3491,6847,6848,7238],{},[2840,6849,6851],{"className":3495,"code":6850,"language":3497,"meta":2844,"style":2844},"\u003Cdiv class=\"layer-demo\">\n  \u003Cp class=\"layer-explain\">\n    Пріоритет: \u003Cstrong>без шару\u003C/strong> &gt; utilities &gt; components &gt; base\n  \u003C/p>\n  \u003Cdiv class=\"layer-boxes\">\n    \u003Cdiv class=\"layer-box lb-base\">\n      @layer base\u003Cbr>\u003Csmall>найнижчий пріоритет\u003C/small>\n    \u003C/div>\n    \u003Cdiv class=\"layer-box lb-components\">\n      @layer components\u003Cbr>\u003Csmall>середній\u003C/small>\n    \u003C/div>\n    \u003Cdiv class=\"layer-box lb-utilities\">\n      @layer utilities\u003Cbr>\u003Csmall>вищий\u003C/small>\n    \u003C/div>\n    \u003Cdiv class=\"layer-box lb-unlayered\">\n      без @layer\u003Cbr>\u003Csmall>найвищий!\u003C/small>\n    \u003C/div>\n  \u003C/div>\n  \u003Cdiv class=\"conflict-demo\">\n    \u003Cp class=\"conflict-label\">Демо: всі правила задають \u003Ccode>background\u003C/code>, перемагає вищий пріоритет\u003C/p>\n    \u003Cdiv class=\"conflict-btn\">Ця кнопка\u003C/div>\n  \u003C/div>\n\u003C/div>\n",[2815,6852,6853,6868,6883,6920,6928,6943,6958,6985,6993,7008,7032,7040,7055,7079,7087,7102,7126,7134,7142,7157,7198,7222,7230],{"__ignoreMap":2844},[2848,6854,6855,6857,6859,6861,6863,6866],{"class":2850,"line":2851},[2848,6856,3505],{"class":3504},[2848,6858,3509],{"class":3508},[2848,6860,3512],{"class":3002},[2848,6862,3515],{"class":2998},[2848,6864,6865],{"class":3518},"\"layer-demo\"",[2848,6867,3522],{"class":3504},[2848,6869,6870,6872,6874,6876,6878,6881],{"class":2850,"line":2857},[2848,6871,3527],{"class":3504},[2848,6873,2799],{"class":3508},[2848,6875,3512],{"class":3002},[2848,6877,3515],{"class":2998},[2848,6879,6880],{"class":3518},"\"layer-explain\"",[2848,6882,3522],{"class":3504},[2848,6884,6885,6888,6890,6892,6894,6897,6899,6901,6903,6906,6909,6912,6915,6917],{"class":2850,"line":2863},[2848,6886,6887],{"class":2998},"    Пріоритет: ",[2848,6889,3505],{"class":3504},[2848,6891,2806],{"class":3508},[2848,6893,3555],{"class":3504},[2848,6895,6896],{"class":2998},"без шару",[2848,6898,3561],{"class":3504},[2848,6900,2806],{"class":3508},[2848,6902,3555],{"class":3504},[2848,6904,6905],{"class":6735}," &gt;",[2848,6907,6908],{"class":2998}," utilities ",[2848,6910,6911],{"class":6735},"&gt;",[2848,6913,6914],{"class":2998}," components ",[2848,6916,6911],{"class":6735},[2848,6918,6919],{"class":2998}," base\n",[2848,6921,6922,6924,6926],{"class":2850,"line":2869},[2848,6923,3692],{"class":3504},[2848,6925,2799],{"class":3508},[2848,6927,3522],{"class":3504},[2848,6929,6930,6932,6934,6936,6938,6941],{"class":2850,"line":2875},[2848,6931,3527],{"class":3504},[2848,6933,3509],{"class":3508},[2848,6935,3512],{"class":3002},[2848,6937,3515],{"class":2998},[2848,6939,6940],{"class":3518},"\"layer-boxes\"",[2848,6942,3522],{"class":3504},[2848,6944,6945,6947,6949,6951,6953,6956],{"class":2850,"line":2881},[2848,6946,3543],{"class":3504},[2848,6948,3509],{"class":3508},[2848,6950,3512],{"class":3002},[2848,6952,3515],{"class":2998},[2848,6954,6955],{"class":3518},"\"layer-box lb-base\"",[2848,6957,3522],{"class":3504},[2848,6959,6960,6963,6965,6968,6971,6974,6976,6979,6981,6983],{"class":2850,"line":2887},[2848,6961,6962],{"class":2998},"      @layer base",[2848,6964,3505],{"class":3504},[2848,6966,6967],{"class":3508},"br",[2848,6969,6970],{"class":3504},">\u003C",[2848,6972,6973],{"class":3508},"small",[2848,6975,3555],{"class":3504},[2848,6977,6978],{"class":2998},"найнижчий пріоритет",[2848,6980,3561],{"class":3504},[2848,6982,6973],{"class":3508},[2848,6984,3522],{"class":3504},[2848,6986,6987,6989,6991],{"class":2850,"line":2893},[2848,6988,3683],{"class":3504},[2848,6990,3509],{"class":3508},[2848,6992,3522],{"class":3504},[2848,6994,6995,6997,6999,7001,7003,7006],{"class":2850,"line":2899},[2848,6996,3543],{"class":3504},[2848,6998,3509],{"class":3508},[2848,7000,3512],{"class":3002},[2848,7002,3515],{"class":2998},[2848,7004,7005],{"class":3518},"\"layer-box lb-components\"",[2848,7007,3522],{"class":3504},[2848,7009,7010,7013,7015,7017,7019,7021,7023,7026,7028,7030],{"class":2850,"line":2905},[2848,7011,7012],{"class":2998},"      @layer components",[2848,7014,3505],{"class":3504},[2848,7016,6967],{"class":3508},[2848,7018,6970],{"class":3504},[2848,7020,6973],{"class":3508},[2848,7022,3555],{"class":3504},[2848,7024,7025],{"class":2998},"середній",[2848,7027,3561],{"class":3504},[2848,7029,6973],{"class":3508},[2848,7031,3522],{"class":3504},[2848,7033,7034,7036,7038],{"class":2850,"line":2911},[2848,7035,3683],{"class":3504},[2848,7037,3509],{"class":3508},[2848,7039,3522],{"class":3504},[2848,7041,7042,7044,7046,7048,7050,7053],{"class":2850,"line":2917},[2848,7043,3543],{"class":3504},[2848,7045,3509],{"class":3508},[2848,7047,3512],{"class":3002},[2848,7049,3515],{"class":2998},[2848,7051,7052],{"class":3518},"\"layer-box lb-utilities\"",[2848,7054,3522],{"class":3504},[2848,7056,7057,7060,7062,7064,7066,7068,7070,7073,7075,7077],{"class":2850,"line":2923},[2848,7058,7059],{"class":2998},"      @layer utilities",[2848,7061,3505],{"class":3504},[2848,7063,6967],{"class":3508},[2848,7065,6970],{"class":3504},[2848,7067,6973],{"class":3508},[2848,7069,3555],{"class":3504},[2848,7071,7072],{"class":2998},"вищий",[2848,7074,3561],{"class":3504},[2848,7076,6973],{"class":3508},[2848,7078,3522],{"class":3504},[2848,7080,7081,7083,7085],{"class":2850,"line":2928},[2848,7082,3683],{"class":3504},[2848,7084,3509],{"class":3508},[2848,7086,3522],{"class":3504},[2848,7088,7089,7091,7093,7095,7097,7100],{"class":2850,"line":2934},[2848,7090,3543],{"class":3504},[2848,7092,3509],{"class":3508},[2848,7094,3512],{"class":3002},[2848,7096,3515],{"class":2998},[2848,7098,7099],{"class":3518},"\"layer-box lb-unlayered\"",[2848,7101,3522],{"class":3504},[2848,7103,7104,7107,7109,7111,7113,7115,7117,7120,7122,7124],{"class":2850,"line":2940},[2848,7105,7106],{"class":2998},"      без @layer",[2848,7108,3505],{"class":3504},[2848,7110,6967],{"class":3508},[2848,7112,6970],{"class":3504},[2848,7114,6973],{"class":3508},[2848,7116,3555],{"class":3504},[2848,7118,7119],{"class":2998},"найвищий!",[2848,7121,3561],{"class":3504},[2848,7123,6973],{"class":3508},[2848,7125,3522],{"class":3504},[2848,7127,7128,7130,7132],{"class":2850,"line":2946},[2848,7129,3683],{"class":3504},[2848,7131,3509],{"class":3508},[2848,7133,3522],{"class":3504},[2848,7135,7136,7138,7140],{"class":2850,"line":2952},[2848,7137,3692],{"class":3504},[2848,7139,3509],{"class":3508},[2848,7141,3522],{"class":3504},[2848,7143,7144,7146,7148,7150,7152,7155],{"class":2850,"line":2958},[2848,7145,3527],{"class":3504},[2848,7147,3509],{"class":3508},[2848,7149,3512],{"class":3002},[2848,7151,3515],{"class":2998},[2848,7153,7154],{"class":3518},"\"conflict-demo\"",[2848,7156,3522],{"class":3504},[2848,7158,7159,7161,7163,7165,7167,7170,7172,7175,7177,7179,7181,7183,7185,7187,7189,7192,7194,7196],{"class":2850,"line":3382},[2848,7160,3543],{"class":3504},[2848,7162,2799],{"class":3508},[2848,7164,3512],{"class":3002},[2848,7166,3515],{"class":2998},[2848,7168,7169],{"class":3518},"\"conflict-label\"",[2848,7171,3555],{"class":3504},[2848,7173,7174],{"class":2998},"Демо: всі правила задають ",[2848,7176,3505],{"class":3504},[2848,7178,2815],{"class":3508},[2848,7180,3555],{"class":3504},[2848,7182,3003],{"class":2998},[2848,7184,3561],{"class":3504},[2848,7186,2815],{"class":3508},[2848,7188,3555],{"class":3504},[2848,7190,7191],{"class":2998},", перемагає вищий пріоритет",[2848,7193,3561],{"class":3504},[2848,7195,2799],{"class":3508},[2848,7197,3522],{"class":3504},[2848,7199,7200,7202,7204,7206,7208,7211,7213,7216,7218,7220],{"class":2850,"line":3387},[2848,7201,3543],{"class":3504},[2848,7203,3509],{"class":3508},[2848,7205,3512],{"class":3002},[2848,7207,3515],{"class":2998},[2848,7209,7210],{"class":3518},"\"conflict-btn\"",[2848,7212,3555],{"class":3504},[2848,7214,7215],{"class":2998},"Ця кнопка",[2848,7217,3561],{"class":3504},[2848,7219,3509],{"class":3508},[2848,7221,3522],{"class":3504},[2848,7223,7224,7226,7228],{"class":2850,"line":3393},[2848,7225,3692],{"class":3504},[2848,7227,3509],{"class":3508},[2848,7229,3522],{"class":3504},[2848,7231,7232,7234,7236],{"class":2850,"line":3399},[2848,7233,3561],{"class":3504},[2848,7235,3509],{"class":3508},[2848,7237,3522],{"class":3504},[2840,7239,7241],{"className":2979,"code":7240,"language":2981,"meta":2844,"style":2844},".layer-demo {\n  padding: 1rem;\n  background: #f8fafc;\n  font-family: system-ui, sans-serif;\n  font-size: 0.85rem;\n  color: #1e293b;\n  display: flex;\n  flex-direction: column;\n  gap: 0.75rem;\n}\n.layer-explain { margin: 0; color: #64748b; }\n.layer-explain strong { color: #1e293b; }\n.layer-boxes { display: flex; gap: 4px; flex-wrap: wrap; }\n.layer-box {\n  flex: 1;\n  min-width: 80px;\n  padding: 0.6rem;\n  border-radius: 6px;\n  font-size: 0.78rem;\n  font-weight: 700;\n  text-align: center;\n  color: white;\n  line-height: 1.3;\n}\n.layer-box small { display: block; font-weight: 400; font-size: 0.7rem; opacity: 0.85; }\n.lb-base       { background: #94a3b8; }\n.lb-components { background: #6366f1; }\n.lb-utilities  { background: #8b5cf6; }\n.lb-unlayered  { background: #ec4899; }\n\n@layer ld-base {\n  .conflict-btn { background: #94a3b8; }\n}\n@layer ld-components {\n  .conflict-btn { background: #6366f1; }\n}\n@layer ld-utilities {\n  .conflict-btn { background: #8b5cf6; }\n}\n/* Без шару — найвищий пріоритет */\n.conflict-btn { background: #ec4899; }\n\n.conflict-demo {\n  background: white;\n  border-radius: 8px;\n  border: 1px solid #e2e8f0;\n  padding: 0.75rem;\n}\n.conflict-label { margin: 0 0 0.5rem; color: #64748b; font-size: 0.78rem; }\n.conflict-label code { background: #f1f5f9; padding: 0.1em 0.3em; border-radius: 3px; }\n.conflict-btn {\n  display: inline-block;\n  padding: 0.5rem 1.25rem;\n  color: white;\n  border-radius: 6px;\n  font-weight: 700;\n  font-size: 0.85rem;\n}\n",[2815,7242,7243,7250,7260,7270,7284,7294,7304,7314,7324,7334,7338,7361,7378,7411,7418,7428,7439,7449,7459,7470,7480,7490,7500,7512,7516,7560,7577,7592,7607,7622,7626,7633,7648,7652,7659,7673,7677,7684,7698,7702,7707,7722,7726,7733,7743,7753,7767,7777,7781,7816,7851,7857,7867,7880,7890,7900,7910,7920],{"__ignoreMap":2844},[2848,7244,7245,7248],{"class":2850,"line":2851},[2848,7246,7247],{"class":2994},".layer-demo",[2848,7249,3222],{"class":2998},[2848,7251,7252,7254,7256,7258],{"class":2850,"line":2857},[2848,7253,3912],{"class":3002},[2848,7255,3006],{"class":2998},[2848,7257,3146],{"class":3021},[2848,7259,3234],{"class":2998},[2848,7261,7262,7264,7266,7268],{"class":2850,"line":2863},[2848,7263,3227],{"class":3002},[2848,7265,3006],{"class":2998},[2848,7267,4883],{"class":3009},[2848,7269,3234],{"class":2998},[2848,7271,7272,7274,7276,7278,7280,7282],{"class":2850,"line":2869},[2848,7273,3934],{"class":3002},[2848,7275,3006],{"class":2998},[2848,7277,3939],{"class":3009},[2848,7279,3281],{"class":2998},[2848,7281,3944],{"class":3009},[2848,7283,3234],{"class":2998},[2848,7285,7286,7288,7290,7292],{"class":2850,"line":2875},[2848,7287,4667],{"class":3002},[2848,7289,3006],{"class":2998},[2848,7291,5426],{"class":3021},[2848,7293,3234],{"class":2998},[2848,7295,7296,7298,7300,7302],{"class":2850,"line":2881},[2848,7297,5289],{"class":3002},[2848,7299,3006],{"class":2998},[2848,7301,3114],{"class":3009},[2848,7303,3234],{"class":2998},[2848,7305,7306,7308,7310,7312],{"class":2850,"line":2887},[2848,7307,3877],{"class":3002},[2848,7309,3006],{"class":2998},[2848,7311,3882],{"class":3009},[2848,7313,3234],{"class":2998},[2848,7315,7316,7318,7320,7322],{"class":2850,"line":2893},[2848,7317,5310],{"class":3002},[2848,7319,3006],{"class":2998},[2848,7321,5315],{"class":3009},[2848,7323,3234],{"class":2998},[2848,7325,7326,7328,7330,7332],{"class":2850,"line":2899},[2848,7327,3889],{"class":3002},[2848,7329,3006],{"class":2998},[2848,7331,3187],{"class":3021},[2848,7333,3234],{"class":2998},[2848,7335,7336],{"class":2850,"line":2905},[2848,7337,3478],{"class":2998},[2848,7339,7340,7343,7345,7347,7349,7351,7353,7355,7357,7359],{"class":2850,"line":2911},[2848,7341,7342],{"class":2994},".layer-explain",[2848,7344,2999],{"class":2998},[2848,7346,5484],{"class":3002},[2848,7348,3006],{"class":2998},[2848,7350,3040],{"class":3021},[2848,7352,3013],{"class":2998},[2848,7354,3109],{"class":3002},[2848,7356,3006],{"class":2998},[2848,7358,3155],{"class":3009},[2848,7360,3025],{"class":2998},[2848,7362,7363,7365,7368,7370,7372,7374,7376],{"class":2850,"line":2917},[2848,7364,7342],{"class":2994},[2848,7366,7367],{"class":2994}," strong",[2848,7369,2999],{"class":2998},[2848,7371,3109],{"class":3002},[2848,7373,3006],{"class":2998},[2848,7375,3114],{"class":3009},[2848,7377,3025],{"class":2998},[2848,7379,7380,7383,7385,7387,7389,7391,7393,7396,7398,7400,7402,7405,7407,7409],{"class":2850,"line":2923},[2848,7381,7382],{"class":2994},".layer-boxes",[2848,7384,2999],{"class":2998},[2848,7386,6728],{"class":3002},[2848,7388,3006],{"class":2998},[2848,7390,3882],{"class":3009},[2848,7392,3013],{"class":2998},[2848,7394,7395],{"class":3002},"gap",[2848,7397,3006],{"class":2998},[2848,7399,5644],{"class":3021},[2848,7401,3013],{"class":2998},[2848,7403,7404],{"class":3002},"flex-wrap",[2848,7406,3006],{"class":2998},[2848,7408,3905],{"class":3009},[2848,7410,3025],{"class":2998},[2848,7412,7413,7416],{"class":2850,"line":2928},[2848,7414,7415],{"class":2994},".layer-box",[2848,7417,3222],{"class":2998},[2848,7419,7420,7422,7424,7426],{"class":2850,"line":2934},[2848,7421,3966],{"class":3002},[2848,7423,3006],{"class":2998},[2848,7425,3971],{"class":3021},[2848,7427,3234],{"class":2998},[2848,7429,7430,7432,7434,7437],{"class":2850,"line":2940},[2848,7431,3978],{"class":3002},[2848,7433,3006],{"class":2998},[2848,7435,7436],{"class":3021},"80px",[2848,7438,3234],{"class":2998},[2848,7440,7441,7443,7445,7447],{"class":2850,"line":2946},[2848,7442,3912],{"class":3002},[2848,7444,3006],{"class":2998},[2848,7446,4566],{"class":3021},[2848,7448,3234],{"class":2998},[2848,7450,7451,7453,7455,7457],{"class":2850,"line":2952},[2848,7452,3239],{"class":3002},[2848,7454,3006],{"class":2998},[2848,7456,4659],{"class":3021},[2848,7458,3234],{"class":2998},[2848,7460,7461,7463,7465,7468],{"class":2850,"line":2958},[2848,7462,4667],{"class":3002},[2848,7464,3006],{"class":2998},[2848,7466,7467],{"class":3021},"0.78rem",[2848,7469,3234],{"class":2998},[2848,7471,7472,7474,7476,7478],{"class":2850,"line":3382},[2848,7473,4680],{"class":3002},[2848,7475,3006],{"class":2998},[2848,7477,4295],{"class":3021},[2848,7479,3234],{"class":2998},[2848,7481,7482,7484,7486,7488],{"class":2850,"line":3387},[2848,7483,5747],{"class":3002},[2848,7485,3006],{"class":2998},[2848,7487,5752],{"class":3009},[2848,7489,3234],{"class":2998},[2848,7491,7492,7494,7496,7498],{"class":2850,"line":3393},[2848,7493,5289],{"class":3002},[2848,7495,3006],{"class":2998},[2848,7497,3010],{"class":3009},[2848,7499,3234],{"class":2998},[2848,7501,7502,7505,7507,7510],{"class":2850,"line":3399},[2848,7503,7504],{"class":3002},"  line-height",[2848,7506,3006],{"class":2998},[2848,7508,7509],{"class":3021},"1.3",[2848,7511,3234],{"class":2998},[2848,7513,7514],{"class":2850,"line":3411},[2848,7515,3478],{"class":2998},[2848,7517,7518,7520,7523,7525,7527,7529,7531,7533,7536,7538,7541,7543,7545,7547,7550,7552,7554,7556,7558],{"class":2850,"line":3417},[2848,7519,7415],{"class":2994},[2848,7521,7522],{"class":2994}," small",[2848,7524,2999],{"class":2998},[2848,7526,6728],{"class":3002},[2848,7528,3006],{"class":2998},[2848,7530,3465],{"class":3009},[2848,7532,3013],{"class":2998},[2848,7534,7535],{"class":3002},"font-weight",[2848,7537,3006],{"class":2998},[2848,7539,7540],{"class":3021},"400",[2848,7542,3013],{"class":2998},[2848,7544,3099],{"class":3002},[2848,7546,3006],{"class":2998},[2848,7548,7549],{"class":3021},"0.7rem",[2848,7551,3013],{"class":2998},[2848,7553,5524],{"class":3002},[2848,7555,3006],{"class":2998},[2848,7557,5529],{"class":3021},[2848,7559,3025],{"class":2998},[2848,7561,7562,7565,7568,7570,7572,7575],{"class":2850,"line":3422},[2848,7563,7564],{"class":2994},".lb-base",[2848,7566,7567],{"class":2998},"       { ",[2848,7569,3003],{"class":3002},[2848,7571,3006],{"class":2998},[2848,7573,7574],{"class":3009},"#94a3b8",[2848,7576,3025],{"class":2998},[2848,7578,7579,7582,7584,7586,7588,7590],{"class":2850,"line":3427},[2848,7580,7581],{"class":2994},".lb-components",[2848,7583,2999],{"class":2998},[2848,7585,3003],{"class":3002},[2848,7587,3006],{"class":2998},[2848,7589,3087],{"class":3009},[2848,7591,3025],{"class":2998},[2848,7593,7594,7597,7599,7601,7603,7605],{"class":2850,"line":3433},[2848,7595,7596],{"class":2994},".lb-utilities",[2848,7598,5513],{"class":2998},[2848,7600,3003],{"class":3002},[2848,7602,3006],{"class":2998},[2848,7604,5385],{"class":3009},[2848,7606,3025],{"class":2998},[2848,7608,7609,7612,7614,7616,7618,7620],{"class":2850,"line":3443},[2848,7610,7611],{"class":2994},".lb-unlayered",[2848,7613,5513],{"class":2998},[2848,7615,3003],{"class":3002},[2848,7617,3006],{"class":2998},[2848,7619,6836],{"class":3009},[2848,7621,3025],{"class":2998},[2848,7623,7624],{"class":2850,"line":3457},[2848,7625,3251],{"emptyLinePlaceholder":3250},[2848,7627,7628,7630],{"class":2850,"line":3470},[2848,7629,2817],{"class":5006},[2848,7631,7632],{"class":2998}," ld-base {\n",[2848,7634,7635,7638,7640,7642,7644,7646],{"class":2850,"line":3475},[2848,7636,7637],{"class":2994},"  .conflict-btn",[2848,7639,2999],{"class":2998},[2848,7641,3003],{"class":3002},[2848,7643,3006],{"class":2998},[2848,7645,7574],{"class":3009},[2848,7647,3025],{"class":2998},[2848,7649,7650],{"class":2850,"line":4222},[2848,7651,3478],{"class":2998},[2848,7653,7654,7656],{"class":2850,"line":4238},[2848,7655,2817],{"class":5006},[2848,7657,7658],{"class":2998}," ld-components {\n",[2848,7660,7661,7663,7665,7667,7669,7671],{"class":2850,"line":4251},[2848,7662,7637],{"class":2994},[2848,7664,2999],{"class":2998},[2848,7666,3003],{"class":3002},[2848,7668,3006],{"class":2998},[2848,7670,3087],{"class":3009},[2848,7672,3025],{"class":2998},[2848,7674,7675],{"class":2850,"line":4262},[2848,7676,3478],{"class":2998},[2848,7678,7679,7681],{"class":2850,"line":4275},[2848,7680,2817],{"class":5006},[2848,7682,7683],{"class":2998}," ld-utilities {\n",[2848,7685,7686,7688,7690,7692,7694,7696],{"class":2850,"line":4287},[2848,7687,7637],{"class":2994},[2848,7689,2999],{"class":2998},[2848,7691,3003],{"class":3002},[2848,7693,3006],{"class":2998},[2848,7695,5385],{"class":3009},[2848,7697,3025],{"class":2998},[2848,7699,7700],{"class":2850,"line":4300},[2848,7701,3478],{"class":2998},[2848,7703,7704],{"class":2850,"line":4305},[2848,7705,7706],{"class":2988},"/* Без шару — найвищий пріоритет */\n",[2848,7708,7709,7712,7714,7716,7718,7720],{"class":2850,"line":4316},[2848,7710,7711],{"class":2994},".conflict-btn",[2848,7713,2999],{"class":2998},[2848,7715,3003],{"class":3002},[2848,7717,3006],{"class":2998},[2848,7719,6836],{"class":3009},[2848,7721,3025],{"class":2998},[2848,7723,7724],{"class":2850,"line":4328},[2848,7725,3251],{"emptyLinePlaceholder":3250},[2848,7727,7728,7731],{"class":2850,"line":4339},[2848,7729,7730],{"class":2994},".conflict-demo",[2848,7732,3222],{"class":2998},[2848,7734,7735,7737,7739,7741],{"class":2850,"line":4344},[2848,7736,3227],{"class":3002},[2848,7738,3006],{"class":2998},[2848,7740,3010],{"class":3009},[2848,7742,3234],{"class":2998},[2848,7744,7745,7747,7749,7751],{"class":2850,"line":4349},[2848,7746,3239],{"class":3002},[2848,7748,3006],{"class":2998},[2848,7750,3022],{"class":3021},[2848,7752,3234],{"class":2998},[2848,7754,7755,7757,7759,7761,7763,7765],{"class":2850,"line":4354},[2848,7756,4011],{"class":3002},[2848,7758,3006],{"class":2998},[2848,7760,3172],{"class":3021},[2848,7762,3175],{"class":3009},[2848,7764,3178],{"class":3009},[2848,7766,3234],{"class":2998},[2848,7768,7769,7771,7773,7775],{"class":2850,"line":4360},[2848,7770,3912],{"class":3002},[2848,7772,3006],{"class":2998},[2848,7774,3187],{"class":3021},[2848,7776,3234],{"class":2998},[2848,7778,7779],{"class":2850,"line":4376},[2848,7780,3478],{"class":2998},[2848,7782,7783,7786,7788,7790,7792,7794,7796,7798,7800,7802,7804,7806,7808,7810,7812,7814],{"class":2850,"line":4387},[2848,7784,7785],{"class":2994},".conflict-label",[2848,7787,2999],{"class":2998},[2848,7789,5484],{"class":3002},[2848,7791,3006],{"class":2998},[2848,7793,3040],{"class":3021},[2848,7795,4217],{"class":3021},[2848,7797,5493],{"class":3021},[2848,7799,3013],{"class":2998},[2848,7801,3109],{"class":3002},[2848,7803,3006],{"class":2998},[2848,7805,3155],{"class":3009},[2848,7807,3013],{"class":2998},[2848,7809,3099],{"class":3002},[2848,7811,3006],{"class":2998},[2848,7813,7467],{"class":3021},[2848,7815,3025],{"class":2998},[2848,7817,7818,7820,7823,7825,7827,7829,7831,7833,7835,7837,7839,7841,7843,7845,7847,7849],{"class":2850,"line":4398},[2848,7819,7785],{"class":2994},[2848,7821,7822],{"class":2994}," code",[2848,7824,2999],{"class":2998},[2848,7826,3003],{"class":3002},[2848,7828,3006],{"class":2998},[2848,7830,3927],{"class":3009},[2848,7832,3013],{"class":2998},[2848,7834,3141],{"class":3002},[2848,7836,3006],{"class":2998},[2848,7838,4504],{"class":3021},[2848,7840,4507],{"class":3021},[2848,7842,3013],{"class":2998},[2848,7844,3016],{"class":3002},[2848,7846,3006],{"class":2998},[2848,7848,4520],{"class":3021},[2848,7850,3025],{"class":2998},[2848,7852,7853,7855],{"class":2850,"line":4409},[2848,7854,7711],{"class":2994},[2848,7856,3222],{"class":2998},[2848,7858,7859,7861,7863,7865],{"class":2850,"line":4414},[2848,7860,3877],{"class":3002},[2848,7862,3006],{"class":2998},[2848,7864,4200],{"class":3009},[2848,7866,3234],{"class":2998},[2848,7868,7869,7871,7873,7875,7878],{"class":2850,"line":4419},[2848,7870,3912],{"class":3002},[2848,7872,3006],{"class":2998},[2848,7874,4609],{"class":3021},[2848,7876,7877],{"class":3021}," 1.25rem",[2848,7879,3234],{"class":2998},[2848,7881,7882,7884,7886,7888],{"class":2850,"line":4425},[2848,7883,5289],{"class":3002},[2848,7885,3006],{"class":2998},[2848,7887,3010],{"class":3009},[2848,7889,3234],{"class":2998},[2848,7891,7892,7894,7896,7898],{"class":2850,"line":4438},[2848,7893,3239],{"class":3002},[2848,7895,3006],{"class":2998},[2848,7897,4659],{"class":3021},[2848,7899,3234],{"class":2998},[2848,7901,7902,7904,7906,7908],{"class":2850,"line":4450},[2848,7903,4680],{"class":3002},[2848,7905,3006],{"class":2998},[2848,7907,4295],{"class":3021},[2848,7909,3234],{"class":2998},[2848,7911,7912,7914,7916,7918],{"class":2850,"line":4461},[2848,7913,4667],{"class":3002},[2848,7915,3006],{"class":2998},[2848,7917,5426],{"class":3021},[2848,7919,3234],{"class":2998},[2848,7921,7922],{"class":2850,"line":4474},[2848,7923,3478],{"class":2998},[2970,7925,7927],{"id":7926},"layer-для-інтеграції-сторонніх-бібліотек","@layer для інтеграції сторонніх бібліотек",[2799,7929,7930,7931,7934],{},"Найпрактичніший сценарій — ізолювати стилі бібліотеки у шарі з ",[2806,7932,7933],{},"найнижчим"," пріоритетом:",[2840,7936,7938],{"className":2979,"code":7937,"language":2981,"meta":2844,"style":2844},"/* Ваші власні шари — оголошені першими */\n@layer reset, third-party, base, components, utilities;\n\n/* Стилі бібліотеки — потрапляють у шар з низьким пріоритетом */\n@import url('./normalize.css') layer(reset);\n@import url('./bootstrap.css') layer(third-party);\n\n/* Ваші компоненти ЗАВЖДИ перевизначать бібліотеку */\n@layer components {\n  .button {\n    /* Ці стилі матимуть вищий пріоритет за Bootstrap .button,\n       навіть без !important та без підвищення специфічності */\n    background: var(--brand);\n  }\n}\n",[2815,7939,7940,7945,7952,7956,7961,7977,7991,7995,8000,8006,8012,8017,8022,8037,8041],{"__ignoreMap":2844},[2848,7941,7942],{"class":2850,"line":2851},[2848,7943,7944],{"class":2988},"/* Ваші власні шари — оголошені першими */\n",[2848,7946,7947,7949],{"class":2850,"line":2857},[2848,7948,2817],{"class":5006},[2848,7950,7951],{"class":2998}," reset, third-party, base, components, utilities;\n",[2848,7953,7954],{"class":2850,"line":2863},[2848,7955,3251],{"emptyLinePlaceholder":3250},[2848,7957,7958],{"class":2850,"line":2869},[2848,7959,7960],{"class":2988},"/* Стилі бібліотеки — потрапляють у шар з низьким пріоритетом */\n",[2848,7962,7963,7966,7969,7971,7974],{"class":2850,"line":2875},[2848,7964,7965],{"class":5006},"@import",[2848,7967,7968],{"class":3049}," url",[2848,7970,3053],{"class":2998},[2848,7972,7973],{"class":3451},"'./normalize.css'",[2848,7975,7976],{"class":2998},") layer(reset);\n",[2848,7978,7979,7981,7983,7985,7988],{"class":2850,"line":2881},[2848,7980,7965],{"class":5006},[2848,7982,7968],{"class":3049},[2848,7984,3053],{"class":2998},[2848,7986,7987],{"class":3451},"'./bootstrap.css'",[2848,7989,7990],{"class":2998},") layer(third-party);\n",[2848,7992,7993],{"class":2850,"line":2887},[2848,7994,3251],{"emptyLinePlaceholder":3250},[2848,7996,7997],{"class":2850,"line":2893},[2848,7998,7999],{"class":2988},"/* Ваші компоненти ЗАВЖДИ перевизначать бібліотеку */\n",[2848,8001,8002,8004],{"class":2850,"line":2899},[2848,8003,2817],{"class":5006},[2848,8005,6618],{"class":2998},[2848,8007,8008,8010],{"class":2850,"line":2905},[2848,8009,6628],{"class":2994},[2848,8011,3222],{"class":2998},[2848,8013,8014],{"class":2850,"line":2911},[2848,8015,8016],{"class":2988},"    /* Ці стилі матимуть вищий пріоритет за Bootstrap .button,\n",[2848,8018,8019],{"class":2850,"line":2917},[2848,8020,8021],{"class":2988},"       навіть без !important та без підвищення специфічності */\n",[2848,8023,8024,8026,8028,8030,8032,8035],{"class":2850,"line":2923},[2848,8025,4241],{"class":3002},[2848,8027,3006],{"class":2998},[2848,8029,6141],{"class":3049},[2848,8031,3053],{"class":2998},[2848,8033,8034],{"class":3002},"--brand",[2848,8036,3294],{"class":2998},[2848,8038,8039],{"class":2850,"line":2928},[2848,8040,3299],{"class":2998},[2848,8042,8043],{"class":2850,"line":2934},[2848,8044,3478],{"class":2998},[8046,8047,8048,8049,8052,8053,8055,8056,8059],"note",{},"Стилі, записані ",[2806,8050,8051],{},"без"," ",[2815,8054,2817],{},", мають пріоритет ",[2806,8057,8058],{},"вище"," будь-якого шару незалежно від специфічності. Це дозволяє зберегти «аварійний вихід» для критичних перевизначень.",[2963,8061],{},[2794,8063,8065,8067],{"id":8064},"scope-обмеження-стилів",[2815,8066,2824],{}," — Обмеження стилів",[2970,8069,8071],{"id":8070},"проблема-стилі-що-витікають","Проблема: стилі, що «витікають»",[2799,8073,8074,8075,8078,8079,8081,8082,8084],{},"CSS-селектори глобальні за замовчуванням. ",[2815,8076,8077],{},".title"," у кухонному таймері може вплинути на ",[2815,8080,8077],{}," у модальному вікні, навіть якщо вони далеко у DOM. Це проблема, яку вирішують CSS Modules, Shadow DOM, BEM-конвенції. ",[2815,8083,2824],{}," — нативне вирішення.",[2799,8086,8087,8089],{},[2806,8088,3204],{}," Chrome 118+, Safari 17.4+, Firefox (у розробці)",[2840,8091,8093],{"className":2979,"code":8092,"language":2981,"meta":2844,"style":2844},"/* Стилі активні ЛИШЕ всередині .card */\n@scope (.card) {\n  /* Тут можна писати короткі селектори без боязні конфліктів */\n  .title {\n    font-size: 1.25rem;\n    color: #1e293b;\n  }\n\n  .body {\n    color: #64748b;\n  }\n\n  /* Виключення: стилі НЕ торкнуться .nested-card та його нащадків */\n  @scope (.card) to (.nested-card) {\n    .title { color: #6366f1; }\n  }\n}\n",[2815,8094,8095,8100,8107,8112,8119,8129,8139,8143,8147,8154,8164,8168,8172,8177,8185,8200,8204],{"__ignoreMap":2844},[2848,8096,8097],{"class":2850,"line":2851},[2848,8098,8099],{"class":2988},"/* Стилі активні ЛИШЕ всередині .card */\n",[2848,8101,8102,8104],{"class":2850,"line":2857},[2848,8103,2824],{"class":5006},[2848,8105,8106],{"class":2998}," (.card) {\n",[2848,8108,8109],{"class":2850,"line":2863},[2848,8110,8111],{"class":2988},"  /* Тут можна писати короткі селектори без боязні конфліктів */\n",[2848,8113,8114,8117],{"class":2850,"line":2869},[2848,8115,8116],{"class":2994},"  .title",[2848,8118,3222],{"class":2998},[2848,8120,8121,8123,8125,8127],{"class":2850,"line":2875},[2848,8122,3362],{"class":3002},[2848,8124,3006],{"class":2998},[2848,8126,3104],{"class":3021},[2848,8128,3234],{"class":2998},[2848,8130,8131,8133,8135,8137],{"class":2850,"line":2881},[2848,8132,3373],{"class":3002},[2848,8134,3006],{"class":2998},[2848,8136,3114],{"class":3009},[2848,8138,3234],{"class":2998},[2848,8140,8141],{"class":2850,"line":2887},[2848,8142,3299],{"class":2998},[2848,8144,8145],{"class":2850,"line":2893},[2848,8146,3251],{"emptyLinePlaceholder":3250},[2848,8148,8149,8152],{"class":2850,"line":2899},[2848,8150,8151],{"class":2994},"  .body",[2848,8153,3222],{"class":2998},[2848,8155,8156,8158,8160,8162],{"class":2850,"line":2905},[2848,8157,3373],{"class":3002},[2848,8159,3006],{"class":2998},[2848,8161,3155],{"class":3009},[2848,8163,3234],{"class":2998},[2848,8165,8166],{"class":2850,"line":2911},[2848,8167,3299],{"class":2998},[2848,8169,8170],{"class":2850,"line":2917},[2848,8171,3251],{"emptyLinePlaceholder":3250},[2848,8173,8174],{"class":2850,"line":2923},[2848,8175,8176],{"class":2988},"  /* Виключення: стилі НЕ торкнуться .nested-card та його нащадків */\n",[2848,8178,8179,8182],{"class":2850,"line":2928},[2848,8180,8181],{"class":5006},"  @scope",[2848,8183,8184],{"class":2998}," (.card) to (.nested-card) {\n",[2848,8186,8187,8190,8192,8194,8196,8198],{"class":2850,"line":2934},[2848,8188,8189],{"class":2994},"    .title",[2848,8191,2999],{"class":2998},[2848,8193,3109],{"class":3002},[2848,8195,3006],{"class":2998},[2848,8197,3087],{"class":3009},[2848,8199,3025],{"class":2998},[2848,8201,8202],{"class":2850,"line":2940},[2848,8203,3299],{"class":2998},[2848,8205,8206],{"class":2850,"line":2946},[2848,8207,3478],{"class":2998},[3491,8209,8210,8542],{},[2840,8211,8213],{"className":3495,"code":8212,"language":3497,"meta":2844,"style":2844},"\u003Cdiv class=\"scope-demo\">\n  \u003Cp class=\"scope-note\">@scope (.product-card) — стилі .title та .price діють лише всередині\u003C/p>\n  \u003Cdiv class=\"scope-layout\">\n    \u003Cdiv class=\"product-card\">\n      \u003Cdiv class=\"title\">AirPods Pro\u003C/div>\n      \u003Cdiv class=\"price\">$249\u003C/div>\n      \u003Cdiv class=\"desc\">Активне шумозаглушення\u003C/div>\n    \u003C/div>\n    \u003Cdiv class=\"article-card\">\n      \u003Cdiv class=\"title\">Стаття: CSS у 2024\u003C/div>\n      \u003Cdiv class=\"price\">Безкоштовно\u003C/div>\n      \u003Cdiv class=\"desc\">Нові можливості мови\u003C/div>\n    \u003C/div>\n  \u003C/div>\n  \u003Cp class=\"scope-note\" style=\"margin-top: 0.5rem\">\n    Обидва компоненти мають \u003Ccode>.title\u003C/code> та \u003Ccode>.price\u003C/code> — стилі не конфліктують завдяки @scope\n  \u003C/p>\n\u003C/div>\n",[2815,8214,8215,8230,8254,8269,8284,8308,8332,8356,8364,8379,8402,8425,8448,8456,8464,8486,8526,8534],{"__ignoreMap":2844},[2848,8216,8217,8219,8221,8223,8225,8228],{"class":2850,"line":2851},[2848,8218,3505],{"class":3504},[2848,8220,3509],{"class":3508},[2848,8222,3512],{"class":3002},[2848,8224,3515],{"class":2998},[2848,8226,8227],{"class":3518},"\"scope-demo\"",[2848,8229,3522],{"class":3504},[2848,8231,8232,8234,8236,8238,8240,8243,8245,8248,8250,8252],{"class":2850,"line":2857},[2848,8233,3527],{"class":3504},[2848,8235,2799],{"class":3508},[2848,8237,3512],{"class":3002},[2848,8239,3515],{"class":2998},[2848,8241,8242],{"class":3518},"\"scope-note\"",[2848,8244,3555],{"class":3504},[2848,8246,8247],{"class":2998},"@scope (.product-card) — стилі .title та .price діють лише всередині",[2848,8249,3561],{"class":3504},[2848,8251,2799],{"class":3508},[2848,8253,3522],{"class":3504},[2848,8255,8256,8258,8260,8262,8264,8267],{"class":2850,"line":2863},[2848,8257,3527],{"class":3504},[2848,8259,3509],{"class":3508},[2848,8261,3512],{"class":3002},[2848,8263,3515],{"class":2998},[2848,8265,8266],{"class":3518},"\"scope-layout\"",[2848,8268,3522],{"class":3504},[2848,8270,8271,8273,8275,8277,8279,8282],{"class":2850,"line":2869},[2848,8272,3543],{"class":3504},[2848,8274,3509],{"class":3508},[2848,8276,3512],{"class":3002},[2848,8278,3515],{"class":2998},[2848,8280,8281],{"class":3518},"\"product-card\"",[2848,8283,3522],{"class":3504},[2848,8285,8286,8288,8290,8292,8294,8297,8299,8302,8304,8306],{"class":2850,"line":2875},[2848,8287,3633],{"class":3504},[2848,8289,3509],{"class":3508},[2848,8291,3512],{"class":3002},[2848,8293,3515],{"class":2998},[2848,8295,8296],{"class":3518},"\"title\"",[2848,8298,3555],{"class":3504},[2848,8300,8301],{"class":2998},"AirPods Pro",[2848,8303,3561],{"class":3504},[2848,8305,3509],{"class":3508},[2848,8307,3522],{"class":3504},[2848,8309,8310,8312,8314,8316,8318,8321,8323,8326,8328,8330],{"class":2850,"line":2881},[2848,8311,3633],{"class":3504},[2848,8313,3509],{"class":3508},[2848,8315,3512],{"class":3002},[2848,8317,3515],{"class":2998},[2848,8319,8320],{"class":3518},"\"price\"",[2848,8322,3555],{"class":3504},[2848,8324,8325],{"class":2998},"$249",[2848,8327,3561],{"class":3504},[2848,8329,3509],{"class":3508},[2848,8331,3522],{"class":3504},[2848,8333,8334,8336,8338,8340,8342,8345,8347,8350,8352,8354],{"class":2850,"line":2887},[2848,8335,3633],{"class":3504},[2848,8337,3509],{"class":3508},[2848,8339,3512],{"class":3002},[2848,8341,3515],{"class":2998},[2848,8343,8344],{"class":3518},"\"desc\"",[2848,8346,3555],{"class":3504},[2848,8348,8349],{"class":2998},"Активне шумозаглушення",[2848,8351,3561],{"class":3504},[2848,8353,3509],{"class":3508},[2848,8355,3522],{"class":3504},[2848,8357,8358,8360,8362],{"class":2850,"line":2893},[2848,8359,3683],{"class":3504},[2848,8361,3509],{"class":3508},[2848,8363,3522],{"class":3504},[2848,8365,8366,8368,8370,8372,8374,8377],{"class":2850,"line":2899},[2848,8367,3543],{"class":3504},[2848,8369,3509],{"class":3508},[2848,8371,3512],{"class":3002},[2848,8373,3515],{"class":2998},[2848,8375,8376],{"class":3518},"\"article-card\"",[2848,8378,3522],{"class":3504},[2848,8380,8381,8383,8385,8387,8389,8391,8393,8396,8398,8400],{"class":2850,"line":2905},[2848,8382,3633],{"class":3504},[2848,8384,3509],{"class":3508},[2848,8386,3512],{"class":3002},[2848,8388,3515],{"class":2998},[2848,8390,8296],{"class":3518},[2848,8392,3555],{"class":3504},[2848,8394,8395],{"class":2998},"Стаття: CSS у 2024",[2848,8397,3561],{"class":3504},[2848,8399,3509],{"class":3508},[2848,8401,3522],{"class":3504},[2848,8403,8404,8406,8408,8410,8412,8414,8416,8419,8421,8423],{"class":2850,"line":2911},[2848,8405,3633],{"class":3504},[2848,8407,3509],{"class":3508},[2848,8409,3512],{"class":3002},[2848,8411,3515],{"class":2998},[2848,8413,8320],{"class":3518},[2848,8415,3555],{"class":3504},[2848,8417,8418],{"class":2998},"Безкоштовно",[2848,8420,3561],{"class":3504},[2848,8422,3509],{"class":3508},[2848,8424,3522],{"class":3504},[2848,8426,8427,8429,8431,8433,8435,8437,8439,8442,8444,8446],{"class":2850,"line":2917},[2848,8428,3633],{"class":3504},[2848,8430,3509],{"class":3508},[2848,8432,3512],{"class":3002},[2848,8434,3515],{"class":2998},[2848,8436,8344],{"class":3518},[2848,8438,3555],{"class":3504},[2848,8440,8441],{"class":2998},"Нові можливості мови",[2848,8443,3561],{"class":3504},[2848,8445,3509],{"class":3508},[2848,8447,3522],{"class":3504},[2848,8449,8450,8452,8454],{"class":2850,"line":2923},[2848,8451,3683],{"class":3504},[2848,8453,3509],{"class":3508},[2848,8455,3522],{"class":3504},[2848,8457,8458,8460,8462],{"class":2850,"line":2928},[2848,8459,3692],{"class":3504},[2848,8461,3509],{"class":3508},[2848,8463,3522],{"class":3504},[2848,8465,8466,8468,8470,8472,8474,8476,8479,8481,8484],{"class":2850,"line":2934},[2848,8467,3527],{"class":3504},[2848,8469,2799],{"class":3508},[2848,8471,3512],{"class":3002},[2848,8473,3515],{"class":2998},[2848,8475,8242],{"class":3518},[2848,8477,8478],{"class":3002}," style",[2848,8480,3515],{"class":2998},[2848,8482,8483],{"class":3518},"\"margin-top: 0.5rem\"",[2848,8485,3522],{"class":3504},[2848,8487,8488,8491,8493,8495,8497,8499,8501,8503,8505,8508,8510,8512,8514,8517,8519,8521,8523],{"class":2850,"line":2940},[2848,8489,8490],{"class":2998},"    Обидва компоненти мають ",[2848,8492,3505],{"class":3504},[2848,8494,2815],{"class":3508},[2848,8496,3555],{"class":3504},[2848,8498,8077],{"class":2998},[2848,8500,3561],{"class":3504},[2848,8502,2815],{"class":3508},[2848,8504,3555],{"class":3504},[2848,8506,8507],{"class":2998}," та ",[2848,8509,3505],{"class":3504},[2848,8511,2815],{"class":3508},[2848,8513,3555],{"class":3504},[2848,8515,8516],{"class":2998},".price",[2848,8518,3561],{"class":3504},[2848,8520,2815],{"class":3508},[2848,8522,3555],{"class":3504},[2848,8524,8525],{"class":2998}," — стилі не конфліктують завдяки @scope\n",[2848,8527,8528,8530,8532],{"class":2850,"line":2946},[2848,8529,3692],{"class":3504},[2848,8531,2799],{"class":3508},[2848,8533,3522],{"class":3504},[2848,8535,8536,8538,8540],{"class":2850,"line":2952},[2848,8537,3561],{"class":3504},[2848,8539,3509],{"class":3508},[2848,8541,3522],{"class":3504},[2840,8543,8545],{"className":2979,"code":8544,"language":2981,"meta":2844,"style":2844},".scope-demo {\n  padding: 1rem;\n  background: #f8fafc;\n  font-family: system-ui, sans-serif;\n  font-size: 0.85rem;\n  color: #1e293b;\n}\n.scope-note { margin: 0 0 0.5rem; color: #64748b; font-size: 0.78rem; }\n.scope-note code { background: #f1f5f9; padding: 0.1em 0.3em; border-radius: 3px; }\n.scope-layout { display: flex; gap: 0.75rem; flex-wrap: wrap; }\n\n/* Стилі картки продукту — ізольовані через @scope */\n@scope (.product-card) {\n  :scope {\n    background: white;\n    border-radius: 10px;\n    border: 1.5px solid #e2e8f0;\n    padding: 1rem;\n    flex: 1;\n    min-width: 140px;\n    display: flex;\n    flex-direction: column;\n    gap: 0.25rem;\n  }\n  .title {\n    font-size: 1rem;\n    font-weight: 700;\n    color: #1e293b;\n  }\n  .price {\n    font-size: 1.2rem;\n    font-weight: 800;\n    color: #6366f1;\n  }\n  .desc {\n    font-size: 0.78rem;\n    color: #64748b;\n  }\n}\n\n/* Стилі статті — інші, не конфліктують */\n@scope (.article-card) {\n  :scope {\n    background: #fef3c7;\n    border-radius: 10px;\n    border: 1.5px solid #fcd34d;\n    padding: 1rem;\n    flex: 1;\n    min-width: 140px;\n    display: flex;\n    flex-direction: column;\n    gap: 0.25rem;\n  }\n  .title {\n    font-size: 0.95rem;\n    font-weight: 700;\n    color: #92400e;\n  }\n  .price {\n    font-size: 0.85rem;\n    font-weight: 700;\n    color: #d97706;\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n  }\n  .desc {\n    font-size: 0.78rem;\n    color: #b45309;\n  }\n}\n",[2815,8546,8547,8554,8564,8574,8588,8598,8608,8612,8647,8681,8712,8716,8721,8728,8735,8745,8755,8769,8779,8790,8802,8812,8823,8834,8838,8844,8854,8864,8874,8878,8885,8895,8905,8915,8919,8926,8936,8946,8950,8954,8958,8963,8970,8976,8987,8997,9012,9022,9032,9042,9052,9062,9072,9076,9082,9093,9103,9114,9118,9124,9134,9144,9155,9167,9179,9183,9189,9199,9210,9214],{"__ignoreMap":2844},[2848,8548,8549,8552],{"class":2850,"line":2851},[2848,8550,8551],{"class":2994},".scope-demo",[2848,8553,3222],{"class":2998},[2848,8555,8556,8558,8560,8562],{"class":2850,"line":2857},[2848,8557,3912],{"class":3002},[2848,8559,3006],{"class":2998},[2848,8561,3146],{"class":3021},[2848,8563,3234],{"class":2998},[2848,8565,8566,8568,8570,8572],{"class":2850,"line":2863},[2848,8567,3227],{"class":3002},[2848,8569,3006],{"class":2998},[2848,8571,4883],{"class":3009},[2848,8573,3234],{"class":2998},[2848,8575,8576,8578,8580,8582,8584,8586],{"class":2850,"line":2869},[2848,8577,3934],{"class":3002},[2848,8579,3006],{"class":2998},[2848,8581,3939],{"class":3009},[2848,8583,3281],{"class":2998},[2848,8585,3944],{"class":3009},[2848,8587,3234],{"class":2998},[2848,8589,8590,8592,8594,8596],{"class":2850,"line":2875},[2848,8591,4667],{"class":3002},[2848,8593,3006],{"class":2998},[2848,8595,5426],{"class":3021},[2848,8597,3234],{"class":2998},[2848,8599,8600,8602,8604,8606],{"class":2850,"line":2881},[2848,8601,5289],{"class":3002},[2848,8603,3006],{"class":2998},[2848,8605,3114],{"class":3009},[2848,8607,3234],{"class":2998},[2848,8609,8610],{"class":2850,"line":2887},[2848,8611,3478],{"class":2998},[2848,8613,8614,8617,8619,8621,8623,8625,8627,8629,8631,8633,8635,8637,8639,8641,8643,8645],{"class":2850,"line":2893},[2848,8615,8616],{"class":2994},".scope-note",[2848,8618,2999],{"class":2998},[2848,8620,5484],{"class":3002},[2848,8622,3006],{"class":2998},[2848,8624,3040],{"class":3021},[2848,8626,4217],{"class":3021},[2848,8628,5493],{"class":3021},[2848,8630,3013],{"class":2998},[2848,8632,3109],{"class":3002},[2848,8634,3006],{"class":2998},[2848,8636,3155],{"class":3009},[2848,8638,3013],{"class":2998},[2848,8640,3099],{"class":3002},[2848,8642,3006],{"class":2998},[2848,8644,7467],{"class":3021},[2848,8646,3025],{"class":2998},[2848,8648,8649,8651,8653,8655,8657,8659,8661,8663,8665,8667,8669,8671,8673,8675,8677,8679],{"class":2850,"line":2899},[2848,8650,8616],{"class":2994},[2848,8652,7822],{"class":2994},[2848,8654,2999],{"class":2998},[2848,8656,3003],{"class":3002},[2848,8658,3006],{"class":2998},[2848,8660,3927],{"class":3009},[2848,8662,3013],{"class":2998},[2848,8664,3141],{"class":3002},[2848,8666,3006],{"class":2998},[2848,8668,4504],{"class":3021},[2848,8670,4507],{"class":3021},[2848,8672,3013],{"class":2998},[2848,8674,3016],{"class":3002},[2848,8676,3006],{"class":2998},[2848,8678,4520],{"class":3021},[2848,8680,3025],{"class":2998},[2848,8682,8683,8686,8688,8690,8692,8694,8696,8698,8700,8702,8704,8706,8708,8710],{"class":2850,"line":2905},[2848,8684,8685],{"class":2994},".scope-layout",[2848,8687,2999],{"class":2998},[2848,8689,6728],{"class":3002},[2848,8691,3006],{"class":2998},[2848,8693,3882],{"class":3009},[2848,8695,3013],{"class":2998},[2848,8697,7395],{"class":3002},[2848,8699,3006],{"class":2998},[2848,8701,3187],{"class":3021},[2848,8703,3013],{"class":2998},[2848,8705,7404],{"class":3002},[2848,8707,3006],{"class":2998},[2848,8709,3905],{"class":3009},[2848,8711,3025],{"class":2998},[2848,8713,8714],{"class":2850,"line":2911},[2848,8715,3251],{"emptyLinePlaceholder":3250},[2848,8717,8718],{"class":2850,"line":2917},[2848,8719,8720],{"class":2988},"/* Стилі картки продукту — ізольовані через @scope */\n",[2848,8722,8723,8725],{"class":2850,"line":2923},[2848,8724,2824],{"class":5006},[2848,8726,8727],{"class":2998}," (.product-card) {\n",[2848,8729,8730,8733],{"class":2850,"line":2928},[2848,8731,8732],{"class":2994},"  :scope",[2848,8734,3222],{"class":2998},[2848,8736,8737,8739,8741,8743],{"class":2850,"line":2934},[2848,8738,4241],{"class":3002},[2848,8740,3006],{"class":2998},[2848,8742,3010],{"class":3009},[2848,8744,3234],{"class":2998},[2848,8746,8747,8749,8751,8753],{"class":2850,"line":2940},[2848,8748,4265],{"class":3002},[2848,8750,3006],{"class":2998},[2848,8752,4004],{"class":3021},[2848,8754,3234],{"class":2998},[2848,8756,8757,8759,8761,8763,8765,8767],{"class":2850,"line":2946},[2848,8758,3323],{"class":3002},[2848,8760,3006],{"class":2998},[2848,8762,4016],{"class":3021},[2848,8764,3175],{"class":3009},[2848,8766,3178],{"class":3009},[2848,8768,3234],{"class":2998},[2848,8770,8771,8773,8775,8777],{"class":2850,"line":2952},[2848,8772,4225],{"class":3002},[2848,8774,3006],{"class":2998},[2848,8776,3146],{"class":3021},[2848,8778,3234],{"class":2998},[2848,8780,8781,8784,8786,8788],{"class":2850,"line":2958},[2848,8782,8783],{"class":3002},"    flex",[2848,8785,3006],{"class":2998},[2848,8787,3971],{"class":3021},[2848,8789,3234],{"class":2998},[2848,8791,8792,8795,8797,8800],{"class":2850,"line":3382},[2848,8793,8794],{"class":3002},"    min-width",[2848,8796,3006],{"class":2998},[2848,8798,8799],{"class":3021},"140px",[2848,8801,3234],{"class":2998},[2848,8803,8804,8806,8808,8810],{"class":2850,"line":3387},[2848,8805,3460],{"class":3002},[2848,8807,3006],{"class":2998},[2848,8809,3882],{"class":3009},[2848,8811,3234],{"class":2998},[2848,8813,8814,8817,8819,8821],{"class":2850,"line":3393},[2848,8815,8816],{"class":3002},"    flex-direction",[2848,8818,3006],{"class":2998},[2848,8820,5315],{"class":3009},[2848,8822,3234],{"class":2998},[2848,8824,8825,8827,8829,8832],{"class":2850,"line":3399},[2848,8826,4604],{"class":3002},[2848,8828,3006],{"class":2998},[2848,8830,8831],{"class":3021},"0.25rem",[2848,8833,3234],{"class":2998},[2848,8835,8836],{"class":2850,"line":3411},[2848,8837,3299],{"class":2998},[2848,8839,8840,8842],{"class":2850,"line":3417},[2848,8841,8116],{"class":2994},[2848,8843,3222],{"class":2998},[2848,8845,8846,8848,8850,8852],{"class":2850,"line":3422},[2848,8847,3362],{"class":3002},[2848,8849,3006],{"class":2998},[2848,8851,3146],{"class":3021},[2848,8853,3234],{"class":2998},[2848,8855,8856,8858,8860,8862],{"class":2850,"line":3427},[2848,8857,4290],{"class":3002},[2848,8859,3006],{"class":2998},[2848,8861,4295],{"class":3021},[2848,8863,3234],{"class":2998},[2848,8865,8866,8868,8870,8872],{"class":2850,"line":3433},[2848,8867,3373],{"class":3002},[2848,8869,3006],{"class":2998},[2848,8871,3114],{"class":3009},[2848,8873,3234],{"class":2998},[2848,8875,8876],{"class":2850,"line":3443},[2848,8877,3299],{"class":2998},[2848,8879,8880,8883],{"class":2850,"line":3457},[2848,8881,8882],{"class":2994},"  .price",[2848,8884,3222],{"class":2998},[2848,8886,8887,8889,8891,8893],{"class":2850,"line":3470},[2848,8888,3362],{"class":3002},[2848,8890,3006],{"class":2998},[2848,8892,5774],{"class":3021},[2848,8894,3234],{"class":2998},[2848,8896,8897,8899,8901,8903],{"class":2850,"line":3475},[2848,8898,4290],{"class":3002},[2848,8900,3006],{"class":2998},[2848,8902,5763],{"class":3021},[2848,8904,3234],{"class":2998},[2848,8906,8907,8909,8911,8913],{"class":2850,"line":4222},[2848,8908,3373],{"class":3002},[2848,8910,3006],{"class":2998},[2848,8912,3087],{"class":3009},[2848,8914,3234],{"class":2998},[2848,8916,8917],{"class":2850,"line":4238},[2848,8918,3299],{"class":2998},[2848,8920,8921,8924],{"class":2850,"line":4251},[2848,8922,8923],{"class":2994},"  .desc",[2848,8925,3222],{"class":2998},[2848,8927,8928,8930,8932,8934],{"class":2850,"line":4262},[2848,8929,3362],{"class":3002},[2848,8931,3006],{"class":2998},[2848,8933,7467],{"class":3021},[2848,8935,3234],{"class":2998},[2848,8937,8938,8940,8942,8944],{"class":2850,"line":4275},[2848,8939,3373],{"class":3002},[2848,8941,3006],{"class":2998},[2848,8943,3155],{"class":3009},[2848,8945,3234],{"class":2998},[2848,8947,8948],{"class":2850,"line":4287},[2848,8949,3299],{"class":2998},[2848,8951,8952],{"class":2850,"line":4300},[2848,8953,3478],{"class":2998},[2848,8955,8956],{"class":2850,"line":4305},[2848,8957,3251],{"emptyLinePlaceholder":3250},[2848,8959,8960],{"class":2850,"line":4316},[2848,8961,8962],{"class":2988},"/* Стилі статті — інші, не конфліктують */\n",[2848,8964,8965,8967],{"class":2850,"line":4328},[2848,8966,2824],{"class":5006},[2848,8968,8969],{"class":2998}," (.article-card) {\n",[2848,8971,8972,8974],{"class":2850,"line":4339},[2848,8973,8732],{"class":2994},[2848,8975,3222],{"class":2998},[2848,8977,8978,8980,8982,8985],{"class":2850,"line":4344},[2848,8979,4241],{"class":3002},[2848,8981,3006],{"class":2998},[2848,8983,8984],{"class":3009},"#fef3c7",[2848,8986,3234],{"class":2998},[2848,8988,8989,8991,8993,8995],{"class":2850,"line":4349},[2848,8990,4265],{"class":3002},[2848,8992,3006],{"class":2998},[2848,8994,4004],{"class":3021},[2848,8996,3234],{"class":2998},[2848,8998,8999,9001,9003,9005,9007,9010],{"class":2850,"line":4354},[2848,9000,3323],{"class":3002},[2848,9002,3006],{"class":2998},[2848,9004,4016],{"class":3021},[2848,9006,3175],{"class":3009},[2848,9008,9009],{"class":3009}," #fcd34d",[2848,9011,3234],{"class":2998},[2848,9013,9014,9016,9018,9020],{"class":2850,"line":4360},[2848,9015,4225],{"class":3002},[2848,9017,3006],{"class":2998},[2848,9019,3146],{"class":3021},[2848,9021,3234],{"class":2998},[2848,9023,9024,9026,9028,9030],{"class":2850,"line":4376},[2848,9025,8783],{"class":3002},[2848,9027,3006],{"class":2998},[2848,9029,3971],{"class":3021},[2848,9031,3234],{"class":2998},[2848,9033,9034,9036,9038,9040],{"class":2850,"line":4387},[2848,9035,8794],{"class":3002},[2848,9037,3006],{"class":2998},[2848,9039,8799],{"class":3021},[2848,9041,3234],{"class":2998},[2848,9043,9044,9046,9048,9050],{"class":2850,"line":4398},[2848,9045,3460],{"class":3002},[2848,9047,3006],{"class":2998},[2848,9049,3882],{"class":3009},[2848,9051,3234],{"class":2998},[2848,9053,9054,9056,9058,9060],{"class":2850,"line":4409},[2848,9055,8816],{"class":3002},[2848,9057,3006],{"class":2998},[2848,9059,5315],{"class":3009},[2848,9061,3234],{"class":2998},[2848,9063,9064,9066,9068,9070],{"class":2850,"line":4414},[2848,9065,4604],{"class":3002},[2848,9067,3006],{"class":2998},[2848,9069,8831],{"class":3021},[2848,9071,3234],{"class":2998},[2848,9073,9074],{"class":2850,"line":4419},[2848,9075,3299],{"class":2998},[2848,9077,9078,9080],{"class":2850,"line":4425},[2848,9079,8116],{"class":2994},[2848,9081,3222],{"class":2998},[2848,9083,9084,9086,9088,9091],{"class":2850,"line":4438},[2848,9085,3362],{"class":3002},[2848,9087,3006],{"class":2998},[2848,9089,9090],{"class":3021},"0.95rem",[2848,9092,3234],{"class":2998},[2848,9094,9095,9097,9099,9101],{"class":2850,"line":4450},[2848,9096,4290],{"class":3002},[2848,9098,3006],{"class":2998},[2848,9100,4295],{"class":3021},[2848,9102,3234],{"class":2998},[2848,9104,9105,9107,9109,9112],{"class":2850,"line":4461},[2848,9106,3373],{"class":3002},[2848,9108,3006],{"class":2998},[2848,9110,9111],{"class":3009},"#92400e",[2848,9113,3234],{"class":2998},[2848,9115,9116],{"class":2850,"line":4474},[2848,9117,3299],{"class":2998},[2848,9119,9120,9122],{"class":2850,"line":4479},[2848,9121,8882],{"class":2994},[2848,9123,3222],{"class":2998},[2848,9125,9126,9128,9130,9132],{"class":2850,"line":4485},[2848,9127,3362],{"class":3002},[2848,9129,3006],{"class":2998},[2848,9131,5426],{"class":3021},[2848,9133,3234],{"class":2998},[2848,9135,9136,9138,9140,9142],{"class":2850,"line":4496},[2848,9137,4290],{"class":3002},[2848,9139,3006],{"class":2998},[2848,9141,4295],{"class":3021},[2848,9143,3234],{"class":2998},[2848,9145,9146,9148,9150,9153],{"class":2850,"line":4512},[2848,9147,3373],{"class":3002},[2848,9149,3006],{"class":2998},[2848,9151,9152],{"class":3009},"#d97706",[2848,9154,3234],{"class":2998},[2848,9156,9157,9160,9162,9165],{"class":2850,"line":4525},[2848,9158,9159],{"class":3002},"    text-transform",[2848,9161,3006],{"class":2998},[2848,9163,9164],{"class":3009},"uppercase",[2848,9166,3234],{"class":2998},[2848,9168,9169,9172,9174,9177],{"class":2850,"line":4538},[2848,9170,9171],{"class":3002},"    letter-spacing",[2848,9173,3006],{"class":2998},[2848,9175,9176],{"class":3021},"0.05em",[2848,9178,3234],{"class":2998},[2848,9180,9181],{"class":2850,"line":4543},[2848,9182,3299],{"class":2998},[2848,9184,9185,9187],{"class":2850,"line":4548},[2848,9186,8923],{"class":2994},[2848,9188,3222],{"class":2998},[2848,9190,9191,9193,9195,9197],{"class":2850,"line":4553},[2848,9192,3362],{"class":3002},[2848,9194,3006],{"class":2998},[2848,9196,7467],{"class":3021},[2848,9198,3234],{"class":2998},[2848,9200,9201,9203,9205,9208],{"class":2850,"line":4559},[2848,9202,3373],{"class":3002},[2848,9204,3006],{"class":2998},[2848,9206,9207],{"class":3009},"#b45309",[2848,9209,3234],{"class":2998},[2848,9211,9212],{"class":2850,"line":4573},[2848,9213,3299],{"class":2998},[2848,9215,9216],{"class":2850,"line":4590},[2848,9217,3478],{"class":2998},[2963,9219],{},[2794,9221,9223,9225],{"id":9222},"property-типізовані-custom-properties",[2815,9224,2831],{}," — Типізовані Custom Properties",[2970,9227,9229],{"id":9228},"чому-звичайні-css-змінні-не-можна-анімувати","Чому звичайні CSS змінні не можна анімувати",[2799,9231,9232,9233,9236,9237,9240,9241,9244,9245,9248],{},"CSS Custom Properties (",[2815,9234,9235],{},"--color: #6366f1",") — потужний інструмент, але вони мають обмеження: браузер не знає їх ",[2806,9238,9239],{},"типу",". Для нього ",[2815,9242,9243],{},"--color"," — просто рядок. Тому ",[2815,9246,9247],{},"transition: --color 0.3s"," не спрацює — браузер не знає, як інтерполювати «від рядка до рядка».",[2799,9250,9251,9253,9254,9257],{},[2815,9252,2831],{}," вирішує це, дозволяючи ",[2806,9255,9256],{},"зареєструвати"," кастомну властивість із типом, початковим значенням та поведінкою наслідування.",[2799,9259,9260,9262],{},[2806,9261,3204],{}," Chrome 85+, Safari 16.4+, Firefox 128+",[2840,9264,9266],{"className":2979,"code":9265,"language":2981,"meta":2844,"style":2844},"@property --hue {\n  syntax: '\u003Cnumber>';         /* тип: число */\n  inherits: false;            /* не наслідується від батька */\n  initial-value: 0;           /* початкове значення */\n}\n\n@property --brand-color {\n  syntax: '\u003Ccolor>';\n  inherits: true;\n  initial-value: #6366f1;\n}\n\n@property --progress {\n  syntax: '\u003Cpercentage>';\n  inherits: false;\n  initial-value: 0%;\n}\n",[2815,9267,9268,9275,9283,9291,9302,9306,9310,9317,9322,9327,9337,9341,9345,9352,9357,9362,9369],{"__ignoreMap":2844},[2848,9269,9270,9272],{"class":2850,"line":2851},[2848,9271,2831],{"class":5006},[2848,9273,9274],{"class":2998}," --hue {\n",[2848,9276,9277,9280],{"class":2850,"line":2857},[2848,9278,9279],{"class":2998},"  syntax: '\u003Cnumber>';         ",[2848,9281,9282],{"class":2988},"/* тип: число */\n",[2848,9284,9285,9288],{"class":2850,"line":2863},[2848,9286,9287],{"class":2998},"  inherits: false;            ",[2848,9289,9290],{"class":2988},"/* не наслідується від батька */\n",[2848,9292,9293,9296,9299],{"class":2850,"line":2869},[2848,9294,9295],{"class":3508},"  initial-value",[2848,9297,9298],{"class":2998},": 0;           ",[2848,9300,9301],{"class":2988},"/* початкове значення */\n",[2848,9303,9304],{"class":2850,"line":2875},[2848,9305,3478],{"class":2998},[2848,9307,9308],{"class":2850,"line":2881},[2848,9309,3251],{"emptyLinePlaceholder":3250},[2848,9311,9312,9314],{"class":2850,"line":2887},[2848,9313,2831],{"class":5006},[2848,9315,9316],{"class":2998}," --brand-color {\n",[2848,9318,9319],{"class":2850,"line":2893},[2848,9320,9321],{"class":2998},"  syntax: '\u003Ccolor>';\n",[2848,9323,9324],{"class":2850,"line":2899},[2848,9325,9326],{"class":2998},"  inherits: true;\n",[2848,9328,9329,9331,9333,9335],{"class":2850,"line":2905},[2848,9330,9295],{"class":3508},[2848,9332,3006],{"class":2998},[2848,9334,3087],{"class":4800},[2848,9336,3234],{"class":2998},[2848,9338,9339],{"class":2850,"line":2911},[2848,9340,3478],{"class":2998},[2848,9342,9343],{"class":2850,"line":2917},[2848,9344,3251],{"emptyLinePlaceholder":3250},[2848,9346,9347,9349],{"class":2850,"line":2923},[2848,9348,2831],{"class":5006},[2848,9350,9351],{"class":2998}," --progress {\n",[2848,9353,9354],{"class":2850,"line":2928},[2848,9355,9356],{"class":2998},"  syntax: '\u003Cpercentage>';\n",[2848,9358,9359],{"class":2850,"line":2934},[2848,9360,9361],{"class":2998},"  inherits: false;\n",[2848,9363,9364,9366],{"class":2850,"line":2940},[2848,9365,9295],{"class":3508},[2848,9367,9368],{"class":2998},": 0%;\n",[2848,9370,9371],{"class":2850,"line":2946},[2848,9372,3478],{"class":2998},[2970,9374,9376],{"id":9375},"анімація-custom-properties-через-property","Анімація Custom Properties через @property",[3491,9378,9379,9610],{},[2840,9380,9382],{"className":3495,"code":9381,"language":3497,"meta":2844,"style":2844},"\u003Cdiv class=\"property-demo\">\n  \u003Cp class=\"pd-label\">Анімовані CSS Custom Properties через @property:\u003C/p>\n\n  \u003Cdiv class=\"animated-gradient\">\n    \u003Cspan>Gradient анімація через --hue\u003C/span>\n  \u003C/div>\n\n  \u003Cdiv class=\"progress-ring-wrap\">\n    \u003Cdiv class=\"progress-ring\">\n      \u003Cspan>75%\u003C/span>\n    \u003C/div>\n    \u003Cp class=\"pd-hint\">Progress ring через --progress custom property\u003C/p>\n  \u003C/div>\n\n  \u003Cdiv class=\"color-morph\">\n    \u003Cspan>Колір переливається через --brand-color\u003C/span>\n  \u003C/div>\n\u003C/div>\n",[2815,9383,9384,9399,9423,9427,9442,9459,9467,9471,9486,9501,9518,9526,9550,9558,9562,9577,9594,9602],{"__ignoreMap":2844},[2848,9385,9386,9388,9390,9392,9394,9397],{"class":2850,"line":2851},[2848,9387,3505],{"class":3504},[2848,9389,3509],{"class":3508},[2848,9391,3512],{"class":3002},[2848,9393,3515],{"class":2998},[2848,9395,9396],{"class":3518},"\"property-demo\"",[2848,9398,3522],{"class":3504},[2848,9400,9401,9403,9405,9407,9409,9412,9414,9417,9419,9421],{"class":2850,"line":2857},[2848,9402,3527],{"class":3504},[2848,9404,2799],{"class":3508},[2848,9406,3512],{"class":3002},[2848,9408,3515],{"class":2998},[2848,9410,9411],{"class":3518},"\"pd-label\"",[2848,9413,3555],{"class":3504},[2848,9415,9416],{"class":2998},"Анімовані CSS Custom Properties через @property:",[2848,9418,3561],{"class":3504},[2848,9420,2799],{"class":3508},[2848,9422,3522],{"class":3504},[2848,9424,9425],{"class":2850,"line":2863},[2848,9426,3251],{"emptyLinePlaceholder":3250},[2848,9428,9429,9431,9433,9435,9437,9440],{"class":2850,"line":2869},[2848,9430,3527],{"class":3504},[2848,9432,3509],{"class":3508},[2848,9434,3512],{"class":3002},[2848,9436,3515],{"class":2998},[2848,9438,9439],{"class":3518},"\"animated-gradient\"",[2848,9441,3522],{"class":3504},[2848,9443,9444,9446,9448,9450,9453,9455,9457],{"class":2850,"line":2875},[2848,9445,3543],{"class":3504},[2848,9447,2848],{"class":3508},[2848,9449,3555],{"class":3504},[2848,9451,9452],{"class":2998},"Gradient анімація через --hue",[2848,9454,3561],{"class":3504},[2848,9456,2848],{"class":3508},[2848,9458,3522],{"class":3504},[2848,9460,9461,9463,9465],{"class":2850,"line":2881},[2848,9462,3692],{"class":3504},[2848,9464,3509],{"class":3508},[2848,9466,3522],{"class":3504},[2848,9468,9469],{"class":2850,"line":2887},[2848,9470,3251],{"emptyLinePlaceholder":3250},[2848,9472,9473,9475,9477,9479,9481,9484],{"class":2850,"line":2893},[2848,9474,3527],{"class":3504},[2848,9476,3509],{"class":3508},[2848,9478,3512],{"class":3002},[2848,9480,3515],{"class":2998},[2848,9482,9483],{"class":3518},"\"progress-ring-wrap\"",[2848,9485,3522],{"class":3504},[2848,9487,9488,9490,9492,9494,9496,9499],{"class":2850,"line":2899},[2848,9489,3543],{"class":3504},[2848,9491,3509],{"class":3508},[2848,9493,3512],{"class":3002},[2848,9495,3515],{"class":2998},[2848,9497,9498],{"class":3518},"\"progress-ring\"",[2848,9500,3522],{"class":3504},[2848,9502,9503,9505,9507,9509,9512,9514,9516],{"class":2850,"line":2905},[2848,9504,3633],{"class":3504},[2848,9506,2848],{"class":3508},[2848,9508,3555],{"class":3504},[2848,9510,9511],{"class":2998},"75%",[2848,9513,3561],{"class":3504},[2848,9515,2848],{"class":3508},[2848,9517,3522],{"class":3504},[2848,9519,9520,9522,9524],{"class":2850,"line":2911},[2848,9521,3683],{"class":3504},[2848,9523,3509],{"class":3508},[2848,9525,3522],{"class":3504},[2848,9527,9528,9530,9532,9534,9536,9539,9541,9544,9546,9548],{"class":2850,"line":2917},[2848,9529,3543],{"class":3504},[2848,9531,2799],{"class":3508},[2848,9533,3512],{"class":3002},[2848,9535,3515],{"class":2998},[2848,9537,9538],{"class":3518},"\"pd-hint\"",[2848,9540,3555],{"class":3504},[2848,9542,9543],{"class":2998},"Progress ring через --progress custom property",[2848,9545,3561],{"class":3504},[2848,9547,2799],{"class":3508},[2848,9549,3522],{"class":3504},[2848,9551,9552,9554,9556],{"class":2850,"line":2923},[2848,9553,3692],{"class":3504},[2848,9555,3509],{"class":3508},[2848,9557,3522],{"class":3504},[2848,9559,9560],{"class":2850,"line":2928},[2848,9561,3251],{"emptyLinePlaceholder":3250},[2848,9563,9564,9566,9568,9570,9572,9575],{"class":2850,"line":2934},[2848,9565,3527],{"class":3504},[2848,9567,3509],{"class":3508},[2848,9569,3512],{"class":3002},[2848,9571,3515],{"class":2998},[2848,9573,9574],{"class":3518},"\"color-morph\"",[2848,9576,3522],{"class":3504},[2848,9578,9579,9581,9583,9585,9588,9590,9592],{"class":2850,"line":2940},[2848,9580,3543],{"class":3504},[2848,9582,2848],{"class":3508},[2848,9584,3555],{"class":3504},[2848,9586,9587],{"class":2998},"Колір переливається через --brand-color",[2848,9589,3561],{"class":3504},[2848,9591,2848],{"class":3508},[2848,9593,3522],{"class":3504},[2848,9595,9596,9598,9600],{"class":2850,"line":2946},[2848,9597,3692],{"class":3504},[2848,9599,3509],{"class":3508},[2848,9601,3522],{"class":3504},[2848,9603,9604,9606,9608],{"class":2850,"line":2952},[2848,9605,3561],{"class":3504},[2848,9607,3509],{"class":3508},[2848,9609,3522],{"class":3504},[2840,9611,9613],{"className":2979,"code":9612,"language":2981,"meta":2844,"style":2844},"@property --hue {\n  syntax: '\u003Cnumber>';\n  inherits: false;\n  initial-value: 240;\n}\n\n@property --progress {\n  syntax: '\u003Cpercentage>';\n  inherits: false;\n  initial-value: 0%;\n}\n\n@property --morph-color {\n  syntax: '\u003Ccolor>';\n  inherits: false;\n  initial-value: #6366f1;\n}\n\n.property-demo {\n  padding: 1rem;\n  background: #f8fafc;\n  font-family: system-ui, sans-serif;\n  font-size: 0.85rem;\n  color: #1e293b;\n  display: flex;\n  flex-direction: column;\n  gap: 0.75rem;\n}\n.pd-label { margin: 0; color: #64748b; font-style: italic; }\n.pd-hint  { margin: 0.25rem 0 0; font-size: 0.75rem; color: #64748b; }\n\n/* Анімований градієнт через --hue */\n.animated-gradient {\n  --hue: 240;\n  background: hsl(var(--hue), 80%, 60%);\n  border-radius: 8px;\n  padding: 1rem;\n  color: white;\n  font-weight: 700;\n  text-align: center;\n  animation: hue-rotate 4s linear infinite;\n}\n\n@keyframes hue-rotate {\n  to { --hue: 600; }\n}\n\n/* Progress ring */\n.progress-ring-wrap {\n  display: flex;\n  align-items: center;\n  gap: 1rem;\n}\n\n.progress-ring {\n  --progress: 0%;\n  width: 80px;\n  height: 80px;\n  border-radius: 50%;\n  background: conic-gradient(\n    #6366f1 var(--progress),\n    #e2e8f0 var(--progress)\n  );\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-weight: 800;\n  font-size: 1rem;\n  color: #1e293b;\n  position: relative;\n  animation: fill-progress 2s ease-out forwards;\n}\n\n.progress-ring::before {\n  content: '';\n  position: absolute;\n  inset: 8px;\n  border-radius: 50%;\n  background: #f8fafc;\n}\n\n.progress-ring span {\n  position: relative;\n  z-index: 1;\n}\n\n@keyframes fill-progress {\n  to { --progress: 75%; }\n}\n\n/* Color morph */\n.color-morph {\n  --morph-color: #6366f1;\n  background: var(--morph-color);\n  border-radius: 8px;\n  padding: 1rem;\n  color: white;\n  font-weight: 700;\n  text-align: center;\n  animation: color-shift 3s ease-in-out infinite alternate;\n}\n\n@keyframes color-shift {\n  to { --morph-color: #ec4899; }\n}\n",[2815,9614,9615,9621,9626,9630,9637,9641,9645,9651,9655,9659,9665,9669,9673,9680,9684,9688,9698,9702,9706,9713,9723,9733,9747,9757,9767,9777,9787,9797,9801,9834,9869,9873,9878,9885,9897,9927,9937,9947,9957,9967,9977,9996,10000,10004,10014,10027,10031,10035,10040,10047,10057,10068,10078,10082,10086,10093,10105,10116,10127,10138,10150,10165,10179,10184,10194,10204,10215,10225,10235,10245,10257,10275,10279,10283,10290,10301,10311,10322,10332,10342,10346,10350,10359,10369,10380,10384,10388,10397,10409,10413,10417,10422,10429,10440,10455,10465,10475,10485,10495,10505,10525,10530,10535,10545,10558],{"__ignoreMap":2844},[2848,9616,9617,9619],{"class":2850,"line":2851},[2848,9618,2831],{"class":5006},[2848,9620,9274],{"class":2998},[2848,9622,9623],{"class":2850,"line":2857},[2848,9624,9625],{"class":2998},"  syntax: '\u003Cnumber>';\n",[2848,9627,9628],{"class":2850,"line":2863},[2848,9629,9361],{"class":2998},[2848,9631,9632,9634],{"class":2850,"line":2869},[2848,9633,9295],{"class":3508},[2848,9635,9636],{"class":2998},": 240;\n",[2848,9638,9639],{"class":2850,"line":2875},[2848,9640,3478],{"class":2998},[2848,9642,9643],{"class":2850,"line":2881},[2848,9644,3251],{"emptyLinePlaceholder":3250},[2848,9646,9647,9649],{"class":2850,"line":2887},[2848,9648,2831],{"class":5006},[2848,9650,9351],{"class":2998},[2848,9652,9653],{"class":2850,"line":2893},[2848,9654,9356],{"class":2998},[2848,9656,9657],{"class":2850,"line":2899},[2848,9658,9361],{"class":2998},[2848,9660,9661,9663],{"class":2850,"line":2905},[2848,9662,9295],{"class":3508},[2848,9664,9368],{"class":2998},[2848,9666,9667],{"class":2850,"line":2911},[2848,9668,3478],{"class":2998},[2848,9670,9671],{"class":2850,"line":2917},[2848,9672,3251],{"emptyLinePlaceholder":3250},[2848,9674,9675,9677],{"class":2850,"line":2923},[2848,9676,2831],{"class":5006},[2848,9678,9679],{"class":2998}," --morph-color {\n",[2848,9681,9682],{"class":2850,"line":2928},[2848,9683,9321],{"class":2998},[2848,9685,9686],{"class":2850,"line":2934},[2848,9687,9361],{"class":2998},[2848,9689,9690,9692,9694,9696],{"class":2850,"line":2940},[2848,9691,9295],{"class":3508},[2848,9693,3006],{"class":2998},[2848,9695,3087],{"class":4800},[2848,9697,3234],{"class":2998},[2848,9699,9700],{"class":2850,"line":2946},[2848,9701,3478],{"class":2998},[2848,9703,9704],{"class":2850,"line":2952},[2848,9705,3251],{"emptyLinePlaceholder":3250},[2848,9707,9708,9711],{"class":2850,"line":2958},[2848,9709,9710],{"class":2994},".property-demo",[2848,9712,3222],{"class":2998},[2848,9714,9715,9717,9719,9721],{"class":2850,"line":3382},[2848,9716,3912],{"class":3002},[2848,9718,3006],{"class":2998},[2848,9720,3146],{"class":3021},[2848,9722,3234],{"class":2998},[2848,9724,9725,9727,9729,9731],{"class":2850,"line":3387},[2848,9726,3227],{"class":3002},[2848,9728,3006],{"class":2998},[2848,9730,4883],{"class":3009},[2848,9732,3234],{"class":2998},[2848,9734,9735,9737,9739,9741,9743,9745],{"class":2850,"line":3393},[2848,9736,3934],{"class":3002},[2848,9738,3006],{"class":2998},[2848,9740,3939],{"class":3009},[2848,9742,3281],{"class":2998},[2848,9744,3944],{"class":3009},[2848,9746,3234],{"class":2998},[2848,9748,9749,9751,9753,9755],{"class":2850,"line":3399},[2848,9750,4667],{"class":3002},[2848,9752,3006],{"class":2998},[2848,9754,5426],{"class":3021},[2848,9756,3234],{"class":2998},[2848,9758,9759,9761,9763,9765],{"class":2850,"line":3411},[2848,9760,5289],{"class":3002},[2848,9762,3006],{"class":2998},[2848,9764,3114],{"class":3009},[2848,9766,3234],{"class":2998},[2848,9768,9769,9771,9773,9775],{"class":2850,"line":3417},[2848,9770,3877],{"class":3002},[2848,9772,3006],{"class":2998},[2848,9774,3882],{"class":3009},[2848,9776,3234],{"class":2998},[2848,9778,9779,9781,9783,9785],{"class":2850,"line":3422},[2848,9780,5310],{"class":3002},[2848,9782,3006],{"class":2998},[2848,9784,5315],{"class":3009},[2848,9786,3234],{"class":2998},[2848,9788,9789,9791,9793,9795],{"class":2850,"line":3427},[2848,9790,3889],{"class":3002},[2848,9792,3006],{"class":2998},[2848,9794,3187],{"class":3021},[2848,9796,3234],{"class":2998},[2848,9798,9799],{"class":2850,"line":3433},[2848,9800,3478],{"class":2998},[2848,9802,9803,9806,9808,9810,9812,9814,9816,9818,9820,9822,9824,9827,9829,9832],{"class":2850,"line":3443},[2848,9804,9805],{"class":2994},".pd-label",[2848,9807,2999],{"class":2998},[2848,9809,5484],{"class":3002},[2848,9811,3006],{"class":2998},[2848,9813,3040],{"class":3021},[2848,9815,3013],{"class":2998},[2848,9817,3109],{"class":3002},[2848,9819,3006],{"class":2998},[2848,9821,3155],{"class":3009},[2848,9823,3013],{"class":2998},[2848,9825,9826],{"class":3002},"font-style",[2848,9828,3006],{"class":2998},[2848,9830,9831],{"class":3009},"italic",[2848,9833,3025],{"class":2998},[2848,9835,9836,9839,9841,9843,9845,9847,9849,9851,9853,9855,9857,9859,9861,9863,9865,9867],{"class":2850,"line":3457},[2848,9837,9838],{"class":2994},".pd-hint",[2848,9840,5513],{"class":2998},[2848,9842,5484],{"class":3002},[2848,9844,3006],{"class":2998},[2848,9846,8831],{"class":3021},[2848,9848,4217],{"class":3021},[2848,9850,4217],{"class":3021},[2848,9852,3013],{"class":2998},[2848,9854,3099],{"class":3002},[2848,9856,3006],{"class":2998},[2848,9858,3187],{"class":3021},[2848,9860,3013],{"class":2998},[2848,9862,3109],{"class":3002},[2848,9864,3006],{"class":2998},[2848,9866,3155],{"class":3009},[2848,9868,3025],{"class":2998},[2848,9870,9871],{"class":2850,"line":3470},[2848,9872,3251],{"emptyLinePlaceholder":3250},[2848,9874,9875],{"class":2850,"line":3475},[2848,9876,9877],{"class":2988},"/* Анімований градієнт через --hue */\n",[2848,9879,9880,9883],{"class":2850,"line":4222},[2848,9881,9882],{"class":2994},".animated-gradient",[2848,9884,3222],{"class":2998},[2848,9886,9887,9890,9892,9895],{"class":2850,"line":4238},[2848,9888,9889],{"class":3002},"  --hue",[2848,9891,3006],{"class":2998},[2848,9893,9894],{"class":3021},"240",[2848,9896,3234],{"class":2998},[2848,9898,9899,9901,9903,9906,9908,9910,9912,9915,9917,9920,9922,9925],{"class":2850,"line":4251},[2848,9900,3227],{"class":3002},[2848,9902,3006],{"class":2998},[2848,9904,9905],{"class":3049},"hsl",[2848,9907,3053],{"class":2998},[2848,9909,6141],{"class":3049},[2848,9911,3053],{"class":2998},[2848,9913,9914],{"class":3002},"--hue",[2848,9916,2818],{"class":2998},[2848,9918,9919],{"class":3021},"80%",[2848,9921,3281],{"class":2998},[2848,9923,9924],{"class":3021},"60%",[2848,9926,3294],{"class":2998},[2848,9928,9929,9931,9933,9935],{"class":2850,"line":4262},[2848,9930,3239],{"class":3002},[2848,9932,3006],{"class":2998},[2848,9934,3022],{"class":3021},[2848,9936,3234],{"class":2998},[2848,9938,9939,9941,9943,9945],{"class":2850,"line":4275},[2848,9940,3912],{"class":3002},[2848,9942,3006],{"class":2998},[2848,9944,3146],{"class":3021},[2848,9946,3234],{"class":2998},[2848,9948,9949,9951,9953,9955],{"class":2850,"line":4287},[2848,9950,5289],{"class":3002},[2848,9952,3006],{"class":2998},[2848,9954,3010],{"class":3009},[2848,9956,3234],{"class":2998},[2848,9958,9959,9961,9963,9965],{"class":2850,"line":4300},[2848,9960,4680],{"class":3002},[2848,9962,3006],{"class":2998},[2848,9964,4295],{"class":3021},[2848,9966,3234],{"class":2998},[2848,9968,9969,9971,9973,9975],{"class":2850,"line":4305},[2848,9970,5747],{"class":3002},[2848,9972,3006],{"class":2998},[2848,9974,5752],{"class":3009},[2848,9976,3234],{"class":2998},[2848,9978,9979,9982,9985,9988,9991,9994],{"class":2850,"line":4316},[2848,9980,9981],{"class":3002},"  animation",[2848,9983,9984],{"class":2998},": hue-rotate ",[2848,9986,9987],{"class":3021},"4s",[2848,9989,9990],{"class":3009}," linear",[2848,9992,9993],{"class":3009}," infinite",[2848,9995,3234],{"class":2998},[2848,9997,9998],{"class":2850,"line":4328},[2848,9999,3478],{"class":2998},[2848,10001,10002],{"class":2850,"line":4339},[2848,10003,3251],{"emptyLinePlaceholder":3250},[2848,10005,10006,10009,10012],{"class":2850,"line":4344},[2848,10007,10008],{"class":5006},"@keyframes",[2848,10010,10011],{"class":3002}," hue-rotate",[2848,10013,3222],{"class":2998},[2848,10015,10016,10019,10021,10023,10025],{"class":2850,"line":4349},[2848,10017,10018],{"class":2998},"  to { ",[2848,10020,9914],{"class":3002},[2848,10022,3006],{"class":2998},[2848,10024,4685],{"class":3021},[2848,10026,3025],{"class":2998},[2848,10028,10029],{"class":2850,"line":4354},[2848,10030,3478],{"class":2998},[2848,10032,10033],{"class":2850,"line":4360},[2848,10034,3251],{"emptyLinePlaceholder":3250},[2848,10036,10037],{"class":2850,"line":4376},[2848,10038,10039],{"class":2988},"/* Progress ring */\n",[2848,10041,10042,10045],{"class":2850,"line":4387},[2848,10043,10044],{"class":2994},".progress-ring-wrap",[2848,10046,3222],{"class":2998},[2848,10048,10049,10051,10053,10055],{"class":2850,"line":4398},[2848,10050,3877],{"class":3002},[2848,10052,3006],{"class":2998},[2848,10054,3882],{"class":3009},[2848,10056,3234],{"class":2998},[2848,10058,10059,10062,10064,10066],{"class":2850,"line":4409},[2848,10060,10061],{"class":3002},"  align-items",[2848,10063,3006],{"class":2998},[2848,10065,5752],{"class":3009},[2848,10067,3234],{"class":2998},[2848,10069,10070,10072,10074,10076],{"class":2850,"line":4414},[2848,10071,3889],{"class":3002},[2848,10073,3006],{"class":2998},[2848,10075,3146],{"class":3021},[2848,10077,3234],{"class":2998},[2848,10079,10080],{"class":2850,"line":4419},[2848,10081,3478],{"class":2998},[2848,10083,10084],{"class":2850,"line":4425},[2848,10085,3251],{"emptyLinePlaceholder":3250},[2848,10087,10088,10091],{"class":2850,"line":4438},[2848,10089,10090],{"class":2994},".progress-ring",[2848,10092,3222],{"class":2998},[2848,10094,10095,10098,10100,10103],{"class":2850,"line":4450},[2848,10096,10097],{"class":3002},"  --progress",[2848,10099,3006],{"class":2998},[2848,10101,10102],{"class":3021},"0%",[2848,10104,3234],{"class":2998},[2848,10106,10107,10110,10112,10114],{"class":2850,"line":4461},[2848,10108,10109],{"class":3002},"  width",[2848,10111,3006],{"class":2998},[2848,10113,7436],{"class":3021},[2848,10115,3234],{"class":2998},[2848,10117,10118,10121,10123,10125],{"class":2850,"line":4474},[2848,10119,10120],{"class":3002},"  height",[2848,10122,3006],{"class":2998},[2848,10124,7436],{"class":3021},[2848,10126,3234],{"class":2998},[2848,10128,10129,10131,10133,10136],{"class":2850,"line":4479},[2848,10130,3239],{"class":3002},[2848,10132,3006],{"class":2998},[2848,10134,10135],{"class":3021},"50%",[2848,10137,3234],{"class":2998},[2848,10139,10140,10142,10144,10147],{"class":2850,"line":4485},[2848,10141,3227],{"class":3002},[2848,10143,3006],{"class":2998},[2848,10145,10146],{"class":3049},"conic-gradient",[2848,10148,10149],{"class":2998},"(\n",[2848,10151,10152,10155,10157,10159,10162],{"class":2850,"line":4496},[2848,10153,10154],{"class":3009},"    #6366f1",[2848,10156,6248],{"class":3049},[2848,10158,3053],{"class":2998},[2848,10160,10161],{"class":3002},"--progress",[2848,10163,10164],{"class":2998},"),\n",[2848,10166,10167,10170,10172,10174,10176],{"class":2850,"line":4512},[2848,10168,10169],{"class":3009},"    #e2e8f0",[2848,10171,6248],{"class":3049},[2848,10173,3053],{"class":2998},[2848,10175,10161],{"class":3002},[2848,10177,10178],{"class":2998},")\n",[2848,10180,10181],{"class":2850,"line":4525},[2848,10182,10183],{"class":2998},"  );\n",[2848,10185,10186,10188,10190,10192],{"class":2850,"line":4538},[2848,10187,3877],{"class":3002},[2848,10189,3006],{"class":2998},[2848,10191,3882],{"class":3009},[2848,10193,3234],{"class":2998},[2848,10195,10196,10198,10200,10202],{"class":2850,"line":4543},[2848,10197,10061],{"class":3002},[2848,10199,3006],{"class":2998},[2848,10201,5752],{"class":3009},[2848,10203,3234],{"class":2998},[2848,10205,10206,10209,10211,10213],{"class":2850,"line":4548},[2848,10207,10208],{"class":3002},"  justify-content",[2848,10210,3006],{"class":2998},[2848,10212,5752],{"class":3009},[2848,10214,3234],{"class":2998},[2848,10216,10217,10219,10221,10223],{"class":2850,"line":4553},[2848,10218,4680],{"class":3002},[2848,10220,3006],{"class":2998},[2848,10222,5763],{"class":3021},[2848,10224,3234],{"class":2998},[2848,10226,10227,10229,10231,10233],{"class":2850,"line":4559},[2848,10228,4667],{"class":3002},[2848,10230,3006],{"class":2998},[2848,10232,3146],{"class":3021},[2848,10234,3234],{"class":2998},[2848,10236,10237,10239,10241,10243],{"class":2850,"line":4573},[2848,10238,5289],{"class":3002},[2848,10240,3006],{"class":2998},[2848,10242,3114],{"class":3009},[2848,10244,3234],{"class":2998},[2848,10246,10247,10250,10252,10255],{"class":2850,"line":4590},[2848,10248,10249],{"class":3002},"  position",[2848,10251,3006],{"class":2998},[2848,10253,10254],{"class":3009},"relative",[2848,10256,3234],{"class":2998},[2848,10258,10259,10261,10264,10267,10270,10273],{"class":2850,"line":4601},[2848,10260,9981],{"class":3002},[2848,10262,10263],{"class":2998},": fill-progress ",[2848,10265,10266],{"class":3021},"2s",[2848,10268,10269],{"class":3009}," ease-out",[2848,10271,10272],{"class":3009}," forwards",[2848,10274,3234],{"class":2998},[2848,10276,10277],{"class":2850,"line":4614},[2848,10278,3478],{"class":2998},[2848,10280,10281],{"class":2850,"line":4619},[2848,10282,3251],{"emptyLinePlaceholder":3250},[2848,10284,10285,10288],{"class":2850,"line":4624},[2848,10286,10287],{"class":2994},".progress-ring::before",[2848,10289,3222],{"class":2998},[2848,10291,10292,10295,10297,10299],{"class":2850,"line":4629},[2848,10293,10294],{"class":3002},"  content",[2848,10296,3006],{"class":2998},[2848,10298,3452],{"class":3451},[2848,10300,3234],{"class":2998},[2848,10302,10303,10305,10307,10309],{"class":2850,"line":4637},[2848,10304,10249],{"class":3002},[2848,10306,3006],{"class":2998},[2848,10308,6753],{"class":3009},[2848,10310,3234],{"class":2998},[2848,10312,10313,10316,10318,10320],{"class":2850,"line":4652},[2848,10314,10315],{"class":3002},"  inset",[2848,10317,3006],{"class":2998},[2848,10319,3022],{"class":3021},[2848,10321,3234],{"class":2998},[2848,10323,10324,10326,10328,10330],{"class":2850,"line":4664},[2848,10325,3239],{"class":3002},[2848,10327,3006],{"class":2998},[2848,10329,10135],{"class":3021},[2848,10331,3234],{"class":2998},[2848,10333,10334,10336,10338,10340],{"class":2850,"line":4677},[2848,10335,3227],{"class":3002},[2848,10337,3006],{"class":2998},[2848,10339,4883],{"class":3009},[2848,10341,3234],{"class":2998},[2848,10343,10344],{"class":2850,"line":4690},[2848,10345,3478],{"class":2998},[2848,10347,10348],{"class":2850,"line":4701},[2848,10349,3251],{"emptyLinePlaceholder":3250},[2848,10351,10352,10354,10357],{"class":2850,"line":4714},[2848,10353,10090],{"class":2994},[2848,10355,10356],{"class":2994}," span",[2848,10358,3222],{"class":2998},[2848,10360,10361,10363,10365,10367],{"class":2850,"line":4726},[2848,10362,10249],{"class":3002},[2848,10364,3006],{"class":2998},[2848,10366,10254],{"class":3009},[2848,10368,3234],{"class":2998},[2848,10370,10371,10374,10376,10378],{"class":2850,"line":4741},[2848,10372,10373],{"class":3002},"  z-index",[2848,10375,3006],{"class":2998},[2848,10377,3971],{"class":3021},[2848,10379,3234],{"class":2998},[2848,10381,10382],{"class":2850,"line":4746},[2848,10383,3478],{"class":2998},[2848,10385,10386],{"class":2850,"line":4756},[2848,10387,3251],{"emptyLinePlaceholder":3250},[2848,10389,10390,10392,10395],{"class":2850,"line":4767},[2848,10391,10008],{"class":5006},[2848,10393,10394],{"class":3002}," fill-progress",[2848,10396,3222],{"class":2998},[2848,10398,10399,10401,10403,10405,10407],{"class":2850,"line":4778},[2848,10400,10018],{"class":2998},[2848,10402,10161],{"class":3002},[2848,10404,3006],{"class":2998},[2848,10406,9511],{"class":3021},[2848,10408,3025],{"class":2998},[2848,10410,10411],{"class":2850,"line":4789},[2848,10412,3478],{"class":2998},[2848,10414,10415],{"class":2850,"line":4794},[2848,10416,3251],{"emptyLinePlaceholder":3250},[2848,10418,10419],{"class":2850,"line":4818},[2848,10420,10421],{"class":2988},"/* Color morph */\n",[2848,10423,10424,10427],{"class":2850,"line":4823},[2848,10425,10426],{"class":2994},".color-morph",[2848,10428,3222],{"class":2998},[2848,10430,10431,10434,10436,10438],{"class":2850,"line":4828},[2848,10432,10433],{"class":3002},"  --morph-color",[2848,10435,3006],{"class":2998},[2848,10437,3087],{"class":3009},[2848,10439,3234],{"class":2998},[2848,10441,10442,10444,10446,10448,10450,10453],{"class":2850,"line":4834},[2848,10443,3227],{"class":3002},[2848,10445,3006],{"class":2998},[2848,10447,6141],{"class":3049},[2848,10449,3053],{"class":2998},[2848,10451,10452],{"class":3002},"--morph-color",[2848,10454,3294],{"class":2998},[2848,10456,10457,10459,10461,10463],{"class":2850,"line":4846},[2848,10458,3239],{"class":3002},[2848,10460,3006],{"class":2998},[2848,10462,3022],{"class":3021},[2848,10464,3234],{"class":2998},[2848,10466,10467,10469,10471,10473],{"class":2850,"line":4857},[2848,10468,3912],{"class":3002},[2848,10470,3006],{"class":2998},[2848,10472,3146],{"class":3021},[2848,10474,3234],{"class":2998},[2848,10476,10477,10479,10481,10483],{"class":2850,"line":4869},[2848,10478,5289],{"class":3002},[2848,10480,3006],{"class":2998},[2848,10482,3010],{"class":3009},[2848,10484,3234],{"class":2998},[2848,10486,10487,10489,10491,10493],{"class":2850,"line":4874},[2848,10488,4680],{"class":3002},[2848,10490,3006],{"class":2998},[2848,10492,4295],{"class":3021},[2848,10494,3234],{"class":2998},[2848,10496,10497,10499,10501,10503],{"class":2850,"line":4896},[2848,10498,5747],{"class":3002},[2848,10500,3006],{"class":2998},[2848,10502,5752],{"class":3009},[2848,10504,3234],{"class":2998},[2848,10506,10507,10509,10512,10515,10518,10520,10523],{"class":2850,"line":4901},[2848,10508,9981],{"class":3002},[2848,10510,10511],{"class":2998},": color-shift ",[2848,10513,10514],{"class":3021},"3s",[2848,10516,10517],{"class":3009}," ease-in-out",[2848,10519,9993],{"class":3009},[2848,10521,10522],{"class":3009}," alternate",[2848,10524,3234],{"class":2998},[2848,10526,10528],{"class":2850,"line":10527},101,[2848,10529,3478],{"class":2998},[2848,10531,10533],{"class":2850,"line":10532},102,[2848,10534,3251],{"emptyLinePlaceholder":3250},[2848,10536,10538,10540,10543],{"class":2850,"line":10537},103,[2848,10539,10008],{"class":5006},[2848,10541,10542],{"class":3002}," color-shift",[2848,10544,3222],{"class":2998},[2848,10546,10548,10550,10552,10554,10556],{"class":2850,"line":10547},104,[2848,10549,10018],{"class":2998},[2848,10551,10452],{"class":3002},[2848,10553,3006],{"class":2998},[2848,10555,6836],{"class":3009},[2848,10557,3025],{"class":2998},[2848,10559,10561],{"class":2850,"line":10560},105,[2848,10562,3478],{"class":2998},[2799,10564,10565,10566,10569,10570,10572,10573,10575,10576,10578,10579,10582,10583,10585,10586,10588],{},"Зверніть: ",[2815,10567,10568],{},"animation: hue-rotate 4s linear infinite"," плавно анімує ",[2815,10571,9914],{}," від ",[2815,10574,9894],{}," до ",[2815,10577,4685],{},", а ",[2815,10580,10581],{},"hsl(var(--hue), 80%, 60%)"," автоматично оновлює градієнт. Без ",[2815,10584,2831],{}," такого не досягти — браузер не знав би, що ",[2815,10587,9914],{}," — це число, між яким можна інтерполювати.",[2970,10590,10592,10594],{"id":10591},"property-для-типізованих-дефолтів",[2815,10593,2831],{}," для типізованих дефолтів",[2840,10596,10598],{"className":2979,"code":10597,"language":2981,"meta":2844,"style":2844},"/* Без @property: якщо --size не задано, результат непередбачуваний */\n.box {\n  width: var(--size); /* undefined? '0'? */\n}\n\n/* З @property: завжди є initial-value */\n@property --box-size {\n  syntax: '\u003Clength>';\n  inherits: false;\n  initial-value: 100px; /* гарантований fallback */\n}\n\n.box {\n  width: var(--box-size); /* завжди 100px, якщо не перевизначено */\n}\n\n/* Можна перевизначати як звичайно */\n.box--large {\n  --box-size: 200px;\n}\n",[2815,10599,10600,10605,10612,10630,10634,10638,10643,10650,10655,10659,10669,10673,10677,10683,10701,10705,10709,10714,10721,10732],{"__ignoreMap":2844},[2848,10601,10602],{"class":2850,"line":2851},[2848,10603,10604],{"class":2988},"/* Без @property: якщо --size не задано, результат непередбачуваний */\n",[2848,10606,10607,10610],{"class":2850,"line":2857},[2848,10608,10609],{"class":2994},".box",[2848,10611,3222],{"class":2998},[2848,10613,10614,10616,10618,10620,10622,10625,10627],{"class":2850,"line":2863},[2848,10615,10109],{"class":3002},[2848,10617,3006],{"class":2998},[2848,10619,6141],{"class":3049},[2848,10621,3053],{"class":2998},[2848,10623,10624],{"class":3002},"--size",[2848,10626,5576],{"class":2998},[2848,10628,10629],{"class":2988},"/* undefined? '0'? */\n",[2848,10631,10632],{"class":2850,"line":2869},[2848,10633,3478],{"class":2998},[2848,10635,10636],{"class":2850,"line":2875},[2848,10637,3251],{"emptyLinePlaceholder":3250},[2848,10639,10640],{"class":2850,"line":2881},[2848,10641,10642],{"class":2988},"/* З @property: завжди є initial-value */\n",[2848,10644,10645,10647],{"class":2850,"line":2887},[2848,10646,2831],{"class":5006},[2848,10648,10649],{"class":2998}," --box-size {\n",[2848,10651,10652],{"class":2850,"line":2893},[2848,10653,10654],{"class":2998},"  syntax: '\u003Clength>';\n",[2848,10656,10657],{"class":2850,"line":2899},[2848,10658,9361],{"class":2998},[2848,10660,10661,10663,10666],{"class":2850,"line":2905},[2848,10662,9295],{"class":3508},[2848,10664,10665],{"class":2998},": 100px; ",[2848,10667,10668],{"class":2988},"/* гарантований fallback */\n",[2848,10670,10671],{"class":2850,"line":2911},[2848,10672,3478],{"class":2998},[2848,10674,10675],{"class":2850,"line":2917},[2848,10676,3251],{"emptyLinePlaceholder":3250},[2848,10678,10679,10681],{"class":2850,"line":2923},[2848,10680,10609],{"class":2994},[2848,10682,3222],{"class":2998},[2848,10684,10685,10687,10689,10691,10693,10696,10698],{"class":2850,"line":2928},[2848,10686,10109],{"class":3002},[2848,10688,3006],{"class":2998},[2848,10690,6141],{"class":3049},[2848,10692,3053],{"class":2998},[2848,10694,10695],{"class":3002},"--box-size",[2848,10697,5576],{"class":2998},[2848,10699,10700],{"class":2988},"/* завжди 100px, якщо не перевизначено */\n",[2848,10702,10703],{"class":2850,"line":2934},[2848,10704,3478],{"class":2998},[2848,10706,10707],{"class":2850,"line":2940},[2848,10708,3251],{"emptyLinePlaceholder":3250},[2848,10710,10711],{"class":2850,"line":2946},[2848,10712,10713],{"class":2988},"/* Можна перевизначати як звичайно */\n",[2848,10715,10716,10719],{"class":2850,"line":2952},[2848,10717,10718],{"class":2994},".box--large",[2848,10720,3222],{"class":2998},[2848,10722,10723,10726,10728,10730],{"class":2850,"line":2958},[2848,10724,10725],{"class":3002},"  --box-size",[2848,10727,3006],{"class":2998},[2848,10729,3983],{"class":3021},[2848,10731,3234],{"class":2998},[2848,10733,10734],{"class":2850,"line":3382},[2848,10735,3478],{"class":2998},[2963,10737],{},[2794,10739,10741],{"id":10740},"нативний-css-замість-scss-практичне-порівняння","Нативний CSS замість SCSS: практичне порівняння",[3491,10743,10744,10989],{},[2840,10745,10747],{"className":3495,"code":10746,"language":3497,"meta":2844,"style":2844},"\u003Cdiv class=\"comparison-demo\">\n  \u003Cp class=\"cd-title\">Компонент кнопки: SCSS vs Native CSS\u003C/p>\n  \u003Cdiv class=\"btn-showcase\">\n    \u003Cbutton class=\"nc-btn nc-btn--primary\">Primary\u003C/button>\n    \u003Cbutton class=\"nc-btn nc-btn--secondary\">Secondary\u003C/button>\n    \u003Cbutton class=\"nc-btn nc-btn--danger\">Danger\u003C/button>\n    \u003Cbutton class=\"nc-btn nc-btn--primary\" disabled>Disabled\u003C/button>\n    \u003Cbutton class=\"nc-btn nc-btn--primary nc-btn--lg\">Large\u003C/button>\n    \u003Cbutton class=\"nc-btn nc-btn--primary nc-btn--sm\">Small\u003C/button>\n  \u003C/div>\n  \u003Cp class=\"cd-note\">Всі варіанти — через CSS Nesting + Custom Properties. Без SCSS.\u003C/p>\n\u003C/div>\n",[2815,10748,10749,10764,10788,10803,10827,10851,10875,10901,10925,10949,10957,10981],{"__ignoreMap":2844},[2848,10750,10751,10753,10755,10757,10759,10762],{"class":2850,"line":2851},[2848,10752,3505],{"class":3504},[2848,10754,3509],{"class":3508},[2848,10756,3512],{"class":3002},[2848,10758,3515],{"class":2998},[2848,10760,10761],{"class":3518},"\"comparison-demo\"",[2848,10763,3522],{"class":3504},[2848,10765,10766,10768,10770,10772,10774,10777,10779,10782,10784,10786],{"class":2850,"line":2857},[2848,10767,3527],{"class":3504},[2848,10769,2799],{"class":3508},[2848,10771,3512],{"class":3002},[2848,10773,3515],{"class":2998},[2848,10775,10776],{"class":3518},"\"cd-title\"",[2848,10778,3555],{"class":3504},[2848,10780,10781],{"class":2998},"Компонент кнопки: SCSS vs Native CSS",[2848,10783,3561],{"class":3504},[2848,10785,2799],{"class":3508},[2848,10787,3522],{"class":3504},[2848,10789,10790,10792,10794,10796,10798,10801],{"class":2850,"line":2863},[2848,10791,3527],{"class":3504},[2848,10793,3509],{"class":3508},[2848,10795,3512],{"class":3002},[2848,10797,3515],{"class":2998},[2848,10799,10800],{"class":3518},"\"btn-showcase\"",[2848,10802,3522],{"class":3504},[2848,10804,10805,10807,10809,10811,10813,10816,10818,10821,10823,10825],{"class":2850,"line":2869},[2848,10806,3543],{"class":3504},[2848,10808,3636],{"class":3508},[2848,10810,3512],{"class":3002},[2848,10812,3515],{"class":2998},[2848,10814,10815],{"class":3518},"\"nc-btn nc-btn--primary\"",[2848,10817,3555],{"class":3504},[2848,10819,10820],{"class":2998},"Primary",[2848,10822,3561],{"class":3504},[2848,10824,3636],{"class":3508},[2848,10826,3522],{"class":3504},[2848,10828,10829,10831,10833,10835,10837,10840,10842,10845,10847,10849],{"class":2850,"line":2875},[2848,10830,3543],{"class":3504},[2848,10832,3636],{"class":3508},[2848,10834,3512],{"class":3002},[2848,10836,3515],{"class":2998},[2848,10838,10839],{"class":3518},"\"nc-btn nc-btn--secondary\"",[2848,10841,3555],{"class":3504},[2848,10843,10844],{"class":2998},"Secondary",[2848,10846,3561],{"class":3504},[2848,10848,3636],{"class":3508},[2848,10850,3522],{"class":3504},[2848,10852,10853,10855,10857,10859,10861,10864,10866,10869,10871,10873],{"class":2850,"line":2881},[2848,10854,3543],{"class":3504},[2848,10856,3636],{"class":3508},[2848,10858,3512],{"class":3002},[2848,10860,3515],{"class":2998},[2848,10862,10863],{"class":3518},"\"nc-btn nc-btn--danger\"",[2848,10865,3555],{"class":3504},[2848,10867,10868],{"class":2998},"Danger",[2848,10870,3561],{"class":3504},[2848,10872,3636],{"class":3508},[2848,10874,3522],{"class":3504},[2848,10876,10877,10879,10881,10883,10885,10887,10890,10892,10895,10897,10899],{"class":2850,"line":2887},[2848,10878,3543],{"class":3504},[2848,10880,3636],{"class":3508},[2848,10882,3512],{"class":3002},[2848,10884,3515],{"class":2998},[2848,10886,10815],{"class":3518},[2848,10888,10889],{"class":3002}," disabled",[2848,10891,3555],{"class":3504},[2848,10893,10894],{"class":2998},"Disabled",[2848,10896,3561],{"class":3504},[2848,10898,3636],{"class":3508},[2848,10900,3522],{"class":3504},[2848,10902,10903,10905,10907,10909,10911,10914,10916,10919,10921,10923],{"class":2850,"line":2893},[2848,10904,3543],{"class":3504},[2848,10906,3636],{"class":3508},[2848,10908,3512],{"class":3002},[2848,10910,3515],{"class":2998},[2848,10912,10913],{"class":3518},"\"nc-btn nc-btn--primary nc-btn--lg\"",[2848,10915,3555],{"class":3504},[2848,10917,10918],{"class":2998},"Large",[2848,10920,3561],{"class":3504},[2848,10922,3636],{"class":3508},[2848,10924,3522],{"class":3504},[2848,10926,10927,10929,10931,10933,10935,10938,10940,10943,10945,10947],{"class":2850,"line":2899},[2848,10928,3543],{"class":3504},[2848,10930,3636],{"class":3508},[2848,10932,3512],{"class":3002},[2848,10934,3515],{"class":2998},[2848,10936,10937],{"class":3518},"\"nc-btn nc-btn--primary nc-btn--sm\"",[2848,10939,3555],{"class":3504},[2848,10941,10942],{"class":2998},"Small",[2848,10944,3561],{"class":3504},[2848,10946,3636],{"class":3508},[2848,10948,3522],{"class":3504},[2848,10950,10951,10953,10955],{"class":2850,"line":2905},[2848,10952,3692],{"class":3504},[2848,10954,3509],{"class":3508},[2848,10956,3522],{"class":3504},[2848,10958,10959,10961,10963,10965,10967,10970,10972,10975,10977,10979],{"class":2850,"line":2911},[2848,10960,3527],{"class":3504},[2848,10962,2799],{"class":3508},[2848,10964,3512],{"class":3002},[2848,10966,3515],{"class":2998},[2848,10968,10969],{"class":3518},"\"cd-note\"",[2848,10971,3555],{"class":3504},[2848,10973,10974],{"class":2998},"Всі варіанти — через CSS Nesting + Custom Properties. Без SCSS.",[2848,10976,3561],{"class":3504},[2848,10978,2799],{"class":3508},[2848,10980,3522],{"class":3504},[2848,10982,10983,10985,10987],{"class":2850,"line":2917},[2848,10984,3561],{"class":3504},[2848,10986,3509],{"class":3508},[2848,10988,3522],{"class":3504},[2840,10990,10992],{"className":2979,"code":10991,"language":2981,"meta":2844,"style":2844},"@property --btn-bg {\n  syntax: '\u003Ccolor>';\n  inherits: false;\n  initial-value: #6366f1;\n}\n\n@property --btn-color {\n  syntax: '\u003Ccolor>';\n  inherits: false;\n  initial-value: white;\n}\n\n.comparison-demo {\n  padding: 1rem;\n  background: #f8fafc;\n  font-family: system-ui, sans-serif;\n  font-size: 0.85rem;\n  color: #1e293b;\n}\n.cd-title { margin: 0 0 0.75rem; font-weight: 700; color: #64748b; }\n.cd-note  { margin: 0.75rem 0 0; font-size: 0.75rem; color: #94a3b8; font-style: italic; }\n.btn-showcase { display: flex; flex-wrap: wrap; gap: 0.5rem; }\n\n.nc-btn {\n  --btn-bg: #6366f1;\n  --btn-color: white;\n  --btn-border: transparent;\n\n  display: inline-flex;\n  align-items: center;\n  gap: 0.4rem;\n  padding: 0.5em 1.1em;\n  background: var(--btn-bg);\n  color: var(--btn-color);\n  border: 1.5px solid var(--btn-border);\n  border-radius: 7px;\n  font-size: 0.875rem;\n  font-weight: 600;\n  font-family: inherit;\n  cursor: pointer;\n  transition: all 0.15s;\n\n  &:hover:not(:disabled) {\n    background: color-mix(in srgb, var(--btn-bg) 85%, black);\n  }\n\n  &:focus-visible {\n    outline: 2px solid var(--btn-bg);\n    outline-offset: 2px;\n  }\n\n  &:disabled {\n    opacity: 0.45;\n    cursor: not-allowed;\n  }\n\n  &--primary {\n    --btn-bg: #6366f1;\n    --btn-color: white;\n  }\n\n  &--secondary {\n    --btn-bg: transparent;\n    --btn-color: #6366f1;\n    --btn-border: #6366f1;\n\n    &:hover:not(:disabled) {\n      --btn-bg: #ede9fe;\n    }\n  }\n\n  &--danger {\n    --btn-bg: #ef4444;\n    --btn-color: white;\n  }\n\n  &--lg {\n    padding: 0.7em 1.5em;\n    font-size: 1rem;\n  }\n\n  &--sm {\n    padding: 0.3em 0.75em;\n    font-size: 0.75rem;\n  }\n}\n",[2815,10993,10994,11001,11005,11009,11019,11023,11027,11034,11038,11042,11049,11053,11057,11064,11074,11084,11098,11108,11118,11122,11157,11200,11231,11235,11242,11253,11264,11275,11279,11290,11300,11310,11324,11339,11354,11373,11384,11395,11405,11415,11425,11437,11441,11451,11483,11487,11491,11499,11517,11527,11531,11535,11544,11556,11567,11571,11575,11580,11591,11602,11606,11610,11615,11625,11635,11646,11650,11659,11670,11674,11678,11682,11687,11698,11708,11712,11716,11721,11734,11744,11748,11752,11757,11771,11781,11785],{"__ignoreMap":2844},[2848,10995,10996,10998],{"class":2850,"line":2851},[2848,10997,2831],{"class":5006},[2848,10999,11000],{"class":2998}," --btn-bg {\n",[2848,11002,11003],{"class":2850,"line":2857},[2848,11004,9321],{"class":2998},[2848,11006,11007],{"class":2850,"line":2863},[2848,11008,9361],{"class":2998},[2848,11010,11011,11013,11015,11017],{"class":2850,"line":2869},[2848,11012,9295],{"class":3508},[2848,11014,3006],{"class":2998},[2848,11016,3087],{"class":4800},[2848,11018,3234],{"class":2998},[2848,11020,11021],{"class":2850,"line":2875},[2848,11022,3478],{"class":2998},[2848,11024,11025],{"class":2850,"line":2881},[2848,11026,3251],{"emptyLinePlaceholder":3250},[2848,11028,11029,11031],{"class":2850,"line":2887},[2848,11030,2831],{"class":5006},[2848,11032,11033],{"class":2998}," --btn-color {\n",[2848,11035,11036],{"class":2850,"line":2893},[2848,11037,9321],{"class":2998},[2848,11039,11040],{"class":2850,"line":2899},[2848,11041,9361],{"class":2998},[2848,11043,11044,11046],{"class":2850,"line":2905},[2848,11045,9295],{"class":3508},[2848,11047,11048],{"class":2998},": white;\n",[2848,11050,11051],{"class":2850,"line":2911},[2848,11052,3478],{"class":2998},[2848,11054,11055],{"class":2850,"line":2917},[2848,11056,3251],{"emptyLinePlaceholder":3250},[2848,11058,11059,11062],{"class":2850,"line":2923},[2848,11060,11061],{"class":2994},".comparison-demo",[2848,11063,3222],{"class":2998},[2848,11065,11066,11068,11070,11072],{"class":2850,"line":2928},[2848,11067,3912],{"class":3002},[2848,11069,3006],{"class":2998},[2848,11071,3146],{"class":3021},[2848,11073,3234],{"class":2998},[2848,11075,11076,11078,11080,11082],{"class":2850,"line":2934},[2848,11077,3227],{"class":3002},[2848,11079,3006],{"class":2998},[2848,11081,4883],{"class":3009},[2848,11083,3234],{"class":2998},[2848,11085,11086,11088,11090,11092,11094,11096],{"class":2850,"line":2940},[2848,11087,3934],{"class":3002},[2848,11089,3006],{"class":2998},[2848,11091,3939],{"class":3009},[2848,11093,3281],{"class":2998},[2848,11095,3944],{"class":3009},[2848,11097,3234],{"class":2998},[2848,11099,11100,11102,11104,11106],{"class":2850,"line":2946},[2848,11101,4667],{"class":3002},[2848,11103,3006],{"class":2998},[2848,11105,5426],{"class":3021},[2848,11107,3234],{"class":2998},[2848,11109,11110,11112,11114,11116],{"class":2850,"line":2952},[2848,11111,5289],{"class":3002},[2848,11113,3006],{"class":2998},[2848,11115,3114],{"class":3009},[2848,11117,3234],{"class":2998},[2848,11119,11120],{"class":2850,"line":2958},[2848,11121,3478],{"class":2998},[2848,11123,11124,11127,11129,11131,11133,11135,11137,11139,11141,11143,11145,11147,11149,11151,11153,11155],{"class":2850,"line":3382},[2848,11125,11126],{"class":2994},".cd-title",[2848,11128,2999],{"class":2998},[2848,11130,5484],{"class":3002},[2848,11132,3006],{"class":2998},[2848,11134,3040],{"class":3021},[2848,11136,4217],{"class":3021},[2848,11138,4214],{"class":3021},[2848,11140,3013],{"class":2998},[2848,11142,7535],{"class":3002},[2848,11144,3006],{"class":2998},[2848,11146,4295],{"class":3021},[2848,11148,3013],{"class":2998},[2848,11150,3109],{"class":3002},[2848,11152,3006],{"class":2998},[2848,11154,3155],{"class":3009},[2848,11156,3025],{"class":2998},[2848,11158,11159,11162,11164,11166,11168,11170,11172,11174,11176,11178,11180,11182,11184,11186,11188,11190,11192,11194,11196,11198],{"class":2850,"line":3387},[2848,11160,11161],{"class":2994},".cd-note",[2848,11163,5513],{"class":2998},[2848,11165,5484],{"class":3002},[2848,11167,3006],{"class":2998},[2848,11169,3187],{"class":3021},[2848,11171,4217],{"class":3021},[2848,11173,4217],{"class":3021},[2848,11175,3013],{"class":2998},[2848,11177,3099],{"class":3002},[2848,11179,3006],{"class":2998},[2848,11181,3187],{"class":3021},[2848,11183,3013],{"class":2998},[2848,11185,3109],{"class":3002},[2848,11187,3006],{"class":2998},[2848,11189,7574],{"class":3009},[2848,11191,3013],{"class":2998},[2848,11193,9826],{"class":3002},[2848,11195,3006],{"class":2998},[2848,11197,9831],{"class":3009},[2848,11199,3025],{"class":2998},[2848,11201,11202,11205,11207,11209,11211,11213,11215,11217,11219,11221,11223,11225,11227,11229],{"class":2850,"line":3393},[2848,11203,11204],{"class":2994},".btn-showcase",[2848,11206,2999],{"class":2998},[2848,11208,6728],{"class":3002},[2848,11210,3006],{"class":2998},[2848,11212,3882],{"class":3009},[2848,11214,3013],{"class":2998},[2848,11216,7404],{"class":3002},[2848,11218,3006],{"class":2998},[2848,11220,3905],{"class":3009},[2848,11222,3013],{"class":2998},[2848,11224,7395],{"class":3002},[2848,11226,3006],{"class":2998},[2848,11228,4609],{"class":3021},[2848,11230,3025],{"class":2998},[2848,11232,11233],{"class":2850,"line":3399},[2848,11234,3251],{"emptyLinePlaceholder":3250},[2848,11236,11237,11240],{"class":2850,"line":3411},[2848,11238,11239],{"class":2994},".nc-btn",[2848,11241,3222],{"class":2998},[2848,11243,11244,11247,11249,11251],{"class":2850,"line":3417},[2848,11245,11246],{"class":3002},"  --btn-bg",[2848,11248,3006],{"class":2998},[2848,11250,3087],{"class":3009},[2848,11252,3234],{"class":2998},[2848,11254,11255,11258,11260,11262],{"class":2850,"line":3422},[2848,11256,11257],{"class":3002},"  --btn-color",[2848,11259,3006],{"class":2998},[2848,11261,3010],{"class":3009},[2848,11263,3234],{"class":2998},[2848,11265,11266,11269,11271,11273],{"class":2850,"line":3427},[2848,11267,11268],{"class":3002},"  --btn-border",[2848,11270,3006],{"class":2998},[2848,11272,4841],{"class":3009},[2848,11274,3234],{"class":2998},[2848,11276,11277],{"class":2850,"line":3433},[2848,11278,3251],{"emptyLinePlaceholder":3250},[2848,11280,11281,11283,11285,11288],{"class":2850,"line":3443},[2848,11282,3877],{"class":3002},[2848,11284,3006],{"class":2998},[2848,11286,11287],{"class":3009},"inline-flex",[2848,11289,3234],{"class":2998},[2848,11291,11292,11294,11296,11298],{"class":2850,"line":3457},[2848,11293,10061],{"class":3002},[2848,11295,3006],{"class":2998},[2848,11297,5752],{"class":3009},[2848,11299,3234],{"class":2998},[2848,11301,11302,11304,11306,11308],{"class":2850,"line":3470},[2848,11303,3889],{"class":3002},[2848,11305,3006],{"class":2998},[2848,11307,4367],{"class":3021},[2848,11309,3234],{"class":2998},[2848,11311,11312,11314,11316,11319,11322],{"class":2850,"line":3475},[2848,11313,3912],{"class":3002},[2848,11315,3006],{"class":2998},[2848,11317,11318],{"class":3021},"0.5em",[2848,11320,11321],{"class":3021}," 1.1em",[2848,11323,3234],{"class":2998},[2848,11325,11326,11328,11330,11332,11334,11337],{"class":2850,"line":4222},[2848,11327,3227],{"class":3002},[2848,11329,3006],{"class":2998},[2848,11331,6141],{"class":3049},[2848,11333,3053],{"class":2998},[2848,11335,11336],{"class":3002},"--btn-bg",[2848,11338,3294],{"class":2998},[2848,11340,11341,11343,11345,11347,11349,11352],{"class":2850,"line":4238},[2848,11342,5289],{"class":3002},[2848,11344,3006],{"class":2998},[2848,11346,6141],{"class":3049},[2848,11348,3053],{"class":2998},[2848,11350,11351],{"class":3002},"--btn-color",[2848,11353,3294],{"class":2998},[2848,11355,11356,11358,11360,11362,11364,11366,11368,11371],{"class":2850,"line":4251},[2848,11357,4011],{"class":3002},[2848,11359,3006],{"class":2998},[2848,11361,4016],{"class":3021},[2848,11363,3175],{"class":3009},[2848,11365,6248],{"class":3049},[2848,11367,3053],{"class":2998},[2848,11369,11370],{"class":3002},"--btn-border",[2848,11372,3294],{"class":2998},[2848,11374,11375,11377,11379,11382],{"class":2850,"line":4262},[2848,11376,3239],{"class":3002},[2848,11378,3006],{"class":2998},[2848,11380,11381],{"class":3021},"7px",[2848,11383,3234],{"class":2998},[2848,11385,11386,11388,11390,11393],{"class":2850,"line":4275},[2848,11387,4667],{"class":3002},[2848,11389,3006],{"class":2998},[2848,11391,11392],{"class":3021},"0.875rem",[2848,11394,3234],{"class":2998},[2848,11396,11397,11399,11401,11403],{"class":2850,"line":4287},[2848,11398,4680],{"class":3002},[2848,11400,3006],{"class":2998},[2848,11402,4685],{"class":3021},[2848,11404,3234],{"class":2998},[2848,11406,11407,11409,11411,11413],{"class":2850,"line":4300},[2848,11408,3934],{"class":3002},[2848,11410,3006],{"class":2998},[2848,11412,4721],{"class":3009},[2848,11414,3234],{"class":2998},[2848,11416,11417,11419,11421,11423],{"class":2850,"line":4305},[2848,11418,4057],{"class":3002},[2848,11420,3006],{"class":2998},[2848,11422,4062],{"class":3009},[2848,11424,3234],{"class":2998},[2848,11426,11427,11429,11431,11433,11435],{"class":2850,"line":4316},[2848,11428,4039],{"class":3002},[2848,11430,3006],{"class":2998},[2848,11432,4733],{"class":3009},[2848,11434,4736],{"class":3021},[2848,11436,3234],{"class":2998},[2848,11438,11439],{"class":2850,"line":4328},[2848,11440,3251],{"emptyLinePlaceholder":3250},[2848,11442,11443,11446,11449],{"class":2850,"line":4339},[2848,11444,11445],{"class":2998},"  &:hover:not(:",[2848,11447,11448],{"class":3009},"disabled",[2848,11450,4972],{"class":2998},[2848,11452,11453,11455,11457,11459,11461,11463,11465,11467,11469,11471,11473,11475,11477,11479,11481],{"class":2850,"line":4344},[2848,11454,4241],{"class":3002},[2848,11456,3006],{"class":2998},[2848,11458,6190],{"class":3049},[2848,11460,3053],{"class":2998},[2848,11462,6195],{"class":3002},[2848,11464,6198],{"class":3009},[2848,11466,3281],{"class":2998},[2848,11468,6141],{"class":3049},[2848,11470,3053],{"class":2998},[2848,11472,11336],{"class":3002},[2848,11474,6209],{"class":2998},[2848,11476,6212],{"class":3021},[2848,11478,3281],{"class":2998},[2848,11480,6217],{"class":3009},[2848,11482,3294],{"class":2998},[2848,11484,11485],{"class":2850,"line":4349},[2848,11486,3299],{"class":2998},[2848,11488,11489],{"class":2850,"line":4354},[2848,11490,3251],{"emptyLinePlaceholder":3250},[2848,11492,11493,11495,11497],{"class":2850,"line":4360},[2848,11494,3313],{"class":2998},[2848,11496,5902],{"class":2994},[2848,11498,3222],{"class":2998},[2848,11500,11501,11503,11505,11507,11509,11511,11513,11515],{"class":2850,"line":4376},[2848,11502,5909],{"class":3002},[2848,11504,3006],{"class":2998},[2848,11506,3328],{"class":3021},[2848,11508,3175],{"class":3009},[2848,11510,6248],{"class":3049},[2848,11512,3053],{"class":2998},[2848,11514,11336],{"class":3002},[2848,11516,3294],{"class":2998},[2848,11518,11519,11521,11523,11525],{"class":2850,"line":4387},[2848,11520,5925],{"class":3002},[2848,11522,3006],{"class":2998},[2848,11524,3328],{"class":3021},[2848,11526,3234],{"class":2998},[2848,11528,11529],{"class":2850,"line":4398},[2848,11530,3299],{"class":2998},[2848,11532,11533],{"class":2850,"line":4409},[2848,11534,3251],{"emptyLinePlaceholder":3250},[2848,11536,11537,11539,11542],{"class":2850,"line":4414},[2848,11538,3313],{"class":2998},[2848,11540,11541],{"class":2994},":disabled",[2848,11543,3222],{"class":2998},[2848,11545,11546,11549,11551,11554],{"class":2850,"line":4419},[2848,11547,11548],{"class":3002},"    opacity",[2848,11550,3006],{"class":2998},[2848,11552,11553],{"class":3021},"0.45",[2848,11555,3234],{"class":2998},[2848,11557,11558,11560,11562,11565],{"class":2850,"line":4425},[2848,11559,6688],{"class":3002},[2848,11561,3006],{"class":2998},[2848,11563,11564],{"class":3009},"not-allowed",[2848,11566,3234],{"class":2998},[2848,11568,11569],{"class":2850,"line":4438},[2848,11570,3299],{"class":2998},[2848,11572,11573],{"class":2850,"line":4450},[2848,11574,3251],{"emptyLinePlaceholder":3250},[2848,11576,11577],{"class":2850,"line":4461},[2848,11578,11579],{"class":2998},"  &--primary {\n",[2848,11581,11582,11585,11587,11589],{"class":2850,"line":4474},[2848,11583,11584],{"class":3002},"    --btn-bg",[2848,11586,3006],{"class":2998},[2848,11588,3087],{"class":3009},[2848,11590,3234],{"class":2998},[2848,11592,11593,11596,11598,11600],{"class":2850,"line":4479},[2848,11594,11595],{"class":3002},"    --btn-color",[2848,11597,3006],{"class":2998},[2848,11599,3010],{"class":3009},[2848,11601,3234],{"class":2998},[2848,11603,11604],{"class":2850,"line":4485},[2848,11605,3299],{"class":2998},[2848,11607,11608],{"class":2850,"line":4496},[2848,11609,3251],{"emptyLinePlaceholder":3250},[2848,11611,11612],{"class":2850,"line":4512},[2848,11613,11614],{"class":2998},"  &--secondary {\n",[2848,11616,11617,11619,11621,11623],{"class":2850,"line":4525},[2848,11618,11584],{"class":3002},[2848,11620,3006],{"class":2998},[2848,11622,4841],{"class":3009},[2848,11624,3234],{"class":2998},[2848,11626,11627,11629,11631,11633],{"class":2850,"line":4538},[2848,11628,11595],{"class":3002},[2848,11630,3006],{"class":2998},[2848,11632,3087],{"class":3009},[2848,11634,3234],{"class":2998},[2848,11636,11637,11640,11642,11644],{"class":2850,"line":4543},[2848,11638,11639],{"class":3002},"    --btn-border",[2848,11641,3006],{"class":2998},[2848,11643,3087],{"class":3009},[2848,11645,3234],{"class":2998},[2848,11647,11648],{"class":2850,"line":4548},[2848,11649,3251],{"emptyLinePlaceholder":3250},[2848,11651,11652,11655,11657],{"class":2850,"line":4553},[2848,11653,11654],{"class":2998},"    &:hover:not(:",[2848,11656,11448],{"class":3009},[2848,11658,4972],{"class":2998},[2848,11660,11661,11664,11666,11668],{"class":2850,"line":4559},[2848,11662,11663],{"class":3002},"      --btn-bg",[2848,11665,3006],{"class":2998},[2848,11667,4246],{"class":3009},[2848,11669,3234],{"class":2998},[2848,11671,11672],{"class":2850,"line":4573},[2848,11673,3414],{"class":2998},[2848,11675,11676],{"class":2850,"line":4590},[2848,11677,3299],{"class":2998},[2848,11679,11680],{"class":2850,"line":4601},[2848,11681,3251],{"emptyLinePlaceholder":3250},[2848,11683,11684],{"class":2850,"line":4614},[2848,11685,11686],{"class":2998},"  &--danger {\n",[2848,11688,11689,11691,11693,11696],{"class":2850,"line":4619},[2848,11690,11584],{"class":3002},[2848,11692,3006],{"class":2998},[2848,11694,11695],{"class":3009},"#ef4444",[2848,11697,3234],{"class":2998},[2848,11699,11700,11702,11704,11706],{"class":2850,"line":4624},[2848,11701,11595],{"class":3002},[2848,11703,3006],{"class":2998},[2848,11705,3010],{"class":3009},[2848,11707,3234],{"class":2998},[2848,11709,11710],{"class":2850,"line":4629},[2848,11711,3299],{"class":2998},[2848,11713,11714],{"class":2850,"line":4637},[2848,11715,3251],{"emptyLinePlaceholder":3250},[2848,11717,11718],{"class":2850,"line":4652},[2848,11719,11720],{"class":2998},"  &--lg {\n",[2848,11722,11723,11725,11727,11730,11732],{"class":2850,"line":4664},[2848,11724,4225],{"class":3002},[2848,11726,3006],{"class":2998},[2848,11728,11729],{"class":3021},"0.7em",[2848,11731,6093],{"class":3021},[2848,11733,3234],{"class":2998},[2848,11735,11736,11738,11740,11742],{"class":2850,"line":4677},[2848,11737,3362],{"class":3002},[2848,11739,3006],{"class":2998},[2848,11741,3146],{"class":3021},[2848,11743,3234],{"class":2998},[2848,11745,11746],{"class":2850,"line":4690},[2848,11747,3299],{"class":2998},[2848,11749,11750],{"class":2850,"line":4701},[2848,11751,3251],{"emptyLinePlaceholder":3250},[2848,11753,11754],{"class":2850,"line":4714},[2848,11755,11756],{"class":2998},"  &--sm {\n",[2848,11758,11759,11761,11763,11766,11769],{"class":2850,"line":4726},[2848,11760,4225],{"class":3002},[2848,11762,3006],{"class":2998},[2848,11764,11765],{"class":3021},"0.3em",[2848,11767,11768],{"class":3021}," 0.75em",[2848,11770,3234],{"class":2998},[2848,11772,11773,11775,11777,11779],{"class":2850,"line":4741},[2848,11774,3362],{"class":3002},[2848,11776,3006],{"class":2998},[2848,11778,3187],{"class":3021},[2848,11780,3234],{"class":2998},[2848,11782,11783],{"class":2850,"line":4746},[2848,11784,3299],{"class":2998},[2848,11786,11787],{"class":2850,"line":4756},[2848,11788,3478],{"class":2998},[2963,11790],{},[2794,11792,11794],{"id":11793},"практика","Практика",[11796,11797,11798,11802,11805,12034,12038,12041,12099,12111,12115,12118,12156],"steps",{},[2970,11799,11801],{"id":11800},"рівень-1-рефакторинг-scss-у-native-css","Рівень 1 — Рефакторинг SCSS у Native CSS",[2799,11803,11804],{},"Перепишіть цей SCSS у нативний CSS, зберігши всю функціональність:",[2840,11806,11808],{"className":5790,"code":11807,"language":5793,"meta":2844,"style":2844},".nav {\n  display: flex;\n  gap: 0.5rem;\n  padding: 0.75rem;\n  background: #1e293b;\n\n  &__link {\n    color: #94a3b8;\n    padding: 0.5rem 1rem;\n    border-radius: 6px;\n    text-decoration: none;\n    transition: all 0.15s;\n\n    &:hover { color: white; background: rgba(255,255,255,0.1); }\n    &.active { color: white; background: #6366f1; }\n  }\n\n  @include respond-to('sm') {\n    flex-direction: column;\n  }\n}\n",[2815,11809,11810,11817,11827,11837,11847,11857,11861,11870,11880,11893,11903,11914,11927,11931,11971,11995,11999,12003,12016,12026,12030],{"__ignoreMap":2844},[2848,11811,11812,11815],{"class":2850,"line":2851},[2848,11813,11814],{"class":2994},".nav",[2848,11816,3222],{"class":2998},[2848,11818,11819,11821,11823,11825],{"class":2850,"line":2857},[2848,11820,3877],{"class":3002},[2848,11822,3006],{"class":2998},[2848,11824,3882],{"class":3009},[2848,11826,3234],{"class":2998},[2848,11828,11829,11831,11833,11835],{"class":2850,"line":2863},[2848,11830,3889],{"class":3002},[2848,11832,3006],{"class":2998},[2848,11834,4609],{"class":3021},[2848,11836,3234],{"class":2998},[2848,11838,11839,11841,11843,11845],{"class":2850,"line":2869},[2848,11840,3912],{"class":3002},[2848,11842,3006],{"class":2998},[2848,11844,3187],{"class":3021},[2848,11846,3234],{"class":2998},[2848,11848,11849,11851,11853,11855],{"class":2850,"line":2875},[2848,11850,3227],{"class":3002},[2848,11852,3006],{"class":2998},[2848,11854,3114],{"class":3009},[2848,11856,3234],{"class":2998},[2848,11858,11859],{"class":2850,"line":2881},[2848,11860,3251],{"emptyLinePlaceholder":3250},[2848,11862,11863,11865,11868],{"class":2850,"line":2887},[2848,11864,3313],{"class":3508},[2848,11866,11867],{"class":3002},"__link",[2848,11869,3222],{"class":2998},[2848,11871,11872,11874,11876,11878],{"class":2850,"line":2893},[2848,11873,3373],{"class":3002},[2848,11875,3006],{"class":2998},[2848,11877,7574],{"class":3009},[2848,11879,3234],{"class":2998},[2848,11881,11882,11884,11886,11888,11891],{"class":2850,"line":2899},[2848,11883,4225],{"class":3002},[2848,11885,3006],{"class":2998},[2848,11887,4609],{"class":3021},[2848,11889,11890],{"class":3021}," 1rem",[2848,11892,3234],{"class":2998},[2848,11894,11895,11897,11899,11901],{"class":2850,"line":2905},[2848,11896,4265],{"class":3002},[2848,11898,3006],{"class":2998},[2848,11900,4659],{"class":3021},[2848,11902,3234],{"class":2998},[2848,11904,11905,11908,11910,11912],{"class":2850,"line":2911},[2848,11906,11907],{"class":3002},"    text-decoration",[2848,11909,3006],{"class":2998},[2848,11911,6681],{"class":3009},[2848,11913,3234],{"class":2998},[2848,11915,11916,11919,11921,11923,11925],{"class":2850,"line":2917},[2848,11917,11918],{"class":3002},"    transition",[2848,11920,3006],{"class":2998},[2848,11922,4733],{"class":3009},[2848,11924,4736],{"class":3021},[2848,11926,3234],{"class":2998},[2848,11928,11929],{"class":2850,"line":2923},[2848,11930,3251],{"emptyLinePlaceholder":3250},[2848,11932,11933,11935,11937,11939,11941,11943,11945,11947,11949,11951,11953,11955,11957,11959,11961,11963,11965,11967,11969],{"class":2850,"line":2928},[2848,11934,4308],{"class":3508},[2848,11936,5865],{"class":2994},[2848,11938,2999],{"class":2998},[2848,11940,3109],{"class":3002},[2848,11942,3006],{"class":2998},[2848,11944,3010],{"class":3009},[2848,11946,3013],{"class":2998},[2848,11948,3003],{"class":3002},[2848,11950,3006],{"class":2998},[2848,11952,5555],{"class":3049},[2848,11954,3053],{"class":2998},[2848,11956,5560],{"class":3021},[2848,11958,3058],{"class":2998},[2848,11960,5560],{"class":3021},[2848,11962,3058],{"class":2998},[2848,11964,5560],{"class":3021},[2848,11966,3058],{"class":2998},[2848,11968,3069],{"class":3021},[2848,11970,3072],{"class":2998},[2848,11972,11973,11975,11977,11979,11981,11983,11985,11987,11989,11991,11993],{"class":2850,"line":2934},[2848,11974,4308],{"class":3508},[2848,11976,3316],{"class":2994},[2848,11978,2999],{"class":2998},[2848,11980,3109],{"class":3002},[2848,11982,3006],{"class":2998},[2848,11984,3010],{"class":3009},[2848,11986,3013],{"class":2998},[2848,11988,3003],{"class":3002},[2848,11990,3006],{"class":2998},[2848,11992,3087],{"class":3009},[2848,11994,3025],{"class":2998},[2848,11996,11997],{"class":2850,"line":2940},[2848,11998,3299],{"class":2998},[2848,12000,12001],{"class":2850,"line":2946},[2848,12002,3251],{"emptyLinePlaceholder":3250},[2848,12004,12005,12007,12009,12011,12014],{"class":2850,"line":2952},[2848,12006,6071],{"class":5006},[2848,12008,6074],{"class":3049},[2848,12010,3053],{"class":2998},[2848,12012,12013],{"class":3451},"'sm'",[2848,12015,4972],{"class":2998},[2848,12017,12018,12020,12022,12024],{"class":2850,"line":2958},[2848,12019,8816],{"class":3002},[2848,12021,3006],{"class":2998},[2848,12023,5315],{"class":3009},[2848,12025,3234],{"class":2998},[2848,12027,12028],{"class":2850,"line":3382},[2848,12029,3299],{"class":2998},[2848,12031,12032],{"class":2850,"line":3387},[2848,12033,3478],{"class":2998},[2970,12035,12037],{"id":12036},"рівень-2-layer-система-з-пріоритетами","Рівень 2 — @layer система з пріоритетами",[2799,12039,12040],{},"Створіть CSS-систему для бібліотеки компонентів:",[12042,12043,12044,12060,12072,12086,12094],"ol",{},[12045,12046,12047,12048,3281,12051,3281,12054,3281,12057],"li",{},"Оголосіть шари: ",[2815,12049,12050],{},"reset",[2815,12052,12053],{},"tokens",[2815,12055,12056],{},"components",[2815,12058,12059],{},"overrides",[12045,12061,12062,12063,12065,12066,3281,12068,3281,12070],{},"У ",[2815,12064,12050],{}," — скидання ",[2815,12067,5484],{},[2815,12069,3141],{},[2815,12071,6544],{},[12045,12073,12062,12074,12076,12077,3281,12080,3281,12083],{},[2815,12075,12053],{}," — змінні ",[2815,12078,12079],{},"--color-primary",[2815,12081,12082],{},"--spacing-base",[2815,12084,12085],{},"--radius",[12045,12087,12062,12088,12090,12091,12093],{},[2815,12089,12056],{}," — компонент ",[2815,12092,2995],{}," з базовими стилями",[12045,12095,12062,12096,12098],{},[2815,12097,12059],{}," — темна тема, що перевизначає кольори картки",[2799,12100,12101,12102,12104,12105,12107,12108,6455],{},"Переконайтесь, що ",[2815,12103,12059],{}," перемагає ",[2815,12106,12056],{}," без ",[2815,12109,12110],{},"!important",[2970,12112,12114],{"id":12113},"рівень-3-анімована-картка-через-property","Рівень 3 — Анімована картка через @property",[2799,12116,12117],{},"Створіть картку товару з такими анімованими властивостями:",[12119,12120,12121,12134,12147],"ul",{},[12045,12122,12123,12126,12127,12130,12131,12133],{},[2815,12124,12125],{},"--card-elevation"," (тип ",[2815,12128,12129],{},"\u003Cnumber>",") — анімує ",[2815,12132,3035],{}," при hover",[12045,12135,12136,12126,12139,12142,12143,10575,12145,12133],{},[2815,12137,12138],{},"--card-accent",[2815,12140,12141],{},"\u003Ccolor>",") — анімує колір акцентного бордера від ",[2815,12144,4864],{},[2815,12146,3087],{},[12045,12148,12149,12126,12152,12155],{},[2815,12150,12151],{},"--badge-progress",[2815,12153,12154],{},"\u003Cpercentage>",") — запускає conic-gradient «прогрес» при завантаженні сторінки",[2799,12157,12158,12159,12161],{},"Використайте ",[2815,12160,2831],{}," + CSS Nesting для компактного коду.",[2963,12163],{},[2794,12165,12167],{"id":12166},"підсумок","Підсумок",[12169,12170,12171,12182,12193,12204],"card-group",{},[12172,12173,12176,12178,12179,12181],"card",{"icon":12174,"title":12175},"i-lucide-git-branch","🔗 CSS Nesting",[2815,12177,3484],{}," посилається на батьківський селектор. Вкладайте псевдокласи, псевдоелементи, модифікатори та ",[2815,12180,4913],{}," прямо у правило компонента. Chrome 112+, FF 117+, Safari 17+.",[12172,12183,12185,12186,12189,12190,6455],{"icon":943,"title":12184},"📚 @layer","Явний пріоритет каскадного шару: ",[2815,12187,12188],{},"@layer base, components, utilities",". Стилі вище у списку — нижчий пріоритет. Без шару — найвищий. Ізолюйте бібліотеки через ",[2815,12191,12192],{},"@import ... layer(third-party)",[12172,12194,12197,12200,12201,12203],{"icon":12195,"title":12196},"i-lucide-shield","🔒 @scope",[2815,12198,12199],{},"@scope (.card) { .title { } }"," — стилі діють лише всередині ",[2815,12202,2995],{},". Замінює BEM-префікси та CSS Modules для базових сценаріїв. Chrome 118+, Safari 17.4+.",[12172,12205,12207,12208,3281,12211,3281,12214,12217,12218,8052,12221,3281,12224,3281,12227,12230,12231,12233],{"icon":92,"title":12206},"⚡ @property","Типізовані custom properties: ",[2815,12209,12210],{},"syntax",[2815,12212,12213],{},"inherits",[2815,12215,12216],{},"initial-value",". Дозволяє ",[2806,12219,12220],{},"анімувати",[2815,12222,12223],{},"var(--color)",[2815,12225,12226],{},"var(--progress)",[2815,12228,12229],{},"var(--angle)",". Без ",[2815,12232,2831],{}," — лише статичні значення.",[12235,12236,12237],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spJ8K, html code.shiki .spJ8K{--shiki-light:#008000;--shiki-default:#6A9955;--shiki-dark:#6A9955}html pre.shiki code .sqdDX, html code.shiki .sqdDX{--shiki-light:#800000;--shiki-default:#D7BA7D;--shiki-dark:#D7BA7D}html pre.shiki code .sHH4Y, html code.shiki .sHH4Y{--shiki-light:#000000;--shiki-default:#D4D4D4;--shiki-dark:#D4D4D4}html pre.shiki code .sa4r_, html code.shiki .sa4r_{--shiki-light:#E50000;--shiki-default:#9CDCFE;--shiki-dark:#9CDCFE}html pre.shiki code .sDUd3, html code.shiki .sDUd3{--shiki-light:#0451A5;--shiki-default:#CE9178;--shiki-dark:#CE9178}html pre.shiki code .sJj4R, html code.shiki .sJj4R{--shiki-light:#098658;--shiki-default:#B5CEA8;--shiki-dark:#B5CEA8}html pre.shiki code .s8Opu, html code.shiki .s8Opu{--shiki-light:#795E26;--shiki-default:#DCDCAA;--shiki-dark:#DCDCAA}html pre.shiki code .sbdoH, html code.shiki .sbdoH{--shiki-light:#A31515;--shiki-default:#CE9178;--shiki-dark:#CE9178}html pre.shiki code .s0P7L, html code.shiki .s0P7L{--shiki-light:#800000;--shiki-default:#808080;--shiki-dark:#808080}html pre.shiki code .sKtos, html code.shiki .sKtos{--shiki-light:#800000;--shiki-default:#569CD6;--shiki-dark:#569CD6}html pre.shiki code .su9tN, html code.shiki .su9tN{--shiki-light:#0000FF;--shiki-default:#CE9178;--shiki-dark:#CE9178}html pre.shiki code .se1LK, html code.shiki .se1LK{--shiki-light:#CD3131;--shiki-default:#F44747;--shiki-dark:#F44747}html pre.shiki code .sCDza, html code.shiki .sCDza{--shiki-light:#AF00DB;--shiki-default:#CE92A4;--shiki-dark:#CE92A4}html pre.shiki code .su1O8, html code.shiki .su1O8{--shiki-light:#0000FF;--shiki-default:#569CD6;--shiki-dark:#569CD6}",{"title":2844,"searchDepth":2857,"depth":2857,"links":12239},[12240,12241,12247,12253,12257,12264,12265,12270],{"id":2796,"depth":2857,"text":2797},{"id":2967,"depth":2857,"text":2968,"children":12242},[12243,12244,12245,12246],{"id":2972,"depth":2863,"text":2973},{"id":3198,"depth":2863,"text":3199},{"id":4906,"depth":2863,"text":4907},{"id":5783,"depth":2863,"text":5784},{"id":6460,"depth":2857,"text":12248,"children":12249},"@layer — Каскадні шари (Cascade Layers)",[12250,12251,12252],{"id":6466,"depth":2863,"text":6467},{"id":6495,"depth":2863,"text":6496},{"id":7926,"depth":2863,"text":7927},{"id":8064,"depth":2857,"text":12254,"children":12255},"@scope — Обмеження стилів",[12256],{"id":8070,"depth":2863,"text":8071},{"id":9222,"depth":2857,"text":12258,"children":12259},"@property — Типізовані Custom Properties",[12260,12261,12262],{"id":9228,"depth":2863,"text":9229},{"id":9375,"depth":2863,"text":9376},{"id":10591,"depth":2863,"text":12263},"@property для типізованих дефолтів",{"id":10740,"depth":2857,"text":10741},{"id":11793,"depth":2857,"text":11794,"children":12266},[12267,12268,12269],{"id":11800,"depth":2863,"text":11801},{"id":12036,"depth":2863,"text":12037},{"id":12113,"depth":2863,"text":12114},{"id":12166,"depth":2857,"text":12167},"Глибоке занурення у сучасний CSS-синтаксис: нативне вкладення правил (nesting), каскадні шари (@layer), обмеження стилів (@scope) та типізовані Custom Properties (@property). Замінюємо SCSS нативним CSS.","md",null,{},{"title":2720,"description":12271},"Z64ndoIBPuqwuCRKXtkdoxIhslkwG8Q4Q23DhT1qYGg",[12278,12280],{"title":2716,"path":2717,"stem":2718,"description":12279,"children":-1},"Огляд найсвіжіших CSS-специфікацій: :has() selector, CSS Anchor Positioning, Scroll-Driven Animations, @starting-style, color-mix(), light-dark(), View Transitions API, @scope, relative color syntax, і багато іншого.",{"title":2724,"path":2725,"stem":2726,"description":12281,"children":-1},"Повне керівництво зі стилізації HTML-форм: псевдокласи :focus-visible, :user-valid, :has(), accent-color, кастомні checkbox/radio/select, floating label патерн, валідація без JavaScript та нативний CSS-only дизайн форм.",1776866096070]