:root{color:#0f172a;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f8fafc;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Segoe UI,system-ui,Helvetica,Arial,sans-serif}html{scroll-behavior:smooth;min-height:100%}body{background:#f8fafc;min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}button{-webkit-tap-highlight-color:transparent}#root{width:100%;min-height:100vh}:root{--bg-main:#f8fafc;--bg-panel:#fff;--bg-panel-strong:#fff;--bg-sidebar:#f8fafc;--text-main:#0f172a;--text-muted:#64748b;--text-soft:#94a3b8;--line:#e2e8f0;--line-soft:#f1f5f9;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-bg:#eff6ff;--accent-border:#bfdbfe;--accent-2:#16a34a;--accent-2-bg:#dcfce7;--accent-2-border:#bbf7d0;--danger:#dc2626;--danger-bg:#fee2e2;--danger-border:#fecaca;--warning:#d97706;--warning-bg:#fef3c7;--warning-border:#fde68a;--shadow-xs:0 1px 2px #0f172a0a;--shadow-sm:0 1px 3px #0f172a0f, 0 1px 2px #0f172a0a;--shadow-md:0 4px 12px #0f172a0f, 0 1px 3px #0f172a0a;--radius-lg:16px;--radius-md:12px;--radius-sm:8px;--radius-xs:6px;--sidebar-width:240px;--transition:.14s ease}*{box-sizing:border-box}body{color:var(--text-main);background:var(--bg-main);margin:0}button,input,select{font-family:inherit}.app{min-height:100vh;display:flex}.app:before{display:none}.sidebar{width:var(--sidebar-width);background:var(--bg-sidebar);border-right:1px solid var(--line);flex-direction:column;align-self:flex-start;min-height:100vh;padding:20px 12px 24px;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar h2{letter-spacing:-.3px;color:var(--text-main);align-items:center;gap:10px;margin:0 4px 6px;font-size:15px;font-weight:750;display:flex}.sidebar h2:before{content:"P";color:#fff;background:var(--accent);vertical-align:middle;border-radius:8px;flex-shrink:0;place-items:center;width:30px;height:30px;font-size:14px;font-weight:800;display:inline-grid}.sidebar p{color:var(--text-soft);border-bottom:1px solid var(--line);margin:0 4px 20px 44px;padding-bottom:16px;font-size:11.5px;line-height:1.4}.sidebar button{border-radius:var(--radius-sm);width:100%;min-height:38px;color:var(--text-muted);cursor:pointer;text-align:left;transition:background var(--transition), color var(--transition);background:0 0;border:none;align-items:center;gap:8px;margin-bottom:2px;padding:9px 10px 9px 14px;font-size:13.5px;font-weight:520;display:flex;position:relative}.sidebar button:before{content:"";opacity:.35;width:6px;height:6px;transition:opacity var(--transition);background:currentColor;border-radius:50%;flex-shrink:0}.sidebar button:hover{background:var(--accent-bg);color:var(--accent)}.sidebar button:hover:before{opacity:.6}.sidebar button.active,.sidebar button:focus-visible{background:var(--accent-bg);color:var(--accent);outline:none;font-weight:660}.sidebar button.active:after{content:"";background:var(--accent);border-radius:0 3px 3px 0;width:3px;height:18px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.sidebar button.active:before,.sidebar button:focus-visible:before{opacity:1}.sidebar .refresh,.sidebar .logout{justify-content:center;font-size:13px;font-weight:580}.sidebar .refresh{color:var(--accent-2);border:1px solid var(--accent-2-border);background:var(--accent-2-bg);border-radius:var(--radius-sm);margin-top:20px}.sidebar .refresh:hover{background:#bbf7d0}.sidebar .refresh:before,.sidebar .refresh:after{display:none}.sidebar .logout{color:var(--danger);border:1px solid var(--danger-border);background:var(--danger-bg);border-radius:var(--radius-sm)}.sidebar .logout:hover{background:#fecaca}.sidebar .logout:before,.sidebar .logout:after{display:none}.content{background:#fff;flex:1;min-width:0;padding:28px clamp(20px,3vw,44px) 56px;overflow-x:auto}.topbar{z-index:5;border-bottom:1px solid var(--line-soft);-webkit-backdrop-filter:blur(12px);background:#fffffff2;justify-content:space-between;align-items:center;gap:16px;margin:-6px 0 26px;padding:12px 0 16px;display:flex;position:sticky;top:0}.topbar h1{color:var(--text-main);letter-spacing:-1px;margin:0;font-size:clamp(26px,3.5vw,36px);font-weight:800;line-height:1}.topbar span{border:1px solid var(--line);color:var(--text-muted);background:var(--bg-main);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:7px 12px;font-size:12.5px;font-weight:500;display:inline-flex}.topbar span:before{content:"";background:#22c55e;border-radius:50%;flex-shrink:0;width:6px;height:6px}.cards{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;display:grid}.card{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--bg-panel);min-height:110px;box-shadow:var(--shadow-sm);transition:box-shadow var(--transition), border-color var(--transition), transform var(--transition);padding:20px 20px 18px;position:relative}.card:after{display:none}.card:hover{box-shadow:var(--shadow-md);border-color:var(--accent-border);transform:translateY(-2px)}.card span{color:var(--text-soft);text-transform:uppercase;letter-spacing:.6px;margin-bottom:8px;font-size:11px;font-weight:700;display:block}.card strong{color:var(--text-main);letter-spacing:-1.2px;font-size:clamp(28px,3vw,36px);font-weight:800;line-height:1;display:block}.grid-espacios{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;display:grid}.espacio{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--bg-panel);min-height:200px;box-shadow:var(--shadow-sm);transition:box-shadow var(--transition), transform var(--transition);padding:18px 18px 18px 22px;position:relative;overflow:hidden}.espacio:before{content:"";background:var(--line);border-radius:999px;width:4px;position:absolute;inset:14px auto 14px 10px}.espacio:after{content:"";background:var(--text-soft);border-radius:50%;width:9px;height:9px;position:absolute;top:14px;right:14px}.espacio:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.espacio h3{color:var(--text-main);letter-spacing:-.5px;margin:0 0 10px;font-size:22px;font-weight:780;line-height:1}.espacio p{letter-spacing:.3px;text-transform:uppercase;color:var(--text-muted);background:var(--line-soft);border-radius:999px;align-items:center;margin:0 0 10px;padding:4px 10px;font-size:11px;font-weight:700;display:inline-flex}.espacio small{color:var(--text-muted);margin-top:8px;font-size:13px;line-height:1.5;display:block}.espacio.libre:before{background:var(--accent-2)}.espacio.libre:after{background:var(--accent-2);box-shadow:0 0 0 4px #16a34a1f}.espacio.libre p{color:#166534;background:var(--accent-2-bg);border:1px solid var(--accent-2-border)}.espacio.ocupado:before{background:var(--accent)}.espacio.ocupado:after{background:var(--accent);box-shadow:0 0 0 4px #2563eb1a}.espacio.ocupado p{color:#1e40af;background:var(--accent-bg);border:1px solid var(--accent-border)}.espacio.mantenimiento:before{background:var(--warning)}.espacio.mantenimiento:after{background:var(--warning);box-shadow:0 0 0 4px #d977061f}.espacio.mantenimiento p{color:#92400e;background:var(--warning-bg);border:1px solid var(--warning-border)}.espacio-actions{flex-wrap:wrap;gap:7px;margin-top:14px;display:flex}button{border:0}.btn-primary,.btn-secondary,.btn-warning,.btn-danger,.btn-login{border-radius:var(--radius-sm);cursor:pointer;letter-spacing:-.1px;min-height:34px;transition:background var(--transition), box-shadow var(--transition), transform var(--transition), filter var(--transition);border:1px solid #0000;justify-content:center;align-items:center;padding:7px 14px;font-size:13px;font-weight:640;display:inline-flex}.btn-primary{color:#fff;background:var(--accent);border-color:var(--accent-hover);box-shadow:var(--shadow-xs)}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{color:#334155;border-color:var(--line);box-shadow:var(--shadow-xs);background:#f1f5f9}.btn-secondary:hover{background:var(--line)}.btn-warning{color:#fff;background:var(--warning);box-shadow:var(--shadow-xs);border-color:#b45309}.btn-warning:hover{background:#b45309}.btn-danger{color:#fff;background:var(--danger);box-shadow:var(--shadow-xs);border-color:#b91c1c}.btn-danger:hover{background:#b91c1c}.btn-primary:hover,.btn-secondary:hover,.btn-warning:hover,.btn-danger:hover,.btn-login:hover{box-shadow:var(--shadow-sm);transform:translateY(-1px)}.btn-primary:active,.btn-secondary:active,.btn-warning:active,.btn-danger:active,.btn-login:active{filter:brightness(.97);transform:none}.edit-panel{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--bg-panel);box-shadow:var(--shadow-sm);margin-bottom:22px;padding:22px}.edit-panel h2,.report-section h2,section>h2{color:var(--text-main);letter-spacing:-.4px;margin:0 0 16px;font-size:18px;font-weight:740}.edit-info{border-radius:var(--radius-xs);color:var(--text-muted);background:var(--bg-main);border:1px solid var(--line);gap:6px;margin-bottom:14px;padding:5px 10px;font-size:12.5px;display:inline-flex}.form-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;display:grid}.form-grid label,.login-card label{color:#334155;letter-spacing:.1px;flex-direction:column;gap:6px;font-size:12.5px;font-weight:680;display:flex}.form-grid input,.form-grid select,.login-card input{border:1px solid var(--line);border-radius:var(--radius-xs);min-height:40px;color:var(--text-main);transition:border-color var(--transition), box-shadow var(--transition);background:#fff;outline:none;padding:9px 12px;font-size:13.5px}.form-grid input:focus,.form-grid select:focus,.login-card input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #2563eb1a}.form-grid input:disabled{color:var(--text-soft);background:var(--bg-main);cursor:not-allowed}.form-actions{flex-wrap:wrap;gap:8px;margin:16px 0 14px;display:flex}.report-section{margin-top:28px}table{border-collapse:separate;border-spacing:0;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--bg-panel);width:100%;min-width:760px;box-shadow:var(--shadow-sm);overflow:hidden}thead{background:var(--bg-main)}th,td{border-bottom:1px solid var(--line-soft);color:#334155;text-align:left;vertical-align:middle;padding:12px 16px;font-size:13.5px;line-height:1.4}th{color:var(--text-soft);letter-spacing:.6px;text-transform:uppercase;border-bottom:1px solid var(--line);font-size:11px;font-weight:750}tbody tr:last-child td{border-bottom:0}tbody tr{transition:background var(--transition)}tbody tr:hover td{background:var(--accent-bg)}section>p{border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--text-muted);background:var(--bg-panel);box-shadow:var(--shadow-xs);padding:12px 16px;font-size:13.5px;display:inline-flex}.login-page{background:radial-gradient(60% 50% at 20% 10%,#2563eb1a,#0000),radial-gradient(40% 40% at 80% 90%,#f59e0b14,#0000),#f1f5f9;place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{border:1px solid var(--line);background:#fff;border-radius:20px;width:min(100%,400px);padding:36px 32px 30px;box-shadow:0 20px 60px #0f172a14,0 4px 12px #0f172a0a}.login-card h1{color:var(--text-main);text-align:center;letter-spacing:-1px;margin:0;font-size:28px;font-weight:800;line-height:1}.login-card p{color:var(--text-muted);text-align:center;margin:8px 0 24px;font-size:13.5px;line-height:1.5}.login-card form{flex-direction:column;gap:12px;display:flex}.btn-login{background:var(--accent);border:1px solid var(--accent-hover);color:#fff;border-radius:var(--radius-sm);width:100%;min-height:42px;margin-top:4px;font-size:14px;font-weight:660;box-shadow:0 4px 12px #2563eb38}.btn-login:hover{background:var(--accent-hover)}.login-card small{color:var(--text-soft);text-align:center;margin-top:14px;font-size:12px;line-height:1.5;display:block}@media (width<=900px){.app{flex-direction:column}.sidebar{border-right:none;border-bottom:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;width:100%;min-height:auto;padding:14px 14px 16px;display:grid;position:relative}.sidebar h2,.sidebar p{grid-column:1/-1}.sidebar p{margin-bottom:6px;padding-bottom:10px}.sidebar button{margin-bottom:0}.sidebar .refresh,.sidebar .logout{margin-top:4px}.content{background:var(--bg-main);padding:20px 16px 40px}.topbar{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border-bottom:none;flex-direction:column;align-items:flex-start;position:relative}table{min-width:680px}}@media (width<=560px){.sidebar,.cards,.grid-espacios,.form-grid{grid-template-columns:1fr}.card,.espacio,.edit-panel,.login-card{border-radius:var(--radius-sm)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.dashboard-layout{flex-direction:column;gap:24px;display:flex}.dashboard-summary{grid-template-columns:1fr;gap:18px;display:grid}.charts-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.analytics-card{background:#fff;border:1px solid #e5e7eb;border-radius:16px;padding:22px;box-shadow:0 8px 20px #0f172a0f}.analytics-card.wide{grid-column:span 2}.analytics-card h2{color:#0f172a;margin:0 0 18px;font-size:20px}.analytics-header{justify-content:space-between;align-items:center;display:flex}.analytics-header span{color:#2563eb;background:#eef2ff;border-radius:999px;padding:8px 12px;font-weight:700}.progress-bar{background:#e5e7eb;border-radius:999px;width:100%;height:14px;margin:18px 0;overflow:hidden}.progress-fill{background:linear-gradient(90deg,#2563eb,#22c55e);border-radius:999px;height:100%}.summary-grid{grid-template-columns:repeat(10,1fr);gap:8px;display:grid}.mini-slot{text-align:center;border-radius:10px;padding:10px 0;font-size:13px;font-weight:800}.mini-slot.libre{color:#166534;background:#dcfce7}.mini-slot.ocupado{color:#991b1b;background:#fee2e2}.mini-slot.mantenimiento{color:#92400e;background:#fef3c7}.event-list{flex-direction:column;gap:10px;display:flex}.event-item{background:#f8fafc;border:1px solid #e5e7eb;border-radius:12px;justify-content:space-between;align-items:center;padding:14px;display:flex}.event-item strong{color:#0f172a}.event-item p{color:#64748b;margin:4px 0 0}.event-item span{color:#0369a1;background:#e0f2fe;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:700}@media (width<=1000px){.charts-grid{grid-template-columns:1fr}.analytics-card.wide{grid-column:span 1}.summary-grid{grid-template-columns:repeat(5,1fr)}}.connection-warning{color:#92400e;background:#fffbeb;border:1px solid #f59e0b;border-radius:10px;margin-bottom:18px;padding:12px 14px;font-size:14px}.espacio.reservado{background:#fffbeb;border-color:#f59e0b}.mini-slot.reservado{color:#fff;background:#f59e0b}.espacio.reservado:after{content:"Ingreso pendiente";color:#92400e;margin-top:8px;font-size:.75rem;font-weight:600;display:block}.report-section{overflow-x:auto}.report-section table{min-width:900px}
