:root {
  --primary: #ff4fd8;
  --secondary: #7cf7ff;
  --accent: #ffe66d;
  --bg: #050011;
  --glass: rgba(14, 7, 35, .48);
  --white: rgba(255, 255, 255, .95);
  --tiltX: 0deg;
  --tiltY: 0deg;
  --spin: 0deg;
}

* { box-sizing: border-box; }

html, body {
  width: 100%;
  min-height: 100%;
  margin: 0;
  overflow: hidden;
  background: radial-gradient(circle at 50% 50%, #170033 0%, #070016 45%, #010006 100%);
  color: var(--white);
  font-family: ui-rounded, "Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  touch-action: manipulation;
}

body.started .intro {
  opacity: 0;
  pointer-events: none;
  transform: scale(1.08);
}

#spaceCanvas {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100dvh;
  z-index: 0;
}

.aurora {
  position: fixed;
  width: min(76vw, 920px);
  height: min(76vw, 920px);
  border-radius: 999px;
  pointer-events: none;
  filter: blur(70px);
  opacity: .42;
  mix-blend-mode: screen;
  z-index: 1;
  animation: floatNebula 16s ease-in-out infinite;
}

.aurora-one {
  left: -18vw;
  top: -12vh;
  background: radial-gradient(circle, rgba(255, 79, 216, .72), transparent 65%);
}

.aurora-two {
  right: -20vw;
  bottom: -18vh;
  background: radial-gradient(circle, rgba(124, 247, 255, .55), transparent 66%);
  animation-duration: 19s;
  animation-direction: reverse;
}

.shooting-layer,
.universe {
  position: fixed;
  inset: 0;
  perspective: 820px;
  transform-style: preserve-3d;
  pointer-events: none;
  overflow: hidden;
  transition: transform 120ms linear;
  transform: rotateX(var(--tiltY)) rotateY(var(--tiltX)) rotateZ(calc(var(--spin) * .08));
}

.shooting-layer { z-index: 2; }
.universe { z-index: 3; }

.shooting-star {
  position: absolute;
  left: var(--left);
  top: var(--top);
  width: 140px;
  height: 2px;
  border-radius: 999px;
  background: linear-gradient(90deg, rgba(255,255,255,0), rgba(255,255,255,.95), rgba(124,247,255,.95));
  box-shadow: 0 0 18px rgba(124,247,255,.9);
  animation: shooting var(--duration) linear forwards;
}

.space-item {
  position: absolute;
  left: 50%;
  top: 50%;
  transform-style: preserve-3d;
  animation: flyToCamera var(--duration) linear forwards;
  will-change: transform, opacity, filter;
}

.love-message {
  min-width: max-content;
  padding: clamp(10px, 2.3vw, 20px) clamp(18px, 4vw, 42px);
  border: 1px solid rgba(255,255,255,.28);
  border-radius: 999px;
  color: #fff;
  font-size: clamp(1.2rem, 5vw, 4.2rem);
  font-weight: 900;
  text-align: center;
  text-shadow: 0 0 18px var(--primary), 0 0 42px rgba(124,247,255,.6);
  background: linear-gradient(115deg, rgba(255,79,216,.18), rgba(124,247,255,.14));
  box-shadow: 0 0 42px rgba(255,79,216,.32), inset 0 0 28px rgba(255,255,255,.1);
  backdrop-filter: blur(6px);
}

.space-photo {
  width: clamp(120px, 28vw, 260px);
  aspect-ratio: 4 / 5;
  padding: 9px;
  border-radius: 26px;
  background: linear-gradient(135deg, rgba(255,255,255,.95), rgba(255,255,255,.38));
  box-shadow: 0 0 42px rgba(255,79,216,.46), 0 0 70px rgba(124,247,255,.25);
}

.space-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 19px;
  display: block;
}

.planet,
.sticker,
.icon-float,
.heart-float {
  display: grid;
  place-items: center;
  width: clamp(60px, 14vw, 160px);
  height: clamp(60px, 14vw, 160px);
  border-radius: 50%;
  filter: drop-shadow(0 0 24px rgba(255,255,255,.55));
}

.planet img,
.sticker img,
.icon-float img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.heart-float {
  font-size: clamp(2rem, 9vw, 6rem);
  animation-name: flyToCamera, pulseGlow;
  animation-timing-function: linear, ease-in-out;
  animation-iteration-count: 1, infinite;
}

