.calendar-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:28px}.calendar-heading h3{margin:0}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin:20px 0 28px}.weekday{text-align:center;font-size:14px;padding:8px 0;color:var(--muted)}.calendar-date{display:flex;align-items:center;justify-content:center;min-height:44px;aspect-ratio:1;border-radius:7px;font-size:16px}.calendar-date.available{border:1px solid #687d40;color:var(--lime);background:#29351b}.calendar-date.available:hover,.calendar-date.selected{background:var(--lime);color:var(--ink);font-weight:bold}.calendar-date.unavailable{color:#8a947f}.time-slots{display:grid;grid-template-columns:repeat(auto-fit,minmax(105px,1fr));gap:10px}.time-slot{position:relative;margin:0!important}.time-slot input{position:absolute;opacity:0;width:1px;height:1px;min-height:0}.time-slot span{display:block;text-align:center;border:1px solid #687d40;border-radius:6px;padding:12px 8px}.time-slot input:checked+span{background:var(--lime);color:var(--ink);font-weight:bold}.time-slot input:focus-visible+span{outline:3px solid white;outline-offset:3px}.booking-calendar fieldset{padding:0;border:0;min-width:0}.booking-calendar legend{font-size:16px;margin-bottom:14px}.booking-calendar form{margin-bottom:24px}.delay-preview{border-color:var(--lime)}.payment-form{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.payment-form label{margin:0!important}.app :is(label,summary,.hint,.notice,.badge,.sidebar nav a,.lesson-row strong,.lesson-row p,.panel p,.page-heading p:last-child){font-size:14px}.app :is(input,select,textarea){font-size:16px;min-height:44px}.app :is(button,.button,.text-button){min-height:44px;font-size:14px}.app .checkbox input{min-height:20px;width:20px;height:20px}.app .inline select{min-height:44px;font-size:14px;max-width:100%}.app .lesson-row{overflow-wrap:anywhere}.app .lesson-row .grow{min-width:0}.app .panel-heading a:not(.button){font-size:14px}.app .message>p{font-size:16px}.app :is(input,select,textarea){max-width:100%}.app a:focus-visible,.app button:focus-visible{outline:3px solid var(--lime);outline-offset:3px}
@media(max-width:540px){.app .sidebar nav a{padding:12px}.app .stats{grid-template-columns:1fr}.app .stat>span{min-height:0;font-size:14px}.app .stat small{font-size:14px}.app .lesson-row{align-items:flex-start}.payment-form{width:100%}.payment-form label{flex:1;min-width:140px}.calendar-grid{gap:3px}.calendar-date{min-height:36px}.weekday{font-size:12px}.app .user-menu{flex-wrap:wrap}.app .form-grid .button{width:100%}.app .panel{padding:18px 12px}.app .calendar-heading .button{padding:10px 14px}}
.schedule-shortcuts{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}.schedule-shortcuts a{display:flex;align-items:center;min-height:44px;border:1px solid var(--line);border-radius:6px;padding:8px 12px;font-size:14px;color:var(--lime)}.app section[id]{scroll-margin-top:16px}
.calendar-date{flex-direction:column;gap:4px}.calendar-date small{font-size:10px;line-height:1.2;white-space:nowrap;font-weight:700}.calendar-date.full{border:1px solid var(--line);color:var(--muted)}.calendar-date.full.selected{background:#343c2b;color:var(--text)}.calendar-status:empty{display:none}.calendar-status{min-height:1.5em}.time-unavailable{border:1px solid var(--line);border-radius:6px;padding:10px;color:var(--muted);background:#20251b;opacity:.75}.time-unavailable small{display:block;margin-top:4px;font-size:12px}.booking-calendar[aria-busy=true] #booking-times{opacity:.55}@media(max-width:540px){.calendar-date{aspect-ratio:auto;min-height:48px}.calendar-date small{font-size:9px}}
.calendar-date.selected small{color:inherit}@media(max-width:540px){.calendar-date small{font-size:10px}}
.availability-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);gap:22px;align-items:start}.availability-month .calendar-heading{margin-top:0}.availability-days{gap:8px}.availability-date{border:1px solid var(--line);border-radius:10px;min-height:105px;padding:10px;color:var(--text);display:flex;flex-direction:column;gap:12px}.availability-date:hover{border-color:var(--lime)}.availability-date.selected{outline:2px solid var(--lime);outline-offset:-2px;background:#29351b}.availability-date.past{opacity:.6}.day-counts{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.selected-availability h3{margin-top:26px}.posted-slot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 0;border-bottom:1px solid var(--line)}.posted-slot small{display:block;font-size:13px;margin-top:6px;overflow-wrap:anywhere}.availability-danger{border-top:1px solid var(--line);margin-top:24px;padding-top:16px}.button.danger{background:#9f3030;color:white;border-color:#9f3030;width:100%}.weekday-options{border:0;padding:0;margin:20px 0}.weekday-options legend{font-size:16px;margin-bottom:12px}.weekday-picks{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.weekday-picks label{padding:12px;border:1px solid var(--line);border-radius:6px;margin:0}.availability-manager>.section-top{align-items:flex-start}.availability-manager h2{margin-bottom:12px}@media(max-width:1100px){.availability-layout{grid-template-columns:1fr}.weekday-picks{grid-template-columns:repeat(4,1fr)}}@media(max-width:540px){.availability-days{gap:3px}.availability-date{min-height:86px;padding:6px 3px;gap:8px}.availability-date strong{font-size:14px}.day-counts{font-size:10px;line-height:1.35;gap:4px}.availability-date .day-counts span{overflow-wrap:anywhere}.weekday-picks{grid-template-columns:repeat(3,1fr)}.weekday-picks label{padding:10px 7px}.posted-slot{flex-wrap:wrap}.availability-manager>.section-top{flex-direction:column}.availability-month .calendar-heading h3{font-size:18px}}
.appointment-toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px}.appointment-toolbar p{margin:0;font-size:16px}.coach-calendar-nav{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 28px}.coach-calendar-nav>a,.coach-calendar-nav form{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:12px 16px;min-height:48px;font-size:16px;font-weight:700;display:flex;align-items:center}.coach-calendar-nav>a[aria-current]{border-color:var(--lime);color:var(--lime)}.coach-calendar-nav form{padding:0 16px}.appointment-month .calendar-heading{margin:0 0 24px}.appointment-month .calendar-heading h2{margin:0;font-size:28px}.appointment-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}.appointment-day{border:1px solid var(--line);border-radius:14px;padding:10px;min-height:155px;min-width:0}.appointment-day.today{border-color:var(--lime)}.appointment-day-head{display:flex;align-items:center;justify-content:space-between;gap:5px;margin-bottom:8px}.day-add{display:grid;place-items:center;min-width:36px;min-height:36px;border-radius:50%;background:#d4eb8120;color:var(--lime);font-size:24px;font-weight:700}.day-add:hover{background:var(--lime);color:var(--ink)}.appointment-card{display:block;background:#d3ee88;color:#152009;border-radius:8px;padding:9px;margin-top:8px;overflow-wrap:anywhere}.appointment-card strong{display:block;font-size:14px}.appointment-card span,.appointment-card small{display:block;font-size:12px;margin-top:4px;color:#344719}.appointment-card.completed{background:#b6c7a7}.appointment-card.no_show{background:#eed99d}.mobile-day{display:none}.add-session-panel{max-width:800px}.add-session-panel>a{display:inline-block;margin-top:22px;color:var(--lime)}@media(max-width:1100px){.appointment-grid{gap:5px}.appointment-day{padding:6px;min-height:135px}.appointment-card{padding:6px}.appointment-card strong{font-size:12px}.appointment-day-head{flex-wrap:wrap}}@media(max-width:640px){.appointment-toolbar{align-items:stretch;flex-direction:column}.coach-calendar-nav{gap:6px}.coach-calendar-nav>a{font-size:14px;padding:10px}.appointment-grid{grid-template-columns:1fr;gap:10px}.appointment-grid>.weekday,.appointment-blank{display:none}.mobile-day{display:inline}.appointment-day{min-height:80px;padding:12px}.appointment-day-head{flex-wrap:nowrap}.day-add{min-width:44px;min-height:44px}.appointment-card strong{font-size:16px}.appointment-card span,.appointment-card small{font-size:14px}.appointment-month .calendar-heading h2{font-size:22px}.appointment-card{padding:12px}}

/* Spacious booking calendar and selected-date form. */
.booking-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(320px,1fr);gap:24px;align-items:start;margin-bottom:24px}
.booking-layout>.panel{min-width:0;margin:0;background:#fff;color:#182018;--text:#182018;--muted:#707970;--line:#e2e6e0;--surface:#f5f7f3;--ink:#182018;border:1px solid var(--line);border-radius:20px;padding:28px}
.booking-month .calendar-heading{margin:0 0 24px}.booking-month .calendar-heading h3{font-size:28px;text-align:center}
.booking-layout p{color:#707970;line-height:1.6}.booking-layout .calendar-grid{gap:8px;margin-bottom:20px}
.booking-layout .calendar-date{border:1px solid #e7eae4;border-radius:14px;min-height:110px;aspect-ratio:auto;align-items:flex-start;justify-content:center;padding:12px;gap:10px;font-weight:700;color:#182018;background:#fff}
.booking-layout .calendar-date.available small{background:#edf7b1;color:#506300;padding:5px 8px;border-radius:20px;font-size:12px}
.booking-layout .calendar-date.unavailable,.booking-layout .calendar-date.full{color:#9bA198;background:#fff}
.booking-layout .calendar-date.selected{outline:3px solid #c6f52c;outline-offset:-3px;background:#fff}
.booking-layout .calendar-date[href]:hover{border-color:#91ad39;background:#f8fbeF}
.booking-layout .weekday{font-weight:700;text-transform:uppercase}.booking-legend{display:flex;flex-wrap:wrap;gap:16px;font-size:13px}.booking-legend span:first-child{color:#6d860b}
.booking-layout :is(input,select,textarea){background:#fff;color:#182018;border:1px solid #d7ddd3;border-radius:10px;min-height:48px;font-size:16px}
.booking-layout label{color:#182018;font-weight:700}.booking-layout .button.secondary{background:#fff;color:#182018;border:1px solid #d7ddd3}.booking-layout .button{color:#182018}
.booking-selected,.booking-custom{background:#f5f7f3;border:1px solid #e2e6e0;border-radius:14px;padding:18px;margin:16px 0 24px}
.booking-selected h3{font-size:16px;font-weight:400;color:#707970;margin:8px 0 0}.booking-details h4{font-size:22px;margin:24px 0 16px}.booking-custom h3{margin-top:0}.booking-custom form{margin-bottom:0}
.booking-layout .time-slot span{color:#182018;background:#fff}.booking-layout .time-slot input:checked+span{background:#d5fc40}.booking-layout .time-slot input:focus-visible+span{outline-color:#617c00}.booking-layout .time-unavailable{background:#f1f3ef;color:#707970}
.booking-layout .calendar-status{color:#536400}.schedule-tools{margin:24px 0}
@media(max-width:1100px){.booking-layout{grid-template-columns:1fr}.booking-layout .calendar-date{min-height:90px}.booking-month .calendar-heading h3{font-size:24px}}
@media(max-width:540px){.booking-layout{gap:16px}.booking-layout>.panel{padding:18px 10px;border-radius:14px}.booking-layout .calendar-grid{gap:3px}.booking-layout .calendar-date{padding:6px 3px;min-height:65px;border-radius:8px;font-size:14px;gap:6px}.booking-layout .calendar-date.available small{font-size:9px;padding:4px 2px;white-space:normal}.booking-layout .weekday{font-size:10px}.booking-month .calendar-heading h3{font-size:20px}.booking-selected,.booking-custom{padding:14px}.booking-details .button{width:100%}}

/* Admin appointment entry: one form and one final save action. */
.appointment-entry .booking-details{position:sticky;top:18px}
.appointment-entry .booking-details form{margin:0}
.appointment-entry .booking-layout{grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr)}
.appointment-entry .calendar-date{cursor:pointer;min-height:94px;font-size:16px}
.appointment-entry [hidden]{display:none!important}
.group-athlete-picker{border:1px solid var(--line);border-radius:10px;padding:12px;margin:16px 0}
.group-athlete-picker>summary{cursor:pointer;min-height:44px;align-content:center;font-weight:700;color:var(--lime)}
.group-athlete-list{max-height:240px;overflow-y:auto;display:grid;gap:6px}
.app .group-athlete-list label{display:flex;align-items:center;gap:10px;min-height:44px;margin:0;padding:8px;border:1px solid var(--line);border-radius:6px}
.group-athlete-list input{flex:none}.group-athlete-list label:has(input:disabled){opacity:.5}
.entry-time-slots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0}
.entry-time-choice{border:1px solid #d7ddd3;background:#fff;color:#182018;border-radius:9px;padding:8px;min-height:46px;font-weight:700}
.entry-time-choice.selected{background:#d5fc40;border-color:#8fa70f}
.entry-time-choice:disabled{opacity:.45;cursor:not-allowed}
.appointment-entry textarea{min-height:110px}
.appointment-entry .booking-custom{margin:12px 0}
.appointment-entry .booking-custom .button{margin-top:10px}
.appointment-entry [data-selected-time]{font-weight:700;color:#506300}
.appointment-entry .booking-details button[type=submit]{width:100%;margin-top:16px}
.appointment-entry .booking-layout :focus-visible{outline:3px solid #708b00;outline-offset:2px}
@media(max-width:1100px){.appointment-entry .booking-layout{grid-template-columns:1fr}.appointment-entry .booking-details{position:static}}
@media(max-width:620px){.entry-time-slots{grid-template-columns:repeat(2,minmax(0,1fr))}.appointment-entry .calendar-date{min-height:70px;font-size:14px}.appointment-entry .booking-layout>.panel{padding:14px 10px}}

/* Keep shared touch-control rules from collapsing appointment calendar cells. */
.app .appointment-entry .booking-layout .calendar-grid button.calendar-date{min-height:110px}
.app .appointment-entry .entry-setup a{color:#4f6500;text-decoration:underline;font-weight:700}
@media(max-width:620px){.app .appointment-entry .booking-layout .calendar-grid button.calendar-date{min-height:70px}}


.coach-calendar-nav>a.coach-late-link{background:var(--lime);color:var(--ink);border-color:var(--lime);font-weight:700}
@media(max-width:540px){.coach-calendar-nav>a.coach-late-link{position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:50;min-height:48px;padding:12px 22px;box-shadow:0 4px 18px #0007}.app:has(.coach-late-link) .app-main{padding-bottom:calc(100px + env(safe-area-inset-bottom))}}

.dashboard-with-calendar{grid-template-columns:minmax(0,3fr) minmax(220px,1fr);align-items:start}
.dashboard-calendar{min-width:0}
.dashboard-lesson-list{display:none}
.dashboard-lesson-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;padding:20px 0;border-bottom:1px solid var(--line)}
.dashboard-lesson-item:last-child{border-bottom:0}
.dashboard-lesson-info{min-width:0;display:flex;flex-direction:column;gap:6px;overflow-wrap:anywhere}
.dashboard-lesson-info>strong{font-size:16px;line-height:1.4;color:var(--text)}
.dashboard-lesson-info>small{font-size:13px;line-height:1.5}
.dashboard-lesson-when{display:flex;flex-direction:column;gap:6px;text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.dashboard-lesson-when>strong{font-size:13px;color:var(--text)}
.dashboard-lesson-when>span{color:var(--muted);font-size:14px}
@media(max-width:640px){.dashboard-calendar .appointment-grid{display:none}.dashboard-calendar .dashboard-lesson-list{display:block}.dashboard-calendar .appointment-toolbar p{font-size:0}.dashboard-calendar .appointment-toolbar p::after{content:'Add a session or select a scheduled lesson to view its details.';font-size:14px}}
.dashboard-calendar .appointment-toolbar{flex-wrap:wrap}
.dashboard-calendar .appointment-month{padding:18px}
.dashboard-calendar .appointment-grid{gap:5px}
.dashboard-calendar .appointment-day{padding:6px;min-height:115px}
@media(max-width:1300px){.dashboard-with-calendar{grid-template-columns:minmax(0,1fr)}}

/* Add Session uses the same dark palette as the rest of the coach portal. */
.appointment-entry .booking-layout>.panel{--text:#f5f6ef;--muted:#a4ab99;--line:#343a2d;--surface:#1a1d17;--ink:#15180e;background:var(--surface);color:var(--text);color-scheme:dark}
.appointment-entry .booking-layout p,.appointment-entry .booking-selected h3{color:var(--muted)}
.appointment-entry .booking-layout label{color:var(--text)}
.appointment-entry .booking-layout :is(input,select,textarea){background:var(--bg);color:var(--text);border-color:var(--line)}
.appointment-entry .booking-layout textarea::placeholder{color:var(--muted)}
.appointment-entry .booking-layout .calendar-date{background:var(--bg);color:var(--text);border-color:var(--line)}
.appointment-entry .booking-layout .calendar-date.unavailable,.appointment-entry .booking-layout .calendar-date.full{color:var(--muted)}
.appointment-entry .booking-layout .calendar-date:hover{background:#29351b;border-color:var(--lime)}
.appointment-entry .booking-layout .calendar-date.selected{background:#29351b;outline-color:var(--lime);color:var(--text)}
.appointment-entry .booking-layout .calendar-date.available small{background:#29351b;color:var(--lime)}
.appointment-entry .booking-selected,.appointment-entry .booking-custom{background:var(--bg);border-color:var(--line)}
.appointment-entry .booking-layout .button.secondary{background:transparent;color:var(--text);border-color:var(--line)}
.appointment-entry .booking-layout .button.secondary:hover{border-color:var(--lime);color:var(--lime)}
.appointment-entry .entry-time-choice{background:var(--bg);color:var(--text);border-color:var(--line)}
.appointment-entry .entry-time-choice.selected{background:var(--lime);color:var(--ink);border-color:var(--lime)}
.appointment-entry .booking-legend span:first-child,.appointment-entry [data-selected-time],.app .appointment-entry .entry-setup a{color:var(--lime)}
.appointment-entry .booking-layout :focus-visible{outline-color:var(--lime)}

.calendar-open-count{display:inline-flex;align-items:center;justify-content:center;background:#29351b;color:var(--lime);border-radius:999px;padding:6px 12px;margin:8px 0;font-size:13px;font-weight:800;line-height:1.2;text-decoration:none;white-space:nowrap}
a.calendar-open-count:hover{background:#344522}
a.calendar-open-count:focus-visible{outline:2px solid var(--lime);outline-offset:3px}
/* Collapsed history rows keep long lesson lists easy to scan. */
.history-item{border:1px solid var(--line);border-radius:8px;margin-bottom:8px;overflow:hidden}
.history-item>summary{display:flex;align-items:center;gap:16px;min-height:56px;padding:12px 16px;cursor:pointer;list-style:none}
.history-item>summary::-webkit-details-marker{display:none}
.history-item>summary::before{content:'›';color:var(--lime);font-size:22px;flex:none}
.history-item[open]>summary::before{transform:rotate(90deg)}
.history-item>summary:hover{background:#29351b}
.history-item>summary:focus-visible{outline:2px solid var(--lime);outline-offset:-2px}
.history-summary-name{flex:1;min-width:0;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.history-summary-date{white-space:nowrap;color:var(--muted)}
.history-summary-service{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}
.history-item>summary>.badge{flex:none}
.app .lesson-history .history-item>.lesson-row{margin:0;border:0;border-top:1px solid var(--line);border-radius:0}
@media(max-width:640px){.history-item>summary{gap:8px;padding:10px;min-height:52px}.history-summary-service,.history-item>summary>.badge{display:none}.app .history-summary-date{font-size:11px}.history-summary-name{font-size:13px}}
/* Lesson history: separate readable details from editing controls. */
.history-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}
.history-heading h2{margin:0 0 8px}.history-heading p{margin:0;color:var(--muted)}
.app .lesson-history .lesson-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,360px);gap:24px;align-items:start;padding:24px;margin:0 0 16px;border:1px solid var(--line);border-radius:12px;background:var(--bg)}
.app .lesson-history .lesson-row:last-child{margin-bottom:0}
.app .lesson-history .grow>strong{display:block;font-size:18px;line-height:1.4}
.lesson-history .grow>p{margin:10px 0;line-height:1.6;color:var(--muted)}
.history-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center;min-width:0}
.history-actions .payment-form,.history-actions .inline{display:flex;flex-wrap:wrap;align-items:end;gap:10px;width:100%;margin:0;padding-top:14px;border-top:1px solid var(--line)}
.history-actions .payment-form label{flex:1;min-width:120px}
.app .history-actions .inline select{flex:1;min-width:120px;width:auto}
.app .history-actions form>.button{width:auto;flex:0 0 auto;margin:0}
.lesson-history .lesson-notes{margin-top:16px;padding-top:12px;border-top:1px solid var(--line)}
.lesson-history .lesson-notes p{white-space:normal;line-height:1.6;margin:8px 0 0}
@media(max-width:900px){.app .lesson-history .lesson-row{grid-template-columns:minmax(0,1fr);gap:18px;padding:18px}.history-actions{border-top:1px solid var(--line);padding-top:16px}}
@media(max-width:540px){.history-heading{align-items:stretch;flex-direction:column}.history-heading>.button{text-align:center}.app .lesson-history .lesson-row{padding:14px}.app .history-actions form>.button{flex:1;min-width:110px}}
@media(max-width:640px){a.calendar-open-count{min-height:44px}}
