:root{--bg: #f3f5f9;--bg-elevated: #ffffff;--bg-sunken: #eef1f6;--border: #e2e6ee;--text: #16202e;--text-muted: #667085;--overlay: rgba(15, 23, 42, .5);--accent-900: #0d3b66;--accent-700: #1560bd;--accent-600: #2f7de0;--accent-100: #e8f1fb;--accent-gradient: linear-gradient(135deg, #0d3b66 0%, #1560bd 55%, #2f8fe0 100%);--red-600: #d92d20;--red-100: #fdecea;--amber-500: #f79009;--amber-100: #fef3e2;--green-600: #12b76a;--green-100: #e7f8ef;--gray-500: #667085;--gray-100: #eef1f5;--radius: 16px;--radius-sm: 11px;--shadow: 0 1px 2px rgba(16, 24, 40, .05), 0 1px 3px rgba(16, 24, 40, .07);--shadow-lg: 0 8px 24px rgba(16, 24, 40, .12);--ease: cubic-bezier(.4, 0, .2, 1)}:root[data-theme=dark]{--bg: #0b1220;--bg-elevated: #131c2e;--bg-sunken: #0e1626;--border: #24304a;--text: #e7ecf5;--text-muted: #93a0b8;--overlay: rgba(0, 0, 0, .6);--accent-900: #dbeafe;--accent-700: #5b9bf0;--accent-600: #7db4f5;--accent-100: #17243d;--accent-gradient: linear-gradient(135deg, #0b1220 0%, #123055 55%, #1a4d8f 100%);--red-100: #3a1a1a;--amber-100: #3a2c10;--green-100: #103a24;--gray-100: #1a2437;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 1px 3px rgba(0, 0, 0, .35);--shadow-lg: 0 10px 28px rgba(0, 0, 0, .45)}[data-module=heures]{--accent-900: #064e3b;--accent-700: #0f9d78;--accent-600: #17b88c;--accent-100: #e3f8f0;--accent-gradient: linear-gradient(135deg, #064e3b 0%, #0f9d78 55%, #22c39a 100%)}:root[data-theme=dark] [data-module=heures]{--accent-900: #d1fae5;--accent-700: #34d9a8;--accent-600: #5fe6bc;--accent-100: #0f2a22;--accent-gradient: linear-gradient(135deg, #0b1220 0%, #0d3d30 55%, #12684f 100%)}[data-module=admin]{--accent-900: #3b1f6d;--accent-700: #7c3aed;--accent-600: #9560f5;--accent-100: #f0e9fe;--accent-gradient: linear-gradient(135deg, #3b1f6d 0%, #7c3aed 55%, #a578f7 100%)}:root[data-theme=dark] [data-module=admin]{--accent-900: #ede9fe;--accent-700: #a78bfa;--accent-600: #bea6fb;--accent-100: #241a3d;--accent-gradient: linear-gradient(135deg, #0b1220 0%, #2f1f57 55%, #5b3aa8 100%)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,Roboto,sans-serif;font-size:15px;-webkit-font-smoothing:antialiased}a{color:var(--accent-700);text-decoration:none}h1,h2,h3,h4{margin:0 0 4px;font-weight:700;color:var(--text);letter-spacing:-.01em}.text-muted{color:var(--text-muted);font-size:.85em}.loading,.app-loading{padding:3rem;text-align:center;color:var(--text-muted)}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-main{max-width:1200px;width:100%;margin:0 auto;padding:1.5rem 1.25rem 5rem;flex:1}.page-title{font-size:1.5rem;margin-bottom:1rem}.app-footer{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.4rem;max-width:1200px;width:100%;margin:0 auto;padding:1.25rem 1.25rem 1.5rem;font-size:.8rem;color:var(--text-muted);border-top:1px solid var(--border)}.navbar{background:var(--accent-gradient);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:.7rem 1.25rem;position:sticky;top:0;z-index:20;box-shadow:var(--shadow);transition:background .25s var(--ease)}.navbar-brand{display:flex;align-items:center;gap:.5rem;color:#fff;font-weight:700;font-size:1.05rem}.navbar-links{display:flex;align-items:center;gap:.25rem}.navbar-link{display:flex;align-items:center;gap:.4rem;color:#ffffffc7;padding:.5rem .75rem;border-radius:var(--radius-sm);font-size:.9rem;background:none;border:none;cursor:pointer;font-family:inherit;transition:background .15s var(--ease),color .15s var(--ease)}.navbar-link:hover{background:#ffffff1a;color:#fff}.navbar-link.active{background:#ffffff2e;color:#fff}.navbar-logout{margin-left:.5rem}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:999px;border:1px solid rgba(255,255,255,.3);background:#ffffff14;color:#fff;cursor:pointer;margin-left:.35rem;transition:background .15s var(--ease),transform .15s var(--ease)}.theme-toggle:hover{background:#fff3;transform:rotate(-8deg)}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:var(--bg-sunken);padding:1rem}.login-screen-toggle{position:absolute;top:1.25rem;right:1.25rem;z-index:5}.login-screen-toggle .theme-toggle{border-color:var(--border);color:var(--text);background:var(--bg-elevated)}.login-screen-toggle .theme-toggle:hover{background:var(--bg-sunken);transform:rotate(-8deg)}.login-mesh{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;z-index:0}.mesh-blob{position:absolute;border-radius:50%;filter:blur(70px);opacity:.55}.mesh-blob-1{width:480px;height:480px;background:var(--accent-700);top:-140px;left:-120px}.mesh-blob-2{width:420px;height:420px;background:#7c3aed;bottom:-160px;right:-100px;opacity:.35}.mesh-blob-3{width:320px;height:320px;background:var(--accent-600);bottom:10%;left:20%;opacity:.25}.login-card{position:relative;z-index:1;background:var(--bg-elevated);background:color-mix(in srgb,var(--bg-elevated) 88%,transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border);border-radius:20px;box-shadow:var(--shadow-lg);padding:2.25rem 2rem;width:100%;max-width:370px;text-align:center}.login-icon{width:64px;height:64px;border-radius:18px;background:var(--accent-gradient);color:#fff;display:flex;align-items:center;justify-content:center;margin:0 auto 1rem;box-shadow:var(--shadow)}.login-card h1{font-size:1.15rem;margin-bottom:.2rem}.login-subtitle{color:var(--text-muted);font-size:.82rem;margin:0 0 1.25rem}.password-reveal-box{display:flex;align-items:center;justify-content:space-between;gap:.75rem;background:var(--bg-sunken);border:1px dashed var(--accent-600);border-radius:var(--radius-sm);padding:.85rem 1rem;margin-top:.5rem}.password-reveal-box code{font-size:1.05rem;font-weight:700;letter-spacing:.03em;color:var(--text)}.field{display:block;text-align:left;margin-bottom:1.1rem}.field span{display:flex;align-items:center;gap:.3rem;font-size:.85rem;color:var(--text-muted);margin-bottom:.35rem}.field input{width:100%}input,select,textarea{font-family:inherit;font-size:.92rem;padding:.55rem .7rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text);transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}input:disabled,select:disabled{opacity:.55;cursor:not-allowed}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent-600);box-shadow:0 0 0 3px var(--accent-100)}.form-row{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}.form-row input,.form-row select{flex:1 1 160px}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1rem;border-radius:var(--radius-sm);border:1px solid transparent;font-size:.9rem;font-weight:600;cursor:pointer;font-family:inherit;white-space:nowrap;transition:background .15s var(--ease),border-color .15s var(--ease),color .15s var(--ease),transform .1s var(--ease)}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--accent-700);color:#fff}.btn-primary:hover{background:var(--accent-600)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-block{width:100%;justify-content:center}.btn-outline{background:var(--bg-elevated);border-color:var(--border);color:var(--text)}.btn-outline:hover{border-color:var(--accent-600);color:var(--accent-700)}.btn-outline-light{background:#ffffff26;border-color:#fff6;color:#fff}.btn-outline-light:hover{background:#ffffff40}.btn-ghost{background:none;border:1px dashed var(--border);color:var(--accent-700)}.btn-ghost:hover{background:var(--accent-100)}.btn-danger-outline{background:var(--bg-elevated);border-color:var(--red-100);color:var(--red-600)}.btn-danger-outline:hover{background:var(--red-100)}.btn-sm{padding:.4rem .7rem;font-size:.82rem}.icon-btn{border:none;background:none;cursor:pointer;color:var(--text-muted);padding:.35rem;border-radius:8px;display:inline-flex;transition:background .15s var(--ease)}.icon-btn:hover{background:var(--gray-100)}.icon-btn-danger:hover{background:var(--red-100);color:var(--red-600)}.alert{padding:.75rem 1rem;border-radius:var(--radius-sm);margin-bottom:1rem;font-size:.9rem}.alert-danger{background:var(--red-100);color:var(--red-600)}.alert-success{background:var(--green-100);color:var(--green-600)}.alert-warning{background:var(--amber-100);color:#92400e}.alert-info{background:var(--accent-100);color:var(--accent-700)}.alert-banner{display:flex;flex-wrap:wrap;gap:1.25rem;padding:.85rem 1.1rem;border-radius:var(--radius-sm);margin-bottom:1.25rem;font-size:.9rem}.alert-banner span{display:flex;align-items:center;gap:.4rem}.alert-banner-danger{background:var(--red-100);color:var(--red-600)}.alert-banner-neutral{background:var(--gray-100);color:var(--gray-500)}.badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .6rem;border-radius:999px;font-size:.75rem;font-weight:600;white-space:nowrap}.badge-danger,.pill-danger{background:var(--red-100);color:var(--red-600)}.badge-warning,.pill-warning{background:var(--amber-100);color:#92400e}.badge-secondary,.pill-secondary{background:var(--gray-100);color:var(--gray-500)}.badge-success,.pill-success{background:var(--green-100);color:var(--green-600)}.pill-row{display:flex;flex-wrap:wrap;gap:.4rem}.pill{padding:.2rem .55rem;border-radius:999px;font-size:.72rem;font-weight:600}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.1rem 1.25rem;margin-bottom:1.25rem;transition:background .2s var(--ease),border-color .2s var(--ease)}.card-title{display:flex;align-items:center;gap:.4rem;font-size:.95rem;margin-bottom:.75rem}.form-inline-card{padding-bottom:1rem}.module-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem;max-width:980px}.module-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:2.75rem 2rem;text-align:center;transition:box-shadow .2s var(--ease),transform .2s var(--ease),border-color .2s var(--ease)}.module-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-3px);border-color:var(--accent-600)}.module-card h2{font-size:1.3rem;margin-bottom:.4rem}.module-card p{font-size:.95rem}.module-card-icon{width:76px;height:76px;border-radius:20px;display:flex;align-items:center;justify-content:center;margin:0 auto 1.25rem;color:#fff}.module-card-stock .module-card-icon{background:linear-gradient(135deg,#0d3b66,#2f8fe0)}.module-card-heures .module-card-icon{background:linear-gradient(135deg,#064e3b,#22c39a)}.module-card-admin .module-card-icon{background:linear-gradient(135deg,#3b1f6d,#a578f7)}.vehicule-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1rem}.vehicule-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.1rem;display:block;transition:box-shadow .15s var(--ease),transform .15s var(--ease),border-color .15s var(--ease)}.vehicule-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px);border-color:var(--accent-600)}.vehicule-card-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.7rem}.vehicule-thumb{width:48px;height:48px;border-radius:12px;background:var(--accent-100);color:var(--accent-700);display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0}.vehicule-thumb img{width:100%;height:100%;object-fit:cover}.vehicule-card h3{font-size:1rem}.liste-name{font-size:.85rem;margin-bottom:.5rem}.vehicule-banner{display:flex;align-items:center;gap:1rem;background:var(--accent-gradient);color:#fff;border-radius:var(--radius);padding:1.1rem 1.4rem;margin-bottom:1.25rem;min-height:90px;background-size:cover;background-position:center}.vehicule-banner-icon{width:44px;height:44px;border-radius:12px;background:#ffffff2e;display:flex;align-items:center;justify-content:center;flex-shrink:0}.vehicule-banner-text{flex:1}.vehicule-banner h1{color:#fff;font-size:1.3rem}.vehicule-banner p{margin:0;opacity:.85;font-size:.85rem}.vehicule-edit-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.vehicule-edit-card{display:flex;gap:1rem;align-items:flex-start}.vehicule-photo-zone{display:flex;flex-direction:column;align-items:center;gap:.4rem;flex-shrink:0;width:88px}.vehicule-photo-zone img,.vehicule-photo-placeholder{width:72px;height:72px;border-radius:14px;object-fit:cover;background:var(--accent-100);color:var(--accent-700);display:flex;align-items:center;justify-content:center}.photo-btn{font-size:.68rem;padding:.3rem .4rem;white-space:normal;text-align:center}.vehicule-edit-form{flex:1;display:flex;flex-direction:column;gap:.5rem}.vehicule-edit-form label{font-size:.78rem;color:var(--text-muted);display:block}.vehicule-edit-form input,.vehicule-edit-form select{width:100%;margin-top:.2rem}.vehicule-edit-actions{display:flex;gap:.4rem;margin-top:.4rem;flex-wrap:wrap}.elements-list{display:flex;flex-direction:column;gap:.85rem}.element-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem 1.1rem}.element-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.6rem}.element-card-header h3{font-size:.95rem}.lots-table-wrap{overflow-x:auto;margin-bottom:.6rem}.lots-table{min-width:560px}.lots-table-head,.lot-row{display:grid;grid-template-columns:70px 150px 150px 1fr 110px;gap:.6rem;align-items:center;padding:.4rem 0}.lots-table-head{font-size:.72rem;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border)}.lot-row{border-bottom:1px solid var(--border)}.lot-row:last-child{border-bottom:none}.lot-input{width:100%;padding:.4rem .5rem;font-size:.85rem}.lot-date-cell{display:flex;align-items:center;gap:.25rem}.lot-date-cell .lot-input{min-width:0}.lot-non-perissable{text-align:center}.lot-row-end{display:flex;align-items:center;gap:.4rem;justify-content:flex-end}.spin{animation:spin 1s linear infinite;color:var(--accent-600)}@keyframes spin{to{transform:rotate(360deg)}}.tabs{display:flex;gap:.4rem;margin-bottom:1.1rem;border-bottom:1px solid var(--border)}.tab{display:flex;align-items:center;gap:.4rem;padding:.6rem 1rem;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-muted);font-family:inherit;font-size:.9rem;font-weight:600;cursor:pointer}.tab.active{color:var(--accent-700);border-color:var(--accent-700)}.listes-stack{display:flex;flex-direction:column;gap:.85rem}.liste-card{padding:0;overflow:hidden}.liste-card-header{width:100%;display:flex;align-items:center;gap:.6rem;padding:1rem 1.25rem;background:none;border:none;cursor:pointer;font-family:inherit;text-align:left;color:var(--text)}.liste-card-header .liste-name{font-weight:700;color:var(--text);font-size:.95rem;margin:0;flex:1}.liste-card-body{padding:0 1.25rem 1.25rem;border-top:1px solid var(--border)}.add-element-form,.liste-delete-btn{margin-top:1rem}.liste-elements-list,.element-list-card{margin-top:.75rem}.element-list-card{padding:.25rem 1.25rem}.liste-elements-row{display:grid;grid-template-columns:1fr 160px 200px 44px;gap:.75rem;align-items:center;padding:.6rem 0;border-bottom:1px solid var(--border);font-size:.88rem}.liste-elements-row:last-child{border-bottom:none}.element-list-row{display:grid;grid-template-columns:1fr 160px 110px 140px 44px;gap:.75rem;align-items:center;padding:.65rem 0;border-bottom:1px solid var(--border);font-size:.88rem}.element-list-row:last-child{border-bottom:none}.liste-elements-head,.element-list-head{font-size:.72rem;text-transform:uppercase;color:var(--text-muted);font-weight:600;border-bottom:1px solid var(--border)}.liste-qty-cell{display:flex;align-items:center;gap:.5rem}.liste-qty-cell .lot-input{width:4.5rem;flex:none}.liste-elements-actions,.element-list-actions{display:flex;justify-content:flex-end}.saving-dot{width:6px;height:6px;border-radius:50%;background:var(--accent-600);flex-shrink:0}.module-checkboxes{display:flex;flex-wrap:wrap;gap:1rem;margin-top:.5rem}.checkbox-label{display:flex;align-items:center;gap:.4rem;font-size:.85rem;cursor:pointer}.user-list{display:flex;flex-direction:column;gap:.85rem}.user-card-row{display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-end;margin-bottom:.5rem}.user-card-row label{display:flex;flex-direction:column;gap:.25rem;font-size:.78rem;color:var(--text-muted)}.user-card-row input,.user-card-row select{min-width:180px}.user-card-actions{display:flex;gap:.4rem;flex-wrap:wrap}.log-row,.log-row-head{display:grid;grid-template-columns:170px 140px 120px 1fr 100px;gap:.75rem;align-items:center;padding:.6rem 0;border-bottom:1px solid var(--border);font-size:.85rem}.log-row-head{font-size:.72rem;text-transform:uppercase;color:var(--text-muted);font-weight:600}.log-useragent{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pagination{display:flex;align-items:center;gap:1rem;margin-top:1rem;justify-content:center}.employe-row{grid-template-columns:1fr auto}.employe-summary-card{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1.1rem;flex-wrap:wrap}.employe-summary-info{display:flex;align-items:center;gap:.6rem}.employe-summary-name{font-weight:600}.employe-summary-actions{display:flex;align-items:center;gap:.4rem}.d-flex-between{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:.75rem}.back-link{display:inline-flex;align-items:center;gap:.3rem;font-size:.82rem;color:var(--text-muted)}.month-nav{display:flex;align-items:center;gap:.75rem;font-weight:600;color:var(--text)}.heures-layout{display:grid;grid-template-columns:1fr 320px;gap:1.25rem;align-items:start}.jours-card{padding:.5rem 1.1rem;max-height:70vh;overflow-y:auto}.jour-row,.jour-row-head{display:grid;grid-template-columns:60px 140px 100px 100px 110px 90px 20px;gap:.5rem;align-items:center;padding:.45rem 0;border-bottom:1px solid var(--border);font-size:.82rem}.jour-row-head{font-size:.68rem;text-transform:uppercase;color:var(--text-muted);font-weight:600}.jour-row-weekend{background:var(--bg-sunken);margin:0 -1.1rem;padding-left:1.1rem;padding-right:1.1rem}.jour-row-date{font-weight:600;text-transform:capitalize}.jour-row-panier{font-size:.75rem;white-space:nowrap}.jour-row-error{border:none;background:none;color:var(--red-600);cursor:pointer;display:inline-flex;padding:.2rem}.heures-sidebar{display:flex;flex-direction:column;gap:1rem}.semaine-table{display:flex;flex-direction:column}.semaine-row,.semaine-row-head{display:grid;grid-template-columns:1.3fr .8fr .7fr .7fr .7fr;gap:.4rem;padding:.5rem 0;border-bottom:1px solid var(--border);font-size:.82rem;align-items:center}.semaine-row-head{font-size:.68rem;text-transform:uppercase;color:var(--text-muted);font-weight:600}.semaine-row-total{font-weight:700;color:var(--text);border-bottom:none;border-top:2px solid var(--accent-100)}.export-buttons{display:flex;gap:.4rem;align-items:center}.employe-filter-toggle{display:flex;gap:.4rem;margin-bottom:1rem}.employe-export-row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin-bottom:1rem}.employe-dates{display:flex;gap:.75rem;flex-wrap:wrap}.employe-dates label{display:flex;flex-direction:column;gap:.2rem;font-size:.75rem;color:var(--text-muted)}@media (max-width: 720px){.liste-elements-row,.element-list-row{grid-template-columns:1fr;row-gap:.25rem;padding:.7rem 0}.liste-elements-head,.element-list-head{display:none}.liste-elements-row>span:first-child,.element-list-row>span:first-child{font-weight:600}.liste-elements-actions,.element-list-actions{justify-content:flex-start}.navbar-brand span{display:none}.navbar-links{position:fixed;bottom:0;left:0;right:0;background:var(--accent-gradient);justify-content:space-around;padding:.4rem .2rem calc(.4rem + env(safe-area-inset-bottom));box-shadow:0 -2px 8px #0003;z-index:30}.navbar-link{flex-direction:column;font-size:.65rem;gap:.15rem;padding:.35rem .5rem;flex:1}.navbar-logout{flex:1}.theme-toggle{order:-1}.app-main,.app-footer{padding-bottom:5.5rem}.vehicule-edit-card{flex-direction:column;align-items:center;text-align:center}.vehicule-edit-form{width:100%}.vehicule-edit-actions{justify-content:center}.heures-layout{grid-template-columns:1fr}.jour-row,.jour-row-head{grid-template-columns:60px 1fr;row-gap:.3rem}.jour-row-head{display:none}}
