@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;--ink:#526187}*{box-sizing:border-box}body{margin:0;background:var(--blue);color:var(--blue);font:16px/1.4 EDF,system-ui,sans-serif;-webkit-font-smoothing:antialiased}[hidden]{display:none!important}a,button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}a{color:inherit}a:focus-visible,button:focus-visible{outline:3px solid #1089ff;outline-offset:4px}button{font:inherit;cursor:pointer}.passport{max-width:440px;min-height:100svh;margin:24px auto;background:white;border-radius:26px;overflow:hidden}header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px}header img{display:block;object-fit:contain}header>span{font-size:12px;font-weight:700;text-align:right}header small{display:block;color:var(--ink);font-weight:400}section{padding:8px 24px 24px}.eyebrow{font-size:13px;color:var(--ink);margin:0 0 12px}h1{font-size:49px;line-height:.98;letter-spacing:-.045em;margin:0}h1 em{font-family:Soft,Georgia,serif;color:#4f9e30}h1:focus{outline:none}.intro{color:var(--ink);font-size:16px;margin:17px 0 23px;max-width:32ch}.progress-line{display:flex;justify-content:space-between;gap:12px;align-items:center;font-size:12px;margin-bottom:8px}.progress-line span{color:var(--ink)}#progress{height:5px;background:#001a7010;border-radius:4px;overflow:hidden}#progress i{display:block;height:100%;width:0;background:var(--green);transition:width .35s ease}.missions{list-style:none;margin:14px 0 20px;padding:0}.missions li{border-bottom:1px solid #001a7020}.missions a{display:grid;grid-template-columns:34px 1fr 20px;gap:10px;align-items:center;min-height:90px;padding:13px 0;text-decoration:none}.mission-number{font-size:25px;font-weight:700;letter-spacing:-.04em}.missions b{display:block;font-size:17px}.missions small{display:block;font-size:13px;color:var(--ink);margin-top:2px}.mission-status{font-size:11px;color:var(--ink);display:block;margin-top:4px}.mission-check{font-size:25px;text-align:center}.missions .done .mission-number,.missions .done .mission-check{color:#4f9e30}.missions .done .mission-status{color:#397521;font-weight:700}.primary{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:51px;padding:14px 17px;background:var(--blue);color:white;text-decoration:none;border-radius:12px;font-weight:700;font-size:16px}.primary span{color:var(--green);font-size:23px;line-height:1}.footnote,.keep{font-size:12px;color:var(--ink);text-align:center;margin:14px 0 0}.badge{background:var(--green);border-radius:20px;margin:23px 0 21px;overflow:hidden;box-shadow:0 9px 0 #001a70;animation:badge-in .6s cubic-bezier(.2,.8,.3,1) both}.badge-top{display:flex;align-items:center;justify-content:space-between;padding:14px 20px 0;font-size:12px;font-weight:700}.badge-check{display:grid;place-items:center;width:28px;height:28px;border:1.5px solid var(--blue);border-radius:50%;font-size:19px}.badge-label{font-size:12px;margin:8px 20px 0}.badge-score{display:flex;align-items:center;gap:20px;padding:0 20px 11px}.badge-score strong{font-size:90px;line-height:1.1;letter-spacing:-.085em}.badge-score strong span{font-size:49px;letter-spacing:-.055em}.badge-score>span{font-size:23px;line-height:1.04;font-weight:700}.badge-missions{display:flex;justify-content:space-between;gap:8px;margin:0 20px 17px;font-size:11px;font-weight:700}.badge-bottom{background:var(--blue);color:white;text-align:center;font-size:13px;padding:12px 16px;letter-spacing:.03em}.gift h2{font-size:26px;letter-spacing:-.035em;margin:0 0 6px}.gift p{margin:0;font-size:17px;color:var(--ink)}.keep{text-align:left;margin:12px 0 18px}.text-button{display:block;margin:10px auto 0;min-height:44px;padding:9px 14px;color:var(--ink);border:0;background:transparent;font-size:13px;text-decoration:underline;text-underline-offset:3px}@keyframes badge-in{from{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:none}}@media(max-width:520px){body{background:white}.passport{margin:0 auto;border-radius:0}header{padding:16px 23px}section{padding:8px 23px 22px}}@media(max-width:360px){header{padding:14px 18px}section{padding:7px 18px 20px}h1{font-size:43px}.eyebrow{margin-bottom:10px}.intro{font-size:15px;margin:14px 0 20px}.missions b{font-size:16px}.missions a{grid-template-columns:29px 1fr 18px;gap:8px;min-height:84px}.badge{margin:19px 0 20px}.badge-score{gap:16px}.badge-score strong{font-size:77px}.badge-score strong span{font-size:44px}.badge-score>span{font-size:21px}.badge-missions{gap:4px;font-size:10px;margin-left:17px;margin-right:17px}.gift h2{font-size:25px}.gift p{font-size:16px}.keep{font-size:11px}.primary{font-size:15px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* Local compressed gift artwork; dimensions reserve its space before loading. */
.gift{display:grid;grid-template-columns:130px minmax(0,1fr);gap:14px;align-items:center;margin-top:24px}.gift-art{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:contain}.gift h2{font-size:25px;line-height:1.05;margin-bottom:9px}.gift p{font-size:15px;line-height:1.35}
@media(max-width:360px){.gift{grid-template-columns:108px minmax(0,1fr);gap:12px}.gift h2{font-size:23px}.gift p{font-size:14px}}

