/* ==========================================================================
   СараAI — Контроль вредителей · style.css
   Единые стили для index.php и istoriya.php
   ========================================================================== */

:root{
  --brand:#2f86c9;--brand-2:#256ba3;--green:#1e9e5a;--red:#e0483b;
  --font-display:"Unbounded","Segoe UI",system-ui,sans-serif;
  --font-body:"Onest","Segoe UI",system-ui,sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,"Cascadia Code",monospace;
}
html[data-theme="light"]{
  --bg:#eef2f7;--bg2:#e4eaf1;--panel:#fff;--panel-2:#f6f9fc;--ink:#16212e;
  --muted:#66748a;--line:#e2e8f1;--grid:rgba(47,134,201,.07);
  --shadow:0 6px 20px rgba(22,33,46,.06);
  --hero-calm:linear-gradient(135deg,#1e9e5a,#127d45);
}
/* Тёмная тема: графитовый ФОН страницы, но плашки светлые и читаемые */
html[data-theme="dark"]{
  --bg:#121212;--bg2:#0d0d0d;
  --panel:#ffffff;--panel-2:#f4f7fb;
  --ink:#16212e;          /* тёмный текст — он лежит на светлых карточках */
  --muted:#66748a;--line:#e4e9f0;--grid:rgba(120,160,210,.05);
  --shadow:0 10px 30px rgba(0,0,0,.5);
  --brand:#2f86c9;--brand-2:#256ba3;--green:#1e9e5a;--red:#e0483b;
  --hero-calm:linear-gradient(135deg,#1e9e5a,#127d45);
}
/* Текст, который лежит прямо на графитовом фоне (вне карточек) — делаем светлым */
html[data-theme="dark"] .logo-name{color:#eef2f7;}
html[data-theme="dark"] .logo-tag{color:#aeb8c6;border-left-color:#39414c;}
html[data-theme="dark"] #footer{color:#9aa3b0;}

*{box-sizing:border-box;}
body{
  margin:0;font-family:var(--font-body);color:var(--ink);
  background:radial-gradient(circle at 1px 1px,var(--grid) 1px,transparent 0) 0 0/22px 22px,
             linear-gradient(180deg,var(--bg),var(--bg2));
  padding:18px;transition:background .3s,color .3s;min-height:100vh;
}
.wrap{max-width:1120px;margin:0 auto;}

/* ---- Шапка ---- */
.topbar{display:flex;align-items:center;gap:14px;margin-bottom:14px;flex-wrap:wrap;}
.logo{display:flex;align-items:center;gap:12px;}
.logo-icon{width:44px;height:44px;background:linear-gradient(135deg,var(--brand),var(--brand-2));
  border-radius:13px;display:grid;place-items:center;color:#fff;font-weight:800;font-size:1.25em;
  font-family:var(--font-display);box-shadow:0 4px 14px rgba(47,134,201,.35);}
.logo-name{font-family:var(--font-display);font-weight:800;font-size:1.5em;letter-spacing:-.02em;}
.logo-tag{color:var(--muted);font-weight:600;font-size:.82em;text-transform:uppercase;
  letter-spacing:.14em;border-left:2px solid var(--line);padding-left:12px;}
.spacer{flex:1;}
.badge{font-family:var(--font-mono);font-size:.7em;padding:5px 10px;border-radius:20px;
  background:var(--panel);border:1px solid var(--line);color:var(--muted);}
.badge.live{color:var(--green);}
.badge.live .pip{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--green);
  margin-right:6px;vertical-align:middle;animation:blink 1.6s infinite;}
.badge.off{color:var(--muted);}
@keyframes blink{0%,100%{opacity:1;}50%{opacity:.3;}}
.theme-btn{width:42px;height:42px;border-radius:12px;border:1px solid var(--line);
  background:var(--panel);color:var(--ink);cursor:pointer;font-size:1.15em;display:grid;
  place-items:center;box-shadow:var(--shadow);transition:transform .2s;}
.theme-btn:hover{transform:translateY(-2px);}

/* ---- Карточки ---- */
.card{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:18px;
  box-shadow:var(--shadow);}
.eyebrow{font-family:var(--font-mono);font-size:.68em;text-transform:uppercase;
  letter-spacing:.16em;color:var(--muted);}
h3{margin:2px 0 12px;font-family:var(--font-display);font-weight:600;font-size:1em;letter-spacing:-.01em;}
h2{font-family:var(--font-display);font-weight:600;letter-spacing:-.01em;margin:0 0 12px;}

/* ---- 2×2 герой ---- */
.hero{display:grid;gap:16px;margin-bottom:22px;}
@media(min-width:820px){
  .hero{grid-template-columns:1fr 1fr;}
  .hero>.card{height:250px;}
}
/* На узких экранах блок «Вредители не зафиксированы» держим той же высоты,
   что и карточка «Контейнер» */
@media(max-width:819px){
  #signal,.container-card{height:210px;}
}
.hero>.card{display:flex;flex-direction:column;overflow:hidden;animation:fadeUp .5s both;}
.hero>*:nth-child(2){animation-delay:.06s}
.hero>*:nth-child(3){animation-delay:.12s}
.hero>*:nth-child(4){animation-delay:.18s}
@keyframes fadeUp{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:none;}}
.fill{flex:1;min-height:0;}

/* ---- Сигнал ---- */
#signal{color:#fff;border:none;text-align:center;justify-content:center;
  transition:background .6s ease;background:var(--hero-calm);}
#signal .icon{font-size:2.2em;line-height:1;}
#signal .headline{font-family:var(--font-display);font-weight:800;font-size:1.4em;
  letter-spacing:-.02em;margin:6px 0 8px;}
