/* ==========================================================================
   vitrine.css — surcharges et composants propres à Online Hosting.
   Chargé une seule fois par vitrine/layout.blade.php, après theme.min.css.
   Pendant du fichier vitrine.js : tout ce qui n'appartient pas au thème Antler
   d'origine vit ici, pour rester séparé des assets fournis par le thème.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Correctifs du thème
   -------------------------------------------------------------------------- */
.help-item .img{display:inline-flex !important;align-items:center;justify-content:center;vertical-align:middle}
#games .refing .col{min-height:320px}
#games .refing .lazyload{position:absolute;inset:0;z-index:1;overflow:hidden;border-radius:12px}
#games .refing .lazyload img{width:100%;height:100%;object-fit:cover;display:block}
#games .gametitle{z-index:9}
.top-header .services.classic .service-section{position:relative}

/* --------------------------------------------------------------------------
   2. Accueil — fond du hero
   Image du service FiveM + voile sombre pour la lisibilité. Scopé à .oh-hero
   pour ne pas toucher les bandeaux des autres pages (qui utilisent aussi
   .top-header via partials/pagehead).
   -------------------------------------------------------------------------- */
.top-header.oh-hero{background-image:linear-gradient(rgba(11,20,27,.72),rgba(11,20,27,.82)),url('/images/categories/fivem.webp');background-size:cover;background-position:center;background-repeat:no-repeat}
.top-header.oh-hero .img-defaultbanner{display:none}

/* --------------------------------------------------------------------------
   3. Accueil — carte de France et specs du nœud
   -------------------------------------------------------------------------- */
