@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,400;0,600;0,700;1,700;1,900&family=Comfortaa:wght@300;400;600&display=swap');
:root{--c-white:#fff;--c-bg:#f2f7fb;--c-bg-mid:#d6e4f0;--c-primary:#1b3a6b;--c-text:#1d1d1d;--c-accent:#a8c8e8;--c-muted:#8c8c8c;--c-success:#1a7a34;--c-warning:#c07800;--c-danger:#b52b2b;--c-info:#1565a8;--shadow-sm:0 2px 8px rgba(27,58,107,.09);--shadow-md:0 5px 20px rgba(27,58,107,.14);--radius:10px;--tr:.18s ease;--sidebar-w:260px}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:16px;scroll-behavior:smooth}
body{font-family:'Comfortaa',sans-serif;font-size:.9375rem;color:var(--c-text);background:var(--c-bg);line-height:1.6;min-height:100vh}
h1,h2,h3,h4,h5,h6{font-family:'Montserrat',sans-serif;font-style:italic;font-weight:900;color:var(--c-primary);line-height:1.2}
a{color:var(--c-primary);text-decoration:none;transition:opacity var(--tr)}
a:hover{opacity:.72}
img{max-width:100%;display:block}
code{font-family:monospace;background:var(--c-bg);padding:.1em .35em;border-radius:4px;font-size:.9em}
/* Layout */
.anl-wrapper{display:flex;min-height:100vh}
.anl-sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--c-primary);display:flex;flex-direction:column}
.anl-main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}
.anl-topbar{height:62px;background:var(--c-white);border-bottom:1px solid var(--c-bg-mid);display:flex;align-items:center;padding:0 1.5rem;gap:.85rem;box-shadow:var(--shadow-sm);flex-shrink:0}
.anl-content{flex:1;padding:2rem 2.5rem;overflow-y:auto}
/* Sidebar */
.sidebar-logo{padding:1.2rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.1)}
.sidebar-logo .logo-sub{font-size:.68rem;color:var(--c-accent);text-transform:uppercase;letter-spacing:1.5px;margin-top:4px}
.sidebar-nav{flex:1;padding:.5rem 0;overflow-y:auto}
.sidebar-nav .nav-section{font-size:.63rem;text-transform:uppercase;letter-spacing:1.5px;color:var(--c-accent);padding:.9rem 1.25rem .3rem;font-family:'Montserrat',sans-serif;font-weight:600}
.sidebar-nav a{display:flex;align-items:center;gap:.7rem;padding:.56rem 1rem .56rem 1.25rem;color:rgba(255,255,255,.72);font-size:.855rem;transition:background var(--tr),color var(--tr);border-radius:0 8px 8px 0;margin-right:.75rem}
.sidebar-nav a:hover,.sidebar-nav a.active{background:rgba(255,255,255,.11);color:#fff;opacity:1}
.sidebar-nav a .icon{width:18px;text-align:center;font-size:.95rem;flex-shrink:0}
.sidebar-footer{padding:1rem 1.25rem;border-top:1px solid rgba(255,255,255,.1)}
.sidebar-user{display:flex;align-items:center;gap:.7rem}
.sidebar-user .avatar{width:34px;height:34px;border-radius:50%;background:var(--c-accent);overflow:hidden;flex-shrink:0}
.sidebar-user .avatar img{width:100%;height:100%;object-fit:cover}
.sidebar-user .name{font-size:.8rem;color:#fff;font-weight:600}
.sidebar-user .role{font-size:.68rem;color:var(--c-accent)}
/* Topbar */
.topbar-title{font-family:'Montserrat',sans-serif;font-style:italic;font-weight:700;font-size:1rem;color:var(--c-primary);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar-actions{display:flex;gap:.6rem;align-items:center;flex-shrink:0}
/* Cards */
.card{background:var(--c-white);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.5rem;border:1px solid var(--c-bg-mid)}
.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--c-bg-mid);gap:.5rem}
.card-title{font-family:'Montserrat',sans-serif;font-style:italic;font-weight:700;font-size:.95rem;color:var(--c-primary)}
/* Stats */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:1rem}
.stat-card{background:var(--c-white);border-radius:var(--radius);padding:1.1rem 1.4rem;border:1px solid var(--c-bg-mid);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:.2rem}
.stat-card.accent-primary{border-top:3px solid var(--c-primary)}
.stat-card.accent-success{border-top:3px solid var(--c-success)}
.stat-card.accent-warning{border-top:3px solid var(--c-warning)}
.stat-card.accent-danger{border-top:3px solid var(--c-danger)}
.stat-label{font-size:.7rem;color:var(--c-muted);text-transform:uppercase;letter-spacing:.7px;font-family:'Montserrat',sans-serif}
.stat-value{font-family:'Montserrat',sans-serif;font-weight:700;font-size:1.7rem;color:var(--c-primary);line-height:1.1}
.stat-sub{font-size:.72rem;color:var(--c-muted)}
/* Tables */
.table-wrap{overflow-x:auto;border-radius:var(--radius)}
table{width:100%;border-collapse:collapse;font-size:.87rem}
thead{background:var(--c-primary)}
thead th{padding:.7rem 1rem;color:#fff;font-family:'Montserrat',sans-serif;font-weight:600;font-style:italic;font-size:.78rem;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap;text-align:left}
thead th[data-sort]{cursor:pointer}
thead th[data-sort]:hover{background:rgba(255,255,255,.08)}
tbody tr{border-bottom:1px solid var(--c-bg-mid);transition:background var(--tr)}
tbody tr:hover{background:var(--c-bg)}
td{padding:.65rem 1rem;vertical-align:middle}
td.flex{display:flex;align-items:center;}
/* Badges */
.badge{display:inline-block;padding:.22em .6em;font-size:.7rem;font-family:'Montserrat',sans-serif;font-weight:700;border-radius:20px;text-transform:uppercase;letter-spacing:.3px;white-space:nowrap}
.badge-success{background:#d4edda;color:var(--c-success)}
.badge-warning{background:#fff3cd;color:var(--c-warning)}
.badge-danger{background:#f8d7da;color:var(--c-danger)}
.badge-info{background:#cce5ff;color:var(--c-info)}
.badge-primary{background:#d6e4f0;color:var(--c-primary)}
.badge-secondary{background:#e2e3e5;color:#383d41}
.badge-dark{background:#2d2d2d;color:#fff}
.badge-light{background:#fefefe;color:var(--c-muted);border:1px solid var(--c-bg-mid)}
/* Buttons */
.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.48rem 1.1rem;border:none;border-radius:7px;font-family:'Montserrat',sans-serif;font-weight:700;font-size:.82rem;cursor:pointer;transition:filter var(--tr),transform var(--tr);text-decoration:none;white-space:nowrap;line-height:1}
.btn:hover{filter:brightness(1.07);transform:translateY(-1px);opacity:1}
.btn:active{transform:translateY(0)}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.btn-primary{background:var(--c-primary);color:#fff}
.btn-success{background:var(--c-success);color:#fff}
.btn-warning{background:#c07800;color:#fff}
.btn-danger{background:var(--c-danger);color:#fff}
.btn-secondary{background:var(--c-bg-mid);color:var(--c-primary)}
.btn-outline{background:transparent;border:2px solid var(--c-primary);color:var(--c-primary)}
.btn-sm{padding:.3rem .75rem;font-size:.75rem}
.btn-lg{padding:.72rem 1.75rem;font-size:.95rem}
/* Forms */
.form-group{margin-bottom:1rem}
.form-label{display:block;font-size:.77rem;font-family:'Montserrat',sans-serif;font-weight:700;color:var(--c-primary);margin-bottom:.3rem;text-transform:uppercase;letter-spacing:.4px}
.form-control{width:100%;padding:.52rem .9rem;border:1.5px solid var(--c-bg-mid);border-radius:7px;font-family:'Comfortaa',sans-serif;font-size:.9rem;color:var(--c-text);background:var(--c-white);transition:border-color var(--tr),box-shadow var(--tr);appearance:none;line-height:1.4}
.form-control:focus{outline:none;border-color:var(--c-primary);box-shadow:0 0 0 3px rgba(27,58,107,.1)}
.form-control:disabled{background:var(--c-bg);opacity:.7}
textarea.form-control{resize:vertical}
.form-hint{font-size:.73rem;color:var(--c-muted);margin-top:.28rem}
.form-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.75rem 1rem}
/* Alerts */
.alert{margin-bottom:1rem;padding:.8rem 1.2rem;border-radius:var(--radius);font-size:.87rem;border-left:4px solid transparent}
.alert-success{background:#d4edda;border-color:var(--c-success);color:#155724}
.alert-warning{background:#fff3cd;border-color:#c07800;color:#856404}
.alert-danger{background:#f8d7da;border-color:var(--c-danger);color:#721c24}
.alert-info{background:#cce5ff;border-color:var(--c-info);color:#004085}
/* Modal */
.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.42);display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}
.modal-box{background:var(--c-white);border-radius:var(--radius);box-shadow:var(--shadow-md);max-width:560px;width:100%;padding:2rem;position:relative;max-height:90vh;overflow-y:auto}
.modal-title{font-family:'Montserrat',sans-serif;font-style:italic;font-weight:700;font-size:1.1rem;color:var(--c-primary);margin-bottom:1rem}
/* Page header */
.page-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:1.75rem;gap:1rem;flex-wrap:wrap}
.page-header h1{font-size:1.45rem}
.page-header p{color:var(--c-muted);font-size:.875rem;margin-top:.2rem}
/* Filters */
.filters-bar{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:1.2rem;padding:.65rem 1rem;background:var(--c-white);border-radius:var(--radius);border:1px solid var(--c-bg-mid);align-items:center}
.filters-bar select,.filters-bar input[type=text],.filters-bar input[type=search]{padding:.38rem .75rem;border:1.5px solid var(--c-bg-mid);border-radius:6px;font-family:'Comfortaa',sans-serif;font-size:.83rem;color:var(--c-text);background:var(--c-bg);min-width:130px}
.filters-bar select:focus,.filters-bar input:focus{outline:none;border-color:var(--c-primary)}
/* Simulator */
.simulator-card{margin:0 auto;background:var(--c-white);border-radius:var(--radius);box-shadow:var(--shadow-md);padding:2.5rem;border:1px solid var(--c-bg-mid)}
.simulator-result{background:var(--c-bg);border-radius:var(--radius);padding:1.4rem;border:1px solid var(--c-accent)}
.result-row{display:flex;justify-content:space-between;padding:.35rem 0;font-size:.9rem;border-bottom:1px solid rgba(168,200,232,.3)}
.result-row:last-child{border-bottom:none}
.result-row strong{color:var(--c-primary);font-size:1rem}
/* Amortissement */
.table-amortissement tr.paye td{opacity:.55}
.table-amortissement tr.retard td{background:#fff3cd}
.table-amortissement tr.actuel td{background:#cce5ff;font-weight:600}
/* Search */
.search-wrap{position:relative}
.search-wrap input{padding:.38rem .85rem .38rem 2rem;border:1.5px solid var(--c-bg-mid);border-radius:20px;font-family:'Comfortaa',sans-serif;font-size:.82rem;width:210px;background:var(--c-bg);color:var(--c-text);transition:border-color var(--tr),width var(--tr)}
.search-wrap input:focus{outline:none;border-color:var(--c-primary);width:270px}
.search-icon{position:absolute;left:.65rem;top:50%;transform:translateY(-50%);opacity:.38;pointer-events:none;font-size:.82rem}
#searchResults{position:absolute;top:calc(100% + 6px);left:0;right:0;min-width:330px;background:var(--c-white);border-radius:10px;box-shadow:var(--shadow-md);border:1px solid var(--c-bg-mid);z-index:999;overflow:hidden;display:none}
.sr-item{display:flex;align-items:center;gap:.75rem;padding:.65rem 1rem;border-bottom:1px solid var(--c-bg-mid);text-decoration:none;transition:background var(--tr)}
.sr-item:last-child{border-bottom:none}
.sr-item:hover{background:var(--c-bg)}
.sr-icon{font-size:1.15rem;flex-shrink:0}
.sr-title{font-size:.87rem;font-weight:600;color:var(--c-primary)}
.sr-sub{font-size:.74rem;color:var(--c-muted)}
.sr-empty{padding:1.2rem;text-align:center;color:var(--c-muted);font-size:.85rem}
/* Public */
.public-header{background:var(--c-primary);padding:1.1rem 2rem;display:flex;align-items:center;justify-content:space-between}
.public-header .logo{font-family:'Montserrat',sans-serif;font-style:italic;font-weight:900;color:#fff;font-size:1.2rem}
.public-hero{background:linear-gradient(135deg,var(--c-primary) 0%,#2a5298 100%);color:#fff;padding:4rem 2rem;text-align:center}
.public-hero h1{color:#fff;font-size:2.2rem;margin-bottom:.75rem}
.public-hero p{font-size:1.05rem;opacity:.85;max-width:600px;margin:0 auto}
/* Catalog */
.catalog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:1.5rem}
.catalog-card{background:var(--c-white);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden;border:1px solid var(--c-bg-mid);transition:box-shadow var(--tr),transform var(--tr)}
.catalog-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}
.catalog-card-body{padding:1.2rem}
.catalog-card-type{font-size:.68rem;font-family:'Montserrat',sans-serif;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--c-muted);margin-bottom:.2rem}
.catalog-card-title{font-family:'Montserrat',sans-serif;font-style:italic;font-weight:700;color:var(--c-primary);font-size:.975rem;margin-bottom:.4rem}
.catalog-card-price{font-size:1.2rem;font-weight:700;color:var(--c-primary);font-family:'Montserrat',sans-serif}
.catalog-card-price span{font-size:.75rem;font-style:normal;color:var(--c-muted);font-weight:400}
/* Responsive */
@media(max-width:900px){.anl-sidebar{display:none;position:fixed;z-index:200;height:100vh;top:0;left:0}.anl-sidebar.open{display:flex}#sidebarToggle{display:block!important}.anl-content{padding:1rem}.stat-grid{grid-template-columns:repeat(2,1fr)}.form-row{grid-template-columns:1fr}}
@media(max-width:580px){.stat-grid{grid-template-columns:1fr}.public-hero h1{font-size:1.5rem}.anl-topbar{padding:0 1rem;gap:.5rem}.topbar-actions .btn{display:none}}
/* Utils */
.text-primary{color:var(--c-primary)!important}.text-muted{color:var(--c-muted)!important}.text-danger{color:var(--c-danger)!important}.text-success{color:var(--c-success)!important}.text-warning{color:var(--c-warning)!important}
.fw-bold{font-weight:700!important}.text-center{text-align:center}.text-right{text-align:right}
.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}.mb-3{margin-bottom:1.5rem}
.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.5rem}
.d-flex{display:flex}.align-center{align-items:center}.gap-1{gap:.5rem}.gap-2{gap:1rem}.justify-between{justify-content:space-between}
.hidden{display:none!important}.w-100{width:100%}