#signal .line{font-size:.94em;margin:3px 0;opacity:.97;}
#signal .line b{font-family:var(--font-mono);}
#signal .fade{font-family:var(--font-mono);font-size:.76em;opacity:.8;margin-top:8px;}
/* #signal.pulse — специфичность выше, чем у .hero>.card{animation:fadeUp},
   иначе анимация «дыхания» не применяется */
#signal.pulse{animation:pulse 1.9s ease-in-out infinite;}
@keyframes pulse{0%,100%{transform:scale(1);}50%{transform:scale(1.045);}}

/* ---- Контейнер ---- */
.container-card{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;
  border:none;justify-content:center;position:relative;}
.container-card::after{content:"";position:absolute;right:-34px;top:-34px;width:150px;height:150px;
  border-radius:50%;background:rgba(255,255,255,.09);}
.container-card .lbl{font-family:var(--font-mono);opacity:.85;font-size:.78em;
  text-transform:uppercase;letter-spacing:.16em;}
.container-card .num{font-family:var(--font-mono);font-size:3em;font-weight:700;line-height:1;margin-top:6px;}
.container-card .st{margin-top:12px;font-size:.85em;opacity:.9;}

/* ---- Мини-техплан ---- */
.plan-mini{cursor:zoom-in;transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s;
  transform-origin:center;position:relative;}
.plan-mini:hover{transform:scale(1.5);z-index:40;box-shadow:0 22px 55px rgba(0,0,0,.28);}
.plan-mini .top{display:flex;justify-content:space-between;align-items:center;}
.plan-mini .svgbox{flex:1;min-height:0;display:flex;margin-top:6px;}
.plan-mini svg{width:100%;height:100%;}
.hint{font-family:var(--font-mono);font-size:.64em;color:var(--muted);}

/* ---- Динамика ---- */
.dyn-wrap{position:relative;margin-top:6px;}

/* ---- Низ ---- */
.stack>*{margin-bottom:16px;}
.grid2{display:grid;gap:16px;}
@media(min-width:780px){.grid2{grid-template-columns:1fr 1fr;}}
.future{border:1px dashed var(--line);background:var(--panel-2);color:var(--muted);
  text-align:center;padding:22px;}
.future .tag{display:inline-block;font-family:var(--font-mono);font-size:.7em;background:var(--panel);
  border:1px solid var(--line);border-radius:20px;padding:3px 10px;margin-top:8px;}

/* ---- Таблицы ---- */
table{border-collapse:collapse;width:100%;font-size:.9em;}
th,td{border-bottom:1px solid var(--line);padding:9px 8px;text-align:left;}
th{color:var(--muted);font-family:var(--font-mono);font-weight:500;font-size:.7em;
  text-transform:uppercase;letter-spacing:.1em;}
td.mono,.right{font-family:var(--font-mono);}
.right{text-align:right;}
tr:hover td{background:var(--panel-2);}
.link{color:var(--brand);text-decoration:none;font-weight:600;}
.link:hover{text-decoration:underline;}
.muted{color:var(--muted);}

/* ---- SVG-план ---- */
.wall{stroke:var(--ink);fill:none;}
.room-lbl{fill:var(--muted);font-family:var(--font-mono);font-size:12px;letter-spacing:.05em;}
.door{stroke:var(--panel);}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:.8em;color:var(--muted);}
.legend span{display:inline-flex;align-items:center;gap:6px;}
.dot{width:11px;height:11px;border-radius:50%;display:inline-block;}

/* ---- История (istoriya.php) ---- */
.filters{display:flex;gap:12px;flex-wrap:wrap;align-items:end;}
.filters label{font-size:.82em;color:var(--muted);display:flex;flex-direction:column;gap:5px;
  font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;}
.filters input,.filters select,.filters button{padding:9px 11px;border:1px solid var(--line);
  border-radius:10px;background:var(--panel-2);color:var(--ink);font-family:var(--font-body);}
.filters button{cursor:pointer;font-weight:600;}
.daychip{display:inline-block;font-family:var(--font-mono);background:rgba(47,134,201,.12);
  color:var(--brand);border-radius:20px;padding:2px 10px;font-size:.8em;font-weight:600;}
