/* Style de l'application. Palette provisoire et sobre (bois, ivoire, un * accent vert), en attendant l'identité définitive : toutes les couleurs et * tailles sont des variables, redéfinies pour le thème sombre. */ :root { --text: #2b211a; --muted: #6b5d50; --background: #f7f2e8; --accent: #2e6b4f; --on-accent: #ffffff; --border: #cbbfae; --error: #a3261b; --frame: #6b4426; --bed: #e6cfa6; --bar: #5c3a20; --tray: #57371e; --point-a: #9a6439; --point-b: #c79b69; --point-number: #f3e7d0; --checker-player: #fbf6ea; --checker-player-edge: #7d6a52; --checker-computer: #2b221c; --checker-computer-edge: #0d0a08; --count-player: #2b211a; --count-computer: #fbf6ea; --die-player: #fbf6ea; --pip-player: #2b211a; --die-computer: #2b221c; --pip-computer: #fbf6ea; --cube: #fbf6ea; --cube-text: #2b211a; --highlight: #2e6b4f; --target: rgba(46, 107, 79, 0.35); --last-move: #d9822b; --font-size: 17px; --button-height: 48px; --radius: 8px; --page-width: 40rem; } @media (prefers-color-scheme: dark) { :root { --text: #ece4d6; --muted: #b3a796; --background: #1b1714; --accent: #6fc3a0; --on-accent: #10221a; --border: #4d443b; --error: #f08a7e; --frame: #3a2616; --bed: #6d5136; --bar: #2f1f12; --tray: #2c1d11; --point-a: #4a3120; --point-b: #8b6943; --point-number: #d9cbb4; --checker-player: #efe6d2; --checker-player-edge: #8e7c64; --checker-computer: #17110d; --checker-computer-edge: #a8957d; --highlight: #7fd6b0; --target: rgba(127, 214, 176, 0.35); --last-move: #f0a050; } } * { box-sizing: border-box; } body { margin: 0 auto; max-width: var(--page-width); padding: 0 0.5rem 1rem; font: var(--font-size) / 1.45 system-ui, sans-serif; color: var(--text); background: var(--background); } [hidden] { display: none !important; } .topbar { display: flex; gap: 0.5rem; align-items: center; padding: 0.5rem 0; } .topbar h1 { flex: 1; margin: 0; font-size: 1.25rem; } button { min-height: var(--button-height); padding: 0 1rem; font: inherit; font-weight: 600; color: var(--on-accent); background: var(--accent); border: 1px solid var(--accent); border-radius: var(--radius); } button.secondary { color: var(--text); background: transparent; border-color: var(--border); } .topbar button { min-height: 40px; padding: 0 0.75rem; font-size: 0.9rem; } button:disabled { opacity: 0.45; } .actions { display: flex; flex-wrap: wrap; gap: 0.5rem; } .actions button { flex: 1; } .pips { margin: 0.25rem 0 0; font-size: 0.85rem; color: var(--muted); text-align: center; } .info, .prompt { min-height: 1.45em; margin: 0.4rem 0; } .info { color: var(--muted); } .prompt { font-weight: 600; } /* L'ordinateur réfléchit : trois points qui apparaissent l'un après l'autre. */ .prompt.thinking::after { content: ""; animation: thinking 1.2s steps(4, end) infinite; } @keyframes thinking { 0% { content: ""; } 25% { content: "."; } 50% { content: ".."; } 75% { content: "..."; } } /* ------------------------------------------------------------ Plateau */ .board { display: block; width: 100%; height: auto; aspect-ratio: 640 / 520; user-select: none; -webkit-tap-highlight-color: transparent; } .board-frame { fill: var(--frame); } .board-bed { fill: var(--bed); } .board-bar { fill: var(--bar); } .board-tray { fill: var(--tray); } .point-a { fill: var(--point-a); } .point-b { fill: var(--point-b); } .point-number { fill: var(--muted); font-size: 13px; text-anchor: middle; } .checker { stroke-width: 2; } .checker-player { fill: var(--checker-player); stroke: var(--checker-player-edge); } .checker-computer { fill: var(--checker-computer); stroke: var(--checker-computer-edge); } .checker.movable { stroke: var(--highlight); stroke-width: 4; } .checker.selected { stroke: var(--highlight); stroke-width: 7; } .checker-count { font-size: 18px; font-weight: 700; text-anchor: middle; } .count-player { fill: var(--count-player); } .count-computer { fill: var(--count-computer); } .target-zone { fill: var(--target); } .last-move { fill: var(--last-move); } .die-player { fill: var(--die-player); stroke: var(--checker-player-edge); } .die-computer { fill: var(--die-computer); stroke: var(--checker-computer-edge); } .pip-player { fill: var(--pip-player); } .pip-computer { fill: var(--pip-computer); } .cube-face { fill: var(--cube); stroke: var(--checker-player-edge); stroke-width: 2; } .cube-value { fill: var(--cube-text); font-size: 17px; font-weight: 700; text-anchor: middle; } .hit { fill: transparent; cursor: pointer; } /* --------------------------------------------------------------- Aide */ .help h2 { margin-top: 1.5rem; font-size: 1.2rem; } .help h3 { margin-bottom: 0.25rem; font-size: 1rem; } .steps { padding-left: 1.25rem; } .glossary dt { margin-top: 0.6rem; font-weight: 600; } .glossary dd { margin: 0; } .about { margin-top: 2rem; font-size: 0.85rem; color: var(--muted); } .about a { color: var(--accent); }