/* «Досрок» — компоненты (.ds-*). Классы читают только токены.
   Отклик мгновенный: вход в наведение без задержки, выход 70мс.
   Артефакты-бланки (расчёт, норма, оттиск) — острые углы и PT Serif:
   «документ, лежащий внутри инструмента». */

/* ---- Кнопки ---- */
.ds-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-15);height:var(--ctl-h);padding:0 var(--sp-3);border:1px solid transparent;border-radius:var(--r-s);background:var(--accent);color:var(--on-accent);font-size:var(--fs-md);font-weight:500;line-height:var(--lh-ui);white-space:nowrap;cursor:pointer;box-shadow:var(--edge-key),0 1px 1px rgba(18,21,28,0.15);transition:background var(--dur-1) var(--ease-out),box-shadow var(--dur-1) var(--ease-out),transform var(--dur-1) var(--ease-out)}
.ds-btn:hover{background:var(--accent-deep);text-decoration:none;color:var(--on-accent)}
.ds-btn:active{transform:translateY(0.5px);box-shadow:var(--edge-key)}
.ds-btn:disabled{opacity:0.5;cursor:default;transform:none}
.ds-btn svg{width:16px;height:16px;flex:none}
.ds-btn-quiet{background:var(--surface);color:var(--ink);border-color:var(--line-strong);box-shadow:0 1px 1px rgba(18,21,28,0.04)}
.ds-btn-quiet:hover{background:var(--surface-dim);border-color:var(--line-control);color:var(--ink)}
.ds-btn-quiet:active{transform:translateY(0.5px);box-shadow:none}
.ds-btn-danger{background:var(--danger);color:var(--danger-label)}
.ds-btn-danger:hover{background:var(--danger-deep);color:var(--danger-label)}
.ds-btn-ghost{background:transparent;color:var(--accent);box-shadow:none}
.ds-btn-ghost:hover{background:var(--accent-wash);color:var(--accent-deep)}
.ds-btn-sm{height:var(--ctl-h-sm);padding:0 var(--sp-25);font-size:var(--fs-sm)}
.ds-btn-lg{height:var(--ctl-h-input);padding:0 var(--sp-4);font-size:var(--fs-body)}
.ds-btn .ds-kbd{margin-left:var(--sp-1)}
.ds-btn-caption{margin-top:var(--sp-15);font-size:var(--fs-xs);color:var(--ink-3)}
.ds-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:var(--ctl-h-icon);height:var(--ctl-h-icon);border:1px solid transparent;border-radius:var(--r-s);background:transparent;color:var(--ink-3);cursor:pointer;transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}
.ds-iconbtn:hover{background:var(--surface-sunken);color:var(--ink)}
.ds-iconbtn:active{transform:translateY(0.5px)}
.ds-iconbtn svg{width:16px;height:16px}
.ds-iconbtn-outline{border-color:var(--line-strong);background:var(--surface);box-shadow:0 1px 1px rgba(18,21,28,0.04)}

/* ---- Клавиатура ---- */
.ds-kbd{display:inline-flex;align-items:center;justify-content:center;min-width:1.125rem;height:1.125rem;padding:0 var(--sp-1);border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:var(--r-xs);background:var(--surface);color:var(--ink-2);font-family:var(--font-mono);font-size:var(--fs-2xs);line-height:1}
.ds-kbd-row{display:inline-flex;gap:3px;align-items:center}

/* ---- Статусы и счётчики ---- */
.ds-status{display:inline-flex;align-items:center;gap:var(--sp-1);padding:2px var(--sp-2);border-radius:var(--r-xs);font-size:var(--fs-xs);font-weight:500;line-height:var(--lh-ui);white-space:nowrap}
.ds-ledger td:last-child,.ds-ledger th:last-child{padding-right:var(--sp-4)}
.ds-ledger td:first-child,.ds-ledger th:first-child{padding-left:var(--sp-4)}
.ds-status-waiting{background:var(--warn-wash);color:var(--warn)}
.ds-status-confirmed{background:var(--ok-wash);color:var(--ok)}
.ds-status-done{background:var(--surface-sunken);color:var(--ink-3)}
.ds-status-overdue{background:var(--danger-wash);color:var(--danger)}
.ds-status-neutral{background:var(--surface-sunken);color:var(--ink-2)}
.ds-count{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;padding:1px var(--sp-15);border-radius:var(--r-full);background:var(--surface-sunken);color:var(--ink-3);font-size:var(--fs-xs);font-weight:600;line-height:1.3}
.ds-days{display:inline-flex;flex-direction:column;align-items:flex-end;min-width:3.25rem;text-align:right}
.ds-days b{font-size:var(--fs-num);font-weight:650;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-0.01em;color:var(--ink)}
.ds-days span{font-size:var(--fs-2xs);line-height:1.2;color:var(--ink-3)}
.ds-days-danger b{color:var(--danger)}
.ds-days-danger span{color:var(--danger)}
.ds-days-soon b{color:var(--warn)}
.ds-days-ok b{color:var(--ink)}

