/* ZERO · Perfil, nav, modal y ajustes
   css/perfil.css

   Tu perfil, el selector de temas, la barra flotante de iconos con la camara
   al centro, las hojas que suben desde abajo y la pantalla de configuracion.

   Salio de index.html, que tenia 5302 lineas. Es 1 de 8 pedazos y se
   carga en un orden fijo desde index.html: NO lo reacomodes ahi. */

/* ===== perfil ===== */
.avatar{width:84px;height:84px;border-radius:50%;position:relative;z-index:2;margin-bottom:14px;
  background:var(--me-grad,conic-gradient(from 210deg,var(--t1),var(--t3),var(--t5),var(--t6),var(--t2),var(--t1)));
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 0 0 1px rgba(255,255,255,.16),0 10px 34px color-mix(in srgb,var(--t2) 32%,transparent)}
.avatar::before{content:"";position:absolute;inset:-8px;border-radius:50%;background:inherit;filter:blur(16px);opacity:.4;z-index:-1}
.avatar::after{content:"";position:absolute;inset:0;border-radius:50%;
  background:radial-gradient(circle at 35% 28%,rgba(255,255,255,.32),transparent 58%)}
.avatar span{position:relative;z-index:1;font-size:32px;font-weight:500;color:#fff;text-shadow:0 1px 10px rgba(0,0,0,.4)}
.stats{display:flex;gap:10px;padding:18px 22px 0}
.stat{flex:1;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px;text-align:center}
.stat b{font-size:24px;font-weight:400;display:block}
.stat span{font-size:11px;color:var(--ink-dim)}
.col-card{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:18px;margin-bottom:12px}
.col-head{display:flex;align-items:center;gap:12px;cursor:pointer}
.col-ico{flex:0 0 44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-size:20px}
.col-head b{font-size:15px;font-weight:600;flex:1}
.col-head span{font-size:12px;color:var(--ink-dim)}
.col-items{margin-top:14px;display:none;gap:8px;flex-direction:column}
.col-card.open .col-items{display:flex}
.saved-item{display:flex;align-items:center;gap:12px;background:var(--card2);border-radius:14px;padding:11px 14px;cursor:pointer}
.saved-item .sc{font-weight:600;font-size:14px;flex:0 0 38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center}
.saved-item b{font-size:13.5px;font-weight:500;flex:1}
.saved-item .del{color:var(--ink-dim);font-size:17px;padding:4px 8px;background:none;border:none;cursor:pointer}
.empty{color:var(--ink-dim);font-size:13px;text-align:center;padding:26px 20px;line-height:1.6}
.hint{font-size:11.5px;color:var(--ink-dim);line-height:1.55;margin:12px 0 0}

/* ===== temas ===== */
.theme-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:20px}
.theme-item{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px 4px 10px;text-align:center;
  cursor:pointer;transition:transform 160ms var(--ease)}
.theme-item:active{transform:scale(.94)}
.theme-item.sel{border-color:var(--sand);background:color-mix(in srgb,var(--sand) 22%,var(--card))}
.theme-item.sel span{color:var(--ink)}
.theme-item .tsw{width:38px;height:38px;border-radius:50%;margin:0 auto 7px;border:1px solid rgba(255,255,255,.18)}
.theme-item span{font-size:9.5px;letter-spacing:.5px;color:var(--ink-dim);text-transform:uppercase}
.theme-item .paldel{position:absolute;top:3px;right:5px;font-size:12px;color:var(--ink-dim);background:none;border:none;cursor:pointer;line-height:1;padding:2px}
.theme-item{position:relative}
/* iconos de avatar (12 estilos de degradado) */
.av-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-bottom:18px}
.av-item{aspect-ratio:1;border-radius:14px;cursor:pointer;border:2px solid transparent;
  transition:transform 140ms var(--ease)}
.av-item:active{transform:scale(.9)}
.av-item.sel{border-color:var(--sand);box-shadow:0 0 0 3px color-mix(in srgb,var(--sand) 30%,transparent)}
.custom-row{display:flex;gap:10px;margin:2px 0 12px}
.cpick{flex:1;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:8px;text-align:center}
.cpick input{width:100%;height:36px;border:none;background:none;cursor:pointer;padding:0}
.cpick span{font-size:10px;color:var(--ink-dim)}

/* ===== nav flotante · solo iconos, cámara al centro ===== */
/* MÁS ABAJO. Los 12px de antes dejaban un dedo de aire muerto entre la barra y
   el borde de la pantalla, y ese aire se le quitaba a lo de ARRIBA — en el
   escáner, al disparador, que es lo que más lo necesita.
   Va con max() y no con una suma a secas: en una compu env() vale 0 y la barra
   se habría pegado al filo; en un teléfono con barrita de inicio, la franja
   segura sigue mandando y nada queda debajo de ella. */
