:root {
  --ink: #30283d;
  --muted: #7f748a;
  --paper: #fffafc;
  --pink: #f2b8cf;
  --pink-deep: #bd668b;
  --blue: #bce5f2;
  --lavender: #d9cff7;
  --yellow: #f8e7a9;
  --green: #cfe8d3;
  --shadow: 0 20px 60px rgba(78, 56, 91, .12);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; overflow-x: hidden; color: var(--ink); background: #fff8fb; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
button, input, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
button { color: inherit; }
.skip-link { position: fixed; z-index: 1000; top: 10px; left: 10px; padding: 10px 14px; background: white; border-radius: 9px; transform: translateY(-150%); }
.skip-link:focus { transform: none; }
.page-nav { position: fixed; z-index: 80; inset: 0 0 auto; height: 58px; padding: 0 clamp(18px, 4vw, 58px); display: flex; align-items: center; justify-content: space-between; color: rgba(255,255,255,.72); mix-blend-mode: difference; font-size: .64rem; letter-spacing: .18em; text-transform: uppercase; pointer-events: none; }
.page-nav a { color: inherit; text-decoration: none; pointer-events: auto; }
.party-experience { min-height: 100vh; }
.party-hero { min-height: 100svh; position: relative; isolation: isolate; overflow: hidden; background: #fff8fb; }
.confetti-canvas { position: fixed; z-index: 70; inset: 0; width: 100%; height: 100%; pointer-events: none; }

/* LightSwitch */
body:has(.party-experience:not(.is-lit)) { overflow: hidden; }
.night-screen { position: fixed; z-index: 40; inset: 0; min-height: 100svh; display: grid; place-items: center; background: radial-gradient(circle at 50% 45%, #242438 0, #11111d 46%, #090911 100%); color: #f8f3ff; transition: opacity 1.1s ease, visibility 1.1s; }
.party-experience.is-lit .night-screen { opacity: 0; visibility: hidden; pointer-events: none; }
.switch-intro { display: grid; justify-items: center; text-align: center; padding: 30px; }
.quiet-mark { color: #d9cff7; font-size: 1.1rem; filter: drop-shadow(0 0 12px #d9cff7); animation: twinkle 2.5s ease-in-out infinite; }
.switch-intro > p { margin: 18px 0 35px; font: 400 clamp(1.35rem, 3vw, 2.2rem)/1.3 Georgia, serif; }
.light-switch { padding: 0; display: grid; justify-items: center; gap: 12px; border: 0; color: #a9a5bd; background: none; cursor: pointer; }
.switch-plate { width: 92px; height: 126px; padding: 19px; display: grid; place-items: center; border: 1px solid rgba(255,255,255,.15); border-radius: 20px; background: linear-gradient(145deg, #29293a, #171724); box-shadow: inset 0 1px 0 rgba(255,255,255,.12), 0 18px 45px rgba(0,0,0,.35); }
.switch-toggle { width: 44px; height: 72px; padding: 5px; display: flex; align-items: flex-end; border-radius: 9px; background: #0f0f18; box-shadow: inset 0 3px 9px #000; }
.switch-toggle i { width: 100%; height: 31px; border-radius: 6px; background: linear-gradient(#5d5b70, #333242); box-shadow: 0 3px 8px #000; transition: transform .35s cubic-bezier(.22,1,.36,1), background .35s; }
.light-switch[aria-checked="true"] .switch-toggle i { transform: translateY(-31px); background: linear-gradient(#fff5ce, #e3c57d); }
.light-switch small, .switch-hint { font-size: .61rem; letter-spacing: .18em; text-transform: uppercase; }
.switch-hint { margin-top: 22px; color: #706d82; }
.night-stars i { position: absolute; width: 2px; height: 2px; border-radius: 50%; background: white; box-shadow: 0 0 10px white; animation: twinkle 2.8s infinite; }
.night-stars i:nth-child(1) { top: 21%; left: 18%; }.night-stars i:nth-child(2) { top: 32%; right: 17%; animation-delay: .7s }.night-stars i:nth-child(3) { bottom: 24%; left: 29%; animation-delay: 1.2s }.night-stars i:nth-child(4) { bottom: 17%; right: 28%; animation-delay: .4s }.night-stars i:nth-child(5) { top: 16%; left: 62%; animation-delay: 1.8s }

/* PartySection */
.party-room { min-height: 100svh; padding: 150px clamp(20px, 5vw, 70px) 90px; display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap: 22px; text-align: center; opacity: 0; background: radial-gradient(circle at 50% 15%, #fff 0, #fff8fb 34%, #fdf7ff 72%); transition: opacity .9s .35s; }
.party-experience.is-lit .party-room { opacity: 1; }
.hero-copy { width: min(850px, 100%); max-width: 850px; margin: 0 auto; position: relative; z-index: 4; }
.eyebrow { margin: 0 0 13px; color: var(--pink-deep); font-size: .66rem; font-weight: 650; letter-spacing: .2em; text-transform: uppercase; }
.hero-copy h1, .section-heading h2, .modal-card h2 { margin: 0; font-family: Georgia, "Times New Roman", serif; font-weight: 400; letter-spacing: -.045em; line-height: .98; }
.hero-copy h1 { font-size: clamp(3rem, 7vw, 6.4rem); }
.hero-copy h1 em { color: var(--pink-deep); font-weight: 400; }
.hero-copy > p:last-child { max-width: 560px; margin: 22px auto 0; color: var(--muted); line-height: 1.65; }

/* Minimal music control for the surprise scene */
.party-audio-player { position: fixed; z-index: 75; right: clamp(14px, 2vw, 26px); bottom: clamp(14px, 2vw, 26px); width: 174px; min-height: 52px; padding: 8px 12px 8px 8px; display: grid; grid-template-columns: 38px 18px 1fr; gap: 7px; align-items: center; border: 1px solid rgba(177, 111, 142, .18); border-radius: 999px; opacity: 0; transform: translateY(12px); pointer-events: none; background: rgba(255, 252, 253, .84); box-shadow: 0 15px 40px rgba(90, 63, 82, .12); backdrop-filter: blur(16px); transition: opacity .45s, transform .45s; }
.party-experience.is-lit .party-audio-player { opacity: 1; transform: none; pointer-events: auto; }
.party-audio-toggle { width: 38px; height: 38px; display: grid; place-items: center; padding: 0 0 0 2px; border: 1px solid rgba(183, 105, 141, .22); border-radius: 50%; color: #9c5577; background: linear-gradient(145deg, #fff, #f8e6ee); cursor: pointer; box-shadow: 0 5px 13px rgba(127, 78, 101, .1); }
.party-audio-toggle.is-playing { padding-left: 0; }
.party-audio-mark { color: #c27798; font: 1rem Georgia, serif; }
.party-volume { width: 100%; height: 3px; accent-color: #bd668b; cursor: pointer; }
.string-lights { position: absolute; z-index: 3; top: 50px; left: 4%; right: 4%; height: 45px; display: flex; justify-content: space-around; border-top: 1px solid #8c8198; border-radius: 50%; }
.string-lights i { width: 10px; height: 15px; margin-top: -2px; border-radius: 50% 50% 45% 45%; background: #ffe89d; box-shadow: 0 0 18px 5px rgba(255,223,126,.5); animation: glow 2s ease-in-out infinite alternate; }
.string-lights i:nth-child(3n) { background: #c7eafa; box-shadow: 0 0 18px 5px rgba(166,222,247,.5); animation-delay: .4s }.string-lights i:nth-child(3n + 2) { background: #f7c3db; box-shadow: 0 0 18px 5px rgba(247,195,219,.5); animation-delay: .8s }
.bunting { position: absolute; z-index: 2; top: 85px; left: 12%; right: 12%; display: flex; justify-content: space-around; border-top: 1px solid rgba(94,74,106,.28); }
.bunting i { width: clamp(28px, 4vw, 54px); height: clamp(35px, 5vw, 66px); clip-path: polygon(0 0,100% 0,50% 100%); background: var(--pink); transform-origin: top; animation: sway 4s ease-in-out infinite alternate; }.bunting i:nth-child(2n) { background: var(--blue); animation-delay: -.8s }.bunting i:nth-child(3n) { background: var(--lavender); animation-delay: -1.6s }.bunting i:nth-child(4n) { background: var(--yellow); }
.balloon { position: absolute; z-index: 1; width: 85px; height: 108px; border-radius: 50%; opacity: .68; animation: float 5s ease-in-out infinite; }.balloon::after { content:""; position:absolute; left: 50%; top: 100%; width: 1px; height: 140px; background: rgba(84,70,93,.25); }.balloon i { position:absolute; bottom:-7px; left:calc(50% - 7px); border:7px solid transparent; border-bottom-color: inherit; }.balloon-left { left: 5%; bottom: 12%; color: #b7deed; background: radial-gradient(circle at 35% 28%, white, #b7deed 18%, #80c6df); }.balloon-right { right: 6%; top: 27%; color: #edb4ce; background: radial-gradient(circle at 35% 28%, white, #edb4ce 18%, #d987ac); animation-delay: -2s; }
.party-sparkles i { position: absolute; color: #d6b65e; font-style: normal; animation: twinkle 2.4s infinite; }.party-sparkles i:nth-child(1){left:8%;top:30%}.party-sparkles i:nth-child(2){left:43%;top:22%;font-size:2rem}.party-sparkles i:nth-child(3){right:13%;bottom:20%}.party-sparkles i:nth-child(4){right:39%;top:18%;animation-delay:1s}.party-sparkles i:nth-child(5){left:28%;bottom:14%;font-size:2rem}

/* BirthdayCake + Candle */
.cake-scene { position: relative; z-index: 5; width: min(680px, 100%); min-height: 500px; margin: 0 auto; display: grid; place-items: center; align-content: center; }
.cake-instruction, .wish-made { margin: 0 0 27px; color: #7b677e; font: italic 1.25rem Georgia, serif; text-align: center; }
.cake-instruction { width: min(420px, 88vw); display: flex; align-items: center; justify-content: center; gap: 14px; }
.cake-instruction::before, .cake-instruction::after { content: ""; flex: 1; height: 1px; background: linear-gradient(90deg, transparent, rgba(189,102,139,.38)); }
.cake-instruction::after { background: linear-gradient(90deg, rgba(189,102,139,.38), transparent); }
.birthday-cake { position: relative; width: min(430px, 88vw); height: 365px; padding: 0; border: 0; background: none; cursor: pointer; filter: drop-shadow(0 30px 28px rgba(101,70,99,.16)); transition: transform .3s; }
.birthday-cake:hover { transform: translateY(-5px); }.birthday-cake:focus-visible { outline: 3px solid rgba(189,102,139,.35); outline-offset: 12px; border-radius: 20px; }
.cake-layer, .cake-top, .cake-plate { position: absolute; left: 50%; transform: translateX(-50%); display: block; }
.cake-layer, .cake-top { border: 1px solid rgba(151,91,120,.12); background: linear-gradient(90deg,#eab4ca 0,#f8d8e5 10%,#fff4f8 28% 72%,#f7d1df 90%,#e5aac3 100%); box-shadow: inset 0 -15px 0 rgba(193,107,145,.11), inset 0 2px 0 rgba(255,255,255,.8), 0 11px 19px rgba(116,76,99,.08); }
.cake-layer::before, .cake-top::before { content: ""; position: absolute; z-index: 2; left: -1px; right: -1px; top: -18px; height: 35px; border: 1px solid rgba(151,91,120,.1); border-radius: 50%; background: linear-gradient(180deg,#fff 0,#fff8fb 42%,#f8dce7 100%); box-shadow: inset 0 5px 9px rgba(255,255,255,.9); }
.cake-layer::after { content: ""; position: absolute; left: 8%; right: 8%; bottom: 13px; height: 5px; border-radius: 999px; background: repeating-linear-gradient(90deg,#fff 0 10px,#e9b5ca 10px 17px); opacity: .75; }
.cake-layer-one { z-index: 3; bottom: 91px; width: 72%; height: 98px; border-radius: 17px 17px 30px 30px; }
.cake-layer-two { z-index: 2; bottom: 22px; width: 94%; height: 112px; border-radius: 19px 19px 34px 34px; }
.cake-top { z-index: 4; bottom: 166px; width: 52%; height: 76px; border-radius: 15px 15px 25px 25px; }
.cake-top i { position: relative; z-index: 3; top: 52px; display: inline-block; width: 18px; height: 19px; margin: 0 3px; border-radius: 0 0 50% 50%; background: #fff9fb; box-shadow: 0 5px 5px rgba(151,91,120,.05); }
.cake-top i:nth-child(2), .cake-top i:nth-child(4) { height: 27px; }
.cake-plate { z-index: 1; bottom: 1px; width: 100%; height: 44px; border: 1px solid rgba(82,151,178,.12); border-radius: 50%; background: linear-gradient(180deg,#edfaff,#b7deeb 55%,#9bcbdc); box-shadow: 0 12px 20px rgba(78,137,159,.12), inset 0 4px 0 rgba(255,255,255,.8); }
.candles { position: absolute; z-index: 7; left: 50%; top: 35px; width: 150px; transform: translateX(-50%); display: flex; justify-content: space-around; align-items: flex-end; }
.candle { position: relative; width: 12px; height: 67px; display: block; border: 1px solid rgba(74,137,159,.12); border-radius: 6px 6px 3px 3px; background: repeating-linear-gradient(145deg,#9dd5e7 0 7px,#f7fcff 7px 13px); box-shadow: inset -3px 0 3px rgba(61,116,140,.12), 0 3px 5px rgba(84,117,132,.08); }
.candle:nth-child(2) { height: 78px; background: repeating-linear-gradient(145deg,#eaa8c3 0 7px,#fff9fc 7px 13px); }
.flame { position: absolute; left: 50%; bottom: calc(100% + 9px); width: 16px; height: 27px; border-radius: 70% 35% 66% 40%; transform: translateX(-50%) rotate(45deg); background: radial-gradient(circle at 65% 65%,#fff 0 15%,#ffe979 21%,#ffad45 66%,#f27b35 100%); box-shadow: 0 0 14px 3px rgba(255,182,65,.45), 0 0 28px 7px rgba(255,212,120,.16); animation: flame 1.1s ease-in-out infinite alternate; transition: opacity .25s, transform .3s; }
.smoke { position: absolute; left: 50%; bottom: calc(100% + 9px); width: 8px; height: 8px; border-radius: 50%; opacity: 0; background: rgba(142,135,151,.42); }
.cake-scene.candles-out .flame { opacity: 0; transform: translateX(-50%) translateY(8px) rotate(45deg) scale(.1); }.cake-scene.candles-out .smoke { animation: smoke 1.5s ease-out forwards; }.cake-scene.candles-out .candle:nth-child(2) .smoke{animation-delay:.15s}.cake-scene.candles-out .candle:nth-child(3) .smoke{animation-delay:.3s}
.wish-made { display: none; margin-top: 10px; color: var(--pink-deep); }.cake-scene.candles-out .cake-instruction { opacity: 0; }.cake-scene.candles-out .wish-made { display: block; animation: riseIn .7s both; }

/* Shared sections */
.after-wish { background: linear-gradient(#fff8fb,#fbf8ff 48%,#f8fbfc); }
.after-wish.revealed { animation: riseIn .9s both; }
.section-shell { width: min(1180px, calc(100% - 36px)); margin: 0 auto; padding: clamp(80px, 10vw, 140px) 0; }
.section-heading { max-width: 770px; margin-bottom: 55px; }.section-heading h2 { font-size: clamp(2.4rem, 5.5vw, 5rem); }.section-heading > p:last-child { max-width: 560px; color: var(--muted); line-height: 1.65; }
.heading-row { max-width: none; display: flex; align-items: end; justify-content: space-between; gap: 30px; }
.paper-button, .primary-button { min-height: 48px; padding: 13px 21px; border: 1px solid rgba(171,102,133,.32); border-radius: 999px; background: rgba(255,255,255,.76); color: #8b4f6a; cursor: pointer; box-shadow: 0 10px 30px rgba(107,71,91,.07); transition: transform .2s, box-shadow .2s, background .2s; }.paper-button:hover,.primary-button:hover { transform: translateY(-2px); box-shadow: 0 15px 32px rgba(107,71,91,.13); background:#fff; }
.primary-button { width: 100%; color: white; background: #925b75; border-color: #925b75; }.primary-button:hover { background:#7c4861; }
.scrap-divider { width: min(1180px,calc(100% - 36px)); margin: 0 auto; display:grid; grid-template-columns:1fr auto 1fr; gap:15px; align-items:center; color:#bd668b; }.scrap-divider span{height:1px;background:linear-gradient(90deg,transparent,#e3c2d1,transparent)}.scrap-divider i{font:normal 1.1rem Georgia}

/* FriendsCircle + FriendAvatar */
.friends-circle { position: relative; min-height: 880px; margin: 0 auto; isolation: isolate; }
.friend-avatar, .birthday-person { position: absolute; display: grid; justify-items: center; gap: 7px; width: clamp(116px, 12vw, 162px); padding: 0; border: 0; color: var(--ink); background: none; cursor: pointer; }
.friend-avatar { z-index: 3; }
.avatar-portrait, .birthday-portrait { position: relative; z-index: 2; width: 100%; height: auto; object-fit: contain; filter: drop-shadow(0 18px 19px rgba(74,56,88,.15)); animation: friendIn .7s both; animation-delay: var(--delay, 0ms); transition: transform .28s cubic-bezier(.22,1,.36,1), filter .28s; }
.friend-avatar:hover .avatar-portrait, .friend-avatar:focus-visible .avatar-portrait, .friend-avatar[aria-expanded="true"] .avatar-portrait, .birthday-person:hover .birthday-portrait, .birthday-person:focus-visible .birthday-portrait, .birthday-person[aria-expanded="true"] .birthday-portrait { transform: translateY(-7px) scale(1.035); filter: drop-shadow(0 24px 22px rgba(74,56,88,.22)); }
.friend-avatar:focus-visible, .birthday-person:focus-visible { outline: 2px solid rgba(189,102,139,.65); outline-offset: 8px; border-radius: 18px; }
.friend-name, .birthday-person strong { position: relative; z-index: 4; padding: 3px 11px 4px; border: 1px solid rgba(214,177,194,.48); border-radius: 999px; background: rgba(255,251,253,.92); box-shadow: 0 8px 20px rgba(91,62,79,.08); font: italic 1rem Georgia,serif; white-space: nowrap; }
.friend-popover { position: absolute; z-index: 9; top: 42%; left: 50%; width: max-content; max-width: 220px; padding: 9px 13px; border: 1px solid #ead0dc; border-radius: 999px; opacity: 0; visibility: hidden; transform: translate(-50%, 5px) scale(.96); color: #79455e; background: rgba(255,255,255,.95); box-shadow: 0 15px 35px rgba(78,56,91,.16); pointer-events: none; font-size: .72rem; line-height: 1.35; text-align: center; transition: opacity .2s, visibility .2s, transform .2s; }
.friend-avatar:hover .friend-popover, .friend-avatar:focus-visible .friend-popover, .friend-avatar[aria-expanded="true"] .friend-popover, .birthday-person:hover .friend-popover, .birthday-person:focus-visible .friend-popover, .birthday-person[aria-expanded="true"] .friend-popover { opacity: 1; visibility: visible; transform: translate(-50%, -50%) scale(1); }
.friend-avatar--luana { top: 0; left: 19%; }
.friend-avatar--italo { top: 0; right: 19%; }
.friend-avatar--vns { top: 28%; left: 1.5%; }
.friend-avatar--rapha { top: 27%; right: 1.5%; }
.friend-avatar--pxis { bottom: 1%; left: 10%; }
.friend-avatar--pamy { right: 10%; bottom: 1%; }
.friend-avatar--mariana { bottom: -3%; left: 50%; transform: translateX(-50%); }
.birthday-person { z-index: 5; top: 17%; left: 50%; width: clamp(205px, 20vw, 250px); transform: translateX(-50%); }
.birthday-halo { position: absolute; z-index: 0; top: 8%; left: 50%; width: 135%; aspect-ratio: 1; border-radius: 50%; transform: translateX(-50%); background: radial-gradient(circle,rgba(246,190,216,.36),rgba(188,229,242,.16) 48%,transparent 70%); animation: pulse 3s infinite; }
.birthday-portrait { width: 100%; }
.birthday-person strong { font-size: 1.3rem; }
.birthday-person small { position: relative; z-index: 4; max-width: 250px; color: var(--pink-deep); font-size: .58rem; font-weight: 700; letter-spacing: .12em; line-height: 1.45; text-align: center; text-transform: uppercase; }

/* MessageWall + PostIt */
.postit-wall { position: relative; min-height: 420px; padding: clamp(30px,4vw,54px); overflow: hidden; border: 1px solid rgba(168,132,151,.2); border-radius: 30px; background: linear-gradient(rgba(255,255,255,.73),rgba(255,255,255,.7)), repeating-linear-gradient(0deg,transparent 0 29px,rgba(147,121,136,.04) 29px 30px), #fbf6f9; box-shadow: 0 20px 55px rgba(78,56,91,.07), inset 0 1px 0 rgba(255,255,255,.92); }
.postit-wall::before { content:""; position:absolute; z-index:0; inset:10px; border:1px solid rgba(206,176,191,.2); border-radius:21px; pointer-events:none; }
.postit-wall::after { content:"✦"; position:absolute; right:24px; bottom:17px; color:rgba(189,102,139,.24); font:normal 1rem Georgia,serif; pointer-events:none; }
.postit-grid { position:relative; z-index:1; display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:clamp(20px,2.4vw,31px); align-items:start; }
.empty-mural-state { position:absolute; z-index:1; inset:0; margin:0; display:grid; place-items:center; color:#aa8b9b; font:italic 1rem Georgia,serif; letter-spacing:.02em; }
.postit { width:100%; min-width:0; min-height:210px; padding:28px 23px 20px; display:flex; flex-direction:column; justify-content:space-between; overflow:hidden; border:0; text-align:left; background:var(--note-color); box-shadow:0 10px 20px rgba(79,59,73,.12); transform:rotate(var(--rotation)); cursor:pointer; transition:transform .22s,box-shadow .22s; animation:noteIn .5s both; }.postit:hover,.postit:focus-visible{z-index:3;transform:rotate(0) translateY(-8px) scale(1.025);box-shadow:0 20px 32px rgba(79,59,73,.2)}
.postit-sticker{font-size:1.65rem}.postit-message{display:-webkit-box;overflow:hidden;overflow-wrap:anywhere;-webkit-line-clamp:5;-webkit-box-orient:vertical;margin:16px 0;color:#55404d;font:italic 1rem/1.55 Georgia,serif}.postit-author{overflow-wrap:anywhere;color:#8a6276;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase}.friendly-status{min-height:24px;margin:-35px 0 18px;color:var(--pink-deep);font-size:.78rem}

/* PolaroidGallery + PolaroidCard */
.polaroid-gallery { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:clamp(30px,4vw,52px) clamp(20px,3vw,38px); align-items:start; perspective:1200px; }
.add-polaroid-slot{display:flex;align-items:center;justify-content:center;gap:7px;margin:clamp(28px,4vw,42px) auto 0;padding:11px 18px;border:1px solid rgba(116,183,208,.48);border-radius:999px;color:#6f8795;background:rgba(255,255,255,.58);box-shadow:0 7px 18px rgba(82,113,128,.08);font:italic .86rem/1.2 Georgia,serif;cursor:pointer;transition:transform .22s ease,background .22s ease,box-shadow .22s ease,color .22s ease}
.add-polaroid-slot:hover,.add-polaroid-slot:focus-visible{transform:translateY(-2px);color:#4f7082;background:rgba(255,255,255,.86);box-shadow:0 11px 24px rgba(82,113,128,.13);outline:2px solid rgba(116,183,208,.38);outline-offset:3px}
.add-polaroid-slot:active{transform:translateY(0)}
.polaroid-card { width:100%; max-width:250px; aspect-ratio:.73; justify-self:center; padding:0; border:0; background:none; cursor:pointer; perspective:1100px; transform:rotate(var(--rotation)); transition:transform .25s; }
.polaroid-card:hover,.polaroid-card:focus-visible{z-index:3;transform:rotate(0) translateY(-6px)}
.polaroid-card:focus-visible{outline:2px solid rgba(116,183,208,.65);outline-offset:8px;border-radius:4px}
.polaroid-inner{position:relative;display:block;width:100%;height:100%;transform-style:preserve-3d;transition:transform .75s cubic-bezier(.22,1,.36,1)}
.polaroid-card.is-flipped .polaroid-inner{transform:rotateY(180deg)}
.polaroid-face{position:absolute;inset:0;padding:13px 13px 34px;display:flex;flex-direction:column;backface-visibility:hidden;border:1px solid #eee8eb;background:#fff;box-shadow:0 18px 34px rgba(73,54,68,.13),inset 0 0 0 1px rgba(255,255,255,.85)}
.polaroid-tape{position:absolute;z-index:4;top:-10px;left:50%;width:43%;height:24px;transform:translateX(-50%) rotate(-1.5deg);background:rgba(177,220,235,.68);box-shadow:0 1px 2px rgba(70,111,130,.08)}
.polaroid-cover{flex:1;display:grid;place-content:center;gap:8px;padding:18px;text-align:center;color:#587487;background:linear-gradient(145deg,#e9f5fa,#cfe8f2);border:1px solid rgba(116,183,208,.2)}
.polaroid-cover strong{font:italic clamp(1rem,2vw,1.25rem) Georgia,serif;font-weight:400}.polaroid-cover small{font-size:.61rem;letter-spacing:.09em;text-transform:uppercase;opacity:.72}
.polaroid-number{position:absolute;left:16px;bottom:10px;color:#9d8792;font-size:.64rem;letter-spacing:.14em}
.polaroid-back{gap:6px;transform:rotateY(180deg);text-align:center}
.polaroid-photo{flex:0 0 57%;min-height:0;display:grid;place-items:center;overflow:hidden;background:#e3f1f6;border:1px solid rgba(116,183,208,.16)}
.polaroid-photo img{width:100%;height:100%;object-fit:cover}
.polaroid-caption{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#604a57;font:italic .9rem Georgia,serif}
.polaroid-message{display:-webkit-box;overflow:hidden;overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;color:#75646e;font:italic .68rem/1.35 Georgia,serif}
.polaroid-author{margin-top:auto;color:#a46683;font-size:.53rem;letter-spacing:.1em;text-transform:uppercase}
.polaroid-card.is-empty .polaroid-cover{background:linear-gradient(145deg,#f1f8fb,#dceef5);color:#7d98a7}
.polaroid-card.is-empty:hover .polaroid-cover,.polaroid-card.is-empty:focus-visible .polaroid-cover{background:linear-gradient(145deg,#eaf6fa,#cfe8f2)}

/* Modals and forms */
.party-modal { width:min(620px,calc(100% - 24px)); max-height:min(88vh,820px); padding:0; border:0; border-radius:24px; color:var(--ink); background:transparent; box-shadow:0 30px 90px rgba(42,28,44,.28); }.party-modal::backdrop{background:rgba(30,25,37,.5);backdrop-filter:blur(5px)}.modal-card{position:relative;padding:clamp(27px,5vw,48px);overflow:auto;background:#fffafc;border:1px solid rgba(176,111,142,.2)}.modal-card h2{font-size:clamp(2rem,5vw,3.5rem);margin-bottom:28px}.modal-close{position:absolute;top:16px;right:16px;width:38px;height:38px;border:1px solid #ead2dd;border-radius:50%;background:white;color:#8f5871;font-size:1.35rem;cursor:pointer}.modal-card label{display:block;margin:18px 0 0;color:#654d5b;font-size:.79rem;font-weight:650}.modal-card label span,.modal-card label small,.modal-card label b{float:right;color:#a48d99;font-size:.65rem;font-weight:400}.modal-card input:not([type="checkbox"]):not([type="radio"]),.modal-card textarea{width:100%;margin-top:8px;padding:13px 15px;border:1px solid #e8d6de;border-radius:13px;color:var(--ink);background:white;outline:none;resize:vertical}.modal-card input:focus,.modal-card textarea:focus{border-color:#c781a1;box-shadow:0 0 0 3px rgba(199,129,161,.12)}.check-line{display:flex!important;gap:9px;align-items:center;font-weight:400!important}.choice-field{margin:20px 0;padding:0;border:0}.choice-field legend{color:#654d5b;font-size:.79rem;font-weight:650}.color-picker,.sticker-picker{display:flex;gap:9px;flex-wrap:wrap;margin-top:10px}.pick-option{position:relative}.pick-option input{position:absolute;opacity:0}.pick-option span{float:none!important;width:38px;height:38px;display:grid!important;place-items:center;border:2px solid white;border-radius:50%;background:var(--option-color);box-shadow:0 0 0 1px #e0cbd5;cursor:pointer;font-size:1.1rem!important}.pick-option input:checked + span{box-shadow:0 0 0 3px #a96887;transform:scale(.94)}.primary-button{margin-top:12px}.form-error{min-height:20px;margin:12px 0 0;color:#a84b67;font-size:.75rem}.honey-field{position:absolute!important;left:-9999px!important}.detail-card{min-height:320px;display:grid;place-items:center;text-align:center}.detail-card .postit-sticker{font-size:2.7rem}.detail-card blockquote{margin:20px auto;color:#604956;font:italic clamp(1.25rem,3vw,1.7rem)/1.55 Georgia,serif}.detail-card cite{color:#9b6480;font-size:.76rem;text-transform:uppercase;letter-spacing:.12em}.image-upload input{margin-top:10px}.image-upload > span{float:none!important;width:100%;min-height:120px;margin-top:10px;display:grid!important;place-items:center;border:1px dashed #d8b8c7;border-radius:14px;background:#fff;color:#9a6a80;font-size:.78rem!important;background-size:cover;background-position:center}.image-upload.has-preview > span{color:transparent;min-height:210px}.party-footer{width:min(1180px,calc(100% - 36px));margin:0 auto;padding:30px 0 60px;display:flex;justify-content:space-between;border-top:1px solid #ead7e0;color:#8d7782;font-size:.72rem}.party-footer a{color:inherit}

@keyframes twinkle{50%{opacity:.25;transform:scale(.7)}}@keyframes glow{to{opacity:.55;filter:saturate(.8)}}@keyframes sway{to{transform:rotate(3deg)}}@keyframes float{50%{transform:translateY(-16px) rotate(3deg)}}@keyframes flame{to{transform:translateX(-50%) rotate(38deg) scale(.88,1.1)}}@keyframes smoke{0%{opacity:.6;transform:translate(-50%,0) scale(.7)}100%{opacity:0;transform:translate(-70%,-50px) scale(3)}}@keyframes riseIn{from{opacity:0;transform:translateY(20px)}}@keyframes friendIn{from{opacity:0;transform:translateY(25px) scale(.85)}}@keyframes pulse{50%{transform:translateX(-50%) scale(1.08);opacity:.6}}@keyframes noteIn{from{opacity:0;transform:rotate(var(--rotation)) translateY(20px)}}@keyframes skeleton{to{background-position:-150% 0}}

@media (max-width:1023px){.polaroid-gallery{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:900px){.party-room{grid-template-columns:1fr;padding-top:150px;text-align:center}.hero-copy{margin:auto}.hero-copy>p:last-child{margin-inline:auto}.cake-scene{min-height:430px}}
@media (max-width:720px){.friends-circle{min-height:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:34px 16px;align-items:end}.friend-avatar,.birthday-person{position:relative;inset:auto;width:min(145px,42vw);justify-self:center;transform:none}.birthday-person{grid-column:1 / -1;grid-row:1;width:min(220px,64vw);margin-bottom:8px}.friend-avatar--mariana{grid-column:1 / -1}.friend-popover{top:42%;max-width:min(190px,72vw);white-space:normal}.friend-name{font-size:.95rem}.birthday-person small{font-size:.55rem}.birthday-halo{width:125%}.polaroid-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:620px){.page-nav{height:48px}.party-room{padding:125px 16px 58px;gap:12px}.hero-copy h1{font-size:clamp(2.8rem,14vw,4.4rem)}.bunting{left:2%;right:2%}.balloon{width:55px;height:72px}.cake-scene{min-height:440px}.birthday-cake{height:340px}.cake-top{top:auto;bottom:153px}.candles{top:28px}.party-audio-player{right:10px;bottom:10px;width:158px}.section-shell{width:min(100% - 24px,1180px);padding:78px 0}.section-heading{margin-bottom:35px}.heading-row{align-items:flex-start;flex-direction:column}.heading-row .paper-button{width:100%}.postit-wall{min-height:350px;padding:25px 20px;border-radius:22px}.postit-grid{grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:17px}.postit{min-height:180px;padding:20px 16px}.friendly-status{margin-top:-20px}.party-footer{flex-direction:column;gap:10px}.modal-card{padding-top:52px}}
@media (max-width:419px){.friends-circle{gap:30px 10px}.friend-avatar{width:min(132px,41vw)}.birthday-person{width:min(205px,64vw)}.postit-grid{grid-template-columns:1fr}.postit{min-height:160px}.polaroid-gallery{grid-template-columns:1fr;padding-inline:18px}.polaroid-card{max-width:235px}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.confetti-canvas{display:none}.polaroid-card{transform:none}}

/* Owner-only moderation controls */
.postit-item,.polaroid-slot{position:relative;min-width:0}
.postit-item .postit{width:100%;height:100%}
.polaroid-slot{width:100%;max-width:250px;justify-self:center}
.polaroid-slot .polaroid-card{width:100%;height:auto}
.postit-item.is-hidden-by-admin,.polaroid-slot.is-hidden-by-admin{opacity:.58}
.postit-item.is-hidden-by-admin::before,.polaroid-slot.is-hidden-by-admin::before{content:"oculto";position:absolute;z-index:8;top:8px;left:8px;padding:4px 7px;border-radius:999px;color:#77586a;background:rgba(255,248,251,.92);font-size:.52rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;box-shadow:0 4px 12px rgba(96,73,86,.12)}
.admin-item-controls{position:absolute;z-index:10;left:8px;right:8px;bottom:8px;display:flex;justify-content:center;gap:6px;pointer-events:auto}
.admin-control-button{padding:6px 9px;border:1px solid rgba(137,94,115,.24);border-radius:999px;color:#76576a;background:rgba(255,250,252,.94);font-size:.55rem;font-weight:700;letter-spacing:.04em;cursor:pointer;box-shadow:0 4px 12px rgba(96,73,86,.12);transition:transform .2s ease,background .2s ease}
.admin-control-button:hover,.admin-control-button:focus-visible{transform:translateY(-1px);background:#fff}
.admin-control-button.is-danger{color:#9a4d62}
.admin-control-button:disabled{opacity:.5;cursor:wait}
.admin-entry{min-width:32px;height:32px;padding:0 9px;border:1px solid transparent;border-radius:999px;color:#a28696;background:transparent;cursor:pointer;transition:color .22s ease,background .22s ease,border-color .22s ease}
.admin-entry:hover,.admin-entry:focus-visible,.admin-entry.is-authenticated{color:#76576a;border-color:#ead7e0;background:rgba(255,255,255,.7)}
.admin-entry.is-authenticated{font-size:.58rem;letter-spacing:.05em;text-transform:uppercase}
.admin-login-card{max-width:430px}
.admin-login-copy{margin:-4px 0 24px;color:#866f7b;font:italic .9rem/1.55 Georgia,serif}

/* Signature footer */
.party-footer.signature-footer{position:relative;margin-top:24px;padding:34px 0 58px;align-items:center;border-top:0;color:rgba(109,82,96,.75)}
.party-footer.signature-footer::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,#ead7e0 18%,#d8bdcb 82%,transparent)}
.party-footer.signature-footer>span:first-child{font:italic .8rem/1.5 Georgia,serif;letter-spacing:.025em}
.party-footer-actions{display:flex;align-items:center;gap:8px}
.party-footer.signature-footer a{display:inline-flex;align-items:center;gap:7px;padding:8px 12px;border-radius:999px;text-decoration:none;transition:color .22s ease,background .22s ease,transform .22s ease}
.party-footer.signature-footer a i{font-style:normal;transition:transform .22s ease}
.party-footer.signature-footer a:hover,.party-footer.signature-footer a:focus-visible{color:#6f4f61;background:rgba(255,255,255,.7);transform:translateY(-1px)}
.party-footer.signature-footer a:hover i,.party-footer.signature-footer a:focus-visible i{transform:translate(2px,-2px)}
@media(max-width:620px){.party-footer.signature-footer{align-items:flex-start;padding-bottom:42px}.party-footer-actions{margin-left:-9px}}