/* ---- Артефакты-бланки: чип-основание, оттиск, карточка расчёта ---- */
.ds-chip-norm{display:inline-flex;align-items:center;gap:var(--sp-1);padding:2px var(--sp-2);border:1px solid var(--line-strong);border-radius:var(--r-xs);background:var(--surface);color:var(--ink-2);font-family:var(--font-mono);font-size:var(--fs-xs);line-height:var(--lh-ui);white-space:nowrap;cursor:pointer;transition:border-color var(--dur-1) var(--ease-out),background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}
.ds-chip-norm::before{content:'§';color:var(--seal);font-weight:700}
.ds-chip-norm:hover{border-color:var(--accent-wash-line);background:var(--accent-wash);color:var(--accent-deep)}
.ds-chip-manual{border-style:dashed}
.ds-chip-manual::before{content:'✎';color:var(--warn)}
.ds-stamp{display:inline-flex;align-items:center;gap:var(--sp-15);padding:3px var(--sp-2);border:1px solid var(--seal);border-radius:2px;color:var(--seal);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:0.05em;text-transform:uppercase;line-height:1.3;opacity:0.92}
.ds-calc{background:var(--surface);border:1px solid var(--line-strong);border-top:3px double var(--ink);padding:var(--sp-4) var(--sp-5)}
.ds-calc-case{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-3)}
.ds-calc-title{font-family:var(--font-doc);font-size:var(--fs-lg);font-weight:700;line-height:var(--lh-tight);margin:var(--sp-1) 0 var(--sp-3)}
.ds-calc-row{display:grid;grid-template-columns:9rem minmax(0,1fr);gap:var(--sp-15) var(--sp-4);padding:var(--sp-15) 0;border-top:1px solid var(--line)}
.ds-calc-label{font-size:var(--fs-xs);color:var(--ink-3);padding-top:1px}
.ds-calc-value{font-size:var(--fs-md);overflow-wrap:anywhere}
.ds-calc-value.is-strong{font-weight:600}
.ds-calc-formula{margin:var(--sp-2) 0;padding:var(--sp-2) var(--sp-25);background:var(--surface-sunken);font-family:var(--font-mono);font-size:var(--fs-sm);line-height:1.5;overflow-wrap:anywhere}
.ds-calc-norm{font-family:var(--font-doc);font-style:italic;font-size:var(--fs-sm);color:var(--ink-2);line-height:1.55}
.ds-calc-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--line)}

/* ---- Карточки и баннеры ---- */
.ds-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);box-shadow:var(--shadow-card)}
.ds-card-pad{padding:var(--sp-4) var(--sp-5)}
.ds-card-hover{transition:border-color var(--dur-1) var(--ease-out),box-shadow var(--dur-1) var(--ease-out)}
.ds-card-hover:hover{border-color:var(--line-strong);box-shadow:var(--shadow-raise)}
.ds-banner{display:flex;align-items:flex-start;gap:var(--sp-25);padding:var(--sp-25) var(--sp-3);border:1px solid;border-radius:var(--r-s);font-size:var(--fs-sm);line-height:1.45}
.ds-banner svg{width:17px;height:17px;flex:none;margin-top:1px}
.ds-banner-info{background:var(--accent-wash);border-color:var(--accent-wash-line);color:var(--ink)}
.ds-banner-info svg{color:var(--accent)}
.ds-banner-warn{background:var(--warn-wash);border-color:var(--warn-wash);color:var(--ink)}
.ds-banner-warn svg{color:var(--warn)}
.ds-banner-ok{background:var(--ok-wash);border-color:var(--ok-wash);color:var(--ink)}
.ds-banner-ok svg{color:var(--ok)}

