:root{--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--font-sans:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.375rem;--weight-regular:400;--weight-medium:550;--weight-semibold:650;--weight-bold:750;--ink:#263746;--blue-950:#103c61;--blue-800:#175b91;--blue-700:#2075bf;--blue-100:#eaf3fa;--blue-50:#f4f8fb;--focus:#8bc4ec;--club-accent:#cdff69;--green-700:#19723a;--green-100:#e5f5ea;--line:#d7e1e8;--muted:#5b6873;--surface:#fff;--page:#f4f7f9;--action-button-height:2.625rem;--action-button-padding-block:.5rem;--action-button-padding-inline:.85rem;--action-button-font-size:var(--text-sm)}@font-face{font-family:Inter;src:url(/inter-variable.woff2)format("woff2");font-style:normal;font-weight:100 900;font-display:swap}*{box-sizing:border-box}.portal-skip{z-index:100;position:fixed;top:.75rem;left:1rem;transform:translateY(-200%)}.portal-skip:focus-visible{transform:translateY(0)}.access-badge.mail-blocked{color:#95383e;background:#fcebec}.member-mail-summary{margin-top:.35rem;display:block}.members-table .member-mail-summary .access-badge{white-space:normal}.member-mail-control{margin-top:1rem}.member-mail-control p{max-width:65ch}.slot-list .historical-slot{min-width:0;color:var(--muted);border:1px solid var(--line);font-size:var(--text-sm);background:#f1f4f7;border-radius:8px;flex-wrap:wrap;grid-column:1/-1;justify-content:space-between;gap:.25rem;padding:.45rem .6rem;display:flex}.analytics-shell{max-width:1200px}.analytics-panel{background:var(--surface);border:1px solid var(--line);border-radius:16px;min-width:0;margin:1.5rem 0;padding:1.5rem}.analytics-panel h2 small{font-size:var(--text-sm);color:var(--muted);font-weight:var(--weight-regular)}.analytics-metrics{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem;margin-bottom:1rem;display:grid}.analytics-metric{background:var(--blue-50);border-top:3px solid var(--club-accent);border-radius:12px;flex-direction:column;padding:1rem;display:flex}.analytics-metric span{color:var(--muted);font-size:var(--text-sm)}.analytics-metric strong{color:var(--blue-950);font-size:1.65rem;font-weight:var(--weight-semibold)}.analytics-courts-now,.analytics-pagination{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.analytics-badge{background:var(--blue-100);width:fit-content;max-width:100%;color:var(--blue-950);font-size:var(--text-xs);border-radius:8px;padding:.15rem .5rem;display:inline-block}.analytics-court-usage,.analytics-weekdays{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem 2rem;margin:1rem 0 1.5rem;display:grid}.analytics-usage-row{gap:.3rem;display:grid}.analytics-usage-row>span{font-size:var(--text-sm);color:var(--muted)}.analytics-bar{background:var(--blue-100);border-radius:8px;height:8px;overflow:hidden}.analytics-bar span{background:var(--blue-700);border-radius:8px;height:100%;display:block}.analytics-history-row{border:1px solid var(--line);overflow-wrap:anywhere;border-radius:10px;grid-template-columns:1fr .8fr 1.4fr;gap:1rem;margin:.75rem 0;padding:1rem;display:grid}.analytics-history-row>div{flex-direction:column;align-items:flex-start;gap:.25rem;min-width:0;display:flex}.analytics-history-row span{font-size:var(--text-sm)}.analytics-history-row.booking-past{color:#50677a;background:#edf2f6}.analytics-cancelled{color:#795551;background:#faf4f3}.analytics-cancelled .analytics-badge{color:#795551;background:#f3e4e1}.analytics-pagination{justify-content:space-between;margin-top:1rem}.analytics-filters input,.analytics-filters select{min-width:0;max-width:100%}@media (max-width:600px){.analytics-panel{padding:1rem}.analytics-metrics,.analytics-court-usage,.analytics-weekdays{grid-template-columns:1fr}.analytics-history-row{grid-template-columns:1fr;gap:.75rem}.analytics-filters button{width:100%;min-height:48px}.analytics-shell h1{overflow-wrap:anywhere}}.reservation-settings .settings-card{border:1px solid var(--line);background:var(--surface);border-radius:16px;min-width:0;margin:1.5rem 0;padding:1.25rem}.settings-card legend{color:var(--blue-950);font-size:var(--text-lg);font-weight:var(--weight-semibold);padding:0 .5rem}.settings-card .hint{font-weight:var(--weight-regular)}.settings-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;display:grid}.settings-card label.settings-check{cursor:pointer;align-items:center;gap:.75rem;min-height:48px;padding:.5rem;display:flex}.settings-card .settings-check input{width:22px;height:22px;accent-color:var(--blue-700);flex:0 0 22px;margin:0}.settings-master{background:var(--blue-50);border-radius:10px}@media (max-width:600px){.reservation-settings h1{overflow-wrap:anywhere}.reservation-settings .settings-card{padding:1rem}.reservation-settings button[type=submit]{width:100%;min-height:48px}}body{background:linear-gradient(145deg,var(--page) 0%,#eaf1f6 100%);min-height:100vh;color:var(--ink);font-family:var(--font-sans);font-size:var(--text-base);font-weight:var(--weight-regular);letter-spacing:-.005em;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0;line-height:1.6}a{color:var(--blue-700)}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-weight:var(--weight-semibold)}h1{letter-spacing:-.025em;margin-bottom:.65rem;font-size:clamp(2rem,3.5vw,2.5rem);line-height:1.15}h2{font-size:var(--text-xl);letter-spacing:-.015em;line-height:1.3}h3{letter-spacing:-.008em;margin-bottom:.25rem;font-size:1.0625rem;line-height:1.35}p{margin-bottom:1rem}.portal-nav{background:var(--blue-950);border-bottom:3px solid var(--club-accent);z-index:10;justify-content:space-between;align-items:center;gap:1rem;min-height:76px;padding:0 max(1.25rem,50vw - 590px);display:flex;position:sticky;top:0}.portal-nav nav{align-items:center;gap:1.25rem;font-size:.9375rem;line-height:1.3;display:flex}.portal-nav nav a,.link-button{color:#eef6fb;font-weight:var(--weight-semibold);letter-spacing:.005em;border-radius:7px;text-decoration:none}.portal-nav nav a{border-bottom:2px solid #0000;padding:.45rem .15rem}.portal-nav nav a:hover,.portal-nav nav a:focus-visible,.portal-nav nav a[aria-current=page],.link-button:hover,.link-button:focus-visible{color:var(--club-accent)}.portal-nav nav a[aria-current=page]{border-bottom-color:var(--club-accent)}.portal-nav nav form{display:block}.link-button{background:0 0;border:0;padding:.25rem}.brand{color:#fff;align-items:center;gap:.75rem;line-height:1.2;text-decoration:none;display:flex}.brand strong{font-size:.95rem;font-weight:var(--weight-bold);letter-spacing:.005em;display:block}.brand small{color:#bed2e1;font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:.035em;margin-top:.16rem;display:block}.nav-logo{flex:none;width:36px;height:auto}.login-logo{filter:drop-shadow(0 10px 20px #103c6129);width:clamp(88px,11vw,118px);height:auto;margin-bottom:1.25rem;display:block}.portal-shell,.app-shell{background:var(--surface);border:1px solid #dfe8ee;border-radius:22px;max-width:1180px;margin:2.5rem auto;padding:clamp(1.25rem,3vw,2.5rem);box-shadow:0 16px 55px #103c6112}.portal-shell.narrow{max-width:760px}.version-pill{white-space:nowrap;font-size:var(--text-sm);font-weight:var(--weight-medium);letter-spacing:.01em;background:#ffffff24;border-radius:99px;padding:.35rem .7rem}.eyebrow{color:var(--muted);font-size:var(--text-xs);font-weight:var(--weight-bold);letter-spacing:.11em;text-transform:uppercase;margin-bottom:.4rem;line-height:1.4}.lead{color:var(--muted);font-size:1.0625rem;line-height:1.65}.module-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin:1rem 0 2.5rem;display:grid}.module-card{border:1px solid var(--line);background:linear-gradient(155deg,#fff,var(--blue-50));border-radius:18px;flex-direction:column;justify-content:space-between;gap:1.25rem;min-height:210px;padding:1.5rem;display:flex}.module-link{color:var(--ink);text-decoration:none;transition:transform .15s,box-shadow .15s,border-color .15s}.module-link:hover{border-color:#a8c8df;transform:translateY(-2px);box-shadow:0 12px 28px #103c6117}.module-card h3,.quick-card h3,.management-card h2{font-size:1.0625rem;font-weight:var(--weight-semibold);line-height:1.35}.module-card p,.quick-card p,.management-card p{color:var(--muted);margin:0;font-size:.9375rem;line-height:1.55}.module-icon{font-size:2.1rem;line-height:1}.coming-soon{color:#6f5a12;font-size:var(--text-xs);font-weight:var(--weight-semibold);background:#f6f0d8;border-radius:99px;margin-top:1rem;padding:.25rem .6rem;line-height:1.35;display:inline-block}.quick-grid,.admin-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.quick-card,.management-card{color:var(--ink);border:1px solid var(--line);background:#fff;border-radius:16px;align-items:center;gap:1rem;padding:1.3rem;text-decoration:none;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex}.quick-card:hover,.management-card:hover{border-color:#a8c8df;transform:translateY(-2px);box-shadow:0 12px 28px #103c6117}.quick-card>span,.management-card>span{font-size:1.8rem}.admin-card{background:var(--blue-100)}.login-shell{grid-template-columns:1.1fr .9fr;align-items:center;gap:clamp(2rem,8vw,7rem);max-width:1050px;min-height:100vh;margin:auto;padding:2rem;display:grid}.login-brand h1{color:var(--blue-950);font-size:clamp(2rem,4vw,2.625rem);font-weight:var(--weight-semibold);margin-bottom:.35rem;line-height:1.15}.login-subtitle{color:var(--blue-700);font-size:var(--text-lg);font-weight:var(--weight-semibold);letter-spacing:.025em;margin-bottom:1.25rem;line-height:1.4}.login-brand>p:last-child{max-width:440px;color:var(--muted);font-size:1.0625rem;line-height:1.65}.login-card{border:1px solid var(--line);border-top:4px solid var(--blue-700);background:#fff;border-radius:22px;padding:clamp(1.5rem,4vw,2.5rem);box-shadow:0 18px 60px #103c611c}.app-header,.detail-header{justify-content:space-between;align-items:start;gap:1rem;margin-bottom:1rem;display:flex}.app-nav,.actions{flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem;font-size:.9375rem;line-height:1.4;display:flex}.back-link{color:var(--blue-800);font-size:.9375rem;font-weight:var(--weight-semibold);margin-bottom:1.5rem;line-height:1.4;text-decoration:none;display:inline-block}.back-link:hover,.back-link:focus-visible{text-decoration:underline}.portal-back{white-space:nowrap}form{gap:1rem;display:grid}label{font-size:.9375rem;font-weight:var(--weight-semibold);gap:.4rem;line-height:1.4;display:grid}input,select,textarea,button,.button{font-family:var(--font-sans);font-size:var(--text-base);border:1px solid #aebfcb;border-radius:9px;padding:.76rem .85rem;line-height:1.4}input,select,textarea{font-weight:var(--weight-regular)}input:focus,select:focus,textarea:focus{outline:3px solid color-mix(in srgb,var(--focus) 52%,transparent);border-color:var(--blue-700)}textarea{resize:vertical}button,.button{background:var(--blue-800);color:#fff;cursor:pointer;width:fit-content;font-size:.9375rem;font-weight:var(--weight-semibold);letter-spacing:.005em;border:0;text-decoration:none;display:inline-block}.button:hover,button:hover{background:var(--blue-950)}.button.secondary{background:var(--blue-100);color:var(--blue-950);border:1px solid #b7cedf}.button.danger,button.danger{background:#a12622}button:not(.link-button),.button:not(.link-button){box-sizing:border-box;min-height:var(--action-button-height);padding:var(--action-button-padding-block) var(--action-button-padding-inline);font-family:var(--font-sans);font-size:var(--action-button-font-size);line-height:1.25}fieldset{border:1px solid var(--line);border-radius:12px;margin:0;padding:1.25rem}legend{font-size:.9375rem;font-weight:var(--weight-semibold);padding:0 .4rem}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.full-width{grid-column:1/-1}.checkbox-label{align-self:end;align-items:center;gap:.6rem;min-height:46px;display:flex}.checkbox-label input{width:18px;height:18px}.account-form,.member-form{max-width:860px}.password-form{max-width:520px;margin-top:1.5rem}.hint{font-weight:var(--weight-regular);color:var(--muted);font-size:var(--text-sm);line-height:1.5}.notice{border-radius:9px;padding:.85rem 1rem;font-size:.9375rem;line-height:1.5}.notice.success{background:var(--green-100);color:#155a3b}.notice.error,.error{color:#8c1d18;background:#fdebea}.empty-state{text-align:center;background:var(--blue-50);border-radius:12px;margin:2rem 0;padding:2rem}.filters{background:var(--blue-50);border-radius:12px;grid-template-columns:minmax(200px,1fr) 180px auto;align-items:end;margin:1rem 0;padding:1rem}.table-wrap{overflow-x:auto}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.9375rem;line-height:1.45}th,td{text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:.85rem}th{color:var(--muted);font-size:var(--text-xs);font-weight:var(--weight-bold);letter-spacing:.045em;text-transform:uppercase}.status,.archived-badge,.role-badge,.access-badge{font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:.01em;background:var(--green-100);color:#185d39;border-radius:99px;padding:.18rem .58rem;line-height:1.35;display:inline-block}.status.passiv{color:#735d16;background:#f2f0e5}.status.inactive,.access-badge.deaktiviert{color:#525b55;background:#ecefed}.access-badge.aktiv{background:var(--green-100);color:#185d39}.access-badge.kein-zugang{color:#815815;background:#fff1d8}.role-badge{background:var(--blue-100);color:#315078}.archived-badge{color:#555;background:#ececec;margin-left:.5rem}.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.detail-card,.profile-card{border:1px solid var(--line);border-radius:12px;margin:1.25rem 0;padding:1.25rem}.detail-card dl,.profile-card dl{margin:0}.detail-card dl div,.profile-card dl div{grid-template-columns:160px 1fr;gap:.5rem;padding:.55rem 0;display:grid}.detail-card dt,.profile-card dt{color:var(--muted)}.detail-card dd,.profile-card dd{white-space:pre-wrap;margin:0}.confirmation{background:#fff3e0;border-left:4px solid #b87418;max-width:680px;padding:1rem}.next-reservations{background:var(--blue-50);border:1px solid #b9d4e7;border-radius:16px;justify-content:space-between;align-items:center;gap:1.5rem;margin-top:2rem;padding:1.4rem;display:flex}.next-reservations h2,.next-reservations p{margin-bottom:.25rem}.portal-shell>.next-reservations+.quick-grid{margin-top:1rem}.portal-hero{margin:-1rem -1rem 2.5rem}.reservation-hero{margin-bottom:1.25rem}@media (max-width:700px){.portal-hero{margin:0 0 2rem}}.next-booking-list{margin:.6rem 0 0;padding-left:1.2rem}.reservation-shell{--reservation-radius:14px;--reservation-shadow:0 16px 40px #103c6110,0 2px 6px #103c6105;--reservation-past-bg:#e9eef3;--reservation-past-ink:#526475;--reservation-past-border:#a5b4c1}.reservation-hero~.quick-reservation{background:var(--surface);box-shadow:var(--reservation-shadow);border:1px solid #d0dfe9;margin:0 0 1.25rem}.reservation-hero+.notice{margin:0 0 1rem}.quick-reservation-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.65rem;display:flex}.quick-reservation-heading .actions{gap:.5rem;margin:0}.quick-reservation-heading .button{font-size:var(--text-sm);padding:.6rem .75rem}.reservation-overview .reservation-count{color:var(--blue-800);font-weight:var(--weight-medium)}.reservation-overview .my-booking.reservation-card{border:1px solid #cbdfea;border-left:3px solid var(--blue-700);border-radius:var(--reservation-radius);color:var(--blue-950);background:linear-gradient(105deg,#edf6fb,#f7fbfc);grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:.85rem;margin:.65rem 0 0;padding:.95rem 1rem;display:grid;box-shadow:0 2px 5px #103c6104}.reservation-overview .reservation-card-icon{width:40px;height:40px;color:var(--blue-800);background:#deedf7;border-radius:50%;place-items:center;display:grid}.reservation-status-icon{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:20px;height:20px}.reservation-card-copy{gap:.15rem;min-width:0;display:grid}.reservation-card-copy>strong{letter-spacing:-.012em;font-size:.9375rem;line-height:1.4}.reservation-overview .reservation-card .row-actions{gap:.85rem;margin:0}.reservation-card .row-actions>a{font-size:var(--text-sm);font-weight:var(--weight-semibold);text-underline-offset:3px}.reservation-overview .reservation-card.booking-past{background:var(--reservation-past-bg);color:var(--reservation-past-ink);border-color:#d4dde5;border-left-color:var(--reservation-past-border);box-shadow:none}.reservation-overview .reservation-card.booking-past span,.reservation-overview .reservation-card.booking-past small{color:var(--reservation-past-ink)}.reservation-overview .reservation-card.booking-past .reservation-card-icon{color:var(--reservation-past-ink);background:#dde5ec}.reservation-overview .reservation-card.cancelled{opacity:1;color:#606b75;box-shadow:none;background:#f5f6f7;border:1px dashed #bcc6cf}.reservation-overview .reservation-card.cancelled .reservation-card-icon{color:#606b75;background:#e8ecef}.reservation-cancelled-label{font-size:.7rem;font-weight:var(--weight-semibold);border:1px solid #c8d0d7;border-radius:99px;justify-self:start;padding:.12rem .5rem;line-height:1.4}.reservation-time-label{font-size:var(--text-xs);font-weight:var(--weight-medium);align-items:center;gap:.35rem;line-height:1.5;display:flex}.reservation-time-label .reservation-status-icon{width:14px;height:14px}.reservation-card .reservation-time-label{font-weight:var(--weight-regular);margin-top:.15rem}.court-week .booking{border-radius:11px;gap:.2rem;padding:.75rem}.reservation-shell{--slot-free-bg:#e1f1e4;--slot-free-border:#91b59a;--slot-free-ink:#245b35;--slot-busy-bg:#fbe9e7;--slot-busy-border:#d9938a;--slot-busy-ink:#833c37}.court-week .booking.own,.court-week .booking.occupied,.court-week .booking.blocked{background:var(--slot-busy-bg);border:1px solid var(--slot-busy-border);color:var(--slot-busy-ink);border-left:4px solid #b75b50}.court-week .booking:not(.booking-past)>span,.court-week .booking:not(.booking-past)>small{color:var(--slot-busy-ink)}.court-week .booking .booking-status{font-size:var(--text-xs);font-weight:var(--weight-semibold)}.court-carousel{min-width:0}.court-carousel-navigation{display:none}@media (max-width:700px){.court-carousel-navigation{margin-bottom:.75rem;display:block}.court-tabs{grid-template-columns:repeat(4,minmax(0,1fr));gap:.3rem;display:grid}.court-tabs button{border:1px solid var(--line);width:100%;min-width:0;min-height:44px;color:var(--blue-950);font-size:var(--text-xs);box-shadow:none;background:#fff;border-radius:9px;padding:.5rem .25rem}.court-tabs button[aria-pressed=true]{background:var(--blue-950);border-color:var(--blue-950);color:#fff}.court-tabs button:focus-visible{outline:3px solid var(--blue-700);outline-offset:2px}.court-swipe-hint{color:var(--muted);text-align:center;font-size:var(--text-xs);margin:.45rem 0 0}.court-carousel>.court-grid{scroll-snap-type:x mandatory;overscroll-behavior-x:contain;grid-template-columns:none;grid-auto-columns:100%;grid-auto-flow:column;align-items:start;padding-bottom:.4rem;position:relative;overflow-x:auto}.court-carousel .court-column{scroll-snap-align:start;scroll-snap-stop:always}}.court-week .slot-list>.booking{grid-column:1/-1;min-width:0;margin:.15rem 0}.court-week .booking.booking-past{background:var(--reservation-past-bg);border-color:#d4dde5;border-left-color:var(--reservation-past-border);color:var(--reservation-past-ink)}.court-week .slot-list>a{background:var(--slot-free-bg);border:1px solid var(--slot-free-border);color:var(--slot-free-ink)}.court-week .slot-list>a span{color:var(--slot-free-ink)}.court-week .slot-list>a:hover{background:#cee6d3;border-color:#568363}.court-week .slot-list>a:focus-visible{outline:3px solid var(--blue-950);outline-offset:2px;background:#cee6d3}.court-day>h2{background:linear-gradient(115deg,var(--blue-950),var(--blue-800));color:#fff;border-radius:10px;flex-wrap:wrap;margin:0 0 1rem;padding:.7rem .9rem}.reservation-legend{font-size:var(--text-xs);color:var(--ink);flex-wrap:wrap;gap:.5rem 1.2rem;margin:0 0 1rem;padding:0 .2rem;display:flex}.reservation-legend span{align-items:center;gap:.45rem;display:inline-flex}.reservation-legend span:before{content:"";border:1px solid;border-radius:4px;flex:none;width:.75rem;height:.75rem}.reservation-legend .legend-free:before{background:var(--slot-free-bg);border-color:var(--slot-free-border)}.reservation-legend .legend-busy:before{background:var(--slot-busy-bg);border-color:var(--slot-busy-border)}.reservation-legend .legend-past:before{background:var(--reservation-past-bg);border-color:var(--reservation-past-border)}.booking.booking-past span,.booking.booking-past small{color:var(--reservation-past-ink)}.court-week .booking .reservation-now{border:1px solid var(--slot-busy-border);color:var(--slot-busy-ink);background:#f5d6d1;border-radius:99px;justify-self:start;margin:.1rem 0;padding:.15rem .45rem;font-size:.7rem}@media (max-width:700px){.reservation-overview .my-booking.reservation-card{grid-template-columns:30px minmax(0,1fr);align-items:start;gap:.55rem .65rem;padding:.8rem}.reservation-overview .reservation-card-icon{width:30px;height:30px}.reservation-card-copy>strong{font-size:.875rem}.reservation-overview .reservation-card .row-actions{flex-direction:row;grid-column:2;justify-self:start;align-items:center}.reservation-card .reservation-time-label{font-size:.7rem}}.reservation-shell{max-width:1440px;margin:2rem auto;padding:clamp(1rem,2.5vw,2rem)}.reservation-header{justify-content:space-between;align-items:flex-start;gap:2rem;margin-bottom:1.5rem;display:flex}.reservation-header .lead{max-width:680px}.week-nav{border:1px solid var(--line);background:#fff;border-radius:14px;flex-wrap:wrap;justify-content:center;align-items:center;gap:.75rem 1.5rem;margin-bottom:1rem;padding:1rem;display:flex}.week-nav a{font-weight:var(--weight-semibold);text-decoration:none}.day-tabs{display:none}.court-week{gap:1rem;display:grid}.court-day{border:1px solid var(--line);background:#fff;border-radius:16px;padding:1rem;box-shadow:0 8px 30px #103c610b}.court-day h2{align-items:center;gap:.6rem;display:flex}.today-badge{background:var(--club-accent);color:var(--blue-950);font-size:var(--text-xs);border-radius:99px;padding:.18rem .55rem}.court-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;display:grid}.court-column{border:1px solid var(--line);background:var(--blue-50);border-radius:12px;min-width:0;padding:.85rem}.court-column h3{color:var(--blue-950)}.booking{font-size:var(--text-sm);background:#fff;border-left:4px solid #8297a7;border-radius:9px;gap:.12rem;margin:.45rem 0;padding:.6rem .7rem;display:grid}.booking.own{border-color:var(--blue-700);background:#e8f3fb}.booking.blocked{background:#f9eee3;border-color:#9b5b20}.booking small,.booking span{color:var(--muted)}.slot-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:.3rem;margin-top:.7rem;display:grid}.slot-list>a{min-height:40px;font-size:.8rem;font-weight:var(--weight-semibold);background:#fff;border:1px dashed #aac1d1;border-radius:8px;padding:.45rem;text-decoration:none}.slot-list>a span{color:var(--muted);font-size:.68rem;font-weight:var(--weight-regular);display:block}.my-reservations{border:1px solid var(--line);background:#fff;border-radius:18px;margin-top:2rem;padding:1.5rem}.reservation-overview{margin:0 0 1rem;padding:1.1rem 1.25rem}.reservation-overview>h2{margin-bottom:.65rem}.reservation-overview .reservation-lists{gap:1rem}.reservation-lists{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;display:grid}.my-booking{border-bottom:1px solid var(--line);justify-content:space-between;gap:1rem;padding:.8rem 0;display:flex}.reservation-overview .my-booking{padding:.65rem 0}.my-booking div:first-child{display:grid}.my-booking span{color:var(--muted);font-size:var(--text-sm)}.my-booking.cancelled{opacity:.65}.row-actions{align-items:center;gap:.7rem;display:flex}.row-actions form{display:block}.link-danger{color:#9b2722;font-size:var(--text-sm);background:0 0;padding:0}.reservation-form{margin-top:1.5rem}.reservation-form fieldset{background:var(--blue-50)}.dialog-actions{flex-wrap:wrap;gap:.75rem;display:flex}.member-search{position:relative}.member-results{z-index:5;border:1px solid var(--line);background:#fff;border-radius:10px;margin:.25rem 0 0;padding:.35rem;list-style:none;position:absolute;left:0;right:0;box-shadow:0 12px 28px #103c6120}.member-results button{text-align:left;width:100%;color:var(--ink);background:#fff}.member-results button:hover{background:var(--blue-100)}.selected-member{background:var(--blue-100);border-radius:9px;justify-content:space-between;align-items:center;gap:.5rem;margin-top:.5rem;padding:.65rem;display:flex}.selected-member span{display:grid}.selected-member small{color:var(--muted)}.booking-actions{border-top:1px solid var(--line);align-items:center;gap:.6rem;margin-top:.35rem;padding-top:.35rem;display:flex}.booking-actions form{display:block}.booking-actions a,.booking-actions button{font-size:var(--text-xs)}.portal-role{color:#eef6fb;background:#ffffff18;border:1px solid #8eb5d1;flex:none;margin-left:auto}.quick-reservation{background:linear-gradient(145deg,#fff,var(--blue-50));border:1px solid #b9d4e7;border-radius:16px;margin-bottom:.75rem;padding:1rem 1.1rem;box-shadow:0 8px 30px #103c610b}.quick-reservation>div:first-child{margin-bottom:.5rem}.quick-reservation h2{margin-bottom:0}.quick-reservation-form{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:.5rem .85rem}.quick-reservation-fields{grid-column:1/-1;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;display:grid}.quick-reservation-fields label{min-width:0}.quick-reservation-fields input,.quick-reservation-fields select{width:100%;min-width:0;padding:.62rem .75rem}.quick-reservation-form fieldset{background:#fff;padding:.7rem .8rem}.quick-reservation-form>button{white-space:nowrap;place-self:end start;min-height:43px;margin-bottom:.15rem}.participant-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:1rem;display:grid}.member-search-feedback{min-height:3.35rem}.member-search-status{margin:.7rem 0 0}.member-remove{color:var(--blue-950);font-size:var(--text-xs);background:0 0;border:1px solid #9ebdd2;padding:.3rem .5rem}.availability-status{min-height:1.5rem;color:var(--muted);font-size:var(--text-sm)}.quick-reservation-form .participant-grid{gap:.75rem}.quick-reservation-form .member-search-feedback{min-height:0}.quick-reservation-form .member-search-status{margin:.5rem 0 0}.quick-reservation-form .availability-status{grid-column:1/-1;min-height:1.35rem;line-height:1.4}.quick-reservation-form fieldset,.quick-reservation-form .participant-grid>*{min-width:0}.quick-reservation-form input{width:100%;min-width:0}.reservation-overview .reservation-lists{grid-template-columns:1fr}.reservation-history summary{cursor:pointer;color:var(--muted);font-size:var(--text-sm);font-weight:var(--weight-semibold);padding:.4rem 0}.reservation-history[open] summary{margin-bottom:.4rem}.reservation-overview .hint{margin-bottom:0}.cancel-dialog{width:min(92vw,520px);color:var(--ink);border:0;border-radius:16px;padding:0;box-shadow:0 24px 80px #071f3380}.cancel-dialog::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#071f3399}.cancel-dialog-content{padding:1.5rem}.cancel-dialog-content h2{margin-bottom:.5rem}.cancel-dialog-content p:not(.eyebrow){color:var(--muted)}.danger-button{background:#a12622}.dialog-actions form{display:block}.reservation-loading{min-height:70vh}.loading-bar,.loading-court{background:linear-gradient(90deg,#e4edf3 25%,#f4f8fb 50%,#e4edf3 75%) 0 0/200% 100%;animation:1.2s ease-in-out infinite reservation-pulse;overflow:hidden}.loading-bar{border-radius:99px;width:min(100%,420px);height:12px;margin:1.5rem 0 2rem}.loading-courts{grid-template-columns:repeat(4,1fr);gap:.75rem;display:grid}.loading-court{border-radius:12px;height:240px}@keyframes reservation-pulse{0%{background-position:100% 0}to{background-position:-100% 0}}@media (max-width:700px){:root{--action-button-height:2.75rem}}@media (max-width:900px){.module-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.login-shell{grid-template-columns:1fr;gap:1.5rem}.login-brand{padding-top:2rem}}@media (max-width:700px){.portal-nav{flex-wrap:wrap;align-items:flex-start;padding:1rem;position:static}.portal-nav nav{width:100%;font-size:var(--text-sm);flex-wrap:wrap;justify-content:flex-start;gap:.7rem}.portal-role{align-self:center}.brand-copy{display:block}.brand strong{font-size:.9rem}.nav-logo{width:30px}.portal-shell,.app-shell{border:0;border-radius:0;min-height:calc(100vh - 72px);margin:0;padding:1.25rem}.module-grid,.quick-grid,.admin-grid,.filters,.form-grid,.detail-grid,.quick-reservation-fields,.participant-grid,.loading-courts{grid-template-columns:1fr}.full-width{grid-column:auto}.app-header,.detail-header{flex-direction:column}.detail-card dl div,.profile-card dl div{grid-template-columns:1fr;gap:0}.login-shell{padding:1.25rem}.login-logo{width:86px}.module-card{min-height:180px}.members-table{table-layout:fixed}.members-table .member-optional{display:none}.members-table th,.members-table td{padding:.7rem .3rem}.members-table th:first-child{width:48%}.members-table th:nth-child(3){width:20%}.members-table th:nth-child(4){width:32%}.members-table td:first-child{white-space:normal}.members-table .access-badge,.members-table .status{padding:.16rem .38rem;font-size:.7rem}.loading-court{height:90px}}@media (max-width:430px){h1{font-size:1.875rem}.portal-nav nav{gap:.45rem .75rem}.portal-nav nav a,.link-button{font-size:.8125rem}.portal-back{flex-basis:100%}.login-brand h1{font-size:1.875rem}}@media (max-width:700px){.next-reservations,.reservation-header{flex-direction:column;align-items:stretch}.reservation-shell{margin:0;padding:1rem}.quick-reservation{padding:.9rem}.quick-reservation-form{grid-template-columns:1fr}.quick-reservation-form>*{grid-column:1}.quick-reservation-form>button{justify-self:stretch;width:100%;margin:0}.reservation-overview{margin-bottom:.85rem;padding:1rem}.week-nav strong{text-align:center;flex-basis:100%;order:-1}.day-tabs{grid-template-columns:repeat(4,1fr);gap:.4rem;margin-bottom:1rem;display:grid}.day-tabs a{border:1px solid var(--line);text-align:center;background:#fff;border-radius:9px;min-height:52px;padding:.45rem;font-size:.78rem;text-decoration:none;display:grid}.day-tabs a.active{border-color:var(--blue-700);background:var(--blue-100);font-weight:var(--weight-semibold)}.day-tabs small{color:var(--green-700)}.court-day{display:none}.court-day.mobile-selected{display:block}.court-grid{grid-template-columns:1fr}.court-column{padding:1rem}.slot-list{grid-template-columns:repeat(4,1fr)}.slot-list>a{min-height:48px}.slot-list>a span{display:none}.reservation-lists{grid-template-columns:1fr}.my-booking{align-items:flex-start}.row-actions{flex-direction:column;align-items:flex-end}}
.page-hero{--hero-height:184px;--hero-padding:clamp(1.25rem, 2.5vw, 2rem);--hero-gradient-direction:90deg;isolation:isolate;min-width:0;min-height:var(--hero-height);color:#fff;background:#103c61;border:1px solid #285375;border-radius:20px;display:grid;position:relative;overflow:hidden;box-shadow:0 8px 28px #103c6112}.page-hero[data-image=true]{--hero-height:224px;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}.page-hero[data-size=STANDARD]{--hero-height:300px}.page-hero[data-size=LARGE]{--hero-height:368px}@media (min-width:701px){.page-hero[data-image=true][data-position=LEFT]{--hero-gradient-direction:270deg;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}.page-hero[data-image=true][data-position=LEFT] .page-hero-image{grid-area:1/1}.page-hero[data-image=true][data-position=LEFT] .page-hero-content{grid-area:1/2}}.page-hero-content{min-width:0;padding:var(--hero-padding);flex-wrap:wrap;align-items:center;gap:1.25rem;display:flex}.page-hero-copy{flex:260px;min-width:0}.page-hero .page-hero-title{color:#fff;letter-spacing:-.02em;overflow-wrap:anywhere;text-wrap:balance;margin:0;font-size:clamp(1.75rem,2.6vw,2.25rem);font-weight:600;line-height:1.2}.page-hero .page-hero-eyebrow{color:#cdff69;letter-spacing:.1em;text-transform:uppercase;margin:0 0 .5rem;font-size:.75rem;font-weight:600;line-height:1.5}.page-hero .page-hero-description{color:#dbeaf4;overflow-wrap:anywhere;max-width:65ch;margin-top:.7rem;font-size:1rem;line-height:1.6}.page-hero-description :is(p,ul){color:inherit;font-size:inherit;line-height:inherit;margin:0 0 .75rem}.page-hero-description :last-child{margin-bottom:0}.page-hero-description a{color:inherit;text-decoration:underline}.page-hero-meta{align-self:flex-start;max-width:100%}.page-hero-actions{flex-wrap:wrap;gap:.75rem;max-width:100%;display:flex}.page-hero[data-image=true] .page-hero-actions{flex-basis:100%}.page-hero .page-hero-actions :is(.button,.web-button){color:#103c61;white-space:normal;background:#fff;border:1px solid #d5e5f0;max-width:100%;margin:0}.page-hero .page-hero-actions :is(.button,.web-button):hover{background:#eaf3fb}.page-hero :focus-visible{outline-offset:4px;outline:3px solid #cdff69}.page-hero-image{min-width:0;position:relative;overflow:hidden}.page-hero-image img{object-fit:cover;object-position:center;width:100%;height:100%;position:absolute;inset:0}.page-hero-image:after{content:"";pointer-events:none;background:linear-gradient(var(--hero-gradient-direction),#103c61,transparent 28%);position:absolute;inset:0}.page-hero[data-position=LEFT] .page-hero-image img{object-position:left center}.page-hero[data-position=RIGHT] .page-hero-image img{object-position:right center}.page-hero[data-overlay=MEDIUM] .page-hero-image:after{background:linear-gradient(var(--hero-gradient-direction),#103c61,#103c6130 45%,#103c6110)}.page-hero[data-overlay=STRONG] .page-hero-image:after{background:linear-gradient(var(--hero-gradient-direction),#103c61,#103c6180 55%,#103c6140)}@media (max-width:700px){.page-hero{--hero-padding:1.25rem;--hero-height:0px;border-radius:20px}.page-hero[data-image=true],.page-hero[data-size]{--hero-height:0px;grid-template-columns:minmax(0,1fr)}.page-hero-content{gap:1.25rem}.page-hero .page-hero-title{font-size:1.75rem}.page-hero-image{height:140px}.page-hero[data-size=STANDARD] .page-hero-image{height:176px}.page-hero[data-size=LARGE] .page-hero-image{height:208px}.page-hero .page-hero-image:after{background:linear-gradient(#103c61,#0000 28%)}.page-hero[data-overlay=MEDIUM] .page-hero-image:after{background:linear-gradient(#103c61,#103c6130 45%,#103c6110)}.page-hero[data-overlay=STRONG] .page-hero-image:after{background:linear-gradient(#103c61,#103c6180 55%,#103c6140)}}
:is(.reservation-shell,.tournament-overview,.hospitality-shell).portal-module-shell{--module-gap:clamp(1.25rem,2vw,1.75rem);width:100%;min-width:0;max-width:1440px;box-shadow:none;background:0 0;border:0;border-radius:0;margin:2rem auto;padding:clamp(1rem,2.5vw,2rem)}.portal-module-shell.tournament-overview,.portal-module-shell.hospitality-shell{gap:var(--module-gap);display:grid}.portal-module-shell>.portal-module-hero{margin:0 0 var(--module-gap)}:is(.tournament-overview,.hospitality-shell).portal-module-shell>:is(section,.portal-module-hero,.tournament-overview-stats){margin:0}.portal-module-hero.page-hero{--hero-height:300px;--hero-padding:clamp(1.5rem,3vw,2.75rem);border-radius:22px;box-shadow:0 14px 36px #103c6116}.portal-module-hero .page-hero-content{flex-direction:column;justify-content:center;align-items:flex-start;gap:1.35rem}.portal-module-hero .page-hero-copy{flex:0 auto}.portal-module-shell .portal-module-hero .page-hero-title{margin:0;font-size:clamp(1.875rem,3vw,2.5rem);line-height:1.18}.portal-module-hero .page-hero-description{max-width:48ch;line-height:1.65}.portal-module-hero[data-image=true] .page-hero-actions{flex-basis:auto}.portal-module-hero .page-hero-image img{object-position:center 60%}.portal-nav nav a:focus-visible,.portal-nav .link-button:focus-visible{outline-offset:4px;outline:2px solid #cdff69}@media (max-width:1200px){.portal-nav{flex-wrap:wrap;padding:1rem max(1.25rem,50vw - 720px)}.portal-nav .brand{min-width:0}.portal-nav .portal-role{margin-left:auto}.portal-nav nav{flex-wrap:wrap;gap:.65rem 1.25rem;width:100%}}@media (max-width:700px){:is(.reservation-shell,.tournament-overview,.hospitality-shell).portal-module-shell{min-height:0;margin:0;padding:1rem}.portal-module-hero.page-hero{--hero-height:0px;--hero-padding:1.5rem;border-radius:18px}.portal-module-hero .page-hero-image{height:176px}.portal-module-shell .portal-module-hero .page-hero-title{font-size:1.875rem}}
.portal-entry{background:linear-gradient(135deg,#103c61,#116ab2);place-items:center;min-height:100svh;padding:clamp(1rem,5vw,4rem);display:grid}.portal-entry-card{background:#fff;border-radius:24px;width:min(100%,450px);min-width:0;padding:clamp(1.5rem,5vw,2.5rem);box-shadow:0 20px 65px #062d4930}.portal-entry-card>img{height:auto;margin-bottom:1.7rem;display:block}.portal-entry-card h1{font-size:1.6rem;line-height:1.25}.portal-entry-card .eyebrow{font-size:.7rem}.portal-entry-card .lead{font-size:.95rem}.portal-entry-card form{margin-top:1.8rem}.portal-entry-card input{width:100%;min-width:0}.portal-entry-card button{width:100%;min-height:46px}.entry-demo-note{background:var(--blue-50);border:1px solid var(--line);border-radius:12px;margin:1.5rem 0;padding:1rem;font-size:.875rem}.entry-demo-note p{margin:.45rem 0}.entry-footer{text-align:center;color:var(--muted);margin:1.8rem 0 0;font-size:.75rem}.demo-nav{flex-wrap:wrap;gap:1rem;padding:1rem max(1.25rem,50vw - 590px);position:static}.demo-nav nav{flex-wrap:wrap;gap:.75rem 1rem}.demo-banner{color:#263c26;background:#eef6d9;border-bottom:1px solid #c7da9d;padding:1rem max(1.25rem,50vw - 590px)}.demo-banner p{margin:0;font-size:.9375rem;line-height:1.55}.demo-banner-actions{flex-wrap:wrap;align-items:center;gap:1rem;margin-top:.75rem;display:flex}.demo-banner-actions a{font-weight:600}.demo-banner-actions button{padding:.5rem .85rem;font-size:.8125rem}.demo-main h2{margin-top:1.5rem}.demo-main .detail-card{background:#fff;min-width:0}.demo-main .quick-grid{align-items:start}.demo-main details{margin:1rem 0}.demo-main summary{cursor:pointer;min-height:44px;color:var(--blue-800);padding:.5rem 0;font-weight:600}.demo-courts{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.demo-slot{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.9rem 0;display:flex}.demo-slot .access-badge{white-space:normal}.demo-readonly-action{justify-items:start;gap:.5rem;margin-top:1.25rem;display:grid}.demo-readonly-action button:disabled{color:#526575;cursor:not-allowed;background:#e6edf2;border:1px solid #c6d1db}.demo-readonly-action small{color:var(--muted)}.demo-footer{border-top:1px solid var(--line);color:var(--muted);margin-top:2rem;padding-top:1.5rem;font-size:.875rem}.demo-website-intro{background:var(--blue-50);border:1px solid var(--line);border-radius:18px;margin:1.5rem 0;padding:clamp(1.25rem,4vw,3rem)}.demo-main .module-card .access-badge{margin-top:1rem}.demo-main{overflow-wrap:anywhere}@media (max-width:700px){.demo-courts,.demo-main .module-grid{grid-template-columns:1fr}.demo-banner{padding:.75rem 1.25rem}.demo-banner p{font-size:.875rem}.demo-banner-actions{gap:.5rem 1rem;margin-top:.5rem}.portal-entry-card{border-radius:20px}.demo-nav{gap:.5rem;padding-top:.75rem;padding-bottom:.75rem}.demo-nav nav{gap:.25rem 1rem}.demo-nav nav a{align-items:center;min-height:44px;display:inline-flex}.demo-main .page-hero{--hero-height:0px;--hero-padding:1.1rem}.demo-main .page-hero-title{font-size:1.5rem}.demo-main .page-hero-description{font-size:.9375rem;line-height:1.5}}
