/* Отзывы — оформление мини-аппа. Файл раздаётся модулем, данных не содержит. */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
  html{overflow-x:hidden;background:var(--color-background)}

/* ── Темы оформления ───────────────────────────────────────────────
   Палитру выбирает админ: «Админка → ⭐ Отзывы → 🌐 Веб-версия → 🎨 Тема».
   Значения лежат на :root, чтобы фон страницы красился ещё до загрузки JS. */
:root,
:root[data-theme="black-dark"]{
  --color-primary:#E8E8E8;--color-on-primary:#000;
  --color-background:#000000;--color-on-background:#F0F0F0;
  --color-surface:#080808;--color-on-surface:#F0F0F0;
  --color-surface-variant:#111111;--color-on-surface-variant:#606060;
  --color-outline:rgba(255,255,255,0.07);--shadow-strength:0.2;--primary-fill:60%;
}
:root[data-theme="black-light"]{
  --color-primary:#111111;--color-on-primary:#ffffff;
  --color-background:#F2F2F2;--color-on-background:#111111;
  --color-surface:#ffffff;--color-on-surface:#111111;
  --color-surface-variant:#E8E8E8;--color-on-surface-variant:#555555;
  --color-outline:rgba(0,0,0,0.08);--shadow-strength:0.06;--primary-fill:100%;
}
:root[data-theme="candy-dark"]{
  --color-primary:#D0BCFF;--color-on-primary:#0F0A1A;
  --color-background:#0A0614;--color-on-background:#EDE8F5;
  --color-surface:#130D20;--color-on-surface:#EDE8F5;
  --color-surface-variant:#1E1530;--color-on-surface-variant:#9988BB;
  --color-outline:rgba(255,255,255,0.07);--shadow-strength:0.25;--primary-fill:60%;
}
:root[data-theme="candy-light"]{
  --color-primary:#6750A4;--color-on-primary:#ffffff;
  --color-background:#FFFBFE;--color-on-background:#1C1B1F;
  --color-surface:#F3EEF8;--color-on-surface:#1C1B1F;
  --color-surface-variant:#EAE3F2;--color-on-surface-variant:#49454F;
  --color-outline:rgba(0,0,0,0.08);--shadow-strength:0.06;--primary-fill:100%;
}
:root[data-theme="nautical-dark"]{
  --color-primary:#75D1EC;--color-on-primary:#001F29;
  --color-background:#000D12;--color-on-background:#E0E2E4;
  --color-surface:#001820;--color-on-surface:#E0E2E4;
  --color-surface-variant:#002633;--color-on-surface-variant:#6A8B9A;
  --color-outline:rgba(255,255,255,0.07);--shadow-strength:0.25;--primary-fill:60%;
}
:root[data-theme="nautical-light"]{
  --color-primary:#006781;--color-on-primary:#ffffff;
  --color-background:#F0FAFF;--color-on-background:#001F29;
  --color-surface:#E0F4FB;--color-on-surface:#001F29;
  --color-surface-variant:#C8EBF6;--color-on-surface-variant:#41484D;
  --color-outline:rgba(0,0,0,0.08);--shadow-strength:0.06;--primary-fill:100%;
}
:root[data-theme="grey-dark"]{
  --color-primary:#9E9E9E;--color-on-primary:#121212;
  --color-background:#0A0A0A;--color-on-background:#E0E0E0;
  --color-surface:#141414;--color-on-surface:#E0E0E0;
  --color-surface-variant:#1C1C1C;--color-on-surface-variant:#707070;
  --color-outline:rgba(255,255,255,0.07);--shadow-strength:0.2;--primary-fill:60%;
}
:root[data-theme="grey-light"]{
  --color-primary:#424242;--color-on-primary:#ffffff;
  --color-background:#F5F5F5;--color-on-background:#212121;
  --color-surface:#FAFAFA;--color-on-surface:#212121;
  --color-surface-variant:#EEEEEE;--color-on-surface-variant:#555555;
  --color-outline:rgba(0,0,0,0.08);--shadow-strength:0.06;--primary-fill:100%;
}


  body{
    font-family:'Inter',sans-serif;
    background:var(--color-background);
    color:var(--color-on-background);
    min-height:100vh;overflow-x:hidden;
    font-size:15px;line-height:1.5;
    padding:0 1rem calc(2.5rem + env(safe-area-inset-bottom));
  }

  #bg-canvas{position:fixed;top:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none}
  #app{position:relative;z-index:1;width:100%;max-width:680px;margin:0 auto;min-width:0}

  /* ── Шапка ── */
  .hero{text-align:center;padding:2.25rem 0.25rem 1.5rem;display:flex;flex-direction:column;align-items:center;gap:1rem}
  .hero-logo-wrap{position:relative;width:84px;height:84px;margin-bottom:0.25rem}
  .hero-logo{width:84px;height:84px;border-radius:24px;background:var(--color-background);display:flex;align-items:center;justify-content:center;
    border:1px solid color-mix(in srgb,var(--color-primary) 25%,transparent);
    box-shadow:0 0 50px color-mix(in srgb,var(--color-primary) 20%,transparent);
    font-size:2.1rem}
  .hero-logo-ring{position:absolute;inset:-12px;border-radius:50%;border:1px solid color-mix(in srgb,var(--color-primary) 25%,transparent);animation:heroRing 3s ease-in-out infinite}
  .hero-logo-ring2{position:absolute;inset:-6px;border-radius:50%;border:1px solid color-mix(in srgb,var(--color-primary) 15%,transparent);animation:heroRing 3s ease-in-out 1s infinite}
  .hero-badge{display:inline-flex;align-items:center;gap:7px;padding:0.4rem 1rem;border-radius:100px;
    border:1px solid color-mix(in srgb,var(--color-primary) 30%,transparent);
    background:color-mix(in srgb,var(--color-primary) 8%,transparent);
    color:var(--color-primary);font-size:0.75rem;font-weight:600;letter-spacing:0.5px}
  .hero-title{font-family:'Syne',sans-serif;font-size:clamp(2.5rem,13vw,3.6rem);font-weight:800;letter-spacing:-1.5px;line-height:1.05;color:var(--color-on-surface)}
  .hero-desc{font-size:0.95rem;line-height:1.7;color:var(--color-on-surface-variant);max-width:460px}

  .stars{color:var(--color-primary);letter-spacing:3px;font-size:1.05rem}
  .stars .off{color:color-mix(in srgb,var(--color-primary) 22%,transparent)}

  /* ── Карточки ── */
  .card{
    background:color-mix(in srgb,var(--color-surface) 45%,transparent);
    border:1px solid color-mix(in srgb,var(--color-primary) 12%,rgba(255,255,255,0.06));
    border-radius:24px;padding:1.5rem;margin-bottom:0.875rem;
    backdrop-filter:blur(20px) saturate(1.6);-webkit-backdrop-filter:blur(20px) saturate(1.6);
    box-shadow:0 1px 0 rgba(255,255,255,0.07) inset,0 4px 32px rgba(0,0,0,var(--shadow-strength));
    position:relative;overflow:hidden;
    animation:fadeUp 0.45s ease both;
  }
  .card::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;
    background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--color-primary) 35%,transparent),transparent);pointer-events:none}
  .card-label{font-size:0.7rem;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--color-primary);margin-bottom:6px}
  .card-title{font-family:'Syne',sans-serif;font-size:1.25rem;font-weight:800;letter-spacing:-0.4px;color:var(--color-on-surface);line-height:1.2}
  .card-subtitle{font-size:0.82rem;color:var(--color-on-surface-variant);margin-top:4px}

  /* ── Распределение оценок ── */
  .bars{margin-top:1.1rem;display:flex;flex-direction:column;gap:6px}
  .bar-row{display:flex;align-items:center;gap:10px;font-size:0.75rem;color:var(--color-on-surface-variant)}
  .bar{flex:1;height:6px;border-radius:100px;background:var(--color-outline);overflow:hidden}
  .bar i{display:block;height:100%;width:0;border-radius:100px;background:var(--color-primary);
    box-shadow:0 0 12px color-mix(in srgb,var(--color-primary) 45%,transparent);transition:width .6s cubic-bezier(.22,1,.36,1)}

  /* ── Плитки статистики ── */
  .tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:0.5rem;margin-top:1.1rem}
  .tile{background:color-mix(in srgb,var(--color-surface-variant) 50%,transparent);border:1px solid var(--color-outline);
    border-radius:16px;padding:0.75rem 0.5rem;text-align:center}
  .tile-value{font-family:'Syne',sans-serif;font-size:1.15rem;font-weight:800;color:var(--color-primary);line-height:1}
  .tile-label{font-size:0.68rem;color:var(--color-on-surface-variant);margin-top:4px}

  /* ── Пилюли ── */
  .feature{display:inline-flex;align-items:center;gap:6px;padding:0.35rem 0.8rem;border-radius:100px;
    border:1px solid color-mix(in srgb,var(--color-primary) 20%,transparent);
    background:color-mix(in srgb,var(--color-primary) 7%,transparent);
    color:var(--color-on-surface);font-size:0.74rem;font-weight:500}
  .feature-dot{width:5px;height:5px;border-radius:50%;background:var(--color-primary);flex-shrink:0}
  .banner{display:flex;align-items:center;gap:10px;padding:0.9rem 1.1rem;border-radius:18px;margin-bottom:0.875rem;
    border:1px solid color-mix(in srgb,var(--color-primary) 28%,transparent);
    background:color-mix(in srgb,var(--color-primary) 9%,transparent);
    color:var(--color-on-surface);font-size:0.88rem;font-weight:500;animation:fadeUp 0.45s ease both}

  /* ── Форма ── */
  .rate{display:flex;justify-content:center;gap:4px;margin:1rem 0 0.35rem}
  .rate button{background:none;border:none;padding:4px;font-size:2.1rem;line-height:1;cursor:pointer;
    color:color-mix(in srgb,var(--color-primary) 18%,transparent);
    transition:transform .16s cubic-bezier(0.34,1.56,0.64,1),color .16s,text-shadow .16s}
  .rate button.on{color:var(--color-primary);text-shadow:0 0 18px color-mix(in srgb,var(--color-primary) 55%,transparent)}
  .rate button:active{transform:scale(.86)}
  .rate-label{min-height:1.1rem;text-align:center;font-size:0.8rem;color:var(--color-on-surface-variant);margin-bottom:0.9rem}

  textarea{width:100%;min-height:112px;resize:vertical;padding:0.9rem 1rem;border-radius:16px;
    border:1px solid var(--color-outline);background:color-mix(in srgb,var(--color-surface-variant) 55%,transparent);
    color:var(--color-on-surface);font:inherit;outline:none;transition:border-color .2s}
  textarea::placeholder{color:var(--color-on-surface-variant)}
  textarea:focus{border-color:color-mix(in srgb,var(--color-primary) 40%,transparent)}
  .counter{font-size:0.72rem;color:var(--color-on-surface-variant);text-align:right;margin:6px 2px 0.9rem}
  .counter.over{color:#ff6b6b}

  /* ── Кнопки ── */
  .btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;
    padding:0.875rem 1.5rem;border-radius:16px;border:none;cursor:pointer;text-decoration:none;
    font-family:'Inter',sans-serif;font-size:0.9rem;font-weight:700;position:relative;overflow:hidden;
    background:color-mix(in srgb,var(--color-primary) var(--primary-fill,60%),transparent);color:var(--color-on-primary);
    backdrop-filter:blur(16px) saturate(2);-webkit-backdrop-filter:blur(16px) saturate(2);
    box-shadow:0 1px 0 rgba(255,255,255,0.22) inset,0 -1px 0 rgba(0,0,0,0.12) inset,0 6px 24px color-mix(in srgb,var(--color-primary) 28%,transparent);
    transition:transform .18s cubic-bezier(0.34,1.56,0.64,1),filter .18s,box-shadow .18s;
    animation:btnPulse 4s ease-in-out infinite}
  .btn-primary::before{content:'';position:absolute;inset:0;border-radius:inherit;
    background:linear-gradient(155deg,rgba(255,255,255,0.22) 0%,transparent 52%);pointer-events:none}
  .btn-primary:active{transform:scale(.97)}
  .btn-primary[disabled]{opacity:.45;animation:none;cursor:default}
  .btn-secondary{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;
    padding:0.8rem 1.25rem;border-radius:16px;border:none;cursor:pointer;
    font-family:'Inter',sans-serif;font-size:0.875rem;font-weight:600;
    background:color-mix(in srgb,var(--color-surface-variant) 60%,transparent);color:var(--color-on-surface);
    backdrop-filter:blur(12px);
    box-shadow:0 1px 0 rgba(255,255,255,0.08) inset,0 0 0 1px var(--color-outline);
    transition:transform .18s cubic-bezier(0.34,1.56,0.64,1),filter .18s}
  .btn-secondary:active{transform:scale(.97)}
  .btn-row{display:flex;flex-wrap:wrap;gap:0.5rem;margin-top:0.9rem}
  .btn-row .btn-secondary{flex:1 1 130px;min-width:0;padding:0.7rem 0.6rem;font-size:0.8rem}
  .btn-ok{color:#8ef0b0;box-shadow:0 1px 0 rgba(255,255,255,0.08) inset,0 0 0 1px rgba(80,220,140,0.3)}
  .btn-no{color:#ff8b8b;box-shadow:0 1px 0 rgba(255,255,255,0.08) inset,0 0 0 1px rgba(255,90,90,0.28)}
  .btn-del{color:var(--color-on-surface-variant)}
  .btn-del[data-confirm="1"]{color:#ff8b8b;box-shadow:0 1px 0 rgba(255,255,255,0.08) inset,0 0 0 1px rgba(255,90,90,0.4)}

  /* ── Вкладки ── */
  .tabs{display:flex;gap:4px;padding:4px;border-radius:18px;margin-bottom:0.875rem;
    background:color-mix(in srgb,var(--color-surface) 45%,transparent);border:1px solid var(--color-outline);
    backdrop-filter:blur(20px)}
  .tabs button{flex:1;border:none;background:transparent;color:var(--color-on-surface-variant);
    padding:0.6rem 0.5rem;border-radius:14px;font:inherit;font-size:0.85rem;font-weight:600;cursor:pointer;transition:.2s}
  .tabs button.on{background:color-mix(in srgb,var(--color-primary) 14%,transparent);color:var(--color-primary)}

  /* ── Отзывы ── */
  .review-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 10px}
  .review-who{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;min-width:0;flex:1 1 60%}
  .review-name{font-family:'Syne',sans-serif;font-size:1rem;font-weight:700;color:var(--color-on-surface);
    overflow-wrap:anywhere}
  .tariff-pill{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:100px;
    border:1px solid color-mix(in srgb,var(--color-primary) 22%,transparent);
    background:color-mix(in srgb,var(--color-primary) 8%,transparent);
    color:var(--color-on-surface-variant);font-size:0.68rem;font-weight:500;white-space:nowrap}
  .tariff-pill .feature-dot{width:4px;height:4px}
  .review-date{font-size:0.72rem;color:var(--color-on-surface-variant);white-space:nowrap}
  .review-text{margin-top:0.6rem;font-size:0.9rem;line-height:1.7;color:var(--color-on-surface);white-space:pre-wrap;word-break:break-word}
  .review-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:0.75rem}
  .review .stars{font-size:0.95rem;margin-top:4px;display:block}
  .badge{display:inline-flex;align-items:center;gap:5px;font-size:0.68rem;font-weight:600;padding:3px 9px;border-radius:100px;
    background:color-mix(in srgb,var(--color-primary) 14%,transparent);color:var(--color-primary)}
  .badge.wait{background:rgba(245,166,35,0.16);color:#f0b13c}
  .empty{padding:2rem 1rem;text-align:center;color:var(--color-on-surface-variant);font-size:0.9rem}

  /* ── Ответ администратора ── */
  .reply{margin-top:0.85rem;padding:0.8rem 1rem;border-radius:16px;
    border:1px solid color-mix(in srgb,var(--color-primary) 20%,transparent);
    background:color-mix(in srgb,var(--color-primary) 7%,transparent)}
  .reply-title{font-size:0.68rem;text-transform:uppercase;letter-spacing:1px;
    color:var(--color-primary);font-weight:600;margin-bottom:5px}
  .reply-text{font-size:0.85rem;line-height:1.6;color:var(--color-on-surface);white-space:pre-wrap;overflow-wrap:anywhere}
  .admin-row{display:flex;flex-wrap:wrap;align-items:center;gap:0.5rem;margin-top:0.85rem}
  .admin-id{font-size:0.7rem;color:var(--color-on-surface-variant);margin-right:auto}
  .admin-row .btn-secondary{flex:0 1 auto;padding:0.5rem 0.8rem;font-size:0.75rem}
  .composer{margin-top:0.75rem}
  .composer textarea{min-height:76px;font-size:0.85rem}

  /* ── Карточка покупателя ── */
  .profile{margin-top:0.9rem;padding:0.85rem 1rem;border-radius:16px;
    background:color-mix(in srgb,var(--color-surface-variant) 55%,transparent);border:1px solid var(--color-outline)}
  .profile-title{font-size:0.68rem;text-transform:uppercase;letter-spacing:1px;color:var(--color-primary);font-weight:600;margin-bottom:8px}
  .profile-row{display:flex;justify-content:space-between;gap:12px;font-size:0.78rem;padding:3px 0}
  .profile-row span:first-child{color:var(--color-on-surface-variant);flex:0 0 auto}
  .profile-row span:last-child{color:var(--color-on-surface);text-align:right;min-width:0;overflow-wrap:anywhere}
  .profile-list{overflow-wrap:anywhere}
  .profile-list{margin-top:8px;padding-top:8px;border-top:1px solid var(--color-outline);
    font-size:0.74rem;color:var(--color-on-surface-variant);line-height:1.7}

  .skeleton{height:14px;border-radius:7px;background:var(--color-outline);animation:pulse 1.2s infinite ease-in-out}
  .skeleton + .skeleton{margin-top:12px}
  .skeleton.w1{width:55%}.skeleton.w2{width:80%}.skeleton.w3{width:35%}

  #toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);z-index:60;max-width:92vw;
    padding:0.75rem 1.2rem;border-radius:16px;font-size:0.85rem;opacity:0;pointer-events:none;transition:.25s ease;
    background:color-mix(in srgb,var(--color-surface-variant) 92%,transparent);color:var(--color-on-surface);
    border:1px solid color-mix(in srgb,var(--color-primary) 22%,transparent);
    box-shadow:0 12px 40px rgba(0,0,0,0.55);backdrop-filter:blur(16px)}
  #toast.show{opacity:1;transform:translate(-50%,0)}
  .hidden{display:none !important}

  @keyframes heroRing{0%,100%{transform:scale(1);opacity:0.6}50%{transform:scale(1.05);opacity:1}}
  @keyframes fadeUp{from{transform:translateY(14px);opacity:0}to{transform:translateY(0);opacity:1}}
  @keyframes pulse{0%,100%{opacity:.4}50%{opacity:.8}}
  @keyframes btnPulse{
    0%,100%{box-shadow:0 1px 0 rgba(255,255,255,0.22) inset,0 -1px 0 rgba(0,0,0,0.12) inset,0 6px 24px color-mix(in srgb,var(--color-primary) 28%,transparent)}
    50%{box-shadow:0 1px 0 rgba(255,255,255,0.22) inset,0 -1px 0 rgba(0,0,0,0.12) inset,0 10px 36px color-mix(in srgb,var(--color-primary) 42%,transparent)}
  }
  @media (prefers-reduced-motion: reduce){
    *{animation:none !important;transition:none !important}
  }

  /* Узкое или низкое окно (мини-апп на ПК) — компактнее шапка и отступы */
  @media (max-height: 760px), (max-width: 420px){
    .hero{padding:1.25rem 0.25rem 1rem;gap:0.7rem}
    .hero-logo-wrap,.hero-logo{width:64px;height:64px}
    .hero-logo{border-radius:20px;font-size:1.6rem}
    .hero-title{font-size:clamp(2rem,10vw,2.6rem)}
    .hero-desc{font-size:0.85rem;line-height:1.55}
    .card{padding:1.15rem;border-radius:20px}
    .tiles{gap:0.4rem}
  }
  @media (max-width: 360px){
    body{padding:0 0.6rem calc(2rem + env(safe-area-inset-bottom))}
    .btn-row .btn-secondary{flex:1 1 100%}
  }
