:root{--red:#d71920;--dark:#151718;--muted:#6b7280;--bg:#f5f6f8;--line:#e5e7eb}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;color:#15171a}.topbar{height:86px;position:fixed;z-index:1030;top:0;left:0;right:0;display:flex;align-items:center;background:#0e0f10 url('../img/banner.jpg') center/cover no-repeat;color:#fff;border-bottom:1px solid #2e3032}.brand-wrap{width:330px;padding:8px 24px}.brand-wrap img{max-width:255px;max-height:67px}.topbar-search{flex:1;max-width:620px;background:#fff;color:#777;padding:13px 20px;border-radius:10px;box-shadow:0 4px 16px #0003}.topbar-meta{margin-left:auto;display:flex;gap:18px;align-items:center;padding-right:26px}.topbar-meta form{margin:0}.sidebar{position:fixed;z-index:1020;top:86px;left:0;bottom:0;width:220px;background:#181a1c;color:#fff;overflow:auto}.sidebar nav{padding-top:18px}.sidebar a{display:flex;align-items:center;gap:14px;padding:16px 24px;color:#e7e7e7;text-decoration:none;font-size:17px;border-left:4px solid transparent}.sidebar a:hover,.sidebar a.active{background:linear-gradient(90deg,#e21d27,#c40f18);color:#fff;border-left-color:#fff}.sidebar-art{position:absolute;left:0;right:0;bottom:0;height:310px;background:url('../img/banner-left.jpg') bottom center/cover no-repeat;opacity:.96}.content{margin-left:220px;padding:116px 28px 42px;min-height:100vh}.page-title{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:24px}.page-title h1{font-size:36px;line-height:1;font-weight:800;margin:0 0 8px}.page-title h1:after{content:"";display:block;width:70px;height:5px;background:var(--red);border-radius:6px;margin-top:12px}.page-title p{color:var(--muted);margin:0}.date-chip{background:#fff;border:1px solid var(--line);padding:10px 16px;border-radius:10px}.panel,.kpi{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 3px 12px #00000008;padding:20px}.panel-title{font-weight:800;font-size:19px;margin-bottom:16px}.kpi{min-height:124px;display:flex;flex-direction:column;justify-content:center}.kpi span{color:#555}.kpi strong{font-size:29px;margin-top:6px}.action-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.action-btn{min-height:74px;border-radius:12px;display:flex;align-items:center;justify-content:center;text-decoration:none;color:#fff;font-weight:800;font-size:19px}.action-btn.red,.btn-brand{background:linear-gradient(135deg,#e21d27,#bf0c15);border-color:#c30d16;color:#fff}.action-btn.dark{background:#1c1f21}.btn-brand:hover{background:#b70b13;color:#fff}.method-row,.total-row,.invoice-line{display:flex;justify-content:space-between;align-items:center;padding:11px 0;border-bottom:1px solid #eee}.total-row.grand{font-size:23px;color:#c81018;border-top:2px solid #eee;margin-top:8px}.total-row.paid{color:#16813a}.amount-due{background:linear-gradient(135deg,#fff0f1,#ffe3e6);border:1px solid #ffd0d4;border-radius:14px;padding:22px;display:flex;flex-direction:column}.amount-due strong{font-size:40px;color:#ce111a}.amount-due.small strong{font-size:30px}.sticky-actions{position:sticky;bottom:0;background:#ffffffeb;border-top:1px solid #ddd;margin:26px -28px -42px;padding:16px 28px;backdrop-filter:blur(10px)}.quote-editor{min-height:430px}.total-panel{top:110px}.max-panel{max-width:550px}.table>:not(caption)>*>*{padding:.85rem .65rem}@media(max-width:991px){.topbar{height:76px}.brand-wrap{width:210px;padding:8px 14px}.brand-wrap img{max-width:180px}.topbar-search{display:none}.topbar-meta{gap:8px;padding-right:10px}.topbar-meta>span:not(.badge){display:none}.sidebar{top:76px;width:76px}.sidebar a{padding:18px 23px}.sidebar a span{display:none}.sidebar-art{display:none}.content{margin-left:76px;padding:101px 16px 30px}.action-grid{grid-template-columns:1fr 1fr}.page-title h1{font-size:30px}}@media(max-width:600px){.action-grid{grid-template-columns:1fr}.page-title{flex-direction:column}.content{margin-left:0;padding-top:160px}.sidebar{top:76px;left:0;right:0;width:auto;height:68px;bottom:auto;display:flex;overflow-x:auto}.sidebar nav{display:flex;padding:0}.sidebar a{padding:20px}.topbar{height:76px}.brand-wrap{width:190px}.topbar-meta{margin-left:auto}.topbar-meta .badge{display:none}}
/* Devis : ligne unique avec autocomplétion catalogue */
.quote-lines-wrap{overflow:visible}.quote-description-cell{min-width:330px}.line-description-wrap{position:relative}.line-product-suggestions{position:absolute;z-index:1060;left:0;right:0;top:calc(100% + 4px);background:#fff;border:1px solid #d8dadd;border-radius:10px;box-shadow:0 14px 34px #0003;overflow:hidden;max-height:310px;overflow-y:auto}.line-product-suggestion{width:100%;border:0;border-bottom:1px solid #eee;background:#fff;padding:11px 13px;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left}.line-product-suggestion:hover,.line-product-suggestion:focus{background:#f7f7f8;outline:none}.line-product-suggestion span{min-width:0}.line-product-suggestion strong{display:block;white-space:normal}.line-product-suggestion small{display:block;color:#777;margin-top:2px}.line-product-suggestion b{white-space:nowrap;color:#bf0c15}.line-catalog-status{display:block;margin-top:6px;line-height:1.2}.empty-lines-hint{padding:24px;border:1px dashed #d8dadd;border-radius:10px;color:#777;text-align:center;background:#fafafa}
/* Encaissement tactile */
.payment-method-picker{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.payment-method-btn{min-height:112px;border:2px solid #e2e3e5;background:#fff;border-radius:14px;padding:16px 10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;font-weight:800;font-size:16px;transition:.15s ease}.payment-method-btn:hover,.payment-method-btn:focus{border-color:var(--red);background:#fff6f7;color:#b90d15;outline:none;transform:translateY(-1px)}.payment-method-icon{width:38px;height:38px;display:grid;place-items:center}.payment-method-icon svg{width:34px;height:34px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.payment-live-summary{display:flex;flex-direction:column;align-items:flex-end;background:#f7f7f8;border:1px solid #e5e7eb;border-radius:10px;padding:9px 14px}.payment-live-summary small{color:#777}.payment-live-summary strong{font-size:20px}.payment-entries{display:grid;gap:12px}.payment-entry-card{border:1px solid #dedfe2;border-radius:14px;padding:16px;background:#fafafa}.payment-entry-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:13px}.payment-entry-head strong{font-size:18px}.cash-change-line{background:#eaf8ee;color:#16723a;padding:8px 10px;border-radius:8px}.payment-balance-box{display:flex;align-items:center;justify-content:space-between;gap:18px;background:#f4f5f6;border:1px solid #e0e2e4;border-radius:12px;padding:14px 16px}.payment-balance-box strong{font-size:22px}.sale-closed-banner{display:flex;align-items:center;gap:16px;padding:18px 20px;border-radius:14px;background:linear-gradient(135deg,#178447,#0d6b38);color:#fff;box-shadow:0 6px 18px #0d6b3830}.sale-closed-banner>div:not(.sale-closed-icon){display:flex;flex-direction:column}.sale-closed-banner strong{font-size:21px}.sale-closed-banner span{opacity:.9}.sale-closed-icon{width:46px;height:46px;flex:0 0 46px;border-radius:50%;background:#fff;color:#147441;display:grid;place-items:center;font-size:27px;font-weight:900}
@media(max-width:991px){.payment-method-picker{grid-template-columns:repeat(2,minmax(0,1fr))}.quote-lines-wrap{overflow-x:auto}.quote-description-cell{min-width:300px}.line-product-suggestions{position:fixed;left:92px;right:16px;top:auto;max-height:260px}}
@media(max-width:600px){.payment-method-picker{grid-template-columns:1fr 1fr}.payment-method-btn{min-height:94px;font-size:14px}.sale-closed-banner{align-items:flex-start;flex-wrap:wrap}.payment-live-summary{align-items:flex-start;width:100%}.line-product-suggestions{left:12px;right:12px}.quote-description-cell{min-width:280px}}

/* V0.1.5 - UX utilisateur, client intégré au devis et onglets paramètres */
.topbar-meta{gap:10px;padding-right:18px}.cash-status{font-size:13px;padding:9px 12px;box-shadow:0 3px 12px #0004}.user-chip{display:flex;align-items:center;gap:9px;background:#ffffff14;border:1px solid #ffffff2e;border-radius:12px;padding:7px 11px;backdrop-filter:blur(4px)}.user-avatar-mini{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#fff;color:#161718;font-weight:900;box-shadow:0 2px 8px #0004}.user-chip-name{font-weight:800;color:#fff;white-space:nowrap}.logout-btn{display:flex;align-items:center;gap:7px;background:#d71920;color:#fff;border:1px solid #ff6a70;font-weight:800;padding:9px 12px;border-radius:10px;box-shadow:0 4px 14px #0005}.logout-btn:hover,.logout-btn:focus{background:#fff;color:#b90d15;border-color:#fff}.logout-icon{font-size:20px;line-height:1}
.quote-client-separator{display:flex;align-items:center;gap:14px;margin:22px 0 16px;color:#73777c;font-size:12px;font-weight:900;letter-spacing:.08em}.quote-client-separator:before,.quote-client-separator:after{content:"";height:1px;background:#e0e2e5;flex:1}.new-client-inline{border:1px solid #e0e2e5;background:#fafafa;border-radius:12px;padding:18px;transition:.15s ease}.new-client-inline .alert{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.quote-client-panel .form-text{font-size:12px}
.settings-tabs{display:flex;gap:8px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:14px;padding:8px;box-shadow:0 3px 12px #00000008}.settings-tab{display:inline-flex;align-items:center;min-height:46px;padding:10px 16px;border-radius:10px;color:#3d4146;text-decoration:none;font-weight:800}.settings-tab:hover{background:#f5f6f8;color:#b70b13}.settings-tab.active{background:linear-gradient(135deg,#e21d27,#bf0c15);color:#fff;box-shadow:0 5px 14px #bf0c1533}.settings-panel{max-width:1100px}.user-settings-list{display:grid;gap:14px}.user-settings-card{border:1px solid #e1e3e6;border-radius:12px;padding:16px;background:#fafafa}.user-settings-card-head{display:flex;align-items:center;gap:11px}.user-avatar{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#17191b;color:#fff;font-weight:900;font-size:18px;flex:0 0 42px}
@media(max-width:1100px){.topbar-meta .user-chip-name{display:none}.user-chip{padding:6px}.logout-btn span:last-child{display:none}.logout-btn{padding:8px 10px}.cash-status{font-size:12px}}
@media(max-width:600px){.user-chip{display:none}.logout-btn{display:flex}.new-client-inline{padding:14px}.settings-tabs{display:grid;grid-template-columns:1fr 1fr}.settings-tab{justify-content:center;text-align:center}.new-client-inline .alert .btn{width:100%;margin-left:0!important}}

/* V0.1.6 - alignements devis, référence produit, statistiques et clôtures */
.quote-client-panel>.row>.col-lg-6,.quote-client-panel>.row>.col-lg-3{display:flex;flex-direction:column}.quote-client-panel>.row .form-control-lg,.quote-client-panel>.row .form-select-lg{min-height:50px}.quote-client-panel>.row .form-text{min-height:18px}.line-product-fields{display:grid;grid-template-columns:minmax(220px,1fr) 150px;gap:8px;align-items:start}.line-reference[readonly]{background:#f1f2f4;color:#6b7280}.cash-history-table .difference-ok{color:#16813a;font-weight:800}.cash-history-table .difference-alert{color:#c81018;font-weight:900}.cash-difference-card{border:1px solid #e0e2e5;border-radius:14px;padding:18px;background:#fafafa}.cash-difference-card.alert-gap{background:#fff1f2;border-color:#ffc6cb}.cash-difference-card.ok{background:#eef9f1;border-color:#c9ebd2}.cash-difference-value{font-size:32px;font-weight:900}.stat-filter{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr)) auto;gap:12px;align-items:end}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.stat-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:0 3px 12px #00000008;display:flex;flex-direction:column;gap:6px;min-height:112px}.stat-card span{color:#6b7280;font-size:13px}.stat-card strong{font-size:26px}.stat-bar{height:9px;background:#eceef0;border-radius:999px;overflow:hidden}.stat-bar>span{display:block;height:100%;background:linear-gradient(90deg,#e21d27,#bf0c15);border-radius:999px}.stat-table td,.stat-table th{vertical-align:middle}.stat-period-shortcuts{display:flex;gap:8px;flex-wrap:wrap}.stat-period-shortcuts a{text-decoration:none}.cash-detail-meta{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.cash-detail-meta .kpi{min-height:104px}.cash-session-status{display:inline-flex;align-items:center;gap:8px;font-weight:800}.cash-session-status:before{content:"";width:9px;height:9px;border-radius:50%;background:#16813a}.cash-session-status.alert:before{background:#d71920}
@media(max-width:1200px){.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.cash-detail-meta{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:767px){.line-product-fields{grid-template-columns:1fr}.stat-filter{grid-template-columns:1fr}.stat-grid,.cash-detail-meta{grid-template-columns:1fr}.quote-client-panel>.row .form-text{min-height:0}}
.quote-client-top-row .form-label{min-height:24px;display:flex;align-items:end;margin-bottom:6px}.quote-client-top-row .form-control-lg,.quote-client-top-row .form-select-lg{height:50px}

/* V0.1.7 - PWA, navigation tactile, Font Awesome, filtres et listes compactes */
.mobile-menu-btn,.mobile-bottom-nav,.sidebar-backdrop{display:none}.sidebar{display:flex;flex-direction:column;overflow:hidden}.sidebar nav{flex:1 1 auto;min-height:0;overflow-y:auto;padding-top:14px;padding-bottom:10px}.sidebar a,.sidebar-install-btn{width:100%;display:flex;align-items:center;gap:14px;padding:15px 24px;color:#e7e7e7;text-decoration:none;font-size:16px;border:0;border-left:4px solid transparent;background:transparent;text-align:left}.sidebar a i,.sidebar-install-btn i{width:22px;text-align:center;font-size:17px}.sidebar a:hover,.sidebar a.active,.sidebar-install-btn:hover{background:linear-gradient(90deg,#e21d27,#c40f18);color:#fff;border-left-color:#fff}.sidebar-art{position:relative;left:auto;right:auto;bottom:auto;flex:0 0 245px;width:100%;height:245px;margin-top:0;background:url('../img/banner-left.jpg') bottom center/cover no-repeat;opacity:.96}.filter-panel{padding:16px}.filter-panel .form-label{font-size:12px;font-weight:800;color:#5c6167;margin-bottom:5px}.list-panel{padding:0;overflow:hidden}.list-panel>.table-responsive{padding:8px 14px 14px}.list-table-scroll{max-height:calc(100vh - 315px);overflow:auto}.compact-scroll{max-height:430px;overflow:auto}.table thead.sticky-top{z-index:2;box-shadow:0 1px 0 #e5e7eb}.table .badge{font-size:12px}.product-editor-panel{position:sticky;top:108px}.page-title .btn i,.btn i{pointer-events:none}.sidebar-install-btn[hidden]{display:none!important}

@media(max-width:1199.98px){
 body{padding-bottom:76px}.topbar{height:72px}.brand-wrap{width:auto;min-width:0;padding:7px 8px}.brand-wrap img{max-width:155px;max-height:52px}.topbar-search{display:none}.mobile-menu-btn{display:grid;place-items:center;width:46px;height:46px;margin-left:8px;border:1px solid #ffffff33;border-radius:10px;background:#ffffff12;color:#fff;font-size:20px}.topbar-meta{gap:7px;padding-right:8px}.topbar-meta .cash-status{font-size:11px;padding:7px 8px}.topbar-meta .user-chip-name{display:none}.user-chip{padding:5px}.logout-btn{padding:8px 9px}.logout-btn span{display:none}
 .sidebar{top:72px;bottom:0;width:min(310px,86vw);z-index:1055;transform:translateX(-105%);transition:transform .2s ease;box-shadow:12px 0 34px #0005}.sidebar.is-open{transform:translateX(0)}.sidebar a,.sidebar-install-btn{font-size:17px;padding:15px 22px}.sidebar a span,.sidebar-install-btn span{display:inline}.sidebar-art{display:block;flex-basis:220px;height:220px}.sidebar-backdrop{position:fixed;display:block;z-index:1050;inset:72px 0 0 0;background:#0008;opacity:0;visibility:hidden;transition:.2s}.sidebar-backdrop.is-open{opacity:1;visibility:visible}
 .content{margin-left:0;padding:94px 14px 92px;min-height:100dvh}.page-title{margin-bottom:16px}.page-title h1{font-size:29px}.page-title h1:after{height:4px;margin-top:9px}.page-title p{font-size:14px}.panel,.kpi{padding:15px}.kpi{min-height:96px}.kpi strong{font-size:24px}.action-grid{grid-template-columns:repeat(2,1fr);gap:10px}.action-btn{min-height:62px;font-size:16px}.product-editor-panel{position:static}.list-table-scroll{max-height:calc(100dvh - 340px)}.sticky-actions{bottom:76px;margin:18px -14px -16px;padding:12px 14px;z-index:1000}.total-panel{top:88px}
 .mobile-bottom-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;z-index:1040;left:0;right:0;bottom:0;min-height:70px;padding-bottom:env(safe-area-inset-bottom);background:#111315;border-top:1px solid #333;box-shadow:0 -5px 20px #0003}.mobile-bottom-nav a,.mobile-bottom-nav button{border:0;background:transparent;color:#d5d7d9;text-decoration:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:11px;font-weight:700;min-width:0}.mobile-bottom-nav i{font-size:20px}.mobile-bottom-nav .active,.mobile-bottom-nav a:hover,.mobile-bottom-nav button:hover{color:#fff;background:#d71920}
 .payment-method-picker{grid-template-columns:repeat(4,minmax(0,1fr))}.payment-method-btn{min-height:92px}.quote-lines-wrap{overflow-x:auto}.line-product-suggestions{position:fixed;left:14px;right:14px;max-height:260px}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:767.98px){
 .topbar-meta .cash-status{display:none}.brand-wrap img{max-width:140px}.content{padding-left:10px;padding-right:10px}.page-title{align-items:stretch}.page-title>.btn{width:100%;margin-top:4px}.page-title h1{font-size:27px}.date-chip{align-self:flex-start}.panel,.kpi{border-radius:11px;padding:12px}.filter-panel{padding:12px}.list-panel>.table-responsive{padding:4px 8px 10px}.table>:not(caption)>*>*{padding:.65rem .5rem;font-size:14px}.action-grid{grid-template-columns:1fr 1fr}.action-btn{font-size:14px;min-height:58px;padding:8px}.kpi strong{font-size:21px}.kpi span{font-size:12px}.payment-method-picker{grid-template-columns:1fr 1fr}.payment-method-btn{min-height:86px}.list-table-scroll{max-height:calc(100dvh - 355px)}.compact-scroll{max-height:300px}.stat-grid{grid-template-columns:1fr 1fr}.settings-tabs{grid-template-columns:1fr 1fr}.quote-description-cell{min-width:270px}.line-product-fields{grid-template-columns:1fr}.mobile-bottom-nav span{font-size:10px}.mobile-bottom-nav i{font-size:18px}.cash-history-table .btn{white-space:nowrap}
}
@media(max-width:430px){.brand-wrap img{max-width:118px}.topbar-meta .user-chip{display:none}.stat-grid{grid-template-columns:1fr}.action-grid{grid-template-columns:1fr 1fr}.page-title h1{font-size:25px}.mobile-menu-btn{width:42px;height:42px}.list-table-scroll{max-height:calc(100dvh - 365px)}}
.payment-method-icon i{font-size:32px;color:currentColor}.payment-method-icon svg{display:none}
@media(max-width:1199.98px){.sidebar{right:auto;height:auto;overflow:hidden}.sidebar nav{display:block;padding-top:14px;overflow-y:auto}.menu-open{overflow:hidden}}

/* V0.1.8 - devis responsive, recherche globale, historique et finitions mobile/tablette */
.topbar-search{position:relative;display:flex;align-items:center;gap:9px;max-width:520px;padding:0 12px;min-height:46px;color:#4b5055}.global-search-icon{color:#72777d;flex:0 0 auto}.global-search-input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:#17191b;font:inherit;padding:11px 0}.global-search-input::placeholder{color:#858a90}.global-search-clear{border:0;background:transparent;color:#777;width:32px;height:32px;border-radius:8px;display:grid;place-items:center}.global-search-clear:hover{background:#f0f1f2;color:#111}.global-search-results{position:absolute;z-index:1090;left:0;right:0;top:calc(100% + 7px);background:#fff;color:#17191b;border:1px solid #dfe1e4;border-radius:12px;box-shadow:0 18px 44px #0004;overflow:auto;max-height:min(430px,65vh)}.global-search-results:empty{display:none}.global-search-result{display:flex;align-items:center;gap:11px;padding:11px 13px;color:#17191b;text-decoration:none;border-bottom:1px solid #eee}.global-search-result:last-child{border-bottom:0}.global-search-result:hover,.global-search-result:focus{background:#f7f7f8;color:#b70b13}.global-search-result-icon{width:36px;height:36px;border-radius:9px;background:#f0f1f2;display:grid;place-items:center;flex:0 0 36px}.global-search-result-text{display:flex;flex-direction:column;min-width:0}.global-search-result-text strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.global-search-result-text small{color:#747980;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.global-search-empty{padding:16px;color:#6b7280;text-align:center}.topbar-search-toggle,.mobile-search-panel{display:none}
.history-summary{max-width:460px;color:#50555b}.history-table-wrap{max-height:calc(100dvh - 300px)}

/* Les suggestions produit restent ancrées à la ligne sur tous les écrans. */
.quote-lines-wrap{overflow:visible!important}.quote-lines{width:100%;table-layout:fixed}.quote-lines td,.quote-lines th{min-width:0}.quote-lines .form-control{width:100%;max-width:100%;min-width:0}.quote-description-cell{min-width:0!important;position:relative;z-index:4}.line-product-fields{min-width:0}.line-description-wrap{position:relative;min-width:0}.line-product-suggestions{position:absolute!important;left:0!important;right:0!important;top:calc(100% + 4px)!important;max-height:280px;z-index:1100}.quote-line-row{position:relative}.quote-line-actions .btn{min-width:38px}

@media (max-width:1199.98px){
 .topbar-search{display:flex!important;flex:0 1 280px;max-width:280px;min-width:180px;margin-left:6px;min-height:42px}.global-search-input{font-size:14px}.topbar-meta{margin-left:auto}.global-search-results{min-width:340px;left:auto;width:min(440px,70vw)}
 .quote-lines-wrap{overflow:visible!important}.quote-description-cell{min-width:0!important}.line-product-suggestions{position:absolute!important;left:0!important;right:0!important;top:calc(100% + 4px)!important}
}

/* Table de lignes transformée en cartes sur tablette/mobile : aucun scroll horizontal. */
@media (max-width:991.98px){
 .quote-editor{overflow:visible}.quote-lines{display:block;table-layout:auto}.quote-lines thead{display:none}.quote-lines tbody{display:grid;gap:12px}.quote-lines tr.quote-line-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;padding:13px;border:1px solid #e1e3e6;border-radius:12px;background:#fafafa}.quote-lines td{display:block;width:auto!important;min-width:0!important;padding:0!important;border:0!important}.quote-lines td::before{content:attr(data-label);display:block;margin:0 0 5px;color:#5e6369;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.03em}.quote-lines .quote-description-cell{grid-column:1/-1;z-index:6}.quote-lines .quote-description-cell::before{display:none}.quote-lines .quote-line-actions{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-end}.quote-lines .quote-line-actions::before{align-self:flex-end}.quote-lines .line-total{text-align:left!important;display:flex;flex-direction:column;justify-content:flex-end;font-size:18px}.line-product-fields{grid-template-columns:minmax(0,1fr) minmax(130px,180px)}
 .line-product-suggestions{box-shadow:0 12px 34px #0004;max-height:250px}.line-product-suggestion{padding:12px}.line-product-suggestion b{font-size:14px}
}

@media (max-width:767.98px){
 .topbar-search{display:none!important}.topbar-search-toggle{display:grid;place-items:center;width:42px;height:42px;border:1px solid #ffffff33;border-radius:10px;background:#ffffff12;color:#fff;font-size:18px;margin-left:auto}.topbar-search-toggle:hover,.topbar-search-toggle:focus{background:#fff;color:#111}.topbar-meta{margin-left:0}.mobile-search-panel{position:fixed;display:block;z-index:1048;top:72px;left:0;right:0;padding:8px 10px;background:#111315;transform:translateY(-130%);opacity:0;visibility:hidden;transition:.18s ease;box-shadow:0 8px 24px #0005}.mobile-search-panel.is-open{transform:translateY(0);opacity:1;visibility:visible}.global-search-mobile{position:relative;display:flex;align-items:center;gap:9px;background:#fff;border-radius:11px;padding:0 10px;min-height:48px}.global-search-mobile .global-search-results{position:absolute;left:0;right:0;top:calc(100% + 5px);width:100%;min-width:0;max-height:60vh}.global-search-mobile .global-search-input{font-size:16px}
 .quote-lines tr.quote-line-row{grid-template-columns:1fr 1fr}.line-product-fields{grid-template-columns:1fr}.quote-lines .form-control{min-height:46px}.quote-lines .line-total{font-size:19px}.quote-lines .quote-line-actions .btn{width:100%;min-height:44px}.quote-lines .quote-line-actions{align-items:stretch}.quote-lines .quote-line-actions::before{align-self:flex-start}.line-product-suggestions{max-height:230px}
 .history-table-wrap{max-height:calc(100dvh - 350px)}
}

@media (max-width:575.98px){
 .quote-lines tr.quote-line-row{grid-template-columns:1fr;gap:10px;padding:12px}.quote-lines .quote-description-cell,.quote-lines .line-total,.quote-lines .quote-line-actions{grid-column:1}.quote-lines .line-total{align-items:flex-start}.quote-lines .quote-line-actions{align-items:stretch}.quote-lines td::before{font-size:10px}.line-product-suggestion{align-items:flex-start}.line-product-suggestion b{margin-left:auto}.quote-editor>.d-flex{align-items:stretch!important}.quote-editor #addQuoteLine{width:100%;margin-top:4px}.quote-editor #addQuoteLineBottom{width:100%}
}
@media (max-width:991.98px){.quote-line-row:focus-within{z-index:20}}
@media (max-width:1199.98px){
 .content .row>*{min-width:0}.content .form-control,.content .form-select,.content .input-group{max-width:100%;min-width:0}.content .btn{max-width:100%}
}
/* Mobile : une ligne de devis = une carte en colonne unique. */
@media (max-width:767.98px){
 .quote-lines tr.quote-line-row{grid-template-columns:1fr}.quote-lines .quote-description-cell,.quote-lines .line-total,.quote-lines .quote-line-actions{grid-column:1}.quote-lines .line-total{align-items:flex-start}.quote-lines .quote-line-actions{align-items:stretch}
}

/* V0.1.9 - devis tablette, historique contextuel et page d'erreur */
.entity-history-panel{padding:0;overflow:hidden}.entity-history-toggle{width:100%;border:0;background:#fff;display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:12px;padding:17px 19px;text-align:left;font-weight:900;color:#17191b}.entity-history-toggle:hover,.entity-history-toggle:focus{background:#fafafa;outline:none}.entity-history-toggle .badge{font-weight:800}.entity-history-chevron{transition:transform .18s ease;color:#73777d}.entity-history-toggle[aria-expanded="true"] .entity-history-chevron{transform:rotate(180deg)}.entity-history-list{padding:0 19px 17px}.entity-history-item{position:relative;display:grid;grid-template-columns:14px 1fr;gap:12px;padding:13px 0;border-top:1px solid #eceef0}.entity-history-dot{width:10px;height:10px;border-radius:50%;background:var(--red);margin-top:6px;box-shadow:0 0 0 4px #fff1f2}.entity-history-content{min-width:0}.entity-history-content time{font-size:12px;color:#71767c}.entity-history-summary{margin:5px 0;color:#4e545a;font-size:14px;line-height:1.4;overflow-wrap:anywhere}.entity-history-content small{color:#777}

.error-page{min-height:100vh;margin:0;background:#101112 url('../img/banner.jpg') top center/cover no-repeat;display:grid;place-items:center;padding:24px}.error-card{width:min(620px,96vw);background:#fff;border:1px solid #ffffff33;border-radius:20px;padding:34px;box-shadow:0 28px 90px #0009;text-align:center}.error-logo{width:min(300px,80%);height:auto;margin:0 auto 24px}.error-icon{width:70px;height:70px;border-radius:50%;display:grid;place-items:center;margin:0 auto 14px;background:#fff1f2;color:#d71920;font-size:30px}.error-code{display:inline-flex;padding:5px 10px;border-radius:999px;background:#f0f1f2;color:#555;font-weight:800;font-size:13px}.error-card h1{font-size:30px;margin:14px 0 8px}.error-card p{color:#5c6167;margin:0 auto 22px;max-width:500px}.error-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-bottom:18px}.error-card small{color:#8a8f94}

/* La mise en cartes commence désormais dès le paysage tablette.
   Cela évite tout chevauchement entre Désignation, quantité, prix et TVA. */
@media (max-width:1199.98px){
 .quote-editor{overflow:visible}.quote-lines-wrap{overflow:visible!important}.quote-lines{display:block!important;table-layout:auto!important;width:100%!important}.quote-lines thead{display:none!important}.quote-lines tbody{display:grid!important;gap:12px!important}.quote-lines tr.quote-line-row{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important;padding:14px!important;border:1px solid #e1e3e6!important;border-radius:12px!important;background:#fafafa!important;overflow:visible!important}.quote-lines td{display:block!important;width:auto!important;min-width:0!important;max-width:100%!important;padding:0!important;border:0!important}.quote-lines td::before{content:attr(data-label);display:block;margin:0 0 5px;color:#5e6369;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.03em}.quote-lines .quote-description-cell{grid-column:1/-1!important;z-index:10}.quote-lines .quote-description-cell::before{display:none}.line-product-fields{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(145px,190px)!important;gap:9px!important;min-width:0!important}.line-description-wrap,.line-reference,.quote-lines .form-control{min-width:0!important;width:100%!important;max-width:100%!important}.quote-lines .line-total{text-align:left!important;display:flex!important;flex-direction:column;justify-content:flex-end;font-size:18px}.quote-lines .quote-line-actions{display:flex!important;flex-direction:column;align-items:flex-end;justify-content:flex-end}.line-product-suggestions{position:absolute!important;left:0!important;right:0!important;top:calc(100% + 4px)!important;z-index:1200!important;max-height:260px!important;overflow-y:auto!important}.quote-line-row:focus-within{z-index:30!important}
}
@media (max-width:767.98px){
 .quote-lines tr.quote-line-row{grid-template-columns:1fr!important}.quote-lines .quote-description-cell,.quote-lines .line-total,.quote-lines .quote-line-actions{grid-column:1!important}.line-product-fields{grid-template-columns:1fr!important}.quote-lines .quote-line-actions{align-items:stretch!important}.quote-lines .quote-line-actions .btn{width:100%!important;min-height:44px}.entity-history-toggle{grid-template-columns:1fr auto auto;padding:15px}.entity-history-list{padding:0 15px 15px}.error-card{padding:26px 18px}.error-card h1{font-size:25px}.error-actions .btn{width:100%}
}

/* --- Authentification / Login V0.1.10 --- */
.login-page{min-height:100dvh;background:#101112 url('../img/login-bg.jpg') center center/cover no-repeat;display:flex;align-items:center;justify-content:center;padding:clamp(20px,4vw,48px);position:relative;overflow:hidden}
.login-page:before{content:"";position:absolute;inset:0;background:linear-gradient(115deg,rgba(0,0,0,.82),rgba(0,0,0,.58) 48%,rgba(215,25,32,.12));pointer-events:none}
.login-card{position:relative;z-index:1;width:min(470px,100%);background:rgba(255,255,255,.98);border:1px solid rgba(255,255,255,.72);border-radius:20px;padding:clamp(24px,4vw,38px);box-shadow:0 28px 90px rgba(0,0,0,.52);backdrop-filter:blur(10px)}
.login-brand{display:flex;flex-direction:column;align-items:center;margin-bottom:22px}.login-logo{display:block;width:min(315px,88%);height:auto;margin:0 auto 15px}.login-brand-rule{width:82px;height:4px;border-radius:999px;background:linear-gradient(90deg,#e21d27,#b70b13)}
.login-input-group .input-group-text{min-width:52px;justify-content:center;background:#161819;color:#fff;border-color:#d7dce2}.login-input-group .form-control{min-height:54px;border-left:0}.login-input-group .form-control:focus{border-color:#d71920;box-shadow:0 0 0 .2rem rgba(215,25,32,.13)}.login-input-group:focus-within .input-group-text{border-color:#d71920;background:#d71920}
.login-submit{min-height:56px;border-radius:10px;font-size:1.05rem;font-weight:800}.login-footer{text-align:center;margin-top:22px!important;color:#7a7f86;font-size:.85rem}
@media(max-width:575.98px){.login-page{padding:18px}.login-card{padding:24px 20px;border-radius:16px}.login-logo{width:min(280px,88%)}.login-submit{min-height:54px}}


/* V0.1.12 - alignement général des formulaires et actions du devis */
.panel .form-label{display:block;margin-bottom:.45rem;font-weight:600;line-height:1.2}
.panel .form-control:not(textarea),.panel .form-select{min-height:44px}
.panel .input-group>.form-control,.panel .input-group>.form-select,.panel .input-group>.input-group-text,.panel .input-group>.btn{min-height:44px}
.panel .row>[class*="col-"]{min-width:0}
.quote-lines.align-middle>:not(caption)>*>*{vertical-align:top}
.quote-lines .form-control{min-height:42px;height:42px}
.quote-lines .line-total{min-height:42px;display:flex;align-items:center;justify-content:flex-end;white-space:nowrap}
.quote-lines .quote-line-actions{vertical-align:top}
.quote-lines .quote-line-actions .btn{min-height:42px;min-width:42px;display:inline-grid;place-items:center}
.line-product-fields{align-items:start}
.quote-side-actions{display:grid;gap:9px;margin-top:22px}
.quote-side-actions .btn{min-height:48px;display:flex;align-items:center;justify-content:center}
@media (min-width:1200px){.quote-side-panel{top:104px;max-height:calc(100dvh - 126px);overflow:auto}}
@media (max-width:1199.98px){.quote-side-panel{position:static!important}.quote-side-actions{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:575.98px){.quote-side-actions{grid-template-columns:1fr}}


/* V0.1.13 - type Produit / Prestation discret dans la création rapide */
.line-product-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:6px;min-width:0}.line-product-meta .line-catalog-status{margin-top:0;min-width:0}.line-product-type-wrap{display:inline-flex;align-items:center;gap:6px;margin-left:auto;color:#6b7280;font-size:12px;white-space:nowrap}.line-product-type-wrap .form-select{width:132px;min-height:30px!important;height:30px!important;padding-top:2px;padding-bottom:2px;padding-left:9px;font-size:12px;border-radius:8px;background-position:right .45rem center}.line-product-type-wrap:not(.d-none){display:inline-flex!important}@media(max-width:575.98px){.line-product-meta{align-items:flex-start;flex-direction:column}.line-product-type-wrap{margin-left:0}.line-product-type-wrap .form-select{width:145px}}

/* V0.1.14 - catalogue archivé */
.product-editor-panel .font-monospace,.settings-panel .font-monospace{letter-spacing:.02em}
.list-panel tr.table-light td{opacity:.82}


/* V0.1.15 - lignes de devis robustes en tablette paysage */
.quote-editor{container-type:inline-size;container-name:quote-editor}
@container quote-editor (max-width: 1040px){
  .quote-lines-wrap{overflow:visible!important}
  .quote-lines{display:block!important;width:100%!important;table-layout:auto!important}
  .quote-lines thead{display:none!important}
  .quote-lines tbody{display:grid!important;gap:12px!important}
  .quote-lines tr.quote-line-row{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:12px!important;padding:14px!important;border:1px solid #e1e3e6!important;border-radius:12px!important;background:#fafafa!important;overflow:visible!important}
  .quote-lines td{display:block!important;width:auto!important;min-width:0!important;max-width:100%!important;padding:0!important;border:0!important}
  .quote-lines td::before{content:attr(data-label);display:block;margin:0 0 5px;color:#5e6369;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.03em}
  .quote-lines .quote-description-cell{grid-column:1/-1!important;z-index:10}
  .quote-lines .quote-description-cell::before{display:none}
  .line-product-fields{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(145px,200px)!important;gap:10px!important;width:100%!important;min-width:0!important}
  .line-description-wrap,.line-reference,.quote-lines .form-control{width:100%!important;min-width:0!important;max-width:100%!important}
  .quote-lines .line-total{display:flex!important;min-height:44px!important;align-items:center!important;justify-content:flex-start!important;text-align:left!important;font-size:18px!important;line-height:1.2!important}
  .quote-lines .quote-line-actions{display:flex!important;align-items:flex-end!important;justify-content:flex-end!important}
}
@container quote-editor (max-width: 760px){
  .quote-lines tr.quote-line-row{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .line-product-fields{grid-template-columns:1fr!important}
  .quote-lines .quote-description-cell{grid-column:1/-1!important}
}
@container quote-editor (max-width: 460px){
  .quote-lines tr.quote-line-row{grid-template-columns:1fr!important}
  .quote-lines .quote-description-cell,.quote-lines .line-total,.quote-lines .quote-line-actions{grid-column:1!important}
  .quote-lines .quote-line-actions{align-items:stretch!important}
  .quote-lines .quote-line-actions .btn{width:100%!important}
}

/* Fallback pour navigateurs sans container queries : carte dès tablette/petit desktop. */
@media (max-width:1399.98px){
  .quote-lines-wrap{overflow:visible!important}
  .quote-lines{display:block!important;width:100%!important;table-layout:auto!important}
  .quote-lines thead{display:none!important}
  .quote-lines tbody{display:grid!important;gap:12px!important}
  .quote-lines tr.quote-line-row{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important;padding:14px!important;border:1px solid #e1e3e6!important;border-radius:12px!important;background:#fafafa!important;overflow:visible!important}
  .quote-lines td{display:block!important;min-width:0!important;max-width:100%!important;width:auto!important;padding:0!important;border:0!important}
  .quote-lines .quote-description-cell{grid-column:1/-1!important}
  .line-product-fields{grid-template-columns:minmax(0,1fr) minmax(145px,200px)!important;width:100%!important}
}
@media (max-width:767.98px){
  .quote-lines tr.quote-line-row{grid-template-columns:1fr!important}
  .line-product-fields{grid-template-columns:1fr!important}
}

/* V0.1.17 - menu latéral rétractable */
@media (min-width:1200px){
    .sidebar,
    .content{
        transition:width .22s ease,margin-left .22s ease;
    }

    .sidebar-collapse-btn{
        appearance:none;
        position:fixed;
        z-index:1032;
        top:128px;
        left:206px;
        width:28px;
        height:34px;
        display:grid;
        place-items:center;
        padding:0;
        border:1px solid #d6d9dd;
        border-radius:0 8px 8px 0;
        background:#f4f5f6;
        color:#555b61;
        box-shadow:2px 2px 8px rgba(0,0,0,.08);
        cursor:pointer;
        transition:left .22s ease,background .15s ease,color .15s ease,border-color .15s ease;
    }

    .sidebar-collapse-btn i{
        font-size:10px;
        line-height:1;
        pointer-events:none;
    }

    .sidebar-collapse-btn:hover,
    .sidebar-collapse-btn:focus-visible{
        background:#fff;
        color:#d71920;
        border-color:#cfd3d7;
        outline:none;
    }

    .sidebar nav{
        padding-top:18px;
    }

    body.sidebar-collapsed .sidebar{
        width:76px;
    }

    body.sidebar-collapsed .content{
        margin-left:76px;
    }

    body.sidebar-collapsed .sidebar a,
    body.sidebar-collapsed .sidebar-install-btn{
        justify-content:center;
        gap:0;
        padding-left:0;
        padding-right:0;
    }

    body.sidebar-collapsed .sidebar a span,
    body.sidebar-collapsed .sidebar-install-btn span{
        display:none;
    }

    body.sidebar-collapsed .sidebar a i,
    body.sidebar-collapsed .sidebar-install-btn i{
        width:auto;
        font-size:19px;
    }

    body.sidebar-collapsed .sidebar-art{
        display:none;
    }

    body.sidebar-collapsed .sidebar-collapse-btn{
        left:62px;
    }
}

@media (max-width:1199.98px){
    .sidebar-collapse-btn{
        display:none!important;
    }
}


/* V0.1.20 - bouton de réduction placé sous les onglets */
@media (min-width:1200px){
    .sidebar-collapse-btn{
        position:relative!important;
        inset:auto!important;
        flex:0 0 auto;
        width:calc(100% - 20px)!important;
        height:34px!important;
        margin:4px 10px 10px!important;
        display:flex!important;
        align-items:center;
        justify-content:center;
        gap:8px;
        padding:0 10px!important;
        border:1px solid rgba(255,255,255,.08)!important;
        border-radius:7px!important;
        background:rgba(255,255,255,.025)!important;
        color:#8f9499!important;
        box-shadow:none!important;
        font-size:12px;
        line-height:1;
        cursor:pointer;
        transition:background .15s ease,color .15s ease,border-color .15s ease;
    }

    .sidebar-collapse-btn i{
        font-size:10px!important;
        line-height:1;
    }

    .sidebar-collapse-btn:hover,
    .sidebar-collapse-btn:focus-visible{
        background:rgba(255,255,255,.07)!important;
        color:#fff!important;
        border-color:rgba(255,255,255,.14)!important;
        outline:none!important;
        transform:none!important;
    }

    body.sidebar-collapsed .sidebar-collapse-btn{
        width:42px!important;
        margin-left:auto!important;
        margin-right:auto!important;
        padding:0!important;
    }

    body.sidebar-collapsed .sidebar-collapse-btn span{
        display:none;
    }
}


/* V0.1.22 - finition des lignes devis/factures et actions latérales */
.quote-lines .quote-line-actions::before{
    display:none!important;
    content:none!important;
}
.quote-lines .quote-line-actions{
    text-align:right;
}
.quote-lines .quote-line-actions .remove-line{
    width:42px!important;
    min-width:42px!important;
    height:42px!important;
    min-height:42px!important;
    padding:0!important;
    display:inline-grid!important;
    place-items:center!important;
}
.quote-lines .line-total{
    gap:8px!important;
}
.quote-lines .line-total::before{
    margin:0!important;
}

/* Même typographie pour Enregistrer, Imprimer, Email, Transformer... */
.quote-side-actions .btn{
    min-height:50px!important;
    padding:.72rem 1rem!important;
    font-size:1rem!important;
    font-weight:600!important;
    line-height:1.2!important;
}
.quote-side-actions .btn i{
    width:1.15em;
    text-align:center;
    flex:0 0 auto;
}

/* Cartes produit / prestation : total à gauche, suppression tout à droite. */
@container quote-editor (max-width: 1040px){
    .quote-lines .line-total{
        grid-column:1 / span 3!important;
        display:flex!important;
        flex-direction:row!important;
        align-items:center!important;
        justify-content:flex-start!important;
        gap:8px!important;
    }
    .quote-lines .quote-line-actions{
        grid-column:4!important;
        display:flex!important;
        flex-direction:row!important;
        align-items:flex-end!important;
        justify-content:flex-end!important;
    }
}
@container quote-editor (max-width: 760px){
    .quote-lines .line-total{
        grid-column:1!important;
    }
    .quote-lines .quote-line-actions{
        grid-column:2!important;
    }
}
@container quote-editor (max-width: 460px){
    .quote-lines .line-total,
    .quote-lines .quote-line-actions{
        grid-column:1!important;
    }
    .quote-lines .quote-line-actions{
        justify-content:flex-end!important;
        align-items:center!important;
    }
    .quote-lines .quote-line-actions .btn{
        width:42px!important;
        min-width:42px!important;
    }
}

/* Fallback / harmonisation tablette et petit desktop. */
@media (max-width:1399.98px){
    .quote-lines .line-total{
        grid-column:1!important;
        display:flex!important;
        flex-direction:row!important;
        align-items:center!important;
        justify-content:flex-start!important;
        gap:8px!important;
    }
    .quote-lines .quote-line-actions{
        grid-column:2!important;
        display:flex!important;
        flex-direction:row!important;
        align-items:flex-end!important;
        justify-content:flex-end!important;
    }
}
@media (max-width:767.98px){
    .quote-lines .line-total,
    .quote-lines .quote-line-actions{
        grid-column:1!important;
    }
    .quote-lines .quote-line-actions{
        justify-content:flex-end!important;
    }
    .quote-lines .quote-line-actions .btn{
        width:42px!important;
        min-width:42px!important;
    }
}

/* V0.1.22 - page Version & informations */
.app-info-hero{
    display:flex;
    align-items:center;
    gap:16px;
    padding:20px;
    border:1px solid #e2e5e8;
    border-radius:14px;
    background:linear-gradient(135deg,#fff,#f7f8f9);
}
.app-info-icon{
    width:58px;
    height:58px;
    flex:0 0 58px;
    display:grid;
    place-items:center;
    border-radius:14px;
    background:#151718;
    color:#fff;
    font-size:24px;
}
.app-info-version{
    display:inline-flex;
    align-items:center;
    min-height:30px;
    padding:4px 10px;
    border-radius:999px;
    background:#fff1f2;
    color:#c4161c;
    border:1px solid #ffd4d7;
    font-weight:800;
}
.app-info-list{
    display:grid;
    gap:0;
    margin:0;
}
.app-info-row{
    display:grid;
    grid-template-columns:minmax(150px,210px) minmax(0,1fr);
    gap:16px;
    padding:11px 0;
    border-bottom:1px solid #eceef0;
}
.app-info-row:last-child{
    border-bottom:0;
}
.app-info-row dt{
    margin:0;
    color:#6b7076;
    font-weight:600;
}
.app-info-row dd{
    margin:0;
    min-width:0;
    font-weight:700;
    overflow-wrap:anywhere;
}
.app-feature-list{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
}
.app-feature-list .badge{
    padding:.58rem .72rem;
    font-size:.82rem;
    font-weight:600;
}
@media(max-width:575.98px){
    .app-info-hero{
        align-items:flex-start;
    }
    .app-info-row{
        grid-template-columns:1fr;
        gap:3px;
    }
}


/* V0.1.26 - actions dans l'encart détail facture */
.total-panel-actions{
    margin-top:24px;
    padding-top:20px;
    border-top:1px solid #e6e7ea;
    display:grid;
    gap:12px;
}
.total-panel-actions .btn{
    min-height:50px;
    font-size:1rem;
    font-weight:600;
    line-height:1.2;
}
.total-panel-actions .btn i{
    width:1.2em;
    text-align:center;
}
.total-panel-actions form{
    margin:0;
}
.total-panel-email{
    text-align:center;
    line-height:1.35;
}


/* V0.1.28 - statistiques : périodes personnalisées + comparaison */
.stat-comparison-form{
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr) 220px;
    gap:18px;
    align-items:end;
}
.stat-period-block{
    min-width:0;
    padding:16px;
    border:1px solid #e3e6e9;
    border-radius:12px;
    background:#fafbfc;
}
.stat-period-compare{
    background:#fff;
    border-style:dashed;
}
.stat-period-heading{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:12px;
    margin-bottom:12px;
}
.stat-period-heading strong{
    display:block;
    font-size:.95rem;
}
.stat-period-heading small{
    display:block;
    margin-top:2px;
    color:#7a8087;
    font-size:.78rem;
}
.stat-period-badge{
    display:inline-flex;
    align-items:center;
    min-height:26px;
    padding:3px 8px;
    border-radius:999px;
    background:#fff1f2;
    border:1px solid #ffd3d6;
    color:#c4161c;
    font-size:.72rem;
    font-weight:700;
    white-space:nowrap;
}
.stat-period-badge.comparison{
    background:#f3f4f6;
    border-color:#e0e2e5;
    color:#545b62;
}
.stat-period-fields{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:10px;
}
.stat-filter-submit{
    align-self:stretch;
    display:flex;
    align-items:flex-end;
}
.stat-filter-submit .btn{
    min-height:52px;
}
.stat-comparison-legend{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:10px 18px;
    padding:0 2px;
    color:#697078;
    font-size:.82rem;
}
.stat-comparison-legend span:first-child i{
    color:#d71920;
}
.stat-comparison-legend span:last-child i{
    color:#7a8087;
}
.stat-card .stat-evolution{
    margin-top:10px;
}
.stat-evolution{
    display:flex;
    align-items:center;
    gap:6px;
    min-height:27px;
    padding:5px 8px;
    border-radius:8px;
    background:#f4f5f6;
    font-size:.78rem;
    line-height:1.2;
}
.stat-evolution i{
    width:14px;
    text-align:center;
}
.stat-evolution b{
    white-space:nowrap;
}
.stat-evolution span{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    color:#737980;
    font-weight:500;
}
.stat-evolution.positive{
    background:#eef9f2;
    color:#168444;
}
.stat-evolution.negative{
    background:#fff1f2;
    color:#c81e2a;
}
.stat-evolution.neutral{
    background:#f3f4f6;
    color:#60666d;
}
.stat-evolution.compact{
    margin-top:8px;
    width:max-content;
    max-width:100%;
}
@media(max-width:1199.98px){
    .stat-comparison-form{
        grid-template-columns:1fr 1fr;
    }
    .stat-filter-submit{
        grid-column:1 / -1;
    }
}
@media(max-width:767.98px){
    .stat-comparison-form{
        grid-template-columns:1fr;
    }
    .stat-filter-submit{
        grid-column:auto;
    }
    .stat-period-fields{
        grid-template-columns:1fr;
    }
    .stat-period-heading{
        flex-direction:column;
    }
    .stat-period-badge{
        white-space:normal;
    }
}


/* V0.1.29 - caisses individuelles par vendeur */
.cash-user-session-card{
    min-height:78px;
    display:flex;
    align-items:center;
    gap:12px;
    padding:14px;
    border:1px solid #e2e5e8;
    border-radius:12px;
    background:#fafbfc;
}
.cash-user-session-icon{
    width:42px;
    height:42px;
    flex:0 0 42px;
    display:grid;
    place-items:center;
    border-radius:10px;
    background:#eef9f2;
    color:#168444;
}
.cash-user-session-card strong{
    display:block;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}


/* V0.1.31 - alignements généraux des champs et actions */
.quote-client-top-row .direct-invoice-col{
    display:flex;
    flex-direction:column;
}
.quote-client-top-row .direct-invoice-badge{
    height:50px;
    min-height:50px;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:7px;
    padding:0 14px;
    border:1px solid #d9dde1;
    border-radius:8px;
    background:#f8f9fa;
    color:#15171a;
    font-size:.92rem;
    font-weight:700;
}
.filter-panel form.row{
    align-items:end!important;
}
.filter-panel .form-control,
.filter-panel .form-select,
.filter-panel .filter-submit .btn{
    min-height:46px;
}
.filter-panel .filter-submit{
    align-self:end;
}
.filter-panel .filter-submit .btn{
    display:flex;
    align-items:center;
    justify-content:center;
    padding-top:0;
    padding-bottom:0;
}

/* V0.1.31 - exports statistiques et comptables */
.statistics-export-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:12px;
}
.statistics-export-card{
    min-width:0;
    min-height:82px;
    display:flex;
    align-items:center;
    gap:12px;
    padding:14px;
    border:1px solid #e1e4e7;
    border-radius:12px;
    background:#fafbfc;
    color:#17191c;
    text-decoration:none;
    transition:border-color .15s ease,background .15s ease,transform .15s ease;
}
.statistics-export-card:hover{
    color:#17191c;
    border-color:#cfd3d7;
    background:#fff;
    transform:translateY(-1px);
}
.statistics-export-icon{
    width:42px;
    height:42px;
    flex:0 0 42px;
    display:grid;
    place-items:center;
    border-radius:10px;
    background:#fff1f2;
    color:#d71920;
}
.statistics-export-card>span:nth-child(2){
    min-width:0;
    display:flex;
    flex-direction:column;
}
.statistics-export-card strong{
    font-size:.94rem;
}
.statistics-export-card small{
    margin-top:2px;
    color:#727880;
    line-height:1.3;
}
.statistics-export-card>i{
    color:#8b9197;
}
@media(max-width:767.98px){
    .statistics-export-grid{
        grid-template-columns:1fr;
    }
}

/* v0.1.33 : indicateurs, saisie directe, suggestions et historique de caisse. */
.kpi{align-items:center;text-align:center}.kpi span{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:3px}
.cash-status.cash-open,.cash-status.cash-closed{background:#555e68!important;color:#fff!important}
.cash-status.cash-open .fa-circle{color:#17c964!important}.cash-status.cash-closed .fa-circle{color:#ef263a!important}
.cash-history-panel{padding:24px}.cash-history-panel>.d-flex{margin-bottom:22px!important}.cash-history-panel .cash-history-table{margin-top:8px}
.line-total-input{min-width:120px;text-align:right;font-weight:700}.line-total-input:focus{border-color:#d71920;box-shadow:0 0 0 .2rem #d719201c}
.company-search-results{position:absolute;left:0;right:0;top:100%;z-index:1050;background:#fff;border:1px solid #d7dce1;border-radius:8px;box-shadow:0 10px 25px #0002;max-height:290px;overflow-y:auto}
.company-search-choice{width:100%;border:0;border-bottom:1px solid #eee;padding:11px;text-align:left;display:block;background:#fff}.company-search-choice:hover,.company-search-choice:focus{background:#f3f4f5}.company-search-choice small{display:block;color:#697078}
.company-search-wrap{position:relative}.company-search-status{font-size:12px;margin-top:5px;min-height:18px;color:#6b7280}


/* V0.1.34 - centrage des statistiques + icônes visibles en menu replié */
.stat-card{align-items:center;text-align:center}
.stat-card span{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:3px;text-align:center}
.stat-card strong{text-align:center}
.stat-card .stat-evolution{justify-content:center;width:100%;text-align:center}
.stat-evolution span{text-align:center}
@media (min-width:1200px){
    body.sidebar-collapsed .sidebar a i,
    body.sidebar-collapsed .sidebar a svg,
    body.sidebar-collapsed .sidebar-install-btn i,
    body.sidebar-collapsed .sidebar-install-btn svg{
        display:block!important;
        visibility:visible!important;
        opacity:1!important;
        width:22px!important;
        min-width:22px!important;
        height:22px!important;
        margin:0 auto!important;
        text-align:center!important;
        overflow:visible!important;
    }
    body.sidebar-collapsed .sidebar a,
    body.sidebar-collapsed .sidebar-install-btn{
        overflow:visible;
    }
}


/* V0.1.38 : désignation multiligne sans débordement du formulaire tactile. */
.quote-lines textarea.line-description{
    height:auto!important;
    min-height:84px!important;
    line-height:1.4;
    resize:vertical;
    overflow-y:auto;
    white-space:pre-wrap;
}


/* V0.1.44 : menu sans barre de défilement visible, navigation devant l'image. */
@media (min-width:1200px){
    .sidebar{overflow:hidden}
    .sidebar nav{
        flex:0 0 auto;
        position:relative;
        z-index:2;
        min-height:0;
        overflow:visible;
        background:#181a1c;
    }
    .sidebar-collapse-btn{position:relative;z-index:3;flex-shrink:0}
    .sidebar-art{
        position:absolute;
        z-index:0;
        left:0;
        right:0;
        bottom:0;
        flex:none;
        height:245px;
        pointer-events:none;
    }
}
/* Resserre la navigation plutôt que de réduire la visibilité de l'image. */
@media (min-width:1200px) and (max-height:760px){
    .sidebar nav{padding-top:8px;padding-bottom:4px}
    .sidebar nav a,.sidebar-install-btn{padding-top:11px;padding-bottom:11px}
}
/* Sur un très petit écran, préserver l'accès aux liens même avec zoom important. */
@media (min-width:1200px) and (max-height:570px){
    .sidebar nav{flex:1 1 auto;overflow-y:auto;scrollbar-width:none}
    .sidebar nav::-webkit-scrollbar{display:none}
}
/* Le menu mobile/tablette reste défilable au toucher, sans barre superposée. */
@media (max-width:1199.98px){
    .sidebar nav{scrollbar-width:none}
    .sidebar nav::-webkit-scrollbar{display:none}
}

/* V0.1.45 - bouton Réduire le menu dans le groupe de navigation. */
@media (min-width:1200px){
    .sidebar nav .sidebar-collapse-btn{
        display:flex!important;position:static!important;inset:auto!important;
        align-items:center!important;justify-content:flex-start!important;
        gap:14px!important;width:100%!important;height:auto!important;min-height:54px!important;
        margin:0!important;padding:15px 24px!important;
        border:0!important;border-left:4px solid transparent!important;
        border-radius:0!important;background:transparent!important;color:#e7e7e7!important;
        font-size:16px!important;font-weight:400!important;text-align:left!important;
        line-height:1.2!important;box-shadow:none!important;flex:0 0 auto!important;
    }
    .sidebar nav .sidebar-collapse-btn i{width:22px!important;font-size:17px!important;text-align:center!important;line-height:1.2!important}
    .sidebar nav .sidebar-collapse-btn:hover,.sidebar nav .sidebar-collapse-btn:focus-visible{
        background:linear-gradient(90deg,#e21d27,#c40f18)!important;
        color:#fff!important;border-left-color:#fff!important;
    }
    body.sidebar-collapsed .sidebar nav .sidebar-collapse-btn{
        justify-content:center!important;gap:0!important;
        padding-left:0!important;padding-right:0!important;
        width:100%!important;margin:0!important;
    }
    body.sidebar-collapsed .sidebar nav .sidebar-collapse-btn span{display:none!important}
}
@media (min-width:1200px) and (max-height:760px){
    .sidebar nav .sidebar-collapse-btn{min-height:44px!important;padding-top:11px!important;padding-bottom:11px!important}
}
/* Lecture seule : cartes et tableaux de la fiche client. */
.client-detail-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.client-detail-summary .kpi{min-height:100px}
.client-detail-info{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 22px}
.client-detail-info dt{font-size:.78rem;color:#697078;margin-bottom:2px}
.client-detail-info dd{font-weight:600;margin-bottom:0;overflow-wrap:anywhere}
.client-detail-info .full{grid-column:1/-1}
.client-detail-section{margin-top:20px}
.client-detail-section .table-responsive{max-height:390px;overflow:auto}
@media (max-width:767.98px){.client-detail-summary{grid-template-columns:1fr 1fr}.client-detail-info{grid-template-columns:1fr}}
