/* ================================================
   FINANZSWISS — style.css
   Bootstrap CSS est chargé en premier.
   Ce fichier surcharge uniquement ce qui est
   nécessaire, sans créer de conflits.
================================================ */

/* ── Variables ─────────────────────────────────── */
:root {
    --red:   #e60000;
    --navy:  #020817;
    --nav-h: 65px;
}
@media (min-width: 992px) { :root { --nav-h: 72px; } }

/* ================================================
   FIX 1 — ZÉRO SCROLL HORIZONTAL
   Cause : Bootstrap .row applique margin-left et
   margin-right négatifs égaux à la moitié du
   gutter. Sur mobile ces marges dépassent du
   viewport. On les annule ici de façon définitive,
   et on clip tout débordement sur html/body.
================================================ */
html { overflow-x: clip; }
body { overflow-x: clip; }

/* Annule les marges négatives de Bootstrap .row */
.row {
    --bs-gutter-x: 1.5rem;
    margin-left: 0  !important;
    margin-right: 0 !important;
}

/* Compense en réduisant le padding des colonnes */
.row > * {
    padding-left:  calc(var(--bs-gutter-x) * .5);
    padding-right: calc(var(--bs-gutter-x) * .5);
}

/* Container : jamais plus large que le viewport */
.container,
.container-sm,
.container-md,
.container-lg,
.container-xl,
.container-xxl {
    max-width: 100% !important;
    padding-left:  1rem !important;
    padding-right: 1rem !important;
}

/* Tout élément de bloc reste dans le viewport */
section, header, footer, nav, main, article {
    max-width: 100%;
    overflow-x: hidden;
}

img, svg, video, iframe { max-width: 100%; }

/* ================================================
   FIX 2 — NAVBAR : hamburger toujours visible
   Cause : .container Bootstrap a un max-width
   inférieur à 100vw à certains breakpoints, ce
   qui crée un espace vide à droite où le
   hamburger tombait hors de l'écran.
   Solution : la navbar utilise .nav-inner (notre
   classe) au lieu de .container Bootstrap.
================================================ */
.nav-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: nowrap;
    width: 100%;
    height: 100%;
    padding-left:  1rem;
    padding-right: 1rem;
    box-sizing: border-box;
}

.navbar {
    position: fixed;
    top: 0; left: 0;
    width: 100%;
    height: var(--nav-h);
    z-index: 1050;
    background: transparent;
    transition: background .35s, box-shadow .35s;
    padding: 0;
}
.navbar.scrolled {
    background: rgba(255,255,255,.97);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    box-shadow: 0 2px 16px rgba(0,0,0,.08);
}

/* Brand */
.navbar-brand {
    display: flex;
    align-items: center;
    gap: .4rem;
    text-decoration: none;
    flex: 0 1 auto;
    min-width: 0;
    overflow: hidden;
}
.navbar-brand span {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    display: block;
}
.navbar-brand .text-swiss-red { color: var(--red) !important; }

/* Menu desktop */
.nav-desktop {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-shrink: 0;
}
@media (max-width: 991.98px) { .nav-desktop { display: none; } }

/* Hamburger */
.nav-hamburger {
    display: none;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    padding: 8px;
    flex-shrink: 0;
    margin-left: .5rem;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
    line-height: 1;
    cursor: pointer;
}
@media (max-width: 991.98px) { .nav-hamburger { display: flex; } }