.oh-map{width:100%;text-align:center}
.oh-fr{width:330px;max-width:100%;height:auto;filter:drop-shadow(0 16px 36px rgba(0,0,0,.55))}
.oh-fr-land{fill:rgba(255,255,255,.07);stroke:#ee5586;stroke-width:1.4;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.oh-specs{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}
.oh-specs span{font-size:12.5px;color:#fff;border:1px solid rgba(255,255,255,.16);border-radius:8px;padding:7px 12px;background:rgba(255,255,255,.04)}

/* --------------------------------------------------------------------------
   3 bis. Accueil — galerie « panel »
   Le thème laisse l'icône de zoom (.zoo-content) visible en permanence, ce qui
   pose un rond rose au milieu des captures. On ne l'affiche qu'au survol.
   -------------------------------------------------------------------------- */
.popup-gallery .zoo-content{opacity:0;transition:opacity .25s}
.popup-gallery .gallery-item:hover .zoo-content{opacity:1}

/* --------------------------------------------------------------------------
   4. Boutique — liste de specs des cartes d'offre
   Sélecteurs très spécifiques + !important pour battre les règles du thème
   `.pricing .list-info` (fond) et `.pricing .list-info i{color:#fff!important}`.
   -------------------------------------------------------------------------- */
.oh-specs-list{list-style:none;margin:0;padding:16px 24px;background:#131c24}
.oh-specs-list li{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid rgba(255,255,255,.07);color:#e6ebef;font-size:14px}
.oh-specs-list li:last-child{border-bottom:0}
.oh-specs-list li i{width:20px;text-align:center;color:#ee5586;font-size:15px;flex:0 0 20px}
.oh-specs-list li div{line-height:1.35}
.oh-specs-list li.oh-spec-off{opacity:.4}
.oh-specs-list li.oh-spec-off i{color:#ff6b81}
.pricing.special .wrapper .oh-specs-list{background:#131c24 !important;border-top:1px solid rgba(255,255,255,.08)}
.pricing.special .wrapper .oh-specs-list li i{color:#ee5586 !important;float:none;padding:0;margin:0;font-size:15px;width:20px;flex:0 0 20px;text-align:center}
.pricing.special .wrapper .oh-specs-list li.oh-spec-off i{color:#ff6b81 !important}

/* Carte d'offre : colonne flex à fond sombre. Sélecteur assez spécifique pour
   battre `.pricing.special .wrapper{background:#fff;margin-top:50px}` du thème
   (sinon carte blanche + espacement parasite). */
.pricing.special .wrapper.oh-plan{display:flex;flex-direction:column;height:100%;background:#15212a;border:1px solid rgba(255,255,255,.08);border-radius:15px;margin-top:0;box-shadow:none}
.oh-plan .top-content{flex:0 0 auto;padding:28px 26px;background:transparent}
.oh-plan .oh-specs-list{flex:1 1 auto;border-radius:0 0 15px 15px}
.oh-plan .top-content .title{font-size:1.5rem;font-weight:800;line-height:1.15;color:#fff;margin-bottom:8px}
.oh-plan .top-content .fromer{font-size:13px;color:#9aa7b1;margin-bottom:18px;display:flex;align-items:center}
.oh-plan .top-content .fromer i{font-size:12px;line-height:1}
.oh-plan .top-content .price{font-size:2.4rem;font-weight:800;color:#fff;line-height:1;margin-bottom:20px}
.oh-plan .top-content .price .oh-cur{font-size:1.3rem;font-weight:700;color:#ee5586;vertical-align:top;margin-right:2px}
.oh-plan .top-content .price .period{font-size:.95rem;color:#9aa7b1;font-weight:500}
.oh-plan .top-content .price .oh-free{font-size:1.7rem;color:#97cb3b}
.oh-plan .top-content .btn{width:100%;margin-top:2px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:15px;font-weight:700;padding:13px 20px}
.oh-plan .top-content .btn i{font-size:13px;padding:0 !important;margin:0}
.oh-plan-pop .top-content{box-shadow:inset 0 0 0 2px rgba(238,85,134,.55)}

/* En-tête de catégorie sur /store */
.oh-cat-block{padding-top:80px}
.oh-cat-block:first-child{padding-top:24px}
.oh-cat-head{display:flex;align-items:center;gap:14px;margin:0 0 6px}
.oh-cat-head .ic{width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:linear-gradient(125deg,#7c4dff,#ee5586);color:#fff;font-size:20px;flex:0 0 46px}
.oh-cat-head h2{font-size:1.7rem;font-weight:800;color:#fff;margin:0}
.oh-cat-head .tag{color:#ee5586;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.oh-cat-desc{margin:0 0 28px}

/* --------------------------------------------------------------------------
   5. Fiche produit — panneau de commande
   -------------------------------------------------------------------------- */
.oh-order{border:1px solid rgba(255,255,255,.12);border-radius:16px;background:rgba(255,255,255,.03);padding:26px;position:sticky;top:96px}
.oh-cyc{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid rgba(255,255,255,.14);border-radius:11px;padding:13px 16px;margin-bottom:10px;cursor:pointer;transition:.15s}
.oh-cyc:hover{border-color:rgba(238,85,134,.5)}
.oh-cyc input{accent-color:#ee5586}
.oh-cyc.sel{border-color:#ee5586;background:rgba(238,85,134,.08)}
.oh-cyc .lab{color:#fff;font-weight:600}
.oh-cyc .pr{color:#fff;font-weight:800}
.oh-cyc .pr small{color:#9aa7b1;font-weight:500}
.oh-reassure{display:flex;gap:22px;flex-wrap:wrap;margin-top:26px}
.oh-reassure span{color:#9aa7b1;font-size:13px}
.oh-reassure i{color:#2ecc71;margin-right:6px}
.oh-optgrp{margin-bottom:16px}
.oh-optgrp label.h{display:block;color:#fff;font-weight:600;margin-bottom:6px;font-size:14px}
.oh-optgrp select{width:100%;background:#15212a;color:#fff;border:1px solid rgba(255,255,255,.18);border-radius:9px;padding:10px 12px}

/* --------------------------------------------------------------------------
   6. Pages de contenu (CGV, mentions légales, article de blog)
   -------------------------------------------------------------------------- */
.oh-prose{color:#c7d0d9;line-height:1.9;font-size:15px}
.oh-prose h1,.oh-prose h2,.oh-prose h3,.oh-prose h4{color:#fff;margin:1.6em 0 .6em;font-weight:700}
.oh-prose h2{font-size:1.45rem}
.oh-prose h3{font-size:1.2rem}
.oh-prose p{margin-bottom:1em}
.oh-prose a{color:#ee5586;text-decoration:underline}
.oh-prose strong{color:#fff}
.oh-prose ul,.oh-prose ol{margin:0 0 1.2em 1.4em}
.oh-prose li{margin-bottom:.4em;list-style:disc}
.oh-prose ol li{list-style:decimal}
.oh-prose table{width:100%;border-collapse:collapse;margin:1.2em 0}
.oh-prose th,.oh-prose td{border:1px solid rgba(255,255,255,.14);padding:9px 12px;text-align:left}
.oh-prose th{color:#fff;background:rgba(255,255,255,.05)}
.oh-card{border:1px solid rgba(255,255,255,.12);border-radius:12px;background:rgba(255,255,255,.04);padding:22px;height:100%}
.oh-card h2{font-size:12.5px;letter-spacing:.12em;text-transform:uppercase;color:#9aa7b1;margin:0 0 12px;font-weight:700}
.oh-card dl div{margin-bottom:6px;font-size:14px}
.oh-card dt{display:inline;color:#7d8a94}
.oh-card dd{display:inline;color:#fff;margin:0}

/* --------------------------------------------------------------------------
   7. À propos
   -------------------------------------------------------------------------- */
.oh-stat{border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:24px 16px;background:rgba(255,255,255,.03);text-align:center;height:100%}
.oh-stat .v{font-size:32px;font-weight:800;color:#fff;line-height:1.1}
.oh-stat .v sup{font-size:16px;color:#ee5586;font-weight:700;top:-.5em}
.oh-stat .l{font-size:13px;color:#9aa7b1;margin-top:8px}
.oh-card2{border:1px solid rgba(255,255,255,.10);border-radius:16px;background:rgba(255,255,255,.03);padding:28px 26px;height:100%;transition:transform .2s,border-color .2s,background .2s}
.oh-card2:hover{border-color:rgba(238,85,134,.45);background:rgba(255,255,255,.05);transform:translateY(-4px)}
.oh-card2 .ic{width:52px;height:52px;border-radius:13px;display:flex;align-items:center;justify-content:center;background:linear-gradient(125deg,#7c4dff,#ee5586);color:#fff;font-size:21px;margin-bottom:18px}
.oh-card2 .h{color:#fff;font-weight:700;font-size:17px;margin-bottom:9px}
.oh-card2 .p{color:#9aa7b1;font-size:14px;line-height:1.75;margin:0}
.oh-tl{border-left:2px solid rgba(238,85,134,.45);padding-left:24px;margin-left:6px}
.oh-tl .item{margin-bottom:26px;position:relative}
.oh-tl .item:last-child{margin-bottom:0}
.oh-tl .item:before{content:'';position:absolute;left:-31px;top:4px;width:12px;height:12px;border-radius:50%;background:#ee5586;box-shadow:0 0 0 4px rgba(238,85,134,.15)}
.oh-tl .y{color:#ee5586;font-weight:700;font-size:13px}
.oh-tl .t{color:#fff;font-weight:700;margin:2px 0;font-size:16px}
.oh-tl .d{color:#9aa7b1;font-size:14px;line-height:1.75}
.oh-team{border:1px solid rgba(255,255,255,.10);border-radius:16px;background:rgba(255,255,255,.03);padding:22px;display:flex;align-items:center;gap:16px;height:100%}
.oh-team .av{width:52px;height:52px;border-radius:50%;flex:0 0 52px;display:flex;align-items:center;justify-content:center;background:linear-gradient(125deg,#7c4dff,#ee5586);color:#fff;font-weight:800;font-size:20px}
.oh-team .n{color:#fff;font-weight:700}
.oh-team .r{color:#ee5586;font-size:13px}
.oh-sec-title{font-size:2rem;font-weight:800;color:#fff}
.oh-sec-sub{color:#9aa7b1;margin-top:6px}

/* --------------------------------------------------------------------------
   8. Blog — liste
   -------------------------------------------------------------------------- */
.oh-blog-filter{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-bottom:8px}
.oh-blog-filter a{font-size:14px;font-weight:600;color:#9aa7b1;border:1px solid rgba(255,255,255,.14);border-radius:9px;padding:8px 16px;text-decoration:none;transition:.15s}
.oh-blog-filter a:hover{border-color:rgba(238,85,134,.5);color:#fff}
.oh-blog-filter a.active{background:#ee5586;border-color:#ee5586;color:#fff}
.oh-post .cover{position:relative;display:block;border-radius:14px 14px 0 0;overflow:hidden;aspect-ratio:16/10;background:linear-gradient(125deg,#1c2b36,#15212a)}
.oh-post .cover img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s}
.oh-post:hover .cover img{transform:scale(1.04)}
.oh-post .cover.ph{display:flex;align-items:center;justify-content:center;color:#ee5586;font-size:38px;background:linear-gradient(125deg,#2a1b33,#15212a)}
.oh-post .service-section{border-radius:0 0 14px 14px;height:calc(100% - 0px);padding:22px 22px 24px}

/* Badge de catégorie posé sur la couverture. Le badge du thème
   (.plans.badge.feat) est en position:absolute;top:-40px — pensé pour les
   cartes de tarifs, il sortait de la carte et restait invisible. */
.oh-post .oh-post-cat{position:absolute;top:12px;left:12px;z-index:2;background:linear-gradient(120deg,#7c4dff,#ee5586);color:#fff;font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:5px 11px;border-radius:7px;line-height:1.4}

/* Titre tronqué à 2 lignes, extrait à 3 : hauteurs égales => les cartes
   s'alignent et le vide avant le bouton disparaît.
   .oh-post-body est indispensable : dans .service-section (d-flex), titre et
   extrait seraient des éléments flex, dont le display est « blockifié » —
   -webkit-box deviendrait flow-root et le line-clamp ne s'appliquerait pas. */
.oh-post .oh-post-body{flex:0 0 auto}
.oh-post .service-section .title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:1.06rem;line-height:1.45;font-weight:700;color:#fff;margin:0 0 10px;text-decoration:none;transition:color .15s}
.oh-post .service-section .title:hover{color:#ee5586}
.oh-post .service-section .subtitle{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;font-size:14px;line-height:1.7;color:#9aa7b1;margin:0 0 16px;font-style:normal}
.oh-post .service-section hr{border-color:rgba(255,255,255,.08);margin:0 0 14px;opacity:1}
/* Le thème force text-transform:capitalize sur .btn => « Lire L'article ». */
.oh-post .service-section .btn{text-transform:none}
.oh-paging{display:flex;gap:8px;justify-content:center;align-items:center;flex-wrap:wrap;margin-top:20px}
.oh-paging a,.oh-paging span{min-width:38px;text-align:center;padding:8px 12px;border-radius:9px;border:1px solid rgba(255,255,255,.14);color:#c7d0d9;text-decoration:none;font-size:14px}
.oh-paging a:hover{border-color:rgba(238,85,134,.5);color:#fff}
.oh-paging .cur{background:#ee5586;border-color:#ee5586;color:#fff}
.oh-paging .off{opacity:.4;pointer-events:none}

/* --------------------------------------------------------------------------
   9. Blog — article
   -------------------------------------------------------------------------- */
.oh-article{max-width:820px;margin:0 auto}
.oh-article .cover{border-radius:16px;overflow:hidden;margin-bottom:28px;max-height:420px}
.oh-article .cover img{width:100%;height:auto;display:block}
.oh-article .meta{display:flex;align-items:center;gap:16px;flex-wrap:wrap;color:#9aa7b1;font-size:14px;margin-bottom:22px}
.oh-article .meta .badge-cat{background:linear-gradient(120deg,#7c4dff,#ee5586);color:#fff;font-weight:700;font-size:12px;padding:5px 12px;border-radius:8px}
.oh-article .prose img{border-radius:12px;max-width:100%;height:auto;margin:1.2em 0}
.oh-related .oh-rel{display:block;border:1px solid rgba(255,255,255,.10);border-radius:12px;background:rgba(255,255,255,.03);padding:18px 20px;height:100%;text-decoration:none;transition:.15s}
.oh-related .oh-rel:hover{border-color:rgba(238,85,134,.45);transform:translateY(-3px)}
.oh-related .oh-rel .t{color:#fff;font-weight:700;margin-bottom:6px}
.oh-related .oh-rel .e{color:#9aa7b1;font-size:13.5px;line-height:1.6}
.oh-related .oh-rel .d{color:#ee5586;font-size:12px;margin-top:8px}

/* --------------------------------------------------------------------------
   10. Statut des serveurs
   -------------------------------------------------------------------------- */
.oh-status{border:1px solid rgba(255,255,255,.14);border-radius:12px;background:rgba(255,255,255,.04);padding:18px 22px;display:flex;align-items:center;gap:14px;margin-bottom:14px}
.oh-dot{width:12px;height:12px;border-radius:50%;flex:0 0 12px}
.oh-dot.ok{background:#2ecc71;box-shadow:0 0 0 4px rgba(46,204,113,.15)}
.oh-dot.ko{background:#e74c3c;box-shadow:0 0 0 4px rgba(231,76,60,.15)}
.oh-dot.warn{background:#fdd700;box-shadow:0 0 0 4px rgba(253,215,0,.15)}
.oh-status .n{color:#fff;font-weight:600;flex:1}
.oh-status .u{color:#9aa7b1;font-size:13px}
.oh-overall{font-size:42px;font-weight:800;color:#2ecc71}
