html { color-scheme: light; }
html[data-bs-theme="dark"] { color-scheme: dark; }
body { background: var(--mmf-bg-primary); color: var(--mmf-text); line-height: 1.55; overflow-x: hidden; }
a { color: var(--mmf-primary); text-underline-offset: .16em; }
a:hover { color: var(--mmf-primary-hover); }
:focus-visible { outline: 3px solid color-mix(in srgb, var(--mmf-focus) 40%, transparent); outline-offset: 3px; }

.btn { min-height: 2.65rem; border-radius: var(--mmf-radius-md); padding: .57rem 1rem; box-shadow: none; transition: background-color .18s ease, border-color .18s ease, color .18s ease, transform .18s ease; }
.btn:hover { transform: translateY(-1px); }
.btn-primary { background: var(--mmf-primary); border-color: var(--mmf-primary); color: #fff; }
.btn-primary:hover,.btn-primary:focus { background: var(--mmf-primary-hover); border-color: var(--mmf-primary-hover); color: #fff; }
.btn-outline-primary { border-color: var(--mmf-primary); color: var(--mmf-primary); }
.btn-outline-primary:hover,.btn-outline-primary:focus { background: var(--mmf-primary); border-color: var(--mmf-primary); color: #fff; }
.btn-outline-secondary { border-color: var(--mmf-border-strong); color: var(--mmf-secondary); }
.btn-sm { min-height: 2.1rem; padding: .35rem .72rem; }
.btn-icon { position: relative; display: inline-grid; place-items: center; width: 2.55rem; height: 2.55rem; min-height: 0; padding: 0; border: 1px solid transparent; color: var(--mmf-secondary); }
.btn-icon:hover { background: var(--mmf-surface-hover); border-color: var(--mmf-border); color: var(--mmf-primary); transform: none; }

.form-label { margin-bottom: .42rem; color: var(--mmf-text); font-size: .84rem; font-weight: 750; }
.form-control,.form-select { min-height: 2.75rem; border: 1px solid var(--mmf-border-strong); border-radius: var(--mmf-radius-md); background-color: var(--mmf-surface); color: var(--mmf-text); }
.form-control:hover,.form-select:hover { border-color: color-mix(in srgb, var(--mmf-primary) 50%, var(--mmf-border)); }
.form-control:focus,.form-select:focus { border-color: var(--mmf-focus); box-shadow: 0 0 0 .22rem color-mix(in srgb, var(--mmf-focus) 17%, transparent); }
.form-control::placeholder { color: var(--mmf-text-soft); }

.panel,.metric-card,.sidebar-card,.wizard-card,.entry-card { border-color: var(--mmf-border); background: var(--mmf-surface); box-shadow: var(--mmf-shadow-sm); }
.panel,.metric-card { border-radius: var(--mmf-radius-lg); }
.panel { padding: clamp(1.15rem, 2.5vw, 1.75rem); }
.metric-card { position: relative; overflow: hidden; padding: 1.25rem; transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease; }
.metric-card:hover { border-color: var(--mmf-border-strong); box-shadow: var(--mmf-shadow-md); transform: translateY(-2px); }
.metric-label { margin-bottom: .55rem; color: var(--mmf-text-muted); font-size: .8rem; font-weight: 750; letter-spacing: .015em; }
.metric-value { color: var(--mmf-text); font-size: clamp(1.35rem, 2vw, 1.7rem); font-variant-numeric: tabular-nums; }
.section-heading { color: var(--mmf-text); font-size: 1.08rem; line-height: 1.35; }
.page-title { color: var(--mmf-text); font-size: clamp(1.85rem, 3.2vw, 2.55rem); line-height: 1.08; }
.page-lead { color: var(--mmf-text-muted); font-size: 1rem; line-height: 1.65; }
.eyebrow { color: var(--mmf-primary); font-size: .68rem; letter-spacing: .14em; }

.badge-soft,.pill,.budget-state,.currency-badge { display: inline-flex; align-items: center; gap: .35rem; border: 1px solid transparent; border-radius: 999px; padding: .34rem .65rem; background: var(--mmf-neutral-light); color: var(--mmf-neutral); font-size: .73rem; font-weight: 750; line-height: 1.2; }
.currency-badge { background: var(--mmf-primary-light); color: var(--mmf-primary); }
.notice { border-radius: var(--mmf-radius-md); box-shadow: none; }
.notice-success { border-color: color-mix(in srgb, var(--mmf-success) 24%, transparent); background: var(--mmf-success-light); color: var(--mmf-success); }
.notice-error { border-color: color-mix(in srgb, var(--mmf-danger) 24%, transparent); background: var(--mmf-danger-light); color: var(--mmf-danger); }
.notice-warning { border: 1px solid color-mix(in srgb, var(--mmf-warning) 24%, transparent); background: var(--mmf-warning-light); color: var(--mmf-warning); }
.notice-info { border: 1px solid color-mix(in srgb, var(--mmf-info) 24%, transparent); background: var(--mmf-info-light); color: var(--mmf-info); }

.table-responsive,.table-shell { border-radius: var(--mmf-radius-md); }
.table { --bs-table-bg: transparent; --bs-table-color: var(--mmf-text); --bs-table-border-color: var(--mmf-border); margin-bottom: 0; vertical-align: middle; }
.table > thead > tr > th { padding: .8rem .9rem; background: var(--mmf-bg-secondary); color: var(--mmf-text-muted); font-size: .7rem; letter-spacing: .075em; white-space: nowrap; }
.table > tbody > tr > td { padding: .9rem; }
.table > tbody > tr:hover > * { background: var(--mmf-surface-hover); }

.empty-state { border: 1px dashed var(--mmf-border-strong); border-radius: var(--mmf-radius-lg); background: color-mix(in srgb, var(--mmf-surface) 80%, transparent); color: var(--mmf-text-muted); }
.loading-state { display: grid; min-height: 10rem; place-items: center; color: var(--mmf-text-muted); }
.filter-bar { display: flex; flex-wrap: wrap; align-items: end; gap: .75rem; padding: 1rem; border: 1px solid var(--mmf-border); border-radius: var(--mmf-radius-lg); background: var(--mmf-surface); }

.dropdown-menu { border: 1px solid var(--mmf-border); border-radius: var(--mmf-radius-md); background: var(--mmf-surface); box-shadow: var(--mmf-shadow-md); padding: .45rem; }
.dropdown-item { border-radius: .55rem; color: var(--mmf-text); font-size: .9rem; }
.dropdown-item:hover,.dropdown-item:focus { background: var(--mmf-surface-hover); color: var(--mmf-primary); }
.modal-content,.offcanvas { border-color: var(--mmf-border); background: var(--mmf-surface); color: var(--mmf-text); }

.amount-positive { color: var(--mmf-success); }
.amount-negative { color: var(--mmf-danger); }
.amount-neutral { color: var(--mmf-info); }
.score-number { color: var(--mmf-accent); }
.score-ring { background: conic-gradient(var(--mmf-accent) calc(var(--score) * 1%), color-mix(in srgb, var(--mmf-text-muted) 20%, transparent) 0); }
.score-ring::before { background: var(--mmf-surface); }
.onboarding-dynamic-list{display:grid;grid-template-columns:minmax(0,1fr);gap:1rem;min-width:0}.onboarding-dynamic-row{min-width:0;margin:0}.onboarding-row-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.75rem}.onboarding-dynamic-row[hidden]{display:none}.onboarding-dynamic-row .row,.onboarding-dynamic-row [class*="col-"]{min-width:0}.onboarding-dynamic-row .form-control,.onboarding-dynamic-row .form-select{max-width:100%}@media(max-width:575.98px){.onboarding-nav>.container{max-width:100%;flex-direction:row!important;align-items:center!important;justify-content:flex-start!important;padding-inline:1rem}.onboarding-nav .brand{font-size:.96rem}.onboarding-nav .nav-logout{margin-left:auto;margin-right:.35rem}.page-shell>.container{max-width:100%;padding-inline:1rem}.wizard-step{padding-right:.25rem;white-space:nowrap}.wizard-card{min-width:0;overflow:hidden;padding:1.25rem}.onboarding-row-head{align-items:flex-start}.onboarding-row-head .btn{max-width:100%;padding:.4rem .6rem;white-space:normal}.onboarding-dynamic-row{padding:1rem}.onboarding-dynamic-row .notice,.wizard-card .notice{overflow-wrap:anywhere}}
.onboarding-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:.35rem;min-height:132px;padding:1.25rem;border:1px dashed var(--mmf-border);border-radius:16px;background:var(--mmf-surface-hover);color:var(--muted)}.onboarding-empty[hidden]{display:none}.onboarding-empty i{font-size:1.6rem;color:var(--teal)}.onboarding-empty strong{color:var(--ink)}.onboarding-collection-item{padding:0;overflow:hidden}.onboarding-item-summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.15rem;cursor:pointer;list-style:none}.onboarding-item-summary::-webkit-details-marker{display:none}.onboarding-item-summary>span:first-child{display:flex;flex-direction:column;min-width:0;gap:.18rem}.onboarding-item-summary strong,.onboarding-item-summary small{overflow-wrap:anywhere}.onboarding-item-summary small{color:var(--muted)}.onboarding-item-summary [data-summary-values]{color:var(--ink);font-weight:700}.onboarding-edit-label{display:inline-flex;align-items:center;gap:.35rem;flex:0 0 auto;color:var(--teal);font-size:.84rem;font-weight:800}.onboarding-collection-item[open] .onboarding-item-summary{border-bottom:1px solid var(--mmf-border);background:var(--mmf-surface-hover)}.onboarding-item-editor{padding:1.15rem}.onboarding-item-actions{display:flex;justify-content:flex-end;margin-top:1rem}@media(max-width:575.98px){.onboarding-item-summary{align-items:flex-start;padding:.9rem}.onboarding-edit-label{font-size:.78rem}.onboarding-item-editor{padding:.9rem}.onboarding-item-actions .btn{width:100%}}
/* UX-8.1: global accessible pagination states. */
.pagination { display:flex; flex-wrap:wrap; gap:.3rem; max-width:100%; }
.pagination .page-link { min-width:2.35rem; min-height:2.35rem; display:inline-grid; place-items:center; border:1px solid var(--mmf-border-strong); border-radius:.55rem!important; background:var(--mmf-surface); color:var(--mmf-text); font-weight:800; }
.pagination .page-link:hover { border-color:var(--mmf-primary); background:var(--mmf-primary-light); color:var(--mmf-primary); }
.pagination .page-link:focus-visible { outline:3px solid color-mix(in srgb,var(--mmf-focus) 40%,transparent); outline-offset:2px; box-shadow:none; }
.pagination .page-item.active .page-link,.pagination .page-link[aria-current="page"] { border-color:var(--mmf-primary); background:var(--mmf-primary); color:#fff; }
.pagination .page-item.disabled .page-link { border-color:var(--mmf-border); background:var(--mmf-neutral-light); color:var(--mmf-text-muted); opacity:.72; }
.history-pagination .pagination { margin:0; }
@media(max-width:575.98px){.pagination{justify-content:center}.pagination .page-link{min-width:2.2rem;min-height:2.2rem;padding:.35rem .55rem}.history-pagination{max-width:100%;overflow:hidden}}

.estimate-list { display:grid; gap:.6rem; margin-top:1rem; }
.estimate-row { display:grid; grid-template-columns:auto minmax(0,1fr) auto auto; align-items:center; gap:.85rem; border:1px solid var(--mmf-border); border-radius:var(--mmf-radius-md); padding:.8rem; background:var(--mmf-surface); }
.estimate-row div strong,.estimate-row div small { display:block; }
.estimate-row div small { color:var(--mmf-text-muted); }
@media(max-width:767.98px){.estimate-row{grid-template-columns:auto minmax(0,1fr)}.estimate-row>strong,.estimate-row>.status-badge{grid-column:2;justify-self:start}}
@media(max-width:575.98px){.movement-manual-header{align-items:stretch!important;flex-direction:column;gap:1rem}.movement-manual-header .btn{width:100%}.mobile-movement .entry-card>.d-flex{align-items:flex-start;gap:.75rem}.mobile-movement .entry-card strong{min-width:0;overflow-wrap:anywhere}.mobile-movement-amount{flex:0 0 auto;white-space:nowrap}}

/* Beta UX: edición visible, creación guiada, patrimonio por entidad y calendario. */
.edit-panel-active{scroll-margin-top:5.5rem;border:2px solid color-mix(in srgb,var(--mmf-primary) 48%,var(--mmf-border));box-shadow:0 16px 40px color-mix(in srgb,var(--mmf-primary) 12%,transparent)}
.edit-panel-active>summary{color:var(--mmf-primary)}
.creation-flow{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:1.25rem;align-items:center;padding:1.25rem;border:1px solid var(--mmf-border);border-radius:var(--mmf-radius-lg);background:linear-gradient(135deg,var(--mmf-surface),var(--mmf-primary-light))}
.creation-steps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin:0;padding:0;list-style:none}
.creation-steps li{display:flex;flex-direction:column;gap:.25rem;min-width:0;padding:1rem;border:1px solid var(--mmf-border);border-radius:var(--mmf-radius-md);background:var(--mmf-surface)}
.creation-steps span{color:var(--mmf-text-muted);font-size:.84rem}

