/* ============================================================
   LOGEMOI WEB — Design System
   Typographie : Manrope (titres) + Inter (texte courant)
   Palette : Bleu confiance / Cyan fluidité / Orange action
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@500;700;800&family=Inter:wght@400;500;600;700&display=swap');

:root {
    --blue: #114B7F;
    --blue-dark: #0A3157;
    --blue-soft: #EAF2FA;
    --cyan: #2FBAD1;
    --cyan-dark: #1590A3;
    --cyan-soft: #E5F8FB;
    --orange: #FF7A1A;
    --orange-dark: #E8650A;
    --bg: #F6F8FB;
    --surface: #FFFFFF;
    --text: #101A26;
    --text-muted: #5C6B7E;
    --border: #E5EAF1;
    --success: #2AA876;
    --danger: #E5484D;
    --radius-lg: 22px;
    --radius-md: 14px;
    --shadow-1: 0 2px 8px rgba(16,26,38,0.06);
    --shadow-2: 0 10px 30px rgba(16,26,38,0.10);
}
* { box-sizing: border-box; }
html, body { margin:0; padding:0; background: var(--bg); color: var(--text); font-family: 'Inter', sans-serif; scroll-behavior: smooth; }
h1,h2,h3,h4 { font-family: 'Manrope', sans-serif; margin:0; }
a { text-decoration:none; color:inherit; }
img { max-width:100%; }
.container { max-width: 1180px; margin: 0 auto; padding: 0 28px; }

/* ---------- NAVBAR ---------- */
.navbar { position: sticky; top:0; z-index: 50; background: rgba(255,255,255,0.92); backdrop-filter: blur(10px); border-bottom: 1px solid var(--border); }
.navbar-inner { max-width: 1180px; margin: 0 auto; padding: 16px 28px; display:flex; align-items:center; justify-content:space-between; }
.brand { display:flex; align-items:center; gap:10px; font-weight:800; font-size:19px; }
.brand .logo-dot { width:38px; height:38px; border-radius:11px; background: var(--orange); color:#fff; display:flex; align-items:center; justify-content:center; font-weight:900; box-shadow: 0 4px 12px rgba(255,122,26,0.35); }
.nav-links { display:flex; gap:30px; align-items:center; }
.nav-links a { font-weight:600; font-size:14.5px; color: var(--text-muted); transition: color 0.15s; }
.nav-links a:hover { color: var(--blue); }
.nav-cta { display:flex; gap:12px; }

/* ---------- BUTTONS ---------- */
.btn { display:inline-flex; align-items:center; justify-content:center; gap:8px; padding: 13px 26px; border-radius: 12px; font-weight:700; font-size:14.5px; border:none; cursor:pointer; transition: all 0.15s ease; }
.btn-primary { background: var(--orange); color:#fff; box-shadow: 0 8px 20px rgba(255,122,26,0.30); }
.btn-primary:hover { background: var(--orange-dark); transform: translateY(-1px); }
.btn-outline { background:transparent; border:1.5px solid var(--blue); color: var(--blue); }
.btn-outline:hover { background: var(--blue-soft); }
.btn-ghost { background: var(--blue-soft); color: var(--blue); }
.btn-block { width:100%; }
.btn-sm { padding: 9px 16px; font-size:13px; border-radius:10px; }
.btn-danger { background: #FDECEC; color: var(--danger); }
.btn:disabled { opacity: 0.6; cursor: not-allowed; }

/* ---------- HERO ---------- */
.hero { padding: 90px 0 70px; position: relative; overflow: hidden; }
.hero-grid { display:grid; grid-template-columns: 1.05fr 0.95fr; gap: 50px; align-items:center; }
.eyebrow { display:inline-flex; align-items:center; gap:8px; background: var(--blue-soft); color: var(--blue); font-weight:700; font-size:12.5px; padding: 7px 16px; border-radius: 30px; margin-bottom:22px; letter-spacing:0.3px; }
.hero h1 { font-size: 48px; line-height: 1.08; font-weight: 800; letter-spacing:-0.5px; }
.hero h1 .accent { color: var(--orange); }
.hero p.lead { font-size: 17px; color: var(--text-muted); margin: 22px 0 32px; max-width: 480px; line-height:1.6; }
.hero-actions { display:flex; gap:14px; margin-bottom: 36px; }
.hero-stats { display:flex; gap: 34px; }
.hero-stats div strong { display:block; font-size:22px; font-weight:800; color: var(--blue); }
.hero-stats div span { font-size:12.5px; color: var(--text-muted); }

.hero-visual { position: relative; }
.orbit-card { background: var(--surface); border-radius: var(--radius-lg); box-shadow: var(--shadow-2); border: 1px solid var(--border); padding: 26px; position: relative; z-index: 2; }
.orbit-card .flow-step { display:flex; align-items:center; gap:14px; padding: 13px 0; border-bottom: 1px dashed var(--border); }
.orbit-card .flow-step:last-child { border-bottom:none; }
.flow-step .fs-icon { width:40px; height:40px; border-radius:12px; display:flex; align-items:center; justify-content:center; font-size:18px; flex-shrink:0; }
.flow-step .fs-text strong { display:block; font-size:14px; }
.flow-step .fs-text span { font-size:12px; color: var(--text-muted); }
.blob { position:absolute; border-radius:50%; filter: blur(60px); opacity:0.35; z-index:1; }
.blob-1 { width:320px; height:320px; background: var(--cyan); top:-80px; right:-60px; }
.blob-2 { width:260px; height:260px; background: var(--orange); bottom:-100px; left:20%; opacity:0.18; }

/* ---------- MODULES SECTION ---------- */
.section { padding: 70px 0; }
.section-head { text-align:center; max-width: 620px; margin: 0 auto 46px; }
.section-head .eyebrow { margin: 0 auto 16px; }
.section-head h2 { font-size: 32px; letter-spacing:-0.3px; }
.section-head p { color: var(--text-muted); margin-top:12px; font-size:15px; }

.modules-grid { display:grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.module-card { background: var(--surface); border:1px solid var(--border); border-radius: var(--radius-md); padding: 28px 24px; box-shadow: var(--shadow-1); transition: transform 0.2s ease, box-shadow 0.2s ease; }
.module-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-2); }
.module-card .mc-icon { width:52px; height:52px; border-radius:14px; display:flex; align-items:center; justify-content:center; font-size:22px; margin-bottom:16px; }
.module-card h3 { font-size:17px; margin-bottom:8px; }
.module-card p { font-size:13.5px; color: var(--text-muted); line-height:1.55; margin:0; }
.tone-blue .mc-icon { background: var(--blue-soft); color: var(--blue); }
.tone-cyan .mc-icon { background: var(--cyan-soft); color: var(--cyan-dark); }
.tone-orange .mc-icon { background: #FFEEE0; color: var(--orange-dark); }

/* ---------- HOW IT WORKS ---------- */
.steps-row { display:grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.step-card { position:relative; padding: 26px 20px; background: var(--surface); border-radius: var(--radius-md); border:1px solid var(--border); }
.step-num { font-size: 34px; font-weight:800; color: var(--blue-soft); position:absolute; top:14px; right:18px; }
.step-card h4 { font-size:15px; margin: 6px 0 8px; position:relative; }
.step-card p { font-size:13px; color:var(--text-muted); margin:0; position:relative; }

/* ---------- FEATURED CAROUSEL (produits & services phares) ---------- */
.carousel-section { padding: 70px 0; background: var(--surface); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.carousel-wrap { position: relative; }
.carousel-viewport { overflow: hidden; border-radius: var(--radius-lg); }
.carousel-track { display: flex; transition: transform 0.5s cubic-bezier(0.4,0,0.2,1); }
.carousel-slide { min-width: 100%; box-sizing: border-box; }
.slide-inner {
    display: grid; grid-template-columns: 1.1fr 0.9fr; align-items: center; gap: 0;
    background: linear-gradient(120deg, var(--blue) 0%, var(--blue-dark) 100%);
    border-radius: var(--radius-lg); overflow: hidden; min-height: 320px;
}
.slide-content { padding: 44px 46px; color: #fff; }
.slide-tag { display:inline-flex; align-items:center; gap:7px; background: rgba(255,255,255,0.14); padding: 6px 14px; border-radius: 30px; font-size:12px; font-weight:700; margin-bottom:18px; }
.slide-content h3 { font-size: 26px; margin-bottom: 10px; line-height:1.2; }
.slide-content p.slide-desc { color: rgba(255,255,255,0.78); font-size:14.5px; margin-bottom:20px; max-width:420px; line-height:1.55; }
.slide-price { font-size: 20px; font-weight: 800; color: var(--orange); margin-bottom: 20px; display:block; }
.slide-visual { height: 100%; min-height: 320px; display:flex; align-items:center; justify-content:center; font-size: 84px; background: rgba(255,255,255,0.06); position:relative; }
.slide-visual::before { content:''; position:absolute; inset:0; background: radial-gradient(circle at 30% 30%, rgba(255,255,255,0.10), transparent 60%); }

.carousel-arrow {
    position: absolute; top: 50%; transform: translateY(-50%);
    width: 46px; height: 46px; border-radius: 50%; background: var(--surface); border: 1px solid var(--border);
    box-shadow: var(--shadow-2); display:flex; align-items:center; justify-content:center; font-size: 18px;
    cursor: pointer; z-index: 5; color: var(--blue); transition: transform 0.15s ease;
}
.carousel-arrow:hover { transform: translateY(-50%) scale(1.08); }
.carousel-arrow.prev { left: -22px; }
.carousel-arrow.next { right: -22px; }
.carousel-dots { display:flex; justify-content:center; gap:8px; margin-top: 22px; }
.carousel-dots .dot { width:9px; height:9px; border-radius:50%; background: var(--border); cursor:pointer; transition: all 0.2s ease; }
.carousel-dots .dot.active { width:26px; border-radius:6px; background: var(--orange); }
.carousel-loading { min-height: 320px; display:flex; align-items:center; justify-content:center; border-radius: var(--radius-lg); background: var(--blue-soft); }

@media (max-width: 780px) {
    .slide-inner { grid-template-columns: 1fr; }
    .slide-visual { min-height: 160px; font-size: 56px; order: -1; }
    .slide-content { padding: 30px 26px; }
    .carousel-arrow { display: none; }
}

/* ---------- CTA BAND ---------- */
.cta-band { background: linear-gradient(120deg, var(--blue), var(--blue-dark)); border-radius: 28px; padding: 56px; color:#fff; display:flex; align-items:center; justify-content:space-between; gap: 30px; }
.cta-band h2 { font-size: 27px; }
.cta-band p { color: rgba(255,255,255,0.75); margin-top:10px; }

/* ---------- FOOTER ---------- */
footer { border-top:1px solid var(--border); padding: 44px 0 30px; margin-top: 30px; }
.footer-grid { display:grid; grid-template-columns: 1.4fr repeat(3, 1fr); gap: 30px; }
.footer-grid h5 { font-size:13px; text-transform:uppercase; letter-spacing:0.5px; color: var(--text-muted); margin-bottom: 14px; }
.footer-grid a { display:block; font-size:13.5px; color: var(--text); margin-bottom:10px; }
.footer-bottom { text-align:center; font-size:12.5px; color: var(--text-muted); margin-top: 36px; }

/* ============================================================
   AUTH PAGES
   ============================================================ */
.auth-page { min-height:100vh; display:flex; }
.auth-side { flex:1; background: linear-gradient(160deg, var(--blue), var(--blue-dark)); color:#fff; display:flex; flex-direction:column; justify-content:center; padding: 60px; position:relative; overflow:hidden; }
.auth-side h2 { font-size: 30px; max-width: 380px; line-height:1.25; }
.auth-side p { color: rgba(255,255,255,0.75); margin-top:16px; max-width:360px; line-height:1.6; }
.auth-form-wrap { flex:1; display:flex; align-items:center; justify-content:center; padding: 40px; }
.auth-card { width: 100%; max-width: 400px; }
.auth-card h1 { font-size: 24px; margin-bottom:6px; }
.auth-card .sub { color: var(--text-muted); font-size:14px; margin-bottom: 26px; }
.field { margin-bottom: 16px; }
.field label { display:block; font-size:13px; font-weight:600; margin-bottom:6px; }
.field input, .field select, .field textarea { width:100%; padding: 12px 14px; border-radius:10px; border:1.5px solid var(--border); font-size:14px; font-family:inherit; outline:none; transition: border-color 0.15s; }
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--cyan); }
.field-row { display:flex; gap:12px; }
.field-row .field { flex:1; }
.error-msg { background:#FDECEC; color:var(--danger); padding:11px 14px; border-radius:10px; font-size:13px; margin-bottom:16px; display:none; }
.success-msg { background:#E4F6EE; color:var(--success); padding:11px 14px; border-radius:10px; font-size:13px; margin-bottom:16px; display:none; }
.auth-switch { text-align:center; margin-top: 20px; font-size:13.5px; color: var(--text-muted); }
.auth-switch a { color: var(--orange-dark); font-weight:700; }

/* ============================================================
   DASHBOARD (App layout)
   ============================================================ */
.dash-layout { display:flex; min-height:100vh; }
.sidebar { width: 250px; background: var(--surface); border-right:1px solid var(--border); padding: 22px 16px; display:flex; flex-direction:column; position: sticky; top:0; height:100vh; }
.sidebar .brand { margin-bottom: 30px; padding: 0 8px; }
.side-nav { flex:1; display:flex; flex-direction:column; gap:4px; }
.side-nav a { display:flex; align-items:center; gap:12px; padding: 11px 14px; border-radius:10px; font-size:14px; font-weight:600; color: var(--text-muted); }
.side-nav a .icon { font-size:17px; }
.side-nav a.active, .side-nav a:hover { background: var(--blue-soft); color: var(--blue); }
.sidebar-footer { border-top:1px solid var(--border); padding-top:14px; }
.sidebar-user { display:flex; align-items:center; gap:10px; padding: 8px; }
.sidebar-user .av { width:36px; height:36px; border-radius:50%; background:var(--blue-soft); color:var(--blue); display:flex; align-items:center; justify-content:center; font-weight:800; }
.sidebar-user .info strong { display:block; font-size:13px; }
.sidebar-user .info span { font-size:11.5px; color: var(--text-muted); }

.dash-main { flex:1; padding: 30px 36px; max-width: calc(100% - 250px); }
.dash-topbar { display:flex; justify-content:space-between; align-items:center; margin-bottom: 26px; }
.dash-topbar h1 { font-size: 24px; }
.dash-topbar p { color: var(--text-muted); font-size:14px; margin-top:4px; }

.kpi-row { display:grid; grid-template-columns: repeat(4, 1fr); gap: 18px; margin-bottom: 30px; }
.kpi-box { background: var(--surface); border:1px solid var(--border); border-radius: var(--radius-md); padding: 20px; box-shadow: var(--shadow-1); }
.kpi-box .num { font-size: 26px; font-weight:800; color: var(--blue); }
.kpi-box .lbl { font-size:12.5px; color:var(--text-muted); margin-top:4px; }

.panel { background: var(--surface); border:1px solid var(--border); border-radius: var(--radius-md); box-shadow: var(--shadow-1); padding: 24px; margin-bottom: 24px; }
.panel-head { display:flex; justify-content:space-between; align-items:center; margin-bottom: 18px; }
.panel-head h3 { font-size:16.5px; }

.grid-cards { display:grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 18px; }
.data-card { border:1px solid var(--border); border-radius: 14px; overflow:hidden; }
.data-card .thumb { height:120px; background: linear-gradient(135deg, var(--cyan-soft), var(--blue-soft)); display:flex; align-items:center; justify-content:center; font-size:30px; color:var(--blue); position:relative; }
.data-card .badge { position:absolute; top:10px; left:10px; background:var(--orange); color:#fff; font-size:10.5px; font-weight:700; padding:4px 10px; border-radius:20px; }
.data-card .body { padding: 14px; }
.data-card h4 { font-size:14.5px; margin-bottom:4px; }
.data-card .meta { font-size:12px; color:var(--text-muted); margin-bottom:8px; }
.data-card .price { font-weight:800; color: var(--orange-dark); }

.table-simple { width:100%; border-collapse: collapse; }
.table-simple th { text-align:left; font-size:12px; text-transform:uppercase; color:var(--text-muted); padding:10px 12px; border-bottom:1.5px solid var(--border); letter-spacing:0.3px; }
.table-simple td { padding: 12px; border-bottom:1px solid var(--border); font-size:13.5px; }
.table-simple tr:last-child td { border-bottom:none; }
.status-pill { padding:4px 11px; border-radius:20px; font-size:11.5px; font-weight:700; display:inline-block; }
.status-pill.pending { background:#FFF3E0; color:#B36A00; }
.status-pill.active { background:#E4F6EE; color:var(--success); }
.status-pill.suspended { background:#FDECEC; color:var(--danger); }

.filters-row { display:flex; gap:10px; margin-bottom:18px; flex-wrap:wrap; }
.filters-row input, .filters-row select { padding: 10px 14px; border-radius:10px; border:1.5px solid var(--border); font-size:13.5px; font-family:inherit; }

.empty-state { text-align:center; padding: 50px 20px; color: var(--text-muted); }
.empty-state .icon { font-size:38px; margin-bottom:10px; }
.loader { display:flex; justify-content:center; padding:34px; }
.spinner { width:30px; height:30px; border:3px solid var(--border); border-top-color: var(--blue); border-radius:50%; animation: spin 0.8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

.toast { position: fixed; bottom: 26px; right: 26px; background: var(--text); color:#fff; padding: 14px 22px; border-radius: 12px; font-size:13.5px; opacity:0; transform: translateY(20px); transition: all 0.25s ease; z-index:100; box-shadow: var(--shadow-2); }
.toast.show { opacity:1; transform: translateY(0); }

.progress-track { height:8px; background: var(--blue-soft); border-radius:6px; overflow:hidden; margin:10px 0 6px; }
.progress-fill { height:100%; background: linear-gradient(90deg, var(--cyan), var(--blue)); border-radius:6px; }

/* ---------- RESPONSIVE ---------- */
@media (max-width: 980px) {
    .hero-grid { grid-template-columns: 1fr; }
    .modules-grid { grid-template-columns: repeat(2, 1fr); }
    .steps-row { grid-template-columns: repeat(2, 1fr); }
    .footer-grid { grid-template-columns: repeat(2, 1fr); }
    .sidebar { display:none; }
    .dash-main { max-width: 100%; padding: 22px; }
    .kpi-row { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
    .hero h1 { font-size: 32px; }
    .modules-grid { grid-template-columns: 1fr; }
    .steps-row { grid-template-columns: 1fr; }
    .cta-band { flex-direction:column; text-align:center; padding: 36px; }
    .auth-side { display:none; }
    .kpi-row { grid-template-columns: 1fr; }
}
