/* tilvo-palette.css — сгенерировано gen-palette.js, руками не править. Правил: 248 */
*,:before,:after{border:0 solid var(--gray-200)}
input::-moz-placeholder{color:var(--gray-400)}
textarea::-moz-placeholder{color:var(--gray-400)}
input::placeholder,textarea::placeholder{color:var(--gray-400)}
*,:before,:after,::backdrop{--tw-ring-color:color-mix(in srgb, var(--tilvo-accent) 50%, transparent)}
.border-\[\#02855E\]{border-color:var(--tilvo-accent);border-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-border-opacity) * 100%), transparent)}
.border-blue-600{border-color:var(--tilvo-accent);border-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-border-opacity) * 100%), transparent)}
.border-blue-600\/40{border-color:color-mix(in srgb, var(--tilvo-accent) 40%, transparent)}
.border-gray-100{border-color:var(--gray-100);border-color:color-mix(in srgb, var(--gray-100) calc(var(--tw-border-opacity) * 100%), transparent)}
.border-gray-200{border-color:var(--gray-200);border-color:color-mix(in srgb, var(--gray-200) calc(var(--tw-border-opacity) * 100%), transparent)}
.border-gray-300{border-color:var(--gray-300);border-color:color-mix(in srgb, var(--gray-300) calc(var(--tw-border-opacity) * 100%), transparent)}
.border-gray-300\/50{border-color:color-mix(in srgb, var(--gray-300) 50%, transparent)}
.border-gray-400{border-color:var(--gray-400);border-color:color-mix(in srgb, var(--gray-400) calc(var(--tw-border-opacity) * 100%), transparent)}
.border-gray-50{border-color:var(--gray-50);border-color:color-mix(in srgb, var(--gray-50) calc(var(--tw-border-opacity) * 100%), transparent)}
.border-gray-500{border-color:var(--gray-500);border-color:color-mix(in srgb, var(--gray-500) calc(var(--tw-border-opacity) * 100%), transparent)}
.border-green-400{border-color:var(--tilvo-accent);border-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-border-opacity) * 100%), transparent)}
.border-green-500{border-color:var(--tilvo-accent);border-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-border-opacity) * 100%), transparent)}
.border-green-500\/20{border-color:color-mix(in srgb, var(--tilvo-accent) 20%, transparent)}
.border-green-500\/30{border-color:color-mix(in srgb, var(--tilvo-accent) 30%, transparent)}
.border-green-500\/50{border-color:color-mix(in srgb, var(--tilvo-accent) 50%, transparent)}
.border-green-500\/70{border-color:color-mix(in srgb, var(--tilvo-accent) 70%, transparent)}
.border-green-600{border-color:var(--tilvo-accent);border-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-border-opacity) * 100%), transparent)}
.border-green-600\/40{border-color:color-mix(in srgb, var(--tilvo-accent) 40%, transparent)}
.bg-\[\#02855E\]{background-color:var(--tilvo-accent);background-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-bg-opacity) * 100%), transparent)}
.bg-\[\#f5f5f5\]{background-color:var(--gray-50);background-color:color-mix(in srgb, var(--gray-50) calc(var(--tw-bg-opacity) * 100%), transparent)}
.bg-blue-500{background-color:var(--tilvo-accent);background-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-bg-opacity) * 100%), transparent)}
.bg-blue-500\/10{background-color:color-mix(in srgb, var(--tilvo-accent) 10%, transparent)}
.bg-blue-500\/60{background-color:color-mix(in srgb, var(--tilvo-accent) 60%, transparent)}
.bg-blue-600{background-color:var(--tilvo-accent);background-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-bg-opacity) * 100%), transparent)}
.bg-gray-100{background-color:var(--gray-100);background-color:color-mix(in srgb, var(--gray-100) calc(var(--tw-bg-opacity) * 100%), transparent)}
.bg-gray-200{background-color:var(--gray-200);background-color:color-mix(in srgb, var(--gray-200) calc(var(--tw-bg-opacity) * 100%), transparent)}
.bg-gray-300{background-color:var(--gray-300);background-color:color-mix(in srgb, var(--gray-300) calc(var(--tw-bg-opacity) * 100%), transparent)}
.bg-gray-400{background-color:var(--gray-400);background-color:color-mix(in srgb, var(--gray-400) calc(var(--tw-bg-opacity) * 100%), transparent)}
.bg-gray-50{background-color:var(--gray-50);background-color:color-mix(in srgb, var(--gray-50) calc(var(--tw-bg-opacity) * 100%), transparent)}
.bg-gray-500{background-color:var(--gray-500);background-color:color-mix(in srgb, var(--gray-500) calc(var(--tw-bg-opacity) * 100%), transparent)}
.bg-gray-500\/90{background-color:color-mix(in srgb, var(--gray-500) 90%, transparent)}
.bg-gray-600\/65{background-color:color-mix(in srgb, var(--gray-600) 65%, transparent)}
.bg-gray-700{background-color:var(--gray-700);background-color:color-mix(in srgb, var(--gray-700) calc(var(--tw-bg-opacity) * 100%), transparent)}
.bg-gray-800{background-color:var(--gray-800);background-color:color-mix(in srgb, var(--gray-800) calc(var(--tw-bg-opacity) * 100%), transparent)}
.bg-gray-900{background-color:var(--gray-900);background-color:color-mix(in srgb, var(--gray-900) calc(var(--tw-bg-opacity) * 100%), transparent)}
.bg-gray-900\/80{background-color:color-mix(in srgb, var(--gray-900) 80%, transparent)}
.bg-green-500{background-color:var(--tilvo-accent);background-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-bg-opacity) * 100%), transparent)}
.bg-green-500\/10{background-color:color-mix(in srgb, var(--tilvo-accent) 10%, transparent)}
.bg-green-500\/\[0\.06\]{background-color:color-mix(in srgb, var(--tilvo-accent) 6%, transparent)}
.bg-green-600{background-color:var(--tilvo-accent);background-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-bg-opacity) * 100%), transparent)}
.bg-green-600\/20{background-color:color-mix(in srgb, var(--tilvo-accent) 20%, transparent)}
.bg-green-600\/50{background-color:color-mix(in srgb, var(--tilvo-accent) 50%, transparent)}
.bg-\[repeating-conic-gradient\(var\(--surface-tertiary\)_0\%_25\%\,transparent_0\%_50\%\)\]{background-image:repeating-conic-gradient(var(--gray-100) 0% 25%,#0000 0% 50%);background-image:repeating-conic-gradient(var(--gray-100) 0% 25%,#0000 0% 50%)}
.from-blue-500\/10{--tw-gradient-from:color-mix(in srgb, var(--tilvo-accent) 10%, transparent) var(--tw-gradient-from-position);--tw-gradient-to:color-mix(in srgb, var(--tilvo-accent) 0%, transparent) var(--tw-gradient-to-position)}
.from-blue-500\/20{--tw-gradient-from:color-mix(in srgb, var(--tilvo-accent) 20%, transparent) var(--tw-gradient-from-position);--tw-gradient-to:color-mix(in srgb, var(--tilvo-accent) 0%, transparent) var(--tw-gradient-to-position)}
.from-gray-50{--tw-gradient-from:var(--gray-50) var(--tw-gradient-from-position);--tw-gradient-to:color-mix(in srgb, var(--gray-50) 0%, transparent) var(--tw-gradient-to-position)}
.from-gray-900{--tw-gradient-from:var(--gray-900) var(--tw-gradient-from-position);--tw-gradient-to:color-mix(in srgb, var(--gray-900) 0%, transparent) var(--tw-gradient-to-position)}
.via-blue-500\/5{--tw-gradient-to:color-mix(in srgb, var(--tilvo-accent) 0%, transparent) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), color-mix(in srgb, var(--tilvo-accent) 5%, transparent) var(--tw-gradient-via-position), var(--tw-gradient-to)}
.to-blue-500\/10{--tw-gradient-to:color-mix(in srgb, var(--tilvo-accent) 10%, transparent) var(--tw-gradient-to-position)}
.to-blue-500\/20{--tw-gradient-to:color-mix(in srgb, var(--tilvo-accent) 20%, transparent) var(--tw-gradient-to-position)}
.stroke-gray-400{stroke:var(--gray-400)}
.\!text-blue-400{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)!important}
.text-blue-300{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.text-blue-400{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.text-blue-500{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.text-blue-600{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.text-blue-700{color:color-mix(in srgb, var(--tilvo-accent-hover) calc(var(--tw-text-opacity) * 100%), transparent)}
.text-blue-800{color:color-mix(in srgb, var(--tilvo-accent-press) calc(var(--tw-text-opacity) * 100%), transparent)}
.text-gray-400{color:color-mix(in srgb, var(--gray-400) calc(var(--tw-text-opacity) * 100%), transparent)}
.text-gray-500{color:color-mix(in srgb, var(--gray-500) calc(var(--tw-text-opacity) * 100%), transparent)}
.text-gray-600{color:color-mix(in srgb, var(--gray-600) calc(var(--tw-text-opacity) * 100%), transparent)}
.text-gray-600\/90{color:color-mix(in srgb, var(--gray-600) 90%, transparent)}
.text-gray-700{color:color-mix(in srgb, var(--gray-700) calc(var(--tw-text-opacity) * 100%), transparent)}
.text-gray-700\/70{color:color-mix(in srgb, var(--gray-700) 70%, transparent)}
.text-gray-800{color:color-mix(in srgb, var(--gray-800) calc(var(--tw-text-opacity) * 100%), transparent)}
.text-gray-900{color:color-mix(in srgb, var(--gray-900) calc(var(--tw-text-opacity) * 100%), transparent)}
.text-green-400{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.text-green-500{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.text-green-600{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.text-green-600\/50{color:color-mix(in srgb, var(--tilvo-accent) 50%, transparent)}
.text-green-700{color:color-mix(in srgb, var(--tilvo-accent-press) calc(var(--tw-text-opacity) * 100%), transparent)}
.ring-blue-500{--tw-ring-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-ring-opacity) * 100%), transparent)}
.ring-gray-200{--tw-ring-color:color-mix(in srgb, var(--gray-200) calc(var(--tw-ring-opacity) * 100%), transparent)}
select{border-color:var(--gray-400)}
.prose{--tw-prose-body:var(--gray-600);--tw-prose-headings:var(--gray-900);--tw-prose-lead:var(--gray-600);--tw-prose-bold:var(--gray-900);--tw-prose-counters:var(--gray-500);--tw-prose-bullets:var(--gray-300);--tw-prose-hr:var(--gray-300);--tw-prose-quotes:var(--gray-900);--tw-prose-quote-borders:var(--gray-200);--tw-prose-captions:var(--gray-500);--tw-prose-code:var(--gray-900);--tw-prose-pre-code:var(--gray-200);--tw-prose-pre-bg:var(--gray-800);--tw-prose-th-borders:var(--gray-300);--tw-prose-td-borders:var(--gray-200);--tw-prose-invert-body:var(--gray-300);--tw-prose-invert-lead:var(--gray-400);--tw-prose-invert-counters:var(--gray-400);--tw-prose-invert-bullets:var(--gray-600);--tw-prose-invert-hr:var(--gray-600);--tw-prose-invert-quotes:var(--gray-100);--tw-prose-invert-quote-borders:var(--gray-600);--tw-prose-invert-captions:var(--gray-400);--tw-prose-invert-pre-code:var(--gray-300);--tw-prose-invert-th-borders:var(--gray-600);--tw-prose-invert-td-borders:var(--gray-600)}
.btn-primary{background-color:var(--tilvo-accent);background-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-bg-opacity) * 100%), transparent)}
.btn-primary:disabled:hover{background-color:var(--tilvo-accent);background-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-bg-opacity) * 100%), transparent)}
.btn-secondary:hover{background-color:var(--gray-20);background-color:color-mix(in srgb, var(--gray-20) calc(var(--tw-bg-opacity) * 100%), transparent)}
.btn-neutral:hover{background-color:var(--gray-20);background-color:color-mix(in srgb, var(--gray-20) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .btn-neutral{border-color:var(--gray-600);border-color:color-mix(in srgb, var(--gray-600) calc(var(--tw-border-opacity) * 100%), transparent)}
.dark .btn-neutral:hover{background-color:var(--gray-600);background-color:color-mix(in srgb, var(--gray-600) calc(var(--tw-bg-opacity) * 100%), transparent)}
.markdown th{background-color:color-mix(in srgb, var(--gray-20) 20%, transparent)}
.markdown th:last-child{border-color:var(--gray-300)}
.group:hover .group-hover\:text-gray-500{color:color-mix(in srgb, var(--gray-400) calc(var(--tw-text-opacity) * 100%), transparent)}
.form-input,.form-multiselect,.form-select,.form-textarea{border-color:var(--gray-400)}
.form-input:focus,.form-multiselect:focus,.form-select:focus,.form-textarea:focus{--tw-ring-color:var(--tilvo-accent);border-color:var(--tilvo-accent)}
.form-input::-moz-placeholder{color:var(--gray-400)}
.form-textarea::-moz-placeholder{color:var(--gray-400)}
.form-input::placeholder,.form-textarea::placeholder{color:var(--gray-400)}
.dark body,.dark html{background-color:var(--gray-800);background-color:color-mix(in srgb, var(--gray-800) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .webkit-dark-styles,.dark .webkit-dark-styles:focus{-webkit-box-shadow:inset 0 0 0 50vh var(--gray-900)}
.popover-ui{border:1px solid var(--gray-200)}
.shimmer{background:linear-gradient(90deg,var(--gray-800) 25%,#8182862e 50%,var(--gray-800) 75%) 0 0/200% 100%}
.sharepoint-picker-bg{background-color:var(--gray-50)}
.selection\:bg-blue-500\/20 ::selection{background-color:color-mix(in srgb, var(--tilvo-accent) 20%, transparent)}
.selection\:bg-blue-500\/20::selection{background-color:color-mix(in srgb, var(--tilvo-accent) 20%, transparent)}
.placeholder\:text-gray-400::placeholder{color:color-mix(in srgb, var(--gray-400) calc(var(--tw-text-opacity) * 100%), transparent)}
.placeholder\:text-gray-500::placeholder{color:color-mix(in srgb, var(--gray-500) calc(var(--tw-text-opacity) * 100%), transparent)}
.hover\:border-gray-400:hover{border-color:var(--gray-400);border-color:color-mix(in srgb, var(--gray-400) calc(var(--tw-border-opacity) * 100%), transparent)}
.hover\:border-green-500:hover{border-color:var(--tilvo-accent);border-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-border-opacity) * 100%), transparent)}
.hover\:bg-blue-700\/10:hover{background-color:color-mix(in srgb, var(--tilvo-accent-hover) 10%, transparent)}
.hover\:bg-gray-100:hover{background-color:var(--gray-100);background-color:color-mix(in srgb, var(--gray-100) calc(var(--tw-bg-opacity) * 100%), transparent)}
.hover\:bg-gray-100\/50:hover{background-color:color-mix(in srgb, var(--gray-100) 50%, transparent)}
.hover\:bg-gray-20:hover{background-color:var(--gray-20);background-color:color-mix(in srgb, var(--gray-20) calc(var(--tw-bg-opacity) * 100%), transparent)}
.hover\:bg-gray-20\/50:hover{background-color:color-mix(in srgb, var(--gray-20) 50%, transparent)}
.hover\:bg-gray-200:hover{background-color:var(--gray-200);background-color:color-mix(in srgb, var(--gray-200) calc(var(--tw-bg-opacity) * 100%), transparent)}
.hover\:bg-gray-200\/25:hover{background-color:color-mix(in srgb, var(--gray-200) 25%, transparent)}
.hover\:bg-gray-200\/40:hover{background-color:color-mix(in srgb, var(--gray-200) 40%, transparent)}
.hover\:bg-gray-400:hover{background-color:var(--gray-400);background-color:color-mix(in srgb, var(--gray-400) calc(var(--tw-bg-opacity) * 100%), transparent)}
.hover\:bg-gray-50:hover{background-color:var(--gray-50);background-color:color-mix(in srgb, var(--gray-50) calc(var(--tw-bg-opacity) * 100%), transparent)}
.hover\:bg-gray-700:hover{background-color:var(--gray-700);background-color:color-mix(in srgb, var(--gray-700) calc(var(--tw-bg-opacity) * 100%), transparent)}
.hover\:bg-gray-800:hover{background-color:var(--gray-800);background-color:color-mix(in srgb, var(--gray-800) calc(var(--tw-bg-opacity) * 100%), transparent)}
.hover\:bg-gray-800\/10:hover{background-color:color-mix(in srgb, var(--gray-800) 10%, transparent)}
.hover\:bg-green-400:hover{background-color:var(--tilvo-accent);background-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-bg-opacity) * 100%), transparent)}
.hover\:bg-green-500:hover{background-color:var(--tilvo-accent);background-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-bg-opacity) * 100%), transparent)}
.hover\:bg-green-600:hover{background-color:var(--tilvo-accent);background-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-bg-opacity) * 100%), transparent)}
.hover\:bg-green-700:hover{background-color:var(--tilvo-accent-press);background-color:color-mix(in srgb, var(--tilvo-accent-press) calc(var(--tw-bg-opacity) * 100%), transparent)}
.hover\:bg-green-700\/10:hover{background-color:color-mix(in srgb, var(--tilvo-accent-press) 10%, transparent)}
.hover\:from-gray-200:hover{--tw-gradient-from:var(--gray-200) var(--tw-gradient-from-position);--tw-gradient-to:color-mix(in srgb, var(--gray-200) 0%, transparent) var(--tw-gradient-to-position)}
.hover\:text-blue-600:hover{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.hover\:text-gray-600:hover{color:color-mix(in srgb, var(--gray-600) calc(var(--tw-text-opacity) * 100%), transparent)}
.hover\:text-gray-700:hover{color:color-mix(in srgb, var(--gray-700) calc(var(--tw-text-opacity) * 100%), transparent)}
.hover\:text-green-600:hover{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.hover\:text-green-700:hover{color:color-mix(in srgb, var(--tilvo-accent-press) calc(var(--tw-text-opacity) * 100%), transparent)}
.hover\:decoration-green-700:hover{text-decoration-color:var(--tilvo-accent-press)}
.focus\:border-gray-400:focus{border-color:var(--gray-400);border-color:color-mix(in srgb, var(--gray-400) calc(var(--tw-border-opacity) * 100%), transparent)}
.focus\:border-green-500:focus{border-color:var(--tilvo-accent);border-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-border-opacity) * 100%), transparent)}
.focus\:bg-gray-50:focus{background-color:var(--gray-50);background-color:color-mix(in srgb, var(--gray-50) calc(var(--tw-bg-opacity) * 100%), transparent)}
.focus\:bg-green-500:focus{background-color:var(--tilvo-accent);background-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-bg-opacity) * 100%), transparent)}
.focus\:text-gray-600:focus{color:color-mix(in srgb, var(--gray-600) calc(var(--tw-text-opacity) * 100%), transparent)}
.focus\:text-gray-700:focus{color:color-mix(in srgb, var(--gray-700) calc(var(--tw-text-opacity) * 100%), transparent)}
.focus\:text-green-700:focus{color:color-mix(in srgb, var(--tilvo-accent-press) calc(var(--tw-text-opacity) * 100%), transparent)}
.focus\:decoration-green-700:focus{text-decoration-color:var(--tilvo-accent-press)}
.focus\:ring-blue-500:focus{--tw-ring-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-ring-opacity) * 100%), transparent)}
.focus\:ring-gray-400:focus{--tw-ring-color:color-mix(in srgb, var(--gray-400) calc(var(--tw-ring-opacity) * 100%), transparent)}
.focus\:ring-gray-500:focus{--tw-ring-color:color-mix(in srgb, var(--gray-500) calc(var(--tw-ring-opacity) * 100%), transparent)}
.focus\:ring-gray-700\/10:focus{--tw-ring-color:color-mix(in srgb, var(--gray-700) 10%, transparent)}
.focus\:ring-green-500:focus{--tw-ring-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-ring-opacity) * 100%), transparent)}
.focus\:ring-green-500\/90:focus{--tw-ring-color:color-mix(in srgb, var(--tilvo-accent) 90%, transparent)}
.focus-visible\:border-green-500:focus-visible{border-color:var(--tilvo-accent);border-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-border-opacity) * 100%), transparent)}
.focus-visible\:ring-blue-600:focus-visible{--tw-ring-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-ring-opacity) * 100%), transparent)}
.focus-visible\:ring-gray-500:focus-visible{--tw-ring-color:color-mix(in srgb, var(--gray-500) calc(var(--tw-ring-opacity) * 100%), transparent)}
.disabled\:bg-green-400:disabled{background-color:var(--tilvo-accent);background-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-bg-opacity) * 100%), transparent)}
.disabled\:text-gray-300:disabled{color:color-mix(in srgb, var(--gray-300) calc(var(--tw-text-opacity) * 100%), transparent)}
.group\/temp:hover .group-hover\/temp\:border-gray-200{border-color:var(--gray-200);border-color:color-mix(in srgb, var(--gray-200) calc(var(--tw-border-opacity) * 100%), transparent)}
.group:hover .group-hover\:from-gray-200{--tw-gradient-from:var(--gray-200) var(--tw-gradient-from-position);--tw-gradient-to:color-mix(in srgb, var(--gray-200) 0%, transparent) var(--tw-gradient-to-position)}
.peer:placeholder-shown~.peer-placeholder-shown\:text-gray-500{color:color-mix(in srgb, var(--gray-500) calc(var(--tw-text-opacity) * 100%), transparent)}
.peer:focus~.peer-focus\:text-green-500{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.peer:focus~.peer-focus\:text-green-600{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.data-\[state\=open\]\:bg-gray-100[data-state=open]{background-color:var(--gray-100);background-color:color-mix(in srgb, var(--gray-100) calc(var(--tw-bg-opacity) * 100%), transparent)}
.data-\[state\=open\]\:bg-gray-50[data-state=open]{background-color:var(--gray-50);background-color:color-mix(in srgb, var(--gray-50) calc(var(--tw-bg-opacity) * 100%), transparent)}
.data-\[state\=active\]\:text-gray-800[data-state=active]{color:color-mix(in srgb, var(--gray-800) calc(var(--tw-text-opacity) * 100%), transparent)}
.radix-state-open\:bg-gray-50[data-state=open]{background-color:var(--gray-50);background-color:color-mix(in srgb, var(--gray-50) calc(var(--tw-bg-opacity) * 100%), transparent)}
.radix-state-open\:text-gray-600[data-state=open]{color:color-mix(in srgb, var(--gray-600) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:border-gray-300{border-color:var(--gray-300);border-color:color-mix(in srgb, var(--gray-300) calc(var(--tw-border-opacity) * 100%), transparent)}
.dark .dark\:border-gray-500{border-color:var(--gray-500);border-color:color-mix(in srgb, var(--gray-500) calc(var(--tw-border-opacity) * 100%), transparent)}
.dark .dark\:border-gray-500\/50{border-color:color-mix(in srgb, var(--gray-500) 50%, transparent)}
.dark .dark\:border-gray-600{border-color:var(--gray-600);border-color:color-mix(in srgb, var(--gray-600) calc(var(--tw-border-opacity) * 100%), transparent)}
.dark .dark\:border-gray-700{border-color:var(--gray-700);border-color:color-mix(in srgb, var(--gray-700) calc(var(--tw-border-opacity) * 100%), transparent)}
.dark .dark\:border-gray-800{border-color:var(--gray-800);border-color:color-mix(in srgb, var(--gray-800) calc(var(--tw-border-opacity) * 100%), transparent)}
.dark .dark\:border-gray-800\/50{border-color:color-mix(in srgb, var(--gray-800) 50%, transparent)}
.dark .dark\:border-green-500{border-color:var(--tilvo-accent);border-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-border-opacity) * 100%), transparent)}
.dark .dark\:bg-gray-100{background-color:var(--gray-100);background-color:color-mix(in srgb, var(--gray-100) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:bg-gray-200{background-color:var(--gray-200);background-color:color-mix(in srgb, var(--gray-200) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:bg-gray-50{background-color:var(--gray-50);background-color:color-mix(in srgb, var(--gray-50) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:bg-gray-500{background-color:var(--gray-500);background-color:color-mix(in srgb, var(--gray-500) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:bg-gray-700{background-color:var(--gray-700);background-color:color-mix(in srgb, var(--gray-700) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:bg-gray-800{background-color:var(--gray-800);background-color:color-mix(in srgb, var(--gray-800) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:bg-gray-800\/90{background-color:color-mix(in srgb, var(--gray-800) 90%, transparent)}
.dark .dark\:bg-gray-850{background-color:var(--gray-850);background-color:color-mix(in srgb, var(--gray-850) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:bg-gray-900{background-color:var(--gray-900);background-color:color-mix(in srgb, var(--gray-900) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:bg-green-500\/30{background-color:color-mix(in srgb, var(--tilvo-accent) 30%, transparent)}
.dark .dark\:bg-green-600{background-color:var(--tilvo-accent);background-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:from-gray-800{--tw-gradient-from:var(--gray-800) var(--tw-gradient-from-position);--tw-gradient-to:color-mix(in srgb, var(--gray-800) 0%, transparent) var(--tw-gradient-to-position)}
.dark .dark\:from-gray-850{--tw-gradient-from:var(--gray-850) var(--tw-gradient-from-position);--tw-gradient-to:color-mix(in srgb, var(--gray-850) 0%, transparent) var(--tw-gradient-to-position)}
.dark .dark\:text-blue-300{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:text-blue-400{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:text-blue-500{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:text-blue-600{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:text-gray-100{color:color-mix(in srgb, var(--gray-100) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:text-gray-20{color:color-mix(in srgb, var(--gray-20) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:text-gray-200{color:color-mix(in srgb, var(--gray-200) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:text-gray-300{color:color-mix(in srgb, var(--gray-300) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:text-gray-400{color:color-mix(in srgb, var(--gray-400) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:text-gray-50{color:color-mix(in srgb, var(--gray-50) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:text-gray-50\/70{color:color-mix(in srgb, var(--gray-50) 70%, transparent)}
.dark .dark\:text-gray-500{color:color-mix(in srgb, var(--gray-500) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:text-gray-600{color:color-mix(in srgb, var(--gray-600) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:text-gray-800{color:color-mix(in srgb, var(--gray-800) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:text-gray-900{color:color-mix(in srgb, var(--gray-900) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:text-green-400{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:text-green-500{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:ring-blue-400{--tw-ring-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-ring-opacity) * 100%), transparent)}
.dark .dark\:ring-gray-600{--tw-ring-color:color-mix(in srgb, var(--gray-600) calc(var(--tw-ring-opacity) * 100%), transparent)}
.dark .dark\:ring-gray-700{--tw-ring-color:color-mix(in srgb, var(--gray-700) calc(var(--tw-ring-opacity) * 100%), transparent)}
.dark .dark\:hover\:border-gray-500:hover{border-color:var(--gray-500);border-color:color-mix(in srgb, var(--gray-500) calc(var(--tw-border-opacity) * 100%), transparent)}
.dark .dark\:hover\:bg-gray-100:hover{background-color:var(--gray-100);background-color:color-mix(in srgb, var(--gray-100) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:hover\:bg-gray-200:hover{background-color:var(--gray-200);background-color:color-mix(in srgb, var(--gray-200) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:hover\:bg-gray-300:hover{background-color:var(--gray-300);background-color:color-mix(in srgb, var(--gray-300) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:hover\:bg-gray-600:hover{background-color:var(--gray-600);background-color:color-mix(in srgb, var(--gray-600) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:hover\:bg-gray-700:hover{background-color:var(--gray-700);background-color:color-mix(in srgb, var(--gray-700) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:hover\:bg-gray-800:hover{background-color:var(--gray-800);background-color:color-mix(in srgb, var(--gray-800) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:hover\:bg-gray-800\/50:hover{background-color:color-mix(in srgb, var(--gray-800) 50%, transparent)}
.dark .dark\:hover\:bg-gray-850\/25:hover{background-color:color-mix(in srgb, var(--gray-850) 25%, transparent)}
.dark .dark\:hover\:bg-green-600:hover{background-color:var(--tilvo-accent);background-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:hover\:bg-green-700:hover{background-color:var(--tilvo-accent-press);background-color:color-mix(in srgb, var(--tilvo-accent-press) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:hover\:from-gray-800:hover{--tw-gradient-from:var(--gray-800) var(--tw-gradient-from-position);--tw-gradient-to:color-mix(in srgb, var(--gray-800) 0%, transparent) var(--tw-gradient-to-position)}
.dark .dark\:hover\:text-blue-300:hover{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:hover\:text-blue-600:hover{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:hover\:text-gray-200:hover{color:color-mix(in srgb, var(--gray-200) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:hover\:text-gray-400:hover{color:color-mix(in srgb, var(--gray-400) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:hover\:text-green-400:hover{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:hover\:text-green-500:hover{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:hover\:decoration-green-400:hover{text-decoration-color:var(--tilvo-accent)}
.dark .dark\:focus\:border-gray-400:focus{border-color:var(--gray-400);border-color:color-mix(in srgb, var(--gray-400) calc(var(--tw-border-opacity) * 100%), transparent)}
.dark .dark\:focus\:border-gray-600:focus{border-color:var(--gray-600);border-color:color-mix(in srgb, var(--gray-600) calc(var(--tw-border-opacity) * 100%), transparent)}
.dark .dark\:focus\:bg-gray-600:focus{background-color:var(--gray-600);background-color:color-mix(in srgb, var(--gray-600) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:focus\:bg-green-600:focus{background-color:var(--tilvo-accent);background-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .focus\:dark\:bg-gray-600:focus{background-color:var(--gray-600);background-color:color-mix(in srgb, var(--gray-600) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:focus\:text-gray-200:focus{color:color-mix(in srgb, var(--gray-200) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:focus\:text-green-400:focus{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:focus\:decoration-green-400:focus{text-decoration-color:var(--tilvo-accent)}
.dark .dark\:focus\:ring-gray-200\/10:focus{--tw-ring-color:color-mix(in srgb, var(--gray-200) 10%, transparent)}
.dark .dark\:focus\:ring-gray-400:focus{--tw-ring-color:color-mix(in srgb, var(--gray-400) calc(var(--tw-ring-opacity) * 100%), transparent)}
.dark .dark\:focus\:ring-gray-600:focus{--tw-ring-color:color-mix(in srgb, var(--gray-600) calc(var(--tw-ring-opacity) * 100%), transparent)}
.dark .dark\:focus\:ring-green-500:focus{--tw-ring-color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-ring-opacity) * 100%), transparent)}
.dark .dark\:focus\:ring-offset-gray-700:focus{--tw-ring-offset-color:var(--gray-700)}
.dark .dark\:focus\:ring-offset-gray-900:focus{--tw-ring-offset-color:var(--gray-900)}
.dark .dark\:disabled\:text-gray-400:disabled{color:color-mix(in srgb, var(--gray-400) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .group:focus-within .dark\:group-focus-within\:text-gray-300{color:color-mix(in srgb, var(--gray-300) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .group:hover .dark\:group-hover\:from-gray-800{--tw-gradient-from:var(--gray-800) var(--tw-gradient-from-position);--tw-gradient-to:color-mix(in srgb, var(--gray-800) 0%, transparent) var(--tw-gradient-to-position)}
.dark .group:hover .dark\:group-hover\:text-gray-300{color:color-mix(in srgb, var(--gray-300) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .peer:focus~.dark\:peer-focus\:text-green-500{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:data-\[state\=active\]\:bg-gray-700[data-state=active],.dark .dark\:data-\[state\=open\]\:bg-gray-700[data-state=open]{background-color:var(--gray-700);background-color:color-mix(in srgb, var(--gray-700) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:data-\[state\=open\]\:bg-gray-800[data-state=open]{background-color:var(--gray-800);background-color:color-mix(in srgb, var(--gray-800) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:data-\[state\=active\]\:text-gray-200[data-state=active]{color:color-mix(in srgb, var(--gray-200) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:radix-state-open\:bg-gray-700[data-state=open]{background-color:var(--gray-700);background-color:color-mix(in srgb, var(--gray-700) calc(var(--tw-bg-opacity) * 100%), transparent)}
.dark .dark\:radix-state-open\:text-gray-400[data-state=open]{color:color-mix(in srgb, var(--gray-400) calc(var(--tw-text-opacity) * 100%), transparent)}
.\[\&_a\]\:text-blue-500 a{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.\[\&_a\]\:text-blue-700 a{color:color-mix(in srgb, var(--tilvo-accent-hover) calc(var(--tw-text-opacity) * 100%), transparent)}
.\[\&_a\]\:hover\:text-blue-600:hover a{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:\[\&_a\]\:text-blue-400 a{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
.dark .dark\:\[\&_a\]\:hover\:text-blue-300:hover a{color:color-mix(in srgb, var(--tilvo-accent) calc(var(--tw-text-opacity) * 100%), transparent)}
/* =========================================================================
   Тилво — скин поверх LibreChat. Исходники LibreChat не меняются: файл
   подключается последним <link> в index.html производного образа.
   Проверено на v0.8.7. Селекторы — только по переменным темы, data-testid,
   aria/role и стандартным именам утилит Tailwind.
   ========================================================================= */

/* ── шрифты: лежат в образе, внешних запросов нет (OFL, см. fonts/LICENSE-*) ── */
@font-face { font-family: "Golos Text"; font-style: normal; font-weight: 400 900; font-display: swap;
  src: url("fonts/golos-text-cyrillic-ext-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; }
@font-face { font-family: "Golos Text"; font-style: normal; font-weight: 400 900; font-display: swap;
  src: url("fonts/golos-text-cyrillic-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; }
@font-face { font-family: "Golos Text"; font-style: normal; font-weight: 400 900; font-display: swap;
  src: url("fonts/golos-text-latin-ext-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "Golos Text"; font-style: normal; font-weight: 400 900; font-display: swap;
  src: url("fonts/golos-text-latin-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }

@font-face { font-family: "Literata"; font-style: normal; font-weight: 200 900; font-display: swap;
  src: url("fonts/literata-cyrillic-ext-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; }
@font-face { font-family: "Literata"; font-style: normal; font-weight: 200 900; font-display: swap;
  src: url("fonts/literata-cyrillic-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; }
@font-face { font-family: "Literata"; font-style: normal; font-weight: 200 900; font-display: swap;
  src: url("fonts/literata-latin-ext-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "Literata"; font-style: normal; font-weight: 200 900; font-display: swap;
  src: url("fonts/literata-latin-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Literata"; font-style: italic; font-weight: 200 900; font-display: swap;
  src: url("fonts/literata-cyrillic-ext-wght-italic.woff2") format("woff2-variations");
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; }
@font-face { font-family: "Literata"; font-style: italic; font-weight: 200 900; font-display: swap;
  src: url("fonts/literata-cyrillic-wght-italic.woff2") format("woff2-variations");
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; }
@font-face { font-family: "Literata"; font-style: italic; font-weight: 200 900; font-display: swap;
  src: url("fonts/literata-latin-ext-wght-italic.woff2") format("woff2-variations");
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "Literata"; font-style: italic; font-weight: 200 900; font-display: swap;
  src: url("fonts/literata-latin-wght-italic.woff2") format("woff2-variations");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }

/* ── токены Тилво ─────────────────────────────────────────────────────── */
:root {
  --tilvo-paper:        #F6F3EC;
  --tilvo-surface:      #FFFFFF;
  --tilvo-surface-2:    #EEE9DF;
  --tilvo-hover:        #E4DED1;
  --tilvo-ink:          #1E2320;
  --tilvo-ink-muted:    #666B64;
  --tilvo-ink-faint:    #8A8F87;
  --tilvo-line:         #DDD7CA;
  --tilvo-line-2:       #D2CBBC;
  --tilvo-line-3:       #BDB5A3;
  --tilvo-accent:       #1F5C4D;
  --tilvo-accent-hover: #17483C;
  --tilvo-accent-press: #123B31;
  --tilvo-on-accent:    #FFFFFF;
  --tilvo-marker:       #E3B55B;
  --tilvo-shadow:       rgba(30, 35, 32, .14);
  --tilvo-error:        #9E3B2E;
  --tilvo-error-hover:  #84301F;
  --tilvo-error-bg:     #F7E9E3;
  --tilvo-warning:      #7E6116;
  --tilvo-warning-bg:   #F6EEDA;
  --tilvo-success:      #2C6B4A;
  --tilvo-code-bg:      #F8F6F1;

  --tilvo-radius-lg: 20px;
  --tilvo-radius-md: 14px;
  --tilvo-radius-sm: 10px;
  --tilvo-font-display: "Literata", Georgia, "Times New Roman", serif;
  --tilvo-font-ui: "Golos Text", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --tilvo-font-mono: ui-monospace, "Cascadia Mono", "SF Mono", Menlo, Consolas, monospace;

  /* знак «Галька»: основной и версия для размеров меньше 24 px */
  --tilvo-mark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cpath d='M27 7.5C43 5 58.5 16.5 59.5 32C60.4 46.5 49.5 57 34 57C17.5 57 5 47.5 4.5 33C4 19.5 13 9.7 27 7.5ZM33.5 38A4 4 0 0 0 33.5 46L48.5 46A4 4 0 0 0 48.5 38Z' fill-rule='evenodd'/%3E%3C/svg%3E");
  --tilvo-mark-small: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cpath d='M27 7.5C43 5 58.5 16.5 59.5 32C60.4 46.5 49.5 57 34 57C17.5 57 5 47.5 4.5 33C4 19.5 13 9.7 27 7.5ZM31 36A5.5 5.5 0 0 0 31 47L48.5 47A5.5 5.5 0 0 0 48.5 36Z' fill-rule='evenodd'/%3E%3C/svg%3E");

  /* серая шкала LibreChat → тёплая шкала Тилво (одна на обе темы, как в оригинале) */
  --gray-20:  #F1EEE6;
  --gray-50:  #F6F3EC;
  --gray-100: #EEE9DF;
  --gray-200: #E4DED1;
  --gray-300: #D2CBBC;
  --gray-400: #9BA198;
  --gray-500: #6F756D;
  --gray-600: #3A413B;
  --gray-700: #2B312C;
  --gray-800: #1E2320;
  --gray-850: #191D1A;
  --gray-900: #141715;
  --gizmo-gray-500: #8A8F87;
  --gizmo-gray-600: #666B64;
  --gizmo-gray-950: #141715;
  --brand-purple: var(--tilvo-accent);

  /* переменные темы LibreChat — светлая */
  --presentation:             var(--tilvo-paper);
  --surface-primary:          var(--tilvo-paper);
  --surface-primary-alt:      var(--tilvo-surface-2);
  --surface-primary-contrast: var(--tilvo-surface-2);
  --surface-secondary:        var(--tilvo-surface);
  --surface-secondary-alt:    var(--tilvo-surface-2);
  --surface-tertiary:         var(--tilvo-surface-2);
  --surface-tertiary-alt:     var(--tilvo-surface);
  --surface-dialog:           var(--tilvo-surface);
  --surface-chat:             var(--tilvo-surface);
  --surface-hover:            var(--tilvo-hover);
  --surface-hover-alt:        var(--tilvo-line-2);
  --surface-active:           var(--tilvo-surface-2);
  --surface-active-alt:       var(--tilvo-hover);
  --surface-submit:           var(--tilvo-accent);
  --surface-submit-hover:     var(--tilvo-accent-hover);
  --surface-destructive:      var(--tilvo-error);
  --surface-destructive-hover: var(--tilvo-error-hover);

  --text-primary:       var(--tilvo-ink);
  --text-secondary:     var(--tilvo-ink-muted);
  --text-secondary-alt: #7A7F77;
  --text-tertiary:      var(--tilvo-ink-faint);
  --text-warning:       var(--tilvo-warning);
  --text-destructive:   var(--tilvo-error);

  --border-light:       var(--tilvo-line);
  --border-medium:      var(--tilvo-line-2);
  --border-medium-alt:  var(--tilvo-line-2);
  --border-heavy:       var(--tilvo-line-3);
  --border-xheavy:      #9A9282;
  --border-destructive: var(--tilvo-error);

  --ring-primary:        var(--tilvo-accent);
  --header-primary:      var(--tilvo-paper);
  --header-hover:        var(--tilvo-hover);
  --header-button-hover: var(--tilvo-hover);

  /* переменные shadcn (тройки HSL) */
  --background: 42 36% 94%;          /* #F6F3EC */
  --foreground: 144 8% 13%;          /* #1E2320 */
  --card: 0 0% 100%;
  --card-foreground: 144 8% 13%;
  --primary: 165 50% 24%;            /* акцент */
  --primary-foreground: 0 0% 100%;
  --secondary: 40 31% 90%;           /* #EEE9DF */
  --secondary-foreground: 144 8% 13%;
  --muted: 40 31% 90%;
  --muted-foreground: 103 3% 41%;    /* #666B64 */
  --accent: 41 27% 86%;              /* наведение #E4DED1 */
  --accent-foreground: 144 8% 13%;
  --destructive: 7 55% 40%;          /* #9E3B2E */
  --destructive-foreground: 0 0% 100%;
  --border: 41 21% 83%;              /* #DDD7CA */
  --input: 41 21% 83%;
  --ring: 165 50% 24%;
  --radius: 14px;
  --switch-unchecked: 40 12% 63%;
}

.dark {
  --tilvo-paper:        #141715;
  --tilvo-surface:      #1C201D;
  --tilvo-surface-2:    #242925;
  --tilvo-hover:        #2B312C;
  --tilvo-ink:          #ECE9E1;
  --tilvo-ink-muted:    #9BA198;
  --tilvo-ink-faint:    #7F857C;
  --tilvo-line:         #2F3530;
  --tilvo-line-2:       #3A413B;
  --tilvo-line-3:       #4A524B;
  --tilvo-accent:       #6FBF9F;
  --tilvo-accent-hover: #86CDB0;
  --tilvo-accent-press: #58A98A;
  --tilvo-on-accent:    #10201A;
  --tilvo-shadow:       rgba(0, 0, 0, .5);
  --tilvo-error:        #E59A8E;
  --tilvo-error-hover:  #EDB1A7;
  --tilvo-error-bg:     #2A1E1B;
  --tilvo-warning:      #E3B55B;
  --tilvo-warning-bg:   #2A2317;
  --tilvo-success:      #8FCFA9;
  --tilvo-code-bg:      #191D1A;

  --surface-primary-alt:      var(--tilvo-surface);
  --surface-primary-contrast: var(--tilvo-surface);
  --surface-secondary:        var(--tilvo-surface);
  --surface-chat:             var(--tilvo-surface);
  --surface-hover-alt:        var(--tilvo-line-2);
  --text-secondary-alt: #8A9088;
  --border-xheavy:      #5C655D;

  --background: 140 7% 8%;           /* #141715 */
  --foreground: 44 22% 90%;          /* #ECE9E1 */
  --card: 135 7% 12%;                /* #1C201D */
  --card-foreground: 44 22% 90%;
  --primary: 156 38% 59%;            /* #6FBF9F */
  --primary-foreground: 158 33% 9%;
  --secondary: 132 6% 15%;           /* #242925 */
  --secondary-foreground: 44 22% 90%;
  --muted: 132 6% 15%;
  --muted-foreground: 100 5% 61%;    /* #9BA198 */
  --accent: 130 7% 18%;              /* #2B312C */
  --accent-foreground: 44 22% 90%;
  --destructive: 8 63% 73%;
  --destructive-foreground: 158 33% 9%;
  --border: 130 6% 20%;              /* #2F3530 */
  --input: 130 6% 20%;
  --ring: 156 38% 59%;
  --switch-unchecked: 120 4% 38%;
}

/* ── типографика ──────────────────────────────────────────────────────── */
html, body, button, input, textarea, select, .font-sans {
  font-family: var(--tilvo-font-ui) !important;
}
code, pre, kbd, samp, .font-mono, .hljs {
  font-family: var(--tilvo-font-mono) !important;
}
body { -webkit-font-smoothing: antialiased; }

/* Literata — только заголовки ответа, приветствие и заголовки диалогов; не мельче 18 px */
.markdown h1, .markdown h2, .markdown h3,
p.split-parent,
[role="dialog"] h2, [role="alertdialog"] h2 {
  font-family: var(--tilvo-font-display) !important;
  font-weight: 500;
  letter-spacing: -.01em;
}
.markdown h1 { font-size: 28px; line-height: 1.25; }
.markdown h2 { font-size: 23px; line-height: 1.3; }
.markdown h3 { font-size: 19px; line-height: 1.35; }
.markdown h4, .markdown h5, .markdown h6 { font-family: var(--tilvo-font-ui); font-weight: 600; }

/* ── радиусы: 20 / 14 / 10 ────────────────────────────────────────────── */
.rounded-3xl, .rounded-2xl { border-radius: var(--tilvo-radius-lg); }
.rounded-xl, .rounded-lg   { border-radius: var(--tilvo-radius-md); }
.rounded-md, .rounded      { border-radius: var(--tilvo-radius-sm); }
.rounded-t-3xl { border-top-left-radius: var(--tilvo-radius-lg); border-top-right-radius: var(--tilvo-radius-lg); }
@media (min-width: 640px) { .sm\:rounded-3xl { border-radius: var(--tilvo-radius-lg); } }

/* ── линии вместо теней; тень остаётся только у всплывающих слоёв ─────── */
.shadow, .shadow-sm, .shadow-md, .shadow-lg, .shadow-xl, .shadow-2xl { box-shadow: none; }
[role="menu"], [role="listbox"], [role="dialog"], [role="alertdialog"], [role="tooltip"],
[data-radix-popper-content-wrapper] > *, .popover-ui, [data-side] {
  box-shadow: 0 16px 40px var(--tilvo-shadow) !important;
}
[role="menu"], [role="listbox"], .popover-ui { border: 1px solid var(--border-light); border-radius: var(--tilvo-radius-md); }
[role="dialog"], [role="alertdialog"] { border: 1px solid var(--border-light); border-radius: var(--tilvo-radius-lg); }

/* ── ссылки, выделение, фокус ─────────────────────────────────────────── */
.markdown a, .prose a { color: var(--tilvo-accent) !important; text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; font-weight: 500; }
.markdown a:hover, .prose a:hover { color: var(--tilvo-accent-hover) !important; }
::selection { background: var(--tilvo-marker); color: #1E2320; }
mark { background: var(--tilvo-marker); color: #1E2320; border-radius: 3px; padding: 0 2px; }
:focus-visible { outline: 2px solid var(--ring-primary); outline-offset: 2px; }
textarea:focus-visible, input:focus-visible { outline: none; }

/* ── прокрутка ────────────────────────────────────────────────────────── */
* { scrollbar-width: thin; scrollbar-color: var(--border-medium) transparent; }
*::-webkit-scrollbar { width: 8px; height: 8px; }
*::-webkit-scrollbar-thumb { background: var(--border-medium); border-radius: 999px; }
*::-webkit-scrollbar-track { background: transparent; }

/* ── экран приветствия ────────────────────────────────────────────────── */
/* знак над фразой, по центру */
div:has(> p.split-parent) { flex-direction: column !important; gap: 22px; }
p.split-parent { font-size: 34px !important; line-height: 1.2 !important; overflow: visible !important; padding-bottom: 6px; }
@media (max-width: 640px) { p.split-parent { font-size: 26px !important; text-align: center; } }
/* медовое подчёркивание второго слова: «Чем [помочь] сегодня?» */
p.split-parent > span:nth-child(2) > span:not(:last-child) {
  background: linear-gradient(var(--tilvo-marker), var(--tilvo-marker)) 0 100% / 100% 3px no-repeat;
  padding-bottom: 5px;
}
/* значок над приветствием (робот или иконка модели) → знак «Галька» цветом текста */
div:has(> p.split-parent) .shadow-stroke {
  width: 44px; height: 44px;
  background-color: var(--text-primary) !important;
  -webkit-mask: var(--tilvo-mark) center / contain no-repeat; mask: var(--tilvo-mark) center / contain no-repeat;
  border-radius: 0 !important;
}
div:has(> p.split-parent) .shadow-stroke::after { display: none; }
div:has(> p.split-parent) .shadow-stroke > * { visibility: hidden; }

/* ── поле ввода ───────────────────────────────────────────────────────── */
form .bg-surface-chat.border { border-color: var(--border-medium); box-shadow: none !important; }
form .bg-surface-chat.border:focus-within { border-color: var(--border-heavy); }
#prompt-textarea { font-size: 16px; line-height: 1.5; }
#prompt-textarea::placeholder { color: var(--text-tertiary) !important; opacity: 1; }
[data-testid="send-button"] {
  background-color: var(--surface-submit) !important; color: var(--tilvo-on-accent) !important; opacity: 1 !important;
}
[data-testid="send-button"] svg { color: var(--tilvo-on-accent) !important; }
[data-testid="send-button"]:hover:not(:disabled)  { background-color: var(--surface-submit-hover) !important; }
[data-testid="send-button"]:active:not(:disabled) { background-color: var(--tilvo-accent-press) !important; }
[data-testid="send-button"]:disabled {
  background-color: var(--surface-tertiary) !important; box-shadow: inset 0 0 0 1px var(--border-light);
}
[data-testid="send-button"]:disabled svg { color: var(--text-tertiary) !important; }
[role="contentinfo"] { color: var(--text-secondary) !important; font-size: 12px; }

/* ── лента: сообщение пользователя — плашка справа, ответ — без плашки ── */
.message-render:has(> .user-turn) { flex-direction: row-reverse; }
.message-render:has(> .user-turn) > div:first-child { display: none; }            /* аватар */
.message-render > .user-turn { align-items: flex-end; width: 100% !important; }
.message-render > .user-turn > h2 { display: none; }                               /* имя */
.message-render > .user-turn > div { align-items: flex-end; max-width: 78%; }
.message-render > .user-turn .text-message {
  background: var(--surface-tertiary); border-radius: var(--tilvo-radius-lg); padding: 12px 18px;
}
.message-render > .user-turn .markdown p:last-child { margin-bottom: 0; }
.message-render > .user-turn .mt-1.flex { justify-content: flex-end; }

/* имя ассистента — обычным шрифтом интерфейса */
.message-render h2.select-none { font-family: var(--tilvo-font-ui) !important; font-weight: 600; font-size: 15px; letter-spacing: 0; }

/* аватар ассистента: штатный робот → знак */
.message-render > div:first-child div:has(> svg.lucide-bot) {
  width: 24px; height: 24px; border-radius: 0 !important;
  background-color: var(--text-primary);
  -webkit-mask: var(--tilvo-mark-small) center / contain no-repeat; mask: var(--tilvo-mark-small) center / contain no-repeat;
}
.message-render > div:first-child div:has(> svg.lucide-bot) > svg { visibility: hidden; }
/* пока ответ печатается, вырез знака «дышит» */
@keyframes tilvo-breathe { 0%, 100% { opacity: 1; } 50% { opacity: .45; } }
.message-render:has(.result-streaming) > div:first-child div:has(> svg.lucide-bot) { animation: tilvo-breathe 1.6s ease-in-out infinite; }

/* то же в списке диалогов и в кнопке выбора модели */
[data-testid="convo-icon"]:has(> svg.lucide-bot),
[data-testid="model-selector-button"] div:has(> svg.lucide-bot) {
  background-color: currentColor;
  -webkit-mask: var(--tilvo-mark-small) center / 16px 16px no-repeat; mask: var(--tilvo-mark-small) center / 16px 16px no-repeat;
}
[data-testid="convo-icon"]:has(> svg.lucide-bot) > svg,
[data-testid="model-selector-button"] div:has(> svg.lucide-bot) > svg { visibility: hidden; }

/* колонка ленты и поля ввода — 760 px (у LibreChat на широких экранах 880) */
@media (min-width: 1280px) {
  main .xl\:max-w-\[55rem\] { max-width: 47.5rem; }
  main .xl\:max-w-4xl { max-width: 48.5rem; }
}

/* ── типографика ответа ───────────────────────────────────────────────── */
.markdown, .markdown p, .markdown li { font-size: 16.5px; line-height: 1.6; }
.markdown { color: var(--text-primary) !important; }
.markdown strong { font-weight: 600; }
.markdown ul > li::marker { color: var(--text-tertiary); }
.markdown blockquote {
  border-left: 2px solid var(--tilvo-marker) !important; padding-left: 18px; margin-left: 0;
  font-family: var(--tilvo-font-display); font-style: italic; font-weight: 400; color: var(--text-secondary);
  quotes: none;
}
.markdown blockquote p { font-size: 17px; color: inherit; }
.markdown blockquote p::before, .markdown blockquote p::after { content: none !important; }
.markdown :not(pre) > code {
  background: var(--surface-tertiary); border-radius: 6px; padding: 2px 6px; font-size: .88em; font-weight: 500; color: var(--text-primary);
}
.markdown :not(pre) > code::before, .markdown :not(pre) > code::after { content: none !important; }

/* таблица: линии вместо сетки */
.markdown table { border-collapse: collapse; border: 1px solid var(--border-light); border-radius: var(--tilvo-radius-md); overflow: hidden; font-size: 15px; }
.markdown th { background: var(--surface-tertiary); font-weight: 600; text-align: left; }
.markdown th, .markdown td { border: 0 !important; border-bottom: 1px solid var(--border-light) !important; padding: 10px 14px !important; }
.markdown tr:last-child td { border-bottom: 0 !important; }

/* блок кода: шапка «язык — копировать» на бумажном фоне */
.markdown pre > div { border-radius: var(--tilvo-radius-md); border-color: var(--border-light); }
.markdown pre > div > div:first-child > div { background: var(--surface-tertiary) !important; border-bottom: 1px solid var(--border-light); padding: 6px 12px; }
.markdown pre > div > div:first-child span { text-transform: uppercase; letter-spacing: .06em; font-size: 11px; }
.markdown pre > div > div.overflow-y-auto { background: var(--tilvo-code-bg) !important; }
.markdown pre code.hljs { font-size: 13.5px; line-height: 1.6; color: var(--text-primary); }
.hljs-keyword, .hljs-literal, .hljs-built_in, .hljs-type { color: var(--tilvo-accent) !important; }
.hljs-string, .hljs-attr, .hljs-number { color: var(--tilvo-warning) !important; }
.hljs-comment, .hljs-quote { color: var(--text-tertiary) !important; font-style: italic; }
.hljs-title, .hljs-function, .hljs-section { color: var(--text-primary) !important; font-weight: 600; }
.hljs-variable, .hljs-params, .hljs-name, .hljs-tag { color: var(--text-primary) !important; }

/* формула в бумажной рамке */
.markdown .katex-display {
  background: var(--tilvo-code-bg); border: 1px solid var(--border-light); border-radius: var(--tilvo-radius-md);
  padding: 16px 20px; margin: 12px 0; overflow-x: auto;
}

/* ── боковая панель ───────────────────────────────────────────────────── */
/* шапка «знак + Тилво» над списком диалогов */
nav [role="region"][aria-label]::before {
  content: "Тилво"; order: -1; flex: none;
  display: block; height: 40px; line-height: 40px; margin: 0 16px 4px; padding-left: 34px;
  font-weight: 600; font-size: 17px; letter-spacing: -.01em; color: var(--text-primary);
  background: var(--tilvo-mark-ink) left center / 24px 24px no-repeat;
}
:root { --tilvo-mark-ink: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cpath fill='%231E2320' fill-rule='evenodd' d='M27 7.5C43 5 58.5 16.5 59.5 32C60.4 46.5 49.5 57 34 57C17.5 57 5 47.5 4.5 33C4 19.5 13 9.7 27 7.5ZM33.5 38A4 4 0 0 0 33.5 46L48.5 46A4 4 0 0 0 48.5 38Z'/%3E%3C/svg%3E"); }
.dark  { --tilvo-mark-ink: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cpath fill='%23ECE9E1' fill-rule='evenodd' d='M27 7.5C43 5 58.5 16.5 59.5 32C60.4 46.5 49.5 57 34 57C17.5 57 5 47.5 4.5 33C4 19.5 13 9.7 27 7.5ZM33.5 38A4 4 0 0 0 33.5 46L48.5 46A4 4 0 0 0 48.5 38Z'/%3E%3C/svg%3E"); }

/* заголовки групп «Сегодня / Вчера / …» и разделов */
nav [role="grid"] h2, nav button.group > span.select-none {
  font-family: var(--tilvo-font-ui) !important; font-size: 11px !important; font-weight: 600 !important;
  text-transform: uppercase; letter-spacing: .07em; color: var(--text-tertiary) !important;
}
/* пункт диалога: активный — одна сплошная плашка. LibreChat красит и сам пункт, и вложенный блок;
   вложенный делаем прозрачным, иначе вокруг него остаётся кольцо другого цвета. */
[data-testid="convo-item"] { border-radius: var(--tilvo-radius-sm); font-size: 14px; }
[data-testid="convo-item"] > div { background-color: transparent !important; }
[data-testid="convo-item"].bg-surface-active-alt,
[data-testid="convo-item"][aria-current="page"] { background-color: var(--tilvo-active-item) !important; box-shadow: none; }
[data-testid="convo-item"]::before { display: none !important; }   /* штатная чёрная полоска-индикатор: активность уже показана плашкой */
:root { --tilvo-active-item: #FFFFFF; }
.dark  { --tilvo-active-item: #2B312C; }
[data-testid="convo-item"] .bg-gradient-to-l { display: none; }   /* затухание текста рисовалось старым фоном */
[data-testid="convo-item"] div[aria-label] { display: block; text-overflow: ellipsis; padding-right: 4px; }

/* ── шапка: кнопки-обводки на бумаге ──────────────────────────────────── */
[data-testid="model-selector-button"] { font-weight: 600; border-color: var(--border-medium); }
/* шапка ленты — сплошная, с линией снизу: текст не просвечивает под кнопками */
main .bg-gradient-to-b.from-presentation { background-image: none !important; background-color: var(--presentation); border-bottom: 1px solid var(--border-light); }

/* ── анимации: коротко и без пружин; уважение к reduce-motion ─────────── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
