*,:before,:after{box-sizing:border-box}body{font-family:var(--font-sans);background:var(--color-bg-canvas);color:var(--color-text-primary);-webkit-font-smoothing:antialiased;margin:0}.shell{grid-template-columns:240px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--color-bg-inverse);color:var(--color-text-inverse);padding:var(--space-xl) var(--space-md);gap:var(--space-2xl);flex-direction:column;display:flex}.brand{gap:var(--space-xxs);padding:0 var(--space-xs);flex-direction:column;display:flex}.brand-name{font-size:18px;font-weight:700}.brand-sub{color:var(--color-text-muted);font-size:12px}.nav-list{gap:var(--space-xxs);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.nav-link{padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-md);color:var(--color-text-inverse);justify-content:space-between;align-items:center;font-size:14px;font-weight:500;text-decoration:none;display:flex}.nav-link:hover{background:color-mix(in srgb, var(--color-text-inverse) 8%, transparent)}.nav-link.is-active{background:var(--color-accent-default);color:var(--color-accent-on-accent)}.nav-link.is-disabled{color:var(--color-text-muted);cursor:default}.nav-link.is-disabled:hover{background:0 0}.badge{text-transform:uppercase;letter-spacing:.04em;padding:2px var(--space-xs);border-radius:var(--radius-full);background:color-mix(in srgb, var(--color-text-inverse) 10%, transparent);font-size:10px;font-weight:600}.main{flex-direction:column;min-width:0;display:flex}.content{padding:var(--space-2xl)}.page-title{margin:0 0 var(--space-xs);font-size:24px;line-height:30px}.muted{color:var(--color-text-secondary)}@media (width<=768px){.shell{grid-template-columns:1fr}.sidebar{padding:var(--space-md);gap:var(--space-md)}.nav-list{flex-flow:wrap}.content{padding:var(--space-md)}}.centered{min-height:100vh;padding:var(--space-md);place-items:center;display:grid}.card{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-2xl)}.access-card{gap:var(--space-md);flex-direction:column;width:min(420px,100%);display:flex}.brand-mark{color:var(--color-text-accent);margin:0;font-weight:700}.form{gap:var(--space-md);flex-direction:column;display:flex}.field{gap:var(--space-xxs);border:0;flex-direction:column;margin:0;padding:0;font-size:14px;display:flex}.field legend{margin-bottom:var(--space-xxs)}.field>span,.field legend{font-weight:600}input[type=email],input[type=password],input[type=text],input[type=search],input[type=date],select,textarea{font:inherit;padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-bg-surface);color:var(--color-text-primary)}textarea{resize:vertical;min-height:80px}.form-error{color:var(--color-status-danger);margin:0;font-size:14px}.flash{margin:0 0 var(--space-md);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-md);background:var(--color-status-success-subtle);color:var(--color-status-success);font-size:14px}.btn{font:inherit;padding:var(--space-xs) var(--space-md);border-radius:var(--radius-md);cursor:pointer;border:1px solid #0000;font-size:14px;font-weight:600}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--color-accent-default);color:var(--color-accent-on-accent)}.btn-secondary{background:var(--color-bg-surface);border-color:var(--color-accent-default);color:var(--color-text-accent)}.btn-ghost{color:var(--color-text-primary);background:0 0}.btn-danger{background:var(--color-status-danger-subtle);color:var(--color-status-danger)}.link-button{font:inherit;color:var(--color-text-inverse);cursor:pointer;text-align:left;background:0 0;border:0;padding:0;font-size:13px;text-decoration:underline}.club-list,.option-list{gap:var(--space-xs);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.club-option,.option{justify-content:space-between;gap:var(--space-sm);width:100%;font:inherit;text-align:left;padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border-default);border-radius:var(--radius-md);background:var(--color-bg-surface);cursor:pointer;display:flex}.club-option-name{font-weight:600}.club-box{gap:var(--space-xxs);padding:var(--space-sm);border-radius:var(--radius-md);background:color-mix(in srgb, var(--color-text-inverse) 8%, transparent);flex-direction:column;display:flex}.club-box-name{font-weight:600}.sidebar-logout{margin-top:auto}.calendar-toolbar{justify-content:space-between;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-md);flex-wrap:wrap;display:flex}.toolbar-group{align-items:center;gap:var(--space-xs);flex-wrap:wrap;display:flex}.date-label{text-transform:capitalize;font-weight:600}.checkbox,.radio{align-items:center;gap:var(--space-xs);font-size:14px;display:flex}.state{padding:var(--space-2xl) 0}.calendar-grid{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);display:grid;overflow-x:auto}.grid-head{z-index:2;background:var(--color-bg-surface);border-bottom:1px solid var(--color-border-strong);justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex;position:sticky;top:0}.grid-time{color:var(--color-text-secondary);padding:0 var(--space-xs);border-top:1px solid var(--color-border-default);font-size:12px}.grid-cell{border:0;border-top:1px solid var(--color-border-default);border-left:1px solid var(--color-border-default);cursor:pointer;background:0 0}.grid-cell:hover{background:var(--slot-available-bg);outline:1px dashed var(--slot-available-border)}.booking-block{z-index:1;padding:var(--space-xxs) var(--space-xs);font:inherit;text-align:left;border-radius:var(--radius-sm);border:1px solid var(--slot-reserved-border);background:var(--slot-reserved-bg);color:var(--slot-reserved-text);cursor:pointer;border-left-width:4px;flex-direction:column;align-items:flex-start;gap:2px;margin:1px 3px;font-size:12px;display:flex;overflow:hidden}.booking-block.kind-class{background:var(--slot-class-bg);border-color:var(--slot-class-border);color:var(--slot-class-text)}.booking-block.kind-tournament{background:var(--slot-tournament-bg);border-color:var(--slot-tournament-border);color:var(--slot-tournament-text)}.booking-block.kind-maintenance{background:var(--slot-maintenance-bg);border-color:var(--slot-maintenance-border);color:var(--slot-maintenance-text)}.booking-block.kind-block{background:var(--slot-blocked-bg);border-color:var(--slot-blocked-border);color:var(--slot-blocked-text)}.booking-block.is-cancelled{background:var(--slot-past-bg);border-color:var(--slot-past-border);color:var(--slot-past-text);text-decoration:line-through}.block-time,.block-who{font-weight:600}.block-tags{color:var(--color-text-secondary)}.drawer{z-index:10;background:var(--color-bg-surface);border-left:1px solid var(--color-border-strong);width:min(420px,100%);box-shadow:-8px 0 24px color-mix(in srgb, var(--color-text-primary) 12%, transparent);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0}.drawer-head{padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-border-default);justify-content:space-between;align-items:center;display:flex}.drawer-head h2{margin:0;font-size:18px}.drawer-body{padding:var(--space-lg);gap:var(--space-md);flex-direction:column;display:flex;overflow-y:auto}.slot-list,.actions{gap:var(--space-xs);flex-wrap:wrap;display:flex}.chip{font:inherit;padding:var(--space-xxs) var(--space-sm);border-radius:var(--radius-full);border:1px solid var(--color-border-strong);background:var(--color-bg-surface);cursor:pointer;font-size:13px}.chip.is-selected{background:var(--color-accent-default);border-color:var(--color-accent-default);color:var(--color-accent-on-accent)}.detail-list{gap:var(--space-sm);flex-direction:column;margin:0;display:flex}.detail-row dt{color:var(--color-text-secondary);font-size:12px}.detail-row dd{margin:0}.page-header{justify-content:space-between;align-items:center;gap:var(--space-md);flex-wrap:wrap;display:flex}.config-card{margin:0 0 var(--space-xl);max-width:880px}.config-card h2,.week-day h3,.preview-grid h3{margin:0;font-size:16px}.form-row{gap:var(--space-md);flex-wrap:wrap;display:flex}.form-row>.field{flex:160px}.inline-field{max-width:320px;margin-bottom:var(--space-sm)}.data-table{border-collapse:collapse;background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);width:100%;margin-bottom:var(--space-xl);font-size:14px}.data-table th,.data-table td{text-align:left;padding:var(--space-xs) var(--space-sm);border-bottom:1px solid var(--color-border-default);vertical-align:middle}.data-table th{color:var(--color-text-secondary);font-weight:600}.data-table tr.is-muted td{color:var(--color-text-muted)}.week-list,.shift-list{gap:var(--space-md);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.week-day{gap:var(--space-xs);padding-bottom:var(--space-md);border-bottom:1px solid var(--color-border-default);flex-direction:column;display:flex}.shift-row{align-items:flex-end;gap:var(--space-sm);flex-wrap:wrap;display:flex}.shift-row .field{width:96px}.preview-grid{gap:var(--space-md);grid-template-columns:repeat(auto-fill,minmax(180px,1fr));display:grid}.live-offline{margin:0 0 var(--space-sm);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-md);background:var(--color-status-danger-subtle);color:var(--color-text-primary);font-size:14px}.kpi-grid{gap:var(--space-md);margin:var(--space-md) 0;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));display:grid}.kpi{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-md);gap:var(--space-xxs);flex-direction:column;display:flex}.kpi dt{color:var(--color-text-secondary);font-size:13px}.kpi dd{margin:0}.kpi-value{font-variant-numeric:tabular-nums;font-size:28px;font-weight:700;line-height:34px}.kpi-hint{color:var(--color-text-muted);font-size:12px}.today-lists{gap:var(--space-md);margin-bottom:var(--space-md);grid-template-columns:repeat(auto-fit,minmax(280px,1fr));display:grid}.today-list,.today-page>.card{padding:var(--space-md)}.today-list h2,.today-page .card h2,.section-title{margin:0 0 var(--space-sm);font-size:16px}.count{color:var(--color-text-secondary);font-weight:400}.today-list ul,.occupancy-list{gap:var(--space-xxs);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.line-button{gap:var(--space-xs);text-align:left;width:100%;font:inherit;color:inherit;border-radius:var(--radius-sm);padding:var(--space-xs);cursor:pointer;background:0 0;border:0;grid-template-columns:96px 72px 1fr auto;align-items:baseline;font-size:14px;display:grid}.line-button:hover{background:var(--color-bg-canvas)}.line-time,.line-price{font-variant-numeric:tabular-nums}.line-court{color:var(--color-text-secondary)}.occupancy-row{gap:var(--space-sm);grid-template-columns:96px minmax(120px,1fr) 120px minmax(120px,auto);align-items:center;font-size:14px;display:grid}.meter{background:var(--color-border-default);border-radius:4px;height:8px;overflow:hidden}.meter-fill{background:var(--color-accent-default);border-radius:4px;height:100%;display:block}.occupancy-value{font-variant-numeric:tabular-nums;font-weight:600}.filters{align-items:flex-end;gap:var(--space-sm);margin:var(--space-md) 0;flex-wrap:wrap;display:flex}.filters .field{min-width:140px}.bookings-table td{white-space:nowrap}.status-tag.is-blocked{color:var(--color-status-danger);font-weight:600}.back-link{margin-bottom:var(--space-md);color:var(--color-text-accent);display:inline-block}.player-card{max-width:640px;margin-bottom:var(--space-xl);padding:var(--space-xl)}.confirm-box{border:1px solid var(--color-border-strong);border-radius:var(--radius-md);padding:var(--space-md)}.confirm-box p{margin:0 0 var(--space-xs)}@media (width<=768px){.occupancy-row{grid-template-columns:72px 1fr 88px}.occupancy-detail{display:none}.line-button{grid-template-columns:88px 1fr}.bookings-table{display:block;overflow-x:auto}}
