/* ============================================================================
   MOD-274 · OMNIA FLEXWALL
   ----------------------------------------------------------------------------
   TODO acotado a `#page-flexwall`, a `#fw-velo` (los modales, que cuelgan de
   <body>) y a `#fw-tip`. Las clases son genéricas —.card, .btn, .kpi— a
   propósito: prefijar cien clases a mano se rompe en el primer descuido. Lo que
   las aísla es el selector raíz, que además gana en especificidad al CSS global.

   El día/noche NO es propio: se hereda de `html[data-mode="noche"]`, que es lo
   que usa el resto de OMNIA. La base es la noche —el tema por defecto— y el día
   se pinta encima.

   El módulo vive DENTRO de `#page-content`, que ya trae su scroll y su padding
   para el riel de FABs. Por eso nada usa `position:fixed` ni `100vh` a secas.
   ========================================================================== */

/* ── Tema ─────────────────────────────────────────────────────────────────── */
#page-flexwall, #fw-velo, #fw-tip{
    --bg:#0a0a0c; --bg2:#111116; --bg3:#17171e; --bg4:#1d1d26;
    --bd:#26262f; --bd2:#33333f;
    --tx:#e9e9f0; --tx2:#9b9bab; --tx3:#6a6a78;
    --ac:#2dd4bf; --acTx:#06231f;
    --wr:#f59e0b; --wrBg:rgba(245,158,11,.09); --wrTx:#fcd97a;
    --er:#f87171; --erBg:rgba(248,113,113,.09); --erTx:#fecaca;
    --ra:#94a3b8; --ti:#38bdf8; --tiFill:.14; --tl:#a78bfa;
    --tipBg:#1e1e28; --tipBd:#3a3a48;
    --velo:rgba(0,0,0,.66);
}
html:not([data-mode="noche"]) #page-flexwall,
html:not([data-mode="noche"]) #fw-velo,
html:not([data-mode="noche"]) #fw-tip{
    --bg:#f5f6f8; --bg2:#ffffff; --bg3:#f0f1f4; --bg4:#e7e9ed;
    --bd:#e1e3e8; --bd2:#cccfd7;
    --tx:#15171c; --tx2:#5a606c; --tx3:#8a90a0;
    --ac:#0d9488; --acTx:#ffffff;
    --wr:#b45309; --wrBg:rgba(245,158,11,.13); --wrTx:#7c4a06;
    --er:#dc2626; --erBg:rgba(220,38,38,.08); --erTx:#991b1b;
    --ra:#64748b; --ti:#0284c7; --tiFill:.10; --tl:#7c3aed;
    --tipBg:#22242c; --tipBd:#33353f;
    --velo:rgba(20,25,40,.42);
}
#page-flexwall *, #fw-velo *, #fw-tip *{box-sizing:border-box}
#page-flexwall button, #fw-velo button{font:inherit}

/* ── Pestañas y menú del topbar ───────────────────────────────────────────── */
#page-flexwall .tabs{display:flex; gap:2px; background:var(--bg3); border:1px solid var(--bd); border-radius:8px; padding:2px; margin-left:16px}
#page-flexwall .tabs button{
    background:none; border:0; color:var(--tx2); padding:6px 13px; border-radius:6px;
    cursor:pointer; font-size:12px; transition:background .15s,color .15s;
}
#page-flexwall .tabs button.on{background:var(--ac); color:var(--acTx); font-weight:600}
#page-flexwall .kebab{position:relative}
#page-flexwall .kb{
    background:none; border:1px solid var(--bd); color:var(--tx2); width:30px; height:30px;
    border-radius:8px; cursor:pointer; font-size:16px; line-height:1; transition:color .15s,border-color .15s;
}
#page-flexwall .kb:hover{color:var(--ac); border-color:var(--ac)}
#page-flexwall .kebab .menu{
    position:absolute; right:0; top:36px; z-index:800; min-width:252px;
    background:var(--bg2); border:1px solid var(--bd2); border-radius:11px; padding:5px;
    box-shadow:0 14px 40px rgba(0,0,0,.35);
}
#page-flexwall .kebab .menu button{
    display:flex; align-items:center; gap:9px; width:100%; background:none; border:0;
    color:var(--tx); padding:8px 10px; border-radius:7px; cursor:pointer; font-size:12.5px; text-align:left;
}
#page-flexwall .kebab .menu button:hover{background:var(--bg4)}
#page-flexwall .kebab .menu button:disabled{opacity:.45; cursor:not-allowed}
#page-flexwall .kebab .menu button .k{margin-left:auto; color:var(--tx3); font-size:10.5px}
#page-flexwall .kebab .menu .sep{height:1px; background:var(--bd); margin:5px 8px}
#page-flexwall .kebab .menu .tit{font-size:9px; letter-spacing:.14em; text-transform:uppercase; color:var(--tx3); padding:7px 10px 4px}

