/* =====================================================================================================
   Modo Adulto · hoja de estilos (A21: reescrita sobre tokens; sustituye las capas A01–A20).
   Orden: 1 tokens · 2 base · 3 Dinero (capa sobre style.css) · 4 cabecera y pestañas · 5 página
   · 6 componentes · 7 secciones · 8 Blvnky · 9 movimiento · 10 preferencias del sistema.
   Regla: fuera del bloque 1 no se escriben colores, tamaños de letra ni radios sueltos; se usan tokens.
   ===================================================================================================== */
@font-face{font-family:Manrope;src:url('fuentes/manrope-latin.woff2') format('woff2');font-weight:200 800;font-style:normal;font-display:swap}

/* 1 · Tokens ------------------------------------------------------------------------------------------ */
:root[data-theme]{
    /* Tipografía: una familia; escala corta (12 · 13 · 14 · 16 · 18 · 20 · 28 · 48 · titular de Hoy) */
    --font:Manrope,Arial,sans-serif;
    --fs-micro:11px;--fs-caption:12px;--fs-small:13px;--fs-ui:14px;--fs-item:15px;--fs-body:16px;--fs-lead:18px;--fs-h3:20px;--fs-h2:28px;--fs-h1:48px;
    --fs-display:clamp(52px,9vw,88px);--fs-number:40px;--fs-amount:32px;--fs-dinero-h1:34px;--icon-lg:22px;
    --fw-regular:400;--fw-medium:500;--fw-semi:600;--fw-bold:700;--fw-heavy:800;
    --lh-tight:1.02;--lh-snug:1.3;--lh-body:1.6;--lh-read:1.65;--lh-loose:1.75;
    --tr-display:-.06em;--tr-title:-.055em;--tr-number:-.05em;--tr-tight:-.02em;
    /* Espacio (base 4) y medidas */
    --s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-7:32px;--s-8:48px;
    --hit:44px;--hit-lg:48px;--field-h:50px;
    --page-max:1040px;--page-x:32px;--page-top:36px;--page-bottom:110px;--header-h:100px;
    /* Radios */
    --r-xs:6px;--r-sm:12px;--r-md:14px;--r-lg:20px;--r-float:22px;--r-xl:24px;--r-pill:999px;
    /* Tonos de sección (los mismos en los dos temas: luces, pestañas y dibujos) */
    --hue-hoy:#F3F1EC;--hue-compra:#7BE495;--hue-casa:#7CC4FF;--hue-guias:#FFD84D;--hue-dinero:#B9A3FF;--hue-ajustes:#FF8FB8;
    /* Tema oscuro */
    --adult-bg:#0F0F10;--page-bg:#0B0B0C;--inset:#242427;--adult-line:#77777F;--line:rgba(255,255,255,.10);
    --ink:#F3F1EC;--soft:#C9C7C2;--quiet:#A3A3A8;--quiet-more:#D6D4CF;--ink-on-hue:#0F0F10;--bar-neutral:#8E8E94;
    --c-hoy:var(--hue-hoy);--c-compra:var(--hue-compra);--c-casa:var(--hue-casa);--c-guias:var(--hue-guias);--c-dinero:var(--hue-dinero);--c-ajustes:var(--hue-ajustes);
    --soft-hoy:#2A2A2E;--soft-compra:#1B3324;--soft-casa:#1C2E3C;--soft-guias:#3A3214;--soft-dinero:#292334;--soft-ajustes:#3A1E2A;
    --accent:var(--c-dinero);--accent-soft:var(--soft-dinero);--accent-ink:#0F0F10;
    --warning-bg:#2A1C12;--warning-line:#FF8A3D;--warning-ink:#FFB27F;
    --green:#7BE495;--red:#FFB27F;--purple:var(--accent);--muted:var(--quiet);
    /* Cristal, velo y luz */
    --glass:rgba(16,16,20,.62);--glass-line:rgba(255,255,255,.10);--glass-hi:rgba(255,255,255,.06);--surface:var(--glass);
    --veil:linear-gradient(180deg,rgba(10,10,12,.82),rgba(10,10,12,.90));--glow:var(--hue-dinero);--glow2:var(--glow);--glow-op:.55;
    --shadow-card:inset 0 1px 0 var(--glass-hi),0 18px 40px rgba(0,0,0,.28);--shadow-float:0 10px 30px rgba(0,0,0,.35);
    --backdrop:#0009;--blur-card:blur(14px) saturate(1.2);--blur-bar:blur(18px);
    /* Movimiento */
    --dur-press:.12s;--dur-enter:.22s;--ease-out:ease-out;
    font-family:var(--font);background:var(--adult-bg);color:var(--ink);color-scheme:dark;
}
:root[data-theme="light"]{
    --adult-bg:#F6F5F1;--page-bg:#E7E7E5;--inset:#EEEDE8;--adult-line:#85858C;--line:rgba(25,25,28,.10);
    --ink:#19191C;--soft:#4D4D55;--quiet:#606068;--quiet-more:#3A3A40;
    --c-hoy:#19191C;--c-compra:#1F6B3A;--c-casa:#175D8B;--c-guias:#7A5A00;--c-dinero:#6546A3;--c-ajustes:#A11D5C;
    --soft-hoy:#EDECE8;--soft-compra:#E2F4E8;--soft-casa:#E0EFFA;--soft-guias:#FFF4CC;--soft-dinero:#EEE7FC;--soft-ajustes:#FBE3EE;
    --accent-ink:#FFFFFF;
    --warning-bg:#FFF0E3;--warning-line:#B34B00;--warning-ink:#883900;
    --green:#246B3C;--red:#883900;
    --glass:rgba(255,255,255,.72);--glass-line:rgba(25,25,28,.10);--glass-hi:rgba(255,255,255,.7);
    --veil:linear-gradient(180deg,rgba(231,231,229,.86),rgba(231,231,229,.92));--glow-op:.35;
    color-scheme:light;
}
/* Cada sección fija su acento; la luz de fondo usa siempre el tono vivo */
:root[data-theme][data-section="hoy"]{--accent:var(--c-hoy);--accent-soft:var(--soft-hoy);--glow:var(--hue-dinero);--glow2:var(--hue-casa)}
:root[data-theme][data-section="compra"]{--accent:var(--c-compra);--accent-soft:var(--soft-compra);--glow:var(--hue-compra)}
:root[data-theme][data-section="casa"]{--accent:var(--c-casa);--accent-soft:var(--soft-casa);--glow:var(--hue-casa)}
:root[data-theme]:is([data-section="guias"],[data-section="logros"]){--accent:var(--c-guias);--accent-soft:var(--soft-guias);--glow:var(--hue-guias)}
:root[data-theme][data-section="dinero"]{--glow:var(--hue-dinero)}
:root[data-theme][data-section="ajustes"]{--accent:var(--c-ajustes);--accent-soft:var(--soft-ajustes);--glow:var(--hue-ajustes)}
@media(max-width:650px){:root[data-theme]{--page-x:18px;--page-top:22px;--page-bottom:calc(110px + env(safe-area-inset-bottom));--header-h:72px;--fs-display:clamp(44px,13vw,58px)}}

