:root{color-scheme:dark light;--color-bg: #15120f;--color-surface: #1f1a14;--color-surface-raised: #241f19;--color-text: #ece4d3;--color-divider: color-mix(in srgb, #ece4d3 16%, transparent);--color-accent: #b8935a;--color-accent-100: #f7ecd8;--color-accent-200: #eeddb9;--color-accent-300: #e0c690;--color-accent-400: #cba766;--color-accent-500: #b8935a;--color-accent-600: #8f7043;--color-accent-700: #6b5432;--color-accent-800: #493a22;--color-accent-900: #2e2415;--color-neutral-100: #f4efe6;--color-neutral-200: #e3dccd;--color-neutral-300: #c9c0ae;--color-neutral-400: #aaa08c;--color-neutral-500: #8b8271;--color-neutral-600: #6d6558;--color-neutral-700: #524c42;--color-neutral-800: #3a352d;--color-neutral-900: #241f19;--color-danger: #c4574c;--color-danger-dim: #7a332c;--color-warning: #c9903f;--color-success: #7a9a5e;--shadow-sm: 0 0 0 1px #3a352d;--shadow-md: 0 0 0 1px #524c42, 0 6px 18px rgba(0, 0, 0, .6);--shadow-lg: 0 0 0 1px #6d6558, 0 16px 40px rgba(0, 0, 0, .7);--radius-sm: 4px;--radius-md: 8px;--radius-lg: 14px;--radius-full: 999px;--space-1: 4px;--space-2: 6px;--space-3: 8px;--space-4: 12px;--space-6: 16px;--space-8: 24px;--space-12: 32px;--font-body: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-heading: Georgia, "Iowan Old Style", "Palatino Linotype", serif;--font-mono: ui-monospace, "SF Mono", Menlo, monospace;--font-heading-weight: 500;--text-xs: 11px;--text-sm: 13px;--text-base: 15px;--text-md: 17px;--text-lg: 21px;--text-xl: 27px;--text-2xl: 34px;--text-hero: 56px;--leading-tight: 1.2;--leading-normal: 1.5;--touch-min: 48px;--touch-gap: 8px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--tabbar-height: 60px;--motion-fast: .12s;--motion-base: .18s;--motion-slow: .26s;--ease: cubic-bezier(.2, 0, .2, 1)}@media(prefers-color-scheme:light){:root:not([data-theme=dark]){--color-bg: #f7f3ec;--color-surface: #fffdf9;--color-surface-raised: #ffffff;--color-text: #201b15;--color-divider: color-mix(in srgb, #201b15 14%, transparent);--color-accent: #7a5c2e;--color-accent-100: #2e2415;--color-accent-200: #493a22;--color-accent-300: #6b5432;--color-accent-400: #8f7043;--color-accent-500: #a07c47;--color-accent-600: #b8935a;--color-accent-700: #cba766;--color-accent-800: #e0c690;--color-accent-900: #f7ecd8;--color-neutral-100: #241f19;--color-neutral-200: #3a352d;--color-neutral-300: #524c42;--color-neutral-400: #6d6558;--color-neutral-500: #8b8271;--color-neutral-600: #aaa08c;--color-neutral-700: #c9c0ae;--color-neutral-800: #e3dccd;--color-neutral-900: #f4efe6;--color-danger: #9e3b31;--color-danger-dim: #d9a49e;--shadow-sm: 0 0 0 1px #e3dccd;--shadow-md: 0 0 0 1px #ddd6cc, 0 6px 18px rgba(60, 45, 25, .12);--shadow-lg: 0 0 0 1px #ccc3b5, 0 16px 40px rgba(60, 45, 25, .18)}}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}@media(prefers-reduced-motion:reduce){:root{--motion-fast: 0ms;--motion-base: 0ms;--motion-slow: 0ms}}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;overscroll-behavior-y:none}body{background:#0c0a08;color:var(--color-text);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased}@media(prefers-color-scheme:light){body:has(>#root:not([data-theme=dark])){background:#e9e3d8}}button{font:inherit;color:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}.app-frame{display:flex;flex-direction:column;height:100dvh;background:var(--color-bg);overflow:hidden}@media(min-width:640px){body{display:flex;justify-content:center;padding:var(--space-8) 0}.app-frame{width:390px;height:min(844px,calc(100dvh - 48px));border-radius:20px;box-shadow:var(--shadow-lg)}}.app-header{flex:none;padding:calc(var(--safe-top) + 13px) var(--space-6) 11px}.app-scroll{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;padding:0 var(--space-6) var(--space-6);scrollbar-width:none}.app-scroll::-webkit-scrollbar{display:none}.rule{height:1px;border:0;margin:0;background:linear-gradient(90deg,transparent,var(--color-divider) 15%,var(--color-divider) 85%,transparent)}.tabbar{flex:none;display:flex;border-top:1px solid var(--color-divider);background:var(--color-bg);padding-bottom:var(--safe-bottom)}.tabbar button{flex:1;min-height:var(--touch-min);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:var(--space-3) 0;background:none;border:none;color:var(--color-neutral-600);font-size:var(--text-xs);transition:color var(--motion-fast) var(--ease)}.tabbar button[aria-current=page]{color:var(--color-accent)}.tabbar .tab-icon{font-size:20px;line-height:1}.card{background:var(--color-surface);border:1px solid var(--color-divider);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.card-accent{background:var(--color-accent-900);border-color:var(--color-accent-700)}.section-title{margin:0 0 var(--space-4);font-family:var(--font-heading);font-size:var(--text-sm);font-weight:400;letter-spacing:.11em;text-transform:uppercase;color:var(--color-neutral-500)}.section-title .step{color:var(--color-neutral-600)}.num{font-family:var(--font-heading);font-weight:700;font-variant-numeric:tabular-nums}.key{min-height:var(--touch-min);background:var(--color-surface);border:1px solid var(--color-divider);border-radius:var(--radius-sm);color:var(--color-text);font-size:var(--text-md);font-weight:600;transition:border-color var(--motion-fast) var(--ease),background var(--motion-fast) var(--ease)}.key:hover{border-color:var(--color-accent-600)}.key:active{background:var(--color-accent-800);border-color:var(--color-accent-500)}.key-sm{min-height:36px;font-size:var(--text-sm);font-weight:500;padding:0 var(--space-4)}.chip{display:inline-flex;align-items:center;justify-content:center;min-width:42px;height:42px;padding:0 var(--space-3);border-radius:var(--radius-sm);background:var(--color-accent-900);border:1px solid var(--color-accent-700);color:var(--color-accent-200);font-weight:700;font-size:var(--text-md)}.chip-critique{border-color:var(--color-accent-300);border-width:2px;color:var(--color-accent-100)}.chip-echec{background:transparent;border-color:var(--color-neutral-800);color:var(--color-neutral-500)}.modifier{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%;min-height:var(--touch-min);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-divider);background:transparent;color:var(--color-neutral-500);text-align:left;transition:border-color var(--motion-fast) var(--ease),background var(--motion-fast) var(--ease),color var(--motion-fast) var(--ease)}.modifier[aria-pressed=true]{border-color:var(--color-accent);background:var(--color-accent-900);color:var(--color-accent-200)}.modifier .delta{font-weight:700;font-variant-numeric:tabular-nums}.tag{display:inline-flex;align-items:center;padding:2px var(--space-3);border-radius:var(--radius-full);border:1px solid var(--color-divider);font-size:var(--text-xs);color:var(--color-neutral-400)}.tag-accent{border-color:var(--color-accent-700);background:var(--color-accent-900);color:var(--color-accent-200)}.stack{display:flex;flex-direction:column}.muted{color:var(--color-neutral-500)}.tabular{font-variant-numeric:tabular-nums}.serif{font-family:var(--font-heading)}.select-card{display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-4);color:var(--color-neutral-500)}.select-card select{flex:1;min-height:52px;background:transparent;border:none;color:var(--color-text);font:inherit;font-size:var(--text-base);font-weight:600;-webkit-appearance:none;-moz-appearance:none;appearance:none}.select-card select:focus{outline:none}.select-card:focus-within{border-color:var(--color-accent-600)}.formula-line{margin:var(--space-2) 0 0;text-align:right;font-size:var(--text-xs);color:var(--color-neutral-500)}.formula-line b{color:var(--color-text);font-size:var(--text-sm)}.predilection{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);width:100%;padding:var(--space-4);text-align:left;font-size:var(--text-sm);color:var(--color-accent-200);transition:opacity var(--motion-fast) var(--ease)}.predilection[aria-pressed=false]{opacity:.4}.predilection .gain{flex:none;text-align:right;font-weight:700;color:var(--color-accent-100)}.hero{text-align:center;padding:var(--space-8) var(--space-4);border-radius:var(--radius-lg)}.hero-label{font-family:var(--font-heading);font-size:var(--text-base);letter-spacing:.16em;color:var(--color-accent-300)}.hero-number{font-size:clamp(72px,24vw,96px);line-height:1;color:var(--color-accent-100);margin:var(--space-2) 0 0}.hero-number[data-impossible]{color:var(--color-danger);font-size:clamp(40px,13vw,52px)}.hero-unit{font-size:var(--text-md);color:var(--color-accent-200)}.hero-detail{margin-top:var(--space-3);font-size:var(--text-xs);color:var(--color-accent-400)}.hero-detail+.hero-detail{margin-top:2px}.row-between{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}.stepper{display:flex;align-items:center;gap:var(--space-4)}.stepper .key{width:var(--touch-min);font-size:var(--text-lg)}.stepper .num{min-width:26px;text-align:center;font-size:var(--text-lg)}.count-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3)}.count-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:84px;border-radius:var(--radius-md);border:1px solid var(--color-divider);background:var(--color-surface);transition:border-color var(--motion-fast) var(--ease)}.count-btn .num{font-size:var(--text-xl)}.count-label{font-size:var(--text-xs);color:var(--color-neutral-500)}.count-btn:active{border-color:var(--color-accent-500)}.count-reussite{background:var(--color-accent-900);border-color:var(--color-accent-700);color:var(--color-accent-200)}.count-critique{background:var(--color-accent-800);border-color:var(--color-accent-500);color:var(--color-accent-100)}.count-reussite .count-label,.count-critique .count-label{color:inherit;opacity:.75}.chip-row{display:flex;flex-wrap:wrap;gap:var(--space-2);min-height:44px;margin-bottom:var(--space-4)}.keypad{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--space-2)}.verdict{text-align:center;padding:var(--space-4)}.verdict-success{background:var(--color-accent-900);border-color:var(--color-accent-600)}.verdict-failure,.verdict-critical_failure{border-color:var(--color-danger-dim)}.verdict-detail{font-size:var(--text-sm);color:var(--color-neutral-400)}.verdict-detail.accent{color:var(--color-accent-300)}.verdict-label{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:700;letter-spacing:.06em;margin:2px 0}.verdict-success .verdict-label{color:var(--color-accent-100)}.verdict-failure .verdict-label,.verdict-critical_failure .verdict-label{color:var(--color-danger)}.field,.field-inline{display:flex;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-neutral-400)}.field{flex-direction:column;margin-bottom:var(--space-4)}.field-inline{align-items:center;justify-content:space-between;min-height:var(--touch-min);padding:0 var(--space-3);border-bottom:1px solid var(--color-divider)}.field-inline span{flex:1;min-width:0}input,select,textarea{min-height:var(--touch-min);padding:var(--space-3);background:var(--color-surface);border:1px solid var(--color-divider);border-radius:var(--radius-sm);color:var(--color-text);font:inherit;font-size:var(--text-base)}textarea{resize:vertical;font-family:inherit}.field-inline input{flex:none;width:68px;text-align:center;font-family:var(--font-heading);font-weight:700;font-variant-numeric:tabular-nums;font-size:var(--text-md)}input:focus,select:focus,textarea:focus{outline:2px solid var(--color-accent);outline-offset:1px;border-color:transparent}.grid-2{display:grid;grid-template-columns:1fr}.key-primary{background:var(--color-accent-800);border-color:var(--color-accent-500);color:var(--color-accent-100)}.key-primary:disabled{opacity:.5}.lien{background:none;border:none;color:var(--color-accent-300);font-size:var(--text-sm);text-decoration:underline;text-underline-offset:3px;min-height:var(--touch-min)}.alerte{margin:0;padding:var(--space-3) var(--space-4);border:1px solid var(--color-danger-dim);border-radius:var(--radius-sm);color:var(--color-danger);font-size:var(--text-sm)}.connexion{gap:var(--space-4);padding-top:var(--space-12)}.transcription{gap:var(--space-8);padding-block:var(--space-6) var(--space-12)}.transcription .intro{margin:0;font-size:var(--text-sm)}.petit{font-size:var(--text-xs)}.transcription section>.petit{margin:calc(-1 * var(--space-2)) 0 var(--space-4)}details.domaine{border:1px solid var(--color-divider);border-radius:var(--radius-md);margin-bottom:var(--space-3);padding:0 var(--space-3)}details.domaine>summary{display:flex;align-items:center;justify-content:space-between;min-height:var(--touch-min);cursor:pointer;font-weight:600;list-style:none}details.domaine>summary::-webkit-details-marker{display:none}details.domaine>summary:after{content:"⌄";color:var(--color-neutral-600);margin-left:var(--space-3)}details.domaine[open]>summary:after{content:"⌃"}details.domaine .field-inline:last-child{border-bottom:none}.ligne-equipement{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-2)}.avertissements{padding:var(--space-4);border-color:var(--color-warning)}.avertissements .titre{display:flex;align-items:center;gap:var(--space-2);color:var(--color-warning);font-size:var(--text-sm);font-weight:600}.avertissements ul{margin:var(--space-3) 0;padding-left:1.2em;font-size:var(--text-sm)}.avertissements li+li{margin-top:4px}.avertissements p{margin:0}.actions{display:flex;gap:var(--space-3)}.actions .key{flex:1}.centre{text-align:center}.origines{padding:var(--space-4);border-color:var(--color-accent-700);background:var(--color-accent-900)}.origines .titre{font-family:var(--font-heading);font-size:var(--text-sm);letter-spacing:.08em;text-transform:uppercase;color:var(--color-accent-300);margin-bottom:var(--space-3)}.origines dl{display:grid;grid-template-columns:1fr auto;gap:4px var(--space-4);margin:0 0 var(--space-3);font-size:var(--text-sm)}.origines dt{color:var(--color-accent-200)}.origines dd{margin:0;text-align:right;color:var(--color-accent-100)}.origines p{margin:0 0 var(--space-2);color:var(--color-accent-200)}.origines strong{color:var(--color-accent-100)}.fil-etapes{display:flex;gap:var(--space-2);margin:0;padding:var(--space-2) var(--space-1);list-style:none;overflow-x:auto;scrollbar-width:none}.fil-etapes::-webkit-scrollbar{display:none}.fil-pas{display:flex;align-items:center;gap:var(--space-2);min-height:36px;padding:0 var(--space-3);background:var(--color-surface);border:1px solid var(--color-divider);border-radius:var(--radius-full);color:var(--color-neutral-400);font:inherit;font-size:var(--text-xs);white-space:nowrap}.fil-num{display:grid;place-items:center;width:20px;height:20px;border-radius:var(--radius-full);background:var(--color-neutral-800);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.fil-complete{border-color:var(--color-accent-700);color:var(--color-accent-200)}.fil-complete .fil-num{background:var(--color-accent-700);color:var(--color-accent-100)}.fil-verrouillee{opacity:.45}.fil-courante{border-color:var(--color-accent-500);color:var(--color-text);box-shadow:var(--shadow-sm)}.bandeau{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--color-divider);border:1px solid var(--color-divider);border-radius:var(--radius-md);overflow:hidden}.bandeau-case{display:flex;flex-direction:column;gap:2px;padding:var(--space-3);background:var(--color-surface);text-align:center}.bandeau-label{font-family:var(--font-heading);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--color-neutral-500)}.bandeau-valeur{font-size:var(--text-xl);font-weight:700;color:var(--color-accent-200)}.bandeau-valeur.negatif,.compteur.negatif,.total.negatif{color:var(--color-danger)}.etape-corps{padding:var(--space-4)}.explication{margin:0 0 var(--space-4);font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--color-neutral-300)}.verrou{margin:0;padding:var(--space-4);border-left:3px solid var(--color-warning);font-size:var(--text-sm);color:var(--color-neutral-300)}.compteur{margin:var(--space-3) 0;font-size:var(--text-sm);color:var(--color-accent-200)}.effets{display:grid;grid-template-columns:1fr auto;gap:6px var(--space-4);margin:var(--space-4) 0;font-size:var(--text-sm)}.effets dt{color:var(--color-neutral-400)}.effets dd{margin:0;text-align:right;color:var(--color-text)}.effets dd.accent{color:var(--color-accent-200);font-weight:700}.table-attributs{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.table-attributs th,.table-attributs td{padding:var(--space-2) 4px;border-bottom:1px solid var(--color-divider);text-align:right}.table-attributs thead th{font-family:var(--font-heading);font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--color-neutral-500)}.table-attributs tbody th[scope=row]{text-align:left;color:var(--color-text)}.table-attributs .ligne-exp{font-weight:400;color:var(--color-neutral-300)}.table-attributs .total{font-weight:700;color:var(--color-accent-200)}.stepper-cell{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-2)}.stepper-cell .cout{min-width:34px;text-align:right}.liste-choix{margin:0;padding:0;list-style:none}.liste-choix .field-inline{gap:var(--space-3)}.chip-actif{background:var(--color-accent-800);border-color:var(--color-accent-500);color:var(--color-accent-100)}.bareme{margin:var(--space-4) 0 0;font-size:var(--text-sm)}.bareme summary{padding:var(--space-2) 0;color:var(--color-accent-300);cursor:pointer}.bareme ul{margin:0;padding-left:var(--space-6)}.domaine-bloc{margin-top:var(--space-6)}.bifurcation{gap:var(--space-4);padding-block:var(--space-6)}.carte-choix{display:block;width:100%;padding:var(--space-4);text-align:left;font:inherit;color:var(--color-text)}.carte-choix p{margin:var(--space-2) 0 0;font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--color-neutral-300)}.carte-choix .section-title{margin:0}.pastille{margin-left:.35em;font-size:.75em;color:var(--color-accent);vertical-align:super}