/* ── Plan de producción ───────────────────────────────────────────────────── */
#fw-plan{
    /* En flujo normal: si fuera `fixed` taparía el sidebar y el riel. */
    height:calc(100vh - 118px); overflow-y:auto; padding:16px 4px;
}
#page-flexwall .hoja{
    max-width:900px; margin:0 auto 16px; background:var(--bg2); border:1px solid var(--bd);
    border-radius:12px; padding:22px 26px;
}
#page-flexwall .hoja h3{margin:0 0 4px; font-size:14px; font-weight:700; display:flex; align-items:baseline; gap:10px}
#page-flexwall .hoja h3 small{font-size:11px; font-weight:400; color:var(--tx3)}
#page-flexwall .hoja .sub{font-size:11px; color:var(--tx3); margin-bottom:14px}
#page-flexwall .pgrid{display:grid; grid-template-columns:repeat(auto-fit,minmax(126px,1fr)); gap:9px; margin-bottom:14px}
#page-flexwall .pbox{background:var(--bg3); border:1px solid var(--bd); border-radius:9px; padding:9px 11px}
#page-flexwall .pbox .n{font-size:17px; font-weight:700; font-variant-numeric:tabular-nums}
#page-flexwall .pbox .l{font-size:9px; letter-spacing:.11em; text-transform:uppercase; color:var(--tx3); margin-top:1px}
#page-flexwall .pbox .d{font-size:10.5px; color:var(--tx2); margin-top:2px}
#page-flexwall .corte{border:1px solid var(--bd); border-radius:9px; padding:9px 11px; margin-bottom:7px; background:var(--bg3)}
#page-flexwall .corte .t{font-size:11.5px; font-weight:600; display:flex; justify-content:space-between; gap:10px}
#page-flexwall .corte .t span:last-child{color:var(--tx3); font-weight:400; font-variant-numeric:tabular-nums}
#page-flexwall .corte .barra{display:flex; height:15px; border-radius:4px; overflow:hidden; margin:7px 0 5px; background:var(--bd)}
#page-flexwall .corte .barra i{display:block; border-right:1px solid var(--bg2)}
#page-flexwall .corte .lst{font-size:10.5px; color:var(--tx3)}
/* `z-index` alto y fuera de la vista: sin él, el rectángulo blanco de 794 px
   se pintaba encima del sidebar durante toda la generación del PDF. */
#fw-pdf-caja{position:fixed; top:0; left:0; width:794px; display:none; background:#fff; z-index:99998}

/* ── Lo que el CSS global de OMNIA cuela dentro ───────────────────────────
   `app.css` pone `table{min-width:480px}` y `.badge{font-weight:bold}`. En una
   columna estrecha la tabla se recortaba por el overflow. Se anulan aquí, no
   allá: tocar app.css movería medio sistema. */
#page-flexwall table, #fw-velo table{min-width:0}
#page-flexwall .badge, #fw-velo .badge{font-weight:400; white-space:normal}

/* ── Buscador de destinos (modal de insertar) ─────────────────────────────
   Antes era un input suelto con el borde de OMNIA y una lista de tarjetas
   apiladas: se veía como un formulario, no como un buscador. Ahora es una caja
   sola con dos pestañas, orden y una lista densa que se lee de un vistazo. */
#fw-velo .modal.buscador{ display:flex; flex-direction:column; max-height:82vh; }

#fw-velo .bq-tabs{ display:flex; gap:2px; padding:0 18px; border-bottom:1px solid var(--bd); }
#fw-velo .bq-tabs button{
    position:relative; background:none; border:0; color:var(--tx3);
    padding:11px 14px; font-size:12.5px; cursor:pointer;
    display:inline-flex; align-items:center; gap:7px; transition:color .15s;
}
#fw-velo .bq-tabs button:hover{ color:var(--tx2); }
#fw-velo .bq-tabs button.on{ color:var(--tx); font-weight:600; }
#fw-velo .bq-tabs button.on::after{
    content:""; position:absolute; left:10px; right:10px; bottom:-1px;
    height:2px; background:var(--ac); border-radius:2px 2px 0 0;
}
#fw-velo .bq-tabs button span{
    min-width:19px; height:18px; padding:0 6px; border-radius:999px;
    background:var(--bg3); color:var(--tx3); font-size:10.5px; font-weight:600;
    display:grid; place-items:center;
}
#fw-velo .bq-tabs button.on span{ background:var(--ac); color:var(--acTx); }

