/* «База практик»: шрифт без засечек 16px, тёплая палитра, врезки с цветной полосой слева, светлая и тёмная тема. */
:root {
  --bg: #fbfaf7;
  --surface: #ffffff;
  --surface-2: #f3f0e8;
  --text: #24221e;
  --muted: #6b665c;
  --line: #e4dfd3;
  --accent: #b5562b;
  --accent-text: #ffffff;
  --info: #3b6ea8;
  --ok: #3f7d4a;
  --warn: #b7862a;
  --bad: #b03a3a;
  --gray: #8d877b;
  --focus: #2f6fd6;
  --radius: 10px;
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #181816; --surface: #22211e; --surface-2: #2b2a26; --text: #ece8df; --muted: #a8a397; --line: #3a3833;
    --accent: #e08a5a; --accent-text: #181816; --info: #7fa8d9; --ok: #7fbf8a; --warn: #e0b95e; --bad: #e07a7a; --gray: #8f8a80;
    --focus: #8ab4ff; color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --bg: #181816; --surface: #22211e; --surface-2: #2b2a26; --text: #ece8df; --muted: #a8a397; --line: #3a3833;
  --accent: #e08a5a; --accent-text: #181816; --info: #7fa8d9; --ok: #7fbf8a; --warn: #e0b95e; --bad: #e07a7a; --gray: #8f8a80;
  --focus: #8ab4ff; color-scheme: dark;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0; background: var(--bg); color: var(--text);
  font: 16px/1.5 system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
a { color: var(--accent); }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible {
  outline: 2px solid var(--focus); outline-offset: 2px;
}
h1 { font-size: 1.6rem; line-height: 1.25; margin: 0.4em 0 0.5em; }
h2 { font-size: 1.25rem; margin: 1.4em 0 0.5em; }
h3 { font-size: 1.05rem; margin: 1em 0 0.4em; }
p { margin: 0.5em 0; }
.muted { color: var(--muted); }
.small { font-size: 0.875rem; }
.hidden { display: none !important; }
.pre { white-space: pre-wrap; overflow-wrap: anywhere; }

/* шапка */
.top { background: var(--surface); border-bottom: 1px solid var(--line); }
.top-in { max-width: 960px; margin: 0 auto; padding: 10px 16px; display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; }
.brand { font-weight: 700; font-size: 1.1rem; color: var(--text); text-decoration: none; margin-right: auto; }
.nav { display: flex; flex-wrap: wrap; gap: 4px 14px; align-items: center; }
.nav a { text-decoration: none; }
.nav a[aria-current="page"] { font-weight: 600; color: var(--text); }

main { max-width: 960px; margin: 0 auto; padding: 8px 16px 48px; }
.foot { max-width: 960px; margin: 0 auto; padding: 16px; border-top: 1px solid var(--line); color: var(--muted); font-size: 0.875rem; display: flex; flex-wrap: wrap; gap: 6px 16px; }

/* кнопки и поля */
button, .btn {
  font: inherit; cursor: pointer; border: 1px solid var(--line); background: var(--surface); color: var(--text);
  border-radius: 8px; padding: 8px 14px; min-height: 40px; text-decoration: none; display: inline-flex; align-items: center; gap: 6px;
}
button:hover, .btn:hover { border-color: var(--muted); }
button.primary, .btn.primary { background: var(--accent); border-color: var(--accent); color: var(--accent-text); font-weight: 600; }
button.danger { color: var(--bad); border-color: var(--bad); }
button.link { border: 0; background: none; color: var(--accent); padding: 0; min-height: 0; text-decoration: underline; }
button:disabled { opacity: 0.55; cursor: default; }
.row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
label { display: block; }
.field { margin: 12px 0; }
.field > span, .legend { display: block; font-weight: 600; margin-bottom: 4px; }
input[type="text"], input[type="email"], input[type="search"], input[type="url"], input[type="number"], select, textarea {
  font: inherit; color: var(--text); background: var(--surface); border: 1px solid var(--line); border-radius: 8px;
  padding: 8px 10px; width: 100%; max-width: 100%;
}
textarea { min-height: 110px; resize: vertical; }
fieldset { border: 0; padding: 0; margin: 12px 0; min-width: 0; }
legend { font-weight: 600; padding: 0; margin-bottom: 4px; }
.check { display: flex; gap: 10px; align-items: flex-start; margin: 8px 0; }
.check input { margin-top: 4px; width: 18px; height: 18px; flex: none; }
.chips { display: flex; flex-wrap: wrap; gap: 6px; }
.chips label { display: inline-flex; }
.chips input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.chips span { border: 1px solid var(--line); border-radius: 999px; padding: 6px 12px; background: var(--surface); cursor: pointer; }
.chips input:checked + span { background: var(--accent); border-color: var(--accent); color: var(--accent-text); }
.chips input:focus-visible + span { outline: 2px solid var(--focus); outline-offset: 2px; }
.chips input:disabled + span { opacity: 0.6; cursor: default; }

/* карточки и врезки */
.card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 14px 16px; margin: 12px 0; }
.callout { background: var(--surface); border: 1px solid var(--line); border-left: 4px solid var(--info); border-radius: 6px; padding: 10px 14px; margin: 12px 0; }
.callout.ok { border-left-color: var(--ok); }
.callout.warn { border-left-color: var(--warn); }
.callout.bad { border-left-color: var(--bad); }
.callout.accent { border-left-color: var(--accent); }
.callout > :first-child { margin-top: 0; }
.callout > :last-child { margin-bottom: 0; }
#notices { position: sticky; top: 0; z-index: 5; }
#notices .callout { margin: 8px 0; box-shadow: 0 2px 8px rgb(0 0 0 / 0.08); }

