/* Soft Pop: presentation only. Puzzle geometry and competition rules stay in their modules. */
@font-face{font-family:Nunito;src:url('assets/soft-pop/Nunito.ttf') format('truetype');font-weight:200 1000;font-style:normal;font-display:swap}
:root{color-scheme:light;--bg:#fff8f2;--panel:#fffaf6;--panel2:#f1eafb;--cream:#382263;--muted:#726383;--felt1:#e5daee;--felt2:#cfc0df;--gold:#7545cc;--gold2:#5732a6;--line:#73529422;--pop-shadow:0 12px 30px #67407e12,0 2px 4px #67407e12}
html,body{background:var(--bg);color:var(--cream);font-family:Nunito,'Segoe UI',sans-serif}
.app{background:radial-gradient(ellipse at 95% 5%,#e8ddfa88,transparent 35%),radial-gradient(ellipse at 0 35%,#ffe4d788,transparent 40%),#fff8f2}
button,input,select{font-family:inherit;accent-color:#7545cc}
button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #7644c5;outline-offset:4px}
button:disabled{opacity:.5;cursor:default;box-shadow:none}
.topbar{height:84px;background:#fffaf5ed;border-bottom:1px solid #fff;box-shadow:0 4px 20px #64488708;padding:0 32px}
.brandName{font:1000 36px/1 Nunito,sans-serif;letter-spacing:-1.6px;color:#6740ae;text-shadow:0 2px 0 #cfbce9,0 4px 5px #6c458326}
.brandIcon{width:42px;height:42px;background:linear-gradient(145deg,#ffc6b4,#f4a58e);border-radius:15px;display:grid;place-items:center;box-shadow:inset 0 2px 2px #fff9,0 3px 4px #91547225;transform:rotate(-9deg)}
.brandTag{font:800 10px/1.45 Nunito,sans-serif;color:#76608b;border-color:#d9c9e7;letter-spacing:.05em}
.navBtn{font-weight:800;color:#71617f;border-radius:15px}.navBtn:hover{background:#f0e7fa}.navBtn.active{background:#ece0fa;color:#59349f;border-color:#dfccef;box-shadow:inset 0 1px 0 #fff}
.iconBtn,.softBtn,.hudBtn,.personalEditor .softBtn,.personalBackupDialog .softBtn,.personalDeleteDialog .softBtn,.personalBackupDialog .iconBtn{color:#4b3272;background:linear-gradient(160deg,#fffcf9,#f0e7ed);border:1px solid #fff;border-radius:15px;box-shadow:inset 0 2px 1px #fff,0 3px 5px #6b4b7620;font-weight:800;transition:background .16s,box-shadow .16s,translate .16s}
.iconBtn:hover,.softBtn:hover,.hudBtn:hover{background:linear-gradient(160deg,#fff,#eaddf5);box-shadow:inset 0 2px 1px #fff,0 5px 9px #6b4b7626}
.primaryBtn,.personalEditor .primaryBtn,.personalBackupDialog .primaryBtn{color:white;background:linear-gradient(155deg,#a071ec,#7244ce 65%,#6538bc);border:1px solid #b994ed;border-radius:17px;box-shadow:inset 0 2px 2px #ffffff65,0 4px 0 #57339c,0 7px 14px #7950ac30;font-weight:900;padding:13px 23px;text-shadow:0 1px 1px #49267755}
.primaryBtn:hover,.personalEditor .primaryBtn:hover{background:linear-gradient(155deg,#ac80f0,#8250d7 65%,#7243c5)}
button:not(:disabled):active{translate:0 2px}.primaryBtn:active{box-shadow:inset 0 2px 4px #52298725,0 1px 0 #57339c}
.eyebrow{font:900 11px/1.5 Nunito,sans-serif;letter-spacing:.15em;color:#8861a4}
.galleryWrap{max-width:1240px;padding-top:26px}.galleryHeading h1,.completeBody h1{font:1000 clamp(32px,4.3vw,58px)/1.06 Nunito,sans-serif;letter-spacing:-1.6px;color:#4e2d86}.galleryHeading p{font-size:17px}
.softPopHero{position:relative;display:grid;grid-template-columns:1.1fr 1fr;gap:8px;background:#fffaf6;border:1px solid white;border-radius:32px;padding:30px 36px;overflow:hidden;box-shadow:var(--pop-shadow);margin:20px 0 32px;min-height:330px}
.softPopHero>div{position:relative;z-index:1}.softPopHero>.softBtn{justify-self:start;grid-column:1;font-size:12px}.softPopHero p{max-width:450px}.softPopHero h1{margin:12px 0 18px}.softPopHero .primaryBtn{margin:6px 0 10px}.softPopMascot{width:115%;height:auto;max-height:350px;object-fit:contain;justify-self:center;mix-blend-mode:multiply;pointer-events:none;mask-image:radial-gradient(ellipse at center,#000 45%,transparent 73%)}
.playerStrip{background:linear-gradient(115deg,#f0e5fa,#fff1e8);border:1px solid white;border-radius:22px;padding:16px 22px;box-shadow:0 3px 10px #7656820a;margin-bottom:22px}.playerStrip .eyebrow{margin:0}.playerStrip strong{font-weight:900;color:#57378b}.playerStrip .softBtn{font-size:12px}
.playerStrip .playerIdentity{min-width:190px}.playerJourney{display:flex;align-items:center;gap:11px;min-width:265px;padding:9px 13px 9px 9px;border:1px solid #fff;border-radius:18px;background:linear-gradient(125deg,#fffaf6,#ebe1f7);box-shadow:inset 0 2px 5px #fff9,0 3px 8px #714e8010}.journeyLevel{display:grid;place-items:center;flex:none;width:43px;height:43px;border-radius:15px;background:linear-gradient(145deg,#a570e5,#7240ba);box-shadow:inset 0 2px 2px #ffffff66,0 3px 0 #593092;color:#fff;font:1000 21px/1 Nunito,sans-serif}.journeyCopy{display:grid;min-width:0;flex:1;gap:2px}.journeyCopy .eyebrow{font-size:9px;color:#8c729f}.journeyCopy strong{font-size:14px;line-height:1.15}.journeyTrack{height:11px;margin-top:4px;overflow:hidden;border-radius:999px;background:#dfeee6;box-shadow:inset 0 1px 3px #55726422}.journeyFill{display:flex;align-items:center;justify-content:flex-end;gap:7px;width:0;height:100%;overflow:hidden;border-radius:inherit;background:linear-gradient(90deg,#8bd5b5,#ad7ae6);box-shadow:inset 0 1px 2px #fff8;transition:width .65s cubic-bezier(.2,.8,.2,1)}.journeyFill i{flex:none;color:#fff9;font-size:7px;font-style:normal}.journeyCopy small{color:#806b90;font-size:10px;font-weight:800;line-height:1.25}.journeyCopy .journeyMilestone{margin-top:2px;color:#6f5790;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.libraryFilters{color:#766482}.libraryFilters select,#pieceCount,.leaderDialog select,.boardSearch input,.personalControls input,.personalControls select{color:#4c326f;background:#fffaf6;border:1px solid #d9c9e6;border-radius:13px;box-shadow:inset 0 2px 4px #66418d09;font:700 14px Nunito,sans-serif;padding:11px 14px}
.motifGrid{gap:24px;grid-template-columns:repeat(3,minmax(0,1fr))}.motifCard{border:5px solid #fffaf6;border-radius:25px;background:#fffaf6;box-shadow:var(--pop-shadow);color:#442c6b}.motifCard:hover{border-color:#e6d5f9;box-shadow:0 16px 30px #67407e20}.motifCard img{border-radius:19px;aspect-ratio:4/3}.motifCaption{padding:16px 13px;gap:8px}.motifCaption strong{font:900 21px/1.15 Nunito,sans-serif}.motifCaption small{font-size:12px}.motifStatus{color:#7140ae;font-weight:800;font-size:11px}
.continuePanel{background:linear-gradient(120deg,#e3f1e8,#faf4ea);border:1px solid white;border-radius:25px;box-shadow:var(--pop-shadow)}.continuePanel h2,.motifInfo h2,.playTitle h2,.modalHead h3,.settingGroup h4,.referenceTitle,.resultBox b{font-family:Nunito,sans-serif;font-weight:900;color:#4e3275}.continuePanel img{border-radius:18px}
#motifDialog,.leaderDialog,.modal,.personalEditor,.personalDeleteDialog,.personalBackupDialog{background:linear-gradient(145deg,#fffaf6,#f8effb);color:#483167;border:1px solid white;border-radius:27px;box-shadow:0 25px 90px #4c2f6550}
#motifDialog::backdrop,.leaderDialog::backdrop,.personalEditor::backdrop,.personalDeleteDialog::backdrop,.personalBackupDialog::backdrop,.modalBack{background:#46305d66;backdrop-filter:blur(8px)}
.motifPreview{background:#e9deef}.motifClose{background:#fffaf5}.motifInfo{padding:38px 25px 26px}.motifInfo h2{margin:10px 0;font-weight:1000}.motifInfo p{font-size:14px}.motifInfo .primaryBtn{width:100%}.motifMeta{color:#614580!important}
.puzzleBoard{border-color:#dcccE8}.puzzleBoard h3,.leaderDialog h2,.rankResult h3{font-weight:1000;letter-spacing:-.4px}.boardPeriods{background:#eee4f5;padding:5px;border-radius:17px;gap:4px}.boardPeriods button{flex:1;box-shadow:none;border-color:transparent;background:transparent;color:#69517d;border-radius:12px;padding:9px 7px}.boardPeriods button[aria-pressed=true]{background:linear-gradient(145deg,#9b6ae1,#7041c0);color:#fff;box-shadow:inset 0 1px 1px #ffffff70,0 2px 4px #5e378c28}
.boardTable{border-collapse:separate;border-spacing:0 6px}.boardTable th{color:#776088}.boardTable th,.boardTable td{border:0;padding:12px 8px}.boardTable td{background:#efe6f366}.boardTable td:first-child{border-radius:13px 0 0 13px;font-weight:1000;color:#784cac}.boardTable td:last-child{border-radius:0 13px 13px 0}.boardTable .me{background:transparent}.boardTable .me td{background:#ffe1ab;color:#553d64;font-weight:900}.boardBest,.boardOwn{color:#624181!important;background:#efe6f6;padding:10px 13px;border-radius:12px}.puzzleBoard small,.leaderDialog small{color:#7b6885}.boardTable td:nth-child(3){font-weight:900}.resultPositions{color:#7045ad}
.playShell{padding-top:16px}.playHead{height:62px}.playTitle small{font:11px Nunito,sans-serif;color:#786987}.playTitle h2{font-size:22px}.playStat{background:#f5edf9;border:1px solid white;color:#614876;font-size:12px;font-weight:800}
.stage{border:2px solid #fff;border-radius:27px;background:var(--table-pattern,none),radial-gradient(ellipse at 30% 0%,#dce8e6a8,transparent 65%),linear-gradient(var(--felt1),var(--felt2));box-shadow:inset 0 3px 14px #38595622,inset 0 -15px 45px #243f3b20,0 12px 35px #6c4c8215}.stage:before{background:repeating-linear-gradient(30deg,#ffffff09 0 1px,transparent 1px 5px)}.stage:after{background:radial-gradient(ellipse,transparent 60%,#29484524)}
.boardPlane{background:#fff9fc22;border-color:#ffffff44;box-shadow:0 12px 28px #65507518,inset 0 2px 6px #ffffff44}.boardPlane:before{border-color:#9f81b53d}.worldGrid{border-color:#8a6c9b12}
.hud{background:#fff9f5f5;border:1px solid white;border-radius:22px;box-shadow:0 8px 25px #64487f28;padding:10px;gap:7px}.hudBtn{font-size:12px;padding:0 12px}.hudBtn strong{color:#663dac;background:#e8d8f9;padding:2px 7px;border-radius:8px}.hudSep{background:#dbc9e6}.hudProgressTop{color:#766183}.progressBar{background:#dfd0eb;border-color:#d9c6e8}.progressFill{background:linear-gradient(90deg,#a57ae7,#7445bd)}.zoomGroup{background:#f3eaf6;border-color:#e2d2ec;border-radius:14px}.zoomGroup .hudBtn{box-shadow:none}.zoomGroup .hudBtn+.hudBtn{border-color:#ddcde7}#zoomValue{color:#5f4082}.previewBtn.active{background:#ddcdf3;color:#56318e;border-color:#c4a9e1}
.toast{background:#fffaf6;color:#533577;border:1px solid white;box-shadow:var(--pop-shadow);font-size:13px;font-weight:800}
.referenceBackdrop,.referenceOverlay.startMode .referenceBackdrop{background:#59406d70}.referenceCard{background:#fff8f2;border:1px solid white;box-shadow:0 22px 70px #4e336b50}.referenceCaption,.referenceEyebrow,.referenceHint,.referenceOverlay.startMode .referenceHint{color:#796085}.referenceTitle{color:#533476}.selectionMarquee{fill:#8054c018;stroke:#7244ac}
.modalHead{border-color:#e7d9ee}.settingGroup{background:#f3ebf7;border-color:#e5d7ed;border-radius:17px}.ctrl label,.ctrl output{color:#694d82;font-size:12px}.settingGroup h4{font-size:16px}.settingHint{margin:4px 0 0;color:#7a6788;font-size:11px;line-height:1.45}.confirmIcon{background:#f4dce1;border-color:#ecc3d0;color:#a34668}.confirmLead{font:900 17px Nunito,sans-serif;color:#533873}.confirmSub{color:#7a6788;font-size:13px}.dangerBtn,.personalDeleteDialog .primaryBtn{background:linear-gradient(#ce687a,#ae4058);color:white;border-color:#d48190;border-radius:14px}.confirmActions{border-color:#e3d5e9}
.completeWrap{background:radial-gradient(ellipse at 50% 0%,#e5d5f8,transparent 60%),#fff8f2}.completeCard{background:#fffaf6;border:1px solid white;border-radius:30px;box-shadow:var(--pop-shadow)}.completeImage:after{background:linear-gradient(0deg,#fffaf6,transparent 30%)}.completeBody h1{font-size:40px}.resultBox{background:#f0e6fa;border:1px solid #fff;border-radius:18px}.resultBox:nth-child(2){background:#e4f0e8}.resultBox small{color:#776584;font-size:12px}.resultBox b{font-size:26px}.completeBody{padding:28px}
.personalLibrary{color:#563b71}.personalCard{background:#fffaf6;border:1px solid white;border-radius:23px;box-shadow:var(--pop-shadow)}.personalCard img{border-radius:15px}.personalEditor .iconBtn{color:#553575}.backupPicture{border-color:#dfd1e9}#personalQuality{color:#825a39}
#bootScreen,#puzzlePause{background:radial-gradient(ellipse at 50% 25%,#e9dbfa,transparent 65%),#fff8f2;color:#503174}#bootScreen h1,#puzzlePause h1,#puzzlePause h2{font:1000 46px Nunito,sans-serif;letter-spacing:-1px}.personalEditor .primaryBtn:disabled{background:#e6dcec;color:#7b6988;border-color:#dacde4}.previousMotifs{color:#756180}
@media(max-width:1000px){.motifGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.softPopHero{padding:26px}.softPopHero h1{font-size:43px}.hud{max-width:calc(100% - 20px);flex-wrap:wrap;justify-content:center}.playShell{padding-bottom:135px}.brandTag{display:none}.topActions{min-width:40px}.brand{min-width:190px}}
@media(max-width:700px){.topbar{height:72px;padding:0 16px;gap:10px}.brandName{font-size:30px}.brand{min-width:0;gap:9px}.brandIcon{width:34px;height:34px;font-size:23px}.nav{display:flex;flex:0;gap:2px}.navBtn{padding:9px;font-size:12px}.topActions{min-width:34px}.topActions .iconBtn{width:34px;height:34px}.galleryWrap{padding:18px 14px 35px}.softPopHero{display:grid;grid-template-columns:1fr;padding:24px;margin-top:16px;gap:0}.softPopHero h1{font-size:42px}.softPopHero p{font-size:15px;max-width:350px}.softPopMascot{width:90%;max-height:210px;margin-top:-8px}.playerStrip{padding:14px;gap:10px}.playerStrip>div{gap:9px}.playerStrip .playerJourney{width:100%;min-width:0}.motifGrid{gap:14px}.motifCaption{padding:12px 7px;display:block}.motifCaption strong{font-size:18px}.motifStatus{text-align:left;margin-top:8px}.motifCard{border-width:4px;border-radius:20px}.motifCard img{border-radius:15px}.libraryFilters{align-items:flex-start;gap:10px}.libraryFilters label{display:grid;gap:7px}.libraryFilters select{margin:0}.libraryFilters>span{padding-top:10px;text-align:right}.playHead{height:auto;min-height:84px;align-items:flex-start;gap:8px;padding:4px 0 12px}.playTitle{min-width:0}.playTitle small{font-size:10px}.playTitle h2{font-size:18px}.playStats{justify-content:flex-end;max-width:160px}.playStats .softBtn{font-size:10px;padding:7px}.playStat{font-size:10px;padding:5px 7px}.playShell{padding:6px 8px 150px}.stage{min-height:360px;height:calc(100dvh - 295px);border-radius:20px}.hud{bottom:10px;gap:5px;padding:8px}.hudBtn{height:38px;font-size:11px;padding:0 9px}.hudSep{display:none}.hudProgress{display:none}.boardTable th,.boardTable td{padding:9px 4px}.motifInfo{padding:24px 18px}.boardPeriods button{font-size:11px;padding:9px 5px}.leaderDialog{padding:19px}.completeBody{padding:20px}}
@media(max-width:700px){.playHead{display:grid;grid-template-columns:1fr;gap:7px;min-height:88px}.playTitle small{display:none}.playStats{max-width:none;justify-content:flex-start;flex-wrap:nowrap;gap:6px}.playStats .softBtn{white-space:nowrap}.playStat{white-space:nowrap}.stage{height:calc(100dvh - 305px)}}
@media(max-width:380px){.motifGrid{grid-template-columns:1fr}.brandName{font-size:25px}.topbar{padding:0 10px}.brandIcon{display:none}}
.settingGroup label{color:#694d82!important;font-size:13px!important}
.leaderDialog #leaderTitle{margin:5px 48px 4px 0;font-size:28px;line-height:1.2}.boardSubtitle{margin:6px 0 20px;color:#7b628e;font-size:14px}.puzzleBoard h3.boardSubtitle{color:#503274;font-size:20px;margin-bottom:12px}
.boardSearchDisclosure{margin:12px 0;text-align:right}.boardSearchDisclosure summary,.boardRules summary{cursor:pointer;color:#76548e;font-size:13px;font-weight:800;list-style:none;border-radius:10px;padding:8px 2px}.boardSearchDisclosure summary::-webkit-details-marker,.boardRules summary::-webkit-details-marker{display:none}.boardSearchDisclosure .boardSearch{text-align:left;margin:6px 0 14px}.boardSearchDisclosure[open] summary{color:#59319a}.boardStatus{color:#85708f;font-size:12px;margin:8px 0}
.boardWelcome{text-align:center;padding:4px 8px 22px}.boardWelcome img{width:210px;max-width:80%;height:auto;display:block;margin:-4px auto -10px;mix-blend-mode:multiply;mask-image:radial-gradient(ellipse,#000 43%,transparent 72%)}.boardWelcome h3{font-size:23px;margin:12px 0 8px;color:#553480;font-weight:1000}.boardWelcome p{color:#806c8d;font-size:14px;margin:8px 0 20px}.boardWelcome .primaryBtn{margin-bottom:8px}.puzzleBoard .boardWelcome{padding-bottom:6px}.puzzleBoard .boardWelcome img{width:150px}.puzzleBoard .boardWelcome h3{font-size:19px}
.puzzlerList{list-style:none;padding:0;display:grid;gap:10px;margin:16px 0}.puzzlerCard{display:flex;align-items:center;gap:13px;background:linear-gradient(110deg,#fffaf6,#f0e7f8);border:1px solid #fff;border-radius:19px;padding:14px;box-shadow:0 3px 8px #714e8010}.puzzlerCard.isYou{background:linear-gradient(110deg,#fff0cb,#ffe1b9);border-color:#fff4db}.puzzlerRank{flex:none;width:35px;height:35px;display:grid;place-items:center;border-radius:50%;background:#e6d9f2;color:#6f4b94;font-size:15px;font-weight:1000;box-shadow:inset 0 2px 2px #ffffff99,0 2px 3px #63457620}.puzzlerRank[data-rank="1"]{background:linear-gradient(135deg,#ffe497,#eeb651);color:#80521b}.puzzlerRank[data-rank="2"]{background:linear-gradient(135deg,#f7f4fc,#c9c3d8);color:#656074}.puzzlerRank[data-rank="3"]{background:linear-gradient(135deg,#f8d9c2,#dfa984);color:#815235}.puzzlerIdentity{min-width:0;flex:1}.puzzlerIdentity strong{display:block;font-size:14px;line-height:1.3;overflow-wrap:anywhere}.puzzlerYou{display:block;color:#8a653c;font-size:11px;font-weight:800;margin-top:4px}.puzzlerScore{flex:none;text-align:right}.puzzlerScore strong{font-size:16px;font-weight:1000;font-variant-numeric:tabular-nums}.puzzlerScore small{color:#85708e;font-size:11px;display:block;margin-top:3px}.boardOwnCard{display:block;width:100%;text-align:left;padding:14px 16px;border-radius:16px;background:#e8ddf5;border:1px solid #d9c8ec;color:#633d94;font:800 14px Nunito,sans-serif;cursor:pointer;margin:12px 0}.boardOwnCard:hover{background:#e0cdef}.boardRules{border-top:1px solid #e6d9ee;margin-top:18px;padding-top:4px}.boardRules p,.boardRules label{color:#7b6688;font-size:12px;line-height:1.7}.boardRules select{max-width:100%}.srOnly{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:700px){.leaderDialog #leaderTitle{font-size:25px}.puzzlerCard{padding:12px 9px;gap:9px}.puzzlerRank{width:29px;height:29px;font-size:13px}.puzzlerIdentity strong{font-size:12px}.puzzlerScore strong{font-size:14px}.boardWelcome h3{font-size:21px}.boardWelcome img{width:190px}}
@media(max-width:700px) and (max-height:700px){.stage{min-height:240px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

#delightLayer{position:fixed;z-index:5000;inset:0;pointer-events:none;display:grid;place-items:center;padding:24px}.delightPuff{max-width:min(86vw,360px);padding:13px 21px;border:1px solid #fff;border-radius:999px;background:linear-gradient(130deg,#fff7e5,#eadcff);box-shadow:0 12px 28px #59357c2b;color:#583186;font:1000 17px/1.15 Nunito,sans-serif;text-align:center;animation:delightPuff 1.12s cubic-bezier(.2,.8,.2,1) both}.delight-snap{font-size:15px}.delight-milestone{background:linear-gradient(130deg,#e4f5eb,#eee1fb)}.delight-achievement{background:linear-gradient(130deg,#ffeab3,#f0dfff);font-size:18px}.delight-still{animation:none}@keyframes delightPuff{0%{opacity:0;transform:translateY(14px) scale(.9)}18%{opacity:1;transform:translateY(0) scale(1.04)}38%{transform:translateY(0) scale(1)}100%{opacity:0;transform:translateY(-11px) scale(.98)}}

/* Game feel: local snap energy, quieter chrome and an above-the-fold reward screen. */
#delightEffects{position:fixed;z-index:4900;inset:0;pointer-events:none;overflow:hidden}.delightBurst{--burst-size:1;position:absolute;width:54px;height:54px;margin:-27px 0 0 -27px;border:3px solid #fff1a8;border-radius:50%;filter:drop-shadow(0 2px 5px #7f4ba866);transform:scale(var(--burst-size));animation:snapRing .7s cubic-bezier(.15,.75,.2,1) both}.delightBurst i{position:absolute;left:24px;top:24px;width:7px;height:7px;border-radius:2px;background:#ffd36f;box-shadow:0 1px 2px #71467b33;animation:snapSpark .68s ease-out both}.delightBurst i:nth-child(1){--dx:38px;--dy:0}.delightBurst i:nth-child(2){--dx:20px;--dy:32px;background:#9fddbd}.delightBurst i:nth-child(3){--dx:-20px;--dy:32px;background:#c99aef}.delightBurst i:nth-child(4){--dx:-38px;--dy:0}.delightBurst i:nth-child(5){--dx:-20px;--dy:-32px;background:#9fddbd}.delightBurst i:nth-child(6){--dx:20px;--dy:-32px;background:#c99aef}#delightEffects[data-intensity="calm"] .delightBurst i,.shopEffectStage[data-intensity="calm"] .delightBurst i{display:none}#delightEffects[data-intensity="arcade"] .delightBurst,.shopEffectStage[data-intensity="arcade"] .delightBurst{filter:drop-shadow(0 2px 8px #7f4ba899) saturate(1.2)}@keyframes snapRing{0%{opacity:0;transform:scale(calc(var(--burst-size)*.35))}24%{opacity:1}100%{opacity:0;transform:scale(calc(var(--burst-size)*1.45))}}@keyframes snapSpark{0%{opacity:0;transform:translate(0,0) rotate(0)}25%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(80deg)}}
.delightBurst.delight-still{animation:none;opacity:.55}.delightBurst.delight-still i{display:none}
.playStats .quietAction{font-size:11px;padding:8px 12px;opacity:.72}.playStats .quietAction:hover{opacity:1}.playTitle small{transition:opacity .5s ease}.playerStrip .playerIdentity{flex:0 1 430px}.playerJourney{flex:0 1 290px}.playerChallenges{flex:0 1 210px;display:grid;gap:3px;padding:11px 14px;border-radius:16px;background:#f4ecfa;border:1px solid #e4d4ee;color:#5d4078}.playerChallenges strong{font-size:14px}.playerChallenges small{font-size:12px;color:#7b628d}.playerChallenges .challengePeriod{font-weight:800;color:#8b699d}.feedbackChoice{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.feedbackChoice select{min-width:130px;padding:8px 30px 8px 10px;border:1px solid #d8c8e4;border-radius:11px;background:#fffaf6;color:#583b74;font:800 12px Nunito,sans-serif}
.completeCard{width:min(700px,100%)}.completeImage{height:clamp(180px,29vh,250px);aspect-ratio:auto!important}.completeBody{padding:18px 24px 20px}.completeBody h1{font-size:34px}.resultGrid{margin:15px 0;gap:9px}.resultBox{padding:12px}.rankResult{margin:12px 0}.rankResult>*{animation:rewardRise .42s cubic-bezier(.2,.8,.2,1) both}.rankResult>*:nth-child(2){animation-delay:.08s}.rankResult>*:nth-child(3){animation-delay:.16s}.rankResult>*:nth-child(4){animation-delay:.24s}.completeActions{margin-top:10px}@keyframes rewardRise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media(max-height:760px) and (min-width:701px){.completeWrap{padding:12px}.completeImage{height:190px}.completeBody{padding:14px 20px}.completeBody h1{font-size:30px}.resultGrid{margin:11px 0}.rankResult{margin:8px 0}.completeActions .softBtn,.completeActions .primaryBtn{padding:10px 16px}}
@media(max-width:700px){.playStats .quietAction{display:none}.completeImage{height:210px}.completeBody h1{font-size:30px}.playerStrip .playerIdentity{flex-basis:100%}}

/* Five deliberately different snap personalities. Mixed mode avoids repeats. */
.feedbackPicker{display:flex;gap:6px;align-items:center}.feedbackPicker select{min-width:146px}.feedbackPicker button{border:1px solid #d8c8e4;border-radius:10px;padding:8px 10px;background:#fff;color:#68428d;font:900 11px Nunito,sans-serif;cursor:pointer}.feedbackPicker button:hover{background:#fff5cf}.delightBurst b{display:none}
.effect-ripple{border:0;filter:none;animation:none}.effect-ripple i{display:block!important;left:50%;top:50%;width:22px;height:22px;margin:-11px;border:3px solid #c99aef;border-radius:50%;background:transparent!important;box-shadow:none;animation:softRipple .88s ease-out both}.effect-ripple i:nth-child(2){animation-delay:.12s;border-color:#89d2ae}.effect-ripple i:nth-child(3){animation-delay:.24s;border-color:#ffd36f}.effect-ripple i:nth-child(n+4){display:none!important}@keyframes softRipple{0%{opacity:.9;transform:scale(.25)}100%{opacity:0;transform:scale(3.3)}}
.effect-bubbles{border:0;filter:none;animation:none}.effect-bubbles i{--bx:0;--by:-50px;display:block;left:24px;top:28px;width:14px;height:14px;border:2px solid #fff;background:#9fddbd;border-radius:50%;box-shadow:0 2px 7px #734d8b33;animation:bubbleLift .9s cubic-bezier(.18,.75,.2,1) both}.effect-bubbles i:nth-child(1){--bx:-34px;--by:-38px}.effect-bubbles i:nth-child(2){--bx:-14px;--by:-58px;width:9px;height:9px;background:#c99aef}.effect-bubbles i:nth-child(3){--bx:9px;--by:-46px}.effect-bubbles i:nth-child(4){--bx:31px;--by:-62px;width:11px;height:11px;background:#ffd36f}.effect-bubbles i:nth-child(5){--bx:42px;--by:-32px}.effect-bubbles i:nth-child(6){--bx:-43px;--by:-68px;width:8px;height:8px;background:#ffd36f}@keyframes bubbleLift{0%{opacity:0;transform:translate(0,8px) scale(.3)}20%{opacity:.95}100%{opacity:0;transform:translate(var(--bx),var(--by)) scale(1.15)}}
.effect-star{border:0;filter:drop-shadow(0 2px 7px #7f4ba877);animation:none}.effect-star b{display:block;position:absolute;inset:-15px;color:#ffe17d;font:900 72px/84px serif;text-align:center;animation:starBloom .82s cubic-bezier(.18,.8,.2,1) both}.effect-star b::before{content:'✦'}.effect-star i{left:25px;top:25px;width:4px;height:19px;border-radius:4px;background:#fff7ba;transform-origin:2px 2px;animation:starRay .7s ease-out both}.effect-star i:nth-child(1){rotate:0deg}.effect-star i:nth-child(2){rotate:60deg}.effect-star i:nth-child(3){rotate:120deg}.effect-star i:nth-child(4){rotate:180deg}.effect-star i:nth-child(5){rotate:240deg}.effect-star i:nth-child(6){rotate:300deg}@keyframes starBloom{0%{opacity:0;transform:scale(.15) rotate(-25deg)}40%{opacity:1;transform:scale(1.05) rotate(5deg)}100%{opacity:0;transform:scale(.72) rotate(18deg)}}@keyframes starRay{0%{opacity:0;transform:translateY(0) scaleY(.2)}30%{opacity:1}100%{opacity:0;transform:translateY(-48px) scaleY(.75)}}
.effect-confetti{border:0;filter:none;animation:none}.effect-confetti i{--cx:0;--cy:55px;--cr:180deg;display:block;left:24px;top:20px;width:8px;height:15px;border-radius:2px;background:#8652d6;animation:confettiPop .92s cubic-bezier(.16,.7,.25,1) both}.effect-confetti i:nth-child(1){--cx:-46px;--cy:42px;--cr:-210deg;background:#ffcf66}.effect-confetti i:nth-child(2){--cx:-24px;--cy:66px;--cr:150deg;background:#72cda1}.effect-confetti i:nth-child(3){--cx:7px;--cy:72px;--cr:-130deg;background:#ed8aaa}.effect-confetti i:nth-child(4){--cx:31px;--cy:61px;--cr:240deg;background:#ffcf66}.effect-confetti i:nth-child(5){--cx:48px;--cy:37px;--cr:-180deg;background:#72cda1}.effect-confetti i:nth-child(6){--cx:-4px;--cy:49px;--cr:310deg}@keyframes confettiPop{0%{opacity:0;transform:translate(0,12px) rotate(0) scale(.4)}22%{opacity:1;transform:translate(0,-35px) rotate(55deg) scale(1)}100%{opacity:0;transform:translate(var(--cx),var(--cy)) rotate(var(--cr)) scale(.8)}}
.effect-petal-pop{border-color:#f3badb;filter:drop-shadow(0 2px 7px #d56aab66)}.effect-petal-pop i{width:9px;height:13px;border-radius:9px 9px 3px 9px;background:#f4a9d0;animation:petalPop .78s ease-out both}.effect-petal-pop i:nth-child(2n){background:#f7d27c}.effect-petal-pop i:nth-child(1){--dx:31px;--dy:-21px}.effect-petal-pop i:nth-child(2){--dx:35px;--dy:18px}.effect-petal-pop i:nth-child(3){--dx:0;--dy:37px}.effect-petal-pop i:nth-child(4){--dx:-33px;--dy:17px}.effect-petal-pop i:nth-child(5){--dx:-29px;--dy:-23px}.effect-petal-pop i:nth-child(6){--dx:0;--dy:-39px}@keyframes petalPop{0%{opacity:0;transform:translate(0,0) rotate(0) scale(.3)}25%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(90deg) scale(1)}}.effect-soft-glow{border-color:#fff2b2;box-shadow:0 0 20px #ffe79d99,inset 0 0 18px #fff9ceaa;animation:softGlow .86s ease-out both}.effect-soft-glow i{display:none}@keyframes softGlow{0%{opacity:0;transform:scale(calc(var(--burst-size)*.3))}35%{opacity:1;transform:scale(calc(var(--burst-size)*1.1))}100%{opacity:0;transform:scale(calc(var(--burst-size)*1.65))}}
#delightEffects[data-intensity="arcade"] .effect-star b{font-size:82px}#delightEffects[data-intensity="arcade"] .effect-confetti i,#delightEffects[data-intensity="arcade"] .effect-bubbles i{filter:saturate(1.3)}
.delightBurst.delight-still.effect-ripple i,.delightBurst.delight-still.effect-bubbles i,.delightBurst.delight-still.effect-star i,.delightBurst.delight-still.effect-confetti i{display:none!important}.delightBurst.delight-still.effect-star b{animation:none;opacity:.65}
.dailyReward{display:inline-block;padding:7px 12px;border-radius:999px;background:#fff1b8;color:#694681;font-weight:900;box-shadow:0 5px 14px #9c6f3622}
.journeyCopy .journeyMilestone{display:flex;align-items:center;justify-content:space-between;gap:7px;margin-top:3px;overflow:visible;white-space:normal;color:#6f5790;font-size:10px;font-weight:800}.claimReward{padding:6px 9px;font-size:10px;white-space:nowrap}.challengeCard .claimReward{justify-self:start;margin-top:5px}

/* Phone gameplay uses the available viewport, including Safari toolbar changes. */
.soundTestStatus{font-size:12px;line-height:1.5;margin:8px 0 0;color:#5b4b6b}
@media(max-width:700px), (max-height:500px) and (pointer:coarse){
 body.playing{overflow:hidden;overscroll-behavior:none}
 body.playing .topbar{display:none}
 body.playing #screen-play.active{display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden;padding:env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left)}
 body.playing .playShell{display:flex;flex-direction:column;flex:1;min-height:0;width:100%;padding:4px 4px 0}
 body.playing .playHead{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;height:auto;min-height:0;padding:2px 6px 6px;flex:none}
 body.playing .playTitle{flex:1;min-width:90px}
 body.playing .playTitle small{display:none}
 body.playing .playTitle h2{font-size:15px;line-height:1.2;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
 body.playing .playStats{display:flex;max-width:none;gap:4px;align-items:center;flex-wrap:nowrap}
 body.playing .playStats .quietAction{display:none}
 body.playing .playStats .softBtn{min-height:44px;min-width:44px;padding:6px 8px;font-size:11px}
 body.playing .playStat{font-size:10px;white-space:nowrap;padding:4px}
 body.playing .stage{flex:1;min-height:0;height:auto;width:100%;border-radius:14px;touch-action:none}
 body.playing #screen-play .hud{position:static;transform:none;flex:none;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;width:100%;max-width:none;margin:0;gap:3px;padding:5px 4px max(5px,env(safe-area-inset-bottom));border-radius:0;box-shadow:none}
 body.playing .hudSep,body.playing .hudProgress{display:none}
 body.playing .hudBtn{height:44px;min-width:44px;font-size:11px;padding:0 8px}
 body.playing .zoomGroup .hudBtn{min-width:44px;padding:0 8px}
}

/* In mixed mode the shaped seam is the signature; sparks are a small accent. */
.delightBurst.snapAccent{border:0;filter:none;animation:none}
.delightBurst.snapAccent i{width:4px;height:4px;border-radius:50%;background:#fff1b6;box-shadow:0 0 3px #eeb65766;animation:snapAccent .42s ease-out both}
.delightBurst.snapAccent i:nth-child(1){--ax:12px;--ay:-15px}.delightBurst.snapAccent i:nth-child(2){--ax:-13px;--ay:-10px}.delightBurst.snapAccent i:nth-child(3){--ax:17px;--ay:7px}.delightBurst.snapAccent i:nth-child(4){--ax:-15px;--ay:9px}.delightBurst.snapAccent i:nth-child(5){--ax:2px;--ay:-21px}.delightBurst.snapAccent i:nth-child(6){--ax:-3px;--ay:18px}
@keyframes snapAccent{0%{opacity:0;transform:translate(0,0) scale(.4)}25%{opacity:.8}100%{opacity:0;transform:translate(var(--ax),var(--ay)) scale(.3)}}

/* G5: feedback sits beside the controls, leaving the working picture clear. */
#delightLayer[data-position="hud"]{place-items:end center;padding:0 12px var(--feedback-bottom,100px)}
#delightLayer[data-position="result"]{place-items:start center;padding-top:calc(96px + env(safe-area-inset-top,0px))}
.delightPuff{animation-duration:var(--puff-ms,1100ms);font-size:15px;line-height:1.4}
.completionSkip{position:absolute;right:18px;bottom:20px;z-index:50;pointer-events:auto;padding:10px 18px;border-radius:999px;background:#fff8ef;color:#4c3169;box-shadow:0 4px 14px #0002}
.segment.completedPuzzle{animation:none;filter:drop-shadow(0 8px 8px rgba(13,23,22,.22))}
.segment.completedPuzzle .pieceOverlay,.segment.completedPuzzle .segment-bevel{opacity:0;transition:opacity .32s ease}
.segment.completedPuzzle.completionSweep:after{content:"";position:absolute;inset:var(--completion-pad,0px);pointer-events:none;z-index:4;
 background:linear-gradient(115deg,transparent 38%,rgba(255,248,226,.16) 49%,transparent 60%);background-size:260% 100%;animation:completionSheen .78s cubic-bezier(.25,.65,.3,1) both}
@keyframes completionSheen{0%{background-position:130% 0;opacity:0}20%{opacity:1}80%{opacity:1}100%{background-position:-30% 0;opacity:0}}
.segment.materialReducedMotion.completedPuzzle .pieceOverlay,.segment.materialReducedMotion.completedPuzzle .segment-bevel{transition:none}
@media(prefers-reduced-motion:reduce){.segment.completedPuzzle .pieceOverlay,.segment.completedPuzzle .segment-bevel{transition:none}.segment.completedPuzzle.completionSweep:after{animation:none;opacity:0}.completeCard,.completeImage:after,.delightPuff{animation:none!important}}

.completionPicture{position:absolute;z-index:3;pointer-events:none;animation:completionSurfaceIn .3s ease both}
@keyframes completionSurfaceIn{from{opacity:0}to{opacity:1}}
.materialReducedMotion .completionPicture{animation:none}
@media(prefers-reduced-motion:reduce){.completionPicture{animation:none}}

/* J pilot: finite celebrations animate only small layers, never piece coordinates. */
.completionLift .completionPicture{animation:joyPictureLift .92s cubic-bezier(.22,.75,.25,1) both;transform-origin:center}
@keyframes joyPictureLift{0%,100%{transform:translateY(0) rotate(0) scale(1)}35%{transform:translateY(-5px) rotate(-.8deg) scale(1.012)}70%{transform:translateY(-2px) rotate(.5deg) scale(1.005)}}
.completeImage.victoryImage{isolation:isolate;background-color:#e6dbf2}
.victoryImage:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 50% 30%,#fff0bb,#e6dbf2 74%);z-index:0}
.victoryImage:after{z-index:3;pointer-events:none}
.victoryPortrait{position:absolute;top:6%;left:50%;height:88%;width:auto;max-width:84%;translate:-50% 0;z-index:1;background-size:contain;background-repeat:no-repeat;background-color:#fffaf0;background-position:center;border:3px solid #fffaf0;border-radius:14px;box-shadow:0 6px 14px #47346138;transform-origin:50% 62%;animation:joyPortrait 4.2s ease-out both;pointer-events:none}
.victoryPortraitRest{animation:none;transform:none}
@keyframes joyPortrait{0%{opacity:0;transform:translateY(10px) rotate(-2deg) scale(.94)}15%{opacity:1;transform:translateY(-2px) rotate(1.7deg) scale(1.015)}36%{transform:rotate(-1.4deg)}60%{transform:rotate(.9deg)}82%{transform:rotate(-.45deg)}100%{opacity:1;transform:none}}
.victorySky{position:absolute;inset:0;z-index:4;pointer-events:none;overflow:hidden;contain:layout style}
.victoryFirework{position:absolute;width:0;height:0}
.victorySpark{position:absolute;width:5px;height:12px;border-radius:999px;background:var(--spark-color);opacity:0;animation:joySpark .82s cubic-bezier(.15,.65,.25,1) both}
@keyframes joySpark{0%{opacity:0;transform:translate(0,0) scale(.2)}15%{opacity:1}70%{opacity:.85}100%{opacity:0;transform:translate(var(--flight-x),var(--flight-y)) rotate(120deg) scale(.45)}}
.victoryStar{position:absolute;width:32px;height:32px;object-fit:contain;opacity:0;animation:joyStar 1.25s ease-out both}
@keyframes joyStar{0%{opacity:0;transform:translateY(12px) scale(.2)}18%{opacity:1;transform:scale(1.12)}55%{opacity:1}100%{opacity:0;transform:translate(var(--flight-x),var(--flight-y)) rotate(var(--spin)) scale(.6)}}
.victoryBuddy{position:absolute;right:7%;bottom:7%;width:66px;height:74px;opacity:0;animation:joyBuddy 1.85s cubic-bezier(.2,.65,.25,1) .12s both}
.victoryBuddy svg{width:100%;height:100%;display:block}
@keyframes joyBuddy{0%{opacity:0;transform:translateY(74px) rotate(-25deg) scale(.7)}20%{opacity:1;transform:translateY(-14px) rotate(12deg) scale(1.05)}42%{transform:translateY(0) rotate(-8deg)}62%{opacity:1;transform:translateY(-18px) rotate(360deg)}85%{opacity:1;transform:translateY(0) rotate(360deg)}100%{opacity:0;transform:translateY(60px) rotate(375deg)}}
.resultCoins{display:inline-flex;align-items:center;gap:8px;padding:7px 13px;border-radius:999px;color:#715012;background:#fff0b7;border:1px solid #f1cd72;font-weight:800}
.resultCoins:before{content:"✦";display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#f5bc39;color:#fff9e5;box-shadow:inset 0 0 0 2px #ffe393}
.victoryCoins{position:fixed;inset:0;pointer-events:none;z-index:1100;overflow:hidden;contain:layout style}
.victoryCoin{position:absolute;display:grid;place-items:center;width:23px;height:23px;margin:-11px;border:2px solid #ffe598;border-radius:50%;background:linear-gradient(130deg,#ffe484,#ed9d22);color:#fffaf0;font-size:15px;box-shadow:0 2px 0 #ac711d;opacity:0;animation:joyCoin .9s cubic-bezier(.2,.7,.3,1) both}
@keyframes joyCoin{0%{opacity:0;transform:translate(var(--coin-x),var(--coin-y)) rotateY(0) scale(.6)}20%{opacity:1;transform:translate(var(--coin-x),calc(var(--coin-y) - 30px)) rotateY(180deg) scale(1.15)}85%{opacity:1}100%{opacity:0;transform:translate(0,0) rotateY(540deg) scale(.35)}}
.resultCoins.victoryCoinTarget{animation:joyCoinTarget .5s ease-out .75s both}
@keyframes joyCoinTarget{0%,100%{transform:scale(1)}45%{transform:scale(1.09)}}
@media(max-width:700px){.victoryStar{width:27px;height:27px}.victoryBuddy{width:55px;height:62px}.victoryPortrait{top:7%;height:86%;border-width:2px}}
html.reduced-motion .completionLift .completionPicture,html.reduced-motion .victoryPortrait,html.reduced-motion .victoryCoinTarget{animation:none!important;transform:none!important}
html.reduced-motion .victorySky,html.reduced-motion .victoryCoins{display:none!important}
html.reduced-motion #screen-complete.active .completeCard{opacity:1;transform:none}
html.reduced-motion .rankResult>*{animation:none!important}
@media(prefers-reduced-motion:reduce){.completionLift .completionPicture,.victoryPortrait,.victoryCoinTarget{animation:none!important;transform:none!important}.victorySky,.victoryCoins{display:none!important}#screen-complete.active .completeCard{opacity:1;transform:none}.rankResult>*{animation:none!important}}

html.reduced-motion #screen-complete.active .completeCard,html.reduced-motion .completeImage:after{animation:none!important}
html.reduced-motion #screen-play.completing .playHead,html.reduced-motion .hud,html.reduced-motion .completion-reveal .boardPlane{transition:none!important}

/* The mobile HUD is almost opaque; sampling the moving puzzle behind it adds a
   backdrop pass without a useful visible effect. Keep the same warm surface. */
@media(max-width:700px){body.playing #screen-play .hud{backdrop-filter:none;background:#fff9f5fa}}

/* A1: shared game controls. These extend the existing semantic buttons and do not own app state. */
:root{--game-ink:#4b3272;--game-muted:#78688a;--game-violet:#7444ce;--game-violet-deep:#57339c;--game-cream:#fffaf6;--game-surface:#f0e7ed;--game-line:#dfccef;--game-gold:#f4c256;--game-mint:#dcefe0;--game-mint-ink:#356148;--game-danger:#a34668;--game-press-ms:110ms;--game-panel-radius:22px;--game-control-radius:15px}
button.iconBtn,button.softBtn,button.primaryBtn,button.hudBtn,button.navBtn{min-height:44px;touch-action:manipulation}
button.iconBtn,button.softBtn,button.hudBtn{transition:translate var(--game-press-ms) ease,box-shadow var(--game-press-ms) ease,background-color .16s ease}
button.primaryBtn{transition:translate var(--game-press-ms) ease,box-shadow var(--game-press-ms) ease,filter .16s ease}
button.iconBtn:focus-visible,button.softBtn:focus-visible,button.primaryBtn:focus-visible,button.hudBtn:focus-visible,button.navBtn:focus-visible{outline:3px solid #f4c256;outline-offset:3px}
button.iconBtn:disabled,button.softBtn:disabled,button.primaryBtn:disabled,button.hudBtn:disabled,button.navBtn:disabled{opacity:.52;cursor:not-allowed;translate:none;box-shadow:none}
button.iconBtn[aria-pressed=true],button.softBtn[aria-pressed=true],button.hudBtn[aria-pressed=true]{background:linear-gradient(160deg,#f7edff,#e1d0f1);color:#59349f;border-color:#cdb1e3;box-shadow:inset 0 2px 1px #fff,0 2px 0 #b898d0}
.gamePanel{border:1px solid #fff;background:linear-gradient(140deg,#fffaf6,#f4edf6);border-radius:var(--game-panel-radius);box-shadow:inset 0 2px 0 #fff,0 8px 22px #67407e12}
.gameStatus{display:inline-flex;align-items:center;gap:6px;width:max-content;max-width:100%;padding:5px 10px;border-radius:999px;background:#f2eafa;color:#6b4a89;font-size:11px;font-weight:900;line-height:1.2}.gameStatus--owned{background:var(--game-mint);color:var(--game-mint-ink)}.gameStatus--active{background:#ece0fa;color:#59349f}.gameStatus--warning{background:#fff1d7;color:#7d5a23}.gameStatus--danger{background:#f6dfe5;color:var(--game-danger)}
.shopCard--owned{border-color:#c8decf;background:linear-gradient(145deg,#fffdf6,#f1f8f1)}.shopCard--equipped{border-color:#bca4dc;box-shadow:inset 0 0 0 2px #ede2fa,0 14px 30px #6245881c}.shopCard--irreversible{border-color:#e5ce9f}.shopOwnership{display:inline-flex;align-items:center;max-width:100%;padding:4px 8px;border-radius:999px;background:var(--game-mint);color:var(--game-mint-ink);font-size:10px;font-weight:900;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.shopOwnership--equipped{background:#e9ddf9;color:#59349f}.shopUse{min-width:100px!important}.shopUse--active{color:#5b4782;background:#eee4f7;border-color:#d6c2e9}.shopCard--equipped .shopPrice{color:#5e3d83}.shopCard--owned .shopPrice:before{content:'✦ ';color:#4d8a63}.shopCard--irreversible .shopRarity{background:#fff0d4;color:#81591c;border-color:#eed39b}
.shopCard:focus-within,.paidPackCard:focus-within{outline:2px solid #f1c768;outline-offset:3px}.shopCardActions .primaryBtn,.shopCardActions .softBtn{min-height:44px}.shopCardActions button[aria-pressed=true]{background:#eee4f7;color:#59349f;border-color:#d6c2e9;box-shadow:inset 0 2px 1px #fff,0 2px 0 #b898d0}
@media(max-width:700px){.gamePanel{border-radius:18px}.shopOwnership{font-size:9px;padding:4px 7px}.shopCardHead{align-items:flex-start;flex-wrap:wrap}.shopCardHead .shopOwnership{margin-left:auto}}@media(prefers-reduced-motion:reduce){button.iconBtn,button.softBtn,button.primaryBtn,button.hudBtn,button.navBtn{transition:none}}

/* A2: one bounded game scene on desktop, with a persistent three-destination dock. */
.navGlyph{display:block;width:23px;height:23px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
@media(min-width:701px) and (min-height:501px), (min-width:701px) and (pointer:fine){
 html,body{height:100%;overflow:hidden;overscroll-behavior:none;background:#292138}
 .app{position:relative;isolation:isolate;display:flex;flex-direction:column;width:min(100%,1600px);height:100vh;height:100dvh;min-height:0;margin-inline:auto;overflow:hidden;box-shadow:0 18px 70px #1b112a50}
 .topbar{flex:none;height:76px;padding:0 clamp(20px,3vw,48px);background:transparent;border-bottom:0;box-shadow:none;backdrop-filter:none}
 .topbar .nav{position:fixed;z-index:90;left:50%;bottom:16px;transform:translateX(-50%);display:flex;flex:none;gap:9px;padding:7px;border:1px solid #fff;background:#fff8f2ed;border-radius:25px;box-shadow:0 10px 28px #54346d27;backdrop-filter:blur(12px)}
 .navBtn{display:flex;align-items:center;justify-content:center;gap:9px;min-width:124px;min-height:50px;padding:8px 16px;border:1px solid transparent;border-radius:19px;color:#6f5880;font-size:15px;font-weight:900;white-space:nowrap}
 .navBtn.active,.navBtn[aria-current=page]{background:linear-gradient(150deg,#9267d6,#7444b4);border-color:#b99ce3;color:#fff;box-shadow:inset 0 2px 0 #ffffff4d,0 3px 0 #54308a}
 .app>main{flex:1;min-height:0;margin-bottom:92px;overflow:hidden}
 .screen.active{height:100%;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable}
 #screen-home .galleryWrap,#screen-library .galleryWrap,#screen-shop .shopWrap{max-width:1260px;padding-top:14px;padding-bottom:28px}
 #screen-home .softPopHero{margin-top:12px}
 body.playing .topbar{display:none}
 body.playing .app>main{margin-bottom:0}
 body.playing #screen-play.active{overflow:hidden}
 body.playing .playShell{display:flex;flex-direction:column;width:100%;height:100%;min-height:0;max-width:none;padding:8px clamp(8px,1.5vw,24px) 86px}
 body.playing .playHead{flex:none}
 body.playing .stage{flex:1;min-height:0;height:auto}
 body.playing .hud{bottom:14px}
}
@media(min-width:1200px) and (min-height:760px){.app{height:calc(100dvh - 24px);margin-block:12px;border-radius:28px}}
@media(min-width:701px) and (max-height:760px){.topbar{height:58px}.brandName{font-size:29px}.brandIcon{width:36px;height:36px}.topbar .nav{bottom:8px}.app>main{margin-bottom:76px}}
@media(min-width:701px) and (max-height:500px){.topbar .nav{display:flex}.navBtn{min-height:44px}}
@keyframes a2SceneEnter{from{opacity:.7;translate:0 5px}to{opacity:1;translate:0 0}}
#screen-home.active,#screen-library.active,#screen-shop.active{animation:a2SceneEnter .18s ease-out both}
@media(prefers-reduced-motion:reduce){#screen-home.active,#screen-library.active,#screen-shop.active{animation:none}}
html.reduced-motion #screen-home.active,html.reduced-motion #screen-library.active,html.reduced-motion #screen-shop.active{animation:none}

/* A3 — Home is a game lobby. The collection stays one tap away in Library. */
.homeAlbum{margin-top:12px;flex:none}
.albumLaunch{display:flex;align-items:center;gap:18px;width:100%;min-height:90px;padding:12px 18px;text-align:left;border:1px solid white;border-radius:22px;background:linear-gradient(110deg,#fff0bc,#fce6ee 65%,#e5daf9);color:#513479;box-shadow:0 5px 14px #77579012;cursor:pointer}
.albumLaunchCopy{display:grid;gap:2px;min-width:0}.albumLaunchCopy strong{font-size:22px}.albumLaunchCopy small{color:#765c7c;font-size:12px}.albumArrow{margin-left:auto;font-size:28px;color:#976a27}
.albumMiniatures{display:flex;align-items:center;padding-left:5px;flex:none}.albumMiniatures .albumSlot{width:57px;height:48px;margin-left:-5px;rotate:-7deg}.albumMiniatures .albumSlot:nth-child(2){rotate:5deg}.albumMiniatures .albumSlot:nth-child(3){rotate:-3deg}
.albumSlot{position:relative;display:block;overflow:hidden;border:3px solid #fff9ed;border-radius:9px;background:#ede3ef;box-shadow:0 3px 7px #57397822}.albumPhoto{display:block;width:100%;height:100%;object-fit:cover}.albumCheck{position:absolute;right:3px;bottom:3px;display:grid;place-items:center;min-width:19px;height:19px;background:#fff9f0df;color:#a78cba;border-radius:50%;font-size:12px;font-weight:900}.albumSlotDone .albumCheck{background:#4db386;color:#fff}.albumUnavailable{display:grid;place-items:center;height:100%;color:#9a80aa}
.albumDialog{width:min(680px,calc(100% - 24px));max-height:calc(100dvh - 28px);padding:22px;border:2px solid white;border-radius:28px;background:#fff9f1;color:#513479;box-shadow:0 24px 70px #452a6645;overflow:auto}.albumDialog::backdrop{background:#39294c83}.albumHeader{display:flex;align-items:center;justify-content:space-between;gap:12px}.albumHeader h2{font-size:25px;margin:0}.albumHeader .iconBtn{flex:none;min-width:44px;min-height:44px}.albumContent{margin-top:16px}.albumBook{padding:22px;border:1px solid #fff;border-radius:22px;background:linear-gradient(145deg,#ede3f9,#fff2ce)}.albumBook h3{font-size:31px;margin:7px 0}.albumBook p{font-size:14px;line-height:1.45}.albumBook .primaryBtn{width:100%;min-height:46px}.albumBookComplete{background:linear-gradient(145deg,#fff0b5,#ffe7e1,#eee1ff)}
.albumPages{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:20px 0}.albumPages .albumSlot{padding:0;border-radius:13px;min-height:100px;cursor:pointer;color:#55357b}.albumPages .albumPhoto{height:auto;aspect-ratio:4/3}.albumPages .albumCheck{top:7px;bottom:auto;right:7px;width:25px;height:25px;font-size:15px}.albumPictureTitle{display:block;font-size:13px;padding:9px 4px;background:#fff9f1}.albumCount{font-size:20px}.albumHint,.albumPending{color:#7c6884}.albumBook .albumHint{font-size:12px}.albumFinished{font-weight:800;color:#8c6121}
.resultAlbum{padding:11px 12px;margin:10px 0;border:1px solid #e8d1a2;border-radius:17px;background:linear-gradient(110deg,#fff1c9,#f5e8f9);display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:5px 10px;text-align:left}.resultAlbum>.eyebrow{grid-column:1/-1}.albumResultPages{display:flex;gap:8px}.albumResultPages .albumSlot{width:62px;height:48px}.albumResultCount{font-size:14px;white-space:nowrap}.albumPending{grid-column:1/-1;font-size:11px}.albumNewPicture{animation:albumPictureInsert 1s cubic-bezier(.2,.8,.25,1) both}.albumResultAdded,.albumResultComplete{animation:albumPageCelebrate 1.1s ease-out both}.albumResultComplete{border-color:#d8ae41}
@keyframes albumPictureInsert{0%{opacity:.2;transform:translateY(-20px) rotate(-9deg) scale(1.2)}65%{opacity:1;transform:translateY(2px) rotate(2deg) scale(.96)}100%{opacity:1;transform:none}}
@keyframes albumPageCelebrate{0%,100%{transform:none}40%{transform:scale(1.018)}70%{transform:scale(.995)}}
html.reduced-motion .albumNewPicture,html.reduced-motion .albumResultAdded,html.reduced-motion .albumResultComplete{animation:none!important}
@media(prefers-reduced-motion:reduce){.albumNewPicture,.albumResultAdded,.albumResultComplete{animation:none!important}}
#screen-home .libraryFilters,#screen-home #motifGrid,#screen-home .previousMotifs{display:none}
#screen-home .playerStrip{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;margin:0 0 14px;padding:13px 16px;border-radius:22px;background:linear-gradient(115deg,#f1e7fa,#fff7ef)}
#screen-home .playerIdentity{display:grid;gap:3px;min-width:0}
#screen-home .playerIdentity strong{font-size:17px;overflow-wrap:anywhere}
#screen-home #featuredDaily{display:none}
#screen-home .journeyLauncher{min-height:44px;white-space:nowrap}
#screen-home #playerStatus{grid-column:1/-1;margin:0;font-size:12px;color:#725983}
#screen-home #playerStatus:empty{display:none}
#screen-home .lobbyContinue{display:grid;grid-template-columns:minmax(160px,250px) minmax(0,1fr);align-items:stretch;gap:0;margin:0 0 16px;overflow:hidden;border:1px solid #fff;border-radius:28px;background:linear-gradient(120deg,#e1f1e8,#fff7ed)}
#screen-home .lobbyContinue>img{width:100%;height:100%;min-height:176px;max-height:240px;object-fit:cover;border-radius:0}
#screen-home .lobbyContinueCopy{display:grid;align-content:center;gap:7px;padding:22px 25px}
#screen-home .lobbyContinue h2{margin:0;font-size:clamp(24px,3vw,36px)}
#screen-home .lobbyContinue p{margin:0;color:#657368}
.lobbyActions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:6px}
.lobbyActions .primaryBtn,.lobbyActions .softBtn{min-height:46px}
#screen-home .lobbyHero{grid-template-columns:minmax(0,1.1fr) minmax(250px,.9fr);align-items:center;min-height:360px;margin:0;padding:34px 42px;border-radius:30px;background:radial-gradient(circle at 78% 25%,#f3d7ff 0,transparent 32%),linear-gradient(135deg,#fffaf6,#f3ebfb)}
#screen-home .lobbyHero .lobbyIntro{display:grid;align-content:center;gap:0;max-width:540px}
#screen-home .lobbyHero h1{margin:11px 0 13px}
#screen-home .lobbyHero p{margin:0;max-width:480px}
#screen-home .lobbyHeroArt{display:grid;place-items:center;align-self:stretch;min-height:250px}
#screen-home .lobbyHero .softPopMascot{width:min(122%,540px);max-height:none;height:100%;object-fit:contain}
#screen-home[data-lobby-state="returning"] .lobbyHero{min-height:190px;padding-block:22px}
#screen-home[data-lobby-state="returning"] .lobbyHero .lobbyActions{display:none}
#screen-home[data-lobby-state="returning"] .lobbyHeroArt{min-height:145px}
#screen-home[data-lobby-state="returning"] .lobbyHero .softPopMascot{width:min(100%,310px)}
.mobileJourney .playerJourney,.mobileJourney .playerStreak,.mobileJourney .playerCollections,.mobileJourney .playerChallenges{display:flex}
.mobileJourney .playerChallenges{display:grid}
@media(min-width:701px){
 #screen-home .galleryWrap{display:grid;align-content:start;grid-template-columns:minmax(0,1fr);gap:0}
 .libraryPersonalLink{margin-left:auto}
}
@media(prefers-reduced-motion:no-preference){
 #screen-home .lobbyContinue,#screen-home .lobbyHero{animation:a3LobbyIn .26s cubic-bezier(.2,.8,.2,1) both}
 #screen-home .lobbyHero{animation-delay:.035s}
}
@keyframes a3LobbyIn{from{opacity:.5;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){#screen-home .lobbyContinue,#screen-home .lobbyHero{animation:none}}
html.reduced-motion #screen-home .lobbyContinue,html.reduced-motion #screen-home .lobbyHero{animation:none}

/* A4 — The Library is a picture shelf with a simple, tactile start flow. */
#screen-library .libraryScene{display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:14px;min-height:100%}
#screen-library .libraryHero{margin:0;padding:24px 28px;border:1px solid #fff;border-radius:27px;background:radial-gradient(circle at 87% 18%,#e6cdfa 0,transparent 28%),linear-gradient(120deg,#fff9f2,#eee6f7);box-shadow:0 7px 24px #64477912}
#screen-library .libraryHero h1{margin:7px 0 8px;font-size:clamp(30px,4vw,46px)}
#screen-library .libraryHero p{margin:0;max-width:620px}
.libraryHeroToken{display:flex;align-items:center;gap:10px;min-width:164px;padding:12px 14px;border:1px solid #fff;border-radius:20px;background:#fffaf7;box-shadow:0 5px 13px #5d44751a;color:#68458d}
.libraryHeroToken strong{font:1000 25px/1 Nunito,sans-serif}.libraryHeroToken span{font:800 11px/1.2 Nunito,sans-serif;text-transform:uppercase;letter-spacing:.07em;color:#9279a8}
.libraryDeck{display:grid;gap:10px;padding:4px 2px 0}.libraryDeckHead{display:flex;align-items:end;justify-content:space-between;gap:14px}.libraryDeckHead h2{margin:2px 0 0;color:#513475;font:900 22px/1.1 Nunito,sans-serif}.libraryDeckHead>span{border-radius:999px;background:#eee4f6;padding:7px 10px;color:#71538d;font:800 12px Nunito,sans-serif;white-space:nowrap}
.libraryMoodChips{display:flex;gap:8px;align-items:center;overflow-x:auto;padding:2px 0 5px;scrollbar-width:none}.libraryMoodChips::-webkit-scrollbar{display:none}.libraryMoodChips .softBtn{flex:none;min-height:40px;padding:7px 13px;font-size:12px;white-space:nowrap}.libraryMoodChips .softBtn.active,.libraryMoodChips .softBtn[aria-pressed=true]{background:linear-gradient(145deg,#8f63d4,#7043b1);border-color:#a984dc;color:#fff;box-shadow:inset 0 2px 0 #fff5,0 3px 0 #563388}
#screen-library .libraryFilters{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
#screen-library .libraryGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:17px;align-content:start;padding-bottom:12px}
#screen-library .motifCard{position:relative;min-width:0;border:4px solid #fffaf6;border-radius:23px;box-shadow:0 8px 20px #5b42721a;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
#screen-library .motifCard:hover{transform:translateY(-3px);border-color:#d8c5ed;box-shadow:0 16px 28px #5b42722b}
#screen-library .motifCard--featured{grid-column:span 2;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(190px,.75fr);align-items:stretch}
#screen-library .motifCard--featured img{height:100%;min-height:230px;aspect-ratio:auto;object-fit:cover;border-radius:18px 0 0 18px}
#screen-library .motifCard--featured .motifCaption{display:grid;align-content:center;padding:20px 17px}
.motifCopy{display:grid;gap:4px;min-width:0}.motifType{width:max-content;max-width:100%;overflow:hidden;text-overflow:ellipsis;border-radius:999px;background:#eee3f7;color:#754fa0;padding:4px 7px;font:900 9px/1 Nunito,sans-serif;letter-spacing:.07em;text-transform:uppercase}.motifCaption .motifCopy strong{margin-top:2px}.motifAction{display:grid;justify-items:end;gap:8px;min-width:0}.motifQuickAction{border-radius:999px;background:#f1e7fa;color:#674092;padding:6px 8px;font:900 11px/1 Nunito,sans-serif;white-space:nowrap}
#screen-library .motifCard--featured .motifCopy strong{font-size:28px}.pieceChoices{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin:7px 0 10px}.pieceChoices button{display:grid;gap:3px;min-width:0;min-height:54px;padding:7px 4px;border:1px solid #ddcde9;border-radius:13px;background:#fffaf6;color:#6a4c87;font-family:Nunito,sans-serif;cursor:pointer;transition:transform .14s ease,background .14s ease,border-color .14s ease}.pieceChoices button strong{font-size:18px;line-height:1}.pieceChoices button span{font-size:9px;font-weight:800;white-space:nowrap}.pieceChoices button:hover{transform:translateY(-1px);border-color:#b998d8}.pieceChoices button[aria-pressed=true]{background:linear-gradient(150deg,#9469d9,#7546b6);border-color:#a989dc;color:#fff;box-shadow:inset 0 2px 0 #fff4,0 3px 0 #58348b}.pieceChoices button:disabled{opacity:.45;cursor:default;transform:none}.pieceCountNative{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;white-space:nowrap!important}
@media(max-width:1000px){#screen-library .libraryGrid{grid-template-columns:repeat(2,minmax(0,1fr))}#screen-library .motifCard--featured{grid-column:span 2}}
@media(max-width:700px){#screen-library .libraryScene{grid-template-rows:auto auto minmax(0,1fr);gap:8px}#screen-library .libraryHero{padding:12px 14px;gap:9px;border-radius:20px}#screen-library .libraryHero h1{font-size:24px;margin:3px 0}#screen-library .libraryHero p{display:block;font-size:12px;line-height:1.35}.libraryHeroToken{min-width:0;padding:8px 9px;border-radius:15px}.libraryHeroToken strong{font-size:17px}.libraryHeroToken span{font-size:8px}.libraryDeck{gap:6px;padding:0}.libraryDeckHead h2{font-size:17px}.libraryDeckHead>span{padding:5px 7px;font-size:10px}.libraryMoodChips{gap:6px;padding-bottom:2px}.libraryMoodChips .softBtn{min-height:36px;padding:6px 10px;font-size:11px}.pieceChoices{gap:5px}.pieceChoices button{min-height:48px;padding:5px 2px;border-radius:11px}.pieceChoices button strong{font-size:16px}.pieceChoices button span{font-size:8px}#screen-library .motifCard--featured{grid-column:auto;display:flex}#screen-library .motifCard--featured img{min-height:0;border-radius:inherit}#screen-library .motifCard--featured .motifCaption{display:flex;padding:10px}#screen-library .motifCard--featured .motifCopy strong{font-size:19px}.motifType{font-size:8px}.motifAction{gap:5px}.motifQuickAction{padding:5px 6px;font-size:10px}}

/* A6: illustrated shelf cards keep cost, ownership and actions distinct. */
#screen-shop .shopHero{background:radial-gradient(circle at 85% 8%,#f8dcfb 0,transparent 27%),linear-gradient(120deg,#fffaf5,#efe6f7);border-color:#fff;box-shadow:0 9px 26px #64477917}
#screen-shop .shopHero h1{color:#4c3270;font-family:Nunito,sans-serif;font-weight:1000}
#screen-shop .shopHero p{color:#6e5d79}
#screen-shop .shopBalance{display:inline-flex;align-items:center;gap:8px;border-color:#efc874;background:#fff6dc;color:#6c4615;font:1000 16px Nunito,sans-serif;box-shadow:inset 0 2px 0 #fff,0 3px 0 #dab672}
#screen-shop .shopBalance:before{content:'✦';display:grid;place-items:center;width:27px;height:27px;border-radius:50%;background:#f3c65f;color:#754c17;box-shadow:inset 0 2px 0 #fff8}
#screen-shop .shopStatus{margin:12px 0 15px;color:#705b7c;font-size:13px}
#screen-shop .shopCard,#screen-shop .paidPackCard{min-width:0;padding:16px;border:2px solid #fff;border-radius:24px;background:linear-gradient(145deg,#fffaf4,#f0e8f7);box-shadow:0 7px 22px #6447791e;color:#4c3270}
#screen-shop .shopCard--owned{background:linear-gradient(145deg,#fffaf4,#ecf5ed)}
#screen-shop .shopCard--equipped{border-color:#c9ace8;box-shadow:inset 0 0 0 2px #fff8,0 9px 24px #64477924}
#screen-shop .shopCard--irreversible{background:linear-gradient(145deg,#fffaf4,#fff1dc)}
#screen-shop .shopType{color:#735294;font-weight:900}
#screen-shop .shopRarity{background:#f3e8fb;border-color:#e0ceec;color:#72508d}
#screen-shop .shopCardVisual{position:relative;display:grid;place-items:center;flex:none;height:160px;min-height:0;margin:10px 0 8px;border:1px solid #ffffffbd;border-radius:19px;background:radial-gradient(circle at 50% 42%,#fffdf9 0,#f1e6f7 65%,#e9d9f2 100%);overflow:hidden;isolation:isolate}
#screen-shop .shopCardVisual:before{content:'';position:absolute;inset:auto 10% 18px;height:24px;border-radius:50%;background:#7658941d;filter:blur(11px)}
#screen-shop .shopCardVisual .bitmapArt{display:grid;place-items:center;width:100%;height:100%}
#screen-shop .shopCardVisual .shopIllustration{width:min(72%,170px);height:calc(100% - 22px);margin:0;object-fit:contain;filter:drop-shadow(0 8px 6px #4b367026)}
#screen-shop .shopVisualCue{position:absolute;left:8px;right:8px;bottom:7px;width:max-content;max-width:calc(100% - 16px);margin:auto;padding:4px 9px;border-radius:999px;background:#fffaf2ed;color:#684784;font:900 10px/1.2 Nunito,sans-serif;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;box-shadow:0 2px 7px #62458818}
#screen-shop .shopCard[data-item-type=table] .shopCardVisual{background:linear-gradient(160deg,#c9d9d7,#7da29b)}
#screen-shop .shopCard[data-item-type=frame] .shopCardVisual{background:radial-gradient(circle at center,#fff8de,#e6d7ee 75%)}
#screen-shop .shopCard[data-item-type=snap_effect] .shopCardVisual{background:radial-gradient(circle at center,#fff7ea,#f1ddec 75%)}
#screen-shop .shopCard[data-item-type=random_name] .shopCardVisual{background:radial-gradient(circle at center,#fff8e9,#f6e1c4 75%)}
#screen-shop .paidPackCard .shopCardVisual{background:radial-gradient(circle at 50% 35%,#fffdf5,#e6e9fa 75%)}
#screen-shop .shopCard h2,#screen-shop .paidPackCard h3{margin:4px 0 5px;color:#483166;font:1000 21px/1.13 Nunito,sans-serif}
#screen-shop .shopDescription,#screen-shop .paidPackDescription{color:#6c5b76;font-size:13px;line-height:1.4}
#screen-shop .shopCardFoot{justify-content:flex-start;align-items:baseline;gap:8px;padding-top:12px}
#screen-shop .shopPriceLabel{color:#806b92;font:900 9px/1.1 Nunito,sans-serif;letter-spacing:.09em;white-space:nowrap}
#screen-shop .shopPrice{color:#6741a0;font:1000 17px/1.1 Nunito,sans-serif;white-space:nowrap}
#screen-shop .shopCard--owned .shopPrice:before{display:none}
#screen-shop .shopCardActions{justify-content:stretch;flex-wrap:nowrap;margin-top:10px}
#screen-shop .shopCardActions button{flex:1;min-width:0;padding-inline:8px;font-size:12px;white-space:nowrap}
#screen-shop .shopCardActions .primaryBtn,#screen-shop .paidPackFoot .primaryBtn{background:linear-gradient(#8e5bd4,#7040b7);border-color:#7444b8;color:#fff}
#screen-shop .shopCardActions .softBtn{background:#fffaf6;border-color:#dfcdec;color:#5c3c7f}
#screen-shop .shopCardActions .shopUse--active{background:#eadff5;color:#61418b}
#screen-shop .paidPacks{border-color:#dcc8e9;color:#493367}
#screen-shop .paidPacks h2{color:#4c3270;font:1000 27px Nunito,sans-serif}
#screen-shop .paidPackContents{font-size:12px;color:#735c83!important}
#screen-shop .paidPackFoot{align-items:end;margin-top:auto;padding-top:10px}
#screen-shop .paidPackPrice{display:grid;gap:4px}
#screen-shop .paidPackFoot .primaryBtn{min-height:44px;white-space:nowrap}
#shopDetails.shopDetails{border-color:#d9c8e8;background:#fffaf6;color:#4c3270}
#shopDetails .shopDetailsPrice{color:#61408d}
#shopDetails h2,#paidCheckout h2{color:#4c3270;font-family:Nunito,sans-serif;font-weight:1000}
#shopDetails .shopPreview{border-color:#e3d1ed;border-radius:20px;background:linear-gradient(135deg,#fff8ed,#eee4f8)}
#shopDetails .shopPreviewSnap{background:radial-gradient(circle at center,#fff8ef,#efdef1)}
#shopDetails .shopPreviewTable{background:linear-gradient(#a5c0b6,#668f87)}
#shopDetails .shopPreview-coastal-wood{background:repeating-linear-gradient(8deg,#f7dbb522 0 2px,transparent 2px 10px),linear-gradient(#9c8564,#63553e)}
#shopDetails .modalActions .primaryBtn,#paidCheckout .modalActions .primaryBtn{background:linear-gradient(#8e5bd4,#7040b7);border-color:#7444b8;color:#fff}
#paidCheckout{border-color:#dac7e6;background:#fffaf6;color:#4c3270}
#paidCheckout .paidCheckoutContents{border-color:#dfcfeb;border-radius:15px;background:#fffdf9}
#paidCheckout .paidCheckoutTotal{color:#644290}
@media(max-width:1000px) and (min-width:701px){#screen-shop .shopItems,#screen-shop .paidPackItems{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* One finite trophy leap; only transforms and opacity change during flight. */
.rankResult>.rewardTrophy,.rewardTrophy{display:block;position:relative;width:clamp(82px,15vw,118px);height:auto;aspect-ratio:1;margin:0 auto 5px;animation:none;pointer-events:none}
.rewardTrophy .trophyFallback{display:block;width:100%;height:100%;object-fit:contain}
.trophyAtlasProbe{display:none}.trophyBase,.trophyInsert,.trophyRegistration{position:absolute;inset:0;display:block}
.trophyBase,.trophyRegistration{background-image:url('assets/ui-art/jiggiz-trophy-layers-v1.webp');background-size:200% 100%;background-repeat:no-repeat}
.trophyBase{background-position:left center}.trophyRegistration{background-position:right center;transform:translate(3%,-12%) scale(.92)}
.trophyBase,.trophyInsert{visibility:hidden}.trophyReady .trophyBase,.trophyReady .trophyInsert{visibility:visible}.trophyReady .trophyFallback{visibility:hidden}
.trophyInsert{transform-origin:50% 41%}.trophyCelebrating .trophyInsert{animation:trophyLeap 1.8s cubic-bezier(.25,.65,.3,1) both;will-change:transform}
.trophyBase:after{content:'';position:absolute;inset:7% 8% 19%;border-radius:50%;background:radial-gradient(ellipse,#ffe7a1aa,transparent 68%);opacity:0}
.trophyCelebrating .trophyBase:after{animation:trophyWarmth 1.8s ease-out both}
.trophyGlint{position:absolute;left:50%;top:39%;color:#ffbd38;font-size:15px;line-height:1;opacity:0;animation:trophyGlitter .65s var(--trophy-delay) ease-out both}
.trophyGlint:nth-of-type(2n){color:#ba83f6;font-size:11px}
@keyframes trophyLeap{0%,8%{transform:translateY(0) scale(1) rotate(0)}16%{transform:translateY(3%) scale(1.05,.92) rotate(-3deg)}35%{transform:translateY(-36%) scale(1.04) rotate(-16deg) rotateY(-18deg)}49%{transform:translateY(-42%) scale(1.07) rotate(14deg) rotateY(28deg)}66%{transform:translateY(-9%) scale(1) rotate(4deg)}74%{transform:translateY(2%) scale(1.05,.93) rotate(-2deg)}86%{transform:translateY(-5%) scale(.99,1.02) rotate(1deg)}100%{transform:translateY(0) scale(1) rotate(0)}}
@keyframes trophyWarmth{0%,65%,100%{opacity:0}77%{opacity:.65}90%{opacity:.16}}
@keyframes trophyGlitter{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}20%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--trophy-x)),calc(-50% + var(--trophy-y))) scale(.75) rotate(40deg)}}
@media(max-width:700px){.completeCard:has(.resultAlbum:not([hidden])) .completionRewardArt.rewardTrophy{width:82px;height:82px}}
html.reduced-motion .trophyInsert,html.reduced-motion .trophyBase:after{animation:none!important;will-change:auto}html.reduced-motion .trophyGlint{display:none}
@media(prefers-reduced-motion:reduce){.trophyInsert,.trophyBase:after{animation:none!important;will-change:auto}.trophyGlint{display:none}}

/* Brief start and progress celebrations; no animated layout or gameplay loop. */
.startCue{position:absolute;z-index:82;left:50%;top:15%;display:flex;align-items:center;gap:10px;max-width:calc(100% - 24px);padding:10px 18px 10px 8px;border:2px solid #fff;border-radius:24px;background:linear-gradient(115deg,#fff3c5,#f1ddff);box-shadow:0 8px 20px #49307430;transform:translateX(-50%);pointer-events:none;color:#593089}
.startCue[hidden]{display:none}.startCue img{width:60px;height:60px;object-fit:contain}.startCue strong{font:1000 clamp(21px,3vw,30px)/1.1 Nunito,sans-serif;white-space:nowrap}.startCueGo{animation:joyReady .85s ease-out both}.startCueGo img{animation:joyMascot .65s ease-out both}
.delight-snap,.delight-milestone{display:flex;align-items:center;gap:9px;padding:8px 12px 8px 19px}.delight-snap img,.delight-milestone img{width:43px;height:43px;object-fit:contain;animation:joyMascot .6s ease-out both}.delight-milestone{font-size:19px;border-width:2px}.delight-milestone[data-milestone="50"]{background:linear-gradient(115deg,#d4f2ff,#ece0ff)}.delight-milestone[data-milestone="75"]{background:linear-gradient(115deg,#ffe4f1,#ffe9b2)}
@keyframes joyReady{0%{opacity:0;transform:translateX(-50%) scale(.85)}18%,72%{opacity:1;transform:translateX(-50%) scale(1)}100%{opacity:0;transform:translateX(-50%) translateY(-7px) scale(.98)}}
@keyframes joyMascot{0%{transform:scale(.85) rotate(-9deg)}35%{transform:translateY(-5px) scale(1.08) rotate(7deg)}70%{transform:scale(.98) rotate(-3deg)}100%{transform:none}}
@media(max-width:700px){.startCue{top:12%;gap:7px;padding:7px 13px 7px 6px;border-radius:20px}.startCue img{width:47px;height:47px}.startCue strong{font-size:23px}.delight-snap,.delight-milestone{max-width:calc(100vw - 30px);font-size:15px}.delight-snap img,.delight-milestone img{width:36px;height:36px}}
html.reduced-motion .startCue,html.reduced-motion .startCue img,html.reduced-motion .delightPuff img{animation:none!important}
@media(prefers-reduced-motion:reduce){.startCue,.startCue img,.delightPuff img{animation:none!important}}

/* A picture invitation, always optional and available during the celebration. */
.completeWrap{min-height:100%}
.completeActions{display:grid;grid-template-columns:1fr 1fr;gap:9px}.completeActions #replayPuzzle{grid-column:1;grid-row:2}.completeActions #completeHomeBtn{grid-column:2;grid-row:2}.completeActions .nextPuzzleCard{grid-column:1/-1;grid-row:1;display:flex;align-items:center;gap:13px;min-width:0;width:100%;padding:10px 14px 10px 10px;text-align:left;white-space:normal;background:linear-gradient(110deg,#7540c4,#a344c9);border:2px solid #e4c7ff;box-shadow:inset 0 2px 0 #ffffff38,0 4px 0 #56308b,0 7px 15px #6741a325;border-radius:23px;animation:nextInvite .6s ease-out 1.5s}.nextPuzzleCard[hidden]{display:none!important}.nextPuzzleThumb{position:relative;display:grid;place-items:center;flex:none;width:80px;height:60px;overflow:hidden;border:2px solid #ffffffb0;border-radius:13px;background:#eadbff;color:#7441ae;font-size:30px;transform:rotate(-3deg)}.nextPuzzleThumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.nextPuzzleThumb img[hidden]{display:none}.nextPuzzleCopy{display:flex;flex:1;min-width:0;flex-direction:column;gap:3px}.nextPuzzleCopy small{font:900 9px/1.2 Nunito,sans-serif;letter-spacing:1px;color:#ffeba2}.nextPuzzleCopy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:1000 23px/1.15 Nunito,sans-serif;color:#fff}.nextPuzzleCopy>span{font:700 11px/1.3 Nunito,sans-serif;color:#f8edff}.nextPuzzleArrow{display:grid;place-items:center;flex:none;width:36px;height:36px;border-radius:50%;background:#ffeaa1;color:#59308c;font:1000 25px Nunito,sans-serif}.nextPuzzleStatus{margin:10px 0 0;font-size:13px;color:#67497d}.nextPuzzleStatus:empty{display:none}.nextPuzzleCard.nextPuzzleStill,html.reduced-motion .nextPuzzleCard{animation:none!important}.completeActions .nextPuzzleCard:disabled{opacity:.7;animation:none;cursor:wait}
@keyframes nextInvite{0%,100%{transform:none}40%{transform:translateY(-3px)}70%{transform:translateY(1px)}}
@media(max-width:700px){.completeActions{gap:8px}.completeActions .nextPuzzleCard{gap:10px;padding:8px 10px;border-radius:19px}.nextPuzzleThumb{width:64px;height:48px;border-radius:10px}.nextPuzzleCopy strong{font-size:19px}.nextPuzzleCopy small{font-size:8px;letter-spacing:.7px}.nextPuzzleCopy>span{font-size:10px}.nextPuzzleArrow{width:30px;height:30px;font-size:22px}.completeActions>.softBtn{min-height:44px;padding:9px 12px;font-size:13px}}
@media(prefers-reduced-motion:reduce){.nextPuzzleCard{animation:none!important}}

/* Daily invitation: one visible, honest reason to return, beside the album. */
#screen-home #featuredDaily.dailyInvitation{display:grid;grid-template-columns:88px minmax(0,1fr) 84px auto;align-items:center;gap:18px;width:100%;min-height:112px;margin:16px 0 0;padding:14px 18px;text-align:left;border:2px solid #fff;border-radius:26px;background:radial-gradient(circle at 78% 0,#ffe69d66,transparent 38%),linear-gradient(115deg,#fff5da,#ffe7d9);color:#513668;box-shadow:inset 0 2px 0 #fff,0 5px 0 #dec7a8,0 8px 18px #6b44751a;cursor:pointer}
.dailyInvitationPhoto{width:88px;height:72px;object-fit:cover;border:3px solid #fffaf5;border-radius:15px;box-shadow:0 3px 0 #c8a889;transform:rotate(-3deg)}
.dailyInvitationCopy{display:grid;gap:5px;min-width:0}.dailyInvitationCopy .eyebrow{color:#8b6232;font-size:10px}.dailyInvitationCopy strong{font:1000 25px/1.1 Nunito,sans-serif;overflow-wrap:anywhere}.dailyInvitationCopy small{font-size:12px;line-height:1.35;color:#775c70}.dailyInvitationSeal{width:84px;height:60px;object-fit:contain}
.dailyInvitationAction{display:grid;place-items:center;min-height:44px;padding:10px 15px;border:1px solid #fff9;border-radius:16px;background:linear-gradient(145deg,#b474d8,#8145b9);color:#fff;font:900 14px Nunito,sans-serif;box-shadow:inset 0 2px 0 #fff4,0 3px 0 #66338f;white-space:nowrap}
#screen-home #featuredDaily[data-daily-state=done]{background:linear-gradient(115deg,#e3f2dc,#fff2d7)}
#screen-home #featuredDaily[data-daily-state=unavailable]{grid-template-columns:minmax(0,1fr) 84px auto;background:linear-gradient(115deg,#f2e7fa,#fff3e2)}
#screen-home #featuredDaily.dailyInvitation:hover .dailyInvitationPhoto{transform:rotate(0)}
@media(prefers-reduced-motion:no-preference){.dailyInvitationPhoto{transition:transform .18s ease}}
html.reduced-motion #screen-home #featuredDaily.dailyInvitation:hover .dailyInvitationPhoto{transform:rotate(-3deg)}
@media(prefers-reduced-motion:reduce){#screen-home #featuredDaily.dailyInvitation:hover .dailyInvitationPhoto{transform:rotate(-3deg)}}
#screen-home #featuredDaily[data-photo-missing=true]{grid-template-columns:minmax(0,1fr) 84px auto}

/* Little goals: one optional goal at a time, with verified progress. */
.homeJourneyActions{display:flex;align-items:center;gap:8px}.homeJourneyActions .softBtn{min-height:44px;white-space:nowrap}.goalsLauncher{background:linear-gradient(140deg,#fff1b9,#ffdbb8);color:#79502b}
.littleGoalsDialog{width:min(560px,94vw);max-height:92dvh;padding:22px;border:2px solid #fff;border-radius:29px;background:linear-gradient(155deg,#fffaf5,#f3e7fc);color:#513370;overflow:auto;box-shadow:0 20px 70px #4d2b6d40}
.littleGoalsDialog::backdrop{background:#41305b88;backdrop-filter:blur(6px)}.littleGoalsDialog header{display:flex;align-items:center;justify-content:space-between;gap:12px}.littleGoalsDialog h2{font:1000 29px Nunito,sans-serif;margin:0}.goalIntro{font-size:13px;line-height:1.4;color:#79678a;margin:9px 0 15px}
.goalTabs{display:flex;gap:7px}.goalTabs button{flex:1;min-height:44px}.goalTabs [aria-pressed=true]{background:linear-gradient(140deg,#ad77db,#8051bc);color:#fff;box-shadow:inset 0 2px 0 #fff4,0 3px 0 #684296}
.goalContent{margin-top:14px}.goalCard{display:grid;justify-items:center;gap:10px;padding:21px;border:2px solid #fff;border-radius:25px;text-align:center;background:radial-gradient(circle at 50% 0,#ffdeab88,transparent 40%),linear-gradient(145deg,#fff6e1,#f3e4fc)}
.goalCard[data-period=weekly]{background:radial-gradient(circle at 50% 0,#b4e5ef88,transparent 40%),linear-gradient(145deg,#e8f5ef,#f2e7fa)}.goalCard[data-state=claimed]{background:linear-gradient(145deg,#e9f5dd,#fff1d6)}.goalCard .bitmapArt{width:96px;height:96px;display:block}.goalMedal{width:100%;height:100%;object-fit:contain}.goalCard .eyebrow{font-size:9px;color:#8a618e}.goalCard h3{font:1000 30px/1.05 Nunito,sans-serif;margin:0}.goalDescription{font-size:14px;line-height:1.4;margin:0;color:#765b85}
.goalTrack{width:100%;height:16px;border:2px solid #fff;border-radius:999px;background:#ded0ec;overflow:hidden;box-shadow:inset 0 2px 3px #7252901c}.goalFill{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#ab71dc,#d78bc8,#ffc365)}.goalProgress{font-size:13px;color:#73518b}.goalPrize{padding:8px 12px;border:1px solid #fff;border-radius:999px;background:#fff1cc;color:#875925;font-size:12px;font-weight:900}.goalActions{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;width:100%;margin-top:4px}.goalActions button{min-height:44px;padding:9px 13px}.goalRule{font-size:10px;line-height:1.35;color:#887394;max-width:370px}.goalDone{margin:0;font-size:13px;line-height:1.4;color:#6d7c59}.goalStatus{min-height:18px;margin:9px 0;font-size:12px;line-height:1.4;color:#796088}.goalRelax{display:block;margin:auto;min-height:44px;font-size:12px}.goalEmpty{font-size:14px;line-height:1.5;color:#79668a}
@media(prefers-reduced-motion:no-preference){.littleGoalsDialog:not([data-still=true]) .goalCard{animation:littleGoalIn .28s ease-out both}.littleGoalsDialog:not([data-still=true]) .goalMedal{animation:littleGoalMedal .5s ease-out both}}
@keyframes littleGoalIn{from{opacity:.4;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@keyframes littleGoalMedal{0%{transform:scale(.88) rotate(-6deg)}65%{transform:scale(1.045) rotate(3deg)}100%{transform:scale(1) rotate(0)}}
.littleGoalsDialog header .iconBtn{min-width:44px;min-height:44px}

/* ACH3: a paged medal cabinet, outside the puzzle rendering loop. */
#screen-achievements.active{overflow:hidden;scrollbar-gutter:auto}
.achievementsWrap{display:flex;flex-direction:column;gap:12px;height:100%;min-height:0;max-width:1180px;margin:auto;padding:12px 28px 14px;color:#513174}
.achievementsHero{display:flex;align-items:center;gap:22px;flex:none;min-height:100px;padding:10px 24px;border:1px solid #fff6e4;border-radius:26px;background:radial-gradient(ellipse at 13% 0,#ffe8ac,transparent 44%),linear-gradient(120deg,#fff5df,#f5e8ff);box-shadow:inset 0 2px 0 #fff,0 5px 0 #dfcfe8}
.achievementsHeroArt{width:100px;height:100px;flex:none}.achievementHeroImage{width:100%;height:100%;object-fit:contain}.achievementsHero h1{font:900 clamp(27px,3vw,38px)/1.05 Nunito,sans-serif;margin:4px 0 7px;color:#523075}.achievementsHero .eyebrow{font-size:10px;margin:0;color:#825571}.achievementsHero p{margin:0;font-size:14px;line-height:1.4}.achievementRefresh{margin-left:auto;min-width:44px;min-height:44px;font-size:24px;padding:4px 10px}
.achievementTabs{flex:none;display:flex;gap:5px;padding:5px;background:#e8daf2;border:1px solid #dfcde9;border-radius:20px}
.achievementTabs button,.achievementDisplay button,.achievementFamily button{color:#62457a;font:900 14px Nunito,sans-serif;cursor:pointer;border:1px solid transparent;background:transparent;min-height:44px;border-radius:15px;padding:6px 18px}.achievementTabs button{flex:1}.achievementTabs button[aria-selected=true]{background:linear-gradient(#fffaf2,#ead7fc);border-color:#d3b0ea;box-shadow:inset 0 2px 0 #fff,0 3px 0 #ba9ccf;color:#62369a}
.achievementTools{display:flex;align-items:center;justify-content:space-between;gap:8px;flex:none;min-height:44px}.achievementTools>p{font-size:14px;font-weight:700;margin:0}.achievementDisplay{display:flex;padding:3px;border:1px solid #e4d4eb;border-radius:15px;background:#f7effa}.achievementDisplay button{min-height:38px;padding:3px 12px;font-size:12px}.achievementDisplay button[aria-pressed=true]{background:#fff8f2;box-shadow:0 2px 0 #d7bddf;color:#54307c}.achievementFamily{display:flex;align-items:center;gap:8px;min-width:0}.achievementFamily span{font-size:13px;font-weight:900;text-align:center;min-width:120px}.achievementFamily button{padding:5px 10px;min-width:44px;background:#f1e5f8}
.achievementNotice{flex:none;border:1px solid #e7d2a5;border-radius:13px;background:#fff1d5;color:#72532d;font-size:12px;line-height:1.4;padding:8px 12px}
.achievementPanel{flex:1;min-height:0}.achievementCards{display:grid;grid-template-columns:repeat(var(--achievement-columns,3),minmax(0,1fr));grid-template-rows:repeat(var(--achievement-rows,1),minmax(0,1fr));gap:12px;height:100%;min-height:0}
.achievementCard{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;min-width:0;min-height:0;padding:14px 15px 12px;border:1px solid #fff;border-radius:24px;background:linear-gradient(145deg,#fffaf3,#f0e5fa);color:#503072;text-align:center;cursor:pointer;box-shadow:inset 0 2px 0 #fff,0 4px 0 #d9c2e7;transition:transform .18s ease,box-shadow .18s ease;overflow:hidden}
.achievementCard:hover:not(:disabled){transform:translateY(-2px);box-shadow:inset 0 2px 0 #fff,0 6px 0 #cab0df}.achievementCard:active:not(:disabled){transform:translateY(2px)}.achievementCard:disabled{cursor:default;box-shadow:none;background:#f1eaf5;border-color:#e5d9eb;color:#776682}.achievementCardCopy{display:flex;flex-direction:column;gap:5px;width:100%;min-width:0}.achievementCard strong{font:900 17px/1.15 Nunito,sans-serif;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.achievementCard small{font:600 12px/1.3 Nunito,sans-serif;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;color:#776080}.achievementState{font:800 10px/1.25 Nunito,sans-serif;color:#796141}.achievementCheck{position:absolute;top:10px;right:10px;display:grid;place-items:center;background:#deefd8;border:1px solid #b5d5a8;border-radius:50%;width:24px;height:24px;color:#397847;font-weight:900}
.achievementArt{position:relative;display:grid;place-items:center;flex:none;width:80px;height:80px;border-radius:24px;background:radial-gradient(ellipse,#ffecb8,#f3d791 65%,#d5ac5f);border:2px solid #f6ce71;box-shadow:inset 0 2px 0 #fff6d5,0 5px 0 #cdb17b;transform:rotate(-4deg)}
.achievementArt:after{content:'✦';position:absolute;right:-5px;top:-9px;font-size:19px;color:#c68b3e;transform:rotate(4deg)}.achievementArt img{width:100%;height:100%;object-fit:contain}.achievementArt:has(img){background:transparent;border:0;box-shadow:none;transform:none}.achievementArt:has(img):after{display:none}.achievementEmblem{font:900 34px/1 Nunito,sans-serif;color:#6946a1;text-shadow:0 2px 0 #fff0cb;transform:rotate(4deg)}
.achievementArt[data-emblem=quiet-flow]{background:linear-gradient(145deg,#e0f3ee,#acdacc);border-color:#b0d7c4;box-shadow:inset 0 2px 0 #fff,0 5px 0 #94baa5;border-radius:50%}.achievementArt[data-emblem=twelve-piece-pal]{border-radius:16px;background:linear-gradient(145deg,#e3d9ff,#c2a5e9);border-color:#b9a0dc;box-shadow:inset 0 2px 0 #fff,0 5px 0 #9d80be}.achievementArt[data-emblem=picture-explorer]{background:linear-gradient(145deg,#dbf4ff,#afd4ef);border-color:#9ccbe0;box-shadow:inset 0 2px 0 #fff,0 5px 0 #8fafcc;transform:rotate(5deg)}
.achievementLocked .achievementArt{opacity:.75}.achievementCard:disabled .achievementArt{background:#e4d9ec;border-color:#d5c5df;box-shadow:none}.achievementCard:disabled .achievementArt:after{display:none}.achievementCard:disabled .achievementEmblem{color:#aa91be;text-shadow:none}
.achievementProgress{display:flex;flex-direction:column;gap:4px;font:900 12px Nunito,sans-serif;color:#654193}.achievementTrack{display:block;height:7px;background:#e3d5ef;border-radius:99px;overflow:hidden}.achievementTrack>span{display:block;height:100%;background:linear-gradient(90deg,#b08ae5,#8452c6);border-radius:inherit}
.achievementCards[data-layout=list] .achievementCard,.achievementCards[data-layout=paths] .achievementCard{flex-direction:row;justify-content:flex-start;gap:18px;text-align:left;padding:9px 22px;max-height:140px}.achievementCards[data-layout=list] .achievementArt,.achievementCards[data-layout=paths] .achievementArt{width:66px;height:66px;border-radius:19px}.achievementCards[data-layout=list] .achievementCardCopy,.achievementCards[data-layout=paths] .achievementCardCopy{padding-right:20px}.achievementCards[data-layout=paths] .achievementCard{border-left:5px solid #ba98db}.achievementCards[data-layout=paths] .achievementParent{font-size:11px}.achievementCards[data-layout=list] .achievementProgress,.achievementCards[data-layout=paths] .achievementProgress{max-width:420px}
.achievementEmpty{grid-column:1/-1;grid-row:1/-1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;border:1px dashed #cdb2df;background:linear-gradient(135deg,#fff8eb,#efe4fa);border-radius:26px;padding:20px}.achievementEmptyMark{font-size:46px;color:#b28dd5}.achievementEmpty h2{font:900 24px/1.15 Nunito,sans-serif;margin:8px 0}.achievementEmpty p{font-size:14px;max-width:390px;margin:4px 0 15px}
.achievementPager{display:flex;flex:none;justify-content:center;align-items:center;gap:16px;padding-top:3px}.achievementPager button{min-width:48px;min-height:44px}.achievementPager span{font-size:12px;font-weight:800;color:#735785}.achievementsWrap [hidden]{display:none!important}.achievementFamily button:disabled,.achievementPager button:disabled{opacity:.4;cursor:default}
.achievementDialog{position:fixed;width:min(460px,calc(100vw - 24px));max-height:calc(100dvh - 28px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overflow:auto;overscroll-behavior:contain;border:2px solid #fff;border-radius:28px;background:radial-gradient(ellipse at 50% 0,#fff0bd,transparent 50%),#fff8f2;box-shadow:0 12px 0 #74539b33,0 24px 60px #34204240;padding:30px;color:#503072;text-align:center}.achievementDialog::backdrop{background:#34214677}.achievementDetailClose{position:absolute;right:12px;top:12px;min-width:44px;min-height:44px}.achievementArtLarge{width:145px;height:145px;margin:8px auto 22px;border-radius:40px}.achievementArtLarge .achievementEmblem{font-size:62px}.achievementDialog h2{font:900 30px/1.12 Nunito,sans-serif;margin:8px 0 14px}.achievementDialog p{font-size:14px;line-height:1.5}.achievementDialog .eyebrow{font-size:10px}.achievementDetailDate{color:#807045}.achievementReward{padding:12px;background:#f1e4fc;border-radius:15px;font-weight:900;color:#664391}.achievementDialog .primaryBtn{min-height:48px;width:100%}.achievementDetailPath{font-size:12px!important;color:#7c658b}.achievementDetailStatus{font-size:12px!important;min-height:16px}.achievementDialog .achievementProgress{text-align:left;margin-top:14px}
.achievementTabs button:focus-visible,.achievementDisplay button:focus-visible,.achievementFamily button:focus-visible,.achievementCard:focus-visible,.achievementDialog button:focus-visible,.achievementPager button:focus-visible,.achievementRefresh:focus-visible{outline:3px solid #8050c4;outline-offset:3px}
@media(max-width:700px){.achievementsWrap{padding:8px 12px 9px;gap:9px}.achievementsHero{min-height:80px;gap:12px;padding:9px 12px;border-radius:21px}.achievementsHeroArt{width:64px;height:64px}.achievementsHero h1{font-size:26px;margin:3px 0}.achievementsHero .eyebrow{font-size:7px}.achievementsHero p{font-size:11px}.achievementRefresh{min-width:44px;padding:3px;font-size:21px}.achievementTools{align-items:center;min-height:44px;gap:5px}.achievementTools>p{font-size:11px;max-width:47%}.achievementDisplay button{padding:4px 9px;min-height:44px}.achievementFamily{gap:2px}.achievementFamily span{min-width:75px;max-width:125px;font-size:11px}.achievementTabs button{padding:5px 9px;min-height:44px;font-size:13px}.achievementCards{gap:10px}.achievementCard{border-radius:19px;padding:11px 10px;gap:8px}.achievementCard strong{font-size:14px}.achievementCard small{font-size:11px}.achievementArt{width:64px;height:64px;border-radius:21px}.achievementEmblem{font-size:28px}.achievementState{font-size:9px}.achievementCards[data-layout=list] .achievementCard,.achievementCards[data-layout=paths] .achievementCard{padding:9px 12px;gap:14px}.achievementCards[data-layout=list] .achievementArt,.achievementCards[data-layout=paths] .achievementArt{width:56px;height:56px}.achievementEmpty{padding:16px}.achievementEmpty h2{font-size:21px}.achievementEmpty p{font-size:12px}.achievementNotice{font-size:11px;padding:7px 9px}.achievementDialog{padding:26px 20px}.achievementArtLarge{width:125px;height:125px}.achievementDialog h2{font-size:27px}.topbar .navBtn[data-nav=achievements]{font-size:9px}}
@media(max-height:620px){.achievementsWrap{gap:5px;padding-block:4px}.achievementsHero{min-height:52px;padding:4px 13px;gap:10px}.achievementsHeroArt{width:46px;height:46px}.achievementsHero h1{font-size:23px;margin:0}.achievementsHero .eyebrow{display:none}.achievementsHero p{font-size:10px}.achievementTools>p{display:none}.achievementTools{justify-content:flex-end;min-height:44px}.achievementCards{gap:6px}.achievementCard{gap:3px;padding:5px 10px}.achievementCard small,.achievementState{font-size:10px}.achievementCard strong{font-size:13px}.achievementArt{width:46px;height:46px;box-shadow:none}.achievementEmblem{font-size:22px}.achievementCards[data-layout=list] .achievementArt,.achievementCards[data-layout=paths] .achievementArt{width:40px;height:40px}.achievementCard small{-webkit-line-clamp:1}.achievementPager{padding:0}.achievementEmptyMark{display:none}.achievementEmpty h2{font-size:17px;margin:3px}.achievementEmpty p{font-size:11px;margin:2px}.achievementEmpty .primaryBtn{min-height:44px;padding:6px 12px}.achievementArtLarge{width:85px;height:85px;margin:0 auto 12px}.achievementDialog{padding:18px}.achievementDialog h2{font-size:23px}.achievementDialog p{font-size:12px;margin:7px 0}.achievementDialog .achievementReward{padding:8px}}
@media(prefers-reduced-motion:reduce){.achievementCard{transition:none}.achievementCard:hover:not(:disabled),.achievementCard:active:not(:disabled){transform:none}}
.reduced-motion .achievementCard{transition:none}.reduced-motion .achievementCard:hover:not(:disabled),.reduced-motion .achievementCard:active:not(:disabled){transform:none}
.achievementCards[data-layout=wall] .achievementCard{max-height:280px;align-self:start;height:100%}.achievementBoot{height:100%;width:100%}
@media(min-width:560px) and (max-height:460px){.achievementsWrap{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:52px 44px auto minmax(0,1fr) 44px;grid-template-areas:"hero hero" "tabs tools" "notice notice" "panel panel" "pager pager";padding-inline:18px;gap:4px 10px}.achievementsHero{grid-area:hero;min-height:0}.achievementTabs{grid-area:tabs;padding:0}.achievementTabs button{min-height:44px;padding:3px 10px}.achievementTools{grid-area:tools;min-height:0}.achievementDisplay button{min-height:44px;padding:3px 10px}.achievementNotice{grid-area:notice;padding:2px 6px;font-size:10px}.achievementPanel{grid-area:panel}.achievementPager{grid-area:pager}.achievementCards[data-layout=wall] .achievementCard{flex-direction:row;gap:10px;text-align:left;padding:5px 9px}.achievementCards[data-layout=wall] .achievementCardCopy{padding-right:15px}.achievementCards[data-layout=wall] .achievementArt{width:40px;height:40px}.achievementCheck{width:18px;height:18px;top:5px;right:5px}}
/* ACH4: give painted collectibles room without increasing page size. */
.achievementCards[data-layout=wall] .achievementArt:has(img){width:112px;height:112px}
.achievementCards[data-layout=list] .achievementArt:has(img),.achievementCards[data-layout=paths] .achievementArt:has(img){width:78px;height:78px}
@media(max-width:700px){.achievementCards[data-layout=wall] .achievementArt:has(img){width:88px;height:88px}.achievementCards[data-layout=list] .achievementArt:has(img),.achievementCards[data-layout=paths] .achievementArt:has(img){width:64px;height:64px}}
@media(max-height:620px){.achievementCards[data-layout=wall] .achievementArt:has(img){width:64px;height:64px}.achievementCards[data-layout=list] .achievementArt:has(img),.achievementCards[data-layout=paths] .achievementArt:has(img){width:40px;height:40px}}
@media(min-width:560px) and (max-height:460px){.achievementCards[data-layout=wall] .achievementArt:has(img){width:44px;height:44px}}
/* ACH5: finite, on-demand medal reveals. No animated shadows or blur filters. */
.medalReveal{box-sizing:border-box;width:min(490px,calc(100vw - 28px));max-height:calc(100dvh - 28px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));padding:26px;border:2px solid #fff7f0;border-radius:32px;background:radial-gradient(ellipse at 50% 23%,#fff1b6 0,transparent 58%),linear-gradient(155deg,#fff9ef,#f4e7ff);color:#503072;box-shadow:0 10px 0 #8e5aa833,0 24px 65px #30204b45;overflow:hidden;text-align:center}
.medalReveal::backdrop{background:#2c204ab0}
.medalRevealContent{display:flex;flex-direction:column;gap:12px;min-height:0;max-height:calc(100dvh - 84px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}
.medalRevealTop{display:flex;align-items:center;justify-content:space-between;gap:12px}.medalRevealCount{font-size:12px;font-weight:900;color:#866393}.medalRevealSkip{font-size:12px;min-height:44px;padding:8px 15px}.medalReveal .eyebrow{font-size:11px;color:#946037;letter-spacing:.13em}
.medalRevealStage{position:relative;display:grid;place-items:center;flex-shrink:0;height:220px;margin:0 auto;width:min(100%,280px);isolation:isolate}.medalRevealArt{display:inline-grid;place-items:center;flex-shrink:0}.medalRevealStage .medalRevealArt{width:216px;height:216px;z-index:2}.medalRevealArt img{display:block;max-width:100%;max-height:100%;width:100%;height:100%;object-fit:contain}.medalRevealFallback{font-size:80px;color:#e9b543}.medalRevealHalo{position:absolute;inset:6%;z-index:-1;border-radius:50%;background:radial-gradient(ellipse,#ffda816b,transparent 66%)}.medalRevealRing{position:absolute;width:190px;height:190px;border-radius:50%;border:3px solid #ffca64;outline:1px solid #fff3c0;opacity:0;z-index:1}.medalRevealParticles{position:absolute;inset:0;pointer-events:none;z-index:3}.medalRevealSpark{position:absolute;left:calc(50% - 9px);top:calc(50% - 9px);color:var(--medal-color);font:900 23px/1 Nunito,sans-serif;font-style:normal;opacity:0}
.medalReveal h2{font:1000 32px/1.1 Nunito,sans-serif;margin:0;text-wrap:balance}.medalReveal p{margin:0}.medalRevealReward{font-size:13px;font-weight:900;background:#e9daf8;border:1px solid #fff;border-radius:18px;padding:12px 16px}.medalRevealDescription{font-size:13px;line-height:1.45;color:#796584;text-wrap:pretty}
.medalRevealList{display:flex;flex-direction:column;gap:8px;overflow:auto;overscroll-behavior:contain;min-height:0;padding:3px;scrollbar-width:thin}.medalRevealItem{display:flex;align-items:center;gap:12px;text-align:left;flex-shrink:0;padding:8px 12px;border:1px solid #fff;border-radius:19px;background:#fffaf2cc}.medalRevealItem .medalRevealArt{width:64px;height:64px}.medalRevealItem .medalRevealFallback{font-size:32px}.medalRevealItem strong{display:block;font:900 16px/1.2 Nunito,sans-serif}.medalRevealItem small{display:block;margin-top:4px;font-size:11px;color:#87624d}.medalRevealActions{display:flex;gap:10px;flex-shrink:0}.medalRevealActions button{flex:1;min-height:48px;font-size:14px;padding:10px}.medalReveal button:focus-visible{outline:3px solid #8050c4;outline-offset:3px}
@media(max-width:550px){.medalReveal{padding:20px;border-radius:27px}.medalRevealContent{gap:10px;max-height:calc(100dvh - 72px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}.medalReveal h2{font-size:28px}.medalRevealStage{height:200px}.medalRevealStage .medalRevealArt{height:190px;width:190px}}
@media(max-height:540px){.medalReveal{width:min(680px,calc(100vw - 24px));padding:16px}.medalRevealContent{gap:7px;max-height:calc(100dvh - 64px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}.medalRevealStage{height:116px}.medalRevealStage .medalRevealArt{width:120px;height:120px}.medalRevealRing{width:110px;height:110px}.medalReveal h2{font-size:24px}.medalRevealReward{padding:6px 12px}.medalRevealTop{position:absolute;inset:8px 12px auto}.medalRevealDescription{font-size:12px}.medalRevealItem .medalRevealArt{width:48px;height:48px}.medalRevealList{display:grid;grid-template-columns:1fr 1fr}.medalRevealItem{gap:8px;padding:5px 8px}.medalRevealItem strong{font-size:13px}.medalReveal .eyebrow{font-size:9px}.medalRevealActions{margin-top:3px}}
@media(prefers-reduced-motion:reduce){.medalRevealRing,.medalRevealParticles{display:none}}
html.reduced-motion .medalRevealRing,html.reduced-motion .medalRevealParticles{display:none}

/* ACH6: a bounded discovery map, drawn only from disclosed server metadata. */
#screen-achievements[data-achievement-tab=paths] .achievementTools>p{display:none}
#screen-achievements[data-achievement-tab=paths] .achievementDisplay{flex:none}
#screen-achievements[data-achievement-tab=paths] .achievementFamily{justify-content:flex-end;flex:1;gap:5px}
#screen-achievements[data-achievement-tab=paths] .achievementFamily span{min-width:0;max-width:190px;overflow-wrap:anywhere}
#screen-achievements[data-achievement-tab=paths] .achievementDisplay button{min-height:44px;min-width:44px}
.achievementCards[data-layout=map]{display:block}
.achievementTrail{height:100%;overflow:hidden;border:1px solid #ddc7e9;border-radius:26px;background:radial-gradient(ellipse at 16% 92%,#d4ebe6a8,transparent 48%),radial-gradient(ellipse at 87% 8%,#ffe5a58c,transparent 47%),linear-gradient(130deg,#fff8f0,#f0e5fa);box-shadow:inset 0 2px 0 #fff}
.trailIntro{box-sizing:border-box;padding:12px 18px 0;overflow:hidden}
.trailIntroLine{display:flex;align-items:center;justify-content:space-between;gap:10px}
.trailIntro h2{margin:0;color:#62408c;font:1000 19px/1.15 Nunito,sans-serif}
.trailCount{flex:none;color:#765288;background:#fffcf3b3;border:1px solid #fff;border-radius:12px;padding:4px 8px;font:900 11px/1.2 Nunito,sans-serif}
.trailHint{margin:6px 0 0;color:#796081;font-size:12px;line-height:1.35}
.trailStage{position:relative;overflow:hidden}
.trailConnections{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.trailConnections path{fill:none;stroke-linecap:round}
.trailLinkBase{stroke:#fffaf2;stroke-width:10}
.trailLinkEarned{stroke:#a9ccb6;stroke-width:4}
.trailLinkNext{stroke:#c69b57;stroke-width:4;stroke-dasharray:5 8}
.achievementTrailNode{position:absolute;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:9px 12px;min-width:0;border:2px solid #fff;border-radius:24px;background:linear-gradient(145deg,#fffcf4,#f4e9fb);color:#583679;box-shadow:0 4px 0 #ccb5de,0 8px 13px #66507315;text-align:center;font-family:Nunito,sans-serif;cursor:pointer}
.trailEarned{border-color:#c2ddcb;background:linear-gradient(145deg,#fffdf5,#e4f1e6);box-shadow:0 4px 0 #a3c7b0,0 8px 13px #45654613}
.trailNext{border-color:#f0c770;background:linear-gradient(145deg,#fffdf5,#fff0cd);box-shadow:0 4px 0 #d8b56b,0 8px 13px #78532017}
.trailContext{background:#fffaf5;border-color:#e7d5ea;box-shadow:0 4px 0 #d5c7da}
.achievementTrailNode .achievementArt{width:82px;height:82px;border-radius:22px}
.achievementTrailNode .achievementArt:has(img){width:92px;height:92px}
.trailNodeCopy{display:flex;flex-direction:column;gap:4px;min-width:0;width:100%}
.achievementTrailNode strong{font:1000 16px/1.1 Nunito,sans-serif;overflow-wrap:anywhere}
.achievementTrailNode small,.trailNodeState{color:#785984;font:800 10px/1.2 Nunito,sans-serif}
.trailEarned .trailNodeState{color:#477d5c}.trailNext .trailNodeState{color:#926123}
.achievementTrailNode .achievementProgress{margin:0;width:100%;gap:3px;font-size:10px}
.achievementTrailNode .achievementTrack{height:5px}
.achievementTrailNode .trailEarlier{font-size:9px;color:#806b7f}
.trailFog{border:2px dashed #c7acdc;background:linear-gradient(145deg,#fffaf8d9,#e9ddf3e8);box-shadow:0 4px 0 #c9b4d9;color:#806196}
.trailMystery{display:grid;place-items:center;flex:none;width:64px;height:64px;border:2px solid #fffcf5;border-radius:24px;background:radial-gradient(ellipse at 35% 25%,#fff9e9,#e6d1fa 78%);box-shadow:0 4px 0 #c8acde;color:#9b71bf;font:1000 40px/1 Nunito,sans-serif;transform:rotate(-5deg)}
.trailMysteryLarge{width:115px;height:115px;margin:10px auto 26px;font-size:65px;border-radius:35px}
.achievementTrailNode:focus-visible{outline:3px solid #8050c4;outline-offset:3px}
.achievementTrail[data-compact=true] .trailIntro{padding:4px 14px 0}
.achievementTrail[data-compact=true] .trailIntro h2{font-size:14px}
.achievementTrail[data-compact=true] .trailCount{padding:3px 6px;font-size:10px}
.achievementTrail[data-compact=true] .trailHint{display:none}
.achievementTrail[data-compact=true] .achievementTrailNode{flex-direction:row;gap:8px;padding:5px 9px;text-align:left;border-radius:18px}
.achievementTrail[data-compact=true] .achievementArt,.achievementTrail[data-compact=true] .achievementArt:has(img){width:44px;height:44px;border-radius:14px}
.achievementTrail[data-compact=true] .achievementEmblem{font-size:22px}
.achievementTrail[data-compact=true] .trailNodeCopy{flex:1;gap:3px}
.achievementTrail[data-compact=true] .achievementTrailNode strong{font-size:13px}
.achievementTrail[data-compact=true] .trailEarlier{display:none}
.achievementTrail[data-compact=true] .trailFog{flex-wrap:wrap;gap:3px;align-content:center;justify-content:center;text-align:center}
.achievementTrail[data-compact=true] .trailFog .trailMystery{width:36px;height:36px;font-size:23px;border-radius:13px}
.achievementTrail[data-compact=true] .trailFog small{width:100%}
@media(max-width:700px){.achievementTrail{border-radius:21px}.trailIntro{padding:10px 12px 0}.trailIntro h2{font-size:17px}.trailHint{font-size:11px}.trailCount{font-size:10px}.achievementTrailNode{padding:7px 9px}.achievementTrailNode .achievementArt,.achievementTrailNode .achievementArt:has(img){width:64px;height:64px}.achievementTrailNode strong{font-size:14px}.trailNodeCopy{gap:3px}#screen-achievements[data-achievement-tab=paths] .achievementFamily span{max-width:110px;font-size:10px}#screen-achievements[data-achievement-tab=paths] .achievementFamily{gap:2px}}
@media(prefers-reduced-motion:no-preference){.achievementTrailNode{animation:trailArrive .18s ease-out both}.achievementTrailNode:hover{border-color:#c199e4}.trailNext:hover{border-color:#d89b30}}
@keyframes trailArrive{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
html.reduced-motion .achievementTrailNode{animation:none!important}

/* ACH7: permanent picture stamps. Static frame; animation is scoped to the reveal. */
.achievementArt.pictureBadgeArt,.achievementArt.pictureBadgeArt:has(img){position:relative;display:inline-grid;place-items:center;box-sizing:border-box;flex-shrink:0;padding:7px;border:2px solid #d6a54b;border-radius:24% 24% 24% 8%;background:linear-gradient(135deg,#fff5cf,#f3c96f 48%,#ba8436);box-shadow:inset 0 0 0 2px #fff3c8,0 4px 0 #9a64272b;transform:none;overflow:visible}
.achievementArt.pictureBadgeArt img{display:block;width:100%;height:100%;object-fit:cover;border-radius:18% 18% 18% 4%;border:1px solid #ffefc5;box-sizing:border-box}
.pictureBadgeSeal{position:absolute;right:-3px;bottom:-4px;display:grid;place-items:center;width:23%;height:23%;min-width:18px;min-height:18px;border:2px solid #fff6cd;border-radius:50%;background:linear-gradient(#e6b54e,#b9832b);color:#fffdf1;font:900 14px/1 Nunito,sans-serif;box-shadow:0 2px 3px #68422d22}
.pictureBadgeMissing{color:#805798}.achievementArtLarge.pictureBadgeArt{padding:10px}.pictureBadgeArt.medalRevealArt{padding:10px}.medalRevealStage .pictureBadgeArt .pictureBadgeSeal{font-size:24px}.medalRevealList .pictureBadgeArt{border-radius:22% 22% 22% 8%;padding:5px}
@media(max-height:620px){.achievementArt.pictureBadgeArt{padding:4px}.pictureBadgeSeal{font-size:10px;min-width:14px;min-height:14px}.achievementArtLarge.pictureBadgeArt{padding:7px}}

/* Confirmed claims: finite compositor-only tokens; the text reflects the receipt. */
.claimRewardEffect{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1200;contain:layout style}
.claimRewardFullscreen{position:fixed}
.claimRewardPuff{position:absolute;transform:translate(-50%,-50%);padding:10px 18px;border:2px solid #fff2b8;border-radius:22px;white-space:nowrap;background:linear-gradient(135deg,#fff2a0,#ffc955);color:#613b82;box-shadow:0 4px 0 #c79835;font:900 24px Nunito,sans-serif;animation:claimRewardPuff 1.1s ease-out both}
.claimRewardCoin{position:absolute;display:grid;place-items:center;width:27px;height:27px;margin:-13px;border:3px solid #fff0a5;border-radius:50%;background:radial-gradient(circle at 30% 25%,#fff4a6,#f2ad24 65%,#bc791e);box-shadow:0 2px 0 #a96d19;color:#fff9de;font-size:16px;opacity:0;animation:claimRewardCoin .9s cubic-bezier(.2,.65,.3,1) both}
.claimRewardCoin:not(.claimRewardXp){border:0;background:url('assets/sticker-club-v2/star-coin-48-v2.webp') center/contain no-repeat;box-shadow:none}.claimRewardXp{border:1px solid #b994d7;background:#eee0ff;box-shadow:none;color:#683796;font-size:11px;font-weight:900;border-radius:8px}
@keyframes claimRewardCoin{0%{opacity:0;transform:translate(0,15px) rotateY(0) scale(.4)}18%{opacity:1}55%{opacity:1;transform:translate(var(--claim-dx),var(--claim-dy)) rotateY(360deg) scale(1.05)}100%{opacity:0;transform:translate(calc(var(--claim-dx)*1.1),35px) rotateY(660deg) scale(.4)}}
@keyframes claimRewardPuff{0%{opacity:0;transform:translate(-50%,-20%) scale(.75)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}38%{transform:translate(-50%,-50%) scale(1)}75%{opacity:1}100%{opacity:0;transform:translate(-50%,-90%) scale(.96)}}
.claimRewardEffect[data-still="true"] .claimRewardPuff{animation:none}
html.reduced-motion .claimRewardCoin{display:none}html.reduced-motion .claimRewardPuff{animation:none}
@media(prefers-reduced-motion:reduce){.claimRewardCoin{display:none}.claimRewardPuff{animation:none}}

/* One illustrated, verified next achievement replaces the existing lobby hero. */
#screen-home .lobbyHero.hasAchievementGoal>.lobbyIntro,#screen-home .lobbyHero.hasAchievementGoal>.lobbyHeroArt{display:none}
#homeAchievementGoal{grid-column:1/-1;width:100%;min-width:0}
.achievementGoalCard{display:grid;grid-template-columns:clamp(95px,15vw,185px) minmax(0,1fr);align-items:center;gap:24px;text-align:left;min-width:0}
.goalMedalShell{position:relative;display:grid;place-items:center;width:100%;aspect-ratio:1;max-height:200px;border-radius:50%;background:radial-gradient(circle,#ffe5a5 0,#faebfa 48%,transparent 70%)}
.goalMedalShell>*{grid-area:1/1}.goalArtFallback{font-size:60px;color:#bc88db}.goalMedal{width:100%;height:100%;max-height:200px;object-fit:contain;position:relative}
.achievementGoalCopy{min-width:0}.achievementGoalTitle{display:block;color:#533477;line-height:1.08;font-weight:900;overflow-wrap:anywhere}
#screen-home .lobbyHero .achievementGoalTitle{font-size:clamp(28px,3.7vw,44px);margin:8px 0 14px}
.achievementGoalTrack{height:13px;border:1px solid #d8c2e6;background:#e7d8f0;border-radius:20px;overflow:hidden}.achievementGoalFill{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#996be9,#c175e3,#f2ac79)}
.achievementGoalProgress{display:block;font-size:14px;font-weight:900;color:#604182;margin-top:7px}.achievementGoalNote,.achievementGoalNext{display:block;font-size:12px;color:#786185;margin-top:6px}.achievementGoalNext{font-weight:900;color:#604182}
#screen-home .lobbyHero .achievementGoalMessage:empty{display:none}#screen-home .lobbyHero .achievementGoalMessage{font-size:12px;margin-top:5px;line-height:1.3}
.achievementGoalActions{display:flex;gap:8px;margin-top:14px;align-items:center}.achievementGoalActions button{min-height:44px;font-size:14px;padding:10px 14px;line-height:1.2}
#resultAchievementGoal{margin:10px 0;padding:12px;border:1px solid #dcc5ed;border-radius:18px;background:linear-gradient(115deg,#fff1d8,#f0e4fb)}
#resultAchievementGoal .achievementGoalCard{grid-template-columns:72px minmax(0,1fr);gap:12px}#resultAchievementGoal .eyebrow{font-size:9px}#resultAchievementGoal .achievementGoalTitle{font-size:18px;margin:3px 0 7px}
#resultAchievementGoal .achievementGoalTrack{height:7px}#resultAchievementGoal .achievementGoalProgress{font-size:11px;margin-top:4px}#resultAchievementGoal .achievementGoalMessage{font-size:12px;line-height:1.3;margin:4px 0}#resultAchievementGoal .achievementGoalNext{font-size:11px;margin-top:3px}
#resultAchievementGoal .achievementGoalActions{margin-top:6px}#resultAchievementGoal .achievementGoalActions button{font-size:12px;padding:7px 10px}
.completeCard:has(#resultAchievementGoal.goalNextAvailable:not([hidden])) #nextPuzzleBtn{display:none}

/* Server-confirmed time and place: one compact result, no extra modal. */
.resultRanking{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;margin:12px 0;padding:14px 16px;border:2px solid #e0cfef;border-radius:20px;background:linear-gradient(115deg,#f2e8ff,#fff9ed);color:#503472;text-align:left;min-height:94px}
.resultRanking[hidden]{display:none}.resultRankingContext{display:block;font-size:11px;font-weight:750;color:#806594;line-height:1.4}.resultRanking h3{font-size:clamp(17px,2.2vw,23px);line-height:1.15;margin:5px 0}.resultRanking p{font-size:12px;line-height:1.4;margin:4px 0}.resultRankingPlace{display:flex;flex-direction:column;align-items:center;min-width:84px;padding-left:12px;border-left:1px solid #ddc6e9}.resultRankingPlace strong{font-size:clamp(30px,4vw,42px);line-height:1.1;color:#7c39ba}.resultRankingPlace span{font-size:12px;font-weight:750}.resultRankingPlace small{font-size:10px;color:#826992;margin-top:4px}.resultRanking[data-award="best"],.resultRanking[data-award="first"]{border-color:#e5bd65;background:linear-gradient(110deg,#fff2ce,#f8ecff)}.resultRanking[data-award="best"] h3{color:#7e3fb2}.resultRanking>button{justify-self:start;font-size:12px;padding:8px 12px}
@media(max-width:400px){.resultRanking{gap:8px;padding:11px}.resultRankingPlace{min-width:67px;padding-left:8px}.resultRanking h3{font-size:17px}}

/* Startup uses the bare assembled picture, not a card that disappears mid-flight. */
.referenceOverlay.startMode{transition:none}
.referenceOverlay.startMode .referenceBackdrop{display:none;backdrop-filter:none}
.referenceOverlay.startMode .referenceCard{padding:0;border:0;border-radius:0;background:none;box-shadow:none;transform:none;transition:none}
.referenceOverlay.startMode .referenceCaption{display:none}
.referenceOverlay.startMode .referenceImage{max-height:none;border-radius:0;box-shadow:none}
.referenceOverlay:not(.visible){transition:none}
