:root{
  --navy:#1d33c9;--navy2:#1626a3;--deep:#101a6b;--gold:#f4b41e;--gold2:#ffd76a;--orange:#ef7d18;--cream:#fffaf0;--ink:#141a4f;--muted:#5b5f7a;
  --r:20px;--shadow:0 18px 40px -12px #0b0f3aa0,0 2px 6px #0b0f3a33;
  --s1:8px;--s2:12px;--s3:16px;--s4:24px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:#0b0d26;font-family:Poppins,system-ui,sans-serif;overflow:hidden;overscroll-behavior:none}
button{font-family:inherit}
#stage{--zt:150px;--zb:90px;position:relative;margin:0 auto;height:100vh;height:100dvh;width:min(100vw,calc(100dvh*9/17));overflow:hidden;background:#2a2230;container-type:size;user-select:none;-webkit-user-select:none;touch-action:none}
@media(min-aspect-ratio:3/4){#stage{box-shadow:0 0 80px #000a}}
.off{opacity:0;pointer-events:none!important;visibility:hidden}

/* ---------- AR layers ---------- */
#cam,#bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
#cam{display:none}
#stage.live #cam{display:block}#stage.live #bg{display:none}
#stage.live.blur #cam{visibility:hidden}#stage.live.blur #bg{display:block}
#veil{position:absolute;inset:0;pointer-events:none;background:radial-gradient(120% 80% at 50% 45%,#0000 55%,#0b0f3a55);transition:background-color .6s}
/* blur is applied once to a frozen frame (cheap) instead of a live backdrop-filter over the camera (expensive on phones) */
#stage.blur #veil{background-color:#fff3}
#stage.blur #bg{filter:blur(10px) saturate(1.1);transform:scale(1.06)}
#world{position:absolute;inset:0;z-index:10;overflow:hidden}
/* end-screen fireworks canvas */
#fwc{position:absolute;inset:0;width:100%;height:100%;z-index:17;opacity:0;pointer-events:none;transition:opacity .5s}
#fwc.on{opacity:1}
#fx{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:17}

.sweet{position:absolute;left:0;top:0;width:120px;height:120px;margin:-60px 0 0 -60px;cursor:pointer;will-change:transform;transform-origin:50% 50%}
.sweet .orb{position:absolute;inset:0;border-radius:50%;
  background:radial-gradient(circle at 32% 26%,#ffffffd9 0 6%,#fff0 18%),radial-gradient(circle at 50% 60%,#fff8ec66,#ffe9b833 60%,#ffd77a44 100%);
  box-shadow:inset 0 0 0 2px #fff8,inset 0 -10px 24px #ffcf6a55,inset 0 8px 18px #ffffff66,0 0 0 1.5px #f4b41e99,0 14px 28px -8px #0008;}
.sweet .orb::after{content:"";position:absolute;inset:-7px;border-radius:50%;border:1.5px dashed #ffd76a88;animation:spin 14s linear infinite}
.sweet img{position:absolute;left:12%;top:12%;width:76%;height:76%;object-fit:contain;filter:drop-shadow(0 6px 6px #0006);pointer-events:none;animation:bob 3.2s ease-in-out infinite;animation-delay:var(--dl,0s)}
.sweet.pop .orb{animation:burst .35s ease-out forwards}
.sweet.pop img{animation:none;opacity:0;transition:opacity .2s}
@keyframes bob{50%{transform:translateY(-5px) rotate(2deg)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes burst{to{transform:scale(1.6);opacity:0}}

#edges{position:absolute;inset:0;z-index:11;pointer-events:none}
.edge{position:absolute;left:0;top:0;width:34px;height:34px;margin:-17px 0 0 -17px;border-radius:50%;background:#fffaf0e6;box-shadow:0 4px 12px #0005,0 0 0 2px var(--gold);display:grid;place-items:center;transition:opacity .2s}
.edge img{width:24px;height:24px;object-fit:contain}
.edge i{position:absolute;inset:-9px}
.edge i::before{content:"";position:absolute;right:-1px;top:50%;margin-top:-6px;border:6px solid transparent;border-left:8px solid var(--gold)}

/* ---------- lens frame (garland top, diyas bottom) ---------- */
#garland{position:absolute;top:calc(max(env(safe-area-inset-top),10px) + 26px);left:-1.5%;width:103%;z-index:12;pointer-events:none;filter:drop-shadow(0 6px 6px #0004)}
.diya{position:absolute;bottom:max(env(safe-area-inset-bottom),12px);width:18cqw;max-width:86px;z-index:12;pointer-events:none}
.diya>img{display:block;width:100%;filter:drop-shadow(0 8px 8px #0006)}
.diya.l{left:3cqw}.diya.r{right:3cqw}
.flame{position:absolute;left:49.2%;bottom:61%;width:12%;height:41%;transform-origin:50% 96%;will-change:transform}
.flame svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;}
.flame .o{fill:url(#fo)}.flame .m{fill:url(#fm)}.flame .c{fill:url(#fc)}.flame .b{fill:#5a7dff;opacity:.45}
.flame .halo{position:absolute;left:50%;top:55%;width:520%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,#ffc24a66,#ff9a1f22 40%,#0000 70%);mix-blend-mode:screen}

/* ---------- top bar ---------- */
#top{position:absolute;top:0;left:0;right:0;z-index:20;display:flex;justify-content:space-between;align-items:center;padding:max(env(safe-area-inset-top),10px) var(--s3) 0;height:calc(max(env(safe-area-inset-top),10px) + 64px)}
.brand{background:#fffaf0f0;border-radius:16px;padding:6px 12px;box-shadow:0 4px 14px #0003;display:flex}
.brand img{height:42px;width:auto;display:block}
.chip{display:flex;align-items:center;gap:6px;padding:4px 12px 4px 4px;border-radius:99px;background:linear-gradient(180deg,#2a42dc,var(--navy2));color:#fff;box-shadow:0 0 0 2px var(--gold),0 6px 16px #0005;transition:opacity .3s,transform .3s}
.chip .dot{width:28px;height:28px;border-radius:50%;background:var(--cream);display:grid;place-items:center}
.chip .dot img{width:22px;height:22px;object-fit:contain}
.chip b{font-size:16px;font-weight:700}.chip i{font-style:normal;font-size:12px;opacity:.75;margin-left:-3px}
.chip.bump{animation:bump .4s}
@keyframes bump{40%{transform:scale(1.18)}}

/* ---------- glucose meter: one fixed scale on every screen ---------- */
#meter{position:absolute;right:var(--s3);top:var(--zt);bottom:var(--zb);width:30px;z-index:15;display:flex;flex-direction:column;align-items:center;gap:6px;transition:opacity .4s}
.tag{height:20px;flex:none;font:800 10.5px/20px Poppins;color:#fff;background:#e5352a;border-radius:99px;padding:0 8px;letter-spacing:.06em;box-shadow:0 3px 10px #e5352a88;visibility:hidden;white-space:nowrap}
.tag.on{visibility:visible;animation:pulse 1s infinite}
#meter .drop{flex:none;width:17px;height:22px;fill:var(--gold);filter:drop-shadow(0 2px 3px #0005);transition:fill .4s}
#meter .tube{flex:1;width:100%;border-radius:99px;background:linear-gradient(90deg,#0f1866,#1b2a99 50%,#0f1866);position:relative;overflow:hidden;box-shadow:0 0 0 2.5px var(--gold),0 8px 18px #0006,inset 0 2px 6px #0007}
#fill{position:absolute;left:3px;right:3px;bottom:3px;height:0;border-radius:99px;background:linear-gradient(0deg,#22b14c 0,#8fd13a 30%,#f6c42f 55%,#f37f1f 78%,#e5352a 100%);background-size:100% var(--tubeH,400px);background-position:bottom;transition:height .6s cubic-bezier(.3,1.5,.5,1);box-shadow:inset 0 0 0 1px #fff4,inset 4px 0 6px #fff5}
#meter em{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) rotate(-90deg);font:700 9.5px Poppins;letter-spacing:.16em;color:#fff;font-style:normal;white-space:nowrap;text-shadow:0 1px 3px #000a}
#meter.hot .drop{fill:#e5352a}
@keyframes pulse{50%{transform:scale(1.08)}}

/* ---------- HUD (inside the safe zone, above the diyas) ---------- */
#hud{position:absolute;left:0;width:100%;bottom:var(--zb);z-index:16;display:flex;flex-direction:column;align-items:center;gap:var(--s1);transition:opacity .3s;pointer-events:none}
#radar{width:58px;height:58px;border-radius:50%;position:relative;background:radial-gradient(circle,#101a6bcc 0 60%,#101a6be6);box-shadow:0 0 0 2px var(--gold),0 6px 16px #0006}
#radar::before{content:"";position:absolute;inset:13px;border-radius:50%;border:1px solid #ffffff33}
#radar .cone{position:absolute;left:50%;top:50%;width:29px;height:29px;margin-left:-14.5px;margin-top:-29px;background:linear-gradient(0deg,#ffd76a99,#ffd76a11);clip-path:polygon(50% 100%,15% 0,85% 0)}
#radar .me{position:absolute;left:50%;top:50%;width:8px;height:8px;margin:-4px;border-radius:50%;background:#fff;box-shadow:0 0 6px #fff}
#radar b{position:absolute;width:7px;height:7px;margin:-3.5px;border-radius:50%;background:var(--gold2);box-shadow:0 0 6px var(--gold)}
#hint{align-self:center;max-width:calc(100% - 2*var(--s4));text-align:center;background:#0b0f3ad9;color:#fff;font-size:12.5px;font-weight:600;padding:8px 16px;border-radius:99px;box-shadow:0 0 0 1px #ffffff2a}

/* ---------- screens: every screen lives between garland and diyas ---------- */
.screen{position:absolute;top:var(--zt);bottom:var(--zb);left:var(--s3);right:var(--s3);z-index:18;display:none;flex-direction:column;align-items:center;justify-content:center;gap:var(--s3);pointer-events:none}
.screen.show{display:flex}
.screen.with-meter{right:calc(var(--s3) + 30px + var(--s2))}
.screen.split{justify-content:space-between}
.screen>*{pointer-events:auto;flex:none}
.screen.show>*{animation:rise .55s cubic-bezier(.2,.9,.3,1.2) both}
.screen.show>*:nth-child(2){animation-delay:.08s}.screen.show>*:nth-child(3){animation-delay:.16s}.screen.show>*:nth-child(4){animation-delay:.24s}
@keyframes rise{from{opacity:0;translate:0 16px;scale:.97}to{opacity:1;translate:0 0;scale:1}}

/* cards */
.card{width:100%;background:var(--cream);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow),0 0 0 2px var(--gold)}
.card .head{background:radial-gradient(120% 140% at 0 0,#3550ea,var(--navy2));color:#fff;padding:var(--s3) var(--s3) calc(var(--s3) + 3px);position:relative;text-align:center}
.card .head::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,var(--gold),var(--gold2),var(--gold))}
.card h1,.card h2{margin:0;font-weight:700;letter-spacing:-.01em;font-size:18px;line-height:1.3}
.body{padding:var(--s3)}

.launch h1{font-size:20px}
.trio{display:flex;justify-content:center;gap:var(--s2);padding:var(--s1) 0 var(--s2)}
.trio span{width:22cqw;max-width:88px;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 32% 26%,#fff 0 10%,#fff0 30%),radial-gradient(circle,#fff6e2,#f6e4bb);box-shadow:inset 0 0 0 2px #fff,0 0 0 1.5px #f4b41e88,0 10px 18px -6px #0005;animation:float 3.4s ease-in-out infinite}
.trio span:nth-child(2){animation-delay:-1.1s}.trio span:nth-child(3){animation-delay:-2.2s}
.trio img{width:78%;height:78%;object-fit:contain;filter:drop-shadow(0 4px 4px #0004)}
.cta{margin:0 0 var(--s2);text-align:center;color:var(--navy);font-weight:700;font-size:15px}
.howto{display:flex;justify-content:center;text-align:center;gap:var(--s2);align-items:center;background:#f3ead4;border-radius:14px;padding:10px var(--s2);margin-bottom:var(--s3);color:var(--muted);font-size:12px;line-height:1.4}
.howto svg{flex:none;width:26px;height:26px;fill:none;stroke:var(--navy);stroke-width:1.7;stroke-linecap:round;animation:tilt 2.4s ease-in-out infinite}
@keyframes tilt{25%{transform:rotate(-14deg)}75%{transform:rotate(14deg)}}

/* buttons */
.btn{display:block;margin:0 auto;border:0;height:46px;min-width:150px;padding:0 28px;background:linear-gradient(180deg,#3049e2,var(--navy2));color:#fff;font:700 15px Poppins;letter-spacing:.01em;border-radius:99px;cursor:pointer;box-shadow:0 0 0 2px var(--gold),0 10px 20px -6px #1626a3cc;transition:transform .15s}
.btn:active{transform:scale(.95)}
.btn:disabled{opacity:.6}
.foot{width:100%;display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s2)}
.foot .btn{margin:0 0 var(--s1)}

/* risk card — both icons share one palette colour */
.row{display:flex;gap:var(--s2);padding:var(--s2) 0;align-items:flex-start}
.row:first-child{padding-top:0}.row:last-child{padding-bottom:0}
.row+.row{border-top:1px dashed #e4d3a6}
.row b{font-size:14px;color:var(--ink)}.row p{margin:3px 0 0;font-size:12px;line-height:1.45;color:var(--muted)}
.ic{flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#ffecd6;color:var(--orange)}
.ic svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}

/* plan card */
.plan .head{padding:10px var(--s3) 13px}
.plan h2{font-size:16px}
.choose{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:4px;font-size:17px;font-weight:700}
.choose img{width:min(58%,190px);height:auto;display:block;filter:drop-shadow(0 2px 4px #0b0f3a55)}
.plan .body{padding:10px}
.lead{background:linear-gradient(180deg,#ffc943,var(--gold));border-radius:14px;padding:7px var(--s2);font-weight:700;font-size:12.5px;line-height:1.35;color:#2a1d05;margin-bottom:var(--s1);text-align:center}
.stat{display:flex;align-items:center;gap:var(--s2);background:linear-gradient(180deg,#e2effd,#cfe3fa);border-radius:16px;padding:4px var(--s2) 4px var(--s1);margin-bottom:5px}
.stat>div{flex:1;text-align:center;color:var(--ink);line-height:1.1}
.stat small{display:block;font-weight:600;font-size:10.5px;color:var(--muted)}.stat strong{display:block;font-size:21px;font-weight:800;letter-spacing:-.02em}.stat span{font-weight:600;font-size:11px;display:block}
.stat sup{font-size:7.5px}
.stat .ic{width:36px;height:36px;box-shadow:0 0 0 2.5px #fff}
.stat .ic svg{stroke:#fff;stroke-width:1.8;width:21px;height:21px}
.o1{background:#f3ad18}.o2{background:var(--orange)}.o3{background:#242a6b}
.ar{width:18px;height:30px;display:block;clip-path:polygon(32% 0,68% 0,68% 55%,100% 55%,50% 100%,0 55%,32% 55%)}
.ar.y{background:#f3ad18}.ar.o{background:var(--orange)}.ar.n{background:#242a6b}
.refs{font-size:7px;line-height:1.3;margin:4px 2px 0;color:#444}

/* mascot + heart bubble */
.hero{position:relative;margin-top:6cqh;width:min(54cqw,36cqh);aspect-ratio:468/640;animation:none!important}
.hero.mid{width:min(42cqw,27cqh);margin-top:4cqh}
.hero.small{width:min(22cqw,14cqh);margin:0}
/* the shared mascot is moved and resized with transform only (compositor), never by changing width/layout */
#mascot{--x:0px;--y:0px;--s:1;position:absolute;left:0;top:0;z-index:19;width:200px;pointer-events:none;transform-origin:0 0;transform:translate(var(--x),var(--y)) scale(var(--s));will-change:transform;
  transition:transform .9s cubic-bezier(.65,0,.25,1),opacity .35s ease}
#mascot.off{opacity:0;transform:translate(var(--x),calc(var(--y) + 30px)) scale(calc(var(--s) * .85))}
#mascot.snap{transition:none}
#mascot>canvas{position:relative;z-index:2;display:block;width:100%;height:auto;animation:float 3.2s ease-in-out infinite}
#mascot::before{content:"";position:absolute;left:16%;right:16%;bottom:-1%;height:7%;border-radius:50%;background:radial-gradient(closest-side,#0008,#0000);z-index:0}   /* baked floor shadow instead of an animated drop-shadow filter */
/* heart bubble: plain image placed with percentages only (no centring transforms), so it sits identically in every engine */
.hbub{position:absolute;left:-25.6%;width:151.2%;top:4.3%;z-index:1;pointer-events:none;animation:breathe 3.2s ease-in-out infinite}
.hbub img{display:block;width:100%;height:auto}
.hero>img{position:relative;z-index:2;width:100%;filter:drop-shadow(0 14px 14px #0006);animation:float 3.2s ease-in-out infinite}
.spark{position:absolute;width:calc(var(--szp,8)*1%);left:var(--x);top:var(--y);margin:calc(var(--szp,8)*-.5%) 0 0 calc(var(--szp,8)*-.5%);z-index:3;pointer-events:none;animation:twinkle var(--d,2.2s) ease-in-out infinite;animation-delay:var(--dl,0s)}
.spark img{display:block;width:100%;height:auto}
@keyframes twinkle{0%,100%{transform:scale(.2) rotate(0deg);opacity:0}45%{transform:scale(1) rotate(20deg);opacity:1}55%{transform:scale(1) rotate(70deg);opacity:1}}
@keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.04)}}
@keyframes float{50%{transform:translateY(-8px)}}

/* speech bubbles */
.bubble{position:relative;z-index:5;width:86%;background:var(--cream);border-radius:var(--r);padding:var(--s3) var(--s4);text-align:center;color:var(--navy);font-weight:700;font-size:16px;line-height:1.4;box-shadow:0 0 0 2.5px var(--gold);filter:drop-shadow(0 12px 16px #0b0f3a59) drop-shadow(0 2px 3px #0b0f3a2e);margin-bottom:14px}
/* tail = gold triangle + cream triangle; the drop-shadow filter above shades body and tail as one shape */
.bubble.speech::before,.bubble.speech::after{content:"";position:absolute;left:50%;clip-path:polygon(0 0,100% 0,50% 100%)}
.bubble.speech::before{top:100%;width:32px;height:16px;margin-left:-16px;background:var(--gold)}
.bubble.speech::after{top:calc(100% - 1px);width:24px;height:12px;margin-left:-12px;background:var(--cream)}
.bubble.wide{width:100%;font-size:13px;font-weight:500;color:var(--ink);padding:var(--s3)}
.bubble.wide b{display:block;font-size:16px;color:var(--navy);margin-bottom:4px}
.wish{background:radial-gradient(120% 140% at 0 0,#3550ea,var(--navy2));color:#fff;font-weight:700;font-size:16px;text-align:center;padding:12px var(--s4);border-radius:16px;box-shadow:0 0 0 2.5px var(--gold),var(--shadow)}
.namecard{width:86%;background:#fff;border-radius:var(--r);padding:var(--s3) var(--s4) var(--s4);text-align:center;box-shadow:var(--shadow),0 0 0 3px var(--gold)}
.namecard small{display:block;font-size:11px;font-weight:700;letter-spacing:.22em;color:var(--navy);margin-bottom:8px}
.namecard img{display:block;width:100%;height:auto}
/* Rybelsus logo reveal on the Thank-you screen */
.logo-pop{width:80%;padding:12px 18px 14px;position:relative;overflow:hidden;opacity:0;transform:translateY(26px) scale(.86);transition:opacity .45s ease,transform .8s cubic-bezier(.2,1.35,.4,1)}
.screen.show>.logo-pop{animation:none}
.logo-pop.in{opacity:1;transform:none}
.logo-pop::after{content:"";position:absolute;top:-10%;bottom:-10%;left:-60%;width:38%;background:linear-gradient(100deg,#fff0,#ffffffd9,#fff0);transform:skewX(-18deg);pointer-events:none}
.logo-pop.in::after{animation:shine 1.2s .55s ease-out 1 both}
@keyframes shine{from{left:-60%}to{left:140%}}
.actions{display:flex;justify-content:center;gap:var(--s1)}
.ghost{display:flex;align-items:center;gap:6px;height:36px;border:0;background:#0b0f3aa8;color:#fff;font-size:12px;font-weight:600;border-radius:99px;padding:0 14px;cursor:pointer;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 0 0 1px #ffffff40}
.ghost svg{width:15px;height:15px;fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* ---------- last two screens: logo moves to the footer between the diyas ---------- */
.brand{transition:opacity .5s}
#footBrand{position:absolute;left:50%;bottom:calc(max(env(safe-area-inset-bottom),12px) + 6px);transform:translateX(-50%);z-index:12;opacity:0;pointer-events:none}
#footBrand img{height:40px}
#stage.end #footBrand{opacity:1}
#stage.end #top .brand{opacity:0;visibility:hidden}
#replay svg{fill:none}

/* ---------- prescribing text: full-width block under a small mascot ---------- */
#stage.end #veil{background-color:#080c3a73}   /* night tint so the fireworks glow */
#stage.isi #veil{background-color:#ffffffb8}
#stage.isi #fwc{z-index:13;opacity:.75}   /* looping behind the prescribing text */
.isi-screen{justify-content:flex-start;gap:var(--s2)}
.isi-screen .hero.tiny{width:min(15cqw,9.5cqh);margin:0}
#isiText{flex:1 1 auto;min-height:0;width:100%;overflow-y:auto;scrollbar-width:none;padding:0 2px;font-size:4.5px;line-height:1.25;color:#1b1f3b;text-shadow:0 0 4px #ffffffd0;touch-action:pan-y}
#isiText::-webkit-scrollbar{display:none}
#isiText p{margin:0}
#isiText p.gap{margin-top:.9em}
#isiText b{font-weight:700;color:#0e1230}
#isiText sup{font-size:.7em;line-height:0}

#rotate{display:none}
@media (orientation:landscape) and (max-height:500px){#rotate{display:grid;place-items:center;position:fixed;inset:0;z-index:99;background:#101a6b;color:#fff;font-weight:600}}

/* top-right group: counter + sound toggle */
.tr{display:flex;align-items:center;gap:6px}
#replay.off{display:none}   /* hidden replay must not leave a gap between the pill and the sound button */
.roundbtn{width:36px;height:36px;padding:0;border:0;border-radius:50%;display:grid;place-items:center;background:linear-gradient(180deg,#2a42dc,var(--navy2));box-shadow:0 0 0 2px var(--gold),0 6px 16px #0005;cursor:pointer;transition:opacity .3s,transform .15s}
.roundbtn:active{transform:scale(.92)}
.roundbtn svg{width:20px;height:20px;fill:#fff;stroke:#fff;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.roundbtn svg .w,.roundbtn svg .x{fill:none}
.roundbtn svg .x{display:none}
.roundbtn[aria-pressed="true"] svg .w{display:none}
.roundbtn[aria-pressed="true"] svg .x{display:inline}