/* На мобильном — по 2 в ряд, на десктопе — все 4 в один ряд */
.stat{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;}
@media(min-width:720px){.stat{grid-template-columns:repeat(4,1fr);}}
.stat div{background:var(--panel-2);border:1px solid var(--line);border-radius:12px;padding:12px 16px;min-width:0;}
.stat b{font-family:var(--font-mono);font-size:clamp(1.05em,4.6vw,1.5em);display:block;line-height:1.1;overflow-wrap:anywhere;}
.stat span{font-size:.78em;color:var(--muted);}
.scroll{max-height:540px;overflow:auto;border-radius:12px;}
th.sticky{position:sticky;top:0;background:var(--panel);}

/* ---- Состояния загрузки / ошибки ---- */
.state{text-align:center;color:var(--muted);font-family:var(--font-mono);font-size:.85em;padding:6px 0;}
.state.err{color:var(--red);}

/* ---- «Тихий день» ---- */
td.quiet{text-align:center;color:var(--green);font-weight:600;padding:18px 8px;}

/* ---- Батарея контейнера ---- */
.batt{display:flex;align-items:center;gap:8px;margin-top:14px;}
.batt-cap{position:relative;flex:1;max-width:130px;height:9px;border-radius:6px;
  background:rgba(255,255,255,.28);overflow:hidden;}
.batt-fill{position:absolute;left:0;top:0;height:100%;width:0;background:#fff;border-radius:6px;
  transition:width .5s ease,background .3s;}
.batt-txt{font-family:var(--font-mono);font-size:.8em;opacity:.95;min-width:34px;}

/* ---- Мини-спарклайн силы в журнале ---- */
.force-cell{white-space:nowrap;}
.force-cell span{vertical-align:middle;}
.spark{display:inline-block;width:6px;height:16px;margin-right:7px;vertical-align:middle;
  background:var(--panel-2);border-radius:3px;position:relative;overflow:hidden;}
.spark-bar{position:absolute;left:0;bottom:0;width:100%;background:var(--brand);border-radius:3px;}
.spark-bar.strong{background:var(--red);}

/* ---- Вспышка сигнального блока при новом контакте ---- */
#signal.flash{animation:flashPulse .9s ease;}
@keyframes flashPulse{
  0%{box-shadow:0 0 0 0 rgba(224,72,59,.55);}
  35%{box-shadow:0 0 0 14px rgba(224,72,59,0);transform:scale(1.02);}
  100%{box-shadow:0 0 0 0 rgba(224,72,59,0);transform:scale(1);}
}

/* ---- Модальное окно техплана ---- */
.modal{position:fixed;inset:0;background:rgba(8,12,18,.62);backdrop-filter:blur(3px);
  display:none;align-items:center;justify-content:center;padding:18px;z-index:100;}
.modal.open{display:flex;animation:modalIn .2s ease;}
@keyframes modalIn{from{opacity:0;}to{opacity:1;}}
.modal-inner{background:var(--panel);border:1px solid var(--line);border-radius:20px;
  box-shadow:0 30px 80px rgba(0,0,0,.45);padding:20px;width:min(760px,96vw);position:relative;
  animation:modalUp .25s cubic-bezier(.2,.7,.2,1);}
@keyframes modalUp{from{transform:translateY(14px);opacity:0;}to{transform:none;opacity:1;}}
.modal-close{position:absolute;right:14px;top:12px;width:34px;height:34px;border-radius:10px;
  border:1px solid var(--line);background:var(--panel-2);color:var(--ink);font-size:1.3em;
  line-height:1;cursor:pointer;}
.modal-title{font-family:var(--font-display);font-weight:600;font-size:1.05em;margin:0 40px 12px 0;}
.modal-inner svg{width:100%;height:auto;max-height:70vh;display:block;}
.modal-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:.8em;color:var(--muted);margin-top:12px;
  justify-content:center;}
.modal-legend span{display:inline-flex;align-items:center;gap:6px;}

/* ---- История: отступы между карточками и под ссылкой ---- */
.wrap>.card{margin:0 0 16px;}
.backlink{display:inline-block;margin:2px 0 14px;}

/* ==========================================================================
   Мобильная адаптация
   ========================================================================== */
@media(max-width:560px){
  body{padding:12px;}

  /* Шапка: строка 1 — логотип слева + переключатель темы справа (параллельно),
     строка 2 — бейдж «данные принимаются» по левому краю */
  .topbar{display:grid;grid-template-columns:1fr auto;
    grid-template-areas:"logo theme" "badge badge";align-items:center;gap:8px 10px;}
  .logo{grid-area:logo;}
  .spacer{display:none;}
  .theme-btn{grid-area:theme;width:34px;height:34px;font-size:.95em;}
  #liveBadge{grid-area:badge;justify-self:start;}   /* слева, естественная ширина */
  .logo-name{font-size:1.25em;}
  .logo-tag{font-size:.72em;padding-left:9px;}

  /* Отступ под ссылкой «на главную» на странице История */
  .backlink{margin-bottom:18px;}

  /* Журнал компактнее */
  th,td{padding:8px 6px;}
}
