/* ⚙ Панель управления: 💻 «Приложение для Windows» — версия и 🚦 постепенный выпуск (admin-desk.js). Классы — .aw-* и .adm-desk (.dk-* заняты desktop.css) */
.adm-desk { margin-top:14px; position:relative; }
.aw-head { flex-wrap:wrap; align-items:center; gap:6px 12px; }
.aw-head h2 { margin:0; }
.aw-head .link { margin-left:auto; }
.aw-ver { font-size:12.5px; font-variant-numeric:tabular-nums; }
/* «!» — пояснение по нажатию (длинный текст не занимает место в карточке) */
.aw-q { width:20px; height:20px; padding:0; border-radius:50%; border:1px solid var(--line); background:var(--chip); color:var(--text2);
  font:700 12px/18px var(--body); cursor:pointer; flex:none; }
.aw-q:hover, .aw-q[aria-expanded="true"] { color:var(--text); border-color:var(--text2); }
.aw-tip { position:absolute; z-index:3; left:12px; right:12px; top:52px; padding:12px 14px; border-radius:12px; border:1px solid var(--line);
  background:var(--card); box-shadow:0 12px 32px -10px rgba(0,0,0,.35); font-size:13px; line-height:1.55; color:var(--text2); }

.aw-empty b { font-size:15px; font-weight:500; }
.aw-empty p { margin:4px 0 0; font-size:13px; line-height:1.5; }
.aw-empty, .aw-main { margin-top:12px; }

/* строка состояния — место под неё зарезервировано (текст меняется каждые 10 с) */
.aw-st { margin:0; min-height:1.45em; font-size:13.5px; font-weight:500; line-height:1.45; font-variant-numeric:tabular-nums; }
.aw-st.ok { color:var(--ok); } .aw-st.warn { color:var(--warn); }

