/* Dabaraly Mekan — платформа владельца.
   Палитра из места: песок Овадандепе, стекло, хвоя, натриевая лампа, томат. */
:root{
  --sand:#F6F3EC; --sand2:#EFEAE0; --paper:#fff;
  --line:#E2DBCC; --line2:#CFC5AF;
  --ink:#12211B; --ink2:#42574D; --mut:#7D8C83;
  --pine:#0E4A34; --pine2:#17714E; --leaf:#2E8F5F;
  --tom:#BE3A28; --tom2:#F6E4DF;
  --sod:#B0740E; --sod2:#F8ECD6; --ok2:#E0F0E4;
  --gl:linear-gradient(160deg,rgba(255,255,255,.9),rgba(255,255,255,.25));
  --sh:0 1px 2px rgba(18,33,27,.05),0 8px 24px -14px rgba(18,33,27,.25);
  --r:20px;
}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){
  --sand:#0B120F; --sand2:#111A16; --paper:#141F1A;
  --line:#22322B; --line2:#33473D;
  --ink:#E9F1EC; --ink2:#B2C6BB; --mut:#7E948A;
  --pine:#4FC98D; --pine2:#3FB77E; --leaf:#4FC98D;
  --tom:#F07762; --tom2:#3A1712; --sod:#E1A83C; --sod2:#332409; --ok2:#0F2C1E;
  --gl:linear-gradient(160deg,rgba(255,255,255,.10),rgba(255,255,255,.02));
  --sh:0 1px 2px rgba(0,0,0,.4),0 10px 28px -16px rgba(0,0,0,.8);
}}
:root[data-theme=dark]{
  --sand:#0B120F; --sand2:#111A16; --paper:#141F1A; --line:#22322B; --line2:#33473D;
  --ink:#E9F1EC; --ink2:#B2C6BB; --mut:#7E948A; --pine:#4FC98D; --pine2:#3FB77E;
  --leaf:#4FC98D; --tom:#F07762; --tom2:#3A1712; --sod:#E1A83C; --sod2:#332409;
  --ok2:#0F2C1E; --gl:linear-gradient(160deg,rgba(255,255,255,.10),rgba(255,255,255,.02));
  --sh:0 1px 2px rgba(0,0,0,.4),0 10px 28px -16px rgba(0,0,0,.8);
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--sand);color:var(--ink);
  font:16px/1.55 Manrope,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  -webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:"Familjen Grotesk",Manrope,sans-serif;margin:0;
  letter-spacing:-.025em;text-wrap:balance}
button,input{font:inherit;color:inherit}
button{background:none;border:none;cursor:pointer}
:focus-visible{outline:2px solid var(--pine2);outline-offset:3px;border-radius:6px}
.mono{font-family:"JetBrains Mono",ui-monospace,monospace;font-variant-numeric:tabular-nums}
[hidden]{display:none!important}

/* ---------- вход ---------- */
.login{min-height:100dvh;display:grid;place-items:center;padding:24px}
.login-box{width:100%;max-width:390px;background:var(--paper);border:1px solid var(--line);
  border-radius:26px;padding:34px 30px 30px;box-shadow:var(--sh)}
.brand{display:flex;align-items:center;gap:11px;margin-bottom:26px}
.brand-m{width:38px;height:38px;border-radius:11px;background:var(--pine);
  display:grid;place-items:center;flex:none}