/* ---- Реестр (таблица) ---- */
.ds-ledger-wrap{overflow-x:auto}
.ds-ledger{width:100%;border-collapse:collapse;font-size:var(--fs-md)}
.ds-ledger th{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--line-strong);font-size:var(--fs-2xs);font-weight:600;letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--ink-3);text-align:left;white-space:nowrap}
.ds-ledger th:first-child{min-width:16rem;width:40%}
.ds-ledger td{padding:var(--sp-25) var(--sp-3);border-top:1px solid var(--line);vertical-align:middle}
.ds-ledger tbody tr:first-child td{border-top:0}
.ds-ledger tbody tr{transition:background var(--dur-1) var(--ease-out)}
.ds-ledger tbody tr:hover{background:var(--surface-dim)}
.ds-ledger tr.is-clickable{cursor:pointer}
.ds-cell-main{font-weight:500;color:var(--ink)}
.ds-cell-sub{display:block;margin-top:1px;font-size:var(--fs-xs);font-weight:400;color:var(--ink-3)}
.ds-ledger .ds-row-group td{padding:var(--sp-15) var(--sp-3);background:var(--surface-dim);border-top:1px solid var(--line);font-size:var(--fs-2xs);font-weight:600;letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--ink-3)}
.ds-ledger .ds-row-group.is-danger td{background:var(--danger-wash);color:var(--danger)}
.ds-ledger tr.is-overdue:hover{background:var(--danger-wash-deep)}
.ds-row-done .ds-cell-main{color:var(--ink-3);text-decoration:line-through;text-decoration-color:var(--line-control)}
.ds-cell-num{font-family:var(--font-mono);font-size:var(--fs-sm);font-variant-numeric:tabular-nums;white-space:nowrap}

/* ---- Группы и заголовки ---- */
.ds-eyebrow{font-size:var(--fs-2xs);font-weight:600;letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--ink-3)}
.ds-eyebrow-lg{font-size:var(--fs-xs)}
.ds-section-head{display:flex;align-items:baseline;gap:var(--sp-2);margin:var(--sp-5) 0 var(--sp-25);font-size:var(--fs-body);font-weight:600;line-height:var(--lh-tight);color:var(--ink)}
.ds-group-row{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-15) var(--sp-4);background:var(--surface-dim);border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:var(--fs-2xs);font-weight:600;letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--ink-3)}
.ds-group-row.is-danger{background:var(--danger-wash);color:var(--danger)}
.ds-page-head{display:flex;align-items:baseline;gap:var(--sp-4);flex-wrap:wrap;margin:var(--sp-4) 0 var(--sp-5)}
.ds-page-title{font-size:var(--fs-xl);font-weight:650;letter-spacing:var(--ls-title);line-height:var(--lh-tight)}
.ds-page-sub{font-size:var(--fs-sm);color:var(--ink-3)}
.ds-page-actions{margin-left:auto;display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap}
.ds-crumbs{display:flex;align-items:center;gap:var(--sp-15);font-size:var(--fs-xs);color:var(--ink-3)}
.ds-crumbs a{color:var(--ink-3)}
.ds-crumbs a:hover{color:var(--accent)}

