/* =====================================================================
   scene.css - Layered scenes & page-specific styling
   Home parallax world · Schedule journey · Wishing Wall · Profile card
   Built around z-layering and depth.
   ===================================================================== */

/* ============================================================
   HOME - a cozy layered "world" the couple lives in
   Stacked absolutely-positioned parallax layers + float anims.
   ============================================================ */
.scene {
    position: relative;
    height: 340px;
    margin: 0 calc(-1 * var(--page-pad)) var(--space-md);
    overflow: hidden;
    border-bottom-left-radius: 28px;
    border-bottom-right-radius: 28px;
}
.scene .layer { position: absolute; left: 0; right: 0; }

/* sky gradient back layer */
.scene .sky {
    inset: 0;
    background: linear-gradient(var(--sky-1), var(--sky-2));
}
/* sun / moon */
.scene .orb {
    position: absolute; top: 38px; right: 40px;
    width: 54px; height: 54px; border-radius: 50%;
    background: radial-gradient(circle at 38% 36%, #fff7e6, var(--gold));
    box-shadow: 0 0 40px -4px var(--gold);
    animation: bob calc(var(--bob-dur) * 1.5) ease-in-out infinite;
}
/* drifting clouds */
.scene .cloud {
    position: absolute;
    background: rgba(255,255,255,.78);
    border-radius: 50px;
    filter: blur(.4px);
}
.scene .cloud::before, .scene .cloud::after {
    content:''; position:absolute; bottom:0; background:inherit; border-radius:50%;
}
.scene .c1 { width: 64px; height: 18px; top: 54px; left: 24px; animation: drift var(--drift-dur) linear infinite; }
.scene .c1::before { width:30px;height:30px;left:8px;bottom:2px;}
.scene .c1::after  { width:24px;height:24px;right:10px;bottom:2px;}
.scene .c2 { width: 48px; height: 14px; top: 96px; left: 60%; animation: drift var(--drift-dur) linear infinite; animation-delay: -14s; opacity:.8; }
.scene .c2::before { width:22px;height:22px;left:6px;bottom:1px;}
.scene .c2::after  { width:18px;height:18px;right:8px;bottom:1px;}

/* far hills */
.scene .hill-far {
    bottom: 78px; height: 150px;
    background: var(--hill-far);
    border-radius: 50% 50% 0 0 / 60px 60px 0 0;
    transform: scaleX(1.5);
}
/* near hills */
.scene .hill-near {
    bottom: 52px; height: 120px;
    background: var(--hill-near);
    border-radius: 48% 52% 0 0 / 50px 70px 0 0;
    transform: scaleX(1.7);
}
/* ground band */
.scene .ground {
    bottom: 0; height: 64px;
    background: linear-gradient(var(--ground), var(--ground));
    box-shadow: 0 -2px 0 rgba(255,255,255,.25) inset;
}
/* little path */
.scene .path {
    position: absolute; bottom: 0; left: 50%; transform: translateX(-50%);
    width: 70px; height: 64px;
    background: var(--card-warm);
    clip-path: polygon(38% 0, 62% 0, 100% 100%, 0 100%);
    opacity: .85;
}
/* scattered foreground flowers */
.scene .fl {
    position: absolute; bottom: 30px; width: 16px; height: 16px;
}
.scene .fl.a{ left: 16%; bottom: 26px; animation: sway 4s ease-in-out infinite; }
.scene .fl.b{ left: 80%; bottom: 30px; animation: sway 4.6s ease-in-out infinite .4s; }
.scene .fl.c{ left: 30%; bottom: 18px; animation: sway 5.2s ease-in-out infinite .8s; }
.scene .fl.d{ left: 68%; bottom: 16px; animation: sway 4.2s ease-in-out infinite .2s; }

/* the couple: two actors planted ON the ground band. Each is its own
   absolutely positioned block (no inline layout, which broke on some
   phones); shadows are separate so they stay put while the sprites bob. */
.scene .who {
    position: absolute; bottom: 54px; z-index: 6;
    animation: bob var(--bob-dur) ease-in-out infinite;
}
.scene .who .mbox { display: grid; }
.scene .who-vio  { left: calc(50% - 104px); }
.scene .who-mush { left: calc(50% + 8px); animation-delay: .6s; }
.scene .gshadow {
    position: absolute; bottom: 50px; z-index: 5;
    width: 60px; height: 11px;
    border-radius: 50%;
    background: rgba(74,46,12,.16);
    filter: blur(2px);
}
.scene .gs-l { left: calc(50% - 86px); }
.scene .gs-r { left: calc(50% + 26px); }
.scene .couple-heart {
    position: absolute; bottom: 158px; left: 50%; transform: translateX(-50%);
    z-index: 7;
    animation: bob calc(var(--bob-dur) * .6) ease-in-out infinite;
}
.scene .couple-heart .blsm { filter: drop-shadow(0 2px 3px rgba(0,0,0,.15)); }

/* drifting petals: a little life in the air */
.scene .petal {
    position: absolute; top: -14px;
    width: 10px; height: 10px;
    border-radius: 50% 50% 50% 0;
    opacity: 0;
    pointer-events: none;
    animation: petalDrift 16s linear infinite;
}
.scene .petal.p1 { left: 18%; background: var(--c-rose);   animation-duration: 15s; }
.scene .petal.p2 { left: 52%; background: var(--c-peach);  animation-duration: 18s; animation-delay: 5s; }
.scene .petal.p3 { left: 78%; background: var(--c-butter); animation-duration: 16.5s; animation-delay: 10s; }
@keyframes petalDrift {
    0%   { transform: translate(0, 0) rotate(0deg); opacity: 0; }
    8%   { opacity: .85; }
    85%  { opacity: .85; }
    100% { transform: translate(-46px, 330px) rotate(300deg); opacity: 0; }
}

/* the names plate floating over the scene */
.home-plate {
    position: relative;
    z-index: 12;
    margin: -42px auto var(--space-md);
    width: max-content; max-width: 92%;
    text-align: center;
    background: var(--card);
    border: var(--bw) solid var(--frame-ink);
    border-radius: var(--gw-radius);
    box-shadow: var(--chrome), var(--pop-shadow);
    padding: 24px 30px 16px;
}
.home-plate .names {
    font-family: var(--serif); font-weight: 500;
    font-size: var(--text-2xl); line-height: 1; color: var(--ink); white-space: nowrap;
}
.home-plate .names .amp { font-style: italic; color: var(--accent); }
.home-plate .date {
    margin-top: 8px;
    font-family: var(--pixel); font-weight: 500; font-size: var(--px-sm);
    letter-spacing: .04em; color: var(--accent-deep);
}
.home-plate .vfloat {
    position: absolute; top: -13px; left: 50%; transform: translateX(-50%);
}

/* quick-link tiles under the plate (enter the world) */
.home-links { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-sm); }
.home-link {
    position: relative;
    display: flex; align-items: center; gap: 10px;
    text-decoration: none; color: var(--ink);
    background: var(--card);
    border: var(--bw) solid var(--frame-ink);
    border-radius: var(--radius-sm);
    padding: 12px 14px;
    box-shadow: var(--chrome), var(--card-shadow);
    transition: transform var(--ease);
    overflow: hidden;
}
.home-link:active { transform: translateY(2px) scale(.98); }
.home-link .hl-ico {
    width: 40px; height: 40px; flex: none; border-radius: 12px;
    display: grid; place-items: center;
    color: rgba(70,48,28,.62);
    box-shadow: inset 0 -2px 0 rgba(0,0,0,.06), inset 0 2px 0 rgba(255,255,255,.4);
}
.home-link .hl-ico svg { width: 22px; height: 22px; }
.home-link .hl-t { font-family: var(--pixel); font-weight: 600; font-size: var(--px-md); line-height: 1.1; }
.home-link .hl-s { font-size: var(--text-xs); color: var(--ink-mute); font-family: var(--sans); }
.home-link .hl-badge {
    position: absolute; top: 6px; right: 8px;
    font-family: var(--pixel-tight); font-weight: 700; font-size: var(--px-xs); letter-spacing: .04em; color: #fff;
    background: var(--accent); border-radius: var(--radius-pill); padding: 2px 8px;
}

