:root{color-scheme:light;--background:#f6f7f9;--foreground:#172026;--muted:#5f6b76;--surface:#ffffff;--line:#d9e0e7;--accent:#0f766e;--accent-strong:#115e59}*{box-sizing:border-box}body,html{margin:0;min-height:100%}html{scroll-behavior:smooth}body{background:var(--background);color:var(--foreground);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}a{color:inherit}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.shell{padding:40px 20px}.app-shell,.auth-shell,.shell{margin:0 auto;max-width:1040px}.app-shell,.auth-shell{padding:28px 18px}.auth-panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;margin:0 auto;max-width:460px;padding:28px;width:100%}.nav{align-items:center;display:flex;flex-wrap:wrap;gap:10px;margin-bottom:28px}.nav a{border:1px solid var(--line);border-radius:8px;font-weight:800;padding:9px 11px;text-decoration:none}.nav a:first-child{background:var(--foreground);color:white}.locale-form{position:relative}.locale-form,.nav-actions{align-items:center;display:flex}.nav-actions{gap:10px;margin-left:auto}.app-version{color:var(--muted);font-size:.82rem;font-weight:900;white-space:nowrap}.nav-actions form{margin:0}.nav-auth-button{background:var(--surface);border:1px solid var(--line);border-radius:8px;color:var(--foreground);cursor:pointer;font:inherit;font-weight:800;min-height:40px;padding:9px 11px}.admin-form input,.admin-form select,.admin-form textarea,.compact-form input,.compact-form select,.compact-form textarea{border:1px solid var(--line);border-radius:8px;color:var(--foreground);font:inherit;min-height:40px;padding:8px 10px}.flag-switcher{align-items:center;display:flex;gap:6px}.flag-button{align-items:center;border:2px solid transparent;border-radius:999px;box-shadow:inset 0 0 0 1px rgba(23,32,38,.18);color:transparent;cursor:pointer;display:inline-flex;flex:0 0 auto;height:34px;justify-content:center;overflow:hidden;padding:0;position:relative;width:34px}.flag-button span{clip:rect(0,0,0,0);position:absolute}.flag-button.is-active{border-color:var(--foreground)}.flag-ca{background:repeating-linear-gradient(180deg,#f6c343 0 4px,#c91f2f 4px 8px)}.flag-es{background:linear-gradient(180deg,#c60b1e 0 25%,#ffc400 25% 75%,#c60b1e 75%)}.flag-en{background-color:#012169;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cdefs%3E%3CclipPath id='c'%3E%3Ccircle cx='30' cy='30' r='30'/%3E%3C/clipPath%3E%3C/defs%3E%3Cg clip-path='url(%23c)'%3E%3Cpath fill='%23012169' d='M0 0h60v60H0z'/%3E%3Cpath stroke='%23fff' stroke-width='12' d='m0 0 60 60M60 0 0 60'/%3E%3Cpath stroke='%23C8102E' stroke-width='7' d='m0 0 60 60M60 0 0 60'/%3E%3Cpath stroke='%23fff' stroke-width='20' d='M30 0v60M0 30h60'/%3E%3Cpath stroke='%23C8102E' stroke-width='12' d='M30 0v60M0 30h60'/%3E%3C/g%3E%3C/svg%3E");background-position:50%;background-size:cover}.locale-warning{background:#fff7ed;border:1px solid #fed7aa;border-radius:8px;color:#9a3412;font-size:.78rem;font-weight:800;max-width:240px;padding:8px 10px;position:absolute;right:0;top:calc(100% + 6px);z-index:5}.intro{max-width:760px}.eyebrow{color:var(--accent-strong);font-size:.78rem;font-weight:700;letter-spacing:.08em;margin:0 0 12px;text-transform:uppercase}h1{font-size:clamp(2rem,7vw,4.5rem);letter-spacing:0;line-height:.98;margin:0}.intro p:last-child,.muted{color:var(--muted);font-size:1.08rem;line-height:1.7;margin:20px 0 0}.auth-form{display:grid;grid-gap:16px;gap:16px;margin-top:28px}.auth-form label{color:var(--foreground);display:grid;font-size:.92rem;font-weight:700;grid-gap:8px;gap:8px}.auth-form input{border:1px solid var(--line);border-radius:8px;color:var(--foreground);font:inherit;min-height:46px;padding:10px 12px}.auth-form button,.primary-link,.secondary-button{align-items:center;background:var(--accent);border:0;border-radius:8px;color:white;cursor:pointer;display:inline-flex;font:inherit;font-weight:800;gap:8px;justify-content:center;min-height:44px;padding:10px 14px;text-decoration:none}.auth-form button:disabled{cursor:wait;opacity:.72}.form-error{color:#b42318;font-size:.95rem;font-weight:700;margin:0}.topbar{align-items:flex-start;display:flex;gap:16px;justify-content:space-between}.secondary-button{background:#243746}.back-link,.secondary-link{align-items:center;border:1px solid var(--line);border-radius:8px;color:var(--foreground);display:inline-flex;font-weight:800;justify-content:center;min-height:44px;padding:10px 14px;text-decoration:none}.back-link{margin-top:16px;width:100%}.public-hero{max-width:820px;padding:18px 0 8px}.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}.status-band{align-items:center;background:#e9f7f4;border:1px solid #b9ded7;border-radius:8px;display:flex;gap:16px;margin-top:28px;padding:18px}.module h2,.status-band h2{font-size:1rem;letter-spacing:0;margin:0}.module p,.status-band p{color:var(--muted);line-height:1.55;margin:6px 0 0}.module-grid{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-top:36px}.home-club-strip{align-items:center;display:flex;gap:10px;margin-top:18px;overflow-x:auto;padding:4px 0 8px}.home-club-strip a{display:inline-flex}.home-carousel{align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:8px;display:grid;grid-gap:14px;gap:14px;margin-top:18px;min-height:158px;padding:18px}.home-carousel-copy{display:grid;grid-gap:6px;gap:6px}.home-carousel-copy span{color:var(--accent);font-size:.78rem;font-weight:900;text-transform:uppercase}.home-carousel-copy h2,.home-carousel-copy p{margin:0}.home-carousel-copy h2{font-size:1.12rem}.home-carousel-copy p{color:var(--muted);font-weight:800}.home-carousel-dots{display:flex;gap:6px}.home-carousel-dots span{background:var(--line);border-radius:999px;height:7px;width:22px}.home-carousel-dots span.is-active{background:var(--accent)}.sponsor-strip{margin-top:42px;text-align:center}.sponsor-strip h2{font-size:clamp(1.4rem,2.4vw,2.2rem);font-weight:950;letter-spacing:0;margin:0 0 28px;text-transform:uppercase}.sponsor-strip>div{display:flex;gap:0;overflow-x:auto;padding:8px 0}.sponsor-logo,.sponsor-strip>div{align-items:center;justify-content:center}.sponsor-logo{border-left:3px solid #f59e0b;color:#111827;display:inline-flex;flex:0 0 auto;font-size:clamp(1rem,1.8vw,1.55rem);font-weight:950;min-height:64px;min-width:170px;padding:0 24px;text-transform:uppercase}.sponsor-logo:first-child{border-left:0}.sponsor-logo:nth-child(2){color:#ea580c}.sponsor-logo:nth-child(4){color:#0b2f3a}.sponsor-logo:nth-child(5){font-style:italic}.page-heading{margin-bottom:24px}.work-grid{align-items:start;display:grid;grid-gap:18px;gap:18px;grid-template-columns:minmax(280px,.9fr) minmax(320px,1.1fr)}.centered-list{display:grid;margin:0 auto;max-width:760px}.player-form-section{margin-bottom:22px}.admin-form,.compact-form,.list-panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;display:grid;grid-gap:14px;gap:14px;padding:18px}.edit-stack{display:grid;grid-gap:18px;gap:18px;margin:0 auto;max-width:720px}.admin-form h2,.compact-form h2,.list-panel h2{font-size:1.08rem;margin:0}.admin-form label,.compact-form label{display:grid;font-size:.9rem;font-weight:800;grid-gap:7px;gap:7px}.admin-form button,.compact-form button{align-items:center;background:var(--accent);border:0;border-radius:8px;color:white;cursor:pointer;display:inline-flex;font:inherit;font-weight:900;justify-content:center;min-height:42px;padding:10px 12px}.form-row{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.check-line{align-items:center;display:flex!important;flex-direction:row}.feature-toggle-line{gap:9px}.feature-toggle-line svg{color:var(--accent-strong);flex:0 0 auto}.check-grid{border:1px solid var(--line);border-radius:8px;display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));max-height:260px;overflow:auto;padding:12px}.tall-check-grid{max-height:520px}.check-grid legend{font-weight:900;padding:0 6px}.check-grid label{align-items:center;display:flex!important;flex-direction:row;font-weight:700}.compact-form{margin-top:12px}.category-config-card{border-top:1px solid var(--line);display:grid;grid-gap:12px;gap:12px;padding-top:16px}.category-config-card h3{margin:0}.category-config-grid{align-items:start;display:grid;grid-gap:14px;gap:14px;grid-template-columns:minmax(280px,1.2fr) minmax(240px,.8fr)}.form-actions{display:flex;flex-wrap:wrap;gap:8px}.warning-box{background:#fff7ed;border:1px solid #fed7aa;border-radius:8px;color:#9a3412;font-weight:800;padding:12px}.success-message{background:#ecfdf5;border:1px solid #a7f3d0;border-radius:8px;color:#047857;font-weight:900;margin:0;padding:12px}.full-width{grid-column:1/-1;margin-top:18px}.inline-link{justify-self:start}.detail-header{align-items:flex-start;display:flex;gap:16px;justify-content:space-between;margin-bottom:22px}.detail-title-with-crest{align-items:center;display:flex;gap:16px;min-width:0}.detail-grid{display:grid;grid-gap:18px;gap:18px;grid-template-columns:repeat(2,minmax(0,1fr))}.detail-grid p{line-height:1.55;margin:0}.wide-form{grid-column:span 1}.table-list{display:grid;grid-gap:10px;gap:10px}.calendar-list,.standing-block{display:grid;grid-gap:12px;gap:12px}.standing-block+.standing-block{border-top:1px solid var(--line);padding-top:14px}.standing-block h3{font-size:1rem;margin:0}.data-table{border-collapse:collapse;font-size:.92rem;width:100%}.data-table td,.data-table th{border-bottom:1px solid var(--line);padding:8px;text-align:left}.data-table th{color:var(--muted);font-size:.78rem;text-transform:uppercase}.row-card{align-items:center;border:1px solid var(--line);border-radius:8px;display:grid;grid-gap:8px;gap:8px;grid-template-columns:1fr auto auto auto;padding:12px}.player-directory{display:grid;grid-gap:18px;gap:18px}.letter-jump-nav{align-items:center;background:color-mix(in srgb,var(--background) 88%,white);border:1px solid var(--line);border-radius:8px;display:flex;flex-wrap:wrap;gap:6px;padding:10px;position:-webkit-sticky;position:sticky;top:10px;z-index:5}.letter-jump-nav a{align-items:center;border:1px solid var(--line);border-radius:999px;color:var(--foreground);display:inline-flex;font-size:.82rem;font-weight:800;height:30px;justify-content:center;text-decoration:none;width:30px}.letter-jump-nav a:hover{background:color-mix(in srgb,var(--accent) 12%,white);border-color:var(--accent)}.player-groups-grid{align-items:start;display:grid;grid-gap:18px;gap:18px;grid-template-columns:repeat(2,minmax(0,1fr))}.player-letter-group{scroll-margin-top:74px}.player-letter-group h2{border-bottom:2px solid var(--line);font-size:1.18rem;margin:0 0 10px;padding-bottom:8px}.player-letter-list{display:grid;grid-gap:8px;gap:8px}.player-list-row{background:var(--surface);grid-template-columns:minmax(0,1fr) auto}.player-list-row>div{display:grid;grid-gap:4px;gap:4px;min-width:0}.player-list-main{align-items:center;display:grid;grid-gap:10px;gap:10px;grid-template-columns:36px minmax(0,1fr)}.player-list-thumbnail{aspect-ratio:1;border:1px solid var(--line);border-radius:999px;height:36px;object-fit:cover;overflow:hidden;position:relative;width:36px}.player-list-avatar{background:#e6f4f1}.player-list-avatar.female{background:#fdecef}.player-list-avatar.male{background:#e8f0fe}.player-list-text{display:grid;grid-gap:4px;gap:4px;min-width:0}.player-list-row span{color:var(--muted);font-size:.9rem}.row-actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.role-switch-form{align-items:flex-end;display:flex;gap:6px}.role-switch-form label{display:grid;grid-gap:2px;gap:2px}.role-switch-form label span{font-size:.7rem;font-weight:900;text-transform:uppercase}.role-switch-form button,.role-switch-form select{min-height:34px;padding:6px 8px}.club-player-row{grid-template-columns:minmax(0,1fr) auto}.club-player-row>div{display:grid;grid-gap:4px;gap:4px}.club-player-row span{color:var(--muted);font-weight:800}.league-row{align-items:center;border:1px solid var(--line);border-radius:8px;display:grid;grid-gap:8px;gap:8px;grid-template-columns:minmax(0,1fr) auto;padding:12px}.league-row.is-ended{background:#eef1f4;color:var(--muted)}.league-row.is-ended div span{background:#dde3e8;color:var(--muted)}.league-row div{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.league-row div span{background:#e6f4f1;border-radius:999px;color:var(--accent-strong);font-size:.82rem;font-weight:900;padding:4px 8px}.league-row p{color:var(--muted);display:flex;flex-wrap:wrap;gap:10px;grid-column:1/-1;margin:0}.date-row{gap:10px 18px}.date-row,.participant-line{align-items:center;display:flex;flex-wrap:wrap}.participant-line{gap:8px;line-height:1.5}.club-reference-line{align-items:center;display:flex;gap:10px}.detail-inline-badge{align-items:center;display:flex;gap:8px}.club-list-name{align-items:center;display:inline-flex;gap:8px}.club-directory-grid{align-items:start;display:grid;grid-gap:18px;gap:18px;grid-template-columns:minmax(280px,1fr) minmax(360px,1fr)}.club-directory-grid.without-map{grid-template-columns:minmax(0,1fr)}.club-directory-list{margin-top:0}.club-community-group{display:grid;grid-gap:8px;gap:8px}.club-community-group h3,.inline-badge-row,.title-with-badge{align-items:center;display:flex;gap:8px}.club-community-group h3{border-top:1px solid var(--line);color:var(--foreground);font-size:.95rem;margin:10px 0 0;padding-top:12px}.club-detail-community-flag{margin-bottom:8px}.club-detail-content{align-items:start;display:grid;grid-gap:18px;gap:18px}.club-detail-panel.full-width{margin-top:0}.club-detail-content.has-map{grid-template-columns:minmax(260px,.9fr) minmax(320px,1.1fr)}.club-detail-data{display:grid;grid-gap:14px;gap:14px}.club-location-lines{display:grid;grid-gap:4px;gap:4px}.club-location-lines p{margin:0}.club-location-lines p:first-child{font-weight:800}.club-teams-panel{align-self:start}.club-list-row{align-items:center;border:1px solid var(--line);border-radius:8px;display:grid;grid-gap:8px;gap:8px;grid-template-columns:minmax(0,1fr) auto;padding:12px}.club-list-row+.club-list-row{margin-top:8px}.club-list-row>div{display:grid;grid-gap:5px;gap:5px}.club-list-row span{color:var(--muted);font-size:.9rem;font-weight:500}.club-list-address,.club-list-city{display:block}.club-list-city{color:var(--foreground);font-weight:900}.club-directory-map{border:1px solid var(--line);border-radius:8px;min-height:520px;overflow:hidden;position:-webkit-sticky;position:sticky;top:16px}.club-directory-map-canvas{height:520px;width:100%}.club-directory-map-canvas.is-unavailable{background:var(--surface-muted)}.club-logo-edit-row{align-items:center;display:grid;grid-gap:12px;gap:12px;grid-template-columns:auto 1fr}.club-crest{align-items:center;background:#eef5f3;border:1px solid var(--line);display:inline-grid;flex:0 0 auto;justify-items:center;object-fit:contain;overflow:hidden}.club-crest-tiny{border-radius:8px;height:30px;padding:3px;width:30px}.club-crest-small{border-radius:10px;height:46px;padding:5px;width:46px}.club-crest-large{border-radius:14px;height:108px;padding:10px;width:108px}.club-crest-fallback{background:#e8f0fe}.club-crest-shield{background:linear-gradient(180deg,#ffffff,#dce7ee);border:1px solid #9fb1bd;-webkit-clip-path:polygon(50% 0,88% 14%,82% 66%,50% 100%,18% 66%,12% 14%);clip-path:polygon(50% 0,88% 14%,82% 66%,50% 100%,18% 66%,12% 14%);display:block;height:76%;position:relative;width:68%}.club-crest-shield:after{background:#9fb1bd;content:"";height:1px;left:24%;position:absolute;top:38%;width:52%}.seed-badge{background:#e6f4f1;border-radius:999px;color:var(--accent-strong);font-size:.78rem;font-weight:900;padding:3px 8px}.tournament-category-list{display:grid;grid-gap:20px;gap:20px;margin-top:18px}.tournament-category-section{display:grid;grid-gap:12px;gap:12px}.tournament-page-stack{display:grid;grid-gap:22px;gap:22px}.tournament-list-panel{display:grid;grid-gap:16px;gap:16px;width:100%}.tournament-toolbar{align-items:center;display:flex;gap:18px;justify-content:space-between;margin-bottom:18px}.tournament-tabs{background:#0b2f3a;border-radius:8px;box-shadow:0 16px 28px rgba(15,23,42,.18);display:grid;grid-template-columns:repeat(2,minmax(150px,1fr));min-width:min(100%,420px);overflow:hidden}.tournament-tabs a{border-bottom:5px solid transparent;color:white;font-weight:900;padding:18px 24px 14px;text-align:center;text-decoration:none;text-transform:uppercase}.tournament-tabs a.is-active{border-bottom-color:#ef5a3c;color:#ef5a3c}.season-filter{align-items:center;display:flex;gap:8px}.season-filter select{border:1px solid var(--line);border-radius:8px;font:inherit;font-weight:900;min-height:44px;padding:9px 12px;background:white;min-width:180px}.tournament-table{display:grid;width:100%}.tournament-table-head,.tournament-table-row{display:grid;grid-template-columns:minmax(88px,.65fr) minmax(180px,1.8fr) minmax(112px,.9fr) minmax(128px,1fr) minmax(98px,.75fr) minmax(120px,.95fr)}.tournament-table-head{background:#0b2f3a;border-radius:8px 8px 0 0;color:white;font-weight:900;text-transform:uppercase}.tournament-table-head span,.tournament-table-row>*{border-right:1px solid #e5e7eb;padding:16px 12px;min-width:0;overflow-wrap:anywhere}.tournament-table-head span:last-child,.tournament-table-row>:last-child{border-right:0}.tournament-table-row{align-items:start;border-bottom:1px solid #eef2f7}.tournament-table-row>div,.tournament-table-row>span{align-content:start;display:grid;grid-gap:6px;gap:6px}.tournament-table-row span{color:var(--muted);font-weight:800}.tournament-date-cell{align-content:start;color:var(--ink);display:grid;font-weight:950;grid-gap:2px;gap:2px;justify-items:center;text-align:center}.tournament-date-cell span{color:inherit}.tournament-category-cell{color:var(--muted);font-weight:800}.tournament-club-cell{align-items:center;color:var(--foreground);display:inline-flex;gap:8px;text-decoration:none}.tournament-poster-detail,.tournament-poster-preview{border:1px solid var(--line);border-radius:8px;display:block;max-height:360px;max-width:100%;object-fit:contain}.tournament-poster-detail{justify-self:start;max-height:420px}.ranking-scope-badge{align-items:center;background:#e9f7f4;border:1px solid #b9ded7;border-radius:999px;color:#0b6b5e;display:inline-flex;font-size:.66rem;font-weight:950;justify-content:center;letter-spacing:0;line-height:1;min-width:30px;padding:3px 6px}.ranking-scope-badge.is-empty{background:#f3f4f6;border-color:#e5e7eb;color:var(--muted)}.ranking-code-picker{border:1px solid var(--line);border-radius:8px;display:grid;grid-gap:10px;gap:10px;padding:12px}.ranking-code-picker legend{font-weight:900;padding:0 6px}.ranking-code-picker>div{display:flex;flex-wrap:wrap;gap:8px}.ranking-code-picker label{cursor:pointer;display:inline-flex}.ranking-code-picker input{clip:rect(0,0,0,0);height:1px;overflow:hidden;position:absolute;width:1px}.ranking-code-picker input:checked+.ranking-flag{box-shadow:0 0 0 3px rgba(239,90,60,.22);outline:2px solid #ef5a3c}.ranking-flag{align-items:center;background:#f3f4f6;border:1px solid rgba(17,24,39,.16);border-radius:6px;color:#111827;display:inline-flex;font-size:.62rem;font-weight:950;height:22px;justify-content:center;justify-self:start;letter-spacing:0;line-height:1;min-width:34px;overflow:hidden;padding:2px 5px;text-shadow:0 1px 0 rgba(255,255,255,.45);width:-moz-fit-content;width:fit-content}.ranking-flag-image{background:transparent;padding:0;width:34px}.ranking-flag-rfes{width:44px}.ranking-flag-psa{width:52px}.tournament-table-row>span .ranking-flag{justify-self:center}.ranking-flag-image img{height:100%;object-fit:contain;width:100%}.ranking-flag-nav{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.ranking-flag-nav a{display:inline-flex;text-decoration:none}.flag-none{color:var(--muted)}.flag-and,.flag-ext{background:linear-gradient(#087a3d 0 33%,#fff 33% 66%,#087a3d 66%)}.flag-ara,.flag-bal,.flag-cat,.flag-val{background:repeating-linear-gradient(180deg,#f6c343 0 4px,#c91f2f 4px 8px)}.flag-ast,.flag-gal{background:linear-gradient(90deg,#1f6fba 0 42%,#fff 42% 58%,#1f6fba 58%)}.flag-can{background:linear-gradient(90deg,#fff 0 33%,#f6d33f 33% 66%,#1f6fba 66%)}.flag-cnt{background:linear-gradient(#fff 0 50%,#d91e36 50%)}.flag-clm{background:linear-gradient(90deg,#b91c1c 0 50%,#fff 50%)}.flag-cyl{background:linear-gradient(90deg,transparent 49%,rgba(255,255,255,.72) 49% 51%,transparent 51%),linear-gradient(#8b1e2d 0 50%,#f6d33f 50%)}.flag-mad{background:#d91e36;color:white;text-shadow:none}.flag-mur{background:#8b1e2d}.flag-mur,.flag-nav{color:#f6d33f;text-shadow:none}.flag-nav{background:#d91e36}.flag-pva{background:linear-gradient(45deg,transparent 43%,#fff 43% 57%,transparent 57%),linear-gradient(-45deg,transparent 43%,#fff 43% 57%,transparent 57%),linear-gradient(90deg,transparent 45%,#d91e36 45% 55%,transparent 55%),#087a3d;color:white;text-shadow:none}.flag-rio{background:linear-gradient(#d91e36 0 25%,#fff 25% 50%,#087a3d 50% 75%,#f6d33f 75%)}.flag-ceu,.flag-mel{background:linear-gradient(90deg,#111827 0 24%,#fff 24% 76%,#111827 76%)}.flag-rfes{background:linear-gradient(#c91f2f 0 25%,#f6c343 25% 75%,#c91f2f 75%)}.league-row .secondary-link{grid-column:2;grid-row:1}.quiet-panel{align-content:center}.player-photo-card{align-items:center;display:grid;justify-items:center}.club-map{aspect-ratio:16/9;border:1px solid var(--line);border-radius:8px;min-height:220px;width:100%}.court-booking-scroll{border-radius:6px;overflow:auto}.court-booking-toolbar{align-items:stretch;display:grid;grid-gap:12px;gap:12px;grid-template-columns:52px minmax(260px,1fr) 52px;margin-top:14px}.court-booking-arrow{align-items:center;background:#eceff1;border-radius:4px;color:var(--foreground);display:grid;font-size:2.4rem;font-weight:600;justify-items:center;line-height:1;text-decoration:none}.court-booking-arrow.is-disabled{color:#b8bec4}.court-date-label{align-items:center;background:#eceff1;border-radius:4px;display:grid;color:var(--foreground);font-size:1.15rem;font-weight:900;justify-items:center;padding:8px 10px;text-transform:uppercase}.court-booking-table{border-collapse:separate;border-spacing:0;font-size:.82rem;min-width:980px;width:100%}.court-booking-table td,.court-booking-table th{border:0;min-width:132px;padding:8px;text-align:center;vertical-align:top}.court-booking-table.is-compact{border-spacing:6px 7px;min-width:min(760px,100%)}.court-booking-table.is-compact td,.court-booking-table.is-compact th{border-radius:3px;min-width:120px;padding:7px 8px;vertical-align:middle}.court-booking-table td:first-child,.court-booking-table th:first-child{left:0;min-width:76px;position:-webkit-sticky;position:sticky;z-index:2}.court-booking-table thead th{background:#e5e7eb;color:#444;font-size:.9rem;font-weight:900;letter-spacing:0;padding:10px 8px;text-transform:uppercase}.court-booking-table tbody th{background:#fff;color:var(--foreground);font-weight:700}.available-slot{background:#fff}.court-booking-table td:has(.slot-booking-details[open]){background:#dcfce7}.reserved-slot{background:#fee2e2;color:#991b1b;font-weight:900}.unavailable-slot{background:#eef1f4;color:var(--muted);font-weight:900}.slot-booking-form,.slot-reservation{display:grid;grid-gap:6px;gap:6px}.slot-booking-details summary{cursor:pointer;font-weight:800;list-style:none;min-height:22px}.slot-booking-details summary::-webkit-details-marker{display:none}.slot-booking-details[open] summary{margin-bottom:7px}.slot-reservation span{color:var(--muted);font-size:.78rem}.slot-booking-form button,.slot-booking-form select,.slot-reservation button{font-size:.78rem;min-height:30px;padding:6px 8px;width:100%}.player-avatar,.player-photo{aspect-ratio:1;border-radius:999px;height:auto;max-width:220px;width:min(100%,220px)}.player-photo{object-fit:cover}.player-avatar{align-items:center;background:#e6f4f1;border:1px solid var(--line);display:grid;justify-items:center;overflow:hidden;position:relative}.player-avatar.female{background:#fdecef}.player-avatar.male{background:#e8f0fe}.avatar-head{border:1px solid var(--line);border-radius:999px;height:34%;top:22%;width:34%}.avatar-head,.avatar-shoulders{background:var(--surface);position:absolute}.avatar-shoulders{border:1px solid var(--line);border-radius:999px 999px 0 0;bottom:-12%;height:44%;width:68%}.match-card{grid-gap:12px;gap:12px}.match-card,.matchday-card{border:1px solid var(--line);border-radius:8px;display:grid;padding:12px}.matchday-card{grid-gap:10px;gap:10px}.matchday-card header{align-items:baseline;border-bottom:1px solid var(--line);display:flex;gap:10px;justify-content:space-between;padding-bottom:10px}.compact-match-row span,.matchday-card header span{color:var(--muted);font-size:.9rem}.compact-match-list{display:grid;grid-gap:8px;gap:8px}.compact-match-row{align-items:start;display:grid;grid-gap:10px;gap:10px;grid-template-columns:minmax(0,1fr) minmax(220px,auto);padding:6px 0}.compact-match-row+.compact-match-row{border-top:1px solid var(--line)}.compact-match-row p{margin:0}.compact-result{grid-gap:8px;gap:8px}.compact-result,.split-score{display:grid;justify-items:end}.split-score{text-align:right}.split-score strong{font-size:1.05rem}.split-score span{color:var(--muted);font-size:.86rem}.team-tie-row{grid-template-columns:minmax(0,1fr) auto}.compact-rubbers{grid-column:1/-1}.bracket-list{display:grid;grid-gap:18px;gap:18px;margin-bottom:18px}.bracket-block{display:grid;grid-gap:10px;gap:10px}.bracket-block h3{margin:0}.bracket-scroll{overflow-x:auto;padding-bottom:8px}.bracket{align-items:center;display:flex;gap:34px;min-width:max-content}.bracket-round{display:grid;min-width:210px}.bracket-match{background:var(--surface);border:2px solid var(--foreground);border-radius:3px;display:grid;min-height:72px;position:relative}.bracket-match:after,.bracket-winner-slot:after{border-right:2px solid var(--foreground);border-top:2px solid var(--foreground);content:"";height:50%;position:absolute;right:-18px;top:25%;width:18px}.bracket-player{align-items:center;display:grid;font-size:.82rem;font-weight:800;grid-gap:8px;gap:8px;grid-template-columns:minmax(0,1fr) 28px;min-height:34px;overflow:hidden;padding:5px 7px}.bracket-player+.bracket-player{border-top:1px solid var(--line)}.bracket-player.is-winner{background:#e9f7f4;color:var(--accent-strong)}.bracket-player-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bracket-player-score{text-align:right}.bracket-match p{border-top:1px solid var(--line);color:var(--muted);font-size:.72rem;font-weight:800;margin:0;padding:4px 7px}.bracket-match p,.bracket-winner-slot{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bracket-winner-slot{background:var(--surface);border:2px solid var(--foreground);border-radius:3px;font-size:.86rem;font-weight:900;min-height:38px;min-width:180px;padding:8px 10px;position:relative}.bracket-champion .bracket-winner-slot:after{display:none}.match-card p,.rubber-row p{margin:4px 0 0}.evolution-scroll{overflow-x:auto;padding:10px 0}.evolution-chart{display:block;min-width:720px;width:100%}.evolution-grid{stroke:#e2e8f0;stroke-width:1}.evolution-axis-line{stroke:#eef2f7;stroke-width:1}.evolution-player-label,.evolution-rank-label,.evolution-round-label{font-size:.86rem;font-weight:800}.evolution-rank-label,.evolution-round-label{fill:var(--muted);text-anchor:middle}.evolution-player-label.start-label{text-anchor:end}.evolution-player-label.end-label{text-anchor:start}.evolution-ranking-badge{align-items:center;display:flex;height:100%;justify-content:flex-end}.evolution-ranking-badge .ranking-flag{box-shadow:none;height:20px}.player-statistics-grid{align-items:center;display:grid;grid-gap:18px;gap:18px;grid-template-columns:minmax(180px,260px) minmax(0,1fr)}.player-secondary-stat-sections{margin-top:18px}.best-ranking-badge{align-items:center;display:inline-flex;gap:6px}.best-ranking-badge .ranking-flag{box-shadow:none;height:20px}.player-donut{align-items:center;aspect-ratio:1;border-radius:50%;display:grid;justify-items:center;margin:0 auto;max-width:240px;padding:20px;position:relative;width:100%}.player-donut:before{background:white;border-radius:50%;content:"";inset:28px;position:absolute}.player-donut>div,.player-donut>p{position:relative;z-index:1}.player-donut>div{display:grid;grid-gap:2px;gap:2px;text-align:center}.player-donut strong{font-size:2rem}.player-donut span{color:var(--muted);font-size:.82rem;font-weight:900}.stat-metric-grid{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.stat-metric-grid div{background:#f8fafc;border:1px solid var(--line);border-radius:8px;display:grid;grid-gap:6px;gap:6px;padding:12px}.stat-metric-grid span{color:var(--muted);font-size:.82rem;font-weight:900}.stat-metric-grid strong{font-size:1.15rem}.stat-metric-grid small{color:var(--muted);font-weight:800}.ranking-evolution-panel{border-top:1px solid var(--line);margin-top:18px;padding-top:16px}.player-ranking-chart{display:block;min-width:720px;width:100%}.latest-match-list{display:grid;grid-gap:8px;gap:8px}.latest-match-row{border-top:1px solid var(--line);display:grid;grid-gap:5px;gap:5px;padding-top:10px}.latest-match-row:first-child{border-top:0;padding-top:0}.latest-match-row span{color:var(--muted)}.latest-match-row p{margin:0}.rubber-list{display:grid;grid-gap:10px;gap:10px}.rubber-row{border-top:1px solid var(--line);padding-top:10px}.result-form,.rubber-row{display:grid;grid-gap:8px;gap:8px}.result-form{align-items:end;grid-template-columns:minmax(180px,1fr) auto}.structured-result-form{align-items:start;grid-template-columns:minmax(240px,1fr) auto}.structured-result-form fieldset{border:0;display:grid;grid-gap:6px;gap:6px;margin:0;padding:0}.structured-result-form legend{font-size:.82rem;font-weight:900;margin-bottom:2px}.set-score-row{align-items:center;display:grid;grid-gap:6px;gap:6px;grid-template-columns:48px minmax(56px,1fr) auto minmax(56px,1fr)}.set-score-row span{color:var(--muted);font-size:.82rem;font-weight:800}.result-form label{display:grid;font-size:.82rem;font-weight:800;grid-gap:6px;gap:6px}.result-form input,.result-form select{border:1px solid var(--line);border-radius:8px;background:white;font:inherit;min-height:38px;padding:8px 10px}.danger-button,.result-form button{border:0;border-radius:8px;cursor:pointer;font:inherit;font-weight:900;min-height:38px;padding:8px 10px}.result-form button{background:var(--accent);color:white}.danger-button{background:#b42318;color:white}.module{background:var(--surface);border:1px solid var(--line);border-radius:8px;display:grid;grid-gap:10px;gap:10px;min-height:86px;padding:18px}.module svg{color:var(--accent)}.module span{font-weight:700}.cookie-banner{align-items:center;background:var(--foreground);border-radius:8px;bottom:18px;box-shadow:0 16px 40px rgba(23,32,38,.22);color:white;display:flex;gap:18px;left:50%;max-width:920px;padding:18px;position:fixed;transform:translateX(-50%);width:calc(100% - 36px);z-index:20}.cookie-banner h2{font-size:1rem;margin:0 0 6px}.cookie-banner p{line-height:1.5;margin:0}.cookie-banner button{border:0;border-radius:8px;cursor:pointer;flex:0 0 auto;font:inherit;font-weight:900;min-height:42px;padding:10px 14px}.back-to-top,.cookie-banner button{background:var(--accent);color:white}.back-to-top{align-items:center;border-radius:999px;bottom:22px;box-shadow:0 12px 32px rgba(15,118,110,.24);display:inline-flex;height:48px;justify-content:center;position:fixed;right:22px;text-decoration:none;width:48px;z-index:15}.back-to-top:hover{background:var(--accent-strong)}@media (max-width:640px){.topbar{display:grid}.secondary-button{width:100%}.category-config-grid,.club-detail-content.has-map,.compact-match-row,.detail-grid,.detail-header,.form-row,.player-groups-grid,.player-statistics-grid,.result-form,.row-card,.work-grid{grid-template-columns:1fr}.tournament-toolbar{align-items:stretch;display:grid}.tournament-tabs{min-width:0;width:100%}.season-filter{display:grid;grid-template-columns:1fr}.tournament-table{gap:10px}.tournament-table-head{display:none}.tournament-table-row{background:var(--surface);border:1px solid var(--line);border-radius:8px;grid-template-columns:1fr}.tournament-table-row>*{border-right:0;border-top:1px solid var(--line);padding:10px 12px}.tournament-table-row>:first-child{border-top:0}.matchday-card header{align-items:flex-start;display:grid}.data-table{display:block;overflow-x:auto;white-space:nowrap}.detail-header{display:grid}.club-directory-grid{grid-template-columns:1fr}.club-directory-map{min-height:360px;position:relative;top:auto}.club-directory-map-canvas{height:360px}.locale-form{width:auto}.nav-actions{align-items:stretch;display:grid;grid-template-columns:auto minmax(0,1fr) auto;margin-left:0;width:100%}.app-version{align-self:center}.locale-warning{left:0;right:auto}.nav-auth-button,.nav-auth-link{min-height:40px;white-space:nowrap}.cookie-banner{align-items:stretch;display:grid}.back-to-top{bottom:16px;right:16px}}