/* Short game introduction: local type and transform animation only. */
.mission-launch{position:fixed;inset:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;border:0;padding:28px 24px;background:#fff;color:var(--blue);overflow:auto}
.mission-launch[open]{display:grid;place-items:center}
.mission-launch::backdrop{background:#001a7066}
.launch-content{width:100%;max-width:360px;text-align:center}
.launch-eyebrow{font-size:13px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#4f9e30;margin:0 0 15px}
#launch-title{font-size:40px;line-height:1.02;letter-spacing:-.045em;margin:0;text-wrap:balance}
#launch-hint{font-size:16px;line-height:1.4;color:var(--ink);margin:16px auto 0;max-width:27ch}
.launch-orbit{display:grid;place-items:center;width:174px;height:174px;margin:40px auto 26px;border:8px solid #fff;border-radius:50%;background:var(--blue);outline:2px solid #c0e410;box-shadow:0 0 0 12px #c0e41022}
#launch-count{font-size:104px;font-weight:700;line-height:1;letter-spacing:-.065em;color:var(--green)}
.mission-launch.launch-go .launch-orbit{background:var(--green)}
.mission-launch.launch-go #launch-count{font-size:34px;line-height:1.02;letter-spacing:-.035em;color:var(--blue);max-width:130px}
.launch-steps{display:flex;justify-content:center;gap:8px}.launch-steps i{width:36px;height:6px;background:#001a7018;border-radius:4px}.launch-steps i.done{background:var(--green)}
#launch-skip{margin:32px auto 0;min-height:44px;padding:10px 18px;background:none;border:0;color:var(--ink);font-size:13px;text-decoration:underline;text-underline-offset:4px}
@media(max-width:360px){#launch-title{font-size:34px}.launch-orbit{margin-top:32px;width:154px;height:154px}#launch-count{font-size:92px}}

/* Keep the earned badge and the replay entry side by side. */
.journey-actions{display:grid;gap:10px}.journey-actions.can-replay{grid-template-columns:1fr 1fr}
.journey-actions.can-replay .primary{justify-content:center;min-height:56px;padding:12px 9px;font-size:14px;text-align:center}
.journey-actions.can-replay .primary span{display:none}
.replay{display:flex;align-items:center;justify-content:center;gap:8px;min-height:56px;padding:12px 9px;border:2px solid var(--blue);border-radius:12px;background:var(--green);color:var(--blue);font-size:15px;font-weight:700;text-decoration:none;touch-action:manipulation}
.replay span{font-size:24px;line-height:1}.replay:active{transform:translateY(2px)}
