@import url('./client-metrics.css');
/* 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).
   En pantallas bajas el menú de Admin no cabe: la barra se desplaza en vertical y el pie (modo) queda al final. */
.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;overflow-y:auto;scrollbar-width:thin;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}
/* #877: «Cuentas» y «Más» solo existen en el menú inferior del celular. */
nav .nav-mobile,.nav-more-menu{display:none}
.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}
#admin-authorization-dialog{width:560px;max-height:calc(100dvh - 32px);overflow:auto}
#admin-authorization-dialog .copy-actions{flex-wrap:wrap;position:static;justify-content:stretch;background:transparent;padding:0}
#admin-authorization-dialog .copy-actions button{flex:1 1 150px;min-width:0;min-height:44px;white-space:normal;overflow-wrap:anywhere}
.admin-authorization-details{display:grid;grid-template-columns:minmax(100px,1fr) minmax(0,2fr);gap:10px;padding:16px;background:var(--surface-2);border:1px solid var(--line-strong);border-radius:12px}
.admin-authorization-details dd{margin:0;overflow-wrap:anywhere}
#admin-authorization-dialog [data-admin-qr] svg{display:block;max-width:100%;height:auto}
#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}
/* Catálogo por grupos (propietario, 2026-10-14): grupos plegables con su número, filas compactas (par, temporalidad,
   exchanges y estado), buscador y «Expandir todo» / «Contraer todo». «Ver ficha» despliega la tarjeta de siempre. */
