/* Ферма · Поле · сгенерировано scripts/build-design.mjs. Не править вручную. */

/* Источник: design/tokens.json · версия 1.0.0 · 2026-10-17 */

/* Ферма · Поле · шрифты. Локальные woff2, без CDN. */
@font-face{font-family:'Unbounded';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/Unbounded-400-normal-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/Unbounded-400-normal-cyrillic.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/Unbounded-400-normal-latin.woff2') format('woff2');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:'Unbounded';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/Unbounded-600-normal-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/Unbounded-600-normal-cyrillic.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/Unbounded-600-normal-latin.woff2') format('woff2');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:'Unbounded';font-style:normal;font-weight:800;font-display:swap;src:url('fonts/Unbounded-800-normal-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:800;font-display:swap;src:url('fonts/Unbounded-800-normal-cyrillic.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:800;font-display:swap;src:url('fonts/Unbounded-800-normal-latin.woff2') format('woff2');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:'Manrope';font-style:normal;font-weight:200 800;font-display:swap;src:url('fonts/Manrope-Variable.ttf') format('truetype')}

:root{
  --ds-color-sand: #F1E8D6;
  --ds-color-sand2: #E9DEC8;
  --ds-color-sand3: #E2D5BC;
  --ds-color-surface: #FBF6EB;
  --ds-color-surface2: #F6EFE1;
  --ds-color-surface3: #EFE7D6;
  --ds-color-field: #14362A;
  --ds-color-field2: #1C4534;
  --ds-color-field3: #275141;
  --ds-color-ink: #1B2B22;
  --ds-color-ink2: #4C5F50;
  --ds-color-ink3: #5A6C5E;
  --ds-color-cream: #FBF6EB;
  --ds-color-cream2: #C4CFBD;
  --ds-color-leaf: #4A8A5A;
  --ds-color-leaf-ink: #2F6242;
  --ds-color-leaf-wash: #E4EDDD;
  --ds-color-young: #A9C7A4;
  --ds-color-young2: #CBDEC2;
  --ds-color-terra: #B3491D;
  --ds-color-terra-ink: #9E3F17;
  --ds-color-terra-wash: #F6DED1;
  --ds-color-alert: #9E2B1F;
  --ds-color-alert-ink: #83231A;
  --ds-color-alert-wash: #F4DAD4;
  --ds-color-ochre: #8F6A14;
  --ds-color-ochre-ink: #6F5210;
  --ds-color-ochre-wash: #F3E6C4;
  --ds-color-straw: #D8B26A;
  --ds-color-sky: #8FAEB6;
  --ds-color-sky-ink: #3F5F67;
  --ds-color-sky-wash: #E6EEEF;
  --ds-color-hair: rgba(20,54,42,.12);
  --ds-color-hair-soft: rgba(20,54,42,.07);
  --ds-status-ok: var(--ds-color-leaf);
  --ds-status-ok-wash: var(--ds-color-leaf-wash);
  --ds-status-ok-ink: var(--ds-color-leaf-ink);
  --ds-status-wait: var(--ds-color-ochre);
  --ds-status-wait-wash: var(--ds-color-ochre-wash);
  --ds-status-wait-ink: var(--ds-color-ochre-ink);
  --ds-status-alert: var(--ds-color-alert);
  --ds-status-alert-wash: var(--ds-color-alert-wash);
  --ds-status-alert-ink: var(--ds-color-alert-ink);
  --ds-status-idle: var(--ds-color-sky);
  --ds-status-idle-wash: var(--ds-color-sky-wash);
  --ds-status-idle-ink: var(--ds-color-sky-ink);
  --ds-font-display: 'Unbounded', system-ui, sans-serif;
  --ds-font-body: 'Manrope', system-ui, sans-serif;
  --ds-text-hero-size: 88px;
  --ds-text-hero-line: 0.92;
  --ds-text-hero-weight: 800;
  --ds-text-hero-tracking: -0.045em;
  --ds-text-hero-family: var(--ds-font-body);
  --ds-text-h1-size: 34px;
  --ds-text-h1-line: 1.1;
  --ds-text-h1-weight: 600;
  --ds-text-h1-tracking: -0.03em;
  --ds-text-h1-family: var(--ds-font-display);
  --ds-text-h2-size: 18px;
  --ds-text-h2-line: 1.15;
  --ds-text-h2-weight: 600;
  --ds-text-h2-tracking: -0.015em;
  --ds-text-h2-family: var(--ds-font-display);
  --ds-text-h3-size: 15px;
  --ds-text-h3-line: 1.25;
  --ds-text-h3-weight: 700;
  --ds-text-h3-tracking: 0;
  --ds-text-h3-family: var(--ds-font-body);
  --ds-text-body-size: 15.5px;
  --ds-text-body-line: 1.55;
  --ds-text-body-weight: 400;
  --ds-text-body-tracking: 0;
  --ds-text-body-family: var(--ds-font-body);
  --ds-text-small-size: 12.5px;
  --ds-text-small-line: 1.35;
  --ds-text-small-weight: 500;
  --ds-text-small-tracking: 0;
  --ds-text-small-family: var(--ds-font-body);
  --ds-text-micro-size: 10.5px;
  --ds-text-micro-line: 1;
  --ds-text-micro-weight: 600;
  --ds-text-micro-tracking: 0.13em;
  --ds-text-micro-family: var(--ds-font-body);
  --ds-space-1: 4px;
  --ds-space-2: 8px;
  --ds-space-3: 12px;
  --ds-space-4: 16px;
  --ds-space-5: 20px;
  --ds-space-6: 24px;
  --ds-space-7: 28px;
  --ds-space-8: 32px;
  --ds-space-9: 40px;
  --ds-space-10: 48px;
  --ds-radius-hero: 34px;
  --ds-radius-card: 26px;
  --ds-radius-inner: 16px;
  --ds-radius-small: 12px;
  --ds-radius-pill: 999px;
  --ds-shadow-card: 0 1px 0 rgba(20,54,42,.04), 0 10px 30px -20px rgba(74,50,18,.34);
  --ds-shadow-raised: 0 2px 0 rgba(20,54,42,.03), 0 26px 60px -38px rgba(74,50,18,.46);
  --ds-ease-out: cubic-bezier(.22,1,.36,1);
  --ds-ease-soft: cubic-bezier(.33,1,.42,1);
  --ds-motion-fast: 160ms;
  --ds-motion-base: 220ms;
  --ds-motion-slow: 600ms;
  --ds-help-size: 22px;
  --ds-help-tooltip-width: 270px;
  --ds-button-height: 44px;
  --ds-button-primary-height: 46px;
  --ds-input-height: 48px;
}

