/* UytHome Project Calculator — публичный калькулятор проекта.
   Токены и базовые элементы наследуются от planner.css: дизайн-система
   у публичных сервисов одна, второй заводить нельзя. */

.cl-wrap{max-width:1180px;margin:0 auto;padding:0 20px}
.cl-top{position:sticky;top:0;z-index:30;background:rgba(251,251,253,.88);
  backdrop-filter:blur(14px);border-bottom:1px solid var(--pl-line)}
.cl-top .in{max-width:1180px;margin:0 auto;padding:0 20px;height:60px;
  display:flex;align-items:center;gap:18px}
.cl-logo{font-size:17px;font-weight:800;letter-spacing:-.03em;display:flex;align-items:center}
.cl-logo b{color:var(--pl-accent)}
.cl-logo img{height:32px;width:auto;display:block}
.cl-logo .lw{display:none}
.cl-grow{flex:1}

/* Прогресс словами, а не «вопрос 7 из 43» */
.cl-steps{display:flex;gap:6px;align-items:center;font-size:13px;color:var(--pl-faint);
  overflow-x:auto;scrollbar-width:none}
.cl-steps::-webkit-scrollbar{display:none}
.cl-steps span{white-space:nowrap;padding:5px 10px;border-radius:999px}
.cl-steps span.on{background:var(--pl-accent-soft);color:var(--pl-accent);font-weight:700}
.cl-steps span.done{color:var(--pl-green)}
.cl-steps i{font-style:normal;color:var(--pl-line)}

.cl-steps span[role=button]{cursor:pointer}
/* Полоса прогресса под шапкой: на узком экране названия шагов не помещаются,
   и без неё с третьего шага непонятно, где ты находишься. */
.cl-prog{height:3px;background:var(--pl-line2)}
.cl-prog i{display:block;height:100%;width:0;background:var(--pl-accent);
  border-radius:0 3px 3px 0;transition:width .25s}
.cl-dark .cl-prog{background:rgba(255,255,255,.09)}

/* Живой итог: подсказка, а не главный герой экрана */
.cl-live{font-size:13px;color:var(--pl-muted);white-space:nowrap}
.cl-live b{color:var(--pl-text);font-weight:700;font-variant-numeric:tabular-nums}

