/* Компоненты дизайн-системы
 *
 * СКОПИРОВАНО из docs/design/export/components.css — РУКАМИ НЕ ПРАВИТЬ.
 * Обновление: python scripts/sync_design_tokens.py
 */
/* Room Profile — утилитарные классы компонентов.
 * Наследник .rp-* из static/css/brand.css: все состояния (:hover/:active/:focus-visible) заданы здесь через токены.
 * React-компоненты дизайн-системы — тонкие обёртки над этими классами.
 * Правило: поменять поведение цвета/тени = править здесь, а не в компонентах. */

/* --- База --- */
.rp-ui{font-family:var(--rp-font-ui);color:var(--rp-text);-webkit-font-smoothing:antialiased}
a{color:var(--rp-text-link);text-decoration:none}
a:hover{color:var(--rp-accent-press)}

/* --- Кнопка действия --- */
.rp-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--rp-gap-sm);min-height:var(--rp-tap-min);padding:0 var(--rp-gap-lg);border:0;border-radius:var(--rp-radius);background:var(--rp-brand-600);color:#fff;font:var(--rp-w-medium) var(--rp-text-base)/1 var(--rp-font-ui);cursor:pointer;transition:background .15s ease,transform .1s ease;white-space:nowrap;text-decoration:none}
.rp-btn:hover{background:var(--rp-brand-700);color:#fff}
.rp-btn:active{transform:scale(.985)}
.rp-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.rp-btn--ghost{background:var(--rp-paper);color:var(--rp-ink-700);border:1px solid var(--rp-border-strong)}
.rp-btn--ghost:hover{background:var(--rp-ink-50);color:var(--rp-ink-800)}
.rp-btn--sm{min-height:0;padding:8px 12px;font-size:var(--rp-text-sm)}
.rp-btn--lg{min-height:52px;padding:0 var(--rp-gap-xl);font-size:var(--rp-text-lg)}
.rp-btn--block{width:100%}
.rp-btn:focus-visible{outline:var(--rp-focus-outline);outline-offset:2px}

/* --- Кнопка-иконка --- */
.rp-icon-btn{display:inline-grid;place-items:center;width:40px;height:40px;border:0;border-radius:var(--rp-radius-pill);background:var(--rp-brand-600);color:#fff;cursor:pointer;transition:background .15s ease,transform .1s ease}
.rp-icon-btn:hover{background:var(--rp-brand-700)}
.rp-icon-btn:active{transform:scale(.94)}
.rp-icon-btn--square{border-radius:var(--rp-radius)}
.rp-icon-btn--ghost{background:transparent;color:var(--rp-ink-400)}
.rp-icon-btn--ghost:hover{background:var(--rp-ink-50);color:var(--rp-ink-700)}
.rp-icon-btn--soft{background:rgba(255,255,255,.92);color:var(--rp-ink-400);box-shadow:var(--rp-shadow-sm)}
.rp-icon-btn--soft:hover{color:var(--rp-brand-600)}
.rp-icon-btn--sm{width:28px;height:28px}
.rp-icon-btn--lg{width:50px;height:50px}
.rp-icon-btn:focus-visible{outline:var(--rp-focus-outline);outline-offset:2px}

/* --- Бейдж состояния/маркетинга --- */
.rp-badge{display:inline-flex;align-items:center;gap:var(--rp-gap-xs);padding:3px 8px;border-radius:var(--rp-radius-sm);font:var(--rp-w-semibold) var(--rp-text-xs)/1.2 var(--rp-font-ui);white-space:nowrap}
.rp-badge--hit{background:var(--rp-brand-100);color:var(--rp-accent-ink)}
.rp-badge--sale{background:var(--rp-sale);color:#fff}
.rp-badge--new{background:var(--rp-ink-800);color:#fff}
.rp-badge--info{background:var(--rp-brand-50);color:var(--rp-brand-700)}

/* --- Статус наличия --- */
.rp-stock{display:inline-flex;align-items:center;gap:4px;font:var(--rp-w-regular) var(--rp-text-xs)/1 var(--rp-font-ui);color:var(--rp-stock)}
.rp-stock--order{color:var(--rp-ink-400)}

/* --- Чипс категории --- */
.rp-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 13px;border-radius:var(--rp-radius-pill);background:var(--rp-paper);border:1px solid var(--rp-border);color:var(--rp-ink-600);font:var(--rp-w-regular) var(--rp-text-sm)/1 var(--rp-font-ui);white-space:nowrap;cursor:pointer;transition:background .12s,border-color .12s,color .12s}
.rp-chip:hover{border-color:var(--rp-border-strong)}
.rp-chip[aria-pressed="true"],.rp-chip--active{background:var(--rp-brand-100);border-color:#FDBA74;color:var(--rp-accent-ink);font-weight:var(--rp-w-medium)}
.rp-chip__count{color:var(--rp-ink-300);font-variant-numeric:tabular-nums}
.rp-chip[aria-pressed="true"] .rp-chip__count,.rp-chip--active .rp-chip__count{color:var(--rp-accent-ink)}
.rp-chip:focus-visible{outline:var(--rp-focus-outline);outline-offset:2px}

/* --- Карточка (контейнер) --- */
.rp-card{background:var(--rp-paper);border:1px solid var(--rp-border);border-radius:var(--rp-radius-lg);overflow:hidden}
.rp-card--hover{transition:border-color .15s,box-shadow .15s}
.rp-card--hover:hover{border-color:var(--rp-brand-400);box-shadow:var(--rp-shadow-hover)}

/* --- Карточка товара --- */
.rp-pcard{background:var(--rp-paper);border:1px solid var(--rp-border);border-radius:var(--rp-radius-lg);overflow:hidden;display:flex;flex-direction:column;transition:border-color .15s,box-shadow .15s}
.rp-pcard:hover{border-color:var(--rp-brand-400);box-shadow:var(--rp-shadow-hover)}
.rp-pcard__ph{aspect-ratio:1;background:var(--rp-surface);position:relative;overflow:hidden}
.rp-pcard__ph img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s ease}
.rp-pcard:hover .rp-pcard__ph img{transform:scale(1.04)}
.rp-pcard__badges{position:absolute;top:7px;left:7px;display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.rp-pcard__fav{position:absolute;top:6px;right:6px}
.rp-pcard__bd{padding:9px 10px 10px;display:flex;flex-direction:column;gap:5px;flex:1}
.rp-pcard__nm{font-size:12.5px;line-height:1.35;color:var(--rp-ink-700);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:34px}
.rp-pcard__foot{margin-top:auto}
.rp-pcard--lg .rp-pcard__bd{padding:12px 13px 13px;gap:7px}
.rp-pcard--lg .rp-pcard__nm{font-size:13.5px;min-height:37px}
.rp-pcard--lg .rp-price__now{font-size:19px}

/* --- Цена --- */
.rp-price{display:flex;flex-direction:column;gap:1px}
.rp-price__row{display:flex;align-items:baseline;gap:5px}
.rp-price__now{font-size:16px;font-weight:var(--rp-w-semibold);letter-spacing:var(--rp-track-micro);font-variant-numeric:tabular-nums;color:var(--rp-ink-800)}
.rp-price__now--lg{font-size:27px;letter-spacing:var(--rp-track-tight);line-height:1}
.rp-price__old{font-size:11.5px;color:var(--rp-ink-300);text-decoration:line-through;font-weight:400}
.rp-price__per{font-size:11px;color:var(--rp-ink-400);font-variant-numeric:tabular-nums}

/* --- Оценка (звёзды) --- */
.rp-rating{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--rp-ink-400)}
.rp-rating__stars{display:inline-flex;gap:1.5px;align-items:center}
.rp-rating__score{color:var(--rp-ink-700);font-weight:var(--rp-w-semibold);font-variant-numeric:tabular-nums}

/* --- Поля ввода --- */
.rp-input{width:100%;border:1px solid var(--rp-border);border-radius:var(--rp-radius);padding:0 12px;height:var(--rp-control-h);font:var(--rp-text-base)/1 var(--rp-font-ui);color:var(--rp-ink-800);background:var(--rp-paper);font-variant-numeric:tabular-nums;transition:border-color .12s,box-shadow .12s}
.rp-input::placeholder{color:var(--rp-ink-300)}
.rp-input:focus{outline:none;border-color:var(--rp-brand-500);box-shadow:0 0 0 3px var(--rp-brand-50)}
textarea.rp-input{height:auto;padding:10px 12px;line-height:1.5;resize:vertical}

/* --- Чекбокс --- */
.rp-check{display:inline-flex;align-items:center;gap:9px;font:var(--rp-text-sm)/1.3 var(--rp-font-ui);color:var(--rp-ink-600);cursor:pointer;padding:5px 0}
.rp-check__box{width:19px;height:19px;border:1.5px solid var(--rp-ink-300);border-radius:4px;flex:0 0 auto;display:grid;place-items:center;color:#fff;transition:background .12s,border-color .12s}
.rp-check--on .rp-check__box{background:var(--rp-brand-600);border-color:var(--rp-brand-600)}
.rp-check__count{margin-left:auto;font-size:11.5px;color:var(--rp-ink-300);font-variant-numeric:tabular-nums}

/* --- Переключатель --- */
.rp-toggle{width:40px;height:23px;border-radius:var(--rp-radius-pill);background:var(--rp-ink-100);position:relative;border:0;cursor:pointer;flex:0 0 auto;transition:background .16s}
.rp-toggle--on{background:var(--rp-brand-600)}
.rp-toggle::after{content:"";position:absolute;top:2.5px;left:2.5px;width:18px;height:18px;border-radius:50%;background:#fff;transition:left .16s}
.rp-toggle--on::after{left:19px}
.rp-toggle:focus-visible{outline:var(--rp-focus-outline);outline-offset:2px}

/* --- Счётчик количества --- */
.rp-stepper{display:inline-flex;align-items:center;border:1px solid var(--rp-border);border-radius:var(--rp-radius);overflow:hidden;flex:0 0 auto;background:var(--rp-paper)}
.rp-stepper button{background:var(--rp-paper);border:0;width:36px;height:var(--rp-control-h);color:var(--rp-ink-600);font-size:17px;display:grid;place-items:center;cursor:pointer;transition:background .12s}
.rp-stepper button:hover{background:var(--rp-ink-50)}
.rp-stepper button:disabled{color:var(--rp-ink-200);cursor:not-allowed;background:var(--rp-paper)}
.rp-stepper__val{min-width:34px;text-align:center;font-size:14px;font-variant-numeric:tabular-nums;font-weight:var(--rp-w-medium)}

/* --- Сегментный переключатель --- */
.rp-seg{display:inline-flex;background:var(--rp-ink-50);border:1px solid var(--rp-border);border-radius:var(--rp-radius);padding:3px;gap:2px}
.rp-seg button{appearance:none;border:0;background:transparent;color:var(--rp-ink-400);font:var(--rp-text-sm)/1 var(--rp-font-ui);padding:7px 14px;border-radius:6px;cursor:pointer;white-space:nowrap;transition:background .12s,color .12s}
.rp-seg button[aria-pressed="true"]{background:var(--rp-paper);color:var(--rp-ink-800);font-weight:var(--rp-w-medium);box-shadow:var(--rp-shadow-sm)}
.rp-seg--accent button[aria-pressed="true"]{background:var(--rp-brand-600);color:#fff}
.rp-seg button:focus-visible{outline:var(--rp-focus-outline);outline-offset:1px}

/* --- Образец цвета (фильтр) --- */
.rp-swatch{width:34px;height:34px;border-radius:7px;border:2px solid transparent;box-shadow:0 0 0 1px var(--rp-border) inset;position:relative;cursor:pointer;padding:0;transition:border-color .12s}
.rp-swatch--on{border-color:var(--rp-brand-600)}
.rp-swatch:focus-visible{outline:var(--rp-focus-outline);outline-offset:2px}

/* --- Отзыв --- */
.rp-review{background:var(--rp-paper);border:1px solid var(--rp-border);border-radius:var(--rp-radius-lg);padding:13px}
.rp-review__h{display:flex;align-items:center;gap:9px;margin-bottom:7px}
.rp-review__av{width:34px;height:34px;border-radius:50%;background:var(--rp-brand-100);color:var(--rp-accent-ink);display:grid;place-items:center;font-size:13px;font-weight:var(--rp-w-semibold);flex:0 0 auto}
.rp-review__name{font-size:13.5px;font-weight:var(--rp-w-medium);color:var(--rp-ink-700)}
.rp-review__date{font-size:11.5px;color:var(--rp-ink-300)}
.rp-review__text{font-size:13.5px;line-height:1.55;color:var(--rp-ink-600);margin:0}
.rp-review__meta{font-size:11px;color:var(--rp-ink-400);margin:7px 0 0;display:flex;gap:5px;align-items:center}
.rp-demo{background:var(--rp-warning-bg);color:var(--rp-warning-ink);font-size:10px;font-weight:var(--rp-w-semibold);padding:2px 6px;border-radius:4px;letter-spacing:.02em;flex:0 0 auto}

/* --- Сводка рейтинга --- */
.rp-ratesum{background:var(--rp-paper);border:1px solid var(--rp-border);border-radius:var(--rp-radius-lg);padding:16px;display:flex;gap:20px;align-items:center}
.rp-ratesum__big{font-size:40px;font-weight:var(--rp-w-semibold);letter-spacing:-0.03em;line-height:1;font-variant-numeric:tabular-nums;color:var(--rp-ink-800)}
.rp-ratesum__bars{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}
.rp-ratesum__bar{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--rp-ink-400)}
.rp-ratesum__track{flex:1;height:5px;background:var(--rp-ink-100);border-radius:3px;overflow:hidden}
.rp-ratesum__fill{display:block;height:100%;background:var(--rp-brand-500);border-radius:3px}

/* --- Пустое состояние --- */
.rp-empty{background:var(--rp-paper);border:1px dashed var(--rp-border-strong);border-radius:var(--rp-radius-lg);padding:26px 18px;text-align:center}
.rp-empty__ic{width:46px;height:46px;border-radius:50%;background:var(--rp-ink-50);color:var(--rp-ink-300);display:grid;place-items:center;margin:0 auto 11px}
.rp-empty__title{font-size:15px;margin:0 0 6px;font-weight:var(--rp-w-semibold);color:var(--rp-ink-700)}
.rp-empty__text{font-size:13px;color:var(--rp-ink-400);margin:0 0 14px;line-height:1.55}

/* --- Блок доверия --- */
.rp-trust{background:var(--rp-paper);border:1px solid var(--rp-border);border-radius:var(--rp-radius-lg);padding:16px;display:flex;gap:12px;align-items:center;font-size:13px;color:var(--rp-ink-600)}
.rp-trust__ic{width:38px;height:38px;border-radius:9px;background:var(--rp-brand-100);display:grid;place-items:center;color:var(--rp-accent-ink);flex:0 0 auto}
.rp-trust__title{display:block;color:var(--rp-ink-800);font-size:14px;font-weight:var(--rp-w-semibold);margin-bottom:2px}

/* --- Промо-плашка --- */
.rp-promo{border-radius:var(--rp-radius-lg);padding:18px;color:#fff;min-height:132px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden;background:var(--rp-ink-800)}
.rp-promo__title{margin:0;font-size:17px;line-height:1.25;font-weight:var(--rp-w-semibold);letter-spacing:var(--rp-track-micro)}
.rp-promo__text{margin:4px 0 0;font-size:12.5px;opacity:.88;line-height:1.4}
.rp-promo__cta{align-self:flex-start;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.32);color:#fff;border-radius:6px;padding:6px 12px;font-size:12.5px;cursor:pointer;transition:background .12s}
.rp-promo__cta:hover{background:rgba(255,255,255,.26)}

/* --- Реплика чата помощника --- */
.rp-msg{max-width:82%;padding:9px 12px;border-radius:14px;font-size:13.5px;line-height:1.5}
.rp-msg--bot{background:var(--rp-paper);border:1px solid var(--rp-border);border-bottom-left-radius:4px;align-self:flex-start;color:var(--rp-ink-700)}
.rp-msg--me{background:var(--rp-brand-600);color:#fff;border-bottom-right-radius:4px;align-self:flex-end}
.rp-qbtn{background:var(--rp-paper);border:1px solid var(--rp-brand-400);color:var(--rp-brand-700);border-radius:var(--rp-radius-pill);padding:7px 13px;font-size:12.5px;cursor:pointer;transition:background .12s}
.rp-qbtn:hover{background:var(--rp-brand-50)}
