/* Componentes compartidos de todos los módulos; colores definidos en app.css. */
.app-layout{background:var(--surface)}
.app-content{animation-duration:220ms}
.app-topbar{background:var(--background);height:78px}
.topbar-location{display:flex;flex-direction:column;gap:2px;min-width:0}
.topbar-title{font-size:.93rem;font-weight:650;color:var(--text-primary)}
.topbar-breadcrumb{display:flex;gap:8px;font-size:.7rem;color:var(--text-secondary);white-space:nowrap}
.sidebar-brand{min-height:96px}.sidebar-link{min-height:42px;margin:2px 0;border-radius:10px}
.sidebar-link.active{background:var(--primary-green);border-left-color:var(--primary-hover)}
.sidebar-link:hover{background:var(--primary-green)}
.sidebar-link:focus-visible{outline:2px solid var(--ink-inverse);outline-offset:-2px}
.nav-group-label{margin-top:22px}.sidebar-nav{padding-bottom:24px}
.page-header{padding-bottom:8px}.page-header h1{font-size:clamp(1.5rem,2vw,2rem)}
.card{box-shadow:var(--shadow)}.metric-card{border-top:3px solid var(--border);padding:24px}
.metric-card:not(.metric-featured):not(.metric-loss){background:var(--background)}
.metric-featured{border-top-color:var(--primary-hover)}.metric-featured small{color:var(--ink-inverse)}
.metric-value{font-size:clamp(1.35rem,1.8vw,1.85rem);letter-spacing:-.035em}
.metric-label{margin-top:0}.section-heading{margin-top:36px}
.table-responsive{box-shadow:var(--shadow)}.table thead th{padding-top:16px;padding-bottom:16px;text-transform:uppercase;letter-spacing:.05em;font-size:.68rem}
.table tbody tr{transition:background-color var(--motion)}.table td{font-variant-numeric:tabular-nums}
.table .btn{margin:3px 0}.table tbody td:last-child{min-width:145px}
.table-responsive:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}
.btn,.icon-button{min-height:44px}.btn-sm{min-height:36px}.btn-primary{box-shadow:0 3px 8px rgb(16 61 50 / 12%)}
.btn-outline-primary,.btn-outline-secondary{background:var(--background)}
.btn-outline-danger{--bs-btn-color:var(--danger-ink);--bs-btn-border-color:var(--border);--bs-btn-hover-bg:var(--surface-danger);--bs-btn-hover-color:var(--danger-ink);--bs-btn-hover-border-color:var(--danger)}
.btn:disabled{opacity:.65;cursor:wait}.btn[aria-disabled=true]{pointer-events:none}
:focus-visible{outline-color:var(--focus-ring)}
.form-control,.form-select,input:not([type=hidden]):not([type=checkbox]):not([type=radio]),select{min-height:46px;border-color:var(--border);border-radius:10px}
input:disabled,select:disabled,textarea:disabled{background:var(--surface);color:var(--text-secondary);cursor:not-allowed}
input[type=checkbox].form-control,input[type=radio].form-control{appearance:auto;width:1.1rem;min-height:1.1rem;height:1.1rem;padding:0;display:inline-block;margin-right:.5rem}
input:read-only:not([type=hidden]){background:var(--surface)}
textarea{min-height:110px}.form-control:focus,.form-select:focus,input:focus,textarea:focus,select:focus{border-color:var(--focus-ring);box-shadow:0 0 0 3px rgb(33 134 106 / 13%)}
form.card>p>input:not([type=checkbox]):not([type=radio]),form.card>p>select,form.card>p>textarea{width:100%}
form .card p>label{display:block}
form .card p>input:not([type=checkbox]):not([type=radio]):not([type=hidden]),form .card p>select,form .card p>textarea{width:100%}
form .row input:not([type=checkbox]):not([type=radio]):not([type=hidden]),form .row select,form .row textarea{width:100%}
.errorlist{color:var(--danger-ink)}.errorlist:not(:empty){padding:8px 12px;background:var(--surface-danger);border-radius:8px}
.text-success{color:var(--primary-green)!important}.text-danger{color:var(--danger-ink)!important}
input[aria-invalid=true],textarea[aria-invalid=true],select[aria-invalid=true]{border-color:var(--danger)}
.form-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding-top:20px;border-top:1px solid var(--border)}
.client-lookup{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 14px;align-items:end;max-width:none!important;padding:20px!important}
.client-lookup>label{grid-column:1/-1}.client-lookup>select{width:100%}.client-lookup>button{margin-top:0!important;align-self:stretch!important}
@media(max-width:767px){.client-lookup{grid-template-columns:1fr}.client-lookup>button{width:100%}}
.money-input{position:relative;display:flex;align-items:center;width:100%}
.money-input>span{position:absolute;left:14px;color:var(--text-secondary);font-size:.85rem;pointer-events:none}
.money-input .money-display{padding-left:48px!important;width:100%;font-variant-numeric:tabular-nums}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.field-wide{grid-column:1/-1}
.field-group>input,.field-group>select,.field-group>textarea{width:100%}.field-group>label{display:block}.field-group small{display:block;margin-top:7px}
.collection-layout{display:grid;grid-template-columns:minmax(250px,.8fr) minmax(0,1.7fr);gap:24px;align-items:start;max-width:1280px}
.collection-summary{padding:28px;position:sticky;top:104px}.collection-summary h2{font-size:1.25rem}
.collection-summary dl{padding:20px 0;margin:0;border:0;background:transparent;grid-template-columns:1fr auto;gap:16px 12px;font-variant-numeric:tabular-nums}
.collection-summary dl dd{text-align:right;margin:0}.collection-balance{background:var(--primary-dark-green);color:var(--ink-inverse);padding:20px;border-radius:12px;margin-top:16px}
.collection-balance span{display:block;font-size:.8rem}.collection-balance strong{display:block;font-size:1.7rem;letter-spacing:-.04em}
form.collection-form{max-width:none;padding:28px}.collection-mode{margin-bottom:26px}.collection-mode legend{font-size:1rem;font-weight:650;margin-bottom:14px}
.segmented-control{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:5px;border-radius:12px;background:var(--surface);border:1px solid var(--border)}
.segmented-control label{position:relative;margin:0}.segmented-control input{position:absolute;opacity:0;inset:0;width:100%;height:100%;cursor:pointer}
.segmented-control span{display:block;text-align:center;padding:12px;border-radius:9px;color:var(--text-secondary)}
.segmented-control input:checked+span{background:var(--primary-dark-green);color:var(--ink-inverse);box-shadow:var(--shadow)}
.segmented-control input:focus-visible+span{outline:3px solid var(--focus-ring);outline-offset:2px}
.collection-preview{display:grid;grid-template-columns:1fr 1fr;gap:12px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:20px;margin-top:26px}
.collection-preview span,.collection-preview strong{display:block}.collection-preview span{font-size:.78rem;color:var(--text-secondary)}.collection-preview strong{font-size:1.25rem;font-variant-numeric:tabular-nums}.collection-preview small{grid-column:1/-1}
.toast-stack{position:fixed;top:94px;right:24px;width:min(420px,calc(100vw - 32px));z-index:1080;display:flex;flex-direction:column;gap:10px;pointer-events:none}
.regencia-toast{position:relative;display:flex;align-items:center;gap:12px;padding:16px;background:var(--background);color:var(--text-primary);border:1px solid var(--border);border-left:4px solid var(--primary-hover);border-radius:14px;box-shadow:0 10px 35px rgb(16 61 50 / 14%);pointer-events:auto;animation:content-entry var(--motion) ease-out;transition:opacity var(--motion),transform var(--motion)}
.regencia-toast.toast-error{border-left-color:var(--danger)}.regencia-toast.toast-warning{border-left-color:var(--warning)}
.toast-symbol{display:grid;place-items:center;min-width:30px;height:30px;border-radius:50%;background:var(--surface);font-weight:750}
.regencia-toast .btn-close{margin-left:auto;flex-shrink:0;min-width:24px;min-height:24px}.regencia-toast.is-hiding{opacity:0;transform:translateY(-8px)}
.button-spinner{display:inline-block;width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;margin-right:9px;vertical-align:middle;animation:spin .7s linear infinite}
.navigation-progress{position:fixed;inset:0 0 auto;height:3px;background:var(--primary-hover);z-index:2000;animation:loading-line 1s ease-in-out infinite;transform-origin:left}
.dropdown-menu.show,.eliminacion-dialog[open]{animation:content-entry var(--motion) ease-out}
.eliminacion-dialog{box-shadow:0 25px 90px rgb(16 61 50 / 24%)}
.login-shell{border-radius:26px}.login-brand{background:linear-gradient(155deg,var(--primary-dark-green),var(--primary-green));position:relative;overflow:hidden}
.login-brand:after{content:'';position:absolute;width:320px;height:320px;border:1px solid rgb(255 255 255 / 12%);border-radius:50%;right:-150px;bottom:-100px;pointer-events:none}
.login-form{padding-top:65px;padding-bottom:65px}.error-page{box-shadow:var(--shadow);border-top:4px solid var(--primary-hover)}
@keyframes spin{to{transform:rotate(360deg)}}@keyframes loading-line{from{transform:scaleX(.05)}to{transform:scaleX(1)}}
@media(min-width:992px){.sidebar-compact{--sidebar-width:80px}.sidebar-compact .brand-copy,.sidebar-compact .sidebar-link span:not(.ui-icon),.sidebar-compact .nav-group-label,.sidebar-compact .sidebar-footer{display:none}.sidebar-compact .sidebar-brand{padding:22px 18px}.sidebar-compact .sidebar-nav{padding:10px}.sidebar-compact .sidebar-link{justify-content:center;padding:12px 5px}.sidebar-compact .nav-group{margin-bottom:16px}.app-sidebar,.app-workspace{transition-duration:var(--motion)}}
@media(max-width:1100px){.collection-layout{grid-template-columns:1fr}.collection-summary{position:static}.collection-summary dl{grid-template-columns:1fr auto 1fr auto}.collection-balance{margin-top:12px}}
@media(max-width:767px){.app-topbar{height:68px}.topbar-breadcrumb{font-size:.62rem}.app-content{padding:22px 16px}.collection-summary,form.collection-form{padding:20px}.form-grid{grid-template-columns:1fr;gap:18px}.collection-summary dl{grid-template-columns:1fr auto}.collection-layout{gap:18px}.collection-preview{grid-template-columns:1fr}.form-actions>*{width:100%}.toast-stack{position:relative;top:auto;right:auto;width:100%;margin-bottom:16px}.toast-stack:empty{display:none}.metric-card{padding:20px}.login-form{padding:34px 24px}.btn-sm{min-height:40px}.table-responsive{max-width:100%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.navigation-progress{transform:none}}
@media print{.toast-stack,.navigation-progress,.form-actions{display:none!important}.collection-summary{position:static}.app-layout{background:white}}
