     html:has(.modal[open]),body:has(.modal[open]){overflow:hidden}
    .modal{display:block;margin:0 auto;padding:40px 0;border:none;width:100%;height:auto;max-height:100%;max-width:840px;background:none;opacity:0;visibility:hidden;overflow:hidden}
    .modal[open]{opacity:1;transition:opacity .3s ease;visibility:visible;}
    .modal::backdrop{background-color:rgba(0,0,0,0.8)}
    .modal-content{height:100%;display:grid;grid-template-rows:125px auto}
    .modal .head-modal{background:#00e094;padding:24px;display:flex;flex-direction:column;position:relative;justify-content:flex-end;gap:4px}
    .modal .close-btn{position:absolute;top:24px;right:24px;cursor:pointer;background:url('https://static.s-sfr.fr/media/RED/icones/croix-noire.svg') no-repeat center;width:24px;height:24px;border:none}
    .modal .close-btn:focus-visible{outline:3px solid var(--color--black1);outline-offset:2px}
    .modal .title-modal{font:700 24px 'Montserrat';margin-top:auto}
    .modal .modal-body{padding:24px 24px 40px;overflow:auto;max-height:100%;height:fit-content;background-color:#fff}
     @keyframes spin{to{transform:rotate(360deg)}}
    
/* ========================================
   INTERNET MODAL
   ======================================== */
    #internet-modal .tabs{border:1px solid #131316;background:#fff;display:flex;position:relative;margin:0 auto 24px;width:fit-content}
    #internet-modal .tabs button{font:600 14px/38px Montserrat;padding:0 24px;cursor:pointer;transition:.1s ease-in;border:none;background:none}
    #internet-modal .tabs button[aria-selected="true"]{background:#131316;color:#fff;font-weight:700;cursor:default}
    #internet-modal .tabs button:focus-visible{outline:3px solid blue;outline-offset:-3px}
    #internet-modal #tab-internet .title{font:700 24px/120% 'Montserrat';margin:24px 0}
    #internet-modal #tab-telephone .title{font:700 24px/120% 'Montserrat';margin-bottom:8px}
    #internet-modal h4{font-size:16px;line-height:120%;margin-bottom:8px}
    #internet-modal .comparison-container{display:grid;grid-template-columns:1fr 188px;gap:24px;align-items: start;}
    #internet-modal .table{overflow: auto;}
    #internet-modal .comparison-table{table-layout: fixed;border-collapse:collapse;font:700 14px 'Montserrat';}
    #internet-modal .comparison-table tr:nth-child(2n+3){background-color:#F4F4F5}
    #internet-modal .comparison-table tr:first-child th:not(:empty){background-color:#00e094;width:33.3%;min-width: 100px;border:1px solid #00e094;text-align:left}
    #internet-modal .comparison-table :is(td,th){border:1px solid #70707B;padding:16px;text-align:center}
    #internet-modal .comparison-table th:first-child{text-align:left}
    #internet-modal .comparison-container .benefits{padding:24px;background-color:#26272B;color:#fff}
    #internet-modal .comparison-container .benefits img{margin-bottom:16px;display:block}
    #internet-modal .comparison-container .benefits p{font-weight:600;font-size:14px}
    #internet-modal .blocs{margin:24px 0;display:grid;gap:24px}
    #internet-modal .blocs.l-3{grid-template-columns:1fr 1fr 1fr;text-align:center}
    #internet-modal .blocs.l-3 img{display:block;margin:0 auto 8px}
    #internet-modal .blocs.l-2{grid-template-columns:1fr 376px;align-items:center;padding:24px 0 0;margin-bottom:0}
    #internet-modal .show5G ul{display:grid;grid-template-columns:1fr 1fr;column-gap:40px;row-gap:16px}
    #internet-modal .show5G li{display:flex;align-items:center;gap:8px}
    #internet-modal .show5G li:nth-child(-n+2){padding-bottom:16px;border-bottom:1px #70707B solid}
    #internet-modal .searchbox{position:relative;max-width:100%;margin-top:24px}
    #internet-modal .searchbox label{display:block;font-weight:700;margin-bottom:16px}
    #internet-modal .searchbar{position:relative;display:grid;width:100%}
    #internet-modal .searchbar input{width:100%;padding:0 40px 0 44px;background:url(https://static.s-sfr.fr/media/RED/icones/recherche-gris.svg) no-repeat left 12px center;background-size:20px;overflow:hidden;text-overflow:ellipsis;font:600 14px/44px Montserrat;border:1px solid #70707B;border-radius:0;transition:border-color .2s}
    #internet-modal .searchbar input::placeholder{color:#70707B}
    #internet-modal .searchbar input:focus{outline:0;border-color:var(--color--black1);box-shadow:inset 0 0 0 1px var(--color--black1)}
    #internet-modal .searchbar button{height:44px;width:40px;background:url(https://static.s-sfr.fr/media/RED/icones/croix-noire.svg) no-repeat center;background-size:16px;transition:.2s;cursor:pointer;position:absolute;z-index:4;right:0;border:none;padding:0}
    #internet-modal .searchbar button:focus-visible{outline:2px solid var(--color--black1);outline-offset:-2px}
    #internet-modal .searchbar button:hover{opacity:.7}
    #internet-modal .searchbar button[hidden]{display:none}
    #internet-modal .searchbar .suggestions{display:none;flex-direction:column;background:#fff;left:0;right:0;top:0;max-height:220px;overflow:auto;z-index:10;border:1px solid #D4D4D8;border-top:none;box-shadow:0 4px 12px rgba(0,0,0,.08);width:100%;padding:0}
    #internet-modal .searchbar input[aria-expanded="true"] ~ .suggestions{display:flex}
    #internet-modal .searchbar .suggestions li{display:flex;align-items:center;padding:10px 16px;cursor:pointer;font:550 14px 'Montserrat';position:relative;min-height:44px;transition:background .1s}
    #internet-modal .searchbar .suggestions li:not(:last-child):after{content:"";position:absolute;height:1px;width:calc(100% - 32px);left:16px;bottom:0;background-color:#70707B;z-index:1}
    #internet-modal .searchbar .suggestions li *{pointer-events:none}
    #internet-modal .searchbar .suggestions li:hover{background:#f2f2f2}
    #internet-modal .searchbar .suggestions li[aria-selected="true"]{background:#f2f2f2;border:0;outline-offset:-2px;outline:3px solid blue}
    #internet-modal .searchbar .suggestions li.no-results{cursor:default;font-weight:500}
    #internet-modal .searchbar .suggestions li.no-results:hover{background:transparent}
    #internet-modal .result-area{opacity:0;max-height:0;overflow:hidden;transition:opacity .3s,max-height .3s}
    #internet-modal .result-area.show{padding-top:48px;position:relative;opacity:1;max-height:600px;overflow:visible}
    #internet-modal .result-area.show:before{content:'';position:absolute;left:0;right:0;top:24px;background:#70707B;height:1px}
    #internet-modal .pricing-cards{display:flex;gap:24px;width:100%}
    #internet-modal .price-card{background-color:#F4F4F5;padding:24px;flex:1;display:flex;flex-direction:column;gap:16px;text-wrap-style:balance}
    #internet-modal .card-title{font:700 16px/19.2px 'Montserrat';color:var(--color--black1);padding-bottom:16px;border-bottom:1px solid #70707B}
    #internet-modal .price-value{font:700 14px/19.6px 'Montserrat';color:var(--color--black1)}
    #internet-modal .price-unit{font:700 14px/19.6px 'Montserrat';color:var(--color--black1)}
    #internet-modal .price-extra{display:block;font:600 14px/19.6px 'Montserrat';color:var(--color--black1)}
    #internet-modal .price-included{font:700 14px/19.6px 'Montserrat';color:var(--color--black1)}
    #internet-modal .ftm-row{display:flex;justify-content:space-between;align-items:center;gap:16px}
    #internet-modal .ftm-price{text-align:right}
    #internet-modal .ftm-table{width:100%;border-collapse:collapse;}
    #internet-modal .ftm-table caption{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
    #internet-modal .ftm-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
    #internet-modal .ftm-table td{padding:8px 0;vertical-align:middle}
    #internet-modal .ftm-table td:last-child{text-align:right}
    #internet-modal details.tooltip-details{position:relative}
    #internet-modal details.tooltip-details > summary{list-style:none;cursor:pointer;outline:none;display:flex;align-items:center;gap:6px;font:700 14px/19.6px 'Montserrat';color:var(--color--black1)}
    #internet-modal details.tooltip-details > summary > span {max-width: 120px;}
    #internet-modal details.tooltip-details > summary::-webkit-details-marker{display:none}
    #internet-modal details.tooltip-details > summary:focus-visible{outline:2px solid var(--color--black1);outline-offset:4px;border-radius:2px}
    #internet-modal details.tooltip-details > summary .icon-info{display:inline-block;width:16px;height:16px;background:url(https://static.s-sfr.fr/media/RED/icones/aide-black.svg) no-repeat center;background-size:16px;flex-shrink:0;position:relative}
    #internet-modal details[open].tooltip-details > summary .icon-info::after{content:'';position:absolute;top:-18px;left:calc(50% - 6px);width:12px;height:12px;background:#181818;transform:rotate(45deg);z-index:22}
    #internet-modal details.tooltip-details .tooltip-content{position:absolute;left:0;top:50%;transform:translateY(calc(-50% - 55px));z-index:2;background:#181818;color:#fff;padding:16px;font:500 13px / 150% 'Montserrat';width:240px}
    #internet-modal .footnote{font-size: 12px;margin-top:24px}
    #internet-modal .live-region{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
    
/* ========================================
   TV MODAL
   ======================================== */
    #tv-modal .modal-content{font:550 14px/140% 'Montserrat'}
    #tv-modal .modal-body{padding:24px 24px 40px;overflow:auto;max-height:100%;background-color:#26272B;color:#fff}
    #tv-modal h3{font:700 32px/120% 'Montserrat';margin-bottom:40px}
    #tv-modal h4{font:700 24px/120% 'Montserrat';margin-bottom:40px}
    #tv-modal #tab-appli h3{margin-bottom:8px}
    #tv-modal  .bouquet-text h4{margin-bottom:8px}
    #tv-modal .tabs,#tv-modal .sub-tabs,#tv-modal .comment-tabs{border:1px solid #fff;background:#26272B;display:flex;position:relative;margin:0 auto;width:fit-content}
    #tv-modal .tabs{margin-bottom:24px}
    #tv-modal .sub-tabs,#tv-modal .comment-tabs{margin:40px auto;}
    #tv-modal .tabs button,#tv-modal .sub-tabs button,#tv-modal .comment-tabs button{font:550 14px/38px Montserrat;padding:0 24px;cursor:pointer;transition:.1s ease-in;border:none;background:none;color:#fff;white-space:nowrap}
    #tv-modal .tabs button[aria-selected="true"],#tv-modal .sub-tabs button[aria-selected="true"],#tv-modal .comment-tabs button[aria-selected="true"]{background:#fff;color:#131316;font-weight:700;cursor:default}
    #tv-modal .tabs button:focus-visible,#tv-modal .sub-tabs button:focus-visible,#tv-modal .comment-tabs button:focus-visible{outline:3px solid #00e094;outline-offset:-3px}
    #tv-modal .hero-block,#tv-modal .env-block{display:grid;grid-template-columns:1fr 376px;gap:40px;align-items:start}
    #tv-modal .sub-panel,#tv-modal .appli-block,#tv-modal .bouquet-block,#tv-modal .comment-block{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:start}
    #tv-modal .tab-gap{display: flex;flex-direction: column;gap:64px}
    #tv-modal .bouquet-list {display: grid;gap: 64px;}
    #tv-modal .bouquet-block{margin-bottom: 24px;}
    #tv-modal .hero-img img,#tv-modal .sub-img img,#tv-modal .env-img img,#tv-modal .appli-img img,#tv-modal .bouquet-img img,#tv-modal .comment-img img{width:100%;height:auto;display:block}
    #tv-modal .toggle-row{display:flex;justify-content:space-between;flex-wrap:wrap;gap:16px}
    #tv-modal .toggle-row .toggle-info{display:flex;flex-direction:column;gap:4px}
    #tv-modal .bouquet-block .toggle-row{margin-top:16px}
    #tv-modal .bouquet-block .toggle-row .toggle-info{margin-right:auto}
    #tv-modal .toggle-label{font:700 14px/140% 'Montserrat'}
    #tv-modal .toggle-switch{display:flex;gap:8px}
    #tv-modal .bouquet-block .toggle-row:has(input:checked) .toggle-state{font-weight:700}
    #tv-modal .switch-toggle{position:relative;display:inline-block;width:40px;height:20px;cursor:pointer}
    #tv-modal .switch-toggle input{position:absolute;width:0;height:0;opacity:0}
    #tv-modal .switch-toggle .slider{position:absolute;inset:0;background:#70707B;border-radius:10px;transition:.2s}
    #tv-modal .switch-toggle .slider::after{content:'';position:absolute;width:16px;height:16px;border-radius:50%;background:#131316;top:2px;left:2px;transition:.2s}
    #tv-modal .switch-toggle input:checked ~ .slider{background:#8793F2}
    #tv-modal .switch-toggle input:checked ~ .slider::after{left:22px}
    #tv-modal .switch-toggle input:focus-visible ~ .slider{outline:2px solid #fff;outline-offset:2px}
    #tv-modal .hero-text{display:flex;flex-direction:column;gap:24px}
    #tv-modal .features-list{display:grid;gap:40px}
    #tv-modal .features-list li{display:grid;gap:4px}
    #tv-modal .features-list li b{font:700 14px/140% 'Montserrat'}
    #tv-modal .steps{display:grid;grid-template-columns:1fr 1fr 1fr;gap:24px;counter-reset:step}
    #tv-modal .steps li{padding:16px;background:#00e094;display:flex;flex-direction:column;gap:16px}
    #tv-modal .steps li .step-img{aspect-ratio:16/9;background:#26272B;display:flex;align-items:center;justify-content:center;overflow:hidden}
    #tv-modal .steps li .step-img img{max-width:80%;max-height:80%;object-fit:contain}
    #tv-modal .steps li .step-content{padding:24px;background:#26272B;flex:1;display:flex;flex-direction:column;gap:8px}
    #tv-modal .steps li .step-number{font:700 24px/120% 'Montserrat';color:#fff}
    #tv-modal .steps li .step-desc{color:#fff}
    #tv-modal .intro{margin-bottom:40px}
    #tv-modal .appli-features{display:flex;flex-direction:column;gap:40px}
    #tv-modal .appli-features li{display:flex;flex-direction:column}
    #tv-modal .appli-features li .feature-icon{width:40px;height:40px;flex-shrink:0;margin-bottom:16px}
    #tv-modal .appli-features li .feature-icon svg,#tv-modal .appli-features li .feature-icon img{width:40px;height:40px;display:block}
    #tv-modal .appli-features li h4{font:700 24px/120% 'Montserrat';margin:0 0 4px}
    #tv-modal .bouquet-text{display:grid;gap:16px}
    #tv-modal .bouquet-text .tag-inclus{display:inline-flex;align-items:center;gap:6px;}
    #tv-modal .bouquet-text .tag-inclus svg,#tv-modal .bouquet-text .tag-inclus img{flex-shrink:0}
    #tv-modal .accordion-btn{width:100%;display:flex;justify-content:space-between;align-items:center;padding:16px 0;border:none;border-top:1px solid #D1D1D6;cursor:pointer;color:#fff;font:700 14px/140% 'Montserrat'}
    #tv-modal .accordion-btn img{transition:transform .2s;flex-shrink:0}
    #tv-modal .accordion-btn[aria-expanded="true"] img{transform:rotate(180deg)}
    #tv-modal .accordion-btn.loading{pointer-events:none}
    #tv-modal .accordion-btn.loading::after{content:'';position: relative;top: 7px;width:16px;height:16px;border:2px solid #fff;border-top-color:transparent;border-radius:50%;animation:spin .6s linear infinite;margin-left:8px}
    #tv-modal .accordion-btn.loading img{visibility:hidden}
    #tv-modal .accordion-btn:focus-visible{outline:3px solid #00e094;outline-offset:-3px}
    #tv-modal .channels-wrapper{display:grid;grid-template-rows:0fr;overflow:hidden;transition:grid-template-rows .4s ease;border-bottom:1px solid #D1D1D6}
    #tv-modal .channels-wrapper.expanded{grid-template-rows:1fr}
    #tv-modal .channels-grid{min-height:0;visibility:hidden;transition:visibility .4s;display:grid;grid-template-columns:repeat(4,1fr);gap:24px;padding:0}
    #tv-modal .channels-wrapper.expanded .channels-grid{visibility:visible;padding-bottom:16px}
    #tv-modal .channel-card{border:1px solid #D1D1D6;background:#3F3F46;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 8px 8px;position:relative;min-height:122px}
    #tv-modal .channel-card .ch-num{position:absolute;top:8px;right:8px;font:700 12px 'Montserrat';color: #00E094}
    #tv-modal .channel-card .ch-logo{width:80px;height:50px;object-fit:contain;display:block;margin-bottom:8px}
    #tv-modal .channel-card .ch-name{font:550 12px/140% 'Montserrat';color:#fff;text-align:center}
    #tv-modal .section-comment h4{margin-bottom:24px}
    #tv-modal .comment-text{display:flex;flex-direction:column;gap:24px}
    #tv-modal .comment-text li{display:flex;flex-direction:column;gap:4px}
    #tv-modal .comment-text .method{display:flex;flex-direction:column;gap:4px}
    #tv-modal .comment-text b{font:700 14px/140% 'Montserrat'}
    #tv-modal .badges{display:grid;gap:16px;grid-template-columns:135px 135px}
    #tv-modal #tab-chaines a{margin-top:24px;color:#fff}
    
/* ========================================
   ODR MODAL
   ======================================== */
    #odr-modal .content h3{font-size:16px;margin:0 0 10px}
    #odr-modal .content p{max-width:none;margin:10px 0 30px}
    #odr-modal .content a{text-decoration:underline}
    #odr-modal .content .col{columns:2;display:block;margin-top:5px}
    #odr-modal .content ul{margin:10px 0 30px;padding-left:30px}
    #odr-modal .content ul li{margin-bottom:10px;position:relative}
    #odr-modal .content ul li:before{content:"";background-color:#575AD7;display:inline-block;width:6px;height:6px;border-radius:100%;left:-20px;top:7px;position:absolute}
    #odr-modal .content p.ml{font:500 12px/20px Montserrat;margin:0}
    
/* ========================================
   BOURSO MODAL
   ======================================== */
    #bourso-modal .content{display:grid;gap:24px}
    #bourso-modal .content .title{font:700 24px / 120% 'Montserrat';margin-bottom:24px}
    #bourso-modal ul{margin-top:16px;display:grid;gap:16px}
    #bourso-modal ul li{position:relative;padding-left:16px}
    #bourso-modal ul li::before{content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);width:8px;height:8px;background:#5A55DF}
    #bourso-modal ol{counter-reset:ol li;margin:24px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:24px;text-align:center}
    #bourso-modal ol li{position:relative;padding-top:48px}
    #bourso-modal ol li b{display:block;margin-bottom:4px}
    #bourso-modal ol li::before{counter-increment:li;content:counter(li);position:absolute;left:50%;transform:translateX(-50%);top:0;text-align:center;width:24px;display:block;font:700 12px / 24px Montserrat;background:#131316;border-radius:50%;color:#fff}
    #bourso-modal .tips{padding-left:32px;padding-top:24px;position:relative}
    #bourso-modal .tips:before{content:'';position:absolute;left:0;top:0;right:0;background:#70707B;height:1px}
    #bourso-modal .tips .ico{position:relative;display:block;margin-bottom:4px}
    #bourso-modal .tips .ico::before{content:'';left:-32px;top:0;position:absolute;width:24px;height:24px;background:url('https://static.s-sfr.fr/media/RED/icones/ampoule-bleu.svg') no-repeat}

@media (max-width:767px){
    /* Base modal */
    .modal{padding:16px}
    .modal-content{grid-template-rows:110px auto;height:100%!important}
    .modal .head-modal{padding:16px}
    .modal .close-btn{top:16px;right:16px}
    .modal .title-modal{font-size:18px}
    .modal .modal-body{padding:16px 16px 24px;height:auto}
    .modal .tabs-carousel{display:flex;align-items:center;gap:0;position:relative;margin:0 auto 24px;width:100%}
    .modal .tabs-carousel .carousel-arrow{width:35px;height:40px;cursor:pointer;background:url('https://static.s-sfr.fr/media/RED/icones/chevron_droit-white.svg') no-repeat center #26272B;transition:opacity .2s;opacity:1;position:absolute;right:0;z-index:1}
    .modal .tabs-carousel .carousel-arrow:focus-visible{outline:3px solid #00e094;outline-offset:-3px}
    .modal .tabs-carousel .carousel-arrow.prev{transform:rotate(180deg);left:0}
    .modal .tabs-carousel .carousel-arrow[hidden]{visibility:hidden;pointer-events:none;opacity:0}
    .modal .tabs-carousel [role="tablist"]{overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none;margin:0 auto !important;display:flex;width:auto}
    .modal .tabs-carousel [role="tablist"]::-webkit-scrollbar{display:none}

    /* Internet modal responsive */
    #internet-modal #tab-telephone .title{font-size:18px}
    #internet-modal #tab-internet .title{font-size:18px}
    #internet-modal .blocs.l-3,#internet-modal .blocs.l-2{grid-template-columns:1fr;text-align:left}
    #internet-modal .blocs.l-3 :is(div,li){display:flex;align-items:center}
    #internet-modal .blocs.l-3 img{margin:0 8px 0 0}
    #internet-modal .blocs.l-2 img{order:-1;width:100%;height:auto}
    #internet-modal .comparison-container{grid-template-columns:1fr}
    #internet-modal .show5G ul{grid-template-columns:1fr}
    #internet-modal .show5G li:not(:last-child){padding-bottom:16px;border-bottom:1px #70707B solid}
    #internet-modal .pricing-cards{flex-direction:column;gap:24px}
    #internet-modal .price-card{padding:16px}

    /* TV modal responsive */
    #tv-modal :is(.tab-gap,.bouquet-list) {gap: 48px;}
    #tv-modal .hero-block,#tv-modal .env-block,#tv-modal .sub-panel,#tv-modal .appli-block,#tv-modal .bouquet-block,#tv-modal .comment-block,#tv-modal .steps{grid-template-columns:1fr;gap:24px}
    #tv-modal .hero-img,#tv-modal .env-img,#tv-modal .sub-img,#tv-modal .appli-img,#tv-modal .bouquet-img,#tv-modal .comment-img{order:-1}
    #tv-modal h3{font-size:24px;margin-bottom:24px}
    #tv-modal h4{font-size:18px;margin-bottom:24px}
    #tv-modal .bouquet-text h4{margin-bottom: 0;}
    #tv-modal .features-list,#tv-modal .hero-text{gap:16px}
    #tv-modal .steps li .step-content{padding:16px}
    #tv-modal .steps li .step-img{background:#131316}
    #tv-modal .steps li .step-number{font-size:18px}
    #tv-modal .intro{margin-bottom:24px}
    #tv-modal .appli-features{gap:24px}
    #tv-modal .bouquet-block{margin-bottom:24px}
    #tv-modal .channels-grid{grid-template-columns:repeat(2,1fr);gap:16px}
    #tv-modal .comment-text{gap:16px}

    /* Bourso modal responsive */
    #bourso-modal .content .title{font-size:18px;margin-bottom:16px}
    #bourso-modal ol{grid-template-columns:1fr;text-align:left}
    #bourso-modal ol li{padding:0 0 0 32px}
    #bourso-modal ol li::before{left:0;top:0;transform:translateX(0)}
    #bourso-modal ul li::before{top:4px;transform:none}
    #bourso-modal .modal-content{grid-template-rows:138px auto}
}