/* Guía de estilo de Sustrato para las páginas web (pauta, panel Pro, privacidad, aviso legal).
   Los mismos tokens y piezas que la app (src/estilos): si cambian allí, cambian aquí. Modo automático, claro u oscuro
   con data-theme en <html> (lo pone tema.js). La portada (index.html) tiene su propio lenguaje de escaparate. */
@font-face{font-family:"Geist";src:url(fonts/geist.woff2) format("woff2");font-weight:100 900;font-display:swap}

/* Tokens (claro) */
:root{--bg:#f2f2f7;--card:#ffffff;--card2:#f2f2f7;--fill:rgba(120,120,128,.16);--fill2:rgba(120,120,128,.10);--fg:#1c1c1e;--muted:#5f5f64;--icon:#5f5f64;--faint:#8e8e93;--sep:rgba(60,60,67,.16);
  --ac:#2f6fed;--ac-on:#fff;--verde:#11ab40;--amarillo:#f0a800;--rojo:#d70015;--cian:#3ba0c0;--naranja:#e86518;--azul:#3478fb;--morado:#bf5af2;--k:#8e8e93;
  --prot:var(--rojo);--carb:var(--amarillo);--fat:var(--azul);--peso:var(--morado);--side:#ebebf0;--line:var(--sep);
  --font:"Geist",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color-scheme:light}
/* Tokens (oscuro): por el sistema o elegido a mano */
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#000000;--card:#141414;--card2:#232325;--fill:rgba(118,118,128,.24);--fill2:rgba(118,118,128,.16);--fg:#f4f5f7;--muted:#aeaeb2;--icon:#d1d1d6;--faint:#8e8e93;--sep:rgba(84,84,88,.55);
  --ac:#3d86ff;--verde:#30d158;--amarillo:#ffd21e;--rojo:#ff3b30;--cian:#5ac8fa;--naranja:#ff9500;--azul:#3b82f6;--side:#0d0d0e;color-scheme:dark}}
