:root{
  --ink-900:#353535; --ink-950:#282728; --tan:#A87F55; --tan-soft:#BA9672;
  --paper:#FAF8F6; --surface:#FFFFFF; --surface-2:#F2EEE9;
  --line:#E1DBD3; --line-strong:#C6BCAF;
  --ink:#282728; --ink-soft:#635D57; --ink-faint:#948C83;
  --win:#3E7D5A; --lose:#A8483C; --warn:#8A6224;
  --shadow:0 1px 2px rgba(40,39,40,.05), 0 8px 28px -12px rgba(40,39,40,.18);
  color-scheme: light;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --ink-900:#353535; --ink-950:#282728; --tan:#BA9672; --tan-soft:#D4B592;
    --paper:#1C1B1C; --surface:#282728; --surface-2:#353535;
    --line:#454242; --line-strong:#5E5956;
    --ink:#F2EFEC; --ink-soft:#B3ACA5; --ink-faint:#8A837C;
    --win:#6FBF8F; --lose:#E58A7E; --warn:#D9AE6E;
    --shadow:0 1px 2px rgba(0,0,0,.3), 0 10px 30px -14px rgba(0,0,0,.7);
    color-scheme: dark;
  }
}
:root[data-theme="dark"]{
  --ink-900:#353535; --ink-950:#282728; --tan:#BA9672; --tan-soft:#D4B592;
  --paper:#1C1B1C; --surface:#282728; --surface-2:#353535;
  --line:#454242; --line-strong:#5E5956;
  --ink:#F2EFEC; --ink-soft:#B3ACA5; --ink-faint:#8A837C;
  --win:#6FBF8F; --lose:#E58A7E; --warn:#D9AE6E;
  --shadow:0 1px 2px rgba(0,0,0,.3), 0 10px 30px -14px rgba(0,0,0,.7);
  color-scheme: dark;
}

*{box-sizing:border-box}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:"Newsreader", Georgia, serif; font-size:17px; line-height:1.62;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4,.ui{font-family:"Montserrat","Helvetica Neue",Arial,sans-serif}
.num{font-family:"IBM Plex Mono",ui-monospace,Menlo,monospace;font-variant-numeric:tabular-nums}
.wrap{max-width:1080px;margin:0 auto;padding:0 24px}

.eyebrow{
  font-family:"Montserrat",sans-serif;font-size:11px;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;color:var(--tan);
  display:flex;align-items:center;gap:10px;margin:0 0 14px;
}
.eyebrow::after{content:"";flex:1;height:1px;background:var(--line)}