/* Ферма · Поле · компоненты. Только классы ds-*, без глобальных переопределений. */
.ds-root{
  background:var(--ds-color-sand);color:var(--ds-color-ink);
  font:400 var(--ds-text-body-size)/var(--ds-text-body-line) var(--ds-font-body);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
.ds-root *{box-sizing:border-box}
.ds-root h1,.ds-root h2,.ds-root h3,.ds-root p{margin:0}
.ds-root :where(a){color:inherit}
.ds-root :where(button){font:inherit;color:inherit;background:none;border:0;cursor:pointer}
.ds-root :focus-visible{outline:2px solid var(--ds-color-field);outline-offset:3px;border-radius:6px}

/* Страница */
.ds-page{width:100%;max-width:1240px;margin:0 auto;padding:0 var(--ds-space-8)}
.ds-page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--ds-space-6);flex-wrap:wrap;margin:var(--ds-space-6) 0 var(--ds-space-5)}
.ds-kicker{font:600 var(--ds-text-micro-size)/1 var(--ds-font-body);letter-spacing:var(--ds-text-micro-tracking);text-transform:uppercase;color:var(--ds-color-ink3);margin-bottom:var(--ds-space-2)}
.ds-h1{font:var(--ds-text-h1-weight) var(--ds-text-h1-size)/var(--ds-text-h1-line) var(--ds-font-display);letter-spacing:var(--ds-text-h1-tracking);color:var(--ds-color-field)}
.ds-h2{font:var(--ds-text-h2-weight) var(--ds-text-h2-size)/var(--ds-text-h2-line) var(--ds-font-display);letter-spacing:var(--ds-text-h2-tracking);color:var(--ds-color-field)}
.ds-h3{font:var(--ds-text-h3-weight) var(--ds-text-h3-size)/var(--ds-text-h3-line) var(--ds-font-body);color:var(--ds-color-ink)}
.ds-lead{font:500 var(--ds-text-body-size)/1.5 var(--ds-font-body);color:var(--ds-color-ink3);max-width:70ch;margin-top:var(--ds-space-2)}
.ds-actions{display:flex;gap:var(--ds-space-2);flex-wrap:wrap;align-items:center}