.brand-m svg{width:21px;height:21px;stroke:#fff;fill:none;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round}
.brand-t b{display:block;font-family:"Familjen Grotesk";font-size:17px;
  font-weight:700;letter-spacing:-.02em}
.brand-t span{display:block;font-size:11.5px;color:var(--mut)}
.login h1{font-size:23px;margin-bottom:5px}
.login .sub{font-size:13.5px;color:var(--mut);margin:0 0 24px}
.fld{margin-bottom:14px}
.fld label{display:block;font-size:12px;font-weight:600;color:var(--ink2);
  margin-bottom:6px;letter-spacing:.01em}
.fld input{width:100%;padding:13px 15px;border:1px solid var(--line2);border-radius:13px;
  background:var(--sand);font-size:15.5px;transition:border-color .15s}
.fld input:focus{border-color:var(--pine2);outline:none}
.btn{width:100%;padding:14px;border-radius:13px;background:var(--pine);color:#fff;
  font-weight:700;font-size:15.5px;letter-spacing:.01em;transition:opacity .15s}
.btn:hover{opacity:.9} .btn:disabled{opacity:.45;cursor:default}
.err{background:var(--tom2);color:var(--tom);border-radius:11px;padding:11px 14px;
  font-size:13.5px;margin-bottom:14px;font-weight:600}
.hint{margin-top:20px;padding-top:18px;border-top:1px solid var(--line);
  font-size:12px;color:var(--mut);line-height:1.6}
.hint b{color:var(--ink2)}

/* ---------- каркас ---------- */
.shell{max-width:820px;margin:0 auto;padding-bottom:96px}
.hdr{display:flex;justify-content:space-between;align-items:flex-start;
  gap:16px;padding:24px 22px 16px}
.eyebrow{font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--mut);font-weight:700}
.hdr h1{font-size:29px;font-weight:700;margin:7px 0 3px;line-height:1.07}
.hdr .loc{font-size:13.5px;color:var(--mut)}
.who{text-align:right;flex:none}
.who b{display:block;font-size:13.5px;font-weight:600}
.who span{display:block;font-size:11.5px;color:var(--mut);margin-top:1px}
.who button{font-size:11.5px;color:var(--pine2);font-weight:600;margin-top:5px}

.card{margin:16px 22px 0;background:var(--paper);border:1px solid var(--line);
  border-radius:var(--r);padding:22px;box-shadow:var(--sh)}
.card h3{font-size:18px;font-weight:600}
.card .cap{font-size:13.5px;color:var(--mut);margin:5px 0 18px;line-height:1.6;max-width:62ch}
.sect-t{margin:28px 22px 0;font-size:19px;font-weight:600;font-family:"Familjen Grotesk";
  letter-spacing:-.02em}

/* риски */
.risk{display:flex;gap:14px;align-items:flex-start;padding:15px 0;
  border-bottom:1px solid var(--line)}
.risk:last-child{border-bottom:none;padding-bottom:0}
.risk:first-child{padding-top:0}
.rb{width:9px;height:9px;border-radius:50%;margin-top:7px;flex:none}
.rb.critical{background:var(--tom)} .rb.high{background:var(--sod)}
.rb.medium{background:var(--mut)} .rb.low{background:var(--line2)}
.risk-b{flex:1;min-width:0}
.risk-b b{display:block;font-size:15px;font-weight:600;line-height:1.4}
.risk-b p{margin:5px 0 0;font-size:13px;color:var(--mut);line-height:1.55}
.risk-m{display:flex;gap:9px;flex-wrap:wrap;margin-top:8px}
.chip{font-size:11.5px;background:var(--sand2);color:var(--ink2);
  padding:3px 9px;border-radius:20px}
.sev{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;
  padding:3px 8px;border-radius:20px;flex:none}
.sev.critical{background:var(--tom2);color:var(--tom)}
.sev.high{background:var(--sod2);color:var(--sod)}
.sev.medium{background:var(--sand2);color:var(--mut)}
.empty-msg{color:var(--mut);font-size:14px;padding:6px 0}

/* план теплицы */
.gts{display:flex;gap:8px;margin:14px 22px 0;overflow-x:auto;padding-bottom:4px}
.gt{flex:none;padding:11px 15px;border-radius:14px;border:1px solid var(--line);
  background:var(--paper);text-align:left;font-family:"Familjen Grotesk";
  font-weight:600;font-size:15px}
.gt span{display:block;font-family:Manrope;font-size:11px;font-weight:500;
  color:var(--mut);margin-top:2px}