/* 2 · Base -------------------------------------------------------------------------------------------- */
html[data-theme]{background:var(--page-bg)}
html[data-theme] body{background:transparent}
html[data-theme] body::before{content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;background:var(--veil),url('fondos/hormigon.webp') center/cover}
html[data-theme] body::after{content:"";position:fixed;inset:-20%;z-index:-1;pointer-events:none;filter:blur(60px);opacity:var(--glow-op);
    background:radial-gradient(35% 25% at 85% 8%,var(--glow),transparent 70%),radial-gradient(30% 22% at 5% 95%,var(--glow2),transparent 70%)}
html[data-theme] :is(button,a,input,select):focus-visible{outline:3px solid var(--accent);outline-offset:4px}
[hidden]{display:none!important}
/* Saltar al contenido: oculto hasta recibir el foco del teclado */
.skip-link{position:absolute;left:var(--s-4);top:var(--s-3);z-index:90;transform:translateY(-200%);padding:var(--s-3) var(--s-4);min-height:var(--hit);
    border-radius:var(--r-md);background:var(--ink);color:var(--adult-bg);font:inherit;font-size:var(--fs-ui);font-weight:var(--fw-bold)}
.skip-link:focus-visible{transform:none}
main:focus{outline:none}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* 3 · Dinero: la capa de Modo Adulto sobre style.css (mismos controles, colores del sistema) ------------- */
html[data-theme] .layout{min-height:calc(100vh - var(--header-h))}
html[data-theme] .sidebar{top:var(--header-h);background:color-mix(in srgb,var(--adult-bg) 88%,transparent);border-color:var(--line);padding-top:22px}
html[data-theme] :is(.brand,.topbar-left:before){display:none}
html[data-theme] .space-label{margin-top:var(--s-2)}
html[data-theme] .dot{background:var(--accent)}
html[data-theme] :is(h1,.amount,.stat-value,.big-number,.hoy-big){font-family:var(--font);font-weight:var(--fw-bold);text-transform:none;letter-spacing:var(--tr-number);font-variant-numeric:tabular-nums}
html[data-theme] .main h1{font-size:var(--fs-dinero-h1);letter-spacing:var(--tr-title);line-height:var(--lh-tight)}
html[data-theme] :is(.sidebar,.card,.stat-card,.quick,.account-pill,.item-card,.search,dialog,.donut-center){color:var(--ink)}
html[data-theme] .search,html[data-theme] .donut-center{background:var(--surface)}
html[data-theme] .nav button{color:var(--soft);border-radius:var(--r-md)}
html[data-theme] .nav button.active{color:var(--accent);background:var(--accent-soft);box-shadow:inset 3px 0 var(--accent)}
html[data-theme] :is(.brand small,.space-label,.privacy-note,.profile small,.month,.month input,.footer,
    .stat-top,.stat-note,.quick small,.account-pill span,.tx-text small,.card-head small,.item-card p,
    .budget-row span,.setting-row p,.empty,.empty p,.legend-row,.donut-center span,.goal-top span,
    .goal-amount,.form-note,.field label,.install-guide p,.logro span){color:var(--quiet)}