/* Couleurs selon scroll */
.navbar:not(.scrolled) .nav-link          { color: #fff !important; }
.navbar.scrolled       .nav-link          { color: var(--navy) !important; }
.navbar:not(.scrolled) .navbar-brand span { color: #fff !important; }
.navbar.scrolled       .navbar-brand span { color: var(--navy) !important; }
.navbar:not(.scrolled) .nav-hamburger     { color: #fff; }
.navbar.scrolled       .nav-hamburger     { color: var(--navy); }

/* Bouton langue */
.nav-lang-btn {
    background: transparent !important;
    border: 1px solid rgba(255,255,255,.5) !important;
    border-radius: 50rem !important;
    padding: .25rem .75rem !important;
    display: flex; align-items: center; gap: .4rem;
    transition: border-color .3s, color .3s;
}
.navbar:not(.scrolled) .nav-lang-btn { color: #fff !important; border-color: rgba(255,255,255,.5) !important; }
.navbar.scrolled       .nav-lang-btn { color: var(--navy) !important; border-color: rgba(2,8,23,.25) !important; }

/* ── Apply page : navbar scrolled par défaut */
.navbar.scrolled .nav-hamburger { color: var(--navy); }

/* ── Liens nav */
.nav-link {
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .08em;
    font-size: .72rem;
    text-decoration: none;
    white-space: nowrap;
    transition: opacity .3s;
}
.nav-link:hover { opacity: .7; }

@media (max-width: 575.98px) {
    .nav-inner { padding-left: .6rem; padding-right: .6rem; }
}

/* ================================================
   FIX 3 — MENU MOBILE
================================================ */
#mobileMenu, #applyMobileMenu {
    display: none;
    position: fixed;
    top: var(--nav-h);
    left: 0;
    width: 100%;
    height: calc(100vh - var(--nav-h));
    background: #fff;
    z-index: 1040;
    overflow-y: auto;
    overflow-x: hidden;
}
#mobileMenu.open, #applyMobileMenu.open { display: block; }

.mobile-menu .nav-link {
    display: flex !important;
    justify-content: space-between;
    align-items: center;
    padding: .9rem 1.5rem;
    border-bottom: 1px solid #eee;
    font-size: .8rem;
    color: var(--navy) !important;
    white-space: normal;
}

#menuOverlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,.35);
    z-index: 1039;
    cursor: pointer;
}
#menuOverlay.active { display: block; }

/* ================================================
   UTILITAIRES CUSTOM (non fournis par Bootstrap)
================================================ */
.fw-black         { font-weight: 900 !important; }
.tracking-widest  { letter-spacing: .12em !important; }
.tracking-tighter { letter-spacing: -.04em !important; }
.text-dark-blue   { color: var(--navy); }
.bg-dark-blue     { background-color: var(--navy); }
.text-swiss-red   { color: var(--red) !important; }
.bg-swiss-red     { background-color: var(--red); }
.border-white-10  { border-color: rgba(255,255,255,.1) !important; }
.xsmall  { font-size: .65rem; }
.xxsmall { font-size: .6rem; }

/* ── Langue dropdown ──────────────────────────── */
.lang-selector { position: relative; }
.lang-dropdown {
    position: absolute;
    top: calc(100% + 8px); right: 0;
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 8px 32px rgba(0,0,0,.12);
    min-width: 150px;
    z-index: 1060;
    overflow: hidden;
}
.lang-option {
    display: block; width: 100%;
    padding: 10px 16px;
    border: none; background: #fff;
    cursor: pointer; font-weight: 500;
    font-size: .85rem; text-align: left;
    font-family: 'Inter', sans-serif;
    touch-action: manipulation;
    transition: background .2s;
}
.lang-option:hover  { background: #f8f9fa; }
.lang-option.active { background: rgba(230,0,0,.06); color: var(--red); font-weight: 700; }

/* ── Bouton CTA ───────────────────────────────── */
.btn-danger-custom {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    background: var(--red);
    color: #fff !important;
    border: none;
    padding: 10px 22px;
    border-radius: 40px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .08em;
    font-size: .75rem;
    font-family: 'Inter', sans-serif;
    text-decoration: none;
    cursor: pointer;
    white-space: nowrap;
    touch-action: manipulation;
    transition: transform .3s, box-shadow .3s;
}
.btn-danger-custom:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(230,0,0,.3);
}
.btn-danger-custom:disabled { opacity: .7; cursor: not-allowed; transform: none; }

/* ── Hero ─────────────────────────────────────── */
section[id] { scroll-margin-top: calc(var(--nav-h) + 16px); }
#hero { scroll-margin-top: 0; }

#hero {
    position: relative;
    display: flex;
    align-items: center;
    height: 82vh;
    min-height: 540px;
    max-height: 780px;
    overflow: hidden;
    padding-top: var(--nav-h);
    background-color: var(--navy);
}
.hero-bg-container { position: absolute; inset: 0; overflow: hidden; }
.hero-slide {
    position: absolute; inset: 0;
    background-size: cover;
    background-position: center;
    opacity: 0;
    transition: opacity 1s ease;
}
.hero-slide.active { opacity: 1; }

/* ── Feature cards ───────────────────────────── */
.feature-card {
    background: #fff;
    border: 1px solid #f1f3f5;
    border-radius: 20px;
    padding: 24px;
    height: 100%;
    transition: transform .35s, box-shadow .35s;
}
.feature-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 24px 48px -12px rgba(0,0,0,.1);
    border-color: rgba(230,0,0,.2);
}
.icon-wrapper {
    width: 52px; height: 52px;
    background: rgba(230,0,0,.06);
    border-radius: 16px;
    display: flex; align-items: center; justify-content: center;
    color: var(--red);
    margin-bottom: 16px;
    flex-shrink: 0;
    transition: background .3s, transform .3s;
}
.feature-card:hover .icon-wrapper { background: var(--red); color: #fff; transform: rotate(-5deg); }

/* ── Calculateur ──────────────────────────────── */
.custom-slider {
    -webkit-appearance: none; appearance: none;
    width: 100%; height: 5px; flex: 1; min-width: 0;
    border-radius: 5px; background: #dee2e6; outline: none;
}
.custom-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 20px; height: 20px; border-radius: 50%;
    background: var(--red); cursor: pointer;
    border: 3px solid #fff; box-shadow: 0 2px 8px rgba(230,0,0,.3);
}
.custom-slider::-moz-range-thumb {
    width: 20px; height: 20px; border-radius: 50%;
    background: var(--red); cursor: pointer; border: 3px solid #fff;
}
.calc-input-row { display: flex; align-items: center; gap: .5rem; min-width: 0; }
.calc-input-row input { width: 85px; min-width: 65px; flex-shrink: 0; }

