@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;700&family=Manrope:wght@700;800&display=swap');
:root{--ink:#152238;--muted:#68758a;--line:#e3e9f1;--bg:#f5f8fc;--blue:#2563eb;--navy:#0f1f3d;--green:#15803d;--red:#b91c1c;--amber:#a16207}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:'DM Sans',sans-serif}h1,h2,h3{font-family:Manrope,sans-serif;margin-top:0}.shell{max-width:1120px;margin:auto;padding:24px}.hero{min-height:90vh;display:flex;flex-direction:column;justify-content:center;max-width:690px;margin:auto}.eyebrow{color:var(--blue);font-weight:700;letter-spacing:.12em;font-size:.78rem}.hero h1{font-size:clamp(2.5rem,7vw,5.5rem);line-height:1;margin:14px 0}.hero p{font-size:1.15rem;color:var(--muted);line-height:1.7}.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:25px}.btn{display:inline-block;padding:13px 18px;border:0;border-radius:12px;text-decoration:none;font-weight:700;cursor:pointer;font-size:.95rem}.primary{background:var(--blue);color:white}.secondary{background:white;color:var(--ink);border:1px solid var(--line)}.topbar{background:var(--navy);color:white;padding:16px 24px;display:flex;justify-content:space-between;align-items:center;gap:16px}.topbar a{color:#dbeafe}.layout{display:grid;grid-template-columns:230px 1fr;min-height:calc(100vh - 65px)}.side{background:#fff;border-right:1px solid var(--line);padding:20px}.side a{display:block;color:var(--ink);text-decoration:none;padding:11px 12px;border-radius:9px;margin-bottom:5px}.side a:hover,.side a.active{background:#eaf1ff;color:var(--blue)}.content{padding:28px;max-width:1250px;width:100%;margin:auto}.card{background:white;border:1px solid var(--line);border-radius:16px;padding:22px;margin-bottom:20px;box-shadow:0 8px 25px #10204008}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1/-1}label{font-weight:700;font-size:.86rem}input,select,textarea{font:inherit;border:1px solid #ced7e4;border-radius:9px;padding:11px;background:#fff;color:var(--ink)}textarea{min-height:90px;resize:vertical}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:720px}th,td{text-align:left;padding:12px;border-bottom:1px solid var(--line);font-size:.88rem}th{color:var(--muted);font-size:.78rem;text-transform:uppercase}.badge{display:inline-block;padding:5px 9px;border-radius:99px;font-size:.75rem;font-weight:700;background:#eef2f7}.paid{color:var(--green);background:#dcfce7}.pending{color:var(--amber);background:#fef3c7}.cancelled{color:var(--red);background:#fee2e2}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.stat strong{display:block;font-size:1.7rem;margin-top:8px}.notice{padding:12px 14px;border-radius:10px;background:#eff6ff;color:#1d4ed8;margin-bottom:16px}.danger{color:var(--red)}.login-card{max-width:460px;margin:12vh auto}.muted{color:var(--muted)}.password-box{display:flex;gap:8px}.password-box input{flex:1}.toggle-password{border:1px solid #ced7e4;background:#fff;border-radius:9px;padding:0 13px;cursor:pointer}.toast{position:fixed;right:22px;top:22px;z-index:20;max-width:360px;padding:15px 18px;border-radius:12px;box-shadow:0 12px 30px #10204022;background:#fff}.toast-danger{color:#991b1b;border:1px solid #fecaca}.user-status{font-size:.82rem;font-weight:700;color:var(--muted);background:none!important;padding:0!important;border:0!important;box-shadow:none!important}.avatar{width:38px;height:38px;border-radius:50%;object-fit:cover}.profile-photo{width:88px;height:88px;border-radius:50%;object-fit:cover;display:block;margin-bottom:12px;border:4px solid #eaf1ff}.avatar{width:38px;height:38px;border-radius:50%;object-fit:cover}.profile-photo{width:88px;height:88px;border-radius:50%;object-fit:cover;display:block;margin-bottom:12px;border:4px solid #eaf1ff}@media(max-width:760px){.layout{display:block}.side{border-right:0;border-bottom:1px solid var(--line);display:flex;overflow:auto;gap:5px}.side a{white-space:nowrap}.content{padding:12px}.grid,.stat-grid{grid-template-columns:1fr}.topbar{padding:12px 14px;font-size:.88rem}.card{padding:14px;border-radius:12px}.hero{min-height:80vh}.actions{display:grid;grid-template-columns:1fr;gap:8px}.actions .btn{width:100%;text-align:center}.table-wrap{overflow:visible}.responsive-table,.responsive-table tbody,.responsive-table tr,.responsive-table td{display:block;width:100%;min-width:0}.responsive-table thead{display:none}.responsive-table tr{border:1px solid var(--line);border-radius:12px;padding:8px 12px;margin-bottom:12px;background:#fff}.responsive-table td{border:0;border-bottom:1px solid #eef2f7;padding:8px 0 8px 45%;position:relative;min-height:36px;text-align:right;word-break:break-word}.responsive-table td:last-child{border-bottom:0}.responsive-table td::before{content:attr(data-label);position:absolute;left:0;top:8px;width:42%;font-weight:700;color:var(--muted);text-align:left;font-size:.76rem;text-transform:uppercase}.responsive-table td[colspan]{padding:12px;text-align:center}.responsive-table td[colspan]::before{display:none}.responsive-table a{display:inline-block;padding:4px 0}.table-wrap table:not(.responsive-table){min-width:680px}.table-wrap:has(table:not(.responsive-table)){overflow-x:auto;-webkit-overflow-scrolling:touch}.user-status{font-size:.75rem}}

/* Resumen histórico y vencimientos */
.dashboard-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);align-items:start}
.bar-chart{display:flex;flex-direction:column;gap:1rem;margin:1.25rem 0}
.bar-row{display:grid;grid-template-columns:88px minmax(100px,1fr) auto;align-items:center;gap:.75rem;font-size:.9rem}
.bar-track{height:1.25rem;background:#e8eef7;border-radius:999px;overflow:hidden}
.bar-fill{height:100%;min-width:2px;border-radius:999px;transition:width .25s ease}
.bar-paid{background:#198754}.bar-pending{background:#f0ad00}.bar-overdue{background:#dc3545}
.text-danger{color:#b42318!important}.text-center{text-align:center}.text-muted{color:#667085}
@media(max-width:900px){.dashboard-grid{grid-template-columns:1fr}}
@media(max-width:576px){.bar-row{grid-template-columns:76px minmax(70px,1fr);gap:.5rem}.bar-row strong{grid-column:2;font-size:.85rem}.dashboard-grid .card{padding:1rem}.dashboard-grid .table-wrap{overflow-x:auto}.dashboard-grid table{min-width:650px}}
.dashboard-grid h2{margin-top:0}.dashboard-grid .responsive-table td,.dashboard-grid .responsive-table th{white-space:nowrap}
@media print{.dashboard-grid{display:block}.bar-chart{break-inside:avoid}}
.bi{font-family:bootstrap-icons!important}