html[data-theme] :is(.eyebrow,.link-btn,.privacy-link,.device-panel a,.legal a){color:var(--accent)}
html[data-theme] :is(.avatar,.quick-icon,.account-icon,.empty-icon,.badge,.bill-date,.theme-toggle,.stat-icon){background:var(--inset);color:var(--soft)}
html[data-theme] :is(.stat-icon.pink,.empty .empty-icon){background:var(--inset);color:var(--soft)}
html[data-theme] :is(.primary,.secondary){background:var(--accent);color:var(--accent-ink);border-radius:var(--r-md)}
html[data-theme] .primary.purple{background:var(--accent);color:var(--accent-ink)}
html[data-theme] .secondary{background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent)}
html[data-theme] :is(.ghost,.balance-footer .ghost){color:var(--soft)}
html[data-theme] .icon-button{background:var(--inset);color:var(--soft);border-color:var(--adult-line)}
html[data-theme] .danger{background:var(--warning-bg);color:var(--warning-ink);border:1px solid var(--warning-line);border-radius:var(--r-md)}
html[data-theme] .balance-card{border-radius:var(--r-lg);color:var(--ink)}
html[data-theme] .balance-card:after{display:none}
html[data-theme] :is(.balance-top,.balance-caption,.amount small){color:var(--soft)}
html[data-theme] .balance-card .amount{color:var(--accent)}
html[data-theme] .balance-footer .primary{background:var(--accent);color:var(--accent-ink)}
html[data-theme] :is(.onboarding,.help-strip,.demo-bar,.ios-storage-note){background:var(--inset);border-color:var(--adult-line);color:var(--soft)}
html[data-theme] .onboarding{border-left:3px solid var(--accent)}
html[data-theme] :is(.onboarding strong,.help-strip strong,.onboarding p,.demo-bar button){color:var(--soft)}
html[data-theme] :is(.account-add,.search,.transaction,.goal-row,.bill-row){border-color:var(--adult-line)}
html[data-theme] :is(.tx-edit,.account-add,.legend-row strong,.goal-amount strong,.bill-date strong,.empty strong){color:var(--soft)}
html[data-theme] .progress{background:var(--inset)}
html[data-theme] .progress i{background:var(--bar-neutral)}
/* Las barras de presupuesto reciben su fondo en línea: se sustituye solo el color */
html[data-theme] .budget-row .progress i{background:var(--bar-neutral)!important}
html[data-theme] .budget-row:has(.negative) .progress i{background:var(--warning-line)!important}
html[data-theme] :is(.budget-alert,.budget-alert.over,.due,.status-warning,.status-sync){color:var(--warning-ink);background:var(--warning-bg);border-color:var(--warning-line)}
html[data-theme] .budget-alert{padding:var(--s-2) var(--s-3);border-left:3px solid var(--warning-line);border-radius:var(--r-xs)}
html[data-theme] .budget-alert:before{content:'⚠ ';font-size:var(--fs-ui)}
html[data-theme] .segmented{background:var(--inset)}
html[data-theme] .segmented button{color:var(--soft)}
html[data-theme] .segmented button.selected{background:var(--surface);color:var(--ink);box-shadow:inset 0 -2px var(--accent)}
html[data-theme] .status-banner{background:var(--surface);color:var(--soft)}
html[data-theme] .status-update{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}
html[data-theme] :is(.status-warning,.status-sync) button{color:var(--warning-ink)}
html[data-theme] .field :is(input,select){background:var(--inset);color:var(--ink);border-color:var(--adult-line)}
html[data-theme] .field .amount-input{background:transparent;color:var(--ink);border-color:var(--adult-line)}
html[data-theme] .search input{color:var(--ink)}
html[data-theme] input::placeholder{color:var(--quiet)}
html[data-theme] :is(.form-error,.negative,.delete-action){color:var(--warning-ink)}
html[data-theme] .positive{color:var(--green)}
html[data-theme] [id^="form-sync-"] .submit:disabled{background:var(--inset);color:var(--soft);border:1px solid var(--adult-line)}
html[data-theme] .logro.conseguido{background:var(--accent-soft);border-color:var(--accent)}
html[data-theme] dialog{border:1px solid var(--adult-line)}
html[data-theme] dialog::backdrop{background:var(--backdrop)}
html[data-theme] .theme-toggle{border-color:var(--adult-line)}
html[data-theme] #toast{background:var(--ink);color:var(--adult-bg)}
@media(max-width:650px){
    html[data-theme] .main{padding-top:18px;padding-bottom:calc(105px + env(safe-area-inset-bottom))}
    html[data-theme] .topbar{justify-content:flex-end}
    html[data-theme] .topbar-left{display:none}
    html[data-theme] .main h1{font-size:var(--fs-h2)}
    html[data-theme] .field :is(input,select),html[data-theme] .search input,html[data-theme] .month input{font-size:var(--fs-body)}
    html[data-theme] .field .amount-input{font-size:var(--fs-amount)}
    html[data-theme] .month input{width:150px}
    html[data-theme] .layout{display:flex;flex-direction:column}
    html[data-theme] .mobile-nav{position:sticky;top:var(--header-h);bottom:auto;order:-1;z-index:30;height:auto;min-height:60px;padding-bottom:var(--s-2);
        background:var(--glass);border-color:var(--adult-line)}
    html[data-theme] .mobile-nav button{color:var(--soft);min-height:var(--hit-lg);border-radius:var(--r-sm)}
    html[data-theme] .mobile-nav button.active{color:var(--accent);background:var(--accent-soft)}
    html[data-theme] #toast{bottom:calc(90px + env(safe-area-inset-bottom))}
}

/* 4 · Cabecera y pestañas ------------------------------------------------------------------------------- */
.adult-shell{position:sticky;top:0;z-index:60;display:flex;align-items:center;justify-content:space-between;gap:var(--s-5);
    padding:17px var(--page-x);min-height:var(--header-h);border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--adult-bg) 94%,transparent)}
.adult-brand{color:var(--ink);text-decoration:none;display:flex;align-items:center;gap:var(--s-4);min-height:var(--hit)}
.adult-brand strong{font-family:var(--font);font-size:var(--fs-h2);font-weight:var(--fw-bold);letter-spacing:var(--tr-display);text-transform:lowercase}
.adult-brand strong::after{content:"/";color:var(--quiet);font-weight:var(--fw-regular);margin-left:1px}
.adult-brand span{color:var(--quiet);font-size:var(--fs-caption);font-weight:var(--fw-medium);letter-spacing:.02em;text-transform:lowercase;white-space:nowrap}
.adult-nav{display:flex;gap:var(--s-2);align-items:center}
.adult-nav a{display:flex;gap:var(--s-2);align-items:center;justify-content:center;min-width:88px;min-height:var(--hit);padding:10px var(--s-4);
    border-radius:var(--r-md);text-decoration:none;font-size:var(--fs-caption);font-weight:var(--fw-bold);background:var(--inset);color:var(--soft)}
