/* === REPORT.CSS ===
   assets/css/report.css
   НАЗНАЧЕНИЕ: отчет под чатом. Эстетика наследуется от сцены - ни одного нового
               шрифта, ни одного литерального цвета: только токены из base.css.
               Отчет и разговор должны выглядеть одним продуктом, а не двумя.
   СВЯЗИ: base.css (токены), stage.css (каркас), report.js, chart_svg.js
   РАЗМЕР: ~150 строк */

.av-report-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    margin: 0 0 6px;
}

.av-report-title {
    font-family: var(--font-brand);
    font-size: 19px;
    font-weight: 400;
    letter-spacing: 0.02em;
    color: var(--fg);
    margin: 0;
}

/* Кнопка скачивания отчета - тонкая, в стиле служебных кнопок сцены (av-slot):
   рамка-волосок, без заливки, тот же ритм. Не перетягивает внимание с заголовка. */
.av-report-download {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-family: var(--font-ui);
    font-size: 12px;
    color: var(--fg-faint);
    background: transparent;
    border: 1px solid var(--hair-2);
    border-radius: 2px;
    padding: 7px 12px;
    cursor: pointer;
    align-self: center;
    transition: color 140ms var(--ease-out-quart, ease), border-color 140ms var(--ease-out-quart, ease);
}

.av-report-download:hover,
.av-report-download:focus-visible {
    color: var(--fg);
    border-color: var(--fg-faint);
}

.av-report-download svg {
    display: block;
    flex: 0 0 auto;
}

.av-report-sub {
    font-family: var(--font-ui);
    font-size: 12px;
    line-height: 1.55;
    color: var(--fg-faint);
    margin: 0 0 var(--gap-l);
    max-width: 44ch;
}

.av-report-section {
    margin-bottom: var(--gap-l);
}

.av-section-title {
    font-family: var(--font-ui);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.09em;
    text-transform: uppercase;
    color: var(--fg-faint);
    margin: 0 0 12px;
    padding-bottom: 7px;
    border-bottom: 1px solid var(--hair-2);
}

.av-block {
    margin-bottom: 18px;
    padding: 14px 0 0;
}

.av-block-title {
    font-family: var(--font-ui);
    font-size: 13px;
    font-weight: 500;
    line-height: 1.45;
    color: var(--fg);
    margin: 0 0 10px;
}

.av-block-unit {
    font-family: var(--font-ui);
    font-size: 10px;
    color: var(--fg-faint);
    margin-top: 4px;
}

.av-block-note {
    font-family: var(--font-ui);
    font-size: 10px;
    line-height: 1.5;
    color: var(--fg-faint);
    margin-top: 8px;
    font-style: italic;
}

/* Источник обязателен под всем, что несет числа - и должен читаться как служебная
   строка, а не как часть утверждения */
.av-block-source {
    font-family: var(--font-ui);
    font-size: 10px;
    line-height: 1.5;
    color: var(--fg-faint);
    margin-top: 9px;
    padding-top: 7px;
    border-top: 1px solid var(--hair-2);
}

.av-block-link {
    color: var(--accent-soft);
    text-decoration: none;
    margin-left: 5px;
}

.av-block-link:hover { color: var(--accent); }

.av-block-conf { opacity: 0.75; }

/* --- карточка наблюдения --- */
.av-card-eyebrow {
    font-family: var(--font-ui);
    font-size: 9px;
    font-weight: 600;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--accent-soft);
    margin-bottom: 8px;
}

.av-card-fact {
    font-family: var(--font-insight);
    font-size: 17px;
    font-style: italic;
    line-height: 1.4;
    color: var(--fg);
    margin: 0 0 9px;
}

.av-card-meaning {
    font-family: var(--font-ui);
    font-size: 12px;
    line-height: 1.6;
    color: var(--fg-dim);
    margin: 0 0 8px;
}

.av-card-hyp {
    font-family: var(--font-ui);
    font-size: 11px;
    line-height: 1.55;
    color: var(--fg-faint);
    margin: 0;
}

.av-card-hyp-label { color: var(--accent-soft); }

