zov-tech/miniapp/assets/podbor.css
wasrusgen dd400b71ac miniapp: new pricing flow — brand strategy + budget presets + multi pick strategy
NEW STRUCTURE:
- Step 4 'Бренд' — ai/single/different + brand picker or per-cat chips (now 4-state with 'avoid')
- Step 5 'Бюджет' — Люкс/Премиум/Средний/Бюджет/Точные цифры presets
- Step 6 'Стратегия' — multi: Лучшее по отзывам / Цена-качество / Топ-бренды / Доступное / Tech / Стиль
- Step 7 'Инфра' — перенесено после стратегии
- Step 8 'Итог' — обновлённый summary с новыми полями

FIXES:
- Keyboard-disappearing bug in price inputs — removed render() on input, total recomputed locally
- localStorage merge with defaults for backward compat with new fields
- Bumped STORAGE_KEY to v4

REMAINING:
- Backend still reads checklist.priorities (old shape) — needs update to read pick_strategies + brand_strategy + budget_preset
2026-05-11 10:43:54 +03:00

1122 lines
25 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; }