nav{position:absolute;left:16px;right:16px;bottom:max(10px,calc(3px + env(safe-area-inset-bottom)));z-index:50;
  display:grid;grid-template-columns:1fr 1fr auto 1fr 1fr;align-items:center;
  background:rgba(15,15,21,.82);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border:1px solid rgba(255,255,255,.09);border-radius:34px;padding:8px 10px;
  box-shadow:0 14px 40px rgba(0,0,0,.45)}
nav button{background:none;border:none;color:var(--ink-dim);cursor:pointer;height:48px;
  display:flex;align-items:center;justify-content:center;transition:color 200ms var(--ease)}
nav button svg{width:23px;height:23px;stroke:currentColor;fill:none;stroke-width:1.7;transition:transform 160ms var(--ease)}
nav button:active svg{transform:scale(.86)}
nav button.active{color:var(--sand)}
nav .scan-btn{position:relative;width:64px;height:64px;margin-top:-30px;color:#fff;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--coral),var(--rose));
  border-radius:46% 54% 52% 48%/54% 46% 54% 46%;
  box-shadow:0 10px 26px color-mix(in srgb,var(--rose) 45%,transparent),inset 0 1px 0 rgba(255,255,255,.35);
  animation:fabmorph 9s ease-in-out infinite;transition:transform 160ms var(--ease)}
