/* ============================================================
   Стойка долголетия — фронт в стиле ФНКЦ МРиК ФМБА
   Горизонтальный экран 1280×1024. Дизайн-система партнёра.
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@300;400;500;600;700;800&display=swap');

:root,:root[data-theme="light"]{
  --gray:#f1f3f8;--rgb-gray:241,243,248;--d-gray:#4a5663;--rgb-d-gray:74,86,99;--grey-500:#4a5663;
  --white:#fff;--rgb-white:255,255,255;--dark:#212631;--rgb-dark:33,38,49;
  --orange:#ff6633;--rgb-orange:255,102,51;--yellow:#edac20;--rgb-yellow:237,172,32;
  --red:#ae3200;--rgb-red:174,50,0;--cyan:#2bb3b3;--rgb-cyan:43,179,179;
  --danger:#ae3200;--rgb-danger:174,50,0;
  --d-cyan:#208787;--green:#006a6a;--rgb-green:0,106,106;
  --accent:#2bb3b3;--rgb-accent:43,179,179;--d-accent:#208787;
  --text-color:var(--dark);--bg-color:var(--white);
  --font:'Manrope',sans-serif;--font-medium:500;--font-semibold:600;--font-bold:700;--font-extra-bold:800;
  --shadow:0 0 10px 0 rgba(var(--rgb-dark),.08);--shadow-big:0 0 30px 0 rgba(var(--rgb-dark),.12);
  --shadow-right:6px 0 16px -6px rgba(var(--rgb-dark),.1);
  --accent-big-shadow:0 0 24px 0 rgba(var(--rgb-accent),.35);--transition:all .25s linear 0s;
  --kiosk-scale:1;
  /* Поле вокруг рабочей области 1280×1024. На экране ровно этого размера его не
     видно вовсе. На более крупном (например 1600×1200 у новой партии стоек)
     остаётся 160 px по бокам и 88 px сверху и снизу — раньше там был почти
     чёрный цвет, и это читалось как чёрные полосы вокруг картинки. Теперь поле
     совпадает с фоном приложения и не бросается в глаза. */
  --frame-bg:var(--bg-color);
}
:root[data-theme="dark"]{
  --text-color:#e6eaf1;--bg-color:#1d222b;--gray:#161b22;--rgb-gray:22,27,34;--white:#232a35;--rgb-white:35,42,53;
  --d-gray:#9aa7b8;--rgb-d-gray:154,167,184;--grey-500:#9aa7b8;
  --shadow:0 0 10px 0 rgba(0,0,0,.3);--shadow-big:0 0 30px 0 rgba(0,0,0,.4);--shadow-right:6px 0 16px -6px rgba(0,0,0,.4);
  --frame-bg:var(--bg-color);
}

*,*::before,*::after{box-sizing:border-box}
*:focus{outline:none}
html,body{margin:0;padding:0;width:100%;height:100%;overflow:hidden;font-family:var(--font);font-weight:400;font-size:16px;line-height:1.5;color:var(--text-color);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
body{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--frame-bg)}
h1{font-size:3rem;margin:0 0 1rem;font-weight:var(--font-extra-bold);line-height:1.1}
h2{font-size:2rem;margin:0 0 1rem;font-weight:var(--font-extra-bold)}
p{margin:0 0 1rem}
img,svg{max-width:100%;vertical-align:middle}
/* 3.11.28: киоск с настоящим тач-экраном (стойка 17). Двойной тап не должен
   зумить страницу (manipulation оставляет свайп-прокрутку, pinch прикрыт
   флагом Chrome); долгое касание не должно синеть выделением — кроме полей
   ввода, там выделение штатное. */
html,body{touch-action:manipulation}
body{-webkit-user-select:none;user-select:none}
input,textarea{-webkit-user-select:text;user-select:text}

/* нативный скроллбар скрыт везде: на тач-стойке прокрутка свайпом + кнопка-стрелка.
   Полоса ненадёжна между браузерами и съедает место. */
::-webkit-scrollbar{width:0;height:0;display:none}
*{scrollbar-width:none;-ms-overflow-style:none}

/* ---- Каркас: sidebar + main ---- */
.layout{position:relative;width:1280px;height:1024px;flex:0 0 auto;display:flex;flex-direction:row;overflow:hidden;background:var(--bg-color);transform:scale(var(--kiosk-scale,1));transform-origin:center center}

.sidebar{width:140px;flex-shrink:0;padding:1.5rem 0;display:flex;flex-direction:column;align-items:center;background:var(--bg-color);box-shadow:var(--shadow-right);z-index:5;transition:var(--transition)}
.sidebar-top{display:flex;flex-direction:column;align-items:center;gap:30px;width:100%}
.sidebar-mid{display:flex;flex-direction:column;align-items:center;gap:30px;width:100%;margin-top:30px}
.sidebar-bottom{margin-top:auto;margin-bottom:40px;display:flex;flex-direction:column;align-items:center;width:100%}
.link{display:flex;flex-direction:column;align-items:center;gap:.3rem;text-decoration:none;text-transform:uppercase;letter-spacing:1px;font-size:9px;font-weight:var(--font-bold);color:var(--d-gray);background:none;border:none;width:100%;cursor:pointer;transition:var(--transition)}
.link.active,.link:hover{color:var(--accent)}
.link .ic{width:2.8rem;height:2.8rem;display:flex;align-items:center;justify-content:center;border-radius:50%;background:rgba(var(--rgb-d-gray),.1);margin:0 auto;transition:var(--transition)}
.link.active .ic,.link:hover .ic{background:rgba(var(--rgb-accent),.14)}
.link .ic svg{width:1.3rem;height:1.3rem;fill:currentColor}

