*{box-sizing:border-box}
html{color-scheme:light}
body{margin:0}
img{max-width:100%}
[hidden]{display:none!important}
  
  :root{
    color-scheme: light;
    --bg:        #f7f5f0;
    --card:      #ffffff;
    --card-alt:  #faf7f1;
    --ink:       #211f1c;
    --ink-muted: #6b6660;
    --ink-faint: #a39c92;
    --line:      #e7e2d8;
    --line-soft: #efe9dd;

    --accent:      #a8481c;
    --accent-ink:  #ffffff;
    --accent-soft: #f7ece3;
    --accent-line: #e8cdb8;

    --good:      #0ca30c;  --good-bg:     #e7f5e3;
    --warning:   #b3790c;  --warning-bg:  #fbf1dc;
    --critical:  #a33333;  --critical-bg: #fbe7e7;
    --info:      #33608f;  --info-bg:     #e8f0f8;
    --gold:      #b3852f;  --gold-bg:     #f7edd8;

    --font-display: "Fraunces", Georgia, serif;
    --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    --font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;

    --r-sm: 7px; --r-md: 10px; --r-lg: 16px;
    --shadow-card: 0 1px 2px rgba(33,31,28,.04), 0 10px 26px -18px rgba(33,31,28,.16);
    --header-h: 108px;
  }

  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]){
      color-scheme: dark;
      --bg:        #1c1a16; --card: #262320; --card-alt: #211e1a;
      --ink:       #f1ece2; --ink-muted: #b3ab9d; --ink-faint: #7d766a;
      --line:      #3a352e; --line-soft: #2e2a24;
      --accent:      #d97a44; --accent-ink: #1c1a16;
      --accent-soft: #362720; --accent-line: #5a3d2b;
      --good:      #5bc25b;  --good-bg:     #1e2c1c;
      --warning:   #d9a441;  --warning-bg:  #322914;
      --critical:  #e07070;  --critical-bg: #351f1f;
      --info:      #7ea8d1;  --info-bg:     #1c2733;
      --gold:      #d9b062;  --gold-bg:     #362c16;
      --shadow-card: 0 1px 2px rgba(0,0,0,.3), 0 10px 26px -18px rgba(0,0,0,.5);
    }
  }
  :root[data-theme="dark"]{
    color-scheme: dark;
    --bg:        #1c1a16; --card: #262320; --card-alt: #211e1a;
    --ink:       #f1ece2; --ink-muted: #b3ab9d; --ink-faint: #7d766a;
    --line:      #3a352e; --line-soft: #2e2a24;
    --accent:      #d97a44; --accent-ink: #1c1a16;
    --accent-soft: #362720; --accent-line: #5a3d2b;
    --good:      #5bc25b;  --good-bg:     #1e2c1c;
    --warning:   #d9a441;  --warning-bg:  #322914;
    --critical:  #e07070;  --critical-bg: #351f1f;
    --info:      #7ea8d1;  --info-bg:     #1c2733;
    --gold:      #d9b062;  --gold-bg:     #362c16;
    --shadow-card: 0 1px 2px rgba(0,0,0,.3), 0 10px 26px -18px rgba(0,0,0,.5);
  }

  *{box-sizing:border-box}
  html,body{margin:0; background:var(--bg); color:var(--ink); font-family:var(--font-body); line-height:1.5; -webkit-font-smoothing:antialiased;}

  header.shell{
    position:sticky; top:0; z-index:10; background:var(--bg);
    border-bottom:1px solid var(--line); padding:14px 20px 0;
  }
  .titlerow{display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:10px;}
  .brand{display:flex; align-items:center; gap:10px;}
  .borja-avatar{ object-fit:cover; border:2px solid var(--accent-line);
    flex:none; width:38px; height:38px; border-radius:50%; background:linear-gradient(150deg,var(--accent),var(--gold));
    color:var(--accent-ink); display:flex; align-items:center; justify-content:center;
    font-family:var(--font-display); font-weight:700; font-size:16px; box-shadow:var(--shadow-card);
  }
  .titlerow h1{
    font-family:var(--font-display); font-weight:700; font-size:clamp(19px,2.6vw,25px);
    margin:0; letter-spacing:-.01em;
  }
  .titlerow .sub{font-size:12.5px; color:var(--ink-muted);}

  .tabs{display:flex; gap:6px; overflow-x:auto;}
  .tab{
    display:flex; align-items:center; gap:7px; font-size:13.5px; font-weight:600;
    padding:9px 16px; border-radius:100px 100px 0 0; border:1px solid var(--line); border-bottom:none;
    background:var(--card-alt); color:var(--ink-muted); cursor:pointer; white-space:nowrap;
    transform:translateY(1px); font-family:var(--font-body);
  }
  .tab[aria-selected="true"]{
    background:var(--card); color:var(--ink); border-color:var(--line);
    box-shadow: 0 -2px 0 var(--accent) inset;
  }
  .tab .upd{font-size:10.5px; color:var(--ink-faint); font-weight:500; font-variant-numeric:tabular-nums;}
  .tab[aria-selected="true"] .upd{color:var(--accent);}

  main{position:relative;}
  .panel{display:none;}
  .panel[aria-hidden="false"]{display:block;}

  .wrap{max-width:960px; margin:0 auto; padding:30px 24px 90px;}
  .eyebrow{font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--accent); font-weight:700; margin-bottom:10px;}
  h2.pagehead{font-family:var(--font-display); font-weight:700; font-size:clamp(22px,3.8vw,30px); line-height:1.12; margin:0 0 10px; text-wrap:balance;}
  .dek{font-size:14.5px; color:var(--ink-muted); max-width:74ch; margin:0 0 18px;}
  .dek b{color:var(--ink); font-weight:600;}

  .openlive{
    display:inline-flex; align-items:center; gap:8px; font-size:13px; font-weight:700;
    background:var(--card); color:var(--accent); text-decoration:none; border:1px solid var(--accent-line);
    padding:9px 16px; border-radius:100px; margin:0 0 24px;
  }
  .openlive:hover{background:var(--accent-soft);}

  .stat-row{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px; margin-bottom:24px;}
  .stat{background:var(--card); border:1px solid var(--line); border-radius:var(--r-md); box-shadow:var(--shadow-card); padding:14px 16px;}
  .stat .n{color:var(--ink); font-family:var(--font-display); font-weight:700; font-size:22px; font-variant-numeric:tabular-nums; line-height:1.1;}
  .stat .l{font-size:11px; color:var(--ink-muted); margin-top:4px;}
  .stat .s{font-size:10.5px; color:var(--ink-faint); margin-top:2px;}
  .stat .n.g{color:var(--good)} .stat .n.r{color:var(--critical)}

  .sections{display:flex; flex-direction:column; gap:12px;}
  .field{background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); box-shadow:var(--shadow-card); padding:18px 22px;}
  .field .k{font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--accent); font-weight:700; margin-bottom:6px;}
  .field h3{font-family:var(--font-display); font-weight:600; font-size:16.5px; margin:0 0 8px; line-height:1.25;}
  .field p{font-size:13.8px; margin:0 0 8px; color:var(--ink);}
  .field p:last-child{margin-bottom:0;}
  .field p.muted{color:var(--ink-muted); font-size:13px;}
  .field b{color:var(--ink); font-weight:600;}
  .field code{font-family:var(--font-mono); font-size:.88em; background:var(--card-alt); border:1px solid var(--line); border-radius:5px; padding:1px 5px;}

  table{width:100%; border-collapse:collapse; font-size:12.5px; margin-top:6px;}
  th{text-align:left; font-size:10px; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-faint); font-weight:700; padding:7px 9px; border-bottom:1px solid var(--line);}
  td{padding:7px 9px; border-bottom:1px solid var(--line-soft); vertical-align:top;}
  tr:last-child td{border-bottom:none;}
  td.num, th.num{text-align:right; font-variant-numeric:tabular-nums;}
  .twrap{overflow-x:auto; margin-top:8px;}
  .g{color:var(--good)} .r{color:var(--critical)} .n{color:var(--ink-faint)}

  .gap{background:var(--warning-bg); border:1px solid var(--warning); border-radius:var(--r-sm); padding:9px 13px; font-size:12.5px; margin-top:10px;}
  .gap .lbl{font-weight:700; font-size:10px; letter-spacing:.06em; text-transform:uppercase; display:block; margin-bottom:3px;}
  @media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .gap{ color:#f1ddb0; } }
  :root[data-theme="dark"] .gap{ color:#f1ddb0; }

  .pend{background:var(--info-bg); border:1px solid var(--info); border-radius:var(--r-sm); padding:12px 16px; font-size:13px; margin-top:22px;}
  .pend .lbl{font-weight:700; font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; display:block; margin-bottom:4px;}
  @media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .pend{ color:#c9dcf0; } }
  :root[data-theme="dark"] .pend{ color:#c9dcf0; }

  .actions{display:flex; flex-direction:column; gap:12px;}
  .action{
    background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg);
    box-shadow:var(--shadow-card); padding:16px 20px; display:flex; gap:14px; align-items:flex-start;
  }
  .action .chk{
    flex:none; width:22px; height:22px; border-radius:6px; border:2px solid var(--accent-line);
    margin-top:2px;
  }
  .action .body{flex:1;}
  .action .tag{
    display:inline-block; font-size:10px; letter-spacing:.06em; text-transform:uppercase; font-weight:700;
    padding:2px 8px; border-radius:100px; margin-bottom:7px;
  }
  .tag.urgente{background:var(--critical-bg); color:var(--critical);}
  .tag.financiero{background:var(--warning-bg); color:var(--warning);}
  .tag.datos{background:var(--info-bg); color:var(--info);}
  .tag.sistema{background:var(--accent-soft); color:var(--accent);}
  .action p{font-size:14.5px; margin:0 0 6px;}
  .action p:last-child{margin-bottom:0;}
  .action .src{font-size:11.5px; color:var(--ink-faint);}

  footer.note{font-size:11.5px; color:var(--ink-faint); margin-top:30px; border-top:1px solid var(--line); padding-top:16px;}

  /* ---- Borja memo (inspirado en el "Advisor Memo" de Stitch) ---- */
  .memo{
    background:var(--accent-soft); border:1px solid var(--accent-line); border-radius:var(--r-lg);
    padding:16px 20px; display:flex; gap:14px; align-items:flex-start; margin-bottom:24px;
  }
  .memo .av{ object-fit:cover; border:1.5px solid var(--accent-line);flex:none; width:34px; height:34px; border-radius:50%; background:linear-gradient(150deg,var(--accent),var(--gold)); color:var(--accent-ink); display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-weight:700; font-size:14px;}
  .memo .who{font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--accent); font-weight:700; margin-bottom:4px;}
  .memo p{margin:0; font-size:14px; color:var(--ink); font-family:var(--font-display); font-style:italic; line-height:1.45;}

  /* ---- Charts ---- */
  .chart-box{position:relative; height:230px; margin-top:10px;}
  .chart-box.tall{height:320px;}
  .chart-box.short{height:150px;}
  .legend-row{display:flex; flex-wrap:wrap; gap:12px; font-size:11.5px; color:var(--ink-muted); margin-top:8px;}
  .legend-row .dot{display:inline-block; width:9px; height:9px; border-radius:50%; margin-right:5px; vertical-align:middle;}

  /* ---- Treemap ---- */
  .treemap{position:relative; width:100%; height:340px; border-radius:var(--r-sm); overflow:hidden; margin-top:10px;}
  .tcell{position:absolute; border:1.5px solid var(--card); display:flex; flex-direction:column; justify-content:flex-end; padding:6px 8px; overflow:hidden; cursor:default; transition:opacity .15s;}
  .tcell:hover{opacity:.85;}
  .tcell .tn{font-size:11px; font-weight:700; color:#fff; text-shadow:0 1px 2px rgba(0,0,0,.35); line-height:1.2;}
  .tcell .tv{font-size:10px; color:rgba(255,255,255,.9); text-shadow:0 1px 2px rgba(0,0,0,.35);}

  /* ---- Matriz 2x2 ---- */
  .matrix{position:relative; width:100%; height:340px; margin-top:14px; border-left:2px solid var(--line); border-bottom:2px solid var(--line);}
  .matrix .qlabel{position:absolute; font-size:10px; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-faint); font-weight:700; background:var(--card); padding:2px 6px; border-radius:5px; opacity:.92; pointer-events:none; z-index:3;}
  .matrix .axlabel{position:absolute; font-size:10.5px; color:var(--ink-muted); font-weight:600; background:var(--card); padding:2px 6px; border-radius:5px; opacity:.92; pointer-events:none; z-index:3;}
  .matrix .midline{position:absolute; background:var(--line-soft);}
  .mdot{position:absolute; border-radius:50%; transform:translate(-50%,50%); display:flex; align-items:center; justify-content:center; box-shadow:0 1px 3px rgba(0,0,0,.25); cursor:default;}
  .mdot .tip{position:absolute; bottom:calc(100% + 6px); left:50%; transform:translateX(-50%); background:var(--ink); color:var(--bg); font-size:10.5px; padding:5px 8px; border-radius:6px; white-space:nowrap; opacity:0; pointer-events:none; transition:opacity .12s; z-index:5;}
  .mdot:hover .tip{opacity:1;}

  /* ---- Flujo (sankey simplificado) ---- */
  .flow{display:flex; align-items:stretch; gap:0; margin-top:12px; font-size:12px;}
  .flow-col{display:flex; flex-direction:column; gap:4px; flex:1; min-width:0;}
  .flow-col + .flow-col{margin-left:18px;}
  .flow-node{border-radius:6px; padding:6px 10px; color:#fff; font-weight:600; font-size:11.5px; display:flex; justify-content:space-between; gap:8px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
  .flow-node .v{font-variant-numeric:tabular-nums; font-weight:700;}
  .flow-head{font-size:9.5px; text-transform:uppercase; letter-spacing:.06em; color:var(--ink-faint); font-weight:700; margin-bottom:4px;}

  /* ---- Tabla transacciones ---- */
  .txfilters{display:flex; flex-wrap:wrap; gap:8px; margin:10px 0;}
  .txfilters select, .txfilters input{
    font-family:var(--font-body); font-size:12.5px; padding:6px 9px; border-radius:7px;
    border:1px solid var(--line); background:var(--card-alt); color:var(--ink);
  }
  .txmeta{font-size:11.5px; color:var(--ink-faint); margin:6px 0;}
  .txpage{display:flex; gap:8px; align-items:center; margin-top:10px; font-size:12px;}
  .txpage button{font-family:var(--font-body); font-size:12px; font-weight:600; padding:5px 12px; border-radius:100px; border:1px solid var(--line); background:var(--card-alt); color:var(--ink); cursor:pointer;}
  .txpage button:disabled{opacity:.4; cursor:default;}

  /* ---- Inversiones: sector cards ---- */
  .seccard-row{display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:10px; margin-top:10px;}
  .seccard{background:var(--card-alt); border:1px solid var(--line); border-radius:var(--r-md); padding:11px 13px;}
  .seccard.held{border-color:var(--gold); background:var(--gold-bg);}
  .seccard .crow{display:flex; justify-content:space-between; align-items:baseline; gap:6px;}
  .seccard .nm{font-weight:700; font-size:12.5px;}
  .seccard .tk{font-size:10.5px; color:var(--ink-faint); font-family:var(--font-mono);}
  .seccard .pr{font-family:var(--font-display); font-weight:700; font-size:15px; margin-top:3px;}
  .seccard .mt{font-size:11px; color:var(--ink-muted); margin-top:3px;}
  .seccard .mt b{color:var(--ink);}

  /* ---- Semaforo ---- */
  .signal-row{display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:10px; margin-top:12px;}
  .sigbox{border-radius:var(--r-md); padding:14px 16px; border:1px solid var(--line);}
  .sigbox.buy{background:var(--good-bg); border-color:var(--good);}
  .sigbox.hold{background:var(--info-bg); border-color:var(--info);}
  .sigbox.sell{background:var(--critical-bg); border-color:var(--critical);}
  .sigbox .ttl{font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; margin-bottom:4px;}
  .sigbox .big{font-family:var(--font-display); font-weight:700; font-size:28px; line-height:1;}
  .sigbox .fm{font-size:11px; color:var(--ink-muted); margin-top:6px; line-height:1.4;}

  .rangebar{position:relative; height:8px; background:var(--line-soft); border-radius:5px; min-width:70px;}
  .rangebar .pos{position:absolute; top:-3px; width:2px; height:14px; background:var(--ink); transform:translateX(-1px);}

  .bondcard{display:flex; flex-wrap:wrap; gap:18px; margin-top:10px;}
  .bondcard .bi{flex:1; min-width:120px;}
  .bondcard .bi .l{font-size:10.5px; color:var(--ink-faint); text-transform:uppercase; letter-spacing:.04em;}
  .bondcard .bi .v{font-family:var(--font-display); font-weight:700; font-size:16px; margin-top:2px;}
/* ---- Reporte completo embebido ---- */
.embed-head{display:flex; align-items:center; justify-content:space-between; gap:12px; margin:6px 0 8px;}
.embed-head .k{font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--accent); font-weight:700;}
.openlive.small{margin:0; padding:6px 12px; font-size:12px;}
.embed-wrap{border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--shadow-card); background:var(--card); margin-bottom:24px;}
.embed-wrap iframe{display:block; width:100%; border:0; min-height:600px; height:1200px;}
details.derived{margin-top:8px;}
details.derived > summary{cursor:pointer; font-family:var(--font-display); font-weight:600; font-size:15px; padding:14px 18px; background:var(--card-alt); border:1px solid var(--line); border-radius:var(--r-lg); color:var(--ink); list-style:none; display:flex; align-items:center; gap:10px;}
details.derived > summary::before{content:"▸"; color:var(--accent); font-size:14px; transition:transform .15s;}
details.derived[open] > summary::before{transform:rotate(90deg);}
details.derived[open] > summary{border-radius:var(--r-lg) var(--r-lg) 0 0; margin-bottom:12px;}

/* ================= Rediseño 11-sep-2026: legibilidad, sumario, teclado, presentación ================= */
@media (min-width:1280px){
  .field p{font-size:15px;}
  .dek{font-size:15.5px;}
  .stat .n{font-size:28px;}
  .memo p{font-size:16px;}
  .action p{font-size:15.5px;}
  table{font-size:13px;}
}
.memo{padding:18px 22px;}
.memo .av{width:40px; height:40px;}

/* skeleton de carga */
.skel{color:transparent !important; background:linear-gradient(90deg,var(--line-soft) 25%,var(--line) 50%,var(--line-soft) 75%); background-size:200% 100%; animation:shimmer 1.2s infinite; border-radius:8px; min-height:1.2em;}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){ .skel{animation:none;} }

