@font-face{font-family:'Open Sans';src:url('/assets/open-sans.ttf') format('truetype');font-weight:300 800;font-style:normal;font-display:swap}*{box-sizing:border-box}body{margin:0;background:#eef0f7;color:#2a3673;font-family:'Open Sans',Arial,sans-serif;font-size:14px}button,input,select{font:inherit}button{cursor:pointer;transition:background .15s}button:disabled{opacity:.55;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #9ca7db;outline-offset:3px}[hidden]{display:none!important}.sidebar{position:fixed;inset:0 auto 0 0;width:238px;background:#2a3673;color:#c4cbed;padding:32px 21px;display:flex;flex-direction:column}.brand,.login-brand{display:flex;align-items:center;gap:12px;font-size:21px;letter-spacing:2.5px;font-weight:600}.brand-mark{height:39px;width:39px;display:grid;place-items:center;background:#eff5dc;border-radius:11px;color:#2a3673;font-family:Georgia,serif;font-size:36px;font-style:italic;font-weight:400;letter-spacing:0;padding-bottom:4px}.brand-sub{display:block;font-size:9px;letter-spacing:3.1px;margin-top:6px;color:#c4cbed}.nav-label{font-size:9px;color:#c4cbed;letter-spacing:1.5px;margin:50px 12px 17px}nav{display:grid;gap:8px}.nav-item{border:0;background:transparent;color:#c4cbed;text-align:left;padding:13px 12px;border-radius:7px;font-size:13px;display:flex;gap:12px;align-items:center}.nav-item span{font-size:19px;width:21px}.nav-item:hover{background:#394787}.nav-item.active{background:#394787;color:white;box-shadow:inset 3px 0 #95c11f}.sidebar-bottom{margin-top:auto}.source-card{background:#394787;border:1px solid #53619b;border-radius:9px;padding:16px 12px}.source-card strong{font-size:11px}.source-card p{font-size:10px;line-height:1.6;color:#c4cbed;margin:8px 0 0}.live-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#95c11f;margin-right:7px;vertical-align:middle}.profile{display:flex;gap:10px;align-items:center;border-top:1px solid #53619b;padding-top:23px;margin-top:24px}.avatar{height:34px;width:34px;background:#eff5dc;color:#2a3673;border-radius:50%;display:grid;place-items:center}.profile strong{font-size:11px;display:block}.profile small{display:block;font-size:10px;color:#c4cbed;margin-top:5px}.icon-button{border:0;background:none;color:inherit;margin-left:auto;font-size:21px}main{margin-left:238px}.topbar{height:72px;background:white;border-bottom:1px solid #dfe3ef;padding:0 36px;display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#737e98}.topbar strong{font-weight:500;color:#2a3673}.slash{margin:0 15px;color:#737e98}.badge{background:#eff5dc;color:#526d12;border:1px solid #dae6b6;font-size:9px;letter-spacing:1px;font-weight:700;border-radius:5px;padding:7px 10px}.main-inner{max-width:1600px;margin:auto;padding:35px 36px 18px}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:26px}.eyebrow{font-size:9px;letter-spacing:1.8px;color:#4b597a;font-weight:700;margin:0 0 9px}h1{font-size:29px;letter-spacing:-1px;font-weight:600;margin:0 0 9px}h2{font-size:14px;font-weight:600;letter-spacing:-.2px;margin:0}.muted{color:#4b597a;line-height:1.6;margin:0}.primary,.secondary{border:1px solid transparent;border-radius:6px;padding:11px 16px;font-weight:500;font-size:11px;white-space:nowrap}.primary{background:#ed6b06;color:white}.primary:hover{background:#bf4f00}.secondary{background:white;border-color:#dfe3ef;color:#2a3673}.secondary:hover{background:#eef0f7}.export-actions{display:flex;gap:9px}.demo-note{background:#eef0f7;border:1px solid #dfe3ef;color:#4b597a;border-radius:7px;padding:12px 15px;display:flex;gap:12px;align-items:center;font-size:10px;line-height:1.65;margin-bottom:24px}.demo-note>span{font-size:20px}.demo-note strong{font-weight:600}.filters{background:white;border:1px solid #dfe3ef;border-radius:9px;padding:17px 18px;display:grid;grid-template-columns:1fr 1fr 1.3fr 1.4fr 1.3fr 28px;gap:15px;align-items:end}.filters label,label{font-size:10px;font-weight:500;color:#4b597a;display:grid;gap:7px}input,select{border:1px solid #dfe3ef;background:white;color:#2a3673;min-width:0;border-radius:5px;padding:10px 9px;font-size:11px;width:100%}.filters input,.filters select{background:#eef0f7}.reset{border:0;background:transparent;color:#4b597a;font-size:22px;padding:5px 0}.scope-line{display:flex;justify-content:space-between;margin:20px 0 14px;font-size:9px;color:#4b597a}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:23px}.kpi{background:white;border:1px solid #dfe3ef;border-radius:9px;padding:18px 20px}.kpi-title{display:flex;justify-content:space-between;color:#4b597a;font-size:11px}.kpi-title span{font-size:16px;color:#737e98}.kpi-value{font-size:30px;font-weight:500;letter-spacing:-1px;margin:16px 0 6px}.kpi p{font-size:9px;margin:0;color:#737e98}.kpi:first-child{border-top:3px solid #ed6b06;padding-top:16px}.kpi:nth-child(3) .kpi-value{color:#526d12}.kpi .negative{color:#bf7455!important}.panel{background:white;border:1px solid #dfe3ef;border-radius:9px;overflow:hidden;margin-bottom:23px}.panel-heading{padding:21px 23px 16px;display:flex;justify-content:space-between;align-items:center;gap:14px}.panel-heading p{font-size:10px;margin:6px 0 0;color:#4b597a}.legend{font-size:9px;color:#4b597a;white-space:nowrap}.legend i{display:inline-block;height:7px;width:7px;border-radius:2px;background:#ed6b06;margin-right:6px}.chart-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:23px}.monthly-chart{height:220px;padding:15px 23px 22px;display:flex;gap:13px;align-items:stretch;background:repeating-linear-gradient(to top,transparent 0,transparent 43px,#e8ebf3 44px,#e8ebf3 45px);background-clip:content-box}.chart-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;min-width:0;gap:7px}.chart-col b{font-size:9px;font-weight:400;color:#4b597a}.bar{width:100%;max-width:30px;background:#ed6b06;border-radius:4px 4px 0 0;min-height:2px}.chart-col span{font-size:9px;color:#4b597a;white-space:nowrap}.project-chart{padding:4px 23px 24px;display:grid;gap:19px}.project-label{display:flex;align-items:center;justify-content:space-between;font-size:10px;margin-bottom:8px}.project-label small{color:#737e98;margin-left:7px}.track{height:6px;background:#e8ebf3;border-radius:6px;overflow:hidden}.track>div{height:100%;background:#2a3673;border-radius:6px}.budget-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;padding:8px 23px 24px}.budget-item{border-left:1px solid #dfe3ef;padding-left:18px}.budget-item:first-child{border:0;padding-left:0}.budget-item h3{font-size:10px;font-weight:500;margin:0 0 13px}.budget-item b{font-size:19px;font-weight:500}.budget-item small{font-size:10px;color:#737e98}.budget-item .track{margin:10px 0 7px}.budget-item p{font-size:9px;color:#737e98;margin:0}.over .track>div{background:#c48c65}.over b,.over p{color:#b77856}.small{font-size:10px}.inline-label{display:flex;align-items:center;gap:10px;white-space:nowrap;font-size:10px}.inline-label select{min-width:140px}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:10px;white-space:nowrap}th{color:#737e98;background:#eef0f7;font-weight:500;border-top:1px solid #dfe3ef;font-size:9px;padding:12px 17px}td{padding:14px 17px;border-top:1px solid #e8ebf3;color:#4b597a}td:first-child{color:#2a3673;font-weight:500}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}td.total{background:#eef0f7;font-weight:600}.table-total td{background:#eef0f7;font-weight:600}.empty{padding:35px;text-align:center;color:#737e98;font-size:12px}.footnote{font-size:9px;line-height:1.7;color:#737e98;margin:4px 0 30px}footer{border-top:1px solid #dfe3ef;padding-top:19px;display:flex;gap:17px;align-items:center;font-size:10px;letter-spacing:1px;font-weight:600;color:#4b597a}footer span{font-size:9px;letter-spacing:0;font-weight:400;color:#737e98}footer span:last-child{margin-left:auto}.sync-grid{display:grid;grid-template-columns:1fr 1.5fr;gap:23px}.settings-form,.user-form{display:grid;grid-template-columns:1fr 1fr;gap:17px;padding:5px 23px 24px}.settings-form button,.user-form button{justify-self:start}.quota-content{padding:8px 23px 30px}.quota-value{font-size:35px;font-weight:500;margin-bottom:22px}.quota-content .track{height:9px;margin-bottom:17px}.status{font-size:9px;border-radius:4px;background:#eff5dc;color:#526d12;padding:5px 8px}.status.error{background:#fcf0e9;color:#b47552}.status.running{background:#eef0f7;color:#4b597a}.check{display:flex;align-items:center;gap:9px}.check input{width:15px}.user-form fieldset{grid-column:1/-1;border:1px solid #dfe3ef;padding:15px;border-radius:6px}.user-form legend{font-size:11px;color:#4b597a}#user-projects{display:flex;gap:20px;flex-wrap:wrap}#notice{padding:13px 17px;border:1px solid #dae6b6;background:#eff5dc;color:#526d12;border-radius:6px;margin-bottom:20px;font-size:12px}#notice.error{background:#fcf1eb;border-color:#efd9cc;color:#ab6748}.login-shell{min-height:100vh;background:#2a3673;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:35px;padding:30px}.login-brand{color:white}.login-card{width:min(470px,100%);background:#f9fbf7;padding:40px;border-radius:14px;box-shadow:0 20px 60px #2a367344}.login-card h1{font-size:29px;line-height:1.2}.login-card .muted{font-size:12px}.login-card form{display:grid;gap:19px;margin:28px 0 18px}.login-card input{font-size:14px;padding:13px}.login-card button{font-size:13px;padding:14px;display:flex;justify-content:space-between}.login-foot{font-size:10px;color:#c4cbed}.login-card #login-error{color:#b27356;font-size:12px;margin:0}.login-card .small{font-size:10px}
@media(min-width:1600px){.main-inner{padding-top:44px}.monthly-chart{height:250px}}@media(max-width:1200px){.sidebar{width:207px;padding:28px 15px}main{margin-left:207px}.main-inner{padding:28px 24px}.filters{grid-template-columns:1fr 1fr 1.3fr;gap:12px}.filters .reset{position:absolute;right:32px}.filters{padding-right:40px}.budget-grid{grid-template-columns:1fr 1fr;row-gap:25px}.chart-grid{gap:16px;grid-template-columns:1.2fr 1fr}.panel-heading{padding:18px}.monthly-chart{gap:8px;padding-left:18px;padding-right:18px}.kpi{padding:16px}.kpi-value{font-size:25px}}@media(max-width:850px){.sidebar{position:static;width:100%;padding:17px 20px;display:block}.brand{font-size:17px}.brand-mark{height:30px;width:30px;font-size:29px}.brand-sub{font-size:8px}.nav-label,.sidebar-bottom{display:none}nav{display:flex;gap:5px;overflow:auto;margin-top:18px}.nav-item{white-space:nowrap;font-size:11px;padding:9px}.nav-item span{font-size:16px}main{margin-left:0}.topbar{height:52px;padding:0 20px}.main-inner{padding:24px 18px}.page-heading{align-items:flex-start}h1{font-size:25px}.page-heading .muted{font-size:12px}.kpis{grid-template-columns:repeat(2,1fr);gap:12px}.chart-grid,.sync-grid{grid-template-columns:1fr}.filters{grid-template-columns:1fr 1fr}.monthly-chart{height:230px}.budget-grid{grid-template-columns:1fr 1fr}.export-actions{flex-direction:column;gap:5px}.inline-label{font-size:0}.panel-heading p{line-height:1.6}.settings-form,.user-form{grid-template-columns:1fr}.user-form fieldset{grid-column:auto}footer span:last-child{display:none}.login-card{padding:28px}.project-chart{padding-bottom:25px}#logout{display:none}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}

.top-actions{display:flex;align-items:center;gap:12px}.mobile-only{display:none}@media(max-width:850px){.mobile-only{display:block}}

/* Charte extraite du modèle Eugénia : indigo, orange, anis et Open Sans. */
:root{--eugenia-indigo:#2a3673;--eugenia-orange:#ed6b06;--eugenia-anis:#95c11f;--eugenia-paper:#eef0f7}
.brand,.login-brand{letter-spacing:1.4px;font-size:12px;font-weight:800;gap:13px}
.brand-logo{display:block;object-fit:contain;width:91px;height:89px;padding:9px;background:#fff;border-radius:3px}
.brand-sub{font-size:8px;letter-spacing:1.4px;font-weight:300;line-height:1.8}
.login-brand{font-size:17px}.login-brand .brand-logo{width:116px;height:113px;padding:12px}.login-brand .brand-sub{font-size:11px}
h1{font-weight:300;letter-spacing:-.9px}h2{font-weight:800}.eyebrow{color:var(--eugenia-indigo);font-weight:800}
.nav-label{margin-top:35px}.nav-item.active{box-shadow:inset 3px 0 var(--eugenia-orange)}
.kpi-value{font-weight:300}.primary{background:var(--eugenia-indigo)}.primary:hover{background:#394787}
.export-actions .primary{background:#c75500}.export-actions .primary:hover{background:#a64600}
.legend i{background:var(--eugenia-orange)}
.demo-note{background:#eef0f7;border-color:#dfe3ef;border-left:3px solid var(--eugenia-orange);color:#4b597a}
.panel,.filters,.kpi{border-radius:5px}.kpi:first-child{border-top-color:var(--eugenia-orange)}
.login-card{background:#fff;border-top:5px solid var(--eugenia-orange)}
@media(max-width:850px){.brand-logo{width:66px;height:64px;padding:6px}.brand{font-size:11px}.nav-label{margin-top:20px}}
@media(max-width:480px){
 .page-heading{flex-direction:column;gap:15px}.export-actions{flex-direction:row;width:100%}.export-actions button{flex:1}
 .filters{grid-template-columns:1fr;padding-right:36px}.filters .reset{position:static;justify-self:end}
 .topbar{height:auto;min-height:58px;gap:10px;padding:12px 18px}.topbar>span{line-height:1.6}.slash{margin:0 5px}
 .top-actions{gap:7px}.top-actions .badge{font-size:7px;padding:6px}.top-actions .secondary{font-size:10px;padding:8px}
 nav{scrollbar-width:none}nav::-webkit-scrollbar{display:none}.page-heading .muted{font-size:12px}
 .panel-heading{flex-wrap:wrap}.kpi{padding:14px 12px}.kpi-title{font-size:10px}.kpi-value{font-size:23px}
 .login-brand{font-size:12px}.login-brand .brand-logo{width:88px;height:86px}.login-brand .brand-sub{font-size:9px}
}
.project-label{gap:12px}.project-label>span:first-child{min-width:0;line-height:1.55}.project-label>span:last-child{flex-shrink:0}.budget-item h3{line-height:1.6;min-height:32px}

/* Synthèse des durées sources : tableaux séparés par unité. */
a.nav-item{text-decoration:none}.time-totals{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px;margin-bottom:22px}.time-totals .kpi{border-top:3px solid var(--eugenia-orange)}.time-totals .kpi-value{font-size:28px}.time-state{padding:30px 20px;margin-bottom:18px;background:white;border:1px solid #dfe3ef;border-radius:5px;color:#4b597a;line-height:1.7}.time-error{border-left:3px solid #c75500;background:#fff4ed}.time-warning{padding:13px 16px;border-left:3px solid var(--eugenia-orange);background:#fff4ed;font-size:12px;line-height:1.7;margin:0 0 23px}.time-warning.all-clear{background:#eff5dc;border-color:var(--eugenia-anis)}.time-cell{background:#eef0f7;color:#2a3673;border:1px solid #cbd1e3;border-radius:4px;padding:8px 11px;min-width:72px;font:inherit;font-weight:600}.time-cell:hover{background:#dfe3ef}.anomaly-dot{color:#a44500;font-weight:800}#time-tables td small,#time-detail-table td small{display:block;font-size:9px;color:#626c86;margin-top:5px;font-weight:400}.time-issues{white-space:normal;min-width:210px;color:#9a4100}.time-issues span{display:block;margin:4px 0}.time-pagination{display:flex;gap:15px;padding:18px;align-items:center;flex-wrap:wrap;font-size:12px}button:disabled{opacity:.5;cursor:not-allowed}#time-results .table-total td{font-variant-numeric:tabular-nums}#time-tables .table-scroll{max-height:620px}#time-tables thead{position:sticky;top:0;z-index:1}#time-export-status{font-size:12px;color:#4b597a;line-height:1.6}#time-login-error{color:#a44500;font-size:12px}#time-detail-title:focus{outline:2px solid #95c11f;outline-offset:4px}@media(max-width:480px){.time-totals{grid-template-columns:1fr}.time-totals .kpi-value{font-size:25px}.time-pagination{gap:10px}}
.time-totals .kpi .kpi-value{color:#2a3673}#time-detail .table-scroll{max-height:480px}#time-detail th{position:sticky;top:0}

/* Navigation interne : menu stable et aucun déplacement dû à la barre de défilement. */
html{scrollbar-gutter:stable}#times-page{min-height:60vh}#times-page>footer{display:none}
.recette-banner{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:baseline;background:#fdf0e6;border:1px solid #f6c49b;border-left:5px solid #ed6b06;color:#2a3673;border-radius:9px;padding:13px 16px;margin-bottom:22px;font-size:13px;line-height:1.5}.recette-banner strong{color:#a64a00}.empty.unavailable{text-align:left;line-height:1.6;padding:18px;color:#2a3673}.empty.unavailable a{color:#a64a00;font-weight:600}
.multi-filter{display:grid;gap:7px;min-width:0;position:relative;font-size:10px;font-weight:500;color:#4b597a}.multi-filter details{position:relative}.multi-filter summary{list-style:none;cursor:pointer;background:#eef0f7;border:1px solid #dfe3ef;border-radius:5px;padding:10px 26px 10px 9px;color:#2a3673;font-size:11px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative}.multi-filter summary::-webkit-details-marker{display:none}.multi-filter summary::after{content:'▾';position:absolute;right:9px;color:#737e98}.multi-filter summary:focus-visible{outline:3px solid #9ca7db;outline-offset:3px}.multi-filter details[open] summary{border-color:#9ca7db}.multi-panel{position:absolute;z-index:20;top:calc(100% + 4px);left:0;min-width:100%;width:max-content;max-width:min(420px,90vw);background:white;border:1px solid #d5dae8;border-radius:9px;box-shadow:0 10px 30px rgba(42,54,115,.16);padding:8px}.multi-list{max-height:280px;overflow:auto;display:grid;gap:2px}.multi-list .check{display:flex;gap:8px;align-items:flex-start;padding:7px 8px;border-radius:6px;font-size:12px;font-weight:400;white-space:normal;color:#2a3673;cursor:pointer;line-height:1.35}.multi-list .check:hover{background:#eef0f7}.multi-list input{margin-top:1px;width:15px;flex:none;padding:0;accent-color:#2a3673}.multi-empty{margin:6px 8px;color:#737e98;font-size:12px}.multi-clear{margin-top:6px;width:100%;border:0;border-top:1px solid #eef0f7;background:none;color:#a64a00;padding:8px;font-size:12px;text-align:left}.multi-clear:disabled{color:#b3b9cc;cursor:default}.time-adjusted{margin:-8px 0 12px;font-size:12px;color:#a64a00;min-height:0}.time-adjusted:empty{display:none}

/* Filtres communs (vue d'ensemble + analyse) : champs rétrécissables, retour à la ligne, aucun débordement. */
main,.main-inner,#times-page,#analytics-page{min-width:0}
.shared-filters{display:flex;flex-wrap:wrap;gap:12px 14px;align-items:flex-end;margin-bottom:6px;padding:16px 18px;position:relative}
.shared-filters .month-field{flex:1 1 128px;max-width:176px;min-width:0}
.shared-filters .combo{flex:2 1 190px;min-width:0}
.shared-filters .reset{position:static;flex:0 0 28px;align-self:flex-end;padding-bottom:8px}
.shared-filters .time-adjusted{flex-basis:100%;margin:0}
@media(max-width:1200px){.shared-filters{padding-right:18px}}
.combo{position:relative;display:grid;gap:7px;font-size:10px;font-weight:500;color:#4b597a}
.combo-toggle{display:flex;align-items:center;width:100%;min-width:0;background:#eef0f7;border:1px solid #dfe3ef;border-radius:5px;padding:10px 26px 10px 9px;color:#2a3673;font-size:11px;font-weight:400;text-align:left;position:relative}
.combo-toggle::after{content:'▾';position:absolute;right:9px;color:#737e98}
.combo-toggle[aria-expanded=true]{border-color:#9ca7db;background:#fff}
.combo-toggle.has-value{background:#fff;border-color:#b9c1dd;font-weight:600}
.combo-value{display:block;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.combo-panel{position:absolute;z-index:30;top:calc(100% + 4px);left:0;width:max(100%,min(440px,calc(100vw - 32px)));background:#fff;border:1px solid #d5dae8;border-radius:8px;box-shadow:0 12px 32px rgba(42,54,115,.18);padding:8px;display:grid;gap:6px}
.combo-panel.align-right{left:auto;right:0}
.combo-search{background:#fff;font-size:12px;padding:9px 10px}
.combo-list{list-style:none;margin:0;padding:0;max-height:300px;overflow:auto;display:grid;gap:1px;overscroll-behavior:contain}
.combo-option{display:flex;gap:9px;align-items:flex-start;padding:7px 8px;border-radius:6px;cursor:pointer;color:#2a3673;font-size:12px;font-weight:400;line-height:1.35}
.combo-option:hover{background:#f3f4f9}.combo-option.is-active{background:#e6e9f4;outline:2px solid #9ca7db;outline-offset:-2px}
.combo-check{flex:none;width:15px;height:15px;margin-top:1px;border:1.5px solid #9ca7db;border-radius:3px;background:#fff;display:grid;place-items:center}
.combo-option[aria-selected=true] .combo-check{background:#2a3673;border-color:#2a3673}
.combo-option[aria-selected=true] .combo-check::after{content:'✓';color:#fff;font-size:10px;line-height:1}
.combo-text{display:grid;min-width:0;gap:2px}
.combo-name{overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}
.combo-context{font-size:10px;color:#737e98;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.combo-empty{padding:12px 8px;color:#737e98;font-size:12px;font-weight:400}
.combo-footer{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;border-top:1px solid #eef0f7;padding-top:6px}
.combo-count{font-size:10px;color:#737e98;font-weight:400;margin-right:auto}
.combo-action{border:0;background:none;color:#a64a00;font-size:11px;padding:4px 2px}.combo-action:disabled{color:#b3b9cc;cursor:default}
.combo-help{margin:0;font-size:9px;color:#8a93ab;font-weight:400}
@media(max-width:850px){.shared-filters .month-field{max-width:none}.shared-filters .combo{flex-basis:100%}}
@media(max-width:480px){.shared-filters{padding:14px}.shared-filters .month-field{flex-basis:calc(50% - 26px)}.combo-panel,.combo-panel.align-right{left:0;right:auto;width:100%}}

/* Analyse des temps : regroupements et tableau arborescent. */
.grouping{border:1px solid #dfe3ef;background:#fff;border-radius:5px;margin:18px 0 0;padding:12px 16px;display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center}
.grouping legend{float:left;font-size:10px;font-weight:700;letter-spacing:.6px;color:#4b597a;margin-right:4px;padding:0}
.grouping-chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-flex;align-items:center;gap:7px;border:1px solid #cfd5e6;border-radius:20px;padding:6px 12px;font-size:11px;color:#2a3673;cursor:pointer;background:#fff}
.chip input{width:14px;margin:0;padding:0;accent-color:#2a3673}
.chip:has(input:checked){background:#eef0f7;border-color:#2a3673;font-weight:600}
.chip.is-fixed{cursor:default;opacity:.85}.chip.is-disabled{opacity:.45;cursor:not-allowed}
.chip:has(input:focus-visible){outline:3px solid #9ca7db;outline-offset:2px}
.grouping-hint{flex:1 1 220px;margin:0;font-size:11px;color:#4b597a;line-height:1.5}
.grouping-actions{display:flex;gap:8px;margin-left:auto}.grouping-actions .secondary{padding:8px 12px}
.analysis-scroll{max-height:640px;max-width:100%;overflow:auto}
.analysis-scroll:focus-visible{outline:3px solid #9ca7db;outline-offset:-3px}
.analysis-table thead th{position:sticky;top:0;z-index:2}
.analysis-table .label-col{position:sticky;left:0;z-index:1;background:#fff;text-align:left;min-width:220px;max-width:min(420px,45vw);box-shadow:1px 0 0 #e8ebf3}
.analysis-table thead .label-col{z-index:3;background:#eef0f7}
.analysis-table tbody th{padding:8px 14px;border-top:1px solid #e8ebf3;font-weight:400;color:#2a3673;font-size:11px}
.analysis-table tr.is-parent>th{font-weight:600}
.analysis-table tr.depth-1>th,.analysis-table tr.depth-1>td{background:#fbfbfd}
.analysis-table tr.depth-2>th,.analysis-table tr.depth-2>td{background:#f6f7fb}
.analysis-table tbody tr:hover>*{background:#f0f2f8}
.analysis-table tfoot th,.analysis-table tfoot td{background:#eef0f7;border-top:2px solid #cfd5e6;padding:10px 14px;font-weight:700;position:sticky;bottom:0}
.analysis-table tfoot .label-col{z-index:2}
.analysis-table td{padding:6px 10px}
.tree-label{display:flex;align-items:center;gap:6px;min-width:0}
.tree-toggle{flex:none;width:24px;height:24px;border:1px solid #cfd5e6;border-radius:4px;background:#fff;color:#2a3673;font-size:12px;line-height:1;padding:0}
.tree-toggle:hover{background:#e6e9f4}.tree-spacer{flex:none;width:24px}
.tree-text{display:grid;min-width:0}
.tree-name,.tree-context{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tree-context{font-size:9px;color:#737e98;font-weight:400}
.tree-meta{flex:none;font-size:9px;color:#737e98;background:#eef0f7;border-radius:9px;padding:2px 7px;font-weight:500}
.analysis-table .time-cell{min-width:64px;padding:6px 9px;font-weight:500}
.analysis-table .total .time-cell,.analysis-table tfoot .time-cell{font-weight:700}
.empty-cell{color:#b3b9cc}
#time-detail-table td.wrap{white-space:normal;min-width:160px;max-width:280px}
#time-detail-table td.tech{font-size:9px;color:#737e98;line-height:1.6}
#time-detail-table small.unit{color:#737e98}
.button-link{display:inline-block;text-decoration:none}
@media(max-width:850px){.analysis-table .label-col{min-width:160px;max-width:55vw}.grouping-actions{margin-left:0}}
#times-page .export-actions{flex-wrap:wrap;justify-content:flex-end}
.shared-filters{margin-bottom:26px}
.analysis-table .label-col{width:320px;min-width:280px;max-width:min(440px,45vw)}
@media(max-width:850px){.analysis-table .label-col{width:auto;min-width:170px;max-width:55vw}}
.analysis-table tfoot .label-col{background:#eef0f7}.muted-cell{color:#737e98}

/* Analyse des temps — barre compacte au-dessus du tableau, anomalies accessibles, détail paginé. */
/* Un bouton désactivé est indisponible, pas « en cours » : jamais de curseur d'attente permanent. */
button:disabled{cursor:not-allowed}
.analysis-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;background:#fff;border:1px solid #dfe3ef;border-bottom:0;border-radius:5px 5px 0 0;padding:9px 14px;margin-top:16px}
.analysis-toolbar+.time-state,.analysis-toolbar~#time-retry{border-radius:0 0 5px 5px}
.analysis-toolbar .grouping{border:0;background:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;flex:1 1 auto;min-width:0}
.analysis-toolbar .grouping legend{float:none;display:contents;font-size:10px;font-weight:700;letter-spacing:.4px;color:#4b597a}
.analysis-toolbar .grouping-chips{gap:6px}
.analysis-toolbar .chip{padding:4px 10px;font-size:11px}
.analysis-toolbar .grouping-actions{display:flex;align-items:center;gap:6px;margin-left:0;color:#b3b9cc;font-size:11px}
.link-button{border:0;background:none;padding:4px 2px;color:#2a3673;font-size:11px;font-weight:600;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.link-button:hover{color:#a64a00}.link-button:disabled{color:#b3b9cc;text-decoration:none}
.toolbar-meta{display:flex;align-items:center;gap:10px;margin-left:auto;font-size:10px;color:#4b597a;white-space:nowrap}
.anomaly-pill{border:1px solid #f6c49b;background:#fff4ed;color:#8f3d00;border-radius:14px;padding:4px 11px;font-size:11px;font-weight:600;cursor:pointer}
.anomaly-pill:hover{background:#fde4d1}.anomaly-pill:focus-visible{outline:3px solid #9ca7db;outline-offset:2px}
.anomaly-pill small{font-weight:400;color:#a64a00}
.analysis-toolbar .grouping-hint{flex:1 1 100%;font-size:10px;margin:0;color:#8f3d00}
#time-results .analysis-panel:first-child{border-top-left-radius:0;border-top-right-radius:0}
#time-results .footnote{margin-top:-12px}
.panel-heading.compact{padding:10px 16px}
.panel-heading.compact h2{font-size:13px;margin:0}.panel-heading.compact p{margin-top:2px}
.analysis-toolbar~.time-state{margin-top:0}
.detail-state{padding:12px 18px;margin:0;border-width:1px 0;border-radius:0}
.detail-state.is-busy::before{content:'';display:inline-block;width:11px;height:11px;margin-right:8px;vertical-align:-1px;border:2px solid #cfd5e6;border-top-color:#2a3673;border-radius:50%;animation:detail-spin .8s linear infinite}
@keyframes detail-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.detail-state.is-busy::before{animation:none}}
#time-detail-table.is-loading{opacity:.45;transition:opacity .15s}
#time-detail .table-scroll{max-height:min(560px,70vh)}
.time-pagination[hidden]{display:none}
.time-pagination [aria-disabled=true]{opacity:.55}
@media(max-width:850px){.toolbar-meta{margin-left:0}}
@media(max-width:480px){.analysis-toolbar{padding:8px 10px;gap:6px 10px}.analysis-toolbar .chip{padding:4px 8px}.toolbar-meta{flex-basis:100%;justify-content:space-between}}

/* Factures par état : filtres propres (lien affaire uniquement), sections non additionnées. */
#invoices-page{min-width:0;min-height:60vh}
.invoice-warning{margin:0 0 14px;font-size:11px}
.inv-filters{display:flex;flex-wrap:wrap;gap:12px 14px;align-items:flex-end;padding:14px 18px;margin-bottom:6px;position:relative}
.inv-filters .month-field{flex:1 1 128px;max-width:176px;min-width:0}
.inv-project{display:grid;gap:7px;font-size:10px;font-weight:500;color:#4b597a;flex:2 1 220px;min-width:0}
.inv-project select{width:100%;min-width:0;background:#eef0f7;border:1px solid #dfe3ef;border-radius:5px;padding:9px;color:#2a3673;font-size:11px}
.inv-states{border:0;margin:0;padding:0;display:grid;gap:7px;min-width:0}
.inv-states legend{font-size:10px;font-weight:500;color:#4b597a;padding:0;margin-bottom:7px}
.inv-states .chip{padding:5px 10px}.inv-states .chip small{color:#737e98;font-weight:400}
.inv-filters .reset{position:static;flex:0 0 28px;padding-bottom:8px}
.inv-note{font-size:10px;margin:0 0 14px}
#inv-results .scope-line{margin:0 0 10px}
.inv-section .panel-heading.compact h2{font-size:13px}
@media(max-width:480px){.inv-filters{padding:12px}.inv-filters .month-field{flex-basis:calc(50% - 8px);max-width:none}}
#invoices-page .export-actions{flex-wrap:wrap;justify-content:flex-end}
.inv-filters .inv-states label.chip{display:inline-flex;flex-direction:row;align-items:center;gap:6px;white-space:nowrap}.inv-filters .inv-states .chip input{width:14px;margin:0;padding:0}
/* Total « Facturé HT » : avertissements, ventilation, exclusions */
.inv-billed h3{margin:18px 0 8px;font-size:13px;color:var(--eugenia-indigo)}
.inv-warnings{padding-left:28px;margin:10px 0 14px}
.inv-warnings li{margin:2px 0}
.inv-by-state,.inv-exclusions{min-width:0;width:auto}
.inv-sections-title{margin:22px 0 6px;font-size:15px}

/* Filtres au contact des résultats, accessibles pendant le défilement de chaque écran. */
.filter-slot{position:sticky;top:8px;z-index:40;margin-bottom:10px;scroll-margin-top:8px}
#filter-dock{background:#fff;border-radius:5px;box-shadow:0 4px 14px #2a367314}
#filter-dock .shared-filters{margin:0;padding:12px 14px;gap:8px 12px}
#filter-dock:not([data-screen="invoices"]) #inv-filters{display:none}
#filter-dock .inv-filters{margin:0;border-top:0;border-radius:0 0 5px 5px;padding:8px 14px;gap:8px 12px}
#filter-dock[data-screen="invoices"] .shared-filters{border-radius:5px 5px 0 0}
.filter-slot+.analysis-toolbar{margin-top:0}
#filter-dock .combo-list{max-height:min(300px,30dvh)}
@media(max-width:850px){
 #filter-dock .shared-filters .combo{flex:1 1 160px}
 #filter-dock .shared-filters .month-field{flex:1 1 120px}
}
@media(max-width:480px){
 .filter-slot{top:4px}
 #filter-dock .shared-filters{padding:10px;gap:7px 10px}
 #filter-dock .shared-filters .combo{flex-basis:calc(50% - 10px)}
 #filter-dock .shared-filters .month-field{flex-basis:calc(50% - 10px)}
 #filter-dock .inv-filters{padding:8px 10px}
 #filter-dock .inv-states .grouping-chips{max-height:88px;overflow:auto}
}

.production-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.production-tabs button[aria-pressed=true]{background:#2A3673;color:white}.production-panel{padding:20px;margin:18px 0}.production-kpi{font-size:1.65rem;font-weight:700;color:#2A3673}.production-chart{overflow-x:auto}.production-chart svg{display:block;min-width:640px;width:auto;height:240px;max-height:360px}.production-chart text{font-size:11px;fill:#48516c}#production-status{padding:10px 0}#production-content td{white-space:normal;min-width:110px}@media(max-width:600px){.production-panel{padding:12px}.production-tabs button{width:100%;white-space:normal}.production-kpi{font-size:1.25rem}}

/* Un graphique mensuel lisible : valeurs conservées, défilement interne sur mobile. */
#monthly-chart{display:block;height:auto;padding:12px 16px;background:none;overflow-x:auto}#monthly-chart svg{display:block;width:auto;min-width:600px;height:240px}#monthly-chart text{font:12px 'Open Sans',sans-serif;fill:#4b597a}#monthly-chart .monthly-value{font-weight:600;fill:#2a3673}

/* Les quatre exports des temps et factures forment un groupe régulier sous le titre. */
:is(#invoices-page,#times-page) > .page-heading{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-items:start}
:is(#invoices-page,#times-page) > .page-heading > .export-actions{display:grid;grid-template-columns:repeat(4,max-content);justify-content:start;gap:9px;width:100%}
@media(max-width:650px){:is(#invoices-page,#times-page) > .page-heading > .export-actions{grid-template-columns:repeat(2,minmax(0,1fr))}:is(#invoices-page,#times-page) > .page-heading > .export-actions button{white-space:normal;width:100%}}


.logout-button{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;margin-top:14px;padding:10px 8px;border:1px solid #6875a8;border-radius:6px;background:transparent;color:#e2e6f7;font-size:12px}.logout-button:hover{background:#394787;color:white}.logout-button svg{flex-shrink:0}

.period-shortcuts{flex:1 0 100%;grid-column:1/-1;display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding-top:3px;font-size:10px;color:#4b597a}.period-shortcuts button{border:1px solid #dfe3ef;border-radius:5px;background:white;color:#2a3673;font-size:10px;padding:6px 9px}.period-shortcuts button:hover{background:#eef0f7}.period-shortcuts button[aria-pressed=true]{border-color:#2a3673;background:#2a3673;color:white}.period-custom{font-style:italic}@media(max-width:650px){.period-shortcuts{gap:6px}.period-shortcuts>span:first-child{width:100%}.period-shortcuts button{padding:8px 9px}}

.global-group{display:block;font-size:10px;color:#737e98;font-weight:400;margin-top:4px}

/* Douze mois tiennent dans la synthèse sur ordinateur ; plus d’espace sur les portables. */
@media(min-width:851px) and (max-width:1400px){.chart-grid{grid-template-columns:minmax(0,1fr)}}

/* Centrer le graphique agrandi dans la carte, même face à une longue liste d’affaires. */
.chart-grid>.panel:first-child{display:flex;flex-direction:column}
#monthly-chart{flex:1;display:flex;align-items:center;min-width:0;min-height:360px}
#monthly-chart svg{flex:0 0 auto;height:320px;margin:auto}