.gt.on{background:var(--pine);border-color:var(--pine);color:#fff}
.gt.on span{color:rgba(255,255,255,.72)}
.plan{background:var(--sand2);border:1px solid var(--line);border-radius:var(--r);
  padding:16px 15px 13px;margin:14px 22px 0}
.ridge{height:11px;border-radius:6px 6px 0 0;border:1px solid var(--line2);
  border-bottom:none;opacity:.8;
  background:repeating-linear-gradient(105deg,var(--line2) 0 1px,transparent 1px 11px)}
.sl{font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--mut);
  font-weight:700;margin:10px 0 7px}
.bays{display:grid;gap:6px}
.bay{position:relative;aspect-ratio:.82;border-radius:8px;border:1px solid var(--line2);
  background:var(--paper);overflow:hidden;display:flex;align-items:flex-end;
  justify-content:center;padding-bottom:9px;transition:transform .13s}
.bay:hover{transform:translateY(-2px)}
.bay .g{position:absolute;inset:0;background:var(--gl);pointer-events:none}
.bay .n{font-family:"JetBrains Mono",monospace;font-size:12px;position:relative;
  z-index:1;color:var(--ink2)}
.bay .d{position:absolute;top:8px;left:50%;transform:translateX(-50%);
  width:8px;height:8px;border-radius:50%}
.bay.ok{background:var(--ok2);border-color:var(--leaf)} .bay.ok .d{background:var(--leaf)}
.bay.warn{background:var(--sod2);border-color:var(--sod)} .bay.warn .d{background:var(--sod)}
.bay.bad{background:var(--tom2);border-color:var(--tom)} .bay.bad .d{background:var(--tom)}
.bay.bad .n{color:var(--tom);font-weight:700}
.no-data{margin:14px 22px 0;background:var(--sand2);border:1px dashed var(--line2);
  border-radius:var(--r);padding:26px 22px;text-align:center}
.no-data b{display:block;font-family:"Familjen Grotesk";font-size:17px}
.no-data span{display:block;font-size:13px;color:var(--mut);margin-top:5px}

/* графики */
.chart svg{width:100%;height:190px;overflow:visible}
.gl-l{stroke:var(--line);stroke-width:1}
.ga{fill:var(--mut);font-size:10px;text-anchor:end;font-family:"JetBrains Mono",monospace}
.gx{fill:var(--mut);font-size:10px;text-anchor:middle}
.ln{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.ln.old{stroke:var(--line2);opacity:.75} .ln.cur{stroke:var(--pine2);stroke-width:3}
.dot{fill:var(--pine2);stroke:var(--paper);stroke-width:2}
.legs{display:flex;gap:13px;flex-wrap:wrap;margin-top:12px;font-size:11.5px;color:var(--mut)}
.lg i{width:14px;height:2px;background:var(--line2);display:inline-block;
  margin-right:5px;vertical-align:middle;border-radius:2px}
.lg.cur{color:var(--pine2);font-weight:700} .lg.cur i{background:var(--pine2);height:3px}

/* плитки */
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:11px;margin:16px 22px 0}
.tile{background:var(--paper);border:1px solid var(--line);border-radius:16px;
  padding:16px 17px;box-shadow:var(--sh)}
.tile .k{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--mut);font-weight:700}
.tile .v{font-family:"Familjen Grotesk";font-size:27px;font-weight:700;
  margin-top:5px;letter-spacing:-.03em;line-height:1.05}
.tile .n{font-size:11.5px;color:var(--mut);margin-top:3px}
.tile .v.crit{color:var(--tom)} .tile .v.warn{color:var(--sod)}
.tile .v.ok{color:var(--leaf)}

/* нижняя навигация */
.nav{position:fixed;bottom:0;left:0;right:0;background:var(--paper);
  border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(4,1fr);
  max-width:820px;margin:0 auto;z-index:20}
.nav button{padding:13px 4px 17px;font-size:11px;font-weight:600;color:var(--mut);
  display:flex;flex-direction:column;align-items:center;gap:5px}