.experience {
  position: relative;
  z-index: 5;
  width: 100vw;
  height: 100dvh;
  pointer-events: none;
}

.intro {
  position: fixed;
  inset: 0;
  z-index: 10;
  display: grid;
  place-items: center;
  padding: 22px;
  background: radial-gradient(circle, rgba(255,79,216,.12), rgba(1,0,7,.78));
  transition: opacity .9s ease, transform .9s ease;
  pointer-events: auto;
}

.intro-card {
  width: min(92vw, 520px);
  padding: clamp(24px, 6vw, 48px);
  border: 1px solid rgba(255,255,255,.22);
  border-radius: 34px;
  text-align: center;
  background: linear-gradient(145deg, rgba(12, 6, 32, .76), rgba(255,255,255,.08));
  box-shadow: 0 30px 90px rgba(0,0,0,.55), inset 0 0 38px rgba(255,255,255,.08);
  backdrop-filter: blur(16px);
  animation: introIn 1.1s ease both;
}

.intro-heart {
  font-size: clamp(3.2rem, 15vw, 7rem);
  line-height: 1;
  animation: pulseGlow 2.2s ease-in-out infinite;
}

.intro h1,
.intro h2 {
  margin: 6px 0;
  line-height: 1;
  letter-spacing: -.05em;
}

