@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&display=swap');

:root {
    --loracl-ink: #071b18;
    --loracl-ink-soft: #0d2924;
    --loracl-mint: #65e6b4;
    --loracl-mint-dark: #16815f;
    --loracl-mint-pale: #e8faf2;
    --loracl-sun: #f2c94c;
    --loracl-paper: #f7f7f2;
    --loracl-white: #ffffff;
    --loracl-slate: #52615e;
    --loracl-border: #dce5e1;
    --loracl-danger: #c83d4d;
    --loracl-shadow: 0 18px 45px rgba(7, 27, 24, .08);
    --bs-primary: #16815f;
    --bs-primary-rgb: 22, 129, 95;
    --bs-success: #16815f;
    --bs-success-rgb: 22, 129, 95;
    --bs-info: #287d91;
    --bs-info-rgb: 40, 125, 145;
    --bs-warning: #f2c94c;
    --bs-warning-rgb: 242, 201, 76;
    --bs-danger: #c83d4d;
    --bs-danger-rgb: 200, 61, 77;
    --bs-body-font-family: "Manrope", "Segoe UI", sans-serif;
    --bs-body-color: var(--loracl-ink);
    --bs-body-bg: var(--loracl-paper);
    --bs-border-color: var(--loracl-border);
    --bs-link-color: #126b51;
    --bs-link-hover-color: #0b4b39;
}

body {
    background: var(--loracl-paper);
    color: var(--loracl-ink);
    font-family: var(--bs-body-font-family);
    letter-spacing: -.01em;
}

a { text-underline-offset: .18em; }

.topnav {
    height: 4.75rem;
    min-height: 4.75rem;
    background: rgba(7, 27, 24, .97) !important;
    border-bottom: 1px solid rgba(255, 255, 255, .09);
    box-shadow: 0 8px 30px rgba(7, 27, 24, .18) !important;
    color: white;
    backdrop-filter: blur(16px);
}

.topnav .navbar-brand,
.topnav .nav-link,
.topnav .btn-transparent-dark { color: white !important; }

.topnav .btn-transparent-dark:hover,
.topnav .nav-link:hover { background: rgba(101, 230, 180, .12); color: var(--loracl-mint) !important; }

.loracl-brand {
    display: inline-flex;
    align-items: center;
    gap: .7rem;
    font-weight: 800;
    letter-spacing: -.04em;
}

.loracl-brand-mark {
    display: grid;
    width: 2.45rem;
    height: 2.45rem;
    place-items: center;
    border-radius: .8rem;
    background: var(--loracl-mint);
    color: var(--loracl-ink);
    box-shadow: 0 8px 22px rgba(0, 0, 0, .2);
    font-size: 1.05rem;
    font-weight: 800;
}

.loracl-brand-copy { line-height: .92; }
.loracl-brand-copy strong { display: block; font-size: 1.02rem; }
.loracl-brand-copy small { color: var(--loracl-mint); font-size: .57rem; letter-spacing: .27em; }
.loracl-brand-logo { display: block; width: auto; object-fit: contain; }
.topnav .navbar-brand .loracl-brand-logo { width: auto; height: 2.4rem; }

