/* =============================================================================
   chat-v8.css — camera de chat A+ („Continuare Arhitectura Noua Design Dennis").
   Se încarcă ULTIMUL pe ruta chatului (după chat-fix10.css), împreună cu chat-v8.js.
   Se aplică doar când <html> are clasa `chat-v8` (pusă de ChatRouteController prin `html_class`):
   scoți clasa → chatul revine exact la cum era, fără alt cod de atins.
   Numele claselor `pc-*` sunt ale acestui strat (pc = „pagina de chat"); structura o pune chat-v8.js.
   NU atinge: scrisul pe fir (chat-stream.js), cererile, disclaimerul, drumul landing → chat.
   Principiile (din ce face omul aici):
   1. citește răspunsuri lungi și structurate → lizibilitatea întâi (16px/1.65 pe telefon, 17px/1.7 pe desktop,
      text #cfd1dc — nu alb pur —, ierarhie clară: secțiuni, liste, numere);
   2. scrie întrebări scurte → bara de scriere mereu clară, cu lumina barei de pe landing;
   3. Andu vorbește fără bulă, pe toată coloana; tu rămâi în bule; capul conversației spune cine vorbește;
   4. mișcare doar când se întâmplă ceva (trimiți, gândește, apare, deschizi) — nimic nu buclează cât citești.
   Cum e așezat fișierul: blocul de telefon (sub 720px), apoi același bloc pentru desktop (≥720px), apoi ajustările
   de desktop scrise de mână. Etichetele din comentarii (S, S+, S++, S+++, A, A+) sunt straturile construite pe rând
   și aprobate: TOATE sunt active, fiecare suprascrie ce e deasupra lui — de aceea ordinea blocurilor contează.
   ========================================================================== */