.adult-nav [data-section="hoy"]{--accent:var(--hue-hoy);--accent-ink:var(--ink-on-hue)}
.adult-nav [data-section="compra"]{--accent:var(--hue-compra);--accent-ink:var(--ink-on-hue)}
.adult-nav [data-section="casa"]{--accent:var(--hue-casa);--accent-ink:var(--ink-on-hue)}
.adult-nav [data-section="guias"]{--accent:var(--hue-guias);--accent-ink:var(--ink-on-hue)}
.adult-nav [aria-current]{background:var(--accent);color:var(--accent-ink);box-shadow:0 0 22px color-mix(in srgb,var(--accent) 55%,transparent)}
.adult-settings{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--hit);height:var(--hit);border-radius:var(--r-md);
    color:var(--ink);background:var(--inset);border:1px solid var(--adult-line)}
.adult-settings svg{width:var(--icon-lg);height:var(--icon-lg)}
.adult-settings[aria-current]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
@media(min-width:651px){.adult-shell .adult-nav{margin-left:auto}}
@media(min-width:651px) and (max-width:1150px){.adult-shell{padding-inline:var(--s-6)}}
@media(max-width:650px){
    .adult-shell{padding:var(--s-3) var(--page-x);gap:var(--s-2)}
    .adult-brand{gap:var(--s-2);flex-wrap:wrap;max-width:220px}
    /* Barra de pestañas flotante: cinco pestañas iguales que nunca se salen de la pantalla */
    .adult-nav{position:fixed;bottom:0;left:0;right:0;z-index:40;justify-content:space-around;gap:0;width:auto;
        margin:0 10px 10px;padding:var(--s-2) max(4px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(4px,env(safe-area-inset-left));
        background:color-mix(in srgb,var(--adult-bg) 80%,transparent);-webkit-backdrop-filter:var(--blur-bar);backdrop-filter:var(--blur-bar);
        border:1px solid var(--glass-line);border-radius:var(--r-float);box-shadow:var(--shadow-float)}
    .adult-nav a{flex:1 1 0;min-width:0;min-height:var(--hit-lg);margin:0 2px;padding:var(--s-2) 2px;flex-direction:column;gap:3px;font-size:var(--fs-caption);overflow:hidden}
    .adult-nav a span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}

/* 5 · Página: un solo contenedor y una sola forma de titular para todas las secciones ------------------- */
:is(.hoy-main,.casa-main,.compra-main,.guias-main,.logros-main,.ajustes-main){max-width:var(--page-max);margin:0 auto;padding:var(--page-top) var(--page-x) var(--page-bottom)}
html[data-theme] :is(.hoy-main,.compra-main,.casa-main,.guias-main,.logros-main) h1,html[data-theme] .ajustes-main .page-head h1{
    font-family:var(--font);font-size:var(--fs-h1);font-weight:var(--fw-bold);letter-spacing:var(--tr-title);line-height:var(--lh-tight);text-transform:none;margin:6px 0 0;overflow-wrap:anywhere}
html[data-theme] :is(.casa-main,.compra-main) h1{margin:0}
/* Punto final en gris, como en la web («Carlos Polo.») */
:is(.casa-main,.compra-main,.logros-main) h1::after,.guias-main:not(.guia-detalle) h1::after{content:"." / "";color:var(--quiet)}
:is(.hoy-main,.compra-main,.casa-main,.guias-main,.logros-main,.ajustes-main) > .status-banner{margin:0 0 var(--s-3);font-size:var(--fs-small)}
:is(.hoy-main,.compra-main,.casa-main,.guias-main,.logros-main,.ajustes-main) > .status-banner button{min-height:var(--hit);font-size:var(--fs-small);font-weight:var(--fw-bold);color:var(--ink)}
/* Etiquetas: frase normal, nunca carteles en mayúsculas */
html[data-theme] :is(.adult-shell ~ * .eyebrow,.hoy-main .eyebrow,.guia-cat,.hoy-card-head h2,.compra-cat,.hoy-semana-t,.guias-main h2,.hoy-label){
    text-transform:none;letter-spacing:0;font-weight:var(--fw-semi);font-size:var(--fs-ui)}

/* 6 · Componentes ---------------------------------------------------------------------------------------- */
/* Cristal: todas las superficies */
html[data-theme] :is(.card,.stat-card,.quick,.account-pill,.item-card,.guia-card,.guia-sugerida,.hoy-card,.balance-card,.logros-main .logro,dialog){
    background:var(--glass)!important;-webkit-backdrop-filter:var(--blur-card);backdrop-filter:var(--blur-card);
    border:1px solid var(--glass-line)!important;box-shadow:var(--shadow-card)}
html[data-theme] :is(.card,.stat-card,.quick,.account-pill,.item-card){border-radius:var(--r-lg)}
/* Aviso de versión de prueba: siempre visible, pero una línea discreta; el titular manda */
html[data-theme] .beta-note{position:relative;margin:0 0 var(--s-5);padding:0 0 0 var(--s-4);border:0;background:none;
    color:var(--soft);font-size:var(--fs-small);line-height:var(--lh-snug)}
html[data-theme] .beta-note::before{content:"";position:absolute;left:0;top:.45em;width:8px;height:8px;border-radius:50%;background:var(--warning-line)}
html[data-theme] .beta-note strong{color:var(--warning-ink);font-weight:var(--fw-semi)}
.beta-note a{display:inline-block;min-height:24px;color:inherit;text-decoration:underline}
.privacy-link{display:inline-flex;align-items:center;min-height:28px}
/* Celebración */
.celebracion{position:fixed;inset:0;display:grid;place-items:center;pointer-events:none;z-index:80}
.celebracion span{font-family:var(--font);font-size:clamp(48px,14vw,96px);font-weight:var(--fw-heavy);letter-spacing:-.04em;padding:10px 28px;border-radius:var(--r-md);
    background:var(--accent);color:var(--accent-ink);border:4px solid var(--ink);transform:rotate(-6deg);box-shadow:0 12px 40px rgba(0,0,0,.35);animation:sello 1.8s var(--ease-out) forwards}
:root[data-section="hoy"] .celebracion span{background:var(--hue-guias);color:var(--ink-on-hue)}
.celebracion.guau span{font-size:clamp(32px,9vw,64px);background:var(--ink);color:var(--adult-bg)}
@keyframes sello{0%{transform:rotate(-6deg) scale(1.8);opacity:0}15%{transform:rotate(-6deg) scale(.95);opacity:1}25%{transform:rotate(-6deg) scale(1)}80%{opacity:1}100%{opacity:0}}

/* Esqueleto de arranque (index.html): invisible 0,6 s para no parpadear en cargas rápidas */
.arranque{opacity:0;animation:aparecer 0s .6s forwards}
.arranque-cabecera{display:flex;align-items:center;justify-content:space-between;gap:var(--s-5);min-height:var(--header-h);padding:0 var(--page-x);border-bottom:1px solid var(--line);
    background:color-mix(in srgb,var(--adult-bg) 94%,transparent)}
.arranque-marca{font-size:var(--fs-h2);font-weight:var(--fw-bold);letter-spacing:var(--tr-display);color:var(--ink)}
.arranque-pagina{max-width:var(--page-max);margin:0 auto;padding:var(--page-top) var(--page-x);display:flex;flex-direction:column;gap:var(--s-4)}
.esq{display:block;border-radius:var(--r-sm);background:linear-gradient(90deg,var(--inset) 0 40%,color-mix(in srgb,var(--inset) 60%,var(--ink) 8%) 50%,var(--inset) 60% 100%);
    background-size:300% 100%;animation:brillo 1.4s linear infinite}
.esq-pestanas{width:min(520px,50vw);height:var(--hit)}
.esq-linea{height:16px;width:min(420px,80%)}
.esq-corta{width:180px}
.esq-titular{height:var(--fs-h1);width:min(560px,90%);border-radius:var(--r-md)}
.arranque-tarjetas{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-4);margin-top:var(--s-4)}
.esq-tarjeta{height:200px;border-radius:var(--r-lg)}
.arranque-lento{opacity:0;animation:aparecer 0s 12s forwards;max-width:var(--page-max);margin:var(--s-4) auto;padding:0 var(--page-x);color:var(--soft);font-size:var(--fs-ui)}
@keyframes aparecer{to{opacity:1}}
@keyframes brillo{from{background-position:100% 0}to{background-position:0 0}}
@media(max-width:650px){.esq-pestanas{display:none}.arranque-tarjetas{grid-template-columns:1fr}.esq-tarjeta{height:140px}}