.sidenav-light { background: var(--loracl-ink-soft); color: #dbe6e2; }
.sidenav-light .sidenav-menu .sidenav-menu-heading { color: var(--loracl-mint); font-size: .66rem; font-weight: 800; letter-spacing: .14em; }
.sidenav-light .sidenav-menu .nav-link { margin: .13rem .75rem; padding: .72rem .85rem; border-radius: .8rem; color: #f4faf7; font-size: .86rem; font-weight: 650; }
.sidenav-light .sidenav-menu .nav-link .nav-link-icon { color: #a8c8be; }
.sidenav-light .sidenav-menu .nav-link:hover { background: rgba(101, 230, 180, .11); color: var(--loracl-mint); }
.sidenav-light .sidenav-menu .nav-link:hover .nav-link-icon { color: var(--loracl-mint); }
.sidenav-light .sidenav-menu .nav-link.active { background: var(--loracl-mint); color: var(--loracl-ink); box-shadow: 0 8px 20px rgba(0, 0, 0, .16); }
.sidenav-light .sidenav-menu .nav-link.active .nav-link-icon { color: var(--loracl-ink); }
.nav-link-icon .ti, .nav-link-icon .loracl-icon { width: 1.2rem; height: 1.2rem; font-size: 1.2rem; stroke-width: 1.8; }
.topnav .ti { font-size: 1.25rem; vertical-align: -.12em; }
.dropdown-item .ti { width: 1.35rem; margin-right: .4rem; font-size: 1.05rem; vertical-align: -.08em; }
.loracl-icon { display: inline-block; flex: 0 0 auto; vertical-align: -.16em; }
.sidenav-light .sidenav-footer { background: #061512; border-top: 1px solid rgba(255, 255, 255, .08); }
.sidenav-light .sidenav-footer-subtitle { color: #7da096; }
.sidenav-light .sidenav-footer-title { color: white; }
.sidenav-light .sidenav-footer a { color: var(--loracl-mint); }
.nav-fixed #layoutSidenav #layoutSidenav_nav { height: 100dvh; }
.nav-fixed #layoutSidenav #layoutSidenav_nav .sidenav { overflow: hidden; }
.nav-fixed #layoutSidenav #layoutSidenav_nav .sidenav > .sidenav-menu { flex: 1 1 0; min-height: 0; overflow-y: auto; }
.sidenav.sidenav-light > .sidenav-footer { height: auto; flex: 0 0 auto; margin-top: auto; padding-top: .85rem; padding-bottom: .85rem; }
.sidenav.sidenav-light > .sidenav-footer .sidenav-footer-content { width: 100%; min-width: 0; overflow-wrap: anywhere; text-align: center; }

#layoutSidenav_content { background: var(--loracl-paper); }
.nav-fixed #layoutSidenav #layoutSidenav_nav .sidenav { padding-top: 4.75rem; }
.nav-fixed #layoutSidenav #layoutSidenav_content { top: 4.75rem; }

.page-header.bg-gradient-primary-to-secondary {
    position: relative;
    overflow: hidden;
    min-height: 12.5rem;
    background-color: var(--loracl-ink) !important;
    background-image:
        linear-gradient(rgba(101, 230, 180, .075) 1px, transparent 1px),
        linear-gradient(90deg, rgba(101, 230, 180, .075) 1px, transparent 1px),
        radial-gradient(circle at 85% 15%, rgba(101, 230, 180, .17), transparent 28%) !important;
    background-size: 42px 42px, 42px 42px, auto !important;
}

.page-header-title { color: white; font-size: clamp(1.75rem, 3vw, 2.55rem); font-weight: 800; letter-spacing: -.045em; }
.page-header-title::before { display: block; margin-bottom: .7rem; color: var(--loracl-mint); content: "ESPACE D’ANALYSE"; font-size: .66rem; font-weight: 800; letter-spacing: .18em; }

.card {
    border: 1px solid var(--loracl-border);
    border-radius: 1.15rem;
    box-shadow: 0 8px 24px rgba(7, 27, 24, .045);
}

.card-header {
    min-height: 3.65rem;
    border-bottom-color: var(--loracl-border);
    background: white;
    color: var(--loracl-ink);
    font-weight: 800;
}

.card-footer { border-top-color: var(--loracl-border); background: #fbfcfa; }
.card.border-start-lg { border-left-width: .35rem !important; }
.shadow, .shadow-sm, .shadow-lg { box-shadow: var(--loracl-shadow) !important; }

.btn { border-radius: 999px; padding: .58rem 1rem; font-weight: 700; letter-spacing: -.01em; }
.btn-sm { padding: .38rem .75rem; }
.btn-lg { padding: .78rem 1.35rem; }
.btn-primary { border-color: var(--loracl-ink); background: var(--loracl-ink); color: white; }
.btn-primary:hover, .btn-primary:focus { border-color: #123a33; background: #123a33; color: var(--loracl-mint); }
.btn-success { border-color: var(--loracl-mint-dark); background: var(--loracl-mint-dark); }
.btn-outline-primary { border-color: var(--loracl-mint-dark); color: var(--loracl-mint-dark); }
.btn-outline-primary:hover { border-color: var(--loracl-mint-dark); background: var(--loracl-mint-dark); }
.btn-light { border-color: var(--loracl-border); background: white; }
.btn-link { color: var(--loracl-mint-dark); }
.btn-icon { padding: 0; }

.form-control, .form-select, .input-group-text {
    min-height: 2.75rem;
    border-color: #cad8d3;
    border-radius: .75rem;
    background-color: #fff;
}
.form-control:focus, .form-select:focus {
    border-color: var(--loracl-mint-dark);
    box-shadow: 0 0 0 .2rem rgba(101, 230, 180, .22);
}
.form-label { color: #304640; font-size: .82rem; font-weight: 700; }
.form-text, .text-muted { color: #6c7d78 !important; }

.table { --bs-table-bg: transparent; --bs-table-hover-bg: #effaf5; color: var(--loracl-ink); }
.table > thead { background: #edf4f1; }
.table > thead th { border-bottom: 1px solid #ceddd7; color: #49615a; font-size: .69rem; font-weight: 800; letter-spacing: .055em; text-transform: uppercase; }
.table > :not(caption) > * > * { padding: .85rem .85rem; border-bottom-color: #e5ebe8; }
.table a { color: #11684f; font-weight: 700; text-decoration: none; }
.table a:hover { color: var(--loracl-ink); text-decoration: underline; }

.badge { border-radius: 999px; padding: .42em .7em; font-weight: 700; }
.bg-primary, .badge.bg-primary { background-color: var(--loracl-ink) !important; }
.bg-success, .badge.bg-success { background-color: var(--loracl-mint-dark) !important; }
.bg-warning { background-color: var(--loracl-sun) !important; }
.text-primary { color: var(--loracl-mint-dark) !important; }
.text-success { color: var(--loracl-mint-dark) !important; }
.border-primary { border-color: var(--loracl-mint-dark) !important; }
.border-success { border-color: var(--loracl-mint-dark) !important; }

.alert { border: 0; border-left: .3rem solid currentColor; border-radius: .9rem; }
.alert-success { background: var(--loracl-mint-pale); color: #126046; }
.alert-danger { background: #fff0f1; color: #9e2938; }
.alert-warning { background: #fff8dc; color: #705800; }
.alert-info { background: #eaf6f7; color: #245e69; }

.dropdown-menu { border: 1px solid var(--loracl-border); border-radius: 1rem; box-shadow: var(--loracl-shadow); }
.dropdown-item { border-radius: .55rem; font-weight: 600; }
.dropdown-item:hover { background: var(--loracl-mint-pale); color: var(--loracl-ink); }
.dropdown-header { color: var(--loracl-ink); font-weight: 700; }

.pagination { gap: .25rem; }
.page-link { border-radius: .65rem !important; color: var(--loracl-mint-dark); }
.active > .page-link, .page-link.active { border-color: var(--loracl-ink); background: var(--loracl-ink); }

.modal-content { border: 1px solid var(--loracl-border); border-radius: 1.25rem; box-shadow: var(--loracl-shadow); }
.progress { border-radius: 999px; background: #e4ece8; }
.progress-bar { background: var(--loracl-mint-dark); }

.loracl-plan-pill { display: inline-flex; align-items: center; gap: .4rem; border: 1px solid rgba(101, 230, 180, .25); border-radius: 999px; background: rgba(101, 230, 180, .1); padding: .35rem .7rem; color: var(--loracl-mint); font-size: .72rem; font-weight: 800; }
.loracl-plan-pill::before { width: .42rem; height: .42rem; border-radius: 50%; background: currentColor; content: ""; }

#calculationLoading { background: rgba(7, 27, 24, .82) !important; backdrop-filter: blur(5px); }
#calculationLoading .card { border: 1px solid rgba(101, 230, 180, .25) !important; background: var(--loracl-ink-soft); color: white; }
#calculationLoading .text-muted { color: #a9bbb5 !important; }
#calculationLoading .spinner-border { color: var(--loracl-mint) !important; }

.loracl-auth {
    min-height: 100vh;
    background-color: var(--loracl-ink);
    background-image: linear-gradient(rgba(101,230,180,.07) 1px,transparent 1px), linear-gradient(90deg,rgba(101,230,180,.07) 1px,transparent 1px), radial-gradient(circle at 75% 20%,rgba(101,230,180,.18),transparent 30%);
    background-size: 42px 42px, 42px 42px, auto;
}
.loracl-auth .auth-shell { min-height: 100vh; }
.loracl-auth .auth-card { overflow: hidden; border: 1px solid rgba(255,255,255,.13); border-radius: 1.7rem; box-shadow: 0 30px 80px rgba(0,0,0,.35); }
.loracl-auth .auth-card .card-header { padding: 2rem 2rem 1rem; }
.loracl-auth .auth-card .card-body { padding: 1.5rem 2rem 2rem; }
.loracl-auth .auth-card .card-footer { padding: 1.2rem 2rem; }
.loracl-auth .auth-brand { display: inline-flex; margin-bottom: 1.75rem; color: white; text-decoration: none; }
.loracl-auth .loracl-brand-logo { height: clamp(6rem, 15vw, 8.625rem); }
.loracl-auth .auth-eyebrow { color: var(--loracl-mint-dark); font-size: .68rem; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; }

@media (max-width: 767.98px) {
    .topnav { height: 4.25rem; min-height: 4.25rem; }
    .topnav .navbar-brand .loracl-brand-logo { height: 2.4rem; }
    .nav-fixed #layoutSidenav #layoutSidenav_nav .sidenav { padding-top: 4.25rem; }
    .nav-fixed #layoutSidenav #layoutSidenav_content { top: 4.25rem; }
    .page-header.bg-gradient-primary-to-secondary { min-height: 10.5rem; }
    .page-header-title { font-size: 1.7rem; }
    .card { border-radius: .95rem; }
    .table > :not(caption) > * > * { padding: .72rem; }
    .loracl-auth .auth-card .card-header, .loracl-auth .auth-card .card-body, .loracl-auth .auth-card .card-footer { padding-left: 1.25rem; padding-right: 1.25rem; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; }
}
