/* Bees Are Good — parchment globe world map (scoped to #placesP) */
@import url('https://fonts.googleapis.com/css2?family=Fredoka:wght@500;600;700&family=Nunito:wght@400;600;700&display=swap');

#placesP.panel {
  align-items: stretch; justify-content: stretch; padding: 0; bottom: 0;
  background: #1A1209;
  font-family: 'Nunito', -apple-system, system-ui, sans-serif;
  color: var(--comb, #FFF3D6);
  overflow: hidden;
  touch-action: none;
  overscroll-behavior: none;
}
#placesP .wmGlobeRoot {
  position: absolute; inset: 0; width: 100%; height: 100%;
  overflow: hidden;
}
#placesP #wmTopbar { pointer-events: none; }
#placesP #wmTopbar .wmTopInner {
  pointer-events: auto; display:flex; gap:10px; align-items:center; justify-content:center;
  padding: 0 12px; flex-wrap: wrap;
}
#placesP #wmTopbar #wmBack,
#placesP #wmTopbar #wmNightBtn,
#placesP #wmTopbar .wmPill {
  pointer-events: auto;
  position: relative;
  z-index: 2;
  touch-action: manipulation;
}
#placesP .wmPill {
  font-family:'Fredoka',sans-serif; font-weight:600; font-size:.92rem; color:#3A2A16;
  background:linear-gradient(180deg,#F4EAD0,#E7D8B2); border:1.5px solid rgba(88,62,30,.4);
  padding:.5rem .95rem; border-radius:8px; white-space:nowrap; cursor:pointer;
  box-shadow:0 4px 12px rgba(60,40,15,.3), inset 0 1px 0 rgba(255,250,235,.7);
  flex-shrink:0;
}
#placesP .wmPlacePill {
  font-family:'Fredoka',sans-serif; font-weight:600; font-size:1.02rem; letter-spacing:.02em;
  color:#3A2A16; background:linear-gradient(180deg,#F4EAD0,#E7D8B2); border:1.5px solid rgba(88,62,30,.45);
  padding:.5rem .85rem; border-radius:8px; transform:rotate(-.4deg);
  box-shadow:0 4px 14px rgba(0,0,0,.45), inset 0 1px 0 rgba(255,250,235,.7);
  display:flex; align-items:center; gap:.4rem; min-width:0; flex:1 1 auto;
  max-width:min(62vw, 280px); justify-content:center; pointer-events:none;
}
#placesP .wmPlaceEmoji { flex-shrink:0; font-size:1.05rem; line-height:1; }
#placesP .wmPlaceName {
  overflow:visible; white-space:nowrap; text-overflow:clip;
  font-size:clamp(.72rem, 2.8vw, 1.02rem);
}
#placesP .wmVisitFab {
  position:absolute; z-index:35; transform:translate(-50%,-50%);
  font-family:'Fredoka',sans-serif; font-weight:600; font-size:.95rem; color:#4A3010;
  padding:.5rem 1.15rem; border-radius:999px; cursor:pointer;
  background:linear-gradient(180deg,#FFCE63,#F6B93B); border:2px solid #FFF6DF;
  box-shadow:0 6px 14px rgba(200,130,20,.45), inset 0 1px 0 rgba(255,255,255,.5);
  pointer-events:auto;
}
#placesP .wmVisitFab[hidden]{ display:none !important; }
#placesP .wordmark { pointer-events:none; }
#placesP button.gnode,
#placesP button.gvisit,
#placesP button.gchip {
  appearance: none; -webkit-appearance: none; font: inherit; margin: 0;
}
#placesP button.gnode { padding: 0; cursor: pointer; }
#placesP #wmFx { touch-action: none; }

  #placesP {
    --honey:#F6B93B; --comb:#FFF3D6; --ink:#3B3226; --parchment:#EFE6CC; --space:#0B1026;
  }
  #placesP canvas{ display:block; position:absolute; inset:0; width:100%; height:100%; }
  #wmBg{ z-index:0; } #wmGlobe{ z-index:1; } #wmFx{ z-index:2; }

  /* ---- top chrome ---- */
  #wmTopbar{ position:absolute; top:calc(env(safe-area-inset-top, 0px) + 14px); left:0; right:0;
    display:flex; justify-content:center; pointer-events:none; z-index:40;
    transition:opacity .4s, transform .4s; }
  #wmTopbar .wmTopInner{ pointer-events:auto; }
  #wmTopbar.hide{ opacity:0; transform:translateY(-12px); pointer-events:none !important; }
  #wmTopbar.hide .wmTopInner,
  #wmTopbar.hide .wmPill,
  #wmTopbar.hide #wmBack,
  #wmTopbar.hide #wmNightBtn{ pointer-events:none !important; }
  #placesP .wordmark{ font-family:'Fredoka',sans-serif; font-weight:600; font-size:1.05rem; letter-spacing:.05em;
    color:#3A2A16; background:linear-gradient(180deg,#F4EAD0,#E7D8B2); border:1.5px solid rgba(88,62,30,.45);
    padding:.5rem 1.2rem; border-radius:8px; transform:rotate(-.6deg);
    box-shadow:0 4px 14px rgba(0,0,0,.45), inset 0 1px 0 rgba(255,250,235,.7); }
  #placesP .wordmark b{ color:#B97A1E; font-weight:600; }
  #placesP #wmNightBtn{ font-size:1.05rem; line-height:1; cursor:pointer; }
  #placesP.night{
    background:#0B1026;
  }
  #placesP.night .wordmark,
  #placesP.night .wmPlacePill,
  #placesP.night #wmNightBtn,
  #placesP.night #wmHint,
  #placesP.night .wmPill{
    background:linear-gradient(180deg,#2A2C42,#1C1E30); color:#DCE2F5; border-color:rgba(190,200,240,.3);
    box-shadow:0 4px 14px rgba(0,0,0,.6), inset 0 1px 0 rgba(210,220,255,.12);
  }
  #placesP.night .wordmark b{ color:#F6B93B; }

  /* ---- hint chip ---- */
  #wmHint{ position:absolute; bottom:calc(env(safe-area-inset-bottom, 0px) + 26px); left:50%;
    transform:translate(-50%, 18px); opacity:0; z-index:5; pointer-events:none;
    font-size:.86rem; font-weight:700; letter-spacing:.02em; color:#3A2A16;
    background:linear-gradient(180deg,#F4EAD0,#E7D8B2); border:1.5px solid rgba(88,62,30,.4);
    padding:.55rem 1.2rem; border-radius:8px;
    box-shadow:0 4px 14px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,250,235,.7);
    transition:opacity .5s, transform .5s; white-space:nowrap; }
  #wmHint.show{ opacity:1; transform:translate(-50%, 0); }
  /* While Fly HUD is up, keep any residual hint clear of the bar (belt + braces) */
  #placesP.wm-hud-up #wmHint,
  .wmGlobeRoot.wm-hud-up #wmHint{ opacity:0 !important; pointer-events:none !important; }

  /* ---- garden map (Level 2) ---- */
  #wmGarden{ position:absolute; inset:0; z-index:9; opacity:0; pointer-events:none;
    transition:opacity .5s ease; --gtint:rgba(246,185,59,.14);
    --n-ink-text:#E9E2CB; --n-ink-text-2:rgba(233,226,203,.58);
    --n-honey:#F6B93B; --n-honey-glow:rgba(255,201,94,.55);
    --n-rope:rgba(233,226,203,.10); --n-line:rgba(233,226,203,.22);
    --n-check:#6FA35C;
    --n-chrome-a:#2A2C42; --n-chrome-b:#1C1E30; --n-chrome-text:#DCE2F5;
    --n-chrome-line:rgba(190,200,240,.30); --n-backdrop:rgba(10,13,24,.90);
    /* Solid base last — radials fade to transparent and used to let the play
       board peek through as a strange square under the progress pill. */
    background:
      radial-gradient(circle at 50% 18%, var(--gtint), rgba(0,0,0,0) 62%),
      radial-gradient(circle at 30% 20%, rgba(255,250,232,.55), rgba(0,0,0,0) 55%),
      linear-gradient(180deg, var(--gA,#EDE0BC), var(--gB,#DECBA0)),
      #1A1209; }
  /* Night ground crossfade (gradients can't transition directly) */
  #wmGarden::before{
    content:''; position:absolute; inset:0; z-index:0; pointer-events:none; opacity:0;
    transition:opacity 1.2s ease;
    background:
      radial-gradient(circle at 48% 42%, var(--gNightPond, transparent), rgba(0,0,0,0) 52%),
      radial-gradient(circle at 50% 18%, var(--gtintNight, rgba(246,185,59,.10)), rgba(0,0,0,0) 62%),
      linear-gradient(180deg, var(--gNightA,#1C1710), var(--gNightB,#14100A));
  }
  #wmGarden.night::before{ opacity:1; }
  #wmGarden.night-snap::before{ transition:none; opacity:1; }
  @media (prefers-reduced-motion: reduce){
    #wmGarden::before{ transition:none; }
  }
  #wmGarden.dark{
    background:
      radial-gradient(circle at 50% 18%, var(--gtint), rgba(0,0,0,0) 62%),
      linear-gradient(180deg, #3A3423, #2C2718 55%, #221E12),
      #1A1209; }
  #wmGarden.dark .gpatch-label h3{ color:#EADFC2; text-shadow:0 1px 3px rgba(0,0,0,.6); }
  #wmGarden.dark .gpatch-label .gsub{ color:rgba(234,223,194,.6); }
  #wmGarden.dark .gsketch{ border-color:rgba(234,223,194,.4); }
  #wmGarden.dark .gsketch .in h3{ color:rgba(234,223,194,.6); }
  #wmGarden.dark .gsketch .in div{ color:rgba(234,223,194,.45); }
  #wmGarden.dark .gaccent{ filter:drop-shadow(0 0 8px rgba(255,236,180,.5)); }
  #wmGarden.open{ opacity:1; pointer-events:auto; touch-action:manipulation; }
  #wmGVeil{ position:absolute; inset:0; z-index:4; pointer-events:none; opacity:1; }
  #wmGarden.open #wmGVeil{ opacity:0; transition:opacity .9s ease .2s; }
  #wmGScroll{ transform:scale(1.08); transition:transform .9s cubic-bezier(.22,1,.36,1); z-index:1; }
  #wmGarden.open #wmGScroll{ transform:scale(1); }
  #wmGarden.open #wmGBee{ animation:beedrop .8s cubic-bezier(.34,1.5,.5,1) .45s backwards; }
  /* Bee perched slightly right of the 1/8 tag so it does not cover the numeral. */
  @keyframes beedrop{ from{ transform:translate(calc(-50% + 40px),-320%); opacity:0; } to{ transform:translate(calc(-50% + 40px),-118%); opacity:1; } }
  @media (prefers-reduced-motion: reduce){ #wmGarden.open #wmGBee{ animation:none; } #wmGVeil{ transition:none; opacity:0; } }
  #wmGarden.dark .gaccent{ opacity:.42; }
  #wmGarden.dark .gnode.locked{ background:linear-gradient(180deg,#4A4230,#38311F); color:rgba(234,223,194,.35);
    border-color:rgba(234,223,194,.3); }
  @media (prefers-reduced-motion: reduce){ #wmGScroll{ transform:none; transition:none; } }
  #placesP .gaccent{ position:absolute; transform:translate(-50%,-50%); opacity:.55; z-index:1;
    filter:drop-shadow(0 3px 4px rgba(60,40,15,.3));
    animation:gfloat 7s ease-in-out infinite alternate; }
  @keyframes gfloat{ from{ transform:translate(-50%,-53%) rotate(-2deg);} to{ transform:translate(-50%,-47%) rotate(2deg);} }
  @media (prefers-reduced-motion: reduce){ .gaccent{ animation:none; } }
  #wmGHead{ position:absolute; top:calc(env(safe-area-inset-top, 0px) + 12px); left:12px; right:12px;
    display:none; gap:8px; align-items:center; justify-content:space-between; z-index:30;
    pointer-events:none; }
  #wmGHead .wmGHeadLeft{
    display:flex; gap:6px; align-items:center; flex-shrink:0; pointer-events:none;
  }
  #wmGHead .wmGHeadLeft .gchip{ pointer-events:auto; }
  #wmGHead .gchip,
  #wmGHead button.gchip{ pointer-events:auto; }
  #placesP .gPathProgress{
    position:absolute; transform:translate(-50%,-100%); z-index:4;
    font-family:'Fredoka',sans-serif; font-weight:600; font-size:.78rem; color:#3B3226;
    background:#EFE6CC; border:1.5px solid rgba(214,198,156,.9);
    padding:.28rem .65rem; border-radius:8px; white-space:nowrap; pointer-events:none;
    box-shadow:0 3px 8px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,249,232,.75);
  }
  #placesP .gnode.selected{
    box-shadow:0 5px 12px rgba(60,40,15,.35), 0 0 0 4px rgba(246,185,59,.45);
  }
  #placesP .gnode-status{
    position:absolute; left:50%; top:112%; transform:translateX(-50%);
    font-family:'Fredoka',sans-serif; font-weight:600; font-size:.62rem; color:rgba(74,52,24,.72);
    white-space:nowrap; pointer-events:none; width:max-content; max-width:140px;
  }
  /* Stem: parchment → honey — path warms into the sole glowing action. */
  #placesP .gnode-stem{
    position:absolute; transform:translate(-50%,0); z-index:2;
    width:5px; height:22px; border-radius:999px; pointer-events:none;
    background:linear-gradient(180deg,#D6C69C 0%,#F6B93B 100%);
    box-shadow:0 1px 3px rgba(0,0,0,.2);
  }
  #placesP .wmEscape{
    font-weight:700;
    box-shadow:0 4px 14px rgba(60,40,15,.38), inset 0 1px 0 rgba(255,250,235,.75), 0 0 0 1px rgba(185,122,30,.25);
  }
  #placesP #wmBack.wmEscape{
    padding:.55rem 1.05rem;
  }
  #wmGEmpty.gEmptyState,
  .gEmptyState{
    position:absolute; left:50%; bottom:calc(env(safe-area-inset-bottom, 0px) + 28px);
    transform:translateX(-50%); z-index:28; max-width:min(92vw, 360px);
    font-family:'Fredoka',sans-serif; font-weight:600; font-size:.92rem; color:#3A2A16;
    background:linear-gradient(180deg,#F4EAD0,#E7D8B2); border:1.5px solid rgba(88,62,30,.4);
    padding:.65rem 1.1rem; border-radius:10px; text-align:center;
    box-shadow:0 6px 16px rgba(60,40,15,.35), inset 0 1px 0 rgba(255,250,235,.7);
    pointer-events:none;
  }
  .gEmptyState[hidden]{ display:none !important; }
  #placesP .gchip{ font-family:'Fredoka',sans-serif; font-weight:600; font-size:.92rem; color:#3A2A16;
    background:linear-gradient(180deg,#F4EAD0,#E7D8B2); border:1.5px solid rgba(88,62,30,.4);
    padding:.5rem .95rem; border-radius:8px; white-space:nowrap;
    box-shadow:0 4px 12px rgba(60,40,15,.3), inset 0 1px 0 rgba(255,250,235,.7); }
  button.gchip{ cursor:pointer; }
  #wmGTitle{ overflow:hidden; text-overflow:ellipsis; }
  #wmGScroll{ position:absolute; inset:0; overflow-y:auto; overflow-x:hidden;
    -webkit-overflow-scrolling:touch; overscroll-behavior:contain; }
  #wmGWorld{ position:relative; width:100%; }
  #wmGPath{ position:absolute; inset:0; width:100%; height:100%; }
  #placesP .gpatch{ position:absolute; transform:translate(-50%,-50%); border-radius:46% 54% 52% 48% / 55% 46% 54% 45%;
    filter:blur(2px); }
  #placesP .gpatch-label{ position:absolute; transform:translate(-50%,0); text-align:center; width:80%; }
  #placesP .gpatch-label h3{ font-family:'Fredoka',sans-serif; font-weight:600; letter-spacing:.14em;
    text-transform:uppercase; font-size:1.15rem; color:#4A3418;
    text-shadow:0 1px 0 rgba(255,250,235,.8); }
  #placesP .gpatch-label .gsub{ font-size:.74rem; font-weight:700; color:rgba(74,52,24,.62); margin-top:2px; }
  #placesP .gnode{ position:absolute; transform:translate(-50%,-50%); width:50px; height:50px; border-radius:50%;
    display:flex; align-items:center; justify-content:center; z-index:3;
    font-family:'Fredoka',sans-serif; font-weight:600; font-size:1.05rem; color:#5A3E12;
    background:linear-gradient(180deg,#FFDF8E,#F0B443); border:2.5px solid #FFF6DF;
    box-shadow:0 5px 12px rgba(60,40,15,.35), inset 0 2px 3px rgba(255,255,255,.55); }
  #placesP .gnode.locked{ background:linear-gradient(180deg,#EDE0C0,#DCC99C); color:rgba(90,62,18,.4);
    border-color:rgba(255,246,223,.6); box-shadow:0 3px 8px rgba(60,40,15,.2); }
  #placesP .gnode.cleared::after{ content:'✓'; position:absolute; top:-6px; right:-6px; width:20px; height:20px;
    border-radius:50%; background:#5F8F4E; color:#FFF6DF; font-size:.75rem; font-weight:700;
    display:flex; align-items:center; justify-content:center; border:2px solid #FFF6DF; }
  /* Current node: parchment marker only — no honey, no glow. Play owns the glow. */
  #placesP .gnode.current{
    color:#3B3226; cursor:default;
    background:radial-gradient(circle at 50% 38%, #FFF9E8 0%, #EFE6CC 52%, #D6C69C 100%);
    border:2.5px solid rgba(214,198,156,.9);
    box-shadow:0 6px 18px rgba(0,0,0,.45);
    animation:none;
  }
  #placesP .gnode.current:active{ transform:translate(-50%,-50%); }
  #placesP .gnode.gnode-nudge{ animation:gnodeNudge .5s ease-out; }
  @keyframes gnodeNudge {
    0%{ transform:translate(-50%,-50%) scale(1); }
    40%{ transform:translate(-50%,-50%) scale(1.08); }
    100%{ transform:translate(-50%,-50%) scale(1); }
  }
  @keyframes gpulse{ 0%,100%{ box-shadow:0 5px 12px rgba(60,40,15,.35), 0 0 0 0 rgba(246,185,59,.55);}
    50%{ box-shadow:0 5px 12px rgba(60,40,15,.35), 0 0 0 14px rgba(246,185,59,0);} }
  #placesP .gvisit{ position:absolute; transform:translate(-50%,-50%); font-family:'Fredoka',sans-serif;
    font-weight:600; font-size:.95rem; color:#4A3010; padding:.5rem 1.15rem; border-radius:999px;
    background:linear-gradient(180deg,#FFCE63,#F6B93B); border:2px solid #FFF6DF; cursor:pointer;
    box-shadow:0 6px 14px rgba(200,130,20,.45), inset 0 1px 0 rgba(255,255,255,.5); z-index:2; }
  #placesP .gvisit:active{ transform:translate(-50%,-50%) scale(.95); }
  /* New game / next-garden — unmistakable primary Play (Tap Budget §2.5 affordance). */
  #placesP .gvisit.gvisit-hero{
    font-size:1.2rem; letter-spacing:.04em; padding:.72rem 1.7rem;
    box-shadow:0 8px 18px rgba(200,130,20,.55), inset 0 1px 0 rgba(255,255,255,.55),
      0 0 0 0 rgba(246,185,59,.5);
    animation:gvisitHeroPulse 1.7s ease-in-out infinite;
  }
  @keyframes gvisitHeroPulse{
    0%,100%{ box-shadow:0 8px 18px rgba(200,130,20,.55), inset 0 1px 0 rgba(255,255,255,.55),
      0 0 0 0 rgba(246,185,59,.45); }
    50%{ box-shadow:0 8px 18px rgba(200,130,20,.55), inset 0 1px 0 rgba(255,255,255,.55),
      0 0 0 12px rgba(246,185,59,0); }
  }
  /* Node tap → Play scale-punch (~0.45s to 1.09). */
  @keyframes gvisitPunch{
    0%,100%{ transform:translate(-50%,-50%) scale(1); }
    40%{ transform:translate(-50%,-50%) scale(1.09); }
  }
  #placesP .gvisit.gvisit-punch{
    animation:gvisitPunch .45s ease-out;
  }
  @media (prefers-reduced-motion: reduce){
    #placesP .gvisit.gvisit-hero{ animation:none; }
    #placesP .gvisit.gvisit-punch{ animation:none; }
    #wmGBee{ transition:none; }
  }
  #placesP .gsketch{ position:absolute; transform:translate(-50%,-50%); border:2.5px dashed rgba(90,64,32,.45);
    border-radius:50%; display:flex; align-items:center; justify-content:center; text-align:center; }
  #placesP .gsketch .in h3{ font-family:'Fredoka',sans-serif; font-weight:600; font-style:italic;
    letter-spacing:.14em; text-transform:uppercase; color:rgba(74,52,24,.55); font-size:1rem; }
  #placesP .gsketch .in div{ font-size:.68rem; font-style:italic; color:rgba(74,52,24,.45); margin-top:2px; }
  #wmGBee{ position:absolute; transform:translate(calc(-50% + 40px),-118%); font-size:1.5rem; z-index:5;
    filter:drop-shadow(0 3px 4px rgba(60,40,15,.4)); transition:left .6s cubic-bezier(.34,1.4,.5,1), top .6s cubic-bezier(.34,1.4,.5,1); }
  /* Trail hop during restoration — left/top driven per frame with the path ink. */
  #wmGBee.flying{
    z-index:6;
    transition:none;
    animation:beeTrailHop .55s ease-in-out infinite;
  }
  @keyframes beeTrailHop{
    from{ transform:translate(calc(-50% + 40px),-118%) rotate(-6deg); }
    50%{ transform:translate(calc(-50% + 40px),-138%) rotate(6deg); }
    to{ transform:translate(calc(-50% + 40px),-118%) rotate(-6deg); }
  }
  @media (prefers-reduced-motion: reduce){
    #wmGBee.flying{ animation:none; }
  }

  /* ---- garden night (moonlit: path becomes lanterns) ---- */
  #wmGarden.night .gpath-ghost,
  #wmGarden.night .gpath-ink{ stroke:var(--n-rope); }
  #wmGarden.night .gpath-dots{
    stroke:var(--n-honey); stroke-opacity:1;
    filter:drop-shadow(0 0 6px var(--n-honey-glow));
  }
  #wmGarden.night .gpatch{
    filter:blur(2px) brightness(.42) saturate(.55);
    opacity:.75;
  }
  #wmGarden.night .gpatch-label h3{
    color:var(--n-ink-text); text-shadow:0 1px 4px rgba(0,0,0,.55);
  }
  #wmGarden.night .gpatch-label .gsub{ color:var(--n-ink-text-2); }
  #wmGarden.night .gaccent{
    opacity:.5;
    filter:brightness(.85) saturate(.8) drop-shadow(0 0 10px rgba(255,220,150,.40));
  }
  #wmGarden.night .gsketch{ border-color:rgba(233,226,203,.28); }
  #wmGarden.night .gsketch .in h3{ color:rgba(233,226,203,.5); }
  #wmGarden.night .gsketch .in div{ color:rgba(233,226,203,.4); }
  #wmGarden.night .gchip{
    background:linear-gradient(180deg,var(--n-chrome-a),var(--n-chrome-b));
    color:var(--n-chrome-text); border-color:var(--n-chrome-line);
    box-shadow:0 4px 12px rgba(0,0,0,.55), inset 0 1px 0 rgba(210,220,255,.12);
  }
  #wmGarden.night .gEmptyState{
    background:linear-gradient(180deg,var(--n-chrome-a),var(--n-chrome-b));
    color:var(--n-chrome-text); border-color:var(--n-chrome-line);
    box-shadow:0 6px 16px rgba(0,0,0,.5), inset 0 1px 0 rgba(210,220,255,.12);
  }
  #wmGarden.night .gnode.current{
    color:#3B3226; cursor:default;
    background:radial-gradient(circle at 50% 38%, #FFF9E8 0%, #EFE6CC 52%, #D6C69C 100%);
    border-color:rgba(214,198,156,.9);
    box-shadow:0 6px 18px rgba(0,0,0,.45);
    animation:none;
  }
  #wmGarden.night .gPathProgress{
    background:#EFE6CC; color:#3B3226; border-color:rgba(214,198,156,.9);
  }
  #wmGarden.night .gnode-stem{
    background:linear-gradient(180deg,#D6C69C 0%,#F6B93B 100%);
  }
  #wmGarden.night .gnode.cleared,
  #wmGarden.night .gnode.restored{
    background:linear-gradient(180deg,#B8892E,#96701F);
    color:var(--n-ink-text); border-color:rgba(233,226,203,.55);
    box-shadow:0 4px 12px rgba(0,0,0,.4);
  }
  #wmGarden.night .gnode.restored{
    background:
      radial-gradient(circle at 50% 42%, rgba(255,246,223,.55) 0 28%, transparent 29%),
      repeating-linear-gradient(135deg, #B8892E 0 3px, #96701F 3px 6px);
  }
  #wmGarden.night .gnode.cleared::after{
    background:var(--n-check); color:#FFF6DF; border-color:rgba(233,226,203,.85);
  }
  #wmGarden.night .gnode.locked,
  #wmGarden.night .gnode.overgrown{
    background:linear-gradient(180deg,#26241C,#1B1913);
    color:rgba(233,226,203,.35); border-color:var(--n-line);
    box-shadow:0 3px 8px rgba(0,0,0,.35);
  }
  #wmGarden.night .gnode.overgrown::before{ border-color:rgba(233,226,203,.22); }
  #wmGarden.night .gvisit{
    box-shadow:0 0 28px var(--n-honey-glow), 0 6px 14px rgba(0,0,0,.5);
  }
  #wmGarden.night #wmGBee{
    filter:drop-shadow(0 0 8px rgba(255,214,130,.5));
  }
  /* Tokyo-only: neon accents a touch brighter */
  #wmGarden.night[data-pocket="tokyo"] .gaccent{
    opacity:.62; filter:brightness(1.05) saturate(1.1) drop-shadow(0 0 12px rgba(127,231,255,.45));
  }

  /* ---- postcard overlay ---- */
  #wmPostcard{ position:absolute; inset:0; z-index:10; display:flex; align-items:center; justify-content:center;
    padding:20px; background:radial-gradient(circle at 50% 42%, rgba(240,228,198,.94), rgba(196,174,132,.97));
    opacity:0; pointer-events:none; transition:opacity .55s ease, background .8s ease; }
  #wmPostcard.open{ opacity:1; pointer-events:auto; }
  #wmPostcard.night{
    background:radial-gradient(circle at 50% 42%, rgba(10,13,24,.90), rgba(10,13,24,.97));
  }

  #wmCard{ width:min(400px, 92vw); background:var(--parchment); border-radius:18px; overflow:hidden;
    box-shadow:0 30px 70px rgba(30,22,10,.45), 0 4px 14px rgba(30,22,10,.25);
    transform:rotate(2.5deg) translateY(26px) scale(.94); opacity:0;
    transition:transform .6s cubic-bezier(.22,1.2,.36,1), opacity .5s; }
  #wmPostcard.open #wmCard{ transform:rotate(-1.2deg) translateY(0) scale(1); opacity:1; }

  #wmPcScene{ position:relative; height:min(46vh, 340px);
    background:linear-gradient(178deg, var(--g0) 0%, var(--g1) 58%, var(--g2) 100%); overflow:hidden; }
  #wmPcScene::after{ content:''; position:absolute; inset:0;
    box-shadow:inset 0 0 60px rgba(59,50,38,.28); pointer-events:none; }
  #wmPcScene .el{ position:absolute; transform:translate(-50%,-50%);
    filter:drop-shadow(0 6px 8px rgba(30,22,10,.30));
    animation:floaty 6s ease-in-out infinite alternate; }
  #wmPcScene.dark .el{ filter:drop-shadow(0 0 14px rgba(255,240,200,.35)) drop-shadow(0 6px 8px rgba(0,0,0,.4)); }
  @keyframes floaty{ from{ transform:translate(-50%,-52%) rotate(-1.5deg);} to{ transform:translate(-50%,-47%) rotate(1.5deg);} }
  @media (prefers-reduced-motion: reduce){ #wmPcScene .el{ animation:none; } }

  #placesP .stamp{ position:absolute; top:12px; right:12px; width:52px; height:60px; background:var(--comb);
    border-radius:4px; display:flex; align-items:center; justify-content:center; font-size:1.7rem;
    box-shadow:0 3px 8px rgba(30,22,10,.3);
    -webkit-mask-image:radial-gradient(circle 4px, transparent 96%, black 100%);
    border:3px dashed rgba(185,122,30,.55); transform:rotate(4deg); }

  #wmPcBody{ padding:20px 22px calc(18px + env(safe-area-inset-bottom, 0px)); color:var(--ink); }
  #wmPcRegion{ font-size:.72rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
    color:rgba(59,50,38,.55); margin-bottom:2px; }
  #wmPcName{ font-family:'Fredoka',sans-serif; font-weight:600; font-size:1.9rem; line-height:1.1;
    color:var(--ink); }
  #wmPcName::after{ content:''; display:block; width:64px; height:3px; margin-top:8px; border-radius:2px;
    background:var(--honey); }
  #wmPcCaption{ margin-top:10px; font-size:.95rem; line-height:1.5; color:rgba(59,50,38,.8); }

  #placesP .actions{ display:flex; gap:10px; margin-top:18px; }
  #placesP .btn{ font-family:'Fredoka',sans-serif; font-weight:500; font-size:1rem; border:none; cursor:pointer;
    border-radius:14px; padding:.85rem 1.1rem; flex:1; transition:transform .15s, box-shadow .15s; }
  #placesP .btn:active{ transform:scale(.97); }
  #placesP .btn-primary{ background:linear-gradient(180deg, #FFCE63, var(--honey)); color:var(--ink);
    box-shadow:0 6px 16px rgba(246,185,59,.45), inset 0 1px 0 rgba(255,255,255,.5); }
  #placesP .btn-ghost{ background:transparent; color:var(--ink); border:2px solid rgba(59,50,38,.28); }

  /* ---- restored garden nodes (shape/texture, not colour alone) ---- */
  #placesP .gnode.restored{
    background:
      radial-gradient(circle at 50% 42%, #FFF6DF 0 28%, transparent 29%),
      repeating-linear-gradient(135deg, #FFE29A 0 3px, #F0B443 3px 6px);
    border-style: solid;
    border-width: 2.5px;
    box-shadow:0 5px 12px rgba(60,40,15,.35), inset 0 2px 3px rgba(255,255,255,.45);
  }
  #placesP .gnode.restored .gnode-blooms{
    position:absolute; inset:0; pointer-events:none;
  }
  #placesP .gnode.restored .gnode-bloom{
    position:absolute; left:50%; top:-14px; transform:translateX(-50%);
    font-size:.85rem; line-height:1; pointer-events:none;
    filter:drop-shadow(0 1px 0 rgba(255,250,235,.8));
  }
  #placesP .gnode.overgrown{
    background:
      repeating-linear-gradient(0deg, rgba(90,64,30,.12) 0 2px, transparent 2px 5px),
      linear-gradient(180deg,#E5D6B0,#D2C090);
  }
  #placesP .gnode.overgrown::before{
    content:''; position:absolute; inset:6px; border:1.5px dashed rgba(90,64,30,.35);
    border-radius:50%; pointer-events:none;
  }
  #wmGBee.waggle{ animation:beeWaggle .7s ease-in-out 2; }
  @keyframes beeWaggle{
    0%,100%{ transform:translate(calc(-50% + 40px),-118%) rotate(0deg); }
    25%{ transform:translate(calc(-46% + 40px),-122%) rotate(-12deg); }
    50%{ transform:translate(calc(-50% + 40px),-114%) rotate(10deg); }
    75%{ transform:translate(calc(-54% + 40px),-120%) rotate(-8deg); }
  }
  @media (prefers-reduced-motion: reduce){ #wmGBee.waggle{ animation:none; } }

  /* ---- restoration ceremony overlay (2D particles only; torn down after) ---- */
  #wmCeremony{
    position:absolute; inset:0; z-index:12; pointer-events:none;
    opacity:0; transition:opacity .35s ease;
  }
  #wmCeremony.open{ opacity:1; pointer-events:auto; }
  #wmCeremony canvas{ position:absolute; inset:0; width:100%; height:100%; display:block; }
  #wmCerTitle{
    position:absolute; left:50%; top:calc(env(safe-area-inset-top, 0px) + 22%);
    transform:translate(-50%, 12px); opacity:0;
    font-family:'Fredoka',sans-serif; font-weight:700; font-size:1.7rem;
    letter-spacing:.06em; color:#FFF6DF;
    text-shadow:
      0 2px 14px rgba(0,0,0,.75),
      0 0 28px rgba(255,210,63,.4),
      0 1px 0 rgba(0,0,0,.5);
    transition:opacity .55s ease, transform .55s ease;
    pointer-events:none; white-space:nowrap;
  }
  #wmCerTitle.show{ opacity:1; transform:translate(-50%, 0); }
  #wmCeremony.skip #wmCerTitle{ opacity:0; }

  /* ---- pollen portal threshold ---- */
  #wmPortal{
    position:absolute; inset:0; z-index:14; pointer-events:none;
    opacity:0; transition:opacity .4s ease;
    background:rgba(26,18,9,.2);
  }
  #wmPortal.open{ opacity:1; pointer-events:auto; }
  #wmPortal canvas{ position:absolute; inset:0; width:100%; height:100%; display:block; }
  #wmPortalHint{
    position:absolute; left:50%; bottom:calc(env(safe-area-inset-bottom, 0px) + 18%);
    transform:translate(-50%, 10px); opacity:0;
    font-family:'Fredoka',sans-serif; font-weight:600; font-size:1.05rem;
    color:#FFF6DF; letter-spacing:.03em;
    text-shadow:0 2px 10px rgba(0,0,0,.45);
    transition:opacity .5s ease, transform .5s ease;
    pointer-events:none; white-space:nowrap;
  }
  #wmPortalHint.show{ opacity:1; transform:translate(-50%, 0); }

  /* ---- fork feeling cards ---- */
  #wmForkFeel{
    position:absolute; left:12px; right:12px;
    bottom:calc(env(safe-area-inset-bottom, 0px) + 78px);
    z-index:11; display:flex; gap:10px; justify-content:center; flex-wrap:wrap;
    opacity:0; pointer-events:none; transform:translateY(14px);
    transition:opacity .45s ease, transform .45s ease;
  }
  #wmForkFeel.show{ opacity:1; pointer-events:auto; transform:translateY(0); }
  #placesP .wmFeelSkip{
    appearance:none; -webkit-appearance:none; border:1.5px dashed rgba(88,62,30,.45);
    background:rgba(244,234,208,.88); color:#3B3226;
    border-radius:14px; padding:.7rem .95rem; min-width:110px; max-width:160px;
    font-family:'Fredoka',sans-serif; font-weight:600; font-size:.88rem;
    cursor:pointer; box-shadow:0 4px 12px rgba(30,22,10,.2);
  }
  #placesP .wmFeelSkip:active{ transform:scale(.97); }
  #placesP .wmFeelCard{
    appearance:none; -webkit-appearance:none; border:1.5px solid rgba(88,62,30,.4);
    background:linear-gradient(180deg,#F4EAD0,#E7D8B2); color:#3B3226;
    border-radius:14px; padding:.7rem .85rem; min-width:96px; max-width:140px;
    display:flex; flex-direction:column; align-items:center; gap:2px; cursor:pointer;
    box-shadow:0 6px 16px rgba(30,22,10,.28), inset 0 1px 0 rgba(255,250,235,.7);
    font-family:'Nunito',sans-serif;
  }
  #placesP .wmFeelCard:active{ transform:scale(.97); }
  #placesP .wmFeelEmoji{ font-size:1.35rem; line-height:1; }
  #placesP .wmFeelLabel{
    font-family:'Fredoka',sans-serif; font-weight:600; font-size:.92rem;
  }
  #placesP .wmFeelPlace{
    font-size:.68rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
    color:rgba(59,50,38,.55); text-align:center;
  }

