/* Keep original geometry: photo area 3:4 plus original caption/border allowance30px. */
/* Owner requested: only maximize feed photo and overlay actual upcoming-game text. */
.dw .body.feedbody{padding-top:0!important}
.dw .body.feedbody .feedstack{flex:1 1 0%!important;flex-basis:0px!important;min-height:0!important}
.dw .body.feedbody :is(.feedcard,.nextpreview){min-height:0!important;position:relative!important}
.dw .body.feedbody .feedgallery{flex:none!important;width:var(--original-frame-width,var(--frame-width,100%))!important;height:var(--original-frame-height,var(--frame-height,auto))!important;align-self:center!important;min-height:0!important;aspect-ratio:auto!important}
.dw .body.feedbody .feedinfo{position:absolute!important;z-index:4!important;left:calc(var(--original-frame-gutter,0px) + 12px)!important;right:calc(var(--original-frame-gutter,0px) + 112px)!important;bottom:auto!important;top:calc(var(--original-frame-height,var(--frame-height,100%)) - 12px)!important;transform:translateY(-100%);padding:0!important;margin:0!important;height:auto!important;min-height:0!important;max-height:56px!important;flex:none!important;pointer-events:none;background:transparent!important}
.dw .body.feedbody .feedinfo:has(.invite-motivation),.dw .body.feedbody :is(.feedcard,.nextpreview):has(.summary-slide[aria-hidden="false"]) .feedinfo{display:none!important}
.dw .body.feedbody .feedinfo .feedgame{color:var(--game-photo-ink,#FF961A)!important;font-weight:600;line-height:18px!important;font-size:13px!important;max-height:54px!important;-webkit-line-clamp:3!important;text-shadow:var(--game-photo-shadow,0 1px 3px #000b)}

/* Name/city directly on the photo, without the old solid cap. */
.dw .body.feedbody .feedgallery .photo-identity{top:10px!important;left:10px!important;right:10px!important;bottom:auto!important;width:auto!important;height:auto!important;background:transparent!important;padding:0!important}
.dw .body.feedbody .feedgallery .photo-identity:before,.dw .body.feedbody .feedgallery .photo-identity:after{content:none!important;display:none!important;background:none!important}
.dw .body.feedbody .feedgallery .photo-identity-row{height:auto!important;padding:0!important;background:transparent!important;color:var(--top-photo-ink,#FF961A)!important;text-shadow:var(--top-photo-shadow,0 1px 3px #000b)!important;font-size:18px!important;line-height:24px!important}
.dw .body.feedbody .feedgallery .photo-identity .photo-name,.dw .body.feedbody .feedgallery .photo-identity .photo-age,.dw .body.feedbody .feedgallery .photo-identity .photo-city{color:inherit!important;background:transparent!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-text-stroke:0!important;text-shadow:inherit!important}

/* One stable container computes geometry for current AND queued cards before paint. */
.dw .body.feedbody .feedstack{container-type:size;--original-frame-width:min(100cqw,calc((100cqh - 30px)*.75 + 4px));--original-frame-height:calc((var(--original-frame-width) - 4px)*4/3 + 30px);--original-frame-gutter:calc((100cqw - var(--original-frame-width))/2)}
.dw .body.feedbody :is(.feedcard,.nextpreview){height:100%!important;flex:1 1 0%!important}

.dw .body.feedbody .feedgallery .slide>img{height:100%!important;margin-top:0!important;border-radius:calc(var(--radius-lg) - 2px)!important}

/* Side actions share exactly the same CSS geometry as the photo. */
.dw .body.feedbody :is(.feedcard,.nextpreview) .side-vote{top:0!important;bottom:auto!important;width:var(--original-frame-gutter)!important;height:var(--original-frame-height)!important;box-sizing:border-box!important;max-width:var(--original-frame-gutter)!important;min-width:0!important;margin:0!important;padding:8px!important;overflow:hidden}
.dw .body.feedbody :is(.feedcard,.nextpreview) .side-skip{left:0!important;right:auto!important}
.dw .body.feedbody :is(.feedcard,.nextpreview) .side-like{right:0!important;left:auto!important}

/* Stable readable upper identity over detailed/light/dark photos, without a panel. */
.dw .body.feedbody .feedgallery .photo-identity-row{color:#fff!important;font-size:20px!important;font-weight:700!important;line-height:27px!important;text-shadow:0 1px 2px #000,0 2px 5px #000,0 0 8px #000b!important}
.dw .body.feedbody .feedgallery .photo-identity .photo-name,.dw .body.feedbody .feedgallery .photo-identity .photo-age,.dw .body.feedbody .feedgallery .photo-identity .photo-city{color:#fff!important;-webkit-text-stroke:.65px #24152b!important;paint-order:stroke fill;text-shadow:inherit!important;font-weight:700!important}
.dw .body.feedbody .feedgallery .photo-identity .photo-city{font-size:17px!important}

/* Color is resolved synchronously before paint, never animated between cards. */
.dw .body.feedbody .feedinfo .feedgame,.dw .body.feedbody .photo-identity-row,.dw .body.feedbody .photo-identity-row *{transition:none!important}

/* Adaptive colored identity; padding keeps shadows inside ellipsis clipping boxes. */
.dw .body.feedbody .feedgallery .photo-identity-row{color:var(--top-photo-ink,#FF961A)!important;overflow:visible!important;padding:6px!important;margin:-6px!important}
.dw .body.feedbody .feedgallery .photo-identity .photo-name,.dw .body.feedbody .feedgallery .photo-identity .photo-age,.dw .body.feedbody .feedgallery .photo-identity .photo-city{color:inherit!important;-webkit-text-stroke:.65px var(--top-photo-outline,#24152bbb)!important;padding:4px 6px!important;margin:-4px -6px!important;box-sizing:border-box!important}
.dw .body.feedbody .feedgallery .photo-name-age{padding:6px!important;margin:-6px!important;gap:1px}
.dw .body.feedbody .feedgallery .photo-identity .photo-city{margin-left:8px!important;padding-left:6px!important}
.dw .body.feedbody .feedinfo .feedgame{padding:5px 6px!important;margin:-5px -6px!important;box-sizing:content-box!important;max-height:54px!important}
.dw .body.feedbody .feedinfo{overflow:visible!important}

/* Opposite brand color for shadows on both photo captions. */
.dw .body.feedbody .feedgallery .photo-identity-row{text-shadow:var(--top-photo-shadow,0 1px 2px #512888,0 1px 5px #512888cc)!important}

.dw .body.feedbody :is(.feedcard,.nextpreview):not([data-caption-ready="true"]) .photo-identity,.dw .body.feedbody :is(.feedcard,.nextpreview):not([data-caption-ready="true"]) .feedinfo{visibility:hidden!important}

/* Queued card stays behind current card, never in the flex flow. */
.dw .body.feedbody .nextpreview{position:absolute!important;inset:0!important;height:100%!important;width:100%!important;flex:none!important}
/* Single outer clipping curve avoids colored wedges from two different radii. */
.dw .body.feedbody .feedgallery .slide>img{border-radius:0!important}
.dw .body.feedbody .feedgallery{background:transparent!important}

/* Owner adjustment: slightly larger photo captions, around five percent. */
.dw .body.feedbody .feedgallery .photo-identity-row{font-size:21px!important;line-height:28px!important}
.dw .body.feedbody .feedgallery .photo-identity .photo-city{font-size:18px!important}
.dw .body.feedbody .feedinfo .feedgame{font-size:14px!important;line-height:19px!important;max-height:57px!important}
.dw .body.feedbody .feedinfo{max-height:67px!important}

/* Extra breathing room for wider colored shadows. */
.dw .body.feedbody .feedgallery .photo-name-age{padding:10px!important;margin:-10px!important}
.dw .body.feedbody .feedgallery .photo-identity-row{padding:10px!important;margin:-10px!important}
.dw .body.feedbody .feedgallery .photo-identity .photo-name,.dw .body.feedbody .feedgallery .photo-identity .photo-age,.dw .body.feedbody .feedgallery .photo-identity .photo-city{padding:8px 10px!important;margin-top:-8px!important;margin-bottom:-8px!important}
.dw .body.feedbody .feedinfo .feedgame{padding:10px!important;margin:-10px!important}

/* Keep reaction controls adjacent to the photo on tall WebView screens. */
.dw .body.feedbody{justify-content:flex-start!important}
.dw .body.feedbody .feedstack{flex:0 1 calc((100cqw - 4px)*4/3 + 30px)!important;flex-basis:calc((100cqw - 4px)*4/3 + 30px)!important}
.dw .body.feedbody .ratings{margin-top:0!important}

/* Stable viewport-sized photo frame: fill available height; crop, never distort. */
.dw .body.feedbody .feedstack{flex:1 1 0%!important;flex-basis:0px!important;--original-frame-height:100cqh}
.dw .body.feedbody .feedgallery .slide>img{object-fit:cover!important}
.dw .body.feedbody .ratings{margin-top:0!important}

/* Fit complete name/age and city together, using one shared font size. */
.dw .body.feedbody .feedgallery .photo-identity-row{font-size:var(--identity-fit-size,21px)!important;line-height:1.35!important;display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px!important;white-space:nowrap!important;padding:10px!important;margin:-10px!important}
.dw .body.feedbody .feedgallery .photo-name-age{flex:0 0 auto!important;min-width:0!important;max-width:none!important;width:auto!important;overflow:visible!important;padding:0!important;margin:0!important;white-space:nowrap!important}
.dw .body.feedbody .feedgallery .photo-identity .photo-name,.dw .body.feedbody .feedgallery .photo-identity .photo-age,.dw .body.feedbody .feedgallery .photo-identity .photo-city{font:inherit!important;flex:0 0 auto!important;width:auto!important;max-width:none!important;overflow:visible!important;text-overflow:clip!important;white-space:nowrap!important;padding:0!important;margin:0!important}