/* Возврат к своему расчёту — заметное действие, а не серая строка текста */
.cl-resume{margin-top:18px;display:inline-flex;align-items:center;gap:9px;
  min-height:42px;padding:0 18px;border-radius:999px;font-size:14px;font-weight:700;
  color:#ffc796;background:rgba(255,138,43,.12);border:1.5px solid rgba(255,138,43,.45)}
.cl-resume::after{content:"→";font-weight:800}
.cl-resume:hover{background:rgba(255,138,43,.2);border-color:#ff8a2b}
.cl-resume:focus-visible{outline:2px solid #ff8a2b;outline-offset:3px}

/* ─── Лендинг: тёмный премиальный старт (как pl-start и сайт) ─── */
body.cl-dark{background:#07090e;color:#f5f7fb}
.cl-dark .cl-top{background:rgba(7,9,14,.82);border-bottom:1px solid rgba(255,255,255,.07)}
.cl-dark .cl-logo .ld{display:none}
.cl-dark .cl-logo .lw{display:block}

.cl-hero{padding:64px 0 46px}
.cl-hero-grid{display:grid;grid-template-columns:1.04fr .96fr;gap:52px;align-items:center}
.cl-eyebrow{display:inline-flex;align-items:center;gap:10px;color:#ff8a2b;font-size:12px;
  font-weight:800;letter-spacing:.13em;text-transform:uppercase;margin-bottom:16px}
.cl-eyebrow::before{content:"";width:26px;height:2px;background:linear-gradient(90deg,#ff8a2b,transparent)}
.cl-hero h1{font-size:clamp(30px,4.6vw,52px);line-height:1.05;margin-bottom:18px;
  letter-spacing:-.035em;max-width:15ch}
.cl-hero h1 em{font-style:normal;color:#ff8a2b}
.cl-hero .lead{font-size:clamp(15px,2vw,18px);color:#9da8b8;max-width:52ch;margin:0 0 28px;
  line-height:1.55}
.cl-cta{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.cl-way2{color:#9da8b8;font-size:14px;border-bottom:1px dashed rgba(255,255,255,.25);
  padding-bottom:2px;transition:.15s}
.cl-way2:hover{color:#ffc796;border-color:rgba(255,138,43,.5)}
.cl-facts{display:flex;flex-wrap:wrap;gap:10px 22px;font-size:14px;color:#9da8b8;margin-top:24px}
.cl-facts span{display:flex;align-items:center;gap:7px}
.cl-facts i{font-style:normal;width:18px;height:18px;border-radius:50%;
  background:rgba(22,160,106,.18);color:#3ecf95;display:grid;place-items:center;
  font-size:11px;font-weight:900;flex:0 0 18px}

/* Предпросмотр шага анкеты */
.cl-preview{cursor:pointer;max-width:440px;justify-self:end;width:100%}
.cl-qcard{background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.02));
  border:1px solid rgba(255,255,255,.12);border-radius:22px;padding:26px;
  box-shadow:0 30px 80px rgba(0,0,0,.5);transition:.18s}
.cl-preview:hover .cl-qcard{border-color:rgba(255,138,43,.45);transform:translateY(-3px)}
.cl-qcard .qhead{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.cl-qcard .qhead b{font-size:15px}
.cl-qcard .qhead span{font-size:12px;color:#7d8798}
.cl-qcard .qbar{height:5px;border-radius:5px;background:rgba(255,255,255,.09);
  margin-bottom:20px;overflow:hidden}
.cl-qcard .qbar i{display:block;height:100%;width:38%;border-radius:5px;
  background:linear-gradient(90deg,#f97a1f,#ff8a2b)}
.cl-qcard .qq{font-weight:800;font-size:16.5px;margin-bottom:13px}
.cl-qcard .qchips{display:flex;flex-wrap:wrap;gap:8px}
.cl-qcard .qchip{padding:8px 13px;border-radius:11px;border:1px solid rgba(255,255,255,.14);
  font-size:13px;color:#cdd5e1}
.cl-qcard .qchip.on{background:rgba(255,138,43,.16);border-color:rgba(255,138,43,.55);color:#ffc796}
.cl-qcard .qchip.on::before{content:"✓ ";font-weight:800}
.cl-qcard .qfoot{margin-top:19px;padding-top:15px;border-top:1px solid rgba(255,255,255,.08);
  display:flex;align-items:center;justify-content:space-between;gap:12px}
.cl-qcard .qnote{font-size:12.5px;color:#7d8798;max-width:24ch}
.cl-qcard .qnext{min-height:38px;padding:0 16px;border-radius:11px;background:#ff8a2b;
  color:#12161d;font-weight:800;font-size:13.5px;display:inline-flex;align-items:center;
  white-space:nowrap;flex:0 0 auto}

/* Что даёт расчёт: карточки вместо простыни текста */
.cl-seo{padding:8px 0 72px}
.cl-seo h2{font-size:clamp(20px,3vw,30px);margin-bottom:20px;letter-spacing:-.03em}
.cl-seo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:16px}
.cl-scard{border:1px solid rgba(255,255,255,.11);border-radius:20px;padding:24px;
  background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.015))}
.cl-scard b{display:block;font-size:16.5px;margin-bottom:9px;letter-spacing:-.02em}
.cl-scard p{margin:0;font-size:14px;line-height:1.6;color:#9da8b8}
.cl-scard a{color:#ff8a2b}

@media(max-width:920px){
  .cl-hero{padding:40px 0 36px}
  .cl-hero-grid{grid-template-columns:1fr;gap:34px}
  .cl-preview{justify-self:center}
}

/* ─── Шаги ─── */
.cl-step{padding:34px 0 90px;display:none}
.cl-step.on{display:block}
.cl-step h2{font-size:clamp(21px,3vw,30px);margin-bottom:8px}
.cl-step .sub{color:var(--pl-muted);margin:0 0 26px;max-width:660px}
.cl-block{margin-bottom:32px}
.cl-block>h3{font-size:15px;margin-bottom:12px}
.cl-hint{color:var(--pl-faint);font-size:13px;margin-top:8px}

/* Карточки выбора */
.cl-cards{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.cl-card{border:1.5px solid var(--pl-line);background:var(--pl-panel);border-radius:var(--pl-r);
  padding:16px;text-align:left;transition:.15s;position:relative;min-height:64px}
.cl-card:hover{border-color:#cfd5e0}
.cl-card b{display:block;font-size:15px;margin-bottom:3px}
.cl-card span{display:block;color:var(--pl-muted);font-size:13px;line-height:1.4}
.cl-card.on{border-color:var(--pl-accent);background:var(--pl-accent-soft)}
.cl-card.on::after{content:"✓";position:absolute;top:12px;right:13px;width:20px;height:20px;
  border-radius:50%;background:var(--pl-accent);color:#fff;font-size:12px;font-weight:900;
  display:grid;place-items:center}
.cl-card.rec{border-color:var(--pl-green);box-shadow:0 0 0 3px var(--pl-green-soft)}
.cl-card .tag{display:inline-block;margin-top:8px;font-size:11px;font-weight:800;
  letter-spacing:.04em;text-transform:uppercase;color:var(--pl-green)}

/* Компактные «чипы» для да/нет/не знаю */
.cl-chips{display:flex;flex-wrap:wrap;gap:8px}
.cl-chip{border:1.5px solid var(--pl-line);background:var(--pl-panel);border-radius:999px;
  padding:9px 16px;font-size:14px;transition:.15s;min-height:40px}
.cl-chip:hover{border-color:#cfd5e0}
.cl-chip.on{border-color:var(--pl-accent);background:var(--pl-accent-soft);
  color:var(--pl-accent);font-weight:700}

/* Слайдер площади */
.cl-area{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.cl-area input[type=range]{flex:1;min-width:220px;accent-color:var(--pl-accent)}
.cl-num{display:flex;align-items:center;gap:8px;border:1.5px solid var(--pl-line);
  border-radius:var(--pl-r-s);padding:8px 12px;background:var(--pl-panel)}
.cl-num input{border:0;outline:0;width:74px;font-size:19px;font-weight:700;
  background:transparent;font-variant-numeric:tabular-nums}
.cl-num span{color:var(--pl-faint);font-size:14px}

/* Счётчики помещений */
.cl-rooms{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
/* Наружные объекты подписаны длиннее помещений — им нужна колонка пошире,
   иначе «Кессон водоснабжения» разваливается на три строки. */
.cl-rooms.wide{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}
.cl-room{display:flex;align-items:center;gap:10px;border:1px solid var(--pl-line);
  border-radius:var(--pl-r-s);padding:8px 10px 8px 14px;background:var(--pl-panel)}
.cl-room b{flex:1;font-weight:500;font-size:14px}
.cl-room b .cl-hint{display:block;margin-top:1px;font-size:12px;font-weight:400}
.cl-room button{width:30px;height:30px;border-radius:8px;border:1px solid var(--pl-line);
  background:var(--pl-sunken);font-size:16px;line-height:1;display:grid;place-items:center}
.cl-room button:hover{border-color:var(--pl-accent);color:var(--pl-accent)}
/* Количество вводится и руками: 19 помещений кнопкой «+» — это 19 нажатий */
.cl-room input{width:38px;text-align:center;border:0;outline:0;background:transparent;
  font-weight:700;font-size:15px;font-variant-numeric:tabular-nums;
  -moz-appearance:textfield;padding:2px 0;border-radius:6px}
.cl-room input::-webkit-outer-spin-button,
.cl-room input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.cl-room input:focus{box-shadow:0 0 0 2px var(--pl-accent-soft);color:var(--pl-accent)}
.cl-room.zero b,.cl-room.zero input{color:var(--pl-faint)}

/* Нижняя панель навигации */
.cl-bar{position:fixed;left:0;right:0;bottom:0;z-index:40;background:rgba(255,255,255,.94);
  backdrop-filter:blur(14px);border-top:1px solid var(--pl-line);
  padding:12px 20px calc(12px + env(safe-area-inset-bottom))}
.cl-bar .in{max-width:1180px;margin:0 auto;display:flex;align-items:center;gap:12px}
/* Почему нельзя дальше — словами, рядом с кнопкой */
.cl-barmsg{max-width:1180px;margin:0 auto;font-size:13px;color:var(--pl-red);
  line-height:1.35;max-height:0;overflow:hidden;transition:max-height .18s,margin .18s}
.cl-barmsg.on{max-height:60px;margin-bottom:8px}
.cl-btn{border:0;border-radius:var(--pl-r-s);padding:0 22px;height:46px;font-weight:700;
  font-size:15px;background:var(--pl-accent);color:#fff;transition:.15s;
  display:inline-flex;align-items:center;gap:8px}
.cl-btn:hover{background:var(--pl-accent-h)}
.cl-btn[disabled]{opacity:.45;pointer-events:none}
/* Кнопка, которая пока не ведёт дальше: выглядит приглушённо, но нажимается
   и объясняет, чего не хватает. Мёртвая кнопка без ответа — тупик. */
.cl-btn.off{background:var(--pl-line);color:var(--pl-faint)}
.cl-btn.off:hover{background:var(--pl-line)}
.cl-btn.ghost{background:var(--pl-panel);color:var(--pl-text);border:1.5px solid var(--pl-line)}
.cl-btn.ghost:hover{background:var(--pl-sunken);border-color:#cfd5e0}
.cl-btn.big{height:52px;font-size:16px;padding:0 28px}
.cl-bar .cl-btn{white-space:nowrap}

/* ─── Результат ─── */
.cl-res{display:grid;gap:22px;grid-template-columns:1fr}
.cl-res>.cl-col{display:grid;gap:22px;align-content:start}
@media(min-width:980px){.cl-res{grid-template-columns:1.32fr .88fr;align-items:start}}
/* Одна колонка — колонки «растворяются», и порядок панелей задаёт cl-oN:
   сумма, разбор и действия должны быть в начале страницы, а не через восемь
   экранов чтения. Ничего при этом не скрывается, меняется только порядок. */
@media(max-width:979px){
  .cl-res>.cl-col{display:contents}
  .cl-o1{order:1}.cl-o2{order:2}.cl-o3{order:3}.cl-o4{order:4}
  .cl-o5{order:5}.cl-o6{order:6}.cl-o7{order:7}.cl-o8{order:8}
  .cl-o9{order:9}.cl-o10{order:10}.cl-o11{order:11}.cl-o12{order:12}
}
.cl-panel{background:var(--pl-panel);border:1px solid var(--pl-line);border-radius:var(--pl-r);
  padding:22px;box-shadow:var(--pl-sh)}
.cl-panel h3{font-size:16px;margin-bottom:14px}
.cl-price{font-size:clamp(23px,4.4vw,42px);font-weight:800;letter-spacing:-.03em;
  font-variant-numeric:tabular-nums;line-height:1.08;text-wrap:balance}
.cl-price small{display:block;font-size:13px;font-weight:600;color:var(--pl-muted);
  letter-spacing:0;margin-bottom:6px}
/* Расшифровка границ диапазона: «от» и «до» — это разная комплектация */
.cl-basis{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  gap:10px;margin-top:14px}
.cl-basis>div{padding:11px 13px;border-radius:11px;background:var(--pl-sunken)}
.cl-basis b{display:block;font-size:15px;font-weight:700;font-variant-numeric:tabular-nums}
.cl-basis span{display:block;font-size:12px;color:var(--pl-muted);margin-top:2px;line-height:1.4}
.cl-conf{margin-top:12px;font-size:13px;color:var(--pl-muted);padding-top:12px;
  border-top:1px solid var(--pl-line2)}
.cl-bd{display:flex;flex-direction:column;gap:2px}
.cl-bd div{display:flex;justify-content:space-between;gap:16px;padding:9px 0;
  border-bottom:1px solid var(--pl-line2);font-size:14px}
.cl-bd div:last-child{border-bottom:0}
.cl-bd b{font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;
  color:var(--pl-muted)}
.cl-comp{display:grid;gap:7px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.cl-comp div{display:flex;gap:9px;align-items:baseline;font-size:14px}
.cl-comp i{font-style:normal;font-weight:800;color:var(--pl-accent);
  font-variant-numeric:tabular-nums;min-width:26px}
.cl-list{display:flex;flex-direction:column;gap:12px}
.cl-list .it{display:flex;gap:11px}
.cl-list .it b{display:block;font-size:14px;margin-bottom:2px}
.cl-list .it span{display:block;font-size:13px;color:var(--pl-muted);line-height:1.45}
.cl-list .it .dot{width:7px;height:7px;border-radius:50%;background:var(--pl-accent);
  margin-top:7px;flex:0 0 7px}
.cl-tags{display:flex;flex-wrap:wrap;gap:7px}
.cl-tags span{background:var(--pl-sunken);border-radius:999px;padding:6px 13px;font-size:13px}
.cl-add{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--pl-line);
  border-radius:var(--pl-r-s);padding:13px;margin-bottom:9px;background:var(--pl-panel)}
.cl-add .tx{flex:1}
.cl-add b{display:block;font-size:14px;margin-bottom:3px}
.cl-add span{font-size:13px;color:var(--pl-muted);line-height:1.45}
.cl-add button{border:1.5px solid var(--pl-line);background:var(--pl-panel);
  border-radius:8px;padding:7px 13px;font-size:13px;font-weight:700;white-space:nowrap}
.cl-add button:hover{border-color:var(--pl-accent);color:var(--pl-accent)}
.cl-add.done button{border-color:var(--pl-green);color:var(--pl-green)}
/* «Если хочется дешевле»: объём работ по позиции, а не торг о цене */
.cl-trim{padding:13px 0;border-bottom:1px solid var(--pl-line2)}
.cl-trim:last-child{border-bottom:0;padding-bottom:0}
.cl-trim .hd{display:flex;align-items:baseline;gap:10px;margin-bottom:9px}
.cl-trim .hd b{font-size:14px}
.cl-trim .hd span{color:var(--pl-faint);font-size:13px;
  font-variant-numeric:tabular-nums}
.cl-trim .op{display:flex;flex-wrap:wrap;gap:7px}
.cl-trim .op .cl-chip{padding:7px 13px;min-height:36px;font-size:13px;
  display:inline-flex;align-items:center;gap:7px}
.cl-trim .op .cl-chip em{font-style:normal;color:var(--pl-green);font-weight:700;
  font-variant-numeric:tabular-nums}
.cl-trim .op .cl-chip.on em{color:inherit}
.cl-trim .wy{margin-top:8px;font-size:12.5px;color:var(--pl-muted);line-height:1.45}
/* На широком экране позиции идут в две колонки: 15 однотипных строк в один
   столбец растягивали левую половину страницы на несколько экранов. */
@media(min-width:980px){
  .cl-trims{display:grid;grid-template-columns:1fr 1fr;gap:0 26px}
}
/* Длинный однотипный хвост — под раскрытием. Не удалён: открывается одним
   нажатием, а выбранное в нём показывается всегда. */
.cl-more{margin-top:6px;padding-top:12px;border-top:1px solid var(--pl-line2)}
.cl-more-btn{display:inline-flex;align-items:center;gap:8px;min-height:40px;
  padding:0 14px;border:1.5px solid var(--pl-line);border-radius:999px;
  background:var(--pl-panel);font-size:13.5px;font-weight:700;text-align:left}
.cl-more-btn:hover{border-color:var(--pl-accent);color:var(--pl-accent)}
.cl-more-btn[aria-expanded=false]::after{content:"▾";font-weight:800}
.cl-more-btn[aria-expanded=true]::after{content:"▴";font-weight:800}
.cl-more>.cl-hint{margin-top:8px}

/* Ссылка на свой расчёт — рядом с кодом, иначе код бесполезен */
.cl-link{display:flex;gap:8px;margin-top:6px}
.cl-link input{flex:1;min-width:0;border:1.5px solid var(--pl-line);border-radius:var(--pl-r-s);
  padding:9px 11px;font-size:13px;background:var(--pl-sunken);color:var(--pl-muted)}
.cl-link button{border:1.5px solid var(--pl-line);background:var(--pl-panel);
  border-radius:var(--pl-r-s);padding:0 14px;font-size:13px;font-weight:700;white-space:nowrap}
.cl-link button:hover{border-color:var(--pl-accent);color:var(--pl-accent)}

/* «Выберите хотя бы одну систему» — там же, где выбор */
.cl-need{margin-top:14px;padding:12px 14px;border-radius:var(--pl-r-s);
  background:var(--pl-sunken);color:var(--pl-muted);font-size:13.5px}

.cl-note{font-size:12.5px;color:var(--pl-faint);line-height:1.5;margin-top:14px}
.cl-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.06em;
  font-weight:700;background:var(--pl-sunken);border-radius:7px;padding:3px 9px}

/* Форма заявки — минимальная */
.cl-form{display:grid;gap:10px}
.cl-form input,.cl-form textarea{border:1.5px solid var(--pl-line);border-radius:var(--pl-r-s);
  padding:12px 14px;font-size:15px;background:var(--pl-panel);outline:0;width:100%}
.cl-form input:focus,.cl-form textarea:focus{border-color:var(--pl-accent)}
.cl-form textarea{min-height:78px;resize:vertical}
.cl-ok{background:var(--pl-green-soft);border:1px solid rgba(22,160,106,.3);
  border-radius:var(--pl-r);padding:18px}
.cl-err{color:var(--pl-red);font-size:13px}

/* Видимый фокус: по калькулятору можно пройти с клавиатуры */
.cl-card:focus-visible,.cl-chip:focus-visible,.cl-room button:focus-visible,
.cl-more-btn:focus-visible,.cl-link button:focus-visible,.cl-add button:focus-visible,
.cl-btn:focus-visible,.cl-steps span:focus-visible{outline:2px solid var(--pl-accent);
  outline-offset:2px}

/* Мобильный режим: одна колонка, крупные цели */
@media(max-width:700px){
  .cl-step{padding:22px 0 96px}
  .cl-cards{grid-template-columns:1fr}
  .cl-hero{padding:44px 0 28px}
  .cl-top .in{gap:10px}
  .cl-live{display:none}
  .cl-btn{flex:1;justify-content:center}
  .cl-bar .cl-btn{padding:0 12px;font-size:14.5px}
  /* Полоса шагов уже экрана: без min-width:0 она не сжимается и не скроллится,
     поэтому текущий шаг оказывался за краем экрана. */
  .cl-steps{flex:1 1 auto;min-width:0}
  .cl-logo img{height:26px}
  .cl-rooms,.cl-rooms.wide{grid-template-columns:1fr}
  .cl-link{flex-wrap:wrap}
  .cl-link input{flex:1 0 100%}
}
