dsh-desktop-kit 0.0.0-stage → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +152 -2
  3. package/client.js +4101 -0
  4. package/cordis.patch.yml +5 -0
  5. package/docs/ARCHITECTURE.md +114 -0
  6. package/docs/COMPATIBILITY.md +61 -0
  7. package/docs/INSTALL.md +84 -0
  8. package/docs/PRIVACY.md +50 -0
  9. package/docs/ROADMAP.md +57 -0
  10. package/docs/TOKENS.md +118 -0
  11. package/docs/TROUBLESHOOTING.md +68 -0
  12. package/docs/images/hero.png +0 -0
  13. package/index.js +84 -0
  14. package/package.json +70 -4
  15. package/plugins/dsh-gkb-ru-ui/cordis.patch.yml +6 -0
  16. package/plugins/dsh-gkb-ru-ui/lib/client.js +1331 -0
  17. package/plugins/dsh-gkb-ru-ui/lib/index.js +186 -0
  18. package/plugins/dsh-gkb-ru-ui/lib/skills.js +570 -0
  19. package/plugins/dsh-gkb-ru-ui/package.json +28 -0
  20. package/plugins/dsh-gkb-ru-ui/screenshots/01-home-tiles-1440-light.png +0 -0
  21. package/plugins/dsh-gkb-ru-ui/screenshots/02-skills-1440-light.png +0 -0
  22. package/plugins/dsh-gkb-ru-ui/screenshots/03-skills-editor-1440-light.png +0 -0
  23. package/plugins/dsh-gkb-ru-ui/screenshots/04-skills-1440-dark.png +0 -0
  24. package/plugins/dsh-gkb-ru-ui/screenshots/05-skills-390-light.png +0 -0
  25. package/plugins/dsh-gkb-ru-ui/screenshots/06-home-tiles-1440-dark.png +0 -0
  26. package/plugins/dsh-peak-guard/README.md +70 -0
  27. package/plugins/dsh-peak-guard/client.js +741 -0
  28. package/plugins/dsh-peak-guard/cordis.patch.yml +5 -0
  29. package/plugins/dsh-peak-guard/icon.svg +12 -0
  30. package/plugins/dsh-peak-guard/index.js +2 -0
  31. package/plugins/dsh-peak-guard/locale/en.json +6 -0
  32. package/plugins/dsh-peak-guard/locale/ru.json +6 -0
  33. package/plugins/dsh-peak-guard/locale/zh.json +6 -0
  34. package/plugins/dsh-peak-guard/package.json +33 -0
  35. package/plugins/dsh-peak-guard/screenshots/01-real-time-peak-start.png +0 -0
  36. package/plugins/dsh-peak-guard/screenshots/02-real-time-peak-end.png +0 -0
  37. package/plugins/dsh-peak-guard/screenshots/03-peak-card-1440-light.png +0 -0
  38. package/plugins/dsh-peak-guard/screenshots/04-peak-card-1440-dark.png +0 -0
  39. package/plugins/dsh-peak-guard/screenshots/05-peak-card-390-light.png +0 -0
  40. package/plugins/dsh-peak-guard/screenshots/05-peak-card-768-light.png +0 -0
  41. package/plugins/dsh-peak-guard/screenshots/06-peak-card-390-light.png +0 -0
  42. package/plugins/dsh-peak-guard/screenshots/07-live-preview-check.png +0 -0
  43. package/plugins/dsh-peak-guard/screenshots/07-pre-peak-1440-light.png +0 -0
  44. package/plugins/dsh-peak-guard/screenshots/08-peak-start-1440-light.png +0 -0
  45. package/plugins/dsh-peak-guard/screenshots/09-peak-end-1440-light.png +0 -0
  46. package/plugins/dsh-peak-guard/screenshots/10-pre-peak-card-1440-light.png +0 -0
  47. package/plugins/dsh-peak-guard/screenshots/11-pre-peak-card-1440-dark.png +0 -0
  48. package/plugins/dsh-peak-guard/screenshots/12-pre-peak-card-390-light.png +0 -0
  49. package/plugins/dsh-peak-guard/screenshots/qa-report.json +74 -0
  50. package/plugins/dsh-profile-transfer/README.md +62 -0
  51. package/plugins/dsh-profile-transfer/bootstrap/01-INSTALL.cmd +7 -0
  52. package/plugins/dsh-profile-transfer/bootstrap/README-ARCHIVE.md +54 -0
  53. package/plugins/dsh-profile-transfer/bootstrap/README-/320/243/320/241/320/242/320/220/320/235/320/236/320/222/320/232/320/220.md +42 -0
  54. package/plugins/dsh-profile-transfer/bootstrap/install-on-clean-machine.ps1 +119 -0
  55. package/plugins/dsh-profile-transfer/bootstrap//320/243/320/241/320/242/320/220/320/235/320/236/320/222/320/230/320/242/320/254.cmd +5 -0
  56. package/plugins/dsh-profile-transfer/client.js +806 -0
  57. package/plugins/dsh-profile-transfer/cordis.patch.yml +3 -0
  58. package/plugins/dsh-profile-transfer/icon.svg +13 -0
  59. package/plugins/dsh-profile-transfer/index.js +375 -0
  60. package/plugins/dsh-profile-transfer/locale/en.json +6 -0
  61. package/plugins/dsh-profile-transfer/locale/ru.json +6 -0
  62. package/plugins/dsh-profile-transfer/locale/zh.json +6 -0
  63. package/plugins/dsh-profile-transfer/package.json +36 -0
  64. package/plugins/dsh-profile-transfer/screenshots/01-settings-transfer-1440-light.png +0 -0
  65. package/plugins/dsh-profile-transfer/screenshots/02-settings-transfer-preview-1440-light.png +0 -0
  66. package/plugins/dsh-profile-transfer/screenshots/03-settings-transfer-1440-dark.png +0 -0
  67. package/plugins/dsh-profile-transfer/screenshots/04-settings-transfer-390-light.png +0 -0
  68. package/plugins/dsh-profile-transfer/screenshots/05-settings-transfer-768-light.png +0 -0
  69. package/plugins/dsh-profile-transfer/screenshots/06-settings-transfer-390-dark.png +0 -0
  70. package/plugins/dsh-profile-transfer/screenshots/07-settings-transfer-export-result.png +0 -0
  71. package/plugins/dsh-profile-transfer/screenshots/08-settings-transfer-workspaces-1440-light.png +0 -0
  72. package/plugins/dsh-profile-transfer/screenshots/09-settings-transfer-workspaces-1440-dark.png +0 -0
  73. package/plugins/dsh-profile-transfer/screenshots/10-settings-transfer-workspaces-390-light.png +0 -0
  74. package/plugins/dsh-profile-transfer/transfer.js +1004 -0
  75. package/plugins/dsh-project-memory/README.md +71 -0
  76. package/plugins/dsh-project-memory/cordis.patch.yml +4 -0
  77. package/plugins/dsh-project-memory/icon.svg +12 -0
  78. package/plugins/dsh-project-memory/index.js +1240 -0
  79. package/plugins/dsh-project-memory/locale/en.json +6 -0
  80. package/plugins/dsh-project-memory/locale/ru.json +6 -0
  81. package/plugins/dsh-project-memory/locale/zh.json +6 -0
  82. package/plugins/dsh-project-memory/package.json +26 -0
  83. package/plugins/dsh-session-move/README.md +67 -0
  84. package/plugins/dsh-session-move/client.js +719 -0
  85. package/plugins/dsh-session-move/cordis.patch.yml +5 -0
  86. package/plugins/dsh-session-move/icon.svg +14 -0
  87. package/plugins/dsh-session-move/index.js +497 -0
  88. package/plugins/dsh-session-move/locale/en.json +6 -0
  89. package/plugins/dsh-session-move/locale/ru.json +6 -0
  90. package/plugins/dsh-session-move/locale/zh.json +6 -0
  91. package/plugins/dsh-session-move/package.json +31 -0
  92. package/plugins/dsh-session-move/screenshots/01-row-menu-1440-light.png +0 -0
  93. package/plugins/dsh-session-move/screenshots/02-dialog-1440-light.png +0 -0
  94. package/plugins/dsh-session-move/screenshots/03-dialog-390-light.png +0 -0
  95. package/plugins/dsh-session-move/screenshots/04-dialog-1440-dark.png +0 -0
  96. package/plugins/dsh-session-move/screenshots/05-drag-highlight-1440-light.png +0 -0
  97. package/plugins/dsh-session-move/screenshots/06-drop-ungrouped-highlight.png +0 -0
  98. package/plugins/dsh-session-move/screenshots/07-after-drop-ungrouped.png +0 -0
  99. package/plugins/dsh-session-move/screenshots/08-move-dialog.png +0 -0
  100. package/plugins/dsh-session-move/screenshots/09-moved-to-second-workspace.png +0 -0
  101. package/plugins/dsh-session-move/screenshots/qa-report.json +62 -0
  102. package/plugins/dsh-skill-autopilot/cordis.patch.yml +3 -0
  103. package/plugins/dsh-skill-autopilot/index.js +444 -0
  104. package/plugins/dsh-skill-autopilot/package.json +19 -0
  105. package/plugins/dsh-token-lab/cordis.patch.yml +3 -0
  106. package/plugins/dsh-token-lab/lib/client.js +504 -0
  107. package/plugins/dsh-token-lab/lib/index.js +275 -0
  108. package/plugins/dsh-token-lab/package.json +26 -0
  109. package/plugins/dsh-token-lab/screenshots/01-token-lab-1440-light.png +0 -0
  110. package/plugins/dsh-token-lab/screenshots/02-token-lab-1440-dark.png +0 -0
  111. package/skills/code-review-checklist/SKILL.md +55 -0
  112. package/skills/content-writing/README.md +87 -0
  113. package/skills/content-writing/SKILL.md +85 -0
  114. package/skills/content-writing/assets/checklists/fact-check.md +53 -0
  115. package/skills/content-writing/assets/checklists/publish.md +65 -0
  116. package/skills/content-writing/assets/checklists/social.md +40 -0
  117. package/skills/content-writing/assets/templates/article.md +47 -0
  118. package/skills/content-writing/assets/templates/brief.md +44 -0
  119. package/skills/content-writing/assets/templates/doctor-card.md +41 -0
  120. package/skills/content-writing/assets/templates/image-prompts.md +128 -0
  121. package/skills/content-writing/assets/templates/post-telegram.md +36 -0
  122. package/skills/content-writing/assets/templates/post-vk.md +42 -0
  123. package/skills/content-writing/assets/templates/press-release.md +56 -0
  124. package/skills/content-writing/assets/templates/science-pop-note.md +55 -0
  125. package/skills/content-writing/assets/templates/service-card.md +46 -0
  126. package/skills/content-writing/references/anti-ai-style.md +248 -0
  127. package/skills/content-writing/references/editing.md +185 -0
  128. package/skills/content-writing/references/fact-checking.md +205 -0
  129. package/skills/content-writing/references/government-medical.md +246 -0
  130. package/skills/content-writing/references/images.md +212 -0
  131. package/skills/content-writing/references/journalism.md +252 -0
  132. package/skills/content-writing/references/process.md +123 -0
  133. package/skills/content-writing/references/quick-recipes.md +99 -0
  134. package/skills/content-writing/references/rules.md +85 -0
  135. package/skills/content-writing/references/science-popular.md +218 -0
  136. package/skills/content-writing/references/seo-content.md +172 -0
  137. package/skills/content-writing/references/social-media.md +253 -0
  138. package/skills/content-writing/references/sources.md +49 -0
  139. package/skills/content-writing/references/templates.md +291 -0
  140. package/skills/context-economy/SKILL.md +60 -0
  141. package/skills/context-economy/references/long-session.md +35 -0
  142. package/skills/context-economy/references/token-math.md +42 -0
  143. package/skills/context-economy/references/tool-recipes.md +34 -0
  144. package/skills/database-safety/SKILL.md +47 -0
  145. package/skills/debugging-playbook/SKILL.md +42 -0
  146. package/skills/design-critique/SKILL.md +65 -0
  147. package/skills/design-critique/references/a11y.md +25 -0
  148. package/skills/design-critique/references/diagnoses.md +33 -0
  149. package/skills/design-critique/references/quick-tests.md +30 -0
  150. package/skills/design-critique/references/report-template.md +63 -0
  151. package/skills/design-critique/references/rubric-fast.md +73 -0
  152. package/skills/dev-workflow/SKILL.md +48 -0
  153. package/skills/dev-workflow/references/definition-of-done.md +44 -0
  154. package/skills/dev-workflow/references/memory-and-boundaries.md +31 -0
  155. package/skills/dev-workflow/references/stages.md +67 -0
  156. package/skills/git-and-ci/SKILL.md +60 -0
  157. package/skills/pg-upgrade-verify/SKILL.md +67 -0
  158. package/skills/project-deep-dive/SKILL.md +45 -0
  159. package/skills/project-deep-dive/references/recon-commands.md +90 -0
  160. package/skills/project-deep-dive/references/section-templates.md +104 -0
  161. package/skills/project-deep-dive/references/tool-and-process.md +86 -0
  162. package/skills/project-memory-maintenance/SKILL.md +55 -0
  163. package/skills/project-memory-maintenance/references/api-and-checklist.md +99 -0
  164. package/skills/project-memory-maintenance/references/journal-template.md +50 -0
  165. package/skills/project-memory-maintenance/references/section-rules.md +59 -0
  166. package/skills/release-and-deploy/SKILL.md +53 -0
  167. package/skills/requirements-and-planning/SKILL.md +49 -0
  168. package/skills/requirements-and-planning/references/antipatterns-and-checklist.md +20 -0
  169. package/skills/requirements-and-planning/references/process-steps.md +52 -0
  170. package/skills/requirements-and-planning/references/templates-and-estimates.md +29 -0
  171. package/skills/security-review/SKILL.md +40 -0
  172. package/skills/seo/README.md +60 -0
  173. package/skills/seo/SKILL.md +77 -0
  174. package/skills/seo/assets/README.md +66 -0
  175. package/skills/seo/assets/scripts/LICENSE-playwright-core.txt +202 -0
  176. package/skills/seo/assets/scripts/README.md +179 -0
  177. package/skills/seo/assets/scripts/lib/args.mjs +105 -0
  178. package/skills/seo/assets/scripts/lib/browser.mjs +620 -0
  179. package/skills/seo/assets/scripts/lib/zip.mjs +191 -0
  180. package/skills/seo/assets/scripts/seo-audit.mjs +1675 -0
  181. package/skills/seo/assets/snippets/jsonld-breadcrumb.json +30 -0
  182. package/skills/seo/assets/snippets/jsonld-faq.json +39 -0
  183. package/skills/seo/assets/snippets/jsonld-medical-clinic.json +49 -0
  184. package/skills/seo/assets/snippets/jsonld-medical-webpage.json +33 -0
  185. package/skills/seo/assets/snippets/jsonld-organization.json +74 -0
  186. package/skills/seo/assets/snippets/jsonld-physician.json +46 -0
  187. package/skills/seo/assets/snippets/meta.blade.php +61 -0
  188. package/skills/seo/assets/snippets/robots.txt +61 -0
  189. package/skills/seo/assets/snippets/sitemap-urlset-example.xml +72 -0
  190. package/skills/seo/assets/snippets/sitemap.xml +36 -0
  191. package/skills/seo/references/antipatterns.md +66 -0
  192. package/skills/seo/references/audit-checklist.md +319 -0
  193. package/skills/seo/references/content-seo.md +204 -0
  194. package/skills/seo/references/eeat-medical.md +219 -0
  195. package/skills/seo/references/measurement.md +250 -0
  196. package/skills/seo/references/on-page.md +214 -0
  197. package/skills/seo/references/page-templates.md +56 -0
  198. package/skills/seo/references/stack-recipes.md +695 -0
  199. package/skills/seo/references/structured-data.md +487 -0
  200. package/skills/seo/references/technical-seo.md +296 -0
  201. package/skills/service-desk-conventions/SKILL.md +52 -0
  202. package/skills/service-desk-db-safety/SKILL.md +63 -0
  203. package/skills/service-desk-release/SKILL.md +61 -0
  204. package/skills/service-desk-testing/SKILL.md +61 -0
  205. package/skills/service-desk-ui/SKILL.md +52 -0
  206. package/skills/skills-router/SKILL.md +53 -0
  207. package/skills/skills-router/references/applying-skills.md +25 -0
  208. package/skills/skills-router/references/routing-matrix.md +52 -0
  209. package/skills/testing-strategy/SKILL.md +52 -0
  210. package/skills/ui-design-system/SKILL.md +50 -0
  211. package/skills/ui-design-system/references/accessibility-and-responsive.md +50 -0
  212. package/skills/ui-design-system/references/tokens-and-components.md +67 -0
  213. package/skills/ui-design-system/references/visual-qa.md +44 -0
  214. package/skills/web-research/SKILL.md +47 -0
  215. package/skills/web-research/references/answer-and-citations.md +60 -0
  216. package/skills/web-research/references/query-recipes.md +44 -0
  217. package/skills/wow-design/SKILL.md +89 -0
  218. package/skills/wow-design/assets/kit/README.md +195 -0
  219. package/skills/wow-design/assets/kit/assets/css/base.css +158 -0
  220. package/skills/wow-design/assets/kit/assets/css/components.css +1001 -0
  221. package/skills/wow-design/assets/kit/assets/css/fonts.css +73 -0
  222. package/skills/wow-design/assets/kit/assets/css/pages.css +737 -0
  223. package/skills/wow-design/assets/kit/assets/css/tokens.css +218 -0
  224. package/skills/wow-design/assets/kit/assets/fonts/LICENSE-golos-text.txt +93 -0
  225. package/skills/wow-design/assets/kit/assets/fonts/LICENSE-lora.txt +93 -0
  226. package/skills/wow-design/assets/kit/assets/fonts/LICENSE-unbounded.txt +93 -0
  227. package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-400-normal.woff2 +0 -0
  228. package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-500-normal.woff2 +0 -0
  229. package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-600-normal.woff2 +0 -0
  230. package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-700-normal.woff2 +0 -0
  231. package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-400-normal.woff2 +0 -0
  232. package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-500-normal.woff2 +0 -0
  233. package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-600-normal.woff2 +0 -0
  234. package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-700-normal.woff2 +0 -0
  235. package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-400-italic.woff2 +0 -0
  236. package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-400-normal.woff2 +0 -0
  237. package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-500-normal.woff2 +0 -0
  238. package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-600-normal.woff2 +0 -0
  239. package/skills/wow-design/assets/kit/assets/fonts/lora-latin-400-normal.woff2 +0 -0
  240. package/skills/wow-design/assets/kit/assets/fonts/lora-latin-500-normal.woff2 +0 -0
  241. package/skills/wow-design/assets/kit/assets/fonts/lora-latin-600-normal.woff2 +0 -0
  242. package/skills/wow-design/assets/kit/assets/fonts/unbounded-cyrillic-400-normal.woff2 +0 -0
  243. package/skills/wow-design/assets/kit/assets/fonts/unbounded-cyrillic-500-normal.woff2 +0 -0
  244. package/skills/wow-design/assets/kit/assets/fonts/unbounded-cyrillic-600-normal.woff2 +0 -0
  245. package/skills/wow-design/assets/kit/assets/fonts/unbounded-latin-400-normal.woff2 +0 -0
  246. package/skills/wow-design/assets/kit/assets/fonts/unbounded-latin-500-normal.woff2 +0 -0
  247. package/skills/wow-design/assets/kit/assets/fonts/unbounded-latin-600-normal.woff2 +0 -0
  248. package/skills/wow-design/assets/kit/assets/js/kit.js +550 -0
  249. package/skills/wow-design/assets/kit/pages/dashboard.html +539 -0
  250. package/skills/wow-design/assets/kit/pages/hospital.html +430 -0
  251. package/skills/wow-design/assets/kit/showcase.html +1164 -0
  252. package/skills/wow-design/assets/scripts/LICENSE-axe-core.txt +362 -0
  253. package/skills/wow-design/assets/scripts/LICENSE-playwright-core.txt +202 -0
  254. package/skills/wow-design/assets/scripts/README.md +312 -0
  255. package/skills/wow-design/assets/scripts/audit.mjs +1200 -0
  256. package/skills/wow-design/assets/scripts/capture.mjs +337 -0
  257. package/skills/wow-design/assets/scripts/package.json +30 -0
  258. package/skills/wow-design/references/anti-patterns.md +252 -0
  259. package/skills/wow-design/references/critique-rubric.md +262 -0
  260. package/skills/wow-design/references/design-brief-template.md +48 -0
  261. package/skills/wow-design/references/inspiration.md +203 -0
  262. package/skills/wow-design/references/presets.md +99 -0
  263. package/skills/wow-design/references/principles.md +371 -0
  264. package/skills/wow-design/references/quick-presets.md +50 -0
  265. package/skills/wow-design/references/report-template.md +21 -0
  266. package/skills/wow-design/references/stack-recipes.md +96 -0
  267. package/skills/wow-design/references/visual-qa.md +82 -0
  268. package/skills/wow-design/references/wow-levers.md +43 -0
  269. package/tools/skill-cost.mjs +76 -0