/* ---- Вкладки и сегменты ---- */
.ds-tabs{display:flex;gap:var(--sp-5);border-bottom:1px solid var(--line)}
.ds-tab{display:inline-flex;align-items:center;gap:var(--sp-15);padding:var(--sp-2) 2px;margin-bottom:-1px;border:0;border-bottom:2px solid transparent;background:none;font-size:var(--fs-md);font-weight:500;color:var(--ink-3);cursor:pointer;white-space:nowrap;transition:color var(--dur-1) var(--ease-out)}
.ds-tab:hover{color:var(--ink)}
.ds-tab.is-active{color:var(--ink);border-bottom-color:var(--accent)}
.ds-seg{display:inline-flex;gap:2px;padding:2px;background:var(--surface-sunken);border-radius:var(--r-s)}
.ds-seg-btn{display:inline-flex;align-items:center;height:calc(var(--ctl-h-sm) - 4px);padding:0 var(--sp-25);border:0;border-radius:var(--r-xs);background:none;font-size:var(--fs-sm);font-weight:500;color:var(--ink-3);cursor:pointer;transition:color var(--dur-1) var(--ease-out),background var(--dur-1) var(--ease-out)}
.ds-seg-btn:hover{color:var(--ink)}
.ds-seg-btn.is-active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-card)}
.ds-layer-chip{display:inline-flex;align-items:center;gap:var(--sp-15);height:var(--ctl-h-sm);padding:0 var(--sp-25);border:1px solid var(--line-strong);border-radius:var(--r-full);background:var(--surface);font-size:var(--fs-xs);font-weight:500;color:var(--ink-2);cursor:pointer;transition:background var(--dur-1) var(--ease-out),border-color var(--dur-1) var(--ease-out)}
.ds-layer-chip::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--layer,var(--ink-3))}
.ds-layer-chip[aria-pressed='true']{background:var(--layer-wash,var(--surface-sunken));border-color:var(--layer,var(--line-strong))}
.ds-layer-chip[aria-pressed='false']{opacity:0.55}
.ds-layer-chip[aria-pressed='false']::before{background:var(--line-control)}
.layer-hearing{--layer:var(--layer-hearing);--layer-wash:var(--layer-hearing-wash)}
.layer-deadline{--layer:var(--layer-deadline);--layer-wash:var(--layer-deadline-wash)}
.layer-task{--layer:var(--layer-task);--layer-wash:var(--layer-task-wash)}
.layer-meeting{--layer:var(--layer-meeting);--layer-wash:var(--layer-meeting-wash)}