/* Estrategias conectadas por estado (propietario, 2026-10-14): En operación · Esperando próxima entrada · Inactivas */
.copy-group{margin:0 0 14px}
.copy-group>summary{display:flex;align-items:center;gap:10px;padding:6px 2px;cursor:pointer;list-style:none;font-weight:700;font-size:16px}
.copy-group>summary::-webkit-details-marker{display:none}
.copy-group>summary::before{content:'';width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(-45deg);transition:transform .15s;margin-right:4px}
.copy-group[open]>summary::before{transform:rotate(45deg)}
.copy-group[open]>summary{margin-bottom:10px}
.copy-group>summary:hover .copy-group-title{color:var(--accent)}
.strategy-catalog.grouped{display:block}
.catalog-tools{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 16px}
.catalog-search{flex:1 1 300px;margin:0}
.catalog-search input{margin-top:0}
.catalog-empty{margin:0 0 16px}
.catalog-group{margin:0 0 14px}
.catalog-group>summary{display:flex;align-items:center;gap:10px;padding:15px 20px;cursor:pointer;list-style:none;font-weight:700;font-size:17px}
.catalog-group>summary::-webkit-details-marker{display:none}
.catalog-group>summary::before{content:'';width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(-45deg);transition:transform .15s;margin-right:4px}
.catalog-group[open]>summary::before{transform:rotate(45deg)}
.catalog-group[open]>summary{border-bottom:1px solid var(--line)}
.catalog-group>summary:hover .catalog-group-title{color:var(--accent)}
.catalog-count{font-family:var(--mono)}
.catalog-row{padding:14px 20px}
.catalog-row+.catalog-row{border-top:1px solid var(--line)}
.catalog-row-main{display:grid;grid-template-columns:auto minmax(170px,1.1fr) minmax(0,2fr) auto auto;align-items:center;gap:14px}
.catalog-row .catalog-icon{width:38px;height:38px;font-size:18px;border-radius:11px}
.catalog-row-name h3{margin:0;font-size:16px}
.catalog-row-meta{margin:3px 0 0;display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12.5px;color:var(--muted);font-family:var(--mono)}
.catalog-row-meta .pending{font-family:inherit;color:var(--amber-ink)}
.catalog-row-venues{display:flex;flex-wrap:wrap;gap:6px}
.venue-badge{display:inline-block;padding:3px 10px;border-radius:999px;border:1px solid var(--line-strong);background:var(--surface-2);color:var(--ink-2);font-size:12px;font-weight:600;white-space:nowrap}
.venue-badge.experimental{border-style:dashed}
.venue-badge.soon{background:transparent;color:var(--muted);border-style:dashed;font-weight:500}
.catalog-row-main .primary{min-height:40px;padding-inline:16px}
.catalog-sheet{margin:8px 0 0 52px}
.catalog-sheet>summary{cursor:pointer;display:flex;align-items:baseline;gap:12px;padding:4px 0;font-size:13px;font-weight:600;color:var(--ink-2)}
.catalog-sheet>summary small{color:var(--muted);font-weight:500}
.catalog-sheet .catalog-description{min-height:0;margin:10px 0 14px;color:var(--ink-2)}
.catalog-upcoming:empty{display:none}
.catalog-upcoming{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
@media(max-width:900px){.catalog-row-main{grid-template-columns:auto minmax(0,1fr) auto}.catalog-row-venues{grid-column:2/-1;grid-row:2}.catalog-row-main .primary{grid-column:1/-1;width:100%}.catalog-sheet{margin-left:0}.catalog-upcoming{grid-template-columns:1fr}}

/* 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-progress{border-top:1px solid var(--line);padding-top:12px;margin-top:12px;font-size:12px;min-width:0}
.copy-progress-heading{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;margin-bottom:10px}
.copy-progress time{color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}
.copy-progress-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;list-style:none;padding:0;margin:0}
.copy-progress-steps li{display:flex;flex-direction:column;gap:4px;border-top:3px solid var(--line-strong);padding:8px;background:var(--surface-3);border-radius:6px;overflow-wrap:anywhere;color:var(--muted)}
.copy-progress-steps .j-ok{border-color:var(--green);color:var(--green-ink)}
.copy-progress-steps .j-fail{border-color:var(--red);color:var(--red-ink)}
.copy-progress-steps .j-skip{border-color:var(--ink-2);color:var(--ink-2)}
.copy-progress-steps .j-warn{border-color:var(--amber);color:var(--amber-ink)}
.copy-progress-ok{color:var(--green-ink)}.copy-progress-fail{color:var(--red-ink)}.copy-progress-warn{color:var(--amber-ink)}.copy-progress-wait{color:var(--muted)}
.copy-progress-reason{display:block;margin-top:8px;overflow-wrap:anywhere}
.copy-progress details{margin-top:10px}.copy-progress summary{cursor:pointer;color:var(--muted)}
.copy-progress-history{list-style:none;padding:0;margin:8px 0 0;display:grid;gap:8px}
.copy-progress-history li{display:flex;flex-wrap:wrap;align-items:baseline;gap:5px 12px}.copy-progress-history .copy-progress-reason{flex-basis:100%;margin:0}
@media(max-width:600px){.copy-progress-steps{grid-template-columns:repeat(2,minmax(0,1fr))}}
.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);overflow:visible}
  .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;touch-action:manipulation}
  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}
  /* #877: cuatro entradas fijas (Estrategias, Portafolio, Actividad, Cuentas) y «Más» con las demás (nav-more.js). Nada se
     desplaza de lado. nav-more-probe: nav-more.js comprueba si una sección se vería sin esta regla. */
  nav>button:not([data-mobile="main"]):not(.nav-more):not(.nav-more-probe){display:none}
  nav>.nav-mobile{display:flex}
  nav>[data-page="overview"]{order:1}nav>[data-page="portfolio"]{order:2}nav>[data-page="activity"]{order:3}nav>.nav-mobile[data-page="exchanges"]{order:4}nav>.nav-more{order:5}
  /* Por encima de la burbuja del soporte (z-index 25) y del toast (20), por debajo de los diálogos modales. */
  .nav-more-menu:not([hidden]){position:fixed;right:8px;bottom:calc(76px + env(safe-area-inset-bottom,0px));z-index:27;display:grid;gap:2px;min-width:210px;max-width:calc(100vw - 16px);max-height:calc(100dvh - 160px);overflow-y:auto;padding:6px;background:var(--surface);border:1px solid var(--line-strong);border-radius:14px;box-shadow:0 12px 32px rgba(0,0,0,.28)}
  .nav-more-menu button{display:flex;align-items:center;gap:12px;min-height:44px;padding:8px 12px;border:0;border-radius:10px;background:transparent;color:var(--ink);font-size:15px;font-weight:500;text-align:left}
  .nav-more-menu button:hover,.nav-more-menu button:focus-visible{background:var(--surface-2)}
  .nav-more-menu button.active{color:var(--nav-active-ink);background:var(--nav-active)}
  .nav-more-menu button>span:first-child{width:28px;display:grid;place-items:center;font-size:16px;flex:none}
  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(4,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-skip{background:var(--surface-3);color:var(--ink-2)}.journey .j-skip i{background:var(--ink-2)}
.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;grid-template-columns:minmax(0,1fr);gap:10px}
.admin-category-filters{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 12px}
.admin-category-filters button{display:inline-flex;align-items:center;gap:10px;border-radius:999px}
.admin-category-filters button span{font-size:12px;opacity:.8}
.admin-category-filters button[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--on-accent,#081526)}
.admin-category{min-width:0;margin-bottom:14px}
.admin-category[hidden]{display:none}
.admin-category>h2{display:flex;align-items:center;gap:10px;font-size:17px;margin:0 0 12px}
.admin-category-list{display:grid;gap:10px}
.admin-card{display:block;padding:0;min-width:0}
.admin-card>summary{list-style:none;cursor:pointer;padding:18px 20px;min-height:76px;border-radius:var(--radius)}
.admin-card>summary::-webkit-details-marker{display:none}
.admin-card>summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.admin-card>summary>div:not(.catalog-icon){min-width:0}
.admin-card>summary h2{font-size:18px;overflow-wrap:anywhere}
.admin-card>summary .eyebrow{margin-bottom:4px}
.admin-chevron{width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);flex:none;margin:0 4px 4px 8px}
.admin-card[open]>summary .admin-chevron{transform:rotate(225deg);margin-bottom:-4px}
.admin-card[open]>summary{border-bottom:1px solid var(--line);border-radius:var(--radius) var(--radius) 0 0}
.admin-card-content{padding:4px 20px 20px}
@media(max-width:600px){
  .admin-card>summary{padding:14px;display:grid;grid-template-columns:36px minmax(0,1fr) 12px;gap:10px}
  .admin-card>summary .catalog-icon{width:36px;height:36px;font-size:17px}
  .admin-card>summary h2{font-size:16px}
  .admin-card>summary .pill{grid-column:2;margin-left:0;justify-self:start;font-size:10px}
  .admin-card>summary .admin-chevron{grid-column:3;grid-row:1/3;margin-left:0}
  .admin-card-content{padding:4px 14px 14px}
  .admin-card .admin-value{flex-wrap:wrap}.admin-card .admin-value code{flex-basis:100%}
}
.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}
/* Comisiones por exchange: connections.css (cargada después) pone .conn-row en flex y, con el formulario abierto, estrecha el
   texto de la fila. Aquí vuelve a la rejilla de style.css para que el formulario con su único «Guardar» ocupe toda la fila. */
