/* Signal Desk · tema «Terminal + Aurora»: base oscura sobria, acento naranja para acciones, toques violeta/cian.
   Todos los colores salen de variables; claro/oscuro siguen al sistema salvo que data-theme lo fije (theme toggle). */
:root{
  color-scheme:light;
  --bg:#f5f6f8;--surface:#ffffff;--surface-2:#f0f2f5;--surface-3:#e8ebf0;--line:#e3e7ec;--line-strong:#cdd3db;
  --ink:#0f141a;--ink-2:#39424e;--muted:#5b6572;--faint:#8a93a0;
  --accent:#e8641b;--accent-hover:#cf5310;--on-accent:#ffffff;--accent-soft:#fdebdd;--accent-ink:#9a3d08;
  --violet:#6d4ad8;--violet-soft:#efeafe;--cyan:#0e7c8f;--cyan-soft:#e3f7fa;
  --green:#0e9f6e;--green-soft:#e3f6ee;--green-ink:#0b6b4b;--red:#d64545;--red-soft:#fcecec;--red-ink:#a12f2f;--amber:#b7791f;--amber-soft:#fbf1df;--amber-ink:#8a5a12;
  --sidebar:#ffffff;--sidebar-line:#e3e7ec;--nav-ink:#5b6572;--nav-active:#fdebdd;--nav-active-ink:#9a3d08;
  --shadow:0 1px 2px rgba(15,20,26,.04),0 8px 24px rgba(15,20,26,.06);--shadow-lg:0 24px 80px rgba(15,20,26,.18);
  --backdrop:rgba(15,20,26,.45);--aurora:radial-gradient(1200px 400px at 85% -120px,rgba(109,74,216,.10),transparent 60%),radial-gradient(900px 300px at 10% -140px,rgba(14,124,143,.08),transparent 60%);
  --card-glow:radial-gradient(420px 160px at 100% 0,rgba(109,74,216,.08),transparent 70%);
  --font:"Inter","Segoe UI Variable","Segoe UI",system-ui,-apple-system,sans-serif;--mono:"JetBrains Mono","SF Mono",ui-monospace,Consolas,monospace;
  --radius:10px;--radius-lg:14px;
}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]){
  color-scheme:dark;
  --bg:#0a0d12;--surface:#10151c;--surface-2:#161c25;--surface-3:#1c2430;--line:#1f2733;--line-strong:#2c3644;
  --ink:#e6e8eb;--ink-2:#c3c9d1;--muted:#9aa3ae;--faint:#6b7480;
  --accent:#ff8a3d;--accent-hover:#ff9d5c;--on-accent:#1a0e05;--accent-soft:#2a1a0f;--accent-ink:#ffb27f;
  --violet:#a78bfa;--violet-soft:#1e1838;--cyan:#67e8f9;--cyan-soft:#0f2a30;
  --green:#22c55e;--green-soft:#0e2a1b;--green-ink:#4ade80;--red:#ef4444;--red-soft:#2e1414;--red-ink:#f87171;--amber:#f5b544;--amber-soft:#2b2210;--amber-ink:#f5c46b;
  --sidebar:#0c1016;--sidebar-line:#1a212b;--nav-ink:#9aa3ae;--nav-active:#1c2430;--nav-active-ink:#ffb27f;
  --shadow:0 1px 0 rgba(255,255,255,.02) inset,0 8px 24px rgba(0,0,0,.35);--shadow-lg:0 24px 80px rgba(0,0,0,.6);
  --backdrop:rgba(3,5,8,.7);--aurora:radial-gradient(1200px 420px at 85% -140px,rgba(167,139,250,.14),transparent 60%),radial-gradient(900px 320px at 10% -160px,rgba(103,232,249,.08),transparent 60%);
  --card-glow:radial-gradient(420px 160px at 100% 0,rgba(167,139,250,.12),transparent 70%);
}}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#0a0d12;--surface:#10151c;--surface-2:#161c25;--surface-3:#1c2430;--line:#1f2733;--line-strong:#2c3644;
  --ink:#e6e8eb;--ink-2:#c3c9d1;--muted:#9aa3ae;--faint:#6b7480;
  --accent:#ff8a3d;--accent-hover:#ff9d5c;--on-accent:#1a0e05;--accent-soft:#2a1a0f;--accent-ink:#ffb27f;
  --violet:#a78bfa;--violet-soft:#1e1838;--cyan:#67e8f9;--cyan-soft:#0f2a30;
  --green:#22c55e;--green-soft:#0e2a1b;--green-ink:#4ade80;--red:#ef4444;--red-soft:#2e1414;--red-ink:#f87171;--amber:#f5b544;--amber-soft:#2b2210;--amber-ink:#f5c46b;
  --sidebar:#0c1016;--sidebar-line:#1a212b;--nav-ink:#9aa3ae;--nav-active:#1c2430;--nav-active-ink:#ffb27f;
  --shadow:0 1px 0 rgba(255,255,255,.02) inset,0 8px 24px rgba(0,0,0,.35);--shadow-lg:0 24px 80px rgba(0,0,0,.6);
  --backdrop:rgba(3,5,8,.7);--aurora:radial-gradient(1200px 420px at 85% -140px,rgba(167,139,250,.14),transparent 60%),radial-gradient(900px 320px at 10% -160px,rgba(103,232,249,.08),transparent 60%);
  --card-glow:radial-gradient(420px 160px at 100% 0,rgba(167,139,250,.12),transparent 70%);
}

/* Base */
*{box-sizing:border-box}
body{margin:0;background:var(--aurora),var(--bg);background-attachment:fixed;color:var(--ink);font:14px/1.55 var(--font);-webkit-font-smoothing:antialiased}
button,input,select{font:inherit}
button{cursor:pointer}
button:disabled{opacity:.45;cursor:not-allowed}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
[hidden]{display:none!important}
.skip-link{position:fixed;left:12px;top:-80px;z-index:10001;padding:10px 16px;border-radius:var(--radius);background:var(--ink);color:var(--bg);font-weight:600}.skip-link:focus{top:12px}
.content:focus{outline:none}
code,pre{font-family:var(--mono)}

/* Barra lateral: única definición. Portátil y móvil solo la ajustan en sus bloques (en móvil pasa a cabecera + navegación inferior). */
.sidebar{position:fixed;inset:0 auto 0 0;width:280px;background:var(--sidebar);border-right:1px solid var(--sidebar-line);color:var(--nav-ink);padding:28px 18px;display:flex;flex-direction:column;z-index:3}
.brand{font-size:22px;font-weight:700;letter-spacing:-.4px;display:flex;align-items:center;gap:12px;color:var(--ink);padding:0 8px}
.brand-icon{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;font-size:20px;font-weight:800;color:var(--on-accent);background:linear-gradient(135deg,var(--accent),var(--violet));box-shadow:0 6px 20px color-mix(in srgb,var(--accent) 35%,transparent)}
.view-switch{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin:26px 0 8px;padding:4px;background:var(--surface-2);border:1px solid var(--line);border-radius:12px}
.view-switch button{border:0;background:transparent;color:var(--muted);font-size:14px;font-weight:600;padding:10px 8px;border-radius:9px;min-height:42px}
.view-switch button[aria-pressed="true"]{background:var(--accent);color:var(--on-accent);box-shadow:0 4px 14px color-mix(in srgb,var(--accent) 30%,transparent)}
.view-switch button[aria-pressed="false"]:hover{color:var(--ink);background:var(--surface-3)}
.nav-label{font-size:11px;letter-spacing:1.4px;text-transform:uppercase;color:var(--faint);margin:18px 10px 8px;font-weight:600}
nav{display:grid;gap:6px}
nav button{border:0;background:transparent;color:var(--nav-ink);text-align:left;padding:12px 14px;border-radius:var(--radius);font-size:15.5px;font-weight:500;display:flex;align-items:center;gap:14px;min-height:52px}
nav button:hover{background:var(--surface-2);color:var(--ink)}
nav button span{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:var(--surface-2);border:1px solid var(--line);font-size:16px;flex:none}
nav button.active{color:var(--nav-active-ink);background:var(--nav-active);box-shadow:inset 3px 0 0 var(--accent)}
nav button.active span{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
nav b{margin-left:auto;background:var(--surface-3);color:var(--ink-2);padding:1px 7px;border-radius:999px;font-size:11px;font-weight:600}
.sidebar-bottom{margin-top:auto;font-size:14px;padding:18px 8px 0;border-top:1px solid var(--sidebar-line);color:var(--ink-2)}
.sidebar-bottom p{font-size:11px;color:var(--faint);margin:16px 0 6px}
.sidebar-bottom small{font-size:11px;color:var(--faint);display:block;margin-top:6px}
.dot{width:8px;height:8px;background:var(--green);display:inline-block;border-radius:50%;margin-right:8px;box-shadow:0 0 0 3px var(--green-soft)}
.dot.paused{background:var(--amber);box-shadow:0 0 0 3px var(--amber-soft)}
.steps{display:flex;gap:5px}.steps i{height:3px;background:var(--surface-3);width:33%;border-radius:5px}.steps i.done{background:var(--accent)}

/* Cabecera y contenido */
main{margin-left:280px;min-height:100vh}
header{height:68px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 36px;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(10px);position:sticky;top:0;z-index:2}
.breadcrumb{font-size:12px;color:var(--faint)}
.breadcrumb span{margin:0 12px;color:var(--line-strong)}
.breadcrumb b{font-size:15px;font-weight:600;color:var(--ink)}
.connection{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:4px}
.mode{margin-left:14px;border:1px solid color-mix(in srgb,var(--green) 40%,transparent);background:var(--green-soft);color:var(--green-ink);letter-spacing:1px;font-size:11px;font-weight:600;padding:5px 9px;border-radius:999px;font-family:var(--mono)}
.theme-toggle{margin-left:12px;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);border-radius:999px;padding:6px 12px;font-size:12px;font-weight:500;min-height:34px}
/* I18N-01 (#339): selector de idioma. El <select> nativo cubre la etiqueta y no se ve; se ve el código del idioma. */
.lang-select{position:relative;cursor:pointer;font-weight:600;margin-top:0}
.lang-select select{position:absolute;inset:0;width:100%;height:100%;min-height:0;margin:0;padding:0;border:0;opacity:0;cursor:pointer;font-size:16px}
.lang-select:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.theme-toggle.lang-select span{display:inline}
.theme-toggle:hover{border-color:var(--line-strong);color:var(--ink)}
/* Indicador de entorno (sustituye al selector técnico en la vista Usuario; el selector sigue en Admin) */
.env-chip{display:inline-flex;align-items:center;gap:7px;margin-right:16px;padding:5px 11px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink-2);font-size:12px;font-weight:600;white-space:nowrap}
.env-chip::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--cyan)}
.env-chip[data-network="mainnet"]::before{background:var(--amber)}
.env-chip:empty{display:none}
.content{max-width:1240px;margin:auto;padding:28px 36px}
.content>label,.env-select>label{max-width:420px}

/* Tipografía y encabezados */
.eyebrow{font-size:11px;letter-spacing:1.6px;color:var(--accent);font-weight:700;margin:0 0 8px;text-transform:uppercase}
h1{font-size:34px;letter-spacing:-1px;font-weight:700;line-height:1.15;margin:0 0 10px}
h2{font-size:17px;font-weight:650;letter-spacing:-.2px;margin:0}
h3{font-size:14px;margin-top:24px}
.heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:28px 0 24px}
.heading p:not(.eyebrow){font-size:14px;color:var(--muted);margin:0}
.page .heading{margin-top:22px}
.muted{color:var(--muted);font-size:13px;font-weight:400}
.help{font-size:12.5px;line-height:1.7;color:var(--muted);margin:14px 0}
.notice{display:flex;align-items:center;gap:12px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px;color:var(--ink-2);font-size:13px}
.notice p{margin:0}.notice strong{font-weight:600;color:var(--ink)}.notice-tag{margin-left:auto;font-size:10px;letter-spacing:1px;white-space:nowrap}

/* Botones: las acciones principales son grandes y naranjas */
.primary,.secondary{border-radius:var(--radius);padding:12px 18px;min-height:44px;font-size:14px;font-weight:600;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;gap:8px}
.primary{background:var(--accent);border:1px solid var(--accent);color:var(--on-accent);box-shadow:0 6px 18px color-mix(in srgb,var(--accent) 28%,transparent)}
.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}
.secondary{background:var(--surface);border:1px solid var(--line-strong);color:var(--ink)}
.secondary:hover{background:var(--surface-2)}
.text-button{color:var(--accent);background:none;border:0;padding:6px 0;font-size:13px;font-weight:600;white-space:nowrap}
.text-button:hover{text-decoration:underline}
.icon-button{border:0;background:none;color:var(--muted);font-size:26px;line-height:1;padding:0 4px}
.icon-button:hover{color:var(--ink)}
.full{width:100%;margin-top:18px}

/* Paneles, métricas y cuentas */
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);margin-bottom:22px;overflow:hidden;box-shadow:var(--shadow)}
.padded{padding:26px}
.panel-heading{display:flex;justify-content:space-between;align-items:center;padding:20px 22px;gap:12px}
.panel-heading p:not(.eyebrow){margin:4px 0 0;font-size:13px;color:var(--muted)}
.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:23px}
.metric{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px 21px}
.metric-label{font-size:12px;color:var(--muted);display:flex;justify-content:space-between}
.metric-value{font-size:28px;letter-spacing:-.8px;margin:10px 0 3px;font-weight:650;font-family:var(--mono);font-variant-numeric:tabular-nums}
.metric-value small{font-size:12px;color:var(--muted);font-weight:400;letter-spacing:0;margin-left:5px}
.metric-note{font-size:11px;color:var(--faint)}
.main-grid{display:grid;grid-template-columns:minmax(0,1.85fr) minmax(285px,1fr);gap:22px}
.account-cards{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:0 22px 22px}
.account-card{border:1px solid var(--line);border-radius:var(--radius);padding:16px}
.account-title{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:600}
.avatar{width:30px;height:30px;background:var(--green-soft);display:grid;place-items:center;border-radius:8px;color:var(--green-ink);font-size:12px}
.avatar.blue{background:var(--cyan-soft);color:var(--cyan)}
.account-title .status-dot{margin-left:auto}
.status-dot{width:7px;height:7px;border-radius:50%;background:var(--green)}
.status-dot.paused{background:var(--amber)}
.capital-label{font-size:11px;color:var(--faint);margin-top:20px}
.capital{font-size:24px;letter-spacing:-.6px;margin:1px 0 16px;font-weight:650;font-family:var(--mono);font-variant-numeric:tabular-nums}
.account-stats{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:12px}
.account-stats span{font-size:11px;color:var(--faint);display:block}
.account-stats b{font-size:13px;color:var(--ink-2);font-weight:550}

