:root { --ink:#17242e; --muted:#5b6872; --paper:#f6f8f7; --surface:#fff; --brand:#006b54; --brand-dark:#004d3d; --line:#d7dfdc; --danger:#9d2727; --warning:#8a5a00; --focus:#ffbf47; }
* { box-sizing:border-box; }
body { margin:0; color:var(--ink); background:var(--paper); font:17px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif; }
a { color:var(--brand-dark); text-underline-offset:.18em; }
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible { outline:4px solid var(--focus); outline-offset:2px; }
.skip-link { position:absolute; left:-9999px; padding:.7rem; background:#fff; z-index:10; }.skip-link:focus{left:1rem;top:1rem}
.site-header { display:flex; align-items:center; justify-content:space-between; gap:1.5rem; padding:1rem max(1rem,calc((100vw - 1180px)/2)); background:#fff; border-bottom:1px solid var(--line); }
.brand { color:var(--ink); font-size:1.3rem; font-weight:800; text-decoration:none; }.site-header nav{display:flex;flex-wrap:wrap;align-items:center;gap:1rem}.inline-form{display:inline}.link-button{border:0;background:none;color:var(--brand-dark);font:inherit;text-decoration:underline;cursor:pointer;padding:0}
.container { width:min(1180px,calc(100% - 2rem)); margin:2rem auto 5rem; }.page-heading{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem}.page-heading h1{margin:.1rem 0}.eyebrow{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:.8rem;font-weight:700}.week-nav{display:flex;justify-content:space-between;margin:1.5rem 0}
.button { display:inline-flex; min-height:46px; align-items:center; justify-content:center; padding:.65rem 1rem; border:2px solid var(--brand); border-radius:.45rem; color:var(--brand-dark); background:#fff; font-weight:700; text-decoration:none; cursor:pointer }.button-primary{background:var(--brand);color:#fff}.button-primary:hover{background:var(--brand-dark)}.button-danger{border-color:var(--danger);color:var(--danger)}
.task-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:1rem}.task-card,.panel,.auth-card,.form-page,.empty-state{background:var(--surface);border:1px solid var(--line);border-radius:.7rem;padding:1.25rem;box-shadow:0 2px 8px rgb(0 0 0 / 5%)}.task-card h2{margin:.65rem 0}.task-card-header{display:flex;justify-content:space-between;gap:.5rem;color:var(--muted);font-size:.9rem}
.status{display:inline-block;padding:.2rem .55rem;border:1px solid currentColor;border-radius:99px;font-size:.82rem;font-weight:700}.status-active{color:#006b54}.status-awaiting_validation{color:var(--warning)}.status-completed,.status-closed_early{color:#285b9b}progress{width:100%;height:1rem;accent-color:var(--brand)}.alert-text,.exception{color:var(--danger);font-weight:700}.exception{display:block;font-size:.9rem}
.detail-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:1rem}.facts{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.facts div{border-top:1px solid var(--line);padding-top:.6rem}.facts dt{color:var(--muted);font-size:.85rem}.facts dd{margin:0;font-weight:700}.facts-inline{grid-template-columns:repeat(3,minmax(0,1fr));margin:.9rem 0}.facts-inline div{display:flex;align-items:baseline;gap:.45rem}.facts-inline dt{white-space:nowrap}.facts-inline dd{font-variant-numeric:tabular-nums}.panel{margin-bottom:1rem}.comments article{border-left:4px solid var(--line);padding-left:1rem;margin:1rem 0}.activity{display:flex;align-items:baseline;gap:.65rem}.activity-meta{flex:0 0 auto;color:var(--muted);font-size:.85rem}.activity p{margin:0}
.stacked-form{display:grid;gap:1rem}.stacked-form>div{display:grid;gap:.3rem}.stacked-form label{font-weight:700}.stacked-form input:not([type=checkbox]):not([type=range]),.stacked-form textarea,.stacked-form select{width:100%;min-height:46px;padding:.55rem;border:2px solid #89958f;border-radius:.35rem;font:inherit}.stacked-form textarea{min-height:100px}.stacked-form input[type=range]{width:100%;height:44px}.progress-output{font-size:2rem;font-weight:800;color:var(--brand-dark)}.progress-form{padding:.75rem;border:2px solid transparent;border-radius:.5rem;transition:background-color .2s,border-color .2s}.progress-form.progress-regression{background:#fff9e8;border-color:#c79a39}.progress-regression .progress-output,.progress-regression-note{color:#735313}.progress-regression-note:empty{display:none}.compact{margin-top:1rem;max-width:620px}.auth-card,.form-page{max-width:680px;margin:2rem auto}.manager-actions form{margin-bottom:1rem}.message{padding:1rem;border-left:5px solid var(--brand);background:#fff;margin-bottom:1rem}.message-error{border-color:var(--danger)}.message-warning{border-color:#c79a39;background:#fff9e8}.period-switch{display:flex;gap:.5rem;flex-wrap:wrap;margin:1rem 0}.period-switch a{padding:.5rem .8rem;border:1px solid #89958f;border-radius:999px}.period-switch a[aria-current=page]{background:var(--brand-dark);color:#fff}.observation-preview{margin-top:.8rem;border-top:1px solid #d7ddd9;padding-top:.6rem}.observation-preview summary{font-weight:700;cursor:pointer}.observation-preview small{display:block;color:#46524c;margin-top:.2rem}.proposal-actions{display:grid;gap:.75rem}
.responsive-table{background:#fff;border:1px solid var(--line);border-radius:.6rem;overflow:hidden}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.8rem;border-bottom:1px solid var(--line);vertical-align:top}thead{background:#e9f1ee}.button-row{display:flex;gap:.5rem}
.trend-values{white-space:nowrap}.trend-values span{font-variant-numeric:tabular-nums}
.period-nav{display:grid;grid-template-columns:1fr minmax(180px,auto) 1fr;align-items:center;gap:1rem;margin:1rem 0 1.5rem;padding:.75rem 1rem;background:#fff;border:1px solid var(--line);border-radius:.65rem}.period-nav a:last-child{text-align:right}.period-current{text-align:center;font-size:1.15rem;text-transform:capitalize}.period-nav-month{border-color:var(--brand);background:#e9f5f1}.period-nav-month .period-current{color:var(--brand-dark);font-size:1.3rem}.task-card{border-top:4px solid var(--brand)}.task-card h2{font-size:1.05rem;line-height:1.3;margin:0 0 .75rem}.task-progress-meta{display:flex;align-items:center;justify-content:space-between;gap:.65rem;margin-bottom:.35rem}.task-progress-meta strong{font-variant-numeric:tabular-nums}.task-card-completed{background:#f0f2f1;color:#59645f;border-top-color:#8b9691}.workload-chart svg,.task-profile-chart svg,.task-history-chart svg{display:block;width:100%;height:auto}.workload-summary{display:flex;justify-content:space-between;gap:.4rem;flex-wrap:wrap;margin:.1rem 0 .35rem;color:var(--muted);font-size:.78rem}.workload-summary strong{margin-left:auto}.workload-remaining{fill:#dfe7e4}.workload-completed{fill:var(--brand)}.legend-swatch{display:inline-block;width:1.4rem;height:.7rem;border-radius:.2rem;vertical-align:middle}.workload-axis,.profile-axis{font-size:9px;color:#53605a}.workload-axis .domain,.profile-axis .domain{stroke:#89958f}.chart-label{font-size:10px;font-weight:700;fill:var(--brand-dark)}.task-deadline{margin:.55rem 0;padding:.35rem .55rem;border-left:4px solid var(--line);background:#f5f7f6}.deadline-attention{border-color:#c9a227;background:#fffbea}.deadline-warning{border-color:#df7d19;background:#fff4e8}.deadline-urgent{border-color:#c84224;background:#fff0ed}.deadline-overdue{border-color:#8f1d1d;background:#fbeaea;color:#741616}.deadline-completed{border-color:#8b9691;background:#ecefed;color:#59645f}.task-alert{color:#8f1d1d;font-weight:700}.observation-preview article{border-left:3px solid var(--line);padding-left:.65rem;margin:.6rem 0}.chart-legend-control{display:flex;justify-content:flex-end;position:relative;margin-bottom:.75rem}.legend-toggle{border:1px solid var(--line);background:#fff;border-radius:99px;padding:.35rem .65rem;color:var(--brand-dark);cursor:pointer}.legend-toggle span{font-size:.85rem}.chart-legend{position:absolute;right:0;top:2.5rem;z-index:4;width:min(520px,100%);padding:.8rem;background:#fff;border:1px solid var(--line);border-radius:.5rem;box-shadow:0 5px 16px rgb(0 0 0 / 12%)}.chart-legend p{margin:.2rem 0}.marker{font-style:normal;font-weight:900}.marker-blocked{color:#a51f1f}.marker-late{color:#c45c0b}.marker-missing{color:#4f5e67}.task-profiles{min-width:340px}.task-profile{margin-bottom:.65rem;border-bottom:1px solid var(--line);padding-bottom:.55rem}.task-profile-row{display:grid;grid-template-columns:minmax(110px,1fr) minmax(250px,2.4fr);align-items:center;gap:.55rem}.task-profile-toggle{display:flex;align-items:center;justify-content:space-between;gap:.4rem;width:100%;min-height:44px;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer;padding:.35rem}.task-profile-toggle:hover,.task-profile-toggle:focus-visible{background:#eef5f2}.task-profile-title{font-size:.8rem;line-height:1.2}.task-profile-chart{display:block;min-width:250px}.task-profile-chart i{display:none}.task-profile-chart svg~.chart-fallback{position:absolute;left:-9999px}.chart-fallback{font-size:.8rem}.task-markers{display:flex;gap:.2rem;flex:0 0 auto}.task-profile-details{position:static;width:100%;margin-top:.4rem;padding:.65rem;background:#f8faf9;border:1px solid var(--line);border-radius:.45rem}.task-profile-details p{margin:0 0 .3rem}.chart-guide{stroke:#d9dfdc;stroke-dasharray:2 3}.chart-plan-limit{stroke:#a33;stroke-dasharray:4 2}.chart-overrun-zone{fill:#f8dede}.chart-progress-area{opacity:.08}.chart-progress-line{stroke-width:2.4}.chart-non-working-days rect{fill:#c9cfcc;opacity:.55}.chart-point-carried{stroke-width:1.2}.chart-focus-line{stroke:#26342e;stroke-width:1;stroke-dasharray:2 2}.chart-pointer-layer{cursor:crosshair}.day-tick{stroke:currentColor}.day-label{fill:currentColor;font-size:9px}.task-profile-completed{opacity:.72}
.required-marker{color:var(--danger);font-weight:900}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.schedule-help,.chart-caption{color:var(--muted);font-size:.88rem}.form-errors,.errorlist{color:var(--danger)}
.task-history-chart{min-height:clamp(190px,38vw,330px)}.task-card-history-chart{min-height:128px}.task-history-chart i{display:none}.task-history-chart svg~.chart-fallback{position:absolute;left:-9999px}.task-history-chart.chart-load-error::after{content:"Le graphique n’a pas pu être chargé.";display:block;padding:1rem;color:var(--danger);font-weight:700}.history-progress-line{stroke-width:3}.chart-start-line{stroke:#65736d;stroke-width:1.5}.chart-due-line{stroke:#7d342f;stroke-width:2}.chart-today-line{stroke:#44515a;stroke-width:2;stroke-dasharray:5 4}.chart-marker-label{fill:#26342e;font-size:9px;font-weight:750}.chart-due-line-label{fill:#7d342f}.chart-today-line-label{fill:#44515a}.history-point{stroke-width:1.5}.chart-dates{display:grid;grid-template-columns:repeat(3,1fr);gap:.65rem;margin:.65rem 0}.chart-dates div{padding:.45rem .6rem;border-top:3px solid var(--line);background:#f5f7f6}.chart-dates dt{font-size:.78rem;color:var(--muted)}.chart-dates dd{margin:0;font-weight:800;font-variant-numeric:tabular-nums}.chart-date-start{border-top-color:#65736d!important}.chart-date-today{border-top-color:#44515a!important}.chart-date-due{border-top-color:#7d342f!important}.progress-chart-tooltip{position:fixed;z-index:10000;max-width:min(300px,calc(100vw - 16px));padding:.65rem .75rem;border:1px solid #17242e;border-radius:.4rem;background:#17242e;color:#fff;box-shadow:0 8px 24px rgb(0 0 0 / 25%);font-size:.8rem;line-height:1.35;pointer-events:none}.progress-tooltip-title{margin-bottom:.25rem;font-weight:800}
.team-tree{display:grid;gap:.8rem}.team-branch{background:#fff;border:1px solid var(--line);border-radius:.65rem;overflow:hidden}.team-branch>summary{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.8rem 1rem;cursor:pointer;background:#e9f1ee}.team-branch>summary span:first-child{display:grid}.team-branch>summary small{color:var(--muted);font-weight:400}.team-node-content{padding:1rem}.team-profile-status{margin:.25rem 0;color:var(--muted)}.team-node-heading{display:grid;grid-template-columns:1fr minmax(210px,auto);gap:1rem;align-items:start}.stacked-stats{margin:0;display:grid;grid-template-columns:repeat(2,1fr);gap:.3rem}.stacked-stats div{display:flex;justify-content:space-between;gap:.6rem;border-bottom:1px solid var(--line);font-size:.82rem}.stacked-stats dt{color:var(--muted)}.stacked-stats dd{margin:0;font-weight:700}.subteam{margin:.9rem 0 0 1rem;padding-left:.8rem;border-left:3px solid var(--line)}.subteam>summary{cursor:pointer;font-size:.9rem;font-weight:750;color:var(--muted)}.subteam-content{display:grid;gap:.7rem;margin-top:.7rem}
.observable-help{max-width:900px}.observable-help h2{margin-top:0}.observable-help summary{font-weight:800;cursor:pointer}.code-block{overflow:auto;padding:1rem;border:1px solid var(--line);border-radius:.45rem;background:#12211c;color:#eaf5f1;font-size:.88rem;line-height:1.45}.token-field{display:block;width:100%;margin:.5rem 0 1rem;padding:.7rem;border:2px solid #89958f;border-radius:.35rem;font:inherit;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;overflow-wrap:anywhere}.copy-status{min-height:1.5rem;color:var(--brand-dark);font-weight:700}.observable-facts{margin:1rem 0}.observable-facts dd{overflow-wrap:anywhere}
@media (max-width:760px){body{font-size:16px}.site-header,.page-heading{align-items:flex-start;flex-direction:column}.site-header nav{gap:.7rem}.container{width:min(100% - 1rem,1180px);margin-top:1rem}.detail-grid{grid-template-columns:1fr}.facts{grid-template-columns:1fr}.activity{align-items:stretch;flex-direction:column;gap:.2rem}.responsive-table{border:0;background:transparent}table,thead,tbody,tr,th,td{display:block}thead{position:absolute;left:-9999px}tr{background:#fff;border:1px solid var(--line);border-radius:.6rem;margin-bottom:1rem;padding:.5rem}td,th{display:grid;grid-template-columns:36% 64%;border:0;padding:.45rem}td::before,th::before{content:attr(data-label);font-weight:700;color:var(--muted)}th[data-label] a{font-size:1.1rem}.task-card-header{flex-direction:column}.button{width:100%}.week-nav{gap:1rem}.week-nav a{max-width:45%}.period-nav{grid-template-columns:auto 1fr auto;padding:.65rem .5rem;gap:.45rem}.period-nav a{font-size:.85rem}.period-current{font-size:1rem}.period-nav-month .period-current{font-size:1.08rem}.task-progress-meta{align-items:flex-start}.workload-summary{font-size:.74rem}.task-profiles{min-width:0;display:block}.task-profile-row{grid-template-columns:1fr}.task-profile-title{font-size:.88rem}.task-profile-chart{min-width:0}.task-profile-details{width:100%;margin-top:.35rem}.chart-dates{grid-template-columns:1fr}.chart-legend-control{justify-content:stretch}.legend-toggle{width:100%}.chart-legend{position:static;width:100%;margin-top:.4rem}.team-node-heading{grid-template-columns:1fr}.stacked-stats{grid-template-columns:1fr}.subteam{margin-left:.25rem;padding-left:.5rem}}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