/* ── Tabs services / corporate ────────────────── */
.service-tab, .corp-tab {
    padding: 14px 18px; border-radius: 14px; cursor: pointer;
    border-left: 3px solid transparent;
    touch-action: manipulation;
    transition: background .2s, border-color .2s;
}
.service-tab.active, .corp-tab.active {
    background: #f8f9fa;
    border-left-color: var(--red);
    box-shadow: 0 4px 12px rgba(0,0,0,.05);
}

/* ── Avis clients ─────────────────────────────── */
.review-card {
    background: #fcfcfc; border: 1px solid #eee;
    padding: 18px; border-radius: 14px; height: 100%;
    transition: border-color .3s, box-shadow .3s;
}
.review-card:hover { border-color: var(--red); box-shadow: 0 8px 24px rgba(0,0,0,.05); }
.review-avatar { width: 42px; height: 42px; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
.stat-number { font-size: 2.2rem; font-weight: 900; }

/* ── Footer ───────────────────────────────────── */
.social-icon-circle {
    width: 36px; height: 36px; border-radius: 50%;
    background: rgba(255,255,255,.06);
    display: inline-flex; align-items: center; justify-content: center;
    color: rgba(255,255,255,.5); text-decoration: none; flex-shrink: 0;
    transition: background .3s, color .3s, transform .3s;
}
.social-icon-circle:hover { background: var(--red); color: #fff; transform: translateY(-3px); }
.contact-icon-circle {
    width: 30px; height: 30px; border-radius: 50%;
    background: rgba(220,53,69,.1); color: var(--red);
    display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.ceo-contact-item {
    background: rgba(255,215,0,.05); border-radius: 8px;
    border: 1px solid rgba(255,215,0,.2); padding: 7px 10px;
}
.ceo-icon { background: linear-gradient(135deg,#FFD700,#FFA500); color:#000; }

/* ── Apply page ───────────────────────────────── */
.apply-hero {
    position: relative; overflow: hidden;
    height: 40vh; min-height: 260px;
    background: linear-gradient(rgba(2,8,23,.8),rgba(2,8,23,.6)),
                url('https://images.unsplash.com/photo-1497366216548-37526070297c?q=80&w=2069&auto=format');
    background-size: cover; background-position: center;
    display: flex; align-items: center;
    padding-top: var(--nav-h);
}
.form-container { margin-top: -60px; position: relative; z-index: 10; }
.form-card { background: #fff; border-radius: 20px; box-shadow: 0 20px 60px rgba(0,0,0,.1); overflow: hidden; }
.step-indicator {
    display: flex; align-items: flex-start;
    justify-content: space-between;
    position: relative; padding: 0 16px;
}
.step-indicator::before {
    content: ''; position: absolute;
    top: 20px; left: 50px; right: 50px;
    height: 2px; background: #dee2e6; z-index: 0;
}
.progress-fill {
    position: absolute; top: 20px; left: 50px;
    height: 2px; background: var(--red);
    z-index: 1; transition: width .4s;
}
.step-circle {
    width: 40px; height: 40px; border-radius: 50%;
    background: #dee2e6;
    display: flex; align-items: center; justify-content: center;
    font-weight: 800; font-size: .85rem; color: #6c757d;
    position: relative; z-index: 2;
    margin: 0 auto 4px;
    transition: background .3s, color .3s;
}
.step-circle.active    { background: var(--red); color: #fff; }
.step-circle.completed { background: #10b981; color: #fff; }
.step-label { font-size: .65rem; font-weight: 600; text-transform: uppercase; color: #6c757d; }
.form-step { display: none; }
.form-step.active { display: block; }

/* ================================================
   RESPONSIVE MOBILE
================================================ */
@media (max-width: 991.98px) {
    #hero { height: auto; min-height: 460px; max-height: none; padding: 100px 0 55px; }
    .service-tab, .corp-tab { padding: 10px 14px; }
}

@media (max-width: 767.98px) {
    .container,
    .container-sm,
    .container-md,
    .container-lg,
    .container-xl,
    .container-xxl {
        padding-left:  .75rem !important;
        padding-right: .75rem !important;
    }
    .py-5 { padding-top: 2rem !important; padding-bottom: 2rem !important; }
    #hero { min-height: 380px; padding: 88px 0 40px; }
    .feature-card { padding: 14px; }
    .stat-number { font-size: 1.65rem; }
    .navbar-brand img  { height: 26px !important; }
    .navbar-brand span { font-size: .95rem !important; }
    .apply-hero { height: 28vh; min-height: 180px; }
    .form-container { margin-top: -35px; }
    .step-label  { font-size: .6rem; }
    .step-circle { width: 32px !important; height: 32px !important; font-size: .78rem !important; }
    .step-indicator::before, .progress-fill { top: 16px; }
    .btn-danger-custom { padding: 9px 16px; font-size: .72rem; }
}

@media (max-width: 575.98px) {
    .container,
    .container-sm {
        padding-left:  .6rem !important;
        padding-right: .6rem !important;
    }
    .navbar-brand img  { height: 22px !important; }
    .navbar-brand span { font-size: .82rem !important; }
    .btn-danger-custom { padding: 8px 12px; font-size: .68rem; }
    .step-circle { width: 28px !important; height: 28px !important; font-size: .7rem !important; }
    .step-label  { font-size: .55rem; }
    .step-indicator::before, .progress-fill { top: 14px; }
    .apply-hero { min-height: 160px; }
    .form-container { margin-top: -22px; }
    .stat-number { font-size: 1.45rem; }
    #serviceDetail, #corpDetail { padding: .85rem !important; }
    footer a[href^="mailto"] { word-break: break-all; font-size: .68rem !important; }
}

/* iOS safe area */
@supports (padding: env(safe-area-inset-top)) {
    .nav-inner {
        padding-left:  max(1rem, env(safe-area-inset-left));
        padding-right: max(1rem, env(safe-area-inset-right));
    }
    footer { padding-bottom: calc(1rem + env(safe-area-inset-bottom)); }
}