.masthead{background:var(--ink-950);color:#F2EFEC;border-bottom:3px solid var(--tan);padding:14px 0}
.masthead .wrap{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap}
.brand{font-family:"Montserrat",sans-serif;font-weight:800;font-size:15px;color:#fff}
.brand span{color:var(--tan-soft)}
.masthead .meta{font-family:"IBM Plex Mono",monospace;font-size:11px;color:#A39B93;letter-spacing:.04em}

.hero{background:linear-gradient(180deg,var(--ink-950) 0%,var(--ink-900) 100%);color:#F5F2EE;padding:56px 0 0;position:relative;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;background-image:repeating-linear-gradient(90deg,rgba(255,255,255,.045) 0 1px,transparent 1px 46px);pointer-events:none}
.hero .wrap{position:relative}
.hero h1{font-family:"Newsreader",serif;font-weight:300;font-size:clamp(32px,5.6vw,56px);line-height:1.08;margin:0 0 16px;text-wrap:balance;letter-spacing:-.015em}
.hero h1 em{font-style:italic;color:var(--tan-soft)}
.hero .lede{font-size:clamp(16px,2vw,19px);color:#C3BCB4;max-width:54ch;margin:0 0 30px;font-weight:300}
.hero .eyebrow{color:var(--tan-soft)}

/* Retrato del hero: a la derecha en escritorio, en fila bajo el texto en movil. */
.hero-top{display:grid;grid-template-columns:minmax(0,1fr) 208px;gap:44px;align-items:end}
.hero-text .lede{margin-bottom:8px}
.hero-portrait{margin:0;display:flex;flex-direction:column;gap:12px}
.hero-portrait .portrait{width:100%;flex:none}
.hero-portrait figcaption{display:flex;flex-direction:column;gap:2px;line-height:1.45}
.hero-portrait figcaption strong{
  font-family:"Montserrat",sans-serif;font-weight:700;font-size:13px;color:#fff;letter-spacing:.01em;
}
.hero-portrait figcaption span{font-family:"Montserrat",sans-serif;font-size:12px;color:#A9A199}
@media (max-width:820px){
  .hero-top{grid-template-columns:1fr;gap:22px;align-items:start}
  .hero-portrait{flex-direction:row;align-items:center;gap:14px}
  .hero-portrait .portrait{width:64px;flex:0 0 64px}
}
.hero .eyebrow::after{background:rgba(255,255,255,.18)}

.console{background:var(--surface);color:var(--ink);border:1px solid var(--line);border-bottom:none;box-shadow:var(--shadow);padding:26px 26px 30px;transform:translateY(1px)}
.console h2{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 20px;font-weight:700}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:26px}
@media (max-width:720px){.field-row{grid-template-columns:1fr;gap:22px}}
.field label{display:block;font-family:"Montserrat",sans-serif;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:8px}
.capital-display{font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums;font-size:clamp(30px,5vw,44px);font-weight:500;line-height:1;margin-bottom:6px}
.capital-display .cur{color:var(--tan);font-size:.55em;vertical-align:.28em;margin-right:2px}
input[type=range]{width:100%;-webkit-appearance:none;appearance:none;background:transparent;margin:10px 0 4px}
input[type=range]::-webkit-slider-runnable-track{height:3px;background:var(--line-strong);border-radius:2px}
input[type=range]::-moz-range-track{height:3px;background:var(--line-strong);border-radius:2px}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;border-radius:50%;background:var(--tan);border:3px solid var(--surface);box-shadow:0 0 0 1px var(--tan);margin-top:-10px;cursor:grab}
input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--tan);border:3px solid var(--surface);box-shadow:0 0 0 1px var(--tan);cursor:grab}
input[type=range]:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 1px var(--tan),0 0 0 5px rgba(168,127,85,.35)}
.range-ends{display:flex;justify-content:space-between;gap:10px;font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--ink-faint)}
.range-ends .no-va{color:var(--lose);font-weight:600}
/* El tramo que aprueba, en su propia línea para que no apriete los extremos. */
.range-ok{font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--ink-faint);
  text-align:center;margin-top:3px}
.range-ok.no-va{color:var(--lose);font-weight:600}

