.app-shell .court-tabs{display:flex;gap:6px;margin:0 0 14px;padding:4px;border:2px solid var(--line);border-radius:999px;background:var(--paper);width:fit-content;max-width:100%;overflow-x:auto}.app-shell .court-tabs a{display:inline-flex;align-items:center;height:40px;padding:0 18px;border-radius:999px;font-size:15px;font-weight:800;color:var(--ink-soft);text-decoration:none;white-space:nowrap}.app-shell .court-tabs a.selected{background:var(--ink);color:var(--paper)}.app-shell .court-day-title{margin:6px 0 10px;font-size:18px;color:var(--ink)}.app-shell .court-board{--lane-name:76px;display:grid;gap:10px;margin:0 0 22px;padding:14px 16px 16px;border:2px solid var(--line);border-radius:18px;background:var(--paper)}.app-shell .court-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0 0 4px;padding:0;list-style:none;font-size:13px;font-weight:700;color:var(--ink-soft)}.app-shell .court-legend li{display:inline-flex;align-items:center;gap:6px}.app-shell .court-tone{display:inline-block;width:18px;height:12px;border-radius:4px}.app-shell .court-lane{display:grid;grid-template-columns:var(--lane-name) minmax(0,1fr);gap:10px;align-items:center}.app-shell .court-lane h3{margin:0;font-size:16px;color:var(--ink);overflow-wrap:anywhere}.app-shell .court-axis{margin-bottom:-4px}.app-shell .court-ticks{position:relative;height:16px}.app-shell .court-ticks span{position:absolute;top:0;transform:translateX(-50%);font-size:12px;font-weight:700;color:var(--ink-soft);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.app-shell .court-ticks span:first-child{transform:none}.app-shell .court-ticks span:last-child:not(:first-child){transform:translateX(-100%)}.app-shell .court-bar{position:relative;height:46px;border-radius:12px;background:var(--sage);overflow:hidden}.app-shell .court-part{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;min-width:3px;margin:0;padding:0 4px;border:0;border-radius:0;background:transparent;color:#fff;font-size:13px;font-weight:800;overflow:hidden;cursor:pointer}.app-shell .court-part span{overflow:hidden;text-overflow:clip;white-space:nowrap}.app-shell .court-part.free:focus-visible,.app-shell .court-part.free:hover{background:var(--trust-soft)}.app-shell .court-part.selected{z-index:2;box-shadow:inset 0 0 0 3px var(--ink)}.app-shell .court-part:focus-visible{z-index:3;outline:3px solid var(--ink);outline-offset:-3px}.app-shell .court-part.open_play,.app-shell .court-tone.open_play{background:var(--trust)}.app-shell .court-part.rental,.app-shell .court-tone.rental{background:var(--accent)}.app-shell .court-part.waiting,.app-shell .court-tone.waiting{background:repeating-linear-gradient(135deg,var(--warn-soft) 0 6px,var(--paper) 6px 12px);border:2px dashed #c79a3a;color:var(--warn)}.app-shell .court-tone.waiting{border-width:1px}.app-shell .court-part.lesson,.app-shell .court-tone.lesson{background:var(--lesson)}.app-shell .court-part.event,.app-shell .court-tone.event{background:var(--ink)}.app-shell .court-part.block,.app-shell .court-tone.block{background:repeating-linear-gradient(135deg,#8a948e 0 4px,#c3cac5 4px 9px);color:var(--ink)}.app-shell .court-tone.free{background:var(--sage);border:1px solid var(--line)}.app-shell .court-past{left:0;z-index:1;background:rgb(138 148 142/.35)}.app-shell .court-now,.app-shell .court-past{position:absolute;top:0;bottom:0;pointer-events:none}.app-shell .court-now{z-index:4;width:0;border-left:2px solid var(--ink)}.app-shell .court-now b{position:absolute;top:2px;left:3px;padding:0 4px;border-radius:4px;background:var(--ink);color:var(--paper);font-size:11px;line-height:16px}.app-shell .court-lane-wrap{display:grid;gap:6px;padding-top:8px;border-top:1px solid var(--line)}.app-shell .court-lane-wrap>.court-detail,.app-shell .court-lane-wrap>.court-empty,.app-shell .court-lane-wrap>.court-free-chips{margin-left:calc(var(--lane-name) + 10px)}.app-shell .court-free-chips{display:none;flex-wrap:wrap;gap:6px}.app-shell .court-free-chips button{height:34px;padding:0 12px;border:2px dashed var(--line);border-radius:999px;background:var(--sage-light);color:var(--ink);font-size:13px;font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.app-shell .court-free-chips button.selected{border-style:solid;border-color:var(--ink)}.app-shell .court-empty{margin:0;font-size:14px;color:var(--ink-soft)}.app-shell .court-slot{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2px 8px;padding:9px 12px;border-radius:12px;border-left:5px solid var(--trust);background:var(--trust-soft)}.app-shell .court-slot-time{font-size:15px;font-weight:800;color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.app-shell .court-slot-label{grid-column:1;display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:14px;font-weight:700;color:var(--ink-soft)}.app-shell .court-slot-detail{grid-column:1/-1;font-size:13px;color:var(--ink-soft);overflow-wrap:anywhere}.app-shell .court-slot-detail.private{color:var(--trust)}.app-shell .court-slot-actions,.app-shell .court-slot>a,.app-shell .court-slot>button{grid-column:2;grid-row:1/span 2;justify-self:end}.app-shell .court-slot-actions{display:flex;gap:2px}.app-shell .court-slot .secondary-button{height:38px;padding:0 12px;border-radius:999px;font-size:14px;font-weight:800}.app-shell .court-slot.free{border-left-color:var(--line);background:var(--sage-light)}.app-shell .court-slot.rental{border-left-color:var(--accent);background:var(--accent-soft)}.app-shell .court-slot.rental.pending{border-left:5px dashed #c79a3a;background:var(--warn-soft)}.app-shell .court-slot.lesson{border-left-color:var(--lesson);background:var(--lesson-soft)}.app-shell .court-slot.event{border-left-color:var(--ink);background:var(--sage)}.app-shell .court-slot.block{border-left-color:var(--ink-soft);background:var(--sage)}.app-shell .court-slot.ended{opacity:.6}.app-shell .court-mine-tag{padding:1px 8px;border-radius:999px;background:var(--ink);color:var(--paper);font-size:12px}.app-shell .court-rentals{display:grid;gap:10px;margin:0 0 22px}.app-shell .court-rental-info h2,.app-shell .court-rentals h2{margin:0;font-size:19px;color:var(--ink)}.app-shell .court-rentals .venue-help{margin:0}.app-shell .court-rental{display:grid;gap:6px;padding:14px 16px;border:2px solid var(--line);border-left:6px dashed var(--warn);border-radius:16px;background:var(--paper)}.app-shell .court-rental-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.app-shell .court-rental-top strong{font-size:17px;color:var(--ink)}.app-shell .court-rental p{margin:0;font-size:15px;color:var(--ink-soft)}.app-shell .court-rental p b{color:var(--ink)}.app-shell .court-rental-message{font-style:italic;overflow-wrap:anywhere}.app-shell .court-rental-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}.app-shell .court-rental-actions button{height:44px;padding:0 18px;border-radius:999px;font-size:15px}.app-shell .court-mine-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}.app-shell .court-mine-list li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border:2px solid var(--line);border-radius:14px;background:var(--paper)}.app-shell .court-mine-list li>div:first-child{display:grid;gap:2px;min-width:0}.app-shell .court-mine-list strong{font-size:16px;color:var(--ink)}.app-shell .court-mine-list small,.app-shell .court-mine-list span{font-size:14px;color:var(--ink-soft)}.app-shell .court-mine-list li.cancelled,.app-shell .court-mine-list li.declined,.app-shell .court-mine-list li.withdrawn{background:var(--sage-light)}.app-shell .court-mine-side{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px}.app-shell .court-note{color:var(--warn)}.app-shell .court-rental-info{display:grid;gap:10px;margin:0 0 20px;padding:16px;border:2px solid var(--line);border-radius:18px;background:var(--paper)}.app-shell .court-rental-info .venue-help{margin:0}.app-shell .court-fee-table{width:100%;border-collapse:collapse;font-size:15px}.app-shell .court-fee-table td,.app-shell .court-fee-table th{padding:8px 6px;border-bottom:1px solid var(--line);text-align:left;color:var(--ink)}.app-shell .court-fee-table th{font-size:13px;color:var(--ink-soft)}.app-shell .court-fee-table td{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.app-shell .court-note-box{margin:0;padding:10px 12px;border-radius:12px;background:var(--sage-light);font-size:14px;line-height:1.55;color:var(--ink-soft);white-space:pre-line}.app-shell .court-lessons ul{display:grid;gap:8px;margin:0;padding:0;list-style:none}.app-shell .court-lessons li{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;padding:12px 14px;border:2px solid var(--line);border-left:6px solid var(--lesson);border-radius:14px;background:var(--paper)}.app-shell .court-lessons li strong{font-size:16px;color:var(--ink)}.app-shell .court-lessons li span:last-child{margin-left:auto;font-size:14px;font-weight:700;color:var(--ink-soft)}.app-shell .modal-card .court-preview{display:grid;gap:4px;padding:10px 12px;border-radius:12px;background:var(--sage-light);font-size:14px;color:var(--ink-soft)}.app-shell .modal-card .court-preview strong{color:var(--ink)}.app-shell .modal-card .court-preview ul{display:grid;gap:2px;margin:0;padding:0;list-style:none}.app-shell .modal-card .court-preview b{color:var(--ink);margin-right:4px}.app-shell .modal-card .court-name-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.app-shell .modal-card .court-name-row .secondary-button{height:44px}@media (max-width:720px){.app-shell .court-tabs{width:100%}.app-shell .court-tabs a{flex:1 1;justify-content:center;padding:0 10px}.app-shell .court-board{padding:12px}.app-shell .court-lane:not(.court-axis){grid-template-columns:minmax(0,1fr);gap:4px}.app-shell .court-axis{grid-template-columns:minmax(0,1fr)}.app-shell .court-axis>span:first-child{display:none}.app-shell .court-lane-wrap>.court-detail,.app-shell .court-lane-wrap>.court-empty,.app-shell .court-lane-wrap>.court-free-chips{margin-left:0}.app-shell .court-free-chips{display:flex}.app-shell .court-rental-actions button{flex:1 1}}.app-shell .slot-board{display:grid;gap:10px;margin:0 0 22px}.app-shell .slot-board h2{margin:0;font-size:19px;color:var(--ink)}.app-shell .slot-table{display:grid;gap:8px}.app-shell .slot-row{display:grid;grid-template-columns:120px repeat(var(--slot-courts,1),minmax(0,1fr));gap:8px;align-items:stretch}.app-shell .slot-head strong{font-size:15px;color:var(--ink);text-align:center}.app-shell .slot-name{display:grid;align-content:center;gap:2px;padding:8px 10px;border-radius:12px;background:var(--sage)}.app-shell .slot-name strong{font-size:16px;color:var(--ink)}.app-shell .slot-name small{font-size:13px;color:var(--ink-soft);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.app-shell .slot-cell{display:grid;align-content:center;gap:6px;min-height:60px;padding:8px;border:2px solid var(--line);border-radius:12px;background:var(--paper)}.app-shell .slot-cell.empty{border-style:dashed;background:var(--sage-light)}.app-shell .slot-cell.past{opacity:.55}.app-shell .slot-court-label{display:none;font-size:13px;font-weight:800;color:var(--ink-soft)}.app-shell .slot-session{display:grid;gap:4px;padding:7px 10px;border-radius:10px;border-left:5px solid var(--trust);background:var(--trust-soft);color:var(--ink);text-decoration:none}.app-shell .slot-session.tone-low{border-left-color:var(--accent);background:var(--accent-soft)}.app-shell .slot-session.tone-done{border-left-color:#8a948e;background:var(--sage)}.app-shell .slot-session-top{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:0 6px}.app-shell .slot-session b{font-size:15px}.app-shell .slot-session small{font-size:12px;font-weight:700;color:var(--ink-soft);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.app-shell .slot-session>span:last-child{font-size:13px;color:var(--ink-soft)}.app-shell .slot-session .seat-meter{height:6px;background:var(--paper)}.app-shell .slot-taken{padding:6px 10px;border-radius:10px;background:var(--sage);font-size:14px;font-weight:700;color:var(--ink-soft)}.app-shell .slot-add{justify-self:center;display:inline-flex;align-items:center;height:38px;padding:0 14px;border:2px solid var(--accent);border-radius:999px;background:var(--paper);color:var(--accent-dark);font-size:14px;font-weight:800;text-decoration:none}.app-shell .slot-none{justify-self:center;font-size:14px;color:var(--ink-soft)}.app-shell .modal-card .slot-setting-row{grid-template-columns:minmax(0,1.2fr) repeat(2,minmax(0,1fr)) auto;align-items:end}@media (max-width:720px){.app-shell .slot-row{grid-template-columns:repeat(var(--slot-courts,1),minmax(0,1fr))}.app-shell .slot-name{grid-column:1/-1;display:flex;align-items:baseline;gap:8px;padding:6px 10px}.app-shell .slot-head{display:none}.app-shell .slot-court-label{display:block}.app-shell .modal-card .slot-setting-row{grid-template-columns:repeat(2,minmax(0,1fr))}.app-shell .modal-card .slot-setting-row label:first-child{grid-column:1/-1}}.app-shell .date-strip{display:grid;gap:8px;margin:0 0 12px}.app-shell .date-strip-top{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}.app-shell .date-strip-top>:first-child{margin:0;min-width:0}.app-shell .date-strip-calendar{position:relative;flex:none;display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 14px;border:2px solid var(--line);border-radius:999px;background:var(--paper);color:var(--ink);font-size:14px;font-weight:800;cursor:pointer}.app-shell .date-strip-calendar.selected{border-color:var(--ink);background:var(--ink);color:var(--paper)}.app-shell .date-strip-calendar input{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;border:0;opacity:0;cursor:pointer}.app-shell .date-strip-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.app-shell .date-strip-week button{display:grid;justify-items:center;gap:1px;min-height:52px;padding:6px 0;border:2px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink)}.app-shell .date-strip-week button span{font-size:12px;color:var(--ink-soft);font-weight:700}.app-shell .date-strip-week button strong{font-size:17px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.app-shell .date-strip-week button.selected{border-color:var(--ink);background:var(--ink);color:var(--paper)}.app-shell .date-strip-week button.selected span{color:var(--paper)}