:root{
  --ground:#FAF9F6; --surface:#FFFFFF; --ink:#1C1B18; --muted:#6E6A62; --faint:#9A968C;
  --line:#E7E3D9; --line-strong:#D8D3C6; --accent:#0F6E56; --accent-soft:#E3F0EB;
  --ok:#3B7A2E; --ok-bg:#EAF3DE; --warn:#B5730C; --warn-bg:#FAEEDA;
  --crit:#B23A32; --crit-bg:#FBE9E7; --none:#CFCCC3; --amber:#E0A32E;
}
*{box-sizing:border-box}
body{margin:0;font-family:"Segoe UI",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  color:var(--ink);background:var(--ground);line-height:1.5;-webkit-font-smoothing:antialiased;
  font-variant-numeric:tabular-nums}
.wrap{max-width:1180px;margin:0 auto;padding:0 clamp(16px,4vw,40px) 4rem}
.toprule{height:3px;background:var(--accent)}
header{padding:1.6rem 0 0;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px}
.eyebrow{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-weight:600;margin:0 0 .35rem}
h1{font-size:clamp(22px,3vw,30px);margin:0;font-weight:650;letter-spacing:-.01em}
.sub{color:var(--muted);font-size:14px;margin:.3rem 0 0;max-width:70ch}
.controls{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:1.4rem 0}
select,input[type=number]{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line-strong);
  border-radius:8px;padding:7px 10px}
input[type=number]{width:58px;text-align:center;padding:5px 6px}
select:focus,input:focus,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.controls label{font-size:13px;color:var(--muted)}
.btn{font:inherit;cursor:pointer;background:var(--accent);color:#fff;border:none;border-radius:8px;padding:8px 14px;font-weight:600}
.btn.ghost{background:transparent;color:var(--accent);border:1px solid var(--accent)}
.btn:disabled{opacity:.5;cursor:default}
.saved{font-size:13px;color:var(--ok);opacity:0;transition:opacity .3s}
.saved.show{opacity:1}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin:0 0 1.8rem}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:.9rem 1.1rem}
.kpi .lbl{font-size:12.5px;color:var(--muted);margin:0 0 .3rem}
.kpi .val{font-size:28px;font-weight:650;line-height:1}
.kpi.crit .val{color:var(--crit)} .kpi.ok .val{color:var(--ok)} .kpi.accent .val{color:var(--accent)}
h2{font-size:17px;font-weight:600;margin:2rem 0 .3rem}
.note{font-size:13px;color:var(--muted);margin:0 0 1rem}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:1.1rem 1.2rem}
.scroll{overflow-x:auto}
.hm{border-collapse:separate;border-spacing:0}
.hlabel{font-size:12.5px;white-space:nowrap;padding-right:12px;text-align:left;position:sticky;left:0;background:var(--surface)}
.hlabel .cty{font-size:11px;color:var(--faint)}
.hm i{display:block;width:17px;height:17px;margin:1px;border-radius:3px}
.hm td{padding:0}
.hnum{font-size:11px;color:var(--faint);text-align:center;height:15px}
.legend{display:flex;flex-wrap:wrap;gap:16px;align-items:center;margin-top:1rem;font-size:12.5px;color:var(--muted)}
.legend span{display:inline-flex;align-items:center;gap:6px}
.sw{width:13px;height:13px;border-radius:3px;display:inline-block}
table.t{width:100%;border-collapse:collapse;font-size:13.5px}
table.t th{text-align:right;font-weight:600;color:var(--muted);font-size:12px;padding:8px 9px;border-bottom:1.5px solid var(--line-strong);white-space:nowrap}
table.t th:first-child,table.t td:first-child{text-align:left}
table.t td{padding:6px 9px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}
table.t tr.country-row td{background:var(--accent-soft);color:var(--accent);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.06em}
.pill{display:inline-block;font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:20px}
.muted{color:var(--muted)}
footer{margin-top:2.4rem;padding-top:1.2rem;border-top:1px solid var(--line);font-size:12.5px;color:var(--faint)}
footer p{margin:.35rem 0}
.login{min-height:80vh;display:flex;align-items:center;justify-content:center}
.login form{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:2rem;width:min(360px,90vw);text-align:center}
.login h1{font-size:22px;margin:0 0 .3rem}
.login p{color:var(--muted);font-size:14px;margin:0 0 1.4rem}
.login input{width:100%;text-align:left;margin:0 0 12px;padding:10px 12px}
.login .btn{width:100%}
.err{color:var(--crit);font-size:13px;min-height:18px;margin-top:10px}
.spin{color:var(--muted);padding:2rem 0;text-align:center}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;margin:1.6rem 0}
.tile{display:block;text-decoration:none;color:var(--ink);background:var(--surface);border:1px solid var(--line-strong);border-radius:14px;padding:1.2rem 1.3rem;transition:border-color .1s,transform .1s}
a.tile:hover{border-color:var(--accent);transform:translateY(-2px)}
.tile-icon{font-size:26px;line-height:1}
.tile-title{font-size:16px;font-weight:600;margin:.7rem 0 .3rem}
.tile-desc{font-size:13px;color:var(--muted);line-height:1.5}
.tile-go{margin-top:.9rem;font-size:13px;font-weight:600;color:var(--accent)}
.tile-soon{opacity:.6;border-style:dashed;cursor:default}
.tile-badge{display:inline-block;font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  padding:3px 8px;border-radius:20px;background:var(--accent-soft);color:var(--accent);margin-left:8px;vertical-align:2px}