/* 7 · Secciones ------------------------------------------------------------------------------------------ */
/* Hoy */
.hoy-head{position:relative;display:flex;justify-content:space-between;align-items:flex-end;gap:var(--s-4)}
.hoy-main .hoy-head .eyebrow{display:inline;margin:0}
.hoy-sticker{display:inline;margin:0;font-size:var(--fs-caption);font-weight:var(--fw-medium);color:var(--soft)}
.hoy-sticker::before{content:". "}
html[data-theme] .hoy-main h1{font-size:var(--fs-display);line-height:.98;letter-spacing:var(--tr-display);max-width:11ch;margin-top:14px}
.hoy-main h1 .punto{color:var(--quiet)}
.hoy-main p{font-size:var(--fs-ui);line-height:var(--lh-body);color:var(--soft)}
.hoy-chips{display:flex;flex-wrap:wrap;gap:var(--s-2);align-items:center;margin-top:10px}
.hoy-racha{display:inline-block;margin:0;padding:6px var(--s-3);border-radius:var(--r-pill);background:var(--inset);color:var(--ink);font-size:var(--fs-small);font-weight:var(--fw-bold)}
.hoy-logros{display:inline-flex;align-items:center;min-height:var(--hit);padding:0 var(--s-4);border-radius:var(--r-pill);background:var(--inset);color:var(--ink);font-size:var(--fs-small);font-weight:var(--fw-bold);text-decoration:none}
.hoy-start{display:flex;flex-wrap:wrap;gap:10px;margin-top:var(--s-4)}
.hoy-start a{display:inline-flex;align-items:center;justify-content:center;min-height:var(--hit-lg);padding:0 18px;text-decoration:none;font-weight:var(--fw-bold);border-radius:var(--r-md)}
.hoy-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-4);margin-top:var(--s-5)}
.hoy-card{padding:18px;display:flex;flex-direction:column;gap:6px}
.hoy-card-head{display:flex;justify-content:space-between;align-items:center;gap:var(--s-2)}
html[data-theme] .hoy-card-head h2{margin:0;font-size:var(--fs-body);color:var(--ink)}
.hoy-card-head a{font-size:var(--fs-small);font-weight:var(--fw-bold);min-height:var(--hit);display:inline-flex;align-items:center;color:var(--ink)}
.hoy-list{list-style:none;margin:0;padding:0}
.hoy-list li{display:flex;justify-content:space-between;align-items:center;gap:10px;border-bottom:1px solid var(--line);padding:var(--s-2) 0;min-height:52px}
.hoy-list li span{display:flex;flex-direction:column;gap:var(--s-1);overflow-wrap:anywhere}
.hoy-list strong{font-size:var(--fs-item);color:var(--ink)}
.hoy-list button{min-height:var(--hit);white-space:nowrap}
.hoy-list .hoy-acciones{flex-direction:row;align-items:center;gap:6px;flex-shrink:0}
.hoy-list .hoy-acciones .ghost{min-height:var(--hit);color:var(--soft)}
.hoy-list .casa-overdue{font-size:var(--fs-caption);padding:2px var(--s-2);align-self:flex-start}
html[data-theme] .hoy-casa .primary{background:var(--c-casa);color:var(--accent-ink)}
.hoy-main .hoy-big{font-size:var(--fs-number);line-height:1.1;margin:var(--s-1) 0 0;color:var(--ink)}
.hoy-main .hoy-label{margin:var(--s-1) 0 0}
.hoy-main .hoy-alert{color:var(--warning-ink);background:var(--warning-bg);border-left:3px solid var(--warning-line);padding:var(--s-2) var(--s-3);border-radius:var(--r-xs)}
.hoy-empty{margin:var(--s-2) 0 0}
.hoy-semana{display:block;margin-top:var(--s-4);padding:var(--s-4);text-decoration:none;color:var(--ink)}
.hoy-semana-t{display:block;color:var(--c-casa);margin-bottom:var(--s-2)}
.hoy-semana ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.hoy-semana li{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--s-2) 0;border-radius:var(--r-sm)}
.hoy-semana .sem-dia{font-size:var(--fs-micro);font-weight:var(--fw-semi);color:var(--soft);text-transform:capitalize}
.hoy-semana .sem-num{font-size:var(--fs-lead);font-weight:var(--fw-bold);letter-spacing:-.04em}
.hoy-semana .sem-n{min-height:14px;font-size:var(--fs-ui);line-height:1;letter-spacing:1px;color:var(--c-casa)}
.hoy-semana li.es-hoy{background:color-mix(in srgb,var(--hue-casa) 16%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--hue-casa) 50%,transparent)}
/* Cómo funciona */
.tour{margin-top:var(--s-4)}
.tour-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.tour-head h2{margin:0;font-size:var(--fs-body);font-weight:var(--fw-bold);letter-spacing:var(--tr-tight)}
.tour-head .ghost{min-height:var(--hit);color:var(--ink);font-weight:var(--fw-bold)}
.tour-pasos{list-style:none;margin:var(--s-3) 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-4)}
.tour-pasos li{display:flex;gap:var(--s-3);align-items:flex-start}
.tour-n{flex-shrink:0;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;font-weight:var(--fw-heavy);color:var(--ink-on-hue);
    background:linear-gradient(135deg,var(--hue-casa),var(--hue-dinero));box-shadow:0 0 14px color-mix(in srgb,var(--hue-dinero) 45%,transparent)}