/* atajos */
.kbd-hint{font-size:11px; color:var(--ink-faint); margin:-4px 0 8px; display:none;}
.kbd-hint.show, html.present .kbd-hint{display:block;}

/* sumario lateral */
.sumario{display:none;}
@media (min-width:1180px){
  .sumario{display:block; position:fixed; left:max(12px, calc(50% - 480px - 230px)); top:130px; width:200px; max-height:calc(100vh - 150px); overflow:auto; font-size:12px; padding-right:6px;}
  .sumario .sh{font-size:10px; letter-spacing:.12em; text-transform:uppercase; color:var(--accent); font-weight:700; margin-bottom:8px;}
  .sumario a{display:block; color:var(--ink-muted); text-decoration:none; padding:5px 8px; border-left:2px solid var(--line); line-height:1.3;}
  .sumario a:hover{color:var(--ink);}
  .sumario a.on{color:var(--ink); border-left-color:var(--accent); font-weight:600; background:var(--accent-soft); border-radius:0 6px 6px 0;}
}
.field{scroll-margin-top:125px;} .embed-head{scroll-margin-top:125px;}

/* criterios */
.crit-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:10px; margin-top:10px;}
.crit{display:flex; gap:10px; background:var(--card-alt); border:1px solid var(--line); border-radius:var(--r-md); padding:11px 13px;}
.crit .cn{font-family:var(--font-display); font-weight:700; color:var(--accent); font-size:18px; line-height:1;}
.crit .ck{font-weight:700; font-size:13px; margin-bottom:3px;}
.crit .cv{font-size:12.5px; color:var(--ink-muted); line-height:1.45;}