.meta { display: flex; flex-wrap: wrap; gap: 4px 12px; color: var(--muted); font-size: 0.9rem; }
.pill { display: inline-block; border: 1px solid var(--line); background: var(--surface-2); border-radius: 999px; padding: 1px 10px; font-size: 0.875rem; }
.dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; background: var(--gray); vertical-align: middle; margin-right: 4px; }
.dot.green { background: var(--ok); } .dot.yellow { background: var(--warn); } .dot.gray, .dot.none { background: var(--gray); }

/* каталог */
.filters { display: grid; gap: 8px; grid-template-columns: 1fr; margin: 12px 0; }
@media (min-width: 720px) { .filters { grid-template-columns: 2fr 1fr 1fr; } }
.company h2 { margin: 0 0 4px; font-size: 1.15rem; }
.ents { list-style: none; padding: 0; margin: 8px 0 0; }
.ents li { border-top: 1px solid var(--line); padding: 8px 0; display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 12px; }
.ents li > div:last-child { display: flex; align-items: center; gap: 6px; }
.ents a { font-weight: 600; text-decoration: none; }
.ents a:hover { text-decoration: underline; }

/* отзывы */
.review .head { display: flex; flex-wrap: wrap; gap: 4px 12px; justify-content: space-between; }
.review .sig { font-weight: 600; }
.kv { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
.actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.panel { border-top: 1px dashed var(--line); margin-top: 10px; padding-top: 10px; }

details { margin: 8px 0; }
summary { cursor: pointer; font-weight: 600; }
.doc-text { max-height: 50vh; overflow: auto; background: var(--surface-2); border-radius: 8px; padding: 10px 12px; white-space: pre-wrap; font-size: 0.95rem; }

table { border-collapse: collapse; width: 100%; font-size: 0.95rem; }
th, td { text-align: left; border-bottom: 1px solid var(--line); padding: 6px 8px; vertical-align: top; }
.table-wrap { overflow-x: auto; }

.doc h2 { font-size: 1.15rem; }
.doc li { margin: 4px 0; }
.stars { display: inline-flex; gap: 4px; }
.steps { color: var(--muted); font-size: 0.9rem; }
fieldset.card > legend { float: left; width: 100%; font-size: 1.05rem; margin-bottom: 6px; }
fieldset.card > legend + * { clear: both; }

/* Поиск в справочниках анкеты. */
[hidden] { display: none !important; }
.search-picker label { display: grid; gap: .5rem; }
.picker-results { display: grid; gap: .35rem; max-height: 22rem; overflow-y: auto; margin-top: .4rem; }
.picker-results button { text-align: left; white-space: normal; }

/* Две шкалы законченной прежней анкеты: щит и HP. */
.survey-progress { margin: .7rem 0 1rem; }
.progress-label { font-size: .9rem; margin-bottom: .4rem; }
.survey-progress progress { width: 100%; height: 16px; accent-color: #65a7dd; }
.survey-progress.hp progress { accent-color: #77ba8b; }
.question-error { padding: 1rem; margin: 1rem 0; border: 2px solid #e0a64e; border-radius: .6rem; background: #5a3c181f; font-weight: 600; }
.question-invalid { outline: 2px solid #e0a64e; outline-offset: 8px; border-radius: .5rem; }
#activities-builder .row input { min-width: 200px; flex: 1; }
@media (prefers-reduced-motion: no-preference) { .survey-progress.hp { animation: hp-enter .35s ease-out; } @keyframes hp-enter { from { opacity: .4; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } } }

.rating-stars { display: flex; gap: .5rem; align-items: center; }
.rating-stars label { display: grid; justify-items: center; gap: .2rem; cursor: pointer; }
.rating-stars span { font-size: 2rem; filter: grayscale(1); opacity: .55; }
.rating-stars span.on { filter: none; opacity: 1; }
.rating-stars input:focus-visible + span { outline: 2px solid currentColor; }

/* Общие экраны каталога и отзывов — действующая палитра сайта. */
.catalog-filters {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:20px 0;}
.catalog-filters .field {margin:0;min-width:0;}
.picker-results {max-height:320px;overflow-y:auto;}
.company-heading {display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.company-heading h2 {margin:.2em 0;}
.company-enterprises {margin:18px 0 0 10px;padding-left:20px;border-left:2px solid var(--line);}
.enterprise-card {padding:18px 0;border-top:1px solid var(--line);}
.enterprise-card:first-child {border-top:0;}
.enterprise-card h3 {margin:0 0 8px;}
.condition-facts {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:18px 0;}
.condition-facts>div {display:flex;flex-direction:column;gap:4px;}
.condition-facts small {color:var(--muted);}
.rating {display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.score-stars {position:relative;display:inline-block;white-space:nowrap;color:var(--gray);font-size:23px;letter-spacing:2px;}
.score-stars::before {content:'★★★★★';position:absolute;inset:0 auto 0 0;width:var(--rating);overflow:hidden;color:var(--accent);}
.conditions-table {width:100%;table-layout:fixed;border-collapse:collapse;margin:20px 0;}
.conditions-table th,.conditions-table td {text-align:left;vertical-align:top;padding:12px 6px;border-bottom:1px solid var(--line);overflow-wrap:anywhere;}
.conditions-table th:first-child {width:24%;}
.conditions-table th:last-child {width:12%;}
.condition-distribution {display:grid;grid-template-columns:120px minmax(20px,1fr) 25px;align-items:center;gap:8px;margin:8px 0;font-size:13px;}
.distribution-track {height:8px;border-radius:8px;background:var(--line);overflow:hidden;}
.distribution-track>span {display:block;height:100%;background:var(--accent);}
.wish-control {display:flex;gap:10px;align-items:center;}
.wish-heart {font-family:'Noto Color Emoji','Segoe UI Emoji',sans-serif;width:52px;height:50px;padding:4px;font-size:30px;line-height:1;border-color:#a96c83;color:#ee8eae;}
.wish-heart[data-level='2'] {border-width:2px;background:color-mix(in srgb,#ee8eae 16%,var(--surface));}
.wish-options {font-size:13px;}
.check {display:flex!important;align-items:flex-start;gap:10px;}
.check input {width:18px;min-width:18px;margin-top:4px;}
.consent-choice {padding:16px;border:1px solid var(--line);border-radius:12px;margin:12px 0;}
.consent-choice p {margin-left:28px;}
.required-label {color:var(--accent);}
.signature-preview {padding:18px;border:1px solid var(--accent);border-radius:12px;margin:20px 0;}
.signature-preview h3 {margin-top:0;}
.rating-stars input {position:absolute;width:1px;height:1px;opacity:0;}
.rating-stars label {position:relative;min-width:38px;min-height:42px;}
.sr-only {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
@media(max-width:620px){.catalog-filters{grid-template-columns:1fr}.condition-facts{grid-template-columns:1fr;gap:12px}.company-enterprises{padding-left:12px;margin-left:2px}.condition-distribution{grid-template-columns:78px minmax(20px,1fr) 18px;font-size:12px;gap:5px}.conditions-table{font-size:13px}.conditions-table th,.conditions-table td{padding:10px 3px}.company-heading{align-items:flex-start}}

/* Скрытые вопросы не должны показываться из-за display у компонентов. */
[hidden] {display:none!important;}

/* Прогресс законченной прежней версии: щит и HP. */
.prog {height:6px;background:var(--surface-2);border-radius:6px;overflow:hidden;margin:4px 0 6px;}
.prog i {display:block;height:100%;background:var(--accent);transition:width .25s;}
.prog.shield i {background:var(--accent);}
.prog.hp2 i {background:var(--ok);}
.prog.hp2.enter i {animation:hpIn .6s ease-out;}
.progress-caption {font-size:.82rem;color:var(--muted);min-height:8px;}
@keyframes hpIn {from {width:0;}}
@media(prefers-reduced-motion:reduce){.prog.hp2.enter i{animation:none}.prog i{transition:none}}
/* Компоновка вопросов из законченной версии: одна карточка и обычные варианты списка. */
.practice-form {max-width:720px;margin:0 auto;}
.practice-form>#part1,.practice-form>#part2 {background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:12px;}
.practice-form>#part1>h2 {display:none;}
.practice-form>#part2>h2 {font-size:.92rem;font-weight:400;margin:0 0 12px;}
.practice-form .survey-progress {margin:0 0 14px;}
.practice-form .field {margin:0 0 12px;}
.practice-form>.field,.practice-form .survey-question {border:0;padding:0;}
.practice-form legend {font-size:1.3rem;font-weight:600;margin:8px 0 12px;}
.practice-form .survey-question .field legend {font-size:.92rem;margin:0 0 8px;}
.picker-results {display:grid;gap:8px;}
.picker-results button {min-height:52px;width:100%;text-align:left;padding:10px 14px;border-radius:12px;border:1.5px solid var(--line);background:var(--surface);}
.picker-results button:hover {border-color:var(--accent);}
.practice-form input[type=search] {min-height:46px;border-radius:10px;}
.practice-form .row:has(>button[type=submit]) {display:flex;gap:10px;margin-top:18px;padding-top:10px;border-top:1px solid var(--line);}
.practice-form button[type=submit] {margin-left:auto;}

/* Согласованные точечные изменения навигации и анкеты. */
.brand-row {display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;}
.header-tools {display:flex;gap:8px;}
.site-tabs {display:flex;gap:6px;padding:6px;border:1px solid var(--line);border-radius:16px;background:var(--surface);overflow-x:auto;flex-wrap:nowrap;width:100%;}
.site-tabs a {padding:12px 18px;border-radius:12px;white-space:nowrap;text-decoration:none;}
.site-tabs a[aria-current=page] {background:color-mix(in srgb,var(--accent) 16%,var(--surface));}
.picker-results {max-height:174px;}
.wish-heart[data-level='0'] {color:var(--muted);border-color:var(--line);background:transparent;font-family:sans-serif;}
.entity-title {display:flex;align-items:center;justify-content:space-between;gap:12px;}
.directory-entry>summary {cursor:pointer;}
.directory-entry>summary h2 {display:inline-block;margin:0;}
.directory-body {padding-top:20px;}
.wish-options>summary {list-style:none;cursor:pointer;font-size:24px;padding:0 6px;}
.wish-options[open] {position:relative;}
.wish-options[open]>.row {position:absolute;right:0;z-index:5;min-width:160px;background:var(--surface);padding:12px;border:1px solid var(--line);border-radius:12px;}
.company-hero {margin-bottom:22px;}
.activity-suggestions {display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;}
.activity-suggestions button,.activity-selected button {border-radius:24px;text-align:left;}
.activity-selected {margin-top:12px;}
.activity-selected button {border-color:var(--accent);}
fieldset:has(> .chips input[name=worked]) .chips {flex-direction:column;align-items:flex-start;}
.field:has(input[name=worked]) .chips {flex-direction:column;align-items:flex-start;}

/* Выпадающие списки не меняют высоту строки фильтров. */
.search-picker {position:relative;min-width:0;}
.search-picker:focus-within {z-index:12;}
.search-picker>.picker-results {position:absolute;top:100%;left:0;right:0;z-index:12;max-height:174px;overflow-y:auto;overscroll-behavior:contain;margin-top:4px;padding:6px;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:0 8px 24px #0004;}
.wish-heart {display:inline-flex;align-items:center;justify-content:center;}
.wish-heart svg {display:block;flex:none;}
.wish-heart[data-level='1'] {color:#ee8eae;}

/* Компания — верхний уровень, предприятия сохраняют вложенность. */
.company-name {font-size:1.35rem;font-weight:750;line-height:1.3;color:var(--text);margin:0 0 6px;}
.company-name a {color:inherit;text-decoration:none;}
.company-name a:hover,.company-name a:focus-visible {color:var(--accent);text-decoration:underline;}
.enterprise-name {font-size:1.1rem;line-height:1.35;color:var(--accent);}
.enterprise-name a {color:inherit;text-decoration:none;}
.enterprise-name a:hover,.enterprise-name a:focus-visible {text-decoration:underline;}
.company-heading {align-items:flex-start;}
.company-heading-actions {display:flex;align-items:center;gap:16px;flex-wrap:wrap;justify-content:flex-end;}
.entity-kind {display:block;font-size:.75rem;color:var(--muted);margin-bottom:4px;}
.facts-empty {margin:18px 0;}
.wish-counts {display:flex;align-items:center;gap:8px 18px;flex-wrap:wrap;margin-top:12px;font-size:.875rem;color:var(--muted);}
.wish-counts>span {display:inline-flex;align-items:center;gap:5px;}
.wish-counts svg {width:18px;height:18px;}
.wish-year {margin-left:auto;}
/* Контакты организаторов рядом с темой и выходом. */
.organizer-contact {position:relative;}
.organizer-contact>summary {list-style:none;display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:10px;border:1px solid var(--line);border-radius:10px;cursor:pointer;}
.organizer-contact>summary::-webkit-details-marker {display:none;}
.organizer-contact-panel {position:absolute;right:0;top:calc(100% + 8px);z-index:30;display:grid;gap:12px;width:min(310px,calc(100vw - 32px));padding:18px;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 8px 24px #0005;}
.organizer-contact-panel h3 {margin:0;font-size:1rem;}
.contact-address {overflow-wrap:anywhere;}
.provider-row {display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--line);}
.provider-row .btn {margin-left:auto;}
.contact-status {font-size:.875rem;color:var(--muted);}
.contact-status.confirmed {color:var(--ok);font-weight:650;}
.email-confirmation {margin-top:20px;}
.email-confirmation h4 {margin-bottom:8px;}
.email-confirm-details {margin-top:12px;}
.confirmation-code {margin-top:12px;}
.confirmation-code .row {margin-bottom:10px;}
.confirmation-message {margin-bottom:0;}
@media(max-width:620px){.company-heading-actions{justify-content:flex-start}.wish-counts{gap:8px 12px}.provider-row .btn{margin-left:0}}

.field-error {padding:10px 12px;border-left:3px solid var(--warn);border-radius:6px;background:var(--surface-2);color:var(--text);font-weight:600;}

/* Результат остаётся у действия; короткий успех дополнительно виден у края экрана. */
.action-feedback {flex-basis:100%;width:100%;margin:10px 0 0;}
.toast-tray {position:fixed;right:20px;bottom:20px;z-index:100;display:grid;gap:10px;width:min(360px,calc(100vw - 32px));pointer-events:none;}
.toast-tray .toast {pointer-events:auto;margin:0;box-shadow:0 6px 24px #0004;background:var(--surface);max-height:30vh;overflow:auto;}
@media(max-width:620px){.toast-tray{left:16px;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));width:auto}.toast-tray .toast{max-height:24vh}}

.organizer-contact-panel {position:fixed;right:auto;top:auto;overflow-y:auto;overscroll-behavior:contain;}
.organizer-contact>summary {gap:8px;}
.search-picker>.picker-results:has(.picker-missing) {position:relative;top:auto;left:auto;right:auto;}

.picker-results button:has(.picker-hint) {display:grid;gap:4px;text-align:left;}
.picker-hint {display:block;color:var(--muted);font-size:.82rem;line-height:1.35;}
.private-reply {white-space:pre-wrap;overflow-wrap:anywhere;}

.wish-count-heart {display:inline-flex;color:#ee8eae;}