.nav button.on{color:var(--pine2)}
.nav svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}

.foot{margin:26px 22px 0;font-size:12.5px;color:var(--mut);line-height:1.7}
.foot b{color:var(--ink2);font-weight:600}
.skel{background:linear-gradient(90deg,var(--sand2),var(--line),var(--sand2));
  background-size:200% 100%;animation:sk 1.3s infinite;border-radius:10px;height:14px}
@keyframes sk{to{background-position:-200% 0}}
@media(prefers-reduced-motion:reduce){.skel{animation:none}.bay{transition:none}}

/* ---------- настройка ---------- */
.nav{grid-template-columns:repeat(5,1fr)}
.steps{display:flex;flex-direction:column;gap:10px}
.step{display:flex;gap:13px;align-items:flex-start;padding:12px 14px;
  background:var(--sand2);border-radius:14px;border:1px solid transparent}
.step.done{background:var(--ok2);border-color:var(--leaf)}
.step-n{width:26px;height:26px;border-radius:50%;flex:none;display:grid;
  place-items:center;font-size:13px;font-weight:700;background:var(--paper);
  color:var(--mut);border:1px solid var(--line2)}
.step.done .step-n{background:var(--leaf);color:#fff;border-color:var(--leaf)}
.step b{display:block;font-size:14.5px;font-weight:600}
.step span{display:block;font-size:12.5px;color:var(--mut);margin-top:2px}
.row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.row input,.row select{flex:1;min-width:120px;padding:11px 13px;
  border:1px solid var(--line2);border-radius:11px;background:var(--sand);font-size:14.5px}
.row input:focus,.row select:focus{border-color:var(--pine2);outline:none}
.btn.sm{width:auto;flex:none;padding:11px 18px;font-size:14px;border-radius:11px}
.lst{list-style:none;padding:0;margin:0}
.lst li{padding:10px 0;border-bottom:1px solid var(--line);font-size:14px;color:var(--ink2)}
.lst li:last-child{border-bottom:none}
.lst b{color:var(--ink);font-weight:600}

/* ---------- выбор клиента ---------- */
.tn{display:flex;justify-content:space-between;align-items:center;gap:14px;
  width:100%;text-align:left;padding:15px 0;border-bottom:1px solid var(--line)}
.tn:last-child{border-bottom:none}
.tn b{display:block;font-size:16px;font-weight:600;font-family:"Familjen Grotesk"}
.tn span{display:block;font-size:12.5px;color:var(--mut);margin-top:2px}
.tn-r{flex:none;font-size:11.5px;font-weight:600;padding:4px 11px;border-radius:20px;
  background:var(--ok2);color:var(--leaf)}
.tn-r.has{background:var(--tom2);color:var(--tom)}
.tn:hover b{color:var(--pine2)}

/* ---------- таблицы телеметрии ---------- */
.tb{width:100%;border-collapse:collapse;font-size:13.5px}
.tb th{text-align:left;font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;
  color:var(--mut);font-weight:700;padding:0 8px 9px;border-bottom:1px solid var(--line)}
.tb th.r,.tb td.r{text-align:right}
.tb td{padding:9px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
.tb tr:last-child td{border-bottom:none}
.tb tr.warn td{background:var(--sod2)} .tb tr.bad td{background:var(--tom2)}
.tb td.warn{color:var(--sod);font-weight:700} .tb td.bad{color:var(--tom);font-weight:700}
.tb .dim{color:var(--mut);font-weight:400}
.lnk{font-size:12px;color:var(--pine2);font-weight:600;white-space:nowrap}
.lnk:hover{text-decoration:underline}
.back{margin:0 22px 4px;font-size:14px;font-weight:600;color:var(--pine2);
  display:inline-flex;gap:6px;align-items:center}
.back::before{content:"←";font-size:16px}

/* ---------- агроном ---------- */
.ag-fab{position:fixed;right:20px;bottom:88px;z-index:40;display:flex;
  align-items:center;gap:9px;padding:11px 19px 11px 14px;border-radius:30px;
  white-space:nowrap;
  background:var(--pine);color:#fff;box-shadow:0 6px 22px -6px rgba(14,74,52,.55);
  transition:transform .16s,box-shadow .16s}
.ag-fab:hover{transform:translateY(-2px);box-shadow:0 10px 28px -8px rgba(14,74,52,.65)}
.ag-fab svg{width:22px;height:22px;stroke:#fff;fill:none;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
.ag-fab-t{font-size:14.5px;font-weight:700;letter-spacing:-.01em}
.ag-dot{position:absolute;top:-6px;right:-4px;min-width:21px;height:21px;padding:0 6px;
  border-radius:12px;background:var(--tom);color:#fff;font-size:11.5px;font-weight:700;
  display:grid;place-items:center;border:2px solid var(--sand);
  box-shadow:0 2px 8px -2px rgba(0,0,0,.3)}
.ag-panel{position:fixed;right:16px;bottom:16px;z-index:50;width:min(420px,calc(100vw - 32px));
  height:min(600px,calc(100dvh - 32px));background:var(--paper);border:1px solid var(--line);
  border-radius:22px;box-shadow:0 24px 60px -18px rgba(18,33,27,.45);
  display:flex;flex-direction:column;overflow:hidden;animation:agIn .2s ease}
@keyframes agIn{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.ag-panel{animation:none}.ag-fab{transition:none}}
.ag-h{display:flex;align-items:center;gap:11px;padding:15px 16px;
  border-bottom:1px solid var(--line);background:var(--sand2);flex:none}
.ag-av{width:38px;height:38px;border-radius:50%;background:var(--pine);flex:none;
  display:grid;place-items:center}
.ag-av svg{width:21px;height:21px;stroke:#fff;fill:none;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
.ag-hn{flex:1;min-width:0}
.ag-hn b{display:block;font-family:"Familjen Grotesk";font-size:16px;font-weight:700}
.ag-hn span{display:block;font-size:11.5px;color:var(--mut)}
.ag-x{font-size:16px;color:var(--mut);padding:4px 6px;line-height:1}
.ag-x:hover{color:var(--ink)}
.ag-body{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px}
.ag-m{max-width:88%;padding:11px 14px;border-radius:16px;font-size:14.5px;
  line-height:1.55;flex:none}
.ag-m.me{align-self:flex-end;background:var(--pine);color:#fff;border-bottom-right-radius:5px}
.ag-m.it{align-self:flex-start;background:var(--sand2);border-bottom-left-radius:5px}
.ag-fnd{border:1px solid var(--line);border-radius:14px;overflow:hidden;
  background:var(--paper);width:100%;flex:none}
.ag-fnd-h{display:flex;align-items:center;gap:9px;padding:10px 13px;
  border-bottom:1px solid var(--line);flex-wrap:wrap}
.ag-lv{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;
  padding:2px 7px;border-radius:20px;flex:none}
.ag-lv.critical{background:var(--tom2);color:var(--tom)}
.ag-lv.high{background:var(--sod2);color:var(--sod)}
.ag-lv.medium{background:var(--sand2);color:var(--mut)}
.ag-lv.info{background:var(--ok2);color:var(--leaf)}
.ag-fnd-h b{font-size:13.5px;font-weight:600}
.ag-fnd-h span{font-size:11px;color:var(--mut);margin-left:auto}
.ag-fnd dl{margin:0;padding:11px 13px;font-size:13px;line-height:1.55}
.ag-fnd dt{font-size:10px;text-transform:uppercase;letter-spacing:.09em;
  color:var(--mut);font-weight:700;margin-top:9px}
.ag-fnd dt:first-child{margin-top:0}
.ag-fnd dd{margin:3px 0 0;color:var(--ink2)}
.ag-fnd dd.do{color:var(--ink);font-weight:600}
.ag-src{font-size:11.5px;color:var(--mut);border-top:1px dashed var(--line2);
  padding-top:9px;line-height:1.5;width:100%;flex:none}
.ag-src b{color:var(--ink2);display:block;margin-bottom:2px}
.ag-chips{display:flex;gap:7px;padding:0 14px 10px;flex-wrap:wrap;flex:none}
.ag-chip{font-size:12px;padding:6px 12px;border-radius:20px;background:var(--sand2);
  border:1px solid var(--line);color:var(--ink2);white-space:nowrap}
.ag-chip:hover{border-color:var(--pine2);color:var(--pine2)}
.ag-f{display:flex;gap:8px;padding:12px 14px;border-top:1px solid var(--line);flex:none}
.ag-f input{flex:1;padding:11px 14px;border:1px solid var(--line2);border-radius:22px;
  background:var(--sand);font-size:14.5px}
.ag-f input:focus{border-color:var(--pine2);outline:none}
.ag-f button{width:42px;height:42px;border-radius:50%;background:var(--pine);flex:none;
  display:grid;place-items:center}
.ag-f button svg{width:19px;height:19px;stroke:#fff;fill:none;stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round}
.ag-typing{display:flex;gap:4px;padding:12px 14px}
.ag-typing i{width:7px;height:7px;border-radius:50%;background:var(--mut);
  animation:agT 1.2s infinite}
.ag-typing i:nth-child(2){animation-delay:.15s} .ag-typing i:nth-child(3){animation-delay:.3s}
@keyframes agT{0%,60%,100%{opacity:.3}30%{opacity:1}}
@media(max-width:520px){.ag-fab{right:14px;bottom:80px;padding:11px 14px}
  .ag-panel{right:8px;left:8px;bottom:8px;width:auto;height:min(560px,calc(100dvh - 16px))}}

/* ---------- агроном: он живой ---------- */
.ag-fab.alive{animation:agBob 3.4s ease-in-out infinite}
@keyframes agBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
.ag-fab.alive:hover{animation:agWave .5s ease-in-out}
@keyframes agWave{0%,100%{transform:translateY(-2px) rotate(0)}
  25%{transform:translateY(-4px) rotate(-5deg)}75%{transform:translateY(-4px) rotate(5deg)}}
.ag-fab svg circle{transition:transform .12s;transform-origin:12px 8px}
.ag-fab.blink svg circle{transform:scaleY(.12)}
.ag-tip{position:fixed;right:20px;bottom:150px;z-index:45;width:min(300px,calc(100vw - 40px));
  background:var(--paper);border:1px solid var(--line2);border-radius:18px;
  padding:15px 16px 14px;box-shadow:0 16px 40px -14px rgba(18,33,27,.4);
  animation:agTip .34s cubic-bezier(.34,1.56,.64,1)}
.ag-tip::after{content:"";position:absolute;right:32px;bottom:-9px;width:16px;height:16px;
  background:var(--paper);border-right:1px solid var(--line2);
  border-bottom:1px solid var(--line2);transform:rotate(45deg)}
@keyframes agTip{from{opacity:0;transform:translateY(10px) scale(.94)}to{opacity:1;transform:none}}
.ag-tip.hide{opacity:0;transform:translateY(8px);transition:.5s}
.ag-tip b{display:block;font-family:"Familjen Grotesk";font-size:14px;
  color:var(--tom);margin-bottom:5px}
.ag-tip p{margin:0 0 11px;font-size:13px;line-height:1.5;color:var(--ink2)}
.ag-tip-x{position:absolute;top:9px;right:11px;font-size:13px;color:var(--mut);line-height:1}
.ag-tip-go{font-size:13px;font-weight:700;color:var(--pine2)}
.ag-tip-go:hover{text-decoration:underline}
@media(prefers-reduced-motion:reduce){
  .ag-fab.alive,.ag-fab.alive:hover{animation:none}
  .ag-tip{animation:none}.ag-fab.blink svg circle{transform:none}}
@media(max-width:520px){.ag-tip{right:14px;bottom:142px}}