/* тумблер тест-режима */
.test-toggle{display:flex;flex-direction:column;align-items:center;gap:.4rem;width:100%;cursor:pointer}
.test-cap{font-size:8px;text-transform:uppercase;font-weight:var(--font-bold);color:var(--d-gray);text-align:center;line-height:1.2}
.test-toggle.on .test-cap{color:var(--accent)}
.test-sw-wrap{width:100%;display:flex;justify-content:center}
.test-switch{width:38px;height:21px;border-radius:11px;background:rgba(var(--rgb-d-gray),.4);position:relative;transition:var(--transition)}
.test-toggle.on .test-switch{background:var(--accent)}
.test-knob{position:absolute;top:3px;left:3px;width:15px;height:15px;border-radius:50%;background:#fff;transition:var(--transition)}
.test-toggle.on .test-knob{left:20px}

/* часы + логотипы внизу плашки */
.side-clock{font-size:1.6rem;font-weight:var(--font-extra-bold);color:var(--accent);line-height:1;text-align:center}
.side-date{font-size:.7rem;color:var(--d-gray);text-align:center;margin-top:.2rem}
.side-logos{display:flex;flex-direction:column;align-items:center;gap:36px;margin-top:0}
.side-clockbox{margin-top:80px}
.side-logos img{display:block}
.side-logos .lg-mrik{width:84px}
.side-logos .lg-corpmd{width:92px}

/* ---- Main / content ---- */
.main{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}
.content{flex:1;display:flex;flex-direction:column;min-height:0;padding:2.5rem 0 2.5rem 2.5rem;background:var(--gray);position:relative;overflow:hidden;transition:var(--transition)}
.content .light{position:absolute;top:-120px;right:-120px;width:400px;height:400px;border-radius:50%;background:radial-gradient(circle,rgba(var(--rgb-cyan),.16),transparent 70%);pointer-events:none;z-index:0}
.content-wrapper{position:relative;z-index:1;display:flex;flex-direction:row;gap:0;width:100%;flex:1;min-height:0}
.content-wrapper.single .col-main{padding-right:1.5rem}
/* Страница итога: даём отчёту чуть больше ширины (≈10px слева, ≈20px справа),
   не трогая остальные экраны. */
.content.report-page{padding-left:1.85rem}
.content.report-page .col-main{padding-right:.25rem}
.col-main{flex:1;display:flex;flex-direction:column;min-height:0;padding:.5rem 1.5rem 0 .5rem;overflow-y:auto;overflow-x:hidden;scroll-behavior:smooth;-webkit-overflow-scrolling:touch}
/* блок прокрутки: две кнопки (вверх/вниз) в правом нижнем углу у границы видео-панели */
.scroll-nav{position:absolute;bottom:24px;right:601px;
  display:flex;flex-direction:column;gap:14px;z-index:7;pointer-events:none}
.scroll-btn{width:64px;height:64px;border:none;border-radius:50%;background:var(--accent);color:#fff;
  box-shadow:var(--accent-big-shadow);cursor:pointer;display:flex;align-items:center;justify-content:center;
  opacity:0;visibility:hidden;transform:scale(.85);transition:opacity .2s,transform .2s,visibility .2s;pointer-events:auto}
.scroll-btn svg{width:34px;height:34px;fill:#fff}
.scroll-btn:active{background:var(--d-accent)}
/* показываем вверх — если не у верха; вниз — если не у низа */
.col-main.can-scroll:not(.at-top) ~ .scroll-nav .scroll-up,
.content-wrapper:has(.col-main.can-scroll:not(.at-top)) .scroll-up{opacity:1;visibility:visible;transform:scale(1)}
.content-wrapper:has(.col-main.can-scroll:not(.at-bottom)) .scroll-down{opacity:1;visibility:visible;transform:scale(1)}
.col-main.center{justify-content:center}

/* плашка «Цифровой врач» */
.lead{align-self:flex-start;text-transform:uppercase;letter-spacing:2px;font-weight:var(--font-bold);font-size:11px;color:var(--accent);background:rgba(var(--rgb-accent),.12);border-radius:1rem;padding:.3rem 1rem;margin-bottom:.6rem}
.subtitle{color:var(--d-gray);font-size:1.15rem;margin-bottom:1.75rem;max-width:92%}

/* видео-диктор */
.video-pane{width:620px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;height:100%;padding-right:35px;padding-left:30px}
.video-wrapper{position:relative;width:100%;height:100%;border-radius:1.5rem;overflow:hidden;box-shadow:var(--accent-big-shadow);background:#000 url('/assets/img/doctor-placeholder.jpg') center/cover no-repeat}
.video-wrapper video,.video-wrapper img.doc-photo{width:100%;height:100%;object-fit:cover}
.video-badge{position:absolute;top:18px;left:18px;background:rgba(255,255,255,.85);color:var(--d-cyan);font-size:11px;font-weight:var(--font-bold);text-transform:uppercase;letter-spacing:1.5px;padding:.35rem .9rem;border-radius:1rem;z-index:2}

/* прогресс опросника */
.q-progress{display:flex;align-items:center;gap:1.5rem;margin-bottom:1.75rem;font-size:.9rem;color:var(--d-gray)}
.q-progress-track{flex:1;height:6px;background:rgba(var(--rgb-d-gray),.2);border-radius:3px;overflow:hidden}
.q-progress-fill{height:100%;background:var(--accent);transition:width .25s}
/* компактная шапка опросника: бейдж шага + название в одну зону */
.q-head{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1rem;margin-bottom:.75rem}
.q-head .lead{margin-bottom:0}
.q-title{font-size:1.5rem;font-weight:var(--font-bold);line-height:1.2;color:var(--text-color)}
.q-instructions{color:var(--d-gray);font-size:1rem;line-height:1.35;margin:0 0 1rem}
.question-text{font-size:1.7rem;font-weight:var(--font-semibold);margin-bottom:2rem;line-height:1.3}

/* опции (радио/чекбоксы) */
.question-item{display:none;flex-direction:column}
.question-item.active{display:flex}
/* временный показ всех вопросов для замера высоты — в потоке, при реальной ширине */
.question-item.measuring{display:flex!important;visibility:hidden}
/* несколько вопросов на одной странице: зазор и разделители, компактнее заголовок */
#questionnaireForm{gap:1.5rem}
#questionnaireForm:has(.question-item.active ~ .question-item.active) .question-item.active{
  padding-bottom:1.5rem;border-bottom:1px solid rgba(var(--rgb-d-gray),.15)}
#questionnaireForm:has(.question-item.active ~ .question-item.active) .question-item.active:last-of-type{
  border-bottom:none;padding-bottom:0}
#questionnaireForm:has(.question-item.active ~ .question-item.active) .question-text{
  font-size:1.3rem;margin-bottom:1rem}
.option-grid,.question-options{display:flex;flex-direction:column;gap:1rem}
.option-grid.cols-2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.option-grid.cols-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1rem}
.option-grid[style*="grid-template-columns"]{display:grid}
.option{display:flex;align-items:center;gap:1.1rem;padding:1.25rem 1.5rem;border-radius:1rem;background:rgba(var(--rgb-d-gray),.06);cursor:pointer;transition:var(--transition)}
.option:hover,.option:has(input:checked),.option.checked{background:rgba(var(--rgb-accent),.12)}
.option input[type="radio"],.option input[type="checkbox"]{-webkit-appearance:none;appearance:none;width:1.6rem;height:1.6rem;border:2px solid var(--d-gray);background:var(--bg-color);cursor:pointer;margin:0;flex-shrink:0;transition:var(--transition);position:relative}
.option input[type="radio"]{border-radius:50%}
.option input[type="checkbox"]{border-radius:.45rem}
.option input[type="radio"]:checked{border:6px solid var(--accent)}
.option input[type="checkbox"]:checked{border-color:var(--accent);background:var(--accent)}
.option input[type="checkbox"]:checked::after{content:"";position:absolute;left:5px;top:1px;width:6px;height:11px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.option label{font-size:1.15rem;flex:1;padding-left:.25rem;cursor:pointer;margin:0}

/* поля ввода */
.field{margin-bottom:1.25rem}
.field>label{display:block;font-size:.95rem;font-weight:var(--font-semibold);margin-bottom:.5rem}
.field .inp{display:flex;align-items:center;gap:1.25rem}
.field input.num{width:160px;padding:.9rem 1.2rem;border:2px solid rgba(var(--rgb-d-gray),.3);border-radius:1rem;font-size:1.4rem;font-family:var(--font);font-weight:var(--font-bold);color:var(--accent);text-align:center}
.field .u{font-size:1.1rem;color:var(--d-gray)}
.field .src{font-size:.8rem;color:var(--accent);background:rgba(var(--rgb-accent),.1);padding:.25rem .7rem;border-radius:1rem;font-weight:var(--font-bold)}
.form-group{margin-bottom:1.25rem}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:stretch}
/* Поля в одной строке выравниваем по нижнему краю: при разной высоте подписей
   (напр. «Приёмов пищи в день» в 2 строки и «Воды в день, л» в 1) сами input'ы
   остаются на одной линии. Метки при этом прижаты к верху ячейки. */
