: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: #cccccc;--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: #cccccc;--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: #ffffff;--muted: var(--gris-discret);--border: rgba(255, 255, 255, .1);--border-strong: rgba(255, 255, 255, .24);--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: rgba(190, 243, 116, .12);--tag-text: var(--pistache-pale);--bar: var(--pistache);--chart-series: var(--pistache);--chart-ref: var(--gris-discret);--chart-grid: rgba(255, 255, 255, .1);--risk-high: rgba(242, 140, 110, .22);--risk-high-text: #ffc7b5;--risk-medium: rgba(246, 210, 110, .2);--risk-medium-text: #f8dd96;--risk-low: rgba(190, 243, 116, .16);--risk-low-text: #d4f5a4;--oth-felt: #2e7d32;--oth-line: #1b5e20;--oth-black: #111111;--oth-white: #f5f5f5;--oth-hint: #c8e6c9;--oth-last: #ffb300;--oth-black-shade: rgba(255, 255, 255, .15);--oth-white-shade: rgba(0, 0, 0, .2);--gm-paper: #ffffff;--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: #111111;--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;color-scheme:dark}:root[data-theme=light]{--chart-series: var(--bambou);--chart-ref: #616161;--chart-grid: rgba(0, 0, 0, .1);--bg: #ffffff;--header-bg: #f8f8f8;--surface: #f8f8f8;--surface-2: #ececec;--text: #3b3b3b;--text-strong: #1f1f1f;--muted: #616161;--border: rgba(0, 0, 0, .12);--border-strong: rgba(0, 0, 0, .3);--link: var(--bambou);--pressed-bg: var(--chocolat);--pressed-text: #ffffff;--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;color-scheme:light}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.6 var(--font-body)}h1,h2,h3{color:var(--text-strong);font-family:var(--font-display);line-height:1.25}h1{font-size:clamp(1.7rem,4vw,2.4rem);margin:var(--space-5) 0 var(--space-2)}h2{font-size:1.5rem;margin:var(--space-6) 0 var(--space-3)}h3{font-size:1.15rem;margin:var(--space-5) 0 var(--space-2)}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);margin:0 auto;padding:0 var(--space-4)}.lead{font-size:1.1rem}.muted{color:var(--muted)}.top{background:var(--header-bg);border-bottom:1px solid var(--border)}.top-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2);padding-top:var(--space-2);padding-bottom:var(--space-2)}.top-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.back,.btn,.tabs a,select{min-height:44px;display:inline-flex;align-items:center}.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;text-decoration:none;cursor:pointer}.btn:hover{background:var(--surface-2)}.tabs{display:flex;flex-wrap:wrap;gap:var(--space-2);border-bottom:1px solid var(--border);margin:var(--space-5) 0 0}.tabs a{padding:0 var(--space-4);color:var(--text);text-decoration:none;border-bottom:3px solid transparent}.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{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);margin:var(--space-4) 0}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{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:var(--space-4)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4);display:flex;flex-direction:column}.card h3{margin-top:0}.card p{margin:0 0 var(--space-3)}.badges{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-3);font-size:.9rem}.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{display:flex;flex-wrap:wrap;gap:var(--space-1)}.tag{font-size:.8rem;padding:0 var(--space-2);border-radius:var(--radius);background:var(--surface-2);color:var(--text)}.links{margin-top:auto!important;display:flex;gap:var(--space-4)}.links a{min-height:44px;display:inline-flex;align-items:center}.chart-figure{margin:0 0 var(--space-6)}.chart-wrap,.table-wrap{overflow-x:auto;max-width:100%}.chart{display:block;width:100%;min-width:560px;height:auto}.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.5}.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{font-size:1.6rem;color:var(--text-strong)}.goals div{margin-bottom:var(--space-3)}.goals dt{font-weight:600;color:var(--text-strong)}.goals dd{margin:0}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.viewer-controls{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:var(--space-4) 0}.btn[aria-pressed=true]{background:var(--pressed-bg);color:var(--pressed-text);border-color:var(--pressed-bg)}.btn.file{position:relative}.btn.file input{position:absolute;inset:0;opacity:0;cursor:pointer}.btn.file:focus-within{outline:2px solid var(--accent);outline-offset:2px}.viewer-stage{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.viewer-stage canvas{display:block;width:100%;aspect-ratio:4 / 3;max-height:70vh;touch-action:none}.viewer-stage .notice{margin:0;border:0}.viewer-tip{position:absolute;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);font-size:.85rem;white-space:nowrap}.legend{margin:var(--space-4) 0}.legend-bar{height:12px;border-radius:6px;background:linear-gradient(to right,var(--curv-neg),var(--curv-zero),var(--curv-pos))}.legend-ticks{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-2);font-size:.85rem;margin-top:var(--space-1)}.invariants{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));gap:var(--space-2) var(--space-4)}.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{margin:0;color:var(--text-strong);font-weight:600;font-variant-numeric:tabular-nums}