/* Selector de cuántas casas. Solo aparecen las que se pueden armar de verdad. */
.picker{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:20px}
.picker-label{font-family:"Montserrat",sans-serif;font-size:12px;font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
.picker-opts{display:flex;gap:6px;flex-wrap:wrap}
.picker-opts .po{
  font-family:"Montserrat",sans-serif;font-size:13px;font-weight:600;
  padding:7px 13px;border:1px solid var(--line-strong);background:var(--surface);
  color:var(--ink-soft);border-radius:3px;cursor:pointer;transition:background .15s,color .15s;
}
.picker-opts .po:hover{border-color:var(--tan);color:var(--ink)}
.picker-opts .po.on{background:var(--ink-950);border-color:var(--ink-950);color:#fff}
.picker-opts .po:focus-visible{outline:2px solid var(--tan);outline-offset:1px}

/* Tramo de iniciales que aprueban, pintado detrás de la barra. */
.track-wrap{position:relative}
.track-ok{
  position:absolute;top:15px;height:3px;background:var(--win);opacity:.5;
  border-radius:2px;pointer-events:none;transition:left .2s,width .2s;
}
select,input[type=number]{width:100%;padding:12px 13px;border:1px solid var(--line-strong);background:var(--surface-2);color:var(--ink);font-family:"Montserrat",sans-serif;font-size:15px;font-weight:500;border-radius:3px}
select:focus-visible,input:focus-visible{outline:2px solid var(--tan);outline-offset:1px}
.hint{font-size:13px;color:var(--ink-faint);margin-top:8px;line-height:1.5}
.hint a{color:var(--tan)}

.verdict{background:var(--ink-950);color:#F5F2EE;padding:22px 26px;display:flex;gap:18px;align-items:flex-start}
.verdict .mark{font-family:"IBM Plex Mono",monospace;font-size:12px;font-weight:600;letter-spacing:.1em;color:var(--tan-soft);border:1px solid rgba(186,150,114,.55);padding:4px 8px;white-space:nowrap;flex:none}
.verdict p{margin:0;font-size:17px;line-height:1.55;color:#DDD7D0}
.verdict strong{color:#fff;font-weight:500}
.verdict .big{font-family:"IBM Plex Mono",monospace;color:var(--tan-soft);font-weight:600;font-variant-numeric:tabular-nums}

section{padding:72px 0}
section.tight{padding:48px 0}
h2.section-title{font-family:"Newsreader",serif;font-weight:400;font-size:clamp(26px,3.8vw,38px);line-height:1.14;margin:0 0 12px;letter-spacing:-.01em;text-wrap:balance}
.section-sub{color:var(--ink-soft);max-width:60ch;margin:0 0 34px;font-size:17px}

.ledger{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);background:var(--surface)}
@media (max-width:860px){.ledger{grid-template-columns:1fr}}
.col{padding:26px 24px 28px;border-right:1px solid var(--line)}
.col:last-child{border-right:none}
@media (max-width:860px){.col{border-right:none;border-bottom:1px solid var(--line)}.col:last-child{border-bottom:none}}
.col.is-winner{background:var(--surface-2);box-shadow:inset 0 3px 0 var(--tan)}
.col h3{font-size:16px;font-weight:700;margin:0 0 2px}
.col .sub{font-size:13px;color:var(--ink-faint);font-family:"Montserrat",sans-serif;margin-bottom:20px;min-height:60px}
@media (max-width:860px){.col .sub{min-height:0}}
.figure{font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums;font-size:30px;font-weight:500;line-height:1.1;letter-spacing:-.02em}
.figure.up{color:var(--win)}
.figure.down{color:var(--lose)}
.figure-label{font-family:"Montserrat",sans-serif;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:6px;font-weight:600}
.delta{font-family:"IBM Plex Mono",monospace;font-size:13px;margin-top:6px;color:var(--ink-soft)}
.rowline{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-top:1px solid var(--line);font-size:14px;font-family:"Montserrat",sans-serif}
.rowline:first-of-type{margin-top:22px}
.rowline span:first-child{color:var(--ink-soft)}
.rowline span:last-child{font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums;font-weight:500}
/* Los dos motores reales de la ganancia: se destacan sobre las demás filas. */
.rowline.strong span:last-child{color:var(--win);font-weight:600}
.rowline .nil{color:var(--ink-faint);font-weight:400 !important;font-style:italic;
  font-family:"Montserrat",sans-serif !important;font-size:13px}

/* "Se paga sola": explica por qué el flujo cerca de cero es lo correcto.
   Sin cifra propia — la del mes vive en el panel del plan, con su contexto. */
.paga-sola{
  margin-top:22px;padding:24px 26px;background:var(--surface-2);border:1px solid var(--line);
}
.paga-sola p{margin:0;max-width:76ch;font-size:16px;line-height:1.62;color:var(--ink-soft)}
.paga-sola p+p{margin-top:12px}
.paga-sola strong{color:var(--ink);font-weight:600}
.paga-sola em{font-style:italic}
.tag{display:inline-block;font-family:"Montserrat",sans-serif;font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:3px 7px;border-radius:2px;margin-bottom:14px}
.tag.neutral{background:var(--surface-2);color:var(--ink-soft);border:1px solid var(--line)}
.tag.win{background:rgba(62,125,90,.13);color:var(--win);border:1px solid rgba(62,125,90,.32)}
.tag.lose{background:rgba(168,72,60,.11);color:var(--lose);border:1px solid rgba(168,72,60,.3)}
.bar{height:8px;background:var(--surface-2);border:1px solid var(--line);margin-top:18px;position:relative;overflow:hidden}
.bar i{position:absolute;inset:0 auto 0 0;background:var(--tan);transition:width .5s cubic-bezier(.2,.7,.3,1)}
.bar i.g{background:var(--win)}
.bar i.r{background:var(--lose)}

.deal{display:grid;grid-template-columns:1.15fr .85fr;border:1px solid var(--line);background:var(--surface)}
@media (max-width:860px){.deal{grid-template-columns:1fr}}
.deal-main{padding:30px 28px}
.deal-side{padding:30px 28px;background:var(--surface-2);border-left:1px solid var(--line)}
@media (max-width:860px){.deal-side{border-left:none;border-top:1px solid var(--line)}}
.deal-main.muted .figure,.deal-main.muted .stat .v,.deal-main.muted .split,.deal-main.muted .legend{opacity:.35}

.plan-line{font-size:19px;line-height:1.5;margin:0 0 22px;max-width:52ch}
.plan-line b{font-family:"IBM Plex Mono",monospace;font-weight:600;color:var(--tan)}
.split{display:flex;height:34px;border:1px solid var(--line-strong);margin:6px 0 10px;overflow:hidden}
.split div{display:flex;align-items:center;justify-content:center;font-family:"IBM Plex Mono",monospace;font-size:11px;color:#fff;transition:width .45s ease}
.split .s1{background:var(--ink-900)}
.split .s2{background:var(--tan)}
.split .s3{background:var(--ink-soft)}
.legend{display:flex;gap:18px;flex-wrap:wrap;font-family:"Montserrat",sans-serif;font-size:12px;color:var(--ink-soft)}
.legend b{display:inline-block;width:10px;height:10px;margin-right:6px;vertical-align:-1px}
.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 22px;margin-top:26px}
.stat .k{font-family:"Montserrat",sans-serif;font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint);font-weight:600}
.stat .v{font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums;font-size:22px;font-weight:500;margin-top:3px}
.stat .v.pos{color:var(--win)}
.stat .v.neg{color:var(--lose)}

.lever{margin-top:26px;padding:18px 20px;border:1px solid var(--line);background:var(--surface-2)}
.lever-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.lever-head label{font-family:"Montserrat",sans-serif;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
.lever-head .num{font-size:20px;font-weight:600;color:var(--tan)}
.lever .hint{margin-top:10px}

.alert{border-left:3px solid var(--warn);background:rgba(186,150,114,.12);padding:14px 16px;margin-top:22px;font-size:15px;line-height:1.55}
.alert.bad{border-left-color:var(--lose);background:rgba(168,72,60,.09)}
/* Solo el primer strong es el título del aviso; los de dentro del texto van en línea. */
.alert > strong:first-child{font-family:"Montserrat",sans-serif;font-weight:700;font-size:13px;letter-spacing:.03em;display:block;margin-bottom:3px;text-transform:uppercase}
.alert strong{font-weight:600;color:var(--ink)}
.alert .big{font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums;font-weight:600;color:var(--ink)}

details.assump{border:1px solid var(--line);background:var(--surface);border-top:none}
details.assump summary{cursor:pointer;padding:15px 26px;font-family:"Montserrat",sans-serif;font-size:13px;font-weight:600;color:var(--ink-soft);list-style:none;display:flex;justify-content:space-between;align-items:center}
details.assump summary::-webkit-details-marker{display:none}
details.assump summary::after{content:"Ajustar  +";font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--tan)}
details.assump[open] summary::after{content:"Cerrar  −"}
details.assump summary:focus-visible{outline:2px solid var(--tan);outline-offset:-3px}
.assump-body{padding:6px 26px 26px;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:20px}
.assump-body .field label{font-size:11px}

.mkt{width:100%;border-collapse:collapse;font-family:"Montserrat",sans-serif;font-size:14px;background:var(--surface)}
.mkt th,.mkt td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line);white-space:nowrap}
.mkt th{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint);border-bottom:1px solid var(--line-strong);font-weight:700}
.mkt td.n{font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums;text-align:right}
.mkt tr.on{background:var(--surface-2)}
.mkt tr.on td:first-child{box-shadow:inset 3px 0 0 var(--tan)}
.mkt .ok{color:var(--win);font-weight:600}
.mkt .no{color:var(--lose);font-weight:600}
.mkt .tibio{color:var(--warn);font-weight:600}
.table-scroll{overflow-x:auto;border:1px solid var(--line)}