#fw-velo .bq-bar{ display:flex; align-items:center; gap:9px; padding:12px 18px; flex-wrap:wrap; }
#fw-velo .bq-in{
    flex:1; min-width:220px; position:relative; display:flex; align-items:center;
    background:var(--bg3); border:1px solid var(--bd2); border-radius:9px;
    transition:border-color .15s, background .15s;
}
#fw-velo .bq-in:focus-within{ border-color:var(--ac); background:var(--bg); }
#fw-velo .bq-in i{ position:absolute; left:11px; color:var(--tx3); font-size:12px; pointer-events:none; }
#fw-velo .bq-in input{
    width:100%; background:none; border:0; outline:none; color:var(--tx);
    padding:9px 30px 9px 32px; font:inherit; font-size:13px;
}
#fw-velo .bq-in input::placeholder{ color:var(--tx3); }
#fw-velo .bq-x{
    position:absolute; right:6px; background:none; border:0; color:var(--tx3);
    font-size:17px; line-height:1; cursor:pointer; padding:2px 6px; border-radius:5px;
}
#fw-velo .bq-x:hover{ color:var(--tx); background:var(--bg4); }

#fw-velo .bq-ord{ display:flex; background:var(--bg3); border:1px solid var(--bd2); border-radius:8px; padding:2px; gap:2px; }
#fw-velo .bq-ord button{
    background:none; border:0; color:var(--tx3); padding:5px 10px;
    border-radius:6px; cursor:pointer; font-size:11px; white-space:nowrap;
}
#fw-velo .bq-ord button.on{ background:var(--ac); color:var(--acTx); font-weight:600; }

#fw-velo .bq-todo{ display:flex; align-items:center; gap:6px; cursor:pointer; user-select:none; }
#fw-velo .bq-todo input{ width:15px; height:15px; accent-color:var(--ac); cursor:pointer; }
#fw-velo .bq-todo span{ font-size:11.5px; color:var(--tx2); }

#fw-velo .bq-lista{ flex:1; min-height:0; overflow-y:auto; padding:0 12px 8px; }
#fw-velo .bq-lista::-webkit-scrollbar{ width:8px; }
#fw-velo .bq-lista::-webkit-scrollbar-thumb{ background:var(--bd2); border-radius:4px; }
#fw-velo .bq-it{
    display:flex; align-items:center; gap:10px; width:100%; text-align:left;
    background:none; border:0; border-radius:9px; padding:9px 10px; cursor:pointer;
    color:var(--tx); transition:background .12s;
}
#fw-velo .bq-it:hover{ background:var(--bg3); }
#fw-velo .bq-it.on{ background:var(--bg4); box-shadow:inset 0 0 0 1px var(--ac); }
#fw-velo .bq-ti{ flex:1; min-width:0; }
#fw-velo .bq-ti b{
    display:block; font-size:13px; font-weight:600; color:var(--tx);
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
#fw-velo .bq-ti span{
    display:block; font-size:11px; color:var(--tx3); margin-top:2px;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
#fw-velo .bq-et{
    font-size:9.5px; letter-spacing:.06em; text-transform:uppercase; white-space:nowrap;
    padding:3px 7px; border-radius:5px; background:var(--bg3); color:var(--tx3); border:1px solid var(--bd);
}
#fw-velo .bq-aj{
    font-size:9.5px; letter-spacing:.06em; text-transform:uppercase; white-space:nowrap;
    padding:3px 7px; border-radius:5px; color:var(--wr);
    background:var(--wrBg); border:1px solid var(--wr);
}
#fw-velo .bq-fe{ font-size:10.5px; color:var(--tx3); white-space:nowrap; min-width:52px; text-align:right; }
#fw-velo .bq-vacio{ padding:34px 20px; text-align:center; }
#fw-velo .bq-vacio b{ display:block; font-size:13px; color:var(--tx2); font-weight:500; }
#fw-velo .bq-vacio span{ display:block; font-size:11.5px; color:var(--tx3); margin-top:5px; }

/* ── Loader de arranque ───────────────────────────────────────────────────
   Cubre la página, no el viewport: el sidebar y el riel siguen a la vista, que
   es lo correcto dentro del shell. El SVG no trae fondo propio, así que se
   funde con el del módulo. */