nav .scan-btn:active{transform:scale(.93)}
nav .scan-btn svg{width:27px;height:27px;stroke:#fff}
/* isotipo de marca dentro del botón. El archivo sale de scripts/build-logos.mjs:
   si el logo cambia, este botón cambia solo. No reescalar a mano: la proporción
   real del isotipo es 2658.5372 : 3000 y deformarla está prohibido por el manual. */
nav .scan-btn .scan-mark{height:20px;width:auto;display:block;pointer-events:none;opacity:.6}
nav .scan-btn.active .scan-mark{opacity:.8}
nav .scan-btn.active{background:linear-gradient(135deg,var(--sand),var(--coral))}
.spark{transform-box:fill-box;transform-origin:center;animation:tw 3.4s ease-in-out infinite}
@keyframes fabmorph{0%,100%{border-radius:46% 54% 52% 48%/54% 46% 54% 46%}
 33%{border-radius:54% 46% 46% 54%/46% 54% 48% 52%}
 66%{border-radius:48% 52% 55% 45%/52% 48% 52% 48%}}
@keyframes tw{0%,100%{transform:scale(1) rotate(0deg);opacity:1}50%{transform:scale(.78) rotate(18deg);opacity:.85}}

/* ===== modal / lector ===== */
.overlay{position:absolute;inset:0;z-index:70;background:rgba(5,5,8,.75);backdrop-filter:blur(6px);
  display:none;align-items:flex-end;justify-content:center}
.overlay.show{display:flex}
/* La posición relativa hace que la flecha de cerrar se cuelgue de la HOJA y no
   de la pantalla: sin esto, en una hoja corta la flecha se iba a la esquina de
   arriba del todo, a dos dedos de distancia de la hoja que cierra. */
.sheet{position:relative;width:100%;max-height:86%;overflow-y:auto;background:var(--sheet);border-radius:28px 28px 0 0;
  padding:26px 24px calc(30px + env(safe-area-inset-bottom));animation:up .3s var(--ease)}
@keyframes up{from{transform:translateY(60px);opacity:0}to{transform:none;opacity:1}}
/* token `title`. Sin peso explícito un h3 hereda bold 700, que en Fraunces no
   existe como archivo: el navegador lo falsifica engordando los trazos. */
.sheet h3{font-size:var(--fs-title);line-height:var(--lh-title);font-weight:500;margin-bottom:6px}
.sheet .sub{color:var(--ink-dim);font-size:13px;margin-bottom:18px}
/* Va por lista de tipos y no solo `[type=text]`: los dos campos de contraseña
   nueva son `[type=password]`, se quedaban fuera de esta regla y el navegador
   los pintaba con su caja diminuta de fábrica, uno junto al otro. */
.sheet input[type=text],.sheet input[type=password],.sheet input[type=email]{
  display:block;width:100%;background:var(--card2);border:1px solid var(--line);border-radius:14px;
  color:var(--ink);padding:14px;font-family:inherit;font-size:16px;outline:none;margin-bottom:12px}
.sheet input:focus{border-color:var(--sand)}
.col-pick{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}
.col-pick button{background:var(--card2);border:1px solid var(--line);color:var(--ink);border-radius:20px;
  padding:9px 15px;font-family:inherit;font-size:13px;cursor:pointer}
.col-pick button.sel{border-color:var(--sand);color:var(--sand)}
/* El color iba fijo en #c9c4cf — un gris claro pensado para la hoja oscura. En
   modo día eso es gris claro sobre crema: el texto de los artículos y de los
   avisos legales prácticamente desaparecía. Sale del token de tinta, así que
   sigue al modo. */
.reader p{font-size:14px;line-height:1.7;color:color-mix(in srgb,var(--ink) 82%,transparent);margin-bottom:14px}
.reader h3{line-height:1.25}
.reader h4{font-size:13px;letter-spacing:1.6px;text-transform:uppercase;color:var(--sand);
  font-weight:600;margin:22px 0 10px}
.reader ul{margin:0 0 14px 18px}
.reader li{font-size:14px;line-height:1.7;color:color-mix(in srgb,var(--ink) 82%,transparent);margin-bottom:6px}
.reader a{color:var(--sand)}
/* "Conoce más" al pie del artículo. Separado por una línea para que se lea como
   lo que es —una salida hacia la fuente— y no como un párrafo más del texto. */
/* "Guardar una copia" va separado del "Cerrar" de abajo para que no se lean
   como dos botones del mismo par: uno se lleva el documento, el otro sale. */
.legal-baja{margin:10px 0 12px}

.reader-more{margin:4px 0 18px;padding-top:14px;border-top:1px solid var(--line);
  font-size:13px;color:var(--ink-dim)}
.reader-more a{text-decoration:underline;text-underline-offset:3px}

/* ===== configuración ===== */
/* Fila que lleva a otra pantalla. Se ve igual que un .collap-head (mismo peso,
   misma altura) porque hace lo mismo desde donde se mira: abrir algo. Lo único
   que cambia es la flecha: ▾ abre aquí, › se va a otro lado. */
.linkrow{display:flex;justify-content:space-between;align-items:center;width:100%;
  background:none;border:none;padding:4px 0 14px;cursor:pointer;color:var(--ink);font-family:inherit;text-align:left}
.linkrow h2{margin:0!important}
/* El conteo de opiniones vive AQUÍ y ya no en un párrafo debajo. Debajo, el
   renglón de "Mis opiniones" medía más alto que "Cómo se ve" y "Tu cuenta", y
   los tres huecos del perfil salían desiguales. Al lado del título ocupa cero
   altura, y los tres quedan a la misma distancia. */
.linkrow-meta{margin-left:auto;padding-right:10px;font-size:11.5px;color:var(--ink-dim);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.linkrow-go{display:flex;flex:0 0 auto;color:var(--sand);opacity:.8}
.linkrow-go svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.linkrow:active{opacity:.6}

/* el avatar es un botón: hay que apagarle lo que el navegador le pone de fábrica */
.avatar{border:none;padding:0;font-family:inherit;cursor:pointer;appearance:none}
.avatar:active{transform:scale(.96)}
.prof-user{position:relative;z-index:2;font-size:13px;color:var(--ink-dim);margin-top:2px;letter-spacing:.3px}

.setrow{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:18px;padding:14px 16px;margin-bottom:10px}
.setrow b{display:block;font-size:14px;font-weight:600}
.setrow span{font-size:12.5px;color:var(--ink-dim);word-break:break-word}
.setrow .grow{flex:1;min-width:0}
.setrow .edit{background:none;border:none;color:var(--sand);font-family:inherit;font-size:12.5px;
  font-weight:600;cursor:pointer;padding:6px 2px;white-space:nowrap}

/* interruptor de sí/no. Es un <button> con aria-pressed, no un checkbox: así
   la etiqueta entera es el área tocable y el lector de pantalla lo anuncia. */
.switch{flex:0 0 46px;width:46px;height:28px;border-radius:999px;border:1px solid var(--line);
  background:var(--card2);position:relative;cursor:pointer;transition:background 180ms var(--ease)}
.switch::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;
  background:var(--ink-dim);transition:transform 180ms var(--ease),background 180ms var(--ease)}
.switch[aria-pressed="true"]{background:color-mix(in srgb,var(--sand) 42%,transparent);border-color:var(--sand)}
.switch[aria-pressed="true"]::after{transform:translateX(18px);background:var(--sand)}

/* los cuatro derechos ARCO, uno por tarjeta: nombrarlos por su letra es lo que
   convierte una sigla legal en algo que se entiende de un vistazo */
.arco{display:grid;gap:10px;margin-bottom:4px}
.arco-item{background:var(--card2);border:1px solid var(--line);border-radius:18px;padding:14px 16px}
.arco-item b{display:block;font-size:13px;color:var(--sand);letter-spacing:.4px}
.arco-item span{display:block;font-size:12.5px;color:var(--ink-dim);margin:2px 0 10px}
.arco-item .btn{padding:12px;font-size:13.5px;border-radius:14px}

.btn.danger{background:color-mix(in srgb,var(--bad) 16%,transparent);color:var(--bad);
  border:1px solid color-mix(in srgb,var(--bad) 38%,transparent)}
.btn.danger:disabled{opacity:.4;cursor:not-allowed}

.flabel{display:block;font-size:11.5px;letter-spacing:1.6px;text-transform:uppercase;
  color:var(--ink-dim);font-weight:500;margin:14px 0 8px}
.userfield{display:flex;align-items:center;background:var(--card2);border:1px solid var(--line);
  border-radius:14px;padding-left:14px}
.userfield span{color:var(--ink-dim);font-size:15px}
.userfield input{background:none;border:none;margin:0;padding-left:4px}
.bullets{margin:0 0 16px 18px}
.bullets li{font-size:13px;line-height:1.65;color:var(--ink-dim);margin-bottom:7px}
.bullets b{color:var(--ink)}

.faq-q{width:100%;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:16px;
  padding:14px 16px;margin-bottom:8px;color:var(--ink);font-family:inherit;font-size:13.5px;
  font-weight:600;cursor:pointer;display:flex;justify-content:space-between;gap:12px;align-items:center}
.faq-q .chev{color:var(--sand);transition:transform 200ms var(--ease)}
.faq-q.open .chev{transform:rotate(180deg)}
.faq-a{display:none;font-size:13px;line-height:1.7;color:var(--ink-dim);padding:0 16px 14px}
.faq-a.open{display:block}
.bloq-row{display:flex;align-items:center;gap:12px;background:var(--card2);border-radius:14px;
  padding:11px 14px;margin-bottom:8px}
.bloq-row b{flex:1;font-size:13.5px;font-weight:500}
.mod-row{position:relative;z-index:2;display:flex;align-items:center;gap:8px;margin-top:14px;
  font-size:12px;color:var(--ink-dim)}
.mod-row button{background:none;border:none;color:var(--ink-dim);font-family:inherit;font-size:12px;
  cursor:pointer;padding:4px 2px;text-decoration:underline;text-underline-offset:3px}
.mod-row button:active{color:var(--ink)}
.toast{position:absolute;left:50%;bottom:132px;transform:translateX(-50%) translateY(20px);z-index:80;
  background:var(--sand);color:#1a140a;font-size:13px;font-weight:600;padding:11px 20px;border-radius:24px;
  opacity:0;transition:all .3s;pointer-events:none;white-space:nowrap}
.toast.show{opacity:1;transform:translateX(-50%)}
/* El aviso que lleva a algún lado ("Guardado en Rutina de noche") acepta el
   dedo; el que solo informa, no — si no, se quedaría tragándose los toques de
   lo que tenga debajo durante casi tres segundos. La flechita es la única
   pista de que aquí sí se puede tocar. */
.toast.tocable{pointer-events:auto;cursor:pointer}
.toast.tocable::after{content:"›";margin-left:8px;font-weight:400;opacity:.75}
.toast.tocable:active{transform:translateX(-50%) scale(.96)}
.back{position:relative;z-index:2;background:none;border:none;color:var(--ink-dim);font-family:inherit;font-size:13px;cursor:pointer;padding:0 0 10px}
.disclaimer{font-size:10.5px;color:#77717f;line-height:1.5;padding:0 22px 26px;text-align:center}



/* ===== LO QUE HAS REGISTRADO =====
   La foto manda: es la que tomaste tú, y es lo que hace reconocer el bote de un
   vistazo entre diez. El estado va en color y con todas sus letras — "En
   revisión" no es un error, es que alguien está comparando tu lista con tus
   fotos, y decirlo con un punto de color y nada más obligaría a adivinar. */
.reg-item{display:flex;align-items:center;gap:13px;width:100%;text-align:left;
  background:var(--card2);border:1px solid var(--line);border-radius:18px;
  padding:10px 14px 10px 10px;margin-bottom:9px;font-family:inherit;color:var(--ink);
  cursor:pointer;transition:transform 160ms var(--ease)}
.reg-item:active{transform:scale(.98)}
/* Un pendiente no lleva a ningún lado: no se comporta como si sí. */
.reg-item.quieto{cursor:default}
.reg-item.quieto:active{transform:none}
.reg-foto{flex:0 0 54px;width:54px;height:54px;border-radius:14px;overflow:hidden;
  background:var(--card);display:flex;align-items:center;justify-content:center;
  color:var(--ink-dim);font-size:20px}
.reg-foto img{width:100%;height:100%;object-fit:cover;display:block}
.reg-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.reg-tx b{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.reg-marca{font-size:11.5px;color:var(--ink-dim)}
.reg-estado{font-size:11.5px;font-weight:600}
