zov-tech/miniapp/assets/podbor.css
wasrusgen c2be5e846f miniapp: inline report after submit + standalone preview-report.html
REPORT RENDERER (podbor.js):
- New renderReport(ai, leadId) function — beautiful inline report after submit success
- Shows by_category with up to 5 models per category
- Model card: photo (88x88), brand · name, price range, rating + reviews + stores
- Highlights (with tech translations), pros (green), cons (orange)
- External links to WB / Я.Маркет / OZON / DNS (when enriched data present)
- Comparison table per category (accordion details)
- Total price block (dark theme contrast)
- Warnings block (when AI returns concerns)

CSS (podbor.css):
- .report-* classes: head, summary, cat, model, links, compare, total, warnings
- Editorial Calm palette — walnut accents, paper bg, Newsreader for titles
- Responsive: model card grid 88px image + 1fr body
- Placeholder gradient when no image (camera emoji)

STANDALONE PREVIEW (preview-report.html):
- Mock AI response with 3 fridges + 2 hobs
- Same render logic, runs without backend
- Visit: https://wasrusgen.github.io/zov-tech/preview-report.html

NEXT: integrate proxy6 token → real photos/prices instead of placeholders
2026-05-11 12:26:58 +03:00

1411 lines
30 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* ============================================================
Подбор техники — стили (Editorial Calm)
============================================================ */
/* ----- Header ----- */
.podbor-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: var(--s4);
}
.podbor-back {
width: 28px;
height: 28px;
display: grid;
place-items: center;
color: var(--ink);
cursor: pointer;
}
.podbor-back svg { width: 20px; height: 20px; }
.podbor-title {
font-family: var(--font-mono);
font-size: 11px;
font-weight: 500;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--muted);
}
/* ----- Progress ----- */
.podbor-progress {
margin-bottom: var(--s5);
}
.podbor-progress-bar {
height: 2px;
background: var(--line);
border-radius: var(--r-pill);
overflow: hidden;
margin-bottom: 6px;
}
.podbor-progress-bar .bar {
height: 100%;
background: var(--accent-2);
border-radius: inherit;
transition: width 0.3s ease;
}
.podbor-progress-meta {
display: flex;
justify-content: space-between;
font-family: var(--font-mono);
font-size: 10px;
font-weight: 500;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--muted);
}
.podbor-progress-meta .num { color: var(--ink); }
/* ----- Лента категорий ----- */
.cat-strip {
display: flex;
gap: 6px;
overflow-x: auto;
margin: 0 -20px var(--s4);
padding: 0 20px 4px;
scrollbar-width: none;
-ms-overflow-style: none;
}
.cat-strip::-webkit-scrollbar { display: none; }
.cat-strip-chip {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 6px 12px 6px 8px;
background: #fff;
border: 1px solid var(--line);
border-radius: var(--r-pill);
font-family: var(--font-sans);
font-size: 12px;
font-weight: 500;
letter-spacing: -0.005em;
color: var(--muted);
white-space: nowrap;
cursor: pointer;
flex-shrink: 0;
transition: all 0.12s;
}
.cat-strip-chip:active { transform: scale(0.96); }
.cat-strip-chip.active {
border-color: var(--accent-2);
background: var(--warm);
color: var(--ink);
box-shadow: 0 0 0 1px var(--accent-2) inset;
}
.cat-strip-chip.filled { color: var(--ink); }
.cat-strip-icon {
width: 16px;
height: 16px;
display: grid;
place-items: center;
color: var(--accent-2);
}
.cat-strip-icon svg { width: 16px; height: 16px; }
.cat-strip-tick {
width: 12px;
height: 12px;
display: grid;
place-items: center;
color: var(--accent-2);
margin-left: 2px;
}
.cat-strip-tick svg { width: 11px; height: 11px; stroke-width: 2.5; }
/* ----- Step container ----- */
.podbor-screen { animation: fadeIn 0.2s ease; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
.podbor-step {
display: flex;
flex-direction: column;
gap: var(--s4);
}
.display-title {
font-family: var(--font-display);
font-style: italic;
font-size: 32px;
font-weight: 400;
line-height: 1.05;
letter-spacing: -0.02em;
color: var(--ink);
margin: 0;
}
.display-title .accent { color: var(--accent-2); }
.lede {
font-size: 14.5px;
line-height: 1.45;
color: var(--ink-2);
margin: 0;
}
/* ----- Form basics ----- */
.field {
display: flex;
flex-direction: column;
gap: 4px;
}
.field-label {
font-family: var(--font-mono);
font-size: 10px;
font-weight: 500;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--muted);
}
.field input,
.field textarea,
.field-inline input {
font-family: var(--font-ui);
font-size: 15px;
color: var(--ink);
background: var(--card);
border: 1px solid var(--line-strong);
border-radius: var(--r-btn);
padding: 11px 12px;
outline: none;
transition: border-color 0.12s;
width: 100%;
}
.field input:focus,
.field textarea:focus,
.field-inline input:focus { border-color: var(--accent-2); }
.field textarea { resize: vertical; min-height: 64px; font-family: var(--font-ui); }
.form-row { display: flex; flex-direction: column; gap: var(--s2); }
.form-row.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s2); }
/* ----- Block grouping ----- */
.block {
background: var(--card);
border: 1px solid var(--line-strong);
border-radius: var(--r-card);
padding: var(--s4);
display: flex;
flex-direction: column;
gap: var(--s3);
}
.block-head {
font-family: var(--font-mono);
font-size: 11px;
font-weight: 500;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--muted);
}
.hint {
font-family: var(--font-mono);
font-size: 10px;
letter-spacing: 0.10em;
text-transform: uppercase;
color: var(--muted);
}
/* ----- Categories grid ----- */
.cat-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: var(--s2);
}
.cat-card {
background: var(--card);
border: 1px solid var(--line-strong);
border-radius: var(--r-card);
padding: 12px;
display: flex;
flex-direction: column;
gap: 8px;
align-items: flex-start;
position: relative;
cursor: pointer;
transition: background 0.12s, border-color 0.12s;
min-height: 84px;
}
.cat-card:active { background: var(--paper-2); }
.cat-card.active {
border-color: var(--ink);
background: var(--paper-2);
}
.cat-card .cat-icon {
width: 26px; height: 26px;
display: grid; place-items: center;
color: var(--ink);
}
.cat-card .cat-icon svg { width: 22px; height: 22px; stroke-width: 1.4; }
.cat-card .cat-label {
font-family: var(--font-ui);
font-size: 13.5px;
font-weight: 600;
letter-spacing: -0.01em;
color: var(--ink);
}
.cat-card .cat-check {
position: absolute;
top: 10px; right: 10px;
width: 18px; height: 18px;
background: var(--accent-2);
color: var(--paper);
border-radius: var(--r-pill);
display: grid; place-items: center;
}
.cat-card .cat-check svg { width: 12px; height: 12px; stroke-width: 2.5; }
/* ----- Niches ----- */
.niche-list { display: flex; flex-direction: column; gap: var(--s2); }
.niche-row { display: flex; flex-direction: column; gap: 4px; }
.niche-label {
font-family: var(--font-ui);
font-size: 13px;
font-weight: 500;
color: var(--ink-2);
}
.niche-inputs {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 6px;
min-width: 0;
}
.niche-inputs input {
min-width: 0; /* критично — иначе input не даёт колонке сжиматься */
width: 100%;
font-family: var(--font-mono);
font-size: 12.5px;
padding: 8px 4px;
text-align: center;
background: var(--paper);
border: 1px solid var(--line);
border-radius: var(--r-tag);
color: var(--ink);
}
.niche-inputs input::placeholder { font-size: 11px; }
.budget-list { display: flex; flex-direction: column; gap: var(--s2); }
.field-inline {
display: flex; align-items: center; justify-content: space-between; gap: var(--s3);
font-family: var(--font-ui); font-size: 14px; color: var(--ink-2);
}
.field-inline input {
width: 130px; padding: 8px 10px; font-family: var(--font-mono); font-size: 13px;
background: var(--paper); border: 1px solid var(--line); border-radius: var(--r-tag);
text-align: right; color: var(--ink);
}
/* ----- Price range (от — до по категориям) ----- */
.price-list { display: flex; flex-direction: column; gap: var(--s3); }
.price-row {
display: flex;
flex-direction: column;
gap: 6px;
}
.price-label {
font-family: var(--font-ui);
font-size: 13.5px;
font-weight: 500;
color: var(--ink-2);
}
.price-inputs {
display: flex;
align-items: center;
gap: 6px;
min-width: 0;
}
.price-inputs input {
flex: 1;
min-width: 0;
width: 100%;
font-family: var(--font-mono);
font-size: 13px;
padding: 8px 10px;
text-align: center;
background: var(--paper);
border: 1px solid var(--line);
border-radius: var(--r-tag);
color: var(--ink);
}
.price-inputs .dash {
font-family: var(--font-mono);
color: var(--muted);
flex-shrink: 0;
}
.price-inputs .rub {
font-family: var(--font-mono);
font-size: 12px;
color: var(--muted);
flex-shrink: 0;
padding-left: 2px;
}
.price-total {
margin-top: var(--s2);
padding-top: var(--s2);
border-top: 1px solid var(--line);
font-family: var(--font-mono);
font-size: 11px;
letter-spacing: 0.10em;
text-transform: uppercase;
color: var(--ink-2);
text-align: right;
}
.price-total strong { font-family: var(--font-ui); font-size: 14px; color: var(--ink); font-weight: 600; }
.price-total.muted { color: var(--muted); }
/* ----- Option chips ----- */
.opt-list { display: flex; flex-wrap: wrap; gap: 6px; }
.opt {
font-family: var(--font-ui);
font-size: 13px;
font-weight: 500;
padding: 8px 12px;
border-radius: var(--r-pill);
border: 1px solid var(--line-strong);
background: var(--paper);
color: var(--ink-2);
cursor: pointer;
transition: all 0.12s;
}
.opt:active { transform: scale(0.97); }
.opt.on {
background: var(--ink);
color: var(--paper);
border-color: var(--ink);
}
/* ----- Brand chips ----- */
/* Тиры (Premium/Middle/Budget) различаются цветом, без явных текстовых ярлыков.
Внутренне храним tier для аналитики «температуры» клиента. */
.brand-chips {
display: flex;
flex-wrap: wrap;
gap: 6px;
padding: 6px 0;
border-top: 1px dashed var(--line);
}
.brand-chips:first-of-type {
border-top: none;
padding-top: 0;
}
.chip {
font-family: var(--font-ui);
font-size: 12.5px;
font-weight: 500;
padding: 6px 11px;
border-radius: var(--r-tag);
border: 1px solid;
cursor: pointer;
transition: all 0.12s;
position: relative;
}
/* Базовый цвет покоя по тирам — без слов, только тёплый/холодный оттенок */
.chip.tier-premium {
background: var(--paper);
color: var(--accent-2); /* walnut */
border-color: rgba(107, 74, 43, 0.35);
}
.chip.tier-middle {
background: var(--paper);
color: var(--ink-2);
border-color: var(--line-strong);
}
.chip.tier-budget {
background: var(--paper);
color: var(--muted);
border-color: var(--line);
}
/* Состояние preferred — заливка цветом тира */
.chip.tier-premium.status-preferred {
background: var(--accent-2); /* walnut */
color: var(--paper);
border-color: var(--accent-2);
font-weight: 600;
}
.chip.tier-middle.status-preferred {
background: var(--ink);
color: var(--paper);
border-color: var(--ink);
font-weight: 600;
}
.chip.tier-budget.status-preferred {
background: var(--muted);
color: var(--paper);
border-color: var(--muted);
font-weight: 600;
}
.chip.status-preferred::before { content: "★ "; }
/* Состояние acceptable — обводка цветом тира, прозрачная заливка */
.chip.status-acceptable {
background: var(--paper-2);
}
.chip.tier-premium.status-acceptable { border-color: var(--accent-2); color: var(--accent-2); }
.chip.tier-middle.status-acceptable { border-color: var(--ink); color: var(--ink); }
.chip.tier-budget.status-acceptable { border-color: var(--muted); color: var(--ink-2); }
.chip.status-acceptable::before { content: "✓ "; }
/* Состояние avoid — приглушённый, перечёркнутый */
.chip.status-avoid {
background: #F5E1DC;
border-color: #C7705A;
color: #8A3E2A;
text-decoration: line-through;
opacity: 0.85;
}
.chip.status-avoid::before { content: "✗ "; text-decoration: none; display: inline-block; }
/* Disabled кнопка */
.btn-primary[disabled],
.btn-secondary[disabled] {
opacity: 0.4;
cursor: not-allowed;
pointer-events: none;
}
/* ----- Summary ----- */
.summary-block { gap: 8px; }
.summary-block .kv {
display: flex; justify-content: space-between; align-items: baseline;
padding: 6px 0;
border-bottom: 1px solid var(--line);
font-family: var(--font-ui);
font-size: 14px;
}
.summary-block .kv:last-child { border-bottom: none; }
.summary-block .kv span {
font-family: var(--font-mono);
font-size: 10px;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--muted);
}
.summary-block .kv strong { font-weight: 600; color: var(--ink); }
/* ----- CTA / buttons ----- */
.podbor-cta-row {
display: flex; gap: var(--s2);
margin-top: var(--s3);
}
.btn-primary, .btn-secondary {
flex: 1;
font-family: var(--font-ui);
font-size: 14.5px;
font-weight: 600;
letter-spacing: -0.01em;
padding: 12px var(--s4);
border-radius: var(--r-btn);
cursor: pointer;
transition: opacity 0.12s, background 0.12s;
}
.btn-primary {
background: var(--ink);
color: var(--paper);
}
.btn-primary:active { opacity: 0.85; }
.btn-primary:disabled { opacity: 0.6; cursor: not-allowed; }
.btn-secondary {
background: transparent;
color: var(--ink);
border: 1px solid var(--line-strong);
}
.btn-secondary:active { background: var(--paper-2); }
/* ----- Submit result ----- */
.submit-result { margin-top: var(--s3); }
.submit-result .success {
display: flex; align-items: center; gap: var(--s3);
background: var(--paper-2);
border: 1px solid var(--accent-2);
border-radius: var(--r-card);
padding: var(--s4);
}
.submit-result .success-icon {
width: 36px; height: 36px;
background: var(--accent-2);
color: var(--paper);
border-radius: var(--r-pill);
display: grid; place-items: center;
flex-shrink: 0;
}
.submit-result .success-icon svg { width: 20px; height: 20px; stroke-width: 2.5; }
.submit-result .success-title {
font-family: var(--font-ui);
font-size: 15px;
font-weight: 600;
color: var(--ink);
}
.submit-result .success-sub {
font-family: var(--font-mono);
font-size: 10.5px;
letter-spacing: 0.10em;
text-transform: uppercase;
color: var(--muted);
margin-top: 2px;
}
.submit-result .error {
background: rgba(192, 57, 43, 0.08);
border: 1px solid rgba(192, 57, 43, 0.30);
color: #8C3F1E;
border-radius: var(--r-card);
padding: var(--s3) var(--s4);
font-size: 14px;
}
.spinner-inline {
display: inline-block;
width: 14px; height: 14px;
border: 1.5px solid rgba(251,247,240,0.3);
border-top-color: var(--paper);
border-radius: var(--r-pill);
animation: spin 0.7s linear infinite;
margin-right: 6px;
vertical-align: -2px;
}
.empty { text-align: center; color: var(--muted); padding: var(--s7) 0; }
/* ============================================================
Detail menu — list of categories with status
============================================================ */
.detail-list {
display: flex;
flex-direction: column;
gap: var(--s2);
}
.detail-card {
display: flex;
align-items: center;
gap: var(--s3);
background: var(--card);
border: 1px solid var(--line-strong);
border-radius: var(--r-card);
padding: var(--s3) var(--s4);
cursor: pointer;
transition: background 0.12s;
text-align: left;
}
.detail-card:active { background: var(--paper-2); }
.detail-card.done { border-color: var(--accent-2); }
.detail-icon {
width: 28px;
height: 28px;
display: grid;
place-items: center;
color: var(--ink);
flex-shrink: 0;
}
.detail-icon svg { width: 22px; height: 22px; stroke-width: 1.4; }
.detail-card.done .detail-icon { color: var(--accent-2); }
.detail-text { flex: 1; min-width: 0; }
.detail-name {
font-family: var(--font-ui);
font-size: 14.5px;
font-weight: 600;
letter-spacing: -0.01em;
color: var(--ink);
}
.detail-sum {
font-family: var(--font-mono);
font-size: 10.5px;
letter-spacing: 0.06em;
color: var(--muted);
margin-top: 2px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.detail-card.done .detail-sum { color: var(--ink-2); text-transform: none; letter-spacing: 0; font-family: var(--font-ui); font-size: 12.5px; }
.detail-status {
flex-shrink: 0;
width: 22px;
height: 22px;
display: grid;
place-items: center;
color: var(--muted-2);
}
.detail-status svg { width: 18px; height: 18px; }
.detail-card.done .detail-status {
width: 22px;
height: 22px;
background: var(--accent-2);
color: var(--paper);
border-radius: var(--r-pill);
}
.detail-card.done .detail-status svg { width: 14px; height: 14px; stroke-width: 2.5; }
/* ============================================================
Category detail screen
============================================================ */
.cat-detail-header {
display: flex;
align-items: center;
gap: var(--s3);
margin-bottom: var(--s4);
}
.cat-detail-icon {
width: 30px;
height: 30px;
display: grid;
place-items: center;
color: var(--accent-2);
}
.cat-detail-icon svg { width: 26px; height: 26px; stroke-width: 1.4; }
.cat-detail-title {
font-family: var(--font-display);
font-style: italic;
font-size: 24px;
font-weight: 400;
margin: 0;
color: var(--ink);
flex: 1;
}
.param-group {
display: flex;
flex-direction: column;
gap: 6px;
padding: var(--s3) 0;
border-top: 1px solid var(--line);
}
.param-group:first-of-type {
border-top: none;
padding-top: 0;
}
.param-label {
font-family: var(--font-mono);
font-size: 10px;
font-weight: 500;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--muted);
}
/* ============================================================
Accordion "Подробнее"
============================================================ */
.accordion-head {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
padding: var(--s3) var(--s4);
background: var(--card);
border: 1px solid var(--line-strong);
border-radius: var(--r-card);
font-family: var(--font-mono);
font-size: 11px;
font-weight: 500;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--muted);
cursor: pointer;
}
.accordion-chev {
display: grid;
place-items: center;
color: var(--muted);
transition: transform 0.18s;
}
.accordion-chev svg { width: 16px; height: 16px; transform: rotate(90deg); transition: transform 0.18s; }
.accordion-chev.open svg { transform: rotate(-90deg); }
.accordion-body {
overflow: hidden;
max-height: 0;
transition: max-height 0.25s ease;
padding: 0;
}
.accordion-body.open {
max-height: 2000px;
padding-top: var(--s3);
}
.accordion-body > * + * { margin-top: var(--s3); }
/* ============================================================
Feature card (in accordion)
============================================================ */
.feature-list {
display: flex;
flex-direction: column;
gap: 6px;
}
.feature {
display: grid;
grid-template-columns: 1fr 22px;
gap: var(--s2);
align-items: center;
background: var(--card);
border: 1px solid var(--line);
border-radius: var(--r-tag);
padding: 10px 12px;
cursor: pointer;
text-align: left;
transition: all 0.12s;
}
.feature:active { background: var(--paper-2); }
.feature.on {
border-color: var(--accent-2);
background: var(--paper-2);
}
.feature-name {
grid-column: 1 / 2;
font-family: var(--font-ui);
font-size: 13.5px;
font-weight: 600;
color: var(--ink);
line-height: 1.2;
}
.feature-hint {
grid-column: 1 / 2;
font-family: var(--font-ui);
font-size: 12px;
color: var(--muted);
line-height: 1.3;
margin-top: 2px;
}
.feature-tick {
grid-column: 2 / 3;
grid-row: 1 / 3;
width: 22px;
height: 22px;
display: grid;
place-items: center;
border: 1px solid var(--line-strong);
border-radius: var(--r-pill);
align-self: center;
}
.feature.on .feature-tick {
background: var(--accent-2);
color: var(--paper);
border-color: var(--accent-2);
}
.feature.on .feature-tick svg { width: 12px; height: 12px; stroke-width: 2.5; }
/* ============================================================
Иерархический wizard (новая схема steps[])
============================================================ */
.podbor-wizard { gap: var(--s4); }
.wiz-header {
display: grid;
grid-template-columns: 28px 1fr 28px;
align-items: center;
gap: 12px;
margin-bottom: 4px;
}
.wiz-header-meta {
display: flex;
flex-direction: column;
align-items: center;
gap: 2px;
}
.wiz-cat {
font-family: var(--font-display);
font-style: italic;
font-size: 20px;
line-height: 1;
letter-spacing: -0.01em;
color: var(--ink);
}
.wiz-progress {
font-family: var(--font-mono);
font-size: 10px;
font-weight: 500;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--muted);
}
.wiz-cat-icon {
width: 28px;
height: 28px;
color: var(--accent-2);
display: grid;
place-items: center;
}
.wiz-cat-icon svg { width: 22px; height: 22px; }
/* Чипы прошлых ответов */
.wiz-chips {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin: -4px 0 4px;
}
.wiz-chip {
font-family: var(--font-mono);
font-size: 10px;
font-weight: 500;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--accent-2);
background: var(--warm);
border: 1px solid var(--accent-2);
padding: 4px 10px;
border-radius: var(--r-pill);
cursor: pointer;
transition: background 0.12s;
}
.wiz-chip:active { background: #EAD9B6; }
/* Заголовок шага */
.wiz-title {
font-family: var(--font-display);
font-style: italic;
font-size: 24px;
font-weight: 400;
line-height: 1.1;
letter-spacing: -0.02em;
color: var(--ink);
margin: 6px 0 0;
}
.wiz-multi {
font-style: normal;
font-family: var(--font-mono);
font-size: 11px;
font-weight: 500;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--muted);
}
/* Сетка карточек (cards-режим — с пиктограммами) */
.wiz-grid { gap: 10px; }
.wiz-grid--cards {
display: grid;
grid-template-columns: 1fr 1fr;
}
@media (min-width: 540px) {
.wiz-grid--cards { grid-template-columns: repeat(3, 1fr); }
}
/* Пин-режим (без пиктограмм, компактные таблетки) */
.wiz-grid--pins {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.wiz-card {
position: relative;
background: #fff;
border: 1px solid var(--line);
border-radius: var(--r-card, 14px);
padding: 12px 10px 14px;
display: flex;
flex-direction: column;
align-items: center;
gap: 6px;
cursor: pointer;
transition: all 0.12s;
text-align: center;
font: inherit;
color: var(--ink);
}
.wiz-card:active { background: var(--warm); transform: scale(0.98); }
.wiz-card.on {
border-color: var(--accent-2);
background: var(--warm);
box-shadow: 0 0 0 1px var(--accent-2) inset;
}
.wiz-card.star::before {
content: "⭐";
position: absolute;
top: 6px;
left: 8px;
font-size: 11px;
opacity: 0.85;
}
.wiz-pict {
width: 72px;
height: 96px;
display: grid;
place-items: center;
}
.wiz-pict svg { width: 100%; height: 100%; display: block; }
.wiz-pict-placeholder {
width: 72px;
height: 96px;
background: repeating-linear-gradient(45deg, transparent, transparent 6px, rgba(107, 74, 43, 0.06) 6px, rgba(107, 74, 43, 0.06) 7px);
border: 1px dashed var(--line);
border-radius: 6px;
}
.wiz-label {
font-family: var(--font-sans);
font-size: 13.5px;
font-weight: 600;
letter-spacing: -0.01em;
color: var(--ink);
line-height: 1.2;
}
.wiz-hint {
font-family: var(--font-mono);
font-size: 9.5px;
font-weight: 500;
letter-spacing: 0.06em;
text-transform: uppercase;
color: var(--muted);
line-height: 1.25;
}
.wiz-tick {
position: absolute;
top: 6px;
right: 6px;
width: 20px;
height: 20px;
background: var(--accent-2);
color: var(--paper);
border-radius: var(--r-pill);
display: grid;
place-items: center;
}
.wiz-tick svg { width: 11px; height: 11px; stroke-width: 2.5; }
/* Пин-карточка (компактная таблетка, без пиктограммы) */
.wiz-card--pin {
display: inline-flex;
align-items: center;
flex-direction: row;
gap: 8px;
padding: 9px 14px 9px 14px;
border-radius: var(--r-pill);
width: auto;
text-align: left;
}
.wiz-card--pin .wiz-pict,
.wiz-card--pin .wiz-pict-placeholder { display: none; }
.wiz-card--pin .wiz-label {
font-size: 13px;
font-weight: 500;
letter-spacing: -0.005em;
}
.wiz-card--pin .wiz-hint {
font-size: 9.5px;
letter-spacing: 0.04em;
text-transform: none;
font-family: var(--font-sans);
font-weight: 400;
color: var(--muted);
}
.wiz-card--pin .wiz-tick {
position: static;
width: 14px;
height: 14px;
}
.wiz-card--pin .wiz-tick svg { width: 9px; height: 9px; }
.wiz-card--pin.star { padding-left: 26px; }
.wiz-card--pin.star::before { top: 50%; transform: translateY(-50%); }
/* Review-экран */
.rev-list {
background: #fff;
border: 1px solid var(--line);
border-radius: var(--r-card, 14px);
overflow: hidden;
}
.rev-row {
display: flex;
justify-content: space-between;
align-items: baseline;
padding: 12px 14px;
border-bottom: 1px solid var(--line);
gap: 12px;
}
.rev-row:last-child { border-bottom: 0; }
.rev-label {
font-family: var(--font-mono);
font-size: 10px;
font-weight: 500;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--muted);
flex-shrink: 0;
}
.rev-val {
font-family: var(--font-sans);
font-size: 14px;
font-weight: 500;
color: var(--ink);
text-align: right;
line-height: 1.3;
}
.rev-val .muted { color: var(--muted); font-weight: 400; }
/* ============================================================
Inline-отчёт после отправки подбора
============================================================ */
.report {
margin-top: 20px;
display: flex;
flex-direction: column;
gap: 18px;
}
.report-head .kicker {
margin-bottom: 4px;
}
.report-summary {
font-size: 14px;
line-height: 1.5;
color: var(--ink-2);
margin: 6px 0 0;
padding: 12px 14px;
background: var(--warm);
border-radius: 12px;
border-left: 3px solid var(--accent-2);
}
.report-cat {
display: flex;
flex-direction: column;
gap: 12px;
}
.report-cat-head {
font-family: var(--font-display);
font-style: italic;
font-weight: 400;
font-size: 22px;
line-height: 1;
letter-spacing: -0.01em;
color: var(--ink);
margin: 0;
display: flex;
align-items: center;
gap: 10px;
padding-bottom: 8px;
border-bottom: 1px solid var(--line);
}
.report-cat-icon {
width: 24px;
height: 24px;
display: grid;
place-items: center;
color: var(--accent-2);
}
.report-cat-icon svg { width: 22px; height: 22px; }
.report-models {
display: flex;
flex-direction: column;
gap: 12px;
}
.report-model {
display: grid;
grid-template-columns: 88px 1fr;
gap: 12px;
padding: 12px;
background: #fff;
border: 1px solid var(--line);
border-radius: 14px;
position: relative;
}
.report-model-img {
width: 88px;
height: 88px;
background: var(--warm);
border-radius: 10px;
overflow: hidden;
display: grid;
place-items: center;
}
.report-model-img img {
width: 100%;
height: 100%;
object-fit: contain;
background: #fff;
}
.report-model-img.placeholder {
background: repeating-linear-gradient(45deg, var(--warm), var(--warm) 5px, #F0E8D5 5px, #F0E8D5 10px);
}
.report-model-img.placeholder::after {
content: "📷";
font-size: 24px;
opacity: 0.4;
}
.report-model-body {
display: flex;
flex-direction: column;
gap: 4px;
min-width: 0;
}
.report-model-brand {
font-family: var(--font-mono);
font-size: 10px;
font-weight: 500;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--muted);
}
.report-model-name {
font-family: var(--font-sans);
font-size: 15px;
font-weight: 600;
letter-spacing: -0.01em;
color: var(--ink);
line-height: 1.2;
margin-bottom: 2px;
}
.report-model-meta {
font-family: var(--font-mono);
font-size: 10px;
letter-spacing: 0.06em;
color: var(--muted);
display: flex;
flex-wrap: wrap;
gap: 4px 8px;
margin: 2px 0;
}
.report-model-meta .rating { color: var(--accent-2); font-weight: 500; }
.report-model-price {
font-family: var(--font-display);
font-style: italic;
font-size: 17px;
color: var(--ink);
margin: 4px 0;
letter-spacing: -0.01em;
}
.report-model-price strong { font-style: normal; font-weight: 600; }
.report-model-price .muted { font-style: normal; font-size: 13px; color: var(--muted); }
.report-highlights {
font-size: 12px;
line-height: 1.4;
color: var(--ink-2);
margin-top: 2px;
}
.report-pros {
font-size: 12px;
line-height: 1.4;
color: #2A6B3F;
margin-top: 2px;
}
.report-cons {
font-size: 12px;
line-height: 1.4;
color: #8A3E2A;
margin-top: 2px;
}
.report-links {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin-top: 8px;
}
.report-link {
font-family: var(--font-mono);
font-size: 10px;
font-weight: 500;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--accent-2);
text-decoration: none;
border: 1px solid var(--accent-2);
padding: 4px 9px;
border-radius: var(--r-pill);
transition: background 0.12s;
}
.report-link:active { background: var(--warm); }
/* Сравнительная таблица — accordion */
.report-compare {
background: #fff;
border: 1px solid var(--line);
border-radius: 14px;
margin-top: 4px;
overflow: hidden;
}
.report-compare summary {
font-family: var(--font-mono);
font-size: 11px;
font-weight: 500;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--muted);
padding: 12px 14px;
cursor: pointer;
list-style: none;
display: flex;
justify-content: space-between;
align-items: center;
}
.report-compare summary::-webkit-details-marker { display: none; }
.report-compare summary::after {
content: "↓";
font-size: 12px;
color: var(--muted);
transition: transform 0.2s;
}
.report-compare[open] summary::after { transform: rotate(180deg); }
.report-compare table {
width: 100%;
border-collapse: collapse;
font-size: 12px;
}
.report-compare th,
.report-compare td {
padding: 8px 10px;
text-align: left;
border-top: 1px solid var(--line);
vertical-align: top;
}
.report-compare th {
font-family: var(--font-mono);
font-size: 9.5px;
font-weight: 500;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--muted);
background: var(--warm);
}
.report-compare td strong { font-weight: 600; color: var(--ink); }
/* Итого */
.report-total {
padding: 14px 16px;
background: var(--ink);
color: var(--paper);
border-radius: 14px;
display: flex;
align-items: baseline;
gap: 12px;
flex-wrap: wrap;
}
.report-total .lbl {
font-family: var(--font-mono);
font-size: 10px;
font-weight: 500;
letter-spacing: 0.16em;
text-transform: uppercase;
opacity: 0.7;
}
.report-total strong {
font-family: var(--font-display);
font-style: italic;
font-size: 20px;
font-weight: 500;
letter-spacing: -0.01em;
}
.report-total .status {
font-family: var(--font-mono);
font-size: 10px;
letter-spacing: 0.1em;
text-transform: uppercase;
opacity: 0.7;
margin-left: auto;
}
.report-warnings {
background: #F5E1DC;
border: 1px solid #C7705A;
border-radius: 12px;
padding: 10px 14px;
color: #8A3E2A;
font-size: 13px;
line-height: 1.5;
}
.report-warnings > div { margin: 2px 0; }