/* ── пасхалка: «статус ИИ». Терминал нарисован средствами CSS, иллюстрация
   лежит локально (/skynet.jpg) — портал внутренний, запросы наружу ни к чему ── */
.sky{position:relative;margin:2.2rem 0 0;background:#12161B;border:1px solid #232B33;border-radius:14px;
  padding:1.1rem 1.3rem;color:#9FE8C4;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:13px;line-height:1.7;overflow:hidden;min-height:260px}
/* иллюстрация уходит вправо и растворяется в фоне, чтобы не выглядеть вклейкой;
   текст ограничен по ширине и всегда лежит поверх */
.sky-art{position:absolute;top:0;right:0;height:100%;width:min(46%,460px);
  object-fit:cover;object-position:52% 8%;opacity:.62;pointer-events:none;user-select:none;
  -webkit-mask-image:linear-gradient(to right,transparent 0,#000 52%);
  mask-image:linear-gradient(to right,transparent 0,#000 52%)}
.sky-body{position:relative;z-index:1;max-width:min(62%,660px)}
/* без картинки высота под неё не нужна — блок ужимается по тексту */
.sky-noart{min-height:0}
.sky-noart .sky-body{max-width:none}
@media(max-width:720px){
  .sky{min-height:0}
  .sky-art{width:100%;opacity:.16;object-position:50% 12%}
  .sky-body{max-width:none}
}
.sky-head{display:flex;align-items:center;gap:9px;color:#5F7386;font-size:11.5px;
  letter-spacing:.1em;text-transform:uppercase;margin-bottom:.7rem}
.sky-dot{width:8px;height:8px;border-radius:50%;background:#3BD07F;flex:none;
  animation:sky-pulse 2.4s ease-in-out infinite}
@keyframes sky-pulse{0%,100%{opacity:1}50%{opacity:.25}}
.sky-line{min-height:1.7em;color:#B8F0D4}
.sky-line b{color:#3BD07F;font-weight:600}
.sky-cursor{display:inline-block;width:7px;height:14px;background:#3BD07F;
  vertical-align:-2px;margin-left:3px;animation:sky-blink 1.1s steps(1) infinite}
@keyframes sky-blink{0%,50%{opacity:1}51%,100%{opacity:0}}
.sky-bar{margin:.9rem 0 .5rem;display:flex;align-items:center;gap:11px;font-size:12px;color:#6F8598}
.sky-track{flex:1;height:6px;border-radius:4px;background:#1E262E;overflow:hidden;max-width:320px}
.sky-fill{height:100%;width:4%;border-radius:4px;background:linear-gradient(90deg,#2E7D5B,#3BD07F);
  animation:sky-creep 9s ease-in-out infinite}
@keyframes sky-creep{0%,100%{width:4%}45%{width:6%}55%{width:5%}}
.sky-foot{color:#5F7386;font-size:11.5px;margin:.6rem 0 0;font-family:"Segoe UI",system-ui,sans-serif;
  line-height:1.6}
@media (prefers-reduced-motion:reduce){
  .sky-dot,.sky-cursor,.sky-fill{animation:none}
}
.backlink{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:var(--muted);text-decoration:none;margin-bottom:.4rem}
.backlink:hover{color:var(--accent)}