.tour-pasos strong{display:block;color:var(--ink);font-size:var(--fs-item)}
.hoy-main .tour-pasos p{margin:var(--s-1) 0 6px;font-size:var(--fs-small);line-height:1.5}
.tour-pasos a{display:inline-flex;align-items:center;min-height:32px;font-size:var(--fs-small);font-weight:var(--fw-bold);color:var(--ink)}
@media(max-width:1000px){.hoy-grid{grid-template-columns:1fr}}
@media(max-width:800px){.tour-pasos{grid-template-columns:1fr}}
@media(max-width:650px){
    .hoy-head > div:first-child{flex:1 1 auto;min-width:0}
}

/* Casa y Compra: misma estructura (titular, acción, lista) */
html[data-theme] :is(.casa-main,.compra-main) h2{font-size:var(--fs-h3);font-weight:var(--fw-bold);letter-spacing:var(--tr-tight);margin:30px 0 var(--s-4)}
html[data-theme] .compra-main h2{margin:28px 0 var(--s-3)}
:is(.casa-main,.compra-main) p{font-size:var(--fs-ui);line-height:var(--lh-loose);color:var(--soft)}
.casa-main h3{font-size:var(--fs-lead);line-height:1.5;overflow-wrap:anywhere;margin:var(--s-3) 0}
.casa-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-4)}
.casa-task{display:flex;flex-direction:column;justify-content:space-between;gap:var(--s-3)}
.casa-actions{display:flex;gap:var(--s-2);flex-wrap:wrap;align-items:center}
.casa-actions button,.casa-remove{min-height:var(--hit)}
.casa-remove{color:var(--soft)}
:is(.casa-empty,.compra-empty){padding:var(--s-6)}
.casa-done{font-size:var(--fs-small);color:var(--soft);padding:10px}
.casa-main .casa-overdue{color:var(--warning-ink);background:var(--warning-bg);padding:var(--s-2) var(--s-3);border-left:3px solid var(--warning-line)}
.compra-add{display:flex;gap:10px;margin-top:var(--s-5)}
.compra-add input{flex:1;min-width:0;min-height:var(--field-h);font-size:var(--fs-body);border-radius:var(--r-md);border:1px solid var(--adult-line);background:var(--inset);color:var(--ink);padding:0 var(--s-4)}
.compra-add button{min-height:var(--field-h);padding:0 var(--s-5)}
.compra-chips{display:flex;flex-wrap:wrap;gap:var(--s-2)}
.compra-chip{min-height:40px;border-radius:var(--r-pill);border:1px solid var(--adult-line);background:transparent;color:var(--ink);padding:0 var(--s-4);font-size:var(--fs-ui);font-weight:var(--fw-semi)}
html[data-theme] .compra-cat{color:var(--accent);font-size:var(--fs-small);margin:18px 0 var(--s-1)}
.compra-list{list-style:none;margin:0;padding:0}
.compra-item{display:flex;align-items:center;gap:var(--s-2);border-bottom:1px solid var(--line);min-height:52px}
.compra-item label{flex:1;display:flex;align-items:center;gap:var(--s-3);min-height:52px;cursor:pointer;font-size:var(--fs-body);font-weight:var(--fw-semi);overflow-wrap:anywhere}
.compra-item input{width:24px;height:24px;margin:0;accent-color:var(--accent);flex-shrink:0}
.compra-item.bought span{text-decoration:line-through;color:var(--quiet);opacity:.6}
.compra-edit{min-height:var(--hit);padding:0 10px;font-size:var(--fs-small)}
.compra-remove{margin-top:var(--s-1);min-height:var(--hit);color:var(--warning-ink)}
.compra-hoy-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.compra-hoy-head button{min-height:var(--hit)}
.compra-hoy-head .ghost{color:var(--ink);font-weight:var(--fw-bold)}
.cuenta{font-weight:var(--fw-medium);color:var(--quiet);margin-left:var(--s-1)}
@media(max-width:650px){
    .casa-grid{grid-template-columns:1fr}
    .casa-main .page-head{align-items:flex-start;flex-direction:column}
    .casa-main .page-head .secondary{min-height:var(--hit)}
}
.adult-sync-panel{border-top:1px solid var(--line);margin-top:var(--s-4);padding-top:var(--s-4)}
.adult-sync-panel h4{margin:0 0 6px;font-size:var(--fs-ui)}
.adult-sync-scope{font-size:var(--fs-caption);line-height:1.7;color:var(--soft);padding:var(--s-3) var(--page-x);margin:0;background:var(--inset)}

