:root{--bg: #F5F5F0;--surface: #FFFFFF;--surface-2: #FAFAF6;--ink: #1D1D1B;--ink-2: #55554F;--ink-3: #8A8A82;--line: #E4E3DA;--line-2: #D6D5CA;--grid: rgba(29, 29, 27, .055);--grid-strong: rgba(29, 29, 27, .13);--off: rgba(120, 110, 80, .07);--hol: rgba(154, 69, 28, .08);--green: #2E5932;--green-2: #3C7341;--rust: #9A451C;--danger: #A33222;--focus: rgba(46, 89, 50, .35);--shadow: 0 1px 2px rgba(29, 29, 27, .06), 0 8px 24px rgba(29, 29, 27, .08);--radius: 8px;--serif: "EB Garamond", Garamond, Georgia, serif;--sans: Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font:14px/1.4 var(--sans);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.45}:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface);font-weight:500;white-space:nowrap}.btn:hover:not(:disabled){border-color:var(--ink-3)}.btn.primary{background:var(--green);border-color:var(--green);color:#fff}.btn.primary:hover:not(:disabled){background:var(--green-2);border-color:var(--green-2)}.btn.ghost{background:transparent;border-color:transparent}.btn.ghost:hover:not(:disabled){background:#0000000a;border-color:transparent}.btn.danger{color:var(--danger);border-color:#a3322259;background:transparent}.btn.danger.armed{background:var(--danger);color:#fff;border-color:var(--danger)}.icon-btn{display:inline-grid;place-items:center;width:32px;height:32px;border:0;border-radius:var(--radius);background:transparent;color:var(--ink-2)}.icon-btn:hover{background:#0000000d;color:var(--ink)}.seg{display:inline-flex;padding:2px;gap:2px;background:#1d1d1b0d;border-radius:9px}.seg button{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border:0;border-radius:7px;background:transparent;color:var(--ink-2);font-weight:500;white-space:nowrap}.seg button:hover{color:var(--ink)}.seg button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #00000014}.seg.zoom button{width:30px;justify-content:center;padding:0;font-size:16px}.check{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.check input{width:16px;height:16px;accent-color:var(--green);margin:0}.check small{color:var(--ink-3)}.avatars{display:inline-flex;flex-shrink:0}.avatar{display:inline-grid;place-items:center;border-radius:50%;color:#fff;font-weight:600;line-height:1;box-shadow:0 0 0 1.5px #fff}.avatars .avatar+.avatar{margin-left:-3px}.avatar.none{width:16px;height:16px;background:#d6d5ca;color:var(--ink-2);font-size:10px}.login{min-height:100%;display:grid;place-items:center;padding:16px}.login-card{width:100%;max-width:360px;padding:32px 28px;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px}.login-card h1{font:600 34px/1 var(--serif);margin:8px 0 0;color:var(--green)}.login-card p{margin:0 0 8px;color:var(--ink-2)}.login-card input{height:40px;padding:0 12px;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface-2)}.login-card .btn{height:40px;justify-content:center}.login-card .err{color:var(--danger);font-size:13px}.loading{display:grid;place-items:center;height:100%;color:var(--ink-3)}.brand{display:inline-flex;align-items:center;gap:10px;font:600 18px/1 var(--serif);color:var(--ink);white-space:nowrap}.app{height:100%;display:flex;flex-direction:column}.toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:10px 16px;padding:10px 16px;background:var(--bg);border-bottom:1px solid var(--line)}.app-name{font:italic 500 18px/1 var(--serif);color:var(--rust);margin-left:-8px}.tb-group{display:inline-flex;align-items:center;gap:8px}.tb-label{font-size:12px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em}.tb-spacer{flex:1}.tb-check{font-size:13px;color:var(--ink-2)}.sync{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-3)}.sync i{width:7px;height:7px;border-radius:50%;background:#5e9b63}.sync.saving i{background:#c98a1b}.sync.offline i{background:var(--danger)}.sync.offline{color:var(--danger)}.legend{display:flex;flex-wrap:wrap;gap:16px;padding:6px 16px;font-size:12px;color:var(--ink-2);border-bottom:1px solid var(--line)}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:18px;height:10px;border-radius:3px}.main{position:relative;flex:1;min-height:0;display:flex}.empty{margin:auto;text-align:center;padding:24px;max-width:420px}.empty h2{font:600 28px/1.1 var(--serif);margin:0 0 8px}.empty p{color:var(--ink-2);margin:0 0 20px}.gantt{flex:1;min-width:0;overflow:auto;position:relative;background:var(--surface);overscroll-behavior:contain}.gantt.is-dragging,.gantt.is-dragging *{-webkit-user-select:none;user-select:none}.gantt.drag-pan,.gantt.drag-move .bar,.gantt.drag-move{cursor:grabbing}.gantt.drag-resize-l,.gantt.drag-resize-r,.gantt.drag-create{cursor:ew-resize}.gantt.drag-reorder{cursor:grabbing}.g-inner{position:relative;min-height:100%;display:flex;flex-direction:column}.g-head{position:sticky;top:0;z-index:5;display:flex;background:var(--surface-2);border-bottom:1px solid var(--line-2)}.g-corner{position:sticky;left:0;z-index:6;flex-shrink:0;display:flex;align-items:flex-end;padding:0 14px 8px;background:var(--surface-2);border-right:1px solid var(--line-2);font-size:12px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em}.g-scale{position:relative;flex-shrink:0}.h-row{position:absolute;left:0;right:0}.h-row.top{top:0;height:24px}.h-row.bottom{top:24px;height:28px;border-top:1px solid var(--line)}.h-cell{position:absolute;top:0;bottom:0;overflow:clip;white-space:nowrap}.h-top{border-left:1px solid var(--line-2);padding:5px 8px 0;font:600 14px/1 var(--serif);color:var(--ink)}.h-top span{position:sticky;left:calc(var(--sidebar) + 8px)}.h-day{display:flex;flex-direction:column;align-items:center;justify-content:center;border-left:1px solid var(--line);font-size:11px;color:var(--ink-2);line-height:1.05}.h-day small{font-size:9px;color:var(--ink-3)}.h-day.off{background:var(--off);color:var(--ink-3)}.h-day.today{background:var(--rust);color:#fff;border-radius:5px 5px 0 0}.h-day.today small{color:#fffc}.h-week{display:flex;align-items:center;padding-left:5px;border-left:1px solid var(--line);font-size:11px;color:var(--ink-2)}.h-week.today{color:var(--rust);font-weight:600}.h-today{position:absolute;bottom:0;width:2px;height:6px;margin-left:-1px;background:var(--rust)}.g-body{position:relative;flex:1;display:flex;isolation:isolate}.g-sidefill{position:sticky;left:0;z-index:7;flex-shrink:0;background:var(--surface);border-right:1px solid var(--line-2)}.g-grid{position:absolute;top:0;bottom:0;cursor:grab}.off-col{position:absolute;top:0;bottom:0;background:var(--off);pointer-events:none}.off-col.hol{background:var(--hol)}.today-line{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:var(--rust);opacity:.7;pointer-events:none;z-index:2}.row{position:absolute;left:0;right:0;pointer-events:none}.row>*{pointer-events:auto}.row .track{position:absolute;top:0;bottom:0;pointer-events:none}.row .track>*{pointer-events:auto}.row .add-track{pointer-events:auto}.label{position:sticky;left:0;z-index:8;height:100%;display:flex;align-items:center;gap:8px;background:var(--surface);border-right:1px solid var(--line-2);padding:0 10px 0 6px}.row-project{border-top:1px solid var(--line)}.row-project:first-child{border-top:0}.label-project{background:var(--surface-2)}.row-project:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#1d1d1b05;pointer-events:none}.label-project.sel{box-shadow:inset 3px 0 0 var(--green)}.chev{border:0;background:none;color:var(--ink-3);width:20px;height:24px;padding:0;display:grid;place-items:center;border-radius:5px}.chev:hover{background:#0000000d;color:var(--ink)}.chev svg{transition:transform .15s}.pname{flex:1;min-width:0;display:flex;align-items:center;gap:8px;border:0;background:none;padding:4px;border-radius:6px;text-align:left;font:600 16px/1.1 var(--serif)}.pname:hover{background:#0000000a}.ptext{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pdot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.pdot.lg{width:11px;height:11px;border-radius:3px}.tag{font:500 10px/1 var(--sans);color:var(--ink-3);border:1px solid var(--line-2);border-radius:4px;padding:2px 4px;text-transform:uppercase;letter-spacing:.04em}.pcount{font-size:11px;color:var(--ink-3);min-width:14px;text-align:right}.padd{width:24px;height:24px;border:0;border-radius:6px;background:transparent;color:var(--ink-3);font-size:18px;line-height:1;display:grid;place-items:center}.padd:hover{background:var(--green);color:#fff}.summary{position:absolute;top:15px;height:10px;border-radius:3px;z-index:1;background:color-mix(in srgb,var(--pc) 22%,transparent);border-top:2px solid var(--pc);cursor:grab}.label-task{cursor:pointer;padding-left:20px}.label-task:hover{background:var(--surface-2)}.label-task.sel{background:#eef3ec}.row-sel:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#2e59320d;pointer-events:none}.handle{display:grid;place-items:center;width:14px;height:24px;margin-left:-14px;color:var(--ink-3);opacity:0;cursor:grab;touch-action:none;flex-shrink:0}.label-task:hover .handle{opacity:1}.ttext{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ttext.empty{color:var(--ink-3);font-style:italic}.ttext.done{color:var(--ink-3);text-decoration:line-through}.ms-mini{width:8px;height:8px;transform:rotate(45deg);flex-shrink:0;border-radius:1px}.row.ghosted{opacity:.35}.label-add{cursor:pointer;color:var(--ink-3);font-size:13px;padding-left:20px}.label-add:hover{color:var(--green)}.add-track{cursor:crosshair;touch-action:none}.add-hint{position:absolute;top:6px;bottom:6px;left:var(--hx, -100px);width:var(--dayw);border:1.5px dashed var(--pc);border-radius:5px;opacity:0;pointer-events:none}.add-track:hover .add-hint{opacity:.6}.is-dragging .add-hint{display:none}.bar{position:absolute;top:5px;height:24px;border-radius:6px;display:flex;align-items:center;cursor:grab;touch-action:none;z-index:3;box-shadow:0 1px 2px #00000026,inset 0 -1px #00000014;transition:box-shadow .12s}.bar:hover{box-shadow:0 2px 6px #00000038,inset 0 -1px #00000014;z-index:4}.bar.sel{outline:2px solid var(--ink);outline-offset:2px;z-index:4}.bar.done{opacity:.5}.bar.dragging{box-shadow:0 6px 16px #00000040;z-index:6;opacity:.92}.bar.creating{opacity:.75;pointer-events:none}.bar-in{display:flex;align-items:center;gap:6px;min-width:0;padding:0 10px 0 6px;overflow:hidden;pointer-events:none;font-size:12.5px;font-weight:500}.bar-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-in .avatar,.bar-in .pdot{box-shadow:0 0 0 1.5px #ffffffe6}.bar-out{position:absolute;left:calc(100% + 6px);display:flex;align-items:center;gap:5px;white-space:nowrap;color:var(--ink);font-size:12.5px;font-weight:500;pointer-events:none}.note-ico{flex-shrink:0;opacity:.8}.grip{position:absolute;top:0;bottom:0;width:9px;cursor:ew-resize;z-index:2}.grip.l{left:-2px}.grip.r{right:-2px}.grip:after{content:"";position:absolute;top:7px;bottom:7px;left:4px;width:2px;border-radius:1px;background:currentColor;opacity:0;transition:opacity .12s}.bar:hover .grip:after{opacity:.55}.drag-tip{position:absolute;bottom:calc(100% + 6px);left:0;background:var(--ink);color:#fff;font-size:11.5px;font-weight:500;padding:3px 7px;border-radius:5px;white-space:nowrap;pointer-events:none;z-index:10}.milestone{position:absolute;top:8px;height:18px;display:flex;align-items:center;gap:8px;cursor:grab;touch-action:none;z-index:3;white-space:nowrap}.diamond{width:16px;height:16px;transform:rotate(45deg);border-radius:3px;box-shadow:0 1px 3px #00000040;flex-shrink:0;margin:0 1px}.milestone.sel .diamond{outline:2px solid var(--ink);outline-offset:2px}.milestone.done{opacity:.5}.ms-label{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:600}.reorder-line{position:absolute;left:0;height:2px;background:var(--green);z-index:8;pointer-events:none}.panel{position:relative;z-index:20;flex-shrink:0;width:380px;max-width:100%;background:var(--surface);border-left:1px solid var(--line-2);box-shadow:-12px 0 32px #1d1d1b14;display:flex;flex-direction:column;animation:slide .16s ease-out}@keyframes slide{0%{transform:translate(16px);opacity:0}}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 8px 20px}.panel-head h2{margin:0;font:600 22px/1 var(--serif)}.panel-body{flex:1;overflow:auto;padding:8px 20px 24px;display:flex;flex-direction:column;gap:16px}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field>span{font-size:12px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em}.field input,.field select,.field textarea{width:100%;padding:8px 10px;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface-2)}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px var(--focus);background:#fff}.field textarea{resize:vertical;min-height:90px;line-height:1.45}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:-8px}.chip{border:1px solid var(--line-2);background:transparent;border-radius:999px;padding:2px 9px;font-size:12px;color:var(--ink-2)}.chip:hover{border-color:var(--green);color:var(--green)}.chip.on{background:var(--green);border-color:var(--green);color:#fff}.seg.assign{display:grid;grid-template-columns:1fr 1fr}.seg.assign button{justify-content:flex-start;height:32px}.duration{display:flex;align-items:center;gap:8px;margin-top:-6px;color:var(--ink-2);font-size:13px}.duration label{display:inline-flex;align-items:center;gap:6px}.duration input{width:64px;padding:4px 8px;border:1px solid var(--line-2);border-radius:6px;background:var(--surface-2)}.toggles{display:flex;flex-direction:column;gap:10px}.panel-actions{display:flex;gap:8px;justify-content:space-between}.panel-actions.wrap{flex-wrap:wrap;justify-content:flex-start}.hint{margin:0;font-size:12px;color:var(--ink-3)}.swatches{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.swatch{aspect-ratio:1;border:0;border-radius:8px}.swatch.on{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--ink)}.stats{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:12px;display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--ink-2)}.stats .who{display:flex;gap:16px;flex-wrap:wrap}.stats .who span{display:inline-flex;align-items:center;gap:6px}.toast{position:fixed;left:50%;bottom:20px;transform:translate(-50%);z-index:50;display:flex;align-items:center;gap:14px;background:var(--ink);color:#fff;padding:10px 14px;border-radius:10px;box-shadow:var(--shadow);font-size:13px;animation:pop .18s ease-out;max-width:calc(100vw - 32px)}.toast button{border:0;background:none;color:#e0a77f;font-weight:600;padding:0}@keyframes pop{0%{transform:translate(-50%,8px);opacity:0}}@media(max-width:1500px){.brand span{display:none}.app-name{margin-left:0}.tb-label{display:none}}@media(max-width:1100px){.hide-md{display:none}.toolbar{gap:8px 10px}}@media(max-width:700px){.toolbar{padding:8px 12px;gap:8px}.brand span,.hide-sm,.tb-label,.tb-check,.btn.ghost,.app-name,.icon-btn[title="Se déconnecter"]{display:none}.label{padding-right:6px;gap:5px}.pname{font-size:14px}.pcount,.handle{display:none}.label-task,.label-add{padding-left:10px}.panel{position:absolute;left:0;right:0;bottom:0;width:100%;top:auto;height:78%;border-left:0;border-top:1px solid var(--line-2);border-radius:14px 14px 0 0;box-shadow:0 -12px 32px #1d1d1b1f}}
