:root{--vert: #0a7d3c;--vert-fonce: #075c2c;--jaune: #f5b301;--bg: #f4f6f5;--surface: #ffffff;--texte: #17251d;--texte-doux: #5c6b63;--bordure: #e2e8e4;--erreur: #c0392b;--erreur-bg: #fdecea;--radius: 16px;--ombre: 0 6px 24px rgba(10, 125, 60, .08);font-synthesis:none}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--texte);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5;-webkit-font-smoothing:antialiased}.app{max-width:480px;margin:0 auto;padding:24px 16px 40px;display:flex;flex-direction:column;gap:16px;min-height:100vh}.app-header{text-align:center;padding:8px 0 4px}.logo{font-size:40px;line-height:1}.app-header h1{margin:8px 0 4px;font-size:1.6rem;color:var(--vert-fonce)}.tagline{margin:0;color:var(--texte-doux);font-size:.95rem}.app-logo{display:block;width:200px;max-width:62%;height:auto;margin:0 auto 4px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app-main{display:flex;flex-direction:column;gap:16px}.card{background:var(--surface);border:1px solid var(--bordure);border-radius:var(--radius);padding:20px;box-shadow:var(--ombre)}.form{display:flex;flex-direction:column;gap:18px}.field{display:flex;flex-direction:column;gap:6px}.field label{font-weight:600;font-size:.9rem}input[type=text],input[type=number],select{width:100%;padding:12px 14px;font-size:1.05rem;border:1px solid var(--bordure);border-radius:12px;background:#fbfdfc;color:var(--texte);outline:none;transition:border-color .15s,box-shadow .15s;font-family:inherit}input[type=text]:focus,input[type=number]:focus,select:focus{border-color:var(--vert);box-shadow:0 0 0 3px #0a7d3c26}.segmented{display:flex;gap:6px;background:#eef3f0;border:1px solid var(--bordure);border-radius:12px;padding:4px}.segmented button{flex:1;padding:10px 8px;border:none;border-radius:9px;background:transparent;color:var(--texte-doux);font-size:.95rem;font-weight:600;cursor:pointer;transition:background .15s,color .15s,box-shadow .15s}.segmented button.active{background:var(--vert);color:#fff;box-shadow:0 2px 6px #0a7d3c40}.segmented button:not(.active):hover{color:var(--vert-fonce)}.input-suffix{position:relative;display:flex;align-items:center}.input-suffix input{padding-right:64px}.input-suffix .suffix{position:absolute;right:14px;color:var(--texte-doux);font-weight:600;font-size:.9rem;pointer-events:none}.label-help{display:inline-flex;align-items:center;gap:8px;font-weight:600}.help-btn{flex-shrink:0;width:20px;height:20px;border-radius:50%;border:1px solid var(--bordure);background:#eef5f0;color:var(--vert-fonce);font-size:.72rem;font-weight:700;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.help-btn:hover{background:#e2efe7;border-color:var(--vert)}.help-btn[aria-expanded=true]{background:var(--vert);color:#fff;border-color:var(--vert)}.input-inline{margin-top:10px}.hint{margin:2px 0 0;font-size:.82rem;color:var(--texte-doux)}.hint code{background:#eef3f0;padding:1px 5px;border-radius:5px;font-size:.8rem}.hint-warn{color:#a15c00}.field-switch{gap:0}.switch-label{display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer}.switch-label .sub{display:block;font-weight:400;font-size:.78rem;color:var(--texte-doux)}input[type=checkbox][role=switch]{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:46px;height:26px;border-radius:999px;background:#cdd6d1;position:relative;cursor:pointer;transition:background .2s;flex-shrink:0}input[type=checkbox][role=switch]:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .2s}input[type=checkbox][role=switch]:checked{background:var(--vert)}input[type=checkbox][role=switch]:checked:after{transform:translate(20px)}.form-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.btn-ghost{background:none;border:none;color:var(--texte-doux);font-size:.9rem;cursor:pointer;padding:4px 0;text-decoration:underline}.btn-ghost:hover{color:var(--vert-fonce)}.btn-regles{background:#eef5f0;border:1px solid var(--bordure);color:var(--vert-fonce);font-size:.88rem;font-weight:600;cursor:pointer;padding:8px 14px;border-radius:10px;transition:background .15s,border-color .15s}.btn-regles:hover{background:#e2efe7;border-color:var(--vert)}.btn-regles:focus-visible{outline:none;box-shadow:0 0 0 3px #0a7d3c33}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0c1e148c;display:flex;align-items:flex-end;justify-content:center;padding:0;z-index:100;animation:fade .15s ease-out}@keyframes fade{0%{opacity:0}}.modal{background:var(--surface);color:var(--texte);width:100%;max-width:480px;max-height:90vh;border-radius:20px 20px 0 0;display:flex;flex-direction:column;box-shadow:0 -8px 40px #00000040;animation:slideUp .2s ease-out}@keyframes slideUp{0%{transform:translateY(24px);opacity:.6}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 12px;border-bottom:1px solid var(--bordure)}.modal-header h2{margin:0;font-size:1.2rem;color:var(--vert-fonce)}.modal-close{background:#f0f3f1;border:none;width:34px;height:34px;border-radius:50%;font-size:.95rem;color:var(--texte-doux);cursor:pointer;line-height:1}.modal-close:hover{background:#e2e8e4;color:var(--texte)}.modal-body{overflow-y:auto;padding:16px 20px;display:flex;flex-direction:column;gap:22px}.modal-section h3{margin:0 0 10px;font-size:.95rem;color:var(--texte)}.modal-steps{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px;font-size:.9rem}.modal-note{margin:12px 0 0;font-size:.82rem;color:var(--texte-doux);background:#fff8e6;border:1px solid #f4e2ad;border-radius:10px;padding:10px 12px}.modal-seuils{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;font-size:.9rem}.badge{display:inline-block;min-width:30px;text-align:center;background:var(--vert);color:#fff;font-weight:700;font-size:.75rem;border-radius:6px;padding:2px 6px;margin-right:8px}.modal-table-wrap{overflow-x:auto}.tranches-grid{display:flex;flex-direction:column}.tranches-row{display:grid;grid-template-columns:.7fr 1.5fr 1fr 1.2fr;gap:8px;padding:8px 2px;border-bottom:1px solid var(--bordure);font-size:.85rem}.tranches-row span{text-align:right;font-variant-numeric:tabular-nums}.tranches-row span:first-child{text-align:left}.tranches-head{color:var(--texte-doux);font-weight:600}.modal-table{width:100%;border-collapse:collapse;font-size:.85rem}.modal-table th,.modal-table td{text-align:right;padding:8px 6px;border-bottom:1px solid var(--bordure);white-space:nowrap}.modal-table th:first-child,.modal-table td:first-child{text-align:left}.modal-table th{color:var(--texte-doux);font-weight:600}.cat-libelle{display:block;font-weight:400;font-size:.75rem;color:var(--texte-doux)}.modal-footer{padding:12px 20px 20px;border-top:1px solid var(--bordure);display:flex;flex-direction:column;gap:4px;font-size:.78rem;color:var(--texte-doux)}.modal-source{font-size:.72rem;opacity:.85}@media (min-width: 520px){.modal-overlay{align-items:center;padding:16px}.modal{border-radius:20px}}.result{background:linear-gradient(135deg,var(--vert),var(--vert-fonce));color:#fff;text-align:center;border:none}.result--sticky{position:-webkit-sticky;position:sticky;top:calc(8px + var(--vv-offset, 0px));z-index:30}@media (max-height: 560px){.result--sticky{padding:12px 16px}.result--sticky .result-value{font-size:1.8rem;margin:2px 0}.result--sticky .result-label,.result--sticky .result-sub{font-size:.78rem}}.result-label{font-size:.85rem;opacity:.85;text-transform:uppercase;letter-spacing:.04em}.result-value{font-size:2.6rem;font-weight:800;margin:6px 0 4px;line-height:1.1}.result-sub{margin:0;font-size:.9rem;opacity:.92}.result-detail-btn{margin-top:12px;display:inline-flex;align-items:center;gap:7px;background:#ffffff2e;color:#fff;border:1px solid rgba(255,255,255,.4);border-radius:999px;padding:7px 15px;font-size:.85rem;font-weight:600;cursor:pointer;transition:background .15s}.result-detail-btn:hover{background:#ffffff47}.info-ico{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;border-radius:50%;border:1.5px solid currentColor;font-family:Georgia,Times New Roman,serif;font-style:italic;font-weight:700;font-size:.72rem}.result-recap{font-size:.95rem;color:var(--texte);background:#eef5f0;border-radius:10px;padding:10px 12px}.result-empty{background:var(--surface);color:var(--texte-doux);text-align:center}.result-empty p{margin:0}.result-error{background:var(--erreur-bg);color:var(--erreur);text-align:left;border:1px solid #f5c6c0}.result-error p{margin:0;font-weight:500}.detail{padding:0;overflow:hidden}.detail-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;background:none;border:none;padding:16px 20px;font-size:1rem;font-weight:600;color:var(--texte);cursor:pointer}.chevron{transition:transform .2s;color:var(--texte-doux)}.chevron.open{transform:rotate(180deg)}.detail-body{padding:0 20px 20px}.detail-table{width:100%;border-collapse:collapse;font-size:.88rem;margin-bottom:14px}.detail-table th,.detail-table td{text-align:right;padding:8px 6px;border-bottom:1px solid var(--bordure)}.detail-table th:first-child,.detail-table td:first-child{text-align:left}.detail-table th{color:var(--texte-doux);font-weight:600}.detail-depart{margin:0 0 12px;font-size:.82rem;color:var(--vert-fonce);background:#eef5f0;border:1px solid #cfe4d7;border-radius:10px;padding:8px 10px}.detail-lignes{margin:0;display:flex;flex-direction:column;gap:6px;font-size:.9rem}.detail-lignes>div{display:flex;justify-content:space-between}.detail-lignes dt{color:var(--texte-doux)}.detail-lignes dd{margin:0;font-variant-numeric:tabular-nums}.detail-total{border-top:1px solid var(--bordure);padding-top:6px;font-weight:700}.detail-total dt{color:var(--texte)!important}.app-footer{margin-top:auto;padding-top:8px;text-align:center}.avertissement{font-size:.8rem;color:var(--texte-doux);background:#fff8e6;border:1px solid #f4e2ad;border-radius:12px;padding:10px 12px;margin:0 0 8px}.version{font-size:.75rem;color:var(--texte-doux);margin:0}@media (max-width: 380px){.result-value{font-size:2.1rem}}