[data-insights-fees] .conn-row{display:grid;grid-template-columns:minmax(0,1fr);cursor:default;min-height:0}
@media(max-width:600px){
  [data-insights-fees] .conn-main{display:grid;grid-template-columns:minmax(0,1fr);align-items:start}
  [data-insights-fees] .conn-main .pill{white-space:normal;overflow-wrap:anywhere;justify-self:start}
  [data-builder-form] .bybit-actions{flex-wrap:wrap}
}
[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»). Desde #877 son cinco
   (cuatro fijas y «Más») y ya no se desplaza; si una traducción larga no cupiera, se desplazaría 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}

/* Ajustes por temas: se conserva el DOM de los formularios al navegar entre apartados. */
.settings-page{display:grid;grid-template-columns:220px minmax(0,1fr);gap:26px;align-items:start;max-width:1180px}
.settings-content{min-width:0}
.settings-card.padded{margin:0;padding:28px 30px;min-height:430px;border-radius:16px;box-shadow:var(--shadow)}
.settings-card[hidden],.settings-page [data-settings-pane][hidden]{display:none}
.settings-jump{display:grid;gap:8px;margin:0;align-content:start}
.settings-section-button{display:grid;gap:5px;text-align:left;padding:16px 17px;background:transparent;color:var(--ink-2);border:1px solid transparent;border-radius:10px;min-width:0}
.settings-section-button strong{font-size:14px;font-weight:600}
.settings-section-button span{font-size:12px;color:var(--muted);line-height:1.5}
.settings-section-button:hover{background:var(--surface-2)}
.settings-section-button[aria-current="page"]{background:var(--surface);border-color:var(--line);box-shadow:inset 3px 0 var(--accent);color:var(--ink)}
.settings-section-button[data-admin]{margin-top:20px;border-top:1px solid var(--line);border-radius:0 0 10px 10px}
.settings-card h2{font-size:22px;margin:0 0 24px;letter-spacing:-.4px}
.settings-card h3{font-size:15px;margin:0 0 8px}
.settings-tabs{display:flex;flex-wrap:wrap;gap:8px 22px;border-bottom:1px solid var(--line);margin-bottom:24px}
.settings-tabs .text-button{padding:0 0 12px;color:var(--muted);border-bottom:2px solid transparent;border-radius:0;text-decoration:none;font-size:13px}
.settings-tabs .text-button[aria-pressed="true"]{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}
.settings-page [data-settings-pane]{min-width:0}
.settings-page #ajustes-telegram{margin-bottom:24px}
.settings-page .un-prefs{margin-top:18px}
.settings-page .un-prefs th,.settings-page .un-prefs td{padding-top:15px;padding-bottom:15px}
.settings-page .un-prefs tr:hover{background:var(--surface-2)}
.settings-page .un-prefs input{accent-color:var(--accent);width:17px;height:17px}
.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:12px;margin:0 0 24px;padding-bottom:22px;border-bottom:1px solid var(--line)}
.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:6px;padding:16px 18px;background:var(--surface-2);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:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:28px 0 16px}
.settings-theme>span{grid-column:1/-1;font-size:13px;color:var(--muted)}
.settings-theme .secondary{min-height:64px;padding:14px;font-size:14px}
.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}
/* 2FA en el panel (boceto aprobado 22-10): fila de estado, QR con clave manual y códigos de recuperación. */
.two-factor-row{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}
.two-factor-row-text{min-width:0;flex:1}
.two-factor-row-text .help{margin:6px 0 0}
.two-factor-row-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;flex:none}
.two-factor-title{display:flex;align-items:center;flex-wrap:wrap;gap:10px}
.two-factor .two-factor-shared{margin:16px 0 0;font-size:12.5px}
.two-factor-setup{display:grid;grid-template-columns:auto minmax(0,1fr);gap:26px;align-items:start;margin-top:18px}
.two-factor-qr{width:210px;height:210px;padding:12px;background:#fff;border-radius:12px;display:grid;place-items:center}
.two-factor-qr img{width:186px;height:186px;display:block;image-rendering:pixelated}
.two-factor-steps{margin:0;padding-left:20px;color:var(--muted);line-height:1.75;font-size:14px}
.two-factor-label{margin:18px 0 6px;font-size:13px;color:var(--muted)}
.two-factor-key{display:flex;align-items:center;gap:10px}
.two-factor-key code{flex:1;min-width:0;font:14px/1.4 var(--mono);letter-spacing:.08em;padding:10px 12px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;overflow-wrap:anywhere;user-select:all}
.two-factor-key .secondary{flex:none;min-height:40px;padding:8px 14px}
.two-factor-form{margin-top:18px}
.two-factor-form label{max-width:340px}
.two-factor-code{font-family:var(--mono);font-size:20px;letter-spacing:6px}
.two-factor-form .copy-actions,.two-factor .copy-actions{margin-top:16px;justify-content:flex-start;flex-wrap:wrap}
.two-factor-form .bybit-notice{margin-top:12px}
.two-factor-warning{margin:18px 0 0;padding:12px 14px;border-radius:10px;background:var(--amber-soft);color:var(--amber-ink);font-size:13px}
.two-factor-warning::before{content:"🔒 "}
.two-factor-ok{margin:0 0 14px;padding:12px 14px;border-radius:10px;background:var(--green-soft);color:var(--green-ink);font-size:13.5px}
.two-factor-codes{list-style:none;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:14px 0 18px;padding:0}
.two-factor-codes code{display:block;padding:9px;text-align:center;font:13.5px/1.3 var(--mono);letter-spacing:.06em;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;user-select:all}
.two-factor-after{margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}
.two-factor-action{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.two-factor>.bybit-notice.error{margin-top:14px}
@media (max-width:900px){.two-factor-codes{grid-template-columns:repeat(2,minmax(0,1fr))}.two-factor-row{flex-direction:column}.two-factor-row-actions{justify-content:flex-start}}
@media (max-width:640px){.two-factor-setup{grid-template-columns:1fr}.two-factor-qr{margin:0 auto}}
@media (max-width:1000px){.settings-page{grid-template-columns:180px minmax(0,1fr);gap:16px}.settings-card.padded{padding:24px}.settings-section-button{padding:14px 12px}}
@media (max-width:760px){.settings-page{grid-template-columns:1fr}.settings-jump{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.settings-section-button{padding:12px}.settings-section-button[data-admin]{margin-top:0;border-radius:10px}.settings-section-button span{display:none}.settings-card.padded{padding:20px;min-height:0}.settings-tabs{gap:8px 16px}.settings-theme{gap:7px}.settings-theme .secondary{padding:10px 6px}.settings-page .un-prefs th,.settings-page .un-prefs td{padding:12px 5px}}

/* Personal strategy workspace: one selected connection, using the existing evidence and action controls. */
.personal-tools{display:grid;gap:16px;margin:22px 0}
.personal-filters{display:flex;flex-wrap:wrap;gap:7px}
.personal-filters .secondary{min-height:36px;padding:8px 13px;font-size:13px}
.personal-filters .secondary[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink)}
.personal-search{display:flex;align-items:end;gap:14px;max-width:750px}
.personal-search label{margin:0;min-width:0}.personal-search>label:first-child{flex:1}
.personal-search input{margin:0}.personal-search select{min-height:44px;margin:5px 0 0}
.personal-workspace{display:grid;grid-template-columns:minmax(230px,29%) minmax(0,1fr);gap:22px;align-items:start}
.personal-list,.personal-detail{min-width:0}
.personal-count{font-size:12px;color:var(--muted);margin:0 0 12px}
.personal-choice{width:100%;display:grid;gap:7px;text-align:left;padding:17px 16px;margin:0 0 9px;background:var(--surface);border:1px solid var(--line);border-radius:12px;color:var(--ink);min-width:0}
.personal-choice:hover{border-color:var(--line-strong)}
.personal-choice[aria-pressed="true"]{border-color:var(--accent);box-shadow:inset 3px 0 var(--accent);background:var(--accent-soft)}
.personal-choice-name{font-size:14px;font-weight:650;overflow-wrap:anywhere}
.personal-choice-account{font-size:12px;color:var(--muted);overflow-wrap:anywhere}
.personal-choice .copy-status{white-space:normal;font-size:11px;justify-self:start}
.personal-detail-nav{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}
.personal-tabs{display:flex;flex-wrap:wrap;gap:18px}
.personal-tabs .text-button{padding:10px 0;border-radius:0;border-bottom:2px solid transparent;text-decoration:none;color:var(--muted)}
.personal-tabs .text-button[aria-pressed="true"]{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}
.personal-detail-nav>.secondary{font-size:12px;padding:8px 10px;min-height:36px}
.personal-detail .copy-row{padding:22px;border-radius:14px;box-shadow:var(--shadow)}
.personal-detail .copy-row-main{display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px}
.personal-detail .copy-row-name{min-width:0}.personal-detail .copy-row-account{display:block;margin-top:4px}.personal-detail .copy-row-sep{display:none}
.personal-detail .copy-row-main>.copy-status{grid-column:1/-1;justify-self:start;white-space:normal}
.personal-detail .copy-row-stats{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;width:100%;border-top:1px solid var(--line);padding-top:20px;margin:8px 0}
.personal-detail .copy-row-stats>div{min-width:0}.personal-detail .copy-row-stats dd{overflow-wrap:anywhere}
.personal-detail .copy-row-foot{display:grid;gap:16px}.personal-detail .copy-row-actions{justify-content:flex-start;flex-wrap:wrap}
.personal-detail[data-personal-tab="overview"] .copy-progress{display:none}
.personal-detail[data-personal-tab="activity"] .copy-row-stats{display:none}
.personal-history-note{margin:14px 0 6px}
.personal-empty h2{font-size:18px;margin-top:0}
.personal-choice-name{display:flex;align-items:center;gap:9px}
.personal-choice-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 30px;height:30px;border-radius:50%;background:var(--accent-soft);color:var(--accent-ink);font-size:20px}
.personal-choice-capital{font-size:14px;color:var(--muted)}
.personal-card .personal-tabs{border-bottom:1px solid var(--line);margin:20px 0;gap:24px}
.personal-card .personal-tabs [aria-selected="true"]{border-bottom-color:var(--accent);color:var(--ink);font-weight:650}
.personal-card [data-personal-pane][hidden]{display:none}
.personal-card h3{font-size:17px;margin:0 0 18px}
.personal-card [data-personal-pane="overview"] .copy-row-stats{border:0;padding:0;margin:0 0 22px;gap:10px}
.personal-card .copy-row-stats>div{background:var(--surface-soft,var(--bg));padding:16px;border-radius:10px;border:0}
.personal-card .copy-row-stats dd{margin:8px 0 0;display:grid;gap:7px}
.personal-card .copy-row-stats dd strong{font-size:19px}
.personal-card .copy-row-stats dd span{font-size:12px;line-height:1.5}
.personal-card .copy-row-info{margin:14px 0}
.personal-card [data-personal-pane="activity"] .copy-progress{margin:0 0 14px}
.personal-card [data-personal-actions]{border-top:1px solid var(--line);padding-top:18px;margin-top:22px}
.personal-card .copy-row-actions{gap:8px}
.personal-costs{margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}
.personal-costs h4{margin:0 0 10px}
.personal-card .strategy-sheet{margin:18px 0}
.personal-chart-note{margin:0 0 12px}
.track-source-details>summary,.track-history-details>summary{cursor:pointer;font-size:13px;color:var(--muted);padding:10px 0}
.track-source-details{margin-bottom:12px}
.track-history-details{margin-top:15px;border-top:1px solid var(--line)}
.personal-card .track-toolbar{flex-wrap:wrap;gap:14px}
.personal-card .track-presets{flex-wrap:wrap}
.personal-card .track-chart-box{height:350px}
.personal-card .track-market-facts{grid-template-columns:repeat(2,minmax(0,1fr))}
.personal-card .track-dates{flex-wrap:wrap}
.personal-card .track-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}
.personal-card .copy-row-name>strong{font-size:21px}
.personal-card .copy-row-account{font-size:14px;font-weight:400;color:var(--muted)}
.personal-card .copy-row-main>.copy-status{grid-column:2}
.personal-recent{margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}
.personal-recent .text-button{margin-top:10px}
.track-source-details>summary .pill{margin-left:10px;font-size:11px}
@media(max-width:1100px){.personal-workspace{grid-template-columns:minmax(200px,32%) minmax(0,1fr);gap:15px}.personal-detail .copy-row{padding:18px}.personal-detail .copy-row-stats{grid-template-columns:1fr}.personal-detail .copy-row-stats>div{border:0}}
@media(max-width:760px){.personal-workspace{grid-template-columns:1fr}.personal-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.personal-count{grid-column:1/-1;margin:0}.personal-choice{margin:0;padding:14px 12px}.personal-search{display:grid;grid-template-columns:1fr}.personal-detail .copy-row-main{grid-template-columns:auto minmax(0,1fr)}.personal-detail .copy-row-stats{grid-template-columns:1fr}.personal-choice .copy-status{font-size:12px}}