/* Tablas */
.table-wrap{overflow:auto;background:linear-gradient(to right,var(--surface) 30%,transparent) left/40px 100% no-repeat local,linear-gradient(to left,var(--surface) 30%,transparent) right/40px 100% no-repeat local,radial-gradient(farthest-side at 0 50%,color-mix(in srgb,var(--ink) 16%,transparent),transparent) left/14px 100% no-repeat scroll,radial-gradient(farthest-side at 100% 50%,color-mix(in srgb,var(--ink) 16%,transparent),transparent) right/14px 100% no-repeat scroll}
.table-wrap:focus-visible{outline-offset:-2px}
/* Un título de panel sin panel debajo (sin cuentas de ese tipo) no se muestra */
.dash-heading:has(+ .dash:empty){display:none}
table{border-collapse:collapse;width:100%;text-align:left;white-space:nowrap;font-size:13px}
th{font-weight:600;font-size:11px;letter-spacing:.6px;text-transform:uppercase;color:var(--faint);background:var(--surface-2);padding:12px 20px;border-block:1px solid var(--line)}
td{padding:14px 20px;border-bottom:1px solid var(--line);color:var(--ink-2);font-variant-numeric:tabular-nums}
tr:last-child td{border-bottom:0}
tbody tr:hover td{background:color-mix(in srgb,var(--surface-2) 60%,transparent)}
td strong{color:var(--ink);font-weight:600}
td small{display:block;font-size:11px;color:var(--faint);margin-top:2px}
td details summary{font-size:11px;font-weight:400;color:var(--faint)}
td details small{max-width:200px;white-space:normal;overflow-wrap:anywhere}

/* Etiquetas de estado */
.pill{display:inline-block;border-radius:999px;padding:3px 9px;background:var(--green-soft);color:var(--green-ink);font-size:11px;font-weight:600;white-space:nowrap}
.pill.red{color:var(--red-ink);background:var(--red-soft)}
.pill.blue{color:var(--cyan);background:var(--cyan-soft)}
.pill.gray{color:var(--muted);background:var(--surface-3)}
.pill.amber{color:var(--amber-ink);background:var(--amber-soft)}
.negative{color:var(--red)}.positive{color:var(--green)}

/* Estados vacíos */
.empty{text-align:center;padding:40px 20px;color:var(--muted);font-size:13px}
.empty .empty-icon{font-size:26px;display:block;color:var(--violet);margin-bottom:10px}
.empty strong{display:block;color:var(--ink);font-size:15px;font-weight:600;margin-bottom:5px}

/* Formularios */
label{display:block;font-size:13px;color:var(--muted);margin-top:16px}
input,select{display:block;width:100%;border:1px solid var(--line-strong);border-radius:var(--radius);padding:11px 12px;min-height:44px;background:var(--surface-2);color:var(--ink);margin-top:6px;font-size:14px;min-width:0}
input:focus,select:focus{outline:2px solid color-mix(in srgb,var(--accent) 55%,transparent);outline-offset:1px;border-color:var(--accent)}
input[readonly]{background:var(--surface-3);color:var(--muted);font-family:var(--mono);font-size:13px}
input[type=checkbox],input[type=radio]{min-height:0}
.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.check-label{display:flex;gap:10px;align-items:center}
.check-label input{width:16px;height:16px;margin:0;accent-color:var(--accent)}
details>summary{cursor:pointer;font-size:14px;font-weight:600;color:var(--ink-2)}
pre{font:12px/1.8 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;background:var(--surface-2);border:1px solid var(--line);padding:16px;border-radius:var(--radius);color:var(--ink-2)}
code{font:12px var(--mono)}

/* Cotización y flujo del simulador */
.quote-panel .panel-heading{padding-bottom:10px}
.quote-panel form{padding:0 22px 20px}
.quote-price{font-size:32px;letter-spacing:-.8px;margin-top:22px;font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:600}
.quote-caption{font-size:11px;color:var(--faint);margin:0}
.flow{background:var(--surface-2);border-top:1px solid var(--line);display:grid;grid-template-columns:26px 1fr;gap:15px 10px;padding:21px 22px;color:var(--ink-2);font-size:13px}
.flow>span{color:var(--accent);font-size:11px;border:1px solid var(--line-strong);border-radius:50%;width:26px;height:26px;display:grid;place-items:center;font-family:var(--mono)}
.flow small{display:block;color:var(--faint);font-size:11px;margin-top:1px}

/* Pie, pestañas, diálogos y avisos */
footer{display:flex;justify-content:space-between;color:var(--faint);font-size:11px;padding:18px 0 15px}
footer b{font-size:10px;font-weight:400;margin-left:9px}
.tabs{display:flex;gap:6px;margin-bottom:18px;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:4px;width:fit-content;max-width:100%}
.tabs button{border:0;background:transparent;color:var(--muted);font-size:13px;font-weight:500;padding:9px 16px;border-radius:9px}
.tabs button.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}
dialog{width:500px;max-width:calc(100% - 28px);border:1px solid var(--line-strong);border-radius:18px;padding:28px;color:var(--ink);background:var(--surface);background-image:var(--card-glow);box-shadow:var(--shadow-lg)}
dialog::backdrop{background:var(--backdrop);backdrop-filter:blur(4px)}
.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.dialog-heading h2{font-size:22px}
/* Acceso al panel (#171): diálogo de código (reautenticación), aviso de códigos de recuperación y de sesión caducada */
#stepup-dialog{width:420px}
#stepup-dialog input[name=code]{font-family:var(--mono);font-size:20px;letter-spacing:3px;text-align:center}
.auth-error{margin:12px 0 0;padding:10px 12px;border-radius:var(--radius);background:var(--red-soft);color:var(--red-ink);font-size:13px}
.auth-notice{margin:0 0 16px;padding:12px 16px;border:1px solid color-mix(in srgb,var(--amber) 40%,var(--line));border-radius:var(--radius);background:var(--amber-soft);color:var(--amber-ink);font-size:13px}
.auth-notice.error{border-color:color-mix(in srgb,var(--red) 40%,var(--line));background:var(--red-soft);color:var(--red-ink)}
#session-expired{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:40;display:flex;align-items:center;gap:14px;max-width:calc(100% - 32px);margin:0;box-shadow:var(--shadow-lg)}
#session-expired a.primary{display:inline-flex;align-items:center;min-height:36px;padding:8px 14px;white-space:nowrap}
@media(max-width:680px){#session-expired{left:16px;right:16px;transform:none;flex-wrap:wrap;bottom:calc(84px + env(safe-area-inset-bottom,0px))}}
.signal-note{background:var(--surface-2);padding:12px 14px;margin-top:20px;border-radius:var(--radius);color:var(--ink-2);font-size:12px}
#signal-result{font-size:13px;margin-top:15px}
#signal-result p{padding:8px 10px;background:var(--surface-2);border-radius:8px}
#toast{position:fixed;bottom:24px;right:24px;max-width:460px;border:1px solid color-mix(in srgb,var(--green) 45%,var(--line));background:var(--surface);color:var(--ink);border-radius:12px;box-shadow:var(--shadow-lg);padding:16px 20px;font-size:14px;z-index:20}
#toast.error{border-color:color-mix(in srgb,var(--red) 55%,var(--line));color:var(--red-ink)}

/* Wallets */
.account-forms{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.account-form h2{font-size:19px}
.account-forms>article>h2{font-size:22px}
.account-forms>article>.eyebrow{font-size:11px}
.risk-settings{border-top:1px solid var(--line);margin-top:24px;padding-top:18px}
.padded>summary{padding:4px 0}
.wallet-box{margin-top:18px}
.wallet-box strong{font-size:14px}
.wallet-box .help{overflow-wrap:anywhere;margin:7px 0 12px}
.wallet-box .text-button{margin-left:14px}
.wallet-box>.eyebrow,.wallet-box>h3{display:none}
.wallet-box h3{margin-top:0}
.wallet-state .pill{font-size:12px}
.wallet-address{font-size:13px;color:var(--muted);overflow-wrap:anywhere;margin:14px 0;font-family:var(--mono)}
.wallet-balance{padding:14px 0}
.wallet-balance small{display:block;color:var(--muted);font-size:12px}
.wallet-balance strong{display:block;font-size:30px;font-weight:650;margin-top:3px;font-family:var(--mono);letter-spacing:-.5px}
.wallet-details{margin-top:18px}
.wallet-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}
.wallet-actions button{white-space:normal}
.wallet-actions button:disabled{cursor:default}
.wallet-error{font-size:13px;color:var(--red-ink)}
.wallet-qr{margin:16px 0;padding:16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2);text-align:center}
.wallet-qr svg{width:224px;height:224px;max-width:100%;background:#fff;border-radius:8px;padding:8px}
.wallet-qr .help{margin:10px 0 0}
.connection-steps{list-style:none;padding:0;margin:16px 0;display:grid;gap:12px}
.connection-steps li{font-size:14px;color:var(--ink)}
.connection-steps small{display:block;font-size:12px;color:var(--muted);overflow-wrap:anywhere;margin-top:3px}

/* Tarjeta general de ejecución */
.strategy-card{padding:32px;margin-top:8px;background-image:var(--card-glow)}
/* #255: la ejecución global vive en TradingView · Admin; allí sobra el enlace a esa misma página. */
#page-settings .strategy-card [data-page="settings"]{display:none}
#page-settings > .panel{margin-bottom:18px}
.strategy-top{display:flex;align-items:center;gap:16px}
.strategy-top h2{font-size:28px}
.strategy-top>.pill{margin-left:auto}
.strategy-icon{width:56px;height:56px;background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);border-radius:16px;display:grid;place-items:center;font-size:28px;color:var(--accent)}
.strategy-description{color:var(--muted);margin:22px 0 28px;font-size:15px}
.setup-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.setup-grid>div{border:1px solid var(--line);background:var(--surface-2);border-radius:var(--radius-lg);padding:22px;display:flex;flex-direction:column;align-items:flex-start}
.step-number{font-size:12px;color:var(--accent);font-family:var(--mono)}
.setup-grid h3{font-size:18px;margin:10px 0 5px}
.setup-grid p{font-size:13px;color:var(--muted);margin:0 0 20px;flex:1}
.strategy-foot{display:flex;justify-content:space-between;gap:16px;border-top:1px solid var(--line);margin-top:28px;padding-top:20px;font-size:13px;color:var(--muted)}
.lab-tools{margin-top:32px;color:var(--muted);font-size:14px}
.lab-tools summary{cursor:pointer;padding:12px 0}
.lab-tools .quote-panel{max-width:420px;margin-top:20px}
.lab-tools .flow{display:none}
#page-settings .secondary{margin-top:8px;white-space:normal}
#page-settings pre{max-height:320px;overflow:auto}

