:root{--color-primary:#1a6b5c;--color-primary-dark:#0f4a40;--color-primary-light:#2d9a87;--color-accent:#c9a227;--color-bg:#f4f7f6;--color-surface:#fff;--color-text:#1a2e2a;--color-text-muted:#5a726c;--color-border:#d4e0dc;--color-success:#16a34a;--color-warning:#d97706;--color-danger:#dc2626;--color-info:#0284c7;--radius:10px;--shadow:0 2px 8px #1a2e2a14;--shadow-lg:0 8px 24px #1a2e2a1f}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--color-bg);color:var(--color-text);font-family:Segoe UI,system-ui,-apple-system,sans-serif;line-height:1.5}a{color:var(--color-primary);text-decoration:none}.app-layout{min-height:100vh;display:flex}.sidebar{background:linear-gradient(180deg, var(--color-primary-dark) 0%, var(--color-primary) 100%);color:#fff;z-index:100;flex-direction:column;width:260px;height:100vh;transition:transform .25s;display:flex;position:fixed}.app-layout.sidebar-collapsed .sidebar{transform:translate(-100%)}.sidebar-toggle{border:1px solid var(--color-border);width:36px;height:36px;color:var(--color-text-muted);cursor:pointer;background:#fff;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;transition:background .2s,color .2s,border-color .2s;display:flex}.sidebar-toggle:hover{background:var(--color-bg);color:var(--color-text);border-color:#c5d0cc}.sidebar-toggle--collapse{z-index:10;position:absolute;top:1rem;right:1rem}.main-column{flex-direction:column;flex:1;min-width:0;margin-left:260px;transition:margin-left .25s;display:flex}.app-layout.sidebar-collapsed .main-column{margin-left:0}.top-bar{border-bottom:1px solid var(--color-border);z-index:50;background:#fff;align-items:center;gap:1rem;padding:.75rem 1.5rem;display:none;position:sticky;top:0}.app-layout.sidebar-collapsed .top-bar{display:flex}.top-bar-brand{color:var(--color-text);font-size:1rem;font-weight:700}.sidebar-brand{border-bottom:1px solid #ffffff26;padding:1.5rem 3.5rem 1.5rem 1.5rem}.sidebar-brand h1{font-size:1.1rem;font-weight:700}.sidebar-brand p{opacity:.8;margin-top:.25rem;font-size:.75rem}.sidebar-nav{flex:1;padding:1rem 0;overflow-y:auto}.nav-link{color:#ffffffd9;align-items:center;gap:.75rem;padding:.75rem 1.5rem;font-size:.9rem;transition:all .2s;display:flex}.nav-link:hover,.nav-link.active{color:#fff;background:#ffffff26}.nav-link.active{border-right:3px solid var(--color-accent)}.main-content{flex:1;min-width:0;min-height:100vh;padding:2rem;overflow-x:auto}.page-header{margin-bottom:2rem}.page-header h2{color:var(--color-primary-dark);font-size:1.75rem;font-weight:700}.page-header p{color:var(--color-text-muted);margin-top:.25rem}.card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--color-border);padding:1.5rem}.card-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.25rem;margin-bottom:2rem;display:grid}.stat-card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);border-left:4px solid var(--color-primary);padding:1.25rem}.stat-card.warning{border-left-color:var(--color-warning)}.stat-card.success{border-left-color:var(--color-success)}.stat-card.danger{border-left-color:var(--color-danger)}.stat-card .label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.8rem}.stat-card .value{color:var(--color-primary-dark);margin-top:.25rem;font-size:1.75rem;font-weight:700}.btn{cursor:pointer;border:none;border-radius:8px;align-items:center;gap:.5rem;padding:.6rem 1.25rem;font-size:.875rem;font-weight:600;transition:all .2s;display:inline-flex}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-dark)}.btn-secondary{background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover{background:var(--color-border)}.btn-danger{background:var(--color-danger);color:#fff}.btn-success{background:var(--color-success);color:#fff}.btn-sm{padding:.4rem .8rem;font-size:.8rem}.btn:disabled{opacity:.5;cursor:not-allowed}.form-group{margin-bottom:1rem}.form-group label{color:var(--color-text);margin-bottom:.4rem;font-size:.85rem;font-weight:600;display:block}.form-control{border:1px solid var(--color-border);background:#fff;border-radius:8px;width:100%;padding:.6rem .85rem;font-size:.9rem;transition:border-color .2s}.form-control:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #1a6b5c26}.form-row{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.form-check{align-items:center;gap:.5rem;display:flex}.form-check input{width:1rem;height:1rem}.table-container{max-width:100%;overflow-x:auto}table.data-table{border-collapse:collapse;table-layout:fixed;width:100%;font-size:.875rem}table{border-collapse:collapse;width:100%;font-size:.875rem}.cell-ellipsis{text-overflow:ellipsis;white-space:nowrap;max-width:200px;overflow:hidden}.data-table th.col-vencimiento,.data-table td.col-vencimiento{min-width:105px;padding-right:1.25rem}.data-table th.col-estado,.data-table td.col-estado{min-width:88px}thead{background:var(--color-bg)}th{text-align:left;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.03em;padding:.75rem 1rem;font-size:.8rem;font-weight:600}td{border-top:1px solid var(--color-border);padding:.75rem 1rem}tr:hover td{background:#1a6b5c08}.badge{border-radius:20px;padding:.2rem .6rem;font-size:.75rem;font-weight:600;display:inline-block}.badge-success{color:#166534;background:#dcfce7}.badge-warning{color:#92400e;background:#fef3c7}.badge-danger{color:#991b1b;background:#fee2e2}.badge-info{color:#075985;background:#e0f2fe}.badge-neutral{color:#374151;background:#f3f4f6}.modal-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{border-radius:var(--radius);width:100%;max-width:560px;max-height:90vh;box-shadow:var(--shadow-lg);background:#fff;padding:2rem;overflow-y:auto}.modal h3{color:var(--color-primary-dark);margin-bottom:1.5rem;font-size:1.25rem}.modal-actions{justify-content:flex-end;gap:.75rem;margin-top:1.5rem;display:flex}.toolbar{flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.toolbar .search{flex:1;min-width:200px}.kiosk-container{background:linear-gradient(135deg, var(--color-primary-dark) 0%, var(--color-primary) 50%, var(--color-primary-light) 100%);flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex;position:relative}.kiosk-back-link{color:#ffffffd9;background:#00000026;border-radius:8px;padding:.5rem .75rem;font-size:.9rem;text-decoration:none;position:absolute;top:1.25rem;left:1.25rem}.kiosk-back-link:hover{color:#fff;background:#00000040}.kiosk-card{text-align:center;width:100%;max-width:500px;box-shadow:var(--shadow-lg);background:#fff;border-radius:20px;padding:3rem}.kiosk-logo{margin-bottom:.5rem;font-size:2.5rem}.kiosk-title{color:var(--color-primary-dark);font-size:1.5rem;font-weight:700}.kiosk-subtitle{color:var(--color-text-muted);margin-bottom:2rem;font-size:.9rem}.kiosk-input{text-align:center;letter-spacing:.3em;border:3px solid var(--color-border);width:100%;color:var(--color-primary-dark);border-radius:12px;margin-bottom:1.5rem;padding:1rem;font-size:2.5rem;font-weight:700}.kiosk-input:focus{border-color:var(--color-primary);outline:none}.kiosk-result{border-radius:12px;margin-top:1.5rem;padding:1.5rem;font-size:1.1rem}.kiosk-result.success{color:#166534;background:#dcfce7}.kiosk-result.error{color:#991b1b;background:#fee2e2}.kiosk-keypad{grid-template-columns:repeat(3,1fr);gap:.75rem;margin-top:1rem;display:grid}.kiosk-key{border:2px solid var(--color-border);background:var(--color-bg);cursor:pointer;border-radius:10px;padding:1rem;font-size:1.5rem;font-weight:700;transition:all .15s}.kiosk-key:hover,.kiosk-key.action{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.alert{border-radius:8px;margin-bottom:1rem;padding:.75rem 1rem;font-size:.875rem}.alert-error{color:#991b1b;background:#fee2e2;border:1px solid #fecaca}.alert-success{color:#166534;background:#dcfce7;border:1px solid #bbf7d0}.empty-state{text-align:center;color:var(--color-text-muted);padding:3rem}.tabs{border-bottom:2px solid var(--color-border);gap:.5rem;margin-bottom:1.5rem;display:flex}.tab{cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-2px;padding:.75rem 1.25rem;font-size:.9rem;font-weight:600;transition:all .2s}.tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.sidebar-backdrop{z-index:90;cursor:pointer;background:#00000073;border:none;padding:0;display:none;position:fixed;inset:0}@media (width<=1024px){.main-content{padding:1.25rem}.card-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.page-header h2{font-size:1.5rem}}@media (width<=768px){.main-column{margin-left:0}.top-bar{padding:.65rem 1rem;display:flex}.sidebar{width:min(280px,88vw);box-shadow:var(--shadow-lg)}.sidebar-backdrop{display:block}.main-content{min-height:calc(100vh - 57px);padding:1rem}.page-header{margin-bottom:1.25rem}.page-header h2{font-size:1.35rem}.page-header p{font-size:.875rem}.toolbar{flex-direction:column;align-items:stretch;gap:.75rem}.toolbar .search{width:100%;min-width:0}.toolbar .btn{justify-content:center;width:100%}.form-row{grid-template-columns:1fr}.card-grid{grid-template-columns:1fr;gap:1rem;margin-bottom:1.25rem}.card,.stat-card{padding:1rem}.stat-card .value{font-size:1.5rem}.modal{border-radius:12px;max-height:95vh;padding:1.25rem}.modal-actions{flex-direction:column-reverse;align-items:stretch}.modal-actions .btn{justify-content:center;width:100%}.tabs{-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tab{white-space:nowrap;flex-shrink:0;padding:.6rem 1rem;font-size:.85rem}th,td{padding:.6rem .75rem;font-size:.8rem}table.data-table{table-layout:auto;min-width:640px}.cell-ellipsis{max-width:140px}.kiosk-container{justify-content:flex-start;padding:3.5rem 1rem 1rem}.kiosk-card{border-radius:16px;padding:1.5rem}.kiosk-title{font-size:1.25rem}.kiosk-input{letter-spacing:.2em;padding:.85rem;font-size:2rem}.kiosk-key{padding:.85rem;font-size:1.25rem}.kiosk-back-link{font-size:.8rem;top:.75rem;left:.75rem}.kiosk-result{padding:1rem;font-size:1rem}}@media (width<=480px){.top-bar-brand{text-overflow:ellipsis;white-space:nowrap;font-size:.9rem;overflow:hidden}.sidebar-brand h1{font-size:1rem}.nav-link{padding:.65rem 1.25rem;font-size:.875rem}.btn{padding:.55rem 1rem}table.data-table{min-width:560px}}
