@font-face{font-family:EDF;src:url('../commun/EDF2020.otf');font-display:swap}@font-face{font-family:EDF;src:url('../commun/EDF2020-Bold.otf');font-weight:700;font-display:swap}@font-face{font-family:Soft;src:url('../commun/EDF2020Soft-BoldItalic.otf');font-weight:700;font-style:italic;font-display:swap}
:root{--blue:#001a70;--green:#c0e410;--target:50%;--tolerance:20%}*{box-sizing:border-box}body{margin:0;background:var(--blue);font:16px/1.4 EDF,system-ui,sans-serif;color:var(--blue);-webkit-font-smoothing:antialiased}button,input{font:inherit;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,input:focus-visible{outline:3px solid #1057c8;outline-offset:5px}.game{max-width:440px;min-height:720px;margin:28px auto;background:white;border-radius:28px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 24px 70px #0003}header{display:flex;justify-content:space-between;align-items:center;padding:23px 27px;gap:20px}header img{object-fit:contain}#steps{display:flex;gap:7px}#steps i{width:8px;height:8px;border-radius:50%;background:#001a7020}#steps i.active{background:var(--blue)}#steps i.done{background:#4f9e30}.intro{padding:35px 28px 0}.eyebrow{font-size:14px;margin:0 0 14px;color:#526187}h1{font-size:58px;letter-spacing:-.05em;line-height:.98;margin:0;font-weight:700}em{font-family:Soft,Georgia,serif;color:#4f9e30;font-weight:700}#instruction{font-size:16px;color:#526187;line-height:1.4;margin:20px 0 0;max-width:320px;min-height:45px}.play{margin:30px 15px 0;position:relative;min-height:250px;display:grid;align-items:center;flex:1}.control{width:100%;padding:10px 0 20px}.target-label{position:relative;height:47px;margin:0 28px}.target-label>span,.target-label>b{position:absolute;left:var(--target);transform:translateX(-50%);text-align:center}.target-label>span{font-size:14px;line-height:1;top:0}.target-label>b{font-size:24px;top:15px;line-height:1}.slider{height:76px;position:relative}.rail{position:absolute;left:28px;right:28px;top:50%;height:14px;transform:translateY(-50%);border-radius:9px;background:linear-gradient(90deg,#4F9E30 0%,#88D910 25%,#FFB210 55%,#FE5716 78%,#D43D3D 100%)}.target{position:absolute;left:calc(var(--target) - var(--tolerance)/2);width:var(--tolerance);height:60px;top:50%;transform:translateY(-50%);border-radius:14px;background:var(--green);border:1px solid #001a7025}.slider input{appearance:none;position:absolute;inset:0;width:100%;height:76px;margin:0;background:transparent;cursor:ew-resize;border:0}.slider input::-webkit-slider-runnable-track{height:14px;background:transparent}.slider input::-webkit-slider-thumb{appearance:none;width:56px;height:56px;margin-top:-21px;border:7px solid white;background:var(--blue);border-radius:50%;box-shadow:0 3px 12px #001a7030}.slider input::-moz-range-track{height:14px;background:transparent}.slider input::-moz-range-thumb{width:42px;height:42px;border:7px solid white;background:var(--blue);border-radius:50%;box-shadow:0 3px 12px #001a7030}.ends{margin:8px 28px 0;display:flex;justify-content:space-between;color:#526187;font-size:14px}#feedback{text-align:center;font-size:17px;font-weight:700;margin:26px 0 0;min-height:24px}.balanced #feedback{color:#32691b}.balanced .slider input::-webkit-slider-thumb{background:#4f9e30}.balanced .slider input::-moz-range-thumb{background:#4f9e30}#success{position:absolute;inset:0;padding:18px 24px;background:#ffffffbf;display:flex;flex-direction:column;align-items:center;justify-content:center;animation:arrive .3s ease}#success[hidden]{display:none}.won .control{filter:blur(5px);pointer-events:none}.check{background:var(--green);width:48px;height:48px;border-radius:50%;display:grid;place-items:center;font-size:26px}h2{font-size:23px;letter-spacing:-.025em;margin:15px 0 22px;text-align:center}#next{background:var(--blue);color:white;min-height:50px;padding:14px 20px;border:0;border-radius:12px;min-width:210px;display:flex;justify-content:space-between;gap:24px;font-size:16px;font-weight:700}#next span{color:var(--green)}footer{display:flex;justify-content:space-between;align-items:center;padding:23px 28px;gap:15px;color:#526187;font-size:13px}footer button{background:none;border:0;color:#526187;padding:10px 0;font-size:13px;min-height:44px}@keyframes arrive{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media(max-width:520px){body{background:white}.game{margin:0 auto;border-radius:0;box-shadow:none;min-height:100svh}header{padding:18px 25px}.intro{padding-top:32px}h1{font-size:54px}.play{margin-top:18px}footer{padding-bottom:max(18px,env(safe-area-inset-bottom))}}@media(max-height:740px) and (max-width:520px){.intro{padding-top:12px}h1{font-size:48px}.play{margin-top:8px;min-height:225px}#instruction{margin-top:15px}.control{padding-bottom:5px}footer{padding-top:5px}}@media(max-width:350px){h1{font-size:47px}.intro{padding-left:24px;padding-right:24px}#instruction{font-size:15px}.play{margin-left:8px;margin-right:8px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
@media(max-height:640px) and (max-width:520px){header{padding:12px 24px}.intro{padding-top:6px}.eyebrow{margin-bottom:10px}h1{font-size:42px}#instruction{margin-top:12px;min-height:0}.play{min-height:190px;margin-top:8px}.control{padding:0}#feedback{margin-top:18px}footer{padding-top:5px;padding-bottom:8px}}
/* Live tracking: one red/green score, motion on transforms only. */
.score{margin:4px 27px 0;color:#bf3029;background:#bf302908;border:1px solid #bf302930;padding:13px 16px;border-radius:14px;--signal:#bf3029}.score.inside{color:#32691b;background:#4f9e300c;border-color:#4f9e3045;--signal:#4f9e30}.score>div:first-child{display:flex;align-items:center;justify-content:space-between;gap:12px}.score strong{font-size:28px;line-height:1;font-variant-numeric:tabular-nums;white-space:nowrap}.score small{font-size:15px;font-weight:400}.score #score-status{font-size:15px;font-weight:700}#gauge{height:7px;background:#001a7010;border-radius:7px;overflow:hidden;margin-top:12px}#gauge i{display:block;width:100%;height:100%;background:var(--signal);transform:scaleX(0);transform-origin:left}.intro{padding-top:25px}h1{font-size:52px}.play{margin-top:8px}.target{left:0;transform:translate3d(var(--target-x,0px),-50%,0) translateX(-50%);will-change:transform}.target-label>span,.target-label>b{left:0;transform:translate3d(var(--target-x,0px),0,0) translateX(-50%)}#feedback{font-size:15px}.game footer button:disabled{opacity:.5;cursor:default}@media(max-height:740px) and (max-width:520px){header{padding-top:12px;padding-bottom:10px}.score{padding:10px 14px}.intro{padding-top:16px}.eyebrow{margin-bottom:9px}h1{font-size:44px}#instruction{margin-top:12px}.play{min-height:205px}.control{padding-top:0;padding-bottom:0}footer{padding-top:4px}}@media(max-height:640px) and (max-width:520px){.score{margin-top:0}.score strong{font-size:24px}.intro{padding-top:12px}h1{font-size:36px}.eyebrow{margin-bottom:7px}#instruction{font-size:15px;margin-top:9px}.play{min-height:182px}.target-label{height:32px}.target-label>b{top:12px;font-size:20px}.slider,.slider input{height:64px}.ends{margin-top:4px}#feedback{margin-top:10px}footer{padding-bottom:6px}}
/* Score follows the instruction and sits immediately above the moving target. */
.mission-nav{display:grid;justify-items:end;gap:5px}.parcours-link{font-size:12px;line-height:1.4;color:var(--blue);text-underline-offset:3px;padding:7px 0}.parcours-link:focus-visible{outline:3px solid #1057c8;outline-offset:3px}
.intro{padding-top:18px}.score{margin-top:22px}.play{margin-top:3px}@media(max-height:740px) and (max-width:520px){.intro{padding-top:10px}.score{margin-top:16px}}@media(max-height:640px) and (max-width:520px){.intro{padding-top:5px}.score{margin-top:12px}}

/* A day has three explicit milestones; the score keeps its approved position. */
.dayline{margin:0 25px 0}.dayline-title{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:11px;color:#526187;margin-bottom:9px}.dayline-title b{font-weight:700;color:var(--blue);white-space:nowrap}
#steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
#steps li{display:grid;justify-items:center;align-content:start;gap:3px;padding:10px 3px 9px;border:1px solid #001a701a;border-radius:12px;background:#001a7005;text-align:center;color:#526187}
#steps .stage-number{display:grid;place-items:center;width:25px;height:25px;border:1px solid #001a7040;border-radius:50%;font-size:13px;font-weight:700;background:white;color:var(--blue);margin-bottom:2px}
#steps li b{font-size:13px;font-weight:700}#steps li small{font-size:10px;line-height:1.15}
#steps li.active{background:var(--green);color:var(--blue);border-color:var(--green)}#steps li.active .stage-number{color:white;background:var(--blue);border-color:var(--blue)}
#steps li.done{background:#4f9e300c;color:#32691b;border-color:#4f9e3040}#steps li.done .stage-number{background:#4f9e30;border-color:#4f9e30;color:white}
.intro{padding-top:24px}h1{font-size:48px}#instruction{margin-top:15px;min-height:44px}.score{margin-top:17px}.play{min-height:205px}.target-label{height:38px}
@media(max-height:740px) and (max-width:520px){.intro{padding-top:18px}h1{font-size:42px}#instruction{font-size:15px;margin-top:11px;min-height:42px}.score{margin-top:13px}.play{min-height:185px}.target-label{height:32px}.target-label>b{top:12px}.control{padding:0}#feedback{margin-top:15px}footer{padding-top:3px;padding-bottom:10px}}
@media(max-width:350px){.dayline{margin-right:20px;margin-left:20px}.dayline-title{font-size:10px}#steps{gap:5px}#steps li{padding:8px 2px}#steps li b{font-size:12px}#steps li small{font-size:9px}.intro{padding-left:24px;padding-right:24px}h1{font-size:40px}.score{margin-left:22px;margin-right:22px}.score #score-status{font-size:13px}.score strong{font-size:25px}}
@media(max-height:640px) and (max-width:520px){.dayline-title{margin-bottom:6px}#steps li{padding-top:6px;padding-bottom:6px}.intro{padding-top:14px}h1{font-size:35px}#instruction{min-height:40px;margin-top:9px}.score{margin-top:10px}.play{min-height:165px}.ends{margin-top:4px}#feedback{margin-top:9px}.target-label{height:28px}}

#steps li small{font-size:11px;color:var(--blue);font-variant-numeric:tabular-nums;white-space:nowrap}@media(max-width:350px){#steps li small{font-size:10px}}
