:root{font-family:Inter,system-ui,sans-serif;color:#17332d;background:#f5f7f4;--green:#123c35;--mint:#dff1e9;--gold:#e8b75c;--muted:#6b7d77;--line:#e3e9e5}*{box-sizing:border-box}body{margin:0}.app-shell{display:flex;min-height:100vh}.sidebar{width:270px;background:var(--green);color:#dcebe5;padding:24px 16px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;padding:0 12px 34px;color:#fff}.brand-mark{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:var(--gold);color:var(--green);font-weight:900;font-size:24px}.brand small,.user-chip small{display:block;color:#a9c2b9;font-size:11px;margin-top:2px}.sidebar nav{display:grid;gap:5px}.nav-item{border:0;background:transparent;color:#b9d0c8;text-align:left;padding:12px;border-radius:10px;font:inherit;cursor:pointer;display:flex;gap:12px;align-items:center}.nav-item:hover,.nav-item.active{background:#28574d;color:#fff}.nav-item.active{box-shadow:inset 3px 0 var(--gold)}.sidebar-footer{margin-top:auto;padding:18px 12px;color:#a9c2b9;font-size:12px}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#5bd39b;margin-right:6px}.main-content{flex:1;min-width:0}.topbar{height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 42px}.eyebrow{font-size:10px;color:var(--muted);letter-spacing:.12em;display:block}.topbar strong{font-size:15px}.top-actions{display:flex;align-items:center;gap:18px}.icon-button,.menu-toggle{border:0;background:transparent;font-size:23px;color:var(--muted);cursor:pointer}.menu-toggle{display:none}.user-chip{display:flex;align-items:center;gap:9px;border:0;background:transparent;text-align:left;color:var(--green);font:inherit}.user-chip b{font-size:13px}.avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--mint);color:var(--green);font-weight:700}.view{max-width:1280px;margin:0 auto;padding:38px 42px}.heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:26px}.heading h1{font-size:30px;letter-spacing:-.04em;margin:4px 0}.heading p{color:var(--muted);margin:0}.button{border:0;border-radius:9px;padding:11px 16px;background:var(--green);color:#fff;font-weight:700;cursor:pointer}.button.secondary{background:var(--mint);color:var(--green)}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:22px}.card,.panel,.view-card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:21px}.stat-label{font-size:12px;color:var(--muted);display:flex;justify-content:space-between}.stat-value{display:block;font-size:27px;font-weight:800;margin:10px 0 2px;color:var(--green)}.stat-note{font-size:12px;color:#3d8d67}.dashboard-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:22px}.panel-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.panel-title h2{font-size:17px;margin:0}.panel-title a{font-size:12px;color:#28725d}.movement{display:flex;justify-content:space-between;padding:13px 0;border-top:1px solid var(--line)}.movement:first-of-type{border-top:0}.movement-name{font-weight:700;font-size:13px}.movement-meta{display:block;color:var(--muted);font-size:12px}.amount{font-weight:800}.positive{color:#28805f}.quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.quick-actions .button{background:#f1f6f3;color:var(--green);text-align:left}.notice{display:flex;gap:12px;background:#fff8e9;border:1px solid #f5dfad;color:#715821;border-radius:12px;padding:14px;margin-top:18px;font-size:13px}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:14px 10px;border-bottom:1px solid var(--line);font-size:13px}.table th{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.pill{display:inline-block;border-radius:999px;padding:4px 9px;font-size:11px;font-weight:700;background:var(--mint);color:#27735b}.empty{padding:42px;text-align:center;color:var(--muted)}
@media(max-width:900px){.sidebar{position:fixed;z-index:5;inset:0 auto 0 0;transform:translateX(-100%);transition:transform .2s}.sidebar.open{transform:translateX(0)}.menu-toggle{display:block}.topbar{padding:0 20px;gap:14px}.view{padding:28px 20px}.stats{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}}
@media(max-width:560px){.top-actions .icon-button{display:none}.user-chip span:not(.avatar){display:none}.heading{align-items:start;gap:16px;flex-direction:column}.heading h1{font-size:26px}.stats{gap:10px}.card,.panel,.view-card{padding:16px}.stat-value{font-size:22px}.table{min-width:620px}.view-card{overflow-x:auto}}
.edit-form{background:#f0f7f3;border:1px solid #cfe4da;border-radius:15px;padding:22px;margin-bottom:22px}.form-heading{display:flex;justify-content:space-between;align-items:start;margin-bottom:18px}.form-heading h2{margin:4px 0 0;font-size:20px}.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.form-grid label{font-size:12px;font-weight:700;color:#46625a}.form-grid input,.form-grid select{display:block;width:100%;margin-top:6px;border:1px solid #cbdad3;border-radius:8px;padding:10px;background:#fff;color:var(--green);font:inherit}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.text-button{border:0;background:transparent;color:#28725d;font-weight:700;cursor:pointer}@media(max-width:900px){.form-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.form-grid{grid-template-columns:1fr}}
.stats.two{grid-template-columns:repeat(2,1fr)}.button-group{display:flex;gap:10px}.form-grid .wide{grid-column:span 2}@media(max-width:560px){.stats.two{grid-template-columns:1fr}.form-grid .wide{grid-column:span 1}.button-group{width:100%}.button-group .button{flex:1}}
.movement-actions{display:flex;align-items:center;gap:10px}.text-button.danger{color:#ae473e}.movement.anulado{opacity:.58}.movement.anulado .movement-name{text-decoration:line-through}@media(max-width:560px){.movement-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px}}
.movement[hidden],.table tr[hidden]{display:none!important}
.form-help{margin:-5px 0 18px;color:var(--muted);font-size:13px}
.quick-search{display:block;width:min(290px,100%);margin-top:12px;padding:9px 11px;border:1px solid var(--line);border-radius:8px;font:inherit;color:var(--green)}.panel-title .quick-search{margin:0 0 0 auto;width:220px}
.stats.three{grid-template-columns:repeat(3,1fr)}.report-balance{display:flex;justify-content:space-between;padding:13px 0;border-bottom:1px solid var(--line)}.report-balance.total{font-size:16px;border-bottom:0;padding-top:18px}@media(max-width:560px){.stats.three{grid-template-columns:1fr}}
.admin-section{margin-top:22px}.import-label{display:inline-flex;align-items:center;cursor:pointer}.import-label input{display:none}.audit-list{margin-top:18px}
.permissions-field{border:1px solid #cfe4da;border-radius:10px;margin:18px 0 0;padding:14px}.permissions-field legend{padding:0 5px;color:#46625a;font-size:12px;font-weight:700}.permissions-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.permissions-grid label{font-size:13px;color:#46625a}.permissions-grid input{accent-color:var(--green)}@media(max-width:700px){.permissions-grid{grid-template-columns:1fr}}
.auth-gate{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,#123c35,#28574d)}.auth-card{width:min(430px,100%);padding:32px;background:#fff;border-radius:20px;box-shadow:0 24px 70px rgba(0,0,0,.25)}.auth-card h1{margin:10px 0 8px;color:var(--green)}.auth-card p{margin:0 0 22px;color:var(--muted)}.auth-card label{display:block;margin:14px 0;font-size:13px;font-weight:700;color:#46625a}.auth-card input{display:block;width:100%;margin-top:6px;padding:12px;border:1px solid #cbdad3;border-radius:8px;font:inherit}.auth-error{min-height:20px;margin-top:14px;color:#ae473e;font-size:13px}
.auth-gate[hidden]{display:none}
@media print{.sidebar,.topbar,.heading .button-group,.notice,.form-actions{display:none!important}.main-content,.view{max-width:none;margin:0;padding:0}.view{padding:18px}.card,.panel,.view-card{box-shadow:none;border:1px solid #ccc}.table{min-width:0}}

/* Uso cómodo desde teléfonos: controles amplios, acciones en columna y menú sobre el contenido. */
@media(max-width:560px){
  .sidebar{width:min(84vw,310px);box-shadow:12px 0 30px rgba(0,0,0,.22)}
  .topbar{height:64px;padding:0 14px}
  .topbar strong{font-size:13px}
  .view{padding:20px 14px 32px}
  .button,.nav-item,.icon-button{min-height:44px}
  .button-group{flex-wrap:wrap}
  .button-group .season-filter{width:100%}
  .button-group select{width:100%;padding:9px;margin-top:4px}
  .form-actions{display:grid;grid-template-columns:1fr 1fr}
  .movement{gap:10px;align-items:flex-start}
  .movement-actions{width:100%;justify-content:space-between}
  .quick-search,.panel-title .quick-search{width:100%;margin-top:12px}
  .panel-title{align-items:flex-start;flex-wrap:wrap}
}
