@font-face{font-family:General Sans;src:url('/assets/fonts/general-sans-variable.woff2') format('woff2');font-weight:200 700;font-style:normal;font-display:swap}

:root{
  /* Mismo lenguaje que antares.productions y el Panel: papel, tinta y cobalto para la acción principal. */
  --bg:#f5f5f7;
  --fg:#0c1024;
  --muted:#6e6e73;
  --dim:#8e8e93;
  --line:#e5e5ea;
  --card:#fff;
  --card-hi:#fff;
  --track:#ececf0;
  --soft:#f5f5f7;
  --blue:#2449ff;
  --blue-hover:#1a38e6;
  --good:#248a3d;
  --warn:#9a5b00;
  --serious:#c4441b;
  --bad:#d70015;
  --ease:cubic-bezier(.2,.8,.2,1);
  --top:env(safe-area-inset-top,0px);
  --bottom:env(safe-area-inset-bottom,0px);
  color-scheme:light;
}
*{box-sizing:border-box}
html{background:var(--bg);-webkit-text-size-adjust:100%}
body{margin:0;min-height:100vh;background:var(--bg);color:var(--fg);font-family:General Sans,system-ui,-apple-system,sans-serif;font-size:15px;line-height:1.45;letter-spacing:-.005em;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}
h1,h2,h3,p{margin:0;font-weight:400}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
button:focus-visible,summary:focus-visible,textarea:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
::selection{background:var(--blue);color:#fff}
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.num{font-variant-numeric:tabular-nums}
.noscript{padding:40px 20px;color:var(--muted)}


/* ---------- Acceso ---------- */
.lock{min-height:100vh;display:flex;flex-direction:column;justify-content:center;gap:14px;max-width:420px;margin:0 auto;padding:calc(var(--top) + 40px) 24px calc(var(--bottom) + 40px)}
.lock__mono{width:56px;height:56px;color:var(--fg);margin-bottom:14px}
.lock__title{font-size:36px;font-weight:500;letter-spacing:-.035em;line-height:1.05}
.lock__text{color:var(--muted);max-width:32ch}
.lock__form{display:grid;gap:12px;margin-top:12px}
.lock textarea{width:100%;resize:none;background:var(--card);border:1px solid var(--line);border-radius:16px;color:var(--fg);font:13px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;padding:14px 16px;word-break:break-all}
.lock textarea:focus{border-color:var(--blue);outline:none}
.lock textarea::placeholder{color:var(--dim);font-family:General Sans,system-ui,sans-serif;font-size:15px}
.lock__row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.lock__err{min-height:1.4em;color:var(--serious);font-size:13px}
.btn{min-height:48px;border-radius:999px;border:1px solid #d2d2d7;background:#fff;padding:0 20px;font-weight:500;transition:transform .2s var(--ease),background .2s}
.btn:active{transform:scale(.97)}
.btn--main{background:var(--blue);color:#fff;border-color:var(--blue)}
@media (hover:hover){.btn--main:hover{background:var(--blue-hover);border-color:var(--blue-hover)}}
.btn[disabled]{opacity:.5}

/* ---------- Estructura ---------- */
.app{max-width:560px;margin:0 auto;padding:0 16px calc(var(--bottom) + 104px)}
.top{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 -16px;padding:calc(var(--top) + 10px) 16px 10px;background:rgba(245,245,247,.86);-webkit-backdrop-filter:saturate(1.6) blur(16px);backdrop-filter:saturate(1.6) blur(16px);border-bottom:1px solid transparent;transition:border-color .2s}
.top.is-scrolled{border-bottom-color:var(--line)}
.top__brand{display:flex;align-items:center;gap:12px;min-width:0}
.top__mono{width:30px;height:30px;flex:none;color:var(--fg)}
.top__title{font-size:17px;font-weight:600;letter-spacing:-.03em}
.sync{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--muted);white-space:nowrap}
.sync__dot{width:7px;height:7px;border-radius:50%;background:var(--good);box-shadow:0 0 0 0 rgba(12,163,12,.6);flex:none}
.sync.is-live .sync__dot{animation:pulse 2.4s var(--ease) infinite}
.sync.is-loading .sync__dot{background:var(--muted);animation:blink 1s ease-in-out infinite}
.sync.is-stale .sync__dot{background:var(--warn);animation:none}
.sync.is-error .sync__dot{background:var(--bad);animation:none}
.iconbtn{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line);background:var(--card);flex:none;transition:transform .2s var(--ease)}
.iconbtn:active{transform:scale(.92)}
.iconbtn svg{width:20px;height:20px}
.iconbtn.is-spinning svg{animation:spin .9s linear infinite}

.ptr{position:fixed;left:50%;top:calc(var(--top) + 66px);z-index:9;width:36px;height:36px;margin-left:-18px;border-radius:50%;display:grid;place-items:center;background:var(--card-hi);border:1px solid var(--line);
  opacity:calc(var(--pull,0) / 80);transform:translateY(calc(var(--pull,0) * .5px - 20px)) rotate(calc(var(--pull,0) * 3deg));pointer-events:none}
.ptr svg{width:18px;height:18px}
.ptr.is-ready{background:var(--fg);color:#fff}

.banner{margin:4px 0 8px;padding:10px 14px;border-radius:14px;font-size:13px;color:var(--warn);background:#fdf3e2;border:1px solid #f3ddb5}

.view{display:grid;gap:14px;padding-top:8px}
.eyebrow{font-size:13px;color:var(--muted)}
.note{font-size:12.5px;color:var(--muted);line-height:1.5}

/* ---------- Resumen ---------- */
.hero{padding:22px 2px 10px}
.hero__num{font-size:clamp(52px,17vw,76px);font-weight:500;letter-spacing:-.05em;line-height:1.02;margin:4px 0 8px}
.hero__sub{font-size:14px;color:var(--muted)}
.hero__sub b{color:var(--fg);font-weight:500}

.kpis{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.kpi,.card{background:var(--card);border:1px solid var(--line);border-radius:22px}
.kpi{padding:16px 16px 15px;min-width:0;display:grid;gap:4px;align-content:start}
.kpi__lbl{font-size:12.5px;color:var(--muted)}
.kpi__num{font-size:clamp(23px,7vw,30px);font-weight:500;letter-spacing:-.04em;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi__note{font-size:12px;color:var(--dim);line-height:1.35}
.kpi__note .warn{color:var(--warn)}

.card{padding:18px 16px;display:grid;gap:14px;min-width:0}
.card__head{display:grid;gap:4px}
.card h2,.card summary>span:first-child{font-size:17px;font-weight:500;letter-spacing:-.02em}
.card__read{font-size:13px;color:var(--muted);min-height:1.45em}
.card__read b{color:var(--fg);font-weight:500}

/* Columnas por mes */
.cols{--plot:150px;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:8px;align-items:end;height:calc(var(--plot) + 42px)}
.col{display:grid;grid-template-rows:auto 1fr auto;justify-items:center;height:100%;min-width:0;gap:6px;padding:0;position:relative}
.col__val{font-size:11.5px;color:var(--muted);white-space:nowrap;align-self:end;transition:color .2s}
.col__val.is-hidden{visibility:hidden}
.col__plot{width:100%;height:var(--plot);display:flex;align-items:flex-end;justify-content:center}
.col__bar{width:min(100%,46px);height:max(var(--h,0%),3px);border-radius:8px 8px 3px 3px;background:#d8d8de;transform-origin:bottom;transition:background .25s}
.col.is-now .col__bar{background:var(--fg)}
.col.is-sel .col__bar{background:#8e8e93}
.col.is-now.is-sel .col__bar{background:var(--fg)}
.col.is-sel .col__val,.col.is-now .col__val{color:var(--fg)}
.col__lbl{font-size:12px;color:var(--dim);text-transform:capitalize}
.col.is-sel .col__lbl{color:var(--fg)}

/* Barras horizontales */
.bars{display:grid;gap:12px}
.bar{display:grid;gap:7px}
.bar__top{display:flex;justify-content:space-between;gap:12px;font-size:13.5px}
.bar__k{color:var(--fg);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bar__v{white-space:nowrap;font-variant-numeric:tabular-nums}
.bar__t{height:8px;border-radius:99px;background:var(--track);overflow:hidden}
.bar__f{height:100%;width:var(--w,0%);border-radius:99px;background:var(--fg);transform-origin:left}
.bar.is-soft .bar__f{background:#a1a1a6}

/* Lista para revisar */
.checks{list-style:none;margin:0;padding:0;display:grid}
.check{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:4px 12px;align-items:start;padding:12px 0;border-top:1px solid var(--line)}
.check:first-child{border-top:0;padding-top:0}
.check__dot{width:8px;height:8px;border-radius:50%;margin-top:7px;background:var(--dim)}
.check__dot.warn{background:var(--warn)}
.check__dot.bad{background:var(--bad)}
.check__dot.good{background:var(--good)}
.check__t{font-size:14px;font-weight:500}
.check__d{grid-column:2;font-size:12.5px;color:var(--muted)}
.check__v{font-size:14px;white-space:nowrap;font-variant-numeric:tabular-nums}
.check.is-link{cursor:pointer}
.check.is-link .check__t::after{content:' ›';color:var(--dim)}

.install{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 16px;border-radius:18px;border:1px dashed #d2d2d7;background:#fff;font-size:13px;color:var(--muted)}
.foot{font-size:12px;color:var(--dim);text-align:center;padding:10px 12px 0;line-height:1.6}
.link{color:var(--muted);text-decoration:underline;text-underline-offset:3px;margin-top:6px;min-height:44px;padding:0 10px}

/* ---------- Cobros ---------- */
.ring{position:relative;width:min(76vw,280px);aspect-ratio:1;margin:18px auto 4px}
.ring__svg{width:100%;height:100%;transform:rotate(-90deg)}
.ring__track{fill:none;stroke:var(--track);stroke-width:13}
.ring__bar{fill:none;stroke:var(--fg);stroke-width:13;stroke-linecap:round;stroke-dasharray:527.79;stroke-dashoffset:527.79;transition:stroke-dashoffset 1.5s var(--ease) .15s}
.ring__center{position:absolute;inset:0;display:grid;place-content:center;text-align:center;gap:2px}
.ring__num{font-size:clamp(34px,11vw,46px);font-weight:500;letter-spacing:-.05em;line-height:1.05}
.ring__pct{font-size:13px;color:var(--muted)}
.ring__legend{text-align:center;font-size:13.5px;color:var(--muted);margin-bottom:6px}
.ring__legend b{color:var(--fg);font-weight:500}

.projects{display:grid;gap:10px}
.proj{padding:16px;display:grid;gap:10px}
.proj__top{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 14px;align-items:start}
.proj__name{font-size:16px;font-weight:500;letter-spacing:-.02em}
.proj__svc{font-size:12.5px;color:var(--muted);grid-column:1}
.proj__saldo{grid-column:2;grid-row:1 / span 2;text-align:right}
.proj__saldo b{display:block;font-size:22px;font-weight:500;letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.proj__saldo span{font-size:11.5px;color:var(--dim)}
.proj__prog{display:grid;gap:6px}
.proj__prog p{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.proj__cond{font-size:13px;color:var(--fg);opacity:.86;line-height:1.45}
.proj__foot{display:flex;flex-wrap:wrap;gap:6px}

.chip{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;line-height:1;padding:5px 9px;border-radius:999px;border:1px solid var(--line);color:var(--muted);white-space:nowrap}
.chip::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.9}
.chip.plain::before{display:none}
.chip.good{color:var(--good);border-color:rgba(36,138,61,.28);background:#eef7f0}
.chip.warn{color:var(--warn);border-color:#f0d6a8;background:#fdf3e2}
.chip.bad{color:var(--bad);border-color:rgba(215,0,21,.25);background:#fdeeee}

details.card:not([open]){gap:0}
.card summary{list-style:none;display:flex;justify-content:space-between;align-items:center;cursor:pointer;min-height:24px}
.card summary::-webkit-details-marker{display:none}
.summary__n{font-size:13px;color:var(--muted)}
.summary__n::after{content:'';display:inline-block;width:7px;height:7px;margin-left:10px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-3px) rotate(45deg);transition:transform .25s var(--ease)}
details[open] .summary__n::after{transform:translateY(0) rotate(-135deg)}

.mini{display:grid}
.mrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 12px;padding:11px 0;border-top:1px solid var(--line)}
.mrow:first-child{border-top:0}
.mrow__t{font-size:14px;font-weight:500;min-width:0}
.mrow__v{font-size:14px;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.mrow__d{font-size:12.5px;color:var(--muted);min-width:0}
.mrow__s{text-align:right}
.empty{font-size:13px;color:var(--dim);padding:6px 0}

.split{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.split div{display:grid;gap:2px;padding:12px;border-radius:14px;background:var(--soft)}
.split span{font-size:11.5px;color:var(--muted)}
.split b{font-size:19px;font-weight:500;letter-spacing:-.03em;font-variant-numeric:tabular-nums}

/* ---------- Movimientos ---------- */
.seg{position:sticky;top:calc(var(--top) + 64px);z-index:5;display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:4px 16px 10px;background:rgba(245,245,247,.92);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.seg::-webkit-scrollbar{display:none}
.seg button{flex:none;min-height:38px;padding:0 14px;border-radius:999px;border:1px solid #d2d2d7;background:#fff;color:var(--fg);font-size:13.5px;transition:background .2s,color .2s,border-color .2s}
.seg button span{color:var(--dim);margin-left:3px;font-variant-numeric:tabular-nums}
.seg button[aria-pressed="true"]{background:var(--fg);color:#fff;border-color:var(--fg)}
.seg button[aria-pressed="true"] span{color:rgba(255,255,255,.62)}

.movs{display:grid;gap:18px}
.mgroup{display:grid;gap:2px}
.mgroup__h{display:flex;justify-content:space-between;font-size:12.5px;color:var(--muted);padding:0 4px 6px;text-transform:capitalize}
.mgroup__h span:last-child{text-transform:none;font-variant-numeric:tabular-nums}
.mlist{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:0 14px}
.mv{border-top:1px solid var(--line)}
.mv:first-child{border-top:0}
.mv__btn{width:100%;display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:12px;align-items:center;text-align:left;padding:12px 0}
.mv__ic{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#f2f2f4;color:var(--muted)}
.mv__ic svg{width:18px;height:18px}
.mv.is-in .mv__ic{background:var(--fg);color:#fff}
.mv__t{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mv__d{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mv__r{display:grid;justify-items:end;gap:5px}
.mv__v{font-size:14.5px;font-variant-numeric:tabular-nums;white-space:nowrap}
.mv.is-out .mv__v{color:var(--muted)}
.mv.is-est .mv__v{font-style:italic;opacity:.75}
.mv__more{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 14px;font-size:12.5px;padding:0 0 14px 48px}
.mv__more dt{color:var(--dim)}
.mv__more dd{margin:0;color:var(--fg);opacity:.9;overflow-wrap:anywhere}

/* ---------- Barra de pestañas ---------- */
.tabbar{position:fixed;z-index:20;left:50%;bottom:calc(var(--bottom) + 12px);transform:translateX(-50%);width:min(calc(100% - 32px),420px);display:grid;grid-template-columns:repeat(3,1fr);padding:6px;border-radius:999px;background:rgba(255,255,255,.84);border:1px solid rgba(0,0,0,.06);-webkit-backdrop-filter:blur(18px) saturate(1.6);backdrop-filter:blur(18px) saturate(1.6);box-shadow:0 14px 36px rgba(12,16,36,.14)}
.tabbar__pill{position:absolute;top:6px;bottom:6px;left:6px;width:calc((100% - 12px) / 3);border-radius:999px;background:var(--fg);transform:translateX(calc(var(--k,0) * 100%));transition:transform .45s var(--ease)}
.tab{position:relative;z-index:1;display:grid;justify-items:center;gap:2px;padding:7px 4px 6px;border-radius:999px;color:var(--muted);font-size:11px;font-weight:500;transition:color .3s}
.tab svg{width:21px;height:21px}
.tab[aria-current="page"]{color:#fff}

/* ---------- Movimiento ---------- */
@keyframes rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes growY{from{transform:scaleY(0)}}
@keyframes growX{from{transform:scaleX(0)}}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(12,163,12,.55)}70%{box-shadow:0 0 0 8px rgba(12,163,12,0)}100%{box-shadow:0 0 0 0 rgba(12,163,12,0)}}
@keyframes blink{50%{opacity:.35}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes flash{0%,100%{color:inherit}25%{color:var(--blue)}}
@keyframes shimmer{from{background-position:120% 0}to{background-position:-20% 0}}

/* Cada bloque entra cuando aparece en pantalla (clase .seen, la pone el observador) */
.io .view .in:not(.seen){opacity:0}
.io .view .in:not(.seen) .col__bar{transform:scaleY(0)}
.io .view .in:not(.seen) .bar__f{transform:scaleX(0)}
.view.play .in.seen{animation:rise .75s var(--ease) both;animation-delay:calc(min(var(--i,0),6) * 55ms)}
.view.play .in.seen .col__bar{animation:growY .9s var(--ease) both;animation-delay:calc(220ms + var(--j,0) * 70ms)}
.view.play .in.seen .bar__f{animation:growX 1s var(--ease) both;animation-delay:calc(260ms + var(--j,0) * 80ms)}
.num.flash{animation:flash 1.6s ease-out}
.is-loading-data .num:not(.has-value){color:transparent;border-radius:8px;background:linear-gradient(90deg,#ececf0 0%,#f7f7f9 40%,#ececf0 80%);background-size:200% 100%;animation:shimmer 1.4s linear infinite}
.mv__more{animation:rise .35s var(--ease) both}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
}
@media (min-width:640px){
  .app{padding-left:24px;padding-right:24px}
  .top,.seg{margin:0 -24px;padding-left:24px;padding-right:24px}
}
.lock__panel{width:100%;max-width:340px;margin-top:22px;display:flex;align-items:center;justify-content:center;text-decoration:none}
.lock__code{width:100%;max-width:340px;margin-top:18px;text-align:left}
.lock__code>summary{cursor:pointer;list-style:none;min-height:44px;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--muted)}
.lock__code>summary::-webkit-details-marker{display:none}
.lock__code[open]>summary{color:var(--fg)}

/* Resumen financiero: acumulado, periodos y certeza de los datos. */
:root{--bg:#f5f5f3;--muted:#646773;--dim:#696d79;--line:#e2e3e6;--fg:#141827}
html{scroll-padding-bottom:120px}
.app{max-width:1120px;padding:0 24px calc(var(--bottom) + 124px)}
.top{margin:0 -24px;padding:calc(var(--top) + 16px) 24px 16px;background:rgba(245,245,243,.94)}
.top__mono{width:36px;height:36px}.top__title{font-size:18px}
.view{gap:22px;padding-top:24px}
.overview-head{display:flex;justify-content:space-between;align-items:end;gap:16px;margin-bottom:2px}
.overview-head .eyebrow,.section-heading .eyebrow{font-size:10px;letter-spacing:.15em;font-weight:600;margin-bottom:8px}
.overview-head h1{font-size:clamp(27px,4vw,38px);font-weight:500;letter-spacing:-.045em;line-height:1.1}
.private-label{font-size:11px;color:var(--muted);white-space:nowrap;padding-bottom:4px}
.overview-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:18px}
.card{padding:24px;border-radius:22px;gap:14px}
.card h2{font-size:19px;font-weight:550}
.lifetime{display:flex;flex-direction:column;background:#151a2b;color:#fff;border:0;padding:30px 32px;position:relative;overflow:hidden;align-self:stretch}
.lifetime .card__head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px}
.lifetime .eyebrow{font-size:11px;letter-spacing:.08em;font-weight:550;color:#d3d7e8}
.lifetime .chip{font-size:10px;color:#d7ddf8;border-color:#555b72;background:#232b43}
.lifetime .chip::before{color:#aebeff;width:5px;height:5px}
.lifetime__amount{font-size:clamp(52px,7vw,82px);font-weight:500;letter-spacing:-.06em;line-height:1.08;margin-top:18px}
.lifetime__explain{font-size:13px;color:#c2c6d4;max-width:35ch;margin-top:-5px}
.lifetime__breakdown{border-top:1px solid #ffffff26;padding-top:14px;margin-top:auto;display:grid;gap:12px}
.lifetime__row{display:flex;align-items:baseline;justify-content:space-between;gap:16px;font-size:13px;color:#d6d8e2}
.lifetime__row strong{font-size:19px;font-weight:500;white-space:nowrap;color:#fff}
.lifetime__detail{font-size:12px;border-top:1px solid #ffffff26;padding-top:7px}
.lifetime__detail summary{min-height:44px;font-size:12px;display:flex;justify-content:space-between;gap:10px}
.lifetime__detail summary span{font-size:20px}.lifetime__detail .mrow{border-color:#ffffff26}.lifetime__detail .mrow__d{color:#c2c6d4}.lifetime__detail .mrow__t{font-size:12px}.lifetime__detail .text-action{color:#d6dfff}
.overview-side{display:grid;gap:14px}
.pending-card{gap:9px}.pending-card>.eyebrow,.expenses-total>.eyebrow{font-size:10px;letter-spacing:.08em;font-weight:550}
.overview-number{font-size:40px;line-height:1.1;letter-spacing:-.05em;font-weight:500}
.pending-list{display:grid;gap:5px;margin-top:4px;font-size:12px}
.pending-list>div{display:flex;justify-content:space-between;gap:16px}.pending-list b{font-weight:550;white-space:nowrap}
.pending-list span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.text-action{font-size:12px;min-height:44px;color:var(--blue);font-weight:550;text-align:left;text-decoration:underline;text-decoration-color:#2449ff40;text-underline-offset:4px}
.text-action:disabled{color:var(--muted);text-decoration:none;cursor:default}
.expenses-total{gap:7px;background:#eceef3;border-color:#e0e2e9}
.expense-pair{display:flex;gap:8px;align-items:baseline}.expense-pair strong{font-size:29px;letter-spacing:-.03em;font-weight:500}.expense-pair span{font-size:12px;color:var(--muted)}
.period-section{display:grid;gap:12px;padding-top:14px}
.section-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.section-heading h2{font-size:24px;letter-spacing:-.04em;font-weight:500}
.month-toolbar{display:grid;grid-template-columns:48px minmax(0,1fr) 48px;gap:8px;max-width:420px;background:#fff;padding:5px;border:1px solid var(--line);border-radius:16px}
.month-step{border-radius:11px;font-size:28px;line-height:1;min-height:44px;background:#f1f2f7}.month-step:hover:enabled{background:#e6e9f7}.month-step:disabled{opacity:.3;cursor:default}
.month-picker{display:flex}.month-picker select{width:100%;border:0;background:transparent;color:var(--fg);font:500 16px General Sans,system-ui;cursor:pointer;text-align:center;padding:0 8px;min-height:44px}
select:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:8px}
.period-status{font-size:11px}
.month-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.month-cards .card{gap:10px;padding:22px;align-content:start;min-height:190px}
.month-cards .eyebrow{font-size:12px;color:#4d5262}.month-income{background:#f0f3ff;border-color:#d3dcff}
.month-income .month-number{color:#2449ff}.month-number{font-size:clamp(30px,4vw,41px);font-weight:500;line-height:1.1;letter-spacing:-.04em}
.comparison{font-size:11px;color:#565c70;padding-top:10px;border-top:1px solid #dfe2eb;margin-top:2px;font-variant-numeric:tabular-nums}
.month-actions{display:flex;justify-content:space-between;gap:20px;align-items:center}.month-actions .note{max-width:45ch;font-size:11px}
.chart-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:15px}.chart-heading h2{margin-bottom:5px}
.chart-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:10px;color:#5d6372;justify-content:flex-end;max-width:290px}
.chart-legend span{display:flex;align-items:center;gap:5px}.chart-legend span::before{content:'';width:8px;height:8px;border-radius:2px;background:#2449ff}
.chart-legend .legend-expense::before{background:#616878}.chart-legend .legend-estimate::before{background:repeating-linear-gradient(135deg,#9095a4 0 2px,#eee 2px 4px)}
.cols{--plot:150px;grid-auto-columns:minmax(78px,1fr);gap:14px;overflow-x:auto;overflow-y:hidden;padding:8px 5px 6px;height:calc(var(--plot) + 60px);scrollbar-width:thin}
.col{border-radius:10px;padding:4px 8px;gap:5px;transition:background .15s}.col:hover{background:#f2f3f8}.col.is-sel{background:#edf0ff}.col.is-sel .col__lbl{color:#2449ff;font-weight:600}.col__val{font-size:12px;color:var(--fg)}
.col__plot{gap:6px;align-items:flex-end}.chart-bar{width:22px;min-height:0;display:block;border-radius:5px 5px 0 0;background:#616878}.chart-bar.income{background:#2449ff;min-height:2px}.expense-stack{width:22px;display:flex;flex-direction:column;justify-content:flex-end;min-height:2px;overflow:hidden;border-radius:5px 5px 0 0}.expense-stack .chart-bar{flex-basis:0;min-height:0;width:100%;border-radius:0}.chart-bar.estimated{background:repeating-linear-gradient(135deg,#acb1bf 0 3px,#e2e5ed 3px 6px)}
.month-table{border-top:1px solid var(--line);padding-top:8px}.month-table summary{min-height:44px;font-size:13px;color:var(--blue);font-weight:500}.month-table>div{overflow-x:auto}.month-table table{width:100%;border-collapse:collapse;font-size:12px}.month-table td,.month-table th{padding:12px 8px;border-top:1px solid var(--line);text-align:right;white-space:nowrap;font-weight:400}.month-table th:first-child{text-align:left}.month-table thead th{color:var(--muted);font-size:11px}.month-table button{min-height:32px;color:var(--blue)}
.details-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.card summary{min-height:44px;gap:15px}.card summary>span:first-child{font-size:15px;line-height:1.35}.summary__n{font-size:11px;white-space:nowrap}
#c-revisar .checks{margin-top:10px}.foot{max-width:650px;margin:0 auto;font-size:11px}
#v-cobros,#v-movs{max-width:850px;margin:auto}.projects{grid-template-columns:1fr 1fr}.ring__bar{stroke:var(--blue)}
.movement-heading h1{font-size:30px;letter-spacing:-.04em;margin-bottom:6px;font-weight:500}.movement-controls{display:grid;grid-template-columns:1fr 1fr;gap:14px}.movement-controls label{display:grid;gap:7px;font-size:11px;color:var(--muted)}.movement-controls select{width:100%;min-width:0;font:14px General Sans,system-ui;color:var(--fg);background:#fff;border:1px solid var(--line);border-radius:12px;min-height:46px;padding:8px 10px}.seg{position:static;background:transparent;margin:0;padding:0;flex-wrap:wrap;overflow:visible}.seg button{min-height:44px}.mgroup__h{flex-wrap:wrap;gap:5px}.mgroup__h span:last-child{font-size:11px}.mv__r>span:last-child{flex-wrap:wrap;justify-content:flex-end;max-width:155px}.mv__more{padding-left:0}.mv__more dd{opacity:1}.mv__t{white-space:normal;line-height:1.35}.mv__d{white-space:normal}.mv__btn{min-height:66px}.mv__r{max-width:155px}.mv .chip{font-size:10px;padding:4px 6px;white-space:normal;line-height:1.2;max-width:100%;text-align:right}
.tabbar{background:rgba(255,255,255,.97);bottom:calc(var(--bottom) + 16px);box-shadow:0 5px 30px #14182720}.tabbar__pill{background:#2449ff}.tab{min-height:50px;font-size:11px}.tab svg{width:20px;height:20px}
#v-resumen .in{opacity:1;animation:none}
@media(min-width:900px){.top{padding-top:24px;padding-bottom:20px}.overview-grid{gap:20px}.lifetime{min-height:420px}.period-section{margin-top:8px}.month-toolbar{margin-top:6px}.view{gap:24px}}
@media(max-width:639px){
 .app{padding:0 16px calc(var(--bottom) + 125px)}.top{margin:0 -16px;padding:calc(var(--top) + 12px) 16px 12px}.view{gap:16px;padding-top:20px}
 .overview-head{align-items:start}.private-label{display:none}.overview-head h1{font-size:29px}.overview-head .eyebrow{font-size:9px}
 .overview-grid{grid-template-columns:1fr;gap:12px}.lifetime{padding:24px;gap:13px}.lifetime__amount{font-size:64px;margin-top:8px}.lifetime__breakdown{margin-top:7px;padding-top:14px}.lifetime__row strong{font-size:18px}.lifetime__explain{font-size:12px}.lifetime__detail summary{min-height:38px}.lifetime__detail .mrow__v{font-size:12px}
 .overview-side{grid-template-columns:1fr 1fr;gap:10px;align-items:stretch}.overview-side .card{padding:17px 14px;border-radius:18px}.overview-number{font-size:33px}.pending-list{display:none}.pending-card .text-action{font-size:11px}.overview-side .note{font-size:11px}.overview-side>.card>.eyebrow{font-size:9px;letter-spacing:.035em;min-height:26px}.expense-pair{display:grid;gap:1px}.expense-pair strong{font-size:29px}.expense-pair span{font-size:11px}.expenses-total{align-content:start}.expenses-total .note{line-height:1.5}.pending-card{gap:8px}
 .section-heading h2{font-size:23px}.section-heading .text-action{font-size:11px}.section-heading .eyebrow{font-size:9px}.period-section{padding-top:12px}.month-toolbar{max-width:none}.period-status{font-size:10px}
 .month-cards{grid-template-columns:1fr 1fr;gap:10px}.month-cards .card{padding:18px 15px;border-radius:18px;min-height:0;gap:9px}.month-cards .card:last-child{grid-column:1 / -1;display:grid;grid-template-columns:1fr auto;align-items:center}.month-cards .card:last-child .eyebrow{grid-column:1}.month-cards .card:last-child .month-number{grid-column:2;grid-row:1 / span 2}.month-cards .card:last-child .note{grid-column:1;max-width:26ch}.month-cards .card:last-child .comparison{grid-column:1 / -1}.month-number{font-size:32px}.month-cards .eyebrow{font-size:11px;min-height:32px}.month-cards .note{font-size:11px}.comparison{font-size:10px;line-height:1.5}.month-actions{display:grid;gap:2px}.month-actions .note{font-size:10px;max-width:none}
 .card{padding:20px 17px;border-radius:20px}.chart-heading{display:grid;gap:12px}.chart-heading h2{font-size:18px}.chart-legend{justify-content:start;max-width:none;font-size:9px;gap:9px}.card__read{font-size:11px}.cols{--plot:125px;gap:8px;grid-auto-columns:minmax(72px,1fr)}.col__val{font-size:11px}.col__lbl{font-size:10px}#meses-sinfecha{font-size:11px}.details-grid{grid-template-columns:1fr;gap:12px}.card summary>span:first-child{font-size:14px}.summary__n{font-size:10px}.card summary{gap:10px}.card .note{font-size:12px}.month-cards .card .note{font-size:11px}
 .projects{grid-template-columns:1fr}.movement-controls{gap:10px}.movement-controls select{font-size:12px}.mv__btn{grid-template-columns:28px minmax(0,1fr) auto;gap:8px}.mv__ic{width:28px;height:28px}.mv__t{font-size:12px}.mv__d{font-size:10px}.mv__v{font-size:13px}.mv__r{max-width:104px}.mv__r>span:last-child{max-width:104px}.mv .chip{font-size:9px}.mlist{padding:0 11px}.mgroup__h{font-size:12px}.mv__more{font-size:11px;gap:5px 10px}.movement-heading h1{font-size:27px}.seg{gap:5px}.seg button{font-size:12px;padding:0 10px}.split b{font-size:17px}.split div{padding:9px}
}
@media(max-width:359px){.lifetime{padding:21px}.lifetime__amount{font-size:56px}.lifetime .chip{font-size:9px}.lifetime .eyebrow{font-size:10px}.overview-side .card{padding:14px 11px}.overview-number{font-size:29px}.expense-pair strong{font-size:26px}.month-number{font-size:28px}.card summary>span:first-child{font-size:13px}.sync{font-size:11px}.top__title{font-size:17px}.section-heading h2{font-size:21px}}

/* La navegación tiene su propio espacio; nunca se superpone a los datos. */
.app{height:100dvh;min-height:0;display:flex;flex-direction:column;padding-bottom:0}
.top{position:relative;top:auto;flex-shrink:0}
.view{display:block;flex:1;min-height:0;overflow-y:auto;overscroll-behavior-y:contain;padding-bottom:24px;scroll-padding:16px;scrollbar-width:thin}
.view> * + *{margin-top:22px}.view>.sr-only+*{margin-top:0}
.view>.sr-only{margin:0}
.tabbar{position:relative;left:auto;bottom:auto;transform:none;align-self:center;flex-shrink:0;margin:12px auto calc(var(--bottom) + 12px);width:min(100%,420px)}
#v-cobros,#v-movs{width:100%;margin:0 auto}
.banner{flex-shrink:0}
@media(min-width:900px){.lifetime{min-height:360px}.overview-side{gap:12px}.pending-card{padding:21px}.expenses-total{padding:20px}.overview-head{margin-bottom:0}.view{padding-top:15px}}
@media(max-width:639px){.view> * + *{margin-top:16px}.app{padding-bottom:0}.top{padding-top:calc(var(--top) + 10px);padding-bottom:10px}.tabbar{margin:10px auto calc(var(--bottom) + 10px)}.view{padding-top:18px}}

.date-caveat{grid-column:1 / -1;color:#77623c;padding-top:3px;font-size:11px!important;max-width:none!important}
