*{box-sizing:border-box}*,body,html{padding:0;margin:0}body,html{min-height:100vh;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:#f5f5f5;color:#1a1a1a;line-height:1.5}.app{max-width:1000px;margin:0 auto;padding:2rem 1.5rem}.section{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:1.5rem;margin-bottom:1.5rem}.section-title{font-size:1rem;font-weight:700;color:#333;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:2px solid #e0e0e0}.generator-row{display:flex;flex-wrap:wrap;gap:1.5rem;align-items:flex-end;margin-bottom:1rem}.field{display:flex;flex-direction:column;gap:.35rem}.field label{font-size:.875rem;font-weight:500;color:#555}.field input[type=date],.field input[type=number],.field input[type=text]{padding:.5rem .6rem;border:1px solid #ccc;border-radius:6px;background:#fff;color:#1a1a1a;font-size:.9375rem;width:100%;min-width:0}.field input:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 2px rgba(37,99,235,.15)}.routes-row{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem}.routes-row .field{min-width:4.5rem}.routes-row .field input{width:4rem}.rule-display{padding:.5rem .75rem;background:#f0f4ff;border:1px solid #c7d2fe;color:#3730a3;margin-bottom:1rem;display:inline-block}.btn-generate,.rule-display{border-radius:6px;font-size:.9375rem}.btn-generate{cursor:pointer;padding:.6rem 1.25rem;border:none;font-weight:600;background:#2563eb;color:#fff}.btn-generate:hover{background:#1d4ed8}.grid-wrapper{overflow:auto;max-height:70vh;border:1px solid #e0e0e0;border-radius:6px}.grid-table{border-collapse:collapse;width:100%;font-size:.875rem;background:#fff}.grid-table td,.grid-table th{border:1px solid #e5e7eb;padding:.5rem .75rem;text-align:center;white-space:nowrap}.grid-table th{background:#f8fafc;font-weight:600;color:#475569;position:-webkit-sticky;position:sticky;top:0;z-index:1}.grid-table td:first-child,.grid-table th:first-child{text-align:left;position:-webkit-sticky;position:sticky;left:0;background:#fff;z-index:1}.grid-table tr:nth-child(2n) td:first-child{background:#fafafa}.grid-table th:nth-child(2){font-weight:600;color:#475569;background:#f1f5f9;min-width:3rem}.grid-table td.cell-group{font-weight:700;min-width:3rem;text-align:center}.grid-table td.cell-group-a{color:#1e40af}.grid-table td.cell-group-b{color:#c2410c}.grid-table td.cell-group-c{color:#6d28d9}.grid-table td.cell-group-d{color:#0f766e}.grid-table td.cell-group-unknown{color:#334155}.grid-table tbody tr.schedule-row-group-a td{background:#e8f1fc;border-color:#c8d9f0;color:#1e293b}.grid-table tbody tr.schedule-row-group-b td{background:#fdf0e4;border-color:#f0d7c2;color:#1e293b}.grid-table tbody tr.schedule-row-group-c td{background:#f3effd;border-color:#ddd6f5;color:#1e293b}.grid-table tbody tr.schedule-row-group-d td{background:#e9faf6;border-color:#c5ebe3;color:#1e293b}.grid-table tbody tr.schedule-row-group-unknown td{background:#f1f5f9;border-color:#e2e8f0;color:#1e293b}.grid-table tbody tr[class*=schedule-row-group-] td.cell-group{font-weight:800;letter-spacing:.02em}.grid-table tbody tr.schedule-row-group-a td.cell-group-a{color:#1e40af}.grid-table tbody tr.schedule-row-group-b td.cell-group-b{color:#c2410c}.grid-table tbody tr.schedule-row-group-c td.cell-group-c{color:#6d28d9}.grid-table tbody tr.schedule-row-group-d td.cell-group-d{color:#0f766e}.grid-table tbody tr[class*=schedule-row-group-] td.cell-off{background:#fff;border-color:#e5e7eb;color:#64748b;font-weight:500}.grid-table tbody tr[class*=schedule-row-group-] td.cell-route{color:#166534;font-weight:700;box-shadow:inset 0 -2px 0 0 #4ade80}.grid-table tbody tr[class*=schedule-row-group-] td.cell-rescue{color:#1d4ed8;font-weight:600;box-shadow:inset 0 -2px 0 0 #93c5fd}.grid-table tbody tr[class*=schedule-row-group-] td.cell-pto{color:#b45309;font-weight:600;box-shadow:inset 0 -2px 0 0 #fcd34d}.cell-off{background:#f1f5f9;color:#64748b;font-weight:500}.cell-route{background:#dcfce7;color:#166534;font-weight:600}.cell-pto{background:#fef3c7;color:#b45309;font-weight:500}.cell-rescue{background:#dbeafe;color:#1e40af;font-weight:500}.export-buttons{display:flex;flex-wrap:wrap;gap:.75rem}.btn-export{cursor:pointer;padding:.5rem 1rem;border-radius:6px;border:1px solid #cbd5e1;font-size:.875rem;font-weight:600;background:#fff;color:#334155}.btn-export:hover{background:#f1f5f9}.btn-export.primary{background:#2563eb;border-color:#2563eb;color:#fff}.btn-export.primary:hover{background:#1d4ed8}.status-loading{color:#2563eb}.status-error,.status-loading{font-size:.875rem;margin-top:.5rem}.status-error{color:#dc2626}.status-warning{color:#b45309;font-size:.875rem;margin-top:.5rem;padding:.5rem .75rem;background:#fffbeb;border:1px solid #fcd34d;border-radius:6px}@media print{body{background:#fff}body *{visibility:hidden}.schedule-print-area,.schedule-print-area *{visibility:visible}.schedule-print-area{position:absolute;left:0;top:0;width:100%;max-width:none;padding:.5rem}.app>.status-error,.app>.status-loading,.app>.status-warning,.app>header,.app>section:first-of-type,.no-print{display:none!important}.grid-wrapper{max-height:none;overflow:visible}.section{border:none;box-shadow:none}}