/* Кнопки */
.ds-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--ds-space-2);min-height:var(--ds-button-height);padding:0 var(--ds-space-5);border-radius:var(--ds-radius-pill);font:700 13.5px/1 var(--ds-font-body);white-space:nowrap;transition:background var(--ds-motion-fast) var(--ds-ease-out),color var(--ds-motion-fast) var(--ds-ease-out),border-color var(--ds-motion-fast) var(--ds-ease-out),transform var(--ds-motion-fast) var(--ds-ease-out)}
.ds-btn:active{transform:scale(.97)}
.ds-btn--primary{background:var(--ds-color-terra);color:var(--ds-color-cream);min-height:var(--ds-button-primary-height);padding:0 var(--ds-space-6);box-shadow:inset 0 1px 0 rgba(255,236,220,.24)}
.ds-btn--primary:hover{background:var(--ds-color-terra-ink)}
.ds-btn--ghost{background:var(--ds-color-surface);border:1px solid var(--ds-color-hair);color:var(--ds-color-field)}
.ds-btn--ghost:hover{background:var(--ds-color-surface2);border-color:rgba(20,54,42,.22)}
.ds-btn--soft{background:var(--ds-color-sand2);color:var(--ds-color-field)}
.ds-btn--soft:hover{background:var(--ds-color-sand3)}
.ds-btn--danger{background:var(--ds-color-alert-wash);border:1px solid rgba(158,43,31,.2);color:var(--ds-color-alert-ink)}
.ds-btn--danger:hover{background:#F0CFC7}

/* Чипы статусов */
.ds-chip{display:inline-flex;align-items:center;gap:6px;min-height:24px;padding:0 var(--ds-space-2);border-radius:var(--ds-radius-pill);font:600 11px/1 var(--ds-font-body);white-space:nowrap}
.ds-chip::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.ds-chip--ok{background:var(--ds-color-leaf-wash);color:var(--ds-color-leaf-ink)}
.ds-chip--wait{background:var(--ds-color-ochre-wash);color:var(--ds-color-ochre-ink)}
.ds-chip--alert{background:var(--ds-color-alert-wash);color:var(--ds-color-alert-ink)}
.ds-chip--idle{background:var(--ds-color-sky-wash);color:var(--ds-color-sky-ink)}

/* Карточки и панели */
.ds-card{background:var(--ds-color-surface);border:1px solid var(--ds-color-hair-soft);border-radius:var(--ds-radius-card);box-shadow:var(--ds-shadow-card);padding:var(--ds-space-5)}
.ds-card--soft{background:var(--ds-color-surface2)}
.ds-panel-head{display:flex;align-items:center;gap:var(--ds-space-3);margin-bottom:var(--ds-space-3)}
.ds-panel-head .ds-count{margin-left:2px}
.ds-count{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:7px;border:1px solid var(--ds-color-hair);border-bottom-width:2px;background:var(--ds-color-surface2);color:var(--ds-color-ink3);font:600 11px/1 var(--ds-font-body)}
.ds-more{margin-left:auto;font:600 12px/1 var(--ds-font-body);color:var(--ds-color-ink3);min-height:36px;padding:0 2px}
.ds-more:hover{color:var(--ds-color-field)}

/* Поля */
.ds-field{display:grid;gap:6px;margin-top:var(--ds-space-3)}
.ds-field label,.ds-label{font:600 11px/1 var(--ds-font-body);letter-spacing:.13em;text-transform:uppercase;color:var(--ds-color-ink3)}
.ds-input,.ds-select,.ds-textarea{width:100%;min-height:var(--ds-input-height);padding:11px 14px;border-radius:var(--ds-radius-small);border:1px solid var(--ds-color-hair);background:var(--ds-color-surface2);color:var(--ds-color-ink);font:500 13.5px/1.45 var(--ds-font-body)}
.ds-textarea{min-height:100px;resize:vertical}
.ds-input:focus,.ds-select:focus,.ds-textarea:focus{outline:none;border-color:var(--ds-color-leaf);background:var(--ds-color-surface);box-shadow:0 0 0 3px rgba(74,138,90,.14)}

/* Помощь: «?» с подсказкой */
.ds-help{position:relative;display:inline-grid;place-items:center;width:var(--ds-help-size);height:var(--ds-help-size);margin-left:8px;border-radius:50%;border:1px solid var(--ds-color-hair);background:var(--ds-color-surface2);color:var(--ds-color-ink3);font:700 11px/1 var(--ds-font-body);cursor:help;vertical-align:middle;flex:none}
.ds-help:hover,.ds-help:focus-visible{background:var(--ds-color-field);color:var(--ds-color-cream);border-color:var(--ds-color-field);outline:none}
.ds-help::after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 9px);transform:translateX(-50%) translateY(4px);width:max-content;max-width:var(--ds-help-tooltip-width);padding:9px 11px;border-radius:10px;background:var(--ds-color-field);color:var(--ds-color-cream);font:500 11.5px/1.45 var(--ds-font-body);white-space:normal;text-align:left;opacity:0;pointer-events:none;transition:opacity .16s,transform .16s;z-index:90;box-shadow:0 16px 40px -18px rgba(20,40,30,.6)}
.ds-help::before{content:"";position:absolute;left:50%;bottom:calc(100% + 3px);transform:translateX(-50%);border:5px solid transparent;border-top-color:var(--ds-color-field);opacity:0;pointer-events:none;transition:opacity .16s;z-index:91}
.ds-help:hover::after,.ds-help:focus-visible::after,.ds-help:hover::before,.ds-help:focus-visible::before{opacity:1;transform:translateX(-50%) translateY(0)}