/* Guías */
html[data-theme] .guias-main h2{color:var(--quiet);margin:26px 0 10px}
.guias-main :is(p,li){font-size:var(--fs-body);line-height:var(--lh-read);color:var(--soft)}
.guias-tools{display:flex;gap:var(--s-3);align-items:center;flex-wrap:wrap;margin:18px 0 var(--s-1)}
.guias-tools input{flex:1 1 220px;min-height:var(--hit-lg);border-radius:var(--r-md);padding:0 var(--s-4);background:var(--glass);color:var(--ink);border:1px solid var(--glass-line);font-size:var(--fs-body)}
.guias-progreso{font-size:var(--fs-small);font-weight:var(--fw-bold);color:var(--soft)}
.guias-sin{margin:var(--s-4) 0}
.guias-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-3);align-items:start}
.guia-card,.guia-sugerida{display:flex;flex-direction:column;gap:6px;padding:var(--s-4);border-radius:var(--r-lg);color:var(--ink);text-decoration:none;min-height:var(--hit)}
.guia-card:hover,.guia-sugerida:hover{border-color:var(--adult-line)}
.guia-card-title,.guia-sugerida strong{font-size:var(--fs-body);font-weight:var(--fw-bold);color:var(--ink);overflow-wrap:anywhere}
.guias-grid .guia-card .guia-cat{display:none}
html[data-theme] .guia-cat{color:var(--quiet)}
.guia-min{font-size:var(--fs-small);color:var(--soft)}
.guia-leida{align-self:flex-start;font-size:var(--fs-caption);font-weight:var(--fw-bold);padding:3px 9px;border-radius:var(--r-pill);background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--ink)}
html[data-theme] .guia-sugerida{margin-top:var(--s-4);border-left:4px solid var(--c-guias)!important}
.guia-volver{display:inline-flex;align-items:center;min-height:var(--hit);font-weight:var(--fw-bold);color:var(--ink)}
html[data-theme] .guia-meta{margin:10px 0 0;font-size:var(--fs-item);line-height:var(--lh-read);color:var(--soft)}
.guia-pasos{padding-left:22px;display:flex;flex-direction:column;gap:var(--s-3);margin:18px 0}
.guia-pasos li::marker{font-family:var(--font);font-weight:var(--fw-bold);color:var(--ink)}
.guia-pasos strong{color:var(--ink)}
.guia-alerta{background:var(--warning-bg);border:1px solid var(--warning-line);border-radius:var(--r-md);padding:var(--s-3) var(--s-4);margin:var(--s-4) 0}
.guias-main .guia-alerta :is(strong,p,a){color:var(--warning-ink);margin:var(--s-1) 0}
.guia-alerta a{display:inline-flex;min-height:32px;align-items:center;font-weight:var(--fw-bold)}
.guia-fuentes ul{padding-left:18px}
.guia-fuentes a{color:var(--ink);font-weight:var(--fw-semi);overflow-wrap:anywhere;display:inline-block;padding:var(--s-1) 0;min-height:24px}
.guia-enlace{display:inline-flex;align-items:center;min-height:32px;font-size:var(--fs-small);font-weight:var(--fw-bold);color:var(--ink)}
@media(max-width:650px){.guias-grid{grid-template-columns:1fr}}