@media (max-width: 719.98px) {
/* ════════════════ COMUN (S, S+, S++) ════════════════ */
  /* o singură axă: capul conversației, mesajele și bara de scriere la 16px de margine
     (azi: 14 / 8 / 12px) */
  html.chat-v8 .up5-chat .grid-container.messages,
  html.chat-v8 .up5-chat .messages.grid-container {
    padding-left: 1rem;
    padding-right: 1rem;
  }
  html.chat-v8 .up5-chat .chatroom-top .grid-container {
    padding-left: 1rem;
    padding-right: 1rem;
  }
  html.chat-v8 .up5-chat .search-bar-container {
    padding-left: 1rem;
    padding-right: 1rem;
  }
  html.chat-v8 .up5-chat .js-messages-container {
    gap: 1.25rem;
  }
  /* tipografia răspunsului: 16px / 1.62, puțin mai luminos decât azi (contrast mai bun pe negru) */
  /* lizibilitatea întâi, pentru citit mult fără oboseală:
     · 16px / 1.65 — rândul are aer, ochiul găsește ușor începutul rândului următor;
     · textul nu e alb pur pe negru pur (contrastul maxim „vibrează" și obosește): #cfd1dc pe #080b12,
       ~12,5:1 — mult peste pragul AAA (7:1), dar fără strălucire;
     · îngroșat = alb, deci numerele și ideile cheie ies în față fără culori în plus;
     · paragrafele despărțite de 0,875rem — blocuri scurte, ușor de scanat. */
  html.chat-v8 .up5-chat .message.message--assistant {
    font-size: 1rem;
    line-height: 1.65;
    letter-spacing: 0.003em;
    color: #cfd1dc;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
  }
  html.chat-v8 .up5-chat .message.message--assistant :is(b, strong, .font-bold) {
    color: #f4f4f8;
    font-weight: 650;
  }
  html.chat-v8 .up5-chat .message p + p,
  html.chat-v8 .up5-chat .message p + ul,
  html.chat-v8 .up5-chat .message ul + p,
  html.chat-v8 .up5-chat .message p + ol,
  html.chat-v8 .up5-chat .message ol + p {
    margin-top: 0.875rem;
  }
  /* listele: bulina în gradientul site-ului, aliniată pe primul rând */
  html.chat-v8 .up5-chat .message--assistant ul {
    padding-left: 0;
    list-style: none;
  }
  html.chat-v8 .up5-chat .message--assistant ul > li {
    position: relative;
    padding-left: 1.125rem;
  }
  html.chat-v8 .up5-chat .message--assistant ul > li::before {
    content: "";
    position: absolute;
    left: 0.1875rem;
    top: 0.66em;
    width: 0.375rem;
    height: 0.375rem;
    border-radius: 50%;
    background: linear-gradient(135deg, #00c2ff, #b521e9);
  }
  html.chat-v8 .up5-chat .message--assistant li + li {
    margin-top: 0.4375rem;
  }
  html.chat-v8 .up5-chat .message--assistant ol {
    padding-left: 1.375rem;
  }
  html.chat-v8 .up5-chat .message--assistant ol > li::marker {
    color: #b9a8ff;
    font-weight: 700;
  }
  /* bula ta: gradientul barei de pe landing, mai plin; colțul „cozii" jos-dreapta */
  html.chat-v8 .up5-chat .message.message--user {
    padding: 0.75rem 1rem;
    font-size: 1rem;
    line-height: 1.45;
    border: 0;
    border-radius: 1.375rem 1.375rem 0.5rem 1.375rem;
    background:
      linear-gradient(135deg, rgba(0, 194, 255, 0.24), rgba(124, 92, 252, 0.26) 55%, rgba(181, 33, 233, 0.24)),
      #0b0f18;
    box-shadow:
      inset 0 0 0 0.0625rem rgba(157, 124, 255, 0.38),
      0 0.75rem 1.75rem -1rem rgba(124, 92, 252, 0.6);
  }
  /* bula-fantomă din drumul landing → chat (v2.2) trebuie să aterizeze exact pe noua bulă */
  html.chat-v8 .acx-v3-ghost .g-bub {
    background:
      linear-gradient(135deg, rgba(0, 194, 255, 0.24), rgba(124, 92, 252, 0.26) 55%, rgba(181, 33, 233, 0.24)),
      #0b0f18;
    box-shadow:
      inset 0 0 0 1px rgba(157, 124, 255, 0.38),
      0 12px 28px -16px rgba(124, 92, 252, 0.6);
  }
  /* secțiunile pliabile: rând de atins, cu săgeată care se rotește (în locul cercului „+") */
  html.chat-v8 .up5-chat .message .trigger {
    justify-content: space-between;
    min-height: 2.875rem;
    margin-top: 1rem;
    padding: 0.75rem 0;
    font: 600 0.9375rem/1.3 "Sora", "Inter", sans-serif;
    letter-spacing: -0.015em;
    border-top-color: rgba(255, 255, 255, 0.07);
    -webkit-tap-highlight-color: transparent;
  }
  /* numărul de surse (chat-explicatii.css §3, pus prin ::after — nu în text, ca motorul să nu se încurce):
     lipit de titlu și spus în cuvinte („3 surse"), nu o bulină singură la mijlocul rândului */
  html.chat-v8 .up5-chat .message .trigger {
    justify-content: flex-start;
  }
  html.chat-v8 .up5-chat .message .trigger[data-nr-ref]::after {
    content: attr(data-nr-ref) " surse";
    margin-left: 0.125rem;
    padding: 0;
    border: 0;
    background: none;
    font: 500 0.8125rem/1.3 "Inter", sans-serif;
    letter-spacing: 0;
    color: #8f93aa;
  }
  html.chat-v8 .up5-chat .message .trigger[data-nr-ref="1"]::after {
    content: "1 sursă";
  }
  html.chat-v8 .up5-chat .message .trigger .trigger-decoration {
    margin-left: auto;
    order: 2;
    flex: 0 0 1.75rem;
    width: 1.75rem;
    height: 1.75rem;
    background: rgba(255, 255, 255, 0.05);
    border: 0;
    transition:
      transform 0.45s cubic-bezier(0.22, 1, 0.36, 1),
      background 0.3s;
  }
  html.chat-v8 .up5-chat .message .trigger .trigger-decoration::before,
  html.chat-v8 .up5-chat .message .trigger .trigger-decoration::after {
    width: 0.4375rem;
    height: 0.4375rem;
    background: none;
    border-right: 0.09375rem solid #cdbfff;
    border-bottom: 0.09375rem solid #cdbfff;
    border-radius: 0.0625rem;
    transform: translate(-50%, -70%) rotate(45deg);
  }
  html.chat-v8 .up5-chat .message .trigger .trigger-decoration::after {
    display: none;
  }
  html.chat-v8 .up5-chat .message .trigger[data-active] .trigger-decoration {
    transform: rotate(180deg);
    background: rgba(124, 92, 252, 0.16);
  }
  html.chat-v8 .up5-chat .message .trigger:active .trigger-decoration {
    background: rgba(124, 92, 252, 0.24);
  }
  /* trimiterile la surse [1] [2]: pastile mici, apăsabile */
  html.chat-v8 .up5-chat .message sup.ref-marcaj {
    vertical-align: 0.35em;
  }
  /* bara de scriere: pastila întunecată de pe landing, cu inelul ei de lumină (static, calm) */
  html.chat-v8 .up5-chat .input-bar {
    border-color: transparent;
    background: linear-gradient(#131a28, #0d111a);
    box-shadow:
      inset 0 0.0625rem 0 rgba(255, 255, 255, 0.07),
      0 1rem 2.5rem -1.25rem rgba(124, 92, 252, 0.55),
      0 0.625rem 1.75rem -1rem rgba(0, 194, 255, 0.35);
  }
  html.chat-v8 .up5-chat .input-bar::before {
    opacity: 0.1;
  }
  html.chat-v8 .up5-chat .input-bar .pc-ring {
    position: absolute;
    inset: 0;
    z-index: 0;
    border-radius: inherit;
    padding: 0.09375rem;
    overflow: hidden;
    pointer-events: none;
    opacity: 0.55;
    transition: opacity 0.4s ease;
    -webkit-mask:
      linear-gradient(#000 0 0) content-box,
      linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
  }
  html.chat-v8 .up5-chat .input-bar .pc-ring i {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 150vw;
    height: 150vw;
    margin: -75vw 0 0 -75vw;
    background: conic-gradient(from 200deg, rgba(0, 194, 255, 0.95), rgba(124, 92, 252, 0.2) 22%, rgba(181, 33, 233, 0.95) 50%, rgba(124, 92, 252, 0.2) 78%, rgba(0, 194, 255, 0.95));
  }
  html.chat-v8 .up5-chat .input-bar:focus-within .pc-ring {
    opacity: 1;
  }
  html.chat-v8 .up5-chat .input-bar > :not(.pc-ring) {
    position: relative;
    z-index: 1;
  }
  html.chat-v8 .up5-chat .input-bar textarea::placeholder {
    color: #8f93aa;
  }
  /* ── BUTONUL DE TRIMITERE: un disc cu trei stări, care se transformă, nu se înlocuiește ──
     (cerut de Andu pe 28 sept: „un buton mai frumos, nu doar o săgeată, care să se transforme frumos
     în stop" — înlocuiește decizia din 7 sept „fără fundal")
     · gol: disc de sticlă, săgeata stinsă (nu ai ce trimite);
     · gata (ai scris): discul se umple cu gradientul site-ului, cu o mică săritură — invitația;
     · Andu lucrează: săgeata „pleacă" în sus, discul se întunecă, pătratul de stop crește în centru,
       iar pe margine se rotește lumina barei de pe landing — știi că lucrează și unde apeși ca să oprești.
     Stările vin din atributele puse deja de motor (`disabled` pe trimitere, `data-active` pe loading/stop). */
  html.chat-v8 .up5-chat .actions-cnt {
    flex: 0 0 2.75rem;
    width: 2.75rem;
    height: 2.75rem;
    margin: 0 0.0625rem 0.125rem 0;
    border-radius: 50%;
    isolation: isolate;
  }
  html.chat-v8 .up5-chat .actions-cnt::before,
  html.chat-v8 .up5-chat .actions-cnt::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: 50%;
    pointer-events: none;
  }
  /* discul */
  html.chat-v8 .up5-chat .actions-cnt::before {
    z-index: -1;
    background: rgba(255, 255, 255, 0.07);
    box-shadow: inset 0 0 0 0.0625rem rgba(255, 255, 255, 0.1);
    transition:
      background 0.35s ease,
      box-shadow 0.35s ease,
      transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1);
  }
  html.chat-v8 .up5-chat .input-bar:has(textarea:not(:placeholder-shown)) .actions-cnt::before {
    background: linear-gradient(135deg, #1fa8ff, #8b3cf0);
    box-shadow:
      inset 0 0.0625rem 0 rgba(255, 255, 255, 0.28),
      0 0.5rem 1.25rem -0.375rem rgba(124, 92, 252, 0.75);
    transform: scale(1.04);
  }
  html.chat-v8 .up5-chat .actions-cnt:has(> button[type="submit"][disabled])::before {
    background: #161c2b;
    box-shadow: inset 0 0 0 0.0625rem rgba(255, 255, 255, 0.08);
    transform: scale(1);
  }
  /* lumina care se rotește pe margine, doar cât Andu lucrează */
  html.chat-v8 .up5-chat .actions-cnt::after {
    z-index: -1;
    inset: -0.125rem;
    padding: 0.125rem;
    background: conic-gradient(from 0deg, #00c2ff, rgba(124, 92, 252, 0) 30%, rgba(124, 92, 252, 0) 55%, #b521e9 80%, #00c2ff);
    -webkit-mask:
      linear-gradient(#000 0 0) content-box,
      linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    opacity: 0;
    transition: opacity 0.4s ease;
    animation: pcRoteste 1.6s linear infinite;
  }
  html.chat-v8 .up5-chat .actions-cnt:has(> button[type="submit"][disabled])::after {
    opacity: 1;
  }
  /* săgeata: desenată din nou, plină și echilibrată (cea veche era o linie subțire, cu vârf de pană) */
  html.chat-v8 .up5-chat .actions-cnt button[type="submit"] svg {
    opacity: 0;
  }
  html.chat-v8 .up5-chat .actions-cnt button[type="submit"]::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: 1.25rem;
    height: 1.25rem;
    margin: -0.625rem 0 0 -0.625rem;
    background: #fff;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 19V5M5.5 11.5 12 5l6.5 6.5' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 19V5M5.5 11.5 12 5l6.5 6.5' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
  }
  html.chat-v8 .up5-chat .actions-cnt button[type="submit"] {
    opacity: 0.42;
    transform: none;
    filter: none;
    transition:
      opacity 0.3s ease,
      transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
    -webkit-tap-highlight-color: transparent;
  }
  html.chat-v8 .up5-chat .actions-cnt button[type="submit"]:hover {
    filter: none;
  }
  html.chat-v8 .up5-chat .input-bar:has(textarea:not(:placeholder-shown)) .actions-cnt button[type="submit"] {
    opacity: 1;
  }
  html.chat-v8 .up5-chat .input-bar .actions-cnt button[type="submit"]:active {
    transform: scale(0.86);
    transition-duration: 0.12s;
  }
  /* la trimitere, săgeata „pleacă" în sus și se stinge */
  html.chat-v8 .up5-chat .actions-cnt button[type="submit"][disabled] {
    opacity: 0;
    transform: translateY(-0.875rem) scale(0.7);
    transition:
      opacity 0.22s ease,
      transform 0.36s cubic-bezier(0.4, 0, 1, 1);
  }
  /* stop: pătratul rotunjit crește în centru, cu o rotire scurtă; la final se strânge la loc */
  html.chat-v8 .up5-chat .actions-cnt .button-stop {
    transform: scale(0.3) rotate(-90deg);
    transition:
      opacity 0.25s ease,
      transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
  }
  html.chat-v8 .up5-chat .actions-cnt .button-stop svg {
    transform: scale(0.94);
  }
  html.chat-v8 .up5-chat .actions-cnt .button-loading[data-active] ~ .button-stop,
  html.chat-v8 .up5-chat .actions-cnt .button-stop[data-active] {
    transform: none;
    transition-delay: 0.08s;
  }
  html.chat-v8 .up5-chat .actions-cnt .button-stop:active {
    transform: scale(0.86) !important;
  }
  /* „la capăt": mic, de sticlă, în dreapta — nu mai acoperă mijlocul conținutului */
  html.chat-v8 .up5-chat .chat-scroll-down {
    left: auto;
    right: 0;
    width: 2.375rem;
    height: 2.375rem;
    transform: scale(0.6);
    background: rgba(19, 24, 36, 0.78);
    border-color: rgba(255, 255, 255, 0.12);
  }
  html.chat-v8 .up5-chat .chat-scroll-down[data-active] {
    transform: scale(1);
  }
  html.chat-v8 .up5-chat .chat-scroll-down:active {
    transform: scale(0.92);
  }
  /* sugestiile (chat gol): sticlă, cu inel în gradient la atingere */
  html.chat-v8 .up5-chat .chat-suggestions__item {
    border-radius: 1.125rem;
    background: rgba(255, 255, 255, 0.04);
    border-color: rgba(255, 255, 255, 0.08);
    transition:
      transform 0.2s cubic-bezier(0.34, 1.4, 0.64, 1),
      background 0.2s,
      border-color 0.2s;
    -webkit-tap-highlight-color: transparent;
  }
  html.chat-v8 .up5-chat .chat-suggestions__item:active {
    transform: scale(0.97);
    background: rgba(124, 92, 252, 0.12);
    border-color: rgba(157, 124, 255, 0.45);
  }
  /* inima: mică „bătaie" când o apeși */
  html.chat-v8 .up5-chat .button-add-to-favorites[data-active] {
    animation: pcBate 0.45s cubic-bezier(0.34, 1.6, 0.64, 1);
  }
  @keyframes pcBate {
    0% {
      transform: scale(1);
    }
    40% {
      transform: scale(1.28);
    }
    100% {
      transform: scale(1);
    }
  }
  /* cardul de produs din răspuns: aceeași sticlă și aceleași raze ca restul */
  html.chat-v8 .up5-chat .message__link {
    border-radius: 1.25rem;
    background: rgba(255, 255, 255, 0.04);
    border-color: rgba(255, 255, 255, 0.08);
  }
  /* „se gândește": trei puncte care respiră (fără țopăit) */
  @keyframes pcRespira {
    0%,
    100% {
      transform: scale(0.7);
      opacity: 0.45;
    }
    45% {
      transform: scale(1);
      opacity: 1;
    }
  }
  /* ════════════════ S+ și S++ · DOCUMENT: Andu vorbește fără bulă ════════════════ */
  html.chat-v8 .up5-chat .message-container:has(> .message--assistant:not(.message-assistant-disclaimer)) {
    max-width: 100%;
    align-self: stretch;
  }
  html.chat-v8 .up5-chat .message-container > .message.message--assistant:not(.message-assistant-disclaimer) {
    width: 100%;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: none;
    box-shadow: none;
  }
  /* numele și chipul lui Andu, o dată, deasupra primului lui mesaj după întrebarea ta */
  html.chat-v8 .up5-chat .message-container:has(> .message--user) + .message-container > .message--assistant:not(.message-assistant-disclaimer)::before,
  html.chat-v8 .up5-chat .message-container:has(> .message--user) + .message-container > .message--pending::before {
    content: "Andu";
    display: flex;
    align-items: center;
    height: 1.75rem;
    margin-bottom: 0.625rem;
    padding-left: 2.25rem;
    font: 700 0.9375rem/1 "Sora", "Inter", sans-serif;
    letter-spacing: -0.01em;
    color: #fff;
  }
  /* chipul: pe containerul mesajului (pseudo-elementele bulei sunt ocupate: numele + cursorul),
     rotund de-adevăratelea, cu inel în gradient — arată bine pe orice fundal (și pe luminile din S++) */
  html.chat-v8 .up5-chat .message-container:has(> .message--user) + .message-container:has(> .message--assistant:not(.message-assistant-disclaimer), > .message--pending)::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    z-index: 1;
    width: 1.75rem;
    height: 1.75rem;
    box-sizing: border-box;
    border-radius: 50%;
    border: 0.125rem solid transparent;
    background:
      url("../../images/andu-preda.png") center / cover padding-box,
      linear-gradient(135deg, #00c2ff, #b521e9) border-box;
    box-shadow: inset 0 0 0 0.0625rem #0b0e15;
  }
  /* chipul apare lin o singură dată, odată cu „se gândește"; când răspunsul îl înlocuiește, rămâne pe loc */
  html.chat-v8 .up5-chat .message-container:has(> .message--user) + .message-container:has(> .message--pending)::before {
    animation: pcApare 0.4s ease-out both;
  }
  @keyframes pcApare {
    to {
      opacity: 1;
    }
  }
  /* blocurile de rețetă / masă devin cartonașe — obiecte, nu text */
  html.chat-v8 .up5-chat .message--assistant .meal-item,
  html.chat-v8 .up5-chat .message--assistant .chat-recipe {
    margin: 0.875rem 0;
    padding: 0.875rem 1rem;
    border-radius: 1.125rem;
    background: rgba(255, 255, 255, 0.035);
    box-shadow: inset 0 0 0 0.0625rem rgba(255, 255, 255, 0.07);
  }
  /* conținutul unei secțiuni deschise: o linie verticală în gradient îl leagă de titlu */
  html.chat-v8 .up5-chat .message--assistant > .content {
    padding-left: 0.875rem;
    border-left: 0.125rem solid transparent;
    border-image: linear-gradient(180deg, rgba(0, 194, 255, 0.7), rgba(181, 33, 233, 0.35)) 1;
  }
  /* inima din colț: discretă, jos-dreapta, ca o acțiune a mesajului */
  html.chat-v8 .up5-chat .message--assistant > .button-add-to-favorites {
    opacity: 0.8;
  }
  /* „se gândește": Andu + „se gândește" care sclipește + trei puncte care respiră; fără bulă */
  html.chat-v8 .up5-chat .message.message--pending {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.3125rem;
    min-height: 0;
    padding: 0;
    border: 0;
    background: none;
    box-shadow: none;
  }
  html.chat-v8 .up5-chat .message.message--pending::before {
    flex: 0 0 100%;
  }
  html.chat-v8 .up5-chat .message.message--pending::after {
    content: "se gândește";
    order: -1;
    margin-right: 0.375rem;
    font: 500 0.9375rem/1.4 "Inter", sans-serif;
    background: linear-gradient(90deg, #8f93aa 0%, #8f93aa 35%, #e9e3ff 50%, #8f93aa 65%, #8f93aa 100%);
    background-size: 250% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    animation: pcSclipeste 2.2s linear infinite;
  }
  html.chat-v8 .up5-chat .message.message--pending::before {
    order: -2;
  }
  @keyframes pcSclipeste {
    from {
      background-position: 100% 0;
    }
    to {
      background-position: -150% 0;
    }
  }
  html.chat-v8 .up5-chat .message--pending div {
    width: 0.375rem;
    height: 0.375rem;
    animation: pcRespira 1.4s ease-in-out infinite;
  }
  html.chat-v8 .up5-chat .message--pending div:nth-child(2) {
    animation-delay: 0.18s;
  }
  html.chat-v8 .up5-chat .message--pending div:nth-child(3) {
    animation-delay: 0.36s;
  }
  /* intrările: bula ta urcă din bara de scriere (de jos), textul lui Andu apare lin — fără alunecări laterale */
  html.chat-v8 .up5-chat .message.message--user {
    transform: translateY(1.25rem) scale(0.94);
    transform-origin: 100% 100%;
    transition:
      opacity 0.35s ease-out,
      transform 0.55s cubic-bezier(0.22, 1, 0.36, 1);
  }
  html.chat-v8 .up5-chat .message.message--user[data-visible] {
    transform: none;
  }
  /* răspunsul lui Andu NU mai intră cu fade/alunecare: pornește gol și textul curge oricum (scrisul pe fir,
     neatins), iar „Andu" și chipul trebuie să rămână pe loc când „se gândește" e înlocuit de răspuns —
     altfel eticheta clipea o clipă. Apariția lină o are „se gândește", mai jos. */
  html.chat-v8 .up5-chat .message.message--assistant:not(.message-assistant-disclaimer) {
    opacity: 1;
    transform: none;
    transition: none;
  }
  html.chat-v8 .up5-chat .message.message--pending {
    transform: translateY(0.375rem);
    transition:
      opacity 0.4s ease-out,
      transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
  }
  html.chat-v8 .up5-chat .message.message--pending[data-visible] {
    transform: none;
  }
  /* rândul Favorite / Feedback (apare la atingerea mesajului): pastile fantomă */
  html.chat-v8 .up5-chat .message-options {
    margin-top: 0.5rem;
  }
  /* ════════════════ S+++ · S++ cu mai mult loc și capul din sticlă mată (28 sept) ════════════════
     · fără „Andu" și chip în conversație: cine vorbește spune deja capul (chip, nume, „Se gândește…"),
       iar în conversație se vede din formă: tu = bule colorate, la dreapta; Andu = text pe toată lățimea;
     · fără etichetă, ritmul face separarea: mai mult aer înainte de fiecare întrebare a ta (începe o „tură"),
       mai puțin între întrebare și răspuns (sunt o pereche);
     · capul conversației: sticla mată a meniului de pe landing (blur 26px, saturate 1.3) — conversația
       curge pe sub el, estompată; o linie de lumină în gradient îl desparte de conținut. */
  html.chat-v8 .up5-chat .message-container:has(> .message--user) + .message-container > .message--assistant:not(.message-assistant-disclaimer)::before,
  html.chat-v8 .up5-chat .message-container:has(> .message--user) + .message-container > .message--pending::before,
  html.chat-v8 .up5-chat .message-container:has(> .message--user) + .message-container:has(> .message--assistant:not(.message-assistant-disclaimer), > .message--pending)::before {
    content: none;
    display: none;
  }
  html.chat-v8 .up5-chat .js-messages-container {
    gap: 0.875rem;
    padding-top: 1.25rem;
  }
  html.chat-v8 .up5-chat .js-messages-container > .message-container:has(> .message--user):not(:first-child) {
    margin-top: 1.375rem;
  }
  html.chat-v8 .up5-chat .message-container:has(> .message--user) {
    max-width: 84%;
  }
  /* „se gândește": doar textul care sclipește și punctele, la locul unde va începe răspunsul */
  html.chat-v8 .up5-chat .message.message--pending {
    padding-top: 0.125rem;
  }
  /* capul conversației: sticla neagră și fină a meniului de pe landing (28 sept: Andu a respins varianta
     cu lumini colorate în sticlă — „era bine mai fină și neagră"). Doar negru estompat, pânza fină de puncte
     și linia subțire de lumină de jos. */
  html.chat-v8 .up5-chat .chatroom-top {
    background: rgba(8, 11, 18, 0.82);
    -webkit-backdrop-filter: blur(26px) saturate(1.3);
    backdrop-filter: blur(26px) saturate(1.3);
    border-bottom: 0;
  }
  html.chat-v8 .up5-chat .chatroom-top::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 0.0625rem;
    background: linear-gradient(90deg, rgba(0, 194, 255, 0), rgba(0, 194, 255, 0.4) 22%, rgba(124, 92, 252, 0.35) 50%, rgba(181, 33, 233, 0.4) 78%, rgba(181, 33, 233, 0));
    pointer-events: none;
  }
  html.chat-v8 .up5-chat .chatroom-top::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image: radial-gradient(rgba(200, 210, 255, 0.16) 0.6px, transparent 0.9px);
    background-size: 14px 14px;
    background-position: 7px 7px;
    -webkit-mask: linear-gradient(90deg, transparent, #000 35%, #000 65%, transparent);
    mask: linear-gradient(90deg, transparent, #000 35%, #000 65%, transparent);
    opacity: 0.55;
    pointer-events: none;
  }
  html.chat-v8 .up5-chat .chatroom-top > * {
    position: relative;
  }
  /* numele din cap, puțin mai mare — e acum singurul loc unde apare */
  html.chat-v8 .up5-chat .chatroom-top .font-bold.large-font-18 {
    font-size: 1.0625rem;
    letter-spacing: -0.02em;
  }
  /* ════════════════ A · S+++ gândit pentru folosire (28 sept) ════════════════
     1. UNDE SE TERMINĂ UN RĂSPUNS: la capătul fiecărui răspuns al lui Andu — după text și după carduri —
        stă rândul lui de acțiuni („♡ Salvează", „Feedback"), urmat de o linie fină care se stinge spre dreapta.
        Rândul e mereu la vedere (înainte apărea doar la atingerea bulei, deci favoritele și feedback-ul erau
        practic ascunse) și apare abia când răspunsul s-a terminat de scris — e chiar semnalul de final.
     2. O SINGURĂ INIMĂ: cea din colțul textului (care, fără bulă, plutea în gol) dispare; rămâne cea din rând.
        Motorul sincronizează deja toate inimile unui mesaj (`window.setActiveStatus`), deci starea rămâne corectă.
     3. BARA DE SCRIERE PLUTEȘTE: fără bandă în spate; conversația se estompează sub ea lung și lin, fără linie;
        lumina ei e scurtă și stă în jurul barei, deci nu mai e tăiată de marginea de jos a browserului. */
  html.chat-v8 .up5-chat .message--assistant > .button-add-to-favorites {
    display: none;
  }
  html.chat-v8 .up5-chat .message-container > .message-options {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    align-self: stretch;
    max-height: none;
    margin-top: 0.625rem;
    opacity: 1;
    overflow: visible;
    transform: none;
    transition: opacity 0.3s ease;
  }
  /* cât se scrie încă (drumul clasic pune rândul de la început), rândul stă ascuns */
  html.chat-v8 .up5-chat .message-container:has(> .message[data-text-loading]) > .message-options {
    opacity: 0;
    pointer-events: none;
  }
  /* linia de final, care se stinge spre dreapta */
  html.chat-v8 .up5-chat .message-container > .message-options::after {
    content: "";
    flex: 1 1 auto;
    height: 0.0625rem;
    margin-left: 0.5rem;
    background: linear-gradient(90deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0));
  }
  /* apare lin, o singură dată, când se termină răspunsul (clasa o pune chat-v8.js doar pe rândurile noi) */
  html.chat-v8 .up5-chat .message-options.pc-nou {
    animation: pcRandApare 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
  }
  @keyframes pcRandApare {
    from {
      opacity: 0;
      transform: translateY(0.375rem);
    }
    to {
      opacity: 1;
      transform: none;
    }
  }
  html.chat-v8 .up5-chat .message-options .button-add-to-favorites,
  html.chat-v8 .up5-chat .message-options .trigger-feedback {
    min-height: 2.25rem;
    gap: 0.4375rem;
    margin: 0 0 0 -0.625rem;
    padding: 0.375rem 0.625rem;
    border: 0;
    border-radius: 0.75rem;
    background: none;
    font: 600 0.8125rem/1 "Inter", sans-serif;
    color: #9a9db2;
    -webkit-tap-highlight-color: transparent;
  }
  html.chat-v8 .up5-chat .message-options .trigger-feedback {
    margin-left: 0.25rem;
  }
  html.chat-v8 .up5-chat .message-options .button-add-to-favorites::before {
    width: 1rem;
    height: 1rem;
  }
  html.chat-v8 .up5-chat .message-options .trigger-feedback svg {
    width: 0.9375rem;
    height: 0.9375rem;
  }
  html.chat-v8 .up5-chat .message-options .button-add-to-favorites:active,
  html.chat-v8 .up5-chat .message-options .trigger-feedback:active {
    background: rgba(255, 255, 255, 0.06);
    transform: scale(0.95);
  }
  /* eticheta spune ce face și ce s-a întâmplat: „Salvează" → „Salvat" */
  html.chat-v8 .up5-chat .message-options .button-add-to-favorites > div {
    display: none;
  }
  html.chat-v8 .up5-chat .message-options .button-add-to-favorites::after {
    content: "Salvează";
  }
  html.chat-v8 .up5-chat .message-options .button-add-to-favorites[data-active] {
    background: none;
    color: #ff7a8f;
  }
  html.chat-v8 .up5-chat .message-options .button-add-to-favorites[data-active]::after {
    content: "Salvat";
  }
  /* bara de scriere care plutește: fără bandă în spate */
  html.chat-v8:root .up5-chat .search-bar-container {
    background: none;
    border-top: 0;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    padding-bottom: calc(1rem + env(safe-area-inset-bottom, 0px));
  }
  /* estomparea conversației sub bară: lungă și lină, fără margine vizibilă, ancorată jos */
  html.chat-v8 .up5-chat .search-bar-container::before {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 9.5rem;
    z-index: -1;
    pointer-events: none;
    /* opac deja la marginea de sus a barei (~50%): textul nu mai „iese" pe la colțurile ei rotunjite */
    background: linear-gradient(180deg, rgba(8, 11, 18, 0) 0%, rgba(8, 11, 18, 0.55) 25%, rgba(8, 11, 18, 0.9) 42%, #080b12 50%);
  }
  /* lumina barei: scurtă, în jurul ei, mai mult în sus decât în jos */
  html.chat-v8 .up5-chat .input-bar {
    box-shadow:
      inset 0 0.0625rem 0 rgba(255, 255, 255, 0.07),
      0 -0.375rem 1.5rem -0.75rem rgba(124, 92, 252, 0.45),
      0 0.25rem 0.75rem -0.375rem rgba(0, 0, 0, 0.6);
  }
  html.chat-v8 .up5-chat .search-bar-container .input-bar::before,
  html.chat-v8 .up5-chat .search-bar-container .input-bar::after {
    inset: 0.25rem 0.75rem 0.5rem;
    filter: blur(0.625rem);
  }
  html.chat-v8 .up5-chat .search-bar-container .input-bar::before {
    opacity: 0.14;
  }
  /* conturul barei: uniform și discret (fără dunga turcoaz de jos, care se citea ca sublinierea unui câmp);
     se aprinde la atingere; lumina care se rotește (cât lucrează Andu) rămâne */
  html.chat-v8 .up5-chat .input-bar .pc-ring {
    background: linear-gradient(90deg, rgba(0, 194, 255, 0.5), rgba(124, 92, 252, 0.35) 50%, rgba(181, 33, 233, 0.5));
    opacity: 0.45;
  }
  html.chat-v8 .up5-chat .input-bar .pc-ring i {
    display: none;
  }
  html.chat-v8 .up5-chat .input-bar:focus-within .pc-ring {
    opacity: 0.9;
  }
  html.chat-v8 .up5-chat .search-bar-container .input-bar:focus-within::after {
    opacity: 0.28;
  }
  /* ── A · cardul de produs, compact (structura: chat-v8.js „CARDUL DE PRODUS") ──
     Ce îi trebuie omului: ce e (poza + nume), de unde vine („Recomandat de Andu · magazin"), ce câștigă (cuponul)
     și unde apasă (tot cardul; săgeata o arată). Două rânduri, fără spații goale. */
  html.chat-v8:root .up5-chat .message-container .message__link.pc-prod {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.625rem;
    margin-top: 0.75rem;
    padding: 0.625rem;
    border: 0;
    border-radius: 1.125rem;
    background: #0f131d;
    box-shadow:
      inset 0 0 0 0.0625rem rgba(255, 255, 255, 0.08),
      0 0.75rem 1.5rem -1rem rgba(0, 0, 0, 0.75);
    color: #fff;
    text-decoration: none;
    -webkit-tap-highlight-color: transparent;
    transition: transform 0.2s cubic-bezier(0.34, 1.4, 0.64, 1);
  }
  html.chat-v8:root .up5-chat .message__link.pc-prod:active {
    transform: scale(0.985);
  }
  html.chat-v8 .up5-chat .pc-prod-row {
    display: flex;
    align-items: center;
    gap: 0.75rem;
  }
  /* poza: pe o plăcuță luminoasă (pozele magazinului au fundal alb); `multiply` topește albul în plăcuță */
  html.chat-v8 .up5-chat .pc-prod-img {
    flex: 0 0 3.5rem;
    height: 3.5rem;
    display: grid;
    place-items: center;
    border-radius: 0.75rem;
    background: radial-gradient(circle at 50% 38%, #ffffff, #e8ebf4 72%);
    overflow: hidden;
  }
  html.chat-v8:root .up5-chat .pc-prod-img img.message__link__img {
    width: 86%;
    height: 86%;
    margin: 0;
    border-radius: 0;
    background: none;
    object-fit: contain;
    mix-blend-mode: multiply;
    box-shadow: none;
  }
  html.chat-v8 .up5-chat .pc-prod-id {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    min-width: 0;
  }
  html.chat-v8 .up5-chat .pc-prod-name {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    font: 700 0.9375rem/1.25 "Sora", "Inter", sans-serif;
    letter-spacing: -0.01em;
    color: #fff;
  }
  html.chat-v8 .up5-chat .pc-prod-host {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    font: 500 0.75rem/1.3 "Inter", sans-serif;
    color: #8f93aa;
  }
  /* săgeata: arată că tot cardul duce la produs, în altă filă */
  html.chat-v8:root .up5-chat .message__link .pc-prod-cta {
    flex: 0 0 2.25rem;
    width: 2.25rem;
    height: 2.25rem;
    margin: 0 0.125rem 0 0;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.07);
    box-shadow: inset 0 0 0 0.0625rem rgba(255, 255, 255, 0.12);
    font-size: 0;
    color: #fff;
  }
  html.chat-v8:root .up5-chat .message__link .pc-prod-cta::after {
    content: "";
    width: 0.875rem;
    height: 0.875rem;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17 17 7M9 7h8v8'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17 17 7M9 7h8v8'/%3E%3C/svg%3E") center / contain no-repeat;
    transform: none;
  }
  /* CUPONUL: un singur rând, cel mai colorat lucru din card */
  html.chat-v8 .up5-chat .pc-prod-cod {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.625rem;
    min-height: 2.625rem;
    padding: 0.375rem 0.75rem 0.375rem 0.875rem;
    border-radius: 0.75rem;
    border: 0.078125rem dashed rgba(170, 140, 255, 0.55);
    background: linear-gradient(90deg, rgba(0, 194, 255, 0.09), rgba(124, 92, 252, 0.09) 50%, rgba(181, 33, 233, 0.11));
    cursor: pointer;
    transition:
      transform 0.18s cubic-bezier(0.34, 1.4, 0.64, 1),
      border-color 0.25s,
      background 0.25s;
  }
  html.chat-v8 .up5-chat .pc-prod-cod:active {
    transform: scale(0.97);
  }
  html.chat-v8 .up5-chat .pc-prod-cod-t {
    font: 500 0.8125rem/1.2 "Inter", sans-serif;
    color: #dcdcea;
    white-space: nowrap;
  }
  html.chat-v8 .up5-chat .pc-prod-cod b {
    display: inline-flex;
    align-items: center;
    gap: 0.4375rem;
    font: 800 1rem/1 "Sora", "Inter", sans-serif;
    letter-spacing: 0.07em;
    background: linear-gradient(90deg, #5fd3ff, #b78cff 55%, #e07bff);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
  }
  html.chat-v8 .up5-chat .pc-prod-cod b::after {
    content: "";
    width: 0.9375rem;
    height: 0.9375rem;
    background: #cdbfff;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='12' height='12' rx='2.5'/%3E%3Cpath d='M5 15V5a2 2 0 0 1 2-2h8'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='12' height='12' rx='2.5'/%3E%3Cpath d='M5 15V5a2 2 0 0 1 2-2h8'/%3E%3C/svg%3E") center / contain no-repeat;
  }
  html.chat-v8 .up5-chat .pc-prod-cod.pc-copiat {
    border-color: rgba(52, 211, 130, 0.75);
    background: rgba(52, 211, 130, 0.1);
  }
  html.chat-v8 .up5-chat .pc-prod-cod.pc-copiat .pc-prod-cod-t {
    font-size: 0;
  }
  html.chat-v8 .up5-chat .pc-prod-cod.pc-copiat .pc-prod-cod-t::before {
    content: "Copiat — folosește-l la checkout";
    font-size: 0.8125rem;
    color: #a6f0c6;
  }
  html.chat-v8 .up5-chat .pc-prod-cod.pc-copiat b::after {
    background: #34d382;
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E");
  }
  /* ════════════════ S++ · VIU, LA MOMENTUL POTRIVIT (28 sept, suprascrie S++ de la început) ════════════════
     S+ plus luminile landing-ului — dar DOAR când nu ai ce citi:
     · pe ecranul gol („Salut! Sunt Andu") sunt aprinse: te întâmpină ca pe landing;
     · cât Andu se gândește, se aprind puțin mai tare, iar inelul barei se rotește;
     · în clipa în care începe răspunsul, se sting lin (~1,2s) și fundalul devine calm și uniform pentru citit.
     Stările vin din DOM-ul motorului: `[data-empty]` pe lista de mesaje (chat gol), `.message--pending` („se gândește"). */
  /* fundalul ambiental: două lumini ca pe landing + pânza de puncte sus; derivă foarte lentă (calm) */
  html.chat-v8 .pc-amb {
    position: fixed;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    overflow: hidden;
  }
  html.chat-v8 .pc-amb::before,
  html.chat-v8 .pc-amb::after {
    content: "";
    position: absolute;
    width: 90vw;
    height: 90vw;
    border-radius: 50%;
    filter: blur(60px);
    opacity: 0;
    transition: opacity 1.2s cubic-bezier(0.4, 0, 0.2, 1);
    animation: pcDeriva 38s ease-in-out infinite alternate;
  }
  html.chat-v8 .pc-amb::before {
    left: -35vw;
    top: 18%;
    background: #0a8cff;
  }
  html.chat-v8 .pc-amb::after {
    right: -40vw;
    bottom: 12%;
    background: #9b2be6;
    animation-delay: -19s;
  }
  @keyframes pcDeriva {
    from {
      transform: translate3d(0, 0, 0) scale(1);
    }
    to {
      transform: translate3d(8vw, -6vh, 0) scale(1.12);
    }
  }
  /* chat gol: aprinse, ca pe landing */
  html.chat-v8 body:has(.js-messages-container[data-empty]) .pc-amb::before,
  html.chat-v8 body:has(.js-messages-container[data-empty]) .pc-amb::after {
    opacity: 0.2;
    transition-duration: 0.9s;
  }
  /* „se gândește": puțin mai tare */
  html.chat-v8 body:has(.up5-chat .message--pending) .pc-amb::before,
  html.chat-v8 body:has(.up5-chat .message--pending) .pc-amb::after {
    opacity: 0.3;
    transition-duration: 0.8s;
  }
  html.chat-v8 .pc-amb i {
    position: absolute;
    inset: 0 0 auto;
    height: 42vh;
    background-image: radial-gradient(rgba(190, 200, 255, 0.2) 0.7px, transparent 1px);
    background-size: 20px 20px;
    -webkit-mask: linear-gradient(180deg, #000 10%, transparent);
    mask: linear-gradient(180deg, #000 10%, transparent);
    opacity: 0;
    transition: opacity 1.2s cubic-bezier(0.4, 0, 0.2, 1);
  }
  html.chat-v8 body:has(.js-messages-container[data-empty]) .pc-amb i,
  html.chat-v8 body:has(.up5-chat .message--pending) .pc-amb i {
    opacity: 0.7;
    transition-duration: 0.9s;
  }
  /* conținutul stă peste fundal */
  html.chat-v8 .up5acc {
    z-index: 2;
  }
  html.chat-v8 .up5-chat .search-bar-container {
    background: linear-gradient(180deg, rgba(8, 11, 18, 0), rgba(8, 11, 18, 0.9) 34%);
    border-top-color: transparent;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }
  /* inelul barei: în repaus, static; cât Andu lucrează, lumina se rotește (ca pe landing la trimitere) */
  html.chat-v8 .up5-chat .input-bar .pc-ring b {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 150vw;
    height: 150vw;
    margin: -75vw 0 0 -75vw;
    background: conic-gradient(from 0deg, rgba(0, 194, 255, 1), rgba(124, 92, 252, 0.15) 18%, transparent 30%, transparent 55%, rgba(181, 33, 233, 1) 72%, rgba(124, 92, 252, 0.15) 86%, rgba(0, 194, 255, 1));
    opacity: 0;
    transition: opacity 0.6s ease;
    animation: pcRoteste 2.6s linear infinite;
    animation-play-state: paused;
  }
  /* inelul barei se rotește doar cât „se gândește" (apoi rămâne doar lumina de pe butonul de stop) */
  html.chat-v8 body:has(.up5-chat .message--pending) .up5-chat .input-bar .pc-ring {
    opacity: 1;
  }
  html.chat-v8 body:has(.up5-chat .message--pending) .up5-chat .input-bar .pc-ring b {
    opacity: 1;
    animation-play-state: running;
  }
  @keyframes pcRoteste {
    to {
      transform: rotate(360deg);
    }
  }
  /* sugestiile intră în cascadă */
  html.chat-v8 .up5-chat .chat-suggestions[data-active] .chat-suggestions__items .cell {
    animation: pcUrca 0.7s cubic-bezier(0.22, 1, 0.36, 1) both;
  }
  html.chat-v8 .up5-chat .chat-suggestions[data-active] .chat-suggestions__items .cell:nth-child(2) {
    animation-delay: 0.07s;
  }
  html.chat-v8 .up5-chat .chat-suggestions[data-active] .chat-suggestions__items .cell:nth-child(3) {
    animation-delay: 0.14s;
  }
  html.chat-v8 .up5-chat .chat-suggestions[data-active] .chat-suggestions__items .cell:nth-child(4) {
    animation-delay: 0.21s;
  }
  @keyframes pcUrca {
    from {
      opacity: 0;
      transform: translateY(0.75rem);
    }
    to {
      opacity: 1;
      transform: none;
    }
  }
}
/* >>> DESKTOP (≥720px): aceleași reguli ca în blocul de telefon de mai sus, pentru ecranele mari.
   Blocul a fost generat automat din cel de telefon: dacă schimbi o regulă de telefon care trebuie să se vadă
   și pe desktop, schimb-o și aici (același selector). Ajustările proprii desktopului urmează după bloc. <<< */
@media (min-width: 720px) {
/* ════════════════ COMUN (S, S+, S++) ════════════════ */
  /* o singură axă: capul conversației, mesajele și bara de scriere la 16px de margine
     (azi: 14 / 8 / 12px) */
  html.chat-v8 .up5-chat .js-messages-container {
    gap: 1.25rem;
  }
  /* tipografia răspunsului: 16px / 1.62, puțin mai luminos decât azi (contrast mai bun pe negru) */
  /* lizibilitatea întâi, pentru citit mult fără oboseală:
     · 16px / 1.65 — rândul are aer, ochiul găsește ușor începutul rândului următor;
     · textul nu e alb pur pe negru pur (contrastul maxim „vibrează" și obosește): #cfd1dc pe #080b12,
       ~12,5:1 — mult peste pragul AAA (7:1), dar fără strălucire;
     · îngroșat = alb, deci numerele și ideile cheie ies în față fără culori în plus;
     · paragrafele despărțite de 0,875rem — blocuri scurte, ușor de scanat. */
  html.chat-v8 .up5-chat .message.message--assistant {
    font-size: 1rem;
    line-height: 1.65;
    letter-spacing: 0.003em;
    color: #cfd1dc;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
  }
  html.chat-v8 .up5-chat .message.message--assistant :is(b, strong, .font-bold) {
    color: #f4f4f8;
    font-weight: 650;
  }
  html.chat-v8 .up5-chat .message p + p,
  html.chat-v8 .up5-chat .message p + ul,
  html.chat-v8 .up5-chat .message ul + p,
  html.chat-v8 .up5-chat .message p + ol,
  html.chat-v8 .up5-chat .message ol + p {
    margin-top: 0.875rem;
  }
  /* listele: bulina în gradientul site-ului, aliniată pe primul rând */
  html.chat-v8 .up5-chat .message--assistant ul {
    padding-left: 0;
    list-style: none;
  }
  html.chat-v8 .up5-chat .message--assistant ul > li {
    position: relative;
    padding-left: 1.125rem;
  }
  html.chat-v8 .up5-chat .message--assistant ul > li::before {
    content: "";
    position: absolute;
    left: 0.1875rem;
    top: 0.66em;
    width: 0.375rem;
    height: 0.375rem;
    border-radius: 50%;
    background: linear-gradient(135deg, #00c2ff, #b521e9);
  }
  html.chat-v8 .up5-chat .message--assistant li + li {
    margin-top: 0.4375rem;
  }
  html.chat-v8 .up5-chat .message--assistant ol {
    padding-left: 1.375rem;
  }
  html.chat-v8 .up5-chat .message--assistant ol > li::marker {
    color: #b9a8ff;
    font-weight: 700;
  }
  /* bula ta: gradientul barei de pe landing, mai plin; colțul „cozii" jos-dreapta */
  html.chat-v8 .up5-chat .message.message--user {
    padding: 0.75rem 1rem;
    font-size: 1rem;
    line-height: 1.45;
    border: 0;
    border-radius: 1.375rem 1.375rem 0.5rem 1.375rem;
    background:
      linear-gradient(135deg, rgba(0, 194, 255, 0.24), rgba(124, 92, 252, 0.26) 55%, rgba(181, 33, 233, 0.24)),
      #0b0f18;
    box-shadow:
      inset 0 0 0 0.0625rem rgba(157, 124, 255, 0.38),
      0 0.75rem 1.75rem -1rem rgba(124, 92, 252, 0.6);
  }
  /* bula-fantomă din drumul landing → chat (v2.2) trebuie să aterizeze exact pe noua bulă */
  html.chat-v8 .acx-v3-ghost .g-bub {
    background:
      linear-gradient(135deg, rgba(0, 194, 255, 0.24), rgba(124, 92, 252, 0.26) 55%, rgba(181, 33, 233, 0.24)),
      #0b0f18;
    box-shadow:
      inset 0 0 0 1px rgba(157, 124, 255, 0.38),
      0 12px 28px -16px rgba(124, 92, 252, 0.6);
  }
  /* secțiunile pliabile: rând de atins, cu săgeată care se rotește (în locul cercului „+") */
  html.chat-v8 .up5-chat .message .trigger {
    justify-content: space-between;
    min-height: 2.875rem;
    margin-top: 1rem;
    padding: 0.75rem 0;
    font: 600 0.9375rem/1.3 "Sora", "Inter", sans-serif;
    letter-spacing: -0.015em;
    border-top-color: rgba(255, 255, 255, 0.07);
    -webkit-tap-highlight-color: transparent;
  }
  /* numărul de surse (chat-explicatii.css §3, pus prin ::after — nu în text, ca motorul să nu se încurce):
     lipit de titlu și spus în cuvinte („3 surse"), nu o bulină singură la mijlocul rândului */
  html.chat-v8 .up5-chat .message .trigger {
    justify-content: flex-start;
  }
  html.chat-v8 .up5-chat .message .trigger[data-nr-ref]::after {
    content: attr(data-nr-ref) " surse";
    margin-left: 0.125rem;
    padding: 0;
    border: 0;
    background: none;
    font: 500 0.8125rem/1.3 "Inter", sans-serif;
    letter-spacing: 0;
    color: #8f93aa;
  }
  html.chat-v8 .up5-chat .message .trigger[data-nr-ref="1"]::after {
    content: "1 sursă";
  }
  html.chat-v8 .up5-chat .message .trigger .trigger-decoration {
    margin-left: auto;
    order: 2;
    flex: 0 0 1.75rem;
    width: 1.75rem;
    height: 1.75rem;
    background: rgba(255, 255, 255, 0.05);
    border: 0;
    transition:
      transform 0.45s cubic-bezier(0.22, 1, 0.36, 1),
      background 0.3s;
  }
  html.chat-v8 .up5-chat .message .trigger .trigger-decoration::before,
  html.chat-v8 .up5-chat .message .trigger .trigger-decoration::after {
    width: 0.4375rem;
    height: 0.4375rem;
    background: none;
    border-right: 0.09375rem solid #cdbfff;
    border-bottom: 0.09375rem solid #cdbfff;
    border-radius: 0.0625rem;
    transform: translate(-50%, -70%) rotate(45deg);
  }
  html.chat-v8 .up5-chat .message .trigger .trigger-decoration::after {
    display: none;
  }
  html.chat-v8 .up5-chat .message .trigger[data-active] .trigger-decoration {
    transform: rotate(180deg);
    background: rgba(124, 92, 252, 0.16);
  }
  html.chat-v8 .up5-chat .message .trigger:active .trigger-decoration {
    background: rgba(124, 92, 252, 0.24);
  }
  /* trimiterile la surse [1] [2]: pastile mici, apăsabile */
  html.chat-v8 .up5-chat .message sup.ref-marcaj {
    vertical-align: 0.35em;
  }
  /* bara de scriere: pastila întunecată de pe landing, cu inelul ei de lumină (static, calm) */
  html.chat-v8 .up5-chat .input-bar {
    border-color: transparent;
    background: linear-gradient(#131a28, #0d111a);
    box-shadow:
      inset 0 0.0625rem 0 rgba(255, 255, 255, 0.07),
      0 1rem 2.5rem -1.25rem rgba(124, 92, 252, 0.55),
      0 0.625rem 1.75rem -1rem rgba(0, 194, 255, 0.35);
  }
  html.chat-v8 .up5-chat .input-bar::before {
    opacity: 0.1;
  }
  html.chat-v8 .up5-chat .input-bar .pc-ring {
    position: absolute;
    inset: 0;
    z-index: 0;
    border-radius: inherit;
    padding: 0.09375rem;
    overflow: hidden;
    pointer-events: none;
    opacity: 0.55;
    transition: opacity 0.4s ease;
    -webkit-mask:
      linear-gradient(#000 0 0) content-box,
      linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
  }
  html.chat-v8 .up5-chat .input-bar .pc-ring i {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 150vw;
    height: 150vw;
    margin: -75vw 0 0 -75vw;
    background: conic-gradient(from 200deg, rgba(0, 194, 255, 0.95), rgba(124, 92, 252, 0.2) 22%, rgba(181, 33, 233, 0.95) 50%, rgba(124, 92, 252, 0.2) 78%, rgba(0, 194, 255, 0.95));
  }
  html.chat-v8 .up5-chat .input-bar:focus-within .pc-ring {
    opacity: 1;
  }
  html.chat-v8 .up5-chat .input-bar > :not(.pc-ring) {
    position: relative;
    z-index: 1;
  }
  html.chat-v8 .up5-chat .input-bar textarea::placeholder {
    color: #8f93aa;
  }
  /* ── BUTONUL DE TRIMITERE: un disc cu trei stări, care se transformă, nu se înlocuiește ──
     (cerut de Andu pe 28 sept: „un buton mai frumos, nu doar o săgeată, care să se transforme frumos
     în stop" — înlocuiește decizia din 7 sept „fără fundal")
     · gol: disc de sticlă, săgeata stinsă (nu ai ce trimite);
     · gata (ai scris): discul se umple cu gradientul site-ului, cu o mică săritură — invitația;
     · Andu lucrează: săgeata „pleacă" în sus, discul se întunecă, pătratul de stop crește în centru,
       iar pe margine se rotește lumina barei de pe landing — știi că lucrează și unde apeși ca să oprești.
     Stările vin din atributele puse deja de motor (`disabled` pe trimitere, `data-active` pe loading/stop). */
  html.chat-v8 .up5-chat .actions-cnt {
    flex: 0 0 2.75rem;
    width: 2.75rem;
    height: 2.75rem;
    margin: 0 0.0625rem 0.125rem 0;
    border-radius: 50%;
    isolation: isolate;
  }
  html.chat-v8 .up5-chat .actions-cnt::before,
  html.chat-v8 .up5-chat .actions-cnt::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: 50%;
    pointer-events: none;
  }
  /* discul */
  html.chat-v8 .up5-chat .actions-cnt::before {
    z-index: -1;
    background: rgba(255, 255, 255, 0.07);
    box-shadow: inset 0 0 0 0.0625rem rgba(255, 255, 255, 0.1);
    transition:
      background 0.35s ease,
      box-shadow 0.35s ease,
      transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1);
  }
  html.chat-v8 .up5-chat .input-bar:has(textarea:not(:placeholder-shown)) .actions-cnt::before {
    background: linear-gradient(135deg, #1fa8ff, #8b3cf0);
    box-shadow:
      inset 0 0.0625rem 0 rgba(255, 255, 255, 0.28),
      0 0.5rem 1.25rem -0.375rem rgba(124, 92, 252, 0.75);
    transform: scale(1.04);
  }
  html.chat-v8 .up5-chat .actions-cnt:has(> button[type="submit"][disabled])::before {
    background: #161c2b;
    box-shadow: inset 0 0 0 0.0625rem rgba(255, 255, 255, 0.08);
    transform: scale(1);
  }
  /* lumina care se rotește pe margine, doar cât Andu lucrează */
  html.chat-v8 .up5-chat .actions-cnt::after {
    z-index: -1;
    inset: -0.125rem;
    padding: 0.125rem;
    background: conic-gradient(from 0deg, #00c2ff, rgba(124, 92, 252, 0) 30%, rgba(124, 92, 252, 0) 55%, #b521e9 80%, #00c2ff);
    -webkit-mask:
      linear-gradient(#000 0 0) content-box,
      linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    opacity: 0;
    transition: opacity 0.4s ease;
    animation: pcRoteste 1.6s linear infinite;
  }
  html.chat-v8 .up5-chat .actions-cnt:has(> button[type="submit"][disabled])::after {
    opacity: 1;
  }
  /* săgeata: desenată din nou, plină și echilibrată (cea veche era o linie subțire, cu vârf de pană) */
  html.chat-v8 .up5-chat .actions-cnt button[type="submit"] svg {
    opacity: 0;
  }
  html.chat-v8 .up5-chat .actions-cnt button[type="submit"]::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: 1.25rem;
    height: 1.25rem;
    margin: -0.625rem 0 0 -0.625rem;
    background: #fff;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 19V5M5.5 11.5 12 5l6.5 6.5' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 19V5M5.5 11.5 12 5l6.5 6.5' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
  }
  html.chat-v8 .up5-chat .actions-cnt button[type="submit"] {
    opacity: 0.42;
    transform: none;
    filter: none;
    transition:
      opacity 0.3s ease,
      transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
    -webkit-tap-highlight-color: transparent;
  }
  html.chat-v8 .up5-chat .actions-cnt button[type="submit"]:hover {
    filter: none;
  }
  html.chat-v8 .up5-chat .input-bar:has(textarea:not(:placeholder-shown)) .actions-cnt button[type="submit"] {
    opacity: 1;
  }
  html.chat-v8 .up5-chat .input-bar .actions-cnt button[type="submit"]:active {
    transform: scale(0.86);
    transition-duration: 0.12s;
  }
  /* la trimitere, săgeata „pleacă" în sus și se stinge */
  html.chat-v8 .up5-chat .actions-cnt button[type="submit"][disabled] {
    opacity: 0;
    transform: translateY(-0.875rem) scale(0.7);
    transition:
      opacity 0.22s ease,
      transform 0.36s cubic-bezier(0.4, 0, 1, 1);
  }
  /* stop: pătratul rotunjit crește în centru, cu o rotire scurtă; la final se strânge la loc */
  html.chat-v8 .up5-chat .actions-cnt .button-stop {
    transform: scale(0.3) rotate(-90deg);
    transition:
      opacity 0.25s ease,
      transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
  }
  html.chat-v8 .up5-chat .actions-cnt .button-stop svg {
    transform: scale(0.94);
  }
  html.chat-v8 .up5-chat .actions-cnt .button-loading[data-active] ~ .button-stop,
  html.chat-v8 .up5-chat .actions-cnt .button-stop[data-active] {
    transform: none;
    transition-delay: 0.08s;
  }
  html.chat-v8 .up5-chat .actions-cnt .button-stop:active {
    transform: scale(0.86) !important;
  }
  /* „la capăt": mic, de sticlă, în dreapta — nu mai acoperă mijlocul conținutului */
  html.chat-v8 .up5-chat .chat-scroll-down {
    left: auto;
    right: 0;
    width: 2.375rem;
    height: 2.375rem;
    transform: scale(0.6);
    background: rgba(19, 24, 36, 0.78);
    border-color: rgba(255, 255, 255, 0.12);
  }
  html.chat-v8 .up5-chat .chat-scroll-down[data-active] {
    transform: scale(1);
  }
  html.chat-v8 .up5-chat .chat-scroll-down:active {
    transform: scale(0.92);
  }
  /* sugestiile (chat gol): sticlă, cu inel în gradient la atingere */
  html.chat-v8 .up5-chat .chat-suggestions__item {
    border-radius: 1.125rem;
    background: rgba(255, 255, 255, 0.04);
    border-color: rgba(255, 255, 255, 0.08);
    transition:
      transform 0.2s cubic-bezier(0.34, 1.4, 0.64, 1),
      background 0.2s,
      border-color 0.2s;
    -webkit-tap-highlight-color: transparent;
  }
  html.chat-v8 .up5-chat .chat-suggestions__item:active {
    transform: scale(0.97);
    background: rgba(124, 92, 252, 0.12);
    border-color: rgba(157, 124, 255, 0.45);
  }
  /* inima: mică „bătaie" când o apeși */
  html.chat-v8 .up5-chat .button-add-to-favorites[data-active] {
    animation: pcBate 0.45s cubic-bezier(0.34, 1.6, 0.64, 1);
  }
  @keyframes pcBate {
    0% {
      transform: scale(1);
    }
    40% {
      transform: scale(1.28);
    }
    100% {
      transform: scale(1);
    }
  }
  /* cardul de produs din răspuns: aceeași sticlă și aceleași raze ca restul */
  html.chat-v8 .up5-chat .message__link {
    border-radius: 1.25rem;
    background: rgba(255, 255, 255, 0.04);
    border-color: rgba(255, 255, 255, 0.08);
  }
  /* „se gândește": trei puncte care respiră (fără țopăit) */
  @keyframes pcRespira {
    0%,
    100% {
      transform: scale(0.7);
      opacity: 0.45;
    }
    45% {
      transform: scale(1);
      opacity: 1;
    }
  }
  /* ════════════════ S+ și S++ · DOCUMENT: Andu vorbește fără bulă ════════════════ */
  html.chat-v8 .up5-chat .message-container:has(> .message--assistant:not(.message-assistant-disclaimer)) {
    max-width: 100%;
    align-self: stretch;
  }
  html.chat-v8 .up5-chat .message-container > .message.message--assistant:not(.message-assistant-disclaimer) {
    width: 100%;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: none;
    box-shadow: none;
  }
  /* numele și chipul lui Andu, o dată, deasupra primului lui mesaj după întrebarea ta */
  html.chat-v8 .up5-chat .message-container:has(> .message--user) + .message-container > .message--assistant:not(.message-assistant-disclaimer)::before,
  html.chat-v8 .up5-chat .message-container:has(> .message--user) + .message-container > .message--pending::before {
    content: "Andu";
    display: flex;
    align-items: center;
    height: 1.75rem;
    margin-bottom: 0.625rem;
    padding-left: 2.25rem;
    font: 700 0.9375rem/1 "Sora", "Inter", sans-serif;
    letter-spacing: -0.01em;
    color: #fff;
  }
  /* chipul: pe containerul mesajului (pseudo-elementele bulei sunt ocupate: numele + cursorul),
     rotund de-adevăratelea, cu inel în gradient — arată bine pe orice fundal (și pe luminile din S++) */
  html.chat-v8 .up5-chat .message-container:has(> .message--user) + .message-container:has(> .message--assistant:not(.message-assistant-disclaimer), > .message--pending)::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    z-index: 1;
    width: 1.75rem;
    height: 1.75rem;
    box-sizing: border-box;
    border-radius: 50%;
    border: 0.125rem solid transparent;
    background:
      url("../../images/andu-preda.png") center / cover padding-box,
      linear-gradient(135deg, #00c2ff, #b521e9) border-box;
    box-shadow: inset 0 0 0 0.0625rem #0b0e15;
  }
  /* chipul apare lin o singură dată, odată cu „se gândește"; când răspunsul îl înlocuiește, rămâne pe loc */
  html.chat-v8 .up5-chat .message-container:has(> .message--user) + .message-container:has(> .message--pending)::before {
    animation: pcApare 0.4s ease-out both;
  }
  @keyframes pcApare {
    to {
      opacity: 1;
    }
  }
  /* blocurile de rețetă / masă devin cartonașe — obiecte, nu text */
  html.chat-v8 .up5-chat .message--assistant .meal-item,
  html.chat-v8 .up5-chat .message--assistant .chat-recipe {
    margin: 0.875rem 0;
    padding: 0.875rem 1rem;
    border-radius: 1.125rem;
    background: rgba(255, 255, 255, 0.035);
    box-shadow: inset 0 0 0 0.0625rem rgba(255, 255, 255, 0.07);
  }
  /* conținutul unei secțiuni deschise: o linie verticală în gradient îl leagă de titlu */
  html.chat-v8 .up5-chat .message--assistant > .content {
    padding-left: 0.875rem;
    border-left: 0.125rem solid transparent;
    border-image: linear-gradient(180deg, rgba(0, 194, 255, 0.7), rgba(181, 33, 233, 0.35)) 1;
  }
  /* inima din colț: discretă, jos-dreapta, ca o acțiune a mesajului */
  html.chat-v8 .up5-chat .message--assistant > .button-add-to-favorites {
    opacity: 0.8;
  }
  /* „se gândește": Andu + „se gândește" care sclipește + trei puncte care respiră; fără bulă */
  html.chat-v8 .up5-chat .message.message--pending {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.3125rem;
    min-height: 0;
    padding: 0;
    border: 0;
    background: none;
    box-shadow: none;
  }
  html.chat-v8 .up5-chat .message.message--pending::before {
    flex: 0 0 100%;
  }
  html.chat-v8 .up5-chat .message.message--pending::after {
    content: "se gândește";
    order: -1;
    margin-right: 0.375rem;
    font: 500 0.9375rem/1.4 "Inter", sans-serif;
    background: linear-gradient(90deg, #8f93aa 0%, #8f93aa 35%, #e9e3ff 50%, #8f93aa 65%, #8f93aa 100%);
    background-size: 250% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    animation: pcSclipeste 2.2s linear infinite;
  }
  html.chat-v8 .up5-chat .message.message--pending::before {
    order: -2;
  }
  @keyframes pcSclipeste {
    from {
      background-position: 100% 0;
    }
    to {
      background-position: -150% 0;
    }
  }
  html.chat-v8 .up5-chat .message--pending div {
    width: 0.375rem;
    height: 0.375rem;
    animation: pcRespira 1.4s ease-in-out infinite;
  }
  html.chat-v8 .up5-chat .message--pending div:nth-child(2) {
    animation-delay: 0.18s;
  }
  html.chat-v8 .up5-chat .message--pending div:nth-child(3) {
    animation-delay: 0.36s;
  }
  /* intrările: bula ta urcă din bara de scriere (de jos), textul lui Andu apare lin — fără alunecări laterale */
  html.chat-v8 .up5-chat .message.message--user {
    transform: translateY(1.25rem) scale(0.94);
    transform-origin: 100% 100%;
    transition:
      opacity 0.35s ease-out,
      transform 0.55s cubic-bezier(0.22, 1, 0.36, 1);
  }
  html.chat-v8 .up5-chat .message.message--user[data-visible] {
    transform: none;
  }
  /* răspunsul lui Andu NU mai intră cu fade/alunecare: pornește gol și textul curge oricum (scrisul pe fir,
     neatins), iar „Andu" și chipul trebuie să rămână pe loc când „se gândește" e înlocuit de răspuns —
     altfel eticheta clipea o clipă. Apariția lină o are „se gândește", mai jos. */
  html.chat-v8 .up5-chat .message.message--assistant:not(.message-assistant-disclaimer) {
    opacity: 1;
    transform: none;
    transition: none;
  }
  html.chat-v8 .up5-chat .message.message--pending {
    transform: translateY(0.375rem);
    transition:
      opacity 0.4s ease-out,
      transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
  }
  html.chat-v8 .up5-chat .message.message--pending[data-visible] {
    transform: none;
  }
  /* rândul Favorite / Feedback (apare la atingerea mesajului): pastile fantomă */
  html.chat-v8 .up5-chat .message-options {
    margin-top: 0.5rem;
  }
  /* ════════════════ S+++ · S++ cu mai mult loc și capul din sticlă mată (28 sept) ════════════════
     · fără „Andu" și chip în conversație: cine vorbește spune deja capul (chip, nume, „Se gândește…"),
       iar în conversație se vede din formă: tu = bule colorate, la dreapta; Andu = text pe toată lățimea;
     · fără etichetă, ritmul face separarea: mai mult aer înainte de fiecare întrebare a ta (începe o „tură"),
       mai puțin între întrebare și răspuns (sunt o pereche);
     · capul conversației: sticla mată a meniului de pe landing (blur 26px, saturate 1.3) — conversația
       curge pe sub el, estompată; o linie de lumină în gradient îl desparte de conținut. */
  html.chat-v8 .up5-chat .message-container:has(> .message--user) + .message-container > .message--assistant:not(.message-assistant-disclaimer)::before,
  html.chat-v8 .up5-chat .message-container:has(> .message--user) + .message-container > .message--pending::before,
  html.chat-v8 .up5-chat .message-container:has(> .message--user) + .message-container:has(> .message--assistant:not(.message-assistant-disclaimer), > .message--pending)::before {
    content: none;
    display: none;
  }
  html.chat-v8 .up5-chat .js-messages-container {
    gap: 0.875rem;
    padding-top: 1.25rem;
  }
  html.chat-v8 .up5-chat .js-messages-container > .message-container:has(> .message--user):not(:first-child) {
    margin-top: 1.375rem;
  }
  html.chat-v8 .up5-chat .message-container:has(> .message--user) {
    max-width: 84%;
  }
  /* „se gândește": doar textul care sclipește și punctele, la locul unde va începe răspunsul */
  html.chat-v8 .up5-chat .message.message--pending {
    padding-top: 0.125rem;
  }
  /* capul conversației: sticla neagră și fină a meniului de pe landing (28 sept: Andu a respins varianta
     cu lumini colorate în sticlă — „era bine mai fină și neagră"). Doar negru estompat, pânza fină de puncte
     și linia subțire de lumină de jos. */
  html.chat-v8 .up5-chat .chatroom-top {
    background: rgba(8, 11, 18, 0.82);
    -webkit-backdrop-filter: blur(26px) saturate(1.3);
    backdrop-filter: blur(26px) saturate(1.3);
    border-bottom: 0;
  }
  html.chat-v8 .up5-chat .chatroom-top::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 0.0625rem;
    background: linear-gradient(90deg, rgba(0, 194, 255, 0), rgba(0, 194, 255, 0.4) 22%, rgba(124, 92, 252, 0.35) 50%, rgba(181, 33, 233, 0.4) 78%, rgba(181, 33, 233, 0));
    pointer-events: none;
  }
  html.chat-v8 .up5-chat .chatroom-top::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image: radial-gradient(rgba(200, 210, 255, 0.16) 0.6px, transparent 0.9px);
    background-size: 14px 14px;
    background-position: 7px 7px;
    -webkit-mask: linear-gradient(90deg, transparent, #000 35%, #000 65%, transparent);
    mask: linear-gradient(90deg, transparent, #000 35%, #000 65%, transparent);
    opacity: 0.55;
    pointer-events: none;
  }
  html.chat-v8 .up5-chat .chatroom-top > * {
    position: relative;
  }
  /* numele din cap, puțin mai mare — e acum singurul loc unde apare */
  html.chat-v8 .up5-chat .chatroom-top .font-bold.large-font-18 {
    font-size: 1.0625rem;
    letter-spacing: -0.02em;
  }
  /* ════════════════ A · S+++ gândit pentru folosire (28 sept) ════════════════
     1. UNDE SE TERMINĂ UN RĂSPUNS: la capătul fiecărui răspuns al lui Andu — după text și după carduri —
        stă rândul lui de acțiuni („♡ Salvează", „Feedback"), urmat de o linie fină care se stinge spre dreapta.
        Rândul e mereu la vedere (înainte apărea doar la atingerea bulei, deci favoritele și feedback-ul erau
        practic ascunse) și apare abia când răspunsul s-a terminat de scris — e chiar semnalul de final.
     2. O SINGURĂ INIMĂ: cea din colțul textului (care, fără bulă, plutea în gol) dispare; rămâne cea din rând.
        Motorul sincronizează deja toate inimile unui mesaj (`window.setActiveStatus`), deci starea rămâne corectă.
     3. BARA DE SCRIERE PLUTEȘTE: fără bandă în spate; conversația se estompează sub ea lung și lin, fără linie;
        lumina ei e scurtă și stă în jurul barei, deci nu mai e tăiată de marginea de jos a browserului. */
  html.chat-v8 .up5-chat .message--assistant > .button-add-to-favorites {
    display: none;
  }
  html.chat-v8 .up5-chat .message-container > .message-options {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    align-self: stretch;
    max-height: none;
    margin-top: 0.625rem;
    opacity: 1;
    overflow: visible;
    transform: none;
    transition: opacity 0.3s ease;
  }
  /* cât se scrie încă (drumul clasic pune rândul de la început), rândul stă ascuns */
  html.chat-v8 .up5-chat .message-container:has(> .message[data-text-loading]) > .message-options {
    opacity: 0;
    pointer-events: none;
  }
  /* linia de final, care se stinge spre dreapta */
  html.chat-v8 .up5-chat .message-container > .message-options::after {
    content: "";
    flex: 1 1 auto;
    height: 0.0625rem;
    margin-left: 0.5rem;
    background: linear-gradient(90deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0));
  }
  /* apare lin, o singură dată, când se termină răspunsul (clasa o pune chat-v8.js doar pe rândurile noi) */
  html.chat-v8 .up5-chat .message-options.pc-nou {
    animation: pcRandApare 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
  }
  @keyframes pcRandApare {
    from {
      opacity: 0;
      transform: translateY(0.375rem);
    }
    to {
      opacity: 1;
      transform: none;
    }
  }
  html.chat-v8 .up5-chat .message-options .button-add-to-favorites,
  html.chat-v8 .up5-chat .message-options .trigger-feedback {
    min-height: 2.25rem;
    gap: 0.4375rem;
    margin: 0 0 0 -0.625rem;
    padding: 0.375rem 0.625rem;
    border: 0;
    border-radius: 0.75rem;
    background: none;
    font: 600 0.8125rem/1 "Inter", sans-serif;
    color: #9a9db2;
    -webkit-tap-highlight-color: transparent;
  }
  html.chat-v8 .up5-chat .message-options .trigger-feedback {
    margin-left: 0.25rem;
  }
  html.chat-v8 .up5-chat .message-options .button-add-to-favorites::before {
    width: 1rem;
    height: 1rem;
  }
  html.chat-v8 .up5-chat .message-options .trigger-feedback svg {
    width: 0.9375rem;
    height: 0.9375rem;
  }
  html.chat-v8 .up5-chat .message-options .button-add-to-favorites:active,
  html.chat-v8 .up5-chat .message-options .trigger-feedback:active {
    background: rgba(255, 255, 255, 0.06);
    transform: scale(0.95);
  }
  /* eticheta spune ce face și ce s-a întâmplat: „Salvează" → „Salvat" */
  html.chat-v8 .up5-chat .message-options .button-add-to-favorites > div {
    display: none;
  }
  html.chat-v8 .up5-chat .message-options .button-add-to-favorites::after {
    content: "Salvează";
  }
  html.chat-v8 .up5-chat .message-options .button-add-to-favorites[data-active] {
    background: none;
    color: #ff7a8f;
  }
  html.chat-v8 .up5-chat .message-options .button-add-to-favorites[data-active]::after {
    content: "Salvat";
  }
  /* bara de scriere care plutește: fără bandă în spate */
  html.chat-v8:root .up5-chat .search-bar-container {
    background: none;
    border-top: 0;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    padding-bottom: calc(1rem + env(safe-area-inset-bottom, 0px));
  }
  /* estomparea conversației sub bară: lungă și lină, fără margine vizibilă, ancorată jos */
  html.chat-v8 .up5-chat .search-bar-container::before {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 9.5rem;
    z-index: -1;
    pointer-events: none;
    /* opac deja la marginea de sus a barei (~50%): textul nu mai „iese" pe la colțurile ei rotunjite */
    background: linear-gradient(180deg, rgba(8, 11, 18, 0) 0%, rgba(8, 11, 18, 0.55) 25%, rgba(8, 11, 18, 0.9) 42%, #080b12 50%);
  }
  /* lumina barei: scurtă, în jurul ei, mai mult în sus decât în jos */
  html.chat-v8 .up5-chat .input-bar {
    box-shadow:
      inset 0 0.0625rem 0 rgba(255, 255, 255, 0.07),
      0 -0.375rem 1.5rem -0.75rem rgba(124, 92, 252, 0.45),
      0 0.25rem 0.75rem -0.375rem rgba(0, 0, 0, 0.6);
  }
  html.chat-v8 .up5-chat .search-bar-container .input-bar::before,
  html.chat-v8 .up5-chat .search-bar-container .input-bar::after {
    inset: 0.25rem 0.75rem 0.5rem;
    filter: blur(0.625rem);
  }
  html.chat-v8 .up5-chat .search-bar-container .input-bar::before {
    opacity: 0.14;
  }
  /* conturul barei: uniform și discret (fără dunga turcoaz de jos, care se citea ca sublinierea unui câmp);
     se aprinde la atingere; lumina care se rotește (cât lucrează Andu) rămâne */
  html.chat-v8 .up5-chat .input-bar .pc-ring {
    background: linear-gradient(90deg, rgba(0, 194, 255, 0.5), rgba(124, 92, 252, 0.35) 50%, rgba(181, 33, 233, 0.5));
    opacity: 0.45;
  }
  html.chat-v8 .up5-chat .input-bar .pc-ring i {
    display: none;
  }
  html.chat-v8 .up5-chat .input-bar:focus-within .pc-ring {
    opacity: 0.9;
  }
  html.chat-v8 .up5-chat .search-bar-container .input-bar:focus-within::after {
    opacity: 0.28;
  }
  /* ── A · cardul de produs, compact (structura: chat-v8.js „CARDUL DE PRODUS") ──
     Ce îi trebuie omului: ce e (poza + nume), de unde vine („Recomandat de Andu · magazin"), ce câștigă (cuponul)
     și unde apasă (tot cardul; săgeata o arată). Două rânduri, fără spații goale. */
  html.chat-v8:root .up5-chat .message-container .message__link.pc-prod {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.625rem;
    margin-top: 0.75rem;
    padding: 0.625rem;
    border: 0;
    border-radius: 1.125rem;
    background: #0f131d;
    box-shadow:
      inset 0 0 0 0.0625rem rgba(255, 255, 255, 0.08),
      0 0.75rem 1.5rem -1rem rgba(0, 0, 0, 0.75);
    color: #fff;
    text-decoration: none;
    -webkit-tap-highlight-color: transparent;
    transition: transform 0.2s cubic-bezier(0.34, 1.4, 0.64, 1);
  }
  html.chat-v8:root .up5-chat .message__link.pc-prod:active {
    transform: scale(0.985);
  }
  html.chat-v8 .up5-chat .pc-prod-row {
    display: flex;
    align-items: center;
    gap: 0.75rem;
  }
  /* poza: pe o plăcuță luminoasă (pozele magazinului au fundal alb); `multiply` topește albul în plăcuță */
  html.chat-v8 .up5-chat .pc-prod-img {
    flex: 0 0 3.5rem;
    height: 3.5rem;
    display: grid;
    place-items: center;
    border-radius: 0.75rem;
    background: radial-gradient(circle at 50% 38%, #ffffff, #e8ebf4 72%);
    overflow: hidden;
  }
  html.chat-v8:root .up5-chat .pc-prod-img img.message__link__img {
    width: 86%;
    height: 86%;
    margin: 0;
    border-radius: 0;
    background: none;
    object-fit: contain;
    mix-blend-mode: multiply;
    box-shadow: none;
  }
  html.chat-v8 .up5-chat .pc-prod-id {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    min-width: 0;
  }
  html.chat-v8 .up5-chat .pc-prod-name {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    font: 700 0.9375rem/1.25 "Sora", "Inter", sans-serif;
    letter-spacing: -0.01em;
    color: #fff;
  }
  html.chat-v8 .up5-chat .pc-prod-host {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    font: 500 0.75rem/1.3 "Inter", sans-serif;
    color: #8f93aa;
  }
  /* săgeata: arată că tot cardul duce la produs, în altă filă */
  html.chat-v8:root .up5-chat .message__link .pc-prod-cta {
    flex: 0 0 2.25rem;
    width: 2.25rem;
    height: 2.25rem;
    margin: 0 0.125rem 0 0;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.07);
    box-shadow: inset 0 0 0 0.0625rem rgba(255, 255, 255, 0.12);
    font-size: 0;
    color: #fff;
  }
  html.chat-v8:root .up5-chat .message__link .pc-prod-cta::after {
    content: "";
    width: 0.875rem;
    height: 0.875rem;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17 17 7M9 7h8v8'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17 17 7M9 7h8v8'/%3E%3C/svg%3E") center / contain no-repeat;
    transform: none;
  }
  /* CUPONUL: un singur rând, cel mai colorat lucru din card */
  html.chat-v8 .up5-chat .pc-prod-cod {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.625rem;
    min-height: 2.625rem;
    padding: 0.375rem 0.75rem 0.375rem 0.875rem;
    border-radius: 0.75rem;
    border: 0.078125rem dashed rgba(170, 140, 255, 0.55);
    background: linear-gradient(90deg, rgba(0, 194, 255, 0.09), rgba(124, 92, 252, 0.09) 50%, rgba(181, 33, 233, 0.11));
    cursor: pointer;
    transition:
      transform 0.18s cubic-bezier(0.34, 1.4, 0.64, 1),
      border-color 0.25s,
      background 0.25s;
  }
  html.chat-v8 .up5-chat .pc-prod-cod:active {
    transform: scale(0.97);
  }
  html.chat-v8 .up5-chat .pc-prod-cod-t {
    font: 500 0.8125rem/1.2 "Inter", sans-serif;
    color: #dcdcea;
    white-space: nowrap;
  }
  html.chat-v8 .up5-chat .pc-prod-cod b {
    display: inline-flex;
    align-items: center;
    gap: 0.4375rem;
    font: 800 1rem/1 "Sora", "Inter", sans-serif;
    letter-spacing: 0.07em;
    background: linear-gradient(90deg, #5fd3ff, #b78cff 55%, #e07bff);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
  }
  html.chat-v8 .up5-chat .pc-prod-cod b::after {
    content: "";
    width: 0.9375rem;
    height: 0.9375rem;
    background: #cdbfff;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='12' height='12' rx='2.5'/%3E%3Cpath d='M5 15V5a2 2 0 0 1 2-2h8'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='12' height='12' rx='2.5'/%3E%3Cpath d='M5 15V5a2 2 0 0 1 2-2h8'/%3E%3C/svg%3E") center / contain no-repeat;
  }
  html.chat-v8 .up5-chat .pc-prod-cod.pc-copiat {
    border-color: rgba(52, 211, 130, 0.75);
    background: rgba(52, 211, 130, 0.1);
  }
  html.chat-v8 .up5-chat .pc-prod-cod.pc-copiat .pc-prod-cod-t {
    font-size: 0;
  }
  html.chat-v8 .up5-chat .pc-prod-cod.pc-copiat .pc-prod-cod-t::before {
    content: "Copiat — folosește-l la checkout";
    font-size: 0.8125rem;
    color: #a6f0c6;
  }
  html.chat-v8 .up5-chat .pc-prod-cod.pc-copiat b::after {
    background: #34d382;
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E");
  }
  /* ════════════════ S++ · VIU, LA MOMENTUL POTRIVIT (28 sept, suprascrie S++ de la început) ════════════════
     S+ plus luminile landing-ului — dar DOAR când nu ai ce citi:
     · pe ecranul gol („Salut! Sunt Andu") sunt aprinse: te întâmpină ca pe landing;
     · cât Andu se gândește, se aprind puțin mai tare, iar inelul barei se rotește;
     · în clipa în care începe răspunsul, se sting lin (~1,2s) și fundalul devine calm și uniform pentru citit.
     Stările vin din DOM-ul motorului: `[data-empty]` pe lista de mesaje (chat gol), `.message--pending` („se gândește"). */
  /* fundalul ambiental: două lumini ca pe landing + pânza de puncte sus; derivă foarte lentă (calm) */
  html.chat-v8 .pc-amb {
    position: fixed;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    overflow: hidden;
  }
  html.chat-v8 .pc-amb::before,
  html.chat-v8 .pc-amb::after {
    content: "";
    position: absolute;
    width: 90vw;
    height: 90vw;
    border-radius: 50%;
    filter: blur(60px);
    opacity: 0;
    transition: opacity 1.2s cubic-bezier(0.4, 0, 0.2, 1);
    animation: pcDeriva 38s ease-in-out infinite alternate;
  }
  html.chat-v8 .pc-amb::before {
    left: -35vw;
    top: 18%;
    background: #0a8cff;
  }
  html.chat-v8 .pc-amb::after {
    right: -40vw;
    bottom: 12%;
    background: #9b2be6;
    animation-delay: -19s;
  }
  @keyframes pcDeriva {
    from {
      transform: translate3d(0, 0, 0) scale(1);
    }
    to {
      transform: translate3d(8vw, -6vh, 0) scale(1.12);
    }
  }
  /* chat gol: aprinse, ca pe landing */
  html.chat-v8 body:has(.js-messages-container[data-empty]) .pc-amb::before,
  html.chat-v8 body:has(.js-messages-container[data-empty]) .pc-amb::after {
    opacity: 0.2;
    transition-duration: 0.9s;
  }
  /* „se gândește": puțin mai tare */
  html.chat-v8 body:has(.up5-chat .message--pending) .pc-amb::before,
  html.chat-v8 body:has(.up5-chat .message--pending) .pc-amb::after {
    opacity: 0.3;
    transition-duration: 0.8s;
  }
  html.chat-v8 .pc-amb i {
    position: absolute;
    inset: 0 0 auto;
    height: 42vh;
    background-image: radial-gradient(rgba(190, 200, 255, 0.2) 0.7px, transparent 1px);
    background-size: 20px 20px;
    -webkit-mask: linear-gradient(180deg, #000 10%, transparent);
    mask: linear-gradient(180deg, #000 10%, transparent);
    opacity: 0;
    transition: opacity 1.2s cubic-bezier(0.4, 0, 0.2, 1);
  }
  html.chat-v8 body:has(.js-messages-container[data-empty]) .pc-amb i,
  html.chat-v8 body:has(.up5-chat .message--pending) .pc-amb i {
    opacity: 0.7;
    transition-duration: 0.9s;
  }
  /* conținutul stă peste fundal */
  html.chat-v8 .up5acc {
    z-index: 2;
  }
  /* capul conversației: sticlă mai transparentă, ca luminile să se vadă prin el */
  html.chat-v8 .up5-chat .search-bar-container {
    background: linear-gradient(180deg, rgba(8, 11, 18, 0), rgba(8, 11, 18, 0.9) 34%);
    border-top-color: transparent;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }
  /* inelul barei: în repaus, static; cât Andu lucrează, lumina se rotește (ca pe landing la trimitere) */
  html.chat-v8 .up5-chat .input-bar .pc-ring b {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 150vw;
    height: 150vw;
    margin: -75vw 0 0 -75vw;
    background: conic-gradient(from 0deg, rgba(0, 194, 255, 1), rgba(124, 92, 252, 0.15) 18%, transparent 30%, transparent 55%, rgba(181, 33, 233, 1) 72%, rgba(124, 92, 252, 0.15) 86%, rgba(0, 194, 255, 1));
    opacity: 0;
    transition: opacity 0.6s ease;
    animation: pcRoteste 2.6s linear infinite;
    animation-play-state: paused;
  }
  /* inelul barei se rotește doar cât „se gândește" (apoi rămâne doar lumina de pe butonul de stop) */
  html.chat-v8 body:has(.up5-chat .message--pending) .up5-chat .input-bar .pc-ring {
    opacity: 1;
  }
  html.chat-v8 body:has(.up5-chat .message--pending) .up5-chat .input-bar .pc-ring b {
    opacity: 1;
    animation-play-state: running;
  }
  @keyframes pcRoteste {
    to {
      transform: rotate(360deg);
    }
  }
  /* sugestiile intră în cascadă */
  html.chat-v8 .up5-chat .chat-suggestions[data-active] .chat-suggestions__items .cell {
    animation: pcUrca 0.7s cubic-bezier(0.22, 1, 0.36, 1) both;
  }
  html.chat-v8 .up5-chat .chat-suggestions[data-active] .chat-suggestions__items .cell:nth-child(2) {
    animation-delay: 0.07s;
  }
  html.chat-v8 .up5-chat .chat-suggestions[data-active] .chat-suggestions__items .cell:nth-child(3) {
    animation-delay: 0.14s;
  }
  html.chat-v8 .up5-chat .chat-suggestions[data-active] .chat-suggestions__items .cell:nth-child(4) {
    animation-delay: 0.21s;
  }
  @keyframes pcUrca {
    from {
      opacity: 0;
      transform: translateY(0.75rem);
    }
    to {
      opacity: 1;
      transform: none;
    }
  }
}
/* <<< sfârșitul copiei pentru desktop >>> */
/* ═══════════════════════════ A+ · DESKTOP (≥720px) — ajustări scrise de mână ═══════════════════════════
   Peste blocul generat (limbajul A+ de pe telefon). Ce e diferit pe un ecran mare, din ce are nevoie omul:
   1. SCARA: fonts.css pune tot site-ul la 75% între 1100 și 1535px (85% până la 1899) — adică exact laptopurile
      obișnuite (1280, 1366, 1440) și iPad-ul în landscape. MĂSURAT: textul chatului ajungea la 11,6px. Landing-ul
      e o vitrină, dar chatul e o suprafață de CITIT: aici pagina rămâne la 100% (cum arată deja la 1920, referința).
      Simetria cu sidebar-ul (chat-v7.css, --acx-simetrie) se adaptează singură — coloana nu ajunge sub sidebar.
   2. COLOANA DE CITIT: 680px (42,5rem) și text de 17px / 1,7 → ~75 de caractere pe rând, lungimea la care ochiul
      găsește ușor începutul rândului următor. Capul, mesajele și bara de scriere stau pe aceeași axă.
   3. MOUSE: fiecare lucru apăsabil răspunde la hover (pe telefon răspunde la atingere). */
@media (min-width: 1100px) and (max-width: 1899.98px) {
  html.chat-v8 {
    font-size: 100% !important;
  }
}
@media (min-width: 720px) {
  html.chat-v8 .up5-chat > .messages > .grid-x > .cell,
  html.chat-v8 .up5-chat .search-bar-container .grid-x > .cell,
  html.chat-v8 .up5-chat .chatroom-top .grid-x > .cell {
    max-width: 42.5rem !important; /* chat-v7.css le fixează la 47,5rem cu !important (vezi comentariul de acolo) */
  }
  html.chat-v8 .up5-chat .message.message--assistant:not(.message-assistant-disclaimer) {
    max-width: none; /* bula avea 620px; fără bulă, răspunsul ocupă coloana de citit */
    font-size: 1.0625rem;
    line-height: 1.7;
  }
  html.chat-v8 .up5-chat .message.message--user {
    font-size: 1.0625rem;
    line-height: 1.5;
    padding: 0.8125rem 1.125rem;
  }
  html.chat-v8 .up5-chat .message-container:has(> .message--user) {
    max-width: 78%;
  }
  html.chat-v8 .up5-chat .js-messages-container {
    gap: 1rem;
    padding-top: 2rem;
  }
  html.chat-v8 .up5-chat .js-messages-container > .message-container:has(> .message--user):not(:first-child) {
    margin-top: 2rem;
  }
  /* bara de scriere: pe aceeași axă, cu aer sub ea; estomparea conversației, puțin mai scurtă decât pe telefon */
  html.chat-v8:root .up5-chat .search-bar-container {
    padding-top: 0.5rem;
    padding-bottom: 1.5rem;
  }
  /* opac deja la marginea de sus a barei (bara începe la ~5,25rem de jos) — textul nu se vede prin ea */
  html.chat-v8 .up5-chat .search-bar-container::before {
    height: 9rem;
    background: linear-gradient(180deg, rgba(8, 11, 18, 0) 0%, rgba(8, 11, 18, 0.55) 16%, rgba(8, 11, 18, 0.9) 30%, #080b12 40%);
  }
  html.chat-v8 .up5-chat > .messages {
    padding-bottom: 9rem;
  }
  /* rețetele din răspuns: pe toată lățimea coloanei, ca planul */
  html.chat-v8 .up5-chat .message--assistant .meal-item.pc-ret {
    width: 100%;
    max-width: none;
  }
  /* capul: numele și chipul pe axa coloanei */
  html.chat-v8 .up5-chat .chatroom-top .font-bold.large-font-18 {
    font-size: 1.0625rem;
  }
}
/* „la capăt": unde e loc, stă în afara coloanei (în dreapta ei), deci nu acoperă niciodată o bulă sau un rând */
@media (min-width: 1200px) {
  html.chat-v8 .up5-chat .chat-scroll-down {
    right: -3.5rem;
  }
}
/* hover — doar unde există un mouse */
@media (min-width: 720px) and (hover: hover) {
  html.chat-v8 .up5-chat .message-options .button-add-to-favorites:hover,
  html.chat-v8 .up5-chat .message-options .trigger-feedback:hover {
    background: rgba(255, 255, 255, 0.05);
    color: #e8eaf3;
  }
  html.chat-v8 .up5-chat .message-options .button-add-to-favorites[data-active]:hover {
    color: #ff8fa1;
  }
  html.chat-v8 .up5-chat .message--assistant ul.acx-urm > li:hover {
    background: rgba(0, 194, 255, 0.08);
    box-shadow: inset 0 0 0 0.0625rem rgba(0, 194, 255, 0.4);
    color: #fff;
  }
  html.chat-v8 .up5-chat .message .trigger:hover {
    color: #fff;
  }
  html.chat-v8 .up5-chat .message .trigger:hover .trigger-decoration {
    background: rgba(255, 255, 255, 0.08);
  }
  html.chat-v8:root .up5-chat .message__link.pc-prod:hover {
    box-shadow:
      inset 0 0 0 0.0625rem rgba(0, 194, 255, 0.35),
      0 1rem 2rem -1rem rgba(0, 0, 0, 0.8);
  }
  html.chat-v8:root .up5-chat .message__link.pc-prod:hover .pc-prod-cta {
    background: linear-gradient(135deg, #00c2ff, #b521e9);
    color: #fff;
  }
  html.chat-v8 .up5-chat .pc-prod-cod:hover {
    border-color: rgba(157, 124, 255, 0.75);
  }
  html.chat-v8 .up5-chat .message .pc-plan .trigger.pc-masa:hover,
  html.chat-v8 .up5-chat .pc-ret-cap:hover {
    background: rgba(255, 255, 255, 0.035);
  }
  html.chat-v8 .up5-chat .pc-fila:not([aria-selected="true"]):hover {
    color: #e8eaf3;
    background: rgba(255, 255, 255, 0.04);
  }
  html.chat-v8 .up5-chat .chat-suggestions__item:hover {
    background: rgba(255, 255, 255, 0.06);
  }
  html.chat-v8 .up5-chat .actions-cnt button[type="submit"]:hover {
    filter: brightness(1.12);
  }
}
/* tastatura: un contur clar pe ce e în focus (Tab), fără să apară la click */
@media (min-width: 720px) {
  html.chat-v8 .up5-chat :is(.message-options button, .message-options [role="button"], ul.acx-urm > li, .pc-fila, .pc-ret-cap, .message__link, .pc-prod-cod, .trigger):focus-visible {
    outline: 0.125rem solid rgba(0, 194, 255, 0.8);
    outline-offset: 0.125rem;
  }
}
/* mișcare redusă: fără derivă, fără sclipire, fără rotire */
@media (max-width: 719.98px) and (prefers-reduced-motion: reduce) {
  html.chat-v8 .pc-amb::before,
  html.chat-v8 .pc-amb::after,
  html.chat-v8 .up5-chat .message.message--pending::after,
  html.chat-v8 .up5-chat .input-bar .pc-ring b {
    animation: none !important;
  }
}
/* ═══════════════════════════════════════ A+ ═══════════════════════════════════════
   Recomandarea, răspunsurile rapide, programul pe zile, rețetele: structura o pune chat-v8.js, textul îl dă promptul (gemini_system_instructions.txt). */
@media all {
/* ── 1 · recomandarea: o frază deschisă, legată de ce tocmai ai citit, și cardul imediat sub ea ── */
  html.chat-v8 .up5-chat .message--assistant p.acx-rec {
    margin-top: 1.125rem;
    color: #c4c7d4;
  }
  html.chat-v8 .up5-chat .message--assistant p.acx-rec a {
    color: #fff;
    font-weight: 600;
    text-decoration: underline;
    text-decoration-color: rgba(0, 194, 255, 0.55);
    text-decoration-thickness: 0.0625rem;
    text-underline-offset: 0.1875rem;
  }
  /* cu card: codul îl arată cardul, iar #ad stă pe card, lângă produs */
  html.chat-v8 .up5-chat p.acx-rec.pc-rec-cu-card .pc-rec-cod,
  html.chat-v8 .up5-chat p.acx-rec.pc-rec-cu-card .pc-rec-ad {
    display: none;
  }
  html.chat-v8 .up5-chat .pc-rec-ad {
    font-size: 0.75rem;
    color: #8f93a8;
  }
  html.chat-v8:root .up5-chat .message--assistant .pc-rec + .message__link.pc-prod {
    margin-top: 0.625rem;
    margin-bottom: 0.25rem;
  }
  html.chat-v8 .up5-chat .pc-rec + .message__link .pc-prod-host::after {
    content: " · #ad";
  }
  /* formatul vechi (secțiunea „Recomandare produs"): deschisă, fără titlu, fără linia secțiunii */
  html.chat-v8 .up5-chat .message--assistant > .trigger.pc-rec-sec {
    display: none;
  }
  html.chat-v8 .up5-chat .message--assistant > .content.pc-rec-cont {
    height: auto !important;
    margin: 1rem 0 0;
    padding: 0;
    border: 0;
    overflow: visible;
  }
  /* ── 2 · răspunsurile rapide: două butoane în vocea ta; o atingere = mesajul trimis ── */
  html.chat-v8 .up5-chat .message--assistant ul.acx-urm {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin: 0.875rem 0 0.125rem;
    padding: 0;
    list-style: none;
    animation: pcRandApare 0.55s cubic-bezier(0.22, 1, 0.36, 1) 0.1s both;
  }
  html.chat-v8 .up5-chat .message--assistant[data-text-loading] ul.acx-urm {
    display: none;
  }
  html.chat-v8 .up5-chat .message--assistant ul.acx-urm > li {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 0.4375rem;
    min-height: 2.5rem;
    margin: 0;
    padding: 0.5rem 0.9375rem 0.5rem 0.75rem;
    border-radius: 1.25rem;
    background: rgba(255, 255, 255, 0.04);
    box-shadow: inset 0 0 0 0.0625rem rgba(255, 255, 255, 0.11);
    font: 600 0.875rem/1.25 "Inter", sans-serif;
    color: #e8eaf3;
    cursor: pointer;
    list-style: none;
    -webkit-tap-highlight-color: transparent;
    transition: transform 0.18s cubic-bezier(0.34, 1.4, 0.64, 1), background 0.2s, opacity 0.3s;
  }
  /* săgeata-răspuns: spune „atinge ca să trimiți", fără text în plus */
  html.chat-v8 .up5-chat .message--assistant ul.acx-urm > li::before {
    content: "";
    position: static;
    flex: 0 0 0.875rem;
    width: 0.875rem;
    height: 0.875rem;
    margin: 0;
    border: 0;
    border-radius: 0;
    background: linear-gradient(135deg, #00c2ff, #b521e9);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 3v4.5A2.5 2.5 0 0 0 5.5 10H12' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round'/%3E%3Cpath d='M9.5 7 12.5 10l-3 3' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 3v4.5A2.5 2.5 0 0 0 5.5 10H12' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round'/%3E%3Cpath d='M9.5 7 12.5 10l-3 3' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
  }
  html.chat-v8 .up5-chat .message--assistant ul.acx-urm > li::after {
    content: none;
  }
  html.chat-v8 .up5-chat .message--assistant ul.acx-urm > li:active {
    transform: scale(0.96);
    background: rgba(0, 194, 255, 0.12);
  }
  /* după ce conversația a mers mai departe: rămân pe loc (nimic nu sare), stinse; cel ales, marcat */
  html.chat-v8 .up5-chat .message-container:has(~ .message-container > .message--user) ul.acx-urm > li {
    opacity: 0.38;
    pointer-events: none;
  }
  html.chat-v8 .up5-chat .message-container:has(~ .message-container > .message--user) ul.acx-urm > li.pc-ales {
    opacity: 0.7;
    box-shadow: inset 0 0 0 0.0625rem rgba(0, 194, 255, 0.45);
  }
  /* cât Andu lucrează, nu se poate trimite încă una */
  html.chat-v8 body:has(.up5-chat .message--pending, .up5-chat .message--assistant[data-text-loading]) .up5-chat ul.acx-urm > li {
    opacity: 0.5;
    pointer-events: none;
  }
  /* ── 3 · rândul „Salvează · Feedback" doar sub răspunsurile care au ce salva ── */
  html.chat-v8 .up5-chat .message-container.pc-fara-actiuni > .message-options {
    display: none;
  }
  /* ── 4 · PROGRAMUL: card deschis, pe zile; fiecare masă e un rând care se deschide ── */
  html.chat-v8 .up5-chat .message .chat-meal-plan.pc-plan {
    margin-top: 0.875rem;
    border-radius: 1.375rem;
    background: #0f131d;
    border: 0;
    box-shadow:
      inset 0 0 0 0.0625rem rgba(255, 255, 255, 0.08),
      0 1rem 2rem -1.25rem rgba(0, 0, 0, 0.8);
  }
  html.chat-v8 .up5-chat .message--assistant.chat-meal-plan[data-plan-loaded] .chat-meal-plan.pc-plan {
    animation: acxGenIn 0.7s var(--ease-emph, cubic-bezier(0.2, 0, 0, 1)) both;
  }
  html.chat-v8 .up5-chat .pc-plan > .drawer-head {
    display: none;
  }
  html.chat-v8 .up5-chat .pc-plan > .drawer-body {
    height: auto !important;
    overflow: visible;
  }
  html.chat-v8 .up5-chat .pc-plan .drawer-inner {
    padding: 1rem 0.5rem 0.625rem;
  }
  html.chat-v8 .up5-chat .pc-plan-cap {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    padding: 0 0.625rem 0.875rem;
  }
  html.chat-v8 .up5-chat .pc-plan-t {
    font: 700 1.0625rem/1.25 "Sora", "Inter", sans-serif;
    letter-spacing: -0.02em;
    color: #fff;
  }
  html.chat-v8 .up5-chat .pc-plan-sub {
    font: 500 0.8125rem/1.35 "Inter", sans-serif;
    color: #9a9db2;
    font-variant-numeric: tabular-nums;
  }
  /* filele zilelor: un comutator segmentat */
  html.chat-v8 .up5-chat .pc-file {
    display: flex;
    gap: 0.25rem;
    margin: 0 0.625rem 0.5rem;
    padding: 0.25rem;
    border-radius: 0.875rem;
    background: rgba(255, 255, 255, 0.045);
  }
  html.chat-v8 .up5-chat .pc-fila {
    flex: 1 1 0;
    height: 2.25rem;
    border: 0;
    border-radius: 0.625rem;
    background: none;
    font: 600 0.875rem/1 "Inter", sans-serif;
    color: #9a9db2;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: background 0.25s, color 0.25s, box-shadow 0.25s;
  }
  html.chat-v8 .up5-chat .pc-fila[aria-selected="true"] {
    background: #1d2332;
    color: #fff;
    box-shadow:
      inset 0 0 0 0.0625rem rgba(255, 255, 255, 0.09),
      0 0.125rem 0.375rem rgba(0, 0, 0, 0.35);
  }
  html.chat-v8 .up5-chat .pc-zi.pc-intra {
    animation: pcZi 0.32s cubic-bezier(0.22, 1, 0.36, 1) both;
  }
  @keyframes pcZi {
    from {
      opacity: 0;
      transform: translateY(0.25rem);
    }
    to {
      opacity: 1;
      transform: none;
    }
  }
  /* rândul mesei: [emoji] FELUL ···· kcal / titlul mesei  [›] */
  html.chat-v8 .up5-chat .message .pc-plan .trigger.pc-masa {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    margin: 0;
    padding: 0.6875rem 0.625rem;
    border-top: 0.0625rem solid rgba(255, 255, 255, 0.06);
    border-radius: 0;
    font: inherit;
    color: inherit;
    -webkit-tap-highlight-color: transparent;
    transition: background 0.2s;
  }
  html.chat-v8 .up5-chat .message .pc-plan .pc-zi > .trigger.pc-masa:first-child {
    border-top-color: transparent;
  }
  html.chat-v8 .up5-chat .message .pc-plan .trigger.pc-masa:active {
    background: rgba(255, 255, 255, 0.03);
  }
  html.chat-v8 .up5-chat .pc-m {
    flex: 1 1 auto;
    min-width: 0;
    display: grid;
    grid-template-columns: 2.625rem 1fr auto;
    column-gap: 0.75rem;
    row-gap: 0.1875rem;
    align-items: center;
  }
  html.chat-v8 .up5-chat .pc-m-sus {
    display: contents;
  }
  html.chat-v8 .up5-chat .pc-m-e {
    grid-column: 1;
    grid-row: 1 / 3;
    display: grid;
    place-items: center;
    width: 2.625rem;
    height: 2.625rem;
    border-radius: 0.8125rem;
    background: rgba(255, 255, 255, 0.05);
    box-shadow: inset 0 0 0 0.0625rem rgba(255, 255, 255, 0.05);
    font-size: 1.25rem;
    line-height: 1;
  }
  html.chat-v8 .up5-chat .pc-m-fel {
    grid-column: 2;
    grid-row: 1;
    font: 700 0.6875rem/1.2 "Inter", sans-serif;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #8f93a8;
  }
  html.chat-v8 .up5-chat .pc-m-k {
    grid-column: 3;
    grid-row: 1;
    font: 600 0.75rem/1.2 "Inter", sans-serif;
    color: #9a9db2;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
  }
  html.chat-v8 .up5-chat .pc-m-t {
    grid-column: 2 / 4;
    grid-row: 2;
    font: 600 0.9375rem/1.35 "Inter", sans-serif;
    letter-spacing: -0.005em;
    color: #fff;
  }
  /* săgeata mesei (în locul cercului cu „+"): se rotește în jos când masa e deschisă */
  html.chat-v8 .up5-chat .message .pc-plan .trigger.pc-masa .trigger-decoration {
    order: 2;
    flex: 0 0 1.25rem;
    width: 1.25rem;
    height: 1.25rem;
    border: 0;
    background: none;
    transform: none;
    transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
  }
  html.chat-v8 .up5-chat .message .pc-plan .trigger.pc-masa .trigger-decoration::after {
    display: none;
  }
  html.chat-v8 .up5-chat .message .pc-plan .trigger.pc-masa .trigger-decoration::before {
    width: 0.4375rem;
    height: 0.4375rem;
    border-radius: 0;
    background: none;
    border-right: 0.125rem solid #8f93a8;
    border-bottom: 0.125rem solid #8f93a8;
    transform: translate(-65%, -50%) rotate(-45deg);
  }
  html.chat-v8 .up5-chat .message .pc-plan .trigger.pc-masa.pc-atins[data-active] .trigger-decoration {
    transform: rotate(90deg);
  }
  /* până o atinge omul, masa stă închisă (motorul le deschide 1s și le strânge — nu vrem săritura asta) */
  html.chat-v8 .up5-chat .message .pc-plan .trigger.pc-masa:not(.pc-atins) + .content {
    height: 0 !important;
  }
  /* ce e în masă: aliniat sub titlu, fără linia secțiunilor */
  html.chat-v8 .up5-chat .message .pc-plan .trigger.pc-masa + .content {
    margin: 0 0 0 4rem;
    padding: 0 0.625rem 0 0;
    border: 0;
  }
  html.chat-v8 .up5-chat .pc-plan .pc-masa + .content p {
    margin: 0.625rem 0 0.25rem;
    font-size: 0.875rem;
    line-height: 1.5;
    color: #c4c7d4;
  }
  html.chat-v8 .up5-chat .pc-plan .pc-masa + .content p > strong:first-child {
    display: block;
    font: 700 0.6875rem/1.2 "Inter", sans-serif;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #8f93a8;
  }
  html.chat-v8 .up5-chat .pc-plan .pc-masa + .content p:last-child > strong:first-child {
    display: inline;
  }
  html.chat-v8 .up5-chat .pc-plan .pc-masa + .content :is(ul, ol) {
    margin: 0.25rem 0 0.5rem;
    padding-left: 1.125rem;
  }
  html.chat-v8 .up5-chat .pc-plan .pc-masa + .content li {
    margin: 0.1875rem 0;
    font-size: 0.875rem;
    line-height: 1.5;
    color: #d4d6e0;
  }
  html.chat-v8 .up5-chat .pc-plan .pc-masa + .content > :last-child {
    margin-bottom: 0.875rem;
    color: #9a9db2;
    font-size: 0.8125rem;
  }
  /* totalul zilei: cifra mare, macro-urile mici */
  html.chat-v8 .up5-chat .pc-total {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin: 0.25rem 0.625rem 0;
    padding: 0.875rem 0 0.25rem;
    border-top: 0.0625rem solid rgba(255, 255, 255, 0.08);
  }
  html.chat-v8 .up5-chat .pc-total-k {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    font: 500 0.75rem/1.2 "Inter", sans-serif;
    color: #9a9db2;
  }
  html.chat-v8 .up5-chat .pc-total-k b {
    font: 700 1.1875rem/1.1 "Sora", "Inter", sans-serif;
    letter-spacing: -0.02em;
    color: #fff;
    font-variant-numeric: tabular-nums;
  }
  html.chat-v8 .up5-chat .pc-total-m {
    display: flex;
    gap: 0.9375rem;
  }
  html.chat-v8 .up5-chat .pc-total-m span {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.1875rem;
  }
  html.chat-v8 .up5-chat .pc-total-m b {
    font: 700 0.875rem/1 "Inter", sans-serif;
    color: #fff;
    font-variant-numeric: tabular-nums;
  }
  html.chat-v8 .up5-chat .pc-total-m i {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    font: 500 0.6875rem/1 "Inter", sans-serif;
    color: #8f93a8;
  }
  html.chat-v8 .up5-chat .pc-total-m i::before {
    content: "";
    width: 0.375rem;
    height: 0.375rem;
    border-radius: 50%;
    background: #00c2ff;
  }
  html.chat-v8 .up5-chat .pc-total-m span:nth-child(2) i::before {
    background: #b521e9;
  }
  html.chat-v8 .up5-chat .pc-total-m span:nth-child(3) i::before {
    background: #ffb547;
  }
  /* lista de cumpărături: același limbaj cu planul, imediat sub el */
  html.chat-v8 .up5-chat .message .pc-plan + .chat-shopping[data-drawer] {
    margin-top: 0.625rem;
    border-radius: 1.125rem;
  }
}
@media all {
/* ── 5 · contextul automat din bula ta: pe rândul lui, mic și stins ── */
  html.chat-v8 .up5-chat .message--user .pc-ctx {
    display: block;
    margin-top: 0.25rem;
    font-size: 0.8125rem;
    line-height: 1.35;
    opacity: 0.62;
  }
}
@media all {
/* ── înăuntrul mesei: cantitatea întâi, notele stinse, macro-urile ca la totalul zilei ── */
  html.chat-v8 .up5-chat .pc-plan .pc-masa + .content ul {
    list-style: none;
    padding-left: 0;
  }
  html.chat-v8 .up5-chat .pc-plan .pc-masa + .content ul > li::before {
    display: none;
  }
  html.chat-v8 .up5-chat .pc-plan .pc-q {
    display: inline-block;
    min-width: 3.25rem;
    font-weight: 700;
    color: #fff;
    font-variant-numeric: tabular-nums;
  }
  html.chat-v8 .up5-chat .pc-plan .pc-n {
    color: #8f93a8;
    font-size: 0.8125rem;
  }
  html.chat-v8 .up5-chat .pc-plan .pc-masa + .content ol {
    padding-left: 1.125rem;
  }
  html.chat-v8 .up5-chat .pc-plan .pc-masa + .content ol > li {
    padding-left: 0.125rem;
    color: #c4c7d4;
  }
  html.chat-v8 .up5-chat .pc-plan .pc-masa + .content ol > li::marker {
    color: #8f93a8;
    font-weight: 600;
    font-size: 0.8125rem;
  }
  html.chat-v8 .up5-chat .pc-plan .pc-masa + .content > .pc-macro {
    display: flex;
    gap: 0.5rem;
    margin: 0.75rem 0 0.9375rem;
    color: inherit;
  }
  html.chat-v8 .up5-chat .pc-macro span {
    display: flex;
    align-items: baseline;
    gap: 0.3125rem;
    padding: 0.375rem 0.625rem;
    border-radius: 0.625rem;
    background: rgba(255, 255, 255, 0.045);
  }
  html.chat-v8 .up5-chat .pc-macro b {
    order: 2;
    font: 700 0.8125rem/1 "Inter", sans-serif;
    color: #fff;
    font-variant-numeric: tabular-nums;
  }
  html.chat-v8 .up5-chat .pc-macro i {
    order: 1;
    display: flex;
    align-items: center;
    gap: 0.25rem;
    font: 500 0.6875rem/1 "Inter", sans-serif;
    font-style: normal;
    color: #8f93a8;
  }
  html.chat-v8 .up5-chat .pc-macro i::before {
    content: "";
    width: 0.375rem;
    height: 0.375rem;
    border-radius: 50%;
    background: #00c2ff;
  }
  html.chat-v8 .up5-chat .pc-macro span:nth-child(2) i::before {
    background: #b521e9;
  }
  html.chat-v8 .up5-chat .pc-macro span:nth-child(3) i::before {
    background: #ffb547;
  }
}
@media all {
/* ── 6 · rezultatul unui calcul: cifra ta, prima, mare; contextul sub ea ── */
  html.chat-v8 .up5-chat .message--assistant p.acx-rez {
    position: relative;
    margin: 0.125rem 0 0.875rem;
    padding: 0.9375rem 1rem 0.9375rem 1.125rem;
    border-radius: 1.125rem;
    background: linear-gradient(135deg, rgba(0, 194, 255, 0.09), rgba(181, 33, 233, 0.09)), #0f131d;
    box-shadow: inset 0 0 0 0.0625rem rgba(255, 255, 255, 0.08);
    font-size: 0.9375rem;
    line-height: 1.45;
    color: #c4c7d4;
    overflow: hidden;
  }
  html.chat-v8 .up5-chat .message--assistant p.acx-rez::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.875rem;
    bottom: 0.875rem;
    width: 0.1875rem;
    border-radius: 0 0.1875rem 0.1875rem 0;
    background: linear-gradient(180deg, #00c2ff, #b521e9);
  }
  html.chat-v8 .up5-chat .message--assistant p.acx-rez > strong:first-child {
    display: block;
    margin-bottom: 0.1875rem;
    font: 700 1.5rem/1.2 "Sora", "Inter", sans-serif;
    letter-spacing: -0.025em;
    color: #fff;
  }
  html.chat-v8 .up5-chat .message--assistant p.acx-rez > strong:first-child .acx-num {
    font: inherit;
  }
}
@media all {
/* ── 4b · rețetele din răspuns: același rând ca o masă din plan; corpul se deschide la atingere ── */
  html.chat-v8 .up5-chat .message--assistant .meal-item.pc-ret {
    margin: 0.625rem 0;
    padding: 0;
    border-radius: 1.125rem;
    background: #0f131d;
    box-shadow: inset 0 0 0 0.0625rem rgba(255, 255, 255, 0.08);
    overflow: hidden;
  }
  html.chat-v8 .up5-chat .pc-ret-cap {
    display: grid;
    grid-template-columns: 2.625rem 1fr auto;
    grid-template-rows: auto auto;
    column-gap: 0.75rem;
    row-gap: 0.1875rem;
    align-items: center;
    width: 100%;
    padding: 0.75rem 0.875rem 0.75rem 0.75rem;
    border: 0;
    background: none;
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
  }
  html.chat-v8 .up5-chat .pc-ret-cap .pc-m-e {
    grid-row: 1 / 3;
  }
  html.chat-v8 .up5-chat .pc-ret-t {
    grid-column: 2;
    grid-row: 1;
    font: 600 0.9375rem/1.35 "Inter", sans-serif;
    color: #fff;
  }
  html.chat-v8 .up5-chat .pc-ret-k {
    grid-column: 2;
    grid-row: 2;
    font: 500 0.75rem/1.2 "Inter", sans-serif;
    color: #9a9db2;
    font-variant-numeric: tabular-nums;
  }
  html.chat-v8 .up5-chat .pc-ret-k:empty {
    display: none;
  }
  html.chat-v8 .up5-chat .pc-ret-chev {
    grid-column: 3;
    grid-row: 1 / 3;
    position: relative;
    width: 1.25rem;
    height: 1.25rem;
    transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
  }
  html.chat-v8 .up5-chat .pc-ret-chev::before {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: 0.4375rem;
    height: 0.4375rem;
    border-right: 0.125rem solid #8f93a8;
    border-bottom: 0.125rem solid #8f93a8;
    transform: translate(-65%, -50%) rotate(-45deg);
  }
  html.chat-v8 .up5-chat .pc-ret[data-deschis="true"] .pc-ret-chev {
    transform: rotate(90deg);
  }
  html.chat-v8 .up5-chat .pc-ret-corp {
    overflow: hidden;
    transition: height 0.34s cubic-bezier(0.2, 0, 0, 1);
  }
  html.chat-v8 .up5-chat .pc-ret-in {
    padding: 0 1rem 0.25rem 4.125rem;
  }
  html.chat-v8 .up5-chat .pc-ret-in p {
    margin: 0.625rem 0 0.25rem;
    font-size: 0.875rem;
    line-height: 1.5;
    color: #c4c7d4;
  }
  html.chat-v8 .up5-chat .pc-ret-in p > strong:first-child {
    display: block;
    font: 700 0.6875rem/1.2 "Inter", sans-serif;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #8f93a8;
  }
  html.chat-v8 .up5-chat .pc-ret-in ul {
    margin: 0.25rem 0 0.5rem;
    padding-left: 0;
    list-style: none;
  }
  html.chat-v8 .up5-chat .pc-ret-in ul > li::before {
    display: none;
  }
  html.chat-v8 .up5-chat .pc-ret-in ol {
    margin: 0.25rem 0 0.5rem;
    padding-left: 1.125rem;
  }
  html.chat-v8 .up5-chat .pc-ret-in li {
    margin: 0.1875rem 0;
    font-size: 0.875rem;
    line-height: 1.5;
    color: #d4d6e0;
  }
  html.chat-v8 .up5-chat .pc-ret-in ol > li::marker {
    color: #8f93a8;
    font-weight: 600;
    font-size: 0.8125rem;
  }
  html.chat-v8 .up5-chat .pc-ret-in .pc-q {
    display: inline-block;
    min-width: 3.25rem;
    font-weight: 700;
    color: #fff;
    font-variant-numeric: tabular-nums;
  }
  html.chat-v8 .up5-chat .pc-ret-in .pc-n {
    color: #8f93a8;
    font-size: 0.8125rem;
  }
  html.chat-v8 .up5-chat .pc-ret-in > .pc-macro {
    display: flex;
    gap: 0.5rem;
    margin: 0.75rem 0 0.875rem;
  }
  html.chat-v8 .up5-chat .pc-ret-in .recipe-extra,
  html.chat-v8 .up5-chat .pc-ret-in p:last-child:not(.pc-macro) {
    margin-bottom: 0.875rem;
  }
}
@media all {
/* macro-urile unei mese: cifra sus, eticheta dedesubt — încap trei pe orice telefon, fără rupturi */
  html.chat-v8 .up5-chat .pc-macro span {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.25rem;
    min-width: 3.75rem;
    padding: 0.4375rem 0.625rem;
  }
  html.chat-v8 .up5-chat .pc-macro b {
    order: 1;
    white-space: nowrap;
  }
  html.chat-v8 .up5-chat .pc-macro i {
    order: 2;
    white-space: nowrap;
  }
}
@media all {
/* rândurile fără cantitate („sare, piper") stau aliniate cu numele ingredientelor */
  html.chat-v8 .up5-chat :is(.pc-plan .pc-masa + .content, .pc-ret-in) ul > li.pc-fara-q {
    padding-left: 3.25rem;
    color: #b9bccb;
  }
}
@media all {
/* butoanele-răspuns: text continuu (chat-numere.js îngroașă cifrele în span-uri — într-un rând flex deveneau
     elemente separate, cu spații: „Omega- 3 ?"); pictograma stă în linie cu textul */
  html.chat-v8 .up5-chat .message--assistant ul.acx-urm > li {
    display: inline-block;
    line-height: 1.5rem;
  }
  html.chat-v8 .up5-chat .message--assistant ul.acx-urm > li::before {
    display: inline-block;
    vertical-align: -0.125rem;
    margin-right: 0.4375rem;
  }
  html.chat-v8 .up5-chat ul.acx-urm .acx-num {
    font-weight: inherit;
  }
}
/* Patch 2 5-10-26 · săgeata „la ultimul mesaj" (chat-v8.js o face buton): inel de focus doar de la tastatură, aceeași
   culoare ca restul butoanelor din fir; cu mișcare redusă apare/dispare fără scalare (tot opacitatea o anunță) */
@media all {
  html.chat-v8 .up5-chat .chat-scroll-down:focus {
    outline: none;
  }
  html.chat-v8 .up5-chat .chat-scroll-down:focus-visible {
    outline: 0.125rem solid rgba(0, 194, 255, 0.8);
    outline-offset: 0.1875rem;
  }
}
@media (prefers-reduced-motion: reduce) {
  html.chat-v8 .up5-chat .chat-scroll-down,
  html.chat-v8 .up5-chat .chat-scroll-down[data-active],
  html.chat-v8 .up5-chat .chat-scroll-down:active {
    transform: none;
    transition: opacity 0.12s linear;
  }
  html.chat-v8 .up5-chat .chat-scroll-down svg,
  html.chat-v8 .up5-chat .chat-scroll-down[data-active] svg {
    transform: none;
    transition: none;
  }
}
