/* Jason's Place Fun Kit — "high-end animated storybook" */
.jpf{--gold:#ffd875;--gold2:#ffe7a8;--cream:#fff3d6;--ink:#0a1624;--mist:#c9d6e3;--night:#07111d;font-family:"Nunito","Trebuchet MS",system-ui,-apple-system,sans-serif;color:var(--cream);line-height:1.5}
.jpf-sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.jpf .jpf-i,.jpf-dock .jpf-i,.jpf-album .jpf-i,.jpf-star .jpf-i{width:20px;height:20px;flex:none}
.jpf-wrap{width:min(1120px,100% - 32px);margin:0 auto;position:relative}
.jpf-kicker{font-size:12px;letter-spacing:.18em;text-transform:uppercase;font-weight:900;color:var(--gold)}
.jpf h2{font:800 clamp(30px,4.6vw,50px)/1.08 Georgia,"Times New Roman",serif;margin:8px 0 10px;color:#fff5d5}
.jpf h3{font:800 clamp(22px,2.6vw,28px)/1.2 Georgia,serif;margin:8px 0 14px;color:#fff5d5}
.jpf-lead{color:var(--mist);font-size:17px;max-width:680px;margin:0 0 26px}
.jpf-small{color:#9fb0c2;font-size:13px;margin:14px auto 0}
.jpf button{font-family:inherit}
.jpf a:focus-visible,.jpf button:focus-visible,.jpf input:focus-visible,.jpf-dock :focus-visible,.jpf-album :focus-visible,.jpf-star:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.jpf-btn{display:inline-flex;align-items:center;min-height:48px;padding:12px 22px;border:0;border-radius:999px;background:linear-gradient(135deg,#ffe7a8,#ffc94d);color:#1c1305;font-weight:900;font-size:16px;cursor:pointer;box-shadow:0 10px 24px rgba(255,201,77,.25);transition:transform .2s cubic-bezier(.3,1.6,.5,1)}
.jpf-btn:hover{transform:translateY(-2px) scale(1.02)}
.jpf-link{background:none;border:0;padding:8px 0;color:var(--gold2);font-weight:800;text-decoration:underline;text-underline-offset:3px;cursor:pointer;font-size:15px}
/* friends */
.jpf-friends{padding:64px 0 56px;background:radial-gradient(circle at 20% 0,rgba(255,216,117,.14),transparent 40%),radial-gradient(circle at 90% 100%,rgba(143,115,215,.18),transparent 45%),linear-gradient(180deg,#0c1d2c,#0a1726)}
.jpf-fr-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(6,1fr);gap:14px}
.jpf-fr-grid li{display:flex;flex-direction:column;gap:10px}
.jpf-friend{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;padding:18px 10px 16px;border-radius:24px;border:1px solid rgba(255,222,128,.28);background:linear-gradient(170deg,rgba(255,255,255,.07),rgba(255,255,255,.02));color:var(--cream);cursor:pointer;transition:transform .25s cubic-bezier(.3,1.5,.5,1),border-color .2s,box-shadow .2s;min-height:228px}
.jpf-friend:hover{transform:translateY(-4px);border-color:var(--c);box-shadow:0 18px 36px rgba(0,0,0,.3),0 0 0 1px var(--c) inset}
.jpf-portrait{width:120px;height:120px;border-radius:50%;background-repeat:no-repeat;border:4px solid var(--c);box-shadow:0 0 0 5px rgba(7,17,29,.9),0 0 0 7px rgba(255,216,117,.35),0 14px 30px rgba(0,0,0,.4);display:block}
.jpf-name{font:800 22px Georgia,serif;margin-top:8px;color:#fff5d5}
.jpf-role{font-size:13px;font-weight:800;color:var(--c);letter-spacing:.04em;text-transform:uppercase}
.jpf-met{font-size:12px;color:#9fb0c2;font-weight:700}
.jpf-bubble{position:relative;margin:0;padding:12px 14px;border-radius:16px;background:#fff8e6;color:#2a2012;font-size:14px;line-height:1.45;min-height:84px;box-shadow:0 10px 22px rgba(0,0,0,.25)}
.jpf-bubble:before{content:"";position:absolute;top:-8px;left:50%;margin-left:-8px;border:8px solid transparent;border-top:0;border-bottom-color:#fff8e6}
.jpf-bubble.talk{font-weight:700}
.jpf-friend.bounce .jpf-portrait{animation:jpfBounce .6s cubic-bezier(.3,1.6,.5,1)}
@keyframes jpfBounce{30%{transform:translateY(-12px) rotate(-4deg) scale(1.05)}60%{transform:translateY(0) rotate(3deg)}}
.jpf-fr-tools{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;margin-top:22px;color:var(--mist);font-size:15px}
.jpf-check{display:inline-flex;align-items:center;gap:10px;min-height:44px;cursor:pointer}.jpf-check input{width:22px;height:22px;accent-color:#ffc94d}
.jpf-check[hidden]{display:none}
.jpf-count{font-weight:800;color:var(--gold2)}
/* daily */
.jpf-daily{padding:60px 0;background:linear-gradient(180deg,#0a1726,#101a38)}
.jpf-daily-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:18px}
.jpf-card{padding:28px;border-radius:26px;border:1px solid rgba(255,222,128,.3);background:linear-gradient(160deg,rgba(124,196,111,.12),rgba(255,255,255,.03));box-shadow:0 20px 40px rgba(0,0,0,.25)}
.jpf-card.giggle{background:linear-gradient(160deg,rgba(227,161,74,.16),rgba(255,255,255,.03))}
.jpf-card h2{font-size:clamp(24px,3vw,32px)}
.jpf-opts{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0 8px}
.jpf-opt{min-height:48px;padding:10px 18px;border-radius:999px;border:2px solid rgba(255,243,214,.35);background:rgba(7,17,29,.5);color:var(--cream);font-weight:800;font-size:16px;cursor:pointer;transition:all .2s}
.jpf-opt:hover{border-color:var(--gold)}
.jpf-opt.right{background:#7cc46f;border-color:#b9f0ad;color:#0d2408}
.jpf-opt.nope{opacity:.5;text-decoration:line-through}
.jpf-result{min-height:26px;font-weight:800;color:var(--gold2);margin:6px 0}
.jpf-punch{font:800 22px/1.3 Georgia,serif;color:#ffe7a8;margin:18px 0 0;animation:jpfPop .45s cubic-bezier(.3,1.6,.5,1)}
@keyframes jpfPop{from{transform:scale(.7);opacity:0}}
/* map */
.jpf-map{padding:64px 0;background:radial-gradient(circle at 50% 0,rgba(255,216,117,.12),transparent 50%),linear-gradient(180deg,#101a38,#0c1a29)}
.jpf-map-board{position:relative;aspect-ratio:16/9;border-radius:28px;border:2px solid rgba(255,222,128,.4);background:linear-gradient(0deg,rgba(7,17,29,.2),rgba(7,17,29,.2)),repeating-linear-gradient(45deg,rgba(255,255,255,.025) 0 12px,transparent 12px 24px),linear-gradient(160deg,#1b2d4a,#2a1f45);box-shadow:inset 0 0 60px rgba(0,0,0,.4),0 24px 50px rgba(0,0,0,.35);overflow:hidden}
.jpf-room{position:absolute;display:flex;flex-direction:column;justify-content:flex-end;gap:2px;padding:12px;border-radius:18px;border:2px solid color-mix(in srgb,var(--c) 70%,transparent);background:linear-gradient(170deg,color-mix(in srgb,var(--c) 26%,transparent),rgba(7,17,29,.72));color:#fff;text-decoration:none;transition:transform .25s cubic-bezier(.3,1.5,.5,1),box-shadow .2s;overflow:hidden}
.jpf-room:hover{transform:scale(1.03);box-shadow:0 0 0 3px var(--c),0 14px 30px rgba(0,0,0,.4);z-index:2}
.jpf-room b{font:800 clamp(13px,1.6vw,19px)/1.15 Georgia,serif}
.jpf-room span{font-size:clamp(11px,1.1vw,13px);color:#dfe7f0;line-height:1.3}
.jpf-room em{position:absolute;top:10px;left:10px;font-style:normal;font-size:11px;font-weight:900;background:var(--gold);color:#1c1305;padding:3px 8px;border-radius:999px}
.jpf-room i{position:absolute;top:8px;right:10px;font-style:normal}
.jpf-room.here{box-shadow:0 0 0 3px var(--gold),0 0 30px rgba(255,216,117,.35)}
.jpf-map-garden{border-style:dashed}
/* hidden stars */
.jpf-star{position:absolute;z-index:30;width:44px;height:44px;display:grid;place-items:center;border:0;border-radius:50%;background:radial-gradient(circle,rgba(255,231,168,.95),rgba(255,201,77,.25) 60%,transparent 70%);color:#8a5a00;cursor:pointer;animation:jpfTwinkle 2.4s ease-in-out infinite;opacity:.82}
.jpf-star.fixed{position:fixed}
.jpf-star .jpf-i{width:22px;height:22px;fill:#fff3c0}
.jpf-star:hover{opacity:1;transform:scale(1.15)}
.jpf-star.got{animation:jpfGot .6s ease-out forwards}
@keyframes jpfTwinkle{50%{transform:scale(.86) rotate(12deg);opacity:.55}}
@keyframes jpfGot{to{transform:scale(2.4) rotate(90deg);opacity:0}}
/* dock */
.jpf-dock{position:fixed;left:12px;bottom:12px;z-index:90;display:flex;gap:4px;padding:6px;border-radius:999px;background:rgba(7,17,29,.9);border:1px solid rgba(255,222,128,.4);box-shadow:0 14px 34px rgba(0,0,0,.4);backdrop-filter:blur(10px);font-family:"Nunito","Trebuchet MS",system-ui,sans-serif}
.jpf-dk{position:relative;display:inline-flex;align-items:center;gap:6px;min-height:44px;min-width:44px;padding:8px 12px;border:0;border-radius:999px;background:transparent;color:#fff3d6;font-weight:800;font-size:13px;cursor:pointer;text-decoration:none;transition:background .2s}
.jpf-dk:hover{background:rgba(255,216,117,.14)}
.jpf-dk[aria-pressed=true][data-act=bed]{background:rgba(168,140,240,.25)}
.jpf-dk-n{position:absolute;top:2px;left:26px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#ffc94d;color:#1c1305;font-size:11px;line-height:18px;text-align:center}
.jpf-dk-n:empty{display:none}
/* album */
.jpf-album{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:16px;background:rgba(3,8,15,.72);backdrop-filter:blur(6px);font-family:"Nunito","Trebuchet MS",system-ui,sans-serif}
.jpf-album[hidden]{display:none}
.jpf-album-in{position:relative;width:min(640px,100%);max-height:88vh;overflow:auto;padding:30px;border-radius:28px;background:linear-gradient(170deg,#18284a,#0c1a29);border:2px solid rgba(255,222,128,.45);color:#fff3d6;box-shadow:0 30px 70px rgba(0,0,0,.5);animation:jpfPop .35s cubic-bezier(.3,1.5,.5,1)}
.jpf-album h2{font:800 30px Georgia,serif;margin:6px 0 12px;color:#fff5d5}
.jpf-album .jpf-kicker{font-size:12px;letter-spacing:.18em;text-transform:uppercase;font-weight:900;color:#ffd875}
.jpf-close{position:absolute;top:14px;right:14px;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.06);color:#fff;cursor:pointer}
.jpf-stars-row{display:flex;align-items:center;gap:4px;font-size:26px;color:#3c4a60;margin-bottom:16px;flex-wrap:wrap}.jpf-stars-row .on{color:#ffc94d;text-shadow:0 0 12px rgba(255,201,77,.6)}.jpf-stars-row small{font-size:14px;color:#c9d6e3;margin-left:10px}
.jpf-badges{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}
.jpf-badges li{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;padding:14px 10px;border-radius:18px;border:1px dashed rgba(255,255,255,.2);background:rgba(255,255,255,.03)}
.jpf-badges li.got{border:1px solid rgba(255,216,117,.6);background:linear-gradient(170deg,rgba(255,216,117,.16),rgba(255,255,255,.03))}
.jpf-medal{width:56px;height:56px;display:grid;place-items:center;border-radius:50%;font-size:28px;background:#1f2d45;color:#6f7f95;font-weight:900}
.jpf-badges li.got .jpf-medal{background:radial-gradient(circle,#ffe7a8,#ffc94d);box-shadow:0 0 18px rgba(255,201,77,.45)}
.jpf-badges b{font-size:15px}.jpf-badges small{font-size:12.5px;color:#b4c3d3}
.jpf-album .jpf-small{color:#9fb0c2;font-size:13px;margin-top:16px}
.jpf-album .jpf-link{background:none;border:0;color:#ffe7a8;font-weight:800;text-decoration:underline;cursor:pointer;padding:8px 0}
body.jpf-lock{overflow:hidden}
/* toast */
.jpf-toast{position:fixed;left:50%;top:18px;z-index:210;display:flex;gap:12px;align-items:center;padding:12px 18px;border-radius:18px;background:#fff8e6;color:#2a2012;font:700 15px/1.35 "Nunito","Trebuchet MS",system-ui,sans-serif;box-shadow:0 18px 40px rgba(0,0,0,.35);transform:translate(-50%,-140%);transition:transform .45s cubic-bezier(.3,1.5,.5,1);max-width:min(92vw,420px)}
.jpf-toast.on{transform:translate(-50%,0)}
.jpf-toast.badge{background:linear-gradient(135deg,#ffe7a8,#ffc94d)}
.jpf-toast.night{background:#1e2748;color:#fff3d6}
.jpf-toast-e{font-size:30px}
/* bedtime mode */
html.jp-bedtime{filter:none}
html.jp-bedtime body{background:#050a17!important}
html.jp-bedtime .jp-art>img,html.jp-bedtime .jp-shop-card:before{filter:brightness(.55) saturate(.7) hue-rotate(-12deg)}
html.jp-bedtime :is(.jp-featured){background:#141a33!important;color:#dfe3f5!important}
html.jp-bedtime :is(.jp-featured) h2{color:#e8e2ff!important}
html.jp-bedtime :is(.jp-feature){background:#1d2547!important;border-color:#3b4574!important;color:#dfe3f5!important}
html.jp-bedtime :is(.jp-feature) b{color:#e8e2ff!important}html.jp-bedtime :is(.jp-feature) span,html.jp-bedtime .jp-featured p{color:#b8bfdc!important}html.jp-bedtime .jp-feature em{color:#ffd88a!important}
html.jp-bedtime :is(.jpf-friends,.jpf-daily,.jpf-map,.jp-destinations,.jp-store){background:linear-gradient(180deg,#0b1130,#070b1f)!important}
html.jp-bedtime .jpf-bubble{background:#e9e4ff;color:#221c3d}html.jp-bedtime .jpf-bubble:before{border-bottom-color:#e9e4ff}
html.jp-bedtime :is(.jpf-star,.jp-cast span){animation-duration:6s!important}
.jpf-sky{position:fixed;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse at 50% -10%,rgba(120,110,220,.18),transparent 60%)}
.jpf-sky i{position:absolute;width:3px;height:3px;border-radius:50%;background:#fff6d0;box-shadow:0 0 6px #fff3c0;opacity:.6;animation:jpfTw 4s ease-in-out infinite}
@keyframes jpfTw{50%{opacity:.15}}
/* reveal */
.jpf-rv{opacity:0;transform:translateY(22px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.8,.2,1)}.jpf-rv.jpf-in{opacity:1;transform:none}
@media(max-width:1024px){.jpf-fr-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.jpf-daily-grid{grid-template-columns:1fr}.jpf-map-board{aspect-ratio:auto;display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:12px}.jpf-room{position:relative;left:auto!important;top:auto!important;width:auto!important;height:auto!important;min-height:112px}.jpf-dk-l{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.jpf-card{padding:22px}}
@media(max-width:520px){.jpf-fr-grid{grid-template-columns:repeat(2,1fr);gap:10px}.jpf-friend{min-height:206px}.jpf-friends,.jpf-map,.jpf-daily{padding:46px 0}}
@media(prefers-reduced-motion:reduce){.jpf *,.jpf-star,.jpf-toast,.jpf-album-in,.jpf-sky i,.jpf-rv{animation:none!important;transition:none!important}.jpf-rv{opacity:1;transform:none}}
/* 2026-09-27 repair: keep the dock clear of the iPhone home indicator / notch, and let page content scroll clear of it */
.jpf-dock{left:max(12px,env(safe-area-inset-left));bottom:max(12px,env(safe-area-inset-bottom))}
body:has(.jpf-dock){padding-bottom:calc(76px + env(safe-area-inset-bottom))}