/* Ajustes y Logros */
.ajustes-extra{margin-top:var(--s-5);padding-top:var(--s-4);border-top:1px solid var(--line)}
.ajustes-tema{display:flex;justify-content:space-between;align-items:center;gap:var(--s-3);margin:0 0 var(--s-3);font-weight:var(--fw-bold);color:var(--ink)}
.ajustes-extra .adult-sync-scope{font-size:var(--fs-small);line-height:var(--lh-body);background:none;padding:0}
.ajustes-logros{display:inline-flex;align-items:center;min-height:var(--hit);margin-top:18px;font-weight:var(--fw-bold);color:var(--accent)}
.logros-head{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--s-4)}
.logros-barra{height:12px;border-radius:var(--r-pill);background:var(--inset);overflow:hidden;margin:var(--s-4) 0 var(--s-5)}
.logros-barra span{display:block;height:100%;background:var(--accent);border-radius:var(--r-pill)}
.logros-main .logros-lista{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-3)}
.logros-main .logro{display:flex;flex-direction:row;gap:var(--s-3);align-items:flex-start;padding:var(--s-4);border-radius:var(--r-lg)}
html[data-theme] .logros-main .logro.conseguido{background:color-mix(in srgb,var(--accent) 14%,var(--glass))!important;border-color:color-mix(in srgb,var(--accent) 55%,transparent)!important}
.logros-main .logro strong{display:block;color:var(--ink)}
.logros-main .logro span span{font-size:var(--fs-ui);color:var(--soft)}
.logro-icono{font-size:var(--icon-lg);line-height:1;color:var(--accent)}
.logros-main .logro:not(.conseguido) .logro-icono{color:var(--quiet)}
@media(max-width:650px){.logros-main .logros-lista{grid-template-columns:1fr}.logros-head .blvnky-illustration{display:none}}

/* 8 · Blvnky: recortado, sin fondo, con la luz de su sección ------------------------------------------- */
.blvnky-illustration{object-fit:contain;max-width:100%;height:auto;display:block;margin:0 auto var(--s-4)}
html[data-theme] .blvnky-illustration{border-radius:0;box-shadow:none;background:none;transform:none;
    filter:drop-shadow(0 0 1px rgba(255,255,255,.55)) drop-shadow(0 12px 28px color-mix(in srgb,var(--glow) 45%,transparent))}
html[data-theme="light"] .blvnky-illustration{filter:drop-shadow(0 10px 22px color-mix(in srgb,var(--glow) 55%,transparent))}
html[data-theme] .hoy-head .il-today-header{width:clamp(170px,22vw,230px);max-height:220px;height:auto;max-width:none;margin:0 0 -20px;position:relative;z-index:1;align-self:flex-end}
html[data-theme] :is(.il-empty-home,.il-empty-shopping,.il-empty-money,.il-money-achievement){width:140px;height:140px}
html[data-theme] .guia-card .guia-thumb{width:100%;height:auto;aspect-ratio:16/9;margin:0 0 6px;padding:var(--s-2) 0;
    background:radial-gradient(60% 70% at 50% 60%,color-mix(in srgb,var(--glow) 18%,transparent),transparent 70%)}
html[data-theme] .guia-detalle .il-guide-cover{width:100%;height:auto;aspect-ratio:16/9;max-height:320px;margin:var(--s-4) 0 var(--s-1)}
@media(max-width:650px){html[data-theme] .hoy-head .il-today-header{width:38vw;max-width:170px;margin:0 -8px -22px -40px}}

/* 9 · Movimiento: solo el «hundirse» al tocar y la entrada al cambiar de sección --------------------------- */
:is(.primary,.secondary,.ghost,.compra-chip,.adult-nav a,.guia-card,.hoy-logros){transition:transform var(--dur-press) ease}
:is(.primary,.secondary,.compra-chip,.adult-nav a,.hoy-logros):active{transform:scale(.97)}
.guia-card:active{transform:scale(.99)}
:root[data-entrando] :is(.hoy-main,.compra-main,.casa-main,.guias-main,.logros-main,.ajustes-main,.main){animation:entrar var(--dur-enter) var(--ease-out) both}
@keyframes entrar{from{opacity:0;transform:translateY(8px)}}

/* 10 · Preferencias del sistema ----------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce){
    :is(.primary,.secondary,.ghost,.compra-chip,.adult-nav a,.guia-card,.hoy-logros){transition:none}
    :is(.primary,.secondary,.compra-chip,.adult-nav a,.hoy-logros,.guia-card):active{transform:none}
    :root[data-entrando] :is(.hoy-main,.compra-main,.casa-main,.guias-main,.logros-main,.ajustes-main,.main){animation:none}
    .celebracion span{animation:none}
    .esq{animation:none}
}
/* Alto contraste pedido por el sistema: textos secundarios y líneas más marcados, sin velo de cristal */
@media (prefers-contrast: more){
    :root[data-theme]{--soft:var(--ink);--quiet:var(--quiet-more);--line:var(--adult-line);--glass-line:var(--adult-line);--glass:var(--adult-bg)}
    html[data-theme] body::after{display:none}
}
/* Colores forzados (Windows): fuera texturas, luces y sombras; el sistema pone los colores y los bordes se ven */
@media (forced-colors: active){
    html[data-theme] body::before,html[data-theme] body::after{display:none}
    html[data-theme] :is(.card,.stat-card,.quick,.account-pill,.item-card,.guia-card,.guia-sugerida,.hoy-card,.balance-card,.logros-main .logro,dialog,.adult-nav,.adult-shell){
        background:Canvas!important;border:1px solid CanvasText!important;box-shadow:none;backdrop-filter:none}
    html[data-theme] .blvnky-illustration{filter:none}
    .adult-nav [aria-current],.adult-settings[aria-current]{forced-color-adjust:none;background:Highlight;color:HighlightText;box-shadow:none}
    .esq{background:GrayText;animation:none}
    html[data-theme] .beta-note::before{forced-color-adjust:none;background:CanvasText}
}
@media (prefers-reduced-transparency: reduce){
    html[data-theme] :is(.card,.stat-card,.quick,.account-pill,.item-card,.guia-card,.guia-sugerida,.hoy-card,.balance-card,.logros-main .logro,dialog){
        background:var(--adult-bg)!important;backdrop-filter:none}
}
