*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,sans-serif;background:#f5f7fb;color:#1f2937}.container{margin:0 auto;padding:24px}.card{background:#fff;border-radius:8px;border:1px solid #d8e0ea;padding:16px;margin-bottom:20px}.header-user-info{display:flex;align-items:center;gap:8px}.public-header{display:flex;justify-content:space-between;align-items:center;gap:12px}.form-grid{display:grid;gap:12px}label{display:grid;gap:6px;font-size:14px}input,select,textarea,button{font:inherit}input,select,textarea{padding:8px 10px;border:1px solid #c5d0de;border-radius:6px;background:#fff}textarea{min-height:80px}button{padding:8px 12px;border:1px solid #2f6feb;border-radius:6px;background:#2f6feb;color:#fff;cursor:pointer}button:hover{background:#2559c4;border-color:#2559c4}button:disabled{opacity:.5;cursor:not-allowed}button+button{margin-left:8px}.btn-success{background:#16a34a;border-color:#16a34a}.btn-success:hover{background:#15803d;border-color:#15803d}.btn-danger{background:#dc2626;border-color:#dc2626}.btn-danger:hover{background:#b91c1c;border-color:#b91c1c}.btn-secondary{background:#fff;border-color:#c5d0de;color:#374151}.btn-secondary:hover{background:#f1f5f9;border-color:#aab6c6}.btn-active{background:#1d4ed8;border-color:#1d4ed8;color:#fff;font-weight:600}.btn-active:hover{background:#1e40af;border-color:#1e40af;color:#fff}.row{display:flex;align-items:center;flex-wrap:wrap}.section-switch,.form-row{gap:10px}.form-row input{min-width:240px;flex:1}.slots{display:grid;gap:8px;margin:8px 0 12px}.slot-row{display:grid;grid-template-columns:1fr 1fr 120px 120px auto;gap:8px}.unavailability-range-row{display:grid;grid-template-columns:1fr 120px 1fr 120px;gap:8px}.calendar-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(160px,1fr));gap:10px;overflow-x:auto}.week-planning-scroll{max-height:75vh;overflow:auto;position:relative}.week-planning-table{min-width:2070px;border:1px solid #e5ebf3;border-radius:8px;border-collapse:separate;border-spacing:0;table-layout:fixed}.week-planning-table thead th{background:#f8fafc;border-right:1px solid #e5ebf3;border-bottom:1px solid #e5ebf3;padding:8px 6px;font-weight:700;font-size:12px;text-align:left;white-space:nowrap;position:sticky;top:0;z-index:5}.week-planning-table thead th.week-hour-head{position:sticky;top:0;width:140px;min-width:140px;max-width:140px;text-align:left;padding:8px 0 8px 4px;overflow:visible}.week-hour-label{position:relative;left:-.95em}.week-planning-table thead th.week-hour-head.week-hour-head-first{padding-left:20px}.week-hour-head-last:after{content:"22h";position:absolute;right:4px;top:8px;margin-right:-.9em;font-weight:700;font-size:12px;color:#1f2937}.week-planning-day-head{text-align:left;min-width:110px}.week-planning-day{min-width:110px;white-space:nowrap;vertical-align:top;background:#fff}.week-planning-sticky-col{position:sticky;left:0;z-index:5;background:#fff;box-shadow:2px 0 #e5ebf3}.week-planning-table th.week-planning-sticky-col{z-index:6;background:#f8fafc}.week-planning-cell{width:140px;min-width:140px;max-width:140px;min-height:160px;vertical-align:top;padding:0;border-right:1px solid #e5ebf3;border-bottom:1px solid #e5ebf3;position:relative;overflow:visible}.week-planning-row-alt td{background:#f8fafc}.week-planning-row-alt .week-planning-sticky-col{background:#f1f5f9}.week-gym-name{display:inline-block;margin-top:3px;font-size:12px;color:#334155}.week-gym-events{display:grid;gap:2px;padding:4px}.week-hour-lane{position:relative;display:block;overflow:visible;padding:6px}.week-event{margin-bottom:0;font-size:10px;padding:4px 6px}.week-event-title{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.week-event-span{position:absolute;z-index:4;min-width:64px;max-width:none;margin:0;min-height:64px}.week-event-time{font-weight:600}.day-card{border:1px solid #e5ebf3;border-radius:8px;padding:8px;min-height:180px}.day-card h3{margin:0 0 8px;font-size:13px}.calendar-event{border-left:4px solid #9ca3af;padding:6px 8px;border-radius:6px;background:#f8fafc;margin-bottom:6px;display:grid;gap:2px;font-size:12px;margin-top:4px}.month-grid-scroll{overflow-x:auto}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(120px,1fr));gap:6px;min-width:840px}.month-head{font-weight:700;font-size:12px;text-align:center}.month-cell{min-height:120px;border:1px solid #e5ebf3;border-radius:8px;padding:6px;background:#fff}.month-cell.outside{background:#f8fafc;color:#94a3b8}.month-date{font-weight:700;margin-bottom:4px;font-size:12px}.month-event{display:flex;flex-direction:column;border-left:4px solid #9ca3af;background:#f8fafc;border-radius:4px;padding:3px 6px;font-size:11px;margin-bottom:4px;overflow:hidden}.month-event-time,.month-event-target{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.month-event-target{color:#4b5563}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;margin-top:12px}th,td{border-bottom:1px solid #e5ebf3;text-align:left;padding:8px 6px;font-size:14px}.toast{position:fixed;top:16px;right:16px;z-index:1000;display:flex;align-items:flex-start;gap:10px;max-width:380px;padding:12px 14px;border-radius:8px;box-shadow:0 8px 24px #0f172a2e;font-weight:600;font-size:14px;line-height:1.4;animation:toast-in .2s ease-out}.toast-text{white-space:pre-line}.toast-error{background:#fef2f2;color:#b91c1c;border:1px solid #fca5a5}.toast-success{background:#ecfdf5;color:#065f46;border:1px solid #86efac}.toast-close{margin-left:auto;padding:0 2px;border:none;background:transparent;color:inherit;font-size:18px;line-height:1;font-weight:700;cursor:pointer}.toast-close:hover{background:transparent;opacity:.7}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.muted{color:#6b7280;font-size:12px}.color-badge{display:inline-flex;min-width:88px;justify-content:center;padding:4px 8px;border-radius:999px;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.35);font-size:12px;font-weight:700}@media (max-width: 640px){.container,.card{padding:12px}.public-header,.header-user-info{flex-wrap:wrap}.form-row input{min-width:0;width:100%}.slot-row{grid-template-columns:1fr}.unavailability-range-row{grid-template-columns:1fr 1fr}}