.form-row>.form-group{display:flex;flex-direction:column}
.form-row>.form-group>.form-input,
.form-row>.form-group>.form-select,
.form-row>.form-group>.form-textarea{margin-top:auto}
.form-label{display:block;margin-bottom:.4rem;font-size:.95rem;font-weight:var(--font-medium)}
.form-input,.form-select,.form-textarea{width:100%;padding:.9rem 1.2rem;border:2px solid rgba(var(--rgb-d-gray),.3);border-radius:1rem;font-size:1.05rem;font-family:var(--font);background:var(--bg-color);color:var(--text-color);transition:var(--transition)}
.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--accent)}
/* незаполненное обязательное поле (после «Дальше») — подсветка рамкой */
.form-group.field-missing .form-input,
.form-group.field-missing .form-select,
.form-group.field-missing .form-textarea{border-color:var(--danger,#c0392b);box-shadow:0 0 0 3px rgba(192,57,43,.14)}
.form-group.field-missing .option-grid{outline:2px solid var(--danger,#c0392b);outline-offset:4px;border-radius:12px}
.form-group.field-missing>.form-label{color:var(--danger,#c0392b)}

/* индикатор прибора */
.device-status{display:flex;align-items:center;gap:1rem;padding:1.25rem 1.5rem;border-radius:1rem;background:var(--bg-color);border:2px solid rgba(var(--rgb-d-gray),.2);margin-bottom:1.5rem;transition:var(--transition)}
.device-status.state-rdy,.device-status.state-rslt{border-color:var(--accent);background:rgba(var(--rgb-accent),.06)}
.device-status.state-meas{border-color:var(--yellow);background:rgba(var(--rgb-yellow),.1)}
.device-status.state-err{border-color:var(--red);background:rgba(var(--rgb-red),.08)}
.device-led{width:14px;height:14px;border-radius:50%;background:var(--d-gray);flex-shrink:0;animation:pulse 2s ease-in-out infinite}
.state-rdy .device-led,.state-rslt .device-led{background:var(--accent);animation:none}
.state-meas .device-led{background:var(--yellow)}.state-err .device-led{background:var(--red);animation:none}
@keyframes pulse{0%,100%{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.15)}}
.device-text{flex:1;font-size:1.05rem}

/* крупные показатели прибора */
.vitals{margin:1.5rem 0 2rem;font-size:0}
.vital{display:inline-block;vertical-align:top;text-align:center;margin-right:4rem}
.vital .v{display:block;font-size:4.5rem;font-weight:var(--font-extra-bold);color:var(--accent);line-height:1}
.vital .v.small{font-size:3rem}
.vital .u{display:block;font-size:1rem;color:var(--d-gray);margin-top:.4rem}
.result-card{background:var(--bg-color);border-radius:1rem;padding:1.1rem 1.4rem;box-shadow:var(--shadow);margin-bottom:.75rem}
.result-card .label{color:var(--d-gray);font-size:.75rem;text-transform:uppercase;letter-spacing:1px}
.result-card .value{font-size:1.8rem;color:var(--accent);font-weight:var(--font-bold);margin-top:.2rem}

/* итог-сводка */
.summary{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin:1rem 0 1.5rem}
.sum-item{display:flex;align-items:center;gap:.8rem;padding:1rem 1.25rem;border-radius:1rem;background:rgba(var(--rgb-accent),.08);font-size:1.05rem}
.sum-item .dot{width:1.4rem;height:1.4rem;border-radius:50%;background:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.sum-item .dot svg{width:.9rem;height:.9rem;fill:#fff}

/* биполярная шкала (САН) */
.scale-free{display:flex;align-items:center;gap:.8rem;padding:1rem 0}
.scale-free .q-free{width:9rem;max-width:60%;font-family:inherit;font-size:1.5rem;font-weight:var(--font-semibold);text-align:center;padding:.7rem .8rem;border:2px solid var(--d-gray);border-radius:.7rem;color:var(--text-color);background:#fff}
.scale-free .q-free:focus{outline:none;border-color:var(--accent)}
.scale-free .q-free-suffix{color:var(--text-color);font-size:1.1rem;font-weight:var(--font-semibold)}
.scale-bipolar{display:flex;flex-direction:column;gap:.85rem;padding:1rem 0}
.scale-bipolar .poles{display:flex;justify-content:space-between;gap:1rem}
.scale-bipolar .pole{color:var(--text-color);font-size:1.05rem;font-weight:var(--font-semibold);max-width:48%;line-height:1.25}
.scale-bipolar .pole.left{text-align:left}
.scale-bipolar .pole.right{text-align:right}
.scale-circles{display:flex;justify-content:space-between;align-items:center;gap:.4rem}
.scale-bipolar input{display:none}
.scale-bipolar label{width:3rem;height:3rem;border:2px solid var(--d-gray);border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:1.15rem;font-weight:var(--font-semibold);transition:var(--transition)}
.scale-bipolar input:checked+label{background:var(--accent);border-color:var(--accent);color:#fff}

/* ===== Горизонтальная шкала Ликерта (ПроЗОЖ, HADS, PSS-10, FAAQ и т.п.) ===== */
.scale-likert{display:flex;flex-direction:column;gap:.6rem;padding:.5rem 0}
.scale-likert-poles{display:flex;justify-content:space-between;gap:1rem;
  font-size:.95rem;font-weight:var(--font-semibold);color:var(--d-gray)}
.scale-likert-poles .pole.left{text-align:left}
.scale-likert-poles .pole.right{text-align:right}
.scale-likert-track{display:grid;grid-template-columns:repeat(var(--seg,4),1fr);gap:.5rem}
.scale-likert input{position:absolute;opacity:0;width:0;height:0}
.scale-likert label{display:flex;align-items:center;justify-content:center;text-align:center;min-width:0;
  padding:1.1rem .6rem;border:2px solid rgba(var(--rgb-d-gray),.25);border-radius:1rem;cursor:pointer;
  background:rgba(var(--rgb-d-gray),.04);transition:var(--transition);min-height:100%}
.scale-likert label:hover{border-color:var(--accent);background:rgba(var(--rgb-accent),.06)}
.scale-likert .seg-lbl{font-size:1.02rem;line-height:1.25;color:var(--text-color);overflow-wrap:anywhere;hyphens:auto}
.scale-likert input:checked+label{border-color:var(--accent);background:rgba(var(--rgb-accent),.12)}
.scale-likert input:checked+label .seg-lbl{color:var(--text-color);font-weight:var(--font-bold)}
/* Вертикальный список для длинных повопросных подписей (HADS/FFQ/RUS-AUDIT): строки во всю ширину */
.scale-likert.vertical .scale-likert-track{grid-template-columns:1fr;gap:.5rem}
.scale-likert.vertical label{justify-content:flex-start;text-align:left;padding:.95rem 1.1rem;min-height:0}
.scale-likert.vertical .seg-lbl{font-size:1.05rem}
.scale-likert input:focus-visible+label{outline:3px solid rgba(var(--rgb-accent),.4);outline-offset:2px}
/* компактный числовой режим для шкал на 6–7 вариантов (текст не влезает) — кружки В РЯД (flex, не grid) */
.scale-likert.compact .scale-likert-track{display:flex;justify-content:space-between;align-items:center;gap:.4rem;flex-wrap:nowrap}
.scale-likert.compact label{padding:0;width:3.6rem;height:3.6rem;max-width:none;min-height:0;flex:0 0 auto;border-radius:50%;flex-direction:column;gap:.15rem}
.scale-likert.compact .seg-num{font-size:1.55rem;font-weight:var(--font-bold);color:var(--text-color)}
.scale-likert.compact input:checked+label{background:var(--accent);border-color:var(--accent)}
.scale-likert.compact input:checked+label .seg-num{color:#fff}
.scale-likert.compact .scale-likert-poles{font-size:1rem;color:var(--text-color);font-weight:var(--font-semibold)}

/* кнопки */
.controls{display:flex;gap:30px;justify-content:flex-start;align-items:center;margin-top:auto;padding-top:1.75rem;width:100%}
.controls.controls-wrap{flex-wrap:wrap;gap:16px}
.controls.center{justify-content:center}
.controls.end{justify-content:flex-end}
.btn{display:inline-flex;align-items:center;justify-content:center;text-align:center;font-size:1.2rem;color:#fff;background:var(--green);text-decoration:none;border:2px solid var(--green);cursor:pointer;padding:1.1rem 2.2rem;border-radius:10rem;font-weight:var(--font-semibold);font-family:var(--font);min-width:190px;line-height:1.2;transition:var(--transition)}
.btn:not(.disabled):hover,.btn.active{background:var(--orange);border-color:var(--orange);color:#fff}
.btn.second{color:var(--green);background:transparent;border-color:var(--green)}
.btn.second:not(.disabled):hover{background:rgba(var(--rgb-green),.08);border-color:var(--green);color:var(--green)}
.btn.large{font-size:1.4rem;padding:1.3rem 3rem}
.btn.disabled,.btn:disabled{background:var(--d-gray);border-color:var(--d-gray);color:var(--gray);opacity:.5;pointer-events:none}
.btn.second.disabled{background:transparent;color:var(--d-gray)}
/* Отметка выбора обязана перебивать :hover — на тач-экране hover «залипает» после нажатия,
   и выбранная кнопка (напр. «Сколько часов назад ели») выглядела неотмеченной,
   пока не ткнёшь мимо. Специфичность hover-правила выше, поэтому дублируем её здесь. */
.btn.second.active,
.btn.second.active:not(.disabled):hover{background:var(--green);border-color:var(--green);color:#fff}

.welcome-center{display:flex;flex-direction:column;justify-content:center;flex:1;max-width:90%}
.mt-auto{margin-top:auto}
.text-grey{color:var(--d-gray)}
.hidden:not(.show){display:none}

/* алиасы для существующей разметки экранов измерений */
.device-value{font-size:4rem;font-weight:var(--font-extra-bold);color:var(--accent);line-height:1}
.device-value-small{font-size:2.4rem}
.device-unit{font-size:1.1rem;color:var(--d-gray);margin-left:.5rem}
.device-status.state-nrdy{border-color:rgba(var(--rgb-d-gray),.2)}
.content-wrapper.single .scroll-nav{right:24px}
.content-wrapper.single{justify-content:center}
#help-overlay{position:fixed;inset:0;background:rgba(var(--rgb-dark),.6);display:none;align-items:center;justify-content:center;z-index:50}
#help-overlay.show{display:flex}
#help-overlay .box{background:var(--bg-color);border-radius:1.5rem;padding:2.5rem;max-width:520px;text-align:center}

/* видео-заглушка: пока нет mp4, виден фон-фото; <video> проявляется при загрузке */
.video-wrapper video{opacity:1;transition:opacity .25s}
.video-wrapper video.loaded{opacity:1}
.video-muted-badge{position:absolute;right:.9rem;bottom:.9rem;width:44px;height:44px;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;display:none;align-items:center;justify-content:center;z-index:3;pointer-events:none}

/* ===== Экранная (сенсорная) клавиатура для стойки ===== */
.osk{position:absolute;left:0;right:0;bottom:0;z-index:50;background:var(--bg-color);touch-action:manipulation;-webkit-user-select:none;user-select:none;
  box-shadow:0 -10px 34px rgba(var(--rgb-dark),.20);border-top:2px solid rgba(var(--rgb-d-gray),.25);
  padding:14px 18px calc(14px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:8px;
  transform:translateY(110%);transition:transform .22s ease}
.osk.open{transform:translateY(0)}
.osk-row{display:flex;gap:8px;justify-content:center}
.osk-key{flex:1 1 0;min-width:0;height:62px;border:none;border-radius:12px;background:var(--gray);
  color:var(--text-color);font-size:1.45rem;font-family:var(--font);font-weight:var(--font-semibold);
  cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;
  box-shadow:var(--shadow);transition:background .12s,transform .06s}
.osk-key:active{background:rgba(var(--rgb-accent),.25);transform:translateY(1px)}
.osk-key.fn{flex:1.5 1 0;background:rgba(var(--rgb-d-gray),.22);font-size:1.05rem}
.osk-key.wide{flex:4 1 0}
.osk-key.accent{background:var(--accent);color:#fff}
.osk-key.shift-on{background:var(--accent);color:#fff}
.osk--num .osk-key{height:70px;font-size:1.7rem}

/* Прибор отсутствует на этой комплектации стойки — нейтральный, не тревожный вид */
.device-status.state-absent{background:rgba(var(--rgb-d-gray),.15);color:var(--d-gray)}
.device-status.state-absent .device-led{background:var(--d-gray)}

/* ===== Крупный ввод даты рождения для тач-экрана ===== */
.date-split{display:flex;gap:12px;align-items:flex-end}
.date-split .date-part{display:flex;flex-direction:column;gap:4px}
.date-split .date-part .cap{font-size:.85rem;color:var(--d-gray)}
.date-split input{font-size:1.6rem;text-align:center;padding:.9rem .6rem;border-radius:1rem;
  border:2px solid rgba(var(--rgb-d-gray),.35);background:var(--bg-color);color:var(--text-color);font-family:var(--font)}
.date-split input:focus{border-color:var(--accent);outline:none}
.date-split .dd{width:90px}.date-split .mm{width:90px}.date-split .yy{width:130px}

/* ===== Различие обязательных и необязательных полей ===== */
/* Обязательное: насыщенная метка с акцентной звёздочкой. Необязательное: приглушённое + «необязательно». */
.form-label.is-required{color:var(--text-color);font-weight:var(--font-semibold)}
.form-label.is-required::after{content:" *";color:var(--accent);font-weight:700}
.form-label.is-optional{color:var(--d-gray)}
.form-label.is-optional::after{content:" — необязательно";color:var(--d-gray);font-weight:400;font-size:.85em}

/* Ссылка «Ознакомиться» в плашке согласия */
.option .doc-link{margin-left:auto;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;
  width:2.6rem;height:2.6rem;border-radius:50%;background:rgba(var(--rgb-accent),.12);
  color:var(--accent);text-decoration:none;font-size:1.3rem;line-height:1;transition:var(--transition)}
.option .doc-link:hover,.option .doc-link:active{background:rgba(var(--rgb-accent),.22)}
.option:has(.doc-link) label{flex:1}

/* ===== Лендинг выбора программы: плитки 2×2 ===== */
/* ===== Плитки выбора программы ===== */
.program-tiles{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:1fr;gap:14px;width:100%;
  max-width:920px;margin-left:10px}
.program-tile{box-sizing:border-box;min-width:0;height:100%;display:flex;flex-direction:column;align-items:stretch;gap:8px;
  padding:14px 22px;border-radius:1.25rem;background:var(--bg-color);border:2px solid rgba(var(--rgb-d-gray),.18);
  box-shadow:var(--shadow);text-decoration:none;color:var(--text-color);cursor:pointer;transition:var(--transition)}
.program-tile:hover,.program-tile:active{border-color:var(--green);box-shadow:var(--shadow-big);transform:translateY(-2px)}
/* 3.7.28: плитка замера, для которого на стойке нет прибора. Не прячем, а
   гасим: исчезнувшая плитка выглядит как поломка программы, и оператор идёт
   искать, куда делся замер. Погашенная сразу говорит, в чём дело. */
.program-tile.pt-off{opacity:.45;pointer-events:none;border-style:dashed;background:transparent}
.program-tile.pt-off:hover{border-color:var(--d-gray);box-shadow:none;transform:none}
.pt-nodev{display:inline-block;margin-top:6px;font-size:.78em;font-weight:600;color:var(--d-gray);
          border:1px solid var(--d-gray);border-radius:999px;padding:2px 10px}
/* заголовок — фиксированная высота под 2 строки, чтобы описания во всех плитках были на одном уровне */
.program-tile .pt-title{width:100%;font-size:1.3rem;font-weight:var(--font-bold);
  color:var(--text-color);line-height:1.2;min-height:2.4em;display:flex;align-items:flex-start}
/* тело: иконка слева + описание справа от неё */
.program-tile .pt-body{display:flex;align-items:center;gap:12px;width:100%}
/* иконка — единый бокс для emoji и PNG (одинаковый видимый размер) */
.program-tile .pt-icon{flex:0 0 auto;width:44px;height:44px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.program-tile .pt-icon img{width:44px;height:44px;object-fit:contain;display:block}
.program-tile .pt-emoji{font-size:36px;line-height:1;display:block}
.program-tile .pt-desc{flex:1;min-width:0;font-size:.95rem;color:var(--d-gray);line-height:1.3}
.program-tile .pt-meta{margin-top:auto;margin-bottom:-6px;align-self:center;display:inline-flex;align-items:center;gap:6px;
  font-size:.9rem;font-weight:var(--font-bold);color:var(--green);
  background:rgba(var(--rgb-cyan),.12);padding:5px 11px;border-radius:999px}
/* Плитка «Продолжить по QR-коду»: крупный QR вместо иконки */
.program-tile.pt-qr .pt-qr-body{flex-direction:column;align-items:center;justify-content:center}
.program-tile.pt-qr .pt-qr-code{display:block;line-height:0}
.program-tile.pt-qr .pt-qr-code svg{width:84px;height:84px;display:block}
/* выделенная плитка — программа Минздрава */
.program-tile.featured{border-color:var(--accent);
  background:linear-gradient(180deg,rgba(var(--rgb-accent),.06),var(--bg-color) 60%);
  box-shadow:inset 0 0 0 1px rgba(var(--rgb-accent),.25),var(--shadow-big)}
.program-tile.featured:hover,.program-tile.featured:active{border-color:var(--green)}
.date-error{margin-top:10px;color:var(--danger);font-size:1rem;font-weight:var(--font-bold);
  display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:.75rem;
  background:rgba(var(--rgb-danger,174,50,0),.10);border:1px solid rgba(var(--rgb-danger,174,50,0),.30)}
.date-error::before{content:"⚠";font-size:1.1rem;flex-shrink:0}
.date-error[hidden]{display:none}
.date-split .input-error{border-color:var(--danger)!important;box-shadow:0 0 0 2px rgba(var(--rgb-danger,174,50,0),.15)}

/* ===== Сервисный экран (admin.php) ===== */
.admin-msg{padding:12px 16px;border-radius:.75rem;margin-bottom:1rem;font-weight:var(--font-semibold)}
.admin-msg.ok{background:rgba(var(--rgb-green),.12);color:var(--green);border:1px solid rgba(var(--rgb-green),.3)}
.admin-msg.err{background:rgba(var(--rgb-danger,174,50,0),.1);color:var(--danger);border:1px solid rgba(var(--rgb-danger,174,50,0),.3)}
.admin-card{background:var(--bg-color);border:1px solid rgba(var(--rgb-d-gray),.18);border-radius:1rem;padding:1.25rem 1.5rem;margin-bottom:1.25rem;box-shadow:var(--shadow)}
.admin-card h3{margin:0 0 .85rem;font-size:1.2rem;display:flex;align-items:center;gap:.5rem}
.admin-hint{color:var(--d-gray);font-size:.95rem;margin:.25rem 0 .75rem;line-height:1.35}
.admin-kv{display:flex;align-items:center;justify-content:space-between;gap:1rem;font-size:1.05rem}
.admin-loading{color:var(--d-gray)}
.admin-refresh{margin-left:auto;border:none;background:rgba(var(--rgb-accent),.12);color:var(--accent);width:2rem;height:2rem;border-radius:50%;font-size:1.1rem;cursor:pointer}
.admin-devices{display:grid;grid-template-columns:1fr 1fr;gap:.6rem .9rem}
.admin-device{display:flex;align-items:center;gap:.6rem;padding:.55rem .7rem;border-radius:.6rem;background:rgba(var(--rgb-d-gray),.05)}
.admin-device .dev-name{font-size:1rem}
.admin-device .dev-id-spacer{margin-left:auto}
.dot{width:.85rem;height:.85rem;border-radius:50%;flex-shrink:0;display:inline-block}
.dot-on{background:#2ec27e;box-shadow:0 0 0 3px rgba(46,194,126,.18)}
.dot-off{background:#c8ccd4}
.dot-warn{background:var(--yellow);box-shadow:0 0 0 3px rgba(var(--rgb-yellow),.18)}
.admin-device .dev-state{margin-left:auto;color:var(--d-gray);font-size:.85rem}
.admin-device .dev-id{color:var(--d-gray);font-size:.8rem;font-family:monospace;opacity:.7}
.dot-wait{background:var(--yellow);animation:pulse 1s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}
.admin-form{display:flex;flex-direction:column;gap:.5rem}
.admin-checks{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}
.admin-check{display:flex;align-items:center;gap:.6rem;padding:.6rem .8rem;border:1px solid rgba(var(--rgb-d-gray),.2);border-radius:.6rem;cursor:pointer;font-size:1rem}
.admin-check input{width:1.3rem;height:1.3rem;accent-color:var(--accent)}
.admin-pinrow{display:flex;gap:.75rem;align-items:center;margin-top:1rem}
.admin-pin{max-width:140px;letter-spacing:.3em;text-align:center}

/* ============================================================
   ПРОФИЛЬ ЗДОРОВЬЯ — пациентский дашборд (.pp-*) + отчёт врачу (.doc-*)
   v1.7.42 — анимированные шкалы, кольцо, мягкие состояния
   ============================================================ */
/* состояния: «в норме» = цвет системы; «обратите внимание» = оранжевый сигнал */
.pp-ok   { --pp-c:var(--dc,var(--green)); --pp-rgb:var(--dc-rgb,var(--rgb-green)); }
.pp-attn { --pp-c:#ff6633;                --pp-rgb:255,102,51; }

/* палитры систем */
.pp-dom-body      { --dc:#2f6fed; --dc-rgb:47,111,237; }   /* состав тела — синяя */
.pp-dom-muscle    { --dc:#1f9d57; --dc-rgb:31,157,87; }    /* сила/подвижность — зелёная */
.pp-dom-vascular  { --dc:#c43e6e; --dc-rgb:196,62,110; } /* сердце и сосуды — розовая (не «тревожный» красный) */
.pp-dom-psyche    { --dc:#8657d6; --dc-rgb:134,87,214; }   /* самочувствие — фиолетовая */
.pp-dom-lifestyle { --dc:#0f9aa6; --dc-rgb:15,154,166; }   /* образ жизни — бирюзовая */

.pp-dash{display:flex;flex-direction:column;gap:1.1rem;max-width:980px}

/* HERO */
.pp-hero{display:flex;align-items:center;gap:2rem;background:var(--bg-color);border-radius:1.5rem;
  padding:1.8rem 2rem;box-shadow:var(--shadow-big);position:relative;overflow:hidden;
  animation:ppCardIn .7s cubic-bezier(.22,1,.36,1) both}
.pp-hero::after{content:"";position:absolute;right:-80px;top:-80px;width:260px;height:260px;border-radius:50%;
  background:radial-gradient(circle,rgba(var(--rgb-accent),.14),transparent 70%);pointer-events:none}
.pp-ring{position:relative;width:130px;height:130px;flex:0 0 auto}
.pp-ring svg{width:130px;height:130px}
.pp-ring-bg{fill:none;stroke:rgba(var(--rgb-d-gray),.15);stroke-width:9}
.pp-ring-fg{fill:none;stroke:var(--green);stroke-width:9;stroke-linecap:round;
  animation:ppRing 1.3s .2s cubic-bezier(.22,1,.36,1) both}
.pp-ring-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.pp-ring-num{font-size:2rem;font-weight:var(--font-extra-bold);color:var(--green);line-height:1}
.pp-ring-cap{font-size:.7rem;text-transform:uppercase;letter-spacing:1px;color:var(--d-gray);margin-top:.2rem}
.pp-hero-text h1{font-size:2rem;margin:.5rem 0 .4rem}
.pp-hero-sub{color:var(--d-gray);font-size:1.05rem;margin:0;max-width:42ch}

/* КАРТОЧКА ДОМЕНА */
.pp-card{background:var(--bg-color);border-radius:1.25rem;padding:1.4rem 1.6rem 1.5rem;box-shadow:var(--shadow);
  border-left:6px solid var(--dc,var(--accent));
  opacity:0;animation:ppCardIn .6s var(--cdelay,0s) cubic-bezier(.22,1,.36,1) forwards}
.pp-card-head{display:flex;align-items:center;gap:.8rem;margin-bottom:1.1rem}
.pp-card-head h3{margin:0;font-size:1.3rem;font-weight:var(--font-bold);flex:1}
.pp-card-ic{width:2.6rem;height:2.6rem;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:rgba(var(--dc-rgb,var(--rgb-green)),.14);color:var(--dc,var(--green))}
.pp-card-ic svg{width:1.5rem;height:1.5rem}

/* TAG-состояние */
.pp-tag{font-size:.72rem;font-weight:var(--font-bold);text-transform:uppercase;letter-spacing:.5px;
  padding:.28rem .8rem;border-radius:1rem;white-space:nowrap;
  color:var(--pp-c,var(--green));background:rgba(var(--pp-rgb,var(--rgb-green)),.13)}

/* МЕТРИКА + ШКАЛА */
.pp-metric{padding:.7rem 0;border-top:1px solid rgba(var(--rgb-d-gray),.08)}
.pp-metric:first-of-type{border-top:none}
.pp-metric-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.55rem}
.pp-metric-name{font-size:1.02rem;font-weight:var(--font-medium)}
.pp-metric-val{font-size:1.3rem;font-weight:var(--font-extra-bold);color:var(--text-color)}
.pp-bar{position:relative;height:14px;border-radius:7px;background:rgba(var(--rgb-d-gray),.14);overflow:visible}
.pp-bar-green{position:absolute;top:0;bottom:0;border-radius:7px;
  background:linear-gradient(90deg,rgba(var(--dc-rgb,var(--rgb-green)),.38),rgba(var(--dc-rgb,var(--rgb-green)),.6));
  box-shadow:inset 0 0 0 1px rgba(var(--dc-rgb,var(--rgb-green)),.25);
  transform:scaleX(0);transform-origin:left;animation:ppGrow .8s .25s cubic-bezier(.22,1,.36,1) forwards}
.pp-bar-marker{position:absolute;top:50%;width:22px;height:22px;border-radius:50%;
  background:var(--pp-c,var(--green));border:3px solid var(--bg-color);
  box-shadow:0 0 0 2px var(--pp-c,var(--green)),0 4px 10px rgba(var(--rgb-dark),.25);
  left:0;transform:translateY(-50%) scale(0);
  animation:ppMark .9s var(--delay,0s) cubic-bezier(.34,1.56,.64,1) forwards}
@keyframes ppMark{to{left:clamp(0px,calc(var(--pos) - 11px),calc(100% - 22px));transform:translateY(-50%) scale(1)}}
.pp-metric-foot{display:flex;align-items:baseline;gap:.7rem;margin-top:.6rem}
.pp-metric-note{font-size:.92rem;color:var(--d-gray);line-height:1.3}
.pp-reco{margin-top:.45rem;font-size:.92rem;color:var(--d-accent);font-weight:var(--font-medium)}

/* ОБЩАЯ КАРТИНА */
.pp-card-summary{background:linear-gradient(135deg,rgba(var(--rgb-accent),.07),rgba(var(--rgb-green),.05))}

/* Блок «Ваши замеры» */
.pp-measure-grid{display:flex;flex-wrap:wrap;gap:.7rem .9rem}
.pp-measure-item{flex:1 1 180px;display:flex;flex-direction:column;gap:.15rem;padding:.7rem .9rem;background:rgba(var(--rgb-accent),.05);border-radius:.7rem}
.pp-measure-label{font-size:.82rem;color:var(--d-gray)}
.pp-measure-val{font-size:1.25rem;font-weight:var(--font-bold)}

/* Блок «Пройденные тесты» */
.pp-test-row{padding:.75rem 0;border-bottom:1px solid rgba(0,0,0,.06)}
.pp-test-row:last-child{border-bottom:0}
.pp-test-head{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap}
.pp-test-name{font-weight:var(--font-semibold);font-size:1.02rem;flex:1}
.pp-test-res{font-weight:var(--font-bold);color:var(--accent)}
.pp-test-note{font-size:.9rem;color:var(--d-gray);margin-top:.25rem}
.pp-pattern{font-size:1.02rem;line-height:1.45;margin:.2rem 0 .7rem}
.pp-spec{margin-top:.6rem}
.pp-spec-title{font-weight:var(--font-bold);margin-bottom:.5rem}
.pp-spec-row{display:flex;gap:1rem;padding:.5rem .8rem;border-radius:.6rem;background:rgba(var(--rgb-white),.5);margin-bottom:.4rem}
.pp-spec-who{font-weight:var(--font-semibold);color:var(--d-accent);min-width:42%}
.pp-spec-why{color:var(--d-gray);font-size:.95rem}

/* Короткое заключение в доменной карточке */
.pp-dom-summary{font-size:1rem;line-height:1.45;margin:-.2rem 0 .8rem;color:var(--text-color);font-weight:var(--font-medium)}

/* Запись к специалистам — сильный продающий блок (мост в санаторий) */
.pp-doctors{background:linear-gradient(135deg,rgba(var(--rgb-accent),.12),rgba(var(--rgb-green),.06));border:1px solid rgba(var(--rgb-accent),.3)}
.pp-doctors-list{display:grid;grid-template-columns:1fr;gap:.6rem;margin:.6rem 0 .8rem}
.pp-doctor{background:rgba(var(--rgb-white),.7);border:1px solid rgba(var(--rgb-d-gray),.15);border-radius:.8rem;padding:.7rem .9rem}
.pp-doctor.is-priority{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;background:rgba(var(--rgb-accent),.06)}
.pp-doctor-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.25rem}
.pp-doctor-who{font-weight:var(--font-bold);font-size:1.04rem;color:var(--d-accent)}
.pp-doctor-badge{background:var(--accent);color:#fff;font-size:.72rem;font-weight:var(--font-bold);text-transform:uppercase;letter-spacing:.4px;padding:.22rem .6rem;border-radius:1rem}
.pp-doctor-why{font-size:.95rem;color:var(--text-color);line-height:1.35;margin-bottom:.2rem}
.pp-doctor-pkg{font-size:.92rem;color:var(--d-gray);line-height:1.35}
.pp-doctors-cta{margin-top:.5rem;padding:.7rem .9rem;background:var(--accent);color:#fff;border-radius:.7rem;font-weight:var(--font-semibold);font-size:.95rem;text-align:center}

/* «Что ещё стоит пройти» — рекомендованные обследования */
.pp-further{background:rgba(var(--rgb-d-gray),.04)}
.pp-further-list{margin:.4rem 0 0;padding-left:1.2rem;line-height:1.5;color:var(--text-color)}
.pp-further-list li{margin-bottom:.35rem;font-size:.97rem}
.pp-further-list b{color:var(--d-accent)}

/* Кратко о результатах */
.pp-brief{background:linear-gradient(135deg,rgba(var(--rgb-accent),.08),rgba(var(--rgb-green),.05))}
.pp-brief-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;margin:.5rem 0 .8rem}
.pp-brief-stat{background:rgba(var(--rgb-white),.7);border:1px solid rgba(var(--rgb-d-gray),.15);border-radius:.8rem;padding:.7rem .8rem;display:flex;flex-direction:column;align-items:center;gap:.15rem}
.pp-brief-stat.is-ok{border-color:rgba(var(--rgb-green),.5);background:rgba(var(--rgb-green),.08)}
.pp-brief-stat.is-attn{border-color:rgba(var(--rgb-yellow),.5);background:rgba(var(--rgb-yellow),.08)}
.pp-brief-num{font-size:2rem;font-weight:var(--font-extra-bold);line-height:1;color:var(--d-accent)}
.pp-brief-stat.is-ok .pp-brief-num{color:var(--green)}
.pp-brief-stat.is-attn .pp-brief-num{color:var(--yellow)}
.pp-brief-lbl{font-size:.85rem;color:var(--d-gray);text-align:center;line-height:1.2}
.pp-brief-list{margin:.4rem 0 0;padding-left:1.2rem;color:var(--text-color);line-height:1.5}
.pp-brief-list li{margin-bottom:.3rem;font-size:.97rem}

/* Финальный CTA — паспорт здоровья */
.pp-outro{background:linear-gradient(135deg,var(--accent),rgba(var(--rgb-green),1));color:#fff;border:none;text-align:center}
.pp-outro-title{font-size:1.4rem;font-weight:var(--font-extra-bold);margin-bottom:.5rem}
.pp-outro-text{font-size:1rem;line-height:1.5;margin:0;opacity:.95}

/* ПЛАН: рацион / активность */
.pp-plan-intro{color:var(--d-gray);margin:.1rem 0 1rem;font-size:1rem}
.pp-plan-grid{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;margin-bottom:1rem}
.pp-plan-item{background:rgba(var(--rgb-d-gray),.06);border-radius:.7rem;padding:.7rem .9rem;display:flex;flex-direction:column;gap:.15rem}
.pp-plan-item b{font-size:.95rem;color:var(--d-accent)}
.pp-plan-item span{font-size:.92rem;color:var(--d-gray);line-height:1.3}
/* Прил.12 — рекомендации по анкетам */
.pp-q-reco{border-left:3px solid rgba(var(--rgb-d-gray),.25);padding:.2rem 0 .2rem 1rem;margin:1rem 0}
.pp-q-reco.pp-q-red{border-left-color:#c62828}
.pp-q-reco.pp-q-orange{border-left-color:#c77700}
.pp-q-reco-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.4rem;margin-bottom:.5rem}
.pp-q-reco-head b{font-size:1.02rem;color:var(--d-accent)}
.pp-zone{font-size:.82rem;font-weight:600;white-space:nowrap}
.pp-zone-red{color:#c62828}
.pp-zone-orange{color:#c77700}
/* Прил.13 — общие рекомендации */
.pp-gen-grid{display:grid;grid-template-columns:1fr 1fr;gap:.4rem 1.4rem;margin-bottom:1rem}
.pp-gen-cat{break-inside:avoid}
.pp-plan-sub{display:grid;grid-template-columns:1fr 1fr;gap:1.4rem}
.pp-plan-sub b{display:block;margin-bottom:.5rem}
.pp-plan-sub ul{margin:0;padding-left:1.1rem;color:var(--d-gray);font-size:.95rem;line-height:1.5}
.pp-meal{font-size:.95rem;line-height:1.4;margin-bottom:.4rem}
.pp-meal i{color:var(--d-accent);font-style:normal;font-weight:var(--font-semibold)}
.pp-water{color:var(--d-accent);font-weight:var(--font-medium)}

/* Недельный календарь активности */
.pp-week-title{margin:.4rem 0 .5rem;font-size:1rem}
.pp-week{display:grid;grid-template-columns:repeat(7,1fr);gap:.4rem;margin-bottom:1rem}
.pp-week-day{background:rgba(var(--rgb-d-gray),.06);border-radius:.6rem;padding:.5rem .4rem;display:flex;flex-direction:column;gap:.2rem;min-height:54px;min-width:0}
.pp-week-day.is-strength{background:rgba(var(--dc-rgb,var(--rgb-green)),.12);box-shadow:inset 0 0 0 1px rgba(var(--dc-rgb,var(--rgb-green)),.3)}
.pp-week-dow{font-size:.72rem;text-transform:uppercase;letter-spacing:.2px;font-weight:var(--font-bold);color:var(--d-accent);line-height:1.1}
.pp-week-plan{font-size:.84rem;color:var(--text-color);font-weight:var(--font-medium);line-height:1.2;overflow-wrap:anywhere}
/* Меню на неделю (вертикальные строки: день + блюда) */
.pp-menu-week{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1rem}
.pp-menu-day{display:flex;gap:.7rem;align-items:baseline;background:rgba(var(--rgb-d-gray),.05);border-radius:.6rem;padding:.5rem .8rem}
.pp-menu-dow{flex:0 0 28px;font-size:.78rem;font-weight:var(--font-bold);color:var(--d-accent);text-transform:uppercase}
.pp-menu-text{font-size:.92rem;color:var(--text-color);line-height:1.35}
/* Санаторный блок: специалисты + обследования */
.pp-refer{display:grid;grid-template-columns:1fr 1fr;gap:.9rem;margin:.8rem 0 .4rem}
.pp-refer-col{background:rgba(var(--rgb-accent),.07);border:1px solid rgba(var(--rgb-accent),.25);border-radius:.8rem;padding:.7rem .9rem}
@media (max-width:640px){.pp-refer{grid-template-columns:1fr}}
@media print{.pp-week{grid-template-columns:repeat(7,1fr)}.pp-week-day{break-inside:avoid}}
/* Заголовок силового блока внутри варианта (дом/зал) */
.pp-block-title{margin:.6rem 0 .25rem;font-size:.95rem;font-weight:var(--font-bold);color:var(--text-color)}
/* Рекомендация личного тренера (продающий блок) */
.pp-trainer{margin:.6rem 0 .2rem;padding:.8rem 1rem;border-radius:.8rem;background:rgba(var(--rgb-accent),.1);
  border:1px solid rgba(var(--rgb-accent),.35);display:flex;flex-direction:column;gap:.35rem;font-size:.95rem;line-height:1.4;color:var(--text-color)}
.pp-trainer-badge{align-self:flex-start;background:var(--accent);color:#fff;font-size:.74rem;font-weight:var(--font-bold);
  text-transform:uppercase;letter-spacing:.4px;padding:.28rem .7rem;border-radius:1rem}

.pp-disclaimer{font-size:.85rem;color:var(--d-gray);text-align:center;margin:.5rem 0 0;opacity:.85}

/* АНИМАЦИИ */
@keyframes ppCardIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes ppGrow{to{transform:scaleX(1)}}
@keyframes ppRing{from{stroke-dasharray:0 326}}

/* ОТЧЁТ ВРАЧУ (debug / печать) */
.doc-report{max-width:900px;background:var(--bg-color);border-radius:1rem;padding:1.5rem 1.8rem;box-shadow:var(--shadow);margin-top:1.5rem;font-size:.95rem}
.doc-report h2{font-size:1.5rem;margin:0 0 .5rem}
.doc-report h3{font-size:1.1rem;margin:1.2rem 0 .5rem;color:var(--d-accent)}
.doc-meta{color:var(--d-gray);margin-bottom:.5rem}
.doc-domain{font-weight:var(--font-semibold);margin:.7rem 0 .3rem}
.doc-tbl{width:100%;border-collapse:collapse;margin-bottom:.5rem}
.doc-tbl td{padding:.35rem .6rem;border-bottom:1px solid rgba(var(--rgb-d-gray),.12);vertical-align:top}
.doc-tbl td:nth-child(2){font-weight:var(--font-bold);white-space:nowrap}
.doc-note{color:var(--d-gray);font-size:.85rem}
.doc-flags{margin:.3rem 0;padding-left:1.2rem;line-height:1.5}
.doc-debug-label{display:inline-block;background:var(--orange);color:#fff;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;padding:.25rem .7rem;border-radius:1rem;margin:1.5rem 0 .3rem}

@media print{.sidebar,.video-pane,.scroll-btn,form{display:none!important}.pp-card,.pp-hero{box-shadow:none;break-inside:avoid}}

/* v1.7.43 — мета пациента, цели рациона, варианты планов */
.pp-meta{font-size:1.05rem;font-weight:var(--font-semibold);color:var(--text-color);margin:.2rem 0 .6rem;
  display:inline-block;padding:.35rem .9rem;border-radius:.7rem;background:rgba(var(--rgb-accent),.1)}
.pp-targets{display:grid;grid-template-columns:repeat(2,1fr);gap:.6rem;margin:.2rem 0 1rem}
.pp-target{display:flex;flex-direction:column;gap:.15rem;padding:.7rem .9rem;border-radius:.7rem;
  background:rgba(var(--dc-rgb,var(--rgb-accent)),.08);border:1px solid rgba(var(--dc-rgb,var(--rgb-accent)),.18)}
.pp-target b{font-size:.8rem;text-transform:uppercase;letter-spacing:.5px;color:var(--dc,var(--d-accent))}
.pp-target span{font-size:1rem;font-weight:var(--font-semibold)}
.pp-variants{display:grid;grid-template-columns:1fr;gap:.9rem;margin:1rem 0 .4rem}
.pp-variant{background:rgba(var(--rgb-d-gray),.05);border-radius:.8rem;padding:.9rem 1rem}
.pp-variant-name{font-weight:var(--font-bold);color:var(--dc,var(--d-accent));margin-bottom:.5rem;font-size:1.02rem}
.pp-variant-list{margin:0;padding-left:1.1rem;line-height:1.6;font-size:.95rem;color:var(--text-color)}
.pp-plan-foot{margin-top:.8rem;font-size:.95rem;line-height:1.4}
.pp-plan-foot b{color:var(--dc,var(--d-accent))}

/* v1.7.46 — глобальный прогресс сценария + появление вопроса */
.top-progress{position:absolute;top:0;left:0;right:0;height:5px;background:rgba(var(--rgb-d-gray),.16);z-index:60;overflow:hidden}
.top-progress-fill{display:block;height:100%;width:0;border-radius:0 4px 4px 0;
  background:linear-gradient(90deg,var(--green),var(--accent));
  box-shadow:0 0 10px rgba(var(--rgb-accent),.55);
  transition:width .85s cubic-bezier(.22,1,.36,1)}
.top-progress-fill::after{content:"";position:absolute;right:0;top:0;bottom:0;width:40px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.6));animation:tpPulse 1.6s ease-in-out infinite}
@keyframes tpPulse{0%,100%{opacity:.2}50%{opacity:.8}}

/* появление вопроса при смене страницы анкеты */
.question-item.qslide{animation:qSlideIn .4s cubic-bezier(.22,1,.36,1)}
@keyframes qSlideIn{from{opacity:0;transform:translateX(28px)}to{opacity:1;transform:none}}
/* мягкая пульсация прогресса опросника при ответе */
.q-progress-fill{transition:width .45s cubic-bezier(.22,1,.36,1)}

/* v1.7.46 — компактный экран «Фламинго» (без прокрутки) */
.flam-note{background:rgba(var(--rgb-yellow),.14);border:1px solid rgba(var(--rgb-yellow),.4);
  color:var(--d-gray);border-radius:.7rem;padding:.6rem .9rem;font-size:.92rem;margin-bottom:14px;line-height:1.35}
.flam-grid{display:grid;grid-template-columns:1fr;gap:16px;align-items:start}
.flam-cap{font-size:.78rem;text-transform:uppercase;letter-spacing:.5px;color:var(--d-gray);font-weight:var(--font-bold);margin-bottom:8px}
.flam-sw{padding:1rem 1.2rem}
.flam-sw-time{font-size:46px;font-weight:var(--font-extra-bold);color:var(--green);line-height:1;margin-bottom:12px}
.flam-sw-time span{font-size:14px;color:var(--grey-500);font-weight:var(--font-medium);margin-left:8px}
.flam-sw-btns{display:flex;gap:8px;flex-wrap:wrap}
.flam-sw-btns .btn{flex:1 1 auto;min-width:96px;padding:.7rem 1rem;font-size:1rem;white-space:nowrap}
.flam-legs{display:flex;flex-direction:column;gap:12px}
.flam-leg{padding:.9rem 1.1rem}
.flam-leg-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.flam-leg-row .form-input{flex:1 1 130px;min-width:130px;margin:0}
.flam-leg-row .btn{flex:0 0 auto;min-width:0;white-space:nowrap;padding:.7rem 1.1rem;font-size:.95rem}

/* ===== Авторизация через MAX ===== */
.max-login-cta{display:flex;align-items:center;gap:16px;padding:18px 22px;margin:0 0 22px;
  background:linear-gradient(135deg,var(--accent),var(--green));color:#fff;border-radius:16px;
  text-decoration:none;box-shadow:0 6px 18px rgba(var(--rgb-accent),.32);transition:transform .15s,box-shadow .15s}
.max-login-cta:hover,.max-login-cta:active{transform:translateY(-1px);box-shadow:0 10px 24px rgba(var(--rgb-accent),.4)}
.max-login-cta-ic{width:48px;height:48px;flex-shrink:0;background:rgba(255,255,255,.18);border-radius:12px;
  display:flex;align-items:center;justify-content:center;color:#fff}
.max-login-cta-ic svg{width:28px;height:28px}
.max-login-cta-text{flex:1;min-width:0}
.max-login-cta-title{font-size:1.2rem;font-weight:var(--font-extra-bold);line-height:1.2}
.max-login-cta-sub{font-size:.92rem;opacity:.9;margin-top:2px;line-height:1.25}
.max-login-cta-arrow{font-size:1.6rem;font-weight:var(--font-bold);opacity:.85}

.max-or-divider{display:flex;align-items:center;gap:14px;margin:18px 0 22px;color:var(--d-gray);font-size:.9rem;text-transform:uppercase;letter-spacing:.6px}
.max-or-divider::before,.max-or-divider::after{content:"";flex:1;height:1px;background:rgba(var(--rgb-d-gray),.2)}

/* Экран QR */
.max-auth-card{display:grid;grid-template-columns:auto 1fr;gap:36px;align-items:start;
  background:#fff;border:1px solid rgba(var(--rgb-d-gray),.12);border-radius:18px;padding:28px;box-shadow:var(--shadow-big)}
.max-auth-qr{display:flex;flex-direction:column;align-items:center;gap:16px}
.max-auth-qr svg{display:block;border-radius:10px;background:#fff}
.max-auth-status{display:flex;align-items:center;gap:10px;font-size:.95rem;color:var(--d-gray);font-weight:var(--font-medium)}
.max-auth-dot{width:12px;height:12px;border-radius:50%;background:var(--yellow);animation:pulse 1.4s ease-in-out infinite}
.max-auth-dot.ok{background:var(--green);animation:none}
.max-auth-dot.err{background:var(--red);animation:none}

.max-auth-steps{display:flex;flex-direction:column;gap:14px}
.max-step{display:flex;align-items:flex-start;gap:14px;font-size:1.05rem;color:var(--text-color);line-height:1.4}
.max-step-n{flex:0 0 32px;height:32px;border-radius:50%;background:var(--accent);color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:var(--font-extra-bold);font-size:1rem}

.max-fallback{margin-top:18px;padding:14px 16px;background:rgba(var(--rgb-d-gray),.05);border-radius:12px}
.max-fallback-title{font-weight:var(--font-bold);font-size:.95rem;margin-bottom:4px;color:var(--d-accent)}
.max-fallback-text{font-size:.9rem;color:var(--d-gray);margin-bottom:8px;line-height:1.4}
.max-shortcode{font-family:monospace;font-size:1.8rem;font-weight:var(--font-extra-bold);letter-spacing:4px;
  color:var(--d-accent);background:#fff;padding:8px 14px;border-radius:8px;display:inline-block;
  border:2px dashed rgba(var(--rgb-accent),.4)}

/* ===== OAuth-провайдеры — компактный ряд иконок ===== */
.oauth-strip-title{margin:18px 0 12px;font-size:.92rem;color:var(--d-gray);font-weight:var(--font-medium);text-transform:uppercase;letter-spacing:.5px}
.oauth-row{display:flex;gap:18px;flex-wrap:wrap;align-items:flex-start}
.oauth-ic{display:flex;flex-direction:column;align-items:center;gap:8px;text-decoration:none;width:72px;transition:transform .15s}
.oauth-ic:hover{transform:translateY(-3px)}
.oauth-ic-badge-wrap{position:relative;display:inline-block}
.oauth-ic-circle{width:60px;height:60px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  box-shadow:0 3px 10px rgba(0,0,0,.16)}
.oauth-ic-circle svg{width:34px;height:34px;display:block}
.oauth-ic-name{font-size:.82rem;color:var(--text-color);font-weight:var(--font-semibold);text-align:center;line-height:1.2}
.oauth-ic-badge{position:absolute;top:-6px;right:-10px;font-size:.6rem;font-weight:var(--font-bold);text-transform:uppercase;
  letter-spacing:.4px;background:var(--accent);color:#fff;border-radius:8px;padding:2px 6px;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.oauth-ic-badge.soon{background:#7d8a96}
.oauth-ic.is-disabled{opacity:.5;cursor:not-allowed;filter:grayscale(.5)}
.oauth-ic.is-disabled:hover{transform:none}

/* ===== Панель отправки отчёта на e-mail (финальный экран) ===== */
.email-send{margin:24px 0 8px;padding:20px 22px;background:rgba(var(--rgb-accent),.06);
  border:1px solid rgba(var(--rgb-accent),.25);border-radius:16px}
.email-send-title{font-size:1.05rem;font-weight:var(--font-bold);color:var(--d-accent);margin-bottom:14px}
.email-send-form{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.email-send-input{flex:1 1 260px;min-width:0;margin:0}
.email-send-btns{display:flex;gap:12px;flex:1 1 100%;flex-wrap:wrap}
.email-send-go{white-space:nowrap}
/* Когда открыта экранная клавиатура — добавляем прокручиваемому контейнеру
   запас снизу, чтобы поле e-mail можно было докрутить выше клавиатуры. */
body.osk-open .col-main{padding-bottom:var(--osk-height,380px)}

/* Лендинг: кнопка «Продолжить по QR» + компактный QR сайта справа (без подписи) */
.qr-row{display:flex; align-items:center; gap:16px; flex-wrap:nowrap}
.site-qr{flex:0 0 auto; padding:0; line-height:0; background:transparent; border:none}
.site-qr #site-qr{width:66px; height:66px}
.site-qr #site-qr svg{width:100%; height:100%; display:block}


/* Числовые поля на стойке: убираем нативные стрелки-спиннеры — на тач-экране они
   мешают (случайные нажатия), ввод идёт экранной клавиатурой. */
input[type=number]{-moz-appearance:textfield;appearance:textfield}
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}

/* Кнопки прокрутки внутри узкой колонки (экран итога замера — без видео-панели) */
.content-inner{position:relative}
.scroll-nav.for-inner{right:16px;bottom:16px}
/* Явное состояние видимости (не зависит от :has — работает и для .scroll-host) */
.scroll-btn.is-on{opacity:1;visibility:visible;transform:scale(1)}

/* Поле ввода кода с телефона на экране сканирования: явно обозначенное поле */
.code-input{width:100%;margin-top:10px;font-size:26px;letter-spacing:4px;text-align:center;
  text-transform:uppercase;font-weight:var(--font-bold);padding:16px 14px;
  background:#fff;border:2px solid var(--accent);border-radius:12px;
  box-shadow:inset 0 2px 8px rgba(0,0,0,.06)}
.code-input::placeholder{letter-spacing:1px;font-size:18px;font-weight:400;color:var(--d-gray);text-transform:none}
.code-input:focus{outline:none;border-color:var(--d-accent);box-shadow:0 0 0 4px rgba(var(--rgb-accent),.18)}


/* Кнопка ДЕЙСТВИЯ прибора («Измерить», «Стоп», «Перемерить») — отличается от навигации
   («Назад», «Пропустить»), которая тоже .btn.second: на экранах замеров все кнопки
   выглядели одинаково и действие прибора терялось среди навигации. */
/* Заливка, а не контур: контурный вариант на стойке всё равно сливался с навигацией. */
.btn.second.action,
.btn.second.action:not(.disabled):hover{background:var(--cyan);border-color:var(--cyan);color:#fff}
.btn.second.action:not(.disabled):hover{background:var(--d-cyan);border-color:var(--d-cyan)}
.btn.second.action.disabled{color:var(--d-gray);border-color:var(--d-line);background:transparent}

/* Итог замера: статус серии (удался / шумный / не удался) */
.mr-status{display:flex;gap:10px;align-items:flex-start;border-radius:14px;padding:12px 16px;margin:0 0 14px;font-size:.95rem;line-height:1.4}
.mr-status .dot{width:10px;height:10px;border-radius:50%;flex:0 0 10px;margin-top:6px}
.mr-status.ok{background:rgba(var(--rgb-green),.08);color:#0d5c3d}
.mr-status.ok .dot{background:#1E7A3D}
.mr-status.warn{background:rgba(var(--rgb-yellow),.12);color:#7a5600}
.mr-status.warn .dot{background:var(--yellow)}
.mr-status.bad{background:rgba(var(--rgb-red),.10);color:var(--red)}
.mr-status.bad .dot{background:var(--red)}


/* Подсказки к вопросам анкет и опросников. Объясняют, КАК ответить; норму не называют —
   иначе пациент подстраивает ответ под названное число (эффект якоря). */
.q-hint{font-size:.85rem;line-height:1.4;color:var(--d-gray);margin:2px 0 10px}
.q-hint-block{background:rgba(var(--rgb-accent),.07);border-left:3px solid var(--accent);
  border-radius:0 8px 8px 0;padding:10px 14px;margin:4px 0 16px;font-size:.9rem}
