:root{
  --bg:#ececec;
  --panel:#e2e2e2;
  --panel-head:#cfcfcf;
  --card:#f4f4f4;
  --border:#b9b9b9;
  --border-dark:#9a9a9a;
  --text:#2a2a2a;
  --muted:#6b6b6b;
  --accent:#2e7d32;
  --accent-dark:#245c28;
  --danger:#b3261e;
  --field:#fbfbfb;
  --link:#1a5fb4;          /* ссылки — синие (действие остаётся за кнопками) */
  --btn-face:#d4d4d4;      /* лицо кнопки */
  --btn-hi:#fbfbfb;        /* освещённая грань (верх/лево) — почти белая, почётче */
  --btn-lo:#8f8f8f;        /* затемнённая грань (низ/право) */
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%}
body{
  margin:0;
  font-family:"Segoe UI",Tahoma,Arial,sans-serif;
  color:var(--text);
  background:var(--bg);
  display:flex;flex-direction:column;min-height:100vh;
}

/* Шапка */
.topbar{
  display:flex;align-items:center;justify-content:space-between;
  background:linear-gradient(#f7f7f7,#e6e6e6);
  border-bottom:1px solid var(--border-dark);
  padding:8px 16px;font-size:14px;color:#333;
}
.topbar .brand{display:flex;align-items:center;gap:9px;font-weight:600}
.topbar .logo{
  width:20px;height:20px;border-radius:4px;
  background:linear-gradient(135deg,#3a7d34,#7a4a24);
  display:inline-block;flex:none;
}
.topbar .date{color:var(--muted);font-size:13px}

/* Основная область */
.main{flex:1;display:flex;align-items:center;justify-content:center;padding:28px 16px}

/* Панель-карточка входа */
.login-card{
  width:100%;max-width:430px;background:var(--panel);
  border:1px solid var(--border-dark);border-radius:8px;
  box-shadow:0 2px 10px rgba(0,0,0,.10);overflow:hidden;
}
.login-card .head{
  background:var(--panel-head);border-bottom:1px solid var(--border-dark);
  padding:11px 18px;font-weight:600;font-size:15px;color:#333;text-align:center;
}
.login-card .body{padding:30px 30px 26px}

.form-row{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.form-row label{width:78px;text-align:right;font-size:15px;color:#333}
.form-row input{
  flex:1;padding:8px 10px;font-size:15px;
  background:var(--field);border:1px solid var(--border-dark);border-radius:4px;
  box-shadow:inset 0 1px 2px rgba(0,0,0,.06);
}
.form-row input:focus{outline:none;border-color:var(--accent);
  box-shadow:0 0 0 2px rgba(46,125,50,.18)}
.hint{font-size:12px;color:var(--muted);margin:2px 0 18px 90px}

.btn{
  display:inline-block;border:none;border-radius:5px;cursor:pointer;
  font-size:15px;padding:10px 20px;font-weight:600;
}
.btn-primary{background:var(--accent);color:#fff;width:100%}
.btn-primary:hover{background:var(--accent-dark)}
.btn-ghost{background:#dcdcdc;color:#333;border:1px solid var(--border-dark)}
.btn-ghost:hover{background:#d0d0d0}

.error{
  background:#fdecea;border:1px solid #f3b7b2;color:var(--danger);
  padding:9px 12px;border-radius:5px;font-size:13.5px;margin-bottom:16px;
}

/* Подвал с политикой конфиденциальности — на каждой странице */
.footer{
  border-top:1px solid var(--border-dark);
  background:#e6e6e6;color:var(--muted);
  font-size:12.5px;text-align:center;padding:10px 16px;line-height:1.5;
}
.footer a{color:var(--link);text-decoration:underline}

/* Cookie-баннер */
.cookie-mask{
  position:fixed;inset:0;background:rgba(0,0,0,.35);
  display:flex;align-items:flex-end;justify-content:center;z-index:50;
}
.cookie-box{
  background:#fff;border:1px solid var(--border-dark);border-radius:10px;
  max-width:560px;margin:0 16px 28px;padding:20px 22px;
  box-shadow:0 8px 30px rgba(0,0,0,.25);
}
.cookie-box p{margin:0 0 16px;font-size:14px;line-height:1.55;color:#333}
.cookie-box .buttons{display:flex;gap:10px;justify-content:flex-end}

/* Контентные страницы (политика / выход) */
.content{max-width:760px;margin:0 auto;padding:28px 20px;line-height:1.6}
.content h1{font-size:22px;margin:0 0 16px}
.content h2{font-size:17px;margin:22px 0 8px}
.content p{margin:0 0 12px}

/* ==================== ПАНЕЛЬ СОБСТВЕННИКА ==================== */
body:has(.panel-wrap) .main{align-items:stretch;padding:0}
.panel-wrap{width:100%;max-width:1180px;margin:0 auto;padding:14px 18px 26px}

/* Заголовок панели */
.panel-title{display:flex;align-items:center;gap:14px;padding:6px 4px 14px;flex-wrap:wrap}
.panel-title .pt-name{font-size:19px;font-weight:700;color:#2b2b2b}
.panel-title .pt-box{font-size:19px;font-weight:700;color:#2b2b2b;margin-left:6px}
.box-input{
  width:120px;padding:7px 10px;font-size:16px;font-weight:600;text-align:center;
  background:#fff;border:1px solid var(--border-dark);border-radius:5px;
}
.box-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px rgba(46,125,50,.18)}
.mine-link{font-size:13px;color:var(--link);text-decoration:underline}
.panel-title .logout-link{margin-left:auto;font-size:13px;color:var(--link);text-decoration:underline}

/* Общая рамка и зоны (зонирование: Электро / Взносы на одном фоне) */
.frame{
  border:1px solid var(--border-dark);border-radius:8px;background:#e4e4e4;
  padding:14px;display:flex;flex-direction:column;gap:14px;
}
.zone{background:#dbdbdb;border:1px solid var(--border);border-radius:6px;padding:10px 12px}
.section-band{
  background:var(--panel-head);border:1px solid var(--border);
  border-radius:4px;text-align:center;font-style:italic;color:#555;
  padding:6px;font-size:14px;margin-bottom:12px;
}

/* Счётчики */
.counters{display:flex;flex-direction:column;gap:6px}
.counter{background:#e9e9e9;border:1px solid var(--border);border-radius:6px;padding:10px 14px 12px}
.counter-head{font-weight:700;font-size:14px;color:#333;margin-bottom:6px}
.counter-head .ch-ico{color:#7a7a7a;margin-right:4px}
.counter-row{display:flex;align-items:flex-end;gap:22px;flex-wrap:wrap}
.fld{display:flex;flex-direction:column;gap:4px}
.fld label{font-size:12.5px;color:#444}
.fld .old{color:#666}
.fld .old b{color:#333}

/* Окна ввода — БЕЗ объёма (плоские) */
.inp{
  width:150px;padding:7px 9px;font-size:14px;
  background:var(--field);border:1px solid var(--border-dark);border-radius:4px;box-shadow:none;
}
.inp:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px rgba(46,125,50,.16)}
.inp-locked{background:#e5e5e5;color:#555}
.inp-locked[readonly]{cursor:default}
.inp.reading-low{color:#d23c30;border-color:#e0a49e}

/* Кнопки QR и История — ОДИНАКОВОГО размера, с объёмом.
   Источник света ВСЕГДА сверху-слева: освещённые грани (верх/лево) — светлые и чётче
   (2px), затемнённые (низ/право) — тёмные. Свет не «переезжает» ни в каком состоянии. */
.btn-qr,.btn-hist{
  width:118px;height:46px;padding:0 8px;border-radius:5px;cursor:pointer;
  color:#3a3a3a;background:var(--btn-face);text-align:center;line-height:1.12;
  display:inline-flex;align-items:center;justify-content:center;
  border-top:2px solid var(--btn-hi);border-left:2px solid var(--btn-hi);
  border-bottom:2px solid var(--btn-lo);border-right:2px solid var(--btn-lo);
}
.btn-qr{font-style:italic;font-weight:600;font-size:15px}
.btn-hist{font-style:italic;font-size:12.5px}
.btn-qr:hover:not(:disabled),.btn-hist:hover{background:#dcdcdc}
/* Нажатие / включённое состояние («Свернуть историю»): свет ОСТАЁТСЯ сверху-слева,
   грани НЕ инвертируются. «Утопленность» показываем только фоном и лёгким сдвигом. */
.btn-qr:active:not(:disabled),.btn-hist:active,.btn-hist.hist-open{
  background:#c6c6c6;color:#3a3a3a;transform:translateY(1px);
}
.btn-qr:disabled{
  background:#dcdcdc;color:#aeaeae;cursor:default;
  border:2px solid #cfcfcf;   /* неактивна — плоская, неконтрастная */
}

.warn{color:#b3261e;font-size:12.5px;margin-top:8px;background:#fdecea;
  border:1px solid #f3b7b2;border-radius:4px;padding:6px 9px}

/* История платежей (разворот) */
.history{margin-top:10px;background:#d3d3d3;border-radius:6px;padding:12px 14px}
.hist-title{font-style:italic;color:#555;font-size:12.5px;margin-bottom:8px}
.hist-load{color:#666;font-size:13px;padding:4px}
.hist-table{width:100%;border-collapse:collapse;font-size:13px}
.hist-table th{color:#333;font-weight:700;text-align:center;padding:5px 8px}
.hist-table td{color:#5a2a6b;text-align:center;padding:5px 8px}
.hist-table tbody tr:nth-child(odd){background:rgba(255,255,255,.35)}

/* Взносы */
.vz-row{display:flex;align-items:flex-end;gap:22px;flex-wrap:wrap}
.empty-note{color:#7a7a7a;font-size:13px;padding:8px 2px}
.empty-note.inline{padding:0}

/* Нижнее поле рамки: пояснение слева + скачивание справа */
.frame-footer{
  display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  border-top:1px dashed var(--border-dark);padding-top:12px;
}
.panel-hint{color:var(--muted);font-size:12.5px;line-height:1.5;margin:0;flex:1 1 320px}

/* Скачать полную таблицу — вдвое компактнее, с объёмом */
.btn-download{
  display:inline-flex;align-items:center;gap:5px;flex:0 0 auto;
  padding:4px 10px;font-size:11px;font-weight:600;color:#fff;border-radius:11px;
  background:linear-gradient(#4caf50,#3a9640);text-decoration:none;
  border-top:1px solid #82d086;border-left:1px solid #82d086;
  border-bottom:1px solid #2f7d34;border-right:1px solid #2f7d34;
}
.btn-download:hover{background:linear-gradient(#57ba5b,#3f9f45)}
.btn-download:active{background:#348a39;
  border-top:1px solid #2f7d34;border-left:1px solid #2f7d34;
  border-bottom:1px solid #82d086;border-right:1px solid #82d086}
.btn-download .dl-ico{font-size:12px}
/* Пока НЕ сформирован ни один QR — кнопка максимально неконтрастна (как QR без ввода),
   и неактивна (скачивать нечего). Текст: «Скачать полную таблицу». */
.btn-download.off{
  background:#dcdcdc;color:#aeaeae;cursor:default;pointer-events:none;
  border:1px solid #cfcfcf;
}

/* Модальное окно QR (поверх затенённой страницы) */
.qr-mask{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:60;
  display:flex;align-items:center;justify-content:center}
.qr-box{background:#fff;border-radius:10px;padding:16px 18px 20px;max-width:340px;
  box-shadow:0 10px 40px rgba(0,0,0,.3);text-align:center}
.qr-head{display:flex;align-items:center;justify-content:space-between;
  font-weight:600;font-size:14px;color:#333;margin-bottom:12px}
.qr-close{border:none;background:#eee;border-radius:5px;cursor:pointer;
  width:26px;height:26px;font-size:14px;color:#555}
.qr-close:hover{background:#e0e0e0}
.qr-note{color:var(--muted);font-size:12px;margin:12px 2px 0;line-height:1.45}
.qr-note-sm{font-size:11px;margin-top:6px}
.qr-save{display:inline-block;margin-top:14px;color:var(--link);
  font-size:13px;text-decoration:underline}

/* Адаптив */
@media (max-width:720px){
  .counter-row,.vz-row{gap:12px}
  .inp{width:100%}
  .fld{flex:1 1 140px}
  .btn-qr,.btn-hist{flex:0 0 auto}
}

/* ---------- ИНФОРМАЦИЯ СОБСТВЕННИКУ (столбец U таблицы взносов) ----------
   Отдельная плашка НАД зонами: своя рамка и фон, чтобы не слиться с зоной
   электричества и не сломать зонирование панели (замечание владельца 21.09.2026).
   Цвета текста и крестика одинаковые, задаются в panel_config.json.          */
.info-box{
  position:relative;
  display:flex; align-items:flex-start; gap:12px;
  background:var(--info-bg,#F6ECEC);
  border:1px solid var(--info-fg,#BE3636);
  border-left:4px solid var(--info-fg,#BE3636);
  border-radius:6px;
  padding:12px 52px 12px 14px;
  margin-bottom:10px;
}
.info-text{
  color:var(--info-fg,#BE3636);
  font-size:15px; line-height:1.45; white-space:pre-line;
}
.info-close{
  position:absolute; top:10px; right:10px;
  width:28px; height:28px; padding:0;
  background:transparent; cursor:pointer;
  color:var(--info-fg,#BE3636);
  border:2px solid var(--info-fg,#BE3636); border-radius:3px;
  font-size:16px; line-height:1; font-weight:700;
}
.info-close:hover{background:rgba(0,0,0,.05)}

/* История взносов ложится под строкой зоны, как история счётчика */
#vzHistory{margin-top:10px}
