/* ============================================================================
   PATRÓN MAESTRO DE ESTILOS (T4 re-skin, decisión Emilio + spec Vega)
   Capa 1: tokens semánticos (--afa-*) que consumen TODAS las páginas — cero hex crudos fuera de aquí.
   Capa 2: skins como bloques [data-skin] que REMAPEAN los mismos tokens (mecanismo del SPA).
     · nou  (DEFAULT): tema de referencia web/nou — paleta tricolor verde/azul/rojo, papel cálido,
       radios grandes, Inter, sombras suaves. Fuente: catalogo_checkout/admin_portadas/donacion_entrega.
     · afa: skin institucional anterior (Roboto/Barlow, azul #265fae, radios 2px) — respaldo.
   Modo oscuro: overrides best-effort por skin (decisión Vega: no se congela a light).
   ============================================================================ */

@font-face{font-family:'Roboto';font-style:normal;font-weight:400 700;font-display:swap;src:url('/landing/assets/fonts/roboto-var.woff2') format('woff2')}
@font-face{font-family:'Barlow Semi Condensed';font-style:normal;font-weight:600;font-display:swap;src:url('/landing/assets/fonts/barlow-semicondensed-600.woff2') format('woff2')}

/* ---------- SKIN NOU (default en :root) ---------- */
:root{
  --afa-verd:#62a82c; --afa-verd-fosc:#3e761b; --afa-blau:#2f66ae; --afa-blau-fosc:#234d86; --afa-vermell:#d0021b;
  --afa-bg:#fffaf3; --afa-surface:#ffffff; --afa-surface-2:#f2e7d8; --afa-border:#dfd5c8;
  --afa-text:#24312d; --afa-text-fort:#141d19; --afa-text-muted:#65706b;
  --afa-warn:#9a5a00; --afa-danger:#aa1426; --afa-ok-bg:#347c27; --afa-ok-fg:#ffffff;
  --afa-shadow:0 18px 48px rgba(48,54,42,.11);
  --afa-r:13px; --afa-r-lg:20px; --afa-r-xl:28px; --afa-r-pill:999px;
  --afa-font-body:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --afa-font-head:var(--afa-font-body);
  --afa-head-weight:900; --afa-head-track:-.035em; --afa-body-size:16px;
  --afa-ribbon:linear-gradient(90deg,var(--afa-verd) 0 34%,var(--afa-blau) 34% 68%,var(--afa-vermell) 68%);
  --afa-card-bg:rgba(255,255,255,.84);
  --afa-side-bg:linear-gradient(180deg,#2f66ae,#234d86);
  --afa-brand-bg:var(--afa-verd);
}
[data-theme="dark"]{
  --afa-verd:#7cc44a; --afa-verd-fosc:#62a82c; --afa-blau:#6f9bd6; --afa-blau-fosc:#2f66ae; --afa-vermell:#e4485c;
  --afa-bg:#191713; --afa-surface:#221f1a; --afa-surface-2:#2b271f; --afa-border:#3d382e;
  --afa-text:#e8e4da; --afa-text-fort:#f7f4ec; --afa-text-muted:#a8a294;
  --afa-warn:#e2a54e; --afa-danger:#f08a97; --afa-ok-bg:#7cc44a; --afa-ok-fg:#14260a;
  --afa-shadow:0 18px 48px rgba(0,0,0,.45);
  --afa-card-bg:rgba(34,31,26,.9);
  --afa-side-bg:linear-gradient(180deg,#1c2c44,#141f30);
}

/* ---------- SKIN AFA (institucional anterior, respaldo) ---------- */
[data-skin="afa"]{
  --afa-verd:#61a52e; --afa-verd-fosc:#4c8123; --afa-blau:#265fae; --afa-blau-fosc:#1d4a87; --afa-vermell:#d0021b;
  --afa-bg:#ffffff; --afa-surface:#ffffff; --afa-surface-2:#E7F6FF; --afa-border:#d7e3f2;
  --afa-text:#364151; --afa-text-fort:#0F172A; --afa-text-muted:#64748b;
  --afa-warn:#b45309; --afa-danger:#b91c1c; --afa-ok-bg:#3e6a1d; --afa-ok-fg:#ffffff;
  --afa-shadow:0 1px 3px rgba(15,23,42,.08);
  --afa-r:2px; --afa-r-lg:2px; --afa-r-xl:2px;
  --afa-font-body:'Roboto',system-ui,sans-serif; --afa-font-head:'Barlow Semi Condensed',system-ui,sans-serif;
  --afa-head-weight:600; --afa-head-track:.01em; --afa-body-size:17px;
  --afa-ribbon:var(--afa-verd);
  --afa-card-bg:var(--afa-surface);
  --afa-side-bg:#265fae; --afa-brand-bg:#61a52e;
}
[data-skin="afa"][data-theme="dark"]{
  --afa-verd:#8cc95c; --afa-verd-fosc:#61a52e; --afa-blau:#7fa9e0; --afa-blau-fosc:#265fae;
  --afa-bg:#0F172A; --afa-surface:#16223a; --afa-surface-2:#1b2a47; --afa-border:#2b3c5c;
  --afa-text:#cbd5e1; --afa-text-fort:#f1f5f9; --afa-text-muted:#8fa1ba;
  --afa-danger:#fca5a5; --afa-ok-bg:#8cc95c; --afa-ok-fg:#14260a;
  --afa-shadow:0 1px 3px rgba(0,0,0,.4);
  --afa-card-bg:var(--afa-surface); --afa-side-bg:#16223a;
}

/* ---------- COMPONENTES (solo consumen tokens) ---------- */
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{font-family:var(--afa-font-body);font-size:var(--afa-body-size);line-height:1.55;background:var(--afa-bg);color:var(--afa-text);overflow:hidden}
body[data-scroll="doc"]{overflow:auto;height:auto}
a{color:var(--afa-verd-fosc)}
a:hover{color:var(--afa-verd)}
:focus-visible{outline:3px solid color-mix(in srgb,var(--afa-blau) 40%,transparent);outline-offset:2px}
h1,h2,h3{font-family:var(--afa-font-head);font-weight:var(--afa-head-weight);color:var(--afa-text-fort);letter-spacing:var(--afa-head-track)}
.skip-link{position:absolute;left:-9999px;top:0;z-index:100;background:var(--afa-blau);color:#fff;padding:.6rem 1rem;font-weight:700;text-decoration:none;border-radius:0 0 var(--afa-r) 0}
.skip-link:focus{left:0}
.sess-box{display:inline-flex;align-items:center;gap:.4rem}
.sess-chip{font-family:var(--afa-font-head);font-weight:var(--afa-head-weight);color:var(--afa-blau);font-size:.9rem}

/* Cinta tricolor superior — firma del tema nou (en skin afa degrada a una línea verde) */
.afa-ribbon{height:7px;background:var(--afa-ribbon)}

.afa-shell{display:grid;grid-template-columns:230px 1fr;grid-template-rows:auto auto 1fr;height:100vh;grid-template-areas:"ribbon ribbon" "brand top" "side main"}
.afa-ribbon{grid-area:ribbon}
body[data-scroll="doc"] .afa-shell{height:auto;min-height:100vh}
.afa-brand{grid-area:brand;display:flex;align-items:center;gap:.6rem;padding:.5rem 1rem;background:var(--afa-surface);color:var(--afa-text-fort);font-family:var(--afa-font-head);font-weight:var(--afa-head-weight);font-size:1.02rem;letter-spacing:var(--afa-head-track);border-bottom:1px solid var(--afa-border)}
.afa-brand .glyph{width:38px;height:38px;border-radius:50% 50% 44% 56%;background:var(--afa-brand-bg);color:#fff;display:grid;place-items:center;font-weight:900;flex:0 0 auto;box-shadow:0 8px 18px color-mix(in srgb,var(--afa-verd) 25%,transparent)}
.afa-brand small{display:block;font-weight:500;font-size:.62rem;color:var(--afa-text-muted);letter-spacing:.02em}
.afa-top{grid-area:top;display:flex;align-items:center;gap:.8rem;padding:.45rem 1rem;background:color-mix(in srgb,var(--afa-bg) 90%,transparent);backdrop-filter:blur(16px);border-bottom:1px solid var(--afa-border)}
.afa-top .crumb{font-size:.82rem;color:var(--afa-text-muted)}
.afa-top .crumb b{color:var(--afa-text-fort)}
.afa-top .spacer{flex:1}
.afa-top select{border:1px solid var(--afa-border);background:var(--afa-surface);color:var(--afa-text);border-radius:var(--afa-r);padding:.35rem .6rem;font:inherit;font-size:.85rem}
.afa-top a.appLink{font-size:.8rem;font-weight:800;color:var(--afa-blau-fosc);text-decoration:none;border:1px solid var(--afa-border);border-radius:var(--afa-r);padding:.35rem .7rem;background:var(--afa-surface)}
.afa-top a.appLink:hover{border-color:var(--afa-blau)}

.afa-side{grid-area:side;overflow-y:auto;background:var(--afa-side-bg);color:#fff;padding:.8rem .55rem}
.afa-side .grp{font-family:var(--afa-font-head);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;opacity:.72;margin:1rem .6rem .3rem;font-weight:800;color:#fff}
.afa-side .grp:first-child{margin-top:.2rem}
.afa-side a{display:flex;align-items:center;gap:.55rem;text-decoration:none;color:#eef3fb;padding:.5rem .7rem;border-radius:var(--afa-r);font-size:.85rem;font-weight:600;opacity:.92}
.afa-side a:hover{background:rgba(255,255,255,.12);opacity:1;color:#fff}
.afa-side a[aria-current="page"]{background:var(--afa-verd);color:#fff;opacity:1;font-weight:800}
.afa-side a .tag{margin-left:auto;font-size:.6rem;font-weight:800;text-transform:uppercase;padding:.05rem .35rem;border-radius:var(--afa-r-pill);background:rgba(255,255,255,.16)}

.afa-main{grid-area:main;overflow-y:auto;padding:1.3rem 1.7rem 2.6rem;min-width:0}
body[data-scroll="doc"] .afa-main{overflow:visible}
.afa-main h1{font-size:clamp(1.6rem,3.4vw,2.4rem);line-height:1.04;margin:.1rem 0 .4rem}
.afa-main p.lead{color:var(--afa-text-muted);max-width:66ch;font-size:1rem;line-height:1.6}
.afa-card{background:var(--afa-card-bg);border:1px solid var(--afa-border);border-radius:var(--afa-r-lg);padding:1.1rem 1.3rem;box-shadow:var(--afa-shadow);margin-bottom:1rem}
.afa-card h2{font-size:1.18rem;margin:.2rem 0 .4rem}
.afa-stub{border:1px dashed var(--afa-border);border-radius:var(--afa-r-lg);padding:1.4rem;background:var(--afa-surface-2);color:var(--afa-text)}
.afa-stub .badge{display:inline-block;font-family:var(--afa-font-head);font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:#fff;background:var(--afa-blau);border-radius:var(--afa-r-pill);padding:.2rem .7rem;margin-bottom:.6rem}
.afa-stub ul{margin:.6rem 0 0;padding-left:1.1rem}
.afa-stub ul li{margin:.25rem 0}

/* Eyebrow (píldora de contexto del hero — firma nou) */
.afa-eyebrow{display:inline-flex;align-items:center;gap:8px;padding:7px 11px;border-radius:var(--afa-r-pill);background:color-mix(in srgb,var(--afa-verd) 11%,transparent);color:var(--afa-verd-fosc);border:1px solid color-mix(in srgb,var(--afa-verd) 20%,transparent);font-size:.75rem;font-weight:900;text-transform:uppercase;letter-spacing:.04em}

.afa-costs{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.8rem;margin:1rem 0}
.afa-cost{background:var(--afa-surface);border:1px solid var(--afa-border);border-radius:var(--afa-r-lg);padding:1rem;box-shadow:var(--afa-shadow)}
.afa-cost .n{font-family:var(--afa-font-head);font-size:1.9rem;font-weight:var(--afa-head-weight);letter-spacing:-.05em;color:var(--afa-text-fort)}
.afa-cost .l{color:var(--afa-text-muted);font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.02em}

.afa-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--afa-verd);color:#fff;text-decoration:none;border-radius:var(--afa-r);padding:11px 15px;font-weight:850;font-size:.9rem;border:0;cursor:pointer;transition:transform .15s ease,background .15s ease}
.afa-btn:hover{transform:translateY(-1px);background:var(--afa-verd-fosc);color:#fff}
.afa-btn.blue{background:var(--afa-blau)} .afa-btn.blue:hover{background:var(--afa-blau-fosc)}
.afa-btn.ghost{background:color-mix(in srgb,var(--afa-blau) 8%,transparent);color:var(--afa-blau-fosc);border:0}
.afa-btn.ghost:hover{background:color-mix(in srgb,var(--afa-blau) 14%,transparent);transform:translateY(-1px)}
.afa-btn:disabled{opacity:.45;cursor:not-allowed;transform:none}

/* Book-card con LOMO (firma nou): portada real o gradiente por idioma */
.afa-grid-books{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:13px}
.afa-book{background:var(--afa-surface);border:1px solid var(--afa-border);border-radius:calc(var(--afa-r) + 5px);padding:15px;display:grid;grid-template-columns:74px minmax(0,1fr);gap:12px;box-shadow:none;transition:transform .16s ease,box-shadow .16s ease}
.afa-book:hover{transform:translateY(-2px);box-shadow:0 13px 28px rgba(45,55,45,.08)}
.afa-book .cover{width:74px;min-height:104px;border-radius:8px 13px 13px 8px;padding:9px;display:flex;align-items:end;color:#fff;font-weight:900;font-size:.66rem;line-height:1.2;box-shadow:7px 8px 15px rgba(25,30,35,.16);position:relative;overflow:hidden;background:linear-gradient(155deg,var(--afa-verd),#356f31)}
.afa-book .cover.es{background:linear-gradient(155deg,var(--afa-blau),#28426d)}
.afa-book .cover::after{content:'';position:absolute;inset:0 auto 0 7px;width:2px;background:rgba(255,255,255,.25)}
.afa-book .cover img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.afa-book h3{font-size:1rem;margin:0 0 4px;color:var(--afa-text-fort);letter-spacing:-.025em}
.afa-book .meta{font-size:.78rem;color:var(--afa-text-muted)}
.afa-badge{display:inline-flex;align-items:center;padding:5px 8px;border-radius:var(--afa-r-pill);background:var(--afa-surface-2);color:var(--afa-text-muted);font-size:.68rem;font-weight:850}
.afa-badge.ok{background:color-mix(in srgb,var(--afa-verd) 14%,transparent);color:var(--afa-verd-fosc)}
.afa-badge.low{background:color-mix(in srgb,var(--afa-warn) 16%,transparent);color:var(--afa-warn)}
.afa-badge.off{background:color-mix(in srgb,var(--afa-danger) 12%,transparent);color:var(--afa-danger)}

/* Chips de filtro (firma nou) */
.afa-chip{border:1px solid var(--afa-border);background:var(--afa-surface);color:var(--afa-text-muted);border-radius:var(--afa-r-pill);padding:7px 10px;cursor:pointer;font-weight:800;font-size:.78rem}
.afa-chip.active{color:#fff;background:var(--afa-blau);border-color:var(--afa-blau)}

/* Panel con cabecera degradada (consola — de admin_portadas de nou) */
.afa-panel-head{padding:.9rem 1.1rem;margin:-1.1rem -1.3rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--afa-border);border-radius:var(--afa-r-lg) var(--afa-r-lg) 0 0;background:linear-gradient(120deg,color-mix(in srgb,var(--afa-verd) 8%,transparent),color-mix(in srgb,var(--afa-blau) 5%,transparent))}
.afa-panel-head h2{margin:0}

table.afa-table{width:100%;border-collapse:collapse;font-size:.85rem}
table.afa-table th,table.afa-table td{text-align:left;padding:.55rem .65rem;border-bottom:1px solid var(--afa-border)}
table.afa-table th{font-family:var(--afa-font-head);color:var(--afa-text-muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;font-weight:850}

.empty-state{padding:24px 16px;text-align:center;border:1px dashed var(--afa-border);border-radius:var(--afa-r-lg);color:var(--afa-text-muted);background:var(--afa-surface-2)}

/* Assistent flotant */
.chat-fab{position:fixed;right:18px;bottom:18px;width:54px;height:54px;border-radius:50%;border:0;background:var(--afa-verd);color:#fff;font-size:1.35rem;cursor:pointer;box-shadow:0 8px 18px color-mix(in srgb,var(--afa-verd) 30%,transparent);z-index:50;transition:transform .15s ease}
.chat-fab:hover{transform:translateY(-2px);background:var(--afa-verd-fosc)}
.chat-panel{position:fixed;right:18px;bottom:82px;width:min(370px,calc(100vw - 36px));max-height:min(480px,calc(100vh - 120px));display:flex;flex-direction:column;background:var(--afa-surface);border:1px solid var(--afa-border);border-radius:var(--afa-r-lg);box-shadow:var(--afa-shadow);z-index:50;overflow:hidden}
.chat-panel[hidden]{display:none}
.chat-head{display:flex;align-items:center;gap:.5rem;padding:.6rem .9rem;border-bottom:1px solid var(--afa-border);background:linear-gradient(120deg,color-mix(in srgb,var(--afa-verd) 10%,transparent),color-mix(in srgb,var(--afa-blau) 7%,transparent))}
.chat-head strong{font-family:var(--afa-font-head);color:var(--afa-text-fort);font-weight:850;flex:1}
.chat-head button{border:0;background:transparent;color:var(--afa-text-muted);cursor:pointer;font-size:.95rem;padding:.15rem .35rem}
.chat-head button:hover{color:var(--afa-text-fort)}
.chat-log{flex:1;overflow-y:auto;padding:.7rem .8rem;display:flex;flex-direction:column;gap:.45rem;min-height:120px}
.chat-log .msg{max-width:88%;padding:.5rem .7rem;border-radius:var(--afa-r);font-size:.85rem;line-height:1.4}
.chat-log .msg.user{align-self:flex-end;background:var(--afa-blau);color:#fff}
.chat-log .msg.ai{align-self:flex-start;background:var(--afa-surface-2);color:var(--afa-text)}
.chat-log .msg.ai a{color:var(--afa-verd-fosc)}
.chat-form{display:flex;gap:.4rem;padding:.55rem .8rem;border-top:1px solid var(--afa-border)}
.chat-form input{flex:1;padding:.55rem .65rem;border:1px solid var(--afa-border);border-radius:var(--afa-r);background:var(--afa-bg);color:var(--afa-text);font:inherit;font-size:.85rem}
.chat-form button{border:0;background:var(--afa-verd);color:#fff;border-radius:var(--afa-r);padding:.45rem .85rem;font-weight:850;cursor:pointer}
.chat-form button:hover{background:var(--afa-verd-fosc)}
.chat-consent{display:flex;align-items:flex-start;gap:.4rem;padding:.4rem .8rem .6rem;font-size:.7rem;color:var(--afa-text-muted)}
.chat-consent a{color:var(--afa-verd-fosc);text-decoration:none}

/* Feedback per pantalla */
.fb-btn{font:inherit;font-size:.78rem;font-weight:800;cursor:pointer;border:1px solid var(--afa-border);background:var(--afa-surface);color:var(--afa-blau-fosc);border-radius:var(--afa-r);padding:.35rem .7rem}
.fb-btn:hover{border-color:var(--afa-blau)}
dialog.fb-dlg{border:1px solid var(--afa-border);border-radius:var(--afa-r-lg);background:var(--afa-surface);color:var(--afa-text);padding:1.1rem 1.3rem;max-width:460px;width:calc(100vw - 40px);font-family:var(--afa-font-body);box-shadow:var(--afa-shadow)}
dialog.fb-dlg::backdrop{background:rgba(20,25,20,.45)}
.fb-dlg h2{margin:.1rem 0 .2rem;font-size:1.15rem}
.fb-dlg .ctx{font-size:.75rem;color:var(--afa-text-muted);margin-bottom:.7rem}
.fb-dlg .row{display:flex;gap:.6rem;flex-wrap:wrap;margin:.5rem 0}
.fb-dlg label{display:grid;gap:.25rem;font-size:.76rem;font-weight:800;color:var(--afa-text-muted);flex:1;min-width:9rem}
.fb-dlg select,.fb-dlg textarea{padding:.5rem .6rem;border:1px solid var(--afa-border);border-radius:var(--afa-r);background:var(--afa-bg);color:var(--afa-text);font:inherit;font-size:.85rem}
.fb-dlg textarea{width:100%;min-height:5rem;resize:vertical}
.fb-dlg .acts{display:flex;gap:.6rem;justify-content:flex-end;margin-top:.7rem}
.fb-result{font-size:.82rem;margin-top:.6rem;color:var(--afa-verd-fosc)}
.fb-result ul{margin:.3rem 0 0;padding-left:1.1rem;color:var(--afa-text)}

/* Selector de campanya de la consola (T4, prioridad Vega: cargar TEXTO este curso) */
.camp-select{display:inline-flex;align-items:center;gap:.4rem;font-size:.78rem;color:var(--afa-text-muted);font-weight:800}
.camp-select select{border:1px solid var(--afa-border);background:var(--afa-surface);color:var(--afa-text);border-radius:var(--afa-r);padding:.3rem .55rem;font:inherit;font-size:.8rem}

/* Hamburguesa + mòbil */
.afa-burger{display:none;font:inherit;font-size:1.15rem;line-height:1;cursor:pointer;border:1px solid var(--afa-border);background:var(--afa-surface);color:var(--afa-blau-fosc);border-radius:var(--afa-r);padding:.3rem .55rem;min-width:44px;min-height:40px}
@media (max-width:850px){
  .afa-shell{grid-template-columns:1fr;grid-template-rows:auto auto auto 1fr;grid-template-areas:"ribbon" "brand" "top" "main"}
  .afa-brand{padding:.5rem 1rem}
  .afa-top{padding:.4rem .7rem;flex-wrap:wrap;gap:.5rem}
  .afa-top .crumb{display:none}
  .afa-burger{display:inline-block}
  .afa-side{position:fixed;top:0;left:0;bottom:0;width:min(280px,82vw);z-index:60;transform:translateX(-100%);transition:transform .18s ease;box-shadow:none}
  .afa-side.open{transform:translateX(0);box-shadow:0 0 30px rgba(0,0,0,.35)}
  .afa-main{padding:1rem .9rem 2rem}
  .afa-costs{grid-template-columns:1fr 1fr}
  .chat-panel{right:10px;bottom:74px;width:calc(100vw - 20px)}
}
@media (prefers-reduced-motion:reduce){
  .afa-btn,.afa-book,.chat-fab,.afa-side{transition:none}
}