/* ---- Формы ---- */
.ds-field{display:block}
.ds-field>label{display:block;margin-bottom:var(--sp-15);font-size:var(--fs-sm);font-weight:500;color:var(--ink-2)}
.ds-field+.ds-field{margin-top:var(--sp-4)}
.ds-hint{margin-top:var(--sp-15);font-size:var(--fs-xs);color:var(--ink-3);line-height:1.45}
.ds-input,.ds-select{display:block;width:100%;height:var(--ctl-h-input);padding:0 var(--sp-25);border:1px solid var(--line-control);border-radius:var(--r-s);background:var(--surface);font-size:var(--fs-md);color:var(--ink);transition:border-color var(--dur-1) var(--ease-out),box-shadow var(--dur-1) var(--ease-out)}
.ds-input::placeholder{color:var(--ink-3);opacity:0.75}
.ds-input:focus,.ds-select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--focus-ring)}
textarea.ds-input{height:auto;padding:var(--sp-2) var(--sp-25);line-height:var(--lh-body);resize:vertical}
.ds-select{appearance:none;padding-right:var(--sp-8);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235d6574' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9.5 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--sp-2) center;background-size:16px}
.ds-input.is-invalid,.ds-select.is-invalid{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-wash)}
.ds-error{margin-top:var(--sp-15);font-size:var(--fs-xs);color:var(--danger)}
.ds-check{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-md);cursor:pointer}
.ds-check input{appearance:none;width:1rem;height:1rem;margin:0;flex:none;border:1.5px solid var(--line-control);border-radius:var(--r-xs);background:var(--surface);cursor:pointer;transition:background var(--dur-1) var(--ease-out),border-color var(--dur-1) var(--ease-out)}
.ds-check input:hover{border-color:var(--ink-3)}
.ds-check input:checked{background-color:var(--accent);border-color:var(--accent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E");background-size:12px;background-position:center;background-repeat:no-repeat}
.ds-toggle{position:relative;display:inline-flex;flex:none;width:2.125rem;height:1.25rem;cursor:pointer}
.ds-toggle input{appearance:none;position:absolute;inset:0;margin:0;border-radius:var(--r-full);background:var(--line-strong);cursor:pointer;transition:background var(--dur-2) var(--ease-out)}
.ds-toggle input:checked{background:var(--accent)}
.ds-toggle .knob{position:absolute;top:2px;left:2px;width:1rem;height:1rem;border-radius:50%;background:var(--surface);box-shadow:var(--shadow-knob);pointer-events:none;transition:translate var(--dur-2) var(--ease-out)}
.ds-toggle input:checked+.knob{translate:0.875rem 0}
.ds-radio-card{display:block;padding:var(--sp-25) var(--sp-3);border:1px solid var(--line-strong);border-radius:var(--r-s);background:var(--surface);cursor:pointer;transition:border-color var(--dur-1) var(--ease-out),box-shadow var(--dur-1) var(--ease-out)}
.ds-radio-card:hover{border-color:var(--line-control)}
.ds-radio-card:has(input:checked){border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.ds-radio-card input{position:absolute;opacity:0;pointer-events:none}
.ds-rc-title{display:block;font-size:var(--fs-md);font-weight:500}
.ds-rc-sub{display:block;margin-top:1px;font-size:var(--fs-xs);color:var(--ink-3)}

/* ---- Меню ---- */
.ds-menu-wrap{position:relative;display:inline-block}
.ds-menu{position:absolute;top:calc(100% + 4px);right:0;z-index:50;min-width:230px;padding:var(--sp-1);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);box-shadow:var(--shadow-pop)}
.ds-menu.is-left{right:auto;left:0}
.ds-menu-item{display:flex;align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-15) var(--sp-2);border:0;border-radius:var(--r-s);background:none;font-size:var(--fs-md);color:var(--ink);text-align:left;cursor:pointer;white-space:nowrap}
.ds-menu-item svg{width:16px;height:16px;flex:none;color:var(--ink-3)}
.ds-menu-item:hover{background:var(--surface-sunken);text-decoration:none;color:var(--ink)}
.ds-menu-item.is-danger{color:var(--danger)}
.ds-menu-item.is-danger svg{color:var(--danger)}
.ds-menu-item.is-danger:hover{background:var(--danger-wash)}
.ds-mi-end{margin-left:auto;padding-left:var(--sp-4);font-size:var(--fs-xs);color:var(--ink-3)}
.ds-menu-sep{height:1px;margin:var(--sp-1) calc(-1 * var(--sp-1));background:var(--line)}

/* ---- Слои: модальное окно, боковая карточка, тост, палитра ---- */
.ds-veil{position:fixed;inset:0;z-index:90;background:var(--veil);backdrop-filter:blur(2px)}
.ds-modal{position:fixed;inset:0;z-index:95;display:grid;place-items:start center;padding:11vh var(--sp-4) var(--sp-4);overflow:auto}
.ds-modal-panel{width:30rem;max-width:100%;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--shadow-modal)}
.ds-modal-panel.is-wide{width:46rem}
.ds-modal-head{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-4) var(--sp-4) var(--sp-2)}
.ds-modal-head h3{font-size:var(--fs-body);font-weight:600;line-height:var(--lh-tight)}
.ds-modal-head .ds-iconbtn{margin-left:auto}
.ds-modal-body{padding:var(--sp-2) var(--sp-4) var(--sp-4)}
.ds-modal-foot{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--line)}
.ds-spacer{flex:1}
.ds-drawer{position:fixed;top:0;right:0;bottom:0;z-index:95;display:flex;flex-direction:column;width:var(--drawer-w);max-width:92vw;background:var(--surface);border-left:1px solid var(--line);box-shadow:var(--shadow-modal)}
.ds-drawer-head{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-4);border-bottom:1px solid var(--line)}
.ds-drawer-head h3{font-size:var(--fs-body);font-weight:600;line-height:var(--lh-tight)}
.ds-drawer-head .ds-iconbtn{margin-left:auto}
.ds-drawer-body{flex:1;overflow-y:auto;padding:var(--sp-4)}
.ds-drawer-foot{display:flex;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--line)}
.ds-toast{position:fixed;left:50%;bottom:var(--sp-5);z-index:100;display:flex;align-items:center;gap:var(--sp-3);max-width:min(34rem,90vw);padding:var(--sp-25) var(--sp-4);border-radius:var(--r-m);background:var(--toast-bg);color:var(--on-dark);font-size:var(--fs-sm);box-shadow:var(--shadow-pop);translate:-50% 0;overflow:hidden}
.ds-toast-undo{flex:none;border:0;background:none;padding:0;color:var(--on-dark-quiet);font-size:var(--fs-sm);font-weight:600;cursor:pointer}
.ds-toast-undo:hover{text-decoration:underline;text-underline-offset:3px}
.ds-toast-bar{position:absolute;left:0;bottom:0;height:2px;background:var(--on-dark-quiet);animation:ds-countdown linear forwards}
@keyframes ds-countdown{from{width:100%}to{width:0}}
.ds-cmdk{position:fixed;inset:0;z-index:98;display:grid;place-items:start center;padding:14vh var(--sp-4) var(--sp-4)}
.ds-cmdk-panel{width:37rem;max-width:100%;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--shadow-modal);overflow:hidden}
.ds-cmdk-input{display:flex;align-items:center;gap:var(--sp-25);padding:0 var(--sp-4);height:3rem;border-bottom:1px solid var(--line)}
.ds-cmdk-input svg{width:17px;height:17px;color:var(--ink-3);flex:none}
.ds-cmdk-input input{flex:1;border:0;outline:none;background:none;font-size:var(--fs-body);color:var(--ink)}
.ds-cmdk-list{max-height:21rem;overflow-y:auto;padding:var(--sp-1)}
.ds-cmdk-group{padding:var(--sp-2) var(--sp-2) var(--sp-1);font-size:var(--fs-2xs);font-weight:600;letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--ink-3)}
.ds-cmdk-item{display:flex;align-items:center;gap:var(--sp-25);width:100%;padding:var(--sp-2);border:0;border-radius:var(--r-s);background:none;font-size:var(--fs-md);color:var(--ink);text-align:left;cursor:pointer}
.ds-cmdk-item svg{width:16px;height:16px;flex:none;color:var(--ink-3)}
.ds-cmdk-item.is-active,.ds-cmdk-item:hover{background:var(--surface-sunken)}
.ds-cmdk-item.is-active .ds-mi-end{color:var(--ink-2)}
.ds-cmdk-foot{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-2) var(--sp-3);border-top:1px solid var(--line);font-size:var(--fs-2xs);color:var(--ink-3)}
.ds-cmdk-foot span{display:inline-flex;align-items:center;gap:var(--sp-1)}

