:root{--night:#09272b;--surface:#fffdf8;--soft:#edf3ef;--blue:#287ac0;--orange:#d97706;--success:#237a45;--danger:#b33a32;--focus:#9ed1ff}
body{padding-bottom:calc(86px + env(safe-area-inset-bottom))}
header{height:58px}.network-state{position:sticky;top:0;z-index:30;padding:9px 16px;text-align:center;background:#fff0cc;color:#6d4600;font-weight:800;font-size:.82rem}.network-state.is-online{background:#daf4e2;color:#155d32}
.simulation-banner{position:sticky;top:0;z-index:29;display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;padding:8px 12px;background:#7a240d;color:white;font-size:.76rem}.simulation-banner b{letter-spacing:.12em}.simulation-banner a{color:white;text-decoration:underline;font-weight:800}.simulation-settings{border:2px solid #d97706}.simulation-settings>.ui-state{margin-bottom:0}
nav{gap:2px;padding:7px 5px calc(7px + env(safe-area-inset-bottom))}nav a{display:grid;place-items:center;min-width:0;padding:3px 2px;color:var(--muted);font-size:.72rem}nav a[aria-current=page]{color:var(--forest);font-weight:900}
.ui-state{display:flex;gap:13px;align-items:flex-start;padding:17px;border:1px solid var(--line);border-radius:16px;background:var(--surface);margin:0 0 14px}.ui-state p{margin:.3rem 0 0;color:var(--muted);line-height:1.4}.ui-state.error{border-color:#e3a8a2;background:#fff5f3;color:var(--danger)}.ui-state.warning{border-color:#eccb8d;background:#fff8e8}.ui-state.success{border-color:#9ed0ac;background:#effaf2;color:var(--success)}.ui-state.offline{border-color:#b8c4bf;background:#eef2f0}.spinner{width:20px;height:20px;flex:0 0 auto;border:3px solid #c6d5cf;border-top-color:var(--forest);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.status-badge,.quality-badge{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:5px 9px;background:#e7efeb;color:var(--forest);font-size:.72rem;font-weight:800}.status-badge.partial,.quality-badge.partial{background:#fff0cf;color:#815000}.status-badge.stale,.status-badge.unavailable,.status-badge.failed,.quality-badge.not_comparable{background:#f8e3df;color:#8c322c}.status-badge.selected{background:var(--forest);color:white}.quality-badge.missing{background:#eee;color:#666}
.page-meta{display:flex;justify-content:space-between;gap:8px;align-items:center;margin:-6px 0 15px;color:var(--muted);font-size:.78rem}.plan-grid{display:grid;gap:12px}.plan-card{position:relative;margin:0}.plan-card.is-selected{border:2px solid var(--success);box-shadow:0 0 0 3px #d8efdf}.plan-card.is-disabled{opacity:.72}.plan-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.plan-card h2{margin:.15rem 0;font-size:1.35rem}.plan-destination{margin:.65rem 0 1rem}.plan-destination strong{font-size:1.18rem}.metric-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:12px 0}.metric-strip div{min-width:0;background:var(--soft);padding:10px 6px;border-radius:11px;text-align:center}.metric-strip b,.metric-strip span{display:block}.metric-strip b{font-size:.98rem}.metric-strip span{font-size:.66rem;color:var(--muted);margin-top:3px}.time-line{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:10px 0}.time-line span{text-align:center;color:var(--muted);font-size:.75rem}.time-line b{display:block;color:var(--ink);font-size:1.05rem}.detail-toggle{margin:8px 0 0}.detail-toggle summary{cursor:pointer;color:var(--forest);font-weight:800;padding:10px 0}.detail-list{display:grid;gap:8px}.detail-list p{margin:0}.warning-list{padding-left:20px;color:#744d08}.category-list{display:flex;flex-wrap:wrap;gap:6px}.category-chip{background:#eaf0ed;border-radius:999px;padding:6px 9px;font-size:.74rem}.weather-card{background:var(--night);color:#f7fbf9;border:0}.weather-card>summary{list-style:none;display:grid;gap:8px;cursor:pointer}.weather-card>summary::-webkit-details-marker{display:none}.weather-title{display:flex;align-items:center;justify-content:space-between;gap:10px}.weather-title>span:first-child{display:grid;gap:3px}.weather-card>summary b{font-size:1.35rem}.weather-card .source,.weather-card small{color:#b8cbc7}.weather-card .metric-strip div{background:rgba(255,255,255,.09)}.weather-card .metric-strip span{color:#b8cbc7}.weather-card .ui-state{color:var(--ink)}.weather-summary{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:0}.weather-expanded{display:none;border-top:1px solid rgba(255,255,255,.16);margin-top:12px;padding-top:4px}.weather-card[open] .weather-expanded{display:block}.weather-alerts{display:grid;gap:8px}.weather-alert{padding:11px;border-radius:12px;background:rgba(255,255,255,.09)}.weather-alert>div{display:flex;align-items:center;justify-content:space-between;gap:8px}.weather-alert p{margin:.45rem 0}.weather-alert small{line-height:1.45}
.solar-travel-line{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px;background:#f8f3df;padding:9px 4px}.solar-travel-line b{color:#6f4f08}.solar-travel-line span{min-width:0}
.meal-grid{display:grid;gap:8px}.meal-card{padding:11px;border:1px solid #cfdad5;border-radius:12px;background:#f7faf8}.meal-card.is-missing{border-color:#e3bd79;background:#fff8e8}.meal-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.meal-card p{margin:.35rem 0;font-size:.82rem;line-height:1.35}.meal-card small{display:block;color:var(--muted);font-size:.72rem}.meal-card .warning-list{margin:.4rem 0;font-size:.76rem}.meal-action{color:#744d08}
.elevation-card{padding:15px;overflow:hidden}.elevation-card h2{margin:.15rem 0}.elevation-svg{display:block;width:100%;height:auto;margin:12px 0 4px;overflow:visible}.elevation-grid{stroke:#cdd7d2;stroke-width:1;stroke-dasharray:3 4}.elevation-tick{stroke:#89958f;stroke-width:1}.elevation-axis{fill:#65716b;font-size:8px}.elevation-area{fill:#dfe9df;opacity:.75}.elevation-segments line{stroke-width:3;stroke-linecap:round}.plan-marker-line{stroke-width:1.5;stroke-dasharray:3 3;opacity:.8}.plan-marker-label{fill:white;font-size:8px;font-weight:900}.plan-marker-key{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:9px}.slope-key{display:flex;gap:6px 12px;flex-wrap:wrap;margin-top:9px}.plan-marker-key span,.slope-key span{display:flex;align-items:center;gap:4px;font-size:.66rem;color:var(--muted)}.plan-marker-key span{min-width:0;color:var(--marker);font-weight:800;white-space:nowrap}.plan-marker-key i{width:8px;height:8px;flex:0 0 auto;border-radius:50%;background:var(--marker)}.slope-key i{width:15px;height:4px;border-radius:3px;background:#9dbc35}.slope-key i.sustained{background:#e7b52d}.slope-key i.steep{background:#ed7a24}.slope-key i.very-steep{background:#c93b32}
.route-download{display:grid;place-items:center;min-height:48px;margin-top:12px;padding:11px 14px;border-radius:12px;background:var(--forest);color:white;font-weight:800;text-align:center;text-decoration:none}
.choice-field{border:0;padding:0;margin:0}.choice-field legend{margin-bottom:10px}.choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.choice-grid input{position:absolute;opacity:0;width:1px;height:1px;margin:0}.choice-grid span{display:grid;place-items:center;min-height:48px;padding:8px;border:1px solid var(--line);border-radius:12px;background:white;text-align:center;font-size:.82rem}.choice-grid input:checked+span{background:var(--forest);border-color:var(--forest);color:white}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:9px}.switch-row{display:flex;grid-template-columns:none;gap:11px;align-items:flex-start;padding:10px 0}.switch-row input{width:22px;height:22px;flex:0 0 auto}.switch-row span{display:grid;gap:3px}.switch-row small{color:var(--muted);font-weight:500}.result-group{margin-top:24px}.result-group-title{display:flex;align-items:end;justify-content:space-between}.candidate-card h3{margin:.2rem 0}.candidate-card.remote{border-color:#e4bc70}.candidate-card.dynamic{border-style:dashed;border-color:var(--blue)}.candidate-meta{display:flex;flex-wrap:wrap;gap:6px;color:var(--muted);font-size:.8rem}.candidate-facts{display:grid;grid-template-columns:repeat(2,1fr);gap:7px;margin:12px 0}.candidate-facts div{padding:9px;background:var(--soft);border-radius:10px}.candidate-facts b,.candidate-facts small{display:block}.candidate-facts small{margin-top:3px}.semantic-note{font-size:.8rem;color:var(--muted);border-top:1px solid var(--line);padding-top:10px}
.settings-section>header{position:static;height:auto;padding:0;background:none;backdrop-filter:none;margin-bottom:13px}.settings-section>header h2{margin:0}.settings-section>header small{color:var(--muted)}.setting-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(105px,42%);gap:10px;align-items:end;padding:11px 0;border-top:1px solid var(--line)}.setting-row:first-of-type{border-top:0}.setting-label{display:grid;gap:3px}.setting-label small{color:var(--muted);font-weight:500}.setting-input{position:relative}.setting-input input,.setting-input select{padding:11px}.unit{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:.8rem;pointer-events:none}.unit+input{padding-right:44px}.auto-control{grid-column:1/-1;display:flex;grid-template-columns:none;gap:8px;align-items:center;font-size:.78rem}.auto-control input{width:18px}.protected-value{font-weight:800;text-align:right;overflow-wrap:anywhere}.confirmation-note{padding:10px;border-radius:10px;background:#fff5dd;color:#6e4900;font-size:.8rem}.version-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.version-item{padding:10px;border:1px solid var(--line);border-radius:11px}.version-item b,.version-item small{display:block;overflow-wrap:anywhere}.version-item small{color:var(--muted);margin-top:3px}
.metrics-page,.metrics-results{display:block;width:100%;min-width:0;max-width:100%}.metrics-controls{width:100%;min-width:0;max-width:100%;grid-template-columns:minmax(0,1fr);overflow:hidden}.metrics-controls>*{min-width:0;max-width:100%}.metrics-controls>button{width:100%}.preset-list{display:flex;width:100%;min-width:0;max-width:100%;gap:7px;overflow-x:auto;overscroll-behavior-x:contain;padding:1px 0 10px;scrollbar-width:none}.preset-list::-webkit-scrollbar{display:none}.preset-list button{flex:0 0 auto;white-space:nowrap;min-height:40px;padding:8px 12px;background:var(--soft);color:var(--forest)}.preset-list button.is-active{background:var(--forest);color:white}.metric-selector{width:100%;min-width:0;max-width:100%;max-height:270px;overflow:auto;border:1px solid var(--line);border-radius:12px;padding:6px}.metric-option{display:flex;grid-template-columns:none;min-width:0;max-width:100%;align-items:center;gap:9px;padding:8px}.metric-option input{width:20px;flex:0 0 auto}.metric-option span{min-width:0;overflow-wrap:anywhere}.chart-card{width:100%;min-width:0;max-width:100%;padding:14px;overflow:hidden}.chart-head{display:flex;justify-content:space-between;gap:8px;align-items:start}.chart-head h3{margin:0;overflow-wrap:anywhere}.chart-head b{white-space:nowrap;color:var(--forest)}.chart-svg{display:block;width:100%;max-width:100%;height:auto;margin-top:10px;overflow:hidden}.chart-grid{stroke:#dde4e1;stroke-width:1}.chart-axis{fill:#6b7772;font-size:10px}.chart-line{fill:none;stroke:var(--blue);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.chart-point.complete{fill:var(--blue)}.chart-point.partial{fill:white;stroke:var(--orange);stroke-width:3}.chart-point.not_comparable{fill:var(--danger)}.quality-key{display:flex;width:100%;min-width:0;max-width:100%;flex-wrap:wrap;gap:7px;margin-top:10px}.quality-key span{font-size:.7rem}.missing-note{color:var(--muted);font-size:.78rem}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--focus);outline-offset:2px}button[disabled]{opacity:.55;cursor:not-allowed}
@media(min-width:700px){.plan-grid{grid-template-columns:repeat(3,1fr)}.plan-card{padding:15px}.metric-strip{grid-template-columns:repeat(2,1fr)}}
@media(max-width:360px){main{padding-left:12px;padding-right:12px}.choice-grid,.two-columns{grid-template-columns:1fr}.metric-strip{gap:4px}.metric-strip div{padding-left:3px;padding-right:3px}nav a{font-size:.58rem}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation-duration:.01ms!important}}

/* Shell iPhone: retour à gauche, actions secondaires à droite, quatre destinations fixes. */
.app-header{height:calc(58px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 14px 0;display:grid;grid-template-columns:1fr auto 1fr;align-items:center}.app-header .brand{grid-column:2;font-size:.82rem;letter-spacing:.12em;white-space:nowrap}.app-header button.brand{min-height:42px;margin:0;padding:0 4px;border:0;border-radius:0;background:transparent;color:var(--forest);font-family:inherit;font-size:.82rem;font-weight:850}.app-header .brand-position{font-weight:850;color:var(--forest);letter-spacing:.02em}.header-slot{display:flex;align-items:center;gap:6px}.header-slot.left{grid-column:1;grid-row:1;justify-content:flex-start}.header-slot.right{grid-column:3;grid-row:1;justify-content:flex-end}.icon-button,.app-header .back-button.icon-button{display:grid;place-items:center;width:42px;height:42px;min-height:42px;margin:0;padding:0;border:1px solid rgba(23,63,53,.12);border-radius:13px;background:rgba(255,253,248,.88);color:var(--forest);font-size:1.3rem;font-weight:850}.app-header .back-button.icon-button{font-size:1.55rem}.header-slot.right .icon-button:last-child{font-size:1.65rem;line-height:1}
nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));justify-content:stretch;padding-left:8px;padding-right:8px}nav a{min-height:51px}
.today-hero{padding-top:24px}.day-step{position:relative;margin-bottom:22px;padding-left:17px;border-left:2px solid #cdd8d2}.day-step.is-complete{border-color:var(--success)}.step-heading{display:flex;justify-content:space-between;align-items:center;margin:0 0 9px}.step-heading span{font-size:.78rem;font-weight:900;text-transform:uppercase;letter-spacing:.1em}.step-heading b{font-size:.7rem;color:var(--muted);background:#e8eeeb;padding:5px 8px;border-radius:999px}.day-step.is-complete .step-heading b{background:#dbf1e2;color:var(--success)}.journey-card{margin:0}.journey-card h2{margin:.1rem 0 .5rem}.journey-card p{line-height:1.45}.journey-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.journey-actions form,.journey-actions button,.journey-actions .button{width:100%;margin:0}.journey-actions .button{text-align:center}.evening-actions .questionnaire-action{grid-column:1/-1}.fit-import-status{margin-top:12px;padding:10px;border-radius:10px;background:var(--soft)}.today-report-summary{margin:4px 0 26px}.today-report-summary .card{margin:0}.today-report-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.daily-recovery-action{padding:10px 0;border-top:1px solid var(--line);line-height:1.4}.today-report-summary .button{width:100%;text-align:center}
.tomorrow-inputs{border-color:#b7c9c1}.tomorrow-inputs h2{margin:.15rem 0}.input-summary{display:flex;justify-content:space-between;align-items:center;margin:12px 0;padding:11px;border-radius:12px;background:var(--soft)}.input-summary span{display:grid;gap:3px}.input-summary small{color:var(--muted)}.input-summary a{font-weight:850}.tomorrow-inputs .source{margin-bottom:0}
.plan-grid{counter-reset:scenario}.plan-card{padding:0;overflow:hidden}.plan-card>summary{list-style:none;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:11px;align-items:center;padding:15px;cursor:pointer}.plan-card>summary::-webkit-details-marker{display:none}.scenario-number{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--forest);color:white;font-size:1.05rem;font-weight:900}.plan-summary{display:grid;min-width:0;gap:4px}.plan-summary b{font-size:1rem;color:var(--forest)}.plan-summary>span{font-size:.74rem;color:var(--muted);overflow-wrap:anywhere}.plan-summary>strong{font-size:.8rem;line-height:1.35}.plan-summary-state{display:grid;place-items:center}.plan-summary-state i{font-style:normal}.plan-expanded{padding:0 15px 15px;border-top:1px solid var(--line)}.plan-card[open]>summary{background:#f2f6f3}.plan-card.is-selected .scenario-number{background:var(--success)}.plan-card.is-disabled .scenario-number{background:#7d8984}.plan-card.is-disabled{opacity:1}.plan-card.is-disabled>summary{opacity:.72}.plan-expanded>button{width:100%;margin-top:12px}.weather-card .warning-list{color:#ffd18a;font-weight:850}.weather-card .status-badge.partial,.weather-card .status-badge.stale{outline:2px solid #f4be59}
.progress-card h2{margin:.1rem 0;font-size:2rem}.progress-head{display:flex;justify-content:space-between;align-items:end}.progress-head>strong{font-size:1.35rem;color:var(--forest)}.progress-track{height:14px;overflow:hidden;border-radius:999px;background:#dfe6e2;margin:15px 0 10px}.progress-track i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#297a5b,#56a56f)}.progress-track.ascent i{background:linear-gradient(90deg,#d9a12c,#d66b2f)}.total-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.total-grid article{display:grid;gap:5px;min-height:104px;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--paper)}.total-grid b{font-size:1.25rem;color:var(--forest)}.total-grid span{font-size:.76rem;color:var(--muted)}
.chart-range-buttons{display:flex;gap:7px;margin-top:9px}.chart-range-buttons button{flex:1;min-height:40px;padding:8px;background:var(--soft);color:var(--forest)}.chart-range-buttons button.is-active{background:var(--forest);color:white}.series-legend{display:flex;flex-wrap:wrap;gap:7px 12px;margin-top:10px}.series-legend span{display:flex;align-items:center;gap:5px;color:var(--muted);font-size:.72rem}.series-legend i{width:17px;height:4px;border-radius:3px;background:var(--series)}.chart-line{stroke:var(--series)}.chart-point.complete{fill:var(--series)}.chart-point.partial{fill:white;stroke:var(--series)}.chart-point.not_comparable{fill:none;stroke:currentColor;stroke-width:2}.chart-svg.combined{margin-top:4px}
.feedback-card{margin-top:26px}.tomorrow-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:12px}.tomorrow-options .switch-row{padding:10px;border:1px solid var(--line);border-radius:12px}.safety-settings{border:2px solid #9dcab0}.safety-settings.is-disabled{border-color:var(--danger);background:#fff8f5}.danger-switch{padding:12px;border:1px solid #e3a8a2;border-radius:12px;background:#fff3f0}.searched-window{padding:8px;border-radius:8px;background:#fff1d2}.supermarket-card{background:#f3f7f4}
.manual-route-inputs h2{margin:.15rem 0}.manual-route-summary .metric-strip{grid-template-columns:repeat(3,minmax(0,1fr))}.manual-route-summary .metric-strip b{overflow-wrap:anywhere}.manual-localities-toggle{grid-template-columns:auto minmax(0,1fr);align-items:center}.manual-localities-toggle input{width:22px}.manual-poi-filter{margin-bottom:10px}.manual-poi-filter select{margin-top:2px}.manual-poi-filter small{display:block;margin-top:3px}.manual-locality-list{display:grid;gap:10px}.manual-locality-card{margin:0}.manual-locality-title{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.manual-locality-title h3,.manual-locality-title strong{margin:0;color:var(--forest);font-size:1.08rem;font-weight:850}.manual-locality-card .category-list{margin:11px 0 14px}.manual-locality-card select{margin-top:2px}.manual-waypoint-summary{margin-top:14px}.manual-waypoint-summary h2{margin:.1rem 0 .7rem;font-size:1.08rem}.manual-waypoint-summary ol{display:grid;gap:7px;margin:0;padding-left:22px}.manual-waypoint-summary li{line-height:1.4}.manual-download{width:100%;margin:8px 0}.manual-marker-line{stroke-width:1.5;stroke-dasharray:3 3;opacity:.82}.manual-marker-key{display:grid;gap:5px;margin-top:9px}.manual-marker-key span{display:flex;align-items:center;gap:6px;color:var(--marker);font-size:.7rem;font-weight:800}.manual-marker-key i{width:8px;height:8px;flex:0 0 auto;border-radius:50%;background:var(--marker)}
@media(max-width:520px){.two-columns,.tomorrow-options{grid-template-columns:1fr}.chart-range-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.chart-range-buttons button{min-width:0;padding-left:4px;padding-right:4px}.settings-section{overflow:hidden}.setting-row{grid-template-columns:minmax(0,1fr)}.setting-input,.setting-input input,.setting-input select{width:100%;max-width:100%}.protected-value{text-align:left}.auto-control{grid-column:1}}
@media(max-width:390px){.journey-actions{grid-template-columns:1fr}.app-header{padding-left:10px;padding-right:10px}.icon-button,.app-header .back-button.icon-button{width:40px;height:40px}.plan-summary>span{font-size:.68rem}.plan-summary>strong{font-size:.72rem}.scenario-number{width:32px;height:32px}.plan-card>summary{gap:8px;padding:13px 11px}.total-grid article{min-height:96px;padding:12px}}