/* "happening now" quest banner (wedding-day) */
.now-card {
    position: relative;
    display: flex; align-items: center; gap: 12px;
    text-decoration: none; color: var(--ink);
    background: linear-gradient(105deg, var(--card-warm), var(--card));
    border: var(--bw) solid var(--frame-ink);
    border-radius: var(--radius-sm);
    box-shadow: var(--chrome), var(--card-shadow);
    padding: 14px 14px 12px; margin: 6px 0 var(--space-sm);
    transition: transform var(--ease);
}
.now-card:active { transform: translateY(2px) scale(.99); }
.now-card .nc-pulse {
    width: 10px; height: 10px; flex: none; border-radius: 50%;
    background: var(--c-coral); box-shadow: 0 0 0 0 rgba(245,154,134,.6);
    animation: pulse 2s ease-in-out infinite;
}
.now-card .nc-ico { width: 30px; height: 30px; flex: none; display: grid; place-items: center; color: var(--accent-deep); }
.now-card .nc-text { display: flex; flex-direction: column; line-height: 1.15; }
/* the label rides the top edge like a quest name tag */
.now-card .nc-label {
    position: absolute; top: -10px; left: 12px;
    font-family: var(--pixel-tight); font-weight: 700; font-size: var(--px-xs);
    letter-spacing: .06em; text-transform: uppercase; line-height: 1.25;
    color: #fff; background: var(--accent);
    border: var(--bw) solid var(--frame-ink);
    border-radius: 6px; padding: 2px 8px;
    box-shadow: 0 2px 5px -2px rgba(122,97,73,.3);
    white-space: nowrap;
}
.now-card .nc-title { font-family: var(--serif); font-weight: 500; font-size: var(--text-lg); }
.now-card .nc-arrow { margin-left: auto; width: 20px; height: 20px; color: var(--ink-mute); }