/* Таблицы */
.ds-table{width:100%;border-collapse:collapse;font:500 12.5px/1.45 var(--ds-font-body);color:var(--ds-color-ink2)}
.ds-table th{text-align:left;font:600 10px/1 var(--ds-font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--ds-color-ink3);padding:9px 8px;border-bottom:1px solid var(--ds-color-hair)}
.ds-table td{padding:11px 8px;border-bottom:1px solid var(--ds-color-hair-soft);vertical-align:top}
.ds-table td .ds-muted{display:block;margin-top:3px;font:500 11px/1.35 var(--ds-font-body);color:var(--ds-color-ink3)}
.ds-table tr:last-child td{border-bottom:0}
.ds-table .ds-num{text-align:right;font-weight:700;font-variant-numeric:tabular-nums}

/* KPI */
.ds-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--ds-space-3)}
.ds-kpi{background:var(--ds-color-surface);border:1px solid var(--ds-color-hair-soft);border-radius:var(--ds-radius-inner);padding:var(--ds-space-4) var(--ds-space-4);box-shadow:var(--ds-shadow-card)}
.ds-kpi-v{display:block;font:800 28px/1 var(--ds-font-body);letter-spacing:-.045em;color:var(--ds-color-field);font-variant-numeric:tabular-nums}
.ds-kpi-l{display:block;margin-top:6px;font:600 12px/1.3 var(--ds-font-body);color:var(--ds-color-ink2)}
.ds-kpi-note{display:block;margin-top:3px;font:500 11.5px/1.3 var(--ds-font-body);color:var(--ds-color-ink3)}

/* Прогресс */
.ds-bar{height:6px;border-radius:3px;background:var(--ds-color-sand2);overflow:hidden}
.ds-bar>i{display:block;height:100%;border-radius:3px;background:var(--ds-color-leaf)}
.ds-bar--wait>i{background:var(--ds-color-ochre)}
.ds-bar--alert>i{background:var(--ds-color-alert)}

/* Мелочи */
.ds-muted{color:var(--ds-color-ink3);font:500 12px/1.4 var(--ds-font-body)}
.ds-divider{height:1px;background:var(--ds-color-hair-soft);margin:var(--ds-space-4) 0}
.ds-empty{padding:var(--ds-space-5);border:1px dashed var(--ds-color-hair);border-radius:var(--ds-radius-inner);color:var(--ds-color-ink3);font:500 12.5px/1.45 var(--ds-font-body)}
.ds-avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--ds-color-field);color:var(--ds-color-cream);font:700 13px/1 var(--ds-font-body);flex:none}
.ds-badge{display:inline-flex;align-items:center;min-height:22px;padding:0 7px;border-radius:6px;background:var(--ds-color-surface2);border:1px solid var(--ds-color-hair);color:var(--ds-color-ink2);font:600 10.5px/1 var(--ds-font-body)}
.ds-link{color:var(--ds-color-leaf-ink);text-decoration:underline;text-underline-offset:3px}
.ds-link:hover{color:var(--ds-color-field)}

