.appointment-scheduler{max-width:500px;margin:20px 0;padding:20px;border:1px solid #e0e0e0;border-radius:8px;background-color:#fafafa}.appointment-scheduler h3{margin:0 0 20px;color:#333;font-size:1.2em}.calendar-section{margin-bottom:20px}.calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.calendar-header h4{margin:0;color:#333;font-size:1.1em}.nav-button{background:#007bff;color:#fff;border:none;border-radius:4px;width:32px;height:32px;cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center}.nav-button:hover{background:#0056b3}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;background:#e0e0e0;border-radius:4px;padding:2px}.week-day-header{background:#f8f9fa;padding:8px 4px;text-align:center;font-weight:700;font-size:.9em;color:#666}.calendar-day{background:white;border:none;padding:12px 4px;text-align:center;cursor:pointer;font-size:.9em;min-height:40px;display:flex;align-items:center;justify-content:center}.calendar-day.selectable:hover{background:#e3f2fd}.calendar-day.has-availability{background:#d4edda;border:1px solid #c3e6cb}.calendar-day.has-availability:hover{background:#b8dcc5}.calendar-day.no-availability{background:#e9ecef;color:#6c757d}.calendar-day.no-availability:hover{background:#dee2e6}.calendar-day.selected{background:#007bff;color:#fff;font-weight:700;border:2px solid #0056b3}.calendar-day.disabled{background:#f5f5f5;color:#ccc;cursor:not-allowed}.calendar-day.other-month{color:#ccc;background:#f9f9f9}.calendar-day.beyond-booking-window{background:#f5f5f5;color:#999;cursor:not-allowed;text-decoration:line-through;opacity:.5}.time-slot-section{margin-bottom:20px}.time-slot-section h4{margin:0 0 15px;color:#333;font-size:1.1em}.time-slots{display:flex;gap:15px;flex-wrap:wrap}.time-slot{flex:1;min-width:200px;background:white;border:2px solid #e0e0e0;border-radius:8px;padding:15px;cursor:pointer;text-align:center;transition:all .2s ease}.time-slot:hover{border-color:#007bff;background:#f8f9fa}.time-slot.selected{border-color:#007bff;background:#e3f2fd}.time-slot-label{font-weight:700;color:#333;margin-bottom:5px}.time-slot-hours{color:#666;font-size:.9em}.time-slot.unavailable{background:#f5f5f5;border-color:#dee2e6;color:#6c757d;cursor:not-allowed;opacity:.6}.time-slot.unavailable:hover{border-color:#dee2e6;background:#f5f5f5}.unavailable-badge{display:inline-block;background:#dc3545;color:#fff;font-size:.75em;padding:2px 8px;border-radius:12px;margin-top:5px;font-weight:600}.disclaimer-section{background:#fff3cd;border:1px solid #ffeaa7;border-radius:6px;padding:15px;margin-top:20px}.disclaimer-text{margin-bottom:15px}.disclaimer-text p{margin:0 0 10px;color:#856404;font-size:.9em;line-height:1.4}.disclaimer-text p:last-child{margin-bottom:0}.helpdesk-contact{border-top:1px solid #ffeaa7;padding-top:15px}.helpdesk-contact p{margin:0 0 5px;color:#856404;font-size:.9em}.helpdesk-contact p:last-child{margin-bottom:0}@media (max-width: 600px){.appointment-scheduler{padding:15px}.time-slots{flex-direction:column}.time-slot{min-width:auto}.calendar-day{padding:8px 4px;min-height:36px;font-size:.8em}}.booking-confirmation{margin-top:2rem;padding:1.5rem;background-color:#f8f9fa;border-radius:8px}.banner{display:flex;align-items:flex-start;padding:1rem 1.5rem;margin-bottom:1.5rem;border-radius:6px;animation:slideDown .3s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.success-banner{background-color:#d4edda;border:1px solid #c3e6cb;color:#155724}.error-banner{background-color:#f8d7da;border:1px solid #f5c6cb;color:#721c24}.banner-icon{font-size:1.5rem;margin-right:1rem;flex-shrink:0}.banner-content{flex:1}.banner-content h4{margin:0 0 .5rem;font-size:1rem;font-weight:600}.banner-content p{margin:.25rem 0;font-size:.9rem}.dismiss-button{margin-top:.5rem;padding:.25rem .75rem;background-color:transparent;border:1px solid currentColor;border-radius:4px;color:inherit;font-size:.85rem;cursor:pointer;transition:background-color .2s}.dismiss-button:hover{background-color:#0000000d}.booking-summary h3{margin:0 0 1.5rem;font-size:1.25rem;color:#333}.summary-details{background-color:#fff;border:1px solid #dee2e6;border-radius:6px;padding:1.5rem;margin-bottom:1.5rem}.summary-row{display:flex;justify-content:space-between;padding:.75rem 0;border-bottom:1px solid #e9ecef}.summary-row:last-child{border-bottom:none}.summary-label{font-weight:600;color:#495057}.summary-value{color:#212529;text-align:right}.confirmation-actions{display:flex;justify-content:center;margin-bottom:1.5rem}.confirm-button{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem 2rem;background-color:#007bff;color:#fff;border:none;border-radius:6px;font-size:1rem;font-weight:600;cursor:pointer;transition:background-color .2s,transform .1s;min-width:180px}.confirm-button:hover:not(:disabled){background-color:#0056b3;transform:translateY(-1px)}.confirm-button:active:not(:disabled){transform:translateY(0)}.confirm-button:disabled{background-color:#6c757d;cursor:not-allowed;opacity:.7}.loading-spinner{display:inline-block;width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.booking-disclaimer{padding:1rem;background-color:#fff3cd;border:1px solid #ffeaa7;border-radius:6px;font-size:.9rem;color:#856404}.booking-disclaimer p{margin:0;line-height:1.5}.booking-disclaimer strong{font-weight:600}@media (max-width: 768px){.booking-confirmation{padding:1rem}.summary-row{flex-direction:column;gap:.25rem}.summary-value{text-align:left}.confirm-button{width:100%}}.callback-button{display:inline-block;margin-top:12px;padding:10px 20px;background-color:#e85d04;color:#fff;font-weight:600;font-size:.95rem;border-radius:6px;text-decoration:none;transition:background-color .2s ease}.callback-button:hover{background-color:#c94e00}.site-visit-notes-form{max-width:500px;margin:20px 0;padding:20px;border:1px solid #e0e0e0;border-radius:8px;background-color:#fafafa}.site-visit-notes-form h3{margin:0 0 20px;color:#333;font-size:1.2em}.form-section{margin-bottom:20px}.section-label{display:block;margin-bottom:10px;color:#333;font-weight:600;font-size:.95em}.toggle-group{display:flex;flex-wrap:wrap;gap:8px}.toggle-button{background:white;border:2px solid #e0e0e0;border-radius:6px;padding:8px 16px;cursor:pointer;font-size:.9em;color:#333;transition:all .2s ease}.toggle-button:hover{border-color:#007bff;background:#f8f9fa}.toggle-button.selected{border-color:#007bff;background:#e3f2fd;color:#0056b3;font-weight:600}.notes-textarea{width:100%;padding:10px;border:1px solid #e0e0e0;border-radius:6px;font-size:.9em;font-family:inherit;resize:vertical;box-sizing:border-box;background:white;color:#333;transition:border-color .2s ease}.notes-textarea:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 2px #007bff26}.char-count{text-align:right;font-size:.8em;color:#888;margin-top:4px}@media (max-width: 600px){.site-visit-notes-form{padding:15px}.toggle-group{gap:6px}.toggle-button{padding:7px 12px}}.job-details-container{display:flex;flex-direction:column;min-height:100vh}.job-details-content{flex:1;padding:1rem}.job-details-header{margin-bottom:2rem}.job-details-header h1{color:#2c3e50;margin-bottom:.5rem}.job-info-section{margin-bottom:2rem}.job-info-section h2{color:#34495e;margin-bottom:.5rem}.job-id{color:#7f8c8d;font-size:.9rem;margin:0 0 .5rem}.job-types{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.job-type-badge{display:inline-block;background-color:#007bff;color:#fff;padding:.25rem .75rem;border-radius:4px;font-size:.85rem;font-weight:500}.job-zone{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.zone-badge{display:inline-block;background-color:#28a745;color:#fff;padding:.25rem .75rem;border-radius:4px;font-size:.85rem;font-weight:500}.property-info-section{margin-bottom:2rem}.property-info-section h3{color:#34495e;margin-bottom:1rem;font-size:1.1rem}.property-info-section p{margin:.5rem 0;color:#2c3e50}.appointment-section{margin-bottom:2rem}.booking-confirmation-section{margin-top:2rem}.booking-complete-section{margin:2rem 0;padding:2rem;background-color:#d4edda;border:2px solid #c3e6cb;border-radius:8px;text-align:center}.success-message h3{color:#155724;margin:0 0 1rem;font-size:1.5rem}.success-message p{color:#155724;margin:0;font-size:1rem}.company-footer{background-color:#f8f9fa;border-top:1px solid #e9ecef;padding:1rem;margin-top:auto}.company-info{text-align:center;max-width:600px;margin:0 auto}.company-name{font-size:.9rem;font-weight:600;color:#495057;margin:0 0 .25rem}.company-contact{font-size:.8rem;color:#6c757d;margin:0}@media (max-width: 768px){.job-details-content,.company-footer{padding:.75rem}.company-name{font-size:.85rem}.company-contact{font-size:.75rem}}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f8f9fa;color:#333;line-height:1.6}.App{min-height:calc(100vh - 80px);display:flex;align-items:center;justify-content:center;padding:20px}.app-header{width:100%;background:white;border-bottom:1px solid #e9ecef;padding:12px 24px;display:flex;align-items:center}.app-logo{height:56px;width:auto;display:block}.job-lookup-container{max-width:800px;width:100%;background:white;border-radius:8px;box-shadow:0 2px 10px #0000001a;padding:30px;text-align:center}.loading-container{max-width:800px;width:100%;background:white;border-radius:8px;box-shadow:0 2px 10px #0000001a;padding:60px 30px;text-align:center}.loading-spinner{font-size:18px;color:#007bff;animation:pulse 1.5s ease-in-out infinite;display:flex;flex-direction:column;align-items:center;gap:15px}.spinner-icon{font-size:32px;animation:spin 2s linear infinite}.network-warning{color:#dc3545;font-size:14px;margin-top:10px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse{0%{opacity:1}50%{opacity:.5}to{opacity:1}}.job-details-container{max-width:800px;width:100%;background:white;border-radius:8px;box-shadow:0 2px 10px #0000001a;padding:30px}.job-details-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;padding-bottom:20px;border-bottom:2px solid #e9ecef}.job-details-header h1{color:#333;font-size:28px;margin:0}.job-details-content{display:flex;flex-direction:column;gap:25px}.job-info-section h2{color:#007bff;font-size:24px;margin-bottom:10px}.job-id{color:#6c757d;font-size:14px;font-weight:500}.job-description-section,.job-schedule-section,.customer-info-section,.contact-info-section{background:#f8f9fa;padding:20px;border-radius:6px;border-left:4px solid #007bff}.job-description-section h3,.job-schedule-section h3,.customer-info-section h3,.contact-info-section h3{color:#333;font-size:18px;margin-bottom:10px}.customer-info-section p,.contact-info-section p{margin-bottom:8px}.error-display-container{max-width:600px;width:100%;background:white;border-radius:8px;box-shadow:0 2px 10px #0000001a;padding:40px 30px;text-align:center}.error-content{display:flex;flex-direction:column;align-items:center;gap:20px}.error-icon{font-size:48px;margin-bottom:10px}.error-content h2{color:#dc3545;font-size:24px;margin-bottom:10px}.error-message{color:#6c757d;font-size:16px;margin-bottom:20px;line-height:1.5}.error-actions{display:flex;flex-direction:column;align-items:center;gap:20px;width:100%}.helpdesk-info{background:#f8f9fa;padding:20px;border-radius:6px;border-left:4px solid #28a745;width:100%}.helpdesk-info p{margin-bottom:10px;color:#333}.helpdesk-number{font-size:18px;color:#28a745!important}.retry-button:hover{background-color:#0056b3!important}.retry-section{margin-bottom:20px}.retry-countdown{color:#6c757d;font-style:italic;margin-bottom:10px}.helpdesk-hours{color:#6c757d;margin-top:5px}.troubleshooting-tips{margin-top:30px;padding-top:20px;border-top:1px solid #e9ecef;text-align:left}.troubleshooting-tips details{cursor:pointer}.troubleshooting-tips summary{font-weight:600;color:#007bff;margin-bottom:10px;outline:none}.troubleshooting-tips ul{margin-left:20px;color:#6c757d}.troubleshooting-tips li{margin-bottom:5px}@media (max-width: 768px){.App{padding:10px}.job-details-container,.error-display-container,.job-lookup-container,.loading-container{padding:20px}.job-details-header{flex-direction:column;gap:15px;text-align:center}.job-details-header h1{font-size:24px}.error-actions{flex-direction:column}}