/* Addendum G — admin lens embed in Queen’s Studio World tab */
.qsWorldGlobeHost.wmAdminHost,
.wmAdminHost {
  --honey:#F6B93B; --comb:#FFF3D6; --ink:#3B3226; --parchment:#EFE6CC; --space:#0B1026;
  font-family: 'Nunito', -apple-system, system-ui, sans-serif;
  color: var(--comb, #FFF3D6);
  background: #1A1209;
  overflow: hidden;
  touch-action: none;
  /* Keep the World globe card in document flow — never absolute/inset:0 on the host. */
  position: relative;
}
.wmAdminHost .wmGlobeRoot,
.qsWorldGlobeHost .wmGlobeRoot {
  position: absolute; inset: 0; width: 100%; height: 100%; overflow: hidden;
}
.wmAdminHost canvas { display:block; position:absolute; inset:0; width:100%; height:100%; }
.wmAdminHost #wmBg { z-index:0; }
.wmAdminHost #wmGlobe { z-index:1; }
.wmAdminHost #wmFx { z-index:2; touch-action:none; }
.wmAdminHost #wmTopbar {
  position:absolute; top:10px; left:0; right:0; z-index:5;
  display:flex; justify-content:center; pointer-events:none;
}
.wmAdminHost #wmTopbar .wmTopInner {
  pointer-events:auto; display:flex; gap:8px; align-items:center; justify-content:center;
  padding:0 10px; flex-wrap:wrap;
}
.wmAdminHost .wmPill {
  font-family:'Fredoka',sans-serif; font-weight:600; font-size:.78rem; color:#3A2A16;
  background:linear-gradient(180deg,#F4EAD0,#E7D8B2); border:1.5px solid rgba(88,62,30,.4);
  padding:.35rem .7rem; border-radius:8px; white-space:nowrap; cursor:pointer;
}
.wmAdminHost .wordmark {
  font-family:'Fredoka',sans-serif; font-weight:600; font-size:.82rem; letter-spacing:.04em;
  color:#3A2A16; background:linear-gradient(180deg,#F4EAD0,#E7D8B2);
  border:1.5px solid rgba(88,62,30,.45); padding:.35rem .8rem; border-radius:8px;
}
.wmAdminHost #wmNightBtn { font-size:.95rem; line-height:1; cursor:pointer; }
.wmAdminHost.night {
  background:#0B1026;
}
.wmAdminHost.night .wordmark,
.wmAdminHost.night #wmNightBtn,
.wmAdminHost.night #wmHint,
.wmAdminHost.night .wmPill {
  background:linear-gradient(180deg,#2A2C42,#1C1E30); color:#DCE2F5; border-color:rgba(190,200,240,.3);
  box-shadow:0 4px 14px rgba(0,0,0,.6), inset 0 1px 0 rgba(210,220,255,.12);
}
.wmAdminHost.night .wordmark b { color:#F6B93B; }
.wmAdminHost #wmHint {
  position:absolute; bottom:12px; left:50%; transform:translate(-50%, 10px);
  opacity:0; z-index:5; pointer-events:none; font-size:.72rem; font-weight:700;
  color:#3A2A16; background:linear-gradient(180deg,#F4EAD0,#E7D8B2);
  border:1.5px solid rgba(88,62,30,.4); padding:.4rem .85rem; border-radius:8px;
  transition:opacity .4s, transform .4s; white-space:nowrap;
}
.wmAdminHost #wmHint.show { opacity:1; transform:translate(-50%, 0); }
/* Studio World embed only — never strip chrome from the full-screen #placesP globe
   (admin play-test / ceremony / Back must remain reachable). */
.qsWorldGlobeHost.wmAdminHost #wmGarden,
.qsWorldGlobeHost.wmAdminHost #wmPostcard,
.qsWorldGlobeHost.wmAdminHost #wmCeremony,
.qsWorldGlobeHost.wmAdminHost #wmPortal,
.qsWorldGlobeHost.wmAdminHost #wmForkFeel,
.qsWorldGlobeHost.wmAdminHost #wmHudBar,
.qsWorldGlobeHost.wmAdminHost #wmFlyNectar,
.qsWorldGlobeHost.wmAdminHost #wmUnfold { display:none !important; }
.qsWorldGlobeHost.wmAdminHost #wmBack { display:none !important; }
/* Full-screen game globe: Back is always an exit affordance (Nav Contract). */
#placesP #wmBack { display:inline-block !important; }

/* ---- Chapter 15 v0.2 — single bottom HUD bar (owns all bottom chrome) ---- */
#placesP .wmHudBar,
.wmGlobeRoot .wmHudBar{
  position:absolute; left:0; right:0; bottom:0; z-index:35;
  display:flex; align-items:center; justify-content:center; gap:10px;
  flex-wrap:nowrap;
  padding:12px 16px calc(env(safe-area-inset-bottom, 0px) + 14px);
  pointer-events:none;
  background:transparent;
}
#placesP .wmHudBar[hidden],
.wmGlobeRoot .wmHudBar[hidden]{ display:none !important; }
#placesP .wmHudBar > *,
.wmGlobeRoot .wmHudBar > *{ pointer-events:auto; flex:0 1 auto; min-width:0; }
#placesP .wmFlyNectar,
.wmGlobeRoot .wmFlyNectar{
  position:static; left:auto; bottom:auto; transform:none;
  font-family:'Fredoka',sans-serif; font-weight:700; font-size:1rem;
  color:#3A2A16; background:linear-gradient(180deg,#FFE9A8,#F6B93B);
  border:2px solid rgba(150,96,22,.55); border-radius:14px;
  padding:.75rem 1.35rem; cursor:pointer; white-space:nowrap;
  box-shadow:inset 0 1px 0 rgba(255,250,235,.75);
  touch-action:manipulation;
}
#placesP .wmFlyNectar[hidden]{ display:none !important; }
#placesP.night .wmHudBar,
.wmGlobeRoot.night .wmHudBar{
  background:transparent;
}
#placesP.night .wmFlyNectar,
.wmGlobeRoot.night .wmFlyNectar{
  color:#E9E2CB; background:linear-gradient(180deg,#3A2C18,#2A1E10);
  border-color:rgba(246,185,59,.45);
  box-shadow:inset 0 1px 0 rgba(255,220,160,.12);
}

/* Unfold ceremony */
#wmUnfold{
  position:absolute; inset:0; z-index:50; display:flex; align-items:center; justify-content:center;
  background:rgba(20,14,8,.55); opacity:0; pointer-events:none; transition:opacity .45s ease;
}
#wmUnfold.open{ opacity:1; pointer-events:auto; }
#wmUnfoldCard{
  max-width:min(88vw, 360px); text-align:center; padding:1.4rem 1.5rem;
  background:linear-gradient(180deg,#F4EAD0,#E7D8B2); border:1.5px solid rgba(88,62,30,.4);
  border-radius:14px; box-shadow:0 12px 36px rgba(0,0,0,.4);
}
#wmUnfoldLine{
  font-family:'Fredoka',sans-serif; font-weight:600; font-size:1.15rem; color:#3A2A16;
  line-height:1.35; margin:0 0 .85rem;
}
#wmUnfold .wmUnfoldHint{
  font-size:.72rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase;
  color:rgba(74,52,24,.55);
}
