/* miuno — общие состояния UI (UR5): скелетоны, тосты, ошибки у поля.
   Подключается на страницах app / cabinet / client после tokens.css. */
.sk{display:block;background:linear-gradient(90deg,
    rgba(148,163,184,.14) 25%, rgba(148,163,184,.26) 37%, rgba(148,163,184,.14) 63%);
  background-size:400% 100%;border-radius:8px;animation:miuno-sk 1.4s ease infinite;}
@keyframes miuno-sk{0%{background-position:100% 0}100%{background-position:0 0}}
.sk-line{height:12px;border-radius:8px;}
.sk-line.w40{width:40%;}
.sk-line.w60{width:60%;}
.sk-line.w80{width:80%;}
.sk-card{border:1px solid var(--line);border-radius:14px;padding:.95rem 1.05rem;margin-bottom:.6rem;
  background:var(--card);}
.sk-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;}
.sk-row > div{flex:1;}
.sk-row .sk-pill{flex:0 0 auto;width:56px;height:14px;}
.sk-slot{height:38px;border-radius:12px;}
.sk-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.55rem;margin-top:.4rem;}
@media (prefers-reduced-motion: reduce){.sk{animation:none;}}

/* Тост/снекбар: авто-скрытие ~4 c. */
.toast{position:fixed;left:50%;transform:translateX(-50%) translateY(8px);
  bottom:calc(1.1rem + env(safe-area-inset-bottom,0px));z-index:10000;max-width:92vw;
  background:var(--ink);color:var(--on-ink);padding:.7rem 1rem;border-radius:12px;font-size:.9rem;
  box-shadow:0 12px 30px -12px rgba(15,23,42,.55);opacity:0;pointer-events:none;
  transition:opacity .2s ease,transform .2s ease;}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
.toast.ok{background:#1E4A3E;color:#fff;}
.toast.err{background:#9A3412;color:#fff;}

/* Ошибка у конкретного поля. */
.invalid{border-color:#C64419 !important;box-shadow:0 0 0 1px #C64419 inset;}
.field-err{color:#9A3412;font-size:.8rem;margin:.3rem 0 0;}

/* UX12: единое уважение prefers-reduced-motion для всех страниц (анимации/переходы). */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;
    transition-duration:.001ms !important;scroll-behavior:auto !important;}
}

/* UX12: skip-link «перейти к содержимому» — виден только при фокусе. */
.skip-link{position:absolute;left:-9999px;top:0;z-index:10001;background:var(--ink,#0F172A);
  color:var(--on-ink,#fff);padding:.6rem 1rem;border-radius:0 0 10px 0;font-size:.9rem;
  font-weight:600;text-decoration:none;}
.skip-link:focus{left:0;outline:2px solid var(--on-ink,#fff);outline-offset:2px;}

/* Единая кнопка выхода во всех кабинетах: заметная клавиатурой и удобная на touch. */
.miuno-role-logout{min-height:44px;min-width:44px;display:inline-flex;align-items:center;justify-content:center;padding:.5rem .7rem;}
.miuno-role-header{min-width:0;}
.miuno-role-header .top-left,.miuno-role-header .topbar-group{min-width:0;}
.miuno-role-header .top-left>div{min-width:0;}
.miuno-role-header small{overflow-wrap:anywhere;}
.miuno-role-tabs{min-height:44px;display:flex;gap:.4rem;flex-wrap:wrap;}
.miuno-role-tabs>button{min-height:44px;min-width:44px;}
.miuno-role-tabs>button:focus-visible{outline:2px solid var(--focus);outline-offset:2px;}

/* Единые состояния оболочки кабинетов; страницы могут сохранять свои классы. */
.miuno-role-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:1rem;margin-bottom:.7rem;}
.miuno-role-empty{color:var(--muted);text-align:center;padding:1.5rem 1rem;border:1px dashed var(--line);border-radius:14px;}
.miuno-role-error{background:#FEE2D5;color:#9A3412;border-radius:12px;padding:.8rem 1rem;margin-bottom:1rem;}
.miuno-empty{padding:1.4rem 1rem;text-align:center;background:var(--card);border:1px dashed var(--line);border-radius:14px;color:var(--muted);}
.miuno-empty strong{display:block;color:var(--ink);font-size:1rem;margin-bottom:.35rem;}
.miuno-empty p{margin:.2rem 0 .8rem;}
.miuno-empty .btn{display:inline-flex;width:auto;margin-top:.2rem;}
/* Единый нативный select сохраняет системную клавиатуру и доступность. */
select,.miuno-select{width:100%;min-height:44px;padding:.75rem .9rem;border:1px solid var(--line-strong);
  border-radius:12px;background:var(--card);color:var(--ink);font:inherit;}
select:focus-visible,.miuno-select:focus-visible{outline:2px solid var(--focus);outline-offset:2px;}
@media(max-width:360px){.miuno-role-header{gap:.6rem}.miuno-role-tabs{gap:.3rem}.miuno-role-tabs>button{min-width:0;}}
