:root{--ground: #f2f3f6;--surface: #ffffff;--surface-2: #e9ebf0;--line: #d5d8e0;--line-soft: #e4e6ec;--ink: #24262f;--ink-2: #565a68;--ink-3: #858a99;--accent: #3c63ae;--accent-soft: #e2e9f7;--accent-ink: #ffffff;--jalon: #b82e55;--jalon-soft: #f7e2e8;--bar: #4b81ad;--bar-done: #4a8c38;--warn: #9a6212;--warn-soft: #fbeedb;--danger: #b3052e;--danger-soft: #fadbd8;--shadow: 0 1px 2px rgba(36, 38, 47, .07), 0 6px 18px rgba(36, 38, 47, .06);--radius: 6px;--row-h: 28px;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--ground: #1a1c23;--surface: #22252e;--surface-2: #2b2f3a;--line: #3a3f4c;--line-soft: #2f3441;--ink: #e8eaf0;--ink-2: #a7adbc;--ink-3: #787f91;--accent: #7ba0e4;--accent-soft: #293752;--accent-ink: #151821;--jalon: #e8698f;--jalon-soft: #3a2630;--bar: #6fb6dc;--bar-done: #89d777;--warn: #e0b060;--warn-soft: #3a2f1c;--danger: #f08080;--danger-soft: #3b2226;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 6px 18px rgba(0, 0, 0, .25);color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--ground);color:var(--ink);font:400 14px/1.45 Barlow,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased}.mono,.num{font-family:IBM Plex Mono,ui-monospace,Menlo,monospace;font-variant-numeric:tabular-nums}.eyebrow{font-family:Barlow Condensed,Barlow,sans-serif;text-transform:uppercase;letter-spacing:.09em;font-weight:600;font-size:11px;color:var(--ink-3)}.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;align-items:center;gap:22px;flex-wrap:wrap;padding:10px 20px;padding-top:calc(10px + env(safe-area-inset-top,0px));background:var(--surface);border-bottom:1px solid var(--line);box-shadow:var(--shadow);position:relative;z-index:10}.brand{font:600 19px/1.1 Barlow Condensed,Barlow,sans-serif;letter-spacing:.01em}.brand small{display:block;font:400 11px/1.3 Barlow,sans-serif;color:var(--ink-2)}nav{display:flex;gap:4px}nav a{padding:6px 13px;border-radius:4px;text-decoration:none;color:var(--ink-2);font-weight:600;font-size:13.5px}nav a:hover{background:var(--surface-2);color:var(--ink)}nav a.on{background:var(--accent);color:var(--accent-ink)}.topbar .right{margin-left:auto;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.who{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2)}.who input{width:130px}.mode{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2)}.mode .dot{width:7px;height:7px;border-radius:50%;background:var(--bar-done)}.mode.local .dot{background:var(--ink-3)}main{flex:1;min-height:0;overflow:auto}.page{max-width:1640px;margin:0 auto;padding:18px 20px 48px}.page.wide{max-width:none}h1{margin:0 0 4px;font:600 24px/1.15 Barlow Condensed,Barlow,sans-serif;text-wrap:balance}h2{margin:0 0 10px;font:600 16px/1.2 Barlow,sans-serif}.lede{margin:0 0 18px;color:var(--ink-2);max-width:68ch}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.panels{display:grid;gap:14px}.stats{display:flex;gap:26px;flex-wrap:wrap}.stat{display:flex;flex-direction:column;gap:1px;min-width:80px}.stat b{font:500 21px/1.1 IBM Plex Mono,monospace;font-variant-numeric:tabular-nums}.stat.hl b{color:var(--accent)}button,.btn{border:1px solid var(--accent);background:var(--accent);color:var(--accent-ink);border-radius:4px;padding:6px 13px;font:600 13px Barlow,sans-serif;cursor:pointer}button:hover:not(:disabled){filter:brightness(1.06)}button:disabled{opacity:.5;cursor:not-allowed}button.ghost{background:transparent;color:var(--accent)}button.quiet{background:transparent;border-color:var(--line);color:var(--ink-2)}button.link{background:none;border:0;color:var(--accent);padding:0;text-decoration:underline;text-underline-offset:2px;font-weight:500}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}input,select{padding:5px 8px;border:1px solid var(--line);border-radius:4px;background:var(--ground);color:var(--ink);font:inherit}input[type=date]{font-family:IBM Plex Mono,monospace;font-size:12.5px}.chip{display:inline-block;padding:1px 7px;border-radius:99px;font-size:11px;font-weight:600;white-space:nowrap;background:var(--surface-2);color:var(--ink-2)}.chip.j{background:var(--jalon-soft);color:var(--jalon)}.chip.edited{background:var(--warn-soft);color:var(--warn)}.notice{border-radius:var(--radius);padding:11px 14px;margin-bottom:14px;font-size:13.5px}.notice.err{background:var(--danger-soft);color:var(--danger);border:1px solid var(--danger)}.notice.warn{background:var(--warn-soft);color:var(--warn);border:1px solid var(--warn)}.notice.info{background:var(--accent-soft);color:var(--ink);border:1px solid var(--line)}.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:9px 12px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius) var(--radius) 0 0;border-bottom:0}.toolbar .sep{flex:1}.toolbar label{display:flex;align-items:center;gap:5px;font-size:12.5px;color:var(--ink-2)}.grid{border:1px solid var(--line);border-radius:0 0 var(--radius) var(--radius);background:var(--surface);overflow:hidden}.gridscroll{overflow:auto;max-height:calc(100vh - 250px)}.gridrow{display:flex;align-items:stretch;border-bottom:1px solid var(--line-soft);min-height:var(--row-h)}.gridrow:not(.group):hover{background:var(--surface-2)}.gridrow.group{font-weight:600;position:sticky;top:0;z-index:3}.gridhead{display:flex;position:sticky;top:0;z-index:4;background:var(--surface);border-bottom:1px solid var(--line)}.gridhead .cell{font-family:Barlow Condensed,Barlow,sans-serif;text-transform:uppercase;letter-spacing:.07em;font-size:11px;font-weight:600;color:var(--ink-3);display:flex;align-items:flex-end;padding-bottom:5px}.cell{padding:4px 8px;display:flex;align-items:center;gap:6px;min-width:0;flex:none}.cell.grow{flex:1 1 auto}.cell.r{justify-content:flex-end}.cell .txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.left{display:flex;position:sticky;left:0;z-index:2;background:inherit;border-right:1px solid var(--line)}.gridrow:not(.group):hover .left{background:var(--surface-2)}.tl{position:relative;flex:none}.tlhead{position:relative;height:40px}.tlhead .yr{position:absolute;top:0;font:600 11px Barlow Condensed,sans-serif;letter-spacing:.08em;color:var(--ink-2);border-left:1px solid var(--line);padding-left:4px}.tlhead .mo{position:absolute;top:15px;font:500 10px Barlow Condensed,sans-serif;color:var(--ink-3);border-left:1px solid var(--line-soft);padding-left:3px;white-space:nowrap}.tlhead .wk{position:absolute;top:28px;font:400 9px IBM Plex Mono,monospace;color:var(--ink-3)}.tlbody{position:relative;height:100%;min-height:var(--row-h)}.tlbody .bar{position:absolute;top:50%;transform:translateY(-50%);height:11px;border-radius:2px;background:var(--bar);min-width:3px}.tlbody .bar.done{background:var(--bar-done)}.tlbody .bar.milestone{width:11px;height:11px;border-radius:1px;background:var(--jalon);transform:translateY(-50%) rotate(45deg)}.tlbody .bar.edited{outline:1.5px solid var(--warn);outline-offset:1px}.today{position:absolute;top:0;bottom:0;width:1px;background:var(--jalon);opacity:.55;z-index:1}.empty{padding:48px 20px;text-align:center;color:var(--ink-2)}.drop{border:2px dashed var(--line);border-radius:var(--radius);padding:34px 20px;text-align:center;background:var(--surface);cursor:pointer}.drop.over{border-color:var(--accent);background:var(--accent-soft)}table.plain{width:100%;border-collapse:collapse}table.plain th{text-align:left;font:600 11px Barlow Condensed,sans-serif;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3);padding:6px 8px;border-bottom:1px solid var(--line)}table.plain td{padding:5px 8px;border-bottom:1px solid var(--line-soft)}@media (max-width: 760px){.topbar{gap:12px}.gridscroll{max-height:none}}@media (prefers-reduced-motion: no-preference){.gridrow{transition:background .12s}}:root{--st-retard: #c8304b;--st-menace: #c97a16;--st-cours: #4b81ad;--st-avenir: #8d93a3;--st-fini: #3f8a44}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--st-retard: #f0708a;--st-menace: #e8ab55;--st-cours: #6fb6dc;--st-avenir: #7c8397;--st-fini: #89d777}}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--st-cours)}.dot.enRetard{background:var(--st-retard)}.dot.menace{background:var(--st-menace)}.dot.aVenir{background:var(--st-avenir)}.dot.termine{background:var(--st-fini)}.dot.enRetard{box-shadow:0 0 0 2.5px color-mix(in srgb,var(--st-retard) 28%,transparent)}.stat b.enRetard{color:var(--st-retard)}.stat b.menace{color:var(--st-menace)}.stat b.termine{color:var(--st-fini)}button.stat.tap{border:0;background:none;padding:2px 6px;margin:-2px -6px;border-radius:var(--radius);cursor:pointer;text-align:left;font:inherit}button.stat.tap:hover{background:var(--surface-2)}button.stat.tap.on{background:var(--accent-soft)}.gauge{position:relative;display:inline-flex;justify-content:flex-end;align-items:center;width:100%;height:17px;padding:0 4px;border-radius:3px;background:var(--surface-2);overflow:hidden}.gauge .fill{position:absolute;left:0;top:0;bottom:0;background:color-mix(in srgb,var(--st-cours) 34%,transparent)}.gauge .fill.enRetard{background:color-mix(in srgb,var(--st-retard) 34%,transparent)}.gauge .fill.menace{background:color-mix(in srgb,var(--st-menace) 36%,transparent)}.gauge .fill.aVenir{background:color-mix(in srgb,var(--st-avenir) 28%,transparent)}.gauge .fill.termine{background:color-mix(in srgb,var(--st-fini) 34%,transparent)}.gauge .num{position:relative;font-size:11.5px}.gauge .pc{position:relative;font-size:10.5px;color:var(--ink-3);padding-left:1px}.tlbody .bar.enRetard{background:var(--st-retard)}.tlbody .bar.menace{background:var(--st-menace)}.tlbody .bar.enCours{background:var(--st-cours)}.tlbody .bar.aVenir{background:var(--st-avenir)}.tlbody .bar.termine{background:var(--st-fini)}.chip.risque{background:color-mix(in srgb,var(--st-retard) 16%,transparent);color:var(--st-retard)}.chip.lot{background:var(--accent-soft);color:var(--accent)}.num.soft{color:var(--ink-2)}.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;margin-bottom:14px}.panel>summary{cursor:pointer;font-weight:600;font-size:13px;display:flex;align-items:center;gap:8px}.panel .hint{font-size:12.5px;color:var(--ink-2);margin:8px 0;max-width:78ch}.lots{list-style:none;margin:10px 0;padding:0;display:flex;flex-direction:column;gap:6px}.lots li{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--line-soft);border-radius:var(--radius);background:var(--surface-2)}.lots .members{flex:1;font-size:12px;color:var(--ink-2)}.pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:4px;max-height:240px;overflow:auto;padding:8px;border:1px solid var(--line-soft);border-radius:var(--radius)}.pick label{display:flex;align-items:center;gap:7px;padding:3px 6px;border-radius:4px;cursor:pointer;font-size:12.5px}.pick label:hover{background:var(--surface-2)}.pick label.on{background:var(--accent-soft)}.pick label .txt{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pick.courte{grid-template-columns:repeat(auto-fill,minmax(112px,1fr));max-height:168px}button.ghost{background:none;border:1px solid var(--line);color:var(--ink-2);padding:3px 9px;border-radius:var(--radius);cursor:pointer;font-size:12.5px}button.ghost:hover{border-color:var(--accent);color:var(--accent)}.gridrow{background:var(--surface)}.gridrow.phasebreak{border-top:1px solid var(--line)}.gridrow.phasebreak .left{border-top:1px solid var(--line);margin-top:-1px}.gauge input.pct{position:relative;width:100%;min-width:0;border:0;background:none;padding:0 2px;text-align:right;color:inherit;font:inherit;font-size:11.5px;font-family:IBM Plex Mono,ui-monospace,monospace;font-variant-numeric:tabular-nums;-moz-appearance:textfield}.gauge input.pct::-webkit-outer-spin-button,.gauge input.pct::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.gauge input.pct:focus{outline:1.5px solid var(--accent);outline-offset:0;border-radius:3px}.gauge:hover input.pct{background:color-mix(in srgb,var(--surface) 60%,transparent)}.lots li.on{border-color:var(--accent);background:var(--accent-soft)}.lots li.on>b{color:var(--accent)}.porte{display:grid;place-items:center;min-height:60vh}.porte .carte{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:26px 28px;max-width:520px;width:100%}.porte h1{margin:0 0 10px;font-size:19px}.porte .hint{font-size:13px;color:var(--ink-2);margin:10px 0}.porte .toolbar{margin-top:14px}.chip.role{background:var(--accent-soft);color:var(--ink);white-space:nowrap}.journee{margin:18px 0 26px}.journee h2{margin:0 0 6px;font:600 13px Barlow Condensed,Barlow,sans-serif;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-2);display:flex;align-items:center;gap:8px}.changement{display:flex;align-items:center;gap:7px;white-space:nowrap}.changement .avant{color:var(--ink-3);text-decoration:line-through}.changement .fleche{color:var(--ink-3)}.changement .apres{font-weight:600}.chip.saisie{background:var(--accent-soft)}.chip.import{background:color-mix(in srgb,var(--st-menace) 18%,var(--surface))}.decalages{max-height:460px;overflow:auto;border:1px solid var(--line-soft);border-radius:var(--radius)}.decalages table.plain th{position:sticky;top:0;background:var(--surface);z-index:1}.decalages tr.refuse td{opacity:.45}.decalages tr.refuse .txt{text-decoration:line-through}.decalages .chip.saisie{margin-left:8px;font-size:10.5px}.formulaire{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;margin:10px 0}.formulaire.etroit label{min-width:210px}.formulaire label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--ink-2)}.formulaire input{min-width:210px}.porte .formulaire{flex-direction:column;align-items:stretch}.porte .formulaire button{margin-top:4px}a.chip.role{text-decoration:none;cursor:pointer}a.chip.role:hover{background:var(--accent);color:var(--accent-ink)}.gridrow.phase{background:color-mix(in srgb,var(--accent) 6%,var(--surface))}.gridrow.phase .left{border-top:1px solid var(--line)}.gridrow.phase .txt{font:600 11px Barlow Condensed,Barlow,sans-serif;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2);padding-left:14px}.chip.ajout{background:color-mix(in srgb,var(--st-cours) 22%,var(--surface))}:root{--ph-etudes: #7a68d4;--ph-appro: #0d8fb5;--ph-travaux: #2a4a9e;--ph-essais: #8e2d78;--ph-recolement: #8490a8;--ph-force: 22%;--ph-titre: 38%}.gridrow.cat-etudes{background:color-mix(in srgb,var(--ph-etudes) var(--ph-force),var(--surface))}.gridrow.cat-appro{background:color-mix(in srgb,var(--ph-appro) var(--ph-force),var(--surface))}.gridrow.cat-travaux{background:color-mix(in srgb,var(--ph-travaux) var(--ph-force),var(--surface))}.gridrow.cat-essais{background:color-mix(in srgb,var(--ph-essais) var(--ph-force),var(--surface))}.gridrow.cat-recolement{background:color-mix(in srgb,var(--ph-recolement) var(--ph-force),var(--surface))}.gridrow.phase.cat-etudes{background:color-mix(in srgb,var(--ph-etudes) var(--ph-titre),var(--surface))}.gridrow.phase.cat-appro{background:color-mix(in srgb,var(--ph-appro) var(--ph-titre),var(--surface))}.gridrow.phase.cat-travaux{background:color-mix(in srgb,var(--ph-travaux) var(--ph-titre),var(--surface))}.gridrow.phase.cat-essais{background:color-mix(in srgb,var(--ph-essais) var(--ph-titre),var(--surface))}.gridrow.phase.cat-recolement{background:color-mix(in srgb,var(--ph-recolement) var(--ph-titre),var(--surface))}.gridrow[class*=cat-]:hover,.gridrow[class*=cat-]:hover .left{background:color-mix(in srgb,var(--ink) 7%,var(--surface))}:root{--site-fond: #2f3548;--site-encre: #f4f6fb}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--site-fond: #9aa3b8;--site-encre: #151821}}:root[data-theme=dark]{--site-fond: #9aa3b8;--site-encre: #151821}.gridrow.group,.gridrow.group .left{background:var(--site-fond);color:var(--site-encre)}.gridrow.group .left{border-right-color:color-mix(in srgb,var(--site-encre) 25%,transparent)}.gridrow.group .chip{background:color-mix(in srgb,var(--site-encre) 18%,transparent);color:var(--site-encre)}.gridrow.group .chip.risque{background:color-mix(in srgb,var(--st-retard) 45%,transparent);color:var(--site-encre)}
