/* =====================================================================
   果果的小花园 · garden.css
   暖奶油底 + 青绿 + 橙色，与 3D 果果同一套品牌色
   所有类名以 ggg- 开头，不影响宿主页面
   ===================================================================== */
.ggg {
  --ggg-cream: #FFF8EF;
  --ggg-paper: #FFFDF9;
  --ggg-ink: #3A2A20;
  --ggg-ink2: #66513F;
  --ggg-line: #EADBCA;
  --ggg-orange: #CC4A0B;       /* 按钮底色：白字对比度约 4.6 */
  --ggg-orange2: #FC6B1E;
  --ggg-teal-ink: #0F6F60;
  --ggg-teal-tint: #E2F3EE;
  position: relative;
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
  padding: 12px;
  border-radius: 22px;
  overflow: hidden;
  background: var(--ggg-cream);
  color: var(--ggg-ink);
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "HarmonyOS Sans SC", "MiSans", "Microsoft YaHei UI", "Microsoft YaHei", "Noto Sans SC", "Noto Sans CJK SC", sans-serif;
  font-size: 18px;
  line-height: 1.5;
  -webkit-tap-highlight-color: transparent;
  -webkit-user-select: none;
  user-select: none;
  -webkit-font-smoothing: antialiased;
}
.ggg.is-fill { height: 100%; }
.ggg *, .ggg *::before, .ggg *::after { box-sizing: border-box; }
.ggg [hidden] { display: none !important; }
.ggg button {
  font: inherit;
  color: inherit;
  margin: 0;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
  touch-action: manipulation;
}
.ggg :focus-visible { outline: 3px solid var(--ggg-orange2); outline-offset: 2px; }
.ggg-defs { position: absolute; width: 0; height: 0; overflow: hidden; }
.ggg-main { display: flex; flex-direction: column; gap: 10px; flex: 1 1 auto; min-height: 0; }
.ggg-main[inert] { pointer-events: none; }
.ggg-sr { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------------- 顶栏 ---------------- */
.ggg-top { display: flex; align-items: center; gap: 8px; }
.ggg-title {
  flex: 1; min-width: 0; margin: 0;
  font-size: 20px; font-weight: 700; letter-spacing: 0;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.ggg-tools { display: flex; gap: 6px; flex: none; }
.ggg-tool {
  min-width: 48px; min-height: 48px; padding: 0 7px;
  display: inline-flex; align-items: center; justify-content: center; gap: 3px;
  border: 1px solid var(--ggg-line); border-radius: 14px;
  background: var(--ggg-paper); color: var(--ggg-ink2); font-size: 18px;
  transition: background-color .15s, color .15s, border-color .15s;
}
.ggg-tool svg { width: 22px; height: 22px; flex: none; }
.ggg-tool[aria-pressed="true"] { background: var(--ggg-teal-tint); border-color: #9EDCCF; color: var(--ggg-teal-ink); }
.ggg-close { width: 48px; padding: 0; }
.ggg.is-tiny .ggg-tool span { display: none; }
.ggg.is-tiny .ggg-tool { padding: 0; width: 48px; }
.ggg-notes-btn.is-nudge { animation: ggg-nudge 1.4s ease; }

/* ---------------- 场景 ---------------- */
.ggg-scene {
  position: relative;
  display: flex; flex-direction: column;
  border-radius: 18px; overflow: hidden;
  background: #BEE3C4;
  box-shadow: inset 0 0 0 1px rgba(80, 120, 90, .12);
}
.ggg:not(.is-fill) .ggg-scene { aspect-ratio: 10 / 9.6; min-height: 300px; }
.ggg.is-fill .ggg-scene { flex: 1 1 0; min-height: 270px; }
.ggg-sky { position: relative; flex: 0 0 25%; min-height: 80px; }
.ggg-sky-art { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.ggg-rainbow { transition: opacity 1.6s ease; }
.ggg-scene.is-rainbow .ggg-rainbow { opacity: 1; }

.ggg-sun, .ggg-cloud, .ggg-gg { position: absolute; padding: 0; border: 0; background: none; z-index: 1; }
.ggg-sun { left: 2%; top: 3%; width: 17%; max-width: 76px; min-width: 52px; aspect-ratio: 1; border-radius: 50%; }
.ggg-sun-art { width: 100%; height: 100%; display: block; overflow: visible; }
.ggg-sun-rays { transform-origin: 0 0; animation: ggg-rot 40s linear infinite; }
.ggg-sun.is-shine .ggg-sun-halo { transform-origin: 0 0; animation: ggg-shine 1.5s ease-out; }
.ggg-cloud { left: 33%; top: 5%; width: 25%; max-width: 116px; min-width: 76px; aspect-ratio: 90 / 50; border-radius: 30px; }
.ggg-cloud-art { width: 100%; height: 100%; display: block; animation: ggg-drift 14s ease-in-out infinite; }
.ggg-cloud.is-raining .ggg-cloud-body { animation: ggg-shake .45s ease-in-out 3; filter: saturate(.7) brightness(.94); }

/* 小果果 */
.ggg-gg { right: 2%; bottom: -5%; width: 21%; max-width: 96px; min-width: 64px; aspect-ratio: 120 / 124; z-index: 3; border-radius: 40%; }
.ggg-gg-art { width: 100%; height: 100%; display: block; overflow: visible; animation: ggg-float 3.4s ease-in-out infinite; }
.ggg-gg-body { transform-origin: 60px 112px; }
.ggg-gg.is-hop .ggg-gg-body { animation: ggg-hop .6s cubic-bezier(.3, 1.5, .5, 1); }
.ggg-gg.is-spin .ggg-gg-art { animation: ggg-spin 1s cubic-bezier(.4, 0, .2, 1); }
.ggg-blink { transform-origin: 60px 73px; animation: ggg-blink 5.4s infinite; }
.ggg-gg .ggg-eye-happy, .ggg-gg .ggg-eye-closed, .ggg-gg .ggg-eye-wink,
.ggg-gg .ggg-mouth-open, .ggg-gg .ggg-mouth-o { display: none; }
.ggg-gg[data-expr="happy"] .ggg-mouth-smile { display: none; }
.ggg-gg[data-expr="happy"] .ggg-mouth-open { display: inline; }
.ggg-gg[data-expr="joy"] .ggg-eye-open { display: none; }
.ggg-gg[data-expr="joy"] .ggg-eye-happy { display: inline; }
.ggg-gg[data-expr="joy"] .ggg-mouth-smile { display: none; }
.ggg-gg[data-expr="joy"] .ggg-mouth-open { display: inline; }
.ggg-gg[data-expr="surprised"] .ggg-mouth-smile { display: none; }
.ggg-gg[data-expr="surprised"] .ggg-mouth-o { display: inline; }
.ggg-gg[data-expr="wink"] .ggg-eye-open { display: none; }
.ggg-gg[data-expr="wink"] .ggg-eye-wink { display: inline; }
.ggg-gg[data-expr="sleepy"] .ggg-eye-open { display: none; }
.ggg-gg[data-expr="sleepy"] .ggg-eye-closed { display: inline; }

.ggg-say {
  position: absolute; z-index: 4;
  right: calc(min(21%, 96px) + 3%); bottom: 24%;
  max-width: 58%;
  padding: 7px 12px;
  border-radius: 14px 14px 4px 14px;
  background: #FFFFFF; color: #3A2A20;
  font-size: 18px; line-height: 1.35;
  box-shadow: 0 6px 16px rgba(80, 50, 20, .14);
  opacity: 0; transform: translateY(6px) scale(.96); transform-origin: 100% 100%;
  transition: opacity .2s ease, transform .3s cubic-bezier(.3, 1.4, .5, 1);
  pointer-events: none;
}
.ggg-say.is-on { opacity: 1; transform: none; }

/* 花圃 */
.ggg-bed {
  position: relative; flex: 1 1 auto; min-height: 0;
  padding: 5% 3% 2.5%;
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='84' height='66' viewBox='0 0 84 66'%3E%3Cg fill='none' stroke='%238FCB9F' stroke-width='1.5' stroke-linecap='round' opacity='.6'%3E%3Cpath d='M12 22c1-5-1-9-1-9M12 22c2-4 5-6 5-6M12 22c-2-3-5-4-5-4'/%3E%3Cpath d='M56 50c1-5-1-9-1-9M56 50c2-4 5-6 5-6M56 50c-2-3-5-4-5-4'/%3E%3Cpath d='M70 16c0-4-1-6-1-6M70 16c2-3 4-4 4-4'/%3E%3C/g%3E%3Ccircle cx='36' cy='12' r='1.7' fill='%23FFF8EE' opacity='.9'/%3E%3Ccircle cx='74' cy='36' r='1.5' fill='%23FFE29A' opacity='.85'/%3E%3Ccircle cx='26' cy='54' r='1.4' fill='%23FFF8EE' opacity='.8'/%3E%3Ccircle cx='44' cy='32' r='1.2' fill='%23F9C6B8' opacity='.7'/%3E%3C/svg%3E") 0 0 / 84px 66px repeat,
    radial-gradient(120% 70% at 50% 0%, rgba(255, 255, 255, .35), rgba(255, 255, 255, 0) 60%),
    linear-gradient(#CDEBCB, #B4DEBE);
}
.ggg-plots {
  position: relative; height: 100%;
  display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(3, 1fr);
  gap: 3% 4%;
}
.ggg-plot {
  position: relative; min-width: 48px; min-height: 48px;
  padding: 0; border: 0; border-radius: 16px; background: transparent;
}
.ggg-plot:focus-visible { outline-offset: -3px; border-radius: 14px; }
.ggg-plot .ggg-art {
  position: absolute; left: 0; right: 0; bottom: 0;
  width: 100%; height: 145%;
  overflow: visible; pointer-events: none;
}
@media (hover: hover) {
  .ggg-plot:hover .ggg-soil { filter: brightness(1.05); }
}
.ggg-wet { opacity: 0; transition: opacity .7s ease; }
.ggg-plot.is-wet .ggg-wet { opacity: .4; }

/* ---------------- 植物动画 ---------------- */
.ggg-plant { transform-origin: 50px 108px; animation: ggg-sway 6.5s ease-in-out infinite; animation-delay: var(--d, 0s); }
.ggg-sprout { animation: ggg-wiggle 4s ease-in-out infinite; }
.ggg-plot.is-suggest .ggg-plus { transform-origin: 50px 112px; animation: ggg-pulse 1.6s ease-in-out infinite; }

.ggg-plot.is-planting .ggg-sprout { animation: ggg-pop-in .7s .28s cubic-bezier(.2, 1.5, .45, 1) both; }
.ggg-plot.is-planting .ggg-tag { animation: ggg-fadein .4s .5s both; }

.ggg-plot.is-blooming .ggg-plant { animation: none; }
.ggg-plot.is-blooming .ggg-stemg { transform-origin: 50px 108px; animation: ggg-grow .95s cubic-bezier(.25, .9, .35, 1.1) both; }
.ggg-plot.is-blooming .ggg-leafw { animation: ggg-pop-in .7s .4s cubic-bezier(.2, 1.4, .4, 1) both; }
.ggg-plot.is-blooming .ggg-headpop { animation: ggg-bloom .9s .6s cubic-bezier(.2, 1.25, .4, 1) both; }
.ggg-plot.is-blooming .ggg-petal { animation: ggg-pop-in .6s calc(.75s + var(--i, 0) * 26ms) cubic-bezier(.2, 1.35, .4, 1) both; }

.ggg-plot.is-admire .ggg-headpop { animation: ggg-nod 1s ease-in-out; }
.ggg-plot.is-cheer .ggg-plant { animation: ggg-cheer 1.2s ease-in-out 2; }
.ggg-k-sunflower .ggg-headpop { transition: transform 1.4s cubic-bezier(.3, 1.2, .4, 1); }
.ggg-plot.is-sunward .ggg-k-sunflower .ggg-headpop { transform: rotate(-24deg) scale(.9, 1); }
.ggg-plot.is-picking .ggg-plant { animation: ggg-pick .55s ease-in both; }

/* ---------------- 特效层 ---------------- */
.ggg-fx { position: absolute; inset: 0; z-index: 5; overflow: hidden; pointer-events: none; }
.ggg-fx-item { position: absolute; }
.ggg-seeddrop {
  width: 8px; height: 10px; margin: -5px 0 0 -4px;
  border-radius: 50%; background: #8A5A3A;
  animation: ggg-drop .55s cubic-bezier(.5, 0, .8, .6) both;
}
.ggg-can { width: 60px; height: 38px; margin: -19px 0 0 -30px; transform-origin: 30% 60%; animation: ggg-can 1s ease-in-out both; }
.ggg-can svg { width: 100%; height: 100%; display: block; }
.ggg-can i {
  position: absolute; right: 0; top: 18px; width: 5px; height: 8px;
  border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
  background: #7FCBE0; opacity: 0;
  animation: ggg-drip .55s ease-in both;
}
.ggg-can i:nth-of-type(1) { animation-delay: .34s; }
.ggg-can i:nth-of-type(2) { animation-delay: .44s; right: 5px; }
.ggg-can i:nth-of-type(3) { animation-delay: .54s; right: -3px; }
.ggg-can i:nth-of-type(4) { animation-delay: .64s; right: 3px; }
.ggg-can i:nth-of-type(5) { animation-delay: .74s; right: -1px; }
.ggg-sparkle { width: 0; height: 0; }
.ggg-sparkle i {
  position: absolute; width: 12px; height: 12px; margin: -6px;
  background: #FFF1B8;
  clip-path: polygon(50% 0, 61% 39%, 100% 50%, 61% 61%, 50% 100%, 39% 61%, 0 50%, 39% 39%);
  animation: ggg-spark .9s ease-out both;
}
.ggg-sparkle i:nth-child(1) { --dx: -22px; --dy: -16px; }
.ggg-sparkle i:nth-child(2) { --dx: 20px; --dy: -20px; animation-delay: .08s; }
.ggg-sparkle i:nth-child(3) { --dx: -14px; --dy: 12px; animation-delay: .14s; width: 9px; height: 9px; }
.ggg-sparkle i:nth-child(4) { --dx: 18px; --dy: 10px; animation-delay: .2s; width: 9px; height: 9px; }
.ggg-rain i {
  position: absolute; top: 12%; width: 2px; height: 15px; border-radius: 2px;
  background: linear-gradient(rgba(127, 201, 224, 0), #6FBFD8);
  opacity: 0; animation: ggg-rainfall .95s linear both;
}
.ggg-petals-fall i {
  position: absolute; top: -12px; width: 10px; height: 7px;
  border-radius: 60% 40% 60% 40%; opacity: 0;
  animation: ggg-petalfall 4.5s ease-in both;
}
.ggg-bfly { left: 0; top: 0; width: 34px; height: 28px; margin: -14px 0 0 -17px; will-change: transform; transition: opacity .6s ease; }
.ggg-bfly svg { width: 100%; height: 100%; display: block; overflow: visible; }
.ggg-wing { transform-origin: 0 0; animation: ggg-flap .2s ease-in-out infinite alternate; }
.ggg-bfly.is-perched .ggg-wing { animation: ggg-flap-slow 1.9s ease-in-out infinite alternate; }
.ggg-bfly.is-appear { animation: ggg-fadein .8s both; }
.ggg-bfly.is-leaving { opacity: 0; }
.ggg-bee { width: 26px; height: 22px; margin: -11px 0 0 -13px; animation: ggg-fadein .6s both; transition: opacity .6s ease; }
.ggg-bee-in { width: 100%; height: 100%; animation: ggg-hover 3.4s ease-in-out infinite; }
.ggg-bee svg { width: 100%; height: 100%; display: block; overflow: visible; }
.ggg-bee-wings { transform-origin: 0 -3px; animation: ggg-buzz .09s linear infinite alternate; }
.ggg-bee.is-leaving { opacity: 0; }

/* ---------------- 提示、花种、按钮 ---------------- */
.ggg-hint { margin: 0; min-height: 27px; text-align: center; color: var(--ggg-ink2); font-size: 18px; }
.ggg-hint.is-flash { animation: ggg-flash 1.2s ease; }
.ggg-seeds { display: grid; grid-template-columns: repeat(6, 1fr); gap: 8px; }
.ggg.is-narrow .ggg-seeds { grid-template-columns: repeat(3, 1fr); }
.ggg-seed {
  min-height: 76px; padding: 6px 4px;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
  border: 2px solid var(--ggg-line); border-radius: 16px;
  background: var(--ggg-paper); color: var(--ggg-ink); font-size: 18px;
  transition: border-color .15s, background-color .15s, box-shadow .15s, transform .15s;
}
.ggg.is-narrow .ggg-seed { min-height: 56px; flex-direction: row; gap: 6px; padding: 4px 6px; }
.ggg-seed span { white-space: nowrap; }
.ggg-seed-art { width: 34px; height: 34px; flex: none; overflow: hidden; }
.ggg-seed[aria-checked="true"] { border-color: var(--ggg-orange2); background: #FFF0E4; box-shadow: 0 0 0 3px rgba(252, 107, 30, .16); }
.ggg-seed:active { transform: scale(.97); }

.ggg-actions { display: flex; gap: 10px; }
.ggg-btn {
  min-height: 52px; padding: 0 18px;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  border: 1px solid var(--ggg-line); border-radius: 16px;
  background: var(--ggg-paper); color: var(--ggg-ink);
  font-size: 18px; font-weight: 600; line-height: 1.2;
  transition: background-color .15s, border-color .15s, transform .15s;
}
.ggg-btn:active { transform: scale(.98); }
.ggg-btn.is-primary, .ggg-bouquet.is-ready { background: var(--ggg-orange); border-color: var(--ggg-orange); color: #FFFFFF; }
.ggg-btn.is-quiet { background: transparent; border-color: transparent; color: var(--ggg-ink2); font-weight: 500; }
.ggg-bouquet { flex: 1 1 auto; min-width: 0; }
.ggg-reset { flex: none; }
.ggg-bouquet.is-nudge { animation: ggg-nudge 1.4s ease; }
.ggg-dots { display: inline-flex; gap: 4px; }
.ggg-dots i { width: 10px; height: 10px; border-radius: 50%; background: #EAD9C8; transition: background-color .3s; }
.ggg-dots i.is-on { background: #FC8A3D; }
.ggg-bouquet.is-ready .ggg-dots i.is-on { background: #FFD9BE; }

/* ---------------- 暂停 ---------------- */
.ggg.is-paused *, .ggg.is-paused *::before, .ggg.is-paused *::after { animation-play-state: paused !important; }
.ggg-veil {
  position: absolute; inset: 0; z-index: 20;
  display: flex; align-items: center; justify-content: center;
  border-radius: inherit;
  background: rgba(255, 248, 239, .74);
  -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
}
.ggg-veil-box {
  max-width: 86%; padding: 18px 20px;
  border: 1px solid var(--ggg-line); border-radius: 20px;
  background: var(--ggg-paper); text-align: center;
  box-shadow: 0 10px 30px rgba(80, 50, 20, .12);
}
.ggg-veil-box p { margin: 0 0 12px; }

/* ---------------- 对话框 ---------------- */
.ggg-dlg {
  position: absolute; inset: 0; z-index: 30;
  display: flex; align-items: center; justify-content: center;
  padding: 12px; border-radius: inherit;
  background: rgba(58, 42, 32, .3);
}
.ggg-dlg-box {
  width: 100%; max-width: 420px; max-height: 100%; overflow: auto;
  display: flex; flex-direction: column; gap: 12px;
  padding: 18px 16px 12px;
  border-radius: 22px; background: var(--ggg-paper);
  box-shadow: 0 18px 40px rgba(60, 35, 15, .22);
  animation: ggg-dlg-in .32s cubic-bezier(.2, 1.2, .4, 1) both;
}
.ggg-dlg-box { position: relative; }
.ggg-dlg-title { margin: 0; text-align: center; font-size: 20px; font-weight: 700; }
.ggg-dlg-x {
  position: absolute; top: 8px; right: 8px; width: 48px; height: 48px;
  display: grid; place-items: center; border: 0; border-radius: 14px; background: transparent; color: var(--ggg-ink2);
}
.ggg-dlg-x svg { width: 22px; height: 22px; }
.ggg-notes-box { overflow: hidden; }
.ggg-notes-scroll { flex: 1 1 auto; min-height: 0; overflow: auto; display: flex; flex-direction: column; gap: 10px; overscroll-behavior: contain; }
.ggg-dlg-box p { margin: 0; }
.ggg-card-wrap { display: flex; justify-content: center; }
.ggg-card-art { width: min(100%, 280px); height: auto; display: block; filter: drop-shadow(0 8px 18px rgba(80, 50, 20, .16)); }
.ggg-dlg-acts { display: flex; gap: 10px; }
.ggg-dlg-acts .ggg-btn { flex: 1 1 0; padding: 0 10px; }
.ggg-notes { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.ggg-notes li { display: flex; align-items: center; gap: 12px; padding: 8px 12px; border-radius: 16px; background: #FBF2E8; }
.ggg-notes li.is-found { background: var(--ggg-teal-tint); }
.ggg-notes b { display: block; font-size: 18px; }
.ggg-notes p { color: var(--ggg-ink2); font-size: 18px; line-height: 1.35; }
.ggg-note-ic { width: 44px; height: 44px; flex: none; display: grid; place-items: center; border-radius: 12px; background: #FFFFFF; }
.ggg-note-ic svg { width: 38px; height: 38px; overflow: visible; }
.ggg-note-ic.is-q { color: #C2AE9A; font-size: 22px; font-weight: 700; }
.ggg-cards-count { text-align: center; color: var(--ggg-ink2); }
.ggg-thumbs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.ggg-thumb svg { width: 100%; height: auto; display: block; filter: drop-shadow(0 3px 6px rgba(80, 50, 20, .14)); }

/* ---------------- 关键帧 ---------------- */
@keyframes ggg-sway { 0%, 100% { transform: rotate(-1.6deg); } 50% { transform: rotate(1.6deg); } }
@keyframes ggg-wiggle { 0%, 100% { transform: rotate(-3deg); } 50% { transform: rotate(3deg); } }
@keyframes ggg-pulse { 0%, 100% { transform: scale(1); opacity: .8; } 50% { transform: scale(1.35); opacity: 1; } }
@keyframes ggg-pop-in { from { transform: scale(0); } to { transform: none; } }
@keyframes ggg-grow { from { transform: scale(.7, .15); } to { transform: none; } }
@keyframes ggg-bloom { from { transform: scale(.1) rotate(-55deg); opacity: 0; } 35% { opacity: 1; } to { transform: none; opacity: 1; } }
@keyframes ggg-nod { 0%, 100% { transform: none; } 30% { transform: rotate(-8deg) scale(1.06); } 65% { transform: rotate(6deg) scale(1.03); } }
@keyframes ggg-cheer { 0%, 100% { transform: none; } 25% { transform: rotate(-5deg); } 75% { transform: rotate(5deg); } }
@keyframes ggg-pick { to { transform: translateY(-16px) scale(.55); opacity: 0; } }
@keyframes ggg-fadein { from { opacity: 0; } to { opacity: 1; } }
@keyframes ggg-drop { from { transform: translateY(-48px); opacity: 0; } 30% { opacity: 1; } to { transform: none; opacity: 1; } }
@keyframes ggg-can {
  0% { opacity: 0; transform: translate(-12px, -10px); }
  18% { opacity: 1; transform: none; }
  32%, 78% { opacity: 1; transform: rotate(26deg); }
  100% { opacity: 0; transform: rotate(8deg) translateY(-8px); }
}
@keyframes ggg-drip { 0% { opacity: 0; transform: none; } 20% { opacity: .95; } 100% { opacity: 0; transform: translateY(34px); } }
@keyframes ggg-spark { from { transform: scale(.2); opacity: 0; } 30% { opacity: 1; } to { transform: translate(var(--dx), var(--dy)) scale(1); opacity: 0; } }
@keyframes ggg-rainfall { from { transform: none; opacity: 0; } 12% { opacity: .9; } to { transform: translateY(340px); opacity: 0; } }
@keyframes ggg-petalfall {
  0% { opacity: 0; transform: none; }
  10% { opacity: .95; }
  50% { transform: translate(18px, 170px) rotate(170deg); }
  100% { opacity: 0; transform: translate(-12px, 380px) rotate(330deg); }
}
@keyframes ggg-flap { from { transform: scaleX(1); } to { transform: scaleX(.22); } }
@keyframes ggg-flap-slow { from { transform: scaleX(1); } to { transform: scaleX(.62); } }
@keyframes ggg-hover {
  0%, 100% { transform: translate(-14px, 0); }
  25% { transform: translate(0, -8px); }
  50% { transform: translate(14px, 0); }
  75% { transform: translate(0, 6px); }
}
@keyframes ggg-buzz { from { transform: scaleY(1); } to { transform: scaleY(.55); } }
@keyframes ggg-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-3%); } }
@keyframes ggg-hop { 0%, 100% { transform: none; } 30% { transform: translateY(-9px) scale(.96, 1.05); } 60% { transform: scale(1.05, .95); } }
@keyframes ggg-spin { from { transform: rotate(0); } to { transform: rotate(360deg); } }
@keyframes ggg-blink { 0%, 93%, 100% { transform: none; } 95% { transform: scaleY(.1); } }
@keyframes ggg-rot { to { transform: rotate(360deg); } }
@keyframes ggg-shine { 0% { transform: scale(1); opacity: 1; } 40% { transform: scale(1.35); } 100% { transform: scale(1); } }
@keyframes ggg-drift { 0%, 100% { transform: translateX(-3%); } 50% { transform: translateX(4%); } }
@keyframes ggg-shake { 0%, 100% { transform: none; } 30% { transform: translateX(-2px); } 70% { transform: translateX(2px); } }
@keyframes ggg-nudge { 0%, 100% { transform: none; } 20% { transform: scale(1.05); } 40% { transform: scale(.98); } 60% { transform: scale(1.03); } }
@keyframes ggg-flash { 0%, 100% { color: var(--ggg-ink2); } 30% { color: var(--ggg-orange); } }
@keyframes ggg-dlg-in { from { opacity: 0; transform: translateY(10px) scale(.97); } to { opacity: 1; transform: none; } }

/* ---------------- 减少动态效果 ---------------- */
.ggg.is-reduced .ggg-plant,
.ggg.is-reduced .ggg-sprout,
.ggg.is-reduced .ggg-sun-rays,
.ggg.is-reduced .ggg-cloud-art,
.ggg.is-reduced .ggg-gg-art,
.ggg.is-reduced .ggg-blink,
.ggg.is-reduced .ggg-bee-in,
.ggg.is-reduced .ggg-wing,
.ggg.is-reduced .ggg-bee-wings,
.ggg.is-reduced .ggg-plus,
.ggg.is-reduced .ggg-stemg,
.ggg.is-reduced .ggg-leafw,
.ggg.is-reduced .ggg-headpop,
.ggg.is-reduced .ggg-petal,
.ggg.is-reduced .ggg-gg-body,
.ggg.is-reduced .ggg-cloud-body,
.ggg.is-reduced .ggg-sun-halo,
.ggg.is-reduced .ggg-btn,
.ggg.is-reduced .ggg-notes-btn,
.ggg.is-reduced .ggg-dlg-box { animation: none !important; }
.ggg.is-reduced .ggg-plot.is-blooming .ggg-plant,
.ggg.is-reduced .ggg-plot.is-planting .ggg-sprout { animation: ggg-fadein .45s ease both !important; }
.ggg.is-reduced .ggg-plot.is-picking .ggg-plant { animation: ggg-fadeout .4s ease both !important; }
.ggg.is-reduced .ggg-can { animation: ggg-fadein .3s ease both; }
.ggg.is-reduced .ggg-can i { display: none; }
.ggg.is-reduced .ggg-say { transition: opacity .2s ease; transform: none; }
.ggg.is-reduced .ggg-k-sunflower .ggg-headpop { transition: none; }
@keyframes ggg-fadeout { to { opacity: 0; } }

/* 果果花园宿主：所有选择器隔离在 ggh，不改网站视频与表单。 */
.ggh,.ggh-invite{--ggh-paper:#fffdf7;--ggh-ink:#2d4438;--ggh-muted:#617266;--ggh-line:#dce5d5;--ggh-tint:#edf3e7;--ggh-accent:#2d6651;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;font-size:18px;line-height:1.6;color:var(--ggh-ink);box-sizing:border-box}
.ggh *,.ggh-invite *{box-sizing:border-box}
.ggh[hidden],.ggh [hidden],.ggh-invite[hidden]{display:none!important}
.ggh{position:fixed;inset:0;z-index:88;display:flex;align-items:center;justify-content:center;padding:18px;background:#13251c99;overscroll-behavior:contain}
.ggh-sheet{width:min(1150px,100%);max-height:calc(100dvh - 36px);overflow:auto;border-radius:24px;background:var(--ggh-paper);box-shadow:0 25px 90px #12271d55;scrollbar-gutter:stable}
.ggh-head{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:17px 22px;background:var(--ggh-paper);border-bottom:1px solid var(--ggh-line)}
.ggh-head p{margin:0 0 3px;font-size:14px;color:var(--ggh-muted)}
.ggh-head h2{font-size:25px;line-height:1.35;margin:0;color:var(--ggh-ink)}
.ggh .ggh-button,.ggh-invite .ggh-button{font:inherit;line-height:1.4;min-height:48px;border:1px solid var(--ggh-line);border-radius:14px;background:var(--ggh-tint);color:var(--ggh-ink);padding:10px 16px;cursor:pointer;touch-action:manipulation;display:inline-flex;align-items:center;justify-content:center;text-align:center}
.ggh .ggh-primary,.ggh-invite .ggh-primary{background:var(--ggh-accent);border-color:var(--ggh-accent);color:#fff;font-weight:650}
.ggh button:focus-visible,.ggh-invite button:focus-visible,.ggh h3:focus-visible{outline:3px solid #e37d3e;outline-offset:3px}
.ggh-layout{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:18px;padding:18px}
.ggh-game{min-width:0;overflow:hidden;border-radius:20px;background:#fff8ef}
.ggh-companion{align-self:start;padding:20px 16px;background:var(--ggh-tint);border:1px solid var(--ggh-line);border-radius:20px;position:sticky;top:105px}
.ggh-companion h3{margin:10px 0;font-size:20px;line-height:1.5}
.ggh-companion p{margin:0;font-size:18px;line-height:1.8}
.ggh-companion .ggh-privacy{margin-top:26px;padding-top:15px;border-top:1px solid var(--ggh-line);font-size:14px;color:var(--ggh-muted)}
.ggh-pet-seat{height:180px;position:relative}
.ggh .gg-root.ggh-mounted-pet{position:relative!important;inset:auto!important;width:100%!important;height:180px!important;pointer-events:auto;z-index:1}
.ggh .ggh-mounted-pet .gg-dock{position:absolute!important;right:calc(50% - 120px)!important;bottom:-6px!important;transform:none!important;width:240px!important;height:200px!important}
.ggh .ggh-mounted-pet .gg-bubble,.ggh .ggh-mounted-pet .gg-panel,.ggh .ggh-mounted-pet .gg-quiet-toggle{display:none!important}
.ggh-notice{position:relative;z-index:6;padding:20px 22px;background:#f6ecd1;color:#53472a;border-bottom:1px solid #e6d8b9}
.ggh-notice h3{font-size:24px;line-height:1.5;margin:0 0 7px}
.ggh-notice p{margin:0 0 14px;font-size:18px}
.ggh-notice-actions{display:flex;gap:10px;flex-wrap:wrap}
.ggh-paused .ggh-game{opacity:.55;filter:saturate(.65)}
.ggh-task-state{margin:0;padding:0 22px 20px;color:var(--ggh-muted);font-size:16px;line-height:1.6}
.ggh-game .ggg-title,.ggh-game .ggg-close{display:none}
.ggh-game .ggg-top{justify-content:flex-end}
.ggh-game .ggg-cloud{min-height:48px}
.ggh-game .ggg.is-tiny .ggg-seeds{grid-template-columns:repeat(3,minmax(0,1fr))}
.ggh-game .ggg.is-tiny .ggg-seed{min-width:0;min-height:72px;flex-direction:column;gap:0;padding:4px}
.ggh-game .ggg.is-tiny .ggg-seed-art{width:28px;height:28px}
.ggh-game .ggg.is-tiny .ggg-actions{flex-direction:column}
.ggh-invite{display:flex;align-items:center;gap:13px;border:1px solid var(--ggh-line);background:var(--ggh-tint);border-radius:18px;padding:15px;text-align:left}
.ggh-invite>svg{width:76px;height:64px;flex:none}
.ggh-invite>div{flex:1;min-width:0}
.ggh-invite strong{font-size:20px;font-weight:700}
.ggh-invite p{font-size:18px;line-height:1.55;color:var(--ggh-muted);margin:3px 0 0}
.ggh-panel-invite{margin:10px;flex-shrink:0;flex-wrap:wrap;gap:8px 12px;padding:12px}
.ggh-panel-invite>svg{width:55px;height:52px}
.ggh-panel-invite .ggh-button{width:100%}
.ggh-run-invite{margin:20px 0;flex-wrap:wrap}
.ggh-run-invite .ggh-button{width:100%}
.ggh-inviting{animation:ggh-invite 1.1s ease-in-out 3}
@keyframes ggh-invite{50%{transform:translateY(-3px);box-shadow:0 8px 20px #668b5824}}
@media(min-width:1100px){
.ggh-game .ggg-main{display:grid;grid-template-columns:minmax(0,1fr) 172px;grid-template-rows:auto auto 1fr auto;gap:12px}
.ggh-game .ggg-top{grid-column:1/-1}
.ggh-game .ggg-scene{grid-column:1;grid-row:2/5;aspect-ratio:auto!important;height:520px;min-height:0!important}
.ggh-game .ggg-hint{grid-column:2;grid-row:2;text-align:left;min-height:54px}
.ggh-game .ggg-seeds{grid-column:2;grid-row:3;grid-template-columns:1fr;gap:6px;align-content:start}
.ggh-game .ggg-seed{min-height:48px;flex-direction:row;justify-content:flex-start;gap:10px;padding:5px 12px}
.ggh-game .ggg-seed-art{width:30px;height:30px}
.ggh-game .ggg-actions{grid-column:2;grid-row:4;flex-direction:column;gap:8px}
.ggh-game .ggg-btn{padding-left:10px;padding-right:10px}
.ggh-game .ggg-bouquet{flex-wrap:wrap;padding-top:9px;padding-bottom:9px;font-size:18px}
}
@media(max-width:1099px){.ggh-layout{grid-template-columns:minmax(0,1fr)}.ggh-companion{display:none}.ggh-game{max-width:590px;width:100%;margin:auto}}
@media(max-width:760px){.ggh{padding:6px}.ggh-sheet{max-height:calc(100dvh - 12px);border-radius:20px}.ggh-head{padding:12px 14px;gap:10px}.ggh-head h2{font-size:23px}.ggh-head p{font-size:18px}.ggh-head .ggh-button{padding:10px 12px;white-space:nowrap}.ggh-layout{padding:10px;gap:0}.ggh-notice{padding:17px 14px}.ggh-notice h3{font-size:23px}.ggh-notice-actions .ggh-button{flex:1}.ggh-task-state{padding:0 18px 20px;font-size:18px}.ggh-game .ggg{padding:10px}.ggh-invite strong{font-size:20px}.ggh-invite p{font-size:18px}}
html[data-theme="dark"] .ggh,html[data-theme="dark"] .ggh-invite{--ggh-paper:#242923;--ggh-ink:#f1f1e7;--ggh-muted:#c2cbbb;--ggh-line:#46503f;--ggh-tint:#303a2d;--ggh-accent:#37735c}
html[data-theme="dark"] .ggh .ggg{--ggg-cream:#272e25;--ggg-paper:#333c2e;--ggg-ink:#f4f0e5;--ggg-ink2:#d1d8c8;--ggg-line:#58624f;--ggg-teal-tint:#314e42;--ggg-teal-ink:#c1eadc}
html[data-theme="dark"] .ggh .ggg-seed[aria-checked="true"]{background:#4c3929}
html[data-theme="dark"] .ggh .ggg-notes li{background:#384330}
html[data-theme="dark"] .ggh .ggg-note-ic{background:#4a533e}
@media(prefers-reduced-motion:reduce){.ggh-inviting{animation:none}.ggh *{scroll-behavior:auto!important}}

.ggh .ggh-mounted-pet .gg-hit{pointer-events:none!important}
