:root{
  --paper:#FAF9F7;
  --cream:#F0EEE9;
  --off:#F5F4F2;
  --white:#FFFFFF;
  --ink:#0E0E10;
  --ink-soft:#5A5A62;
  --ink-dim:#8A8A92;
  --line:rgba(14,14,16,.10);
  --line-strong:rgba(14,14,16,.18);
  --coral:#FF5C4D;
  --coral-dark:#E54A3D;
  --coral-wash:rgba(255,92,77,.12);
  --ok:#1F8A5B;
  --warn:#B7791F;
}

*{box-sizing:border-box}
/* .login и .app задают display, а он перебивает браузерное [hidden]:
   без !important форма входа остаётся на экране после успешного входа. */
[hidden]{display:none!important}
html,body{margin:0;padding:0}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:'Manrope',system-ui,sans-serif;
  font-weight:400;
  font-size:15px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
.mono{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-dim)}
.kicker{font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--coral);margin:0 0 18px}
.kicker::before{content:"── ";color:var(--ink-dim)}

h1,h2,h3{margin:0;font-weight:200;letter-spacing:-.04em;line-height:.98}
.h2{font-size:44px}
.h3{font-size:28px}
.lead{margin:12px 0 0;max-width:640px;color:var(--ink-soft);font-weight:300;font-size:16px}

/* ── вход ── */
.login{min-height:100vh;display:grid;place-items:center;background:var(--cream)}
.login__card{width:min(420px,92vw);background:var(--white);border:1px solid var(--line);padding:48px 44px;position:relative}
.login__card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--coral)}
.login__title{font-size:52px;margin-bottom:34px}
.login__error{color:var(--coral-dark);font-size:14px;min-height:20px;margin:14px 0 0}

/* ── шапка ── */
.app{min-height:100vh;display:flex;flex-direction:column}
.top{display:flex;justify-content:space-between;align-items:center;gap:24px;
  padding:20px 40px;border-bottom:1px solid var(--line);background:var(--white);
  position:sticky;top:0;z-index:20}
.top__brand{display:flex;align-items:center;gap:14px}
.mark{width:3px;height:26px;background:var(--coral);display:inline-block}
.top__name{font-weight:600;letter-spacing:-.02em}
.top__acc{letter-spacing:.16em}
.top__right{display:flex;align-items:center;gap:18px}
.pill{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.18em;text-transform:uppercase;
  padding:5px 10px;border:1px solid var(--line-strong);color:var(--ink-soft)}
.pill--live{border-color:var(--coral);color:var(--coral);background:var(--coral-wash)}

.tabs{display:flex;gap:0;padding:0 40px;border-bottom:1px solid var(--line);background:var(--white);
  overflow-x:auto;position:sticky;top:65px;z-index:19}
.tab{appearance:none;background:none;border:0;border-bottom:2px solid transparent;
  font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--ink-dim);padding:16px 20px;cursor:pointer;white-space:nowrap}
.tab:hover{color:var(--ink)}
.tab.is-active{color:var(--ink);border-bottom-color:var(--coral)}
.tab:focus-visible,.btn:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{
  outline:2px solid var(--coral);outline-offset:2px}

.main{flex:1;padding:56px 40px 90px;max-width:1240px;width:100%;margin:0 auto}
.view{display:none}
.view.is-active{display:block}

.head{display:flex;justify-content:space-between;align-items:flex-end;gap:32px;flex-wrap:wrap;
  padding-bottom:28px;border-bottom:1px solid var(--line);margin-bottom:36px}
.head--sub{margin-top:64px}
.head__actions{display:flex;gap:12px;flex-wrap:wrap}

/* ── кнопки и поля ── */
.btn{font-family:'Manrope',sans-serif;font-size:14px;font-weight:500;padding:11px 20px;
  border:1px solid var(--line-strong);background:transparent;color:var(--ink);cursor:pointer;
  transition:background .15s,border-color .15s,color .15s}
