/* Стили интерфейса. Только var(--...) из tokens.css — никаких цветов, шрифтов, радиусов и отступов напрямую. */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-ui);font-size:var(--text-base);line-height:var(--leading)}
a{color:var(--accent)}
h1{font-size:var(--text-2xl);line-height:var(--leading-tight);margin:0 0 var(--space-lg)}
h2{font-size:var(--text-lg);margin:var(--space-2xl) 0 var(--space-md)}
.num{font-family:var(--font-num);font-variant-numeric:tabular-nums;white-space:nowrap}
.hint{color:var(--muted);font-size:var(--text-sm)}
:focus-visible{outline:var(--focus-width) solid var(--accent);outline-offset:var(--focus-width)}

/* Верхняя панель */
.topbar{position:sticky;top:0;z-index:10;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm) var(--space-xl);
  padding:var(--space-sm) var(--space-lg);background:var(--surface);border-bottom:var(--border-width) solid var(--line)}
.brand{display:flex;align-items:center;gap:var(--space-sm);font-weight:var(--weight-bold);color:var(--ink);text-decoration:none;white-space:nowrap}
.brand img{width:var(--logo-size);height:var(--logo-size);border-radius:var(--radius-sm)}
.nav{display:flex;gap:var(--space-xs);overflow-x:auto;flex:1 1 auto;min-width:0;scrollbar-width:none}
.nav a{padding:var(--space-sm) var(--space-md);border-radius:var(--radius);color:var(--muted);text-decoration:none;white-space:nowrap}
.nav a:hover{background:var(--sunk);color:var(--ink)}
.nav a[aria-current="page"]{background:var(--accent-weak);color:var(--accent);font-weight:var(--weight-bold)}
.userbox{display:flex;align-items:center;gap:var(--space-md);margin-left:auto}
.who{display:flex;flex-direction:column;line-height:var(--leading-tight);text-align:right}
.who small{color:var(--muted)}
.userbox form{margin:0}

/* Содержимое */
.container{max-width:var(--width-content);margin:0 auto;padding:var(--space-2xl) var(--space-lg) var(--space-4xl)}
.card{background:var(--surface);border:var(--border-width) solid var(--line);border-radius:var(--radius);padding:var(--space-xl)}
.card > :first-child{margin-top:0}
.card > :last-child{margin-bottom:0}
.stub{border-style:dashed;color:var(--muted)}
.stub b{color:var(--ink)}
.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-md);margin-bottom:var(--space-lg)}
.toolbar h1{margin:0}

/* Формы */
form.stack{display:grid;gap:var(--space-lg);max-width:var(--width-form)}
label{display:grid;gap:var(--space-xs);font-size:var(--text-sm);color:var(--muted)}
label.check{display:flex;align-items:center;gap:var(--space-sm);color:var(--ink);font-size:var(--text-md)}
input,select{font:inherit;color:var(--ink);background:var(--surface);border:var(--border-width) solid var(--line);border-radius:var(--radius);
  padding:var(--space-sm) var(--space-md);min-height:var(--control-height);width:100%}
input[type="checkbox"]{width:var(--checkbox-size);height:var(--checkbox-size);min-height:0;accent-color:var(--accent)}
input:focus,select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 var(--focus-ring) var(--accent-weak)}
fieldset{border:var(--border-width) solid var(--line);border-radius:var(--radius);padding:var(--space-md) var(--space-lg) var(--space-lg);margin:0;display:grid;gap:var(--space-sm)}
legend{color:var(--muted);font-size:var(--text-sm);padding:0 var(--space-xs)}
.static-field{font-size:var(--text-md);color:var(--ink)}

.btn,button{font:inherit;cursor:pointer;border-radius:var(--radius);border:var(--border-width) solid var(--line);background:var(--surface);color:var(--ink);
  padding:var(--space-sm) var(--space-lg);min-height:var(--control-height);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm)}
.btn:hover,button:hover{background:var(--sunk)}
.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:var(--weight-bold)}
.btn-primary:hover{filter:brightness(1.08);background:var(--accent)}
.btn-ghost{border-color:transparent;background:transparent;color:var(--muted)}
.btn-icon{width:var(--control-height);padding:0;font-size:var(--text-lg);color:var(--muted)}

.alert{border-radius:var(--radius);padding:var(--space-sm) var(--space-md);margin:0}
.alert-error{background:var(--crit-weak);color:var(--crit)}

/* Таблицы */
.table-wrap{overflow-x:auto;background:var(--surface);border:var(--border-width) solid var(--line);border-radius:var(--radius)}
table{width:100%;border-collapse:collapse;font-size:var(--text-md)}
th,td{padding:var(--space-sm) var(--space-md);text-align:left;border-bottom:var(--border-width) solid var(--line);vertical-align:top}
th{background:var(--sunk);color:var(--muted);font-weight:var(--weight-bold);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:var(--tracking-caps);white-space:nowrap}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:var(--sunk)}
tr.inactive td{color:var(--muted)}
td.empty{text-align:center;color:var(--muted);padding:var(--space-3xl)}
.badge{display:inline-block;padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-pill);font-size:var(--text-xs);background:var(--sunk);color:var(--muted)}
.badge-good{background:var(--good-weak);color:var(--good)}
.badge-crit{background:var(--crit-weak);color:var(--crit)}

.filters{display:flex;flex-wrap:wrap;align-items:end;gap:var(--space-md);margin-bottom:var(--space-lg)}
.filters label{flex:1 1 var(--width-field-min)}
.pager{display:flex;justify-content:center;align-items:center;gap:var(--space-lg);margin-top:var(--space-lg);color:var(--muted)}

/* Страница входа */
.login-page{min-height:100vh;display:grid;place-items:center;padding:var(--space-lg)}
.login-card{width:100%;max-width:var(--width-narrow)}
.login-card .brand{justify-content:center;margin-bottom:var(--space-xl);font-size:var(--text-lg)}
.login-card form.stack{max-width:none}

/* Телефон (в условиях @media переменные не работают — ширина задана числом) */
@media (max-width:640px){
  .topbar{padding:var(--space-sm) var(--space-md)}
  .nav{order:3;flex-basis:100%}
  .who{display:none}
  .container{padding:var(--space-lg) var(--space-md) var(--space-3xl)}
  h1{font-size:var(--text-xl)}
  .filters label{flex-basis:100%}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