/* ---- Хронология, пары ключ-значение, пустые состояния ---- */
.ds-timeline{list-style:none;margin:0;padding:0}
.ds-timeline li{position:relative;display:grid;grid-template-columns:6rem minmax(0,1fr);gap:var(--sp-4);padding:var(--sp-2) 0 var(--sp-2) var(--sp-5)}
.ds-timeline li::before{content:'';position:absolute;left:6.5px;top:0;bottom:0;width:1px;background:var(--line)}
.ds-timeline li:first-child::before{top:14px}
.ds-timeline li:last-child::before{bottom:auto;height:14px}
.ds-timeline li::after{content:'';position:absolute;left:3px;top:11px;width:8px;height:8px;border-radius:50%;background:var(--surface);border:1.5px solid var(--line-control)}
.ds-timeline li.tl-manual::after{border-color:var(--accent);background:var(--accent-wash)}
.ds-tl-date{font-family:var(--font-mono);font-size:var(--fs-xs);font-variant-numeric:tabular-nums;color:var(--ink-2);padding-top:2px;white-space:nowrap}
.ds-tl-text{font-size:var(--fs-md);line-height:1.45}
.ds-tl-src{margin-top:1px;font-size:var(--fs-2xs);color:var(--ink-3)}
.ds-kv{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--sp-15) var(--sp-5);margin:0}
.ds-kv dt{font-size:var(--fs-sm);color:var(--ink-3)}
.ds-kv dd{margin:0;font-size:var(--fs-sm)}
.ds-empty{padding:var(--sp-8) var(--sp-4);text-align:center;font-size:var(--fs-sm);color:var(--ink-3);line-height:1.5}