.intro h1 {
  font-size: clamp(3rem, 13vw, 6.8rem);
  background: linear-gradient(90deg, #fff, var(--secondary), var(--primary), #fff);
  background-size: 300%;
  -webkit-background-clip: text;
  color: transparent;
  animation: shimmer 5s linear infinite;
}

.intro h2 {
  font-size: clamp(1.9rem, 8vw, 4rem);
  color: var(--accent);
  text-shadow: 0 0 22px rgba(255, 230, 109, .55);
}

.intro-small,
.intro-subtitle {
  margin: 10px 0;
  color: rgba(255,255,255,.78);
}

.intro-mode {
  display: inline-flex;
  margin: 12px 0 4px;
  padding: 7px 12px;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 999px;
  color: var(--accent);
  background: rgba(255,255,255,.07);
  font-weight: 900;
}

.primary-btn {
  margin-top: 18px;
  border: 0;
  border-radius: 999px;
  padding: 16px 34px;
  color: #19001e;
  font-weight: 900;
  font-size: 1.05rem;
  background: linear-gradient(90deg, var(--accent), var(--secondary), var(--primary));
  box-shadow: 0 0 36px rgba(255,79,216,.45);
  cursor: pointer;
}

.hud {
  position: fixed;
  left: max(14px, env(safe-area-inset-left));
  right: max(14px, env(safe-area-inset-right));
  top: max(14px, env(safe-area-inset-top));
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  pointer-events: none;
}

.brand {
  display: flex;
  align-items: center;
  gap: 10px;
  max-width: min(70vw, 680px);
  padding: 10px 14px;
  border: 1px solid rgba(255,255,255,.14);
  border-radius: 999px;
  background: rgba(7, 2, 20, .38);
  backdrop-filter: blur(10px);
  font-weight: 800;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.brand-dot {
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: var(--primary);
  box-shadow: 0 0 18px var(--primary);
  flex: 0 0 auto;
}

.controls {
  display: flex;
  gap: 10px;
  pointer-events: auto;
}

.round-btn {
  width: 46px;
  height: 46px;
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 50%;
  color: #fff;
  background: rgba(7, 2, 20, .42);
  backdrop-filter: blur(12px);
  box-shadow: 0 0 24px rgba(124,247,255,.18);
  cursor: pointer;
}

.letter-btn {
  font-size: 1.08rem;
  background: linear-gradient(145deg, rgba(255,79,216,.36), rgba(124,247,255,.16));
}

.palette-btn {
  background: linear-gradient(145deg, rgba(255,230,109,.42), rgba(255,79,216,.2));
}

.palette-panel {
  position: fixed;
  top: calc(max(14px, env(safe-area-inset-top)) + 58px);
  right: max(14px, env(safe-area-inset-right));
  z-index: 8;
  display: flex;
  gap: 9px;
  padding: 10px;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 999px;
  background: rgba(7, 2, 20, .54);
  box-shadow: 0 0 34px rgba(255,79,216,.18);
  backdrop-filter: blur(14px);
  pointer-events: auto;
}

.palette-panel[hidden] {
  display: none !important;
}

.swatch {
  width: 34px;
  height: 34px;
  border: 2px solid rgba(255,255,255,.42);
  border-radius: 50%;
  padding: 0;
  cursor: pointer;
  background: linear-gradient(135deg, var(--sw1), var(--sw2), var(--sw3));
  box-shadow: 0 0 16px rgba(255,255,255,.16);
}

.swatch.active {
  border-color: #fff;
  transform: scale(1.1);
  box-shadow: 0 0 24px var(--primary);
}

.swatch:nth-child(1) { --sw1: #ff4fd8; --sw2: #7cf7ff; --sw3: #ffe66d; }
.swatch:nth-child(2) { --sw1: #ff2f6d; --sw2: #ffb3c7; --sw3: #fff0f6; }
.swatch:nth-child(3) { --sw1: #8c35ff; --sw2: #35d6ff; --sw3: #ffffff; }
.swatch:nth-child(4) { --sw1: #ff9f1c; --sw2: #ffd166; --sw3: #fff3b0; }
.swatch:nth-child(5) { --sw1: #00f5d4; --sw2: #00bbf9; --sw3: #fee440; }

.counter-card {
  position: fixed;
  left: max(14px, env(safe-area-inset-left));
  bottom: max(14px, env(safe-area-inset-bottom));
  width: min(92vw, 430px);
  padding: 14px 16px;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 22px;
  background: rgba(7, 2, 20, .42);
  box-shadow: 0 0 30px rgba(255,79,216,.16);
  backdrop-filter: blur(12px);
  pointer-events: none;
}

.counter-card span {
  display: block;
  color: rgba(255,255,255,.68);
  font-size: .88rem;
}

.counter-card strong {
  display: block;
  margin-top: 3px;
  font-size: clamp(1rem, 4vw, 1.32rem);
}

.counter-card em {
  display: block;
  margin-top: 7px;
  color: rgba(255,255,255,.76);
  font-size: .86rem;
  font-style: normal;
  line-height: 1.35;
}

.letter-panel {
  position: fixed;
  right: max(14px, env(safe-area-inset-right));
  bottom: max(14px, env(safe-area-inset-bottom));
  width: min(92vw, 440px);
  max-height: min(55dvh, 460px);
  overflow: auto;
  padding: 22px;
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 28px;
  background: linear-gradient(145deg, rgba(20,8,45,.68), rgba(255,255,255,.08));
  box-shadow: 0 0 56px rgba(124,247,255,.16);
  backdrop-filter: blur(14px);
  opacity: 0;
  transform: translateY(22px);
  pointer-events: auto;
}

body.letter-visible .letter-panel {
  animation: letterReveal .8s ease forwards;
}

body.letter-visible .letter-btn {
  box-shadow: 0 0 28px rgba(255,79,216,.58), inset 0 0 18px rgba(255,255,255,.12);
}

.letter-panel h2 {
  margin: 0 0 12px;
}

.letter-panel p {
  margin: 0;
  line-height: 1.65;
  white-space: pre-line;
}

@media (max-width: 720px) {
  html, body { overflow: hidden; }
  .aurora { filter: blur(46px); opacity: .35; }
  .hud { top: max(10px, env(safe-area-inset-top)); }
  .brand { max-width: 58vw; font-size: .86rem; }
  .round-btn { width: 42px; height: 42px; }
  .palette-panel {
    left: 12px;
    right: 12px;
    justify-content: center;
    border-radius: 22px;
  }
  .counter-card {
    left: 12px;
    right: 12px;
    width: auto;
    bottom: max(12px, env(safe-area-inset-bottom));
  }
  .letter-panel {
    left: 12px;
    right: 12px;
    width: auto;
    bottom: calc(max(12px, env(safe-area-inset-bottom)) + 82px);
    max-height: 42dvh;
  }
  .space-photo { width: clamp(104px, 42vw, 190px); }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
  }
}


/* LOVEPAGE AI V14 - Bloom Garden integration */
.bloom-garden-dedication {
  background:
    radial-gradient(circle at 18% 18%, rgba(244,114,182,.24), transparent 30%),
    radial-gradient(circle at 82% 82%, rgba(34,197,94,.24), transparent 34%),
    radial-gradient(circle at 50% 50%, #170033 0%, #071512 48%, #020306 100%);
}
.bloom-garden-dedication::before {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background:
    radial-gradient(circle at 8% 20%, rgba(244,114,182,.24) 0 2px, transparent 3px),
    radial-gradient(circle at 76% 30%, rgba(254,240,138,.22) 0 2px, transparent 3px),
    radial-gradient(circle at 28% 76%, rgba(34,197,94,.18) 0 2px, transparent 3px),
    linear-gradient(180deg, rgba(255,255,255,.03), transparent 40%, rgba(244,114,182,.035));
  background-size: 140px 140px, 180px 180px, 220px 220px, auto;
  mix-blend-mode: screen;
  opacity: .72;
}
.bloom-orb {
  position: fixed;
  width: min(42vw, 520px);
  height: min(42vw, 520px);
  border-radius: 50%;
  filter: blur(52px);
  opacity: .33;
  z-index: 1;
  pointer-events: none;
  animation: floatNebula 18s ease-in-out infinite;
}
.bloom-orb-one { left: 10vw; bottom: 4vh; background: rgba(34,197,94,.55); }
.bloom-orb-two { right: 8vw; top: 18vh; background: rgba(244,114,182,.55); animation-direction: reverse; }
.bloom-intro-card {
  border-color: rgba(244,114,182,.34);
  box-shadow: 0 0 80px rgba(244,114,182,.22), inset 0 0 44px rgba(34,197,94,.08);
}
.intro-link {
  display: inline-flex;
  margin-top: 14px;
  color: rgba(255,255,255,.86);
  text-decoration: none;
  font-weight: 800;
  border-bottom: 1px solid rgba(255,255,255,.38);
}
.intro-link:hover { color: var(--accent); }
.round-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  font-weight: 900;
}
.share-btn { background: linear-gradient(145deg, rgba(34,197,94,.40), rgba(244,114,182,.18)); }
.create-btn { background: linear-gradient(145deg, rgba(254,240,138,.40), rgba(34,197,94,.20)); }
.bloom-counter-card, .bloom-letter-panel {
  border-color: rgba(244,114,182,.28);
  box-shadow: 0 0 44px rgba(34,197,94,.14), 0 0 64px rgba(244,114,182,.10);
}
.letter-actions { margin-top: 16px; }
.letter-actions a {
  display: inline-flex;
  padding: 10px 14px;
  border-radius: 999px;
  text-decoration: none;
  font-weight: 900;
  color: #170033;
  background: linear-gradient(90deg, var(--accent), var(--secondary));
}
@media (max-width: 720px) {
  .controls { gap: 7px; }
  .brand { max-width: 44vw; }
  .intro-card { width: min(92vw, 380px); padding: 24px 18px; }
  .round-btn { width: 39px; height: 39px; }
}


/* LOVEPAGE AI V15 - Bloom Garden admin controlled effects */
body.no-3d .shooting-layer,
body.no-3d .universe {
  perspective: none;
  transform: none !important;
}
body.no-3d .space-item {
  animation-name: bloomFloat2D !important;
  animation-duration: calc(var(--duration) * .82) !important;
}
body.no-3d .planet,
body.no-3d .sticker,
body.no-3d .icon-float {
  display: none;
}
body.no-3d .space-photo,
body.no-3d .love-message {
  transform: none;
  box-shadow: 0 0 26px rgba(244,114,182,.28), 0 0 40px rgba(34,197,94,.16);
}
.round-btn.disabled,
.round-btn[aria-disabled="true"] {
  opacity: .45;
  cursor: not-allowed;
  filter: grayscale(.35);
}
@keyframes bloomFloat2D {
  from {
    opacity: 0;
    transform: translate3d(var(--x), calc(var(--y) + 18vh), 0) rotateZ(var(--r)) scale(.72);
    filter: blur(8px);
  }
  12% { opacity: 1; filter: blur(0); }
  72% { opacity: 1; }
  to {
    opacity: 0;
    transform: translate3d(calc(var(--x) * .92), calc(var(--y) - 22vh), 0) rotateZ(calc(var(--r) + 12deg)) scale(1.05);
    filter: blur(2px);
  }
}

/* LOVEPAGE AI V17 - Editor público Bloom Garden */
.secondary-edit{margin-top:12px;background:linear-gradient(135deg,rgba(255,255,255,.18),rgba(124,247,255,.14));border:1px solid rgba(255,255,255,.28);color:#fff!important}.edit-btn{background:linear-gradient(145deg,rgba(124,247,255,.36),rgba(244,114,182,.18))}.bloom-visitor-editor{position:fixed;inset:0;z-index:80;pointer-events:none}.bloom-visitor-editor[aria-hidden="true"]{display:none}.bloom-visitor-editor[aria-hidden="false"]{display:block;pointer-events:auto}.editor-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.58);backdrop-filter:blur(10px)}.editor-card{position:absolute;right:16px;top:16px;bottom:16px;width:min(520px,calc(100vw - 32px));overflow:auto;border:1px solid rgba(255,255,255,.24);border-radius:28px;background:linear-gradient(145deg,rgba(13,6,35,.94),rgba(11,20,31,.92));box-shadow:0 30px 100px rgba(0,0,0,.66),0 0 70px rgba(244,114,182,.16);padding:22px;color:#fff}.editor-close{position:sticky;top:0;float:right;width:38px;height:38px;border-radius:50%;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.09);color:#fff;font-size:1.4rem}.editor-badge{display:inline-flex;margin-bottom:8px;padding:7px 10px;border-radius:999px;background:linear-gradient(135deg,rgba(34,197,94,.26),rgba(244,114,182,.22));font-weight:950;color:#f0fdf4;border:1px solid rgba(255,255,255,.20)}.editor-card h2{margin:4px 0 8px;font-size:clamp(1.5rem,4vw,2.15rem)}.editor-card p{color:rgba(255,255,255,.76);line-height:1.55}.editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.editor-card label{display:grid;gap:7px;margin:12px 0;color:rgba(255,255,255,.88);font-weight:800}.editor-input{width:100%;border:1px solid rgba(255,255,255,.20);border-radius:16px;background:rgba(255,255,255,.08);color:#fff;padding:12px 13px;outline:0}.editor-input:focus{border-color:rgba(124,247,255,.70);box-shadow:0 0 0 4px rgba(124,247,255,.10)}.editor-input::placeholder{color:rgba(255,255,255,.48)}.editor-photos{margin:16px 0;padding:14px;border-radius:22px;background:rgba(255,255,255,.06);border:1px dashed rgba(244,114,182,.36)}.editor-photos h3{margin:0 0 8px}.editor-upload{padding:12px 0;border-bottom:1px solid rgba(255,255,255,.08)}.editor-upload:last-child{border-bottom:0}.editor-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}.editor-actions .primary-btn{pointer-events:auto}.editor-open .experience{filter:blur(1px)}@media(max-width:720px){.editor-card{left:10px;right:10px;top:10px;bottom:10px;width:auto;border-radius:22px;padding:18px}.editor-grid,.editor-actions{grid-template-columns:1fr}.secondary-edit{width:100%;justify-content:center}}

/* V18 public Bloom Garden editor improvements */
.bloom-edit-dock{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:40;display:flex;align-items:center;gap:10px;padding:10px;border:1px solid rgba(255,255,255,.20);border-radius:999px;background:linear-gradient(135deg,rgba(18,8,42,.78),rgba(10,25,28,.76));backdrop-filter:blur(18px);box-shadow:0 25px 80px rgba(0,0,0,.42),0 0 55px rgba(244,114,182,.22)}
.bloom-edit-dock a,.bloom-edit-dock button{border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.08);color:#fff;border-radius:999px;padding:11px 15px;font-weight:950;text-decoration:none;white-space:nowrap;box-shadow:none}.bloom-edit-dock .dock-main{background:linear-gradient(135deg,#f472b6,#22d3ee);color:#07121a;box-shadow:0 0 28px rgba(244,114,182,.30);animation:bloomDockPulse 2.4s ease-in-out infinite}.bloom-edit-dock a:hover,.bloom-edit-dock button:hover{transform:translateY(-2px);border-color:rgba(124,247,255,.55)}@keyframes bloomDockPulse{0%,100%{box-shadow:0 0 24px rgba(244,114,182,.30)}50%{box-shadow:0 0 44px rgba(34,211,238,.42)}}
.bloom-intro-card{box-shadow:0 30px 120px rgba(0,0,0,.50),0 0 80px rgba(244,114,182,.20),inset 0 0 0 1px rgba(255,255,255,.08)!important}.bloom-intro-card:after{content:"Editable por visitantes · gratis 24h";position:absolute;left:50%;top:-18px;transform:translateX(-50%);padding:8px 14px;border-radius:999px;background:linear-gradient(135deg,#22c55e,#f472b6);color:#06130e;font-size:.82rem;font-weight:1000;white-space:nowrap;box-shadow:0 12px 38px rgba(34,197,94,.22)}
.editor-card{border-color:rgba(244,114,182,.42)!important}.editor-card:before{content:"";position:fixed;right:0;top:0;width:260px;height:260px;border-radius:50%;background:radial-gradient(circle,rgba(244,114,182,.22),transparent 68%);pointer-events:none}.editor-badge{animation:bloomBadgeGlow 3s ease-in-out infinite}@keyframes bloomBadgeGlow{50%{box-shadow:0 0 28px rgba(34,197,94,.25)}}.editor-live-preview{margin:16px 0;padding:14px;border-radius:20px;border:1px solid rgba(124,247,255,.30);background:linear-gradient(135deg,rgba(124,247,255,.10),rgba(244,114,182,.10))}.editor-live-preview b{display:block;color:#a7fff6;margin-bottom:4px}.editor-live-preview span{color:rgba(255,255,255,.76)}.editor-preview-photos{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.editor-preview-photos img{width:68px;height:68px;border-radius:16px;object-fit:cover;border:1px solid rgba(255,255,255,.22);box-shadow:0 10px 25px rgba(0,0,0,.24)}.editor-upload{border-radius:16px;padding:12px!important;background:rgba(255,255,255,.035);margin-bottom:10px}.editor-actions .primary-btn:first-child{background:linear-gradient(135deg,#22c55e,#14b8a6);color:#06130e!important}.editor-card input[type=file]{cursor:pointer}.editor-card input[type=file]::file-selector-button{border:0;border-radius:12px;background:linear-gradient(135deg,#7c5cff,#f472b6);color:#fff;font-weight:900;padding:9px 12px;margin-right:10px}
@media(max-width:760px){.bloom-edit-dock{left:10px;right:10px;bottom:10px;transform:none;border-radius:22px;display:grid;grid-template-columns:1fr 1fr}.bloom-edit-dock .dock-main{grid-column:1/-1}.bloom-edit-dock a,.bloom-edit-dock button{justify-content:center;text-align:center}.bloom-intro-card:after{font-size:.72rem;top:-14px}.editor-card{padding-bottom:120px!important}}
.intro-card{position:relative}


/* V75: icono Lottie carta de amor controlado desde panel admin */
.angelboy-love-icon-container{margin:0 auto 8px;filter:drop-shadow(0 0 18px rgba(244,114,182,.45));pointer-events:none;z-index:8;position:relative;display:grid;place-items:center;animation:loveIconFloat 4.6s ease-in-out infinite}
.angelboy-love-icon-container svg{width:100%!important;height:100%!important;display:block}
.angelboy-love-icon-container.icon-position-hud{position:fixed;left:max(22px,env(safe-area-inset-left));top:74px;margin:0;z-index:36;width:min(var(--iconSize,120px),22vw);height:min(var(--iconSize,120px),22vw)}
.angelboy-love-icon-container.icon-position-corner{position:fixed;right:max(18px,env(safe-area-inset-right));bottom:max(92px,env(safe-area-inset-bottom));margin:0;z-index:36;width:min(var(--iconSize,120px),24vw);height:min(var(--iconSize,120px),24vw)}
@keyframes loveIconFloat{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-10px) scale(1.035)}}
@media(max-width:640px){.angelboy-love-icon-container.icon-position-hud{top:82px;left:14px}.angelboy-love-icon-container.icon-position-corner{right:12px;bottom:86px}}

/* V77: icono carta de amor estilo LottieFiles con respaldo CSS visible */
.angelboy-love-icon-container{isolation:isolate;min-width:72px;min-height:72px}.angelboy-love-icon-container svg{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;z-index:3!important}.angelboy-love-icon-container.is-lottie-ready .ab-love-css-icon-v77{opacity:0}.angelboy-love-icon-container .ab-love-css-icon-v77{position:absolute;inset:0;display:block;z-index:2;transition:opacity .25s ease;filter:drop-shadow(0 12px 24px rgba(255,79,216,.28));animation:abIconFloat77 3.2s ease-in-out infinite}.angelboy-love-icon-container .ab-envelope{position:absolute;left:18%;right:18%;bottom:22%;height:40%;border:5px solid #241638;border-radius:14px;background:linear-gradient(180deg,#ffdce8,#ff9dbc);box-shadow:0 0 30px rgba(255,79,216,.22)}.angelboy-love-icon-container .ab-envelope:before,.angelboy-love-icon-container .ab-envelope:after{content:"";position:absolute;inset:-5px;border-radius:14px}.angelboy-love-icon-container .ab-envelope:before{clip-path:polygon(0 0,50% 58%,100% 0);background:#ffc0d3;border-top:5px solid #241638}.angelboy-love-icon-container .ab-envelope:after{clip-path:polygon(0 100%,50% 34%,100% 100%);background:#ffe8f0;border-bottom:5px solid #241638}.angelboy-love-icon-container .ab-envelope i{position:absolute;left:0;right:0;top:0;bottom:0;clip-path:polygon(0 0,50% 58%,100% 0,100% 14%,50% 70%,0 14%);background:rgba(255,255,255,.24)}.angelboy-love-icon-container .ab-letter{position:absolute;left:31%;right:31%;top:20%;height:42%;border:5px solid #241638;border-radius:12px;background:#fff7fb;animation:abLetterSlide77 2.4s ease-in-out infinite}.angelboy-love-icon-container .ab-letter:before,.angelboy-love-icon-container .ab-letter:after{content:"";position:absolute;left:18%;height:5px;border-radius:999px;background:#f65394}.angelboy-love-icon-container .ab-letter:before{right:18%;top:34%}.angelboy-love-icon-container .ab-letter:after{right:32%;top:55%}.angelboy-love-icon-container .ab-heart{position:absolute;left:50%;top:26%;width:30px;height:30px;background:#f65394;transform:translateX(-50%) rotate(45deg);border:5px solid #241638;border-left:0;border-top:0;animation:abHeartBeat77 1.4s ease-in-out infinite;z-index:4}.angelboy-love-icon-container .ab-heart:before,.angelboy-love-icon-container .ab-heart:after{content:"";position:absolute;width:30px;height:30px;border-radius:50%;background:#f65394;border:5px solid #241638}.angelboy-love-icon-container .ab-heart:before{left:-18px;top:0;border-right:0}.angelboy-love-icon-container .ab-heart:after{left:0;top:-18px;border-bottom:0}.angelboy-love-icon-container .ab-spark{position:absolute;width:9px;height:9px;border-radius:50%;background:#ffe66d;box-shadow:0 0 16px #ffe66d;animation:abSpark77 1.8s ease-in-out infinite}.angelboy-love-icon-container .ab-s1{left:18%;top:20%}.angelboy-love-icon-container .ab-s2{right:17%;top:24%;animation-delay:.55s}.angelboy-love-icon-container .ab-love-css-icon-v77:after{content:"";position:absolute;left:50%;bottom:10%;width:58%;height:12%;border-radius:50%;background:rgba(35,22,56,.24);transform:translateX(-50%);filter:blur(5px)}@keyframes abIconFloat77{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-7px) scale(1.035)}}@keyframes abLetterSlide77{0%,100%{transform:translateY(18px)}45%,68%{transform:translateY(-8px)}}@keyframes abHeartBeat77{0%,100%{transform:translateX(-50%) rotate(45deg) scale(.92)}45%{transform:translateX(-50%) rotate(45deg) scale(1.15)}}@keyframes abSpark77{0%,100%{opacity:.25;transform:scale(.6)}50%{opacity:1;transform:scale(1.45)}}


/* V137 - Bloom Garden carta/notificación + composición premium administrable */
.bloom-notification{
  position:fixed;right:max(18px,env(safe-area-inset-right));bottom:max(92px,env(safe-area-inset-bottom));z-index:46;width:min(430px,calc(100vw - 28px));display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:center;padding:16px 16px 16px 14px;border:1px solid rgba(255,255,255,.24);border-radius:26px;background:linear-gradient(145deg,rgba(18,8,42,.88),rgba(10,35,34,.82));box-shadow:0 30px 90px rgba(0,0,0,.55),0 0 70px rgba(244,114,182,.24),inset 0 1px 0 rgba(255,255,255,.12);backdrop-filter:blur(22px);overflow:hidden;opacity:0;transform:translateY(18px) scale(.96);pointer-events:none;transition:opacity .28s ease,transform .28s cubic-bezier(.2,1,.2,1);cursor:pointer}
.bloom-notification.is-visible{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}.bloom-notification[hidden]{display:none}.bloom-note-shine{position:absolute;inset:-40%;background:conic-gradient(from 180deg,transparent,rgba(244,114,182,.18),transparent,rgba(34,211,238,.16),transparent);animation:bloomNoteSpin 8s linear infinite;pointer-events:none}.bloom-note-icon{position:relative;display:grid;place-items:center;width:58px;height:58px;border-radius:21px;background:linear-gradient(135deg,var(--accent),var(--secondary),var(--primary));box-shadow:0 0 34px rgba(244,114,182,.35);font-size:30px;animation:bloomNotePulse 2.2s ease-in-out infinite}.bloom-note-copy{position:relative;min-width:0}.bloom-note-label{display:inline-flex;margin-bottom:3px;color:#bff9ff;font-weight:950;font-size:.76rem;letter-spacing:.08em;text-transform:uppercase}.bloom-note-copy strong{display:block;color:#fff;font-size:1.05rem;line-height:1.1;text-shadow:0 0 18px rgba(244,114,182,.42)}.bloom-note-copy p{margin:5px 0 0;color:rgba(255,255,255,.78);font-size:.9rem;line-height:1.42;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.bloom-note-open{position:relative;grid-column:1/-1;border:0;border-radius:999px;background:linear-gradient(90deg,var(--accent),var(--secondary));color:#071512;font-weight:1000;padding:11px 14px;box-shadow:0 0 28px rgba(34,211,238,.22);cursor:pointer}.bloom-note-close{position:absolute;right:10px;top:10px;z-index:2;width:28px;height:28px;border:1px solid rgba(255,255,255,.20);border-radius:50%;background:rgba(255,255,255,.08);color:#fff;font-weight:900;cursor:pointer}.bloom-letter-panel{max-width:min(720px,calc(100vw - 28px));background:linear-gradient(145deg,rgba(18,7,42,.90),rgba(10,34,34,.84));backdrop-filter:blur(24px);border:1px solid rgba(255,255,255,.24)}.letter-visible .bloom-letter-panel{animation:bloomLetterPop .45s cubic-bezier(.2,1,.2,1) both}.bloom-counter-card{backdrop-filter:blur(20px)}.hud{backdrop-filter:blur(14px)}.intro-subtitle{max-width:36rem;margin-left:auto;margin-right:auto;line-height:1.55}.space-photo{position:relative}.space-photo:before{content:"";position:absolute;inset:-7px;border-radius:32px;background:linear-gradient(135deg,rgba(244,114,182,.55),rgba(34,211,238,.40),rgba(254,240,138,.30));z-index:-1;filter:blur(12px);opacity:.72}.round-btn{transition:transform .2s ease,filter .2s ease,box-shadow .2s ease}.round-btn:hover{transform:translateY(-2px) scale(1.05);filter:drop-shadow(0 0 16px rgba(124,247,255,.42))}@keyframes bloomNoteSpin{to{transform:rotate(360deg)}}@keyframes bloomNotePulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}@keyframes bloomLetterPop{from{transform:translate(-50%,20px) scale(.96);opacity:0}to{transform:translate(-50%,0) scale(1);opacity:1}}
@media(max-width:720px){.bloom-notification{left:12px;right:12px;bottom:calc(max(12px,env(safe-area-inset-bottom)) + 106px);width:auto;border-radius:22px;padding:14px}.bloom-note-icon{width:50px;height:50px;font-size:26px}.bloom-note-copy p{-webkit-line-clamp:3}.bloom-letter-panel{left:12px!important;right:12px!important;width:auto!important;bottom:calc(max(12px,env(safe-area-inset-bottom)) + 96px)!important;max-height:48dvh!important}.intro-subtitle{font-size:.94rem}.hud{gap:8px}.controls{justify-content:flex-end}.bloom-counter-card{left:12px;right:12px;width:auto}}