#page-flexwall .fw-cargando{
    position:absolute; inset:0; z-index:40; background:var(--bg);
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    gap:20px; transition:opacity .45s ease;
}
#page-flexwall .fw-cargando.fuera{ opacity:0; pointer-events:none; }
#page-flexwall .fw-cargando img{ width:108px; height:auto; display:block; }
#page-flexwall .fw-cargando .pie{
    font:9.5px/1 ui-monospace,'IBM Plex Mono',Consolas,monospace;
    letter-spacing:.18em; color:var(--tx3); text-transform:uppercase;
}
/* El loader se posiciona contra la página, así que la página manda. */
#page-flexwall{ position:relative; }

/* ── Rejilla ──────────────────────────────────────────────────────────────── */
/* La lista tiene ancho fijo; el dibujo, el que decida el usuario; y lo que
   queda se lo reparten a partes iguales la captura y el cotizador. Así, al
   desplegar la lista o al angostar el dibujo, el espacio va a donde hace falta. */
#fw-rejilla{
    height:calc(100vh - 118px);   /* dentro de #page-content, no del viewport */
    display:grid;
    grid-template-columns:var(--wLista,250px) minmax(0,1fr) minmax(0,1fr) 7px var(--wDib,33%);
}
#fw-rejilla.plegado{--wLista:44px}
#fw-rejilla.animar{transition:grid-template-columns .22s ease}
#fw-rejilla > section{overflow-y:auto; overflow-x:hidden; min-width:0}
#fw-rejilla > section::-webkit-scrollbar{width:7px}
#fw-rejilla > section::-webkit-scrollbar-thumb{background:var(--bd2); border-radius:4px}
#page-flexwall .col-lista{background:var(--bg2); border-right:1px solid var(--bd); padding:12px}
#fw-rejilla.plegado .col-lista{padding:12px 6px; overflow:hidden}
#page-flexwall .col-form{border-right:1px solid var(--bd); padding:14px 16px 40px}
#page-flexwall .col-cot{border-right:1px solid var(--bd); padding:14px 16px 40px; background:var(--bg2)}
#page-flexwall .col-dib{padding:14px 16px; display:flex; flex-direction:column; gap:10px; overflow:hidden}
@media (max-width:1280px){ #fw-rejilla{--wLista:206px} #fw-rejilla.plegado{--wLista:44px} }

/* ── Divisor arrastrable ──────────────────────────────────────────────────── */
#page-flexwall .divisor{
    cursor:col-resize; background:var(--bd); position:relative;
    transition:background .15s;
}
#page-flexwall .divisor::before{
    content:""; position:absolute; inset:0 -5px;   /* zona de agarre más ancha
                                                      que la línea: 7 px reales
                                                      son un blanco imposible */
}
#page-flexwall .divisor::after{
    content:""; position:absolute; top:50%; left:50%; width:3px; height:38px;
    transform:translate(-50%,-50%); border-radius:2px; background:var(--bd2);
    transition:background .15s;
}
#page-flexwall .divisor:hover, #page-flexwall .divisor.arrastrando{background:var(--ac)}
#page-flexwall .divisor:hover::after, #page-flexwall .divisor.arrastrando::after{background:var(--ac)}
html.redimensionando{cursor:col-resize; user-select:none}

/* ── Plegado de la lista ──────────────────────────────────────────────────── */
#page-flexwall .plegar{
    width:100%; background:none; border:1px solid var(--bd); color:var(--tx3);
    border-radius:7px; padding:5px; cursor:pointer; font-size:12px; margin-bottom:10px;
    transition:color .15s,border-color .15s;
}
#page-flexwall .plegar:hover{color:var(--ac); border-color:var(--ac)}
#fw-rejilla.plegado .oculto-plegado{display:none}
#page-flexwall .mini{display:none}
#fw-rejilla.plegado .mini{display:block}
#page-flexwall .mini .p{
    width:32px; height:32px; margin:0 auto 6px; border-radius:8px; cursor:pointer;
    background:var(--bg3); border:1px solid var(--bd2); color:var(--tx2);
    display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:700;
}
#page-flexwall .mini .p.on{border-color:var(--ac); color:var(--ac); background:var(--bg4)}