.sources{background:var(--surface-2);border:1px solid var(--line);padding:28px}
.sources h3{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 16px;font-weight:700}
.sources ul{margin:0;padding-left:18px;font-size:14.5px;color:var(--ink-soft)}
.sources li{margin-bottom:9px}
.sources a{color:var(--tan);text-decoration:none;border-bottom:1px solid transparent}
.sources a:hover{border-bottom-color:var(--tan)}
.sources a:focus-visible{outline:2px solid var(--tan);outline-offset:2px}

.guide-index{border-top:1px solid var(--line-strong);border-bottom:1px solid var(--line-strong);display:grid;grid-template-columns:repeat(3,1fr);margin-bottom:52px}
@media (max-width:760px){.guide-index{grid-template-columns:1fr}}
.guide-index a{padding:14px 16px;border-right:1px solid var(--line);color:var(--ink);text-decoration:none;font-family:"Montserrat",sans-serif;font-size:13px;font-weight:600;display:flex;gap:11px;align-items:baseline;transition:background .18s ease}
.guide-index a:last-child{border-right:none}
.guide-index a:hover{background:var(--surface-2);color:var(--tan)}
.guide-index a:focus-visible{outline:2px solid var(--tan);outline-offset:-2px}
.guide-index a i{font-family:"IBM Plex Mono",monospace;font-style:normal;color:var(--tan);font-size:12px}
@media (max-width:760px){.guide-index a{border-right:none;border-bottom:1px solid var(--line)}.guide-index a:last-child{border-bottom:none}}
.narrow{max-width:660px;margin:0 auto}
.chapter{margin-bottom:54px;scroll-margin-top:20px}
.chapter-head{display:flex;gap:18px;align-items:baseline;border-bottom:1px solid var(--line-strong);padding-bottom:12px;margin-bottom:20px}
.chapter-num{font-family:"IBM Plex Mono",monospace;font-size:13px;color:var(--tan);font-weight:600;flex:none}
.chapter h3{font-family:"Newsreader",serif;font-weight:400;font-size:clamp(21px,2.8vw,28px);margin:0;line-height:1.2}
.chapter p,.chapter ul,.chapter ol{max-width:68ch}
.chapter li{margin-bottom:9px}
.chapter li::marker{color:var(--tan)}
.pull{border-left:3px solid var(--tan);padding:2px 0 2px 18px;margin:22px 0;font-size:19px;font-style:italic;max-width:60ch;font-weight:300}
.kv{width:100%;border-collapse:collapse;margin:20px 0;font-family:"Montserrat",sans-serif;font-size:14px}
.kv th,.kv td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--line)}
.kv th{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint);border-bottom:1px solid var(--line-strong)}
.kv td:last-child{font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
/* Desglose de lo que ya está contado arriba: no suma, explica. */
.kv tr.desglose td{font-size:12.5px;color:var(--ink-faint);padding-top:6px;padding-bottom:6px;border-bottom:none}
.kv tr.desglose td:first-child{padding-left:26px;position:relative}
.kv tr.desglose td:first-child::before{content:"↳";position:absolute;left:10px;opacity:.55}
/* La línea que remata el panel. */
.kv tr.total td{color:var(--tan-soft);border-top:1px solid var(--line-strong)}
.kv tr.total td strong{color:var(--tan-soft);font-weight:700}
.kv tr.total td:last-child{font-weight:700;font-size:16px}

.closing{background:var(--ink-950);color:#EAE5DF;padding:66px 0}
.closing h2{font-family:"Newsreader",serif;font-weight:300;font-size:clamp(27px,4.2vw,40px);margin:0 0 16px;color:#fff;text-wrap:balance}
.closing p{color:#B8B1A9;max-width:58ch}
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:26px;margin-top:36px}
.step{border-top:2px solid var(--tan);padding-top:14px}
.step .n{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--tan-soft);letter-spacing:.1em}
.step h4{font-family:"Montserrat",sans-serif;font-size:15px;margin:6px 0;color:#fff}
.step p{font-size:15px;color:#ABA49C;margin:0}
/* Cierre: el texto y la foto de los dos, lado a lado. */
.cierre-top{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:40px;align-items:center;margin-top:6px}
@media (max-width:760px){.cierre-top{grid-template-columns:1fr;gap:24px}}
.cierre-texto p+p{margin-top:12px}
.cierre-foto{margin:0}
.cierre-foto .portrait{width:100%;flex:none;aspect-ratio:3/4}
.cierre-foto .portrait img{object-position:50% 50%}
.cierre-foto .monogram{font-size:17px;letter-spacing:.1em}
@media (max-width:760px){
  .cierre-foto{max-width:300px}
}

.team{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid rgba(255,255,255,.15);margin-top:38px}
@media (max-width:700px){.team{grid-template-columns:1fr}}
.person{display:flex;gap:18px;padding:22px 24px;border-right:1px solid rgba(255,255,255,.15);align-items:flex-start}
.person:last-child{border-right:none}
@media (max-width:700px){.person{border-right:none;border-bottom:1px solid rgba(255,255,255,.15)}.person:last-child{border-bottom:none}}
@media (max-width:430px){.person{flex-direction:column;gap:14px}}
.person-body{min-width:0}

/* Retrato: proporcion fija para que no salte al cargar la imagen. */
.portrait{
  position:relative;flex:0 0 96px;width:96px;aspect-ratio:3/4;
  border-radius:3px;overflow:hidden;background:var(--ink-900);
  border:1px solid rgba(255,255,255,.16);
}
.portrait img{width:100%;height:100%;object-fit:cover;object-position:50% 18%;display:block}
.portrait .monogram{
  position:absolute;inset:0;display:none;align-items:center;justify-content:center;
  font-family:"Montserrat",sans-serif;font-weight:700;font-size:24px;
  letter-spacing:.06em;color:var(--tan-soft);
}
.portrait.is-fallback img{display:none}
.portrait.is-fallback .monogram{display:flex}

.team h4{font-family:"Montserrat",sans-serif;font-size:15px;color:#fff;margin:0 0 4px}
.team .role{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--tan-soft);margin-bottom:10px}
.team p{font-size:15px;color:#ABA49C;margin:0}
/* FREC 61J2-10.025: el nombre personal nunca mas grande que el de la firma. */
.team .who{font-family:"Montserrat",sans-serif;font-size:13px;color:#C8C1B9;margin:0 0 8px;line-height:1.5}
.team .who .lic{font-family:"IBM Plex Mono",monospace;font-size:12px;color:#9A928A;white-space:nowrap}

.footer{background:var(--ink-950);border-top:1px solid rgba(255,255,255,.1);padding:34px 0 30px;color:#8A827A;font-size:13px}
.footer strong{color:#D6D0C9;font-family:"Montserrat",sans-serif;font-weight:600}
.footer a{color:#B0A79E;text-decoration:underline;text-underline-offset:2px}
.footer a:hover{color:var(--tan-soft)}

.footer-firms{display:grid;grid-template-columns:1fr 1fr;gap:14px 32px}
@media (max-width:700px){.footer-firms{grid-template-columns:1fr}}
.firm{display:flex;flex-direction:column;gap:3px}
.firm strong{font-size:14px;letter-spacing:.01em}
.firm span{color:#8A827A;font-size:12.5px;line-height:1.55}

.footer-legal{margin-top:22px;padding-top:20px;border-top:1px solid rgba(255,255,255,.1);
  display:grid;gap:10px;max-width:none}
.footer-legal p{margin:0;font-size:12.5px;line-height:1.6;color:#847C74;max-width:92ch}
.footer-legal strong{color:#A79E95;font-weight:600}

.footer-bottom{margin-top:20px;padding-top:18px;border-top:1px solid rgba(255,255,255,.1);
  display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;align-items:flex-start}
.eho{display:flex;align-items:flex-start;gap:11px;max-width:62ch;color:#847C74;font-size:12.5px;line-height:1.55}
.eho svg{flex:0 0 26px;color:#9A928A;margin-top:1px}
.footer-note{color:#6F6862;font-size:12.5px}

@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms !important;transition-duration:.01ms !important}}

/* Selector de años de la proyección. Es global: mueve toda la página. */
.anios{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin:10px 0 4px}
.anios .ao{
  font-family:"IBM Plex Mono",monospace;font-size:13px;font-weight:500;
  padding:5px 10px;border:1px solid rgba(255,255,255,.22);background:transparent;
  color:#B3ACA5;border-radius:3px;cursor:pointer;transition:background .15s,color .15s;
}
.anios .ao:hover{border-color:var(--tan-soft);color:#fff}
.anios .ao.on{background:var(--tan);border-color:var(--tan);color:#fff;font-weight:600}
.anios .ao:focus-visible{outline:2px solid var(--tan-soft);outline-offset:1px}
.anios .ao-suf{font-family:"Montserrat",sans-serif;font-size:11px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink-faint);margin-left:4px}

/* ─────────────────────────────────────────────────────────────
   Teléfono. Lo que en escritorio cabe en una fila, aquí no:
   los botones quedaban de 29px de alto, imposibles de acertar
   con el dedo, y las etiquetas de la barra se apretaban.
   ───────────────────────────────────────────────────────────── */
@media (max-width:560px){
  /* Selector de casas: una rejilla, no una fila que se parte fea. */
  .picker{flex-direction:column;align-items:stretch;gap:9px}
  .picker-opts{display:grid;grid-template-columns:1fr 1fr;gap:7px}
  .picker-opts .po{padding:12px 8px;text-align:center;font-size:13.5px}
  /* "La que más rinda" es la más larga: se lleva la fila entera. */
  .picker-opts .po:first-child{grid-column:1 / -1}

  /* Selector de años: seis botones que se reparten el ancho. */
  .anios{gap:6px}
  .anios .ao{flex:1 1 0;min-width:0;padding:11px 0;font-size:14px}
  .anios .ao-suf{flex:0 0 100%;margin:2px 0 0;text-align:center}

  /* La etiqueta de la barra y su porcentaje, sin pelearse el ancho. */
  .lever{padding:16px 15px}
  .lever-head{flex-wrap:wrap;gap:2px}
  .lever-head label{flex:1 1 100%}
  .lever-head .num{font-size:24px}
  .range-ends{font-size:11px}
  .range-ok{font-size:11px;line-height:1.4}

  /* Las etiquetas de las columnas eran de 10px: ilegibles en mano. */
  .tag{font-size:11px;padding:4px 8px}

  /* Y los enlaces de fuente, que quedaban de 13px de alto. */
  .hint a,.col .sub a{display:inline-block;padding:3px 0}
}

/* Aviso de que la tabla de zonas se desliza: en teléfono no se nota sola. */
@media (max-width:760px){
  .table-scroll{position:relative}
  .table-scroll::after{
    content:"→ desliza para ver el resto";
    display:block;padding:8px 14px;border-top:1px solid var(--line);
    font-family:"Montserrat",sans-serif;font-size:11px;color:var(--ink-faint);
    background:var(--surface-2);position:sticky;left:0;
  }
}