:root[data-theme="dark"]{--bg:#000000;--card:#141414;--card2:#232325;--fill:rgba(118,118,128,.24);--fill2:rgba(118,118,128,.16);--fg:#f4f5f7;--muted:#aeaeb2;--icon:#d1d1d6;--faint:#8e8e93;--sep:rgba(84,84,88,.55);
  --ac:#3d86ff;--verde:#30d158;--amarillo:#ffd21e;--rojo:#ff3b30;--cian:#5ac8fa;--naranja:#ff9500;--azul:#3b82f6;--side:#0d0d0e;color-scheme:dark}
/* --ac-soft (guía 4.0): el mismo tinte de acento que la app */
:root{--ac-soft:color-mix(in srgb,#2f6fed 13%,transparent)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--ac-soft:color-mix(in srgb,#3d86ff 22%,transparent)}}
:root[data-theme="dark"]{--ac-soft:color-mix(in srgb,#3d86ff 22%,transparent)}

*{box-sizing:border-box}[hidden]{display:none!important}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.4 var(--font);-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--ac)}

/* Texto */
.pkk{font-size:17px;font-weight:600}
.note{font-size:13px;color:var(--muted)}
.ok{color:var(--verde)}.warn{color:var(--naranja)}.bad{color:var(--rojo)}

/* Botones: píldora; los grandes, con esquina de 14 px y 50 de alto */
.btn{appearance:none;border:0;border-radius:999px;padding:8px 16px;font-size:15px;font-weight:600;cursor:pointer;background:var(--fill);color:var(--fg)}
.btn.primary{background:var(--fg);color:var(--bg)}
.btn.big{min-height:50px;padding:12px 20px;border-radius:14px;font-size:17px;width:100%}
.btn:disabled{opacity:.4;cursor:default}
.chip{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:4px 10px;font-size:13px;background:var(--fill2);color:var(--muted)}

/* Segmentado: lo elegido, en acento (como en toda la app) */
.seg{display:flex;background:var(--fill2);border-radius:10px;padding:2px;gap:2px}
.seg button{flex:1;appearance:none;border:0;background:none;border-radius:8px;min-height:32px;padding:6px 10px;font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap}
.seg button[aria-pressed="true"],.seg button[aria-selected="true"]{background:var(--ac);color:var(--ac-on)}

/* Interruptor (solo dentro de una fila de lista, como en iOS) */
.sw{appearance:none;flex:0 0 auto;position:relative;width:51px;height:31px;border:0;border-radius:999px;background:var(--fill);cursor:pointer;padding:0;transition:background .2s}
.sw::after{content:"";position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 3px 8px rgba(0,0,0,.15),0 1px 1px rgba(0,0,0,.16);transition:transform .2s cubic-bezier(.3,1.3,.5,1)}
.sw[aria-checked="true"]{background:var(--ac)}.sw[aria-checked="true"]::after{transform:translateX(20px)}
@media (prefers-reduced-motion:reduce){.sw,.sw::after{transition:none}}

/* Tarjetas y listas agrupadas (como Ajustes) */
.card{background:var(--card);border-radius:16px}
.grp{margin-top:24px}
.gh{display:block;font-size:13px;font-weight:600;color:var(--muted);margin:0 18px 8px}
.gf{font-size:13px;color:var(--muted);margin:8px 18px 0;line-height:1.4}
.list{background:var(--card);border-radius:16px;overflow:hidden}
.row{display:flex;align-items:center;gap:12px;min-height:50px;padding:6px 18px;position:relative}
.row+.row::before{content:"";position:absolute;top:0;left:18px;right:0;height:.5px;background:var(--sep)}
.row .l{flex:1;min-width:0}.row .l small{display:block;font-size:13px;color:var(--muted)}

/* Selector de modo: automático, claro u oscuro */
.thm{display:inline-flex;gap:2px;padding:2px;border-radius:10px;background:var(--fill2)}
.thm button{appearance:none;border:0;background:none;color:inherit;width:34px;height:28px;border-radius:8px;cursor:pointer;display:grid;place-items:center;opacity:.7}
.thm button[aria-pressed="true"]{background:var(--card);opacity:1;box-shadow:0 1px 3px rgba(0,0,0,.18)}
.thm svg{width:16px;height:16px}
.thm-row{display:flex;justify-content:flex-end}
/* Estados de ordenador (20-10-2026; guía de Apple para Mac): la app es táctil y no los necesita, la web sí.
   Encima: un poco más de contraste en 150 ms, solo con ratón. Foco: anillo azul de 2 px con aire, solo con teclado.
   Cargando: aria-busy="true" deja el botón del mismo tamaño y pone un círculo girando en lugar del texto. */
.btn,.ib,.chip,.seg button,.cl,.nav,.tb,.lnkrow,.lnk,.pk-o,.back{transition:background-color .12s ease,color .12s ease,box-shadow .12s ease,opacity .12s ease,transform .12s ease-out}
@media (hover:hover){
  .btn:not(:disabled):not([aria-busy="true"]):hover{background:color-mix(in srgb,var(--fill),var(--fg) 9%)}
  .btn.primary:not(:disabled):not([aria-busy="true"]):hover{background:color-mix(in srgb,var(--fg) 84%,var(--bg))}
  .ib:not(:disabled):hover{background:var(--fill)}
  .ib.sm:not(:disabled):hover{background:var(--fill2);color:var(--fg)}
  .seg button:not([aria-pressed="true"]):not([aria-selected="true"]):hover{background:var(--fill2)}
  .pk-o:not([disabled]):not([aria-checked="true"]):hover{background:var(--fill)}
  .pk-o[aria-checked="true"]:hover{background:color-mix(in srgb,var(--ac) 88%,var(--fg))}
  .cl:not([aria-current="true"]):hover{background:color-mix(in srgb,var(--card) 60%,transparent)}
  .nav:not([aria-current="page"]):hover{background:var(--fill2)}
  .lnkrow:hover{background:var(--fill2)}
  .lnk:hover,.back:hover{opacity:.7}
  .chip:hover{background:var(--fill)}
}
.btn:focus-visible,.ib:focus-visible,.seg button:focus-visible,.pk-o:focus-visible,.cl:focus-visible,.nav:focus-visible,.tb:focus-visible,.lnkrow:focus-visible,.chip:focus-visible{outline:2px solid var(--ac);outline-offset:2px}
.btn[aria-busy="true"]{position:relative;color:transparent!important;pointer-events:none}
.btn[aria-busy="true"]>*{visibility:hidden}
.btn[aria-busy="true"]::after{content:"";position:absolute;inset:0;margin:auto;width:16px;height:16px;border-radius:50%;border:2px solid var(--fg);border-right-color:transparent;animation:btnSpin .7s linear infinite}
.btn.primary[aria-busy="true"]::after{border-color:var(--bg);border-right-color:transparent}
@keyframes btnSpin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.btn,.ib,.chip,.seg button,.cl,.nav,.tb,.lnkrow,.lnk,.pk-o,.back{transition:none}.btn[aria-busy="true"]::after{animation-duration:2.4s}}
.btn[aria-busy="true"]:disabled{opacity:1}