/* полоса выпуска: заливка до текущего %, ступени расписания (точка, %, когда), отметка «сейчас» сверху */
.aw-bar { position:relative; margin:30px 8px 0; height:46px; }
.aw-track { position:absolute; left:0; right:0; top:0; height:10px; border-radius:5px; background:var(--chip); overflow:hidden; }
.aw-fill { display:block; height:100%; width:0; border-radius:5px; background:linear-gradient(90deg, var(--blue), #6FB6FF); transition:width .5s cubic-bezier(.2,.8,.2,1); }
.aw-bar.paused .aw-fill { background:repeating-linear-gradient(-45deg, var(--warn) 0 6px, rgba(242,193,78,.7) 6px 12px); }
.aw-bar.done .aw-fill { background:linear-gradient(90deg, var(--ok), #3FD08A); }
.aw-now { position:absolute; top:-24px; height:18px; transform:translateX(-50%); padding:0 7px; border-radius:9px;
  background:var(--text); color:var(--bg); font-size:11px; font-weight:500; line-height:18px; white-space:nowrap; font-variant-numeric:tabular-nums;
  transition:left .5s cubic-bezier(.2,.8,.2,1); }
.aw-now::after { content:""; position:absolute; left:50%; bottom:-4px; margin-left:-4px; border:4px solid transparent; border-bottom:0; border-top-color:var(--text); }
.aw-now.l { transform:translateX(-10px); } .aw-now.l::after { left:10px; }
.aw-now.r { transform:translateX(calc(-100% + 10px)); } .aw-now.r::after { left:auto; right:6px; }
.aw-ticks { position:absolute; inset:0; pointer-events:none; }
.aw-tick { position:absolute; top:-2px; transform:translateX(-50%); display:flex; flex-direction:column; align-items:center; pointer-events:auto; cursor:default; }
.aw-tick i { width:14px; height:14px; box-sizing:border-box; border-radius:50%; border:2px solid var(--line); background:var(--card); }
.aw-tick.on i { border-color:var(--blue); background:var(--blue); }
.aw-bar.paused .aw-tick.on i { border-color:var(--warn); background:var(--warn); }
.aw-bar.done .aw-tick.on i { border-color:var(--ok); background:var(--ok); }
.aw-tick.next i { border-color:var(--blue); animation:aw-pulse 1.6s ease-in-out infinite; }
.aw-tick b { margin-top:3px; font-size:12px; font-weight:500; line-height:1.2; font-variant-numeric:tabular-nums; white-space:nowrap; }
.aw-tick small { font-size:11px; color:var(--text2); line-height:1.2; white-space:nowrap; }
.aw-tick:not(.on) b { color:var(--text2); }
.aw-tick.l { transform:translateX(-7px); align-items:flex-start; }
.aw-tick.r { transform:translateX(calc(-100% + 7px)); align-items:flex-end; }
@keyframes aw-pulse { 50% { box-shadow:0 0 0 4px var(--blue-soft); } }
@media (prefers-reduced-motion: reduce) { .aw-tick.next i { animation:none; } .aw-fill, .aw-now { transition:none; } }

/* режим выпуска — переключатель из двух кнопок */
.aw-modes { display:inline-flex; gap:2px; padding:3px; margin:0 0 10px; border-radius:12px; background:var(--chip); }
.aw-mb { min-height:30px; padding:0 12px; border:0; border-radius:9px; background:none; color:var(--text2); font:500 13px/1 var(--body); cursor:pointer; white-space:nowrap; }
.aw-mb:hover:not(:disabled) { color:var(--text); }
.aw-mb[aria-pressed="true"] { background:var(--card); color:var(--text); box-shadow:0 1px 3px rgba(0,0,0,.12); }
.aw-mb:disabled { cursor:default; }
/* ⚡ по нагрузке: два измерителя на месте полосы ступеней (та же высота: 14 + 62 = 30 + 46 — карточка не прыгает) */
.aw-load { margin:14px 8px 0; height:62px; display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:16px; align-content:center; }
.aw-load[hidden] { display:none; }
.aw-lm { display:flex; flex-direction:column; gap:7px; min-width:0; }
.aw-lt { font-size:12.5px; color:var(--text2); font-variant-numeric:tabular-nums; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.aw-lm .aw-track { position:static; height:10px; }
.aw-lm .aw-fill.lo { background:linear-gradient(90deg, var(--ok), #3FD08A); }
.aw-lm .aw-fill.warn { background:var(--warn); }
.aw-lm .aw-fill.bad { background:var(--bad); }

.aw-acts { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-top:14px; }
.aw-acts .btn { min-height:34px; padding:0 14px; font-size:13px; }
.aw-man { display:inline-flex; align-items:center; gap:6px; margin-left:auto; }
.aw-man label { font-size:12.5px; white-space:nowrap; }
.aw-in { width:72px; min-height:34px; padding:0 8px; font-size:13px; font-variant-numeric:tabular-nums; }
.aw-nums { margin:14px 0 0; }
.aw-n.busy b { color:var(--warn); }

@media (max-width: 640px) {
  .aw-head .link { margin-left:0; flex-basis:100%; }
  .aw-tip { top:76px; }
  .aw-st { min-height:2.9em; }   /* на телефоне строка переносится — держим место под две */
  .aw-acts .btn { flex:1 1 auto; }
  .aw-man { margin-left:0; flex-basis:100%; }
  .aw-man .aw-in { flex:1; }
  .aw-man .btn { flex:none; }
  .aw-modes { display:flex; } .aw-mb { flex:1; }
  .aw-load { gap:10px; }
  .aw-nums .adm-tk-n { justify-content:flex-start; }   /* подпись в две строки — числа всё равно в один ряд */
}

/* 🔑 Свой вход (admin-desk.js, .ak-*): логин и пароль админа. Строки состояния и ошибки — с запасом места (карточка не прыгает) */
.ak-info { margin:10px 0 0; min-height:1.5em; font-size:13.5px; line-height:1.5; }
.ak-info b { font-weight:500; }
.ak-bar { margin-top:12px; }
.ak-form { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:10px 14px; margin-top:12px; max-width:620px; }
.ak-form[hidden], .ak-f[hidden] { display:none; }
.ak-form > .ak-f:nth-of-type(3) { grid-column:1; }   /* «Новый пароль» — всегда с новой строки (без «Текущего» логин один в ряду) */
.ak-f { display:flex; flex-direction:column; gap:5px; font-size:12.5px; color:var(--text2); min-width:0; }
.ak-in { width:100%; box-sizing:border-box; font-size:14px; color:var(--text); }
.ak-str { grid-column:1 / -1; display:flex; align-items:center; gap:10px; min-height:20px; }
.ak-meter { display:grid; grid-template-columns:repeat(4, 34px); gap:4px; flex:none; }
.ak-meter i { height:6px; border-radius:3px; background:var(--chip); transition:background .2s; }
.ak-meter.l1 i:nth-child(-n+1) { background:var(--bad); }
.ak-meter.l2 i:nth-child(-n+2) { background:var(--warn); }
.ak-meter.l3 i:nth-child(-n+3) { background:#3FD08A; }
.ak-meter.l4 i { background:var(--ok); }
.ak-mt { font-size:12.5px; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ak-err { grid-column:1 / -1; margin:0; min-height:1.45em; font-size:13px; color:var(--bad); }
.ak-acts { grid-column:1 / -1; display:flex; gap:8px; }
.ak-acts .btn { min-height:36px; padding:0 16px; font-size:13.5px; }
@media (max-width: 640px) {
  .ak-form { grid-template-columns:minmax(0, 1fr); }
  .ak-mt { white-space:normal; }
  .ak-err { min-height:2.9em; }
  .ak-acts .btn { flex:1; }
}