/* --- таблица: единственное, чему разрешен свой горизонтальный скролл --- */
.av-table-scroll {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.av-table {
    width: 100%;
    border-collapse: collapse;
    font-family: var(--font-ui);
    font-size: 11px;
    line-height: 1.5;
}

.av-table th {
    text-align: left;
    font-weight: 500;
    color: var(--fg-faint);
    padding: 7px 10px 7px 0;
    border-bottom: 1px solid var(--hair-2);
    white-space: nowrap;
}

.av-table td {
    color: var(--fg-dim);
    padding: 9px 10px 9px 0;
    border-bottom: 1px solid var(--hair-2);
    vertical-align: top;
}

.av-table tr:last-child td { border-bottom: none; }

/* --- графики и схемы --- */
.av-chart-holder {
    width: 100%;
    margin: 4px 0 2px;
}

.av-chart-holder svg { display: block; width: 100%; height: auto; }

@keyframes av-draw { to { stroke-dashoffset: 0; } }

/* --- свернутый отчет: карточка, которую можно раскрыть обратно --- */
.av-report--collapsed .av-report-section,
.av-report--collapsed .av-report-sub { display: none; }

.av-report--collapsed .av-report-title {
    font-size: 13px;
    color: var(--fg-dim);
    cursor: pointer;
}

@media (prefers-reduced-motion: reduce) {
    .av-chart-holder svg path { animation: none !important; stroke-dashoffset: 0 !important; }
}

/* --- продуктовая часть (ТЗ раздел 12). Продолжение отчета, не отдельная страница:
       те же токены, тот же ритм. Читается как следующий разворот одного документа. --- */

.av-product {
    margin-top: var(--gap-l);
    padding-top: var(--gap-l);
    border-top: 1px solid var(--hair-2);
    /* Последний блок не должен уходить под кнопку речи (M7) */
    padding-bottom: calc(var(--gap-l) * 2);
}

.av-product-heading {
    font-family: var(--font-brand);
    font-size: 19px;
    font-weight: 400;
    letter-spacing: 0.02em;
    color: var(--fg);
    margin: 0 0 var(--gap-l);
}

.av-product-block {
    margin-bottom: var(--gap-l);
}

.av-product-title {
    font-family: var(--font-ui);
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.09em;
    text-transform: uppercase;
    color: var(--fg-faint);
    margin: 0 0 12px;
    padding-bottom: 7px;
    border-bottom: 1px solid var(--hair-2);
}

.av-product-list {
    margin: 0;
    padding: 0;
    list-style: none;
}

.av-product-item {
    font-family: var(--font-ui);
    font-size: 13px;
    line-height: 1.55;
    color: var(--fg);
    margin-bottom: 10px;
    padding-left: 14px;
    position: relative;
    max-width: 52ch;
}

/* Маркер списка рисуем сами: у list-style нет управления цветом и положением */
.av-product-item::before {
    content: "";
    position: absolute;
    left: 0;
    top: 9px;
    width: 4px;
    height: 1px;
    background: var(--fg-faint);
}

.av-product-item:last-child {
    margin-bottom: 0;
}

/* --- оффер встречи и форма записи (ТЗ раздел 13).
       Оффер выше кнопки: сначала человек читает, что будет, потом решает. --- */

.av-booking {
    margin-top: var(--gap-l);
    padding-top: var(--gap-l);
    border-top: 1px solid var(--hair-2);
    padding-bottom: calc(var(--gap-l) * 2);
}

.av-offer-title {
    font-family: var(--font-brand);
    font-size: 17px;
    font-weight: 400;
    color: var(--fg);
    margin: 0 0 10px;
}

.av-offer-body,
.av-offer-outcome {
    font-family: var(--font-ui);
    font-size: 13px;
    line-height: 1.55;
    color: var(--fg);
    margin: 0 0 8px;
    max-width: 52ch;
}

.av-offer-outcome {
    color: var(--fg-faint);
}

.av-booking-form {
    margin-top: var(--gap-l);
    display: flex;
    flex-direction: column;
    gap: 10px;
    max-width: 34ch;
}

.av-booking-input {
    font-family: var(--font-ui);
    font-size: 13px;
    color: var(--fg);
    background: transparent;
    border: 0;
    border-bottom: 1px solid var(--hair-2);
    padding: 9px 0;
    outline: none;
}

.av-booking-input:focus {
    border-bottom-color: var(--fg-faint);
}

.av-slots-q {
    font-family: var(--font-ui);
    font-size: 12px;
    color: var(--fg-faint);
    margin: 6px 0 8px;
}

.av-slots-row {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.av-slot {
    font-family: var(--font-ui);
    font-size: 12px;
    color: var(--fg-faint);
    background: transparent;
    border: 1px solid var(--hair-2);
    border-radius: 2px;
    padding: 7px 13px;
    cursor: pointer;
    transition: color 140ms var(--ease-out-quart, ease), border-color 140ms var(--ease-out-quart, ease);
}

.av-slot.is-picked {
    color: var(--fg);
    border-color: var(--fg-faint);
}

.av-booking-submit {
    font-family: var(--font-ui);
    font-size: 13px;
    color: var(--fg);
    background: transparent;
    border: 1px solid var(--fg-faint);
    border-radius: 2px;
    padding: 11px 18px;
    margin-top: 6px;
    cursor: pointer;
}

.av-booking-submit:disabled {
    opacity: 0.5;
    cursor: default;
}

.av-booking-msg,
.av-booking-done {
    font-family: var(--font-ui);
    font-size: 12px;
    line-height: 1.5;
    color: var(--fg-faint);
    margin: 4px 0 0;
}

/* ============================================================================
   МОБИЛЬНАЯ АДАПТАЦИЯ (iPhone 12 = 390px, контент ~346px после паддингов сцены)
   Раньше блока не было вовсе: фиксированные 9-13px не читались с телефона,
   ширины в ch (44/52ch) не влезали в 346px и давали горизонтальный скролл.
   Правки живут ТОЛЬКО внутри @media - десктоп не меняется.
   ============================================================================ */
@media (max-width: 480px) {
    /* --- заголовки крупнее --- */
    .av-report-title { font-size: 22px; }
    .av-product-heading { font-size: 22px; }
    .av-offer-title { font-size: 20px; }

    .av-section-title,
    .av-product-title { font-size: 13px; letter-spacing: 0.07em; }

    .av-block-title { font-size: 16px; line-height: 1.45; }

    /* --- тело: нечитаемые 9-12px подняты до 13-15px --- */
    .av-report-sub { font-size: 15px; max-width: 100%; }

    .av-block-unit,
    .av-block-note,
    .av-block-source { font-size: 13px; }

    .av-card-eyebrow { font-size: 12px; letter-spacing: 0.1em; }
    .av-card-fact { font-size: 19px; }
    .av-card-meaning { font-size: 15px; }
    .av-card-hyp { font-size: 14px; }

    .av-product-item { font-size: 15px; max-width: 100%; }

    .av-offer-body,
    .av-offer-outcome { font-size: 15px; max-width: 100%; }

    /* форма записи: поле на всю ширину, не в 34ch */
    .av-booking-form { max-width: 100%; }
    .av-booking-input,
    .av-booking-submit { font-size: 15px; }
    .av-slots-q,
    .av-slot,
    .av-booking-msg,
    .av-booking-done { font-size: 13px; }

    /* --- таблица: у нее уже есть .av-table-scroll (overflow-x:auto),
           поэтому широкая таблица скроллится и не ломает страницу.
           Шрифт поднят до читаемого, ячейки не жмем в 0 паддинги. --- */
    .av-table { font-size: 13px; }

    /* кнопка скачивания: подпись рядом с иконкой на 390px помещается,
       но чуть компактнее по паддингу */
    .av-report-download { font-size: 13px; padding: 7px 10px; }
}

/* ============================================================================
   ПЕЧАТЬ / СОХРАНЕНИЕ В PDF (кнопка "Скачать отчет" -> window.print).
   На iOS Safari печать сохраняет в PDF нативно. Убираем всю сцену вокруг отчета,
   отчет на белом фоне черным текстом - чистый документ без теней и масок.
   ============================================================================ */
@media print {
    /* всё, что не отчет, из печати убрать */
    .av-face,
    .av-voice,
    .av-caption,
    .av-tap,
    .av-type,
    .av-type-link,
    .av-lang,
    .av-menu,
    .av-ambient,
    .av-research,
    .av-thought,
    .av-control,
    .av-report-download { display: none !important; }

    /* документ на белом, текст черный, без градиентов и подсветок */
    html, body,
    .av-body,
    .av-stage,
    .av-core,
    .av-report {
        background: #fff !important;
        color: #000 !important;
        box-shadow: none !important;
    }

    /* сцена не должна навязывать печати свою высоту/липкость/паддинги */
    .av-stage {
        min-height: auto !important;
        padding: 0 !important;
        max-width: 100% !important;
    }

    .av-core {
        position: static !important;
        min-height: 0 !important;
    }

    .av-report {
        margin: 0 !important;
        padding-bottom: 0 !important;
        max-width: 100% !important;
    }

    /* весь текст отчета в черный, чтобы бледные токены не пропали на бумаге */
    .av-report,
    .av-report * {
        color: #000 !important;
        -webkit-mask-image: none !important;
        mask-image: none !important;
        text-shadow: none !important;
    }

    /* волоски и границы в серый, чтобы структура читалась в PDF */
    .av-section-title,
    .av-product-title,
    .av-block-source,
    .av-table th,
    .av-table td,
    .av-product,
    .av-booking {
        border-color: #ccc !important;
    }

    /* блоки не должны рваться посередине между страницами */
    .av-block,
    .av-report-section,
    .av-card-fact,
    .av-table tr {
        break-inside: avoid;
        page-break-inside: avoid;
    }

    /* размеры для бумаги: читаемо, но компактно */
    .av-report-title { font-size: 20px; }
    .av-report-sub { max-width: 100%; }
    .av-product-item,
    .av-offer-body,
    .av-offer-outcome { max-width: 100%; }
    .av-table { font-size: 11px; }
}