.countdown {
    display: flex; justify-content: center; gap: 8px; margin: var(--space-md) 0 var(--space-sm);
}
.cd-cell {
    min-width: 56px; text-align: center;
    background: var(--card); border: var(--card-border-w) solid var(--card-border-col);
    border-radius: var(--radius-sm); padding: 8px 6px; box-shadow: var(--card-shadow);
}
.cd-cell b { font-family: var(--pixel); font-weight: 700; font-size: var(--px-xl); color: var(--accent-deep); display: block; line-height: 1; }
.cd-cell span { font-family: var(--pixel-tight); font-weight: 700; font-size: var(--px-xs); letter-spacing: .05em; text-transform: uppercase; color: var(--ink-mute); }

@keyframes bob   { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-7px)} }
@keyframes drift { from{transform:translateX(-80px)} to{transform:translateX(360px)} }
@keyframes sway  { 0%,100%{transform:rotate(-6deg)} 50%{transform:rotate(6deg)} }


/* ============================================================
   SCHEDULE - a cozy vertical "journey" path through the night
   ============================================================ */
.journey { position: relative; padding: var(--space-sm) 0 var(--space-md); }
.journey::before { /* the winding road */
    content: ''; position: absolute; top: 18px; bottom: 30px; left: 27px;
    width: 4px; border-radius: 4px;
    background: repeating-linear-gradient(var(--accent-soft) 0 8px, transparent 8px 14px);
}
.stop {
    position: relative;
    display: grid; grid-template-columns: 56px 1fr; gap: 12px;
    padding-bottom: var(--space-md);
    align-items: start;
}
.stop .node {
    position: relative; z-index: 2;
    width: 56px; display: flex; flex-direction: column; align-items: center; gap: 4px;
}
.stop .pin {
    width: 40px; height: 40px; border-radius: 50% 50% 50% 12px;
    transform: rotate(45deg);
    background: var(--card);
    border: var(--bw) solid var(--frame-strong);
    box-shadow: var(--card-shadow);
    display: grid; place-items: center;
}
.stop .pin > * { transform: rotate(-45deg); }
.stop .time { font-family: var(--pixel); font-weight: 600; font-size: var(--px-sm); color: var(--ink-soft); }
.stop .body {
    position: relative;
    background: var(--card);
    border: var(--bw) solid var(--frame-ink);
    border-radius: var(--radius-sm);
    box-shadow: var(--card-shadow);
    padding: 12px 14px;
    margin-top: 2px;
}
.stop .body h4 { font-family: var(--serif); font-weight: 500; font-size: var(--text-lg); line-height: 1.1; }
.stop .body p { font-size: var(--text-sm); color: var(--ink-mute); margin-top: 2px; }
.stop .body .tag {
    display: inline-flex; align-items:center; gap:4px; margin-top: 8px;
    font-family: var(--pixel-tight); font-weight: 700; font-size: var(--px-xs); letter-spacing: .06em; text-transform: uppercase;
    color: color-mix(in srgb, var(--page-accent) 45%, var(--ink));
}
.stop .body .tag svg { width: 12px; height: 12px; flex: none; }
/* "you are here" highlight */
.stop.now .pin {
    background: linear-gradient(var(--accent), var(--accent-deep));
    border-color: var(--accent-deep);
    animation: pulse 2s ease-in-out infinite;
}
.stop.now .body { border-color: var(--accent); box-shadow: var(--card-shadow), 0 0 0 2px rgba(212,149,106,.2); }
.stop.now .nowtag {
    position: absolute; top: -10px; left: 10px;
    font-family: var(--pixel-tight); font-weight: 700; font-size: var(--px-xs);
    letter-spacing: .06em; text-transform: uppercase; line-height: 1.25;
    color: #fff; background: var(--accent);
    border: var(--bw) solid var(--frame-ink);
    border-radius: 6px; padding: 2px 8px;
    box-shadow: 0 2px 5px -2px rgba(122,97,73,.3);
}
.stop.done .pin { opacity: .5; }
.stop.done .body { opacity: .62; }
@keyframes pulse { 0%,100%{box-shadow: var(--card-shadow), 0 0 0 0 rgba(212,149,106,.5)} 50%{box-shadow: var(--card-shadow), 0 0 0 7px rgba(212,149,106,0)} }

