/* Calendario dei tornei (/calendario-tornei/ e sorelle nelle altre lingue), dal 08/10/2026: la vetrina che
   l'utente ha dato come modello quel giorno ("rispettando il modello nel layout, dimensioni, comportamento"),
   con i dati veri al posto dei tornei di prova. Le regole sono quelle del modello, nello stesso ordine (le sue
   versioni successive si sovrappongono alle prime, come lì), tutte sotto .cal, la <main> della pagina, così
   non toccano il resto del sito; tolte solo le parti che la pagina non usa (la testata del modello, le
   illustrazioni superate dell'apertura e della scheda). Colori del modello, chiari, per scelta dell'utente;
   dal 09/10/2026 il fondo della pagina è invece il verde del sito (blocco in fondo al foglio), e le schede
   restano chiare. Questo foglio si carica solo in questa pagina. */

/* I caratteri del modello, ospitati qui e non presi da Google: DM Sans e Manrope, licenza OFL (fonts/). */
@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 400 800; font-display: swap; src: url(../fonts/dmsans-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 400 800; font-display: swap; src: url(../fonts/dmsans-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 400 800; font-display: swap; src: url(../fonts/manrope-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 400 800; font-display: swap; src: url(../fonts/manrope-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

/* La testata del sito qui non resta in alto: in alto si ferma la barra dei mesi, come nel modello. Perché si fermi
   davvero, html e body non devono essere contenitori di scorrimento: site.css dà loro overflow-x: hidden, che
   fa calcolare auto all'altro asse del body e blocca position: sticky (anche quello della testata, in tutto il
   sito). clip taglia allo stesso modo senza quell'effetto; chi non lo conosce resta su visible. */
html, body { overflow-x: visible; overflow-x: clip; }
.top { position: relative; }

/* Dentro la pagina valgono le impostazioni del browser, come nel modello, e non quelle generali di site.css
   (interlinea 1,6, titoli bianchi e bilanciati, larghezza minima zero per tutto, margini dei paragrafi). */
.cal { color-scheme: light; line-height: normal; }
.cal * { min-width: auto; }
.cal h1, .cal h2, .cal h3 { color: inherit; text-wrap: wrap; line-height: normal; }
.cal p { margin: 1em 0; }

/* ---------- Le regole del modello ---------- */
.cal{--ink:#152d27;--sub:#60736d;--soft:#f2f6f2;--paper:#f7f9f6;--white:#fff;--deep:#0f392d;--line:#e1e9e2;--lime:#c9ef59;--glow:rgba(144,196,73,.26);--shadow:0 14px 45px rgba(20,52,37,.065)}
.cal *{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:168px}
.cal{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans','Arial',sans-serif;-webkit-font-smoothing:antialiased}
.cal button{font:inherit;cursor:pointer}
.cal button:focus-visible,.cal .t-card:focus-visible,.cal a:focus-visible{outline:3px solid #89bd17;outline-offset:4px}
.cal a{text-decoration:none;color:inherit}
.cal .shell{max-width:1450px;padding:0 40px;margin:auto}
.cal .cal-hero{padding-top:26px}
.cal .hero-wrap{background:linear-gradient(115deg,#103c2e,#092d25);color:white;min-height:382px;position:relative;overflow:hidden;border-radius:27px;display:grid;grid-template-columns:52% 48%;box-shadow:0 18px 45px rgba(21,51,38,.12)}
.cal .hero-left{padding:50px 10px 47px 54px;position:relative;z-index:1;display:flex;flex-direction:column;align-items:flex-start}
.cal h1{font-family:Manrope,Arial,sans-serif;font-size:clamp(32px,3.65vw,55px);font-weight:800;line-height:1.065;letter-spacing:-2.9px;margin:23px 0 18px;max-width:620px}
.cal h1 em{font-style:normal;color:var(--lime)}
.cal .hero-desc{font-size:14px;color:#c5d9ce;line-height:1.7;max-width:440px;margin:0}
.cal .hero-stats{display:flex;gap:29px;margin-top:auto;padding-top:26px}
.cal .hero-stats div{padding-right:25px;border-right:1px solid #547163}
.cal .hero-stats div:last-child{border-right:none}
.cal .hero-stats strong{display:block;color:white;font-family:Manrope,sans-serif;font-size:25px;letter-spacing:-1px}
.cal .hero-stats span{display:block;color:#b7cfc3;font-weight:600;font-size:10px;margin-top:2px}
.cal .main-intro{display:flex;align-items:end;justify-content:space-between;gap:20px;margin:38px 0 18px}
.cal .kick{font-size:10px;color:#6b947d;font-weight:800;letter-spacing:1.8px;text-transform:uppercase}
.cal h2{font-family:Manrope,Arial,sans-serif;font-size:29px;letter-spacing:-1.3px;line-height:1.18;margin:8px 0 7px}
.cal h2 span{color:#7b9085}
.cal .muted{color:var(--sub);font-size:13px;line-height:1.55;margin:0}
.cal .legend{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-end}
.cal .legend-item{display:flex;gap:7px;align-items:center;background:#fff;border:1px solid var(--line);padding:9px 12px;border-radius:30px;font-size:11px;font-weight:700;color:#4a6257}
.cal .dot{width:9px;height:9px;border-radius:50%;display:inline-block}
.cal .dot.clay{background:#d57653}
.cal .dot.hard{background:#3b91c7}
.cal .dot.grass{background:#83a74c}
.cal .dot.indoor{background:#585ab1}
.cal .dot.padel{background:#22a79b}
.cal .month-bar-wrap{position:sticky;z-index:6;top:0;background:rgba(247,249,246,.95);backdrop-filter:blur(14px);padding:11px 0 14px;border-bottom:1px solid #e0e8df}
.cal .months{display:flex;gap:7px;overflow:auto;scrollbar-width:none;align-items:center}
.cal .months::-webkit-scrollbar{display:none}
.cal .month-link{min-width:84px;white-space:nowrap;border:1px solid transparent;border-radius:11px;background:transparent;font-size:12px;color:#587469;padding:10px 12px;font-weight:700;transition:.18s}
.cal .month-link small{margin-left:7px;font-size:10px;color:#91a398}
.cal .month-link:hover{background:#eaf1e8}
.cal .month-link.active{background:var(--deep);color:var(--lime);border-color:var(--deep)}
.cal .month-link.active small{color:#b5cbad}
.cal .season-note{font-size:11px;color:#7b9185;margin-top:13px;display:flex;gap:6px;align-items:center}
.cal .calendar-layout{display:grid;grid-template-columns:minmax(0,1fr) 315px;align-items:start;gap:25px;padding-top:27px;padding-bottom:85px}
.cal .stream{min-width:0}
.cal .m-section{scroll-margin-top:85px;margin-bottom:31px}
.cal .m-heading{display:flex;align-items:center;gap:13px;margin:7px 0 18px}
.cal .m-title{font-family:Manrope,Arial,sans-serif;font-weight:800;font-size:23px;letter-spacing:-.85px}
.cal .m-count{font-size:11px;font-weight:800;color:#53705e;background:#e5eee5;padding:6px 10px;border-radius:30px}
.cal .m-rule{height:1px;background:#dfe7df;flex:1}
.cal .cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px}
.cal .t-card{display:flex;flex-direction:column;background:#fff;border:1.5px solid #e1e9e3;border-radius:19px;overflow:hidden;min-width:0;position:relative;box-shadow:0 7px 24px rgba(19,48,35,.032);transition:transform .2s,border-color .18s,box-shadow .2s;cursor:pointer;text-align:left;outline:none}
.cal .t-card:hover{transform:translateY(-4px);box-shadow:0 15px 32px rgba(21,53,33,.12)}
.cal .t-card.is-selected{border:2px solid #91c43d;box-shadow:0 0 0 4px rgba(185,225,84,.26),0 16px 30px rgba(46,91,44,.11);transform:translateY(-2px)}
.cal .t-card.is-selected .card-foot{background:#f0f9dc}
.cal .card-body{padding:16px 17px 0;display:flex;flex-direction:column;flex:1}
.cal .card-head{display:flex;justify-content:space-between;gap:12px;align-items:center}
.cal .sport-tag{font-size:10px;text-transform:uppercase;letter-spacing:1.2px;color:#7a8c84;font-weight:900}
.cal .status{display:inline-flex;align-items:center;gap:6px;font-size:10px;color:#87998e;font-weight:800}
.cal .status:before{content:'';width:6px;height:6px;border-radius:50%;background:#a0aa9f}
.cal .status.live{color:#248963}
.cal .status.live:before{background:#32b87a;box-shadow:0 0 0 4px #dff3e6}
.cal .status.soon{color:#8b7841}
.cal .status.soon:before{background:#d3a950}
.cal .card-name{margin:9px 0 12px;font-family:Manrope,Arial,sans-serif;font-weight:800;letter-spacing:-.7px;line-height:1.2;font-size:19px;min-height:46px}
.cal .fact-grid{border-top:1px solid #e8eee9;display:grid;grid-template-columns:1fr 1fr;gap:15px 12px;padding:14px 0 16px}
.cal .fact{min-width:0}
.cal .fact-icon{display:inline-flex;align-items:center;gap:6px;color:#7e9487;letter-spacing:.35px;font-weight:800;font-size:10px;text-transform:uppercase}
.cal .fact-icon svg{width:14px;height:14px;stroke:#729381;stroke-width:1.7;fill:none}
.cal .fact-value{display:block;color:#18352b;font-size:12px;font-weight:800;line-height:1.4;margin-top:6px}
.cal .fact-value.secondary{font-weight:700}
.cal .fact-value .subline{font-weight:600;color:#81958a;font-size:10px;display:block;margin-top:2px}
.cal .card-foot{margin-top:auto;border-top:1px solid #edf0ec;padding:11px 17px;display:flex;align-items:center;justify-content:space-between;font-size:11px;font-weight:800;color:#406451;transition:.2s}
.cal .check-ring{width:19px;height:19px;display:inline-grid;place-items:center;border:1.5px solid #a8baad;color:transparent;border-radius:50%;font-size:12px;background:white;flex:0 0 auto}
.cal .is-selected .check-ring{background:#27593c;border-color:#27593c;color:var(--lime)}
.cal .side{position:sticky;top:85px}
.cal .select-panel{background:#103c30;color:white;border-radius:21px;overflow:hidden;box-shadow:0 22px 40px rgba(19,52,31,.16)}
.cal .side-cover{padding:24px 22px 22px;background:linear-gradient(145deg,#143f32,#0c2f26);border-bottom:1px solid rgba(255,255,255,.12)}
.cal .panel-title{font-family:Manrope,Arial,sans-serif;font-size:23px;letter-spacing:-1px;line-height:1.15;font-weight:800;margin:10px 0 7px}
.cal .panel-muted{color:#aac9b7;font-size:12px;line-height:1.45}
.cal .panel-facts{padding:10px 22px 3px}
.cal .panel-row{padding:12px 0;display:flex;align-items:baseline;justify-content:space-between;gap:12px;border-bottom:1px solid rgba(255,255,255,.12)}
.cal .panel-row:last-child{border-bottom:0}
.cal .panel-row span{color:#9ab6a8;font-size:11px}
.cal .panel-row strong{color:#f6fff6;font-size:12px;font-weight:800;text-align:right;max-width:180px}
.cal .panel-bottom{padding:17px 21px 21px}
.cal .panel-action{border:0;width:100%;display:flex;gap:9px;justify-content:center;align-items:center;background:var(--lime);color:#214124;font-size:12px;padding:13px 10px;border-radius:11px;font-weight:900;transition:.2s}
.cal .panel-action:hover{background:#e0fc86}
.cal .empty{padding:35px 22px}
.cal .empty h3{font-family:Manrope,sans-serif;font-size:20px;margin:18px 0 10px}
.cal .empty p{line-height:1.65;color:#b4d3c3;font-size:12px}
.cal .cal-footer{background:#11382d;color:#c6dccd;padding:30px 0;margin-top:15px}
.cal .cal-footer-in{display:flex;justify-content:space-between;align-items:center;gap:15px;flex-wrap:wrap}
.cal .cal-footer b{color:white}
.cal .cal-footer small{font-size:11px;color:#9bb9a7}
.cal .back-top{background:#315d45;border:1px solid #5a836c;color:white;border-radius:10px;padding:10px 13px;font-size:12px;font-weight:800}
.cal .mobile-selection{display:none}
.cal .data-ribbon{background:#edf3e8;color:#698173;border-radius:10px;border:1px solid #dae7d9;padding:12px 15px;font-size:11px;line-height:1.5;display:flex;gap:10px;align-items:start;margin:0 0 23px}
.cal .data-ribbon b{color:#335947}
.cal .mini-info{display:inline-flex;align-items:center;justify-content:center;background:#cddfd0;color:#315b45;border-radius:100%;height:17px;min-width:17px;font-size:11px;font-weight:800}
.cal .pulse{animation:cal-flash 1.15s ease 1}
@keyframes cal-flash{0%{box-shadow:0 0 0 0 #c1e85a}50%{box-shadow:0 0 0 8px rgba(193,232,90,.2)}100%{box-shadow:0 0 0 0 rgba(193,232,90,0)}}
@media(max-width:1170px){
 .cal .shell{padding-left:25px;padding-right:25px}
 .cal .calendar-layout{grid-template-columns:minmax(0,1fr) 284px;gap:17px}
 .cal .hero-left{padding-left:36px}
 .cal h1{font-size:44px}
 .cal .card-name{font-size:18px}
}
@media(max-width:970px){
 .cal .calendar-layout{grid-template-columns:minmax(0,1fr)}
 .cal .side{display:none}
 .cal .cards{grid-template-columns:repeat(2,minmax(0,1fr))}
 .cal .mobile-selection{position:fixed;z-index:20;bottom:12px;left:12px;right:12px;background:#0d3a2e;border-radius:14px;box-shadow:0 12px 45px rgba(0,20,10,.35);display:none;align-items:center;gap:12px;padding:11px 12px;color:white;border:1px solid #466b47}
 .cal .mobile-selection.show{display:flex}
 .cal .mobile-selection strong{display:block;font-size:12px}
 .cal .mobile-selection span{display:block;font-size:10px;color:#bed8c7;margin-top:3px}
 .cal .mobile-selection button{border:0;min-width:72px;border-radius:9px;background:var(--lime);color:#223f22;font-size:11px;font-weight:800;padding:10px}
 .cal .mobile-selection .mclose{background:#365d4a;color:#f4fff4;min-width:35px}
 .cal .cal-footer{padding-bottom:88px}
}
@media(max-width:720px){
 .cal .shell{padding-left:17px;padding-right:17px}
 .cal .cal-hero{padding-top:16px}
 .cal .hero-wrap{grid-template-columns:1fr;min-height:auto;border-radius:22px}
 .cal .hero-left{padding:27px 25px 15px}
 .cal h1{font-size:clamp(31px,9vw,43px);letter-spacing:-1.9px;margin:16px 0 11px}
 .cal .hero-desc{font-size:12px;line-height:1.6}
 .cal .hero-stats{padding-top:20px;gap:13px}
 .cal .hero-stats div{padding-right:11px}
 .cal .hero-stats strong{font-size:20px}
 .cal .hero-stats span{font-size:9px}
 .cal .main-intro{align-items:start;flex-direction:column;margin:26px 0 14px}
 .cal .main-intro h2{font-size:25px}
 .cal .legend{justify-content:start}
 .cal .legend-item{font-size:10px;padding:7px 9px}
 .cal .month-bar-wrap{padding-top:10px;padding-bottom:10px}
 .cal .month-link{min-width:74px;padding:10px 9px;font-size:11px}
 .cal .calendar-layout{padding-top:15px}
 .cal .m-title{font-size:22px}
 .cal .m-section{margin-bottom:28px}
 .cal .cards{grid-template-columns:1fr;gap:14px}
 .cal .card-name{min-height:auto;font-size:21px}
 .cal .fact-value{font-size:13px}
 .cal .card-body{padding:15px 17px 0}
 .cal .fact-grid{gap:17px}
 .cal .season-note{font-size:10px}
 .cal .cal-footer-in{gap:20px}
}
@media(min-width:721px) and (max-width:900px){
 .cal .hero-wrap{grid-template-columns:56% 44%}
 .cal .hero-left{padding:33px 5px 31px 35px}
 .cal h1{font-size:37px}
}
@media(prefers-reduced-motion:reduce){
 .cal *{scroll-behavior:auto!important;animation:none!important;transition:none!important}
}
/* V2 – compact tournament gallery */
.cal .calendar-layout{grid-template-columns:minmax(0,1fr) 288px;gap:21px}
.cal .cards{grid-template-columns:repeat(auto-fit,minmax(min(100%,269px),1fr));gap:13px}
.cal .m-section{margin-bottom:25px}
.cal .m-heading{margin-bottom:14px}
.cal .t-card{border-radius:15px;min-height:248px;box-shadow:0 5px 18px rgba(21,53,33,.045)}
.cal .t-card.is-selected{border:2px solid #81bb34;box-shadow:0 0 0 3px rgba(179,224,72,.29),0 14px 28px rgba(35,76,39,.13)}
.cal .compact-top{padding:12px 14px 0;display:flex;justify-content:space-between;align-items:center;gap:9px;min-height:55px}
.cal .mark-row{display:flex;align-items:center;gap:6px;min-width:0;flex-shrink:0}
.cal .slam-badge{position:relative;display:flex;align-items:center;justify-content:center;width:65px;height:39px;border:1px solid #e6ece8;border-radius:8px;background:#fff;overflow:hidden;flex-shrink:0}
.cal .slam-badge img{display:block;width:100%;height:100%;object-fit:contain;padding:3px}
.cal .slam-fallback{display:none;place-items:center;width:100%;height:100%;overflow:hidden}
.cal .slam-fallback svg{width:100%;height:100%;display:block}
.cal .slam-badge.ao .slam-fallback{color:#139ce1;background:#e5f7ff}
.cal .slam-badge.rg .slam-fallback{color:#fff;background:linear-gradient(135deg,#135a38 50%,#d76830 51%)}
.cal .slam-badge.wimbledon .slam-fallback{color:#fff;background:linear-gradient(135deg,#512b7b 50%,#12643f 51%)}
.cal .slam-badge.usopen .slam-fallback{color:#ffca38;background:#0b2f77}
.cal .card-body{padding:6px 14px 0}
.cal .card-head{gap:7px}
.cal .sport-tag{font-size:9px;letter-spacing:1px}
.cal .status{font-size:9px}
.cal .card-name{font-size:16px;letter-spacing:-.55px;margin:7px 0 9px;min-height:38px;line-height:1.17}
.cal .location-dates{display:grid;gap:5px;padding-bottom:11px;color:#405d4e}
.cal .location-dates div{display:flex;gap:7px;align-items:center;min-width:0;font-size:11px;font-weight:700;line-height:1.25}
.cal .location-dates svg{width:13px;height:13px;stroke:#81a48b;fill:none;stroke-width:1.8;flex-shrink:0}
.cal .location-dates span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal .fact-grid{border-top:1px solid #eaf0ea;grid-template-columns:1fr 1fr;gap:7px;padding:10px 0 8px}
.cal .fact-icon{font-size:8px;gap:4px;letter-spacing:.2px;white-space:nowrap}
.cal .fact-icon svg{width:11px;height:11px}
.cal .fact-value{font-size:11px;margin-top:4px;line-height:1.25;min-height:17px;overflow-wrap:anywhere}
.cal .fact-value.secondary{font-size:10px;color:#7f9085}
.cal .surface-inline{display:flex;align-items:center;gap:6px;color:#6c8174;font-size:10px;font-weight:750;min-height:29px;padding-bottom:7px}
.cal .surface-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#729b83}
.cal .surface-dot.clay{background:#d57653}
.cal .surface-dot.hard{background:#3b91c7}
.cal .surface-dot.grass{background:#83a74c}
.cal .surface-dot.indoor{background:#585ab1}
.cal .surface-dot.padel{background:#22a79b}
.cal .picked-inline{margin-left:auto;font-size:8px;font-weight:900;letter-spacing:.25px;background:#def4a7;border-radius:5px;padding:4px 6px;color:#2e642d}
.cal .card-foot{padding:8px 14px;font-size:10px;color:#577261;background:#fcfefb}
.cal .check-ring{height:18px;width:18px;font-size:10px}
.cal .t-card.is-selected .card-foot{background:#e9f8c6}
.cal .t-card.is-selected .check-ring{background:#1f542f;border-color:#1f542f}
.cal .panel-brand{display:flex;align-items:center;gap:10px;margin-top:18px;min-height:50px}
.cal .detail-surface{font-size:12px;color:#e1eddd;font-weight:800}
.cal .detail-slam{margin-left:auto;width:69px;height:43px}
@media(max-width:1170px){
 .cal .calendar-layout{grid-template-columns:minmax(0,1fr) 260px;gap:17px}
 .cal .cards{gap:11px}
}
@media(max-width:970px){
 .cal .calendar-layout{grid-template-columns:1fr}
 .cal .cards{grid-template-columns:repeat(auto-fit,minmax(min(100%,269px),1fr))}
}
@media(max-width:720px){
 .cal .cards{grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:12px}
 .cal .card-name{font-size:17px;min-height:auto}
 .cal .card-body{padding:7px 15px 0}
 .cal .fact-value{font-size:11px}
 .cal .t-card{min-height:0}
 .cal .compact-top{min-height:50px}
 .cal .calendar-layout{padding-top:15px}
}
@media(max-width:620px){
 .cal .cards{grid-template-columns:1fr}
 .cal .t-card{max-width:none}
 .cal .card-name{min-height:0}
 .cal .fact-grid{gap:14px}
 .cal .fact-value{font-size:12px}
}
/* V3 – discreet Masters 1000 logo treatments with background-free fallbacks */
@media(min-width:971px){
 .cal .cards{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(min-width:621px) and (max-width:970px){
 .cal .cards{grid-template-columns:repeat(2,minmax(0,1fr))}
}
.cal .masters-badge{width:62px;height:39px;display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;overflow:hidden;background:transparent;border:0;border-radius:5px;padding:0 2px}
.cal .masters-badge img{height:36px;max-height:36px;width:60px;max-width:60px;object-fit:contain;display:block;mix-blend-mode:multiply}
.cal .masters-fallback{display:none;align-items:center;justify-content:center;gap:4px;height:36px;width:60px;font-family:Manrope,Arial,sans-serif;line-height:1;overflow:hidden}
.cal .masters-fallback .mf-sign{display:grid;place-items:center;width:20px;height:23px;border-radius:6px 2px 8px 2px;font-size:13px;color:var(--m-color,#295946);border:1.5px solid currentColor;transform:skew(-4deg)}
.cal .masters-fallback strong{font-size:11px;letter-spacing:-.6px;color:var(--m-color,#295946);font-weight:900}
.cal .masters-badge.indian{--m-color:#c48e08}
.cal .masters-badge.miami{--m-color:#ed7f42}
.cal .masters-badge.monte{--m-color:#0e704f}
.cal .masters-badge.madrid{--m-color:#f06025}
.cal .masters-badge.roma{--m-color:#125840}
.cal .masters-badge.montreal{--m-color:#203f8b}
.cal .masters-badge.cincy{--m-color:#173b75}
.cal .masters-badge.shanghai{--m-color:#24764f}
.cal .masters-badge.parism{--m-color:#b49b46}
.cal .masters-badge.detail-masters{width:80px;height:48px;margin-left:auto;--m-color:#c8ee5b;border-radius:8px;padding:5px;background:rgba(255,255,255,.95)}
.cal .masters-badge.detail-masters img{width:68px;height:39px;max-width:68px;max-height:39px}
.cal .masters-badge.detail-masters .masters-fallback{width:68px}
.cal .masters-badge.detail-masters .masters-fallback strong,.cal .masters-badge.detail-masters .masters-fallback .mf-sign{color:#245b42}
@media(max-width:400px){
 .cal .masters-badge{width:54px}
 .cal .masters-badge img,.cal .masters-fallback{width:52px}
 .cal .compact-top{gap:5px}
 .cal .mark-row{gap:4px}
}
/* Filtri per circuito: sotto la testata, immediati, discreti e accessibili */
.cal .month-link:disabled{opacity:.35;cursor:default;pointer-events:none}
.cal .filter-shell{margin-top:22px}
.cal .tour-filter{padding:18px 20px 19px;background:#fff;border:1px solid #dce8de;border-radius:20px;box-shadow:0 8px 29px rgba(19,51,37,.04)}
.cal .filter-label{display:flex;justify-content:space-between;align-items:end;gap:15px;margin-bottom:13px}
.cal .filter-label>div{display:flex;flex-direction:column;gap:3px}
.cal .filter-kicker{font-size:9px;font-weight:900;letter-spacing:1.55px;color:#6b9b73}
.cal .filter-label strong{font-size:16px;letter-spacing:-.4px;font-family:Manrope,Arial,sans-serif}
.cal .filter-result{font-size:11px;color:#65816e;font-weight:800;white-space:nowrap}
.cal .filter-options{display:flex;flex-wrap:wrap;gap:8px}
.cal .filter-pill{display:flex;align-items:center;gap:7px;background:#f5f8f4;border:1px solid #dce8dd;padding:10px 14px;border-radius:100px;color:#4c6658;font-weight:800;font-size:11px;white-space:nowrap;line-height:1;transition:background .2s,color .2s,transform .2s,border-color .2s,box-shadow .2s}
.cal .filter-pill:hover{background:#e8f1e3;transform:translateY(-1px)}
.cal .filter-pill.active{background:#123e30;border-color:#123e30;color:#d2f66b;box-shadow:0 4px 10px rgba(26,72,39,.17)}
.cal .filter-pill .pill-count{font-size:10px;font-weight:900;min-width:20px;text-align:center;padding:5px 6px;border-radius:50px;background:#e5ede2;color:#53745b}
.cal .filter-pill.active .pill-count{background:#3b5e42;color:#e2f6ac}
.cal .filter-pill .pill-dot{height:7px;width:7px;border-radius:50%;background:var(--chip,#87a98a)}
.cal .filter-pill.active .pill-dot{background:#d2f66b}
.cal .slam-badge{background:transparent!important;border:0!important;border-radius:0!important;width:65px;height:39px;overflow:visible}
.cal .slam-badge img{object-fit:contain;mix-blend-mode:normal;max-width:100%;max-height:100%;padding:2px}
.cal .slam-badge .slam-fallback,.cal .slam-badge.ao .slam-fallback,.cal .slam-badge.rg .slam-fallback,.cal .slam-badge.wimbledon .slam-fallback,.cal .slam-badge.usopen .slam-fallback{background:transparent!important;color:inherit;border:0}
.cal .slam-badge.detail-slam{background:transparent!important;border:0!important}
@media(max-width:720px){
 .cal .filter-shell{margin-top:13px}
 .cal .tour-filter{padding:15px 13px;border-radius:16px}
 .cal .filter-label strong{font-size:14px}
 .cal .filter-label{align-items:start}
 .cal .filter-result{font-size:10px}
 .cal .filter-options{gap:7px}
 .cal .filter-pill{font-size:10px;padding:10px 11px}
 .cal .filter-pill .pill-count{font-size:9px;min-width:18px;padding:4px 5px}
}
/* Navigazione in due livelli: sport prima, circuito poi */
.cal .sport-first{display:flex;align-items:center;justify-content:space-between;gap:20px}
.cal .sport-heading{display:flex;flex-direction:column;gap:5px;min-width:190px}
.cal .sport-heading strong{font-size:16px;font-family:Manrope,Arial,sans-serif;letter-spacing:-.45px}
.cal .sport-options{display:flex;flex:1;justify-content:flex-end;gap:9px;flex-wrap:wrap}
.cal .sport-pill{min-width:165px;display:flex;align-items:center;gap:12px;text-align:left;background:#f5f8f4;color:#345c47;border:1.5px solid #ddeade;padding:12px 15px;border-radius:14px;transition:background .2s,border-color .2s,transform .2s;box-shadow:none}
.cal .sport-pill:hover{transform:translateY(-1px);background:#edf4e9}
.cal .sport-pill.active{background:#123e30;color:#fff;border-color:#123e30;box-shadow:0 5px 15px rgba(18,62,48,.15)}
.cal .sport-glyph{width:32px;height:32px;border-radius:11px;background:#e5efe2;color:#346b4d;display:grid;place-items:center;flex-shrink:0;font-size:19px;font-weight:800}
.cal .sport-pill.active .sport-glyph{background:#315f43;color:#d7f67c}
.cal .sport-text{display:flex;flex-direction:column;min-width:0;flex:1;gap:2px}
.cal .sport-text strong{font-size:14px;line-height:1.2;font-family:Manrope,Arial,sans-serif}
.cal .sport-text small{font-size:9px;color:#80938a;font-weight:700;white-space:nowrap}
.cal .sport-pill.active .sport-text small{color:#a7c4ac}
.cal .sport-count{font-size:10px;background:#e3eddf;border-radius:100px;padding:4px 7px;color:#496f53;font-weight:800}
.cal .sport-pill.active .sport-count{background:#386349;color:#dbf48a}
.cal .filter-divider{height:1px;background:#e6eee6;margin:20px 0}
@media(max-width:990px){
 .cal .sport-first{flex-direction:column;align-items:stretch;gap:13px}
 .cal .sport-options{justify-content:stretch}
 .cal .sport-pill{flex:1;min-width:0}
}
@media(max-width:560px){
 .cal .sport-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
 .cal .sport-pill{min-height:59px;}
 .cal .sport-options .sport-pill:last-child{grid-column:1/-1;justify-content:center;min-height:40px;background:#fff}
 .cal .sport-options .sport-pill:last-child.active{background:#123e30}
 .cal .sport-options .sport-pill:last-child .sport-text{flex:none}
 .cal .sport-options .sport-pill:last-child .sport-glyph{width:22px;height:22px;font-size:13px}
 .cal .sport-options .sport-pill:last-child .sport-count{margin-left:5px}
 .cal .sport-options{gap:6px}
 .cal .sport-pill{padding:10px 9px;gap:6px;border-radius:11px}
 .cal .sport-glyph{width:27px;height:27px;font-size:15px;border-radius:8px}
 .cal .sport-text strong{font-size:12px}
 .cal .sport-text small{display:none}
 .cal .sport-count{font-size:9px;padding:3px 5px}
 .cal .filter-divider{margin:15px 0}
 .cal .sport-heading strong{font-size:14px}
}
/* Etichette leggere integrate nel bordo superiore sinistro delle schede. */
.cal .t-card{overflow:hidden}
.cal .corner-tag{position:absolute;z-index:2;top:-1px;left:-1px;
 max-width:54%;padding:9px 13px 8px;
 display:inline-flex;align-items:center;min-height:29px;
 border-radius:15px 0 10px 0;
 white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
 color:#476b56;background:#ebf2e9;
 border:1px solid #dfeadf;border-top:0;border-left:0;
 font-family:Manrope,Arial,sans-serif;font-size:9px;font-weight:900;letter-spacing:.25px;
 box-shadow:0 2px 5px rgba(21,54,37,.025)}
.cal .corner-tag.tag-slam{color:#ddf3a6;background:#153f30;border-color:#153f30}
.cal .corner-tag.tag-master{color:#25492e;background:#cff16c;border-color:#c6eb66}
.cal .corner-tag.tag-padel{color:#186a5a;background:#e4f7f1;border-color:#d4efe7}
.cal .corner-tag.tag-itf{color:#497c60;background:#eff6ee;border-color:#e0ede0}
.cal .corner-tag.tag-challenger{color:#6b7850;background:#f2f5e9;border-color:#e8ebdf}
.cal .compact-top.corner-layout{min-height:55px;padding:12px 13px 1px;justify-content:flex-end;align-items:center}
.cal .corner-layout .mark-row{gap:8px;justify-content:flex-end}
.cal .corner-layout .slam-badge{width:65px;height:37px}
.cal .corner-layout .masters-badge{width:63px;height:36px}
.cal .corner-layout .slam-badge img{padding:1px}
.cal .t-card.is-selected .corner-tag{box-shadow:1px 2px 10px rgba(41,84,45,.13)}
@media(max-width:400px){
 .cal .corner-tag{font-size:8px;padding:9px 10px 8px}
 .cal .corner-layout .mark-row{gap:5px}
}
/* Settimane separate per un mese ITF particolarmente ricco */
.cal .week-head{display:flex;justify-content:space-between;align-items:center;margin:22px 0 13px;border-top:1px solid #dee9df;padding-top:12px;color:#234d36;font-size:13px;font-weight:900;letter-spacing:-.1px}
.cal .week-head:first-of-type{margin-top:0;border-top:0;padding-top:0}
.cal .week-arrow{margin:0 8px;color:#8bb178}
.cal .week-head small{font-weight:800;font-size:10px;color:#5e8269;background:#e9f2e5;padding:6px 9px;border-radius:30px}
.cal .week-head+.cards{margin-bottom:20px}
/* V5 — Le superfici diventano filigrane nella sezione inferiore della scheda.
   Niente miniature: soltanto una tinta leggerissima e il disegno del campo. */
.cal .corner-layout .mark-row{min-height:36px;}
.cal .card-data{position:relative;isolation:isolate;
  margin:0 -14px;padding:0 14px 1px;
  background:var(--court-wash,#f7faf6);
  border-top:1px solid rgba(42,79,55,.075);
  overflow:hidden;}
.cal .card-data::before{content:'';position:absolute;z-index:0;pointer-events:none;
  inset:0;
  background-image:var(--court-art);
  background-repeat:no-repeat;
  background-position:right -17px center;
  background-size:205px 117px;
  opacity:.64;}
.cal .card-data::after{content:'';position:absolute;z-index:0;pointer-events:none;inset:0;
  background:linear-gradient(90deg,rgba(255,255,255,.76),rgba(255,255,255,.15) 81%,rgba(255,255,255,0));}
.cal .card-data > *{position:relative;z-index:1;}
.cal .card-data .fact-grid{border-top:none;padding-top:11px;}
.cal .card-data .fact-icon{color:#607d6b;}
.cal .card-data .fact-value{color:#1a382e;}
.cal .card-data .fact-value.secondary{color:#617a6f;}
.cal .card-data .surface-inline{padding-bottom:9px;color:#4e695c;}
.cal .t-card.is-selected .card-data{box-shadow:inset 0 0 0 1px rgba(116,174,58,.10);}
.cal .panel-brand .detail-surface{display:inline-flex;align-items:center;gap:9px;}
.cal .panel-brand .detail-surface::before{content:'';height:8px;width:8px;border-radius:50%;background:#c9ef59;flex:none;}
@media(max-width:620px){
 .cal .card-data{margin:0 -15px;padding:0 15px 1px;}
 .cal .card-data::before{background-size:218px 124px;background-position:right -7px center;opacity:.57;}
}
/* COPERTINA: una foto, senza illustrazioni, palline o nastri sovrapposti. */
.cal .hero-wrap{min-height:345px;grid-template-columns:52% 48%;}
.cal .hero-left{padding:42px 24px 37px 52px;min-width:0}
.cal .hero-left h1{margin:0 0 16px;max-width:640px}
.cal .hero-desc{max-width:460px}
.cal .hero-stats{margin-top:auto;padding-top:30px}
.cal .hero-photo{min-height:345px;position:relative;overflow:hidden;background:#164936}
.cal .hero-player-image{width:100%;height:100%;position:absolute;inset:0;object-fit:cover;object-position:50% 45%;filter:saturate(.87) contrast(1.05);transition:opacity .24s ease;opacity:1;}
.cal .hero-photo:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#103c2e 0%,rgba(16,60,46,.50) 11%,rgba(16,60,46,.09) 35%,transparent 70%),linear-gradient(0deg,rgba(10,50,37,.18),transparent 55%)}
@media(max-width:900px) and (min-width:721px){
 .cal .hero-wrap{grid-template-columns:55% 45%}
 .cal .hero-left{padding:35px 15px 30px 35px}
 .cal .hero-photo{min-height:340px}
}
@media(max-width:720px){
 .cal .hero-wrap{grid-template-columns:1fr;min-height:0}
 .cal .hero-left{padding:29px 25px 25px}
 .cal .hero-left h1{margin:0 0 14px}
 .cal .hero-stats{margin-top:22px;padding-top:4px}
 .cal .hero-photo{min-height:215px;max-height:235px}
 .cal .hero-photo:after{background:linear-gradient(180deg,#103c2e 0%,rgba(16,60,46,.16) 25%,transparent 65%)}
}
/* V7 · Fotografie reali dei campi in filigrana, schede a densita' maggiore. */
.cal .cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}
.cal .calendar-layout{grid-template-columns:minmax(0,1fr) 280px;gap:18px}
.cal .t-card{min-height:0;border-radius:14px}
.cal .compact-top.corner-layout{min-height:41px;padding:8px 11px 0}
.cal .corner-layout .mark-row{min-height:29px}
.cal .corner-layout .slam-badge{width:57px;height:31px}
.cal .corner-layout .masters-badge{width:55px;height:31px}
.cal .corner-tag{min-height:26px;padding:7px 10px 6px;border-radius:13px 0 9px 0;font-size:8px}
.cal .card-body{padding:3px 11px 0}
.cal .card-name{font-size:14px;line-height:1.17;letter-spacing:-.4px;margin:5px 0 7px;min-height:33px}
.cal .card-head .status{font-size:8px}
.cal .card-head .sport-tag{font-size:8px}
.cal .location-dates{gap:4px;padding-bottom:9px}
.cal .location-dates div{font-size:10px;gap:5px}
.cal .location-dates svg{width:11px;height:11px}
.cal .card-data{margin:0 -11px;padding:0 11px 0;background:var(--court-wash,#f7faf6)}
.cal .card-data::before{background-image:var(--court-photo),var(--court-art);background-size:cover,210px 115px;background-position:50% 55%,right -30px center;background-repeat:no-repeat;opacity:.27;filter:saturate(.82) contrast(.92)}
.cal .card-data::after{background:linear-gradient(90deg,rgba(255,255,255,.77) 0%,rgba(255,255,255,.52) 55%,rgba(255,255,255,.38) 100%)}
.cal .card-data .fact-grid{padding:8px 0 7px;gap:5px}
.cal .fact-icon{font-size:8px;letter-spacing:0;gap:3px}
.cal .fact-icon svg{width:10px;height:10px}
.cal .fact-value{font-size:10px;margin-top:3px;min-height:15px}
.cal .fact-value.secondary{font-size:9px}
.cal .card-data .surface-inline{font-size:9px;min-height:21px;padding-bottom:6px}
.cal .card-foot{padding:8px 11px;font-size:10px}
.cal .check-ring{width:16px;height:16px;font-size:10px}
.cal .t-card.is-selected{border-width:2px}
/* Fotografie di campi vuoti; persone identificabili assenti nell'immagine di copertina. */
.cal .hero-player-image{filter:saturate(.83) contrast(1.05)}
.cal .hero-photo:after{background:linear-gradient(90deg,#103c2e 0%,rgba(16,60,46,.42) 18%,rgba(16,60,46,.05) 57%,transparent 85%)}
@media(min-width:1150px){
 .cal .cards{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(min-width:960px) and (max-width:1250px){
 .cal .cards{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:959px){
 .cal .calendar-layout{grid-template-columns:minmax(0,1fr)}
 .cal .cards{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:770px){
 .cal .cards{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:540px){
 .cal .cards{grid-template-columns:1fr}
 .cal .card-name{min-height:0;font-size:15px}
 .cal .card-data::before{opacity:.25}
}
/* Non riservare spazio al pannello quando non è selezionato alcun torneo. */
.cal .side[hidden]{display:none!important}
.cal .calendar-layout.no-selection{grid-template-columns:minmax(0,1fr)}
@media(min-width:1150px){
 .cal .calendar-layout.no-selection .cards{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(min-width:771px) and (max-width:1149px){
 .cal .calendar-layout.no-selection .cards{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(min-width:541px) and (max-width:770px){
 .cal .calendar-layout.no-selection .cards{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:540px){
 .cal .calendar-layout.no-selection .cards{grid-template-columns:1fr}
}

/* ---------- Aggiunte per i dati veri ---------- */
/* La riga dei dati al posto della nota "prototipo" del modello: fonte, aggiornamento, elenchi completi. */
.cal .data-ribbon a { color: #335947; font-weight: 700; text-decoration: underline; text-underline-offset: 2px; }
/* Mentre i tornei arrivano, o se non arrivano. */
.cal .stream-state { margin: 4px 0 30px; padding: 22px 20px; border: 1px dashed #d3e0d4; border-radius: 14px; color: var(--sub); font-size: 13px; line-height: 1.55; }
.cal .stream-state a { color: #335947; font-weight: 700; text-decoration: underline; }
/* Riquadro del torneo scelto: la seconda riga di un valore (l'avversario in finale, l'ora di un incontro). In fondo,
   dal 13/10/2026 (richieste dell'utente), il tasto della pagina del torneo ("Il tabellone del torneo") ha lo stile che
   aveva "Torneo selezionato · Deseleziona", che non c'è più. */
.cal .panel-row strong small { display: block; margin-top: 3px; color: #9ab6a8; font-size: 10px; font-weight: 600; }
.cal a.panel-action { text-decoration: none; }
/* Crediti di foto e loghi nella fascia scura in fondo, come nel piè del modello. */
.cal .cal-footer a { color: #dcefe0; text-decoration: underline; text-underline-offset: 2px; }
.cal .cal-footer small { line-height: 1.6; }
.cal .cal-footer-in > div { max-width: 1060px; }
/* Con quasi novecento schede i mesi fuori dallo schermo non si impaginano finché non ci si arriva (lo script mette
   su ogni mese la stima della sua altezza): nulla cambia in ciò che si vede. content-visibility taglia ciò che
   esce dal mese, quindi il mese ha un margine interno per ombre e anello delle schede, preso dai margini esterni
   (stesse distanze di prima: 25 px sotto, come nel modello). */
.cal .m-section { content-visibility: auto; padding: 0 14px 25px; margin: 0 -14px; }
/* Senza JavaScript restano gli elenchi completi. */
.cal .noscript { margin: 0 0 23px; font-size: 13px; color: var(--sub); }
.cal .noscript a { color: #335947; font-weight: 700; text-decoration: underline; }
/* L'etichetta in alto a sinistra porta anche il nome del torneo ed è il titolo della scheda (richiesta dell'utente
   del 08/10/2026: categoria, trattino e nome, alla grandezza che il nome aveva sotto, dove non c'è più). Sta nel
   flusso accanto al logo: un nome lungo va a capo e la scheda si allunga, invece di tagliarlo. Con più schede per
   riga la parte alta tiene il posto di due righe di etichetta, come prima faceva il titolo, così date e risultati
   restano allineati da una scheda all'altra; in una colonna sola no. */
.cal .compact-top.corner-layout { min-height: 50px; padding: 0 11px 0 0; justify-content: space-between; align-items: flex-start; }
.cal .corner-layout .mark-row { margin-top: 8px; }
.cal .corner-tag { position: relative; top: auto; left: auto; display: block; flex: 0 1 auto; max-width: none; margin: -1px 0 0 -1px; padding: 8px 12px 7px; white-space: normal; overflow-wrap: anywhere; font-size: 14px; font-weight: 800; line-height: 1.17; letter-spacing: -.4px; }
.cal .card-head + .location-dates { margin-top: 8px; }
@media (max-width: 540px) {
  .cal .compact-top.corner-layout { min-height: 0; }
  .cal .corner-tag { font-size: 15px; }
}
/* Colori per tipo di torneo, schede più piene, tornei in corso in evidenza (richiesta dell'utente del 08/10/2026:
   "scegli i colori per il tipo di torneo per l'etichetta in alto a sinistra. inoltre i colori dei box dei tornei sono
   un pò troppo chiari. I tornei in corso evidenziali maggiormente").
   Etichette: la tinta è quella del puntino della categoria nei filtri; più il torneo è importante, più il colore è
   pieno (oro per Slam e Major, viola per le Finals, blu per ATP 500, pervinca per ATP 250, verde petrolio per P1).
   P2, Challenger e ITF, quasi ottocento schede, restano tinte chiare con il testo scuro della stessa tinta. Il Masters
   1000 tiene il lime del modello, più sopra: "il master 1000 è l'unica etichetta che mi piace, quindi puoi tenerla"
   (l'utente). Testo e fondo hanno sempre un contrasto di almeno 4,5 a 1. */
.cal .corner-tag.tag-slam, .cal .corner-tag.tag-major { color: #33270a; background: #dcb243; border-color: #cba237; }
.cal .corner-tag.tag-finals, .cal .corner-tag.tag-padelFinals { color: #fff; background: #6c48a0; border-color: #603f91; }
.cal .corner-tag.tag-a500 { color: #fff; background: #2d6fb4; border-color: #2864a3; }
.cal .corner-tag.tag-a250 { color: #fff; background: #5868bb; border-color: #4f5fae; }
.cal .corner-tag.tag-p1 { color: #fff; background: #23807a; border-color: #1f736e; }
.cal .corner-tag.tag-p2 { color: #1f5d6e; background: #d2edf3; border-color: #bfe2eb; }
.cal .corner-tag.tag-challenger { color: #8a3c0e; background: #fbe1cd; border-color: #f1cdb1; }
.cal .corner-tag.tag-itf { color: #5c3a88; background: #ebe0f6; border-color: #dccbee; }
/* Schede più piene: bordo e piede più scuri, la foto del campo più presente sotto un velo bianco più leggero (le
   tinte delle superfici, più piene anche loro, sono in calendario.js). Le scritte sopra la foto sono più scure e hanno
   un alone chiaro, e il velo resta più fitto dove c'è testo: misurate contro il fondo vero, fotografato senza testi,
   stanno sopra 4,5 a 1 (la riga "contro …" del modello, grigia, era a 3,2 già sul fondo chiaro). Stato e sport delle
   schede, grigi e minuscoli nel modello, sono più scuri per la stessa ragione. */
.cal .t-card { border-color: #d3dfd6; box-shadow: 0 6px 18px rgba(21, 53, 33, .07); }
.cal .card-foot { background: #f3f7f1; border-top-color: #e3eae2; }
.cal .card-data::before { opacity: .5; filter: none; }
.cal .card-data::after { background: linear-gradient(90deg, rgba(255, 255, 255, .7) 0%, rgba(255, 255, 255, .52) 55%, rgba(255, 255, 255, .34) 100%); }
.cal .card-data .fact, .cal .card-data .surface-inline { text-shadow: 0 0 3px rgba(255, 255, 255, .9), 0 0 1px rgba(255, 255, 255, .9); }
.cal .card-data .fact-icon { color: #3b5649; }
.cal .card-data .fact-value { color: #12291f; }
.cal .card-data .fact-value.secondary, .cal .card-data .fact-value .subline { color: #3b5649; }
.cal .card-data .surface-inline { color: #2f4a3d; }
.cal .card-head .sport-tag { color: #5c6f66; }
.cal .card-head .status { color: #5f7368; }
.cal .card-head .status.soon { color: #7a6528; }
/* Tornei in corso: bordo verde smeraldo con l'alone, "In corso" in una pastiglia piena con il puntino che pulsa, piede
   verde. Lo smeraldo è diverso dal verde lime della scheda scelta, che vince quando la scheda in corso è anche scelta.
   La pastiglia sporge sopra e sotto senza alzare la riga (margini negativi): nelle righe miste le date restano
   allineate. Il mese che ha tornei in corso porta lo stesso puntino nella barra dei mesi. */
.cal .t-card.is-live { border-color: #1f9d62; box-shadow: 0 0 0 3px rgba(31, 157, 98, .17), 0 10px 24px rgba(19, 90, 55, .13); }
.cal .t-card.is-live .card-head .status.live { margin: -5px 0; padding: 4px 8px 4px 7px; border-radius: 20px; background: #17804b; color: #fff; font-size: 9px; letter-spacing: .4px; text-transform: uppercase; }
.cal .t-card.is-live .status.live::before { background: #fff; box-shadow: none; animation: cal-vivo 1.8s ease-out infinite; }
.cal .t-card.is-live .card-foot { background: #e6f5ec; border-top-color: #cfe9da; }
.cal .t-card.is-live.is-selected { border-color: #81bb34; box-shadow: 0 0 0 3px rgba(179, 224, 72, .29), 0 14px 28px rgba(35, 76, 39, .13); }
.cal .t-card.is-live.is-selected .card-foot { background: #e9f8c6; }
@keyframes cal-vivo { 0% { box-shadow: 0 0 0 0 rgba(255, 255, 255, .85); } 70%, 100% { box-shadow: 0 0 0 5px rgba(255, 255, 255, 0); } }
.cal .month-link.has-live::after { content: ''; display: inline-block; width: 7px; height: 7px; margin-left: 6px; border-radius: 50%; background: #1f9d62; box-shadow: 0 0 0 3px rgba(31, 157, 98, .2); vertical-align: 1px; }
/* Le foto dell'apertura scelte dall'utente il 08/10/2026 restano come sono: il modello le spegneva un poco
   (saturate .83), e le foto di prima erano già grigie. */
.cal .hero-player-image { filter: none; }
/* ATP o WTA (dal 08/10/2026 sera): sotto la scelta dello sport, per il tennis e per "Tutti". */
.cal .tour-pick { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.cal .tour-pick[hidden] { display: none; }
.cal .tour-pick-label { font-size: 9px; font-weight: 900; letter-spacing: 1.55px; color: #6b9b73; text-transform: uppercase; margin-right: 4px; }
.cal .tour-btn { display: flex; align-items: center; gap: 8px; background: #f5f8f4; border: 1px solid #dce8dd; padding: 9px 14px; border-radius: 100px; color: #4c6658; font-weight: 800; font-size: 12px; line-height: 1; cursor: pointer; transition: background .2s, color .2s, border-color .2s; }
.cal .tour-btn:hover { background: #e8f1e3; }
.cal .tour-btn.active { background: #123e30; border-color: #123e30; color: #d2f66b; box-shadow: 0 4px 10px rgba(26,72,39,.17); }
.cal .tour-btn .pill-count { font-size: 10px; font-weight: 900; padding: 4px 6px; border-radius: 50px; background: #e5ede2; color: #53745b; }
.cal .tour-btn.active .pill-count { background: #3b5e42; color: #e2f6ac; }
@media (max-width: 540px) { .cal .tour-pick { justify-content: flex-start; } }
/* Le etichette della WTA con i colori dei livelli uguali dell'ATP: il 1000 il lime del Masters, 500 blu, 250 pervinca,
   le Finals viola, la 125 come i Challenger. */
.cal .corner-tag.tag-w1000 { color: #25492e; background: #cff16c; border-color: #c6eb66; }
.cal .corner-tag.tag-wfinals { color: #fff; background: #6c48a0; border-color: #603f91; }
.cal .corner-tag.tag-w500 { color: #fff; background: #2d6fb4; border-color: #2864a3; }
.cal .corner-tag.tag-w250 { color: #fff; background: #5868bb; border-color: #4f5fae; }
.cal .corner-tag.tag-w125 { color: #8a3c0e; background: #fbe1cd; border-color: #f1cdb1; }
/* Slam e 1000: nel piede della scheda il link al tabellone (il resto della scheda la sceglie, come sempre). */
.cal .card-foot .draw-link { color: #17804b; font-weight: 800; text-decoration: none; white-space: nowrap; }
.cal .card-foot .draw-link:hover { text-decoration: underline; }
.cal .card-foot .foot-pick { display: inline-flex; align-items: center; gap: 8px; min-width: 0; }
.cal .t-card.is-live .card-foot .draw-link { color: #126b3e; }
/* Il meteo (dal 08/10/2026 notte): nella scheda icona e gradi accanto al luogo, solo quando ci sono (in corso: adesso;
   in arrivo entro cinque giorni: il primo giorno, massima e minima); nel riquadro i prossimi giorni. */
.cal .location-dates .wx { margin-left: auto; display: inline-flex; align-items: center; gap: 3px; flex: none; overflow: visible; padding: 1px 8px 1px 3px; border-radius: 999px; background: #f1f7fc; border: 1px solid #d9e6f0; color: #12291f; font-size: 12px; font-weight: 800; line-height: 1; }
.cal .location-dates .wx svg { width: 22px; height: 22px; stroke: none; fill: none; stroke-width: 1; flex: none; }
.cal .location-dates .wx small { font-size: 10px; font-weight: 700; color: #5f7368; }
.cal .location-dates .wx small::before { content: '/'; margin: 0 1px; color: #9db0a6; }
.cal .t-card.is-live .location-dates .wx { background: #ffffff; border-color: #cfe9da; }
.cal .panel-wx { margin: 6px 22px 0; padding: 14px 14px 12px; border-radius: 16px; background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.1); }
.cal .panel-wx-t { font-size: 11px; font-weight: 800; color: #d7f67c; letter-spacing: .3px; }
.cal .panel-wx .wx-ora { display: flex; align-items: center; gap: 8px; margin: 8px 0 4px; }
.cal .panel-wx .wx-ora svg { width: 40px; height: 40px; }
.cal .panel-wx .wx-ora b { font-size: 24px; font-weight: 800; color: #fff; }
.cal .panel-wx .wx-ora span { font-size: 11px; color: #c9ddd1; }
.cal .panel-wx ul { list-style: none; margin: 8px 0 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 4px; }
.cal .panel-wx li { display: flex; flex-direction: column; align-items: center; gap: 1px; padding: 6px 2px; border-radius: 10px; background: rgba(255,255,255,.05); text-align: center; }
.cal .panel-wx li svg { width: 30px; height: 30px; }
.cal .panel-wx .wx-d { font-size: 9px; font-weight: 800; color: #9ab6a8; text-transform: uppercase; letter-spacing: .3px; white-space: nowrap; }
.cal .panel-wx li b { font-size: 12px; color: #fff; }
.cal .panel-wx li small { font-size: 10px; color: #9ab6a8; }
.cal .panel-wx li em { display: inline-flex; align-items: center; gap: 2px; font-style: normal; font-size: 9px; font-weight: 700; color: #8cc8f0; white-space: nowrap; }
.cal .panel-wx li em svg { width: 7px; height: 9px; }
.cal .panel-wx-s { margin-top: 8px; font-size: 9px; color: #8fa99b; }

/* ---------- Il fondo del sito (dal 09/10/2026) ----------
   Richiesta dell'utente: "trovo lo sfondo dei tornei poco in linea con il resto del sito"; fra cinque varianti
   provate sulla pagina vera ha scelto la 3, "verde campo" ("applica la variante 3 e pubblica"). La pagina prende
   il verde del sito, più scuro sotto la testata, uguale dall'inizio alla fine; schede, filtri, apertura e riquadro
   del torneo scelto restano come nel modello. Cambia ciò che stava direttamente sul fondo chiaro: titoli e note
   in chiaro, barra dei mesi verde scura con il mese attivo in lime (come la lingua scelta nella testata),
   conteggi e righe in bianco trasparente, riga dei dati come i riquadri del sito, link menta. Sul verde il bordo
   smeraldo delle schede in corso si vedeva poco (2,4 a 1): diventa menta, e la scheda scelta resta lime. Un
   gradiente su tutta la pagina non va: è alta circa 60.000 px, e i titoli scuri sul verde scuro hanno 1,2 a 1.
   I colori sono scritti per esteso: dentro .cal le variabili --ink, --line e --lime sono quelle del modello. */
.cal { background: linear-gradient(180deg, #003d29 0, #005b3c 560px) #005b3c; }
.cal .hero-wrap { box-shadow: 0 18px 45px rgba(0, 20, 12, .35); border: 1px solid rgba(255, 255, 255, .08); }
.cal .tour-filter { box-shadow: 0 10px 30px rgba(0, 20, 12, .3); border-color: transparent; }
.cal .kick { color: #a6f2cb; }
.cal h2, .cal .m-title { color: #fff; }
.cal h2 span { color: #c5dfd0; }
.cal .muted, .cal .season-note { color: #c5dfd0; }
.cal .month-bar-wrap { background: rgba(0, 61, 41, .94); border-bottom-color: rgba(255, 255, 255, .12); }
.cal .month-link { color: #c5dfd0; }
.cal .month-link small { color: #8fbba3; }
.cal .month-link:hover { background: rgba(255, 255, 255, .08); }
.cal .month-link.active { background: #d7ff21; color: #2f3a00; border-color: #d7ff21; }
.cal .month-link.active small { color: #4b5a00; }
.cal .m-count { background: rgba(255, 255, 255, .12); color: #eaf5ee; }
.cal .m-rule { background: rgba(255, 255, 255, .16); }
.cal .week-head { color: #eaf5ee; border-top-color: rgba(255, 255, 255, .14); }
.cal .week-arrow { color: #a6f2cb; }
.cal .week-head small { background: rgba(255, 255, 255, .12); color: #eaf5ee; }
.cal .data-ribbon { background: rgba(255, 255, 255, .07); border-color: rgba(255, 255, 255, .16); color: #c5dfd0; }
.cal .data-ribbon b { color: #fff; }
.cal .data-ribbon a, .cal .stream-state a, .cal .noscript a { color: #a6f2cb; }
.cal .mini-info { background: rgba(255, 255, 255, .16); color: #fff; }
.cal .stream-state { border-color: rgba(255, 255, 255, .25); color: #c5dfd0; }
.cal .noscript { color: #c5dfd0; }
.cal .t-card { border-color: transparent; box-shadow: 0 10px 30px rgba(0, 20, 12, .28); }
.cal .t-card.is-live { border-color: #a6f2cb; box-shadow: 0 0 0 3px rgba(166, 242, 203, .35), 0 10px 30px rgba(0, 20, 12, .3); }
.cal .t-card.is-selected, .cal .t-card.is-live.is-selected { border-color: #d7ff21; box-shadow: 0 0 0 4px rgba(215, 255, 33, .35), 0 16px 30px rgba(0, 20, 12, .35); }
.cal .select-panel { box-shadow: 0 22px 40px rgba(0, 20, 12, .4); border: 1px solid rgba(255, 255, 255, .1); }
.cal button:focus-visible, .cal .t-card:focus-visible, .cal a:focus-visible { outline-color: #d7ff21; }

/* ---------- La scelta di un torneo (dal 09/10/2026) ----------
   Richieste dell'utente: "quando seleziono un torneo rendere molto più evidente quello selezionato", e il riquadro
   che "riduce lo spazio dei boxes e questo obbliga a ricalcolare lo spazio che alla fine sposta il box che avevo
   selezionato". La scheda scelta ha un anello lime pieno con l'alone, il piede lime ed è sollevata; finché c'è una
   scelta le altre schede si attenuano, e tornano piene passandoci sopra. Anello e alone sono ombre: la scheda non
   cambia misura (il bordo resta come nelle altre, e l'etichetta «selezionato» con i margini negativi non alza la sua
   riga: prima la scheda scelta cresceva di 5 px e spostava le righe sotto). Da computer il riquadro sta sopra le
   schede, nella stessa cella della griglia: largo come una colonna, sopra l'ultima colonna o, se la scheda sta lì,
   sopra la prima (lo decide js/calendario.js); scorre fermo sotto la barra dei mesi come prima, ma la griglia non
   perde più una colonna e nessuna scheda si sposta. */
.cal .t-card { transition: transform .2s, border-color .18s, box-shadow .2s, opacity .2s; }
.cal .t-card.is-selected, .cal .t-card.is-live.is-selected { border-width: 1.5px; border-color: #d7ff21; transform: translateY(-4px); z-index: 2;
  box-shadow: 0 0 0 3px #d7ff21, 0 0 0 9px rgba(215, 255, 33, .3), 0 0 46px 8px rgba(215, 255, 33, .32), 0 22px 40px rgba(0, 20, 12, .5); }
.cal .t-card.is-selected .card-foot, .cal .t-card.is-live.is-selected .card-foot { background: #d7ff21; color: #2f3a00; border-top-color: #c3ea12; }
.cal .t-card.is-selected .picked-inline { background: #d7ff21; color: #2f3a00; text-shadow: none; margin-block: -4px; }
.cal .t-card.is-selected.pulse { animation: cal-scelta .9s ease-out 1; }
@keyframes cal-scelta {
  0% { box-shadow: 0 0 0 3px #d7ff21, 0 0 0 3px rgba(215, 255, 33, .7), 0 0 0 0 rgba(215, 255, 33, 0), 0 22px 40px rgba(0, 20, 12, .5); }
  40% { box-shadow: 0 0 0 3px #d7ff21, 0 0 0 18px rgba(215, 255, 33, .2), 0 0 70px 18px rgba(215, 255, 33, .45), 0 22px 40px rgba(0, 20, 12, .5); }
  100% { box-shadow: 0 0 0 3px #d7ff21, 0 0 0 9px rgba(215, 255, 33, .3), 0 0 46px 8px rgba(215, 255, 33, .32), 0 22px 40px rgba(0, 20, 12, .5); }
}
.cal .has-selection .t-card:not(.is-selected) { opacity: .55; }
.cal .has-selection .t-card:not(.is-selected):hover, .cal .has-selection .t-card:not(.is-selected):focus-visible { opacity: 1; }
.cal .select-panel { position: relative; }
.cal .panel-close { position: absolute; z-index: 1; top: 12px; right: 12px; width: 32px; height: 32px; display: grid; place-items: center; padding: 0;
  border-radius: 50%; border: 1px solid rgba(255, 255, 255, .28); background: rgba(0, 0, 0, .3); color: #fff; font-size: 19px; line-height: 1; cursor: pointer; }
.cal .panel-close:hover { background: rgba(255, 255, 255, .16); }
@media (min-width: 971px) {
  .cal .calendar-layout > .stream, .cal .calendar-layout > .side { grid-row: 1; grid-column: 1; }
  .cal .side { justify-self: end; z-index: 5; top: 88px; width: var(--largo, min(300px, 30vw)); max-height: calc(100vh - 108px);
    overflow: auto; overscroll-behavior: contain; border-radius: 21px; animation: cal-riquadro .18s ease-out; }
  .cal .side.a-sinistra { justify-self: start; }
  .cal .side .select-panel { border: 1px solid rgba(255, 255, 255, .2); box-shadow: 0 24px 60px rgba(0, 0, 0, .55); }
  .cal.con-categorie .side { top: calc(88px + var(--striscia, 54px)); max-height: calc(100vh - 108px - var(--striscia, 54px)); }
}
@keyframes cal-riquadro { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .cal .side, .cal .t-card.is-selected.pulse { animation: none; } }

/* L'apertura dell'elenco (dal 09/10/2026, richieste dell'utente): tolte la frase con le istruzioni e la legenda dei
   terreni, che le schede già mostrano; la riga del calendario sta accanto al titolo, ognuno con il suo stile. */
.cal .main-intro { justify-content: flex-start; align-items: baseline; flex-wrap: wrap; gap: 6px 20px; }
.cal .main-intro h2 { margin: 0; }

/* La striscia delle categorie (dal 09/10/2026, l'utente: le categorie "a portata di click" mentre si scorre): sotto
   la barra dei mesi, quando le pillole dei filtri sono uscite dallo schermo; sta sopra le schede, senza spostarle. */
.cal .cat-bar { position: absolute; left: 0; right: 0; top: 100%; padding: 8px 0 10px; background: rgba(0, 61, 41, .94);
  backdrop-filter: blur(14px); border-bottom: 1px solid rgba(255, 255, 255, .12); }
.cal .cat-bar[hidden] { display: none; }
/* A sinistra delle pillole il pulsante che riporta in cima (dal 10/10/2026): fuori dalla fila che scorre di lato, così
   sul telefono resta sempre in vista. */
/* Dal 13/10/2026 (l'utente: "il bottone per tornare in alto, la freccia in su, dalle più spazio. sposta leggermente a
   destra le pillole dei tornei") fra il pulsante e le pillole ci sono 18 px invece di 8. */
.cal .cat-bar-row { display: flex; align-items: center; gap: 18px; }
.cal .to-top { flex: none; width: 30px; height: 30px; padding: 0; display: grid; place-items: center; border-radius: 50%; cursor: pointer;
  background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .18); color: #eaf5ee; transition: background .2s, color .2s; }
.cal .to-top svg { width: 16px; height: 16px; }
.cal .to-top:hover { background: #d7ff21; border-color: #d7ff21; color: #2f3a00; }
.cal .to-top:focus-visible { outline: 3px solid #d7ff21; outline-offset: 2px; }
.cal .cat-bar-in { flex: 1; min-width: 0; display: flex; gap: 7px; overflow-x: auto; scrollbar-width: none; }
.cal .cat-bar-in::-webkit-scrollbar { display: none; }
.cal .cat-bar .filter-pill { flex: none; padding: 6px 11px; font-size: 11px; background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .18); color: #eaf5ee; box-shadow: none; }
.cal .cat-bar .filter-pill:hover { background: rgba(255, 255, 255, .14); transform: none; }
.cal .cat-bar .filter-pill .pill-count { background: rgba(255, 255, 255, .12); color: #c5dfd0; }
.cal .cat-bar .filter-pill.active { background: #d7ff21; border-color: #d7ff21; color: #2f3a00; }
.cal .cat-bar .filter-pill.active .pill-count { background: rgba(47, 58, 0, .15); color: #2f3a00; }
.cal .cat-bar .filter-pill.active .pill-dot { background: #2f3a00; }

/* La riga dei dati in fondo all'elenco, non più in testa (dal 09/10/2026, richiesta dell'utente). */
.cal .calendar-layout { padding-bottom: 30px; }
.cal .shell > .data-ribbon { margin: 0 0 34px; }

/* L'apertura (dal 09/10/2026, richiesta dell'utente: la descrizione "si può spostare a fianco del titolo lasciando
   che vada pure in parte sopra l'immagine"). Da 901 px in su titolo e descrizione stanno su una riga (hero-head): la
   descrizione comincia dopo il titolo, che cambia larghezza con la lingua (da 256 px in italiano a 383 in inglese a
   1300 px), e finisce sempre al 64% dell'apertura (cqw: la larghezza della hero-wrap; 52 px è il margine sinistro
   della colonna), quindi entra nella foto, che a sinistra si scurisce di più perché il testo resti leggibile.
   L'ultima riga della descrizione sta sulla linea di base di "Una storia." (l'utente: "l'ultima riga deve
   coincidere con la base della riga Una storia"): last baseline, e dove non c'è il fondo dei due blocchi. Con la
   descrizione salita l'apertura è più bassa, 300 px invece di 345 ("senza però creare senso di oppressione"): fra
   titolo e numeri restano circa 70 px, e mai meno di 48: dove la descrizione va su più righe (francese a 1000 px)
   l'apertura si allunga da sola. Sotto i 901 px, come prima, la descrizione sta sotto il titolo. */
.cal .hero-wrap { container-type: inline-size; }
@media (min-width: 901px) {
  .cal .hero-head { display: flex; align-items: flex-end; align-items: last baseline; gap: 40px; width: calc(64cqw - 52px); }
  .cal .hero-head h1 { flex: none; margin: 0; }
  .cal .hero-wrap, .cal .hero-photo { min-height: 300px; }
  .cal .hero-stats { padding-top: 48px; }
  .cal .hero-head .hero-desc { flex: 1 1 0; min-width: 230px; max-width: 420px; color: #dcebe2; text-shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 0 18px rgba(8, 40, 30, .7); }
  .cal .hero-photo:after { background: linear-gradient(90deg, #103c2e 0%, rgba(16, 60, 46, .86) 16%, rgba(16, 60, 46, .55) 34%, rgba(16, 60, 46, .1) 58%, transparent 80%); }
}

/* ATP e WTA in coda agli sport (dal 09/10/2026, richiesta dell'utente: "il circuito con i due tasti ATP e WTA può
   essere messo in coda alle discipline? i circuiti devono in questo caso ereditare il layout delle discipline così
   come la label"). Sono schede come quelle degli sport (js/calendario.js usa le stesse classi, più circuit-card:
   tour-card c'è già, in site.css, per le schede degli elenchi, e portava un margine di 14 px), con la nota
   "Circuito maschile" o "femminile" al posto della scritta "Circuito", e una riga sottile le stacca dagli sport:
   sono una scelta a parte, e con il tennis restano scelte tutte e due. Cinque schede e la domanda accanto non
   stanno su una riga, quindi la domanda va sopra, come il titolo delle categorie (sotto i 991 px era già così).
   Dove la riga non basta i circuiti vanno su una riga loro, sotto gli sport, senza la riga di stacco: la riga più
   lunga, in spagnolo, chiede 1070 px di riquadro, cioè una finestra di 1192 px; la soglia è a 1240 per la barra di
   scorrimento dei browser veri e un margine. Sotto i 991 px le schede si allargano a tutta la riga, come già quelle
   degli sport. */
.cal .sport-first { flex-direction: column; align-items: stretch; gap: 13px; }
.cal .sport-row { display: flex; align-items: stretch; gap: 9px; }
.cal .sport-row .sport-options { flex: none; justify-content: flex-start; }
.cal .tour-pick { margin: 0 0 0 9px; padding-left: 18px; border-left: 1px solid #dfe8e0; flex-wrap: nowrap; justify-content: flex-start; align-items: stretch; gap: 9px; }
@media (max-width: 1240px) {
  .cal .sport-row { flex-direction: column; align-items: flex-start; }
  .cal .tour-pick { margin: 0; padding-left: 0; border-left: 0; }
}
@media (max-width: 990px) {
  .cal .sport-row { align-items: stretch; }
  .cal .sport-row .sport-options { flex: auto; justify-content: stretch; }
}
@media (max-width: 560px) {
  .cal .sport-row { gap: 6px; }
  .cal .tour-pick { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
}

/* Senza gli elenchi dei risultati (dal 09/10/2026; l'utente: "la pagina con l'elenco dei risultati non dovrebbe più
   servire visto che sono già presenti nell'elenco del calendario-tornei"). Nel riquadro di un torneo in corso i
   prossimi incontri e gli ultimi risultati, come il blocco del meteo: un riquadro chiaro nel verde, il titolo lime,
   una riga per incontro con sotto l'ora (o il punteggio) e il turno. */
.cal .panel-matches { margin: 6px 22px 0; padding: 12px 14px 6px; border-radius: 16px; background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.1); }
.cal .panel-matches + .panel-matches, .cal .panel-matches + .panel-wx { margin-top: 8px; }
.cal .panel-matches-t { font-size: 11px; font-weight: 800; color: #d7f67c; letter-spacing: .3px; }
.cal .panel-matches ul { list-style: none; margin: 6px 0 0; padding: 0; }
.cal .panel-matches li { display: flex; flex-direction: column; gap: 2px; padding: 7px 0; border-top: 1px solid rgba(255,255,255,.1); }
.cal .panel-matches li:first-child { border-top: 0; }
.cal .panel-matches li span { color: #f6fff6; font-size: 12px; font-weight: 600; line-height: 1.35; }
.cal .panel-matches li b { font-weight: 800; color: #fff; }
.cal .panel-matches li small { color: #9ab6a8; font-size: 10px; font-weight: 600; }
/* L'indice delle pagine dei tornei, in fondo al calendario prima della riga dei dati: link scritti nella pagina (per
   chi non ha lo script e per i motori di ricerca), tre colonne per circuito sul verde della pagina, una sola sul
   telefono. */
.cal .cal-index { margin: 6px 0 22px; padding: 18px 20px 14px; border-radius: 14px; background: rgba(255, 255, 255, .05); border: 1px solid rgba(255, 255, 255, .14); color: #c5dfd0; }
.cal .cal-index h2 { margin: 0; font-size: 16px; font-weight: 800; color: #fff; }
.cal .cal-index > p { margin: 4px 0 0; font-size: 12px; line-height: 1.5; }
.cal .cal-index-cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 6px 26px; margin-top: 12px; }
.cal .cal-index h3 { margin: 0 0 4px; font-size: 11px; font-weight: 800; letter-spacing: .4px; text-transform: uppercase; color: #d7f67c; }
.cal .cal-index ul { list-style: none; margin: 0; padding: 0; columns: 2; column-gap: 18px; }
.cal .cal-index li { break-inside: avoid; padding: 2px 0; font-size: 12px; line-height: 1.45; }
.cal .cal-index a { color: #a6f2cb; text-decoration: none; }
.cal .cal-index a:hover { color: #fff; text-decoration: underline; text-underline-offset: 2px; }
@media (max-width: 560px) {
  .cal .cal-index { padding: 16px 16px 12px; }
}

/* La categoria del riquadro del torneo (10/10/2026, richieste dell'utente: via "Il torneo che hai scelto", la categoria
   "bella in evidenza" prima del nome e poi "in alto a sinistra come le etichette sul box del torneo"): nell'angolo,
   come l'etichetta delle schede e con il suo colore, più grande perché qui è il titolo del tipo di torneo. Il nome
   scende sotto di lei. Il riquadro è lo stesso nella pagina e nella finestra della ricerca (js/scoperta.js). */
.cal .panel-cat { position: absolute; z-index: 1; top: -1px; left: -1px; display: inline-flex; align-items: center;
  max-width: calc(100% - 64px); min-height: 42px; padding: 12px 20px 11px 22px; border-radius: 21px 0 14px 0;
  border: 1px solid #c6eb66; border-top: 0; border-left: 0; color: #25492e; background: #cff16c; box-shadow: 2px 4px 14px rgba(0, 0, 0, .28);
  font-family: Manrope, Arial, sans-serif; font-size: 14px; font-weight: 900; letter-spacing: 1.2px; line-height: 1.15; text-transform: uppercase;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cal .panel-cat + .panel-title { margin-top: 38px; }
.cal .panel-cat.tag-slam, .cal .panel-cat.tag-major { color: #33270a; background: #dcb243; border-color: #cba237; }
.cal .panel-cat.tag-finals, .cal .panel-cat.tag-padelFinals, .cal .panel-cat.tag-wfinals { color: #fff; background: #6c48a0; border-color: #8566b3; }
.cal .panel-cat.tag-a500, .cal .panel-cat.tag-w500 { color: #fff; background: #2d6fb4; border-color: #4a86c4; }
.cal .panel-cat.tag-a250, .cal .panel-cat.tag-w250 { color: #fff; background: #5868bb; border-color: #7180c8; }
.cal .panel-cat.tag-p1 { color: #fff; background: #23807a; border-color: #3a9a93; }
.cal .panel-cat.tag-p2 { color: #1f5d6e; background: #d2edf3; border-color: #bfe2eb; }
.cal .panel-cat.tag-challenger, .cal .panel-cat.tag-w125 { color: #8a3c0e; background: #fbe1cd; border-color: #f1cdb1; }
.cal .panel-cat.tag-itf { color: #5c3a88; background: #ebe0f6; border-color: #dccbee; }

/* "Ricordamelo" nel riquadro del torneo e i calendari da seguire (dal 13/10/2026). */
.cal .panel-remind { padding: 14px 21px 4px; border-top: 1px solid rgba(255,255,255,.1); }
.cal .panel-remind-t { font-size: 11px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; color: var(--lime); margin-bottom: 4px; }
.cal .panel-remind p { font-size: 12px; color: #d7e6da; margin: 0 0 8px; line-height: 1.4; }
.cal .panel-remind-row { display: flex; flex-wrap: wrap; gap: 6px; }
.cal .panel-remind-btn { border: 0; cursor: pointer; font: inherit; font-size: 11.5px; font-weight: 800; padding: 8px 10px; border-radius: 9px; background: var(--lime); color: #214124; text-decoration: none; }
.cal .panel-remind-btn.ghost { background: rgba(255,255,255,.1); color: #f6fff6; border: 1px solid rgba(255,255,255,.22); }
.cal .panel-remind-btn:hover { filter: brightness(1.08); }
.cal .panel-matches li { position: relative; padding-right: 26px; }
.cal .ics-m { position: absolute; right: 0; top: 7px; width: 22px; height: 22px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid rgba(255,255,255,.22); border-radius: 6px; background: transparent; color: var(--lime); cursor: pointer; padding: 0; }
.cal .ics-m:hover { background: rgba(255,255,255,.1); }
.cal .cal-feeds { background: #003d29; color: #fff; padding: 28px 0 8px; }
.cal .cal-feeds h2 { color: #fff; font-size: 18px; margin: 0 0 6px; }
.cal .cal-feeds p { color: #cfe3d5; font-size: 13px; max-width: 70ch; margin: 0 0 12px; }
.cal .cal-feeds-row { display: flex; flex-wrap: wrap; gap: 10px; }
.cal .cal-feed { display: inline-flex; align-items: center; gap: 8px; border: 1px solid rgba(255,255,255,.2); border-radius: 11px; padding: 8px 12px; background: rgba(255,255,255,.06); }
.cal .cal-feed a { color: var(--lime); font-weight: 800; font-size: 13px; text-decoration: none; }
.cal .cal-feed-copy { border: 0; cursor: pointer; font: inherit; font-size: 11.5px; font-weight: 700; padding: 5px 9px; border-radius: 8px; background: rgba(255,255,255,.12); color: #fff; }

/* Le pillole della riga del mese (dal 13/10/2026, richiesta dell'utente): una per categoria presente nel mese, con il
   puntino del suo colore e quanti tornei ha. Un tocco nasconde i tornei di quella categoria in quel mese, un altro li
   rimostra; spenta, la pillola resta al suo posto, attenuata, con il nome barrato e il puntino vuoto, come una voce di
   legenda. Stanno fra il conteggio e la riga e vanno a capo quando non ci stanno; sul telefono la riga non c'è. */
.cal .m-heading { flex-wrap: wrap; row-gap: 9px; }
.cal .m-pills { display: flex; flex-wrap: wrap; gap: 6px; }
.cal .m-pill { display: inline-flex; align-items: center; gap: 6px; padding: 5px 7px 5px 11px; border-radius: 100px; cursor: pointer;
  font: inherit; font-size: 11px; font-weight: 800; line-height: 1.2; color: #eaf5ee; background: rgba(255, 255, 255, .08);
  border: 1px solid rgba(255, 255, 255, .18); transition: background .2s, opacity .2s; }
.cal .m-pill:hover { background: rgba(255, 255, 255, .15); }
.cal .m-pill:focus-visible { outline: 3px solid #d7ff21; outline-offset: 2px; }
.cal .m-pill .pill-dot { flex: none; height: 7px; width: 7px; border-radius: 50%; background: var(--chip, #87a98a); }
.cal .m-pill .pill-count { font-size: 10px; font-weight: 900; padding: 3px 6px; border-radius: 50px; background: rgba(255, 255, 255, .12); color: #c5dfd0; }
.cal .m-pill.is-off { opacity: .55; }
.cal .m-pill.is-off .pill-name { text-decoration: line-through; text-decoration-thickness: 1.5px; }
.cal .m-pill.is-off .pill-dot { background: transparent; box-shadow: inset 0 0 0 1.5px var(--chip, #87a98a); }
.cal .t-card.is-off, .cal .cards.is-off, .cal .week-head.is-off { display: none !important; }
@media (max-width: 700px) {
  .cal .m-rule { display: none; }
  .cal .m-pill { font-size: 10px; padding: 4px 6px 4px 9px; }
}

/* "Ricordamelo" nel riquadro con la campanella spenta accanto (dal 13/10/2026 sera, richiesta dell'utente): un segno,
   non un comando, nel grigio verde dei testi secondari. Nei prossimi incontri la campanella è nel tasto di prima. */
.cal .panel-remind-t { display: flex; align-items: center; gap: 6px; }
.cal .panel-bell { flex: none; width: 14px; height: 14px; color: #8fa99b; }

/* La casella dei tornei conclusi sotto le pillole delle categorie (dal 14/10/2026, richiesta dell'utente: prima stava
   nella ricerca, accanto alla città): lo stile di allora, con accanto quanti tornei conclusi ha la scelta, nella forma
   dei conteggi delle pillole. Senza tornei conclusi da mostrare è attenuata e ferma. Nel riquadro vuoto il tasto che
   la accende è largo quanto il suo testo. */
.cal .cal-conclusi { display: flex; width: fit-content; max-width: 100%; align-items: center; gap: 8px; margin-top: 14px; font-size: 11px; font-weight: 800; line-height: 1.3; color: #3f6a52; cursor: pointer; }
.cal .cal-conclusi input { flex: none; width: 15px; height: 15px; margin: 0; accent-color: #123e30; cursor: pointer; }
.cal .cal-conclusi-n { flex: none; font-size: 10px; font-weight: 900; min-width: 20px; text-align: center; padding: 4px 6px; border-radius: 50px; background: #e5ede2; color: #53745b; }
.cal .cal-conclusi-n:empty { display: none; }
.cal .cal-conclusi.is-spenta { opacity: .45; cursor: default; }
.cal .cal-conclusi.is-spenta input { cursor: default; }
.cal .empty .panel-action { width: auto; display: inline-flex; margin-top: 6px; padding: 12px 18px; }

/* Le campanelle del calendario (dal 14/10/2026): al posto dell'icona del calendario accanto alle date di ogni scheda,
   e accanto al nome nel riquadro, dove ha preso il posto di "Ricordamelo". Un tocco apre il menu rotondo
   (js/radiale.js); quella di un torneo concluso è spenta, un segno come era l'icona del calendario, e nel riquadro
   non c'è. */
.cal .cal-bell { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; margin: -3px 0 -3px -3px; padding: 0; border: 0; border-radius: 50%; background: rgba(0, 91, 60, .1); color: #0d7a4f; cursor: pointer; transition: background .15s, color .15s; }
.cal .location-dates .cal-bell svg { width: 13px; height: 13px; stroke: none; }
.cal .cal-bell.is-off { width: 13px; height: 13px; margin: 0; background: transparent; color: #81a48b; cursor: default; }
.cal button.cal-bell:hover, .cal button.cal-bell:focus-visible, .cal button.cal-bell[aria-expanded="true"] { background: #d7ff21; color: #214124; outline: none; }
.cal .panel-title { display: flex; align-items: center; gap: 10px; }
.cal .panel-title > span { min-width: 0; }
.cal .panel-title .cal-bell.is-title { width: 34px; height: 34px; margin: 0; background: rgba(215, 255, 33, .14); color: #d7ff21; }
.cal .panel-title .cal-bell.is-title svg { width: 18px; height: 18px; }
.cal .panel-title .cal-bell.is-off { display: none; }
.cal .ics-m[aria-expanded="true"] { background: #d7ff21; color: #214124; }

/* Negli ultimi risultati del riquadro chi ha vinto in giallo lime, gli altri nomi più tenui (dal 14/10/2026). */
.cal .panel-matches.is-results li span { font-weight: 500; color: #c3d8cb; }
.cal .panel-matches.is-results li b { font-weight: 800; color: #d7ff21; }