.entity-net-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.entity-net-card{min-width:0}
.entity-net-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}
.entity-net-card__header h3{margin:.2rem 0 0;color:var(--mmf-text);font-size:1.15rem}
.entity-net-card__header>strong{font-size:1.15rem;white-space:nowrap}
.entity-net-totals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem;margin-top:1rem}
.entity-net-totals span{display:flex;flex-direction:column;gap:.2rem;padding:.7rem;border-radius:var(--mmf-radius-sm);background:var(--mmf-bg-secondary);color:var(--mmf-text-muted);font-size:.72rem}
.entity-net-totals strong{color:var(--mmf-text);font-size:.88rem;overflow-wrap:anywhere}
.entity-net-items{display:grid;gap:.4rem;margin-top:1rem;padding-top:.8rem;border-top:1px solid var(--mmf-border)}
.entity-net-items>small{color:var(--mmf-text-muted);font-size:.65rem;font-weight:800;letter-spacing:.1em}
.entity-net-items>div{display:flex;justify-content:space-between;gap:1rem;font-size:.85rem}
.entity-net-items span{min-width:0;overflow-wrap:anywhere}
.entity-net-items strong{white-space:nowrap}

.calendar-page{overflow-x:clip}
.calendar-summary{display:grid;grid-template-columns:.7fr 1.15fr 1.4fr;gap:1rem;margin-top:1.25rem}
.calendar-summary article{display:flex;flex-direction:column;gap:.3rem;min-width:0}
.calendar-summary small,.calendar-summary span{color:var(--mmf-text-muted)}
.calendar-summary strong{color:var(--mmf-text);font-size:1.15rem;overflow-wrap:anywhere}
.calendar-navigation{display:flex;align-items:center;gap:.75rem}
.calendar-navigation>div{min-width:12rem;text-align:center}
.calendar-navigation h2{margin:.15rem 0 0;color:var(--mmf-text);font-size:1.35rem}
.calendar-navigation .btn-outline-primary{margin-left:auto}
.calendar-filters{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--mmf-border)}
.calendar-filters>summary{cursor:pointer;color:var(--mmf-primary);font-weight:750}
.calendar-filter-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem}
.calendar-filter-option{display:flex;align-items:center;gap:.55rem;min-width:0;padding:.55rem .65rem;border:1px solid var(--mmf-border);border-radius:var(--mmf-radius-sm);color:var(--mmf-text);font-size:.83rem}
.calendar-filter-option input{flex:0 0 auto}
.calendar-filter-actions{display:flex;gap:.5rem;grid-column:1/-1}
.calendar-dot{display:inline-block;width:.58rem;height:.58rem;flex:0 0 auto;border-radius:50%;background:var(--mmf-info)}
.event-payment{--event-color:var(--mmf-danger);--event-bg:var(--mmf-danger-light)}
.event-cut{--event-color:var(--mmf-warning);--event-bg:var(--mmf-warning-light)}
.event-debt{--event-color:#7758a6;--event-bg:#f0eafa}
.event-recurring{--event-color:var(--mmf-info);--event-bg:var(--mmf-info-light)}
.event-saving{--event-color:var(--mmf-success);--event-bg:var(--mmf-success-light)}
.event-goal{--event-color:var(--mmf-accent);--event-bg:var(--mmf-accent-light)}
.event-budget{--event-color:#a45919;--event-bg:#fff0df}
.event-planning{--event-color:#4465a5;--event-bg:#eaf0fc}
.event-reminder{--event-color:var(--mmf-neutral);--event-bg:var(--mmf-neutral-light)}
.calendar-dot[class*="event-"]{background:var(--event-color)}
.financial-calendar{padding:0;overflow:hidden}
.financial-calendar__weekdays,.financial-calendar__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.financial-calendar__weekdays{border-bottom:1px solid var(--mmf-border);background:var(--mmf-bg-secondary)}
.financial-calendar__weekdays span{padding:.65rem;text-align:center;color:var(--mmf-text-muted);font-size:.7rem;font-weight:800;letter-spacing:.06em}
.calendar-day{min-width:0;min-height:8.25rem;padding:.55rem;border-right:1px solid var(--mmf-border);border-bottom:1px solid var(--mmf-border);background:var(--mmf-surface)}
.calendar-day:nth-child(7n){border-right:0}
.calendar-day--empty{background:var(--mmf-bg-primary)}
.calendar-day--today{background:color-mix(in srgb,var(--mmf-primary-light) 55%,var(--mmf-surface))}
.calendar-day--selected{box-shadow:inset 0 0 0 2px var(--mmf-primary)}
.calendar-day__number{display:grid;width:1.8rem;height:1.8rem;place-items:center;margin:0 0 .35rem auto;border:0;border-radius:50%;background:transparent;color:var(--mmf-text);font-size:.8rem;font-weight:800}
.calendar-day--today .calendar-day__number{background:var(--mmf-primary);color:#fff}
.calendar-day__events{display:grid;gap:.28rem}
.calendar-event{display:flex;flex-direction:column;gap:.08rem;min-width:0;padding:.32rem .4rem;border-left:3px solid var(--event-color);border-radius:.35rem;background:var(--event-bg);color:var(--mmf-text);font-size:.68rem;line-height:1.25;text-decoration:none}
.calendar-event span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.calendar-event small{color:var(--mmf-text-muted);font-size:.61rem}
.calendar-more{border:0;background:transparent;color:var(--mmf-primary);font-size:.68rem;font-weight:750;text-align:left}
.calendar-day-detail{min-height:8rem}
.calendar-detail-event{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.8rem;padding:.8rem 0;border-bottom:1px solid var(--mmf-border);color:var(--mmf-text);text-decoration:none}
.calendar-detail-event:last-child{border-bottom:0}
.calendar-detail-event span:nth-child(2){display:flex;flex-direction:column;min-width:0}
.calendar-detail-event small{color:var(--mmf-text-muted)}
.calendar-legend{display:flex;flex-wrap:wrap;gap:.55rem 1rem;padding:.8rem 1rem;border:1px solid var(--mmf-border);border-radius:var(--mmf-radius-md);background:var(--mmf-surface)}
.calendar-legend span{display:inline-flex;align-items:center;gap:.4rem;color:var(--mmf-text-muted);font-size:.78rem}

@media(max-width:991.98px){
 .creation-flow,.entity-net-grid{grid-template-columns:1fr}
 .calendar-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
 .calendar-summary article:last-child{grid-column:1/-1}
 .calendar-filter-form{grid-template-columns:repeat(2,minmax(0,1fr))}
 .calendar-day{min-height:6.75rem;padding:.38rem}
 .calendar-event{padding:.28rem;font-size:.62rem}
}
@media(max-width:575.98px){
 .creation-steps,.entity-net-totals,.calendar-summary,.calendar-filter-form{grid-template-columns:1fr}
 .calendar-summary article:last-child,.calendar-filter-actions{grid-column:auto}
 .calendar-navigation{flex-wrap:wrap}
 .calendar-navigation>div{min-width:0;flex:1}
 .calendar-navigation .btn-outline-primary{width:100%;margin-left:0}
 .financial-calendar__weekdays{display:none}
 .financial-calendar__grid{display:block}
 .calendar-day--empty{display:none}
 .calendar-day{display:grid;grid-template-columns:2.2rem minmax(0,1fr);min-height:0;border-right:0;padding:.75rem}
 .calendar-day__number{margin:0}
 .calendar-day__events:empty::after{content:'Sin eventos';color:var(--mmf-text-muted);font-size:.75rem}
 .calendar-event span{white-space:normal}
 .calendar-filter-actions{flex-direction:column}
 .calendar-filter-actions .btn{width:100%}
 .entity-net-card__header{align-items:flex-start;flex-direction:column}
 .entity-net-card__header>strong{white-space:normal}
}
