:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color:#213547;background-color:#fff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--court-count: 4 }*{margin:0;padding:0;box-sizing:border-box}body{margin:0;min-height:100vh}#root{min-height:100vh}h1{font-size:2.5em;line-height:1.1;margin-bottom:1rem}h2{font-size:2em;margin-bottom:1rem;color:#f93}h3{font-size:1.5em;margin-bottom:.5rem}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#f9f9f9;color:#213547;cursor:pointer;transition:border-color .25s}button:hover{border-color:#f93}button:disabled{opacity:.35;cursor:not-allowed;pointer-events:none}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}button.primary{background-color:#f93;color:#fff}button.primary:hover{background-color:#ffb266}button.danger{background-color:#d32f2f;color:#fff}button.danger:hover{background-color:#b71c1c}input,select{padding:.6em;border-radius:4px;border:1px solid #ff9933;background-color:#f9f9f9;color:#213547;font-size:1em;font-family:inherit}input:focus,select:focus{outline:2px solid #ff9933}table{width:100%;border-collapse:collapse;margin-top:1rem}th,td{text-align:left;padding:.75rem;border-bottom:1px solid #e0e0e0}th{background-color:#f5f5f5;font-weight:600}tr:hover{background-color:#f9f9f9}.form-group{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.form-group label{font-weight:500}.form-actions{display:flex;gap:1rem;margin-top:1rem}.card{background-color:#f5f5f5;border-radius:8px;padding:1.5rem;margin-bottom:1rem}.loading{text-align:center;padding:2rem;color:#888}.error{background-color:#d32f2f;color:#fff;padding:1rem;border-radius:4px;margin-bottom:1rem}.success{background-color:#388e3c;color:#fff;padding:1rem;border-radius:4px;margin-bottom:1rem}.layout{display:flex;height:100vh;overflow:hidden}.sidebar{width:220px;height:100vh;background-color:#f5f5f5;border-right:1px solid #e0e0e0;display:flex;flex-direction:column;flex-shrink:0}.sidebar-brand{padding:1.5rem;border-bottom:1px solid #e0e0e0}.sidebar-brand-name{font-size:1.2em;font-weight:700;color:#f93}.sidebar-brand-subtitle{font-size:.75em;color:#888;margin-top:.25rem}.sidebar-nav{flex:1;padding-top:1rem;display:flex;flex-direction:column;overflow-y:auto}.nav-link{display:block;padding:.75rem 1.5rem;color:#888;text-decoration:none;font-weight:500;border-left:3px solid transparent;transition:color .2s,background-color .2s}.nav-link:hover{color:#213547;background-color:#ebebeb}.nav-link.active{color:#213547;border-left-color:#f93;background-color:#ffe5cc}.sidebar-footer{padding:1rem;border-top:1px solid #e0e0e0;background-color:#ffe5cc}.sidebar-user{font-size:.85em;color:#213547;margin-bottom:.75rem}.layout-main{flex:1;padding:2rem;overflow-y:auto}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.controls{display:flex;gap:.5rem;align-items:center}.text-muted{color:#888}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:1rem;background-color:#0006}.modal{background-color:#fff;border-radius:12px;padding:2rem;max-width:420px;width:100%;box-shadow:0 20px 60px #00000026;border:1px solid #e0e0e0}.modal h3{margin-bottom:1.5rem}.modal-detail{display:flex;justify-content:space-between;padding:.75rem 1rem;background-color:#f5f5f5;border-radius:8px;margin-bottom:.75rem;font-size:.9em}.modal-detail span:first-child{color:#888}.modal-detail span:last-child{font-weight:600}.calendar-grid{display:grid;grid-template-columns:80px repeat(var(--court-count, 4),1fr);border:1px solid #e0e0e0;margin-top:1rem}.calendar-cell{height:30px;border:.5px solid #e0e0e0;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease;padding:0 .25rem;font-size:.85em}.calendar-cell.header{font-weight:600;font-size:1em}.calendar-cell:hover{background-color:#f1f5f9}.calendar-cell.available{cursor:pointer}.calendar-cell.booked{position:relative;background-color:#fee2e2;color:#ef4444;cursor:not-allowed}.calendar-cell.booked.own{background-color:#dbeafe;color:#2563eb;cursor:pointer}.calendar-cell.selecting{background-color:#dbeafe;border:1px solid #3b82f6}.calendar-cell.selected{background-color:#dcfce7;border:2px solid #ff9933}.calendar-grid-weekly{display:grid;border:1px solid #e0e0e0;margin-top:1rem}.calendar-cell.today{background-color:#fff7ed}.calendar-cell.header.today{background-color:#ffedd5;color:#ea580c}.weekly-day-header{flex-direction:column;height:auto;padding:.35rem .25rem;gap:2px;cursor:pointer}.weekly-time-header{height:auto;font-weight:600;font-size:1em}.weekly-day-date{font-size:.75em;font-weight:400;color:#888}.calendar-cell.header.today .weekly-day-date{color:#ea580c}.calendar-grid-weekly .calendar-cell{min-width:0;overflow:hidden}.calendar-grid-weekly .calendar-cell.reservation-start{overflow:visible;z-index:2}.weekly-court-cell{position:relative}.weekly-court-cell:not(.day-start){border-left:none}.weekly-court-cell:not(.day-end){border-right:none}.calendar-cell.hour-start{border-bottom:none}.calendar-cell.half-hour{border-top:none}.calendar-cell.booked:not(.reservation-start){border-top:none}.calendar-cell.booked:not(.reservation-end){border-bottom:none}.weekly-court-header{font-size:.75em;font-weight:500;color:#666;justify-content:center;padding:2px}.weekly-selecting:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-color:#3b82f64d;pointer-events:none;z-index:0}.weekly-booking{position:absolute;top:0;left:0;right:0;background-color:#fee2e2;pointer-events:none;z-index:1}.calendar-cell.booked.own .weekly-booking{background-color:#dbeafe}.calendar-cell.peak-rate:not(.booked):not(.selecting):not(.weekly-selecting){background-color:#fef9c3}
