:root {
    --blue:#1260e8;
    --navy:#102547;
    --muted:#61718a;
    --line:#dde5ef;
    --bg:#f5f8fc;
    --green:#217454}

* {
    box-sizing:border-box}

body {
    margin:0;
    background:var(--bg);
    color:var(--navy);
    font-family:var(--pt-font-family);
    font-size:15px;
    line-height:1.6}

a {
    color:var(--blue);
    text-decoration:none}

a:hover {
    text-decoration:underline}

button,input {
    font:inherit}

button,a,input {
     -webkit-tap-highlight-color:transparent}

a:focus-visible,button:focus-visible,input:focus-visible {
    outline:3px solid #8cb9ff;
    outline-offset:3px}

.header {
    background:white;
    padding:20px 5%;
    display:flex;
    align-items:center;
    gap:28px;
    border-bottom:1px solid var(--line)}

.brand {
    display:flex;
    align-items:center;
    gap:10px;
    font-size:26px;
    font-weight:800;
    color:var(--navy);
    letter-spacing:-1px}

.brand-mark {
    background:var(--blue);
    color:white;
    border-radius:12px;
    width:40px;
    height:40px;
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:28px;
    font-style:italic}

.brand-mark span {
    color:#d0ef53}

.sport-label {
    font-size:10px;
    letter-spacing:2px;
    font-weight:700;
    color:var(--muted)}

nav {
    margin-left:auto;
    display:flex;
    gap:24px;
    align-items:center}

nav a,.text-button {
    color:var(--muted);
    font-size:14px}

nav .active {
    color:var(--blue);
    font-weight:700}

.text-button {
    border:0;
    background:none;
    cursor:pointer;
    padding:0}

.auth-shell {
    max-width:1280px;
    margin:48px auto;
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:70px;
    padding:0 40px;
    align-items:center}

.intro {
    padding:32px 0}

.eyebrow {
    display:block;
    font-size:11px;
    letter-spacing:2px;
    font-weight:800;
    color:var(--blue);
    margin-bottom:14px}

h1 {
    font-size:40px;
    line-height:1.15;
    letter-spacing:-1.5px;
    margin:12px 0 18px}

h2 {
    font-size:25px;
    line-height:1.25;
    letter-spacing:-.6px;
    margin:8px 0 12px}

h3 {
    font-size:17px}

.intro h1 {
    font-size:49px}

.intro h1 span {
    color:var(--blue)}

.intro p,.muted {
    color:var(--muted)}

.intro p {
    font-size:17px}

.court,.mini-court {
    background:#1462de;
    border-radius:24px;
    position:relative;
    overflow:hidden}

.court {
    width:90%;
    height:240px;
    margin:34px 0;
    transform:rotate(-4deg);
    box-shadow:12px 16px 0 #e3edfb}

.court-lines {
    position:absolute;
    inset:25px 32px;
    border:2px solid #ffffffa3;
    background:linear-gradient(90deg,transparent 49.6%,#ffffffa3 49.6%,#ffffffa3 50.3%,transparent 50.3%)}

.court-lines:before {
    content:"";
    position:absolute;
    inset:15% 0;
    border-top:2px solid #ffffffa3;
    border-bottom:2px solid #ffffffa3}

.court-lines:after {
    content:"";
    position:absolute;
    inset:15% 25%;
    border-left:2px solid #ffffffa3;
    border-right:2px solid #ffffffa3}

.ball {
    position:absolute;
    right:20%;
    bottom:21%;
    width:34px;
    height:34px;
    background:#d7f36a;
    border-radius:50%;
    box-shadow:3px 5px 10px #07246b66;
    border:2px solid #e9ffb1}

.intro-foot {
    font-size:12px;
    color:var(--muted);
    display:flex;
    gap:10px;
    align-items:center}

.dot {
    width:8px;
    height:8px;
    background:#8cbf22;
    border-radius:50%}

.card {
    padding:30px;
    background:white;
    border:1px solid #e6ecf4;
    border-radius:22px;
    box-shadow:0 8px 24px #163e7010}

.auth-card {
    max-width:500px;
    margin:auto}

.auth-card h2 {
    font-size:29px}

.field {
    margin:18px 0}

label {
    display:block;
    font-size:13px;
    font-weight:650;
    margin-bottom:7px}

input:not([type=checkbox]) {
    display:block;
    width:100%;
    padding:12px 14px;
    border:1px solid #ccd7e5;
    border-radius:10px;
    background:#fff;
    color:var(--navy)}

input[aria-invalid=true] {
    border-color:#c53f42}

.check {
    display:flex;
    gap:9px;
    align-items:flex-start;
    color:var(--muted);
    font-size:12px;
    font-weight:400;
    line-height:1.5}

.check input {
    accent-color:var(--blue);
    margin-top:3px;
    flex-shrink:0}

.consent {
    margin:22px 0 12px}

.form-row {
    display:flex;
    justify-content:space-between;
    gap:10px;
    margin:20px 0;
    font-size:12px}

.button {
    border:0;
    background:var(--blue);
    color:white;
    padding:12px 19px;
    border-radius:11px;
    font-weight:700;
    display:inline-flex;
    justify-content:center;
    align-items:center;
    gap:20px;
    cursor:pointer;
    box-shadow:0 4px 10px #1260e825}

.button:hover {
    background:#084fc8;
    text-decoration:none}

.full {
    width:100%;
    margin-top:10px}

.form-foot {
    text-align:center;
    font-size:13px;
    border-top:1px solid var(--line);
    padding-top:22px;
    margin:24px 0 0}

.hint {
    font-size:12px;
    color:var(--muted);
    margin:8px 0 15px}

.field-error {
    color:#a42632;
    font-size:12px}

.grid {
    display:grid;
    gap:20px}

.two {
    grid-template-columns:1fr 1fr}

.grid .field {
    margin-top:18px;
    margin-bottom:0}

.workspace {
    max-width:1120px;
    margin:40px auto;
    padding:0 30px}

.page-heading {
    margin-bottom:28px}

.page-heading h1 {
    font-size:36px}

.welcome-banner {
    position:relative;
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:40px;
    background:var(--blue);
    color:white;
    padding:40px;
    border-radius:24px;
    overflow:hidden}

.welcome-banner .eyebrow {
    color:#cfe1ff}

.welcome-banner h2 {
    font-size:37px}

.welcome-banner p {
    color:#d9e6ff}

.white {
    background:white;
    color:var(--blue)}

.white:hover {
    background:#eef4ff}

.mini-court {
    height:230px;
    align-self:center;
    background:#ffffff13;
    transform:rotate(-8deg)}

.dashboard-cards {
    margin-top:24px}

.badge {
    display:inline-block;
    background:#eaf1ff;
    color:#1855af;
    padding:5px 12px;
    border-radius:30px;
    font-size:12px;
    font-weight:700}

.badges {
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    margin:16px 0}

.green {
    background:#e7f7ee;
    color:#206c49}

.orange {
    background:#fff3db;
    color:#946119}

.icon-circle {
    display:flex;
    align-items:center;
    justify-content:center;
    width:46px;
    height:46px;
    border-radius:15px;
    background:#eaf1ff;
    color:var(--blue);
    font-size:23px;
    margin-bottom:20px}

.verification {
    max-width:660px;
    margin:70px auto;
    text-align:center}

.verification .icon-circle {
    margin:0 auto 25px}

.verification h1 {
    font-size:32px}

.secondary-link {
    display:inline-block;
    font-size:13px;
    margin:16px 0}

.account-grid {
    display:grid;
    grid-template-columns:2fr 1fr;
    gap:24px;
    align-items:start}

.password-card {
    margin-top:24px}

.avatar {
    width:70px;
    height:70px;
    border-radius:22px;
    background:#eaf1ff;
    color:var(--blue);
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:24px;
    font-weight:700;
    margin-bottom:22px}

hr {
    border:0;
    border-top:1px solid var(--line);
    margin:25px 0}

.standalone-input {
    margin-bottom:18px}

.notice {
    padding:15px 20px;
    border-radius:12px;
    margin-bottom:22px;
    font-size:13px}

.success {
    background:#e7f7ee;
    color:#206c49}

.error {
    background:#fff0f0;
    color:#a42632}

.notice ul {
    margin-bottom:0;
    padding-left:20px}

footer {
    text-align:center;
    color:var(--muted);
    font-size:11px;
    padding:25px}

footer span {
    margin:0 9px;
    color:var(--blue)}

.wave {
    color:#e3ac14}

@media(max-width:900px) {
    .auth-shell {
    gap:30px;
    padding:0 25px}

.intro h1 {
    font-size:36px}

.court {
    height:200px}

.sport-label {
    display:none}

.account-grid {
    grid-template-columns:1fr}

.account-grid aside {
    grid-row:1}

.account-grid aside .card {
    padding:24px}

.avatar {
    display:none}

}

@media(max-width:640px) {
    .header {
    padding:16px 20px;
    flex-wrap:wrap;
    gap:12px}

.brand {
    font-size:23px}

nav {
    width:100%;
    margin:6px 0 0;
    justify-content:space-between;
    gap:12px}

nav a,.text-button {
    font-size:12px}

.auth-shell {
    display:block;
    margin:25px auto;
    padding:0 18px}

.intro {
    display:none}

.card {
    padding:24px 20px;
    border-radius:18px}

.auth-card h2 {
    font-size:26px}

.two {
    grid-template-columns:1fr;
    gap:0}

.workspace {
    padding:0 18px;
    margin:28px auto}

h1,.page-heading h1 {
    font-size:30px}

.welcome-banner {
    grid-template-columns:1fr;
    padding:28px}

.welcome-banner h2 {
    font-size:31px}

.mini-court {
    display:none}

.dashboard-cards {
    gap:16px}

.verification {
    margin:25px auto}

.form-row {
    flex-wrap:wrap}

.account-grid {
    gap:18px}

}




/* Shared navigation for the common, coach and committee spaces. */
.skip-link { position: absolute; left: 16px; top: -100px; z-index: 10; background: white; padding: 12px 20px; border-radius: 10px; }
.skip-link:focus { top: 12px; }
.connected .header { padding: 16px 32px; gap: 22px; }
.connected .sport-label { display: none; }
.space-switcher { margin-left: auto; gap: 6px; }
.space-switcher a { display: flex; align-items: center; min-height: 44px; padding: 8px 16px; border-radius: 12px; font-size: 14px; }
.space-switcher a[aria-current] { color: var(--blue); background: #eaf1ff; font-weight: 700; }
.public-navigation { margin-left: auto; }
@media (max-width: 760px) {
    .public-navigation { order: 3; width: 100%; margin: 4px 0 0; flex-wrap: wrap; }
    .public-navigation a { flex: 1 1 auto; }
}
.feedback-link { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 6px 8px; color: var(--pt-text-secondary, #425878); font-size: 13px; white-space: nowrap; border-radius: 8px; }
.feedback-link:hover { background: #eaf1ff; color: var(--blue); }
.feedback-form { max-width: 720px; padding: 20px; background: white; border: 1px solid var(--line); border-radius: 16px; }
.feedback-form fieldset { margin: 0 0 16px; padding: 0; border: 0; min-inline-size: 0; }
.feedback-form legend { font-size: 12px; font-weight: 700; margin-bottom: 8px; }
.feedback-form textarea { resize: vertical; }
.error-page { max-width: 700px; margin: 48px auto; padding: 0 18px; }
.logout-form { margin: 0; }
.logout-form button { min-height: 44px; padding: 8px 12px; }
.app-frame { display: grid; grid-template-columns: 230px minmax(0, 1fr); max-width: 1500px; margin: 0 auto; }
.app-frame.without-sidebar { grid-template-columns:minmax(0,1fr); }
.desktop-navigation { padding: 32px 18px; background: #fff; border-right: 1px solid var(--line); min-height: calc(100vh - 78px); }
.space-navigation { display: flex; flex-direction: column; align-items: stretch; margin: 0; gap: 8px; width: 100%; }
.space-navigation .eyebrow { margin: 0 12px 16px; letter-spacing: 1.5px; }
.space-navigation a { display: flex; gap: 12px; align-items: center; min-height: 48px; padding: 10px 14px; border-radius: 12px; color: var(--muted); font-size: 14px; }
.space-navigation a:hover { background: #f5f8fc; text-decoration: none; }
.space-navigation a[aria-current] { color: var(--blue); background: #eaf1ff; font-weight: 700; }
.space-navigation a span { font-size: 19px; }
.space-tabs { display: flex; align-items: center; gap: 4px; margin: -8px 0 28px; padding: 4px; width: fit-content; max-width: 100%; overflow-x: auto; border: 1px solid var(--line); border-radius: 12px; background: #fff; scrollbar-width: thin; }
.space-tabs a { display: inline-flex; align-items: center; justify-content: center; min-height: 42px; padding: 8px 16px; border-radius: 9px; color: var(--muted); font-size: 14px; font-weight: 650; white-space: nowrap; }
.space-tabs a:hover { background: #f5f8fc; text-decoration: none; }
.space-tabs a[aria-current="page"] { color: var(--blue); background: #eaf1ff; }
.upcoming-navigation { border-top: 1px solid var(--line); margin: 16px 10px 0; padding-top: 14px; color: var(--muted); font-size: 12px; }
.upcoming-navigation summary { cursor: pointer; min-height: 44px; display: list-item; padding: 10px 0; }
.upcoming-navigation ul { list-style: none; padding: 0 0 0 14px; margin: 8px 0; }
.upcoming-navigation li { padding: 7px 0; }
.sidebar-note { display: flex; align-items: center; gap: 8px; margin: 50px 12px 0; font-size: 11px; color: var(--muted); }
.main-column { min-width: 0; }
.connected .workspace { margin: 32px auto; padding: 0 32px; }
.connected .welcome-banner { gap: 20px; padding: 32px; }
.connected .welcome-banner h2 { font-size: 32px; }
.connected .mini-court { height: 200px; }
.mobile-navigation { display: none; }
.dashboard-spaces { margin-top: 30px; }
.section-heading { margin-bottom: 18px; }
.section-heading .eyebrow { margin-bottom: 8px; }
.space-shortcut { display: block; color: var(--navy); transition: border-color .15s, box-shadow .15s; }
.space-shortcut:hover { text-decoration: none; border-color: #aac8f6; box-shadow: 0 8px 24px #1260e818; }
.space-shortcut h3 { margin: 12px 0 8px; font-size: 21px; }
.space-shortcut p { font-size: 14px; }
.shortcut-action { display: flex; align-items: center; justify-content: space-between; color: var(--blue); font-weight: 700; font-size: 13px; }
.space-empty { padding: 40px; max-width: 800px; }
.space-empty .muted { max-width: 570px; }
.space-empty .button { margin-top: 16px; }
@media (max-width: 1000px) {
    .connected .header { gap: 10px; padding: 14px 24px; flex-wrap: wrap; }
    .app-frame { grid-template-columns: 195px minmax(0, 1fr); }
    .desktop-navigation { padding: 28px 12px; }
    .connected .workspace { padding: 0 24px; }
    .connected .welcome-banner { grid-template-columns: 1fr; }
    .connected .mini-court { display: none; }
    .connected .dashboard-cards { grid-template-columns: 1fr; gap: 18px; }
}
@media (max-width: 760px) {
    .app-frame { display: block; }
    .desktop-navigation { display: none; }
    .connected .header { padding: 12px 18px; gap: 8px; }
    .connected .brand { font-size: 23px; }
    .connected .feedback-link { order: 4; margin-left: auto; }
    .logout-form { margin-left: auto; }
    .logout-form button { font-size: 12px; }
    .connected .space-switcher { order: 3; width: 100%; margin: 4px 0 0; gap: 6px; justify-content: flex-start; flex-wrap: wrap; }
    .space-switcher a { flex: 1; justify-content: center; padding: 8px 12px; font-size: 13px; }
    .mobile-navigation { display: block; background: white; margin: 16px 18px 0; border: 1px solid var(--line); border-radius: 14px; }
    .mobile-navigation > summary { min-height: 52px; padding: 12px 16px; cursor: pointer; display: flex; align-items: center; gap: 12px; font-weight: 700; font-size: 14px; }
    .mobile-navigation > summary .badge { margin-left: auto; }
    .mobile-navigation > summary::after { content: '⌄'; }
    .mobile-navigation[open] > summary::after { content: '⌃'; }
    .mobile-navigation .space-navigation { padding: 14px; border-top: 1px solid var(--line); }
    .space-tabs { width: 100%; margin: -4px 0 22px; }
    .space-tabs a { flex: 1 0 auto; min-height: 44px; padding-inline: 14px; }
    .connected .workspace { padding: 0 18px; margin: 24px auto; }
    .connected .welcome-banner { padding: 26px; }
    .connected .page-heading h1 { font-size: 30px; }
    .dashboard-spaces .grid { grid-template-columns: 1fr; gap: 16px; }
    .space-empty { padding: 26px 22px; }
    .space-empty .button { width: 100%; font-size: 13px; gap: 8px; }
}
@media (prefers-reduced-motion: reduce) {
    .space-shortcut { transition: none; }
}


/* Installations and terrain settings. */
.button.secondary { color: var(--blue); background: #eaf1ff; box-shadow: none; }
.button.secondary:hover { background: #dce9ff; }
.heading-actions { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 20px; }
.heading-actions > div:first-child { min-width: 0; }
.heading-actions h1 { overflow-wrap: anywhere; }
.action-group, .form-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; }
.action-group form { margin: 0; }
.business-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
.business-grid .card { min-width: 0; }
.card-top { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-bottom: 20px; flex-wrap: wrap; }
.card-top .icon-circle { margin: 0; }
.installation-card h2, .terrain-card h3 { overflow-wrap: anywhere; }
.terrain-card h3 { font-size: 23px; margin: 16px 0; }
.location, .preserve-lines { overflow-wrap: anywhere; }
.description-preview { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; }
.breadcrumb { display: inline-flex; align-items: center; min-height: 44px; margin-bottom: 18px; font-size: 13px; overflow-wrap: anywhere; }
.installation-details { margin-bottom: 30px; }
.detail-list { margin: 0; }
.detail-list > div { padding: 12px 0; }
.detail-list dt { color: var(--muted); font-size: 12px; }
.detail-list dd { margin: 3px 0 0; font-weight: 600; }
.preserve-lines { white-space: pre-wrap; }
.terrain-metrics { display: flex; flex-wrap: wrap; gap: 16px; font-size: 13px; color: var(--muted); }
.terrain-metrics strong { color: var(--navy); font-size: 20px; }
.practice-badge { background: #eaf1ff; color: #1855af; }
.read-only { background: #edf3ff; color: #35567e; }
.business-form { max-width: 900px; }
.business-form textarea, .business-form select { width: 100%; border: 1px solid #ccd7e5; border-radius: 10px; padding: 12px 14px; font: inherit; color: var(--navy); background: white; min-height: 48px; }
.business-form textarea { resize: vertical; }
select:focus-visible, textarea:focus-visible, summary:focus-visible { outline: 3px solid #8cb9ff; outline-offset: 3px; }
.business-form [aria-invalid=true] { border-color: #c53f42; }
.switch-field { align-self: center; }
.switch-field .check { font-size: 14px; color: var(--navy); min-height: 44px; align-items: center; gap: 12px; }
.switch-field input[type=checkbox] { width: 20px; height: 20px; margin: 0; }
.hours-section { margin-top: 24px; }
.hours-editor { display: grid; gap: 15px; margin-top: 22px; }
.day-editor { border: 1px solid var(--line); border-radius: 14px; padding: 14px 18px 18px; display: grid; grid-template-columns: 135px minmax(0, 1fr); gap: 18px; min-width: 0; }
.day-editor legend { font-weight: 700; padding: 0 8px; font-size: 14px; }
.day-times { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 15px; }
.day-times > div { min-width: 0; }
.day-times input[type=time] { min-height: 48px; }
.day-times input:disabled { background: #f3f6fa; color: #8b98aa; }
.form-actions { margin: 24px 0; }
.hours-display { display: grid; gap: 8px; margin-top: 20px; }
.day-display { display: flex; justify-content: space-between; align-items: center; gap: 12px; border-radius: 12px; padding: 13px 16px; background: #f5f8fc; font-size: 14px; }
.terrain-settings { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 20px; }
.pagination { display: flex; justify-content: space-between; align-items: center; gap: 15px; margin: 24px 0; width: 100%; }
.pagination .hint { margin: 0; }
@media (max-width: 1100px) {
    .action-group .button, .heading-actions > .button { font-size: 13px; }
}
@media (max-width: 760px) {
    .business-grid { grid-template-columns: 1fr; gap: 18px; }
    .day-editor { grid-template-columns: 1fr; gap: 15px; padding: 12px 14px 16px; }
    .terrain-settings { grid-template-columns: 1fr; }
    .business-form input[type=time] { padding: 10px 8px; min-width: 0; width: 100%; }
    .heading-actions { align-items: flex-start; }
    .heading-actions .action-group { width: 100%; }
    .form-actions { flex-direction: column; align-items: stretch; }
    .form-actions .button { width: 100%; }
    .pagination { flex-wrap: wrap; font-size: 12px; }
    .pagination .button { padding: 10px 12px; font-size: 12px; }
}


/* Daily planning: time-aligned lanes on desktop, one terrain on mobile. */
.planning-controls { margin-bottom: 24px; }
.planning-date-heading { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; }
.planning-date-heading h2 { text-transform: capitalize; font-size: 24px; }
.date-controls { display: flex; align-items: flex-end; flex-wrap: wrap; gap: 22px; margin: 16px 0; }
.date-navigation { display: flex; margin: 0; gap: 8px; flex-wrap: wrap; }
.date-navigation a { min-height: 44px; font-size: 13px; gap: 8px; padding: 10px 14px; }
.date-picker { flex: 1; min-width: 240px; }
.date-picker > div, .mobile-terrain-picker > div { display: flex; align-items: center; gap: 10px; }
.date-picker input { min-width: 0; }
.planning-controls .button { min-height: 44px; white-space: nowrap; }
.mobile-terrain-picker select { flex: 1; min-width: 0; min-height: 48px; padding: 10px 14px; border: 1px solid #ccd7e5; border-radius: 10px; font: inherit; color: var(--navy); background: white; }
.mobile-terrain-indicator { display: none; margin: 9px 0 0; color: var(--muted); font-size: 12px; font-weight: 700; text-align: center; }
.single-installation { margin: 18px 0 0; padding-top: 16px; border-top: 1px solid var(--line); overflow-wrap: anywhere; }
.single-installation .eyebrow { margin-bottom: 3px; }
.past-control { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; margin-top: 18px; }
.past-control .check { align-items: center; min-height: 44px; font-size: 13px; margin: 0; }
.past-control input[type=checkbox] { width: 20px; height: 20px; margin: 0; }
.past-control .button { padding: 10px 14px; font-size: 12px; }
.planning-empty { margin-top: 24px; }
.mobile-terrain-picker { display: none; }
.planning-scroll { overflow: auto; max-height: 72vh; border: 1px solid var(--line); border-radius: 18px; background: white; }
.planning-scroll:focus-visible { outline: 3px solid #8cb9ff; outline-offset: 3px; }
.planning-board { --terrain-min-width: 180px; --terrain-max-width: 280px; width: min(100%, calc(var(--terrain-count) * var(--terrain-max-width))); min-width: calc(var(--terrain-count) * var(--terrain-min-width)); }
.planning-headers, .planning-body { display: grid; grid-template-columns: repeat(var(--terrain-count), minmax(var(--terrain-min-width), 1fr)); }
.planning-headers { position: sticky; top: 0; z-index: 2; background: white; border-bottom: 1px solid var(--line); box-shadow: 0 3px 8px #163e7008; }
.terrain-header { padding: 16px 12px 10px; min-width: 0; }
.terrain-header h3 { margin: 0 0 8px; font-size: 16px; overflow-wrap: anywhere; }
.terrain-header .hint { margin: 8px 0 0; font-size: 11px; }
.planning-body { height: var(--board-height); }
.planning-lane { position: relative; height: var(--board-height); }
.planning-lane { background-image: linear-gradient(to bottom, #edf1f7 1px, transparent 1px); background-size: 100% var(--hour-height); border-left: 1px solid #f0f3f8; }
.planning-slot { position: absolute; left: 7px; right: 7px; padding: 10px 11px; border-radius: 12px; border: 1px solid #bfe6d0; background: #e7f7ee; color: #206c49; display: flex; flex-direction: column; justify-content: center; gap: 3px; overflow: hidden; }
.slot-times { font-size: 12px; font-weight: 700; white-space: nowrap; }
.slot-status { font-size: 11px; font-weight: 700; }
.slot-past { background: #f1f3f6; border-color: #e0e5ec; color: #778395; }
.lane-empty { padding: 24px 12px; color: var(--muted); text-align: center; font-size: 13px; }
.lane-empty small { display: block; font-size: 11px; }
@media (max-width: 1000px) {
    .date-controls { gap: 16px; }
    .planning-date-heading h2 { font-size: 21px; }
}
@media (max-width: 760px) {
    .planning-controls { padding: 22px 18px; }
    .date-controls { display: block; }
    .date-navigation { width: 100%; justify-content: space-between; margin: 12px 0 18px; flex-wrap: nowrap; gap: 6px; }
    .date-navigation a { padding: 10px 9px; font-size: 11px; }
    .date-picker { min-width: 0; }
    .date-picker .button { padding: 10px 12px; font-size: 12px; }
    .mobile-terrain-picker { display: block; margin: 18px 0; }
    .mobile-terrain-indicator { display: block; }
    .planning-scroll { overflow-x: auto; overflow-y: hidden; max-height: none; border-radius: 16px; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; scrollbar-width: none; }
    .planning-scroll::-webkit-scrollbar { display: none; }
    .planning-board { width: calc(var(--terrain-count) * 100%); min-width: 0; }
    .planning-headers, .planning-body { grid-template-columns: repeat(var(--terrain-count), minmax(0, 1fr)); }
    .planning-headers { position: static; }
    .terrain-header { padding: 20px; }
    .terrain-header, .planning-lane { scroll-snap-align: start; scroll-snap-stop: always; }
    .terrain-header h3 { font-size: 21px; }
    .planning-body { height: auto; align-items: start; }
    .planning-lane { height: auto; padding: 12px; background: none; display: flex; flex-direction: column; gap: 10px; border: none; }
    .planning-slot { position: static; height: auto !important; padding: 16px; min-height: 70px; gap: 5px; }
    .slot-times { font-size: 15px; }
    .slot-status { font-size: 12px; }
    .lane-empty { min-height: 120px; }
}

.bulk-hours { margin: 1.5rem 0; padding: 1.25rem; border: 1px solid #dbe5f1; border-radius: 16px; background: #f7faff; }
.bulk-hours legend { padding: 0 .5rem; font-weight: 700; }
.day-chips { display: flex; flex-wrap: wrap; gap: .5rem; margin: .75rem 0 1rem; }
.day-chip { display: inline-flex; align-items: center; gap: .5rem; min-height: 44px; padding: .5rem .8rem; border: 1px solid #ccd8e8; border-radius: 999px; background: white; cursor: pointer; }
.day-chip:has(input:checked) { color: #124fc0; border-color: #2563eb; background: #eaf2ff; font-weight: 700; }
.day-chip:focus-within { outline: 2px solid #2563eb; outline-offset: 2px; }
.day-chip input { width: 18px; height: 18px; accent-color: #2563eb; }
.all-days { font-weight: 700; }
.bulk-hours-fields { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
@media (max-width: 760px) { .bulk-hours-fields { grid-template-columns: 1fr; } .bulk-hours > button { width: 100%; } }
.planning-sticky-header { position: sticky; top: 0; z-index: 2; background: white; }
.planning-sticky-header .planning-headers { position: static; }
.planning-installation-bands { display: grid; grid-template-columns: repeat(var(--terrain-count), minmax(var(--terrain-min-width), 1fr)); background: #f0f5fc; border-bottom: 1px solid var(--line); }
.installation-band { padding: 12px; font-weight: 700; color: var(--navy); border-left: 1px solid #d8e2ef; overflow-wrap: anywhere; }
.planning-lane { background-color: #f3f5f8; }
.mobile-installation-name { display: none; }
@media (max-width: 760px) {
    .planning-sticky-header { position: static; }
    .planning-installation-bands { display: none; }
    .mobile-installation-name { display: block; margin: 0 0 12px; color: var(--muted); font-size: 14px; }
    .planning-lane { background-color: transparent; }
}

@media (min-width: 761px) {
    .planning-page .app-frame { max-width: none; }
    .planning-page .workspace { max-width: none; padding-left: 24px; padding-right: 24px; }
}
.slot-open { background: #fff6da; border-color: #edce76; color: #845916; }
.slot-full { background: #fdebea; border-color: #efb3ac; color: #a6302a; }
.slot-players, .slot-participating { font-size: 11px; }
.planning-slot .slot-action { min-height: 44px; padding: 8px 10px; font-size: 12px; margin-top: 5px; width: 100%; }
.planning-slot form { margin: 0; }
.sessions-list { display: grid; gap: 20px; }
.session-card { max-width: 850px; }
.session-time { font-weight: 700; }
.session-participants { padding-left: 20px; }
.session-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 20px; }
.session-open { background: #fff6da; color: #845916; }
.session-full { background: #fdebea; color: #a6302a; }
.reservation-confirm { max-width: 700px; }
@media (max-width: 760px) { .session-actions, .session-actions form { width: 100%; } .session-actions .button { width: 100%; } }
.activity-type-badge { display: inline-block; border-left: 6px solid var(--activity-color); background: color-mix(in srgb, var(--activity-color) 13%, white); padding: 7px 12px; border-radius: 8px; color: var(--navy); font-size: 12px; font-weight: 700; }
.slot-activity { border-color: var(--activity-color, #8793a6); border-left-width: 5px; color: var(--navy); }
.slot-activity.slot-past { background: #f1f3f6; color: #778395; }
.slot-unavailable { background: #eef1f5; border-color: #cdd6e2; color: var(--muted); }
.activity-slot-title { font-size: 12px; font-weight: 700; line-height: 1.2; color: inherit; overflow-wrap: anywhere; }
.slot-activity > :not(.activity-slot-details) { flex-shrink: 0; }
.activity-slot-details { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; flex: 0 1 auto; min-height: 0; max-height: 4.05em; overflow: hidden; overflow-wrap: anywhere; white-space: pre-line; font-size: 12px; line-height: 1.35; }
@media (min-width: 761px) { .activity-slot-title { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; flex-shrink: 0; } }
.activity-card { max-width: 900px; margin-bottom: 20px; }
.groups-list { display: grid; gap: 12px; }
.notification-bell { position: relative; margin-left: 12px; }
.notification-bell summary { cursor: pointer; display: flex; align-items: center; gap: 6px; min-height: 44px; padding: 6px 10px; border-radius: 10px; background: #f0f5fc; }
.notification-bell summary:focus-visible { outline: 3px solid #2563eb; }
.notification-count { font-size: 12px; font-weight: 700; }
.notification-popup { position: absolute; right: 0; top: 100%; width: min(360px, 88vw); background: white; border: 1px solid var(--line); border-radius: 12px; padding: 16px; box-shadow: 0 12px 32px #15243a22; z-index: 20; }
.notification-popup ul { list-style: none; margin: 8px 0; padding: 0; }
.notification-popup li { padding: 10px 6px; border-bottom: 1px solid var(--line); }
.notification-popup small { display: block; margin-top: 4px; color: var(--muted); }
@media (max-width: 760px) {
    .notification-popup { position: fixed; inset-inline: 12px; top: 72px; width: auto; max-height: calc(100dvh - 84px); overflow-y: auto; overscroll-behavior: contain; }
}
@media (max-width: 360px) {
    .notification-popup { top: 132px; max-height: calc(100dvh - 144px); }
}
.notification-list { display: grid; gap: 0; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; background: white; }
.notification-row { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--line); }
.notification-row > div { flex: 1; min-width: 180px; overflow-wrap: anywhere; }
.notification-row p { margin: 5px 0; }
.notification-row small { color: var(--muted); }
.notification-unread { background: #eef4ff; }
.notification-content { max-width: 900px; }
.notification-content form { margin: 16px 0; }
.group-card { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 16px; padding: 16px 20px; }
.group-card h2 { font-size: 20px; margin: 0 0 6px; }
.group-card p { margin: 4px 0; }
.group-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.group-information { max-width: 900px; margin-bottom: 16px; }
.group-coaches { margin-top: 20px; border: 1px solid var(--line); border-radius: 12px; padding: 15px; }
.group-coaches legend { font-weight: 700; }
.group-members { list-style: none; padding: 0; }
.group-members li { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--line); }
.group-members .button { min-height: 44px; }
.group-members form { margin: 0; }
.slot-activity > .activity-slot-group { flex: 0 1 auto; min-height: 0; max-height: 2.6em; overflow: hidden; font-size: 11px; line-height: 1.3; }
.activity-color-control { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; }
.activity-color-preview { width: 44px; height: 44px; flex: 0 0 44px; border: 1px solid #8793a6; border-radius: 10px; }
.activity-color-control output { font-family: monospace; font-size: 16px; font-weight: 700; color: var(--navy); }
.activity-color-chooser { position: relative; display: inline-flex; align-items: center; min-height: 44px; padding: 10px 16px; border: 1px solid var(--line); border-radius: 10px; background: #f0f5fc; color: var(--navy); font-weight: 700; }
.activity-color-chooser input[type="color"] { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; padding: 0; opacity: 0; cursor: pointer; }
.activity-color-chooser:focus-within { outline: 3px solid #2563eb; outline-offset: 3px; }
.activity-color-chooser:hover { background: #e5edfa; }
.activity-details { white-space: pre-line; }
.activity-terrain-options { display: grid; gap: 15px; }
[data-activity-recurrence] fieldset { border: 0; margin: 15px 0; padding: 0; }
[data-activity-recurrence] legend { font-weight: 700; margin-bottom: 8px; }
[data-activity-recurrence] [hidden] { display: none; }
.activity-terrain-options fieldset { border: 1px solid var(--line); border-radius: 12px; padding: 15px; }
.inline-participant-action { display: inline-block; margin: 5px 10px; }
@media (max-width: 760px) { .activity-slot-title { font-size: 16px; } }

.calendar-toolbar { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:16px; }
.calendar-toolbar h2 { margin:0; flex:1; text-align:center; font-size:1.4rem; }
.calendar-weekdays,.calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); }
.calendar-weekdays { text-align:center; font-size:.8rem; color:var(--muted); padding:10px 0; }
.calendar-grid { border-top:1px solid #dce3ec; border-left:1px solid #dce3ec; border-radius:8px; overflow:hidden; }
.calendar-day { min-height:155px; min-width:0; padding:8px; background:white; border-right:1px solid #dce3ec; border-bottom:1px solid #dce3ec; }
.calendar-day { position:relative; isolation:isolate; cursor:pointer; }
.calendar-day-number::after { content:""; position:absolute; inset:0; z-index:1; }
.calendar-day .calendar-event, .calendar-day .calendar-more { position:relative; z-index:2; }
.calendar-day:hover { background:#f0f4f9; }
.calendar-day:has(.calendar-day-number:focus-visible) { box-shadow:inset 0 0 0 2px #1260e8; }
.calendar-day.outside-month { background:#f4f6f9; }
.calendar-day.outside-month:hover { background:#eaf0f6; }
.calendar-day.outside-month .calendar-day-number { color:#748197; }
.calendar-day-number { display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; color:#27374e; text-decoration:none; border:1px solid transparent; margin-bottom:5px; font-size:.85rem; }
.calendar-day-number.is-today { border-color:#1260e8; border-radius:50%; color:#1260e8; font-weight:700; }
.calendar-event { display:block; border-left:3px solid var(--activity-color); padding:4px 6px; margin:3px 0; color:#27374e; text-decoration:none; font-size:.78rem; line-height:1.3; }
.calendar-event span { display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; overflow-wrap:anywhere; }
.calendar-event time { font-weight:700; }
.calendar-event small { display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:#627087; margin-top:2px; }
.calendar-more { font-size:.78rem; display:inline-block; margin-top:4px; }
.calendar-mobile { display:none; }
.calendar-agenda-day { padding:12px 0; border-bottom:1px solid #dce3ec; }
.calendar-agenda-day h3 { margin:0 0 8px; font-size:1rem; }
.calendar-agenda-day h3 a { color:#27374e; }
@media(max-width:760px) {
 .calendar-desktop { display:none; } .calendar-mobile { display:block; }
 .calendar-mobile [data-past-date] { display:none; }
 .calendar-mobile.show-past [data-past-date] { display:block; }
 .calendar-past-toggle { margin-bottom:12px; }
 .calendar-toolbar h2 { order:-1; flex-basis:100%; text-align:left; }
 .calendar-toolbar .button { padding:9px; font-size:.8rem; }
 .calendar-event { font-size:.9rem; padding:8px; }
}

.activity-call-options { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:8px; max-height:320px; overflow-y:auto; padding:4px; }
.activity-call-options label { display:flex; gap:8px; align-items:flex-start; min-height:44px; padding:9px 10px; border:1px solid var(--line); border-radius:8px; }
.activity-call-options small { display:block; color:var(--muted); }
@media(max-width:760px) { .activity-call-options { grid-template-columns:1fr; max-height:45vh; } }

.slot-activity, .calendar-event { background: color-mix(in srgb, var(--activity-color, #8793a6) 15%, white); }


.member-search { display:flex; flex-wrap:wrap; gap:12px; align-items:end; margin:20px 0; }
.member-search .field { margin:0; flex:1 1 200px; }
.member-search button { min-height:44px; }
.member-section { margin-top:18px; }
.member-section fieldset { margin:12px 0; border:1px solid var(--line); border-radius:8px; padding:12px; }
.member-section summary { cursor:pointer; padding:12px 0; min-height:44px; }
.member-list .notification-row { padding:12px 16px; }
.member-list .badges { margin:5px 0; }
.member-list p { overflow-wrap:anywhere; }
@media(max-width:760px) { .member-search { align-items:stretch; } .member-search button { width:100%; } }

.brand { min-width: 0; }
.brand-mark { flex-shrink: 0; }
.brand-identity { display: flex; flex-direction: column; min-width: 0; }
.brand-logo { display: block; width: 140px; max-width: 100%; height: auto; }
.brand-name { line-height: 1.2; }
.brand-club { margin-top: 3px; font-size: 13px; font-weight: 500; line-height: 1.3; letter-spacing: 0; color: var(--muted); overflow-wrap: anywhere; }
@media (max-width: 760px) {
    .brand { max-width: 100%; }
    .connected .brand { flex: 1 1 0; }
    .brand-club { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
}

.role-access-note { font-size: 12px; color: var(--muted); font-weight: 500; }
.check input:not(:checked) ~ .role-access-note { display: none; }
.member-role-form:has(input[value="entraineur"]:checked) .trainer-removal-warning { display: none; }

.calendar-agenda-day { position: relative; isolation: isolate; cursor: pointer; }
.calendar-agenda-link::after { content: ''; position: absolute; inset: 0; z-index: 1; }
.calendar-agenda-day .calendar-event { position: relative; z-index: 2; }
.calendar-agenda-day:hover { background: #f7f9fc; }
.calendar-agenda-link:focus-visible::after { outline: 2px solid var(--navy); outline-offset: 2px; }

/* PlayTime foundations — shared controls, then the sessions pilot. */
:root {
    --pt-brand: #1260e8;
    --pt-brand-dark: #084fc8;
    --pt-text: #102547;
    --pt-text-secondary: #52647e;
    --pt-page: #f5f8fc;
    --pt-surface: #fff;
    --pt-surface-secondary: #eaf1ff;
    --pt-border: #dde5ef;
    --pt-success: #206c49;
    --pt-success-surface: #e7f7ee;
    --pt-warning: #705000;
    --pt-warning-surface: #fff6da;
    --pt-danger: #a6302a;
    --pt-danger-surface: #fff0ef;
    --pt-info: #1855af;
    --pt-focus: #084fc8;
    --pt-disabled: #52647e;
    --pt-disabled-surface: #edf1f5;
    --pt-space-1: 4px;
    --pt-space-2: 8px;
    --pt-space-3: 12px;
    --pt-space-4: 16px;
    --pt-space-5: 20px;
    --pt-space-6: 24px;
    --pt-space-8: 32px;
    --pt-radius-small: 6px;
    --pt-radius-control: 8px;
    --pt-radius-card: 14px;
    --pt-radius-pill: 999px;
    --pt-shadow-card: 0 2px 8px #10254708;
    --pt-shadow-hover: 0 4px 12px #10254710;
    --pt-font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --pt-font-title: 30px;
    --pt-font-section: 22px;
    --pt-font-card: 20px;
    --pt-font-body: 15px;
    --pt-font-secondary: 14px;
    --pt-font-label: 14px;
    --pt-font-help: 13px;
    --pt-font-badge: 12px;
    --blue: var(--pt-brand);
    --navy: var(--pt-text);
    --muted: var(--pt-text-secondary);
    --line: var(--pt-border);
    --bg: var(--pt-page);
    --green: var(--pt-success);
}
body { font-size: var(--pt-font-body); }
h1, .page-heading h1 { font-size: var(--pt-font-title); line-height: 1.2; letter-spacing: -.7px; }
h2 { font-size: var(--pt-font-section); }
.card { padding: var(--pt-space-5); background: var(--pt-surface); border-color: var(--pt-border); border-radius: var(--pt-radius-card); box-shadow: var(--pt-shadow-card); }
.card.compact-card { padding: var(--pt-space-4); }
.card.interactive-card:hover { border-color: #aac8f6; box-shadow: var(--pt-shadow-hover); }
.button, .button.secondary, .button.white { min-height: 44px; padding: var(--pt-space-2) var(--pt-space-4); border: 1px solid transparent; border-radius: var(--pt-radius-control); font-size: var(--pt-font-secondary); line-height: 1.4; font-weight: 650; gap: var(--pt-space-2); box-shadow: none; text-align: center; }
.button { background: var(--pt-brand); color: var(--pt-surface); }
.button:hover { background: var(--pt-brand-dark); }
.button.secondary { background: var(--pt-surface-secondary); color: var(--pt-info); border-color: #d5e3fb; }
.button.secondary:hover { background: #dce9ff; }
.button.quiet { background: transparent; color: var(--pt-text-secondary); box-shadow: none; }
.button.quiet:hover { background: var(--pt-page); color: var(--pt-text); }
.button.danger { background: var(--pt-danger-surface); color: var(--pt-danger); border-color: #efb3ac; box-shadow: none; }
.button.danger:hover { background: #fde3e0; }
.button.compact { min-height: 40px; padding: var(--pt-space-2) var(--pt-space-3); }
.button:active:not(:disabled):not([aria-disabled=true]) { filter: brightness(.94); }
.button:disabled, .button[aria-disabled=true] { background: var(--pt-disabled-surface); color: var(--pt-disabled); border-color: var(--pt-border); box-shadow: none; cursor: not-allowed; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible, .planning-scroll:focus-visible { outline: 3px solid var(--pt-focus); outline-offset: 3px; }
label { font-size: var(--pt-font-label); }
input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=color]), select, textarea, .business-form select, .business-form textarea { width: 100%; min-height: 44px; border: 1px solid #b9c8dc; border-radius: var(--pt-radius-control); padding: 10px var(--pt-space-3); font: inherit; color: var(--pt-text); background: var(--pt-surface); }
textarea, .business-form textarea { min-height: 112px; resize: vertical; }
select[multiple] { min-height: 160px; }
input[type=checkbox], input[type=radio] { width: 18px; height: 18px; padding: 0; accent-color: var(--pt-brand); flex-shrink: 0; }
input[type=radio] { display: inline-block; }
.check { font-size: var(--pt-font-help); min-height: 32px; align-items: center; }
input:disabled, select:disabled, textarea:disabled, .business-form :disabled, .day-times input:disabled { color: var(--pt-disabled); background: var(--pt-disabled-surface); cursor: not-allowed; }
input[aria-invalid=true], select[aria-invalid=true], textarea[aria-invalid=true], .business-form [aria-invalid=true] { border-color: var(--pt-danger); }
.field-error { color: var(--pt-danger); font-size: var(--pt-font-help); }
.badge { padding: var(--pt-space-1) var(--pt-space-2); border-radius: var(--pt-radius-small); font-size: var(--pt-font-badge); line-height: 1.4; }
.green { background: var(--pt-success-surface); color: var(--pt-success); }
.orange, .session-open { background: var(--pt-warning-surface); color: var(--pt-warning); }
.session-full { background: var(--pt-danger-surface); color: var(--pt-danger); }
.slot-past, .slot-activity.slot-past { color: var(--pt-text-secondary); }
.pagination { gap: var(--pt-space-3); font-size: var(--pt-font-secondary); margin: var(--pt-space-5) 0; }
.pagination .hint { font-size: var(--pt-font-help); }
.pagination [aria-disabled=true] { padding: var(--pt-space-2) var(--pt-space-3); color: var(--pt-disabled); }
.ui-icon { width: 20px; height: 20px; flex: 0 0 20px; }
.sport-icon { width: 44px; height: 44px; flex: 0 0 44px; color: var(--pt-info); }
/* Preserve the planning's current control dimensions and geometry. */
.planning-page .page-heading h1 { font-size: 36px; }


.planning-slot .slot-action { min-height: 44px; padding: 8px 10px; font-size: 12px; gap: 20px; }
/* The pilot alone adopts the denser page and session composition. */
.sessions-page .workspace { max-width: 1180px; margin: var(--pt-space-6) auto; }
.sessions-page .page-heading { margin-bottom: var(--pt-space-5); }
.sessions-page .page-heading h1 { margin: 0 0 var(--pt-space-2); }
.sessions-page .page-heading p { margin: 0; font-size: var(--pt-font-secondary); }
.sessions-page .eyebrow { font-size: var(--pt-font-badge); letter-spacing: 1px; margin-bottom: var(--pt-space-2); }
.sessions-page .sessions-list { gap: var(--pt-space-3); }
.sessions-view-switcher { display: inline-grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0 0 var(--pt-space-4); padding: 3px; border: 1px solid var(--pt-border); border-radius: var(--pt-radius-control); background: var(--pt-disabled-surface); }
.sessions-view-switcher a { display: flex; align-items: center; justify-content: center; min-height: 44px; padding: var(--pt-space-2) var(--pt-space-4); border-radius: calc(var(--pt-radius-control) - 3px); color: var(--pt-text-secondary); text-align: center; text-decoration: none; font-size: var(--pt-font-secondary); font-weight: 700; }
.sessions-view-switcher a[aria-current] { background: var(--pt-surface); color: var(--pt-brand); box-shadow: var(--pt-shadow-card); }
.club-reservations-list, .club-reservation-day { display: grid; gap: var(--pt-space-3); }
.club-reservation-day + .club-reservation-day { margin-top: var(--pt-space-4); }
.club-reservation-day > h2 { margin: 0; color: var(--pt-text-secondary); font-size: var(--pt-font-secondary); text-transform: uppercase; letter-spacing: .06em; }
.club-reservation-card { display: grid; gap: var(--pt-space-2); margin: 0; padding: var(--pt-space-4); border-left: 4px solid var(--pt-border); }
.club-reservation-card.is-searching { border-left-color: var(--pt-brand); background: color-mix(in srgb, var(--pt-brand) 4%, var(--pt-surface)); }
.club-reservation-main { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--pt-space-3); }
.club-reservation-time { display: flex; align-items: center; gap: var(--pt-space-1); font-weight: 750; white-space: nowrap; }
.club-reservation-identity h3, .club-reservation-identity p, .club-player-search p { margin: 0; }
.club-reservation-identity h3 { font-size: var(--pt-font-card); }
.club-reservation-identity p, .club-reservation-participants { color: var(--pt-text-secondary); font-size: var(--pt-font-secondary); }
.club-reservation-participants { display: flex; flex-wrap: wrap; gap: var(--pt-space-1) var(--pt-space-2); }
.club-player-search { padding: var(--pt-space-2) var(--pt-space-3); border-radius: var(--pt-radius-small); background: var(--pt-surface-secondary); color: var(--pt-text); font-size: var(--pt-font-secondary); }
.club-player-search p { margin-top: var(--pt-space-1); white-space: pre-line; }
.club-reservation-actions { display: flex; align-items: center; flex-wrap: wrap; gap: var(--pt-space-2); }
.club-reservation-actions form { margin: 0; }
.sessions-page .pilot-session { width: 100%; max-width: none; margin: 0; padding: var(--pt-space-4) var(--pt-space-5); border-left: 4px solid var(--pt-brand); }
.sessions-page .activity-session { border-left-color: var(--activity-color); }
.session-card-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--pt-space-4); }
.session-card-heading > div:first-child { min-width: 0; }
.sessions-page .session-card-heading h2 { font-size: var(--pt-font-card); line-height: 1.25; letter-spacing: -.3px; margin: var(--pt-space-1) 0 0; overflow-wrap: anywhere; }
.session-sports { display: flex; gap: var(--pt-space-2); flex-shrink: 0; }
.sessions-page .activity-type-badge { padding: var(--pt-space-1) var(--pt-space-2); border-left-width: 3px; border-radius: var(--pt-radius-small); line-height: 1.4; }
.session-facts { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--pt-space-3) var(--pt-space-6); margin: var(--pt-space-2) 0; font-size: var(--pt-font-secondary); }
.session-facts > div { display: flex; gap: var(--pt-space-2); min-width: 0; }
.session-facts .ui-icon { margin-top: 2px; color: var(--pt-info); }
.session-facts p, .session-summary p { margin: 0; overflow-wrap: anywhere; }
.session-facts .session-time { font-weight: 700; }
.session-summary { display: flex; flex-wrap: wrap; gap: var(--pt-space-1) var(--pt-space-5); font-size: var(--pt-font-secondary); }
.sessions-page .session-roster { margin-top: var(--pt-space-3); }
.sessions-page .session-roster h3 { font-size: var(--pt-font-help); color: var(--pt-text-secondary); font-weight: 600; margin: 0 0 var(--pt-space-1); }
.sessions-page .session-participants { display: flex; flex-wrap: wrap; gap: var(--pt-space-1) var(--pt-space-4); list-style: none; padding: 0; margin: 0; font-size: var(--pt-font-secondary); }
.sessions-page .session-participants li { overflow-wrap: anywhere; max-width: 100%; }
.sessions-page .hint { margin: var(--pt-space-2) 0 0; font-size: var(--pt-font-help); }
.sessions-page .session-participants .hint { font-size: inherit; margin: 0; }
.sessions-page .session-actions { width: auto; margin-top: var(--pt-space-2); padding-top: var(--pt-space-2); border-top: 1px solid var(--pt-border); gap: var(--pt-space-2); align-items: center; }
.sessions-page .session-actions form { width: auto; margin: 0; }
.sessions-page .session-actions .button { width: auto; }
.sessions-page .session-actions > .hint { flex-basis: 100%; margin: 0; }
.sessions-page .space-empty { max-width: none; padding: var(--pt-space-6); }
.sessions-page .space-empty h2 { margin: 0 0 var(--pt-space-2); }
.sessions-page .space-empty p { margin: 0; }
.sessions-page .space-empty .button { margin-top: var(--pt-space-4); }
.sessions-page .desktop-navigation { padding-top: var(--pt-space-6); }
.sessions-page .space-navigation { gap: var(--pt-space-1); }
.sessions-page .space-navigation a { min-height: 44px; padding: var(--pt-space-2) var(--pt-space-3); gap: var(--pt-space-2); border-radius: var(--pt-radius-control); }
.sessions-page .space-navigation a[aria-current] { box-shadow: inset 3px 0 var(--pt-brand); }
.sessions-page .sidebar-note { margin: var(--pt-space-6) var(--pt-space-3) 0; font-size: var(--pt-font-help); }
.sessions-page footer { padding: var(--pt-space-4) 0; font-size: var(--pt-font-help); }
@media (max-width: 760px) {
    h1, .page-heading h1 { font-size: 26px; }
    .button.compact { min-height: 44px; }
    .planning-page .page-heading h1 { font-size: 30px; }
    .planning-page .planning-controls { padding: 22px 18px; }
    .sessions-page .workspace { margin: var(--pt-space-5) auto; }
    .sessions-view-switcher { width: 100%; }
    .sessions-view-switcher a { padding-inline: var(--pt-space-2); }
    .club-reservation-main { grid-template-columns: minmax(0, 1fr) auto; }
    .club-reservation-time { grid-column: 1 / -1; }
    .club-reservation-identity h3 { font-size: 17px; }
    .club-reservation-actions, .club-reservation-actions form, .club-reservation-actions .button { width: 100%; }
    .session-facts { grid-template-columns: minmax(0, 1fr); gap: var(--pt-space-2); }
    .sessions-page .pilot-session { padding: var(--pt-space-4); }
    .sessions-page .session-card-heading h2 { font-size: 19px; }
    .sessions-page .session-actions { align-items: stretch; }
    .sessions-page .session-actions .button { width: auto; max-width: 100%; }
    .sessions-page .session-actions form { max-width: 100%; }
    .sessions-page .session-actions .danger { margin-left: 0; }
}

.button:disabled:hover, .button[aria-disabled=true]:hover { background: var(--pt-disabled-surface); color: var(--pt-disabled); filter: none; }

.session-card-labels { display: flex; flex-wrap: wrap; align-items: center; gap: var(--pt-space-2); }
@media (min-width: 761px) {
    .sessions-page .session-roster { display: flex; align-items: baseline; gap: var(--pt-space-3); margin-top: var(--pt-space-2); }
    .sessions-page .session-roster h3 { flex-shrink: 0; margin: 0; }
}

/* Session resources: location and sport describe separate data. */
.session-facts > .session-resource { flex-direction: column; gap: var(--pt-space-1); }
.session-location, .session-sport { display: flex; align-items: flex-start; gap: var(--pt-space-2); min-width: 0; }
.session-sport { align-items: center; }
/* Monthly calendar: existing interactions, PlayTime pilot tokens. */
.calendar-page .workspace { max-width: 1180px; margin: var(--pt-space-6) auto; }
.calendar-page .page-heading { margin-bottom: var(--pt-space-5); }
.calendar-page .page-heading h1 { margin: 0 0 var(--pt-space-2); }
.calendar-page .page-heading p { margin: 0; font-size: var(--pt-font-secondary); }
.calendar-page .calendar-toolbar { display: grid; grid-template-columns: 44px minmax(0, 1fr) auto 44px; gap: var(--pt-space-2); margin-bottom: var(--pt-space-3); }
.calendar-page .calendar-toolbar h2 { font-size: var(--pt-font-card); text-align: left; padding-inline: var(--pt-space-2); }
.calendar-page .calendar-toolbar .button { min-height: 44px; padding: var(--pt-space-2); }
.calendar-page .calendar-toolbar [aria-label="Mois précédent"], .calendar-page .calendar-toolbar [aria-label="Mois suivant"] { font-size: var(--pt-font-card); }
.calendar-page .calendar-control-label { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.calendar-page .calendar-weekdays { font-size: var(--pt-font-help); color: var(--pt-text-secondary); padding: var(--pt-space-2) 0; }
.calendar-page .calendar-grid { border-color: var(--pt-border); border-radius: var(--pt-radius-control); box-shadow: var(--pt-shadow-card); }
.calendar-page .calendar-day { min-height: 128px; padding: var(--pt-space-2); border-color: var(--pt-border); }
.calendar-page .calendar-day:hover { background: var(--pt-page); }
.calendar-page .calendar-day.outside-month { background: var(--pt-page); }
.calendar-page .calendar-day.outside-month .calendar-day-number { color: var(--pt-text-secondary); }
.calendar-page .calendar-day-number { color: var(--pt-text); font-size: var(--pt-font-help); margin-bottom: var(--pt-space-1); }
.calendar-page .calendar-day-number.is-today { border-color: var(--pt-brand); color: var(--pt-brand); font-weight: 700; }
.calendar-page :is(.calendar-day, .calendar-agenda-day).has-member-reservation { box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--pt-brand) 48%, var(--pt-border)); }
.calendar-page .calendar-event { padding: var(--pt-space-1) var(--pt-space-2); margin: var(--pt-space-1) 0; font-size: var(--pt-font-help); color: var(--pt-text); border-radius: var(--pt-radius-small); background: color-mix(in srgb, var(--activity-color) 10%, var(--pt-surface)); }
.calendar-page .calendar-event span { -webkit-line-clamp: 1; }
.calendar-page .calendar-event small { font-size: var(--pt-font-badge); color: var(--pt-text-secondary); }
.calendar-page .calendar-event:hover { text-decoration: underline; text-underline-offset: 2px; }
.calendar-page .calendar-event:focus-visible { outline: 2px solid var(--pt-focus); outline-offset: 2px; }
.calendar-page .calendar-more { font-size: var(--pt-font-help); }
.calendar-page .calendar-day:has(.is-today), .calendar-page .calendar-agenda-day:has([aria-current="date"]) { background: color-mix(in srgb, var(--pt-brand) 6%, var(--pt-surface)); }
.calendar-page .calendar-event { background: color-mix(in srgb, var(--activity-color) 18%, var(--pt-surface)); box-shadow: inset 1px 0 var(--activity-color); }
.calendar-page .calendar-event small, .calendar-page .calendar-weekdays, .calendar-page .calendar-agenda-day .muted { color: color-mix(in srgb, var(--pt-text-secondary) 75%, var(--pt-text)); }
.calendar-page .club-upcoming { margin-top: var(--pt-space-6); }
.calendar-page .club-upcoming > h2 { font-size: var(--pt-font-section); margin: 0 0 var(--pt-space-3); }
.calendar-page .club-upcoming-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: var(--pt-space-3); }
.calendar-page .club-upcoming-card { display: block; min-width: 0; margin: 0; padding: var(--pt-space-4); border-left: 4px solid var(--activity-color); color: var(--pt-text); text-decoration: none; font-size: var(--pt-font-secondary); }
.calendar-page .club-upcoming-card:hover { border-left-color: var(--activity-color); }
.calendar-page .club-upcoming-card { box-shadow: inset 2px 0 var(--activity-color), var(--pt-shadow-card); }
.calendar-page .club-upcoming-card:hover { box-shadow: inset 2px 0 var(--activity-color), var(--pt-shadow-hover); }
.calendar-page .club-upcoming-card .activity-type-badge { background: color-mix(in srgb, var(--activity-color) 20%, var(--pt-surface)); }
.calendar-page .club-upcoming-card h3 { font-size: var(--pt-font-card); line-height: 1.25; margin: var(--pt-space-2) 0 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; }
.calendar-page .club-upcoming-card .session-card-heading > div:first-child { flex: 1; }
.calendar-page .club-upcoming-card .session-sports { flex-wrap: wrap; max-width: 88px; }
.calendar-page .club-upcoming-card .sport-icon { width: 40px; height: 40px; flex-basis: 40px; color: var(--activity-color); }
.calendar-page .club-upcoming-card .sport-icon { stroke-width: 2.7; }
.calendar-page .club-upcoming-card p { margin: 0; overflow-wrap: anywhere; }
.calendar-page .club-upcoming-date { margin: var(--pt-space-3) 0; }
.calendar-page .club-upcoming-card .session-time { font-weight: 700; }
.calendar-page .club-upcoming-sport { padding-left: 28px; color: color-mix(in srgb, var(--pt-text-secondary) 75%, var(--pt-text)); }
.calendar-page:not(.connected) .calendar-day, .calendar-page:not(.connected) .calendar-agenda-day { cursor: default; }
.calendar-page:not(.connected) .calendar-day:hover, .calendar-page:not(.connected) .calendar-agenda-day:hover { background: inherit; }
.calendar-page:not(.connected) .calendar-day-number::after, .calendar-page:not(.connected) .calendar-agenda-link::after { content: none; }
.calendar-page:not(.connected) .calendar-event:hover { text-decoration: none; }
.calendar-page:not(.connected) .club-upcoming-card:hover { box-shadow: inset 2px 0 var(--activity-color), var(--pt-shadow-card); }
.calendar-page .calendar-agenda-day { padding: var(--pt-space-2) var(--pt-space-3); background: var(--pt-surface); border-color: var(--pt-border); }
.calendar-page .calendar-agenda-day h3 { font-size: var(--pt-font-secondary); margin: 0 0 var(--pt-space-1); }
.calendar-page .calendar-agenda-day h3 a { color: var(--pt-text); text-decoration: none; }
.calendar-page .calendar-agenda-day h3 a[aria-current="date"] { color: var(--pt-brand); text-decoration: underline; text-underline-offset: var(--pt-space-1); }
.calendar-page .calendar-agenda-day .muted { font-size: var(--pt-font-help); margin: 0; }
.calendar-page .calendar-mobile { border: 1px solid var(--pt-border); border-radius: var(--pt-radius-control); overflow: hidden; }
.calendar-page .calendar-agenda-day:last-child { border-bottom: 0; }
.calendar-page .calendar-agenda-day:hover { background: var(--pt-page); }
.calendar-page .calendar-agenda-day:has(.calendar-agenda-link:focus-visible) { box-shadow: inset 0 0 0 2px var(--pt-focus); }
@media (max-width: 760px) {
    .calendar-page .workspace { margin: var(--pt-space-5) auto; }
    .calendar-page .calendar-toolbar { grid-template-columns: 44px minmax(0, 1fr) 44px; }
    .calendar-page .calendar-toolbar h2 { order: 0; text-align: center; }
    .calendar-page .calendar-toolbar a:nth-of-type(2) { grid-column: 2; grid-row: 2; justify-self: center; }
    .calendar-page .calendar-toolbar a:last-child { grid-column: 3; grid-row: 1; }
    .calendar-page .calendar-event span { -webkit-line-clamp: 2; }
}
/* Activity detail and forms reuse the pilot's tokens and components. */
:is(.activity-detail-page, .activity-form-page) .workspace { max-width: 1180px; margin: var(--pt-space-6) auto; }
:is(.activity-detail-page, .activity-form-page) .page-heading { margin-bottom: var(--pt-space-5); }
:is(.activity-detail-page, .activity-form-page) .card { padding: var(--pt-space-4) var(--pt-space-5); margin-bottom: var(--pt-space-3); }
.activity-detail-page .context-return { margin: 0 0 var(--pt-space-3); font-size: var(--pt-font-secondary); }
.activity-detail-page .activity-consultation { border-left: 4px solid var(--activity-color); }
.activity-detail-page h2 { font-size: var(--pt-font-card); margin: 0 0 var(--pt-space-2); }
.activity-detail-page h3 { font-size: var(--pt-font-secondary); margin: var(--pt-space-3) 0 var(--pt-space-2); }
.activity-detail-page .activity-card > p { margin: var(--pt-space-2) 0; }
.activity-detail-page .activity-participation-actions > p { margin: var(--pt-space-2) 0; }
.activity-detail-page .activity-participation-actions.is-registered { display: flex; align-items: center; flex-wrap: wrap; gap: var(--pt-space-2); margin-top: var(--pt-space-2); }
.activity-detail-page .activity-participation-actions.is-registered > p, .activity-detail-page .activity-participation-actions.is-registered > form { margin: 0; }
.activity-detail-page .session-participants { margin: var(--pt-space-2) 0; padding-left: var(--pt-space-5); font-size: var(--pt-font-secondary); }
.activity-detail-page .session-summary { margin: var(--pt-space-2) 0; }
.activity-detail-page .detail-roster { display: flex; align-items: baseline; flex-wrap: wrap; gap: var(--pt-space-3); }
.activity-detail-page .detail-roster .session-participants { display: flex; flex-wrap: wrap; gap: var(--pt-space-1) var(--pt-space-4); list-style: none; padding: 0; }
.activity-form-page .business-form :is(select, textarea) { border-color: var(--pt-border); border-radius: var(--pt-radius-control); padding: var(--pt-space-2) var(--pt-space-3); min-height: 44px; }
.activity-detail-page .activity-management .session-participants { list-style: none; padding: 0; }
.activity-detail-page .activity-management .session-participants li { display: flex; justify-content: space-between; align-items: center; gap: var(--pt-space-3); padding: var(--pt-space-1) 0; border-bottom: 1px solid var(--pt-border); }
.activity-detail-page .inline-participant-action { margin: 0; flex-shrink: 0; }
.activity-detail-page .activity-inline-form { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--pt-space-3); }
.activity-detail-page .activity-inline-form .field { flex: 0 1 340px; margin: 0; }
.activity-detail-page .activity-inline-form .button { margin: 0; }
.activity-detail-page .form-actions { margin: var(--pt-space-3) 0; }
.activity-detail-page .activity-cancellation { border-top: 1px solid var(--pt-border); padding-top: var(--pt-space-2); }
.activity-form-page .activity-date-fields { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: var(--pt-space-3); }
.activity-form-page .field { margin-bottom: var(--pt-space-3); }
.activity-form-page .business-form > .field, .activity-form-page [data-activity-reminder] { padding: var(--pt-space-3) var(--pt-space-5); }
.activity-form-page textarea { min-height: 100px; }
.activity-form-page #activity-scope { max-width: 340px; }
@media (max-width: 760px) {
    :is(.activity-detail-page, .activity-form-page) .card { padding: var(--pt-space-4); }
    .activity-form-page .activity-date-fields { grid-template-columns: minmax(0, 1fr); gap: 0; }
    .activity-detail-page .activity-inline-form { align-items: stretch; flex-direction: column; }
    .activity-detail-page .activity-inline-form .field { flex: auto; }
}
:is(.sessions-page, .activity-detail-page) .session-sports { height: 0; overflow: visible; }
:is(.sessions-page, .activity-detail-page) .session-sports .sport-icon { width: 58px; height: 58px; flex: 0 0 58px; color: var(--pt-brand); }
:is(.sessions-page .activity-session, .activity-detail-page .activity-consultation) .session-sports .sport-icon { color: var(--activity-color); }
@media (max-width: 1100px) {
    :is(.sessions-page, .activity-detail-page) .session-sports .sport-icon { width: 50px; height: 50px; flex-basis: 50px; }
}
@media (max-width: 760px) {
    :is(.sessions-page, .activity-detail-page) .session-sports .sport-icon { width: 40px; height: 40px; flex-basis: 40px; }
}

.calendar-page :is(.calendar-grid, .calendar-day, .calendar-mobile, .calendar-agenda-day) { border-color: color-mix(in srgb, var(--pt-border) 82%, var(--pt-text-secondary)); }
/* Ticket 025: shared time geometry; content never determines desktop height. */
.planning-page .page-heading { margin: var(--pt-space-4) 0; }
.planning-page .page-heading h1 { font-size: var(--pt-font-title); margin-bottom: var(--pt-space-1); }
.planning-page .planning-controls { display: flex; align-items: center; flex-wrap: wrap; gap: var(--pt-space-3); padding: var(--pt-space-3) var(--pt-space-4); border-radius: var(--pt-radius-card); box-shadow: var(--pt-shadow-card); }
.planning-date-heading { order: 1; }
.planning-date-heading h2 { margin: 0; font-size: 18px; text-transform: none; }
.planning-controls .date-controls { display: contents; }
.planning-controls .date-navigation { order: 0; margin: 0; gap: var(--pt-space-1); width: auto; }
.planning-controls .date-picker { order: 2; flex: 0 0 auto; min-width: 0; margin: 0; }
.planning-controls .date-picker > div { gap: var(--pt-space-2); }
.planning-controls .date-picker input { width: 156px; min-height: 40px; margin: 0; padding: var(--pt-space-2); }
.planning-page .planning-controls .button, .planning-page .slot-action { min-height: 40px; width: auto; margin: 0; padding: var(--pt-space-2) var(--pt-space-3); border-radius: var(--pt-radius-control); font-size: var(--pt-font-help); line-height: 1.25; gap: var(--pt-space-1); }
.planning-controls .past-control { order: 3; margin: 0; gap: var(--pt-space-2); }
.planning-controls .past-control .check { min-height: 40px; font-size: var(--pt-font-help); }
.planning-controls .past-control input[type=checkbox] { width: 18px; height: 18px; }
.planning-page .planning-read-only, .planning-page .planning-neutral-note { display: inline-block; margin: var(--pt-space-2) var(--pt-space-3) var(--pt-space-2) 0; color: var(--pt-text-secondary); font-size: var(--pt-font-help); }
.planning-scroll { max-height: none; border-color: var(--pt-border); border-radius: var(--pt-radius-card); }
.planning-sticky-header { position: relative; top: auto; will-change: transform; background: var(--pt-surface); }
.planning-installation-bands { background: var(--pt-surface-secondary); border-color: var(--pt-border); }
.installation-band { padding: var(--pt-space-1) var(--pt-space-2); font-size: var(--pt-font-help); }
.terrain-header { padding: var(--pt-space-2); border-left: 1px solid var(--pt-border); }
.terrain-header h3 { margin: 0 0 var(--pt-space-1); font-size: var(--pt-font-body); }
.terrain-header .practice-badge { padding: 2px 5px; font-size: var(--pt-font-badge); }
.terrain-header .hint { display: inline; margin-left: var(--pt-space-1); color: var(--pt-text-secondary); font-size: var(--pt-font-badge); }
.planning-lane { background-color: var(--pt-page); border-color: var(--pt-border); background-image: linear-gradient(to bottom, var(--pt-border) 1px, transparent 1px); }
.planning-page .planning-slot { left: 4px; right: 4px; padding: 5px 7px; border-radius: var(--pt-radius-small); justify-content: start; gap: 2px; font-size: var(--pt-font-badge); line-height: 1.2; color: var(--pt-success); background: color-mix(in srgb, var(--pt-success-surface) 65%, var(--pt-surface)); border-color: color-mix(in srgb, var(--pt-success) 32%, var(--pt-border)); }
.planning-page .planning-slot:not(.slot-activity) { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: 15px 16px minmax(0, 1fr); align-items: start; column-gap: 4px; }
.planning-slot .slot-times { font-size: var(--pt-font-badge); line-height: 15px; color: var(--pt-text); grid-column: 1 / -1; }
.planning-slot .slot-summary { display: flex; gap: 4px; align-items: baseline; grid-column: 1 / -1; white-space: nowrap; }
.planning-slot .slot-status, .planning-slot .slot-players { font-size: 11px; line-height: 14px; }
.planning-slot .slot-participants { grid-column: 1; grid-row: 3; align-self: start; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--pt-text); font-size: 11px; }
.planning-slot .slot-participating { grid-column: 1; grid-row: 3; align-self: end; font-size: 11px; line-height: 14px; font-weight: 650; }
.planning-slot .slot-search { position: absolute; top: 5px; right: 6px; max-width: 92px; overflow: hidden; white-space: nowrap; font-size: 10px; line-height: 15px; color: var(--pt-warning); }
.planning-slot:not(.slot-activity) > form, .planning-slot:not(.slot-activity) > .slot-action { grid-column: 2; grid-row: 3; align-self: end; }
.planning-slot.slot-open { background: var(--pt-warning-surface); color: var(--pt-warning); border-color: color-mix(in srgb, var(--pt-warning) 30%, var(--pt-border)); }
.planning-slot.slot-full { background: var(--pt-danger-surface); color: var(--pt-danger); border-color: color-mix(in srgb, var(--pt-danger) 30%, var(--pt-border)); }
.planning-page .slot-activity { display: flex; color: var(--pt-text); border-color: var(--activity-color); border-left-width: 3px; background: color-mix(in srgb, var(--activity-color) 12%, var(--pt-surface)); }
.planning-slot .activity-slot-title { color: var(--pt-text); font-size: var(--pt-font-help); line-height: 16px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.planning-slot .activity-type { align-self: start; padding: 2px 5px; border-radius: var(--pt-radius-small); color: var(--pt-text); background: color-mix(in srgb, var(--activity-color) 22%, var(--pt-surface)); max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: 13px; }
.planning-slot .activity-responsible, .planning-slot .activity-slot-group { font-size: 11px; line-height: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--pt-text-secondary); }
.planning-slot.slot-activity > form { position: absolute; right: 6px; bottom: 5px; }
.planning-slot.slot-activity .slot-participating { margin-top: 2px; color: var(--pt-info); }
.planning-slot.slot-activity:has(> form) { padding-bottom: 47px; }
.planning-slot .activity-slot-details { order: 10; margin: 2px 0 0; font-size: 11px; line-height: 14px; max-height: 28px; -webkit-line-clamp: 2; flex: 1 1 auto; color: var(--pt-text-secondary); }
.planning-slot.activity-short .activity-responsible, .planning-slot.activity-short .activity-slot-group, .planning-slot.activity-short .activity-slot-details { display: none; }
.planning-slot.activity-short:has(> form) { padding-bottom: 5px; padding-right: 84px; }
.planning-slot.activity-short:has(> form) .slot-times, .planning-slot.activity-short:has(> form) .activity-slot-title { width: calc(100% + 77px); }
.planning-slot.period-tiny .activity-type, .planning-slot.period-tiny .slot-players, .planning-slot.period-tiny form { display: none; }
.planning-page .slot-past { background: var(--pt-page); border-color: var(--pt-border); color: var(--pt-text-secondary); }
@media (max-width: 760px) {
    .planning-page { overflow-x: clip; }
    .planning-page .main-column, .planning-page .workspace, .planning-page .planning-shell { min-width: 0; max-width: 100%; }
    .planning-page .planning-shell { overflow: hidden; }
    .planning-page .planning-controls { padding: var(--pt-space-3); gap: var(--pt-space-2); }
    .planning-date-heading { flex-basis: 100%; order: 0; }
    .planning-date-heading h2 { font-size: 17px; }
    .planning-controls .date-navigation { order: 1; }
    .planning-controls .date-picker { order: 2; }
    .planning-page .planning-controls .button, .planning-page .slot-action { min-height: 44px; }
    .planning-controls .past-control { flex-basis: 100%; }
    .mobile-terrain-picker { margin: var(--pt-space-3) 0; }
    .mobile-terrain-picker > div { gap: var(--pt-space-2); flex-wrap: wrap; }
    .mobile-terrain-picker select { flex-basis: 100%; min-height: 44px; font-size: var(--pt-font-help); padding: var(--pt-space-2); }
    .mobile-terrain-picker .button { min-height: 44px; padding: var(--pt-space-2) var(--pt-space-3); }
    .planning-page .planning-scroll { width: 100%; max-width: 100%; overflow-x: auto; overflow-y: hidden; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; touch-action: pan-x pan-y; }
    .planning-sticky-header { transform: none !important; }
    .terrain-header { padding: var(--pt-space-3); }
    .mobile-installation-name { margin: 4px 0; }
    .planning-page .planning-lane { background: none; padding: var(--pt-space-2); gap: var(--pt-space-2); }
    .planning-page .planning-slot { min-height: 88px; padding: var(--pt-space-2); }
    .planning-slot.slot-activity { min-height: 0; padding: var(--pt-space-3); }
    .planning-slot.slot-activity:has(> form) { padding-bottom: 60px; }
    .planning-slot.activity-short:has(> form) { padding-right: var(--pt-space-3); }
    .planning-slot.activity-short:has(> form) .slot-times, .planning-slot.activity-short:has(> form) .activity-slot-title { width: auto; }
    .planning-slot.activity-short .activity-responsible, .planning-slot.activity-short .activity-slot-group, .planning-slot.activity-short .activity-slot-details, .planning-slot.period-tiny .activity-type, .planning-slot.period-tiny .slot-players { display: block; }
    .planning-slot.period-tiny form { display: block; }
    .planning-slot .activity-slot-details { flex: 0 0 auto; }
}
.planning-page .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }

.planning-slot.activity-short { gap: 1px; padding-top: 4px; padding-bottom: 4px; }
.planning-slot.activity-short .activity-type { font-size: 10px; line-height: 12px; padding: 0 3px; }
.planning-slot.activity-short .activity-responsible { display: block; font-size: 10px; line-height: 12px; }
.planning-slot.activity-short .slot-players { font-size: 10px; line-height: 12px; }
@media (max-width: 760px) {
    .planning-page .planning-slot { position: relative; inset: auto !important; }
    .planning-slot.slot-activity > form { position: static; align-self: flex-end; }
    .planning-slot.slot-activity:has(> form) { padding-bottom: var(--pt-space-3); }
    .planning-slot.activity-short .activity-type { font-size: 12px; line-height: 16px; padding: 2px 5px; }
    .planning-slot.activity-short .activity-responsible, .planning-slot.activity-short .slot-players { font-size: 12px; line-height: 16px; }
    .planning-slot .activity-slot-title { font-size: 15px; line-height: 20px; }
}
@media (min-width: 761px) {
    .planning-slot.period-tiny { padding: 2px 4px; }
    .planning-slot.period-tiny .slot-times { font-size: 9px; line-height: 12px; }
    .planning-slot.period-tiny .activity-slot-title { position: absolute; top: 2px; left: 88px; right: 4px; font-size: 10px; line-height: 12px; width: auto !important; }
    .planning-slot.period-tiny .activity-responsible, .planning-slot.period-tiny .activity-slot-details { display: none; }
}
/* Ticket 025 header correction: scoped above the unchanged planning grid. */
.planning-page .planning-calendar-return { display: inline-flex; align-items: center; min-height: 28px; color: var(--pt-brand-dark); font-size: var(--pt-font-help); font-weight: 650; text-decoration: none; }
.planning-page .planning-calendar-return:hover { text-decoration: underline; }
.planning-page-header { display: grid; grid-template-columns: minmax(280px, 1fr) auto; align-items: start; gap: var(--pt-space-6); margin: var(--pt-space-3) 0 var(--pt-space-4); }
.planning-page .planning-page-header .page-heading { margin: 0; }
.planning-page-header .page-heading h1 { margin: 0 0 var(--pt-space-1); }
.planning-page-header .page-heading p { margin: 0; max-width: 470px; font-size: var(--pt-font-secondary); line-height: 1.45; }
.planning-page .planning-page-header .planning-controls { display: grid; grid-template-columns: auto auto; align-items: center; column-gap: var(--pt-space-3); row-gap: var(--pt-space-2); padding: 0; margin: 0; background: transparent; border: 0; border-radius: 0; box-shadow: none; }
.planning-page-header .planning-date-heading { grid-column: 1; grid-row: 1; order: initial; }
.planning-page-header .planning-date-heading h2 { font-size: 17px; white-space: nowrap; }
.planning-page-header .date-navigation { grid-column: 2; grid-row: 1; justify-self: end; }
.planning-page-header .date-picker { grid-column: 2; grid-row: 2; justify-self: end; }
.planning-page-header .past-control, .planning-page-header .past-day-note { grid-column: 1 / -1; grid-row: 3; justify-self: end; }
.planning-page-header .past-day-note { margin: 0; font-size: var(--pt-font-help); }
@media (max-width: 1100px) {
    .planning-page-header { grid-template-columns: 1fr; gap: var(--pt-space-3); }
    .planning-page .planning-page-header .planning-controls { justify-content: start; }
    .planning-page-header .past-control, .planning-page-header .past-day-note { justify-self: start; }
}
@media (max-width: 760px) {
    .planning-page-header { margin: var(--pt-space-2) 0 var(--pt-space-3); }
    .planning-page .planning-page-header .planning-controls { grid-template-columns: 1fr; }
    .planning-page-header .planning-date-heading { grid-column: 1; grid-row: 1; }
    .planning-page-header .planning-date-heading h2 { white-space: normal; }
    .planning-page-header .date-navigation { grid-column: 1; grid-row: 2; justify-self: start; }
    .planning-page-header .date-picker { grid-column: 1; grid-row: 3; justify-self: start; }
    .planning-page-header .past-control, .planning-page-header .past-day-note { grid-column: 1; grid-row: 4; }
}
/* Width follows the real container; small groups are capped and centered. */
.planning-shell { position: relative; }
.planning-horizontal-nav { position: absolute; top: var(--planning-navigation-top, 50%); transform: translateY(-50%); z-index: 4; width: 32px; min-height: 44px; padding: 0; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--pt-border); border-radius: var(--pt-radius-control); background: var(--pt-surface); color: var(--pt-brand-dark); box-shadow: var(--pt-shadow-card); font-size: 28px; cursor: pointer; }
.planning-horizontal-nav[hidden] { display: none; }
.planning-nav-previous { left: -16px; }
.planning-nav-next { right: -16px; }
.planning-horizontal-nav:disabled { opacity: .4; cursor: default; }
@media (min-width: 761px) {
    .planning-board { --terrain-min-width: 220px; --terrain-max-width: 360px; margin-inline: auto; }
}
@media (max-width: 760px) {
    .planning-horizontal-nav { display: none; }
}
/* Reservation sport identity; activity type colors remain independent. */
:root { --pt-tennis: #a6532f; --pt-tennis-surface: #fbede5; }
.reservation-sport-choice { margin: var(--pt-space-4) 0; padding: var(--pt-space-3); border: 1px solid var(--pt-border); border-radius: var(--pt-radius-control); }
.reservation-sport-choice legend { font-weight: 650; font-size: var(--pt-font-label); }
.reservation-sport-choice .day-chip { margin: var(--pt-space-1); }
.reservation-sport-choice .day-chip input { accent-color: var(--pt-brand); }
.planning-page .reservation-pickleball:not(.slot-past) { border-color: var(--pt-brand); border-left-width: 3px; background: var(--pt-surface-secondary); color: var(--pt-text); }
.planning-page .reservation-tennis:not(.slot-past) { border-color: var(--pt-tennis); border-left-width: 3px; background: var(--pt-tennis-surface); color: var(--pt-text); }
.planning-slot .slot-times { display: flex; justify-content: space-between; align-items: baseline; gap: 4px; }
.slot-time-range { white-space: nowrap; flex-shrink: 0; }
.slot-reservation-kind { font-size: 10px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.planning-slot.slot-open .slot-status { color: var(--pt-warning); }
.planning-slot.slot-full .slot-status { color: var(--pt-danger); }
.planning-slot .slot-status { border-radius: var(--pt-radius-small); }
.planning-slot.slot-full .slot-status { background: var(--pt-danger-surface); padding: 0 3px; }
.planning-slot.slot-open .slot-status { background: var(--pt-warning-surface); padding: 0 3px; }
.planning-slot.reservation-pickleball .slot-search, .planning-slot.reservation-tennis .slot-search { position: static; grid-column: 2; grid-row: 2; font-size: 9px; max-width: 80px; justify-self: end; }
.planning-slot:has(.slot-search) .slot-summary { grid-column: 1; }
.planning-slot:not(.slot-past) .slot-reservation-kind { color: var(--pt-brand-dark); }
.planning-slot.reservation-tennis:not(.slot-past) .slot-reservation-kind { color: var(--pt-tennis); }

/* Reservation game type and optional player-search message. */
.player-search-types { margin: var(--pt-space-4) 0; padding: 0; border: 0; }
.player-search-types legend { margin-bottom: var(--pt-space-2); font-weight: 700; text-transform: uppercase; color: var(--pt-text); }
.player-search-type-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--pt-space-2); }
.player-search-type { display: flex; align-items: start; gap: var(--pt-space-2); min-height: 72px; padding: var(--pt-space-3); border: 1px solid var(--pt-border); border-radius: var(--pt-radius-control); background: var(--pt-surface); cursor: pointer; }
.player-search-type:has(input:checked) { border-color: var(--pt-brand); background: var(--pt-info-surface); box-shadow: inset 0 0 0 1px var(--pt-brand); }
.player-search-type:focus-within { outline: 2px solid var(--pt-focus); outline-offset: 2px; }
.player-search-type input { margin-top: 2px; }
.player-search-type span, .player-search-type small { display: block; }
.player-search-type small { margin-top: 3px; color: var(--pt-text-secondary); line-height: 1.35; }
.player-search-summary { margin: var(--pt-space-3) 0; padding: var(--pt-space-3); border-left: 3px solid var(--pt-brand); background: var(--pt-info-surface); border-radius: 0 var(--pt-radius-small) var(--pt-radius-small) 0; }
.player-search-summary p { margin: 3px 0; }
.player-search-type-badge { display: inline-flex; padding: 3px 8px; border-radius: 999px; background: var(--pt-brand); color: white; font-size: var(--pt-font-badge); font-weight: 750; }
.game-type-summary { display: flex; align-items: center; flex-wrap: wrap; gap: var(--pt-space-2); margin: var(--pt-space-2) 0; color: var(--pt-text-secondary); font-size: var(--pt-font-help); }
.player-search-message { white-space: pre-line; color: var(--pt-text); font-style: italic; }
.planning-slot .slot-game-details { grid-column: 1 / -1; grid-row: 3; align-self: start; min-width: 0; display: grid; gap: 1px; }
.planning-slot .slot-game-type { width: fit-content; max-width: 100%; padding: 2px 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; border-radius: 999px; background: var(--pt-brand); color: white; font-size: 9px; line-height: 14px; font-weight: 750; }
.planning-slot:has(.slot-game-details) .slot-participants { display: none; }
.planning-slot .slot-search-message { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--pt-text-secondary); font-size: 10px; }
@media (max-width: 760px) {
    .player-search-type-grid { grid-template-columns: minmax(0, 1fr); }
    .player-search-type { min-height: 64px; }
    .planning-slot .slot-game-details { grid-column: 1; }
    .planning-slot .slot-search-message { white-space: normal; }
}

/* Compact player-search action form. */
.player-search-page { max-width: 560px; padding: var(--pt-space-4); }
.player-search-page > .eyebrow { display: block; margin-bottom: var(--pt-space-1); }
.player-search-page > h1 { margin: 0 0 var(--pt-space-3); font-size: 22px; line-height: 1.25; letter-spacing: -.25px; }
.player-search-session { display: grid; gap: 2px; margin-bottom: var(--pt-space-3); }
.player-search-session h2 { margin: 0 0 2px; font-size: 17px; line-height: 1.3; }
.player-search-session p { margin: 0; font-size: var(--pt-font-secondary); line-height: 1.45; }
.player-search-page .player-search-summary { display: grid; justify-items: start; gap: var(--pt-space-1); margin: var(--pt-space-3) 0; padding: var(--pt-space-2) var(--pt-space-3); }
.player-search-page .player-search-summary .field-label { font-size: var(--pt-font-badge); }
.player-search-page .player-search-summary p { margin: 0; font-size: var(--pt-font-help); }
.player-search-page .field { margin: var(--pt-space-3) 0; }
.player-search-page textarea { min-height: 76px; }
.player-search-page .field > .hint { margin: var(--pt-space-1) 0 0; }
.player-search-page .form-actions { margin-top: var(--pt-space-3); }
@media (max-width: 760px) {
    .player-search-page { padding: var(--pt-space-4); }
    .player-search-page > h1 { font-size: 20px; }
    .player-search-session h2 { font-size: 16px; }
}

/* Account uses the shared PlayTime system without altering other forms. */
.account-page .workspace { max-width: 1280px; margin: var(--pt-space-6) auto; }
.account-page .page-heading { margin-bottom: var(--pt-space-5); }
.account-page .account-grid { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(300px, 1fr); gap: var(--pt-space-5); align-items: start; }
.account-page .account-main, .account-page .account-secondary { display: grid; gap: var(--pt-space-4); min-width: 0; margin: 0; }
.account-page .account-secondary { grid-row: auto; position: static; }
.account-page .account-card, .account-page .account-grid aside .card { padding: var(--pt-space-5); margin: 0; border: 1px solid var(--pt-border); border-radius: var(--pt-radius-card); background: var(--pt-surface); box-shadow: var(--pt-shadow-card); }
.account-page h2, .account-page .account-sports legend { margin: 0 0 var(--pt-space-2); font-size: var(--pt-font-section); font-weight: 700; color: var(--pt-text); }
.account-page .muted, .account-page .hint { color: var(--pt-text-secondary); }
.account-page .hint { font-size: var(--pt-font-help); line-height: 1.5; margin: var(--pt-space-2) 0 0; }
.account-page .account-card > .muted { margin: 0 0 var(--pt-space-3); font-size: var(--pt-font-help); }
.account-page .field { margin: var(--pt-space-3) 0; }
.account-page .grid.two { gap: var(--pt-space-3); }
.account-page .grid.two .field { margin-bottom: 0; }
.account-page input:not([type="checkbox"]):not([type="hidden"]) { min-height: 44px; padding: var(--pt-space-2) var(--pt-space-3); border-radius: var(--pt-radius-control); font-size: var(--pt-font-body); }
.account-page .button { min-height: 44px; padding: var(--pt-space-2) var(--pt-space-4); }
.account-page .account-email-status { display: flex; flex-wrap: wrap; align-items: center; gap: var(--pt-space-2); }
.account-page .account-email-toggle { position: relative; display: flex; align-items: center; justify-content: space-between; gap: var(--pt-space-4); min-height: 44px; margin: 0; cursor: pointer; font-size: var(--pt-font-body); }
.account-page .account-email-toggle input, .account-page .account-sport-option input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.account-page .account-switch { flex: 0 0 44px; height: 26px; padding: 3px; border-radius: 20px; background: var(--pt-disabled); transition: background .15s; }
.account-page .account-switch::before { content: ''; display: block; height: 20px; width: 20px; border-radius: 50%; background: var(--pt-surface); transition: transform .15s; }
.account-page .account-email-toggle input:checked + .account-switch { background: var(--pt-brand); }
.account-page .account-email-toggle input:checked + .account-switch::before { transform: translateX(18px); }
.account-page .account-email-toggle input:focus-visible + .account-switch { outline: 2px solid var(--pt-focus); outline-offset: 3px; }
.account-page .account-sports { padding: 0; border: 0; margin: 0; min-width: 0; }
.account-page .account-sport-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--pt-space-3); }
.account-page .account-sport-option { position: relative; display: flex; align-items: center; gap: var(--pt-space-3); min-height: 64px; margin: 0; padding: var(--pt-space-3); border: 1px solid var(--pt-border); border-radius: var(--pt-radius-control); color: var(--pt-text); cursor: pointer; }
.account-page .account-sport-option .sport-icon { width: 36px; height: 36px; flex-shrink: 0; color: var(--pt-brand); }
.account-page .account-sport-check { margin-left: auto; visibility: hidden; color: var(--pt-brand); }
.account-page .account-sport-option:has(input:checked) { background: var(--pt-surface-secondary); border-color: var(--pt-brand); }
.account-page .account-sport-option:has(input:checked) .account-sport-check { visibility: visible; }
.account-page .account-sport-option:has(input:focus-visible) { outline: 2px solid var(--pt-focus); outline-offset: 3px; }
.account-page .account-confirm .field { margin-top: 0; }
.account-page .account-profile { display: flex; align-items: start; gap: var(--pt-space-3); }
.account-page .avatar { display: flex; align-items: center; justify-content: center; flex: 0 0 48px; width: 48px; height: 48px; background: var(--pt-surface-secondary); color: var(--pt-brand-dark); border-radius: var(--pt-radius-control); font-size: 18px; font-weight: 700; margin: 0; }
.account-page .account-profile-identity { min-width: 0; overflow-wrap: anywhere; }
.account-page .account-profile h2 { font-size: var(--pt-font-section); }
.account-page .badges { display: flex; flex-wrap: wrap; gap: var(--pt-space-1); }
.account-page .badge { font-size: var(--pt-font-badge); }
.account-page .password-card .button { margin-top: var(--pt-space-1); width: 100%; }
@media (max-width: 1050px) { .account-page .account-grid { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 600px) {
    .account-page .account-card, .account-page .account-grid aside .card { padding: var(--pt-space-4); }
    .account-page .account-grid { gap: var(--pt-space-4); }
    .account-page .account-sport-option { gap: var(--pt-space-2); padding: var(--pt-space-2); font-size: var(--pt-font-help); }
    .account-page .account-sport-option .sport-icon { width: 32px; height: 32px; }
    .account-page .account-confirm .button { width: 100%; }
}
@media (prefers-reduced-motion: reduce) { .account-page .account-switch, .account-page .account-switch::before { transition: none; } }

/* Coach screens reuse PlayTime tokens and controls. */
.coach-page .workspace { max-width: 1280px; margin: var(--pt-space-6) auto; }
.coach-page .page-heading { margin-bottom: var(--pt-space-5); }
.coach-page .page-heading h1 { margin-bottom: var(--pt-space-2); }
.coach-page .page-heading .muted { font-size: var(--pt-font-secondary); margin: 0 0 var(--pt-space-2); }
.coach-page .heading-actions { display: flex; align-items: start; gap: var(--pt-space-4); }
.coach-page .heading-actions > div { flex: 1; min-width: 0; }
.coach-section-heading { display: flex; justify-content: space-between; align-items: center; gap: var(--pt-space-3); margin-bottom: var(--pt-space-4); }
.coach-section-heading h2 { margin: 0; }
.coach-card-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--pt-space-4); align-items: start; }
.coach-card-grid > .card { margin: 0; padding: var(--pt-space-4); min-width: 0; }
.coach-training-card { border-left: 4px solid var(--activity-color); }
.coach-card-top { display: flex; align-items: start; gap: var(--pt-space-3); }
.coach-card-top > div:first-child { flex: 1; min-width: 0; }
.coach-card-top h2 { font-size: var(--pt-font-card); margin: var(--pt-space-2) 0 var(--pt-space-3); overflow-wrap: anywhere; }
.coach-card-top > h2 { flex: 1; min-width: 0; margin-top: 0; }
.coach-sport-art { display: flex; flex-wrap: wrap; justify-content: end; gap: var(--pt-space-1); color: var(--activity-color); max-width: 108px; flex-shrink: 0; }
.coach-sport-art .sport-icon { width: 48px; height: 48px; flex-basis: 48px; color: var(--activity-color); }
.coach-training-card .activity-type-badge { color: var(--pt-text); background: color-mix(in srgb, var(--activity-color) 18%, white); border-color: color-mix(in srgb, var(--activity-color) 40%, white); }
.coach-card-facts { display: grid; grid-template-columns: 1fr; gap: var(--pt-space-3); }
.coach-card-facts > div { display: flex; align-items: start; gap: var(--pt-space-2); }
.coach-card-facts .ui-icon { flex-shrink: 0; width: 18px; height: 18px; color: var(--pt-text-secondary); margin-top: 2px; }
.coach-card-facts p { margin: 0; font-size: var(--pt-font-secondary); overflow-wrap: anywhere; }
.coach-card-facts .session-time { font-size: var(--pt-font-body); font-weight: 700; }
.coach-card-facts .coach-sports-label { color: var(--pt-text-secondary); font-size: var(--pt-font-help); margin-top: var(--pt-space-1); }
.coach-card-footer { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: var(--pt-space-2); margin-top: var(--pt-space-4); font-size: var(--pt-font-secondary); }
.coach-page .button.compact { padding: var(--pt-space-2) var(--pt-space-3); min-height: 40px; }
.coach-card-grid .hint { color: var(--pt-text-secondary); font-size: var(--pt-font-help); margin: var(--pt-space-2) 0; }
.coach-empty { max-width: 560px; padding: var(--pt-space-5); border: 1px dashed var(--pt-border); border-radius: var(--pt-radius-card); background: var(--pt-surface); grid-column: 1 / -1; }
.coach-empty > .ui-icon { width: 28px; height: 28px; color: var(--pt-brand); }
.coach-empty h2 { font-size: var(--pt-font-card); margin: var(--pt-space-3) 0 var(--pt-space-2); }
.coach-empty p { margin: 0 0 var(--pt-space-4); font-size: var(--pt-font-secondary); color: var(--pt-text-secondary); }
.coach-message-card > p, .coach-group-card > p { font-size: var(--pt-font-secondary); margin: var(--pt-space-2) 0; }
.coach-message-card .coach-card-top > .ui-icon, .coach-group-card .coach-card-top > .ui-icon { flex-shrink: 0; color: var(--pt-brand); width: 22px; height: 22px; }
.coach-message-card .button { margin-top: var(--pt-space-3); }
.coach-group-actions { display: flex; align-items: center; flex-wrap: wrap; gap: var(--pt-space-2); margin-top: var(--pt-space-4); }
.coach-page .business-form .field { margin: var(--pt-space-3) 0; }
.coach-page .business-form .card { margin: var(--pt-space-4) 0; }
@media (max-width: 1050px) { .coach-card-grid { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 600px) {
    .coach-page .heading-actions, .coach-section-heading { flex-direction: column; align-items: start; }
    .coach-page .heading-actions > .button { width: 100%; }
    .coach-sport-art .sport-icon { width: 34px; height: 34px; flex-basis: 34px; }
    .coach-sport-art { max-width: 76px; }
    .coach-page .button.compact { min-height: 44px; }
}

/* Compact training summaries; other coach cards retain their existing layout. */
.coach-dashboard-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.coach-card-grid:has(.coach-training-card) { gap: 12px; }
.coach-card-grid > .coach-training-card { padding: 10px 12px; }
.coach-training-card .coach-card-top { position: relative; padding-right: 48px; min-height: 42px; }
.coach-training-card .coach-card-top h2 { font-size: 17px; margin: 3px 0 6px; }
.coach-training-card .coach-sport-art { position: absolute; right: 0; top: 0; }
.coach-training-card .coach-sport-art .sport-icon { width: 40px; height: 40px; flex-basis: 40px; }
.coach-training-card .activity-type-badge { font-size: 11px; padding: 2px 7px; }
.coach-training-card .coach-card-facts { gap: 4px; }
.coach-training-card .coach-card-facts p { font-size: 12px; }
.coach-training-card .coach-inline-facts { display: flex; align-items: baseline; flex-wrap: wrap; column-gap: 8px; row-gap: 2px; }
.coach-training-card .coach-card-facts .coach-sports-label { margin: 0; }
.coach-training-card .coach-card-facts .ui-icon { width: 15px; height: 15px; }
.coach-training-card .coach-card-footer { margin-top: 6px; font-size: 12px; }
.coach-training-card .hint { margin: 3px 0; font-size: 12px; }
.coach-page .coach-training-card .button.compact { min-height: 32px; padding: 5px 9px; font-size: 12px; }
@media (max-width: 1350px) { .coach-dashboard-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 1050px) { .coach-dashboard-grid { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 600px) {
    .coach-page .coach-training-card .button.compact { min-height: 44px; }
    .coach-training-card .coach-sport-art .sport-icon { width: 34px; height: 34px; flex-basis: 34px; }
}


/* Shared compact administration layout using the existing PlayTime tokens. */
.committee-page .workspace { max-width: 1280px; margin: var(--pt-space-6) auto; }
.committee-page .page-heading { margin-bottom: var(--pt-space-4); }
.committee-page .page-heading h1 { margin-bottom: var(--pt-space-2); }
.committee-page .page-heading p { font-size: var(--pt-font-secondary); margin: 0; color: var(--pt-text-secondary); }
.committee-page .heading-actions { display: flex; align-items: start; justify-content: space-between; gap: var(--pt-space-4); }
.committee-page .heading-actions > div:first-child { min-width: 0; }
.committee-page .action-group { display: flex; align-items: center; flex-wrap: wrap; gap: var(--pt-space-2); }
.committee-page .card { margin: var(--pt-space-3) 0; padding: var(--pt-space-4); }
.committee-page .card h2 { font-size: var(--pt-font-card); margin: 0 0 var(--pt-space-3); }
.committee-page .button.compact { min-height: 40px; padding: 7px 11px; font-size: var(--pt-font-help); }
.committee-page .business-form { max-width: 1000px; }
.committee-page .business-form .field { margin: var(--pt-space-2) 0; min-width: 0; }
.committee-page .business-form .grid { gap: var(--pt-space-4); }
.committee-page .grid.three { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.committee-page .switch-field { align-self: end; }
.committee-page .hint { font-size: var(--pt-font-help); color: var(--pt-text-secondary); }
.committee-page .business-form textarea { min-height: 90px; }
.committee-page .form-actions { margin-top: var(--pt-space-3); gap: var(--pt-space-2); }
.summary-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: var(--pt-space-4); margin-bottom: var(--pt-space-3); }
.committee-summary-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.committee-page .coach-card-grid > .card { margin: 0; }
.committee-page .coach-card-grid > .coach-training-card { padding: 10px 12px; }
.committee-page .coach-training-card .coach-card-top h2 { margin: 3px 0 6px; font-size: 17px; }
.committee-page .coach-training-card .button.compact { min-height: 32px; padding: 5px 9px; font-size: 12px; }
.committee-page .member-search { display: grid; grid-template-columns: minmax(0, 1fr) 210px auto; gap: var(--pt-space-3); margin: 0 0 var(--pt-space-4); }
.committee-page .member-search select { width: 100%; }
.member-search-actions { display: flex; align-items: center; gap: var(--pt-space-2); }
.compact-member-list { display: grid; gap: 4px; }
.compact-member-header, .committee-page .compact-member-row { display: grid; grid-template-columns: minmax(180px, 1.1fr) minmax(220px, 1.5fr) minmax(180px, 1fr) auto; align-items: center; gap: var(--pt-space-3); }
.compact-member-header { padding: 0 14px 6px; color: var(--pt-text-secondary); font-size: var(--pt-font-help); font-weight: 700; }
.compact-member-header a { color: inherit; text-decoration: none; }
.compact-member-header a:hover { color: var(--pt-brand); text-decoration: underline; }
.committee-page .compact-member-row { margin: 0; padding: 7px 14px; }
.compact-member-row p { margin: 2px 0; font-size: var(--pt-font-help); color: var(--pt-text-secondary); }
.compact-member-row :is(.member-identity, .member-email) { min-width: 0; overflow-wrap: anywhere; }
.compact-member-row .member-identity { display: grid; gap: 2px; }
.compact-member-row small { font-size: 12px; }
.committee-page .membership-filters { grid-template-columns: repeat(3, minmax(150px, 1fr)) auto; }
.compact-membership-list { display: grid; gap: 4px; }
.compact-membership-header, .committee-page .compact-membership-row { display: grid; grid-template-columns: minmax(240px, 2fr) minmax(90px, .75fr) minmax(105px, .9fr) minmax(100px, .9fr) minmax(90px, .8fr) minmax(92px, .75fr) auto; align-items: center; gap: 10px 16px; }
.compact-membership-header { padding: 0 14px 6px; color: var(--pt-text-secondary); font-size: var(--pt-font-help); font-weight: 700; }
.committee-page .compact-membership-row { margin: 0; padding: 8px 14px; min-height: 0; }
.compact-membership-row > :not(.membership-identity, .button) { font-size: var(--pt-font-help); color: var(--pt-text-secondary); }
.compact-membership-row .membership-identity { display: grid; min-width: 0; gap: 2px; overflow-wrap: anywhere; }
.compact-membership-row .membership-identity span { line-height: 1.25; }
.compact-membership-row .membership-identity small { color: var(--pt-text-secondary); font-size: 12px; font-weight: 500; }
.compact-membership-row .membership-status { justify-self: start; white-space: nowrap; }
.compact-membership-row .button { white-space: nowrap; }
.committee-page .compact-resource-grid { gap: var(--pt-space-3); grid-template-columns: repeat(3, minmax(0, 1fr)); }
.committee-page .compact-resource-grid .card { margin: 0; min-height: 0; padding: var(--pt-space-3); }
.resource-heading { display: flex; align-items: start; gap: var(--pt-space-2); }
.resource-heading h2 { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.resource-heading > .ui-icon { flex-shrink: 0; width: 20px; height: 20px; color: var(--pt-brand); }
.committee-page .installation-card p { margin: var(--pt-space-2) 0; font-size: var(--pt-font-help); }
.resource-footer { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: var(--pt-space-2); margin-top: var(--pt-space-3); }
.committee-page .installation-details .detail-list { display: grid; grid-template-columns: 1fr 2fr auto; gap: var(--pt-space-4); margin: 0; }
.committee-page .detail-list > div { display: block; padding: 0; border: 0; min-width: 0; }
.committee-page .detail-list dt { font-size: 12px; color: var(--pt-text-secondary); }
.committee-page .detail-list dd { margin: 2px 0 0; overflow-wrap: anywhere; font-size: var(--pt-font-secondary); }
.committee-page .terrain-card h3 { margin: 6px 0; font-size: 17px; }
.committee-page .terrain-metrics { gap: var(--pt-space-2); font-size: var(--pt-font-help); }
.committee-page .terrain-card .hint { margin: 6px 0; }
.committee-page .terrain-settings { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--pt-space-4); }
.committee-page .hours-display { gap: var(--pt-space-2); }
.committee-page .day-display { padding: 8px 12px; }
.committee-page .reservation-sport-choice { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--pt-space-3); padding: var(--pt-space-3); }
.committee-page .reservation-sport-choice > [data-reservation-sport] { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--pt-space-3); align-items: center; min-width: 0; }
.committee-page .reservation-sport-choice .day-chip { padding: 8px 10px; margin: 0; }
.committee-page .reservation-sport-choice .field { margin: 0; }
.committee-page .compact-hours-editor { gap: 5px; margin-top: 12px; }
.committee-page .compact-hours-editor .day-editor { position: relative; grid-template-columns: 120px minmax(0, 1fr); padding: 6px 12px 6px 135px; gap: 12px; border-radius: var(--pt-radius-control); }
.committee-page .compact-hours-editor legend { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); padding: 0; font-size: 13px; }
.committee-page .compact-hours-editor label { font-size: 11px; margin-bottom: 2px; }
.committee-page .compact-hours-editor :is(input[type=time], select) { min-height: 36px; padding: 5px 8px; }
.committee-page .compact-hours-editor .day-times { gap: 12px; }
.committee-page .bulk-hours { padding: var(--pt-space-3); margin: 12px 0; }
.committee-page .bulk-hours > p { margin: 3px 0 8px; }
.committee-page .bulk-hours .day-chips { display: inline-flex; flex-wrap: wrap; gap: 6px; margin: 6px 0; }
.committee-page .bulk-hours .day-chip { padding: 6px 8px; font-size: 12px; }
.committee-page .bulk-hours-fields { gap: 12px; margin: 4px 0; }
.committee-page .bulk-hours-fields .field { margin: 0; }
.committee-page .bulk-hours [data-bulk-feedback]:empty { margin: 0; }
@media (max-width: 1350px) {
    .committee-summary-grid, .committee-page .compact-resource-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 1050px) {
    .compact-member-header { display: none; }
    .committee-page .compact-member-row { grid-template-columns: minmax(0, 1fr) auto; gap: 6px 12px; padding: 10px 12px; }
    .compact-member-row .member-email, .compact-member-row .badges { grid-column: 1; }
    .compact-member-row > .button { grid-column: 2; grid-row: 1 / 4; }
    .committee-page .membership-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .compact-membership-header { display: none; }
    .committee-page .compact-membership-row { grid-template-columns: minmax(220px, 1.5fr) repeat(3, minmax(90px, .7fr)) auto; padding: 10px 12px; }
    .compact-membership-row .membership-identity { grid-column: 1; grid-row: 1 / 3; }
    .compact-membership-row :is(.membership-season, .membership-status, .membership-payment) { grid-row: 1; }
    .compact-membership-row :is(.membership-fft, .membership-date) { grid-row: 2; }
    .compact-membership-row > .button { grid-column: 5; grid-row: 1 / 3; }
    .committee-page .installation-details .detail-list { grid-template-columns: 1fr; gap: 8px; }
    .committee-page .reservation-sport-choice > [data-reservation-sport] { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
    .committee-summary-grid, .committee-page .compact-resource-grid { grid-template-columns: minmax(0, 1fr); }
    .committee-page .heading-actions { flex-direction: column; }
    .committee-page .member-search { grid-template-columns: minmax(0, 1fr); }
    .member-search-actions { flex-wrap: wrap; }
    .committee-page .grid.three, .committee-page .terrain-settings { grid-template-columns: minmax(0, 1fr); }
    .committee-page .compact-hours-editor .day-editor { padding: 12px; grid-template-columns: 1fr; gap: 8px; }
    .committee-page .compact-hours-editor legend { position: static; transform: none; padding: 0 4px; }
    .committee-page .compact-hours-editor :is(input[type=time], select) { min-height: 44px; }
    .committee-page .reservation-sport-choice { grid-template-columns: minmax(0, 1fr); }
    .committee-page .reservation-sport-choice > [data-reservation-sport] { grid-template-columns: auto minmax(0, 1fr); }
    .committee-page .button.compact, .committee-page .coach-training-card .button.compact { min-height: 44px; }
    .committee-page .action-group { width: 100%; }
    .committee-page .action-group .button { flex: 1; }
    .committee-page .compact-membership-row { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 14px; padding: 14px; }
    .compact-membership-row .membership-identity { grid-column: 1 / -1; grid-row: auto; }
    .compact-membership-row :is(.membership-season, .membership-status, .membership-payment, .membership-fft, .membership-date) { grid-row: auto; }
    .compact-membership-row [data-label]::before { content: attr(data-label) " : "; color: var(--pt-text-secondary); font-weight: 700; }
    .compact-membership-row > .button { grid-column: 1 / -1; grid-row: auto; justify-self: start; margin-top: 2px; }
}
@media (max-width: 460px) {
    .committee-page .compact-member-row { grid-template-columns: minmax(0, 1fr); }
    .compact-member-row > .button { grid-column: 1; grid-row: auto; justify-self: start; }
    .committee-page .compact-membership-row { grid-template-columns: minmax(0, 1fr); }
    .compact-membership-row .membership-identity, .compact-membership-row > .button { grid-column: 1; }
}
.committee-page .business-form .hours-section .compact-hours-editor .day-editor .day-times input[type=time] { min-height: 36px; padding: 5px 8px; }
@media (max-width: 760px) {
    .committee-page .business-form .hours-section .compact-hours-editor .day-editor .day-times input[type=time] { min-height: 44px; padding: 8px; }
}
.committee-page .club-reservation-settings .field { display: grid; grid-template-columns: minmax(0, 1fr) 100px; align-items: center; gap: 12px; }
.committee-page .club-reservation-settings #member_reservation_limit { width: 100%; }

/* Technical administration keeps configuration dense and separate from Committee workflows. */
.administration-page .workspace { max-width: 1180px; margin: var(--pt-space-6) auto; }
.administration-page .page-heading { margin-bottom: var(--pt-space-4); }
.administration-page .page-heading h1 { margin-bottom: var(--pt-space-2); }
.administration-page .page-heading p { margin: 0; font-size: var(--pt-font-secondary); }
.administration-page .card { margin: var(--pt-space-3) 0; padding: var(--pt-space-4); }
.administration-page .card h2 { margin: 0; font-size: var(--pt-font-card); }
.settings-section-heading { display: flex; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; gap: var(--pt-space-3); }
.settings-section-heading .hint { margin: var(--pt-space-1) 0 0; }
.settings-statuses { display: flex; flex-wrap: wrap; gap: var(--pt-space-1); }
.payment-method-list { display: grid; gap: 4px; margin-top: var(--pt-space-3); }
.payment-method-row { border: 1px solid var(--pt-border); border-radius: var(--pt-radius-control); background: var(--pt-surface); }
.payment-method-row > summary { display: grid; grid-template-columns: minmax(180px, 1fr) auto minmax(80px, auto) auto; align-items: center; gap: var(--pt-space-3); min-height: 48px; padding: 7px 12px; cursor: pointer; list-style-position: inside; }
.payment-method-row > summary::marker { color: var(--pt-brand); }
.payment-method-row > summary .button { pointer-events: none; }
.payment-method-order { color: var(--pt-text-secondary); font-size: var(--pt-font-help); }
.payment-method-form { padding: 0 var(--pt-space-4) var(--pt-space-4); border-top: 1px solid var(--pt-border); }
.administration-page .business-form .field { margin: var(--pt-space-2) 0; }
.administration-page .business-form textarea { min-height: 76px; }
.payment-instructions { grid-column: 1 / -1; }
.add-payment-method, .provider-configuration { margin-top: var(--pt-space-3); }
.add-payment-method > summary, .provider-configuration > summary { width: fit-content; min-height: 40px; padding: 7px 0; cursor: pointer; color: var(--pt-brand); font-weight: 700; }
.provider-test-action { margin-top: var(--pt-space-3); }
@media (max-width: 760px) {
    .administration-page .grid.two { grid-template-columns: minmax(0, 1fr); }
    .payment-method-row > summary { grid-template-columns: minmax(0, 1fr) auto; gap: 6px 10px; }
    .payment-method-row > summary .payment-method-order { grid-column: 1; }
    .payment-method-row > summary .button { grid-column: 2; grid-row: 1 / 3; }
}
@media (max-width: 460px) {
    .payment-method-row > summary { grid-template-columns: minmax(0, 1fr); padding: 10px 12px; }
    .payment-method-row > summary .button { grid-column: 1; grid-row: auto; justify-self: start; }
}
.committee-page .club-reservation-settings .hint { margin-bottom: 0; }
@media (max-width: 760px) {
    .committee-page .club-reservation-settings .field { grid-template-columns: minmax(0, 1fr); }
    .committee-page .club-reservation-settings #member_reservation_limit { width: 100px; }
}
.committee-page .terrain-card .resource-heading h3 { flex: 1; margin: 0 0 6px; }
.committee-page .terrain-card .terrain-metrics { margin-top: 8px; }
.committee-page .terrain-card .terrain-metrics strong { font-size: 14px; }
.single-sport-choice { display: flex; flex-wrap: wrap; gap: 10px; }
.committee-page .single-sport-choice { display: flex; grid-template-columns: none; }
.single-sport-choice input[type=radio] { accent-color: var(--pt-brand); }
.membership-price-summary { display: grid; gap: var(--pt-space-2); }
.membership-price-summary > div { display: flex; justify-content: space-between; gap: var(--pt-space-3); }
.membership-price-summary > div[hidden] { display: none; }
.membership-price-summary .membership-price-total { padding-top: var(--pt-space-2); border-top: 1px solid var(--pt-border); font-size: var(--pt-font-card); }

.fft-choice:not(:has(input[value='already_licensed']:checked)) .fft-number { display: none; }

/* Agenda: explicit List/Month modes reuse the existing data and responsive defaults. */
.calendar-view-switch { display: flex; justify-content: flex-start; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.calendar-view-switch a { min-height: 44px; }
.calendar-view-switch a[aria-current="true"] { background: var(--pt-brand); color: white; border-color: var(--pt-brand); }
.playtime-calendar { min-width: 0; }
.playtime-calendar[data-calendar-view="list"] > .calendar-desktop,
.playtime-calendar[data-calendar-view="month"] > .calendar-mobile { display: none; }
.playtime-calendar[data-calendar-view="month"] > .calendar-desktop,
.playtime-calendar[data-calendar-view="list"] > .calendar-mobile { display: block; }
.playtime-calendar[data-calendar-view="list"] .calendar-mobile [data-past-date] { display: none; }
.playtime-calendar[data-calendar-view="list"] .calendar-mobile.show-past [data-past-date] { display: block; }
.calendar-more-mobile, .calendar-more-mobile-only { display: none; }
.calendar-day-dialog { width: min(36rem, calc(100% - 32px)); max-width: calc(100% - 32px); max-height: 85dvh; overflow-y: auto; box-sizing: border-box; padding: 20px; border: 1px solid var(--pt-border); border-radius: var(--pt-radius-control); color: var(--pt-text); }
.calendar-day-dialog::backdrop { background: rgb(0 0 0 / 35%); }
.calendar-dialog-header { display: flex; align-items: start; justify-content: space-between; gap: 12px; }
.calendar-dialog-header h2 { margin: 0; font-size: 1.1rem; }
.calendar-dialog-header button { min-height: 44px; flex-shrink: 0; }
.calendar-day-dialog h3, .calendar-selected-day h3 { overflow-wrap: anywhere; }
.calendar-page :is(.calendar-day-dialog, .calendar-selected-day) .calendar-event { padding: 10px; }
.calendar-page :is(.calendar-day-dialog, .calendar-selected-day) .calendar-event span { display: block; overflow: visible; -webkit-line-clamp: unset; white-space: normal; }
.calendar-page :is(.calendar-day-dialog, .calendar-selected-day) .calendar-event small { white-space: normal; }
.calendar-grid .calendar-more { min-height: 28px; display: inline-flex; align-items: center; max-width: 100%; }
.calendar-grid .calendar-more-mobile-only { display: none; }
.calendar-weekdays abbr { text-decoration: none; }
.calendar-weekday-short { display: none; }
@media (max-width: 760px) {
    .calendar-weekday-long { display: none; }
    .calendar-weekday-short { display: inline; }
    .calendar-page .calendar-grid .calendar-day { padding: 3px 2px; min-height: 110px; }
    .calendar-page .calendar-grid .calendar-day-number { width: 28px; height: 28px; }
    .calendar-page .calendar-grid .calendar-event { padding: 5px 2px; margin: 3px 0; border-left-width: 2px; min-width: 0; font-size: .68rem; line-height: 1.3; }
    .calendar-page .calendar-grid .calendar-event span { display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
    .calendar-page .calendar-grid .calendar-event :is(time, small),
    .calendar-page .calendar-grid .calendar-grid-extra { display: none; }
    .calendar-grid .calendar-more { display: flex; min-height: 28px; margin: 0; font-size: .6rem; overflow-wrap: anywhere; line-height: 1.2; }
    .calendar-more-desktop { display: none; }
    .calendar-more-mobile { display: inline; }
    .calendar-page .calendar-weekdays { font-size: .65rem; }
    .calendar-day-dialog { padding: 14px; }
}

/* Square mobile month cells. Desktop grid and list keep their existing dimensions. */
.calendar-grid .calendar-event[hidden], .calendar-grid .calendar-more[hidden] { display: none !important; }
@media (max-width: 760px) {
    .calendar-page .calendar-grid { align-items: start; }
    .calendar-page .calendar-grid .calendar-day { aspect-ratio: 1 / 1; width: 100%; min-height: 0; box-sizing: border-box; padding: 2px; overflow: hidden; }
    .calendar-page .calendar-grid .calendar-day-number { width: 14px; height: 12px; margin: 0; font-size: .6rem; line-height: 12px; }
    .calendar-page .calendar-grid .calendar-event { padding: 0 1px; margin: 1px 0; font-size: .5625rem; line-height: 10px; }
    .calendar-page .calendar-grid .calendar-event span { line-height: 10px; }
    .calendar-page .calendar-grid .calendar-more { min-height: 10px; height: 10px; margin: 0; font-size: .5625rem; line-height: 10px; white-space: nowrap; }
    .calendar-page .calendar-grid .calendar-day:not([data-calendar-sized]) > .calendar-event:nth-child(n+3) { display: none; }
    .calendar-page .calendar-grid .calendar-day[data-calendar-sized] > .calendar-event:not([hidden]) { display: block; }
}

/* Month interactions: day background and activity links have separate hit areas. */
.calendar-grid[data-calendar-interactions] .calendar-day-number::after { content: none; }
.calendar-grid a { touch-action: manipulation; }

/* Stable shell shared by Mon Espace and Comité. */
.connected .header { min-height: 82px; padding-top: 12px; padding-bottom: 12px; }
.connected .app-frame { width: min(100%, 1500px); }
.connected .app-frame:not(.without-sidebar) { grid-template-columns: 230px minmax(0, 1fr); }
.connected .desktop-navigation { width: 230px; min-height: calc(100vh - 82px); padding: 32px 18px; }
:is(.personal-page, .committee-page) .workspace { width: 100%; max-width: 1280px; margin: 32px auto; padding: 0 32px; }
:is(.personal-page, .committee-page) .page-heading { margin: 0 0 20px; }
:is(.personal-page, .committee-page) .page-heading .eyebrow { display: block; margin: 0 0 8px; }
:is(.personal-page, .committee-page) .page-heading h1 { margin: 0 0 8px; }
:is(.personal-page, .committee-page) .page-heading p { margin: 0; color: var(--pt-text-secondary, var(--muted)); font-size: var(--pt-font-secondary, 14px); }
:is(.personal-page, .committee-page) .space-tabs { margin: 0 0 28px; }

@media (max-width: 1000px) and (min-width: 761px) {
    .connected .app-frame:not(.without-sidebar) { grid-template-columns: 195px minmax(0, 1fr); }
    .connected .desktop-navigation { width: 195px; }
}

@media (max-width: 760px) {
    .connected .header { min-height: 0; padding: 12px 18px; }
    .connected .app-frame { display: block; width: 100%; }
    .connected .desktop-navigation { display: none; }
    :is(.personal-page, .committee-page) .workspace { margin: 24px auto; padding: 0 18px; }
    :is(.personal-page, .committee-page) .page-heading { margin-bottom: 18px; }
    :is(.personal-page, .committee-page) .space-tabs { margin: 0 0 22px; }
}