/* 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}}

/* Login identity, independent from trading wallets. */
.login-wallet{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.login-wallet .secondary{font-size:12px;padding:7px 10px}.login-wallet .text-button{font-size:12px}

/* Longer translated controls remain inside the desktop header. */
@media(min-width:681px){
  header:has(#control-actions-toggle){height:auto;min-height:68px;padding-block:8px;gap:16px}
  .connection:has(#control-actions-toggle){min-width:0;flex-wrap:wrap;justify-content:flex-end;row-gap:6px}
}

/* Explicit market metadata for the read-only strategy chart. */
.track-market{border:1px solid var(--line);border-radius:12px;background:var(--surface-2);padding:16px;margin:16px 0}
.track-market-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.track-market-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:14px 0 0}
.track-market-facts dt{font-size:11px;color:var(--muted);margin-bottom:4px}
.track-market-facts dd{margin:0;font-size:13px;overflow-wrap:anywhere}
.track-market p{margin:10px 0 0;font-size:12px;line-height:1.6}
.track-market-warning{color:var(--amber-ink,var(--ink))}
.track-chart-box.track-chart-empty{height:auto;min-height:90px}
@media(max-width:640px){.track-market-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.track-dialog{padding:18px}.track-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.track-tiles .dash-tile{min-width:0}.track-dialog .dialog-heading h2{overflow-wrap:anywhere}}
/* Suplantaciones (antisuplantación, 22-10): tabla de Admin › Métricas. El dominio y su dirección se parten donde haga falta; el estado no se corta. */
.impersonations-table th[scope="row"]{min-width:220px;overflow-wrap:anywhere;font-weight:500}.impersonations-table th[scope="row"] small{display:inline-block;margin-top:4px;color:var(--muted)}.impersonations-table td:nth-child(2){min-width:150px}.impersonations-table td:nth-child(3),.impersonations-table td:nth-child(4){white-space:nowrap}.impersonations-table select{width:auto;min-width:200px;min-height:36px;padding:6px 10px;margin-top:0;font-size:13px}

/* Comisión obligatoria para clientes (propietario, 22-10; bocetos conectar.html y dex.html): atención suave (ámbar de aviso,
   borde fino), sin aspecto de error. El botón que firma es el primario. Lo pintan builder-ui.js y sus usuarios. */
.fee-box{margin:16px 0 0;border:1px solid color-mix(in srgb,var(--amber) 55%,var(--line));background:var(--amber-soft);border-radius:14px;padding:14px 16px;color:var(--ink)}
.fee-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.fee-head strong{font-size:15px;color:var(--amber-ink)}
.fee-pct{font-family:var(--mono);font-size:20px;font-weight:700;color:var(--amber-ink)}
.fee-box ul{margin:8px 0 0;padding-left:18px;font-size:13.5px;line-height:1.6;color:var(--ink-2)}
.fee-box b{color:var(--ink)}
.fee-check{display:flex;gap:10px;align-items:flex-start;margin-top:12px;font-size:13.5px;color:var(--ink);cursor:pointer}
.fee-check input{display:inline-block;margin:2px 0 0;padding:0;accent-color:var(--accent);width:16px;height:16px;min-height:0;flex:none}
.fee-wallets{width:100%;margin-top:10px;border-collapse:collapse;font-size:13.5px}
.fee-wallets td{padding:8px 0;border-top:1px solid color-mix(in srgb,var(--amber) 30%,var(--line))}
.fee-wallets tr:first-child td{border-top:0}
.fee-wallets td:last-child{text-align:right;white-space:nowrap}
.fee-wallets .fee-done{color:var(--green-ink)}.fee-wallets .fee-missing{color:var(--amber-ink);font-weight:600}
.fee-wallets small{color:var(--muted)}
.fee-wallet{border:0;padding:0;margin:12px 0 0;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.fee-wallet legend{float:left;margin-right:6px;font-size:12.5px;color:var(--muted)}
.fee-wallet label{display:inline-flex;gap:8px;align-items:center;margin:0;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:5px 12px;font-size:13px;color:var(--ink);cursor:pointer}
.fee-wallet label:has(input:checked){border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.fee-wallet input{display:inline-block;width:auto;min-height:0;margin:0;padding:0;accent-color:var(--accent)}
.fee-wallet legend{padding:0}
:is(#copy-dialog,#guide-dialog,#portfolio-activate-dialog) .fee-wallet{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:12px 0 0}
:is(#copy-dialog,#guide-dialog,#portfolio-activate-dialog) .fee-wallet legend{float:left;font-size:12.5px;font-weight:400;color:var(--muted);margin:0 6px 0 0}
.fee-qr{margin-top:10px;display:grid;justify-items:center;gap:6px}.fee-qr[hidden]{display:none}
.fee-qr svg{max-width:220px;height:auto;background:#fff;border-radius:10px;padding:8px}
/* Firma de la comisión: esperando a la wallet (con «Cancelar») o cancelada en la wallet (ámbar, sin alarma; 22-10). */
.fee-status[data-fee-status]{margin:10px 0 0;font-size:13px;line-height:1.5;color:var(--ink-2)}.fee-status[hidden]{display:none}
.fee-status.fee-status-wait{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;color:var(--muted)}
.fee-status.fee-status-cancelled{padding:9px 12px;border-radius:10px;border:1px solid color-mix(in srgb,var(--amber) 45%,var(--line));background:var(--amber-soft);color:var(--amber-ink)}
:is(.fee-box,.fee-step) .fee-status.fee-status-cancelled{background:var(--surface)}
.fee-ok{margin:16px 0 0;padding:11px 14px;border-radius:12px;background:var(--green-soft);color:var(--green-ink);font-size:13.5px;line-height:1.5}
.fee-note{margin:8px 0 0;font-size:12.5px;color:var(--muted);text-align:right}.fee-note[hidden]{display:none}
.fee-intro{margin:10px 0 0;padding:10px 12px;border-radius:10px;border:1px solid color-mix(in srgb,var(--amber) 45%,var(--line));background:var(--amber-soft);color:var(--ink);font-size:13px;line-height:1.5}
.fee-lead{margin:0 0 6px;font-weight:600;color:var(--amber-ink);font-size:13.5px}
.conn-fee{display:grid;gap:12px;margin-top:18px}
.fee-step{border:1px solid var(--line);background:var(--surface-2);border-radius:14px;padding:14px 16px}
.fee-step h4{display:flex;gap:10px;align-items:center;margin:0 0 6px;font-size:15px;color:var(--ink)}
.fee-step p{margin:0 0 4px;font-size:13px;line-height:1.55;color:var(--ink-2)}
.fee-num{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--surface-3);color:var(--ink);font-size:12.5px;font-weight:700;flex:none}
.fee-step-todo{border-color:color-mix(in srgb,var(--amber) 55%,var(--line));background:var(--amber-soft)}
.fee-step-todo .fee-num{background:var(--accent);color:var(--on-accent)}
.fee-step-todo > .primary{margin-top:10px}
.fee-step-done{border-color:color-mix(in srgb,var(--green) 45%,var(--line));background:var(--green-soft)}
.fee-step-done .fee-num{background:var(--green);color:#fff}.fee-step-done p{color:var(--green-ink)}
.fee-step-wait h4 .fee-num{background:var(--surface-3);color:var(--muted)}
.fee-step:not(.fee-step-todo):not(.fee-step-done):not(.fee-step-wait) .fee-num{background:var(--accent);color:var(--on-accent)}
.fee-step-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}

/* TradingView: compact operational summary; original controls remain in native disclosures. */
.tv-compact>.heading{align-items:center;margin-bottom:16px}
.tv-compact>.heading>.text-button{margin-left:auto;white-space:nowrap}
.tv-summary{padding:18px 20px;display:grid;grid-template-columns:1.4fr 1fr 1fr auto;gap:20px;align-items:center;margin-bottom:14px}
.tv-summary-field{min-width:0}.tv-summary-field small{display:block;color:var(--muted);font-size:11px;margin-bottom:7px}
.tv-summary-field strong{display:block;font-size:14px;overflow-wrap:anywhere}.tv-execution-state{display:block;color:var(--muted);font-size:12px;margin-top:5px;overflow-wrap:anywhere}
.tv-summary-actions button{white-space:nowrap}
.tv-tools{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0 18px;align-items:start}
.tv-tool{min-width:0}.tv-tool>summary{cursor:pointer;padding:16px 18px;font-weight:600;font-size:13px}
.tv-tool>summary small{display:block;font-weight:400;color:var(--muted);padding-left:15px;margin-top:5px}
.tv-tool>summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--radius)}
.tv-tool[open]{grid-column:1/-1}.tv-tool-body>.panel{border:0;box-shadow:none;margin:0;background:transparent}
.tv-tool-body>.env-select{padding:18px 24px 0}
.tv-alerts:empty{display:none}.tv-alerts>.copy-note{margin:8px 0;font-size:12px}
.tv-diagnostics>.tv-tool-body>.panel>.copy-note{display:none}
@media(max-width:760px){.tv-summary{grid-template-columns:1fr 1fr;gap:16px;padding:16px}.tv-summary-actions{align-self:end}.tv-summary-actions button{width:100%}.tv-tools{grid-template-columns:1fr}.tv-compact>.heading{align-items:flex-start;gap:12px}.tv-compact>.heading>.text-button{margin-left:0;white-space:normal}.tv-tool-body>.panel{padding:16px}.tv-tool-body>.env-select{padding:16px 16px 0}}

/* Execution chart stays inside the existing Chart pane. */
.vd-card .vc-table.vd-chart-strategies{table-layout:fixed;min-width:0;width:100%}.vd-chart-strategies>thead>tr>th:first-child{width:52%}.vd-chart-strategies>thead>tr>th:nth-child(2){width:20%}.vd-chart-strategies>thead>tr>th:nth-child(3){width:28%}.vd-chart-strategies>tbody>tr>td,.vd-chart-strategies>tbody>tr>th{overflow-wrap:anywhere}.vd-chart-strategies>tbody>tr>td>.text-button{min-width:0;white-space:normal}
.execution-chart{min-width:0;white-space:normal;overflow-wrap:anywhere;text-align:left}.ecx-heading,.ecx-toolbar,.ecx-ranges,.ecx-legend{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.ecx-heading{justify-content:space-between;margin-bottom:16px}.ecx-toolbar{justify-content:space-between;align-items:flex-end;margin:12px 0}.ecx-toolbar label{display:grid;gap:6px;font-size:12px;color:var(--muted)}.ecx-toolbar select{max-width:100%}.ecx-ranges{gap:5px}.ecx-ranges button{padding:8px 10px}.ecx-ranges button[aria-pressed=true]{border-color:var(--accent);background:var(--surface-2)}.ecx-canvas{height:400px;min-width:0;width:100%;margin:12px 0}.ecx-entry{color:var(--green)}.ecx-exit{color:var(--accent)}.ecx-legend{font-size:12px}.ecx-history{margin:16px 0}.ecx-history>summary{cursor:pointer}.execution-chart [data-ecx-status]{overflow-wrap:anywhere}.execution-chart [data-ecx-selected]{border-left:2px solid var(--line);padding-left:12px}.vd-execution-strategy{margin-top:12px}.vd-execution-strategy .execution-chart{margin-top:12px}
@media(max-width:650px){.ecx-canvas{height:320px}.ecx-toolbar{align-items:stretch}.ecx-toolbar>label{width:100%}.ecx-ranges{width:100%}.ecx-ranges button{flex:1;padding:8px 6px;min-height:44px}.ecx-heading{align-items:flex-start}.execution-chart .table-wrap{max-width:100%}}
.ecx-source-note{padding:12px 16px;margin:12px 0 20px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2)}.ecx-source-note .help{margin:6px 0}.ecx-source-note .secondary{margin:6px 0;white-space:normal}.ecx-price-toggle{display:flex;align-items:center;gap:8px;min-height:44px;font-size:14px}.ecx-price-toggle input{width:18px;height:18px;flex:none}.execution-chart [data-ecx-selected]{margin-top:16px}
.ecx-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:16px 0 8px}.ecx-summary-grid .dash-tile{min-width:0;padding:14px;background:var(--surface-2);border:1px solid var(--line);border-radius:12px}.ecx-summary-grid .dash-tile strong{font-size:20px;overflow-wrap:anywhere}.ecx-summary-grid .dash-tile span{display:block;font-size:11px;line-height:1.5;color:var(--muted)}@media(max-width:760px){.ecx-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ecx-summary-grid .dash-tile strong{font-size:17px}}
.ecx-summary-grid .dash-tile small{color:var(--muted)}
/* Señales fuera de patrón y topes por estrategia (SEC-04, #1398 y #1399; signal-guard-ui.js). */
.signal-guard .guard-pills{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 8px}.signal-guard .guard-list{display:grid;gap:8px;margin:12px 0 18px}
.guard-strategy{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--surface)}.guard-strategy>summary{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;cursor:pointer;list-style:none}.guard-strategy>summary::-webkit-details-marker{display:none}.guard-strategy>summary .pill{margin-left:auto}
.guard-observed{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin:12px 0}.guard-observed div{min-width:0}.guard-observed dt{font-size:11px;color:var(--muted)}.guard-observed dd{margin:2px 0 0;font-weight:600;font-variant-numeric:tabular-nums}
.guard-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px 14px;align-items:start}.guard-form>p,.guard-form>.bybit-actions{grid-column:1/-1;margin:0}.guard-form label{min-width:0}
.guard-anomalies{margin:0;padding-left:18px;display:grid;gap:6px}.guard-anomalies li{overflow-wrap:anywhere}.guard-anomalies time{color:var(--muted);font-variant-numeric:tabular-nums}

/* Backtest closes remain visible when this exact market has no candle provider. */
.track-backtest-curve{margin:0;width:100%;text-align:left}.track-backtest-curve figcaption{font-size:13px;color:var(--muted)}.track-backtest-curve>strong{display:block;margin:8px 0}.track-backtest-curve .track-spark{width:100%;height:180px;display:block}.track-chart-empty:has(.track-backtest-curve){height:auto;min-height:260px}

/* Exenciones de la comisión (27-10): Admin › Comisiones y la tarjeta de la cuenta («Sin comisión»). */
.fee-exemptions{margin:24px 0 16px}
.exempt-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px 20px;margin:0 0 14px}
.exempt-card h3{margin:0 0 6px;font-size:16px}
.exempt-toggle{display:flex;align-items:center;justify-content:space-between;gap:16px}.exempt-toggle .help{margin:4px 0 0}
.exempt-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));gap:10px;align-items:end;margin-top:12px}
.exempt-form [hidden]{display:none!important}.exempt-form input,.exempt-form select{min-width:0;width:100%}.exempt-row>div{min-width:0;overflow-wrap:anywhere}.exempt-row>button{flex-shrink:0}
.exempt-form label,.exempt-field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}
.exempt-form input[name=address]{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.exempt-venues{position:relative}
.exempt-venues summary{list-style:none;cursor:pointer;border:1px solid var(--line-strong);border-radius:10px;padding:9px 12px;background:var(--surface-2);color:var(--ink);font-size:14px}
.exempt-venues summary::-webkit-details-marker{display:none}.exempt-venues summary::after{content:" ▾";color:var(--muted)}
.exempt-venues-menu{position:absolute;z-index:5;top:calc(100% + 4px);left:0;min-width:100%;display:grid;gap:6px;padding:10px 12px;background:var(--surface);border:1px solid var(--line-strong);border-radius:10px;box-shadow:0 8px 24px rgb(0 0 0/.18)}
.exempt-venues-menu label{flex-direction:row;align-items:center;justify-content:flex-start;gap:8px;color:var(--ink);white-space:nowrap;font-size:14px}
.exempt-venues-menu input{width:auto;height:auto;margin:0;flex:none}
.exempt-list{list-style:none;margin:8px 0 0;padding:0}
.exempt-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.exempt-row:last-child{border-bottom:0}
.exempt-row p{margin:0 0 4px}.exempt-row small{color:var(--muted)}
.fee-exempt .pill{margin-right:6px}
@media (max-width:760px){.exempt-form{grid-template-columns:1fr}.exempt-toggle{align-items:flex-start}}

/* #1598: the account list scrolls while the step and its action stay in view. */
#copy-dialog{width:720px;height:min(800px,calc(100dvh - 32px));max-height:calc(100dvh - 32px);padding:0;margin:auto;overflow:hidden}
#copy-form{height:100%;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto;margin:0}
#copy-dialog .copy-header{display:block;padding:24px 28px 18px;border-bottom:1px solid var(--line)}
#copy-dialog .dialog-heading h2{overflow-wrap:anywhere}
#copy-body{padding:6px 28px 24px;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;min-width:0;min-height:0}
#copy-dialog .copy-footer{display:block;padding:16px 28px 20px;border-top:1px solid var(--line);background:var(--surface);max-height:40dvh;overflow:auto}
#copy-dialog .copy-actions{position:static;padding:0;margin:0;align-items:center;background:transparent}
#copy-dialog .copy-actions .primary{min-width:240px;min-height:56px;font-size:17px;white-space:normal;line-height:1.3}
#copy-dialog .copy-actions .secondary{min-height:48px}
#copy-selection-count{margin-right:auto;color:var(--muted);font-size:13px}
#copy-dialog .copy-error:not(:empty){margin:0 0 12px}
#copy-dialog .fee-note{margin:12px 0 0}
#copy-dialog .copy-account-row .copy-option{padding:16px;gap:14px}
#copy-dialog .copy-account-row .copy-option>span{flex:1;min-width:0;overflow-wrap:anywhere}
#copy-dialog .copy-account-row .copy-option strong{font-size:17px;line-height:1.4}
#copy-dialog .copy-account-row .copy-option.disabled{opacity:1;color:var(--muted)}
.copy-account-capital{display:flex;flex-wrap:wrap;gap:12px 28px;margin-top:12px}
#copy-dialog .copy-account-capital small{font-size:12px}
.copy-account-capital b{display:block;font-family:var(--mono);font-size:15px;color:var(--ink);margin-top:3px;overflow-wrap:anywhere}
#copy-dialog .copy-reservation-note{margin-top:10px;font-size:12px}
.copy-account-disclosure{border-top:1px solid var(--line);margin-top:24px;padding-top:16px}
.copy-account-disclosure>summary{cursor:pointer;font-weight:600;color:var(--ink);min-height:28px}
.copy-account-disclosure .copy-account-row{margin-top:12px}
.copy-portfolio-help{font-size:13px;line-height:1.5;color:var(--ink-2);margin:8px 4px 16px}
.copy-portfolio-help button{display:block;margin-top:6px}
.copy-capital-help{font-size:12px}
@media(max-width:640px){
  #copy-dialog{width:100%;max-width:100%;height:94dvh;max-height:94dvh;margin:auto 0 0;border-radius:18px 18px 0 0}
  #copy-dialog .copy-header{padding:18px 16px 14px}
  #copy-body{padding:4px 16px 20px}
  #copy-dialog .copy-footer{padding:12px 16px max(16px,env(safe-area-inset-bottom))}
  #copy-dialog .copy-actions{flex-wrap:wrap;gap:8px}
  #copy-selection-count{flex:1 0 100%}
  #copy-dialog .copy-actions .primary{min-width:0;flex:2}
  #copy-dialog .copy-actions .secondary{flex:1}
}