/* ---- Каркас приложения ---- */
.ds-app{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);min-height:100vh}
.ds-aside{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;background:var(--paper-aside);border-right:1px solid var(--line);padding:var(--sp-4) var(--sp-25) var(--sp-3)}
.ds-brand{display:flex;align-items:baseline;padding:var(--sp-05) var(--sp-25) var(--sp-4);font-family:var(--font-doc);font-weight:700;font-size:1.25rem;color:var(--ink)}
.ds-brand:hover{text-decoration:none;color:var(--ink)}
.ds-brand .dot{color:var(--accent)}
.ds-nav{display:flex;flex-direction:column;gap:2px}
.ds-nav-item{display:flex;align-items:center;gap:var(--sp-25);padding:var(--sp-15) var(--sp-25);border:0;border-radius:var(--r-s);background:none;font-size:var(--fs-md);font-weight:500;color:var(--ink-2);white-space:nowrap;cursor:pointer;text-align:left;width:100%;transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}
.ds-nav-item svg{width:17px;height:17px;flex:none;color:var(--ink-3)}
.ds-nav-item:hover{background:var(--hover-veil);color:var(--ink);text-decoration:none}
.ds-nav-item.is-active{background:var(--surface);color:var(--accent);box-shadow:inset 0 0 0 1px var(--line),var(--shadow-card)}
.ds-nav-item.is-active svg{color:var(--accent)}
.ds-nav-item .ds-kbd{margin-left:auto;opacity:0;transition:opacity var(--dur-1) var(--ease-out)}
.ds-nav-item:hover .ds-kbd{opacity:1}
.ds-nav-item.is-active .ds-kbd{display:none}
.ds-nav-badge{margin-left:auto;min-width:1.25rem;padding:1px var(--sp-15);border-radius:var(--r-full);background:var(--warn-wash);color:var(--warn);font-size:var(--fs-2xs);font-weight:600;text-align:center}
.ds-nav-badge+.ds-kbd{margin-left:var(--sp-1)}
.ds-aside-foot{margin-top:auto;display:flex;flex-direction:column;gap:2px}
.ds-aside-user{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-2);padding:var(--sp-25);border-top:1px solid var(--line)}
.ds-avatar{width:1.75rem;height:1.75rem;flex:none;border-radius:50%;background:var(--accent-wash);color:var(--accent);display:grid;place-items:center;font-size:var(--fs-2xs);font-weight:600}
.ds-user-name{font-size:var(--fs-sm);font-weight:500;line-height:1.25}
.ds-user-plan{font-size:var(--fs-2xs);color:var(--ink-3)}
.ds-main{min-width:0;display:flex;flex-direction:column}
.ds-topbar{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-25) var(--sp-6);border-bottom:1px solid var(--line);background:var(--paper)}
.ds-search{position:relative;width:21rem;max-width:38vw}
.ds-search input{width:100%;height:var(--ctl-h);padding:0 var(--sp-8) 0 var(--sp-8);border:1px solid var(--line-strong);border-radius:var(--r-s);background:var(--surface);font-size:var(--fs-md);color:var(--ink);transition:border-color var(--dur-1) var(--ease-out),box-shadow var(--dur-1) var(--ease-out)}
.ds-search input::placeholder{color:var(--ink-3);opacity:0.75}
.ds-search input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--focus-ring)}
.ds-search>svg{position:absolute;left:var(--sp-25);top:50%;width:15px;height:15px;translate:0 -50%;color:var(--ink-3);pointer-events:none}
.ds-search .ds-kbd{position:absolute;right:var(--sp-2);top:50%;translate:0 -50%}
.ds-sync{margin-left:auto;display:flex;align-items:center;gap:var(--sp-2);border:0;background:none;padding:var(--sp-1) var(--sp-2);border-radius:var(--r-s);font-size:var(--fs-xs);color:var(--ink-3);white-space:nowrap;cursor:pointer;transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}
.ds-sync:hover{background:var(--surface-sunken);color:var(--ink-2)}
.ds-sync-dot{width:7px;height:7px;border-radius:50%;background:var(--ok);flex:none}
.ds-content{flex:1;width:100%;max-width:var(--content-max);padding:var(--sp-3) var(--sp-8) var(--sp-16)}

/* ---- Тёмная тема: data-uri-стрелки и галочки не читают токены ---- */
html[data-theme='dark'] .ds-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a919f' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9.5 6 6 6-6'/%3E%3C/svg%3E")}
html[data-theme='dark'] .ds-check input:checked{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23101736' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E")}

/* ---- Печать ---- */
@media print{.ds-aside,.ds-topbar{display:none!important}.ds-app{display:block}.ds-content{max-width:none;padding:0}.ds-card{border-color:var(--line-print);box-shadow:none}}