/* Catálogo de estrategias */
.strategy-catalog{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}
.catalog-card{padding:24px;margin-bottom:0;display:flex;flex-direction:column;background-image:var(--card-glow);transition:border-color .2s,transform .2s}
.catalog-card:not(.upcoming):hover{border-color:color-mix(in srgb,var(--violet) 45%,var(--line));transform:translateY(-2px)}
.catalog-head{display:flex;align-items:center;gap:14px}
.catalog-head h2{font-size:22px}
.catalog-head .pill{margin-left:auto}
.catalog-icon{width:46px;height:46px;flex:none;border-radius:13px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-size:22px;font-weight:800}
.catalog-icon.dci{background:var(--violet-soft);color:var(--violet)}
.catalog-icon.eth,.copy-card-icon.eth{background:var(--cyan-soft);color:var(--cyan)}
.catalog-description{min-height:44px;color:var(--muted);font-size:14px;margin:18px 0 14px}
.catalog-wallets{border-top:1px solid var(--line);margin-top:auto}
.catalog-wallet{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}
.catalog-wallet:last-child{border-bottom:0;padding-bottom:0}
.catalog-wallet strong{display:block;font-size:14px}
.catalog-wallet small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.catalog-wallet button{font-size:13px;padding:8px 12px;min-height:38px;white-space:normal;flex:none}
.catalog-note{font-size:13px;color:var(--muted);margin:14px 0 28px}
.catalog-card.upcoming{background:transparent;border-style:dashed;box-shadow:none}
/* Tarjeta del catálogo para el inversor: qué es → dónde → rendimiento → actividad → acción, con menos cajas */
.catalog-kind{margin:2px 0 0;font-size:13px;color:var(--muted);font-weight:500}
.investor-card .catalog-head h2{margin:0}
.investor-card .catalog-description{min-height:0;margin:16px 0 18px;color:var(--ink-2);font-size:15px}
.catalog-where{margin:0 0 18px}.catalog-where .dash-title{margin-bottom:8px}.catalog-where .copy-routes{margin:0}
.investor-card .strategy-perf{background:transparent}
.investor-card .dash-strategy .dash-row{gap:0;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.investor-card .dash-strategy .dash-tile{background:transparent;border:0;border-radius:0;padding:10px 12px}
.investor-card .dash-strategy .dash-tile+.dash-tile{border-left:1px solid var(--line)}
.investor-card{container-type:inline-size}
.investor-card .dash-strategy .dash-row{grid-template-columns:repeat(4,minmax(0,1fr))}
@container (max-width:520px){
  .investor-card .dash-strategy .dash-row{grid-template-columns:1fr 1fr}
  .investor-card .dash-strategy .dash-tile:nth-child(3){border-left:0}
  .investor-card .dash-strategy .dash-tile:nth-child(n+3){border-top:1px solid var(--line)}
}
.catalog-card.upcoming .catalog-icon{background:var(--surface-3);color:var(--faint);font-family:var(--mono)}
.catalog-card.upcoming .catalog-description{min-height:0;margin-bottom:0}

/* Copiar estrategia: tarjetas, modal y confirmaciones */
.copy-routes{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 18px}
.copy-routes .pill{font-weight:500}
.copy-card-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding-top:18px;margin-top:auto}
.copy-card-foot small{color:var(--muted);font-size:13px}
.catalog-card .copy-card-foot .primary{min-height:48px;padding-inline:24px;font-size:15px}
/* «Mis copias» (UX-01, #490): arriba en Estrategias, una fila compacta por copia, como la lista de wallets de DEX */
#copy-connections{margin:28px 0 8px}
.copy-list-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:12px}
.copy-list-head h2{font-size:22px;margin:0}
.copy-list{display:grid;gap:10px}
#copy-connections>.help{margin:10px 0 0}
.copy-row{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:14px 18px 12px 20px;box-shadow:var(--shadow);overflow:hidden;--tone:var(--faint)}
.copy-row::before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--tone)}
.copy-row.status-waiting_for_entry{--tone:var(--cyan)}.copy-row.status-active{--tone:var(--green)}.copy-row.status-occupied{--tone:var(--amber)}.copy-row.status-error{--tone:var(--red)}
.copy-row.new{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent),var(--shadow)}
.copy-row-main{display:grid;grid-template-columns:auto minmax(150px,1.2fr) minmax(0,3fr) auto;align-items:center;gap:14px}
.copy-row .copy-card-icon{width:38px;height:38px;border-radius:11px;font-size:16px}
.copy-row-name{min-width:0}
.copy-row-name strong{display:block;font-size:15px}
.copy-row-name small{display:block;margin-top:2px;color:var(--muted);font-size:12px}
/* UX-03 (#500): el nombre de la cuenta o wallet destacado, y el resultado de la copia con su color. */
.copy-row-name .copy-row-sep{color:var(--faint);font-weight:400}
.copy-row-name .copy-row-account{font-size:16px;font-weight:800;color:var(--ink)}
.copy-row-stats strong.positive{color:var(--green-ink)}.copy-row-stats strong.negative{color:var(--red-ink)}.copy-row-stats strong.muted{color:var(--muted)}
.copy-row-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0}
.copy-row-stats>div{min-width:0}
.copy-row-stats dt{font-size:10px;letter-spacing:.9px;text-transform:uppercase;color:var(--faint);font-weight:600}
.copy-row-stats dd{margin:2px 0 0}
.copy-row-stats strong{display:block;font-size:14px;color:var(--ink);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;line-height:1.35}
.copy-row-stats span{display:block;font-size:11px;color:var(--muted)}
.copy-row .copy-note{margin-top:10px}
.copy-row-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.copy-row-info{flex:1 1 220px;min-width:0;display:flex;flex-direction:column;gap:2px}
.copy-row-info .copy-timing{margin:0}
.copy-row-info small{font-size:12px;color:var(--faint)}
.copy-row-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}
.copy-row-actions .primary,.copy-row-actions .secondary,.copy-row-actions .text-button.danger{min-height:38px;padding:8px 14px;font-size:13px}
@media(max-width:760px){
  .copy-row{padding:14px 14px 12px 18px}
  .copy-row-main{grid-template-columns:auto minmax(0,1fr);gap:8px 12px}
  .copy-row .copy-status{grid-column:2;grid-row:2;justify-self:start}
  .copy-row-stats{grid-column:1/-1;grid-row:3;gap:8px;padding-top:4px}
  .copy-row-actions{width:100%}
  .copy-row-actions>*{flex:1 1 auto}
}
/* Catálogo más compacto (UX-01): cómo opera, la próxima operación y la actividad, plegadas */
.catalog-more{margin:0 0 16px;border-top:1px solid var(--line);padding-top:8px}
.catalog-more>summary{cursor:pointer;padding:8px 0;font-size:13px;font-weight:600;color:var(--ink-2)}
.catalog-more>summary:hover{color:var(--ink)}
.catalog-more[open]>summary{margin-bottom:8px}
/* Mis bots conectado (BOT-02, #493): asistente, pasos de TradingView, secreto, mensajes, detalle y actividad */
.copy-card-icon.bot{background:var(--cyan-soft);color:var(--cyan)}
.copy-row.status-stopped,.copy-row.status-paused{--tone:var(--faint)}
.bots-head{margin:0 0 14px}
#bot-connect-dialog,#bot-rotate-dialog{width:580px}
#bot-connect-dialog fieldset{border:0;padding:0;margin:16px 0 0;display:grid;gap:10px}
#bot-connect-dialog legend{font-size:15px;font-weight:600;margin-bottom:10px;padding:0}
#bot-connect-dialog [data-bot-go-dex]{margin-top:12px;white-space:normal;width:100%}
#bot-connect-dialog .copy-amount{display:block;margin-top:16px}
.bot-markets{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}
.bot-subtitle{font-size:16px;margin:22px 0 4px}
.bot-steps{margin:10px 0 0;padding-left:22px;display:grid;gap:16px;font-size:14px}
.bot-steps>li>strong{display:block;color:var(--ink)}
.bot-steps>li>span{display:block;margin-top:4px;color:var(--ink-2);font-size:13px;line-height:1.55}
.bot-copy-line{display:flex;align-items:center;gap:10px;margin-top:8px}
.bot-copy-line code,.bot-message code{flex:1;min-width:0;display:block;font:12px/1.5 var(--mono);color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:8px 10px;overflow-wrap:anywhere;user-select:all}
.bot-copy-line .secondary,.bot-message .secondary{flex:none;min-height:36px;padding:6px 12px;font-size:12px}
.bot-message{margin-top:10px}
.bot-message-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px;font-size:13px}
.bot-more{margin-top:10px}
.bot-more>summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--ink-2);padding:4px 0}
.bot-secret{margin-top:16px;padding:14px 16px;border-radius:12px;background:var(--amber-soft);border:1px solid color-mix(in srgb,var(--amber) 35%,transparent)}
.bot-secret .eyebrow{margin:0}
.bot-secret .help{margin:8px 0 0;color:var(--amber-ink)}
.bot-test-state{margin:14px 0 0;padding:10px 12px;border-radius:var(--radius);background:var(--surface-2);font-size:13px;color:var(--ink-2)}
.bot-test-state::before{content:"…";display:inline-block;width:18px;font-weight:700;color:var(--muted)}
.bot-test-state.ok{background:var(--green-soft);color:var(--green-ink)}
.bot-test-state.ok::before{content:"✓";color:var(--green-ink)}
.bot-saved{margin-top:16px}
.bot-check{display:flex;gap:10px;align-items:flex-start;margin:14px 0 0;font-size:13px;color:var(--ink);cursor:pointer}
.bot-check input{width:18px;height:18px;min-height:0;margin:1px 0 0;flex:none;accent-color:var(--accent)}
.bot-detail{padding:20px 22px;margin-top:18px}
.bot-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.bot-detail-head h2{margin:2px 0 4px}
.bot-detail-head .help{margin:0}
.bot-detail-stats{margin:16px 0 0}
.bot-detail .bot-tv{margin-top:16px}
.bot-activity{margin-top:8px}
.bot-activity td small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
@media(max-width:760px){.bot-detail-stats{grid-template-columns:1fr}.bot-copy-line{flex-wrap:wrap}.bot-copy-line .secondary{width:100%}.bot-detail{padding:16px}.bot-detail-head{flex-direction:column}}
/* Mis bots al nivel de 3Commas (BOT-03, #710): lista, selector de tipo, asistente de 3 pasos y registro */
.bots-table{padding:0;overflow:auto}
.bots-grid td small,.bot3-targets td small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.bots-grid strong.positive{color:var(--green-ink)}.bots-grid strong.negative{color:var(--red-ink)}
.bots-grid tr.status-connected td:first-child{box-shadow:inset 3px 0 0 var(--green)}.bots-grid tr.status-ready td:first-child{box-shadow:inset 3px 0 0 var(--cyan)}.bots-grid tr.status-paused td:first-child{box-shadow:inset 3px 0 0 var(--faint)}
.bots-grid td.bot3-actions{white-space:normal;min-width:190px}
.bot3-actions>button{margin:2px 6px 2px 0}
.bot3-actions>.primary,.bot3-actions>.secondary{min-height:34px;padding:6px 12px;font-size:12px}
.bot3-actions .text-button{font-size:12px;padding:4px 2px}
#bot3-dialog,#bot3-type-dialog,#bot3-rotate-dialog{width:620px}
#bot3-dialog fieldset{border:0;padding:0;margin:16px 0 0;display:grid;gap:10px}
#bot3-dialog legend{font-size:15px;font-weight:600;margin-bottom:10px;padding:0}
#bot3-dialog .copy-amount{display:block;margin-top:16px}
#bot3-dialog [data-bot-go-dex]{margin-top:12px;white-space:normal;width:100%}
.bot3-target-market{display:block;margin-top:8px}
.bot3-target-market select{min-height:36px;padding:6px 10px;font-size:13px;width:auto;max-width:100%}
.bot3-presets{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.bot3-presets button{min-height:34px;padding:6px 14px;font-size:13px;font-variant-numeric:tabular-nums}
.bot3-types{display:grid;gap:12px;margin-top:16px}
.bot3-type{display:grid;gap:6px;text-align:left;padding:16px 18px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);color:var(--ink);white-space:normal;height:auto}
.bot3-type:hover{border-color:var(--accent)}
.bot3-type strong{font-size:15px}.bot3-type span{font-size:13px;color:var(--ink-2);line-height:1.5}
.bot3-detail-actions{margin-top:12px}
.bot3-targets{margin-top:14px}
@media(max-width:760px){.bots-grid tr td:first-child{box-shadow:none}.bots-grid td.bot3-actions{grid-column:1/-1;min-width:0}.bots-table{background:none;border:0;box-shadow:none}#bot3-dialog .copy-actions{flex-wrap:wrap}#bot3-dialog [data-bot3-later]{order:3;flex-basis:100%}}
.copy-card-icon{flex:none;width:42px;height:42px;border-radius:12px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-weight:800;font-size:18px}
.copy-card-icon.dci{background:var(--violet-soft);color:var(--violet)}
.copy-status{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:600;padding:6px 11px;border-radius:999px;background:var(--green-soft);color:var(--green-ink);white-space:nowrap}
.copy-status i{width:8px;height:8px;border-radius:50%;background:currentColor}
.copy-status.blue{background:var(--cyan-soft);color:var(--cyan)}.copy-status.gray{background:var(--surface-3);color:var(--muted)}.copy-status.amber{background:var(--amber-soft);color:var(--amber-ink)}.copy-status.red{background:var(--red-soft);color:var(--red-ink)}
.copy-note{font-size:13px;color:var(--ink-2);background:var(--surface-2);border-radius:var(--radius);padding:10px 12px;margin:12px 0 0;position:relative;z-index:1}
.copy-note.error{color:var(--red-ink);background:var(--red-soft)}
.copy-note.ok{color:var(--green-ink);background:var(--green-soft)}.copy-note.warn{color:var(--amber-ink);background:var(--amber-soft)}
.copy-note code{font-size:11px;opacity:.8}
.text-button.danger{color:var(--red-ink);font-size:13px;border:1px solid color-mix(in srgb,var(--red) 35%,transparent);border-radius:var(--radius);padding:8px 14px;min-height:38px}
.text-button.danger:hover{background:var(--red-soft);text-decoration:none}
.text-button.danger:disabled{color:var(--faint);border-color:var(--line)}
.copy-blocker{font-size:13px;line-height:1.55;color:var(--ink-2);margin:8px 0 0;text-align:left;position:relative;z-index:1}
.primary.danger{background:var(--red);border-color:var(--red);color:#fff;box-shadow:0 6px 18px color-mix(in srgb,var(--red) 25%,transparent)}
.primary.danger:hover{background:color-mix(in srgb,var(--red) 85%,#000)}
@media(prefers-reduced-motion:no-preference){.status-waiting_for_entry .copy-status i{animation:copy-pulse 1.8s ease-in-out infinite}}
@keyframes copy-pulse{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--cyan) 50%,transparent)}50%{box-shadow:0 0 0 6px transparent}}

#copy-dialog{width:540px}
#copy-dialog fieldset{border:0;padding:0;margin:16px 0 0;display:grid;gap:10px}
#copy-dialog legend{font-size:15px;font-weight:600;margin-bottom:10px;padding:0}
.copy-steps{list-style:none;display:flex;gap:6px;padding:0;margin:16px 0 4px}
.copy-steps li{flex:1;height:4px;border-radius:4px;background:var(--surface-3);font-size:0}
.copy-steps li.done{background:color-mix(in srgb,var(--accent) 55%,var(--surface-3))}
.copy-steps li.current{background:var(--accent)}
.copy-option{display:flex;gap:12px;align-items:flex-start;margin:0;padding:14px 16px;min-height:56px;border:1px solid var(--line-strong);border-radius:12px;cursor:pointer;color:var(--ink);background:var(--surface-2);transition:border-color .15s,background .15s}
.copy-option:hover{border-color:color-mix(in srgb,var(--accent) 50%,var(--line-strong))}
.copy-option:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.copy-option:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}
.copy-option input{margin:3px 0 0;accent-color:var(--accent);width:18px;height:18px;min-height:0;flex:none}
.copy-option strong{display:block;font-size:15px}
.copy-option small{display:block;color:var(--muted);font-size:13px;margin-top:2px}
.copy-option.disabled{cursor:not-allowed;opacity:.55;background:transparent}
.copy-option.disabled:hover{border-color:var(--line-strong)}
.copy-option em.pill{font-style:normal;margin-left:6px;vertical-align:1px}
.copy-amount{margin:0 0 4px 30px}
.copy-amount input{margin-top:6px;font-family:var(--mono);font-size:16px}
.copy-balance{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-top:16px}
.copy-balance small{display:block;color:var(--muted);font-size:12px}
.copy-balance strong{font-size:26px;color:var(--ink);font-family:var(--mono);letter-spacing:-.5px}
.copy-summary{border:1px solid var(--line);background:var(--surface-2);border-radius:12px;padding:14px 16px;margin:16px 0 0;display:grid;gap:8px}
.copy-summary div{display:flex;justify-content:space-between;gap:12px;font-size:14px}
.copy-summary dt{color:var(--muted)}
.copy-summary dd{margin:0;text-align:right;color:var(--ink);font-weight:600}
/* #187: ficha de cada estrategia (catálogo y confirmación de la copia). */
.strategy-sheet{margin:0 0 18px}
.strategy-sheet dl{margin:8px 0 0;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);padding:2px 14px}
.strategy-sheet dl div{padding:10px 0;border-bottom:1px solid var(--line)}
.strategy-sheet dl div:last-child{border-bottom:0}
.strategy-sheet dt{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:600}
.strategy-sheet dd{margin:3px 0 0;font-size:14px;line-height:1.5;color:var(--ink)}
.strategy-sheet dd .pill{font-style:normal;white-space:nowrap}
#copy-dialog .strategy-sheet{margin:16px 0 0}
.strategy-sheet .perf-note{margin:8px 0 0}
/* Estimado de espera y duración (EST-02, #372): mismo aspecto que la ficha «Cómo opera». */
.strategy-timing{margin:0 0 18px}
.strategy-timing .timing-state{margin:8px 0 0;font-size:13px;color:var(--ink-2);display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.strategy-timing dl{margin:8px 0 0;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);padding:2px 14px}
.strategy-timing dl div{padding:10px 0;border-bottom:1px solid var(--line)}
.strategy-timing dl div:last-child{border-bottom:0}
.strategy-timing dt{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:600}
.strategy-timing dd{margin:3px 0 0;font-size:14px;line-height:1.5;color:var(--ink)}
.strategy-timing dd small{color:var(--muted)}
.strategy-timing .perf-note{margin:8px 0 10px}
.copy-timing{font-size:13px;color:var(--ink-2);margin:12px 0 0;display:flex;flex-wrap:wrap;align-items:center;gap:6px;line-height:1.5}
.copy-timing small{color:var(--muted)}
.timing-actions{display:flex;flex-wrap:wrap;gap:8px}
/* Visor de backtest (BT-01, #416). */
#backtest-dialog{width:960px}
.backtest-warning{margin:12px 0 0;font-size:13px;color:var(--amber-ink);background:var(--amber-soft);border-radius:var(--radius);padding:10px 12px}
.backtest-range{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;margin:14px 0 0}
.backtest-range label{display:grid;gap:4px;font-size:12px;color:var(--muted)}
.backtest-presets{display:flex;flex-wrap:wrap;gap:6px}
.backtest-presets button{padding:6px 10px;font-size:12px}
.backtest-chart{position:relative;height:360px;margin:12px 0 0;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.backtest-chart .help{margin:16px}
.backtest-attribution{margin:6px 0 0;font-size:11px;color:var(--muted)}
#backtest-dialog .backtest-stats{margin:12px 0 0;grid-template-columns:repeat(3,minmax(0,1fr))}
.backtest-table{max-height:280px;overflow:auto;margin:12px 0 0;border:1px solid var(--line);border-radius:12px}
.backtest-table table{width:100%;border-collapse:collapse;font-size:13px}
.backtest-table th,.backtest-table td{padding:7px 10px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}
.backtest-table th{position:sticky;top:0;background:var(--surface);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
@media(max-width:640px){.backtest-chart{height:260px}#backtest-dialog .backtest-stats{grid-template-columns:1fr 1fr}}
.copy-rules{font-size:13px;color:var(--ink-2);padding-left:18px;margin:14px 0 0;line-height:1.75}
.copy-proposal{font-size:13px;background:var(--amber-soft);color:var(--amber-ink);border-radius:var(--radius);padding:10px 12px;margin:12px 0 0}
/* Aviso del apalancamiento de la estrategia (UX-04, #503): informativo, en lugar del antiguo selector */
.copy-notice{font-size:13px;line-height:1.55;color:var(--ink);background:var(--cyan-soft);border-left:3px solid var(--cyan);border-radius:var(--radius);padding:10px 12px;margin:14px 0 0}
/* UX-08 (#546): aviso de capital mínimo (avisa, no bloquea). */
.copy-notice.warn{color:var(--amber-ink);background:var(--amber-soft);border-left-color:var(--amber)}.copy-notice[hidden]{display:none}
.copy-error{color:var(--red-ink);font-size:13px;margin:10px 0 0;min-height:1em}
.copy-error:empty{display:none}
/* #138: aviso fijo mientras la pausa de emergencia del entorno está activa. */
.emergency-banner{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:0 0 18px;padding:14px 16px;border:1px solid color-mix(in srgb,var(--red) 45%,transparent);border-left:4px solid var(--red);border-radius:var(--radius);background:var(--red-soft);color:var(--red-ink)}
.emergency-banner strong{font-size:15px}
.emergency-banner p{margin:4px 0 0;font-size:14px;color:var(--ink-2)}
#emergency-dialog label{display:block;margin-top:14px}
.copy-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}
.copy-actions .primary{min-width:180px}
#copy-dialog [data-copy-add]{margin-top:12px;white-space:normal;width:100%}
.copy-done{display:flex;align-items:center;gap:14px;background:var(--green-soft);border:1px solid color-mix(in srgb,var(--green) 35%,transparent);border-radius:12px;padding:16px;margin-top:16px}
.copy-done strong{display:block;font-size:17px}
.copy-done small{color:var(--muted);font-size:12px;font-family:var(--mono)}
.copy-done .pill{margin-left:auto;white-space:normal;text-align:center}
.copy-done-icon{flex:none;width:40px;height:40px;border-radius:50%;background:var(--green);color:#fff;display:grid;place-items:center;font-weight:800;font-size:18px;box-shadow:0 0 0 6px color-mix(in srgb,var(--green) 18%,transparent)}
.copy-accept{display:flex;gap:10px;align-items:flex-start;font-size:13px;color:var(--ink);margin-top:14px;cursor:pointer}
.copy-accept input{width:18px;height:18px;min-height:0;margin:1px 0 0;accent-color:var(--red);flex:none}
#copy-stop-dialog{width:460px}
#copy-stop-dialog h2{font-size:21px;margin:4px 0 0}

/* Pantallas grandes */
@media(min-width:1550px){.content{padding-top:34px}.heading{margin-top:36px}.metric{padding:23px}.panel-heading{padding-block:23px}.account-card{padding:22px}}

/* Portátil */
@media(max-width:1180px){
  .sidebar{width:240px}
  main{margin-left:240px}
  .content{padding:22px}
  .main-grid{grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr)}
  .account-cards{gap:9px;padding-inline:15px}
  .account-card{padding:12px}
  .metric{padding:16px}.metric-value{font-size:23px}
  .notice-tag{display:none}
  header{padding-inline:22px}
}

/* Tableta */
@media(max-width:950px){
  .main-grid{grid-template-columns:1fr}
  .quote-panel form{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  .quote-panel .quote-caption,.quote-panel .help,.quote-panel .flow{display:none}
  .quote-price{margin:20px 0 0}
  .quote-panel .two{grid-column:1}
  .quote-panel .full{align-self:end;height:44px}
  .metrics{grid-template-columns:1fr 1fr}
  .heading h1{font-size:28px}
  .account-forms{grid-template-columns:1fr}
}
@media(max-width:900px){
  .setup-grid{grid-template-columns:1fr}
  .strategy-card{padding:22px}
  .setup-grid>div{padding:18px}
  .strategy-foot{flex-direction:column}
  .strategy-top h2{font-size:24px}
  .strategy-catalog{grid-template-columns:1fr}
  .catalog-description{min-height:0}
}

/* Móvil: la barra lateral pasa a una fila compacta (marca + Usuario/Admin) y la navegación a una barra inferior fija */
@media(max-width:680px){
  .sidebar{position:static;width:auto;flex-direction:row;align-items:center;gap:12px;padding:10px 16px;border-right:0;border-bottom:1px solid var(--sidebar-line)}
  .brand{font-size:17px;gap:10px;padding:0}
  .brand-icon{width:32px;height:32px;border-radius:10px;font-size:16px;box-shadow:none}
  .view-switch{margin:0 0 0 auto;border-radius:10px}
  .view-switch button{min-height:34px;padding:5px 14px;font-size:13px;border-radius:7px}
  .nav-label,.sidebar-bottom{display:none}
  nav{position:fixed;left:0;right:0;bottom:0;z-index:5;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:2px;padding:6px 6px calc(6px + env(safe-area-inset-bottom,0px));background:color-mix(in srgb,var(--sidebar) 94%,transparent);backdrop-filter:blur(12px);border-top:1px solid var(--sidebar-line)}
  nav button{position:relative;flex-direction:column;justify-content:center;gap:3px;min-height:56px;padding:4px 2px;font-size:11px;font-weight:600;line-height:1.15;text-align:center;box-shadow:none}
  nav button span{width:44px;height:26px;border-radius:999px;border:0;background:transparent;font-size:15px}
  nav button.active{background:transparent;box-shadow:none}
  nav b{position:absolute;top:2px;left:calc(50% + 10px);margin:0;padding:0 5px;line-height:16px;font-size:10px}
  main{margin-left:0;padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}
  header{height:52px;padding:0 16px;gap:8px}
  .breadcrumb{display:none}
  .connection{flex:1;min-width:0;justify-content:flex-end;gap:6px}
  #connection-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
  .env-chip{margin-right:auto}
  .mode,.theme-toggle{margin-left:0}
  .theme-toggle span{display:none}
  #toast{left:16px;right:16px;max-width:none;bottom:calc(84px + env(safe-area-inset-bottom,0px))}
  .content{padding:16px}
  .notice{font-size:12px}
  .heading{align-items:start;flex-direction:column;margin:22px 0}
  .heading h1{font-size:28px}
  .account-cards{grid-template-columns:1fr 1fr}
  .account-stats{gap:6px}
  .capital{font-size:21px}
  .metrics{gap:10px}.metric{padding:14px}.metric-value{font-size:22px}
  .panel-heading{padding:17px}
  .tabs{overflow:auto;width:100%}
  .tabs button{white-space:nowrap}
  footer{gap:12px}
  .quote-panel form{display:block}
  .quote-panel .help{display:block}
  .quote-panel .two{display:grid}
  td,th{padding-inline:15px}
}
@media(max-width:480px){
  .catalog-card{padding:18px}
  .catalog-head h2{font-size:19px}
  .catalog-wallet{align-items:flex-start;flex-direction:column}
  .catalog-wallet button{align-self:flex-start}
  .copy-card-foot{flex-wrap:wrap}
  .catalog-card .copy-card-foot .primary{width:100%}
  .copy-list{grid-template-columns:1fr}
  #copy-dialog,#copy-stop-dialog{width:100%;max-width:100%;margin:auto 0 0;border-radius:18px 18px 0 0;padding:20px 16px;max-height:92vh;overflow:auto}
  .copy-actions{position:sticky;bottom:-20px;background:var(--surface);padding:12px 0}
  .copy-actions button{flex:1}
  .copy-actions .primary{min-width:0}
  .copy-amount{margin-left:0}
}

@media(prefers-reduced-motion:no-preference){
  button{transition:background .15s,border-color .15s,color .15s}
  .page{animation:appear .2s ease-out}
}
@keyframes appear{from{opacity:.5;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}

/* Vista Usuario / Admin (organización de la interfaz, no permisos) */
body[data-view="user"] [data-admin],body[data-view="user"] [data-configure-strategy],body[data-view="admin"] [data-user-only]{display:none!important}
/* MU-B (#558): con el rol user no hay selector Usuario/Admin ni secciones de admin, aunque se cambie sd-view a mano. */
body[data-role="user"] .view-switch,body[data-role="user"] [data-admin],body[data-role="user"] [data-configure-strategy]{display:none!important}

/* Rendimiento de la estrategia (TradingView) */
.strategy-perf{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 6px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2)}
.strategy-since small{display:block;font-size:11px;letter-spacing:.8px;text-transform:uppercase;color:var(--faint);font-weight:600}
.strategy-since strong{font-family:var(--mono);font-size:16px}
.perf-link{min-height:40px;padding:8px 14px;font-size:13px}
.perf-note{font-size:12px;color:var(--faint);margin:0 0 16px}

/* Vista Usuario: Wallets y Exchanges solo conectan y muestran capital; la estrategia se elige en Estrategias */
body[data-view="user"] form[data-bybit-config],body[data-view="user"] [data-bybit-action="pause"],body[data-view="user"] form[data-aster-config],body[data-view="user"] [data-aster-action="pause"],body[data-view="user"] form[data-binance-config],body[data-view="user"] form[data-grvt-config],body[data-view="user"] [data-grvt-action="pause"],body[data-view="user"] [data-binance-action="pause"],body[data-view="user"] .risk-settings{display:none!important}
.view-hint{margin-top:8px!important;font-size:13px!important;color:var(--ink-2)!important}.view-hint b{color:var(--accent)}

/* Paneles (UI-07). Paleta categórica validada (dataviz): orden fijo, no reordenar. */
:root{--s0:#e8641b;--s1:#6d4ad8;--s2:#0e9fb5;--s3:#c98500}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]){--s0:#e0691f;--s1:#8b6cf0;--s2:#1497ad;--s3:#c98500}}
:root[data-theme="dark"]{--s0:#e0691f;--s1:#8b6cf0;--s2:#1497ad;--s3:#c98500}
.dash{margin:0 0 24px}.dash:empty{display:none}
.dash-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.dash-tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px 18px;box-shadow:var(--shadow);min-width:0}
.dash-tile small{display:block;font-size:11px;letter-spacing:.8px;text-transform:uppercase;color:var(--faint);font-weight:600}
.dash-tile strong{display:block;font-family:var(--mono);font-size:24px;letter-spacing:-.5px;margin-top:6px;color:var(--ink);overflow-wrap:anywhere}
.dash-tile strong.positive{color:var(--green-ink)}.dash-tile strong.negative{color:var(--red-ink)}.dash-tile strong.muted{font-family:var(--font);font-size:15px;color:var(--muted);font-weight:500}
.dash-tile span{display:block;font-size:12px;color:var(--muted);margin-top:2px}
.dash-alloc{margin-top:14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px 18px;box-shadow:var(--shadow)}
.dash-title{font-size:12px;letter-spacing:.8px;text-transform:uppercase;color:var(--faint);font-weight:600;margin:0 0 10px}
.dash-bar{display:flex;gap:2px;height:14px;border-radius:7px;overflow:hidden;background:var(--surface-2)}
.dash-seg{display:block;min-width:4px;cursor:default}.dash-seg:first-child{border-radius:7px 0 0 7px}.dash-seg:last-child{border-radius:0 7px 7px 0}.dash-seg:only-child{border-radius:7px}
.dash-seg:hover,.dash-seg:focus-visible{filter:brightness(1.12)}.dash-seg:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}
.s-0{background:var(--s0)}.s-1{background:var(--s1)}.s-2{background:var(--s2)}.s-3{background:var(--s3)}.s-other{background:var(--faint)}
.dash-legend{list-style:none;padding:0;margin:12px 0 0;display:grid;gap:6px}
.dash-legend li{display:grid;grid-template-columns:12px minmax(0,1fr) auto 56px;gap:10px;align-items:center;font-size:13px;color:var(--ink-2)}
.dash-legend span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-legend b{font-family:var(--mono);font-weight:500;color:var(--ink)}.dash-legend em{font-style:normal;text-align:right;color:var(--muted);font-family:var(--mono);font-size:12px}
.dash-key{width:12px;height:12px;border-radius:3px}
.dash-tip{position:fixed;z-index:30;pointer-events:none;background:var(--surface-3);color:var(--ink);border:1px solid var(--line-strong);border-radius:8px;padding:6px 10px;font-size:12px;box-shadow:var(--shadow-lg);white-space:nowrap}
.dash-strategy{margin:0 0 16px}.dash-strategy .dash-row{gap:8px}
.dash-strategy .dash-tile{padding:10px 12px;box-shadow:none;background:var(--surface-2)}.dash-strategy .dash-tile strong{font-size:16px;margin-top:3px}.dash-strategy .dash-tile small{font-size:10px}
@media(max-width:900px){.dash-row{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.dash-strategy .dash-row{grid-template-columns:1fr 1fr}.dash-tile strong{font-size:20px}}
/* Actividad: filtros y recorrido de cada señal */
/* UX-06 (#519): estados por separado, destinos sin cuentas y el contrato como destino aparte */
.activity-status{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;margin:16px 20px 0;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.activity-status>div{padding:10px 12px;min-width:0}
.activity-status>div+div{border-left:1px solid var(--line)}
.activity-status dt{font-size:10px;letter-spacing:.9px;text-transform:uppercase;color:var(--faint);font-weight:600}
.activity-status dd{margin:3px 0 0}
.activity-status strong{display:block;font-size:14px;color:var(--ink);font-variant-numeric:tabular-nums}
.activity-status small{display:block;font-size:11px;color:var(--muted)}
.activity-destinations{padding:0 20px;margin:10px 0 0}
.journey-idle{color:var(--muted);font-weight:600}
@media(max-width:760px){.activity-status{grid-template-columns:1fr 1fr;margin:14px 14px 0}.activity-status>div+div{border-left:0}.activity-status>div:nth-child(even){border-left:1px solid var(--line)}.activity-status>div:nth-child(n+3){border-top:1px solid var(--line)}.activity-destinations{padding:0 14px}}
.activity-filters{display:grid;grid-template-columns:repeat(3,minmax(0,220px));gap:12px;padding:16px 20px 0}
.activity-tests{padding:12px 20px 0;font-size:13px;color:var(--muted)}
/* Etiqueta «Prueba» bajo la hora de cada fila del periodo de pruebas (#456). */
.activity-test{display:table;margin-top:4px}
.activity-filters label{margin-top:0}
.journey-note{padding:0 20px;margin:10px 0 4px}
.journey{list-style:none;display:flex;gap:4px;padding:0;margin:0;flex-wrap:wrap}
.journey li{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 8px 3px 4px;border-radius:999px;background:var(--surface-3);color:var(--muted);white-space:nowrap}
.journey li i{width:16px;height:16px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:10px;background:var(--line-strong);color:var(--surface)}
.journey li+li::before{content:"";width:8px;height:1px;background:var(--line-strong);margin:0 2px 0 -4px}
.journey .j-ok{background:var(--green-soft);color:var(--green-ink)}.journey .j-ok i{background:var(--green)}
.journey .j-fail{background:var(--red-soft);color:var(--red-ink)}.journey .j-fail i{background:var(--red)}
.journey .j-warn{background:var(--amber-soft);color:var(--amber-ink)}.journey .j-warn i{background:var(--amber)}
.journey-detail{white-space:normal;min-width:220px;max-width:360px;font-size:12px}
/* OBS-01 (#52): hora de cada etapa, motivo, eventos de la señal y resultado de la campaña. Con horas, el recorrido
   se lee mejor en vertical, como una línea de tiempo. */
.journey{flex-direction:column;align-items:flex-start;gap:3px}
.journey li+li::before{display:none}
.journey li time{font-weight:500;font-size:10px;opacity:.85;margin-left:2px}
.activity-grid th,.activity-grid td{padding-inline:12px}
.activity-grid th:first-child,.activity-grid td:first-child{padding-left:20px}
.activity-grid th:last-child,.activity-grid td:last-child{padding-right:20px}
.activity-grid .journey-detail{min-width:200px;max-width:300px}
.journey-detail>span{display:block}.journey-detail>span+span{margin-top:3px}
.journey-detail code,.journey-events code{font-size:10.5px;padding:1px 5px;border-radius:4px;background:var(--surface-3);color:var(--muted);white-space:nowrap}
.journey-events{margin-top:6px}
.journey-events summary{cursor:pointer;padding:3px 0}
.journey-events ul{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:5px}
.journey-events li{font-size:11px;color:var(--muted);line-height:1.45}
.journey-events li time{margin-right:6px;font-variant-numeric:tabular-nums}
.journey-events li code{margin-right:6px}
.journey-campaign{white-space:normal;min-width:150px;max-width:220px}
.journey-campaign strong{display:block;margin-top:4px;font-size:14px}
/* Celular: cada fila es una tarjeta; las celdas anchas ocupan las dos columnas y cada una lleva el título de su columna.
   También las tablas de table() en app.js (Señales, Órdenes, posiciones; MOB-01), cuya última celda impar va a lo ancho. */
@media(max-width:680px){
  :is(.activity-grid,.card-rows) thead{display:none}
  :is(.activity-grid,.card-rows),:is(.activity-grid,.card-rows) tbody{display:block}
  :is(.activity-grid,.card-rows) tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px 14px;padding:16px 14px;border-bottom:1px solid var(--line)}
  :is(.activity-grid,.card-rows) td,:is(.activity-grid,.card-rows) td:first-child,:is(.activity-grid,.card-rows) td:last-child{display:block;padding:0;border:0;white-space:normal;min-width:0;max-width:none;overflow-wrap:break-word}
  :is(.activity-grid,.card-rows) td::before{content:attr(data-label);display:block;font-size:10px;font-weight:600;letter-spacing:.6px;text-transform:uppercase;color:var(--faint);margin-bottom:4px}
  .activity-grid td.wide,.card-rows td:last-child:nth-child(odd){grid-column:1/-1}
  .activity-grid .journey li{white-space:normal}
}
@media(max-width:680px){.activity-filters{grid-template-columns:1fr;padding:14px 14px 0}.activity-tests{padding:10px 14px 0}}
/* Mis conexiones */
.conn-list{display:grid;gap:12px}
.conn-row{display:grid;grid-template-columns:minmax(0,1fr) 160px;gap:12px 18px;align-items:center;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--faint);border-radius:var(--radius-lg);padding:16px 18px;box-shadow:var(--shadow)}
.conn-row.status-ok{border-left-color:var(--green)}.conn-row.status-warn{border-left-color:var(--amber)}
.conn-main{display:flex;align-items:center;gap:12px;min-width:0}.conn-main>div{flex:1;min-width:0}
.conn-main strong{display:block;font-size:16px}.conn-main small{display:block;color:var(--muted);font-size:12px;font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.conn-kind{flex:none;font-size:10px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;padding:6px 8px;border-radius:8px;background:var(--surface-3);color:var(--ink-2)}
.conn-balance{text-align:right}.conn-balance small{display:block;font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.8px}.conn-balance strong{font-family:var(--mono);font-size:20px}
.conn-error{grid-column:1/-1;margin:0;font-size:13px;color:var(--red-ink);background:var(--red-soft);border-radius:var(--radius);padding:8px 10px}
/* Admin → Métricas (referidos, avisos, historial): lo desplegable y el QR ocupan toda la fila, no la columna de 160 px. */
.conn-row>details.builder-edit,.conn-row>.notify-qr{grid-column:1/-1}
.conn-actions{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px}.conn-actions .secondary{min-height:40px;padding:8px 14px;font-size:13px}
.conn-options{display:grid;gap:10px;margin-top:16px}.conn-options .copy-option{width:100%;text-align:left;font:inherit}
@media(max-width:600px){.conn-row{grid-template-columns:1fr}.conn-balance{text-align:left}}

/* TradingView · Admin: tarjeta por estrategia (ADM-01) */
.admin-cards{margin:8px 0 26px}
.admin-field{margin-top:12px}.admin-field small{display:block;font-size:11px;letter-spacing:.8px;text-transform:uppercase;color:var(--faint);font-weight:600;margin-bottom:4px}
.admin-value{display:flex;align-items:center;gap:8px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:6px 6px 6px 12px}
.admin-value code{flex:1;min-width:0;font-size:12.5px;color:var(--ink);overflow-wrap:anywhere}
.admin-value .text-button{font-size:12px;padding:4px 6px}.admin-copy{min-height:32px;padding:4px 12px;font-size:12px}
/* #220: rotar el secreto de una estrategia. */
.admin-rotate{margin:2px 0 0}.admin-rotation{margin:8px 0 0}
.admin-grace{border:0;padding:0;margin:16px 0 0;display:grid;gap:10px;min-width:0}.admin-grace legend{font-weight:600;padding:0;margin-bottom:8px}
#rotate-secret-dialog{width:520px}
.admin-card .help{margin:12px 0 16px}
/* «Integra tu estrategia» (UI-11): solo aviso, sin funcionalidad */
.integrate-cta{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:18px 0 6px;padding:18px 22px;border:1px dashed color-mix(in srgb,var(--violet) 45%,var(--line));border-radius:var(--radius-lg);background:var(--card-glow),var(--surface)}
.integrate-cta h2{font-size:18px;margin:0 0 4px}.integrate-cta p:not(.eyebrow){margin:0;font-size:13px;color:var(--muted)}.integrate-cta .eyebrow{color:var(--violet)}
@media(max-width:600px){.integrate-cta{flex-direction:column;align-items:flex-start}}
/* Admin · Métricas (DATA-01) — barras de un solo tono: comparan magnitudes */
.insight-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.bar-list{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.bar-list li{display:grid;grid-template-columns:minmax(0,38%) 1fr 40px;gap:10px;align-items:center;font-size:13px;color:var(--ink-2)}
.bar-list span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bar-list i{display:block;height:10px;border-radius:0 5px 5px 0;background:linear-gradient(90deg,var(--s0) var(--w),var(--surface-3) var(--w));border-radius:5px}
.bar-list b{font-family:var(--mono);text-align:right;color:var(--ink);font-weight:500}
.insight-h{font-size:20px;margin:28px 0 12px}
@media(max-width:900px){.insight-grid{grid-template-columns:1fr}}
/* Admin · Métricas · evolución diaria (DATA-01). Marcas finas, rejilla fina y sólida, 2px de hueco entre segmentos,
   franja gris para los días sin medición. Colores por clase (la CSP bloquea atributos style). */
.usage-evolution{margin:24px 0 8px}
.usage-head{display:flex;flex-direction:column;gap:10px}
.usage-head .insight-h{margin:0}
.usage-filters{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-start}
.usage-filters label{margin:0;font-size:12px}
.usage-filters select{min-width:160px;margin-top:4px}
.usage-gap{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);margin:0 0 10px}
.usage-gap i,.u-nodata{fill:color-mix(in srgb,var(--line-strong) 45%,transparent)}
.usage-gap i{display:block;width:16px;height:12px;border-radius:3px;background:color-mix(in srgb,var(--line-strong) 45%,transparent)}
.usage-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.usage-evolution.loading .usage-grid{opacity:.55;transition:opacity .2s}
.usage-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px 18px;box-shadow:var(--shadow);min-width:0}
.usage-card .dash-title{margin-bottom:2px}
.usage-sub{font-size:12px;color:var(--muted);margin:0}
.usage-plot{margin-top:10px;border-radius:8px}
.usage-plot:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.usage-svg{display:block;max-width:100%;height:auto;overflow:visible}
.u-grid{stroke:var(--line);stroke-width:1}
.u-tick{fill:var(--muted);font-size:11px;font-family:var(--font)}
.u-col{fill:currentColor}
.u-line{fill:none;stroke:currentColor;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.u-dot{fill:currentColor;stroke:var(--surface);stroke-width:2}
.u-cross{stroke:var(--line-strong);stroke-width:1}
.u-hit{fill:transparent;cursor:default}.u-hit.on{fill:color-mix(in srgb,var(--ink) 6%,transparent)}
.u-s0{color:var(--s0)}.u-s1{color:var(--s1)}.u-s2{color:var(--s2)}.u-s3{color:var(--s3)}.u-other{color:var(--faint)}
.u-good{color:var(--green)}.u-warn{color:var(--amber)}.u-bad{color:var(--red)}
.u-key{display:block;width:12px;height:12px;border-radius:3px;background:currentColor}.u-key.line{height:3px;border-radius:2px}
.usage-legend li{grid-template-columns:14px minmax(0,1fr) auto}
.usage-table summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--accent);margin-top:12px}
.usage-table table{font-size:12px}.usage-table td.muted{color:var(--muted)}
/* MU-G (#571): resumen empresa / usuarios encima de las gráficas de uso. */
.usage-groups{margin:0 0 16px}.usage-groups .usage-sub{margin:2px 0 8px}.usage-groups table{font-size:13px;white-space:normal}
.usage-groups th,.usage-groups td{padding:8px 12px}.usage-groups td{text-align:right;font-weight:600;color:var(--ink)}.usage-groups thead th:not(:first-child){text-align:right;width:6.5rem}
.usage-groups tbody th{text-transform:none;letter-spacing:0;font-size:13px;font-weight:500;color:var(--ink-2);background:none;border-block:0;border-bottom:1px solid var(--line)}
.usage-tip{min-width:170px;white-space:normal}
.usage-tip-day{font-weight:600;margin-bottom:4px}
.usage-tip-row{display:grid;grid-template-columns:14px auto minmax(0,1fr);gap:8px;align-items:center}
.usage-tip-row b{font-family:var(--mono);font-variant-numeric:tabular-nums}
@media(max-width:900px){.usage-grid{grid-template-columns:1fr}}
#insights .conn-main small{white-space:normal;font-family:var(--font);overflow:visible}
[data-grvt-signer]{font-family:var(--mono);font-size:13px;word-break:break-all;background:var(--surface-2,transparent);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px}

/* Selector de plataformas («Añadir wallet» / «Añadir exchange»): mosaico con logo de cada una */
#venue-dialog{width:min(560px,calc(100vw - 32px))}
.venue-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin:14px 0}
.venue-tile{display:flex;flex-direction:column;align-items:center;gap:8px;padding:18px 12px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface-2);color:var(--ink);cursor:pointer;min-height:auto;font:inherit;text-align:center}
.venue-tile:hover:not(:disabled),.venue-tile:focus-visible{border-color:var(--accent,var(--s0));background:var(--surface-3)}
.venue-tile:disabled{opacity:.55;cursor:not-allowed}
.venue-tile strong{font-size:15px}.venue-tile small{font-size:12px;color:var(--muted)}
.venue-mark{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:9px;font:700 11px/1 var(--mono);letter-spacing:.3px;background:var(--vc);color:var(--vi);vertical-align:middle;flex:none}
.venue-mark.lg{width:48px;height:48px;border-radius:14px;font-size:15px}
.venue-hyperliquid{--vc:#50d2c1;--vi:#062a26}
.venue-aster{--vc:#e9b872;--vi:#2b1d05}
.venue-bybit{--vc:#f7a600;--vi:#1b1300}
.venue-binance{--vc:#f0b90b;--vi:#1e1700}
.venue-grvt{--vc:#6d5cff;--vi:#ffffff}
.venue-form{margin-top:10px}
/* Formas de conectar una wallet (WalletConnect y extensiones detectadas), como en Aster */
.wallet-options{display:grid;gap:8px;margin:8px 0 12px}
.wallet-option{display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2);color:var(--ink);font:inherit;text-align:left;cursor:pointer;min-height:auto}
.wallet-option:hover:not(:disabled),.wallet-option:focus-visible{border-color:var(--accent);background:var(--surface-3)}
.wallet-option:disabled{opacity:.6;cursor:wait}
.wallet-option span{display:grid;gap:2px}.wallet-option strong{font-size:14px}.wallet-option small{font-size:12px;color:var(--muted)}
.wallet-icon{width:28px;height:28px;border-radius:8px;flex:none}
.venue-wc{--vc:#3b99fc;--vi:#ffffff}
.venue-generic{--vc:var(--surface-3);--vi:var(--ink)}
.wallet-qr{display:grid;justify-items:center;gap:8px;margin:8px 0;padding:12px;background:#fff;border-radius:var(--radius)}
.wallet-qr svg{width:220px;height:220px}.wallet-qr .text-button{color:#111}
/* Sin destello al recargar o cambiar tema: el fondo vive en <html> y el contenido espera a la traducción (boot.js) */
html{background:var(--bg)}
html.booting body{visibility:hidden}
/* DEX y CEX son dos áreas del menú sobre la misma página: cada una muestra solo lo suyo. */
#page-exchanges[data-kind="dex"] [data-kind="cex"],#page-exchanges[data-kind="cex"] [data-kind="dex"]{display:none!important}
.copy-line{margin:10px 0 4px;font-size:13px;color:var(--ink-2)}.copy-line.muted{color:var(--muted)}.copy-line .text-button{margin-left:6px}

/* «Mis exchanges»: una fila por cuenta (estilo 3Commas) */
.acct-list{display:grid;gap:10px;margin:6px 0 22px}
.acct-row{display:grid;grid-template-columns:minmax(0,1fr) 130px auto 52px auto;gap:14px;align-items:center;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface)}
.acct-row.status-funds,.acct-row.status-auth,.acct-row.status-wallet{border-color:color-mix(in srgb,var(--amber,#c98500) 45%,var(--line))}
.acct-row.status-error,.acct-row.status-verify,.acct-row.status-blocked{border-color:color-mix(in srgb,var(--red-ink,#c0392b) 45%,var(--line))}
.acct-main{display:flex;align-items:center;gap:12px;min-width:0}
.acct-main strong{display:flex;align-items:center;gap:4px;font-size:15px}
.acct-main small{display:block;color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.acct-edit{font-size:13px;padding:2px 6px;min-height:auto;opacity:.7}.acct-edit:hover{opacity:1}
.acct-balance small{display:block;font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.6px}.acct-balance .acct-markets{margin-top:2px;text-transform:none;letter-spacing:0}.acct-markets span{display:block;white-space:nowrap}.acct-balance strong{font-family:var(--mono);font-size:14px}
.acct-actions{display:flex;gap:4px}.acct-actions .icon-button{min-height:34px;min-width:34px}
.acct-note{grid-column:1/-1;margin:0;font-size:13px;color:var(--ink-2)}.acct-note.error{color:var(--red-ink)}.acct-note .text-button,.acct-note a{margin-left:6px}
.acct-outcome ul{margin:4px 0 0;padding-left:18px}.acct-outcome li{margin:2px 0}
/* EXEC-02 (#529): cuenta bloqueada, con su motivo y «Verificar y reanudar». */
.acct-halt{display:grid;gap:6px;padding:10px 12px;border:1px solid color-mix(in srgb,var(--red) 35%,transparent);border-radius:var(--radius);background:var(--red-soft)}.acct-halt p{margin:0}.acct-halt .secondary{justify-self:start;min-height:38px;padding:8px 14px;font-size:13px;white-space:normal}
.acct-halt-failed{color:var(--ink)}.acct-halt-failed ul{margin:4px 0;padding-left:18px}.acct-halt-failed li{margin:2px 0}
/* #185: préstamo en compras Spot (Portfolio Margin): interruptor y su estado en una línea */
.acct-borrow{display:flex;align-items:center;gap:10px;padding-top:10px;border-top:1px solid var(--line)}
.acct-borrow .switch{flex:none;margin:0}
.switch{position:relative;display:inline-block;width:42px;height:24px;cursor:pointer}
.switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.switch span{position:absolute;inset:0;border-radius:999px;background:var(--surface-3);border:1px solid var(--line-strong);transition:background .15s}
.switch span::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--ink-2);transition:transform .15s}
.switch input:checked+span{background:var(--accent);border-color:var(--accent)}
.switch input:checked+span::after{transform:translateX(18px);background:var(--on-accent)}
.switch input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
.switch-placeholder{width:42px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.dash-heading{font-size:16px;margin:18px 0 8px;color:var(--ink-2)}
.setup-details{margin-top:18px}.setup-details>summary{cursor:pointer;font-weight:600}
.venue-group{margin:14px 0 4px;font-size:12px;letter-spacing:.6px;text-transform:uppercase;color:var(--faint);font-weight:600}
@media(max-width:760px){.acct-row{grid-template-columns:minmax(0,1fr) auto}.acct-main{grid-column:1/-1}.acct-balance{grid-column:1}.acct-row .pill{justify-self:end}}
.venue-okx{--vc:#111111;--vi:#ffffff}
.venue-kucoin{--vc:#24ae8f;--vi:#ffffff}
.venue-kraken{--vc:#7132f5;--vi:#ffffff}
.venue-extended{--vc:#0b0b0f;--vi:#9cf06b}
.venue-coinbase{--vc:#0052ff;--vi:#ffffff}
.venue-dydx{--vc:#6966ff;--vi:#ffffff}
.venue-lighter{--vc:#0f1115;--vi:#e8e8e8}.venue-bitget{--vc:#00c2cb;--vi:#04171a}
.venue-tabs{display:flex;gap:4px;margin:10px 0 2px;border-bottom:1px solid var(--line)}.venue-tabs a{padding:8px 14px;font-weight:600;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px}.venue-tabs a[aria-selected="true"]{color:var(--ink);border-color:var(--accent)}
/* PWA (APP-01, #234): logo en la barra lateral, botón «Instalar app» (solo Mainnet) y ayuda de iOS. */
.brand-logo{background:none;box-shadow:none;overflow:hidden;padding:0}
.brand-logo img{width:100%;height:100%;display:block}
.install-app{border-color:var(--accent);color:var(--accent-ink);white-space:nowrap}
.install-app:hover{border-color:var(--accent-hover);color:var(--accent-ink)}
.install-app i{font-style:normal}
.install-steps{margin:0 0 14px;padding-left:22px;display:grid;gap:8px;color:var(--ink-2)}
#install-dialog{width:440px}
@media (max-width:680px){.install-app span{display:inline}#install-dialog{width:100%;max-width:100%;margin:auto 0 0;border-radius:18px 18px 0 0;padding:20px 16px}}
/* Marca blanca (WL-01, #281): pie con el soporte y los textos legales de la marca. */
.brand-footer{color:var(--faint);font-size:11px;line-height:1.5;padding:0 0 18px;border-top:1px solid var(--line);margin-top:-6px}
.brand-footer p{margin:10px 0 0}
.brand-footer a{color:var(--muted)}
/* Contrato individual (piloto, CTR #365): aviso, pasos guiados, estado de la cuenta y acciones del propietario. */
.ctr-warning{margin:0 0 20px;padding:14px 16px;border:1px solid color-mix(in srgb,var(--amber) 45%,var(--line));border-radius:var(--radius);background:var(--amber-soft);color:var(--amber-ink);font-size:13px;line-height:1.6}
.ctr-warning ul{margin:6px 0 0;padding-left:20px}
.ctr-wallet .eyebrow{margin-bottom:6px}
.ctr-wallet-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.ctr-addr{font-family:var(--mono);font-size:12.5px;color:var(--ink);overflow-wrap:anywhere;word-break:break-all}
.ctr-section>h2{margin-bottom:4px}
.ctr-steps{list-style:none;padding:0;margin:14px 0 0;display:grid;gap:10px}
.ctr-step{display:grid;grid-template-columns:32px minmax(0,1fr);gap:12px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface)}
.ctr-step.current{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}
.ctr-step.todo h3{color:var(--muted)}
.ctr-step h3{margin:5px 0 0;font-size:15px}
.ctr-num{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:13px;background:var(--surface-3);color:var(--ink-2)}
.ctr-step.done .ctr-num{background:var(--green-soft);color:var(--green-ink)}
.ctr-step.current .ctr-num{background:var(--accent);color:var(--on-accent)}
.ctr-body{min-width:0}
.ctr-body .help{margin:8px 0}
.ctr-body label{max-width:520px}
.ctr-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.ctr-actions button{white-space:normal;text-align:left}
.ctr-tx{margin-top:12px;padding:10px 12px;border:1px solid color-mix(in srgb,var(--amber) 40%,var(--line));border-radius:var(--radius);background:var(--surface-2);font-size:13px;overflow-wrap:anywhere}
.ctr-confirm{margin-top:12px;padding:12px 14px;border:1px solid color-mix(in srgb,var(--amber) 45%,var(--line));border-radius:var(--radius);background:var(--surface-2)}
.ctr-confirm p{margin:0;font-size:13px;color:var(--ink-2)}
.ctr-list{display:grid;gap:8px;margin:10px 0}.ctr-list div{min-width:0}
.ctr-list dt,.ctr-grid dt{font-size:11px;letter-spacing:.6px;text-transform:uppercase;color:var(--faint);font-weight:600}
.ctr-list dd{margin:2px 0 0;font-size:13px;overflow-wrap:anywhere}
.ctr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;margin:14px 0 6px}
.ctr-grid div{border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;background:var(--surface-2);min-width:0}
.ctr-grid dd{margin:4px 0 0;font-family:var(--mono);font-size:15px;color:var(--ink);overflow-wrap:anywhere}
.ctr-checks,.ctr-deploy{list-style:none;padding:0;margin:10px 0;display:grid;gap:6px;font-size:13px;color:var(--muted)}
.ctr-ok{color:var(--green-ink)}.ctr-bad{color:var(--red-ink);font-weight:600}.ctr-now{color:var(--accent-ink);font-weight:600}
.ctr-register{margin-top:14px}.ctr-register>summary{font-size:13px}
.ctr-status-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}
.ctr-status-head .pill{white-space:normal;font-size:12px}
.ctr-section>h3{margin:22px 0 8px}
.ctr-owner{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-top:12px}
.ctr-owner-card{border:1px solid var(--line);border-radius:var(--radius);padding:14px;min-width:0}
.ctr-owner-card h3{margin:0;font-size:14px}
.ctr-owner-card .help{margin:6px 0 0}
.ctr-events{list-style:none;padding:0;margin:8px 0 0}
.ctr-events li{padding:10px 0;border-bottom:1px solid var(--line);font-size:13px;overflow-wrap:anywhere}
.ctr-events li:last-child{border-bottom:0}
.ctr-events time{color:var(--muted);font-size:12px;margin:0 6px}
.ctr-events code{color:var(--faint);font-size:11px}
@media(max-width:680px){.ctr-section.padded,.ctr-wallet.padded{padding:16px}.ctr-step{grid-template-columns:28px minmax(0,1fr);gap:10px;padding:12px}.ctr-num{width:28px;height:28px}.ctr-owner{grid-template-columns:1fr}}
.brand-logo .logo-dark{display:none}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .brand-logo .logo-light{display:none}:root:not([data-theme="light"]) .brand-logo .logo-dark{display:block}}
:root[data-theme="dark"] .brand-logo .logo-light{display:none}
:root[data-theme="dark"] .brand-logo .logo-dark{display:block}

/* Asistente guiado «Conecta y copia» (UI-13, UI-13b #159): un paso por pantalla con progreso y navegación fija */
.guide-cta{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:0 0 18px;padding:18px 22px;border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));border-radius:var(--radius-lg);background:var(--card-glow),var(--accent-soft)}
.guide-cta .eyebrow{color:var(--accent-ink)}
.guide-cta h2{font-size:18px;margin:0 0 4px}.guide-cta p:not(.eyebrow){margin:0;font-size:13px;color:var(--ink-2)}.guide-cta .primary{flex:none}
.heading-actions{display:flex;flex-wrap:wrap;gap:10px}
#guide-dialog{width:640px;padding:0;height:min(780px,calc(100dvh - 40px));max-height:calc(100dvh - 40px)}
#guide-dialog[open]{display:flex;flex-direction:column}
.guide-top{padding:20px 28px 4px;border-bottom:1px solid var(--line)}
.guide-body{padding:6px 28px 24px;overflow:auto;flex:1}
.guide-nav{display:flex;justify-content:space-between;gap:12px;padding:14px 28px;border-top:1px solid var(--line);background:var(--surface)}
.guide-nav .primary{min-width:160px}
#guide-dialog h2{font-size:24px;margin:16px 0 0}#guide-dialog h2:focus{outline:none}
.guide-lead{color:var(--ink-2);font-size:15px;margin:6px 0 0}
.guide-progress{list-style:none;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;padding:0;margin:12px 0}
.guide-progress li{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;font-size:11px;font-weight:600;color:var(--faint);text-align:center}
.guide-progress span{position:relative;z-index:1;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line-strong);background:var(--surface);color:var(--muted);font-family:var(--mono);font-size:12px}
.guide-progress li+li::before{content:"";position:absolute;top:12px;left:calc(-50% + 12px);right:calc(50% + 16px);height:2px;background:var(--line)}
.guide-progress li.done,.guide-progress li.current{color:var(--ink)}
.guide-progress li.done span{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.guide-progress li.current span{border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}
.guide-progress li.done::before,.guide-progress li.current::before{background:var(--accent)}
.guide-venue.selected{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 30%,transparent)}
.guide-checklist{list-style:none;padding:0;margin:16px 0 0;display:grid;gap:10px}
.guide-check{display:flex;gap:12px;align-items:flex-start;margin:0;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);color:var(--ink);font-size:14px;cursor:pointer}
.guide-check input{width:20px;height:20px;min-height:0;margin:1px 0 0;flex:none;accent-color:var(--green)}
.guide-check:has(input:checked){border-color:color-mix(in srgb,var(--green) 45%,var(--line));background:var(--green-soft)}
.guide-check:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}
.guide-check b{display:block;font-weight:600}
.guide-check a{display:inline-block;margin-top:6px;color:var(--accent);font-weight:600;font-size:13px}
.guide-perms{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.guide-perms em{font-style:normal;font-size:12px;font-weight:600;padding:3px 9px;border-radius:999px;background:var(--green-soft);color:var(--green-ink)}
.guide-check.danger .guide-perms em{background:var(--red-soft);color:var(--red-ink)}
.guide-ip{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px}
.guide-ip code{font-weight:600;padding:6px 10px;border-radius:8px;background:var(--surface);border:1px solid var(--line);user-select:all;overflow-wrap:anywhere}
.guide-ip .secondary{min-height:34px;padding:6px 12px;font-size:12px}
.guide-safe{font-size:13px;color:var(--muted);margin:14px 0 0}
.guide-edit{margin:14px 0 0;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--surface-2);font-size:13px;color:var(--ink-2)} /* #497: cómo editar una key ya creada */
.guide-result{margin-top:16px;padding:14px 16px;border-radius:12px;border:1px solid var(--line);background:var(--surface-2);font-size:14px;color:var(--ink-2)}
.guide-result strong{display:block;font-size:15px;color:var(--ink)}
.guide-result p{margin:8px 0 0}
.guide-result ul{list-style:none;padding:0;margin:8px 0 0;line-height:1.8}
.guide-result ol{margin:6px 0 0;padding-left:20px;line-height:1.7}
.guide-result.ok{border-color:color-mix(in srgb,var(--green) 45%,var(--line));background:var(--green-soft);color:var(--green-ink)}
.guide-result.ok strong{color:var(--green-ink)}
.guide-result.error{border-color:color-mix(in srgb,var(--red) 40%,var(--line));background:var(--red-soft);color:var(--red-ink)}
.guide-result.error strong{color:var(--red-ink)}.guide-result.error p{font-weight:600}
.guide-result .text-button{margin-top:8px;color:var(--red-ink)}
.guide-options{display:grid;gap:10px;margin:14px 0 0}
.guide-body .dash-title{margin:22px 0 0}
.guide-preview{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin:18px auto 0;max-width:440px;padding:14px 16px;border:1px solid var(--line);border-left:4px solid var(--cyan);border-radius:12px;background:var(--surface-2);text-align:left}
.guide-preview strong{display:block;font-size:16px}.guide-preview small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.guide-field-error{color:var(--red-ink);font-size:13px;margin:8px 0 0}
.guide-example{font-size:13px;color:var(--ink-2);background:var(--surface-2);border-radius:10px;padding:10px 12px;margin:12px 0 0}
.guide-done{text-align:center;padding:24px 0 8px}
.guide-done-icon{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;margin:0 auto;background:var(--green-soft);color:var(--green-ink);font-size:32px;font-weight:700}
@media(max-width:680px){
  .guide-cta{flex-direction:column;align-items:stretch}
  #guide-dialog{width:100%;max-width:100%;height:100dvh;max-height:100dvh;margin:0;border:0;border-radius:0}
  .guide-top{padding:12px 16px 2px}.guide-body{padding:4px 16px 20px}.guide-nav{padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px))}
  .guide-nav button{flex:1}.guide-nav .primary{min-width:0}
  #guide-dialog h2{font-size:21px}
  .guide-progress li{font-size:10px}
}
.guide-test{margin-top:14px;padding:14px 16px;border:1px dashed var(--line-strong);border-radius:12px}
.guide-test p{margin:0 0 10px;font-size:14px;color:var(--ink-2)}
.guide-wait{max-width:460px;margin:16px auto 0;font-size:14px;color:var(--ink-2)}
.guide-estimate{max-width:460px;margin:10px auto 0;font-size:13px;color:var(--muted)}
.guide-body .strategy-sheet{margin-top:14px}
.history-more{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:14px 20px}
.history-more .help{margin:0}
/* MOB-01 (#404): la cabecera del celular nunca se sale por la izquierda. Solo se ve la red en el chip del entorno y, si
   aun así no cabe (Admin añade el modo de ejecución), los botones pasan a una segunda línea.
   El menú inferior: cada sección mide al menos su palabra más larga («Kennzahlen», «TradingView»); si no caben todas
   (Admin tiene hasta siete), el menú se desplaza de lado en vez de montar unas etiquetas sobre otras. */
@media(max-width:680px){
  header{height:auto;min-height:52px;padding-block:6px;overflow-x:clip} /* WebKit cuenta el hueco tras la línea partida como ancho de la página */
  .connection{flex-wrap:wrap;row-gap:6px}.connection>*{flex:none}.connection>.env-chip{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
  nav{grid-auto-columns:minmax(min-content,1fr);overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none}
  nav::-webkit-scrollbar{display:none}
  nav button{padding-inline:4px}
}
@media(max-width:520px){.env-more{display:none}}
/* MOB-01: en el pie de Copiar estrategia el botón principal tiene más ancho que «Atrás» y, si aun así no cabe
   («Mit der Strategie verbinden» a 375 px), parte el texto en dos líneas en vez de salirse. */
@media(max-width:480px){.copy-actions .primary{flex:1.6;white-space:normal;text-align:center;line-height:1.25}}
/* MOB-01: con el teclado del móvil abierto (boot.js) los diálogos, también las hojas de abajo, caben en la parte visible
   de la pantalla en vez de quedar debajo del teclado. !important: las hojas fijan su alto máximo con su id. */
.kb-open dialog[open]{top:var(--vvtop)!important;bottom:var(--kb)!important;max-height:calc(var(--vvh) - 12px)!important}
.kb-open #guide-dialog[open]{height:var(--vvh);max-height:var(--vvh)!important}
/* Historial real (TRACK-01): gráfico SVG y tabla de trades. */
.track-dialog{width:1040px}
.track-chart{width:100%;height:auto;display:block;margin:12px 0}
.track-chart .line{fill:none;stroke:var(--accent);stroke-width:1.6}
.track-chart .grid{stroke:var(--line);stroke-width:.6}
.track-chart text{font-size:10px;fill:var(--muted)}
.track-chart .mark.in{fill:var(--green)}
.track-chart .mark.out{fill:var(--red)}
.track-chart .mark.open{fill:var(--amber)}
.track-table{width:100%;border-collapse:collapse;font-size:13px}
.track-table th,.track-table td{padding:7px 6px;border-top:1px solid var(--line);text-align:left}
.track-table th{color:var(--muted);font-weight:500}
.track-pos{color:var(--green-ink)}
.track-neg{color:var(--red-ink)}
.track-chart .live-line{stroke:var(--violet);stroke-width:1.2;stroke-dasharray:4 3}
.track-chart .live-label{fill:var(--violet);font-weight:600}
.track-chart .mark.imp{fill:none;stroke-width:1.2}
.track-chart .mark.in.imp{stroke:var(--green)}
.track-chart .mark.out.imp{stroke:var(--red)}
.track-dates{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin:8px 0}
.track-dates label{flex:1;min-width:130px}
.track-imported{margin-top:12px}
/* Visor unificado (TRACK-01): métricas en vivo e importadas, y gráfico de velas de 4 h. */
.track-section{border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin:12px 0}
.track-section.live{border-color:color-mix(in srgb,var(--violet) 35%,var(--line))}
.track-section .dash-title{display:flex;align-items:center;gap:8px;margin:0 0 4px}
.track-section .help{margin:0 0 10px}
.track-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.track-tiles .dash-tile strong.positive{color:var(--green-ink)}
.track-tiles .dash-tile strong.negative{color:var(--red-ink)}
.track-dot{display:inline-block;width:10px;height:10px;border-radius:50%;flex:none}
.track-dot.live{background:var(--violet)}
.track-dot.imported{background:transparent;border:2px solid var(--green)}
.track-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:10px;margin:16px 0 10px}
.track-presets{display:flex;gap:8px;flex-wrap:wrap}
.track-toolbar .track-dates{margin:0}
.track-chart-box{height:440px;border:1px solid var(--line);border-radius:12px;overflow:hidden;position:relative}
.track-chart-box .help{padding:16px}
.track-legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12px;color:var(--muted);margin:8px 0 14px}
.track-legend span{display:inline-flex;align-items:center;gap:6px}
@media (max-width:640px){.track-chart-box{height:320px}.track-toolbar{flex-direction:column;align-items:stretch}}
/* Ventana de rendimiento de la tarjeta (TRACK-01): en vivo y backtest simulado, cada uno con su curva en miniatura. */
.strategy-track{margin:0 0 6px;container-type:inline-size}
.strategy-track>.dash-title{margin:0 0 8px}
.track-mini-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;margin:0 0 10px}
/* Lado a lado solo si la tarjeta es ancha: en una tarjeta normal las cifras grandes («+17.332 %») no cabrían. */
@container (min-width:640px){.track-mini-grid:not(.single){grid-template-columns:repeat(2,minmax(0,1fr))}}
.track-mini{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--surface-2);min-width:0}
.track-mini.live{border-color:color-mix(in srgb,var(--violet) 35%,var(--line))}
.track-mini-title{display:flex;align-items:center;gap:8px;margin:0 0 8px;font-size:11px;font-weight:600;letter-spacing:.6px;text-transform:uppercase;color:var(--muted)}
.track-spark,.track-spark-empty{display:block;width:100%;height:48px;margin:0 0 8px}
.track-spark-empty{border-bottom:1px dashed var(--line)}
.track-spark polyline{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.track-spark.live polyline{stroke:var(--violet)}.track-spark.imported polyline{stroke:var(--green)}
.track-spark-area{stroke:none;opacity:.12}
.track-spark.live .track-spark-area{fill:var(--violet)}.track-spark.imported .track-spark-area{fill:var(--green)}
.track-spark-zero{stroke:var(--line);stroke-width:1;stroke-dasharray:3 3}
.track-mini dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:0 0 6px}
.track-mini dt{font-size:10px;letter-spacing:.5px;text-transform:uppercase;color:var(--faint)}
.track-mini dd{margin:2px 0 0;font-family:var(--mono);font-size:15px;font-weight:700;white-space:nowrap}
.track-mini dd.positive{color:var(--green-ink)}.track-mini dd.negative{color:var(--red-ink)}
.track-mini small{display:block;font-size:11px;color:var(--faint)}
.strategy-track .perf-note a{color:inherit}
.strategy-track-actions{display:flex;justify-content:flex-end;margin:0 0 6px}
.strategy-track-actions .perf-link{width:100%}

/* Laboratorio privado de bots: editor de señales y resultados de simulación. */
#bots-root textarea{display:block;width:100%;box-sizing:border-box;resize:vertical;min-height:240px;margin-top:8px;padding:12px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface-2);color:var(--ink);font:12px/1.6 var(--mono)}
#bots-root textarea:focus{outline:2px solid color-mix(in srgb,var(--accent) 55%,transparent);outline-offset:1px}
#bots-root [data-bot-template]{align-self:end;min-height:44px}
#bots-root [data-bot-detail]{margin-top:24px}
#bots-root pre{max-height:360px;overflow:auto}
#bots-root .copy-actions{margin-top:20px}

/* Contract setup: one decision or signature at a time, same live controller. */
.ctr-setup{max-width:820px;margin:0 auto 24px;padding:28px!important}
.ctr-setup h2{font-size:26px;letter-spacing:-.6px;margin:8px 0 18px}
.ctr-setup>p{line-height:1.65;max-width:68ch}
.ctr-setup label{display:block;margin:18px 0 8px;font-weight:600}
.ctr-setup input,.ctr-setup select{display:block;box-sizing:border-box;width:100%;min-height:46px;margin-top:8px}
.ctr-setup .ctr-actions{margin-top:24px;gap:12px}
.ctr-setup .ctr-actions button{min-height:46px;padding:12px 20px}
.ctr-setup .ctr-wallet{box-shadow:none;margin:12px 0;background:var(--surface-2)}
.ctr-progress{display:flex;list-style:none;gap:8px;padding:0;margin:0 0 28px;border-bottom:1px solid var(--line);padding-bottom:20px}
.ctr-progress li{flex:1;min-width:0;color:var(--muted);font-size:11px;line-height:1.4}
.ctr-progress span{display:block;line-height:26px;width:26px;text-align:center;border:1px solid var(--line);border-radius:50%;margin-bottom:8px}
.ctr-progress [aria-current=step]{color:var(--ink);font-weight:700}
.ctr-progress [aria-current=step] span{background:var(--accent);color:var(--surface);border-color:var(--accent)}
.ctr-progress .done span{color:var(--green-ink);background:var(--green-soft)}
.ctr-setup-summary{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:20px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius)}
.ctr-setup-summary dt{font-size:12px;color:var(--muted);margin-bottom:6px}.ctr-setup-summary dd{margin:0;font-weight:600;overflow-wrap:anywhere}
.ctr-details>summary{cursor:pointer;font-weight:600}.ctr-details[open]>summary{margin-bottom:20px}
.ctr-manual-guide{margin:20px 0;padding:18px 20px;border:1px solid var(--red);border-left-width:4px;border-radius:12px;background:var(--red-soft);color:var(--ink)}
.ctr-chart-warning{color:var(--red-ink);font-weight:600}.ctr-performance .track-chart-box{margin-top:16px}.ctr-performance .dash-tile strong{overflow-wrap:anywhere}
.ctr-performance-card{display:flex;align-items:center;gap:20px;margin:18px 0;padding:24px;border:1px solid color-mix(in srgb,var(--accent) 45%,var(--line));border-radius:var(--radius-lg);background:var(--card-glow),var(--accent-soft)}
.ctr-performance-icon{display:grid;place-items:center;flex:none;width:56px;height:56px;border-radius:14px;background:var(--surface);color:var(--accent-ink)}
.ctr-performance-icon svg{width:36px;height:36px}
.ctr-performance-copy{flex:1;min-width:0}.ctr-performance-copy h2{margin:0 0 8px;font-size:22px}.ctr-performance-copy p{margin:0;color:var(--ink-2);line-height:1.5}
.ctr-performance-card>.primary{min-height:48px;padding:14px 20px;flex:none;font-size:15px}
.ctr-performance{width:1200px;max-height:calc(100dvh - 32px);overflow:auto}
.ctr-performance .dialog-heading{flex-wrap:wrap;align-items:flex-start}.ctr-performance .dialog-heading small{overflow-wrap:anywhere}
.ctr-chart-tools{display:flex;align-items:center;gap:12px}.ctr-chart-tools button{min-height:44px}
.ctr-performance .track-chart-box{height:480px}
.ctr-performance.is-expanded{width:calc(100vw - 32px);max-width:calc(100vw - 32px);height:calc(100dvh - 32px)}
.ctr-performance.is-expanded .track-chart-box{height:max(480px,65dvh)}
/* Visor del contrato al nivel del de estrategias (propietario, 2026-10-02): rangos, leyenda de marcas y líneas, campañas. */
.ctr-chart-toolbar{align-items:center}.ctr-chart-toolbar .ctr-actions{margin-top:0;align-items:center}
.ctr-chart-toolbar .track-presets button{min-height:40px}
.ctr-ranges{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px}
.ctr-detail{align-items:center}.ctr-detail span{font-size:12px;color:var(--muted)}.ctr-chart-toolbar .ctr-detail button{min-height:32px;padding:4px 10px;font-size:13px}
.ctr-chart-toolbar .track-presets button[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink);font-weight:600}
.ctr-performance .track-section .dash-title{margin-bottom:10px}
.ctr-legend i{display:inline-block;flex:none}
.ctr-mk{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:9px solid var(--cyan)}
.ctr-mk.dca{border-bottom-color:var(--violet)}
.ctr-mk.partial{border-bottom:0;border-top:9px solid var(--amber)}
.ctr-mk.close{width:10px;height:10px;border:0;border-radius:50%;background:var(--green)}
.ctr-line{width:18px;height:0;border-top:2px dashed var(--red)}.ctr-line.entry{border-top:2px dotted var(--cyan)}
.ctr-legend [data-ctr-chart-source]{flex-basis:100%}
.ctr-campaigns td{white-space:nowrap}.ctr-campaigns td:nth-child(2) small{white-space:normal;min-width:200px}
.ctr-performance .ctr-totals .table-wrap{margin-top:4px}.ctr-performance .track-section+.dash-title,.ctr-performance .table-wrap+.dash-title{margin-top:18px}
@media (max-width:640px){.ctr-chart-toolbar{align-items:stretch}.ctr-chart-toolbar .track-presets button{flex:1 1 auto}.ctr-detail span{flex-basis:100%}
  .ctr-performance .track-section{padding:12px}.ctr-performance .track-tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .ctr-performance .track-tiles .dash-tile{padding:10px 12px}.ctr-performance .track-tiles .dash-tile strong{font-size:15px}}
@media (max-width:760px){.ctr-performance-card{flex-wrap:wrap;gap:14px;padding:20px}.ctr-performance-card>.primary{width:100%}.ctr-performance-copy h2{font-size:20px}}
@media (max-width:640px){.ctr-performance{padding:18px;max-width:calc(100% - 16px)}.ctr-performance .track-chart-box{height:360px}.ctr-performance.is-expanded .track-chart-box{height:max(360px,65dvh)}.ctr-performance.is-expanded{width:100%;max-width:100%;height:100dvh;max-height:100dvh;margin:0;border-radius:0}.ctr-chart-tools{gap:8px}.ctr-performance-icon{width:44px;height:44px}.ctr-performance-copy{flex-basis:calc(100% - 60px)}}
.ctr-manual-guide>strong,.ctr-manual-guide a{color:var(--red-ink);font-weight:700}.ctr-manual-guide a{text-decoration:underline;text-underline-offset:3px}.ctr-manual-guide ol{padding-left:22px;line-height:1.65}.ctr-manual-guide li+li{margin-top:10px}.ctr-manual-guide p{line-height:1.6;margin-bottom:0}
@media(max-width:600px){.ctr-setup{padding:18px!important}.ctr-progress{gap:5px}.ctr-progress li{font-size:10px}.ctr-setup h2{font-size:23px}.ctr-setup-summary{grid-template-columns:1fr}.ctr-setup .ctr-actions{flex-wrap:wrap}.ctr-setup .ctr-actions .primary{width:100%}}
/* MU-J (#634): recorrido de bienvenida del primer acceso de un usuario. */
.welcome-tour{width:520px}.welcome-tour h2{margin:4px 0 10px}.welcome-tour p{margin:0 0 12px;color:var(--ink-2)}
.welcome-tour-list{margin:0 0 12px;padding-left:18px;color:var(--ink-2)}.welcome-tour-list li{margin:6px 0}
.welcome-tour-dots{display:flex;gap:6px;margin:6px 0 16px}.welcome-tour-dots span{width:8px;height:8px;border-radius:50%;background:var(--line-strong)}.welcome-tour-dots span.on{background:var(--accent)}
.welcome-tour-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.welcome-tour-actions>span{flex:1}

/* Avisos al usuario (MU-J, #635): la campana de la cabecera y su lista. En el celular, la lista sube desde abajo. */
.notices-toggle{position:relative}
.notices-count{min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--red);color:#fff;font-size:11px;font-weight:700;line-height:18px;text-align:center}
.notices-panel{position:fixed;top:64px;right:16px;z-index:60;width:min(420px,calc(100vw - 32px));max-height:min(70vh,640px);overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:12px 14px}
.notices-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.notices-head strong{flex:1;font-size:15px}
.notices-panel .secondary{min-height:34px;padding:6px 12px;font-size:12px}
.notices-close{border:0;background:none;color:var(--ink-2);font-size:16px;min-width:34px;min-height:34px;cursor:pointer;border-radius:999px}
.notices-close:hover{background:var(--surface-2);color:var(--ink)}
.un-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.un-item{border:1px solid var(--line);border-left:3px solid var(--line-strong);border-radius:10px;padding:8px 10px}
.un-item.unread{background:var(--surface-2)}
.un-item.good{border-left-color:var(--green)}.un-item.warn{border-left-color:var(--amber)}.un-item.bad{border-left-color:var(--red)}.un-item.info{border-left-color:var(--cyan)}
.un-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.un-head time{margin-left:auto;color:var(--muted);font-size:12px}
.un-item p{margin:4px 0 0;font-size:13px;line-height:1.45;color:var(--ink-2)}
.notices-more{margin-top:10px;width:100%}
@media (max-width:680px){.notices-panel{top:auto;bottom:0;right:0;left:0;width:100%;max-height:80vh;border-radius:18px 18px 0 0;padding:14px 16px 20px}}
.un-item.unread .un-head strong::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--accent);margin-right:6px;vertical-align:middle}
/* Límite de pérdida diaria (#107): tarjeta de Admin. */
.daily-loss-form{margin:6px 0 16px}.daily-loss-form input{max-width:180px}.daily-loss-trips{margin:6px 0 0;padding-left:18px;font-size:13px;color:var(--ink-2)}.daily-loss-trips li{margin:4px 0}

/* Recorrido de usuario (2026-10-02): la campana como los demás iconos (monocroma) y su número encima, sin ensanchar el botón;
   en el celular, los exchanges del selector en dos columnas para no recorrer seis tarjetas a pantalla completa. */
.notices-toggle .bell-icon{display:block}
.notices-toggle .notices-count{position:absolute;top:-6px;right:-6px;min-width:17px;height:17px;line-height:17px;font-size:10px;padding:0 4px}
@media (max-width:480px){.venue-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.venue-tile{padding:12px 8px;gap:6px}.venue-tile strong{font-size:14px}.venue-tile small{font-size:11px;text-align:center}}

/* NOTIF-02 (#711): preferencias de avisos (tipo × canal) dentro del panel de la campana. */
.un-prefs{width:100%;border-collapse:collapse;font-size:13px;margin:6px 0 10px}
.un-prefs th,.un-prefs td{padding:8px 6px;border-bottom:1px solid var(--line);text-align:center}
.un-prefs th[scope="row"]{text-align:left;font-weight:500;color:var(--ink)}
.un-prefs thead th,.un-prefs tr:first-child th[scope="col"]{font-size:12px;color:var(--muted);font-weight:600}
.un-prefs input[type="checkbox"]{width:18px;height:18px;accent-color:var(--accent)}
.un-telegram{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}
.un-telegram span{flex:1;min-width:160px;font-size:13px;color:var(--ink-2)}
.un-telegram .secondary{min-height:36px;padding:6px 12px;font-size:12px}
.un-prefs{table-layout:fixed;white-space:normal}
.un-prefs th,.un-prefs td{background:none;padding:9px 4px;letter-spacing:0;text-transform:none;border-block:0;border-bottom:1px solid var(--line)}
.un-prefs th[scope="row"]{width:52%;font-size:13px;font-weight:500;color:var(--ink);line-height:1.35}
.un-prefs th[scope="col"]{font-size:11px;font-weight:600;color:var(--muted);text-align:center}
.un-prefs tr:first-child th:first-child{width:52%}
.un-prefs tr:last-child th,.un-prefs tr:last-child td{border-bottom:0}

/* UX-09 (#717): Ajustes. Tarjetas en dos columnas en escritorio y una en el celular; atajos arriba para ir a cada parte. */
.settings-page{columns:2 360px;column-gap:22px}
.settings-card{break-inside:avoid}
.settings-jump{column-span:all;display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px}
.settings-jump .secondary{min-height:34px;padding:6px 12px;font-size:13px}
.settings-card h2{font-size:18px;margin:0 0 12px}
.settings-card h3{font-size:15px;margin:0 0 8px}
.settings-block+.settings-block,#ajustes-seguridad [data-settings-2fa]+.settings-block{border-top:1px solid var(--line);margin-top:16px;padding-top:16px}
.settings-facts{display:grid;gap:8px;margin:0 0 12px}
.settings-facts div{display:grid;grid-template-columns:minmax(110px,34%) minmax(0,1fr);gap:10px;font-size:14px}
.settings-facts dt{color:var(--muted)}
.settings-facts dd{margin:0;color:var(--ink);overflow-wrap:anywhere}
.settings-sessions,.settings-keys{list-style:none;margin:0 0 10px;padding:0;display:grid;gap:8px}
.settings-sessions li,.settings-keys li{display:grid;gap:2px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font-size:13px}
.settings-sessions li.current{border-color:var(--accent)}
.settings-sessions span,.settings-keys span{color:var(--muted)}
.settings-theme{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0 6px}
.settings-theme>span{font-size:13px;color:var(--muted);margin-right:4px}
.settings-theme .secondary{min-height:34px;padding:6px 14px;font-size:13px}
.settings-theme .secondary[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink);font-weight:600}
.settings-links{display:flex;flex-wrap:wrap;gap:8px}
.settings-name{display:flex;align-items:flex-end;gap:10px;margin:4px 0 0}
.settings-name label{flex:1;min-width:0;margin:0}
.settings-name .secondary{min-height:44px}
#ajustes-seguridad .settings-block .panel{box-shadow:none}
@media (max-width:480px){.settings-jump{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;margin-bottom:14px}.settings-jump .secondary{flex:0 0 auto}.settings-card.padded{padding:18px}}

/* Marca con logotipo dibujado (brand.json «wordmark», marca Firmamento): en escritorio el logotipo horizontal en lugar del
   símbolo y el nombre escrito; en el celular, solo el símbolo en su recuadro. Nunca por debajo de 200 px de ancho. */
.brand-wordmark{display:block;width:100%;max-width:245px;min-width:200px;height:auto;border-radius:0}
.brand-wordmark img{width:100%;height:auto;display:block}
.brand.has-wordmark{padding:0}
.brand.has-wordmark .brand-icon{display:none}
@media(max-width:680px){.brand.has-wordmark .brand-icon{display:grid}.brand.has-wordmark .brand-wordmark{display:none}}
