/* Планировщик загрузки команды. Ориентир — календарное приложение:
   белая сетка, тонкие линии, цветные блоки, минимум хрома. */

:root{
  --bg:#f6f7f9;
  --panel:#ffffff;
  --ink:#1f2023;
  --ink-2:#494f57;
  --muted:#80868b;
  --faint:#9aa0a6;

  --line:#e4e7eb;        /* час */
  --line-soft:#f0f2f4;   /* полчаса */
  --line-hard:#d6dae0;   /* разделители панелей */

  --accent:#2f6feb;
  --accent-dark:#1f56c4;
  --accent-soft:#eaf0fe;
  --accent-line:#b9cdfa;

  --red:#e0483b;
  --red-soft:#fdeceb;
  --amber:#c9820c;
  --amber-soft:#fdf3e2;
  --green:#1f9254;
  --green-soft:#e8f6ee;

  --hour:56px;
  --gutter:62px;
  --radius:10px;
  --radius-sm:7px;
  --shadow-1:0 1px 2px rgba(24,32,44,.07), 0 1px 3px rgba(24,32,44,.06);
  --shadow-2:0 4px 14px rgba(24,32,44,.14);
  --shadow-3:0 12px 40px rgba(24,32,44,.20);
  --topbar-h:104px;
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,Arial,sans-serif;
  font-size:13.5px;line-height:1.45;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow:hidden;
}
/* авторский display в компонентах ниже перебил бы UA-правило [hidden]{display:none} */
[hidden]{display:none !important}
button,input,select,textarea{font-family:inherit;font-size:13.5px;color:var(--ink)}
h1,h2,h3,h4,p{margin:0}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-thumb{background:#cdd2d8;border-radius:7px;border:3px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:#b3bac2;background-clip:content-box}
::-webkit-scrollbar-corner{background:transparent}

/* ------------------------------------------------------------------ кнопки */
.btn{
  display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 13px;
  border:1px solid transparent;border-radius:8px;background:transparent;color:var(--ink-2);
  cursor:pointer;font-size:13px;font-weight:500;white-space:nowrap;
  transition:background .13s ease,border-color .13s ease,color .13s ease,box-shadow .13s ease;
}
.btn:hover{background:#eceef1;color:var(--ink)}
.btn:active{background:#e3e6ea}
.btn:focus-visible,.iconbtn:focus-visible,.navarrow:focus-visible,.tabs button:focus-visible,
.seg button:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible,
.ev:focus-visible,.bl-card:focus-visible,.who:focus-visible,.link:focus-visible{
  outline:2px solid var(--accent);outline-offset:1px;
}
.btn.primary{background:var(--accent);color:#fff}
.btn.primary:hover{background:var(--accent-dark)}
.btn.ghost{border-color:var(--line-hard);background:var(--panel)}
.btn.ghost:hover{background:#f4f6f8;border-color:#c6ccd4}
.btn.danger{color:var(--red)}
.btn.danger:hover{background:var(--red-soft)}
.btn.sm{height:27px;padding:0 10px;font-size:12.5px;border-radius:7px}
.btn[disabled]{opacity:.42;pointer-events:none}
.link{border:none;background:none;padding:0;color:var(--accent);cursor:pointer;font-size:12.5px;font-weight:500}
.link:hover{text-decoration:underline}

.iconbtn{
  width:34px;height:34px;flex:0 0 34px;display:inline-flex;align-items:center;justify-content:center;
  border:none;border-radius:9px;background:transparent;cursor:pointer;
}
.iconbtn:hover{background:#eceef1}
.ico-menu,.ico-menu::before,.ico-menu::after{display:block;width:16px;height:2px;border-radius:2px;background:var(--ink-2)}
.ico-menu{position:relative}
.ico-menu::before,.ico-menu::after{content:"";position:absolute;left:0}
.ico-menu::before{top:-5px}
.ico-menu::after{top:5px}

.navarrow{
  width:30px;height:30px;border:none;border-radius:8px;background:transparent;cursor:pointer;
  font-size:20px;line-height:1;color:var(--ink-2);
}
.navarrow:hover{background:#eceef1;color:var(--ink)}

.seg{display:inline-flex;background:#e9ebef;border-radius:9px;padding:2px;gap:2px}
.seg button{
  height:26px;padding:0 14px;border:none;background:transparent;border-radius:7px;cursor:pointer;
  font-size:12.5px;font-weight:500;color:var(--ink-2);transition:background .13s,color .13s;
}
.seg button:hover{color:var(--ink)}
.seg button.on{background:var(--panel);color:var(--ink);font-weight:600;box-shadow:var(--shadow-1)}

.tabs{display:inline-flex;gap:2px}
.tabs button{
  height:32px;padding:0 13px;border:none;background:transparent;border-radius:8px;cursor:pointer;
  font-size:13px;font-weight:500;color:var(--ink-2);
}
.tabs button:hover{background:#eceef1;color:var(--ink)}
.tabs button.on{background:var(--accent-soft);color:var(--accent-dark);font-weight:600}

.pick{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--muted)}
.pick select{
  height:30px;padding:0 26px 0 9px;border:1px solid var(--line-hard);border-radius:8px;background:var(--panel);
  cursor:pointer;font-size:13px;font-weight:500;
  appearance:none;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%2380868b' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 9px center;
}
.pick select:hover{border-color:#c6ccd4}
.check{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2);cursor:pointer;white-space:nowrap}
.check input{accent-color:var(--accent);width:14px;height:14px;margin:0;cursor:pointer}

/* ------------------------------------------------------------------ шапка */
.topbar{
  position:relative;z-index:30;background:var(--panel);
  border-bottom:1px solid var(--line-hard);box-shadow:0 1px 2px rgba(24,32,44,.04);
}
.bar{display:flex;align-items:center;gap:10px;padding:0 14px;min-height:50px}
.bar-main{border-bottom:1px solid var(--line-soft)}
.bar-sub{min-height:46px;gap:9px;flex-wrap:wrap}
.grow{flex:1 1 auto}
.brand{font-weight:700;font-size:14.5px;letter-spacing:-.01em;white-space:nowrap;margin-right:4px}
.navgroup{display:inline-flex;align-items:center;gap:3px}
.period{
  font-size:17px;font-weight:600;letter-spacing:-.015em;white-space:nowrap;
  margin-left:4px;text-transform:none;
}
.datepick{position:relative;display:inline-flex;align-items:center;width:32px;height:32px;border-radius:8px;cursor:pointer}
.datepick:hover{background:#eceef1}
.datepick input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%;border:none;padding:0}
.ico-cal{
  margin:auto;width:16px;height:15px;border:1.6px solid var(--ink-2);border-radius:3px;position:relative;
}
.ico-cal::before{content:"";position:absolute;left:-1.6px;right:-1.6px;top:2px;height:1.6px;background:var(--ink-2)}
.ico-cal::after{content:"";position:absolute;left:2px;top:6px;width:3px;height:3px;background:var(--ink-2)}

.who{
  display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 11px 0 5px;
  border:1px solid var(--line-hard);border-radius:18px;background:var(--panel);cursor:pointer;
  font-size:13px;font-weight:500;white-space:nowrap;
}
.who:hover{background:#f4f6f8}
.ava{
  width:24px;height:24px;border-radius:50%;background:var(--accent);color:#fff;
  display:inline-flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:700;flex:0 0 24px;
}
.ava.none{background:#c4c9cf}

.revline{font-size:12px;color:var(--muted);white-space:nowrap}
.revline b{color:var(--ink-2);font-weight:600}
.savestate{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);white-space:nowrap}
.savestate .dot{width:7px;height:7px;border-radius:50%;background:#c4c9cf;flex:0 0 7px}
.savestate.ok .dot{background:var(--green)}
.savestate.busy .dot{background:var(--amber);animation:pulse 1.1s ease-in-out infinite}
.savestate.warn .dot{background:var(--amber)}
.savestate.err .dot{background:var(--red)}
.savestate.dirty .dot{background:var(--accent)}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}

.notice{
  display:flex;align-items:center;gap:10px;padding:9px 16px;font-size:13px;
  background:var(--amber-soft);border-top:1px solid #f0dfbd;color:#6b4a05;
}
.notice.err{background:var(--red-soft);border-top-color:#f4cfcb;color:#8a2b21}
.notice.info{background:var(--accent-soft);border-top-color:var(--accent-line);color:var(--accent-dark)}
.notice .grow{flex:1}

/* ------------------------------------------------------------------ каркас */
.workspace{display:flex;height:calc(100vh - var(--topbar-h));min-height:0;overflow:hidden}
.main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;background:var(--panel)}
.view{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.view[hidden]{display:none !important}

/* ------------------------------------------------------------------ беклог */
.backlog{
  flex:0 0 286px;width:286px;display:flex;flex-direction:column;min-height:0;
  background:var(--bg);border-right:1px solid var(--line-hard);
  transition:margin-left .18s ease;
}
.backlog.collapsed{margin-left:-286px}
.backlog-head{display:flex;align-items:center;gap:8px;padding:12px 14px 8px}
.backlog-title{font-size:13px;font-weight:600;flex:1}
.backlog-title .count{
  display:inline-block;min-width:20px;padding:0 6px;margin-left:4px;border-radius:9px;
  background:#e3e6ea;color:var(--ink-2);font-size:11.5px;font-weight:600;text-align:center;
}
.backlog-filters{display:flex;flex-wrap:wrap;gap:6px;padding:0 14px 10px}
.backlog-filters select{
  height:28px;flex:1 1 96px;min-width:0;padding:0 22px 0 8px;border:1px solid var(--line-hard);
  border-radius:7px;background:var(--panel);font-size:12.5px;appearance:none;cursor:pointer;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%2380868b' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 7px center;
}
.backlog-filters .check{flex:1 1 100%}
.backlog-list{flex:1 1 auto;overflow-y:auto;padding:0 10px 10px;display:flex;flex-direction:column;gap:6px}
.backlog-hint{padding:9px 14px 14px;font-size:11.5px;color:var(--faint);line-height:1.4}

.bl-card{
  position:relative;display:block;width:100%;text-align:left;
  padding:9px 10px 9px 13px;border:1px solid var(--line);border-radius:9px;background:var(--panel);
  cursor:grab;box-shadow:var(--shadow-1);
  transition:box-shadow .13s ease,border-color .13s ease,transform .06s ease;
}
.bl-card:hover{box-shadow:var(--shadow-2);border-color:#d3d8de}
.bl-card:active{cursor:grabbing}
.bl-card.dragging{opacity:.4}
.bl-card::before{
  content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;
  background:var(--c,#c4c9cf);
}
.bl-top{display:flex;align-items:center;gap:6px;margin-bottom:3px}
.bl-title{font-size:13px;font-weight:500;line-height:1.32;word-break:break-word}
.bl-meta{display:flex;flex-wrap:wrap;gap:4px 8px;margin-top:5px;font-size:11.5px;color:var(--muted)}
.bl-meta .late{color:var(--red);font-weight:600}
.bl-part{color:var(--accent-dark)}
.code{
  display:inline-block;padding:1px 5px;border-radius:5px;background:var(--c,#e3e6ea);color:#fff;
  font-size:10.5px;font-weight:700;letter-spacing:.02em;line-height:1.5;white-space:nowrap;
}
.code.plain{background:#e3e6ea;color:var(--ink-2)}
.pflag{
  display:inline-block;width:16px;height:16px;border-radius:5px;flex:0 0 16px;
  font-size:9.5px;font-weight:700;line-height:16px;text-align:center;color:#fff;
}
.pflag.p0{background:var(--red)}
.pflag.p1{background:#8f9bab}
.pflag.p2{background:#c9ced5;color:var(--ink-2)}
.empty{color:var(--faint);font-size:12.5px;padding:14px 6px;text-align:center;line-height:1.5}

/* ------------------------------------------------------------------ календарь */
.cal{display:flex;flex-direction:column;height:100%;min-height:0}
.cal-scroll{flex:1 1 auto;min-height:0;overflow:auto;position:relative;background:var(--panel)}
.cal-inner{
  display:grid;grid-template-columns:var(--gutter) 1fr;grid-template-rows:auto 1fr;
  min-width:max-content;
}
.cal-corner{
  grid-column:1;grid-row:1;position:sticky;top:0;left:0;z-index:6;
  background:var(--panel);border-right:1px solid var(--line);border-bottom:1px solid var(--line-hard);
}
.cal-heads{
  grid-column:2;grid-row:1;position:sticky;top:0;z-index:5;
  display:grid;grid-template-columns:repeat(var(--cols),minmax(var(--colmin),1fr));
  background:var(--panel);border-bottom:1px solid var(--line-hard);
}
.cal-gutter{
  grid-column:1;grid-row:2;position:sticky;left:0;z-index:4;
  background:var(--panel);border-right:1px solid var(--line);
}
.cal-cols{
  grid-column:2;grid-row:2;
  display:grid;grid-template-columns:repeat(var(--cols),minmax(var(--colmin),1fr));
  position:relative;
}

.colhead{
  padding:7px 9px 8px;border-right:1px solid var(--line-soft);min-width:0;
  display:flex;flex-direction:column;gap:3px;
}
.colhead:last-child{border-right:none}
.colhead.rolestart{border-left:2px solid var(--line-hard)}
.ch-top{display:flex;align-items:baseline;gap:6px;min-width:0}
.ch-dow{font-size:11px;font-weight:500;color:var(--muted);text-transform:lowercase}
.ch-num{font-size:19px;font-weight:600;letter-spacing:-.02em;line-height:1.05}
.colhead.today .ch-dow{color:var(--accent)}
.colhead.today .ch-num{
  background:var(--accent);color:#fff;border-radius:50%;
  min-width:27px;height:27px;display:inline-flex;align-items:center;justify-content:center;
  font-size:15px;
}
.ch-name{
  font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  display:flex;align-items:center;gap:5px;
}
.ch-name .role{font-size:10.5px;font-weight:500;color:var(--muted)}
.ch-name .off{font-size:10.5px;font-weight:500;color:var(--faint)}
.ch-load{display:flex;align-items:baseline;gap:5px;font-size:11.5px;color:var(--muted);white-space:nowrap}
.ch-load b{font-weight:600;color:var(--ink-2)}
.ch-load .over{color:var(--red);font-weight:600}
.ch-load .free{color:var(--accent-dark)}
.ch-load .abs{color:var(--amber);font-weight:600}
.bar-load{height:4px;border-radius:3px;background:#e9ebef;overflow:hidden;margin-top:1px}
.bar-load i{display:block;height:100%;border-radius:3px;background:#93a4c4;transition:width .18s ease}
.bar-load.over i{background:var(--red)}
.bar-load.under i{background:#a9b6cb}
.bar-load.none{background:repeating-linear-gradient(135deg,#eceef1 0 5px,#e3e6ea 5px 10px)}
.bar-load.none i{display:none}
.addslot{
  align-self:flex-start;margin-top:1px;border:none;background:none;padding:0;cursor:pointer;
  font-size:11.5px;color:var(--accent);font-weight:500;
}
.addslot:hover{text-decoration:underline}

.hourlab{
  position:absolute;right:8px;font-size:11px;color:var(--faint);
  transform:translateY(-50%);white-space:nowrap;font-variant-numeric:tabular-nums;
}
.cal-gutter{position:sticky}
.gut-inner{position:relative;width:100%}

.col{
  position:relative;border-right:1px solid var(--line-soft);min-width:0;
  background-image:
    repeating-linear-gradient(to bottom, var(--line-soft) 0 1px, transparent 1px calc(var(--hour)/2)),
    repeating-linear-gradient(to bottom, var(--line) 0 1px, transparent 1px var(--hour));
}
.col:last-child{border-right:none}
.col.rolestart{border-left:2px solid var(--line-hard)}
.col.weekend{background-color:#fbfbfc}
.col.today{background-color:#fafcff}
.col.target{background-color:var(--accent-soft)}
.col.off{background-color:#f7f8fa}
.col.absent{
  background-image:repeating-linear-gradient(135deg,rgba(201,130,12,.07) 0 7px,rgba(201,130,12,.13) 7px 14px);
}
.col-abslabel{
  position:absolute;top:8px;left:50%;transform:translateX(-50%);z-index:2;
  padding:3px 9px;border-radius:12px;background:var(--amber-soft);color:#7a5205;
  font-size:11.5px;font-weight:600;white-space:nowrap;border:1px solid #f0dfbd;pointer-events:none;
}
.lunch{
  position:absolute;left:0;right:0;z-index:1;pointer-events:none;
  background:repeating-linear-gradient(135deg,rgba(128,134,139,.05) 0 6px,rgba(128,134,139,.10) 6px 12px);
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);
}
.lunch span{
  position:absolute;left:7px;top:50%;transform:translateY(-50%);
  font-size:10.5px;color:var(--faint);letter-spacing:.04em;
}
.nowline{position:absolute;left:0;right:0;height:0;z-index:8;pointer-events:none;border-top:2px solid var(--red)}
.nowline::before{
  content:"";position:absolute;left:-4px;top:-5px;width:8px;height:8px;border-radius:50%;background:var(--red);
}

/* ------------------------------------------------------------------ блок задачи */
.ev{
  position:absolute;left:3px;right:5px;z-index:3;
  display:flex;flex-direction:column;gap:1px;overflow:hidden;
  padding:3px 6px 3px 8px;border:none;border-radius:var(--radius-sm);
  background:var(--fill);color:var(--tone);text-align:left;
  box-shadow:inset 3px 0 0 var(--c), 0 0 0 1px rgba(255,255,255,.9);
  cursor:grab;font-size:12px;line-height:1.28;
  transition:box-shadow .12s ease,filter .12s ease;
}
.ev:hover{box-shadow:inset 3px 0 0 var(--c), var(--shadow-2);filter:brightness(.985);z-index:5}
.ev:active{cursor:grabbing}
.ev.sel{box-shadow:inset 3px 0 0 var(--c), 0 0 0 2px var(--accent);z-index:6}
.ev.dragging{opacity:.35}
.ev-title{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ev-sub{font-size:11px;opacity:.82;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ev-flags{position:absolute;top:3px;right:5px;display:flex;gap:3px;font-size:10px;line-height:1}
.ev-flags i{font-style:normal;opacity:.9}
.ev.tiny{flex-direction:row;align-items:center;gap:5px;padding-top:1px;padding-bottom:1px}
.ev.tiny .ev-sub{margin-left:auto}
.ev.broken{--fill:#f1f2f4;--tone:#6b7076;box-shadow:inset 3px 0 0 #b9bec4}
.grip{
  position:absolute;left:0;right:0;bottom:0;height:8px;cursor:ns-resize;
  display:flex;align-items:flex-end;justify-content:center;
}
.grip::after{
  content:"";width:22px;height:2px;margin-bottom:2px;border-radius:2px;background:currentColor;opacity:0;
  transition:opacity .12s ease;
}
.ev:hover .grip::after{opacity:.45}
.ev.ghost{
  opacity:.9;pointer-events:none;z-index:20;
  box-shadow:inset 3px 0 0 var(--c), 0 6px 18px rgba(24,32,44,.22);
  outline:1px dashed rgba(255,255,255,.7);outline-offset:-3px;
}
.ev.ghost.bad{--fill:var(--red-soft) !important;--tone:#8a2b21 !important;box-shadow:inset 3px 0 0 var(--red), 0 6px 18px rgba(24,32,44,.22)}
.selbox{
  position:absolute;left:3px;right:5px;z-index:19;pointer-events:none;
  border:1.5px dashed var(--accent);border-radius:var(--radius-sm);background:rgba(47,111,235,.10);
}
.draglayer{position:fixed;inset:0;z-index:900;pointer-events:none;display:none}
.draglayer.on{display:block}
body.dragging{cursor:grabbing;user-select:none}
body.resizing{cursor:ns-resize;user-select:none}

/* ------------------------------------------------------------------ пустое состояние */
.blank{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;
  padding:40px;text-align:center;color:var(--muted);
}
.blank h3{font-size:16px;font-weight:600;color:var(--ink)}
.blank p{max-width:420px;font-size:13px;line-height:1.55}

/* ------------------------------------------------------------------ сводка */
.sum{flex:1;overflow:auto;padding:20px 26px 60px}
.sum-head{display:flex;align-items:flex-start;gap:14px;margin-bottom:18px;flex-wrap:wrap}
.sum-head h2{font-size:20px;font-weight:700;letter-spacing:-.02em}
.sum-head .sub{font-size:12.5px;color:var(--muted);margin-top:2px}
.sum-actions{margin-left:auto;display:flex;gap:8px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:22px}
.kpi{padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}
.kpi .k{font-size:11.5px;color:var(--muted);margin-bottom:3px}
.kpi .v{font-size:21px;font-weight:700;letter-spacing:-.02em}
.kpi.warn .v{color:var(--red)}
.kpi.good .v{color:var(--green)}
.sum h3{font-size:14px;font-weight:600;margin:22px 0 9px}
table.grid{width:100%;border-collapse:collapse;font-size:13px;background:var(--panel)}
table.grid th,table.grid td{padding:7px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
table.grid thead th{
  font-size:11.5px;font-weight:600;color:var(--muted);border-bottom:1px solid var(--line-hard);
  white-space:nowrap;
}
table.grid td.num,table.grid th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
table.grid tbody tr:hover{background:#fafbfc}
table.grid tfoot td{font-weight:600;border-top:1px solid var(--line-hard);border-bottom:none;background:#fafbfc}
.pill{
  display:inline-block;padding:1px 8px;border-radius:11px;font-size:11.5px;font-weight:600;
  background:#eceef1;color:var(--ink-2);white-space:nowrap;
}
.pill.over{background:var(--red-soft);color:#a5322a}
.pill.under{background:var(--amber-soft);color:#7a5205}
.pill.ok{background:var(--green-soft);color:#166b3d}
.pill.off{background:#eceef1;color:var(--faint)}
.attn{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}
.attn li{
  padding:8px 12px 8px 30px;border-radius:9px;background:var(--amber-soft);border:1px solid #f2e3c4;
  font-size:12.5px;color:#6b4a05;position:relative;
}
.attn li::before{content:"!";position:absolute;left:12px;top:8px;font-weight:700;color:var(--amber)}
.smallnote{font-size:11.5px;color:var(--faint);margin-top:6px;line-height:1.5}

/* ------------------------------------------------------------------ справочники */
.refs{flex:1;overflow:auto;padding:18px 26px 60px}
.refs-tabs{display:flex;gap:2px;margin-bottom:16px;border-bottom:1px solid var(--line);padding-bottom:0}
.refs-tabs button{
  height:34px;padding:0 13px;border:none;border-bottom:2px solid transparent;background:none;cursor:pointer;
  font-size:13px;font-weight:500;color:var(--ink-2);margin-bottom:-1px;
}
.refs-tabs button:hover{color:var(--ink)}
.refs-tabs button.on{color:var(--accent-dark);border-bottom-color:var(--accent);font-weight:600}
.refs-head{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.refs-head h3{font-size:15px;font-weight:600}
.refs-head .grow{flex:1}
.refs .hint{font-size:12px;color:var(--muted);margin:-6px 0 12px;line-height:1.5;max-width:760px}
.swatch{width:15px;height:15px;border-radius:4px;display:inline-block;vertical-align:-2px;border:1px solid rgba(0,0,0,.08)}
.rowbtns{display:flex;gap:4px;justify-content:flex-end}
.search{
  height:32px;padding:0 11px;border:1px solid var(--line-hard);border-radius:8px;background:var(--panel);
  min-width:200px;
}
.muted{color:var(--muted)}
.strike{text-decoration:line-through;color:var(--faint)}

/* ------------------------------------------------------------------ формы */
.form{display:flex;flex-direction:column;gap:13px}
.frow{display:flex;gap:10px;flex-wrap:wrap}
.frow>*{flex:1 1 0;min-width:0}
.field{display:flex;flex-direction:column;gap:4px;min-width:0}
.field>span{font-size:11.5px;color:var(--muted);font-weight:500}
.field input[type=text],.field input[type=date],.field input[type=time],
.field input[type=number],.field select,.field textarea{
  height:34px;padding:0 10px;border:1px solid var(--line-hard);border-radius:8px;background:var(--panel);
  width:100%;
}
.field textarea{height:auto;min-height:64px;padding:8px 10px;resize:vertical;line-height:1.5}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-soft)}
.field .err{font-size:11.5px;color:var(--red)}
.fhint{font-size:11.5px;color:var(--faint);line-height:1.45}
.warnbox{
  padding:9px 11px;border-radius:9px;background:var(--amber-soft);border:1px solid #f2e3c4;
  font-size:12.5px;color:#6b4a05;line-height:1.5;
}
.warnbox.red{background:var(--red-soft);border-color:#f4cfcb;color:#8a2b21}
.warnbox.blue{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-dark)}
.chiplist{display:flex;flex-wrap:wrap;gap:5px}
.chip{
  display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:14px;
  border:1px solid var(--line-hard);background:var(--panel);font-size:12px;cursor:pointer;
}
.chip.on{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-dark);font-weight:600}
.assign-list{display:flex;flex-direction:column;gap:5px;max-height:180px;overflow:auto}
.assign-row{
  display:flex;align-items:center;gap:8px;padding:6px 9px;border:1px solid var(--line);border-radius:8px;
  font-size:12.5px;background:#fafbfc;
}
.assign-row .grow{flex:1}

/* ------------------------------------------------------------------ модалки */
.modal-root{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px}
.modal-back{position:absolute;inset:0;background:rgba(24,32,44,.34);animation:fade .14s ease}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes rise{from{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}
.modal{
  position:relative;background:var(--panel);border-radius:14px;box-shadow:var(--shadow-3);
  width:min(560px,100%);max-height:calc(100vh - 40px);display:flex;flex-direction:column;
  animation:rise .16s cubic-bezier(.2,.7,.3,1);
}
.modal.wide{width:min(760px,100%)}
.modal-head{display:flex;align-items:center;gap:10px;padding:16px 18px 12px}
.modal-head h3{font-size:16px;font-weight:600;letter-spacing:-.01em;flex:1;min-width:0}
.modal-head .sub{font-size:12px;color:var(--muted);font-weight:400;margin-top:2px}
.modal-body{padding:2px 18px 16px;overflow:auto}
.modal-foot{
  display:flex;align-items:center;gap:8px;padding:12px 18px 16px;border-top:1px solid var(--line-soft);
  flex-wrap:wrap;
}
.modal-foot .grow{flex:1}
.xbtn{
  width:30px;height:30px;border:none;border-radius:8px;background:transparent;cursor:pointer;
  font-size:19px;line-height:1;color:var(--muted);flex:0 0 30px;
}
.xbtn:hover{background:#eceef1;color:var(--ink)}

/* ------------------------------------------------------------------ тосты */
.toasts{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:1200;display:flex;flex-direction:column;gap:7px;align-items:center;pointer-events:none}
.toast{
  padding:9px 15px;border-radius:10px;background:#23272e;color:#fff;font-size:12.5px;
  box-shadow:var(--shadow-2);animation:rise .16s ease;max-width:min(560px,90vw);
  display:flex;align-items:center;gap:10px;pointer-events:auto;
}
.toast.err{background:#8f2f26}
.toast.ok{background:#1c6b42}
.toast button{border:none;background:rgba(255,255,255,.18);color:#fff;border-radius:6px;height:24px;padding:0 9px;cursor:pointer;font-size:12px}

/* ------------------------------------------------------------------ адаптив */
@media (max-width:1180px){
  .brand{display:none}
  .backlog{flex-basis:250px;width:250px}
  .backlog.collapsed{margin-left:-250px}
}
@media (max-width:900px){
  :root{--topbar-h:140px}
  .bar-main{flex-wrap:wrap}
  .period{font-size:15px}
  .backlog{position:absolute;z-index:20;height:calc(100vh - var(--topbar-h));box-shadow:var(--shadow-2)}
  .workspace{position:relative}
}

/* ------------------------------------------------------------------ печать */
@media print{
  @page{size:A4 portrait;margin:12mm}
  html,body{height:auto;overflow:visible;background:#fff;font-size:10.5pt}
  .topbar,.backlog,.toasts,.modal-root,.draglayer,.sum-actions{display:none !important}
  .workspace{display:block;height:auto;overflow:visible}
  .main,.view{display:block;height:auto;overflow:visible}
  .sum{padding:0;overflow:visible}
  .kpis{grid-template-columns:repeat(3,1fr);gap:6px}
  .kpi{padding:6px 8px;border-color:#bbb}
  .kpi .v{font-size:14pt}
  .sum h3{margin:12px 0 6px;font-size:11.5pt}
  table.grid{font-size:9.5pt}
  table.grid th,table.grid td{padding:3px 5px;border-color:#ccc}
  table.grid tbody tr{page-break-inside:avoid}
  .attn li{background:none;border:1px solid #bbb;color:#000;page-break-inside:avoid}
  .smallnote{color:#555}
}