/* ============================================================
   WISHING WALL - notes pinned on a wall, growing flowers
   ============================================================ */
.wish-compose { position: relative; }
/* quest-board strip above the feed */
.qboard-head {
    display: flex; align-items: center; justify-content: space-between; gap: 8px;
    margin: var(--space-md) 2px var(--space-md);
    font-family: var(--pixel-tight); font-weight: 700; font-size: var(--px-xs);
    letter-spacing: .06em; text-transform: uppercase; color: var(--accent-deep);
}
.wish-card {
    position: relative;
    background: var(--card);
    border: var(--bw) solid var(--frame-ink);
    border-radius: var(--radius-sm);
    box-shadow: var(--chrome), var(--card-shadow);
    padding: 16px 16px 12px;
    margin-bottom: var(--space-md);
}
.wish-card:nth-child(odd)  { transform: rotate(-.5deg); }
.wish-card:nth-child(even) { transform: rotate(.6deg); }
.wish-card .pinhole {
    position: absolute; top: -7px; left: 50%; transform: translateX(-50%);
    width: 14px; height: 14px; border-radius: 50%;
    background: radial-gradient(circle at 35% 32%, var(--rose), var(--accent-deep));
    box-shadow: 0 2px 4px rgba(0,0,0,.25), inset 0 -1px 2px rgba(0,0,0,.3);
}
.wish-card .whead { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
/* author rides as a mini name-tag chip */
.wish-card .whead .who {
    font-family: var(--pixel-tight); font-weight: 700; font-size: var(--px-xs);
    letter-spacing: .04em; text-transform: uppercase; line-height: 1.25;
    color: var(--accent-deep); background: var(--card-2);
    border: var(--bw) solid var(--frame-ink); border-radius: 6px;
    padding: 2px 8px;
    max-width: 50%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.wish-card .whead .who.mine { color: #fff; background: var(--accent); }
.wish-card .whead .when { margin-left: auto; font-family: var(--pixel-tight); font-weight: 600; font-size: var(--px-xs); color: var(--ink-mute); letter-spacing: .04em; }
.wish-card .wmsg { font-family: var(--serif); font-size: var(--text-lg); line-height: 1.45; color: var(--ink); }
.wish-card .cheer {
    margin-top: 10px;
    display: inline-flex; align-items: center; gap: 6px;
    font-family: var(--pixel); font-weight: 600; font-size: var(--px-sm); color: var(--ink-soft);
    background: var(--card-2);
    border: 1.5px solid var(--card-border-col);
    border-radius: var(--radius-pill);
    padding: 4px 12px; cursor: pointer;
    transition: transform var(--ease), background var(--ease), color var(--ease);
}
.wish-card .cheer:active { transform: translateY(2px); }
/* tiny petal burst on cheer */
.petal-burst { position: absolute; inset: 0; pointer-events: none; }
.petal-burst i {
    position: absolute; left: 50%; top: 40%;
    width: 8px; height: 8px;
    border-radius: 50% 50% 50% 0;
    animation: burstFly .6s ease-out forwards;
}
@keyframes burstFly {
    0%   { transform: translate(-50%, -50%) rotate(0deg) scale(.6); opacity: 1; }
    100% { transform: translate(calc(-50% + var(--tx)), calc(-50% + var(--ty))) rotate(220deg) scale(1); opacity: 0; }
}
.wish-card .cheer.on { background: linear-gradient(var(--accent), var(--accent-deep)); color: #fff; border-color: var(--accent-deep); }
.wish-card .cheer .n { font-variant-numeric: tabular-nums; }

/* ============================================================
   PROFILE - character / player card
   ============================================================ */
.charcard {
    position: relative;
    background:
        radial-gradient(120% 80% at 50% 0%, var(--card-warm), var(--card) 60%);
    border: var(--bw) solid var(--frame-ink);
    border-radius: var(--gw-radius);
    box-shadow: var(--chrome), var(--chrome-shadow);
    padding: var(--space-xl) var(--space-lg) var(--space-lg);
    text-align: center;
    overflow: visible;
    margin-top: 34px;
    margin-bottom: var(--space-md);
}
/* records list inside the RECORDS window */
.rec-row {
    display: flex; align-items: center; gap: 10px;
    padding: 8px 2px;
}
.rec-row + .rec-row { border-top: 1.5px solid var(--line); }
.rec-row .rec-name { flex: 1; font-family: var(--pixel); font-weight: 600; font-size: var(--px-sm); color: var(--ink); }
.rec-row .rec-best { font-family: var(--pixel); font-weight: 700; font-size: var(--px-md); color: var(--accent-deep); font-variant-numeric: tabular-nums; }
.rec-row .rec-done {
    width: 20px; height: 20px; flex: none; border-radius: 50%;
    display: grid; place-items: center;
    font-size: 11px; color: #fff;
    background: var(--card-2); border: 1.5px solid var(--line);
}
.rec-row .rec-done.on { background: var(--leaf); border-color: var(--leaf); }
/* avatar breaks above the card frame */
.charcard .avatar-frame {
    position: absolute; top: -42px; left: 50%; transform: translateX(-50%);
    width: 112px; height: 112px; border-radius: 28px;
    background: linear-gradient(var(--sky-1), var(--card-warm));
    border: 3px solid var(--card);
    box-shadow: var(--pop-shadow), var(--glow);
    display: grid; place-items: center; overflow: visible;
    padding: 0; cursor: pointer; -webkit-appearance: none; appearance: none;
}
.charcard .avatar-frame > img { border-radius: 24px; }
.avatar-edit-badge {
    position: absolute; right: -3px; bottom: -3px;
    width: 32px; height: 32px; border-radius: 50%;
    background: linear-gradient(var(--accent), var(--accent-deep)); color: #fff;
    border: 2.5px solid var(--card); display: grid; place-items: center;
    box-shadow: var(--pop-shadow); z-index: 4;
}
.avatar-edit-badge svg { width: 15px; height: 15px; }
.charcard .lv {
    position: absolute; top: 0; right: calc(50% - 82px);
    z-index: 3;
}
.charcard .pname { font-family: var(--serif); font-weight: 500; font-size: var(--text-xl); margin-top: 74px; line-height: 1; }
.charcard .ptitle { font-family: var(--pixel); font-weight: 500; font-size: var(--px-sm); color: var(--accent-deep); margin-top: 6px; letter-spacing: .03em; }

/* stat strip */
.stats { display: grid; grid-template-columns: repeat(3,1fr); gap: var(--space-sm); margin: var(--space-md) 0; }
.stat {
    background: color-mix(in srgb, var(--c-butter) 14%, var(--card-2));
    border: 1.5px solid var(--card-border-col);
    border-radius: var(--radius-sm); padding: 10px 6px;
}
.stat b { display: block; font-family: var(--pixel); font-weight: 700; font-size: var(--px-xl); color: var(--accent-deep); line-height: 1; }
.stat span { font-family: var(--pixel-tight); font-weight: 700; font-size: var(--px-xs); letter-spacing: .05em; text-transform: uppercase; color: var(--ink-mute); }

/* growing flower - the gamification made visible */
.garden {
    position: relative; height: 120px; margin: var(--space-md) 0 var(--space-sm);
    background: linear-gradient(var(--sky-1) 40%, var(--ground));
    border-radius: var(--radius-sm);
    border: 1.5px solid var(--card-border-col);
    overflow: hidden;
}
.garden .soil { position: absolute; left: 0; right: 0; bottom: 0; height: 30px; background: var(--ground); }
.garden .stem {
    position: absolute; bottom: 26px; left: 50%; transform: translateX(-50%);
    width: 5px; background: var(--leaf); border-radius: 3px;
    transition: height .6s var(--ease-bounce);
}
.garden .plant-top {
    position: absolute; left: 50%; transform: translateX(-50%);
    transition: bottom .6s var(--ease-bounce);
}
.garden .leaf-l, .garden .leaf-r {
    position: absolute; width: 16px; height: 9px; background: var(--leaf); border-radius: 50% 50% 50% 0;
}
.garden .tier-label {
    position: absolute; top: 8px; left: 10px;
    font-family: var(--pixel); font-weight: 600; font-size: var(--px-sm); color: var(--accent-deep);
    background: var(--card); border-radius: var(--radius-pill); padding: 2px 9px;
    border: 1.5px solid var(--card-border-col);
}

/* QR styled as an in-world "pass" item */
.pass {
    position: relative;
    background: var(--card-2);
    border: 2px dashed var(--card-border-col);
    border-radius: var(--radius-sm);
    padding: var(--space-md);
    display: flex; align-items: center; gap: var(--space-md);
    text-align: left;
}
.pass .qrbox {
    width: 92px; height: 92px; flex: none; background: #fff; border-radius: 8px;
    padding: 6px; display: grid; place-items: center;
    box-shadow: inset 0 0 0 1px rgba(0,0,0,.06);
}
.pass .qrbox img, .pass .qrbox canvas, .pass .qrbox table { width: 100% !important; height: 100% !important; }
.pass .pass-t b { font-family: var(--pixel); font-weight: 600; font-size: var(--px-md); color: var(--accent-deep); }
.pass .pass-t p { font-size: var(--text-sm); color: var(--ink-mute); margin-top: 3px; line-height: 1.4; }

/* ============================================================
   PICKER - "Who's here?"
   ============================================================ */
.picker-list { display: flex; flex-direction: column; gap: var(--space-sm); }
.picker-btn {
    display: flex; align-items: center; gap: 14px;
    background: var(--card);
    border: var(--bw) solid var(--frame-ink);
    border-radius: var(--radius-sm);
    box-shadow: var(--chrome), var(--card-shadow);
    padding: 12px 16px; cursor: pointer; text-align: left;
    transition: transform var(--ease), border-color var(--ease);
}
.picker-btn:active { transform: translateY(2px) scale(.99); }
.picker-btn:hover { border-color: var(--accent); }
.picker-btn .pk-name { font-family: var(--serif); font-weight: 500; font-size: var(--text-lg); }
.picker-btn .pk-sub { font-family: var(--pixel-tight); font-weight: 700; font-size: var(--px-xs); letter-spacing: .05em; text-transform: uppercase; color: var(--ink-mute); }
/* initial bubble for the name-search door (guest has no avatar yet) */
.picker-btn .join-ph {
    flex: 0 0 auto; width: 48px; height: 48px; border-radius: 50%;
    display: grid; place-items: center;
    background: var(--paper-2); color: var(--accent);
    font-family: var(--serif); font-weight: 600; font-size: var(--text-lg);
}

/* toast for +flower */
#toast-host { position: absolute; left: 0; right: 0; bottom: 90px; z-index: 60; display: flex; flex-direction: column; align-items: center; gap: 8px; pointer-events: none; }
body.dock-open #toast-host { bottom: calc(var(--nav-height) + var(--dock-h) + 30px); }
.toast {
    display: inline-flex; align-items: center; gap: 8px;
    font-family: var(--pixel); font-weight: 600; font-size: var(--px-md); color: #fff;
    background: linear-gradient(var(--accent), var(--accent-deep));
    border: 2px solid var(--card);
    border-radius: var(--radius-pill); padding: 8px 16px;
    box-shadow: var(--pop-shadow);
    animation: toastIn .4s var(--ease-bounce) both, toastOut .4s ease 1.8s forwards;
}
@keyframes toastIn { from { opacity:0; transform: translateY(16px) scale(.9);} to {opacity:1; transform:none;} }
@keyframes toastOut { to { opacity: 0; transform: translateY(-10px); } }

@media (prefers-reduced-motion: reduce) {
    .now-card .nc-pulse, .stop.now .pin { animation: none; }
    .petal-burst { display: none; }
}

/* ---- wish keepsake card (js/wishcard.js) ---- */
/* reuses .pop-overlay / .pop chrome from css/games.css; only the body differs */
.wc-pop { max-width: 360px; }
.wc-body {
    flex: 1; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch;
    padding: 30px 18px 16px; text-align: center;
}
.wc-preview {
    display: block; width: 100%; max-width: 280px; margin: 0 auto 12px;
    border-radius: 18px; box-shadow: 0 14px 36px -16px rgba(80,50,30,.5);
    /* let iOS long-press bring up Save Image on the live preview */
    -webkit-touch-callout: default; user-select: none;
}
.wc-hint {
    font-size: var(--text-xs); color: var(--ink-soft);
    margin: 0 0 14px;
}

/* ---- mushrooms corner (renderMushrooms) ---- */
.meadow {
    position: relative;
    height: 300px;
    margin-top: 14px;
    border-radius: 22px;
    overflow: hidden;
    border: var(--bw) solid var(--frame-ink);
    box-shadow: var(--card-shadow);
    background: linear-gradient(180deg,
        color-mix(in srgb, var(--c-sky) 24%, var(--card)) 0%,
        var(--card) 52%,
        color-mix(in srgb, var(--c-mint) 30%, var(--card)) 100%);
    display: flex;
    align-items: flex-end;
    justify-content: center;
}
.meadow .m-fl { position: absolute; z-index: 1; opacity: .9; }
.meadow .m-fl.a { left: 12%;  bottom: 12px; }
.meadow .m-fl.b { left: 30%;  bottom: 30px; transform: scale(.8); }
.meadow .m-fl.c { right: 14%; bottom: 14px; }
.meadow .m-fl.d { right: 32%; bottom: 32px; transform: scale(.75); }
.meadow .m-fl.e { left: 50%;  bottom: 8px;  transform: translateX(-50%) scale(.7); }
.m-pair {
    position: relative; z-index: 2;
    display: flex; align-items: flex-end; gap: 8px;
    padding-bottom: 20px;
}
.m-who {
    -webkit-appearance: none; appearance: none;
    border: 0; background: none; padding: 0; margin: 0; cursor: pointer;
    position: relative;
    transition: transform var(--ease);
}
.m-who::after {
    content: ''; position: absolute; left: 50%; bottom: 8px;
    width: 60%; height: 12px; transform: translateX(-50%);
    background: radial-gradient(ellipse, rgba(90,60,40,.22), transparent 70%);
    z-index: -1; pointer-events: none;
}
.m-who:active { transform: translateY(2px) scale(.97); }
@media (hover:hover) { .m-who:hover { transform: translateY(-3px); } }
.m-bubble {
    position: absolute; top: 14px; left: 50%;
    transform: translateX(-50%) translateY(6px) scale(.96);
    z-index: 3; max-width: 82%;
    background: var(--card); color: var(--ink);
    border: var(--bw) solid var(--frame-ink); border-radius: 16px;
    padding: 10px 16px; font-family: var(--serif); font-size: var(--text-lg);
    line-height: 1.35; text-align: center;
    box-shadow: 0 8px 22px -12px rgba(90,60,40,.5);
    opacity: 0; pointer-events: none;
    transition: opacity .28s ease, transform .28s ease;
}
.m-bubble::after {
    content: ''; position: absolute; bottom: -8px; left: 50%; transform: translateX(-50%);
    border: 8px solid transparent; border-top-color: var(--frame-ink);
}
.m-bubble.show { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); }
.m-hint {
    position: absolute; top: 12px; left: 50%; transform: translateX(-50%);
    z-index: 4;
    font-family: var(--pixel-tight); font-weight: 700; font-size: var(--px-xs);
    letter-spacing: .06em; text-transform: uppercase; color: #fff;
    background: var(--accent); border: var(--bw) solid var(--frame-ink);
    border-radius: 999px; padding: 4px 12px;
    box-shadow: 0 4px 10px -4px rgba(122,97,73,.5);
    animation: m-bob 1.4s ease-in-out infinite;
    transition: opacity .3s ease;
}
.m-hint.gone { opacity: 0; pointer-events: none; }
@keyframes m-bob { 0%,100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(-5px); } }
@media (prefers-reduced-motion: reduce) { .m-hint { animation: none; } }
