:root{--green:#174a35;--green-deep:#0d3b2a;--red:#b62d34;--soft-red:#f8eeee;--cream:#fbf8f4;--ink:#234032;--muted:#64746a;--line:#dce8df}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
body{margin:0;background:#fff;color:var(--ink);font-family:Optima,"Avenir Next",Avenir,Arial,sans-serif;-webkit-font-smoothing:antialiased}
.top-trim{height:7px;background:repeating-linear-gradient(90deg,var(--green) 0 48px,#fff 48px 52px,var(--red) 52px 100px,#fff 100px 104px)}
.page-shell{max-width:1180px;margin:auto;padding:0 32px 56px}
.hero{text-align:center;padding:55px 0 12px;position:relative}
.tiny-stars{color:#c69d52;font-size:18px;letter-spacing:20px;margin-bottom:12px}.tiny-stars span{font-size:24px}
.preview-label{display:inline-block;margin:0 0 13px;padding:6px 13px;border:1px solid #d9e5dc;border-radius:20px;color:var(--green);font-size:12px;letter-spacing:.03em}
h1,h2,p{margin-top:0}
h1{font-family:Georgia,"Times New Roman",serif;font-weight:500;color:var(--green-deep);font-size:clamp(43px,6.4vw,82px);line-height:1.06;letter-spacing:-.055em;margin-bottom:19px}
h1 span{color:var(--red)}
.intro{max-width:610px;margin:0 auto;color:#557063;font-size:17px;line-height:1.7}
.people-section{position:relative;margin:7px auto 0;max-width:1040px}
.people-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px 16px;max-width:830px;margin:0 auto;position:relative;z-index:1}
.person{appearance:none;border:0;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:214px;padding:6px 10px 15px;cursor:pointer;color:var(--green-deep);position:relative}
.person:nth-child(2),.person:nth-child(5){transform:translateY(29px)}
.portrait-float{display:block;animation:bob 5.8s ease-in-out infinite;animation-delay:var(--delay)}
.person:nth-child(even) .portrait-float{animation-duration:6.5s}
.portrait-frame{display:grid;place-items:center;width:154px;height:154px;border:4px solid #fff;border-radius:50%;overflow:hidden;background:var(--avatar-bg);box-shadow:0 0 0 2px #dce8df,0 12px 23px #174a351c;transition:box-shadow .2s ease,transform .2s ease}
.portrait-frame svg,.portrait-frame img{height:100%;width:100%;object-fit:cover;display:block}
.person:hover .portrait-frame,.person:focus-visible .portrait-frame{box-shadow:0 0 0 3px var(--red),0 15px 29px #174a3524;transform:scale(1.045)}
.person[aria-pressed="true"] .portrait-frame{box-shadow:0 0 0 4px var(--red),0 0 0 9px #f8e8e8,0 14px 28px #174a3524}
.person:focus-visible{outline:0}.person:focus-visible .person-name{opacity:1;transform:translateY(0)}
.person-name{font-weight:700;font-size:15px;color:var(--green-deep);background:#fff;border:1px solid #d9e7df;border-radius:99px;padding:5px 14px;box-shadow:0 4px 10px #0d3b2a0c;position:absolute;bottom:7px;opacity:0;transform:translateY(7px);transition:opacity .2s ease,transform .2s ease;white-space:nowrap}
.person:hover .person-name,.person[aria-pressed="true"] .person-name{opacity:1;transform:translateY(0)}
.garland{position:absolute;top:55px;display:flex;flex-direction:column;gap:62px;color:#d8b65d;font-size:18px}.garland-left{left:2%}.garland-right{right:2%;top:95px}.garland span:nth-child(2){color:var(--red);font-size:12px;transform:translateX(26px)}.garland span:nth-child(3){transform:translateX(-5px)}
.people-hint{text-align:center;font-size:14px;color:#617669;margin:32px 0 31px}.people-hint span{font-size:21px;vertical-align:-2px;margin-left:5px;color:var(--red)}
.wishlist{max-width:850px;margin:auto;min-height:235px;background:linear-gradient(#fff,#fff) padding-box,linear-gradient(135deg,#bfdbc5,#e7c1bc,#bfdbc5) border-box;border:1px solid transparent;border-radius:22px;box-shadow:0 18px 50px #183e2a0c;position:relative;overflow:hidden}
.wishlist:before,.wishlist:after{content:"✦";position:absolute;color:#d2ab60;font-size:17px;top:20px}.wishlist:before{left:24px}.wishlist:after{right:24px}
.wishlist-empty{text-align:center;padding:44px 20px 45px}.gift-seal{margin:auto auto 12px;width:43px;height:43px;border:1px solid #e6cfd0;border-radius:50%;display:grid;place-items:center;color:var(--red);font-family:Georgia,serif;font-size:25px}.wishlist-empty p{font-family:Georgia,serif;font-size:25px;color:var(--green);margin-bottom:8px}.wishlist-empty span{color:var(--muted);font-size:14px}
.wishlist-content{padding:36px 42px 33px;animation:reveal .28s ease-out}.wishlist-content[hidden]{display:none}.list-heading{display:flex;align-items:center;justify-content:center;gap:22px;text-align:center}.list-kicker{color:var(--red);font-weight:700;font-size:13px;letter-spacing:.035em;margin-bottom:5px}.list-heading h2{font-family:Georgia,serif;color:var(--green-deep);font-weight:500;font-size:clamp(28px,4vw,42px);letter-spacing:-.04em;margin:0}.heading-spark{color:#d1a755;font-size:18px}.gift-list{list-style:none;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:26px 0 18px;counter-reset:gift}.gift-list li{counter-increment:gift;min-height:97px;display:flex;align-items:center;gap:12px;border:1px solid #e2eae3;border-radius:13px;padding:15px;background:#fff;font-size:15px;font-weight:600;color:#244b37;line-height:1.4}.gift-list li:before{content:counter(gift,decimal-leading-zero);font-family:Georgia,serif;color:var(--red);font-size:22px;font-weight:400;flex:none}.list-note{text-align:center;color:#75867b;font-size:12px;margin:0}
footer{text-align:center;padding:22px 20px 34px;color:#809086;font-size:12px}footer span{color:#cdb269;margin-left:4px}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}@keyframes reveal{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:720px){.page-shell{padding:0 18px 35px}.hero{padding-top:42px}.intro{font-size:15px}.people-grid{grid-template-columns:repeat(3,1fr);gap:0}.person{min-height:165px;padding:0 3px}.portrait-frame{width:116px;height:116px}.person:nth-child(2),.person:nth-child(5){transform:translateY(17px)}.person-name{opacity:1;position:static;transform:none;margin-top:9px;font-size:12px;padding:4px 9px}.people-hint{margin:24px 0}.garland{display:none}.gift-list{grid-template-columns:1fr}.gift-list li{min-height:62px}.wishlist-content{padding:33px 19px 25px}}
@media(max-width:430px){h1{font-size:40px}.people-grid{grid-template-columns:repeat(2,1fr);gap:8px 2px}.person{min-height:157px}.person:nth-child(2),.person:nth-child(5){transform:none}.portrait-frame{width:122px;height:122px}.intro{font-size:14px;line-height:1.6}.wishlist-empty p{font-size:22px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.portrait-float{animation:none}.wishlist-content{animation:none}*{transition-duration:.01ms!important}}

/* A galeria acomoda os 14 participantes em duas linhas no desktop. */
.people-section{max-width:1100px;margin-top:22px}
.people-grid{max-width:1030px;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px 2px}
.person{min-height:164px;padding:4px 2px 16px}
.person:nth-child(2),.person:nth-child(5){transform:none}
.person:nth-child(7n+2),.person:nth-child(7n+5){transform:translateY(13px)}
.portrait-frame{width:112px;height:112px}
.person-name{bottom:3px}
.people-hint{margin:28px 0 30px}
.gift-list{gap:16px;margin:26px 0 17px}
.gift-list li{display:block;min-height:0;padding:0;overflow:hidden;border-radius:15px}
.gift-list li:before{display:none}
.product-card{display:flex;flex-direction:column;height:100%;text-decoration:none;color:var(--green-deep);outline-offset:-4px;transition:background .2s ease,transform .2s ease}
.product-card:hover,.product-card:focus-visible{background:#f7faf7;transform:translateY(-2px)}
.product-card img{display:block;width:100%;aspect-ratio:1.5;object-fit:contain;padding:10px;background:#f8faf7}
.product-name{font-family:Georgia,serif;font-size:19px;font-weight:500;line-height:1.25;padding:14px 15px 4px}
.product-action{color:var(--red);font-size:12px;font-weight:700;padding:0 15px 17px;margin-top:auto}
.gift-list .no-gifts{grid-column:1/-1;padding:24px;text-align:center;color:var(--muted)}
.list-note{max-width:600px;margin:auto;line-height:1.5}
@media(max-width:950px){.people-grid{grid-template-columns:repeat(5,minmax(0,1fr));max-width:720px}.person:nth-child(7n+2),.person:nth-child(7n+5){transform:none}.person:nth-child(5n+2),.person:nth-child(5n+4){transform:translateY(10px)}}
@media(max-width:650px){.people-section{margin-top:17px}.people-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 2px;max-width:430px}.person{min-height:135px;padding:0 2px}.person:nth-child(5n+2),.person:nth-child(5n+4){transform:none}.portrait-frame{width:97px;height:97px}.person-name{position:static;opacity:1;transform:none;margin-top:7px;font-size:12px;padding:3px 8px}.people-hint{margin:24px 0}.gift-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.product-name{font-size:16px;padding:10px 11px 4px}.product-action{padding:0 11px 12px;font-size:11px}}
@media(max-width:430px){.people-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.portrait-frame{width:92px;height:92px}.person{min-height:132px}.gift-list{grid-template-columns:repeat(2,minmax(0,1fr))}.gift-list li{min-height:0}.product-card img{aspect-ratio:1.25}}
@media(max-width:345px){.people-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.portrait-frame{width:106px;height:106px}}

.page-shell,footer{position:relative;z-index:1}
.falling-stars{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.falling-star{position:absolute;top:-15vh;left:var(--x);color:var(--color);font-size:var(--size);line-height:1;opacity:.63;animation:starfall var(--duration) linear var(--delay) infinite;will-change:transform}
@keyframes starfall{from{transform:translate3d(0,0,0) rotate(0deg)}to{transform:translate3d(var(--drift),125vh,0) rotate(250deg)}}
.wishlist:before,.wishlist:after{content:none}
.gift-seal svg{width:28px;height:28px}
@media(prefers-reduced-motion:reduce){.falling-stars{display:none}}

.falling-star{opacity:.78}
.edit-prompt{display:block;margin:14px auto 0;padding:4px 8px;border:0;background:none;color:var(--red);font:600 13px Optima,"Avenir Next",Avenir,Arial,sans-serif;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.edit-prompt:hover{color:#8e1d25}.edit-prompt:focus-visible{outline:2px solid var(--green);outline-offset:3px;border-radius:3px}
.edit-dialog{width:min(94vw,790px);max-height:min(90vh,820px);padding:30px;border:1px solid #dfe9e1;border-radius:20px;background:#fff;color:var(--ink);box-shadow:0 28px 80px #15352642;overflow-y:auto}
.edit-dialog::backdrop{background:#102b20a8;backdrop-filter:blur(3px)}
.dialog-close{position:absolute;top:14px;right:18px;border:0;background:none;color:var(--muted);font-size:30px;line-height:1;cursor:pointer}
.dialog-header{text-align:center;padding-right:20px;padding-left:20px;margin-bottom:20px}.dialog-header .list-kicker{margin-bottom:6px}.dialog-header h2{font-family:Georgia,serif;font-size:30px;font-weight:500;letter-spacing:-.035em;color:var(--green-deep);margin:0}
.dialog-explainer{color:var(--muted);font-size:14px;line-height:1.55;margin:0 0 20px}
.edit-dialog label{display:block;font-size:13px;font-weight:700;color:var(--green-deep);margin:14px 0 6px}
.edit-dialog input{width:100%;height:44px;border:1px solid #cfdcd2;border-radius:9px;background:#fff;color:var(--ink);padding:0 12px;font:15px Optima,"Avenir Next",Avenir,Arial,sans-serif}
.edit-dialog input:focus{outline:2px solid #a4c4a9;outline-offset:1px}
.dialog-primary{display:block;width:100%;margin-top:20px;padding:12px 16px;background:var(--green);border:1px solid var(--green);border-radius:9px;color:#fff;font:700 14px Optima,"Avenir Next",Avenir,Arial,sans-serif;cursor:pointer}
.dialog-primary:hover{background:var(--green-deep)}.dialog-primary:disabled{opacity:.55;cursor:wait}
.dialog-text-button{display:block;margin:14px auto 0;padding:5px;border:0;background:none;color:var(--red);font:600 13px Optima,"Avenir Next",Avenir,Arial,sans-serif;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.edit-feedback{min-height:18px;margin:16px 0 0;text-align:center;color:var(--red);font-size:13px;line-height:1.45}
.edit-items{grid-template-columns:repeat(3,minmax(0,1fr));margin:12px 0 18px}
.edit-items .editable-gift{position:relative}
.edit-items .product-card img{aspect-ratio:1.25}
.edit-items .product-name{font-size:16px;padding:10px 11px 4px}
.edit-items .product-action{padding:0 11px 45px;font-size:11px}
.remove-item{position:absolute;left:10px;bottom:10px;z-index:1;border:1px solid #e9c9c9;border-radius:7px;background:#fff;color:var(--red);padding:6px 10px;font:700 12px Optima,"Avenir Next",Avenir,Arial,sans-serif;cursor:pointer}
.remove-item:hover{background:var(--soft-red)}.remove-item:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.add-item{display:block;width:100%;padding:11px;border:1px dashed #a8c1ad;border-radius:9px;background:#f7faf7;color:var(--green);font:700 13px Optima,"Avenir Next",Avenir,Arial,sans-serif;cursor:pointer}
.add-item:hover{background:#eef5ef}.add-item:disabled{opacity:.55;cursor:not-allowed}
.product-form,.product-preview{margin:20px 0;padding:18px;border:1px solid var(--line);border-radius:13px;background:#f9fbf9}
.product-form label{margin-top:0}
.product-form .dialog-primary,.product-preview .dialog-primary{margin-top:12px}
.product-preview-label{font-family:Georgia,serif;color:var(--green-deep);font-size:19px;margin-bottom:12px}
.product-preview-card{max-width:260px;margin:auto;border:1px solid var(--line);border-radius:13px;overflow:hidden;background:#fff}
.product-preview-card .product-card img{aspect-ratio:1.5}
@media(max-width:650px){.edit-items{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.edit-dialog{padding:24px 19px}.dialog-header h2{font-size:26px}}
