#wedding-gift-launch,
#wedding-gift-modal,
#wedding-gift-modal * { box-sizing: border-box; }
#wedding-gift-launch {
  position: fixed; z-index: 9998; left: 50%; bottom: max(18px, env(safe-area-inset-bottom)); transform: translateX(-50%);
  display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 52px; max-width: calc(100vw - 28px); padding: 0 25px;
  border: 1px solid #f3dc9e; border-radius: 999px; background: linear-gradient(115deg,#d2a957,#f4dc9d 54%,#d9b45e); box-shadow: 0 12px 34px #1d140f77, inset 0 1px #fff9;
  color: #2d241a; font: 800 12px/1 "DM Sans",Arial,sans-serif; letter-spacing: .13em; text-decoration: none; cursor: pointer; transition: transform .2s ease,box-shadow .2s ease;
}
#wedding-gift-launch:hover { transform: translate(-50%,-3px); box-shadow: 0 16px 38px #1d140f88,inset 0 1px #fff9; }
#wedding-gift-launch span { font-size: 17px; }
body.gift-modal-open { overflow: hidden !important; }
.wedding-gift-modal { position: fixed; z-index: 10002; inset: 0; display: grid; place-items: center; padding: 18px; visibility: hidden; opacity: 0; transition: opacity .24s ease,visibility .24s ease; }
.wedding-gift-modal.is-open { visibility: visible; opacity: 1; }
.wedding-gift-backdrop { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: #09110fd1; backdrop-filter: blur(9px); cursor: default; }
.wedding-gift-panel { position: relative; width: min(480px,100%); max-height: min(760px,calc(100dvh - 30px)); overflow: auto; padding: 30px clamp(20px,5vw,38px) 24px; border: 1px solid #e2c57777; border-radius: 24px; background: radial-gradient(ellipse at 50% -20%,#51644e 0,#202c24 37%,#111a17 78%); box-shadow: 0 34px 110px #000b,inset 0 1px #fff2; color: #fff6e8; font-family: "DM Sans",Arial,sans-serif; text-align: center; animation: wedding-gift-rise .36s cubic-bezier(.2,.8,.2,1) both; }
@keyframes wedding-gift-rise { from { transform: translateY(14px) scale(.985); } to { transform: none; } }
.wedding-gift-close { position: absolute; top: 12px; right: 14px; display: grid; place-items: center; width: 36px; height: 36px; border: 1px solid #fff3; border-radius: 50%; background: #ffffff0b; color: #fff5df; font-size: 25px; line-height: 1; cursor: pointer; }
.wedding-gift-kicker { display: flex; justify-content: center; align-items: center; gap: 9px; color: #edce83; font-size: 8px; font-weight: 800; letter-spacing: .17em; }
.wedding-gift-kicker span { font-size: 12px; }
.wedding-gift-panel h2 { margin: 15px 0 17px; color: #fff7e9; font: 600 clamp(34px,8vw,45px)/.98 "Playfair Display",Georgia,serif; letter-spacing: -.04em; }
.wedding-gift-panel h2 em { color: #efd38b; font-weight: 600; }
.wedding-gift-couple { display: flex; align-items: center; justify-content: center; gap: 15px; margin: 0 auto 20px; padding: 13px 16px; border: 1px solid #edcf8e38; border-radius: 16px; background: linear-gradient(110deg,#ffffff08,#e6ca8610); text-align: left; }
.wedding-gift-photos { position: relative; flex: 0 0 90px; width: 90px; height: 68px; }
.wedding-gift-photos img { position: absolute; top: 3px; width: 62px; height: 62px; border: 2px solid #f4d996; border-radius: 50%; background: #58453c; object-fit: cover; box-shadow: 0 3px 14px #0008; }
#gift-bride-photo { left: 0; z-index: 1; }
#gift-groom-photo { right: 0; }
#gift-cover-photo { inset: 0; width: 68px; height: 68px; margin: auto; border-radius: 14px; }
#gift-photo-fallback { position: absolute; inset: 0; display: grid; place-items: center; color: #f3d58e; font-size: 39px; }
#gift-photo-fallback[hidden] { display: none; }
.wedding-gift-eyebrow,.wedding-gift-couple small { display: block; color: #d6c6a2; font-size: 8px; letter-spacing: .12em; }
.wedding-gift-couple strong { display: block; margin: 3px 0 5px; color: #fff2d5; font: 600 19px/1.1 "Playfair Display",Georgia,serif; }
.wedding-gift-couple small { font-size: 9px; letter-spacing: .02em; }
.wedding-gift-prompt { margin: 0 0 9px; color: #f2dfb9; font-size: 11px; font-weight: 700; }
.wedding-gift-products-heading { display: flex; justify-content: space-between; align-items: center; margin: 0 0 9px; }
.wedding-gift-products-heading .wedding-gift-prompt { margin: 0; text-align: left; }
.wedding-gift-products-heading > span { color: #c9c2b1; font-size: 7px; font-weight: 700; letter-spacing: .13em; }
.wedding-gift-products { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; text-align: left; }
.gift-product { min-width: 0; padding: 7px; border: 1px solid #fff2; border-radius: 14px; background: #ffffff07; color: #fff6e8; text-align: left; cursor: pointer; transition: border-color .18s ease,background .18s ease,transform .18s ease,box-shadow .18s ease; }
.gift-product:hover { transform: translateY(-2px); }
.gift-product.selected { border-color: #efd38b; background: #d7b86e16; box-shadow: inset 0 0 0 1px #efd38b30,0 5px 18px #d4a84a12; }
.gift-product-art { position: relative; display: grid; place-items: center; width: 100%; height: 96px; overflow: hidden; border-radius: 9px; background: radial-gradient(ellipse at 50% 90%,#d7b86530,transparent 65%),linear-gradient(135deg,#4a5544,#222e27); }
.gift-product-info { display: grid; gap: 3px; padding: 7px 3px 2px; }
.gift-product-info strong { overflow: hidden; color: #fff3d6; font: 600 12px/1.2 "Playfair Display",Georgia,serif; text-overflow: ellipsis; white-space: nowrap; }
.gift-product-info small { min-height: 19px; color: #bfc5b8; font-size: 8px; line-height: 1.25; }
.gift-product-info b { color: #edcf83; font-size: 11px; }
.product-photo { width: 100%; height: 100%; object-fit: cover; }
.mug-handle { position: absolute; width: 22px; height: 28px; margin-left: 47px; border: 5px solid #dedbd2; border-left: 0; border-radius: 0 14px 14px 0; box-shadow: 2px 3px 5px #0006; }
.mug-body { position: relative; display: grid; place-items: center; width: 51px; height: 58px; padding: 7px; border: 1px solid #fff; border-radius: 4px 4px 12px 12px; background: linear-gradient(105deg,#b9b8b1,#fff 35%,#e8e5dc 78%,#aaa99f); box-shadow: inset -4px 0 7px #8a8a8218,0 5px 8px #0007; }
.mug-body .product-photo { width: 34px; height: 35px; border-radius: 3px; }
.mug-body > b { position: absolute; bottom: 3px; right: 6px; color: #a33645; font-size: 8px; }
.frame-body { width: 62px; height: 72px; padding: 7px; border: 6px ridge #b6873e; background: linear-gradient(135deg,#f2d995,#8a5c2f); box-shadow: 0 6px 12px #0009; transform: rotate(-3deg); }
.frame-body .product-photo { border: 2px solid #fff5e4; }
.cushion-body { position: relative; display: grid; place-items: center; width: 76px; height: 62px; padding: 10px; border: 1px solid #fff9ee; border-radius: 19px 13px 18px 12px; background: linear-gradient(145deg,#eee7d9,#c7b9a1); box-shadow: inset 0 0 12px #9c866644,0 7px 12px #0007; transform: rotate(-4deg); }
.cushion-body:before { position: absolute; inset: 5px; border: 1px dashed #aa9270; border-radius: 15px 10px 14px 9px; content: ""; }
.cushion-body .product-photo { width: 35px; height: 34px; border: 2px solid #fff9; border-radius: 50%; }
.hamper-box { position: relative; display: grid; place-items: center; width: 82px; height: 49px; margin-top: 20px; border: 3px solid #c38d43; border-radius: 3px 3px 9px 9px; background: linear-gradient(90deg,#804c35,#b97945,#7a472f); box-shadow: 0 7px 13px #0007; }
.hamper-box:before { position: absolute; left: 8px; right: 8px; top: -25px; height: 25px; border: 3px solid #c9904a; border-bottom: 0; border-radius: 30px 30px 0 0; content: ""; }
.hamper-box i { position: absolute; left: 8px; top: -32px; color: #ffc75e; font-size: 20px; }
.hamper-box b { color: #fce2a5; font: 700 7px "DM Sans",sans-serif; letter-spacing: .12em; }
.hamper-box em { position: absolute; bottom: 3px; color: #ffd883; font-size: 12px; font-style: normal; }
.hamper-bow { position: absolute; top: 22px; right: calc(50% - 59px); color: #f4cd7a; font-size: 21px; }
.plaque-body { position: relative; display: grid; place-items: center; width: 81px; height: 56px; padding: 8px; border: 3px solid #d7bd7b; border-radius: 7px; background: linear-gradient(135deg,#744238,#321f25); box-shadow: 0 6px 12px #0008; }
.plaque-body .product-photo { border-radius: 3px; }
.plaque-body i { position: absolute; right: -9px; top: -11px; color: #ffe29a; font-size: 18px; font-style: normal; text-shadow: 0 2px 4px #000; }
.calendar-body { position: relative; display: grid; grid-template-rows: 16px 1fr; width: 59px; height: 73px; padding: 5px; border: 1px solid #ead99f; border-radius: 4px; background: #fcf7e9; box-shadow: 0 6px 12px #0008; transform: rotate(3deg); }
.calendar-body > span { color: #944349; font: 800 8px "DM Sans",sans-serif; text-align: center; }
.calendar-body .product-photo { border-radius: 2px; }
.calendar-body > b { position: absolute; right: 8px; bottom: 7px; color: #edcd7b; font-size: 10px; }
.custom-art > span { display: grid; place-items: center; width: 64px; height: 64px; border: 1px solid #f0d38c; border-radius: 50%; color: #f2d48c; font-size: 15px; box-shadow: 0 0 28px #edcf8330,inset 0 0 18px #edcf8314; }
.custom-art b { color: #fff4da; font: 700 9px/1.05 "DM Sans",sans-serif; letter-spacing: .13em; text-align: center; }
.gift-personalisation { display: grid; gap: 6px; margin-top: 13px; text-align: left; }
.gift-personalisation-title { margin-bottom: 2px; color: #ebce87; font-size: 8px; font-weight: 800; letter-spacing: .15em; }
.gift-personalisation label { color: #d8d1c1; font-size: 9px; font-weight: 700; }
.gift-personalisation label span { float: right; color: #a5a99f; font-size: 7px; letter-spacing: .1em; }
.gift-personalisation input[type="text"],.gift-personalisation textarea { width: 100%; resize: vertical; padding: 9px 10px; border: 1px solid #fff2; border-radius: 9px; outline: none; background: #0002; color: #fff6e8; font: 11px "DM Sans",Arial,sans-serif; }
.gift-personalisation input[type="text"]:focus,.gift-personalisation textarea:focus { border-color: #ebce87; }
.gift-personalisation textarea { min-height: 47px; }
.gift-personalisation input[type="file"] { width: 100%; color: #c9c2b1; font: 9px "DM Sans",Arial,sans-serif; }
.gift-upload-label { margin-top: 2px; }
.wedding-gift-send { width: 100%; min-height: 48px; margin-top: 12px; padding: 0 15px; border: 1px solid #f0d58f; border-radius: 12px; background: linear-gradient(110deg,#d4ad5d,#f1d792 55%,#d4ad5d); box-shadow: 0 9px 22px #bc8c3a2b,inset 0 1px #fff9; color: #2d251a; font: 800 9px "DM Sans",Arial,sans-serif; letter-spacing: .12em; cursor: pointer; }
.wedding-gift-send span { float: right; margin-right: 7px; font-size: 16px; }
.wedding-gift-note { min-height: 26px; margin: 10px 0 0; color: #f3d995; font-size: 9px; line-height: 1.5; }
.wedding-gift-secure { margin: 0; color: #9ea89e; font-size: 8px; line-height: 1.5; }
@media(max-width:480px) {
  .wedding-gift-modal { padding: 10px; }
  .wedding-gift-panel { padding: 27px 17px 19px; border-radius: 20px; }
  .wedding-gift-couple { gap: 10px; padding: 11px; }
  .wedding-gift-photos { flex-basis: 78px; width: 78px; height: 60px; }
  .wedding-gift-photos img { width: 56px; height: 56px; }
  #gift-cover-photo { width: 62px; height: 62px; }
  .wedding-gift-couple strong { font-size: 17px; }
}
@media(prefers-reduced-motion:reduce) { .wedding-gift-modal,.wedding-gift-panel { animation:none; transition:none; } }