/* ── Tarjetas ─────────────────────────────────────────────────────────────── */
#page-flexwall .colhead{
    font-size:9.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--tx3);
    margin:0 0 9px; display:flex; align-items:center; gap:8px;
}
#page-flexwall .colhead::after{content:""; flex:1; height:1px; background:var(--bd)}
#page-flexwall .card{
    background:var(--bg3); border:1px solid var(--bd); border-left:3px solid var(--bd2);
    border-radius:10px; padding:9px 11px; margin-bottom:7px; cursor:pointer;
    transition:border-color .15s,background .15s; position:relative;
}
#page-flexwall .card:hover{background:var(--bg4)}
#page-flexwall .card.on{border-color:var(--ac); border-left-color:var(--ac); background:var(--bg4)}
#page-flexwall .card .t{font-size:12.5px; font-weight:600; padding-right:18px}
#page-flexwall .card .m{font-size:11px; color:var(--tx2); margin-top:2px; font-variant-numeric:tabular-nums}
#page-flexwall .card .p{font-size:12px; color:var(--ac); font-weight:600; margin-top:4px; font-variant-numeric:tabular-nums}
#page-flexwall .badge{
    display:inline-block; font-size:9px; letter-spacing:.07em; text-transform:uppercase;
    padding:2px 6px; border-radius:4px; margin-top:5px; margin-right:4px;
    background:var(--bg2); border:1px solid var(--bd2); color:var(--tx2);
}
#page-flexwall .card .x{
    position:absolute; top:7px; right:7px; width:19px; height:19px; border-radius:5px;
    background:none; border:0; color:var(--tx3); cursor:pointer; line-height:1;
    font-size:15px; opacity:0; transition:opacity .15s,color .15s;
}
#page-flexwall .card:hover .x{opacity:1}
#page-flexwall .card .x:hover{color:var(--er)}
#page-flexwall .card.mal{border-left-color:var(--er)}
#page-flexwall .card.mal .p{color:var(--er); font-weight:400; font-size:11px}
#page-flexwall .btn-add{
    width:100%; background:none; border:1px dashed var(--bd2); color:var(--tx2);
    border-radius:10px; padding:9px; cursor:pointer; font-size:12px;
    transition:border-color .15s,color .15s;
}
#page-flexwall .btn-add:hover{border-color:var(--ac); color:var(--ac)}

/* ── Formulario ───────────────────────────────────────────────────────────── */
#page-flexwall .grupo{margin-bottom:18px}
#page-flexwall .grupo > h2{
    margin:0 0 9px; font-size:9.5px; font-weight:700; letter-spacing:.16em;
    text-transform:uppercase; color:var(--tx3);
    padding-bottom:6px; border-bottom:1px solid var(--bd);
    display:flex; align-items:center; gap:6px;
}
#page-flexwall .campo, #fw-velo .campo{margin-bottom:9px}
#page-flexwall .campo label, #fw-velo .campo label{display:flex; align-items:center; gap:5px; font-size:10.5px; color:var(--tx2); margin-bottom:4px}
#page-flexwall .campo .u, #fw-velo .campo .u{color:var(--tx3); font-size:9.5px}
#page-flexwall input[type=text], #page-flexwall input[type=number], #page-flexwall select{
    width:100%; background:var(--bg3); border:1px solid var(--bd2); color:var(--tx);
    border-radius:7px; padding:7px 10px; font:inherit; font-size:13px;
    font-variant-numeric:tabular-nums; outline:none; transition:border-color .12s;
}
#page-flexwall input:focus, #page-flexwall select:focus{border-color:var(--ac)}
#page-flexwall .fila, #fw-velo .fila{display:grid; grid-template-columns:1fr 1fr; gap:8px}
#page-flexwall .seg, #fw-velo .seg{display:flex; background:var(--bg3); border:1px solid var(--bd2); border-radius:7px; padding:2px; gap:2px}
#page-flexwall .seg button, #fw-velo .seg button{
    flex:1; background:none; border:0; color:var(--tx2); font-size:11.5px;
    padding:6px 4px; border-radius:5px; cursor:pointer; transition:background .12s,color .12s;
}
#page-flexwall .seg button.on, #fw-velo .seg button.on{background:var(--ac); color:var(--acTx); font-weight:600}
#page-flexwall .seg.chico button, #fw-velo .seg.chico button{font-size:10.5px; padding:5px 3px}
#page-flexwall .check, #fw-velo .check{display:flex; align-items:center; gap:7px; cursor:pointer; user-select:none; padding:2px 0}
#page-flexwall .check input, #fw-velo .check input{width:15px; height:15px; accent-color:var(--ac); cursor:pointer}
#page-flexwall .check span, #fw-velo .check span{font-size:11.5px; color:var(--tx2); display:flex; align-items:center; gap:5px}
#page-flexwall .nota, #fw-velo .nota{font-size:10.5px; color:var(--tx3); margin-top:5px; line-height:1.45}