/* analistas */
.voces{display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:10px; margin-top:10px;}
.voz{background:var(--card-alt); border:1px solid var(--line); border-radius:var(--r-md); padding:12px 14px;}
.voz .vh{display:flex; flex-wrap:wrap; gap:6px 10px; align-items:baseline; margin-bottom:6px;}
.voz .casa{font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; font-weight:700; color:var(--accent);}
.voz .vt{font-weight:600; font-size:13px;}
.voz .vd{font-size:11px; color:var(--ink-faint); margin-left:auto; font-variant-numeric:tabular-nums;}
.voz ul{margin:0; padding-left:18px; font-size:12.5px; line-height:1.45;}
.voz li{margin-bottom:4px;}
.lectura{margin-top:14px; display:flex; flex-direction:column; gap:8px;}
.lectura .lh{font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; font-weight:700; color:var(--accent);}
.lec{border-radius:var(--r-sm); padding:9px 13px; font-size:13px; border:1px solid var(--line);}
.lec .lt{display:inline-block; font-size:10px; letter-spacing:.06em; text-transform:uppercase; font-weight:700; margin-right:8px; padding:1px 7px; border-radius:100px;}
.lec.coincide{background:var(--good-bg); border-color:var(--good);} .lec.coincide .lt{background:var(--good); color:#fff;}
.lec.contradice{background:var(--critical-bg); border-color:var(--critical);} .lec.contradice .lt{background:var(--critical); color:#fff;}
.lec.alerta{background:var(--warning-bg); border-color:var(--warning);} .lec.alerta .lt{background:var(--warning); color:#fff;}

/* modo presentación (tecla P) */
html.present header.shell{position:static;}
html.present .wrap{max-width:1200px;}
html.present body{font-size:16px;}
html.present .field p, html.present .dek{font-size:17px;}
html.present h2.pagehead{font-size:clamp(28px,4vw,40px);}
html.present .stat .n{font-size:34px;}
html.present .sumario{display:none;}
html.present .tabs, html.present .titlerow .sub{opacity:.6;}

/* impresión: una pestaña = un documento */
@media print{
  header.shell{position:static; border:0;}
  .tabs, .kbd-hint, .sumario, .openlive, .txfilters, .txpage{display:none !important;}
  .panel[aria-hidden="true"]{display:none !important;}
  .wrap{max-width:none; padding:0;}
  .field, .action, .stat{box-shadow:none; break-inside:avoid;}
  .embed-wrap iframe{height:auto !important; min-height:0;}
  details.derived{display:none;}
  a{color:inherit; text-decoration:none;}
  body{background:#fff; color:#000;}
}