@media (max-width:760px){
  .ds-page{padding:0 var(--ds-space-4)}
  .ds-page-head{align-items:flex-start}
  .ds-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ds-h1{font-size:27px}
}

/* Кольцо роста: --p от 0 до 100 */
.ds-ring{position:relative;display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:conic-gradient(var(--ds-color-leaf) calc(var(--p, 0) * 1%), var(--ds-color-sand2) 0);flex:none}
.ds-ring::before{content:"";position:absolute;inset:5px;border-radius:50%;background:var(--ds-color-surface)}
.ds-ring>span{position:relative;font:700 11px/1 var(--ds-font-body);color:var(--ds-color-ink);font-variant-numeric:tabular-nums}
.ds-ring--wait{background:conic-gradient(var(--ds-color-ochre) calc(var(--p, 0) * 1%), var(--ds-color-sand2) 0)}
.ds-ring--alert{background:conic-gradient(var(--ds-color-alert) calc(var(--p, 0) * 1%), var(--ds-color-sand2) 0)}
.ds-ring--sm{width:36px;height:36px}
.ds-ring--sm::before{inset:4px}
.ds-ring--sm>span{font-size:9px}

/* Таймлайн */
.ds-timeline{display:grid;gap:0}
.ds-timeline-item{display:grid;grid-template-columns:52px 12px minmax(0,1fr) auto;gap:12px;align-items:start;padding:11px 0;border-top:1px solid var(--ds-color-hair-soft)}
.ds-timeline-item:first-child{border-top:0}
.ds-timeline-time{font:600 11px/1.6 var(--ds-font-body);color:var(--ds-color-ink3);font-variant-numeric:tabular-nums}
.ds-timeline-dot{width:8px;height:8px;border-radius:50%;margin-top:5px;background:var(--ds-color-leaf)}
.ds-timeline-dot--wait{background:var(--ds-color-ochre)}
.ds-timeline-dot--alert{background:var(--ds-color-alert)}
.ds-timeline-body b{display:block;font:700 12.5px/1.35 var(--ds-font-body);color:var(--ds-color-ink)}
.ds-timeline-body span{display:block;margin-top:3px;font:500 11.5px/1.4 var(--ds-font-body);color:var(--ds-color-ink3)}

/* Зона загрузки */
.ds-dropzone{display:grid;place-items:center;text-align:center;gap:6px;padding:28px 18px;border:1.5px dashed rgba(20,54,42,.24);border-radius:var(--ds-radius-card);background:var(--ds-color-surface2);cursor:pointer}
.ds-dropzone:hover{border-color:var(--ds-color-leaf);background:var(--ds-color-leaf-wash)}
.ds-dropzone b{font:700 14px/1.3 var(--ds-font-body);color:var(--ds-color-field)}
.ds-dropzone span{font:500 12px/1.4 var(--ds-font-body);color:var(--ds-color-ink3)}

/* Диалог/ассистент */
.ds-bubble{max-width:88%;padding:11px 14px;border-radius:16px;font:500 13px/1.55 var(--ds-font-body);white-space:pre-wrap}
.ds-bubble--assistant{align-self:flex-start;background:var(--ds-color-surface2);border:1px solid var(--ds-color-hair-soft);border-bottom-left-radius:5px;color:var(--ds-color-ink)}
.ds-bubble--user{align-self:flex-end;background:var(--ds-color-field);color:var(--ds-color-cream);border-bottom-right-radius:5px}
.ds-plan{margin-top:12px;border:1px solid rgba(179,73,29,.25);background:#FDF1E8;border-radius:var(--ds-radius-inner);padding:14px}
.ds-plan>b{display:block;font:700 12.5px/1.3 var(--ds-font-body);color:var(--ds-color-terra-ink);margin-bottom:8px}
.ds-plan ul{display:grid;gap:6px;margin:0 0 10px;padding:0;list-style:none}
.ds-plan li{font:500 12px/1.4 var(--ds-font-body);color:var(--ds-color-ink);padding-left:20px;position:relative}
.ds-plan li::before{content:"";position:absolute;left:0;top:4px;width:8px;height:8px;border-radius:50%;background:var(--ds-color-terra-wash);border:1px solid var(--ds-color-terra)}

