:root{--osmose-earth:#b07a45;--osmose-fire:#ef4b4b;--osmose-water:#3d9cff;--osmose-air:#52c45a;--osmose-lightning:#f2d03b;--osmose-ice:#8fe0f5;--osmose-mud:#8c7a3a;--osmose-magma:#ff7a2e;--osmose-steam:#c3a6e0;--osmose-sand:#d6bc84;--osmose-ether:#b8c4ff;--osmose-ash:#a89f98;--osmose-sap:#9ccc3d;--osmose-salt:#eef2f5;--osmose-heal:#ff7eb6;--osmose-shield:#a9c7e8;--osmose-melee:#e8a33d;--osmose-distance:#6bb8f2;--osmose-support:#ff7eb6;--osmose-terrain:#c9a27f;--osmose-tempo:#b48cff;--osmose-alchemy:#4fd1c5;--osmose-taken-fill:#33421f;--osmose-open:#e0e0e0;--osmose-open-fill:#262626;--osmose-excluded:#e07060;--osmose-excluded-fill:#2a1f1f;--osmose-locked:#8a8a8a;--osmose-locked-fill:#202020;--osmose-out-of-level:#5c5c5c;--osmose-out-of-level-fill:#1d1d1d;--osmose-coming:#6a6a6a;--osmose-losing:#f08070;--osmose-losing-fill:#3a2424;--osmose-ground:#1b1b1b;--osmose-cost:#f2d36b;--osmose-wood:#7a5434;--osmose-wood-light:#a8794f;--osmose-wood-dark:#3a2616;--osmose-map-woods:#6fae5a;--osmose-map-mouldy:#8f9862;--osmose-map-lake:#72bd7c;--osmose-map-fields:#c4c76a;--osmose-map-ancestors:#4f7f48;--osmose-map-town:#d9c39a;--osmose-map-sea:#3f86c4;--osmose-map-sea-deep:#2a5f94;--osmose-map-shore:#e8d9a8;--osmose-map-coast:#1d4a75;--osmose-map-tree:#2e6b3a;--osmose-map-road:#e6e1d2;--osmose-map-label:#f0e6cc;--osmose-ui-window:#1f1f1f;--osmose-ui-hud:#1b1b1ceb;--osmose-ui-titlebar:#181818;--osmose-ui-frame:#7a5434;--osmose-ui-frame-dark:#3a2616;--osmose-ui-raised-top:#3a3a3d;--osmose-ui-raised-bottom:#262628;--osmose-ui-raised-hover-top:#46464a;--osmose-ui-raised-hover-bottom:#2e2e31;--osmose-ui-edge:#0d0d0d;--osmose-ui-primary-top:#d4f79e;--osmose-ui-primary-bottom:#a3d95a;--osmose-ui-lit-top:#3d4f24;--osmose-ui-lit-bottom:#25301a;--osmose-ui-well:#141414;--osmose-ui-gold-top:#ffe6ab;--osmose-ui-gold:#ffd166;--osmose-ui-gold-bottom:#c9962e;--osmose-ui-gold-text:#3a2410;--osmose-ui-text:#ccc;--osmose-ui-text-strong:#e0e0e0;--osmose-ui-text-dim:#9d9d9d;--osmose-ui-text-off:#6a6a6a;--osmose-ui-hover:#2d2d2d;--osmose-ui-tab:#252526;--osmose-ui-tooltip:#181818f7;--osmose-ui-close-hover:#3a2424;--osmose-ui-close-hover-text:#f08070;--osmose-ui-scroll:#4a4a4a;--osmose-ui-scroll-hover:#6a6a6a;--pistache:#bef374;--pistache-pale:#e6f8c9;--chocolat:#5a3a22;--chocolat-clair:#c9a27f;--bambou:#4d7a1c;--gris-titre:#181818;--gris-fond:#1f1f1f;--gris-panneau:#252526;--gris-survol:#2d2d2d;--gris-texte:#ccc;--gris-discret:#9d9d9d;--bg:var(--gris-fond);--header-bg:var(--gris-titre);--surface:var(--gris-panneau);--surface-2:var(--gris-survol);--text:var(--gris-texte);--text-strong:#fff;--muted:var(--gris-discret);--border:#ffffff1a;--border-strong:#ffffff3d;--link:var(--pistache);--accent:var(--pistache);--on-accent:var(--chocolat);--pressed-bg:var(--pistache);--pressed-text:var(--chocolat);--seal-bg:var(--pistache);--seal-text:var(--chocolat);--dot:var(--chocolat-clair);--gantt-build:var(--chocolat-clair);--tag-bg:#bef3741f;--tag-text:var(--pistache-pale);--bar:var(--pistache);--chart-series:var(--pistache);--chart-ref:var(--gris-discret);--chart-grid:#ffffff1a;--risk-high:#f28c6e38;--risk-high-text:#ffc7b5;--risk-medium:#f6d26e33;--risk-medium-text:#f8dd96;--risk-low:#bef37429;--risk-low-text:#d4f5a4;--oth-felt:#2e7d32;--oth-line:#1b5e20;--oth-black:#111;--oth-white:#f5f5f5;--oth-hint:#c8e6c9;--oth-last:#ffb300;--oth-black-shade:#ffffff26;--oth-white-shade:#0003;--gm-paper:#fff;--gm-face-stroke:#9d9d9d;--gm-label:#5f5f5f;--gm-ink:#1f1f1f;--gm-a0:#1f1f1f;--gm-a1:#c62828;--gm-a2:#1565c0;--gm-orbit:#4d7a1c;--gm-current:#e65100;--curv-neg:#3987e5;--curv-zero:#a3a39f;--curv-pos:#e66767;--elev-low:#5a3a22;--elev-high:#bef374;--crit-min:#3987e5;--crit-saddle:#ffb300;--crit-max:#e66767;--axis-x:#e53935;--axis-y:#43a047;--axis-z:#1e88e5;--tl-red:#e53935;--tl-amber:#ffb300;--tl-green:#43a047;--tl-off:#3a3a3a;--tl-housing:#111;--tl-road:#4a4a4a;--tl-marking:#e0e0e0;--tl-car:#c9a27f;--font-display:"Zen Maru Gothic", "Inter", system-ui, sans-serif;--font-body:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--radius:10px;--radius-lg:16px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:40px;--space-7:64px;--maxw:1080px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--chart-series:var(--bambou);--chart-ref:#616161;--chart-grid:#0000001a;--bg:#fff;--header-bg:#f8f8f8;--surface:#f8f8f8;--surface-2:#ececec;--text:#3b3b3b;--text-strong:#1f1f1f;--muted:#616161;--border:#0000001f;--border-strong:#0000004d;--link:var(--bambou);--pressed-bg:var(--chocolat);--pressed-text:#fff;--seal-bg:var(--chocolat);--seal-text:var(--pistache);--dot:var(--chocolat);--gantt-build:var(--chocolat);--tag-bg:var(--pistache-pale);--tag-text:var(--chocolat);--risk-high:#f2c4b4;--risk-high-text:#7a2410;--risk-medium:#f6e2a6;--risk-medium-text:#6b4a05;--risk-low:var(--pistache-pale);--risk-low-text:#2f5210;--curv-neg:#2a78d6;--curv-pos:#e34948;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font:16px/1.6 var(--font-body);margin:0}h1,h2,h3{color:var(--text-strong);font-family:var(--font-display);line-height:1.25}h1{margin:var(--space-5) 0 var(--space-2);font-size:clamp(1.7rem,4vw,2.4rem)}h2{margin:var(--space-6) 0 var(--space-3);font-size:1.5rem}h3{margin:var(--space-5) 0 var(--space-2);font-size:1.15rem}a{color:var(--link)}a:focus-visible,button:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.wrap{max-width:var(--maxw);padding:0 var(--space-4);margin:0 auto}.lead{font-size:1.1rem}.muted{color:var(--muted)}.top{background:var(--header-bg);border-bottom:1px solid var(--border)}.top-inner{justify-content:space-between;align-items:center;gap:var(--space-2);padding-top:var(--space-2);padding-bottom:var(--space-2);flex-wrap:wrap;display:flex}.top-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.back,.btn,.tabs a,select{align-items:center;min-height:44px;display:inline-flex}.btn{padding:0 var(--space-4);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text-strong);font:inherit;cursor:pointer;text-decoration:none}.btn:hover{background:var(--surface-2)}.tabs{gap:var(--space-2);border-bottom:1px solid var(--border);margin:var(--space-5) 0 0;flex-wrap:wrap;display:flex}.tabs a{padding:0 var(--space-4);color:var(--text);border-bottom:3px solid #0000;text-decoration:none}.tabs a[aria-current=page]{color:var(--text-strong);border-bottom-color:var(--accent);font-weight:600}.notice{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);padding:var(--space-4);margin:var(--space-5) 0}.notice h2{margin-top:0}.filters{align-items:center;gap:var(--space-2) var(--space-3);margin:var(--space-4) 0;flex-wrap:wrap;display:flex}select{padding:0 var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text-strong);font:inherit;max-width:100%}.meter{width:100%;height:12px;accent-color:var(--bar)}.cards{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));padding:0;list-style:none;display:grid}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4);flex-direction:column;display:flex}.card h3{margin-top:0}.card p{margin:0 0 var(--space-3)}.badges{gap:var(--space-2) var(--space-3);flex-wrap:wrap;font-size:.9rem;display:flex}.badge{padding:0 var(--space-2);border-radius:var(--radius);background:var(--tag-bg);color:var(--tag-text);font-weight:600}.badge.status-done{background:var(--pressed-bg);color:var(--pressed-text)}.badge.status-planned{background:var(--surface-2);color:var(--muted)}.tags{gap:var(--space-1);flex-wrap:wrap;display:flex}.tag{padding:0 var(--space-2);border-radius:var(--radius);background:var(--surface-2);color:var(--text);font-size:.8rem}.links{gap:var(--space-4);display:flex;margin-top:auto!important}.links a{align-items:center;min-height:44px;display:inline-flex}.chart-figure{margin:0 0 var(--space-6)}.chart-wrap,.table-wrap{max-width:100%;overflow-x:auto}.chart{width:100%;min-width:560px;height:auto;display:block}.chart text{font-family:var(--font-body)}.chart-tick{fill:var(--muted);font-size:12px}.chart-axis{fill:var(--muted);font-size:13px}.chart-label{fill:var(--text-strong);font-size:13px;font-weight:600}.chart-grid{stroke:var(--chart-grid)}.chart-bar{fill:var(--chart-series)}.chart-hit:hover .chart-bar{opacity:.8}.chart-line{fill:none;stroke-width:2.5px}.series-0 .chart-line{stroke:var(--chart-series)}.series-0 .chart-dot{fill:var(--chart-series)}.series-1 .chart-line{stroke:var(--dot);stroke-dasharray:8 5}.series-1 .chart-dot{fill:var(--dot)}.series-2 .chart-line{stroke:var(--chart-ref);stroke-dasharray:2 4}.series-2 .chart-dot{fill:var(--chart-ref)}table{border-collapse:collapse;width:100%;margin:var(--space-3) 0;font-variant-numeric:tabular-nums}th,td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);text-align:left}thead th{color:var(--text-strong)}.num{text-align:right;white-space:nowrap}.stat{color:var(--text-strong);font-size:1.6rem}.goals div{margin-bottom:var(--space-3)}.goals dt{color:var(--text-strong);font-weight:600}.goals dd{margin:0}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.viewer-controls{gap:var(--space-2);margin:var(--space-4) 0;flex-wrap:wrap;display:flex}.btn[aria-pressed=true]{background:var(--pressed-bg);color:var(--pressed-text);border-color:var(--pressed-bg)}.btn.file{position:relative}.btn.file input{opacity:0;cursor:pointer;position:absolute;inset:0}.btn.file:focus-within{outline:2px solid var(--accent);outline-offset:2px}.viewer-stage{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);position:relative;overflow:hidden}.viewer-stage canvas{aspect-ratio:4/3;touch-action:none;width:100%;max-height:70vh;display:block}.viewer-stage .notice{border:0;margin:0}.viewer-tip{pointer-events:none;background:var(--header-bg);color:var(--text-strong);border:1px solid var(--border-strong);border-radius:var(--radius);padding:2px var(--space-2);white-space:nowrap;font-size:.85rem;position:absolute}.legend{margin:var(--space-4) 0}.legend-bar{background:linear-gradient(to right, var(--curv-neg), var(--curv-zero), var(--curv-pos));border-radius:6px;height:12px}.legend-ticks{justify-content:space-between;gap:var(--space-2);margin-top:var(--space-1);flex-wrap:wrap;font-size:.85rem;display:flex}.invariants{gap:var(--space-2) var(--space-4);grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));display:grid}.invariants div{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-2) var(--space-3)}.invariants dt{color:var(--muted);font-size:.85rem}.invariants dd{color:var(--text-strong);font-variant-numeric:tabular-nums;margin:0;font-weight:600}
