/* Version25 Stage 1: Garden Heart, Arcade, Market and Square. Works with both themes; the go theme gets the soft raised look from theme-neo.css. */
.places.tiles.hero{grid-template-columns:repeat(2,1fr);gap:14px;margin-bottom:14px}
.places.tiles.hero .place{padding:22px 10px}.places.tiles.hero .place b{font-size:16px}
.places.tiles.more{grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:22px}
.places.tiles.more .place{padding:12px 4px}.places.tiles.more .place b{font-size:13px}.places.tiles.more .place small{font-size:10px;line-height:1.25}
.places.tiles.more .place span{font-size:22px}.places.tiles.more .place .neon{width:28px;height:28px}
.arc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:6px 0 18px}
.arc-card{display:flex;flex-direction:column;gap:6px}.arc-card h2{margin:4px 0 0}.arc-card p{margin:0 0 6px}.arc-card .primary{margin-top:auto;align-self:flex-start}
.arc-ic .neon{width:42px;height:42px}.arc-ic{font-size:30px}
.arc-meter{height:6px;border-radius:4px;background:#00000012;overflow:hidden;margin-top:6px}.arc-meter>i{display:block;height:100%;background:linear-gradient(90deg,#8a4de0,#c7a3ff);border-radius:4px}.arc-meter.sm{display:inline-block;width:90px;margin:0 10px;vertical-align:middle}
.arc-note{max-width:640px}
.arc-run{width:min(720px,94vw);margin:20px auto}.arc-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}.arc-bar b{flex:1;text-align:center}.arc-pts{font-weight:700;color:var(--acc,#6b3fd6);font-size:13px;white-space:nowrap}
.arc-stage .rcard{width:100%!important;margin-left:0!important;text-align:center}.arc-stage .rcard.left{text-align:left}
.arc-score{font-size:26px;margin:2px 0 10px}.arc-score span{opacity:.5;margin:0 4px}
.arc-cv{width:100%;max-width:560px;height:auto;aspect-ratio:26/15;border-radius:14px;display:block;margin:0 auto 10px}
.arc-hint{margin:6px 0 10px;font-size:13px}.arc-pitch .card-actions{justify-content:center;flex-wrap:wrap}
.arc-dots{display:flex;justify-content:center;gap:7px;margin-top:12px}.arc-dots i{width:10px;height:10px;border-radius:50%;background:#00000018}.arc-dots i.win{background:#8a4de0}.arc-dots i.miss{background:#d9b45a;opacity:.7}
.arc-quiz{text-align:left!important}.arc-quiz h2{font-size:20px;margin:6px 0 10px}.arc-quiz .answers .ghost{font-size:14px}
.answer.ok{background:linear-gradient(135deg,#8a4de0,#5b2fcf)!important;color:#fff!important}.answer.bad{opacity:.55;text-decoration:line-through}
.arc-result{padding:30px 20px}.arc-result h2{margin:0 0 6px}.arc-win{color:var(--acc,#6b3fd6);font-weight:700}
.mem-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;max-width:360px;margin:14px auto}
.mem{aspect-ratio:1;border:0;border-radius:12px;font-size:28px;background:#ebe9f6;cursor:pointer;box-shadow:3px 3px 8px #c6c2dd,-3px -3px 8px #fff;color:inherit}
.mem.up{box-shadow:inset 2px 2px 6px #c6c2dd,inset -2px -2px 6px #fff;background:#f6f4fc;cursor:default}.mem.hit{background:#efe6ff}
.arc-letters{font-size:34px;letter-spacing:6px;font-weight:700;margin:14px 0;color:var(--acc,#6b3fd6)}
.seq-show{height:64px;display:flex;align-items:center;justify-content:center;gap:8px;margin:10px 0}.seq-sym{font-size:46px}.seq-mini{font-size:22px}.seq-dot{width:8px;height:8px;border-radius:50%;background:#00000020}
.seq-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:280px;margin:10px auto}
.mk-row,.lb-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid #00000010}.mk-row:last-of-type,.lb-row:last-of-type{border-bottom:0}.mk-row span:first-child{flex:1}
.lb-tabs{display:flex;gap:20px;margin-bottom:8px}.lb-row .lb-n{width:24px;font-weight:700;opacity:.6}.lb-row .lb-m{display:flex}.lb-row .lb-name{flex:1;display:flex;flex-direction:column;line-height:1.2}.lb-row .lb-name small{font-size:11px;opacity:.6}.lb-row.me{background:#8a4de012;border-radius:10px;padding-left:8px;padding-right:8px}
textarea#pt,#gw{width:100%;box-sizing:border-box}
@media(max-width:700px){
 .places.tiles.hero{gap:10px}.places.tiles.hero .place{padding:16px 6px}.places.tiles.hero .place b{font-size:14px}.places.tiles.hero .place .neon{width:38px;height:38px}
 .places.tiles.more{grid-template-columns:repeat(2,1fr)}
 .arc-grid{grid-template-columns:1fr}
 nav#mainNav button[data-s=market],nav#mainNav button[data-s=square]{display:none}
 nav#mainNav button[data-s=heart] .nl{display:none}nav#mainNav button[data-s=heart] .nh{display:inline-block;vertical-align:middle}
}
.arc-link{color:var(--acc,#6b3fd6);font-weight:600;text-decoration:none}.arc-link:hover{text-decoration:underline}

/* Version26 Stage 2: the Journey map, territory pages and the Crystal Cavern. Painterly dusk palette; quiet, not cartoony. */
.jmap{display:block;width:100%;height:auto;margin:6px 0 4px;box-shadow:0 18px 40px rgba(40,28,90,.28);border-radius:22px}
.jmap .jn{cursor:pointer;outline:none}.jmap .jn.lock{cursor:not-allowed}
.jmap .jn:focus-visible circle:not([fill^=url]){stroke-width:4}
.jmap .jn.cur>circle:first-child,.jpulse{animation:jpulse 3.2s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
@keyframes jpulse{0%,100%{opacity:.55;transform:scale(.94)}50%{opacity:1;transform:scale(1.06)}}
@media (prefers-reduced-motion:reduce){.jpulse,.jmap .jn.cur>circle:first-child{animation:none}}
.jr-with{display:flex;align-items:center;gap:10px;margin:0 0 8px;color:#6a6890}
.jr-prog{text-align:center;margin:6px 0 12px}
.jr-note{background:#f1eefb;border-radius:14px;padding:10px 14px;color:#5b5880;font-size:13px}
.jr-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.jr-card,.jr-date{text-align:left;display:flex;flex-direction:column;gap:3px;padding:14px 16px;border:0;border-radius:18px;background:var(--nbg,#ebe9f6);box-shadow:6px 6px 14px rgba(120,110,170,.2),-6px -6px 14px #fff;cursor:pointer;color:inherit;font:inherit}
.jr-card b,.jr-date b{font:600 17px Georgia,serif}.jr-card small,.jr-date small{color:#7a7898;font-size:12px;line-height:1.45}
.jr-card em,.jr-date em{font-style:normal;font-size:11px;letter-spacing:.06em;color:#7b61c9;margin-top:4px}
.jr-card.lock{opacity:.55}.jr-card.done em{color:#b08a2e}
.jr-terr{margin-top:12px}.jr-terr h2{font:500 32px Georgia,serif;margin:4px 0 6px}.jr-intro{font:italic 16px/1.65 Georgia,serif;color:#6a6890;max-width:560px;margin:0 0 10px}
.jr-dates{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:14px 0}
.jr-ico{font-size:24px;margin-bottom:4px}
.jr-plan{margin-top:10px;padding:16px;border-radius:18px;background:#f6f4fc}.jr-plan h3{font:600 20px Georgia,serif;margin:0 0 6px}.jr-plan form{display:grid;gap:10px;margin-top:10px}
.jr-more{margin-top:8px}.cv-prize{opacity:.8}
.jr-with .mask{margin:0}

/* Version27: the island world (assets/world.js). Labels are real buttons laid over the canvas. */
#wm{position:relative;margin:6px 0 10px}#wm.w3d{border-radius:22px;overflow:hidden;box-shadow:0 18px 40px rgba(40,28,90,.28);background:#1a1d52}
#wm canvas{display:block;width:100%;cursor:grab}#wm canvas:active{cursor:grabbing}
.w-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.w-lab{position:absolute;left:0;top:0;pointer-events:auto;border:0;cursor:pointer;font:italic 600 13px Georgia,serif;color:#fff7e0;background:rgba(24,16,60,.55);backdrop-filter:blur(4px);padding:4px 11px;border-radius:999px;white-space:nowrap;box-shadow:0 2px 10px rgba(0,0,0,.25);will-change:transform}
.w-lab.cur{background:rgba(120,84,10,.62);box-shadow:0 0 14px rgba(255,217,138,.55)}.w-lab.lock{opacity:.7;font-weight:500}.w-lab.done::after{content:" ✓";color:#ffd98a}
@media (max-width:620px){.w-lab{font-size:11px;padding:3px 8px}}

/* The stage: the island is the whole game. Screens are panels over it. */
#stage{display:none}
body.worldmode{overflow:hidden;background:#1a1d52}
body.worldmode #stage{display:block;position:fixed;inset:0;z-index:0}
body.worldmode #stage canvas{display:block;width:100%;height:100%;cursor:grab}
body.worldmode .topbar{position:fixed;left:0;right:0;top:0;z-index:30;background:linear-gradient(rgba(14,10,44,.8),rgba(14,10,44,0));border:0;box-shadow:none}
body.worldmode .topbar,body.worldmode .topbar *{color:#f4ecff}
body.worldmode .topbar nav button{background:transparent!important;box-shadow:none!important;text-shadow:0 1px 6px rgba(0,0,0,.5)}
body.worldmode .topbar nav button.active,body.worldmode .topbar nav button.active *{background:rgba(255,255,255,.18)!important;border-radius:12px;color:#fff!important}
body.worldmode .topbar .brand img{background:#fff;border-radius:10px;padding:3px;filter:drop-shadow(0 2px 6px rgba(0,0,0,.4))}
body.worldmode .tip{display:none}
body.worldmode main#view{position:fixed;z-index:20;overflow:auto;margin:0;padding:20px 26px 26px;border-radius:22px;box-shadow:0 16px 44px rgba(0,0,0,.45);transition:opacity .25s,transform .3s;max-width:none;-webkit-overflow-scrolling:touch}
body.worldmode main#view.wide{right:18px;top:96px;bottom:18px;width:min(500px,40vw);background:rgba(246,243,255,.94);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
body.worldmode main#view.side{right:18px;top:96px;bottom:18px;width:min(500px,40vw);background:rgba(22,16,56,.76);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:#f1eafc}
body.worldmode main#view.wide.closed{opacity:0;pointer-events:none;transform:translateX(110%)}
body.worldmode main#view.side.closed{opacity:0;pointer-events:none;transform:translateX(110%)}
body.worldmode #view>*:not(.panel-x){width:auto!important;max-width:none!important;margin-left:0!important;margin-right:0!important}
body.worldmode #view>.view-heading{margin-top:2px;margin-bottom:14px}body.worldmode #view .view-heading h1{font-size:34px;margin:6px 0}
body.worldmode #view.side>.view-heading{display:none}
.panel-x{display:none}
body.worldmode .panel-x{display:grid;place-items:center;position:sticky;top:0;float:right;z-index:3;width:34px;height:34px;margin:-6px -8px 0 8px;border:0;border-radius:50%;background:rgba(40,28,90,.16);color:inherit;font-size:20px;line-height:1;cursor:pointer}
body.worldmode #view.side .panel-x{background:rgba(255,255,255,.16);color:#fff}
#stage-hint{display:none}
body.worldmode.panel-closed #stage-hint{display:block;position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:19;padding:9px 18px;border-radius:999px;background:rgba(22,16,56,.72);color:#fff;font:13px/1.3 sans-serif;white-space:nowrap}
/* dark glass treatment for the Journey's side panel */
body.worldmode #view.side h1,body.worldmode #view.side h2,body.worldmode #view.side h3,body.worldmode #view.side b,body.worldmode #view.side p,body.worldmode #view.side small,body.worldmode #view.side .fine,body.worldmode #view.side .eyebrow,body.worldmode #view.side .sub{color:#f1eafc}
body.worldmode #view.side .jr-card,body.worldmode #view.side .jr-date,body.worldmode #view.side .match-row,body.worldmode #view.side .jr-plan{background:rgba(255,255,255,.09);box-shadow:none;color:#f1eafc}
body.worldmode #view.side .jr-card small,body.worldmode #view.side .jr-date small,body.worldmode #view.side .jr-intro{color:#cfc4ec}
body.worldmode #view.side .ghost{background:rgba(255,255,255,.14);color:#fff;box-shadow:none}
body.worldmode #view.side input,body.worldmode #view.side select{background:rgba(255,255,255,.12);color:#fff;border:0}
body.worldmode #view.side .jr-list,body.worldmode #view.side .jr-dates{grid-template-columns:1fr}
@media (max-width:900px){
 body.worldmode main#view{padding:16px 16px 22px}
 body.worldmode main#view.wide{left:0;right:0;top:auto;bottom:0;width:auto;max-height:62vh;border-radius:22px 22px 0 0}
 body.worldmode main#view.wide.closed{transform:translateY(110%)}
 body.worldmode main#view.side{left:10px;right:10px;top:auto;bottom:10px;width:auto;max-height:52vh}
 body.worldmode main#view.side.closed{transform:translateY(120%)}
}
body.worldmode #view h1{font-size:32px!important;line-height:1.1;letter-spacing:-1px}
.w-lab.pl{font:600 11px sans-serif;font-style:normal;padding:3px 9px;background:rgba(255,255,255,.2);color:#fff}
/* the Garden Heart dashboard stacks in one column inside a panel */
body.worldmode #view>.dash{grid-template-columns:1fr!important;gap:14px!important;margin:0!important}
body.worldmode #view>.dash .dash-left{display:contents}
body.worldmode #view>.dash .dash-top{order:1}body.worldmode #view>.dash .dash-mid{order:2}body.worldmode #view>.dash .dash-left>#inv{order:3;margin-top:0}body.worldmode #view>.dash .dash-right{order:4}
body.worldmode #view .places{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))!important}
body.worldmode #view .match-row{flex-wrap:wrap}body.worldmode #view .match-row .match-info{min-width:140px;flex:1}
body.worldmode #view .chat-tools,body.worldmode #view .rcard{max-width:100%}
/* Version30: storybook panels (cream paper, gold edge, serif titles) */
body.worldmode main#view.wide{background:rgba(253,248,236,.96);border:2px solid #d9b36a;box-shadow:0 0 0 5px rgba(217,179,106,.22),0 16px 44px rgba(0,0,0,.45);color:#3a2a22}
body.worldmode main#view.side{background:rgba(30,20,56,.84);border:2px solid #d9b36a;box-shadow:0 0 0 5px rgba(217,179,106,.18),0 16px 44px rgba(0,0,0,.5)}
body.worldmode #view h1,body.worldmode #view h2,body.worldmode #view .view-heading h1{font-family:Georgia,'Times New Roman',serif;font-weight:700;letter-spacing:-.5px}
body.worldmode #view.wide h1,body.worldmode #view.wide h2{color:#4a2f1d}
body.worldmode .panel-x{background:#d9b36a;color:#4a2f1d}
body.worldmode .w-lab{font-family:Georgia,'Times New Roman',serif}
body.worldmode #view.side .empty-state{background:rgba(255,255,255,.09);box-shadow:none;color:#f1eafc}
body.worldmode #view.side .empty-state h2,body.worldmode #view.side .empty-state p{color:#f1eafc}
body.worldmode.panel-closed #stage-hint{white-space:normal;max-width:88vw;text-align:center}
/* Version31: the painted island */
.pwr{overflow:hidden;background:#0b0a2a}.pw{position:absolute;inset:0;overflow:hidden;touch-action:none;cursor:grab}.pw:active{cursor:grabbing}
.pw-world{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}
.pw-img{position:absolute;inset:0;width:100%;height:100%;display:block;user-select:none;-webkit-user-drag:none}
body.worldmode #stage .pw-fx{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;cursor:auto}
.pw-mist{position:absolute;border-radius:50%;pointer-events:none;background:radial-gradient(closest-side,rgba(226,218,250,.82),rgba(210,200,245,.5) 60%,rgba(200,190,240,0));animation:pwmist 9s ease-in-out infinite alternate}
@keyframes pwmist{from{transform:translate(-8px,2px) scale(1)}to{transform:translate(8px,-4px) scale(1.04)}}
.pw-pl,.pw-chip{position:absolute;transform:translate(-50%,-50%);box-sizing:border-box;cursor:pointer;color:#fbefd0;font-family:Georgia,'Times New Roman',serif;text-align:center;border:3px double #d9b36a;border-radius:14px;background:linear-gradient(#2a2058,#1a1440);box-shadow:0 4px 14px rgba(0,0,0,.5);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px 10px}
.pw-pl b{font-size:21px;line-height:1.1}.pw-pl small{font-size:15px;opacity:.85;margin-top:3px;font-style:italic}
.pw-pl.lock{filter:saturate(.6) brightness(.85)}.pw-pl.cur,.pw-pl.here{box-shadow:0 0 22px rgba(255,217,138,.8),0 4px 14px rgba(0,0,0,.5)}.pw-pl.done small{color:#ffd98a}
.pw-chip{padding:5px 14px;border-radius:999px;border-width:2px;background:rgba(26,20,64,.82)}.pw-chip b{font-size:16px;white-space:nowrap}.pw-chip.hub{width:300px;min-height:94px;border-radius:16px;border-width:3px}.pw-chip.hub b{font-size:23px}.pw-chip small{font-size:14px;font-style:italic;opacity:.85}
.pw-pl:hover,.pw-chip:hover{filter:brightness(1.25)}
.pw-pin{position:absolute;width:64px;height:82px;margin:-82px 0 0 -32px;border:0;padding:0;background:none;cursor:pointer}
.pw-pin::before{content:"";position:absolute;left:5px;top:2px;width:50px;height:50px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:linear-gradient(135deg,#6a4cc4,#3a2a88);border:4px solid #ffd98a;box-shadow:0 0 18px rgba(255,217,138,.8)}
.pw-pin i{position:absolute;left:5px;top:2px;width:58px;height:50px;font:700 27px/50px Georgia,serif;font-style:normal;color:#fff;text-align:center}
.pw-pin.lock::before{background:linear-gradient(135deg,#6e6a8a,#46435e);border-color:#c8c2dc;box-shadow:none;opacity:.92}.pw-pin.done::before{background:linear-gradient(135deg,#2faa7a,#1d7a5a)}
.pw-pin.here::after{content:"";position:absolute;left:-8px;bottom:-14px;width:80px;height:26px;border-radius:50%;border:3px solid #ffd98a;animation:pwring 2.2s ease-out infinite}
@keyframes pwring{from{transform:scale(.5);opacity:.9}to{transform:scale(1.5);opacity:0}}
.pw-av{position:absolute;left:0;top:0;width:26px;height:44px;margin:-44px 0 0 -13px;pointer-events:none}
.pw-av s{position:absolute;left:3px;top:17px;width:20px;height:27px;border-radius:10px 10px 6px 6px}.pw-av u{position:absolute;left:5px;top:0;width:16px;height:16px;border-radius:50%;background:#e2bd9a;box-shadow:0 0 0 2px #261a2a inset}.pw-av em{position:absolute;left:4px;top:5px;width:18px;height:8px;border-radius:2px 2px 9px 9px}
.pw-chip.hub{background:linear-gradient(#2a2058,#1a1440)}

/* Version32: journey card, toast, walking couple */
.pw-hud{position:absolute;right:18px;bottom:18px;width:19rem;max-width:calc(100% - 28px);z-index:4;display:grid;gap:10px;padding:14px;border:1px solid rgba(217,179,106,.6);border-radius:18px;background:rgba(38,18,66,.8);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:#f7efff;font-family:system-ui,sans-serif;cursor:default}
.pw-hud[hidden]{display:none}.pw-hud button{background:transparent;box-shadow:none}.pw-hud .pw-go{background:linear-gradient(#ffe2a6,#ffd27a);box-shadow:0 0 18px rgba(255,200,110,.45)}
.pw-hud header{display:flex;justify-content:space-between;align-items:center;gap:10px}.pw-hud h2{margin:0;color:#ffd27a!important;font:700 .95rem Georgia,serif;letter-spacing:.06em;text-transform:uppercase;color:#ffd27a}.pw-hud header p{margin:2px 0 0;font-size:.8rem;color:#cdbde8}
.pw-hud .hearts{display:flex;gap:4px}.pw-hud .hearts span{width:12px;height:11px;background:#9584b5;opacity:.6;clip-path:path("M6 11C1 7 0 5 0 3.2 0 1.4 1.4 0 3.1 0 4.3 0 5.4.7 6 1.7 6.6.7 7.7 0 8.9 0 10.6 0 12 1.4 12 3.2 12 5 11 7 6 11Z")}.pw-hud .hearts span.on{background:#ff7fbf;opacity:1}
.pw-list{list-style:none;margin:0;padding:0;display:none;gap:3px;max-height:40vh;overflow:auto}.pw-hud.open .pw-list{display:grid}.pw-list button{width:100%;display:grid;grid-template-columns:26px 1fr auto;align-items:center;gap:10px;padding:5px 8px;border-radius:10px;background:transparent;border:1px solid transparent;text-align:left;color:inherit;font:inherit;cursor:pointer}.pw-list button:hover{background:rgba(62,32,98,.9)}
.pw-list .n{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font:700 .78rem Georgia,serif;background:#4a3a68;color:#cdbde8}.pw-list .n.go{background:#ffd27a;color:#2a1442}.pw-list .n.ok{background:#7dffb0;color:#10301f}.pw-list .n.heart{background:#ff7fbf;color:#fff}
.pw-list .nm{display:grid;min-width:0}.pw-list .nm b{font-size:.85rem;font-weight:600}.pw-list .nm i{font-size:.72rem;color:#cdbde8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pw-hud .pw-ch{font-style:normal;font-size:.64rem;text-transform:uppercase;letter-spacing:.08em;padding:3px 7px;border-radius:999px;border:1px solid #9584b5;color:#cdbde8;min-width:1px}.pw-hud .pw-ch:empty{border:0}.pw-hud .pw-ch.next{border-color:#ffd27a;color:#ffd27a}.pw-hud .pw-ch.done{border-color:#7dffb0;color:#7dffb0}.pw-hud .pw-ch.here{border-color:#ff7fbf;color:#ff7fbf}
.pw-go{width:100%;padding:10px 14px;border-radius:12px;border:0;background:linear-gradient(#ffe2a6,#ffd27a);color:#2a1442;font:600 .9rem system-ui,sans-serif;box-shadow:0 0 18px rgba(255,200,110,.45);cursor:pointer}
.pw-row{display:none;gap:6px}.pw-hud.open .pw-row{display:flex}.pw-hud .pw-ghost{flex:1;padding:7px 8px;border-radius:10px;font:inherit;font-size:.78rem;background:transparent;border:1px solid rgba(205,189,232,.3);color:inherit;cursor:pointer}.pw-hud .pw-ghost[aria-pressed=true]{border-color:rgba(217,179,106,.7);color:#ffd27a}.pw-all{flex:0 0 auto;padding:5px 9px!important;font-size:.78rem}
.pw-toast{position:absolute;left:50%;top:78px;transform:translate(-50%,-6px);z-index:5;max-width:min(30rem,90%);padding:8px 16px;border-radius:999px;border:1px solid rgba(217,179,106,.6);background:rgba(38,18,66,.86);color:#fbefd0;font:.86rem Georgia,serif;text-align:center;opacity:0;pointer-events:none;transition:opacity .3s,transform .3s}.pw-toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:899px){.pw-hud{left:10px;right:10px;bottom:10px;width:auto;max-width:none;padding:10px 12px;gap:8px}.pw-toast{top:108px}#stage-hint{display:none!important}}

/* Version33: the prototype island (iframe) behind the panels */
#stage .proto-frame{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;background:#120a2e}
body.protomode #stage-hint{display:none!important}

/* Version34: the journey card lives in the page and only shows while no panel is open */
.pd-dock{position:fixed;right:18px;bottom:18px;z-index:30;display:none}
body.worldmode.protomode.panel-closed .pd-dock{display:grid}
@media(max-width:899px){.pd-dock{left:10px;right:10px;bottom:10px}}
.pd-dock{width:21rem}.pd-dock h2{white-space:nowrap}.pd-dock .pw-all{white-space:nowrap}
@media(max-width:899px){.pd-dock{width:auto}}

/* ===== Version36: Enchanted Festival Falls carnival scene ===== */
#carnival{display:none}
body.carnival #carnival{display:block;position:fixed;inset:0;z-index:10;overflow:hidden;font-family:Georgia,serif;color:#fff}
body.carnival .pd-dock,body.carnival #stage-hint{display:none!important}
.cvx{--sky1:#150c36;--sky2:#4a2c82;--hill1:#2a2058;--hill2:#1d4a3a;--fall1:#bfe9ff;--fall2:#5db8e8;--wheel:#e9d8ff;--rock:#3a2c6e;background:linear-gradient(var(--sky1),var(--sky2) 62%,#7a4f9a)}
.cvx.day{--rock:#8a8f7a;--sky1:#5aa9e6;--sky2:#bfe4fb;--hill1:#6aa58a;--hill2:#3f9a5a;--wheel:#b44a6a;background:linear-gradient(var(--sky1),var(--sky2) 70%,#eaf7ff)}
.cvx.dusk{--rock:#5a3f5a;--sky1:#5a3a7a;--sky2:#ff9a62;--hill1:#6a4466;--hill2:#2d5a46;--wheel:#ffe2c0;background:linear-gradient(var(--sky1),var(--sky2) 70%,#ffd6a0)}
.cv-sky{position:absolute;inset:0;pointer-events:none}
.cv-stars i{position:absolute;width:2px;height:2px;border-radius:50%;background:#fff;animation:cvtw 2.8s infinite ease-in-out}
@keyframes cvtw{50%{opacity:.25}}
.cv-moon{position:absolute;right:12%;top:14%;width:64px;height:64px;border-radius:50%;background:#f6f0ff;box-shadow:0 0 50px 14px rgba(200,180,255,.5)}
.cv-sun{position:absolute;right:14%;top:12%;width:78px;height:78px;border-radius:50%;background:#fff1c0;box-shadow:0 0 70px 24px rgba(255,220,130,.7)}
.cv-sun.low{top:36%;background:#ffb070;box-shadow:0 0 80px 30px rgba(255,150,90,.6)}
.cv-back{position:absolute;left:0;right:0;bottom:0;width:100%;height:68%}
.cv-spin{transform-origin:0 0;animation:cvspin 60s linear infinite}
@keyframes cvspin{to{transform:rotate(360deg)}}
.cv-mist{animation:cvmist 5s ease-in-out infinite alternate}@keyframes cvmist{to{opacity:.8;transform:scale(1.06)}}
.bulb{fill:#ffd36a;animation:cvbulb 1.8s infinite}.b1{animation-delay:.3s;fill:#ff7aa8}.b2{animation-delay:.6s;fill:#7ae8ff}.b3{animation-delay:.9s;fill:#b79bff}
@keyframes cvbulb{50%{opacity:.4}}
.cvx.day .bulb{opacity:.55}
.cv-top{position:absolute;left:0;right:0;top:74px;display:flex;gap:16px;align-items:flex-start;padding:0 22px}
.cv-leave{flex:none;border:0;border-radius:999px;padding:9px 16px;background:rgba(22,16,56,.72);color:#fff;font:600 13px sans-serif;cursor:pointer}
.cv-title{text-shadow:0 2px 10px rgba(0,0,0,.45);max-width:560px}
.cv-title small{font:600 11px sans-serif;letter-spacing:.16em;color:#ffd98a}
.cv-title h1{margin:2px 0 4px;font-size:34px;line-height:1.05;color:#fff}
.cv-title p{margin:0;font:14px/1.4 sans-serif;color:#f4ecff}
.cvx.day .cv-title,.cvx.day .cv-title p,.cvx.day .cv-title h1{color:#fff}
.cv-msg{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(30% + 214px);width:min(640px,92vw);text-align:center;padding:10px 16px;border-radius:16px;background:rgba(22,16,56,.74);font:14px/1.4 sans-serif;color:#fff;backdrop-filter:blur(6px)}
.cv-msg b{color:#ffd98a}
.cv-row{position:absolute;left:0;right:0;bottom:7%;display:flex;justify-content:center;gap:clamp(8px,3vw,48px);padding:0 10px}
.cv-booth{position:relative;display:flex;flex-direction:column;align-items:center;width:clamp(96px,26vw,250px);border:0;background:none;color:#fff;cursor:pointer;padding:0;transition:transform .25s,filter .4s}
.cv-art{width:100%;height:auto;display:block;filter:drop-shadow(0 10px 14px rgba(0,0,0,.4))}
.cv-sign{order:-1;margin-bottom:6px;padding:5px 12px;border-radius:10px;background:#3a2410;border:2px solid #ffd36a;font:700 clamp(11px,1.4vw,15px)/1.2 Georgia,serif;text-align:center;box-shadow:0 4px 10px rgba(0,0,0,.4)}
.cv-rib{margin-top:8px;padding:4px 12px;border-radius:999px;background:rgba(22,16,56,.78);font:600 clamp(10px,1.1vw,13px) sans-serif;text-align:center}
.cv-cost{margin-top:4px;font:600 12px sans-serif;color:#ffe8a8;text-shadow:0 1px 4px #000}
.cv-booth.pick:hover,.cv-booth.on:hover{transform:translateY(-6px)}
.cv-booth.on .cv-art{filter:drop-shadow(0 0 22px rgba(255,214,110,.95)) drop-shadow(0 10px 14px rgba(0,0,0,.4));animation:cvon 2s ease-in-out infinite}
.cv-booth.on .cv-rib{background:#ffd36a;color:#2a1a05}
@keyframes cvon{50%{transform:scale(1.025)}}
.cv-booth.off{filter:grayscale(.9) brightness(.55);cursor:not-allowed}
.cv-booth.off .cv-rib{background:rgba(0,0,0,.6)}
.cv-couple{position:absolute;bottom:2.4%;left:var(--x);transform:translateX(-50%);display:flex;gap:2px;transition:left 2.4s cubic-bezier(.45,0,.2,1);animation:cvwalk 2.4s cubic-bezier(.45,0,.2,1) both;pointer-events:none;z-index:2}
.cv-av{filter:drop-shadow(0 4px 6px rgba(0,0,0,.5));animation:cvbob .5s ease-in-out 5 alternate}.cv-av.b{animation-delay:.12s}
@keyframes cvwalk{from{left:-6%}}@keyframes cvbob{to{transform:translateY(-5px)}}
.cv-card{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:5;width:min(430px,92vw);max-height:78vh;overflow:auto;padding:22px 24px;border-radius:20px;background:rgba(250,246,255,.97);color:#2a1f4d;box-shadow:0 20px 60px rgba(0,0,0,.5);font:14px/1.5 sans-serif}
.cv-card[hidden]{display:none}
.cv-card h2{margin:0 0 2px;font:700 22px Georgia,serif;color:#2a1f4d}.cv-kind{margin:0 0 8px;color:#7a6aa8;font-size:12px;letter-spacing:.06em;text-transform:uppercase}
.cv-card p{margin:6px 0;color:#3a2f5e}.cv-card .fine{font-size:12px;color:#6a5e90}
.cv-x{position:absolute;right:12px;top:10px;width:32px;height:32px;border:0;border-radius:50%;background:rgba(40,28,90,.12);font-size:20px;cursor:pointer}
.cv-act,.cv-f{display:flex;flex-direction:column;gap:8px;margin-top:10px}.cv-f label{display:grid;gap:4px;font-size:12px;color:#6a5e90}
.cv-f input{padding:8px;border-radius:10px;border:1px solid #cbbfe8;font:14px sans-serif}
@media(max-width:700px){.cv-top{top:92px;flex-direction:column;gap:8px;padding:0 14px}.cv-title h1{font-size:24px}.cv-title p{font-size:12px;display:none}.cv-msg{bottom:calc(30% + 150px);font-size:12px}.cv-row{bottom:5%}.cv-sign{font-size:10px;padding:3px 6px}.cv-rib{font-size:9px;padding:3px 7px}.cv-cost{font-size:10px}}
#carnival .cv-title h1,#carnival .cv-title p,#carnival .cv-title small{color:#fff!important;opacity:1!important}#carnival .cv-title small{color:#ffd98a!important}#carnival .cv-card h2,#carnival .cv-card p,#carnival .cv-card b{color:#2a1f4d!important}#carnival .cv-card .fine,#carnival .cv-kind{color:#6a5e90!important}

/* Version37: sign-in is a 70% see-through frosted screen over the island; solo card */
body.worldmode main#view.joinv{background:rgba(246,243,255,.3);backdrop-filter:blur(7px) saturate(1.1);-webkit-backdrop-filter:blur(7px) saturate(1.1);border:1px solid rgba(255,255,255,.35)}
.pw-solo{margin:8px 0 12px;font-size:.85rem;line-height:1.45;color:#e9e0ff}
@media(min-width:900px){body.worldmode main#view.joinv{left:50%;right:auto;top:96px;width:min(940px,94vw);transform:translateX(-50%)}body.worldmode main#view.joinv.closed{transform:translate(-50%,120%)}}
.pw-solo{color:#f1eafc!important}

/* Version37b: one look for everything. The journey card's plum glass and gold lettering now frame every screen; neumorphic cards inherit a dark palette from variables. */
body.worldmode main#view,body.worldmode main#view.wide,body.worldmode main#view.side{
 --nbg:#3a2a68;--hi:rgba(255,255,255,.07);--lo:rgba(8,3,28,.5);--ink:#f7efff;--soft:#cdbde8;--acc:#b79bff;
 background:rgba(38,18,66,.84);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(217,179,106,.6);border-radius:18px;color:#f7efff;box-shadow:0 14px 40px rgba(0,0,0,.5)}
body.worldmode main#view.joinv{background:rgba(38,18,66,.3);backdrop-filter:blur(7px) saturate(1.1);-webkit-backdrop-filter:blur(7px) saturate(1.1)}
body.worldmode #view h1,body.worldmode #view h2,body.worldmode #view h3,body.worldmode #view .sub,body.worldmode #view .eyebrow{color:#ffd27a!important}body.worldmode #view h1 em,body.worldmode #view h2 em{color:#ff9fd0!important}
body.worldmode #view h1{font-family:Georgia,serif;text-transform:none}
body.worldmode #view p,body.worldmode #view b,body.worldmode #view label,body.worldmode #view span,body.worldmode #view li{color:#f1eafc}
body.worldmode #view .fine,body.worldmode #view small{color:#cdbde8!important}
body.worldmode #view .primary,body.worldmode #view .pw-go{background:linear-gradient(#ffe2a6,#ffd27a)!important;color:#2a1442!important;box-shadow:0 0 18px rgba(255,200,110,.4)}
body.worldmode #view .ghost{background:rgba(255,255,255,.1);color:#f7efff;box-shadow:none;border:1px solid rgba(205,189,232,.3)}
body.worldmode #view input,body.worldmode #view select,body.worldmode #view textarea{background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(205,189,232,.3);box-shadow:none}
body.worldmode #view ::placeholder{color:#b9a9d8}
body.worldmode .panel-x{background:rgba(255,255,255,.16);color:#fff}
.pw-det{width:100%;padding:8px;border-radius:10px;border:1px solid rgba(205,189,232,.3);background:transparent;color:#cdbde8;font:inherit;font-size:.8rem;cursor:pointer}
.pd-dock .pw-det{display:block}

/* Version39: pop-ups sit ON the card (same place, in front), signed-out screen covers the whole app, readable selects and links */
body.worldmode #modal.modal-backdrop:not([hidden]){position:fixed;z-index:26;inset:auto;display:block;padding:0;background:transparent;overflow:auto;border-radius:18px;
 --nbg:#3a2a68;--ink:#f7efff;--soft:#cdbde8;--acc:#b79bff;right:18px;top:96px;bottom:18px;width:min(500px,40vw);
 background:#25123f!important;border:1px solid rgba(217,179,106,.6);box-shadow:0 16px 44px rgba(0,0,0,.55);color:#f7efff;padding:18px}
body.worldmode #modal .chat-modal,body.worldmode #modal .pcard,body.worldmode #modal>div{background:transparent!important;box-shadow:none!important;border:0!important;width:100%!important;max-width:none!important;height:auto;min-height:0;color:#f7efff}
body.worldmode #modal .chat-modal{height:100%}
body.worldmode #modal h1,body.worldmode #modal h2,body.worldmode #modal h3,body.worldmode #modal .eyebrow{color:#ffd27a!important}
body.worldmode #modal p,body.worldmode #modal b,body.worldmode #modal span,body.worldmode #modal label,body.worldmode #modal li{color:#f1eafc}
body.worldmode #modal small,body.worldmode #modal .fine{color:#cdbde8!important}
body.worldmode #modal .primary{background:linear-gradient(#ffe2a6,#ffd27a)!important;color:#2a1442!important}
body.worldmode #modal .ghost,body.worldmode #modal .icon-btn{background:rgba(255,255,255,.1);color:#f7efff;border:1px solid rgba(205,189,232,.3);box-shadow:none}
body.worldmode #modal input,body.worldmode #modal select,body.worldmode #modal textarea{background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(205,189,232,.3)}
@media(max-width:899px){body.worldmode #modal.modal-backdrop:not([hidden]){left:10px;right:10px;top:auto;bottom:10px;width:auto;max-height:78vh}}
/* wide panels never overflow the screen */
body.worldmode main#view{max-width:calc(100vw - 20px);box-sizing:border-box}
body.worldmode #view .chat-list,body.worldmode #view .match-row,body.worldmode #view .hv-sub{max-width:100%;box-sizing:border-box}
body.worldmode #view .match-row{flex-wrap:wrap}
/* selects: dark list, readable options */
body.worldmode #view,body.worldmode #modal{color-scheme:dark}
body.worldmode #view select option,body.worldmode #modal select option,select option{background:#2a1450;color:#f7efff}
/* links on dark glass */
body.worldmode #view a,body.worldmode #modal a,body.joinmode a{color:#ffd27a!important;text-decoration:underline}
body.worldmode #view a.primary,body.worldmode #view a.ghost{text-decoration:none}
/* signed-out: whole app is covered, nothing behind can be reached */
body.worldmode main#view.joinv{box-shadow:0 0 0 200vmax rgba(18,8,40,.72)!important;z-index:40}
body.worldmode:has(main#view.joinv) #stage{pointer-events:none}
body.worldmode:has(main#view.joinv) .topbar nav,body.worldmode:has(main#view.joinv) .topbar .menu{visibility:hidden;pointer-events:none}
/* Garden Heart / Match tab bars */
.hv-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 14px}.hv-sub{min-width:0}
.hv-sub>.view-heading{display:none}
.hv-tabs{padding-right:44px}.hv-tabs .tab,.hv-tabs button{padding:8px 16px!important;border-radius:999px!important;line-height:1.2;font-size:13px;white-space:nowrap}
body.worldmode .hv-tabs .tab.on,body.worldmode .hv-tabs .tab.active,body.worldmode .hv-tabs .on{background:linear-gradient(#ffe2a6,#ffd27a)!important;color:#2a1442!important}

/* ===== Version40 ===== */
/* lists fit the panel */
body.worldmode #view .matches-list,body.worldmode #view .arc-grid,body.worldmode #view .stack{width:100%!important;max-width:100%;min-width:0}
body.worldmode #view,body.worldmode #modal{overflow-x:hidden}
body.worldmode #view .match-row{min-width:0;width:100%;box-sizing:border-box;background:rgba(255,255,255,.09);box-shadow:none;border:1px solid rgba(205,189,232,.22);color:#f1eafc;border-radius:14px}
body.worldmode #view .match-info p,body.worldmode #modal .match-info p{color:#cdbde8}
.hv-h{margin:18px 0 8px;font:700 20px Georgia,serif;color:#ffd27a}.hv-h:first-child{margin-top:0}
.hv-sec{margin:14px 0;border:1px solid rgba(205,189,232,.25);border-radius:14px;padding:6px 12px}.hv-sec summary{cursor:pointer;padding:8px 0;font:700 16px Georgia,serif;color:#ffd27a}
/* chat and profile text on the plum card: every colour set again */
body.worldmode #modal .safe,body.worldmode #modal .chat-modal .safe{background:rgba(255,210,122,.14)!important;color:#ffe6b0!important;border:0;border-radius:10px;padding:9px 12px;margin:6px 0;font-size:12px}
body.worldmode #modal .chat-tools{display:flex;gap:8px;flex-wrap:wrap;padding:6px 0;border:0}
body.worldmode #modal .messages{background:rgba(255,255,255,.06)!important;border-radius:14px;box-shadow:none!important;padding:10px}
body.worldmode #modal .message{background:rgba(255,255,255,.13)!important;color:#fff!important;border:1px solid rgba(205,189,232,.25)!important;box-shadow:none!important}
body.worldmode #modal .message.mine{background:linear-gradient(#ffe2a6,#ffd27a)!important;color:#2a1442!important;border-color:#ffd27a!important}
body.worldmode #modal .message *,body.worldmode #modal .message small,body.worldmode #modal .message time{color:inherit!important;opacity:.85}
body.worldmode #modal .message.mine *{color:#2a1442!important}
body.worldmode #modal .chat-modal form,body.worldmode #modal .chat-modal footer,body.worldmode #modal .composer{background:transparent!important;border:0!important;box-shadow:none!important}
body.worldmode #modal input::placeholder,body.worldmode #modal textarea::placeholder{color:#cdbde8;opacity:.8}
body.worldmode #modal .tag,body.worldmode #modal .chip,body.worldmode #modal .interest,body.worldmode #modal .pcard [class*=tag],body.worldmode #modal .pcard li{background:rgba(255,210,122,.18)!important;color:#ffe6b0!important;border:1px solid rgba(255,210,122,.35)!important;box-shadow:none!important}
body.worldmode #modal .fine,body.worldmode #modal small,body.worldmode #modal .profile-info *{color:#e4d8f7}
body.worldmode #modal .profile-info h2,body.worldmode #modal .name-line h2{color:#ffd27a!important}
/* sign-in: the whole screen, 85% see-through, no scrolling box */
body.worldmode main#view.joinv{position:fixed!important;inset:0!important;width:100vw!important;max-width:none!important;height:100vh;border-radius:0!important;border:0!important;box-shadow:none!important;background:rgba(24,10,48,.15)!important;transform:none!important;left:0!important;top:0!important;backdrop-filter:blur(3px);display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:auto;z-index:60;padding:24px}
body.worldmode main#view.joinv>*{max-width:520px;width:100%}
/* carnival: the info line sits under the title, never over it */
.cv-title .cv-msg{position:static;transform:none;width:auto;max-width:560px;margin-top:10px;text-align:left;backdrop-filter:none}
/* Garden Heart scene */
body.carnival #carnival.hs{overflow:auto}
.hs .hs-wrap{position:relative;z-index:3;min-height:100%;padding:74px 22px 32px;display:flex;flex-direction:column;gap:18px}
.hs .cv-top{position:static;padding:0;flex-wrap:wrap}
.hs-sec h2{margin:0 0 8px;font:700 18px Georgia,serif;color:#ffe6b0;text-shadow:0 2px 8px rgba(0,0,0,.5)}
.hs-row{display:flex;flex-wrap:wrap;justify-content:center;gap:clamp(8px,2.5vw,36px)}
.hs-row .cv-booth{width:clamp(120px,21vw,220px)}
.hs-more{display:flex;flex-wrap:wrap;gap:10px}
.hs-more button{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:14px;border:1px solid rgba(255,210,122,.6);background:rgba(38,18,66,.82);color:#fff;cursor:pointer;font:600 14px sans-serif;flex-wrap:wrap}
.hs-more button span{font-size:20px}.hs-more button small{flex-basis:100%;margin-left:28px;color:#ffe6b0;font-weight:400;font-size:11px}
.hs-more button:hover{background:rgba(70,40,120,.9)}
.hs-cta{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:14px 18px;border-radius:16px;background:rgba(22,16,56,.78);color:#fff;border:1px solid rgba(205,189,232,.3)}
.hs-cta p{margin:2px 0 0;font:13px/1.4 sans-serif;color:#e4d8f7}.hs-cta.ready{border-color:#ffd27a;box-shadow:0 0 24px rgba(255,210,122,.35)}
.hs-cta .primary{background:linear-gradient(#ffe2a6,#ffd27a);color:#2a1442;border:0;border-radius:999px;padding:11px 20px;font-weight:700;cursor:pointer}
/* the card: plum glass, same palette as the island panel, games play inside it */
.cvx .hs-card{width:min(620px,94vw);max-height:86vh;background:#25123f;color:#f7efff;border:1px solid rgba(217,179,106,.6);font-family:inherit;--nbg:#3a2a68;--hi:rgba(255,255,255,.07);--lo:rgba(8,3,28,.5);--ink:#f7efff;--soft:#cdbde8;--acc:#b79bff;color-scheme:dark;position:fixed;z-index:20}
#carnival .hs-card h2,#carnival .hs-card h1,#carnival .hs-card h3{color:#ffd27a!important}
#carnival .hs-card p,#carnival .hs-card b,#carnival .hs-card span,#carnival .hs-card label,#carnival .hs-card li,#carnival .hs-card small{color:#f1eafc!important}
#carnival .hs-card .fine,#carnival .hs-card .eyebrow{color:#cdbde8!important}
#carnival .hs-card .cv-x{background:rgba(255,255,255,.14);color:#fff}
#carnival .hs-card input,#carnival .hs-card select{background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(205,189,232,.3);width:100%;box-sizing:border-box;padding:9px;border-radius:10px}
#carnival .hs-card .primary{background:linear-gradient(#ffe2a6,#ffd27a)!important;color:#2a1442!important}#carnival .hs-card .primary *{color:#2a1442!important}
#carnival .hs-card .ghost{background:rgba(255,255,255,.1);color:#f7efff;border:1px solid rgba(205,189,232,.3)}
#carnival .hs-card a{color:#ffd27a!important}
#carnival .hs-card .rcard,#carnival .hs-card .arc-card,#carnival .hs-card .side-card{background:rgba(255,255,255,.08);box-shadow:none;border:1px solid rgba(205,189,232,.2)}
#carnival .hs-card select option{background:#2a1450;color:#f7efff}
@media(max-width:700px){.hs .hs-wrap{padding-top:92px}.hs-row .cv-booth{width:42vw}}

#carnival .hs-card em,#view em{color:#ffb8dc}
.hs-cta p{color:#e4d8f7!important}.hs-cta b{color:#fff}
.hs-game>.arc-run{width:100%;margin:0}