/* ── Tooltip ──────────────────────────────────────────────────────────────── */
#page-flexwall .i, #fw-velo .i{
    display:inline-flex; align-items:center; justify-content:center;
    width:14px; height:14px; min-width:14px; border-radius:50%;
    border:1px solid var(--tx3); color:var(--tx3);
    font-size:9px; font-weight:700; font-style:normal; cursor:help;
    background:none; padding:0; line-height:1;
    transition:border-color .15s,color .15s;
}
#page-flexwall .i:hover, #fw-velo .i:hover, #page-flexwall .i:focus-visible, #fw-velo .i:focus-visible{border-color:var(--ac); color:var(--ac); outline:none}
#fw-tip{
    position:fixed; z-index:9999; max-width:290px; pointer-events:none;
    background:var(--tipBg); border:1px solid var(--tipBd); border-radius:10px;
    padding:11px 13px; color:#e9e9f0;
    box-shadow:0 10px 30px rgba(0,0,0,.45);
    opacity:0; transform:translateY(4px); transition:opacity .14s,transform .14s;
}
#fw-tip.ver{opacity:1; transform:translateY(0)}
#fw-tip .tt{
    font-size:9.5px; letter-spacing:.13em; text-transform:uppercase;
    color:var(--ac); font-weight:700; margin-bottom:5px;
}
#fw-tip .tc{font-size:12px; line-height:1.55; color:#c9c9d6}
#fw-tip .te{
    font-size:11px; line-height:1.5; color:#9a9aab; margin-top:7px;
    padding-top:7px; border-top:1px solid rgba(255,255,255,.08);
}
#fw-tip .te b{color:#e9e9f0; font-weight:600}
#fw-tip::after{
    content:""; position:absolute; width:9px; height:9px; background:var(--tipBg);
    border-left:1px solid var(--tipBd); border-bottom:1px solid var(--tipBd);
}
#fw-tip[data-lado="arriba"]::after{bottom:-5.5px; left:var(--fx,20px); transform:rotate(-45deg)}
#fw-tip[data-lado="abajo"]::after{top:-5.5px; left:var(--fx,20px); transform:rotate(135deg)}

/* ── Ajuste ───────────────────────────────────────────────────────────────── */
#page-flexwall .ajuste{display:grid; grid-template-columns:1fr 1fr; gap:7px}
#page-flexwall .aj{
    background:var(--bg3); border:1px solid var(--bd2); border-radius:9px;
    padding:8px 9px; cursor:pointer; text-align:left; color:var(--tx2);
    transition:border-color .15s,background .15s;
}
#page-flexwall .aj:hover:not(:disabled){border-color:var(--ac)}
#page-flexwall .aj.on{border-color:var(--ac); background:var(--bg4)}
#page-flexwall .aj:disabled{opacity:.4; cursor:not-allowed}
#page-flexwall .aj .k{font-size:9px; letter-spacing:.11em; text-transform:uppercase; color:var(--tx3); display:flex; align-items:center; gap:4px}
#page-flexwall .aj .v{font-size:14.5px; font-weight:700; color:var(--tx); font-variant-numeric:tabular-nums; margin-top:2px}
#page-flexwall .aj.on .v{color:var(--ac)}
#page-flexwall .aj .d{font-size:10px; color:var(--tx3); margin-top:1px}
#page-flexwall .aj.exacta{grid-column:1 / -1}
#page-flexwall .aj.exacta .v{font-size:13px}

#page-flexwall .slider{margin-top:9px; padding:10px 11px; background:var(--bg3); border:1px solid var(--bd2); border-radius:9px}
#page-flexwall .slider .lec{display:flex; justify-content:space-between; align-items:baseline; margin-bottom:7px}
#page-flexwall .slider .lec .n{font-size:19px; font-weight:700; font-variant-numeric:tabular-nums}
#page-flexwall .slider .lec .n small{font-size:11px; font-weight:400; color:var(--tx3); margin-left:4px}
#page-flexwall .slider .lec .t{font-size:12px; color:var(--tl); font-variant-numeric:tabular-nums}
#page-flexwall .slider input[type=range]{
    width:100%; -webkit-appearance:none; appearance:none; height:4px; border-radius:3px;
    background:var(--bd2); outline:none; padding:0; margin:3px 0 0; cursor:pointer;
}
#page-flexwall .slider input[type=range]::-webkit-slider-thumb{
    -webkit-appearance:none; width:17px; height:17px; border-radius:50%;
    background:var(--ac); cursor:pointer; border:3px solid var(--bg3); box-shadow:0 0 0 1px var(--ac);
}
#page-flexwall .slider input[type=range]::-moz-range-thumb{
    width:14px; height:14px; border-radius:50%; background:var(--ac); cursor:pointer; border:2px solid var(--bg3);
}
#page-flexwall .slider .esc{display:flex; justify-content:space-between; font-size:9.5px; color:var(--tx3); margin-top:4px}
#page-flexwall .slider .pie{font-size:10.5px; color:var(--tx3); margin-top:7px; line-height:1.45}