.btn:hover{border-color:var(--ink)}
.btn--solid{background:var(--ink);color:var(--white);border-color:var(--ink)}
.btn--solid:hover{background:var(--coral);border-color:var(--coral)}
.btn--coral{background:var(--coral);border-color:var(--coral);color:#fff}
.btn--coral:hover{background:var(--coral-dark);border-color:var(--coral-dark)}
.btn--ghost{background:var(--white)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn--sm{padding:7px 14px;font-size:13px}

.field{display:block;margin-bottom:18px}
.field>span{display:block;font-size:13px;color:var(--ink-soft);margin-bottom:7px}
input,textarea,select{width:100%;font-family:'Manrope',sans-serif;font-size:15px;color:var(--ink);
  background:var(--white);border:1px solid var(--line-strong);padding:10px 12px;border-radius:0}
textarea{resize:vertical;line-height:1.6}
.mono-ta{font-family:'JetBrains Mono',monospace;font-size:13px;letter-spacing:0;text-transform:none}
.select{width:auto;padding:10px 14px;background:var(--white)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.check{display:flex;gap:10px;align-items:flex-start;margin:0 0 14px;font-size:14px;color:var(--ink-soft);cursor:pointer}
.check input{width:16px;height:16px;margin-top:3px;flex:0 0 auto;accent-color:var(--coral)}
.check--warn{color:var(--warn)}

/* ── метрики ── */
.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  border-top:1px solid var(--line);margin-bottom:40px}
.metric{padding:24px 24px 24px 0;border-bottom:1px solid var(--line);border-right:1px solid var(--line)}
.metric:last-child{border-right:0}
.metric__num{font-size:46px;font-weight:200;letter-spacing:-.04em;line-height:1}
.metric__num span{color:var(--coral);font-size:22px;margin-left:4px}
.metric__label{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--ink-dim);margin-top:10px}

/* ── карточки касаний ── */
.cards{display:flex;flex-direction:column;gap:0;border-top:1px solid var(--line)}
.card{background:var(--white);border-bottom:1px solid var(--line);padding:28px 32px 28px 29px;
  border-left:3px solid transparent;display:grid;grid-template-columns:1fr 320px;gap:36px}
.card--draft{border-left-color:var(--coral)}
.card--sent{border-left-color:var(--ok);background:var(--off)}
.card--error{border-left-color:var(--coral-dark);background:#FFF6F5}
.card--skipped{background:var(--off);opacity:.8}
.card__head{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin-bottom:6px}
.card__name{font-size:20px;font-weight:600;letter-spacing:-.02em}
.card__name a{color:inherit;text-decoration:none;border-bottom:1px solid var(--coral)}
.card__name a:hover{color:var(--coral)}
.card__meta{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink-dim);display:flex;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.card__msg{white-space:pre-wrap;font-size:16px;line-height:1.65;background:var(--paper);
  border:1px solid var(--line);padding:20px 22px;min-height:96px}
.card__msg[contenteditable="true"]{background:var(--white);border-color:var(--coral)}
.card__aside{border-left:1px solid var(--line);padding-left:28px;font-size:14px;color:var(--ink-soft)}
.card__aside dl{margin:0}
.card__aside dt{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--ink-dim);margin-top:16px}
.card__aside dt:first-child{margin-top:0}
.card__aside dd{margin:4px 0 0}
.card__actions{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}
.badge{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  padding:4px 9px;border:1px solid var(--line-strong);color:var(--ink-soft)}
.badge--coral{border-color:var(--coral);color:var(--coral);background:var(--coral-wash)}
.badge--warn{border-color:var(--warn);color:var(--warn)}
.card__problems{margin-top:14px;font-size:13px;color:var(--coral-dark)}

/* ── списки-строки ── */
.rows{border-top:1px solid var(--line)}
.row{display:grid;grid-template-columns:1fr auto;gap:24px;align-items:start;
  padding:22px 0;border-bottom:1px solid var(--line)}
.row__title{font-size:18px;font-weight:600;letter-spacing:-.01em}
.row__sub{color:var(--ink-soft);font-size:14px;margin-top:5px;max-width:760px}
.row__actions{display:flex;gap:10px;align-items:center}

/* ── этапы ── */
.stages{columns:2;column-gap:48px}
.stage-group{break-inside:avoid;margin-bottom:34px}
.stage-group__name{font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--ink);padding-bottom:9px;border-bottom:1px solid var(--line-strong);margin-bottom:12px}
.stage{display:flex;gap:10px;align-items:center;padding:6px 0;font-size:14px;color:var(--ink-soft);cursor:pointer}
.stage input{width:15px;height:15px;accent-color:var(--coral)}
.stage span{flex:1}
.stage .mono{letter-spacing:.1em}

/* ── проверки ── */
.checks{border-top:1px solid var(--line)}
.check-row{display:grid;grid-template-columns:26px 1fr auto;gap:16px;align-items:center;
  padding:16px 0;border-bottom:1px solid var(--line)}
.dot{width:9px;height:9px;border-radius:50%;background:var(--ink-dim);margin-left:8px}
.dot--ok{background:var(--ok)}
.dot--bad{background:var(--coral)}
.check-row__detail{font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.08em;
  color:var(--ink-dim);text-transform:none}

.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:14px}
th{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--ink-dim);text-align:left;padding:12px 16px 12px 0;border-bottom:1px solid var(--line-strong);font-weight:400}
td{padding:13px 16px 13px 0;border-bottom:1px solid var(--line)}
td.num{font-variant-numeric:tabular-nums}
tr.total td{font-weight:600;border-bottom:0}

/* ── панели ── */
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:24px;margin-bottom:24px}
.panel{background:var(--white);border:1px solid var(--line);padding:28px 30px}
.panel--wide{margin-bottom:24px}
.days{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap}
.day{font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  padding:8px 12px;border:1px solid var(--line-strong);cursor:pointer;background:var(--white);color:var(--ink-dim)}
.day.is-on{border-color:var(--coral);color:var(--coral);background:var(--coral-wash)}

/* ── журнал ── */
.log-row{display:grid;grid-template-columns:150px 110px 1fr;gap:18px;padding:13px 0;
  border-bottom:1px solid var(--line);font-size:14px;align-items:baseline}
.log-row .mono{letter-spacing:.12em}
.log-row--error{color:var(--coral-dark)}
.log-row--warn{color:var(--warn)}

/* ── служебное ── */
.empty{padding:70px 0;text-align:center;color:var(--ink-dim);font-weight:300;font-size:18px}
.toast{position:fixed;right:28px;bottom:28px;background:var(--ink);color:var(--white);
  padding:15px 22px;font-size:14px;z-index:50;max-width:380px}
.toast--bad{background:var(--coral-dark)}
.modal{border:0;padding:0;background:transparent;max-width:min(560px,94vw)}
.modal::backdrop{background:rgba(14,14,16,.42)}
.modal__inner{background:var(--white);border:1px solid var(--line-strong);padding:38px 40px;
  border-left:3px solid var(--coral)}
.modal__actions{display:flex;justify-content:flex-end;gap:12px;margin-top:10px}

@media (max-width:960px){
  .main{padding:36px 20px 70px}
  .top,.tabs{padding-left:20px;padding-right:20px}
  .tabs{top:61px}
  .h2{font-size:32px}
  .card{grid-template-columns:1fr;gap:24px}
  .card__aside{border-left:0;border-top:1px solid var(--line);padding-left:0;padding-top:20px}
  .stages{columns:1}
  .row2{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
