/* Unique gifts v114. The base gift image/model is never recolored or modified. */
.ug-art{position:relative;isolation:isolate;overflow:hidden;background:#111;border-radius:inherit}
.ug-art,.ug-art *{box-sizing:border-box}
.ug-art__backdrop{position:absolute;z-index:0;inset:-15%;background:var(--ug-background,#111);filter:blur(var(--ug-bg-blur,36px)) saturate(1.14);transform:scale(1.08);transform-origin:center;pointer-events:none}
.ug-art__shine{position:absolute;z-index:2;inset:0;background:radial-gradient(circle at 50% 18%,rgba(255,255,255,.18),transparent 44%),linear-gradient(180deg,rgba(255,255,255,.07),transparent 34%,rgba(0,0,0,.13));pointer-events:none}
.ug-art__gift{position:absolute;z-index:4;left:14%;right:14%;top:13%;bottom:13%;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 18px 28px rgba(0,0,0,.22))}
.ug-art__gift>[data-gift-media],.ug-art__gift>.ug-gift-media{width:100%;height:100%}
.ug-art__serial{position:absolute;z-index:6;right:10px;bottom:10px;padding:5px 8px;border:1px solid rgba(255,255,255,.20);border-radius:999px;background:rgba(0,0,0,.25);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);font-size:10px;font-weight:900;letter-spacing:.03em;color:var(--ug-text-color,#fff);text-shadow:0 1px 8px rgba(0,0,0,.35)}

/* Telegram-like scattered pattern field. */
.ug-art__pattern{position:absolute;z-index:1;inset:0;pointer-events:none;transform-origin:center;will-change:transform,filter,opacity}
.ug-art__pattern-node{position:absolute;left:var(--x);top:var(--y);width:var(--s);aspect-ratio:1/1;transform:translate(-50%,-50%) rotate(var(--r,0deg));background:var(--ug-pattern-color,#fff);opacity:var(--a,.20);-webkit-mask-image:var(--ug-pattern-url);mask-image:var(--ug-pattern-url);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;filter:drop-shadow(0 1px 1px rgba(0,0,0,.06));will-change:opacity,filter,scale,translate}
.ug-art__pattern-node:nth-child(1){--x:50%;--y:8%;--s:7.5%;--a:.25;--r:-5deg}
.ug-art__pattern-node:nth-child(2){--x:68%;--y:14%;--s:8.6%;--a:.22;--r:7deg}
.ug-art__pattern-node:nth-child(3){--x:82%;--y:27%;--s:7.2%;--a:.20;--r:-8deg}
.ug-art__pattern-node:nth-child(4){--x:89%;--y:46%;--s:9.0%;--a:.25;--r:5deg}
.ug-art__pattern-node:nth-child(5){--x:84%;--y:66%;--s:7.0%;--a:.19;--r:-7deg}
.ug-art__pattern-node:nth-child(6){--x:73%;--y:81%;--s:8.4%;--a:.23;--r:6deg}
.ug-art__pattern-node:nth-child(7){--x:55%;--y:90%;--s:7.4%;--a:.20;--r:-5deg}
.ug-art__pattern-node:nth-child(8){--x:37%;--y:87%;--s:8.8%;--a:.24;--r:8deg}
.ug-art__pattern-node:nth-child(9){--x:20%;--y:76%;--s:7.1%;--a:.20;--r:-6deg}
.ug-art__pattern-node:nth-child(10){--x:11%;--y:57%;--s:9.0%;--a:.25;--r:6deg}
.ug-art__pattern-node:nth-child(11){--x:15%;--y:36%;--s:7.5%;--a:.19;--r:-5deg}
.ug-art__pattern-node:nth-child(12){--x:28%;--y:18%;--s:8.5%;--a:.23;--r:7deg}
.ug-art__pattern-node:nth-child(13){--x:94%;--y:13%;--s:5.8%;--a:.14;--r:-12deg}
.ug-art__pattern-node:nth-child(14){--x:95%;--y:84%;--s:6.2%;--a:.15;--r:10deg}
.ug-art__pattern-node:nth-child(15){--x:6%;--y:87%;--s:6.3%;--a:.15;--r:-9deg}
.ug-art__pattern-node:nth-child(16){--x:5%;--y:15%;--s:5.9%;--a:.14;--r:11deg}
.ug-art__pattern-node:nth-child(17){--x:69%;--y:96%;--s:5.8%;--a:.14;--r:-7deg}
.ug-art__pattern-node:nth-child(18){--x:31%;--y:96%;--s:5.8%;--a:.14;--r:8deg}

/* Ten animation styles. They animate only the pattern layer. */
.ug-pattern--anim-twinkle .ug-art__pattern-node{animation:ug-pat-twinkle 2.4s ease-in-out infinite;animation-delay:calc(var(--n) * -0.13s)}
@keyframes ug-pat-twinkle{0%,100%{opacity:.08}50%{opacity:.32;filter:brightness(1.35) drop-shadow(0 0 5px rgba(255,255,255,.26))}}
.ug-pattern--anim-pulse .ug-art__pattern-node{animation:ug-pat-pulse 3.1s ease-in-out infinite;animation-delay:calc(var(--n) * -0.08s)}
@keyframes ug-pat-pulse{0%,100%{scale:.94}50%{scale:1.10}}
.ug-pattern--anim-shimmer{overflow:hidden}
.ug-pattern--anim-shimmer:after{content:"";position:absolute;inset:-20% -45%;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.22) 49%,rgba(255,255,255,.40) 50%,rgba(255,255,255,.20) 51%,transparent 60%);mix-blend-mode:screen;transform:translateX(-40%);animation:ug-pat-shimmer 3.8s ease-in-out infinite}
@keyframes ug-pat-shimmer{0%,18%{transform:translateX(-42%)}70%,100%{transform:translateX(42%)}}
.ug-pattern--anim-drift{animation:ug-pat-drift 7s ease-in-out infinite alternate}
@keyframes ug-pat-drift{from{translate:-4px 2px}to{translate:5px -3px}}
.ug-pattern--anim-breathe{animation:ug-pat-breathe 4.6s ease-in-out infinite}
@keyframes ug-pat-breathe{0%,100%{scale:.985;opacity:.92}50%{scale:1.035;opacity:1}}
.ug-pattern--anim-rotate{animation:ug-pat-rotate 10s ease-in-out infinite alternate}
@keyframes ug-pat-rotate{from{rotate:-1.8deg}to{rotate:1.8deg}}
.ug-pattern--anim-wave .ug-art__pattern-node{animation:ug-pat-wave 2.8s ease-in-out infinite;animation-delay:calc(var(--n) * -0.11s)}
@keyframes ug-pat-wave{0%,100%{translate:0 -2px}50%{translate:0 3px}}
.ug-pattern--anim-sparkle .ug-art__pattern-node{animation:ug-pat-sparkle 2.1s ease-in-out infinite;animation-delay:calc(var(--n) * -0.17s)}
@keyframes ug-pat-sparkle{0%,72%,100%{filter:brightness(1) drop-shadow(0 0 0 transparent)}82%{filter:brightness(1.85) drop-shadow(0 0 7px rgba(255,255,255,.50))}}
.ug-pattern--anim-float{animation:ug-pat-float 5.6s ease-in-out infinite}
@keyframes ug-pat-float{0%,100%{translate:0 0}50%{translate:0 -6px}}
.ug-pattern--anim-glow .ug-art__pattern-node{animation:ug-pat-glow 3.6s ease-in-out infinite;animation-delay:calc(var(--n) * -0.09s)}
@keyframes ug-pat-glow{0%,100%{filter:drop-shadow(0 0 1px rgba(255,255,255,.10)) brightness(1)}50%{filter:drop-shadow(0 0 8px rgba(255,255,255,.42)) brightness(1.35)}}

/* Attribute rows in the modal. */
.ug-traits{display:grid;gap:8px}
.ug-trait{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 10px;border:1px solid rgba(148,163,184,.18);border-radius:17px;background:rgba(248,250,252,.78)}
.dark .ug-trait{border-color:rgba(255,255,255,.08);background:rgba(255,255,255,.035)}
.ug-trait-preview{position:relative;display:block;width:42px;height:42px;overflow:hidden;border-radius:13px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.16),0 3px 12px rgba(15,23,42,.08);background:#111}
.ug-trait-preview--background i{position:absolute;inset:-55%;transform:scale(.9)}
.ug-trait-preview--pattern{background:#1f2937}
.ug-trait-preview--pattern:before{content:"";position:absolute;inset:7px;background:#fff;-webkit-mask-image:var(--p);mask-image:var(--p);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.ug-trait-preview--animation{background:radial-gradient(circle at 50% 45%,#a78bfa,#4f46e5 55%,#111827)}
.ug-trait-preview--animation i{position:absolute;left:50%;top:50%;width:11px;height:11px;margin:-5.5px;border-radius:50%;background:#fff;box-shadow:0 0 14px rgba(255,255,255,.75);animation:ug-anim-preview 1.6s ease-in-out infinite}
@keyframes ug-anim-preview{0%,100%{scale:.7;opacity:.45}50%{scale:1.22;opacity:1}}
.ug-trait-copy{min-width:0}.ug-trait-copy span{display:block;font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#94a3b8}.ug-trait-copy strong{display:block;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:800;color:#0f172a}.dark .ug-trait-copy strong{color:#fafafa}
.ug-trait-rarity{text-align:right}.ug-trait-rarity b{display:block;font-size:11px;font-weight:900;color:#475569}.dark .ug-trait-rarity b{color:#d4d4d8}.ug-trait-rarity small{display:block;margin-top:1px;font-size:9px;font-weight:700;color:#94a3b8}

/* Modal + reveal. */
.ug-modal-sheet{position:relative;max-width:400px;max-height:calc(100dvh - 28px);overflow-y:auto;overscroll-behavior:contain;border:1px solid rgba(148,163,184,.22);border-radius:30px;background:rgba(255,255,255,.96);box-shadow:0 36px 110px rgba(15,23,42,.30);backdrop-filter:blur(28px) saturate(1.25);-webkit-backdrop-filter:blur(28px) saturate(1.25)}
.dark .ug-modal-sheet{background:rgba(12,12,14,.96);border-color:rgba(255,255,255,.09);box-shadow:0 40px 120px rgba(0,0,0,.58)}
#giftInfoModal #giftInfoSheet.ug-modal-sheet{max-width:400px!important;max-height:calc(100dvh - 10px)!important;overflow-x:hidden!important;overflow-y:auto!important;-webkit-overflow-scrolling:touch;scrollbar-width:none}#giftInfoModal #giftInfoSheet.ug-modal-sheet::-webkit-scrollbar{width:0;height:0}
.ug-modal-grabber{position:relative;width:100%;height:24px;margin:0;border-radius:0;background:transparent;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none}.ug-modal-grabber:before{content:"";position:absolute;left:50%;top:9px;width:38px;height:5px;transform:translateX(-50%);border-radius:999px;background:rgba(100,116,139,.28)}.dark .ug-modal-grabber:before{background:rgba(235,235,245,.24)}
.ug-modal-close{position:absolute;z-index:30;right:12px;top:12px;display:flex;width:36px;height:36px;align-items:center;justify-content:center;border-radius:999px;background:rgba(255,255,255,.72);color:#475569;box-shadow:0 2px 14px rgba(15,23,42,.08);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.ug-modal-close svg{width:18px;height:18px}.ug-modal-close:hover{background:#fff}.dark .ug-modal-close{background:rgba(23,23,23,.74);color:#d4d4d8}.dark .ug-modal-close:hover{background:#262626}
.ug-modal-loading{padding:70px 24px;text-align:center}.ug-loading-orb{width:52px;height:52px;margin:auto;border-radius:50%;background:conic-gradient(from 0deg,#60a5fa,#a78bfa,#f472b6,#60a5fa);-webkit-mask:radial-gradient(circle at center,transparent 55%,#000 57%);mask:radial-gradient(circle at center,transparent 55%,#000 57%);animation:ug-spin .85s linear infinite}@keyframes ug-spin{to{transform:rotate(360deg)}}
.ug-modal-art-wrap{position:relative;aspect-ratio:1/1;width:min(100%,340px);margin-left:auto;margin-right:auto;overflow:hidden;border-radius:24px;background:#f1f5f9;box-shadow:0 12px 34px rgba(15,23,42,.12)}.dark .ug-modal-art-wrap{background:#171717;box-shadow:0 16px 40px rgba(0,0,0,.34)}
.ug-eyebrow{font-size:10px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:#94a3b8}
.ug-primary-button,.ug-secondary-button{display:flex;width:100%;height:46px;align-items:center;justify-content:center;border:0;border-radius:15px;font-size:13px;font-weight:900;transition:transform .15s ease,opacity .15s ease,background .15s ease}.ug-primary-button{gap:7px;background:#111827;color:#fff}.ug-primary-button span{opacity:.72}.ug-primary-button:hover{background:#020617}.ug-primary-button:active,.ug-secondary-button:active{transform:scale(.985)}.ug-primary-button:disabled{opacity:.48;cursor:not-allowed}.dark .ug-primary-button{background:#fafafa;color:#09090b}.dark .ug-primary-button:hover{background:#fff}
.ug-secondary-button{border:1px solid rgba(148,163,184,.22);background:rgba(248,250,252,.82);color:#334155}.ug-secondary-button:hover{background:#f1f5f9}.dark .ug-secondary-button{border-color:rgba(255,255,255,.08);background:rgba(255,255,255,.04);color:#e5e7eb}.dark .ug-secondary-button:hover{background:rgba(255,255,255,.07)}
.ug-sender{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:16px;background:rgba(148,163,184,.07);transition:background .15s ease}.ug-sender:hover{background:rgba(148,163,184,.12)}
.ug-reels{display:grid;gap:8px}.ug-reel{display:flex;align-items:center;justify-content:space-between;gap:12px;height:48px;padding:0 14px;border:1px solid rgba(148,163,184,.17);border-radius:16px;background:rgba(248,250,252,.8);overflow:hidden}.dark .ug-reel{border-color:rgba(255,255,255,.08);background:rgba(255,255,255,.035)}.ug-reel span{font-size:10px;font-weight:900;letter-spacing:.09em;text-transform:uppercase;color:#94a3b8}.ug-reel strong{max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:900;color:#0f172a;animation:ug-reel-pulse .34s ease-in-out infinite alternate}.dark .ug-reel strong{color:#fafafa}@keyframes ug-reel-pulse{from{opacity:.55;transform:translateY(-1px)}to{opacity:1;transform:translateY(1px)}}
.ug-reveal-flash{pointer-events:none;position:absolute;z-index:18;inset:0;opacity:0;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.95),rgba(255,255,255,.38) 22%,transparent 58%)}.ug-reveal-flash.is-on{animation:ug-flash .72s ease-out}@keyframes ug-flash{0%{opacity:0}18%{opacity:1}100%{opacity:0}}
.ug-confetti{pointer-events:none;position:absolute;z-index:25;inset:0;overflow:visible}.ug-confetti i{position:absolute;left:50%;top:50%;width:7px;height:12px;border-radius:2px;opacity:0;transform:translate(-50%,-50%)}.ug-confetti.is-bursting i{animation:ug-confetti var(--d) cubic-bezier(.12,.7,.2,1) var(--delay) forwards}@keyframes ug-confetti{0%{opacity:0;transform:translate(-50%,-50%) scale(.4) rotate(0)}10%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--x)),calc(-50% + var(--y))) scale(.9) rotate(var(--r))}}
.ug-art--won{animation:ug-win-pop .62s cubic-bezier(.18,.89,.32,1.3)}@keyframes ug-win-pop{0%{transform:scale(.97)}45%{transform:scale(1.035)}100%{transform:scale(1)}}

/* Compact ordinary gift modal while preserving name/sender/date. */
.ug-modal-sheet--plain #giftInfoDetails{display:flex;flex-direction:column;padding-top:10px;padding-bottom:14px}
.ug-modal-sheet--plain #giftInfoHeader{order:1;display:block!important}
.ug-modal-sheet--plain #giftInfoHeader #giftInfoEyebrow,.ug-modal-sheet--plain #giftInfoHeader #giftInfoSubtitle{display:none!important}
.ug-modal-sheet--plain #giftInfoName{margin-top:0;font-size:18px;line-height:1.2}
.ug-modal-sheet--plain #giftInfoFromLink{order:2;display:flex!important;margin-top:8px}
.ug-modal-sheet--plain #giftUpgradeBlock{order:3;margin-top:10px}
.ug-modal-sheet--plain .ug-primary-button{height:48px;border-radius:16px;font-size:14px}
.ug-modal-sheet--plain #giftUniqueBlock{display:none!important}
.ug-modal-sheet--plain #giftInfoContent>.px-4{padding-top:10px}

@media(max-height:720px) and (min-width:640px){.ug-modal-art-wrap{width:min(100%,300px)}.ug-modal-sheet--plain #giftInfoContent>.px-4{padding-top:10px}.ug-modal-sheet--plain #giftInfoDetails{padding-top:8px;padding-bottom:12px}}
@media(max-width:639px){.ug-modal-sheet{max-width:none;max-height:calc(100dvh - 10px);border-radius:28px 28px 0 0;border-bottom:0}.ug-modal-art-wrap{width:min(100%,360px);border-radius:25px}.ug-modal-close{top:13px}.ug-modal-sheet--plain #giftInfoContent>.px-4{padding-top:10px}.ug-modal-sheet--plain #giftInfoDetails{padding-left:14px;padding-right:14px;padding-bottom:max(14px,env(safe-area-inset-bottom))}.ug-art__pattern-node{filter:none}}
@media(prefers-reduced-motion:reduce){.ug-loading-orb,.ug-reel strong,.ug-art--won,.ug-confetti.is-bursting i,.ug-reveal-flash.is-on,.ug-art__pattern,.ug-art__pattern-node,.ug-trait-preview--animation i{animation:none!important;translate:none!important;rotate:none!important;scale:1!important}}

.ug-roulette-overlay{pointer-events:none;position:absolute;inset:0;z-index:18;display:flex;flex-direction:column;justify-content:space-between;padding:14px}.ug-roulette-overlay__top{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding-top:2px}.ug-roulette-overlay__badge{display:inline-flex;align-items:center;justify-content:center;height:28px;padding:0 12px;border-radius:999px;background:rgba(15,23,42,.46);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:#fff;font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;box-shadow:0 10px 28px rgba(0,0,0,.18)}.ug-roulette-overlay__title{max-width:86%;padding:0 14px;color:#fff;font-size:24px;line-height:1.05;font-weight:950;letter-spacing:-.03em;text-shadow:0 10px 30px rgba(0,0,0,.32)}.ug-roulette-overlay__status{max-width:82%;color:rgba(255,255,255,.82);font-size:12px;font-weight:700;line-height:1.3;text-shadow:0 2px 12px rgba(0,0,0,.28)}.ug-roulette-overlay__bottom{display:grid;grid-template-columns:1fr;gap:8px;padding-bottom:2px}.ug-roulette-chip{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:0 14px;border:1px solid rgba(255,255,255,.14);border-radius:15px;background:rgba(15,23,42,.42);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 10px 28px rgba(0,0,0,.18)}.ug-roulette-chip span{font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.62)}.ug-roulette-chip strong{max-width:68%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:900;color:#fff;text-align:right;text-shadow:0 2px 12px rgba(0,0,0,.28)}@media(min-width:640px){.ug-roulette-overlay{padding:16px}.ug-roulette-overlay__title{font-size:26px}.ug-roulette-overlay__bottom{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.ug-roulette-chip{min-height:48px;flex-direction:column;justify-content:center;align-items:flex-start;padding:8px 10px}.ug-roulette-chip strong{max-width:100%;text-align:left}}@media(max-width:639px){.ug-roulette-overlay__title{font-size:22px}.ug-roulette-overlay__status{max-width:90%;font-size:11px}.ug-roulette-chip{min-height:42px;padding:0 12px}.ug-roulette-chip strong{font-size:12px}}

/* v118 — one current roulette trait on the gift; landed traits appear below immediately. */
.ug-roulette-overlay__bottom{display:block!important;padding-bottom:2px}.ug-roulette-chip--single{width:100%;min-height:48px;display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:space-between!important;padding:0 14px!important}.ug-roulette-chip--single strong{max-width:72%!important;text-align:right!important}.ug-roulette-results__caption{font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:#94a3b8}.dark .ug-roulette-results__caption{color:#737373}#giftRouletteResults .ug-traits{margin-top:8px}@media(min-width:640px){.ug-roulette-overlay__bottom{display:block!important}.ug-roulette-chip--single{min-height:50px!important;flex-direction:row!important;align-items:center!important;padding:0 14px!important}.ug-roulette-chip--single strong{max-width:72%!important;text-align:right!important}}

/* Unique gift card inside messenger gift events. */
.chat-gift-unique-art{width:100%;height:100%;min-height:100%;border-radius:24px}
.chat-gift-unique-art .ug-art__gift{left:13%;right:13%;top:12%;bottom:12%}
.chat-msg-gift .chat-gift-card-media>a{width:100%;height:100%}

/* v125: exact-looking rasterized backdrop only for small /gifts cards.
   The full opened gift still uses the original live CSS blur. */
.ug-art--compact .ug-art__backdrop{inset:0;background:var(--ug-bg-preview),var(--ug-background,#111);background-size:cover;background-position:center;filter:none;transform:none}
.ug-art--compact .ug-art__pattern,.ug-art--compact .ug-art__pattern-node{will-change:auto}
.ug-art--offscreen .ug-art__pattern,.ug-art--offscreen .ug-art__pattern-node,.ug-art--offscreen .ug-art__pattern:after{animation-play-state:paused!important}

/* v173 — mobile gift sheet: true edge-to-edge and keep sender clear of bottom edge. */
@media (max-width:639px){
  #giftInfoModal #giftInfoSheet.ug-modal-sheet{
    width:100%!important;
    max-width:100%!important;
    margin-left:0!important;
    margin-right:0!important;
    border-left:0!important;
    border-right:0!important;
  }
  #giftInfoModal [data-app-modal-stage]{
    padding-left:0!important;
    padding-right:0!important;
  }
  #giftInfoModal #giftInfoSheet.ug-modal-sheet--plain #giftInfoDetails{
    padding-bottom:max(32px,calc(env(safe-area-inset-bottom) + 18px))!important;
  }
  #giftInfoModal #giftInfoSheet.ug-modal-sheet--plain #giftInfoFromLink{
    margin-top:8px!important;
    margin-bottom:0!important;
  }
}