/* ── Cotizador ────────────────────────────────────────────────────────────── */
#page-flexwall .kpis{display:grid; grid-template-columns:1fr 1fr; gap:7px; margin-bottom:14px}
#page-flexwall .kpi{background:var(--bg3); border:1px solid var(--bd); border-radius:9px; padding:8px 10px}
#page-flexwall .kpi .n{font-size:17px; font-weight:700; font-variant-numeric:tabular-nums; letter-spacing:-.02em}
#page-flexwall .kpi .l{font-size:9px; letter-spacing:.11em; text-transform:uppercase; color:var(--tx3); margin-top:1px}
#page-flexwall .kpi .d{font-size:10px; color:var(--tx2); margin-top:2px}
#page-flexwall table{width:100%; border-collapse:collapse; font-variant-numeric:tabular-nums; font-size:12px}
#page-flexwall th{
    text-align:left; font-size:9px; letter-spacing:.1em; text-transform:uppercase;
    color:var(--tx3); font-weight:600; padding:0 6px 6px; border-bottom:1px solid var(--bd);
}
#page-flexwall th.r, #page-flexwall td.r{text-align:right}
#page-flexwall td{padding:6px; border-bottom:1px solid var(--bd)}
#page-flexwall td .desc{font-size:10px; color:var(--tx3); margin-top:1px}
#page-flexwall tfoot td{border-top:1px solid var(--bd2); border-bottom:0; font-weight:700; padding-top:8px}
#page-flexwall .sobra{
    margin-top:9px; padding:8px 10px; border-radius:9px;
    background:var(--bg3); border:1px dashed var(--bd2);
    font-size:11.5px; color:var(--tx2); line-height:1.45;
    display:flex; flex-direction:column; gap:2px;
}
#page-flexwall .sobra .det{font-size:10.5px; color:var(--tx3); font-variant-numeric:tabular-nums}
#page-flexwall .aviso{
    border-radius:9px; padding:8px 10px; font-size:11.5px; line-height:1.45;
    border:1px solid var(--er); background:var(--erBg); color:var(--erTx);
}
#page-flexwall .aviso.warn{border-color:var(--wr); background:var(--wrBg); color:var(--wrTx)}
#page-flexwall .aviso b{display:block; margin-bottom:2px; font-size:9.5px; letter-spacing:.1em; text-transform:uppercase}
#page-flexwall .aviso + .aviso{margin-top:6px}
#page-flexwall .btn, #fw-velo .btn{
    background:var(--ac); color:var(--acTx); border:0; border-radius:8px;
    font-weight:600; font-size:12.5px; padding:9px 15px; cursor:pointer;
    transition:transform .12s,opacity .12s;
}
#page-flexwall .btn:hover:not(:disabled), #fw-velo .btn:hover:not(:disabled){transform:translateY(-1px)}
#page-flexwall .btn.sec, #fw-velo .btn.sec{background:transparent; border:1px solid var(--bd2); color:var(--tx2)}
#page-flexwall .btn.full, #fw-velo .btn.full{width:100%}
#page-flexwall .btn:disabled, #fw-velo .btn:disabled{opacity:.45; cursor:not-allowed; transform:none}
#page-flexwall details > summary{
    cursor:pointer; font-size:9.5px; letter-spacing:.16em; text-transform:uppercase;
    color:var(--tx3); padding:7px 0; list-style:none;
}
#page-flexwall details > summary::-webkit-details-marker{display:none}
#page-flexwall details > summary::before{content:"▸ "}
#page-flexwall details[open] > summary::before{content:"▾ "}
#page-flexwall pre.txt{
    background:var(--bg3); border:1px solid var(--bd); border-radius:9px; padding:10px;
    font:10.5px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace; color:var(--tx2);
    white-space:pre-wrap; margin:0;
}