@@ -0,0 +1,737 @@
1
+ /* ==========================================================================
2
+ AURORA · PAGES · v1.0 · 2026-11-04
3
+ Стили эталонных страниц: showcase, hospital, dashboard, auth.
4
+ Только токены. Каждая часть изолирована префиксами классов.
5
+ ========================================================================== */
6
+
7
+ /* ==========================================================================
8
+ ОБЩИЙ КАРКАС ДЕМО-СТРАНИЦ
9
+ ========================================================================== */
10
+ html{scroll-padding-top:calc(var(--header-h) + 24px)}
11
+ body.page-shell{overflow-x:clip}
12
+
13
+ /* Переключатель темы: в светлой теме показываем «луну», в тёмной — «солнце» */
14
+ .theme-toggle .icon-sun{display:none}
15
+ .theme-toggle .icon-moon{display:block}
16
+ [data-theme="dark"] .theme-toggle .icon-sun{display:block}
17
+ [data-theme="dark"] .theme-toggle .icon-moon{display:none}
18
+
19
+ /* Шапка-сайт */
20
+ .site-header{
21
+ position:sticky;top:0;z-index:var(--z-header);
22
+ background:var(--bg);
23
+ border-bottom:1px solid transparent;
24
+ transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease);
25
+ }
26
+ .site-header.is-scrolled{border-bottom-color:var(--line);box-shadow:var(--shadow-xs)}
27
+ .site-header__inner{display:flex;align-items:center;gap:clamp(16px,2.4vw,32px);min-height:var(--header-h)}
28
+ .site-header__brand{display:inline-flex;align-items:center;gap:var(--sp-3);text-decoration:none;color:var(--ink);flex:none}
29
+ .site-header__mark{
30
+ display:grid;place-items:center;width:38px;height:38px;flex:none;
31
+ border:1px solid var(--line-strong);border-radius:var(--radius-sm);
32
+ font-family:var(--font-display);font-size:var(--text-md);font-weight:600;
33
+ letter-spacing:-.03em;line-height:1;
34
+ }
35
+ .site-header__word{display:flex;flex-direction:column;gap:1px;line-height:1.15}
36
+ .site-header__word b{font-family:var(--font-display);font-size:var(--text-lg);font-weight:500;letter-spacing:-.02em}
37
+ .site-header__word span{font-size:var(--text-2xs);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
38
+ .site-header__nav{display:flex;align-items:center;gap:var(--sp-1);margin-left:var(--sp-6)}
39
+ .site-header__link{
40
+ padding:8px var(--sp-3);border-radius:var(--radius-sm);
41
+ color:var(--muted);font-size:var(--text-sm);font-weight:500;text-decoration:none;
42
+ transition:color var(--dur) var(--ease),background-color var(--dur) var(--ease);
43
+ }
44
+ .site-header__link:hover{color:var(--ink);background:var(--bg-alt)}
45
+ .site-header__link[aria-current]{color:var(--ink);font-weight:600}
46
+ .site-header__actions{display:flex;align-items:center;gap:var(--sp-2)}
47
+ .site-header__cta{display:inline-flex}
48
+ .preset-switch{margin-left:auto}
49
+
50
+ /* Футер демо-страниц */
51
+ .demo-footer{border-top:1px solid var(--line);padding-block:var(--sp-8);background:var(--bg-alt)}
52
+ .demo-footer__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-4)}
53
+ .demo-footer__brand{display:flex;align-items:center;gap:var(--sp-3);font-size:var(--text-sm);color:var(--ink-2)}
54
+ .demo-footer__brand b{font-family:var(--font-display);font-weight:500}
55
+ .demo-footer__meta{font-size:var(--text-xs);color:var(--muted);display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4)}
56
+ .demo-footer a{color:var(--muted);text-decoration:none}
57
+ .demo-footer a:hover{color:var(--accent)}
58
+
59
+ /* Метка-заголовок секции витрины */
60
+ .spec-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-3) var(--sp-5);margin-bottom:var(--sp-6)}
61
+ .spec-head h2{font-size:var(--display-s)}
62
+ .spec-head p{font-size:var(--text-sm);color:var(--muted);max-width:52ch}
63
+ .spec-head .spec-num{
64
+ font-family:var(--font-mono);font-size:var(--text-xs);color:var(--accent-ink);
65
+ letter-spacing:.06em;border:1px solid color-mix(in oklab,var(--accent) 28%,var(--line));
66
+ padding:3px 8px;border-radius:var(--radius-pill);background:var(--accent-soft);
67
+ }
68
+
69
+ /* ==========================================================================
70
+ SHOWCASE — витрина дизайн-системы
71
+ ========================================================================== */
72
+ .show-header__nav{overflow-x:auto;scrollbar-width:none}
73
+ .show-header__nav::-webkit-scrollbar{display:none}
74
+
75
+ /* Управление пресетом: горизонтальная лента кнопок */
76
+ .preset-switch{display:inline-flex;gap:2px;padding:3px;background:var(--bg-alt);border:1px solid var(--line);border-radius:var(--radius-control);max-width:100%;overflow-x:auto;scrollbar-width:none}
77
+ .preset-switch::-webkit-scrollbar{display:none}
78
+ .preset-switch__btn{
79
+ min-height:32px;padding:0 11px;border-radius:max(2px,calc(var(--radius-control) - 3px));
80
+ color:var(--muted);font-size:var(--text-xs);font-weight:600;letter-spacing:.01em;
81
+ white-space:nowrap;transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease),box-shadow var(--dur) var(--ease);
82
+ }
83
+ .preset-switch__btn:hover{color:var(--ink)}
84
+ .preset-switch__btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}
85
+ .preset-switch__btn[aria-pressed="true"]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-xs)}
86
+
87
+ /* --- Hero витрины --- */
88
+ .show-hero{
89
+ position:relative;
90
+ padding-block:clamp(48px,6vw,88px) clamp(56px,7vw,104px);
91
+ }
92
+ .show-hero__grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(32px,5vw,72px);align-items:center}
93
+ .show-hero__title{font-size:clamp(4rem,9.5vw,7.5rem);line-height:.9;letter-spacing:-.045em;margin-top:var(--sp-5)}
94
+ .show-hero__title em{font-style:italic;font-weight:400;color:var(--accent)}
95
+ .show-hero__lead{margin-top:var(--sp-6);max-width:46ch;font-size:clamp(1.0625rem,1.35vw,1.25rem)}
96
+ .show-hero__meta{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-7)}
97
+ .show-hero__meta .badge{height:28px;padding:0 11px;font-size:var(--text-xs);font-weight:500}
98
+
99
+ /* Типографский образец — «документ» на витрине */
100
+ .specimen{
101
+ position:relative;
102
+ display:flex;flex-direction:column;gap:0;
103
+ padding:clamp(20px,2.4vw,32px);
104
+ background:var(--surface);border:1px solid var(--line-strong);
105
+ border-radius:var(--radius-card);box-shadow:var(--shadow-sm);
106
+ }
107
+ .specimen::before,.specimen::after{content:"";position:absolute;width:16px;height:16px;border-color:var(--line-strong);border-style:solid;pointer-events:none}
108
+ .specimen::before{top:-5px;left:-5px;border-width:1px 0 0 1px}
109
+ .specimen::after{bottom:-5px;right:-5px;border-width:0 1px 1px 0}
110
+ .specimen__top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-4);padding-bottom:var(--sp-4);border-bottom:1px solid var(--line)}
111
+ .specimen__eyebrow{font-size:var(--text-2xs);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
112
+ .specimen__code{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--muted)}
113
+ .specimen__type{
114
+ display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-4);
115
+ padding-block:var(--sp-5) var(--sp-4);
116
+ }
117
+ .specimen__glyph{
118
+ font-family:var(--font-display);font-weight:var(--display-weight);
119
+ font-size:clamp(5rem,9vw,8.25rem);line-height:.78;letter-spacing:-.055em;
120
+ color:var(--ink);
121
+ }
122
+ .specimen__glyph-cyr{
123
+ font-size:.38em;letter-spacing:-.03em;color:var(--accent-ink);
124
+ margin-left:.12em;vertical-align:.06em;
125
+ }
126
+ .specimen__glyph .alt{color:var(--accent)}
127
+ .specimen__side{display:flex;flex-direction:column;align-items:flex-end;gap:2px;text-align:right;flex:none;padding-bottom:6px}
128
+ .specimen__side b{font-size:var(--text-2xs);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}
129
+ .specimen__side span{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--muted);line-height:1.6}
130
+ .specimen__rows{display:flex;flex-direction:column;border-top:1px solid var(--line)}
131
+ .specimen__row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);padding:9px 0;border-bottom:1px solid var(--line);font-size:var(--text-xs)}
132
+ .specimen__row:last-of-type{border-bottom:0}
133
+ .specimen__row dt{color:var(--muted);font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:.02em}
134
+ .specimen__row dd{margin:0;color:var(--ink-2);font-weight:500;text-align:right}
135
+ .specimen__chips{display:flex;gap:6px;margin-top:auto;padding-top:var(--sp-4)}
136
+ .specimen__chip{width:100%;height:9px;border-radius:2px;background:var(--chip-color,var(--line))}
137
+ .specimen__caption{margin-top:var(--sp-3);font-size:var(--text-2xs);color:var(--muted);display:flex;justify-content:space-between;gap:var(--sp-3)}
138
+
139
+ /* Принципы */
140
+ .principles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;border-top:1px solid var(--line)}
141
+ .principle{padding:var(--sp-6) var(--sp-6) var(--sp-7) 0;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:var(--sp-3)}
142
+ .principle:last-child{border-right:0;padding-right:0}
143
+ .principle:not(:first-child){padding-left:var(--sp-6)}
144
+ .principle__num{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--accent-ink);letter-spacing:.06em}
145
+ .principle__title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:500;letter-spacing:-.02em}
146
+ .principle__text{font-size:var(--text-sm);color:var(--muted);line-height:1.6;max-width:34ch}
147
+
148
+ /* --- Палитра --- */
149
+ .palette-group{margin-top:var(--sp-8)}
150
+ .palette-group:first-of-type{margin-top:0}
151
+ .palette-group__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--sp-2);margin-bottom:var(--sp-4)}
152
+ .palette-group__title{font-size:var(--text-lg);font-weight:600}
153
+ .palette-group__note{font-size:var(--text-xs);color:var(--muted)}
154
+ .palette{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:var(--sp-3)}
155
+ .swatch{
156
+ display:flex;flex-direction:column;text-align:left;
157
+ border:1px solid var(--line);border-radius:var(--radius-sm);
158
+ background:var(--surface);overflow:hidden;
159
+ transition:border-color var(--dur) var(--ease),transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease);
160
+ }
161
+ .swatch:hover{border-color:var(--line-strong);transform:translateY(-2px);box-shadow:var(--shadow-sm)}
162
+ .swatch:focus-visible{outline:none;box-shadow:var(--focus-ring)}
163
+ .swatch__color{height:74px;background:var(--swatch,var(--bg));border-bottom:1px solid var(--line);position:relative}
164
+ .swatch__color::after{content:"";position:absolute;inset:0;background:linear-gradient(160deg,rgb(255 255 255 / .06),transparent 55%)}
165
+ .swatch--border .swatch__color{outline:1px solid var(--line) inset;outline-offset:-1px}
166
+ .swatch__meta{padding:10px 11px 11px;display:flex;flex-direction:column;gap:2px}
167
+ .swatch__name{font-size:var(--text-xs);font-weight:600;color:var(--ink);line-height:1.3}
168
+ .swatch__hex{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--muted);letter-spacing:.02em}
169
+ .swatch__var{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
170
+
171
+ /* --- Типографика --- */
172
+ .type-specimen{border-top:1px solid var(--line)}
173
+ .type-row{
174
+ display:grid;grid-template-columns:180px minmax(0,1fr) 150px;gap:var(--sp-5);
175
+ align-items:baseline;padding:var(--sp-5) 0;border-bottom:1px solid var(--line);
176
+ }
177
+ .type-row__meta{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--muted);letter-spacing:.02em;line-height:1.7}
178
+ .type-row__meta b{display:block;color:var(--ink-2);font-family:var(--font-body);font-size:var(--text-xs);font-weight:600;letter-spacing:0}
179
+ .type-row__sample{min-width:0;color:var(--ink)}
180
+ .type-row__specs{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--muted);text-align:right;line-height:1.7}
181
+ .type-row__sample--display{font-family:var(--font-display);font-weight:var(--display-weight);letter-spacing:var(--display-tracking);line-height:1.02}
182
+ .measure-demo{margin-top:var(--sp-6);display:grid;grid-template-columns:minmax(0,66ch) auto;gap:var(--sp-4);align-items:start}
183
+ .measure-demo p{font-size:var(--text-md);line-height:var(--lh-relaxed);color:var(--ink-2)}
184
+ .measure-demo__label{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--accent-ink);border-top:1px solid var(--accent);padding-top:4px;white-space:nowrap}
185
+
186
+ /* --- Шкалы --- */
187
+ .scale-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-7) clamp(24px,4vw,56px)}
188
+ .scale-block{display:flex;flex-direction:column;gap:var(--sp-4);min-width:0}
189
+ .scale-block__head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3);padding-bottom:var(--sp-2);border-bottom:1px solid var(--line)}
190
+ .scale-block__title{font-size:var(--text-sm);font-weight:600}
191
+ .scale-block__note{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--muted)}
192
+ .spacing-rail{display:flex;align-items:flex-end;gap:var(--sp-3);flex-wrap:wrap}
193
+ .spacing-bar{display:flex;flex-direction:column;align-items:flex-start;gap:5px;min-width:0}
194
+ .spacing-bar i{display:block;height:10px;background:var(--accent);border-radius:1px;opacity:.85}
195
+ .spacing-bar span{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--muted);white-space:nowrap}
196
+ .radii-row{display:flex;flex-wrap:wrap;gap:var(--sp-4)}
197
+ .radius-tile{display:flex;flex-direction:column;gap:6px;align-items:center}
198
+ .radius-tile i{display:block;width:56px;height:56px;background:var(--surface);border:1px solid var(--line-strong);box-shadow:var(--shadow-xs)}
199
+ .radius-tile span{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--muted)}
200
+ .radius-tile--sm i{border-radius:var(--radius-sm)}
201
+ .radius-tile--control i{border-radius:var(--radius-control)}
202
+ .radius-tile--card i{border-radius:var(--radius-card)}
203
+ .radius-tile--lg i{border-radius:var(--radius-lg)}
204
+ .radius-tile--pill i{border-radius:var(--radius-pill)}
205
+ .shadow-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--sp-4)}
206
+ .shadow-tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-2);min-height:96px}
207
+ .shadow-tile b{font-size:var(--text-xs);font-weight:600}
208
+ .shadow-tile span{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--muted);margin-top:auto}
209
+ .shadow-tile--xs{box-shadow:var(--shadow-xs)}
210
+ .shadow-tile--sm{box-shadow:var(--shadow-sm)}
211
+ .shadow-tile--md{box-shadow:var(--shadow-md)}
212
+ .shadow-tile--lg{box-shadow:var(--shadow-lg)}
213
+
214
+ /* --- Секции компонентов --- */
215
+ .comp-section{padding-block:clamp(48px,6vw,80px);border-top:1px solid var(--line);scroll-margin-top:calc(var(--header-h) + 16px)}
216
+ .comp-section:first-of-type{border-top:0}
217
+ .comp-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-5)}
218
+ .comp-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
219
+ .comp-stack{display:flex;flex-direction:column;gap:var(--sp-4)}
220
+ .hr-soft{height:1px;background:var(--line);margin-block:var(--sp-4)}
221
+ .demo-caption{font-size:var(--text-xs);color:var(--muted);margin-top:var(--sp-3);line-height:1.55}
222
+ .demo-caption b{color:var(--ink-2);font-weight:600}
223
+ .state-matrix{display:flex;flex-wrap:wrap;gap:var(--sp-6)}
224
+ .state-cell{display:flex;flex-direction:column;gap:8px;align-items:flex-start;min-width:132px}
225
+ .state-cell>span{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--muted)}
226
+ .btn.is-focus{box-shadow:var(--focus-ring)}
227
+
228
+ /* Спецификация кнопок в реальном контексте */
229
+ .cta-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3)}
230
+
231
+ /* Хлебные крошки/пагинация в витрине */
232
+ .nav-demo{display:flex;flex-direction:column;gap:var(--sp-5)}
233
+
234
+ /* KPI + spray-график в витрине */
235
+ .kpi-demo{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-4)}
236
+ .spark-wide{width:100%;height:52px;overflow:visible}
237
+
238
+ /* Раскладка таблицы в витрине */
239
+ .table-showcase .table{min-width:660px}
240
+
241
+ /* Паттерны: hero-полоса и редакционный список */
242
+ .pattern-hero{border:1px solid var(--line);border-radius:var(--radius-card);overflow:hidden;background:var(--surface)}
243
+ .pattern-hero__inner{padding:clamp(24px,3.4vw,48px);display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--sp-6);align-items:center}
244
+ .pattern-hero__title{font-family:var(--font-display);font-weight:var(--display-weight);font-size:var(--display-m);line-height:1.02;letter-spacing:var(--display-tracking);margin-top:var(--sp-4)}
245
+ .pattern-hero__side{border-left:1px solid var(--line);padding-left:var(--sp-6);display:flex;flex-direction:column;gap:var(--sp-3)}
246
+ .editorial-list{border-top:1px solid var(--line)}
247
+ .editorial-list__row{
248
+ display:grid;grid-template-columns:64px minmax(0,1fr) 220px;gap:var(--sp-4);
249
+ align-items:center;padding:var(--sp-4) 0;border-bottom:1px solid var(--line);
250
+ text-decoration:none;color:inherit;
251
+ transition:background-color var(--dur) var(--ease),padding-left var(--dur) var(--ease);
252
+ }
253
+ .editorial-list__row:hover{background:var(--surface-2)}
254
+ .editorial-list__num{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--muted);letter-spacing:.04em}
255
+ .editorial-list__title{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:500;letter-spacing:-.02em;line-height:1.1}
256
+ .editorial-list__note{font-size:var(--text-xs);color:var(--muted);text-align:right}
257
+
258
+ /* Футер витрины */
259
+ .show-footer{border-top:1px solid var(--line);background:var(--bg-alt);padding-block:clamp(32px,4vw,56px)}
260
+ .show-footer__grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);gap:var(--sp-6)}
261
+ .show-footer__title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:500;letter-spacing:-.02em}
262
+ .show-footer__text{font-size:var(--text-sm);color:var(--muted);margin-top:var(--sp-2);max-width:40ch;line-height:1.6}
263
+ .show-footer__col{display:flex;flex-direction:column;gap:8px}
264
+ .show-footer__col b{font-size:var(--text-2xs);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:2px}
265
+ .show-footer__col a{font-size:var(--text-sm);color:var(--ink-2);text-decoration:none}
266
+ .show-footer__col a:hover{color:var(--accent)}
267
+ .show-footer__bottom{margin-top:var(--sp-7);padding-top:var(--sp-4);border-top:1px solid var(--line);display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--sp-3);font-size:var(--text-xs);color:var(--muted)}
268
+
269
+ /* --- Адаптив витрины --- */
270
+ @media (max-width:1024px){
271
+ .site-header__nav{display:none}
272
+ .site-header__inner{flex-wrap:wrap;padding-block:var(--sp-2);row-gap:6px}
273
+ .preset-switch{order:3;flex-basis:100%;margin-left:0;max-width:100%}
274
+ .site-header__actions{order:2;margin-left:auto}
275
+ .show-hero__grid{grid-template-columns:1fr;gap:var(--sp-9)}
276
+ .specimen{max-width:520px}
277
+ .palette{grid-template-columns:repeat(4,minmax(0,1fr))}
278
+ .type-row{grid-template-columns:140px minmax(0,1fr)}
279
+ .type-row__specs{display:none}
280
+ .scale-grid{grid-template-columns:1fr}
281
+ .principles{grid-template-columns:1fr;border-top:0}
282
+ .principle{padding:var(--sp-5) 0;border-right:0;border-top:1px solid var(--line)}
283
+ .principle:not(:first-child){padding-left:0}
284
+ .comp-grid,.comp-grid--3,.kpi-demo,.shadow-row{grid-template-columns:repeat(2,minmax(0,1fr))}
285
+ .show-header__nav{display:none}
286
+ .measure-demo{grid-template-columns:1fr}
287
+ .measure-demo__label{justify-self:start}
288
+ .pattern-hero__inner{grid-template-columns:1fr}
289
+ .pattern-hero__side{border-left:0;padding-left:0;border-top:1px solid var(--line);padding-top:var(--sp-5)}
290
+ }
291
+ @media (max-width:720px){
292
+ .site-header__inner{flex-wrap:wrap;gap:var(--sp-2);padding-block:var(--sp-3)}
293
+ .site-header__nav{display:none}
294
+ .site-header__actions{margin-left:auto}
295
+ .site-header__cta .btn__label{display:none}
296
+ .show-hero__grid{gap:var(--sp-7)}
297
+ .show-hero__title{font-size:clamp(3.25rem,17vw,4.75rem)}
298
+ .specimen__glyph{font-size:clamp(4.5rem,22vw,6.5rem)}
299
+ .palette{grid-template-columns:repeat(2,minmax(0,1fr))}
300
+ .comp-grid,.comp-grid--3,.kpi-demo,.shadow-row{grid-template-columns:1fr}
301
+ .type-row{grid-template-columns:1fr;gap:var(--sp-2);padding-block:var(--sp-4)}
302
+ .type-row__meta{display:flex;gap:var(--sp-2);align-items:baseline}
303
+ .editorial-list__row{grid-template-columns:44px minmax(0,1fr);gap:var(--sp-3)}
304
+ .editorial-list__note{display:none}
305
+ .show-footer__grid{grid-template-columns:1fr}
306
+ .spec-head h2{font-size:var(--display-s)}
307
+ .spacing-rail{gap:var(--sp-2)}
308
+ .palette-group{margin-top:var(--sp-7)}
309
+ }
310
+
311
+ /* ==========================================================================
312
+ HOSPITAL — премиальный лендинг клиники (aurora)
313
+ ========================================================================== */
314
+ .hosp-utility{background:var(--ink);color:var(--bg);font-size:var(--text-xs)}
315
+ [data-theme="dark"] .hosp-utility{background:var(--surface);color:var(--ink-2);border-bottom:1px solid var(--line)}
316
+ .hosp-utility__inner{display:flex;align-items:center;gap:var(--sp-5);min-height:36px;flex-wrap:wrap}
317
+ .hosp-utility__item{display:inline-flex;align-items:center;gap:6px;color:color-mix(in oklab,currentColor 78%,transparent);text-decoration:none}
318
+ .hosp-utility__item .icon{opacity:.7}
319
+ .hosp-utility__item:hover{color:inherit}
320
+ .hosp-utility__dot{width:3px;height:3px;border-radius:50%;background:currentColor;opacity:.4}
321
+ .hosp-utility__right{margin-left:auto;display:flex;align-items:center;gap:var(--sp-4)}
322
+ .hosp-utility__link{color:inherit;text-decoration:none;font-weight:500}
323
+ .hosp-utility__link:hover{text-decoration:underline;text-underline-offset:.2em}
324
+ .hosp-utility__link--accent{color:inherit;font-weight:600}
325
+
326
+ .hosp-header{position:sticky;top:0;z-index:var(--z-header);background:var(--bg);border-bottom:1px solid transparent;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}
327
+ .hosp-header.is-scrolled{border-bottom-color:var(--line);box-shadow:var(--shadow-xs)}
328
+ .hosp-header__inner{display:flex;align-items:center;gap:var(--sp-5);min-height:var(--header-h)}
329
+ .hosp-logo{display:flex;align-items:center;gap:var(--sp-3);text-decoration:none;color:var(--ink);flex:none}
330
+ .hosp-logo__mark{
331
+ display:grid;place-items:center;width:44px;height:44px;flex:none;
332
+ border:1px solid var(--line-strong);border-radius:var(--radius-sm);
333
+ font-family:var(--font-display);font-size:var(--text-xl);font-weight:600;
334
+ letter-spacing:-.03em;line-height:1;position:relative;
335
+ }
336
+ .hosp-logo__mark::after{content:"";position:absolute;inset:4px;border:1px solid var(--line);border-radius:calc(var(--radius-sm) - 2px);pointer-events:none}
337
+ .hosp-logo__text{display:flex;flex-direction:column;gap:1px;line-height:1.2}
338
+ .hosp-logo__name{font-size:var(--text-sm);font-weight:600;letter-spacing:-.01em}
339
+ .hosp-logo__name-short{display:none;font-size:var(--text-sm);font-weight:600;letter-spacing:-.01em}
340
+ .hosp-logo__sub{font-size:var(--text-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
341
+ .hosp-nav{display:flex;align-items:center;gap:2px;margin-left:var(--sp-6)}
342
+ .hosp-nav__link{
343
+ padding:9px var(--sp-3);border-radius:var(--radius-sm);
344
+ color:var(--ink-2);font-size:var(--text-sm);font-weight:500;text-decoration:none;
345
+ transition:color var(--dur) var(--ease),background-color var(--dur) var(--ease);
346
+ }
347
+ .hosp-nav__link:hover{color:var(--ink);background:var(--bg-alt)}
348
+ .hosp-nav__link[aria-current]{color:var(--ink);font-weight:600}
349
+ .hosp-header__actions{margin-left:auto;display:flex;align-items:center;gap:var(--sp-3)}
350
+ .hosp-burger{display:none}
351
+ .hosp-phone{display:inline-flex;align-items:center;gap:6px;color:var(--ink);font-size:var(--text-sm);font-weight:600;text-decoration:none;white-space:nowrap}
352
+ .hosp-phone .icon{color:var(--accent-ink)}
353
+
354
+ /* Hero */
355
+ .hosp-hero{position:relative;border-bottom:1px solid var(--line);overflow-x:clip}
356
+ .hosp-hero__grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(28px,5vw,72px);align-items:start;padding-block:clamp(36px,4.6vw,64px) clamp(40px,5vw,64px)}
357
+ .hosp-hero__title{font-size:clamp(2.75rem,5.6vw,4.75rem);line-height:.99;letter-spacing:-.035em;margin-top:var(--sp-5);max-width:15ch}
358
+ .hosp-hero__title em{font-style:italic;font-weight:400;color:var(--accent-ink)}
359
+ .hosp-hero__lead{margin-top:var(--sp-6);max-width:46ch;font-size:clamp(1.0625rem,1.35vw,1.1875rem);line-height:1.6;color:var(--ink-2)}
360
+ .hosp-hero__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3);margin-top:var(--sp-6)}
361
+ .hosp-hero__note{margin-top:var(--sp-4);font-size:var(--text-xs);color:var(--muted);display:flex;align-items:center;gap:6px}
362
+ .hosp-hero__aside{display:flex;flex-direction:column;gap:var(--sp-5);padding-top:var(--sp-3)}
363
+ .hosp-plate{
364
+ position:relative;border:1px solid var(--line-strong);border-radius:var(--radius-card);
365
+ background:var(--surface);box-shadow:var(--shadow-sm);padding:clamp(20px,2.4vw,28px);
366
+ }
367
+ .hosp-plate::before,.hosp-plate::after{content:"";position:absolute;width:16px;height:16px;border-color:var(--line-strong);border-style:solid;pointer-events:none}
368
+ .hosp-plate::before{top:-5px;left:-5px;border-width:1px 0 0 1px}
369
+ .hosp-plate::after{bottom:-5px;right:-5px;border-width:0 1px 1px 0}
370
+ .hosp-plate__top{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3);padding-bottom:var(--sp-3);border-bottom:1px solid var(--line)}
371
+ .hosp-plate__top .caps-label{font-size:var(--text-2xs)}
372
+ .hosp-plate__code{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--muted)}
373
+ .hosp-plate__body{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-5);padding-block:var(--sp-4)}
374
+ .hosp-plate__num{font-family:var(--font-display);font-weight:500;font-size:clamp(4.5rem,7vw,6.5rem);line-height:.8;letter-spacing:-.06em}
375
+ .hosp-plate__stamp{
376
+ display:grid;place-items:center;gap:1px;flex:none;
377
+ width:104px;height:104px;border:1px solid var(--line-strong);border-radius:50%;
378
+ text-align:center;transform:rotate(-7deg);color:var(--muted);
379
+ font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:.08em;text-transform:uppercase;line-height:1.35;
380
+ }
381
+ .hosp-plate__stamp strong{font-family:var(--font-display);font-size:var(--text-xl);font-weight:600;letter-spacing:-.02em;color:var(--ink);text-transform:none;line-height:1}
382
+ .hosp-plate__rows{display:flex;flex-direction:column;border-top:1px solid var(--line)}
383
+ .hosp-plate__row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-4);padding:8px 0;border-bottom:1px solid var(--line);font-size:var(--text-xs)}
384
+ .hosp-plate__row:last-child{border-bottom:0}
385
+ .hosp-plate__row dt{color:var(--muted)}
386
+ .hosp-plate__row dd{margin:0;color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}
387
+ .hosp-plate__caption{margin-top:var(--sp-3);font-size:var(--text-2xs);color:var(--muted);display:flex;justify-content:space-between;gap:var(--sp-3)}
388
+
389
+ .hosp-hero__proof{
390
+ display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--sp-5);
391
+ border-top:1px solid var(--line);padding-block:var(--sp-6) clamp(28px,3.4vw,44px);
392
+ }
393
+ .hosp-proof{display:flex;flex-direction:column;gap:2px;padding-left:var(--sp-4);border-left:1px solid var(--line)}
394
+ .hosp-proof:first-child{padding-left:0;border-left:0}
395
+ .hosp-proof__value{font-family:var(--font-display);font-size:clamp(1.5rem,2.2vw,2rem);font-weight:500;letter-spacing:-.03em;line-height:1.1;font-variant-numeric:tabular-nums}
396
+ .hosp-proof__label{font-size:var(--text-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
397
+
398
+ /* Секции */
399
+ .hosp-sec{padding-block:clamp(56px,7vw,104px)}
400
+ .hosp-sec--alt{background:var(--bg-alt);border-block:1px solid var(--line)}
401
+ .hosp-sec-head{display:flex;flex-direction:column;gap:var(--sp-4);margin-bottom:clamp(28px,3.6vw,48px);max-width:var(--measure)}
402
+ .hosp-sec-head__kicker{display:flex;align-items:center;gap:var(--sp-3);font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
403
+ .hosp-sec-head__kicker b{color:var(--accent-ink);font-weight:600}
404
+ .hosp-sec-head h2{font-size:var(--display-m)}
405
+ .hosp-sec-head p{font-size:var(--text-md);line-height:1.62;color:var(--ink-2);max-width:56ch}
406
+ .hosp-sec-head--row{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:var(--gap-inline);align-items:end;max-width:none}
407
+ .hosp-sec-head--row .hosp-sec-head__text{display:flex;flex-direction:column;gap:var(--sp-4)}
408
+ .hosp-sec-head--row .hosp-sec-head__side{align-self:end;justify-self:end}
409
+
410
+ /* Направления */
411
+ .hosp-dir{border-top:1px solid var(--line-strong)}
412
+ .hosp-dir__row{
413
+ display:grid;grid-template-columns:56px minmax(0,1fr) minmax(0,320px) 44px;
414
+ gap:var(--sp-4);align-items:center;
415
+ padding:clamp(14px,1.7vw,20px) var(--sp-2) clamp(14px,1.7vw,20px) 0;
416
+ border-bottom:1px solid var(--line);text-decoration:none;color:inherit;
417
+ transition:background-color var(--dur) var(--ease),padding-left var(--dur) var(--ease);
418
+ }
419
+ .hosp-dir__row:hover,.hosp-dir__row:focus-visible{background:var(--surface-2);padding-left:var(--sp-3);outline:none}
420
+ .hosp-dir__num{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--muted);letter-spacing:.04em}
421
+ .hosp-dir__title{font-family:var(--font-display);font-size:clamp(1.375rem,2.1vw,1.75rem);font-weight:500;letter-spacing:-.02em;line-height:1.15}
422
+ .hosp-dir__desc{font-size:var(--text-sm);color:var(--muted);line-height:1.5;opacity:0;transform:translateX(-6px);transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease)}
423
+ .hosp-dir__row:hover .hosp-dir__desc,.hosp-dir__row:focus-visible .hosp-dir__desc{opacity:1;transform:none}
424
+ .hosp-dir__arrow{
425
+ display:grid;place-items:center;width:36px;height:36px;border-radius:50%;
426
+ border:1px solid var(--line);color:var(--muted);
427
+ transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease),transform var(--dur) var(--ease);
428
+ }
429
+ .hosp-dir__row:hover .hosp-dir__arrow{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast);transform:rotate(-45deg)}
430
+ .hosp-dir__foot{display:flex;align-items:center;gap:var(--sp-3);margin-top:var(--sp-6);font-size:var(--text-sm);color:var(--muted)}
431
+
432
+ /* Путь пациента */
433
+ .hosp-path__steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(20px,3vw,40px)}
434
+ .hosp-step{position:relative;padding-top:var(--sp-7);display:flex;flex-direction:column;gap:var(--sp-2)}
435
+ .hosp-step::before{content:"";position:absolute;left:0;right:calc(var(--sp-1) * -1);top:5px;height:1px;background:var(--line-strong)}
436
+ .hosp-step::after{content:"";position:absolute;left:0;top:1px;width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--bg-alt)}
437
+ .hosp-step:last-child::before{right:0;background:linear-gradient(to right,var(--line-strong),transparent)}
438
+ .hosp-step__num{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--accent-ink);letter-spacing:.08em}
439
+ .hosp-step__title{font-size:var(--text-lg);font-weight:600;line-height:1.3}
440
+ .hosp-step__text{font-size:var(--text-sm);color:var(--ink-2);line-height:1.6}
441
+ .hosp-step__time{font-size:var(--text-xs);color:var(--muted);font-variant-numeric:tabular-nums;margin-top:auto}
442
+
443
+ /* Врачи */
444
+ .hosp-doctors{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-5)}
445
+ .hosp-doctor{display:flex;flex-direction:column;gap:var(--sp-4);padding:clamp(20px,2.4vw,28px);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);box-shadow:var(--shadow-xs);transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease)}
446
+ .hosp-doctor:hover{border-color:var(--line-strong);box-shadow:var(--shadow-md);transform:translateY(-2px)}
447
+ .hosp-doctor__mono{display:grid;place-items:center;width:76px;height:76px;border-radius:var(--radius-sm);font-family:var(--font-display);font-size:var(--text-2xl);font-weight:500;letter-spacing:-.02em;background:var(--accent-soft);color:var(--accent-ink)}
448
+ .hosp-doctor--copper .hosp-doctor__mono{background:var(--copper-soft);color:color-mix(in oklab,var(--copper) 70%,var(--ink))}
449
+ .hosp-doctor--neutral .hosp-doctor__mono{background:var(--bg-alt);color:var(--ink-2)}
450
+ .hosp-doctor__name{font-family:var(--font-display);font-size:var(--text-xl);font-weight:500;letter-spacing:-.02em;line-height:1.2}
451
+ .hosp-doctor__role{font-size:var(--text-2xs);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin-top:3px}
452
+ .hosp-doctor__quote{font-size:var(--text-sm);color:var(--ink-2);line-height:1.62}
453
+ .hosp-doctor__meta{margin-top:auto;padding-top:var(--sp-3);border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);font-size:var(--text-xs);color:var(--muted)}
454
+ .hosp-doctor__meta strong{color:var(--ink-2);font-weight:600}
455
+
456
+ /* Доверие */
457
+ .hosp-trust{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(20px,3.4vw,48px);border-top:1px solid var(--line-strong);padding-top:var(--sp-6)}
458
+ .hosp-trust__item{display:flex;flex-direction:column;gap:var(--sp-3)}
459
+ .hosp-trust__icon{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;border:1px solid var(--line-strong);color:var(--accent-ink)}
460
+ .hosp-trust__title{font-size:var(--text-md);font-weight:600;line-height:1.35}
461
+ .hosp-trust__text{font-size:var(--text-sm);color:var(--ink-2);line-height:1.62}
462
+ .hosp-trust__list{display:flex;flex-direction:column;gap:6px;margin-top:var(--sp-2);font-size:var(--text-xs);color:var(--muted);font-variant-numeric:tabular-nums}
463
+ .hosp-trust__list li{display:flex;align-items:baseline;gap:8px}
464
+ .hosp-trust__list li::before{content:"—";color:var(--faint)}
465
+
466
+ /* Новости */
467
+ .hosp-news{border-top:1px solid var(--line-strong)}
468
+ .hosp-news__row{display:grid;grid-template-columns:120px minmax(0,1fr) 40px;gap:var(--sp-4);align-items:baseline;padding:clamp(16px,2vw,24px) var(--sp-2) clamp(16px,2vw,24px) 0;border-bottom:1px solid var(--line);text-decoration:none;color:inherit;transition:background-color var(--dur) var(--ease)}
469
+ .hosp-news__row:hover{background:var(--surface-2)}
470
+ .hosp-news__date{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--muted)}
471
+ .hosp-news__main{display:flex;flex-direction:column;gap:4px}
472
+ .hosp-news__title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:500;letter-spacing:-.02em;line-height:1.3}
473
+ .hosp-news__tag{font-size:var(--text-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--accent-ink)}
474
+ .hosp-news__arrow{color:var(--muted);justify-self:end;transition:transform var(--dur) var(--ease),color var(--dur) var(--ease)}
475
+ .hosp-news__row:hover .hosp-news__arrow{transform:translateX(3px);color:var(--accent-ink)}
476
+
477
+ /* CTA-полоса */
478
+ .hosp-cta{position:relative;background:var(--ink);color:var(--bg);border-radius:var(--radius-lg);padding:clamp(28px,4.5vw,56px);display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--sp-6);align-items:center;overflow:hidden}
479
+ [data-theme="dark"] .hosp-cta{background:var(--surface);color:var(--ink);border:1px solid var(--line)}
480
+ .hosp-cta::before{content:"";position:absolute;inset:0;background-image:linear-gradient(to right,color-mix(in oklab,currentColor 8%,transparent) 1px,transparent 1px);background-size:25% 100%;mask-image:linear-gradient(to right,transparent,#000 60%);pointer-events:none}
481
+ .hosp-cta h2{font-size:var(--display-s);position:relative}
482
+ .hosp-cta p{margin-top:var(--sp-3);font-size:var(--text-md);line-height:1.6;color:color-mix(in oklab,currentColor 74%,transparent);max-width:46ch;position:relative}
483
+ .hosp-cta__actions{display:flex;flex-wrap:wrap;gap:var(--sp-3);justify-content:flex-end;position:relative}
484
+ .hosp-cta .btn--invert{background:var(--bg);color:var(--ink);border-color:var(--bg)}
485
+ .hosp-cta .btn--invert:hover{background:color-mix(in oklab,var(--bg) 88%,var(--ink));border-color:transparent}
486
+ .hosp-cta .btn--on-dark{color:inherit;--btn-ink:inherit}
487
+ .hosp-cta .btn--ghost{color:inherit;--btn-ink:inherit}
488
+ .hosp-cta .btn--ghost:hover{background:color-mix(in oklab,currentColor 12%,transparent)}
489
+
490
+ /* Футер */
491
+ .hosp-footer{background:var(--ink);color:var(--bg);padding-block:clamp(44px,5.4vw,72px) var(--sp-7)}
492
+ [data-theme="dark"] .hosp-footer{background:var(--surface);color:var(--ink);border-top:1px solid var(--line)}
493
+ .hosp-footer__grid{display:grid;grid-template-columns:minmax(0,2.2fr) repeat(3,minmax(0,1fr));gap:clamp(24px,4vw,48px)}
494
+ .hosp-footer__brand{font-family:var(--font-display);font-size:var(--text-xl);font-weight:500;letter-spacing:-.02em;line-height:1.25}
495
+ .hosp-footer__addr{margin-top:var(--sp-3);font-size:var(--text-sm);line-height:1.7;color:color-mix(in oklab,currentColor 74%,transparent)}
496
+ .hosp-footer__phone{display:inline-flex;align-items:center;gap:8px;margin-top:var(--sp-4);font-size:var(--text-md);font-weight:600;color:inherit;text-decoration:none}
497
+ .hosp-footer__phone:hover{text-decoration:underline;text-underline-offset:.2em}
498
+ .hosp-footer__col{display:flex;flex-direction:column;gap:8px}
499
+ .hosp-footer__col b{font-size:var(--text-2xs);letter-spacing:.1em;text-transform:uppercase;color:color-mix(in oklab,currentColor 55%,transparent);margin-bottom:4px}
500
+ .hosp-footer__col a{font-size:var(--text-sm);color:color-mix(in oklab,currentColor 78%,transparent);text-decoration:none}
501
+ .hosp-footer__col a:hover{color:inherit;text-decoration:underline;text-underline-offset:.2em}
502
+ .hosp-footer__bottom{margin-top:clamp(32px,4vw,56px);padding-top:var(--sp-5);border-top:1px solid color-mix(in oklab,currentColor 16%,transparent);display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--sp-3);font-size:var(--text-xs);color:color-mix(in oklab,currentColor 62%,transparent)}
503
+ .hosp-footer__legal{display:flex;flex-direction:column;gap:4px}
504
+
505
+ /* Адаптив клиники */
506
+ @media (max-width:1024px){
507
+ .hosp-nav{
508
+ display:none;
509
+ position:fixed;inset:0 0 0 auto;z-index:var(--z-overlay);
510
+ width:min(86vw,360px);margin:0;padding:calc(var(--header-h) + 20px) var(--sp-6) var(--sp-6);
511
+ background:var(--bg);border-left:1px solid var(--line);box-shadow:var(--shadow-lg);
512
+ flex-direction:column;align-items:stretch;gap:2px;overflow-y:auto;
513
+ }
514
+ .hosp-nav.is-open{display:flex;animation:hosp-nav-in var(--dur-slow) var(--ease-out)}
515
+ @keyframes hosp-nav-in{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}
516
+ .hosp-nav__link{padding:14px var(--sp-3);border-bottom:1px solid var(--line);border-radius:0;font-size:var(--text-md)}
517
+ .hosp-burger{display:inline-flex}
518
+ .hosp-header__inner{min-height:64px}
519
+ .hosp-hero__grid{grid-template-columns:1fr;gap:var(--sp-8)}
520
+ .hosp-hero__aside{max-width:460px}
521
+ .hosp-hero__proof{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:var(--sp-5)}
522
+ .hosp-proof:nth-child(3){padding-left:0;border-left:0}
523
+ .hosp-doctors,.hosp-trust{grid-template-columns:repeat(2,minmax(0,1fr))}
524
+ .hosp-doctors .hosp-doctor:first-child{grid-column:1/-1}
525
+ .hosp-path__steps{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:var(--sp-6)}
526
+ .hosp-nav__link[aria-current]{background:var(--bg-alt)}
527
+ .hosp-sec-head--row{grid-template-columns:1fr}
528
+ .hosp-sec-head--row .hosp-sec-head__side{justify-self:start}
529
+ .hosp-cta{grid-template-columns:1fr}
530
+ .hosp-cta__actions{justify-content:flex-start}
531
+ .hosp-footer__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
532
+ }
533
+ @media (max-width:720px){
534
+ .hosp-utility__inner{gap:var(--sp-3);padding-block:9px;flex-wrap:nowrap}
535
+ .hosp-utility__item,.hosp-utility__dot{display:none}
536
+ .hosp-utility__right{margin-left:0;width:100%;justify-content:space-between;gap:var(--sp-3)}
537
+ .hosp-utility__right .hosp-utility__link:first-child{display:inline}
538
+ .hosp-utility__link{font-size:var(--text-xs);font-weight:600}
539
+ .hosp-utility__link--accent{text-decoration:underline;text-underline-offset:.22em}
540
+ .hosp-logo__mark{width:38px;height:38px;font-size:var(--text-lg)}
541
+ .hosp-logo__name{display:none}
542
+ .hosp-logo__name-short{display:block;font-size:var(--text-md)}
543
+ .hosp-phone{display:none}
544
+ .hosp-header .btn--primary{display:none}
545
+ .hosp-hero__title{font-size:clamp(2.5rem,11.5vw,3.5rem);max-width:18ch}
546
+ .hosp-hero__actions{flex-direction:column;align-items:stretch;gap:var(--sp-2)}
547
+ .hosp-hero__actions .btn{width:100%}
548
+ .hosp-hero__proof{grid-template-columns:1fr 1fr}
549
+ .hosp-hero__proof .hosp-proof{padding-left:0;border-left:0;padding-top:var(--sp-3);border-top:1px solid var(--line)}
550
+ .hosp-hero__proof .hosp-proof:nth-child(-n+2){border-top:0;padding-top:0}
551
+ .hosp-doctors,.hosp-trust{grid-template-columns:1fr}
552
+ .hosp-doctors .hosp-doctor:first-child{grid-column:auto}
553
+ .hosp-path__steps{grid-template-columns:1fr}
554
+ .hosp-step{padding-top:var(--sp-5);padding-left:var(--sp-5)}
555
+ .hosp-step::before{left:3px;right:auto;top:0;bottom:0;width:1px;height:auto}
556
+ .hosp-step::after{top:8px;left:0}
557
+ .hosp-step:last-child::before{background:linear-gradient(to bottom,var(--line-strong),transparent)}
558
+ .hosp-dir__row{grid-template-columns:34px minmax(0,1fr) 36px;gap:var(--sp-3)}
559
+ .hosp-dir__desc{display:none}
560
+ .hosp-dir__title{font-size:var(--text-xl)}
561
+ .hosp-news__row{grid-template-columns:1fr 28px;row-gap:4px}
562
+ .hosp-news__date{grid-column:1/-1;order:-1}
563
+ .hosp-cta{padding:var(--sp-6);border-radius:var(--radius-card)}
564
+ .hosp-cta__actions .btn{width:100%}
565
+ .hosp-footer__grid{grid-template-columns:1fr}
566
+ .hosp-footer__bottom{flex-direction:column}
567
+ .hosp-sec{padding-block:clamp(48px,11vw,72px)}
568
+ .hosp-plate__num{font-size:4rem}
569
+ .hosp-plate__stamp{width:88px;height:88px}
570
+ }
571
+
572
+ /* ==========================================================================
573
+ DASHBOARD — Service Desk (graphite)
574
+ ========================================================================== */
575
+ .app--dash .app__content{gap:clamp(16px,1.9vw,24px)}
576
+ .app--dash .topbar__search{max-width:380px}
577
+ .dash-main{display:flex;flex-direction:column;gap:clamp(16px,1.9vw,24px);min-width:0}
578
+
579
+ .dash-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--sp-4)}
580
+ .dash-head__text h1{font-family:var(--font-display);font-size:clamp(1.9rem,3vw,2.6rem);line-height:1.05;letter-spacing:var(--display-tracking)}
581
+ .dash-head__meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3);margin-top:var(--sp-2);font-size:var(--text-xs);color:var(--muted)}
582
+ .dash-head__meta .status{font-size:var(--text-xs)}
583
+ .dash-head__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}
584
+ .dash-range{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 var(--sp-3);border:1px solid var(--line-strong);border-radius:var(--radius-control);background:var(--surface);font-size:var(--text-xs);font-weight:600;color:var(--ink-2)}
585
+ .dash-range .icon{color:var(--muted)}
586
+
587
+ .kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(10px,1.3vw,16px)}
588
+ .dash-grid-main{display:grid;grid-template-columns:minmax(0,2.05fr) minmax(0,1fr);gap:clamp(12px,1.5vw,20px);align-items:stretch}
589
+ .dash-grid-bottom{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:clamp(12px,1.5vw,20px)}
590
+
591
+ .dash-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);box-shadow:var(--shadow-xs);min-width:0;display:flex;flex-direction:column}
592
+ .dash-card__head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--line)}
593
+ .dash-card__title{font-size:var(--text-sm);font-weight:600;color:var(--ink);line-height:1.3}
594
+ .dash-card__sub{font-size:var(--text-xs);color:var(--muted);margin-top:2px;line-height:1.4}
595
+ .dash-card__head-actions{display:flex;align-items:center;gap:var(--sp-2)}
596
+ .dash-card__body{padding:var(--sp-5);flex:1;min-width:0}
597
+ .dash-card__body--flush{padding:0}
598
+ .dash-card__foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) var(--sp-5);border-top:1px solid var(--line);font-size:var(--text-xs);color:var(--muted)}
599
+
600
+ .chart-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-3);margin-bottom:var(--sp-4)}
601
+ .chart-meta__value{font-size:clamp(1.6rem,2.2vw,2rem);font-weight:600;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}
602
+ .chart-meta__delta{display:inline-flex;align-items:center;gap:3px;font-size:var(--text-xs);font-weight:600;color:var(--success)}
603
+ .chart-meta__note{font-size:var(--text-xs);color:var(--muted)}
604
+ .chart{display:block;width:100%;height:auto;overflow:visible}
605
+ .chart__grid line{stroke:var(--line);stroke-width:1;stroke-dasharray:3 5}
606
+ .chart__target{stroke:var(--line-strong);stroke-width:1;stroke-dasharray:5 5}
607
+ .chart__axis{fill:var(--muted);font-family:var(--font-mono);font-size:10px;letter-spacing:.02em}
608
+ .chart__target-label{fill:var(--muted);font-family:var(--font-mono);font-size:10px}
609
+ .chart__area{fill:color-mix(in oklab,var(--accent) 12%,transparent)}
610
+ .chart__line{fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
611
+ .chart__dot{fill:var(--accent);stroke:var(--surface);stroke-width:2}
612
+ .chart-legend{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-4);margin-top:var(--sp-2);font-size:var(--text-xs);color:var(--muted)}
613
+ .chart-legend span{display:inline-flex;align-items:center;gap:6px}
614
+ .legend-key{width:14px;height:2px;border-radius:2px;background:var(--accent)}
615
+ .legend-key--target{background:repeating-linear-gradient(90deg,var(--line-strong) 0 3px,transparent 3px 6px)}
616
+
617
+ .donut-wrap{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-5)}
618
+ .donut{width:clamp(128px,12vw,156px);height:auto;flex:none}
619
+ .donut__track{fill:none;stroke:var(--bg-alt);stroke-width:11}
620
+ .donut__arc{fill:none;stroke:var(--accent);stroke-width:11;stroke-linecap:round;transform:rotate(-90deg);transform-origin:50% 50%}
621
+ .donut__value{fill:var(--ink);font-family:var(--font-body);font-size:24px;font-weight:600;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
622
+ .donut__label{fill:var(--muted);font-family:var(--font-mono);font-size:9px;letter-spacing:.1em}
623
+ .donut-legend{display:flex;flex-direction:column;gap:var(--sp-3);flex:1;min-width:150px}
624
+ .donut-legend li{display:flex;align-items:center;gap:8px;font-size:var(--text-xs);color:var(--ink-2)}
625
+ .donut-legend__key{width:8px;height:8px;border-radius:2px;flex:none;background:var(--accent)}
626
+ .donut-legend__key--muted{background:var(--bg-alt);border:1px solid var(--line)}
627
+ .donut-legend__num{margin-left:auto;font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink)}
628
+
629
+ .table-card .table{min-width:1000px}
630
+ .table-card .table th:first-child,.table-card .table td:first-child{padding-left:var(--sp-5)}
631
+ .table-card .table th:last-child,.table-card .table td:last-child{padding-right:var(--sp-5)}
632
+ .sla{display:flex;flex-direction:column;gap:4px;min-width:92px}
633
+ .sla__time{font-size:var(--text-xs);font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
634
+ .sla__time--ok{color:var(--success)}
635
+ .sla__time--warn{color:var(--warning)}
636
+ .sla__time--late{color:var(--danger)}
637
+ .sla__time--muted{color:var(--muted)}
638
+ .sla__track{height:3px;border-radius:99px;background:var(--bg-alt);overflow:hidden}
639
+ .sla__fill{height:100%;width:var(--sla,40%);border-radius:inherit;background:var(--success)}
640
+ .sla__fill--warn{background:var(--warning)}
641
+ .sla__fill--late{background:var(--danger)}
642
+ .sla__fill--muted{background:var(--faint)}
643
+ .table-card__toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-5);border-bottom:1px solid var(--line)}
644
+ .table-card__toolbar .input-group{flex:1;min-width:180px;max-width:320px}
645
+ .table-card__toolbar .input{height:38px}
646
+ .table-search-reset{display:flex;align-items:center;gap:var(--sp-2);margin-left:auto;font-size:var(--text-xs);color:var(--muted)}
647
+ .table-card__foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) var(--sp-5);border-top:1px solid var(--line);font-size:var(--text-xs);color:var(--muted)}
648
+
649
+ .activity-item{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--line)}
650
+ .activity-item:last-child{border-bottom:0;padding-bottom:0}
651
+ .activity-item:first-child{padding-top:0}
652
+ .activity-item__body{min-width:0}
653
+ .activity-item__text{font-size:var(--text-sm);color:var(--ink-2);line-height:1.5}
654
+ .activity-item__text b{color:var(--ink);font-weight:600}
655
+ .activity-item__time{font-size:var(--text-2xs);color:var(--muted);margin-top:2px;font-variant-numeric:tabular-nums}
656
+
657
+ .team-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--sp-3);align-items:center}
658
+ .team-row__name{font-size:var(--text-sm);color:var(--ink-2);line-height:1.3}
659
+ .team-row__role{font-size:var(--text-2xs);color:var(--muted)}
660
+ .team-row__value{font-size:var(--text-xs);font-weight:600;color:var(--ink-2);font-variant-numeric:tabular-nums}
661
+ .team-row__track{grid-column:1/-1}
662
+ .team-row .progress{height:6px}
663
+ .dash-footnote{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-3);font-size:var(--text-2xs);color:var(--muted);padding-top:var(--sp-1)}
664
+ .dash-footnote .status{font-size:var(--text-2xs)}
665
+
666
+ /* Адаптив дашборда */
667
+ @media (max-width:1280px){
668
+ .kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
669
+ }
670
+ @media (max-width:1100px){
671
+ .dash-grid-main,.dash-grid-bottom{grid-template-columns:1fr}
672
+ }
673
+ @media (max-width:767px){
674
+ .app--dash .app__content{padding:var(--sp-4) var(--sp-4) var(--sp-6);gap:var(--sp-4)}
675
+ .dash-head{align-items:flex-start}
676
+ .dash-head__actions{width:100%}
677
+ .dash-head__actions .btn{flex:1}
678
+ .dash-head__actions .dash-range{display:none}
679
+ .kpi-grid{gap:var(--sp-3)}
680
+ .kpi{padding:var(--sp-4)}
681
+ .kpi__value{font-size:1.65rem}
682
+ .kpi__spark{width:72px;height:28px}
683
+ .kpi__foot{flex-wrap:wrap;row-gap:var(--sp-2)}
684
+ .kpi__delta-note{display:none}
685
+ .dash-card__head,.dash-card__body{padding:var(--sp-4)}
686
+ .chart-meta__value{font-size:1.5rem}
687
+ .table-card__toolbar{padding:var(--sp-3) var(--sp-4)}
688
+ .table-card__toolbar .input-group{max-width:none}
689
+ .table-search-reset{display:none}
690
+ .table-card__foot{padding:var(--sp-3) var(--sp-4)}
691
+ .donut-wrap{justify-content:center}
692
+ .donut-legend{min-width:0;flex-basis:100%}
693
+ .dash-head__meta{font-size:var(--text-2xs)}
694
+ }
695
+ @media (max-width:420px){
696
+ .kpi-grid{grid-template-columns:1fr}
697
+ .kpi__spark{width:96px}
698
+ }
699
+
700
+ /* ---- Финальные правки: доступность, тап-цели, контраст ---- */
701
+ .sidebar__user .icon-btn{width:36px;height:36px}
702
+ .hosp-logo{min-height:44px}
703
+ .hosp-utility__inner{min-height:44px}
704
+ .hosp-utility__link{display:inline-flex;align-items:center;min-height:36px}
705
+ .hosp-utility__item .icon{flex:none}
706
+ .hosp-sec-head__side .link{display:inline-flex;align-items:center;min-height:40px}
707
+ .hosp-doctor__meta .link{display:inline-flex;align-items:center;min-height:32px}
708
+ .hosp-footer__phone{min-height:40px;padding-block:4px}
709
+ .hosp-dir__row{min-height:56px}
710
+ .kpi__delta{white-space:nowrap}
711
+ .kpi__value{white-space:nowrap}
712
+ .kpi__unit{white-space:nowrap}
713
+ .dash-card__head .icon-btn{width:36px;height:36px}
714
+ @media (max-width:767px){
715
+ .row-actions .icon-btn{width:40px;height:40px}
716
+ .pager__btn{min-width:40px;height:40px}
717
+ .table-card__toolbar .chip{min-height:38px}
718
+ .hosp-utility__link{min-height:40px}
719
+ .kpi__value{font-size:1.75rem}
720
+ }
721
+ .spark-chart{display:flex;gap:10px;align-items:stretch;margin-top:var(--sp-2)}
722
+ .spark-chart__axis{display:flex;flex-direction:column;justify-content:space-between;font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--muted);text-align:right;padding-block:2px}
723
+ .spark-chart__axis span{line-height:1}
724
+ .spark-wide{flex:1;width:100%;height:120px;overflow:visible}
725
+ .spark-chart .chart__grid line{stroke:var(--line);stroke-dasharray:3 5}
726
+ /* mobile header fix (hospital) */
727
+ @media (max-width:720px){
728
+ .hosp-header__inner{gap:var(--sp-2)}
729
+ .hosp-logo{min-width:0;flex:1 1 auto;gap:var(--sp-2)}
730
+ .hosp-logo__text{min-width:0}
731
+ .hosp-logo__sub{max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
732
+ .hosp-header__actions{gap:var(--sp-2);flex:none}
733
+ }
734
+ /* mobile table scroll hint (dashboard) */
735
+ @media (max-width:767px){
736
+ .table-card .table-wrap{box-shadow:inset -26px 0 18px -20px var(--line-strong)}
737
+ }