/* ── Dibujo ───────────────────────────────────────────────────────────────── */
#page-flexwall .dib{
    flex:1; min-height:0; background:var(--bg2); border:1px solid var(--bd);
    border-radius:12px; padding:10px; display:flex; align-items:center; justify-content:center;
}
#page-flexwall .dib svg{width:100%; height:100%; display:block}
#page-flexwall .vacio{color:var(--tx3); font-size:12px; text-align:center; padding:24px}
#page-flexwall .leyenda{display:flex; gap:14px; flex-wrap:wrap; font-size:10.5px; color:var(--tx3)}
#page-flexwall .leyenda i{display:inline-block; width:9px; height:9px; border-radius:2px; margin-right:5px; vertical-align:-1px}

/* ── Modal ────────────────────────────────────────────────────────────────── */
#fw-velo{
    position:fixed; inset:0; background:var(--velo); z-index:900;
    display:flex; align-items:center; justify-content:center; padding:24px;
}
#page-flexwall .modal, #fw-velo .modal{
    background:var(--bg2); border:1px solid var(--bd2); border-radius:14px;
    width:min(560px,100%); max-height:88vh; overflow-y:auto;
    box-shadow:0 24px 60px rgba(0,0,0,.5);
}
#page-flexwall .modal .mh, #fw-velo .modal .mh{padding:16px 18px 12px; border-bottom:1px solid var(--bd); display:flex; align-items:center; gap:10px}
#page-flexwall .modal .mh h3, #fw-velo .modal .mh h3{margin:0; font-size:14px; font-weight:700}
#page-flexwall .modal .mh .cerrar, #fw-velo .modal .mh .cerrar{margin-left:auto; background:none; border:0; color:var(--tx3); font-size:20px; cursor:pointer; line-height:1}
#page-flexwall .modal .mb, #fw-velo .modal .mb{padding:16px 18px}
#page-flexwall .modal .mf, #fw-velo .modal .mf{padding:12px 18px 16px; border-top:1px solid var(--bd); display:flex; gap:8px; justify-content:flex-end}
#page-flexwall .res-item, #fw-velo .res-item{
    display:flex; align-items:center; gap:10px; padding:9px 11px; border-radius:9px;
    border:1px solid var(--bd); background:var(--bg3); margin-bottom:6px; cursor:pointer;
    transition:border-color .15s,background .15s;
}
#page-flexwall .res-item:hover:not(.no), #fw-velo .res-item:hover:not(.no){background:var(--bg4)}
#page-flexwall .res-item.on, #fw-velo .res-item.on{border-color:var(--ac); background:var(--bg4)}
#page-flexwall .res-item.no, #fw-velo .res-item.no{opacity:.5; cursor:not-allowed}
#page-flexwall .res-item .ti, #fw-velo .res-item .ti{flex:1; min-width:0}
#page-flexwall .res-item .ti b, #fw-velo .res-item .ti b{display:block; font-size:12.5px; font-weight:600}
#page-flexwall .res-item .ti span, #fw-velo .res-item .ti span{font-size:11px; color:var(--tx3)}
#page-flexwall .res-item .tp, #fw-velo .res-item .tp{
    font-size:9px; letter-spacing:.1em; text-transform:uppercase; padding:3px 7px;
    border-radius:5px; border:1px solid var(--bd2); color:var(--tx2);
}
#page-flexwall .res-item .tp.deal, #fw-velo .res-item .tp.deal{border-color:var(--ac); color:var(--ac)}
#page-flexwall .demo, #fw-velo .demo{
    font-size:10.5px; color:var(--wrTx); background:var(--wrBg); border:1px solid var(--wr);
    border-radius:8px; padding:7px 10px; margin-bottom:12px; line-height:1.45;
}
#page-flexwall .previo, #fw-velo .previo{background:var(--bg3); border:1px solid var(--bd); border-radius:10px; padding:12px; margin-top:12px}
#page-flexwall .previo .r, #fw-velo .previo .r{display:flex; justify-content:space-between; gap:12px; font-size:11.5px; padding:3px 0}
#page-flexwall .previo .r span:first-child, #fw-velo .previo .r span:first-child{color:var(--tx3)}
#page-flexwall .previo .r span:last-child, #fw-velo .previo .r span:last-child{text-align:right; font-variant-numeric:tabular-nums}
#page-flexwall .previo h4, #fw-velo .previo h4{margin:0 0 8px; font-size:9.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--tx3)}
