/* #gc-ai-content-css */

.gc-ai-badge{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;
	font:700 11px/1 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
	letter-spacing:.04em;color:#fff;background:#7c3aed;border-radius:6px;padding:3px 6px;
	text-transform:uppercase;vertical-align:middle;white-space:nowrap;}
/* Clip card: pair the chip with the bottom-right duration badge (ManyVids order: AI then time). */
.gc-clip-card__media .gc-ai-badge--card{position:absolute;bottom:0;right:0;z-index:3;}
.gc-ai-badge--profile{font-size:12px;padding:3px 7px;margin-left:8px;}
.gc-ai-badge--page{font-size:13px;padding:4px 8px;margin-left:10px;}
.gc-ai-badge--feed{font-size:10px;padding:2px 6px;}
/* Duration+AI pairing wrapper (added on cards where we control markup). */
.gc-clip-card__br-badges{position:absolute;bottom:0;right:0;z-index:3;display:flex;gap:6px;align-items:flex-end;}
.gc-clip-card__br-badges .gc-clip-card__duration-badge,
.gc-clip-card__br-badges .gc-ai-badge--card{position:static;bottom:auto;right:auto;}
.gc-clip-card__br-badges .gc-ai-badge--card{margin-bottom:2px;}
/* Creator my-profile toggle card + per-clip fieldset. */
.gc-ai-flag-card{margin:18px 0;padding:16px 18px;border:1px solid #2a2f3a;border-radius:12px;background:#151a24;}
.gc-ai-flag-card h3{margin:0 0 6px;font-size:15px;color:#e9ecf3;}
.gc-ai-flag-card p{margin:0 0 12px;font-size:13px;color:#aab3c5;}
.gc-ai-switch{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-size:14px;color:#e9ecf3;}
.gc-ai-switch input{width:18px;height:18px;accent-color:#7c3aed;}
.gc-ai-flag-card[data-locked="1"]{opacity:.85;}
.gc-ai-flag-card .gc-ai-lock-note{color:#f0b429;font-size:12px;margin-top:8px;}
.gc-ai-clip-field{margin:12px 0;}
.gc-ai-clip-field>label{display:block;font-weight:600;margin-bottom:6px;}
.gc-ai-clip-field .gc-ai-clip-opts{display:flex;gap:16px;flex-wrap:wrap;}
.gc-ai-clip-field .gc-ai-clip-opts label{display:inline-flex;align-items:center;gap:6px;font-weight:400;}

/* #gc-mbadge-css */
.gc-clip-card__badges .gc-mbadge{display:inline-block;align-self:flex-start;font-size:10.5px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;padding:3px 7px;border-radius:6px;line-height:1.15;color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.35);margin:0 6px 6px 0}.gc-clip-card__badges .gc-mbadge--new{background:#1b7a42}.gc-clip-card__badges .gc-mbadge--free{background:#2b6cb0}.gc-clip-card__badges .gc-mbadge--bestseller{background:#caa23a;color:#161a22}.gc-clip-card__badges .gc-mbadge--trending{background:#bf4a2f}
/* #gc-clipv-css */
.gc-clipv-strip__row{display:flex;gap:16px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding:4px 2px 14px;scrollbar-width:thin;}.gc-clipv-strip__row>.gc-clip-card{flex:0 0 244px;max-width:244px;scroll-snap-align:start;}.gc-clipv-strip__row::-webkit-scrollbar{height:8px;}.gc-clipv-strip__row::-webkit-scrollbar-thumb{background:var(--gc-border,#334155);border-radius:8px;}.gc-clipv-strip__more{color:var(--gc-text,#eef2f8);text-decoration:underline;text-underline-offset:2px;font-weight:700;white-space:nowrap;}@media(max-width:600px){.gc-clipv-strip__row>.gc-clip-card{flex-basis:72vw;max-width:72vw;}}
/* #gc-media-fit */

/* gc_media_fit_utility_v1 */
.gc-media-fit-on .gc-media-fit { position: relative; overflow: hidden; }

.gc-media-fit-on .gc-media-fit.is-portrait::before,
.gc-media-fit-on .gc-media-fit.is-square::before {
	content: "";
	position: absolute;
	inset: 0;
	background-image: var(--gc-fit-bg, none);
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	/* Dark enough that white overlay text keeps the contrast it was designed for,
	   whatever the clip's own brightness is. Measured per fixture, not eyeballed. */
	filter: blur(30px) brightness(.40) saturate(1.05);
	transform: scale(1.18);
	z-index: 0;
}

.gc-media-fit-on .gc-media-fit.is-portrait > img,
.gc-media-fit-on .gc-media-fit.is-portrait > video,
.gc-media-fit-on .gc-media-fit.is-square > img,
.gc-media-fit-on .gc-media-fit.is-square > video {
	position: relative;
	z-index: 1;
	width: 100%;
	height: 100%;
	object-fit: contain;
}

/* Fixed pixel boxes (64x36, 80x45, 44x44, 54x72, 72x96, fixed heights) get contain on the
   brand dark only -- a 30px blur behind a 44px thumbnail is pure GPU cost for no legibility. */
.gc-media-fit-on .gc-media-fit--flat.is-portrait::before,
.gc-media-fit-on .gc-media-fit--flat.is-square::before { display: none; }
.gc-media-fit-on .gc-media-fit--flat.is-portrait,
.gc-media-fit-on .gc-media-fit--flat.is-square { background-color: var(--gc-deep, #0b1220); }

/* gc_media_watch_fit_v1 -- the clip WATCH player.
   The theme pins .gc-clip-watch-player__media to aspect-ratio:16/9 with
   object-fit:cover, so a 1080x1920 trailer is scaled to the box WIDTH and
   ~69% of the frame is cropped away above and below. Portrait/square media
   gets a height-capped box instead; the shared contain + ::before rules above
   then do the rest, so the watch page looks like the cards rather than like a
   second, separate treatment.
   Height, not aspect-ratio: a 9/16 box at panel width would be ~1400px tall on
   desktop and push the title and buybox entirely below the fold. */
/* gc_watch_player_height_65vh_v1 -- 65vh, not 78vh, and the reason is measured:
   at 78vh the player is 702px on a 1440x900 desktop and "Add to cart" lands at y=977,
   i.e. 77px BELOW the fold, so the only buying path needs a scroll. At 65vh the player
   is 585px and the button sits at y=860, visible on load. The landscape control on the
   same page renders at 586px and never had the problem, which is what pins the cause to
   the player height rather than to the page. The film stays fully visible either way --
   this trades 117px of picture for the buy button. */
.gc-media-fit-on .gc-clip-watch-player__media.gc-media-fit.is-portrait,
.gc-media-fit-on .gc-clip-watch-player__media.gc-media-fit.is-square {
	aspect-ratio: auto;
	height: min(65vh, 760px);
}

/* The video must be SIZED to its own shape, not stretched to the box with
   object-fit:contain. Measured on staging 2026-08-07: with width:100% +
   contain, a PLAYING <video> paints its letterbox bars opaque black in
   Chromium, so the ::before backdrop was painted and then completely hidden --
   the walk screenshot showed black bars where the blurred fill belonged.
   Giving the element `height:100%; width:auto` makes its box the video's own
   aspect ratio, so there are no bars inside it and the backdrop is visible on
   both sides. Does not depend on how a browser chooses to paint letterboxing. */
.gc-media-fit-on .gc-clip-watch-player__media.gc-media-fit.is-portrait > video,
.gc-media-fit-on .gc-clip-watch-player__media.gc-media-fit.is-square > video,
.gc-media-fit-on .gc-clip-watch-player__media.gc-media-fit.is-portrait > img,
.gc-media-fit-on .gc-clip-watch-player__media.gc-media-fit.is-square > img {
	width: auto;
	max-width: 100%;
	height: 100%;
	margin-inline: auto;
	background: transparent;
}

/* The no-preview branch nests its poster one level deeper than the shared
   direct-child rule reaches, so it would keep cropping. */
.gc-media-fit-on .gc-clip-watch-player__media.gc-media-fit.is-portrait .gc-clip-watch-player__noteaser,
.gc-media-fit-on .gc-clip-watch-player__media.gc-media-fit.is-square .gc-clip-watch-player__noteaser {
	height: 100%;
}
.gc-media-fit-on .gc-clip-watch-player__media.gc-media-fit.is-portrait .gc-clip-watch-player__noteaser > img,
.gc-media-fit-on .gc-clip-watch-player__media.gc-media-fit.is-square .gc-clip-watch-player__noteaser > img {
	position: relative;
	z-index: 1;
	height: 100%;
	object-fit: contain;
}

@media (max-width: 782px) {
	.gc-media-fit-on .gc-clip-watch-player__media.gc-media-fit.is-portrait,
	.gc-media-fit-on .gc-clip-watch-player__media.gc-media-fit.is-square {
		height: min(72vh, 640px);
	}
}

/* gc_media_feed_timeline_fit_v1 -- storefront feed (/store/<slug>/#feed).
   The base rule pins every timeline media box to `aspect-ratio:16/9 !important` and the
   video carries an INLINE object-fit:cover, so a 608x1081 post showed 31.6 % of itself.
   Both are overridden here: !important plus higher specificity for the box, and a CSS
   !important for the inline object-fit.
   The box takes the MEDIA's own ratio, so on a phone (card ~305px wide) the post is
   edge to edge with no bars. max-height keeps a desktop card from becoming 1575px tall;
   where the cap bites, the ratio yields and the blurred fill covers the sides. */
.gc-media-fit-on .gc-feed-timeline-item__media.gc-media-fit.is-portrait,
.gc-media-fit-on .gc-feed-timeline-item__media.gc-media-fit.is-square {
	aspect-ratio: var(--gc-fit-ar, 9 / 16) !important;
	max-height: 640px;
	/* gc_media_feed_timeline_blur_v2 -- NOT #000: the ::before fill should be what shows
	   beside a portrait video. The brand dark only appears when there is no fill image. */
	background: var(--gc-deep, #0b1220);
}

/* gc_media_feed_timeline_blur_v2 -- size the media to its OWN shape.
   Measured before this change: box 886x640 and medium 886x640, i.e. the element spanned
   the whole box. object-fit:contain scales the picture but the ELEMENT still covers the
   full area and paints its letterbox opaque, so the blurred ::before underneath was
   invisible and the sides read as black. Giving the element its own width lets the fill
   through. Same mechanism as the watch player -- a letterbox is painted by the element,
   not by the box. */
.gc-media-fit-on .gc-feed-timeline-item__media.gc-media-fit.is-portrait > video,
.gc-media-fit-on .gc-feed-timeline-item__media.gc-media-fit.is-portrait > img,
.gc-media-fit-on .gc-feed-timeline-item__media.gc-media-fit.is-square > video,
.gc-media-fit-on .gc-feed-timeline-item__media.gc-media-fit.is-square > img {
	object-fit: contain !important;
	position: relative;
	z-index: 1;
	height: 100% !important;
	width: auto !important;
	max-width: 100%;
	margin-inline: auto;
	display: block;
	background: transparent;
}

/* gc_media_feed_modal_fit_v2 -- full-post modal in the storefront feed.
   The box KEEPS its height; only the media may be smaller than it. v1 let the box take its
   height from the content, and when the script swapped the poster for a
   <video preload="none"> the box collapsed to 0px and stayed there -- the player looked
   closed. Measured: 40 samples at 0px while the video was already decoding.
   A portrait video is now fully visible and centred, with the box's dark surface beside
   it. Nothing here depends on a size that has not loaded yet. */
.gc-media-fit-on .gc-feed-full__clip {
	display: flex;
	align-items: center;
	justify-content: center;
	background: #000;
}
.gc-media-fit-on .gc-feed-full__clip > img,
.gc-media-fit-on .gc-feed-full__clip .gc-feed-full__clip-poster,
.gc-media-fit-on .gc-feed-full__clip .gc-feed-full__clip-video,
.gc-media-fit-on .gc-feed-full__clip > video {
	width: auto !important;
	max-width: 100%;
	height: 100% !important;
	object-fit: contain !important;
	display: block;
	margin-inline: auto;
}

/* gc_media_feed_lock_and_fill_v3 (1) -- das Schloss gehoert MITTIG UEBER das Medium.
   Es hat position:static; das display:flex des Modal-Fixes machte daraus ein Flex-Element
   NEBEN dem Video, das rechts aus der Box lief (gemessen: rechte Kante 931, Boxrand 918).
   Absolut positioniert nimmt es am Flex-Fluss nicht mehr teil und kann nicht mehr
   abgeschnitten werden -- unabhaengig davon, wie breit die Box gerade ist. */
.gc-media-fit-on .gc-feed-full__clip { position: relative; }
.gc-media-fit-on .gc-feed-full__clip .gc-feed-full__lock-icon,
.gc-media-fit-on .gc-feed-timeline-item__media .gc-feed-timeline-item__lock-icon {
	position: absolute !important;
	left: 50% !important;
	top: 50% !important;
	transform: translate(-50%, -50%) !important;
	margin: 0 !important;
	z-index: 3;
	pointer-events: none;
}

/* gc_media_feed_lock_and_fill_v3 (2) -- Fuellung fuer GROSSE Flaechen.
   Dieselben Filterwerte, die auf der 318x198-Clipkarte Struktur uebrig lassen, ergeben
   auf der rund 9x groesseren Feedbox eine graue Flaeche: `cover` skaliert das Hochkant-
   poster dort viel staerker hoch und blur(30px) buegelt den Rest platt. Also fuer diese
   eine Flaeche weicher zeichnen, weniger abdunkeln, weniger zoomen -- damit der Rand so
   aussieht wie auf den Clipkarten im Store. Die Clipkarten selbst bleiben unberuehrt. */
.gc-media-fit-on .gc-feed-timeline-item__media.gc-media-fit.is-portrait::before,
.gc-media-fit-on .gc-feed-timeline-item__media.gc-media-fit.is-square::before {
	filter: blur(12px) brightness(.62) saturate(1.15);
	transform: scale(1.05);
}

@media (prefers-reduced-motion: reduce) {
	.gc-media-fit-on .gc-media-fit.is-portrait::before,
	.gc-media-fit-on .gc-media-fit.is-square::before { transform: none; }
}

/* #gc-media-badges */

/* gc_media_quality_badges_v1 -- drawn in the site's own language, deliberately NOT the
   licensed Full HD / Ultra HD certification marks (those certify displays, not files). */
.gc-qbadge {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 4px 10px;
	border-radius: 999px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .06em;
	line-height: 1.5;
	white-space: nowrap;
	vertical-align: middle;
}

/* Dark ink on a warm metallic fill. Chosen for contrast, not for looks alone:
   #16100a on #e3ad33 measures ~8.6:1, far above the 4.5 body gate, and stays legible
   in both colour schemes because both stops are fixed rather than themed. */
.gc-qbadge--uhd {
	background: linear-gradient(135deg, #e3ad33, #f0c766);
	color: #16100a;
	border: 1px solid rgba(0, 0, 0, .18);
}
.gc-qbadge--uhd .gc-qbadge__sub {
	background: #16100a;
	color: #f3d089;
	border-radius: 999px;
	padding: 1px 6px;
	font-size: 11px;
	letter-spacing: .04em;
}

/* The common case is deliberately quieter than UHD -- 387 of 403 clips are Full HD,
   so shouting it would flatten the distinction the badge exists to draw. */
.gc-qbadge--fhd,
.gc-qbadge--hd,
.gc-qbadge--vertical {
	background: rgba(255, 255, 255, .06);
	color: #eef1f5;
	border: 1px solid rgba(255, 255, 255, .28);
}
.gc-qbadge__glyph { width: 9px; height: 14px; flex: 0 0 auto; }

/* Light scheme: the translucent white fill would sit on a light panel and collapse
   to ~1.2:1, so both the fill and the ink are restated rather than inherited.
   Selector verified against the codebase, not assumed: the theme switches on
   html[data-theme="light"] (guyscat-theme.js:3634 and every gc-*-contrast mu-plugin).
   A body-class guess would have shipped as dead CSS. */
html[data-theme="light"] .gc-qbadge--fhd,
html[data-theme="light"] .gc-qbadge--hd,
html[data-theme="light"] .gc-qbadge--vertical {
	background: rgba(0, 0, 0, .05);
	color: #1e242c;
	border-color: rgba(0, 0, 0, .30);
}

/* #gc-vr-badge-css */
.gc-mbadge--vr{background:#ff6a00;color:#1a0b00;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:3px 9px;border-radius:999px;font-size:12px;line-height:1.5;pointer-events:auto;box-shadow:0 1px 3px rgba(0,0,0,.35)}.gc-clip-card__badges .gc-mbadge.gc-mbadge--vr{color:#1a0b00;-webkit-text-fill-color:#1a0b00}.gc-clip-card__badges .gc-mbadge.gc-mbadge--vrres{color:#111827;-webkit-text-fill-color:#111827}.gc-mbadge--vrres{background:#ffd166;color:#111827;font-weight:800;letter-spacing:.04em;padding:3px 9px;border-radius:999px;font-size:12px;line-height:1.5;pointer-events:auto;box-shadow:0 1px 3px rgba(0,0,0,.35)}.gc-qbadge.gc-qbadge--vr{background:#2dd4bf;color:#04211d;padding:7px 14px;font-size:13px;gap:8px;min-height:32px;box-shadow:0 1px 3px rgba(0,0,0,.28)}.gc-qbadge--vr .gc-qbadge__glyph--wide{width:22px;height:14px;flex:0 0 auto}.gc-qbadge--vr .gc-qbadge__label{letter-spacing:.06em}@media (max-width:600px){.gc-qbadge.gc-qbadge--vr{padding:8px 13px;min-height:36px}}
/* #gc-storerank-badge-contrast */
.gc-store-rank-row__count-badge{color:#3a2233}.gc-store-rank-row__rank{color:#3a2233}
/* #gc-sm-kaestchen-v1 */

/* gc_sm_kaestchen_grundregel_v1 + gc_sm_kaestchen_verliert_gegen_absicht_v2
   Grundregel: ein Kaestchen im Store Manager zeigt seinen Zustand.
   Spezifitaet bewusst niedrig ([1,1,2]) — sie schlaegt WCFM (dort ist nichts
   wichtig), verliert aber gegen jede Regel, die eine Checkbox absichtlich als
   Schieberegler zeichnet. Die Liste in :where() kostet keine Spezifitaet. */
body #wcfm-main-contentainer input[type="checkbox"]:where(:not(.gc-cb-eigen,.gc-cb-eigen *,[data-gc-cb-eigen],[data-gc-cb-eigen] *,.wcfm-checkbox,.wcfm-checkbox *,.gc-chat-picker__switch-input,.gc-chat-picker__switch-input *,.gc-sub-clip-input,.gc-sub-clip-input *,.gc-sub-toggle__input,.gc-sub-toggle__input *,.gc-profile-toggle,.gc-profile-toggle *,.gc-profile-chip,.gc-profile-chip *,.gc-sub-toggle,.gc-sub-toggle *,.gc-sub-clip-item,.gc-sub-clip-item *,.gc-co-toggle,.gc-co-toggle *,.gcxbc,.gcxbc *,.gcxba,.gcxba *,.gcxbb,.gcxbb *,.checkbox-slider,.checkbox-slider *,.checkbox-slider--b-flat,.checkbox-slider--b-flat *,.checkbox-slider--c-weight,.checkbox-slider--c-weight *)) {
	appearance: auto !important;
	-webkit-appearance: checkbox !important;
	accent-color: var(--gc-accent, #6b7280) !important;
	width: 18px !important;
	height: 18px !important;
	min-width: 18px;
	min-height: 18px;
	cursor: pointer;
}

/* #gc-affiliate-sm-accent-v1 */
.wcfm_menu_items.wcfm_menu_affiliate a{border-left-color:var(--gc-accent,#2dd4bf) !important;}.wcfm_menu_items.wcfm_menu_affiliate.wcfm_menu_active a{border-left-color:var(--gc-accent,#5eead4) !important;}
/* #gc-clip-card-badge-layout-css */
/* --- shared chip metrics: one size for every badge on a clip card --- */
.gc-clip-card .gc-clip-card__badges > .gc-mbadge,
.gc-clip-card .gc-clip-card__badges > .gc-sub-badge,
.gc-clip-card .gc-clip-card__badges > .gc-sale-badge,
.gc-clip-card .gc-clip-card__badges > .gc-sale-badge--clip-card,
.gc-clip-card .gc-clip-card__badges > .gc-sale-badge--sub-disc,
.gc-clip-card .gc-clip-card__badges > .gc-sale-badge--sub-disc-paid,
.gc-clip-card .gc-clip-card__badges > .gc-sale-badge--sub-disc-teaser,
.gc-clip-card .gc-clip-card__badges > .gc-sale-badge--subscription{
  box-sizing:border-box;
  display:inline-flex;align-items:center;
  min-height:22px;height:auto;
  padding:0 9px;
  font-size:11px;line-height:1.1;font-weight:800;letter-spacing:.02em;
  white-space:nowrap;
  text-shadow:none;
}
.gc-clip-card .gc-clip-card__badges{gap:5px;}

/* --- TOP RIGHT: merchandising badge, flush tab into the corner --- */
.gc-clip-card .gc-clip-card__badges > .gc-mbadge{
  position:absolute;top:0;right:0;left:auto;bottom:auto;
  margin:0;align-self:auto;
  max-width:62%;overflow:hidden;text-overflow:ellipsis;
  border-radius:0 0 0 8px;
  text-transform:uppercase;
  pointer-events:none;                 /* decorative — never eat a click on the card link */
  box-shadow:0 1px 4px rgba(0,0,0,.4);
}
/* A card can carry Free + one status badge; the second stacks under the first. */
.gc-clip-card .gc-clip-card__badges > .gc-mbadge ~ .gc-mbadge{
  top:26px;border-radius:8px 0 0 8px;
}
.gc-clip-card .gc-clip-card__badges > .gc-mbadge ~ .gc-mbadge ~ .gc-mbadge{
  top:52px;
}

/* --- TOP LEFT: access badge. Was unstyled bare 16px text on the poster. --- */
.gc-clip-card .gc-clip-card__badges > .gc-sub-badge{
  position:static;
  align-self:flex-start;
  margin:0;
  max-width:calc(100% - 8px);
  border-radius:0 0 8px 0;
  background:#7c3aed;
  color:#fff;
  -webkit-text-fill-color:#fff;
  box-shadow:0 1px 4px rgba(0,0,0,.4);
  pointer-events:none;
}

/* --- flatten the inclusion chip: it was a gradient with near-black text --- */
/* Measured on guyscat /store/franky/ 2026-07-30: color rgb(6,16,24) over
   linear-gradient(135deg,#2dd4bf,#7c3aed) = 10.30:1 at the teal end but 3.37:1 at the
   violet end, i.e. the right-hand half of every "Included in subscription" chip was
   below the 4.5 gate. lewdden + scatportal never showed it because gc-greenfield-
   contrast-2.php already forces a flat #34d399 there — the correction was simply never
   applied to the canonical site. Flatten it here for all three, so the three sites are
   identical and the chip measures 8.67:1 end to end. Scoped to the card badge wrapper:
   the PDP buybox / storefront-section badges keep their gradient. */
.gc-clip-card .gc-clip-card__badges > .gc-sale-badge--subscription{
  background:#34d399;
  background-image:none;
  color:#06231a;
  -webkit-text-fill-color:#06231a;
}

/* --- discount chip: its own flat colour, identical on all three sites --- */
/* Dominik's decision 2026-07-30 (option B). Before: guyscat painted it as a teal->violet
   gradient (worst point 4.67:1 — passing, but a gradient the pixel sampler cannot measure),
   while gc-greenfield-contrast-2.php flattened it to #34d399 on lewdden + scatportal — i.e.
   the three sites disagreed, AND on the greenfields the discount chip was the exact same
   emerald as the "Included in subscription" chip above it: two different statements, one
   appearance. Now: "is included" stays green, "is cheaper" is rose. #fff on #be185d = 6.00:1.
   !important is required here and only here — the greenfield shim declares its emerald with
   !important, so a plain rule would lose on those two sites and the split would persist. */
.gc-clip-card .gc-clip-card__badges > .gc-sale-badge--sub-disc,
.gc-clip-card .gc-clip-card__badges > .gc-sale-badge--sub-disc-paid,
.gc-clip-card .gc-clip-card__badges > .gc-sale-badge--sub-disc-teaser{
  background:#be185d !important;
  background-image:none !important;
  color:#fff !important;
  -webkit-text-fill-color:#fff !important;
}
.gc-clip-card .gc-clip-card__badges .gc-sub-disc-badge__pct{
  color:#fff !important;
  -webkit-text-fill-color:#fff !important;
}

/* --- the wishlist heart already lived in the top-right corner --- */
/* Step it down past the badge on cards that have one, so nothing is covered. */
.gc-clip-card .gc-clip-card__media:has(> .gc-clip-card__badges > .gc-mbadge) .gc-wl-heart{
  top:30px;
}
@supports not selector(:has(*)){
  .gc-clip-card .gc-wl-heart{top:30px;}
}

/* --- mobile: smaller, still >= 10.5px so it stays legible --- */
@media (max-width:600px){
  .gc-clip-card .gc-clip-card__badges > .gc-mbadge,
  .gc-clip-card .gc-clip-card__badges > .gc-sub-badge,
  .gc-clip-card .gc-clip-card__badges > .gc-sale-badge,
  .gc-clip-card .gc-clip-card__badges > .gc-sale-badge--clip-card,
  .gc-clip-card .gc-clip-card__badges > .gc-sale-badge--sub-disc,
  .gc-clip-card .gc-clip-card__badges > .gc-sale-badge--sub-disc-paid,
  .gc-clip-card .gc-clip-card__badges > .gc-sale-badge--sub-disc-teaser,
  .gc-clip-card .gc-clip-card__badges > .gc-sale-badge--subscription{
    min-height:21px;padding:0 8px;font-size:10.5px;
  }
  .gc-clip-card .gc-clip-card__badges{gap:4px;}
  .gc-clip-card .gc-clip-card__badges > .gc-mbadge ~ .gc-mbadge{top:25px;}
  .gc-clip-card .gc-clip-card__badges > .gc-mbadge ~ .gc-mbadge ~ .gc-mbadge{top:50px;}
  .gc-clip-card .gc-clip-card__media:has(> .gc-clip-card__badges > .gc-mbadge) .gc-wl-heart{top:29px;}
}

/* The favourites-drawer card reuses this markup. Its own styling is emitted through
   :where(), i.e. specificity 0, so every rule above already reaches it unchanged —
   no drawer-specific override is needed or wanted here. */
/* #gc-clip-form-tapziele */

		/* gc_clip_form_tapziel_v1 — KATP-F1 */
		#gc-add-clip-form label:has(> input[type="radio"]),
		#gc-add-clip-form label:has(> input[type="checkbox"]) {
			display: inline-flex;          /* sonst wirkt min-height am inline-Label nicht */
			align-items: center;
			gap: 6px;
			min-height: 28px;              /* 24 ist die Grenze — 28 gibt Luft, ohne die Zeile zu sprengen */
			padding-block: 3px;
			max-width: 100%;               /* inline-flex + langes Wort = Ueberstand */
			overflow-wrap: anywhere;
			box-sizing: border-box;        /* sonst rechnet die Polsterung nach innen */
		}
		/* Auf dem Telefon bevorzugt das Projekt 44 px. */
		@media (max-width: 768px) {
			#gc-add-clip-form label:has(> input[type="radio"]),
			#gc-add-clip-form label:has(> input[type="checkbox"]) {
				min-height: 44px;
			}
		}
		
/* #gc-cmplz-cls-fix */
html body.gc-store-manager-page #cmplz-cookiebanner-container,html body #cmplz-cookiebanner-container{position:fixed!important;left:0!important;right:0!important;bottom:0!important;top:auto!important;width:100%!important;z-index:2147483000!important;}
/* #gc-cmplz-tap-target */

/* gc_cmplz_tap_target_v1 — Tap-Ziel >= 24px (gemessen 19px). Spezifitaet 0,2,1 bzw. 0,1,1,
   damit sie ohne !important gegen Complianz' eigene Regeln gewinnt. */
.cmplz-cookiebanner a.cmplz-link,
.cmplz-links a.cmplz-link,
.cmplz-document a.cmplz-link,
a.cmplz-link {
	display: inline-block;
	/* 32, nicht 24: das Theme setzt box-sizing:border-box, deshalb wird die Polsterung
	   INNERHALB der min-height verrechnet -- mit min-height:24px + 2x4px Polsterung mass
	   der Kasten exakt 24 px und lag damit auf der Grenze statt darueber. Gemessen, nicht
	   gerechnet: erste Fassung 24px, diese Fassung 32px. */
	min-height: 32px;
	line-height: 24px;
	padding-top: 4px;
	padding-bottom: 4px;
	/* Ein Link, der laenger ist als die Spalte, darf nicht aus ihr herauslaufen --
	   inline-block macht aus einem umbrechenden Inline-Element sonst einen Kasten,
	   der so breit ist wie sein laengstes Wort (die Lektion aus gc_creator_app_tap_target_v1). */
	max-width: 100%;
	overflow-wrap: anywhere;
}

/* #gc-cw-styles */

.gc-cw-card{margin:0 0 18px;padding:16px 18px;border:1px solid var(--gc-border,#d8dee6);
 border-left:4px solid #25D366;border-radius:var(--gc-radius-scale,8px);
 background:var(--gc-surface-2,var(--gc-surface,#fff));color:var(--gc-text,#12202e);}
.gc-cw-card__title{font-weight:700;font-size:15px;color:var(--gc-text,#12202e);margin:0 0 6px;}
.gc-cw-card__body{margin:0 0 12px;font-size:14px;line-height:1.5;color:var(--gc-text-soft,#3a4757);}
.gc-cw-card__note{margin:10px 0 0;font-size:12.5px;color:var(--gc-text-soft,#55616f);}
.gc-cw-card__num{margin:10px 0 0;font-size:13.5px;color:var(--gc-text,#12202e);}
.gc-cw-card__num b{font-weight:700;-webkit-user-select:all;user-select:all;white-space:nowrap;}
.gc-cw-kb{margin:28px 0 0;padding:14px 16px;border:1px solid var(--gc-border,#d8dee6);
 border-left:4px solid #25D366;border-radius:var(--gc-radius-scale,8px);
 background:var(--gc-surface-2,var(--gc-surface,#f7fbf8));color:var(--gc-text,#2b3846);
 display:flex;flex-wrap:wrap;align-items:center;gap:10px;}
.gc-cw-kb__text{font-size:14px;color:var(--gc-text,#2b3846);}
.gc-cw-btn{display:inline-flex;align-items:center;gap:9px;min-height:44px;padding:11px 18px;
 border-radius:var(--gc-radius-scale,6px);background:var(--gc-accent-strong,var(--gc-accent,#2dd4bf));color:#ffffff!important;
 font-weight:700;font-size:14px;line-height:1.2;text-decoration:none;border:0;}
/* gc_cw_wcfm_cascade_v1 — GEMESSEN am 19.08.2026, nicht vermutet.
   Der Store-Manager traegt
     body.gc-store-manager-page #wcfm-main-contentainer a { color: var(--gc-wcfm-link) !important }
   Das ist 1 ID + 2 Klassen + 1 Element und schlaegt ein blankes .gc-cw-btn (1 Klasse),
   OBWOHL beide !important sind — !important entscheidet nur zwischen gleichen
   Gewichtsklassen, danach zaehlt weiter die Spezifitaet. Ergebnis war die
   Knopfbeschriftung in Markenrosa auf dem rosa Knopf: rgb(236,58,134) auf
   rgb(200,30,106) = 1,43:1. Der Knopf sah aus wie eine leere Flaeche.
   Das betraf schon den alten gruenen Knopf (weisse Schrift war dort ebenso
   ueberschrieben) — es ist also kein Rueckschritt dieser Aenderung, sondern ein
   Fehler, den erst die Pixelmessung dieses Walks sichtbar gemacht hat.
   Gegen den Kern schreibt man mit SEINER Spezifitaet, nicht mit noch einem !important. */
body.gc-store-manager-page #wcfm-main-contentainer a.gc-cw-btn,
body.gc-store-manager-page #wcfm-main-contentainer a.gc-cw-btn span,
body.gc-store-manager-page #wcfm-main-contentainer a.gc-cw-btn:hover,
.gc-cw-btn span{color:#ffffff!important;}
.gc-cw-btn:hover,.gc-cw-btn:focus{background:var(--gc-accent,#2dd4bf);color:#ffffff!important;text-decoration:none;}
.gc-cw-btn:focus-visible{outline:3px solid rgba(var(--gc-accent-rgb,45,212,191),.55);outline-offset:2px;}
.gc-cw-btn .gc-cw-glyph{flex:0 0 auto;display:block;}
@media(max-width:640px){.gc-cw-btn{width:100%;justify-content:center;box-sizing:border-box;}}

/* #gc-discover-analytics-accent-v1 */
.wcfm_menu_items.wcfm_menu_discover-analytics a{border-left-color:#a78bfa !important;}.wcfm_menu_items.wcfm_menu_discover-analytics.wcfm_menu_active a{border-left-color:#c4b5fd !important;}
/* #gc-earnings-dark-contrast */

/* gc_earnings_dark_contrast_v1 */
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-report .gc-earnings-subtitle,
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-range-info,
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-disclaimer,
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-table .col-last{
	color: var(--gc-text-soft, #9dafcf);
}

/* panels: cards, chart/table boxes */
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-card,
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-chartbox,
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-tablebox{
	background: var(--gc-surface-3, rgba(255,255,255,.045));
	border-color: var(--gc-border, rgba(164,182,224,.14));
	box-shadow: none;
}
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-card:hover{
	box-shadow: 0 2px 10px rgba(0,0,0,.28);
}

html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-card-value,
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-section-title,
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-page-title{
	color: var(--gc-text, #edf4ff);
}
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-card-label{
	color: var(--gc-text-soft, #9dafcf);
}

/* the empty state -- this is the white slab Dominik flagged */
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-empty{
	background: rgba(255,255,255,.035);
	border: 1px dashed var(--gc-border, rgba(164,182,224,.14));
	color: var(--gc-text-soft, #9dafcf);
}

/* range + source chips */
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-range,
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-chip{
	background: rgba(255,255,255,.06);
	color: var(--gc-text, #edf4ff);
	border-color: var(--gc-border, rgba(164,182,224,.14));
}
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-range:hover,
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-chip:hover{
	background: rgba(255,255,255,.10);
	color: var(--gc-text, #edf4ff);
}
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-range.is-active{
	background: var(--gc-accent-strong, #c81e6a);
	color: #fff;
}
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-chip.is-active{
	background: rgba(255,255,255,.12);
	color: var(--gc-text, #edf4ff);
}

html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-rangebar{
	border-bottom-color: var(--gc-border, rgba(164,182,224,.14));
}

/* table */
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-table th,
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-table td{
	border-bottom-color: var(--gc-border, rgba(164,182,224,.14));
	color: var(--gc-text, #edf4ff);
}
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-table th{
	background: rgba(255,255,255,.06);
	color: var(--gc-text-soft, #9dafcf);
}
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-table tbody tr:hover{
	background: rgba(255,255,255,.04);
}
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-table .col-bucket .gc-bucket-pill{
	background: rgba(255,255,255,.08);
	color: var(--gc-text, #edf4ff);
}

html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-footer{
	border-top-color: var(--gc-border, rgba(164,182,224,.14));
}
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-csv{
	background: var(--gc-accent-strong, #c81e6a);
	color: #fff;
}
html:not([data-theme="light"]) body.gc-store-manager-page .gc-earnings-csv:hover{
	background: var(--gc-accent, #ec3a86);
	color: #fff;
}

/* #gc-hb-css */
.gc-hb-badge{display:inline-flex;align-items:center;gap:.25em;background:#8a1220;color:#fff;font-size:11px;font-weight:700;line-height:1;letter-spacing:.04em;text-transform:uppercase;padding:4px 8px;border-radius:6px;box-shadow:0 1px 2px rgba(0,0,0,.35);}.gc-hb-banner{display:flex;align-items:flex-start;gap:10px;background:#3a1013;border:1px solid #e0384f;border-left-width:4px;border-radius:10px;padding:12px 16px;color:#ffe3e6;font-size:14px;line-height:1.45;}.gc-hb-banner[hidden]{display:none;}.gc-hb-banner--category{margin:0 0 18px;width:100%;box-sizing:border-box;}.gc-hb-banner--single{margin:14px 0 0;width:100%;box-sizing:border-box;}.gc-hb-banner__icon{color:#ff8a9a;font-size:18px;line-height:1.3;flex:0 0 auto;}.gc-hb-banner__text strong{color:#fff;}
/* #gc-header-logo-light */
html[data-theme="light"] .custom-logo,html[data-theme="light"] .custom-logo-link img{filter:drop-shadow(0 1px 1px rgba(0,0,0,.55)) drop-shadow(0 0 1px rgba(0,0,0,.5))}
/* #gc-header-tap-targets */
@media (max-width:1024px){
.gc-hns-burger,.gc-hns-searchbtn,.gc-wl-headbtn,.gc-theme-toggle-inline{
width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;
margin-left:2px!important;margin-right:2px!important}
.gc-header-cart{min-width:44px!important;min-height:44px!important;
margin-left:2px!important;margin-right:2px!important}
}

/* #gc-lrf-media-fit-overlay */
/* gc_lrf_media_fit_overlay_v1 */
.gc-media-fit-on .gc-feed-landing-card__media.gc-media-fit.is-portrait > .gc-feed-landing-card__vid,
.gc-media-fit-on .gc-feed-landing-card__media.gc-media-fit.is-square > .gc-feed-landing-card__vid {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
}
.gc-feed-landing-card__media .gc-feed-landing-card__play,
.gc-feed-landing-card__media .gc-feed-landing-card__dur,
.gc-feed-landing-card__media .gc-feed-landing-card__count,
.gc-feed-landing-card__media .gc-feed-landing-card__lock {
	z-index: 2;
}

/* #gc-lovense-sidebar-zfix */
/* gc_lovense_sidebar_zfix_v1 */
#lovense-app-container,#lovense-app,#cam-extension-injected-view,#cam-extension-v3,#cam-extension-v3-stage,#lovense-extension,[id^="lovense-app"],[id^="cam-extension-injected"]{z-index:9999 !important;}

/* #gc-models-login-autofill-fix */
.gc-models-login-form input:-webkit-autofill,.gc-models-login-form input:-webkit-autofill:hover,.gc-models-login-form input:-webkit-autofill:focus,.gc-models-login-form input:-webkit-autofill:active,.gc-models-panel__application input:-webkit-autofill,.gc-models-panel__application input:-webkit-autofill:hover,.gc-models-panel__application input:-webkit-autofill:focus,.gc-models-panel__application input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 1000px var(--gc-surface,#0f1b33) inset !important;box-shadow:0 0 0 1000px var(--gc-surface,#0f1b33) inset !important;-webkit-text-fill-color:var(--gc-text,#edf4ff) !important;caret-color:var(--gc-text,#edf4ff) !important;transition:background-color 5000s ease-in-out 0s !important;}
/* #gc-notice-link-contrast */
/* gc_notice_link_contrast_v1 */html body .woocommerce-error a:not(.button):not(.gc-button):not(.wp-element-button):not([class*="button"]),html body .woocommerce-info a:not(.button):not(.gc-button):not(.wp-element-button):not([class*="button"]),html body .woocommerce-message a:not(.button):not(.gc-button):not(.wp-element-button):not([class*="button"]),html body .woocommerce-notices-wrapper a:not(.button):not(.gc-button):not(.wp-element-button):not([class*="button"]){color:currentColor;-webkit-text-fill-color:currentColor;text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}html body .woocommerce-error a:not(.button):not(.gc-button):not(.wp-element-button):not([class*="button"]):hover,html body .woocommerce-info a:not(.button):not(.gc-button):not(.wp-element-button):not([class*="button"]):hover,html body .woocommerce-message a:not(.button):not(.gc-button):not(.wp-element-button):not([class*="button"]):hover,html body .woocommerce-notices-wrapper a:not(.button):not(.gc-button):not(.wp-element-button):not([class*="button"]):hover{text-decoration-thickness:2px}
/* #gc-scroll-flicker-fix */
.gc-wrap,.gc-content,.gc-site-main{overflow-x:clip !important}body::before,body::after{animation:none !important}
/* #gc_sm_kontrast_20260910_v1 */
/* gc_sm_kontrast_20260910_v1 */
body.gc-store-manager-page #wcfm-main-contentainer .gc-chat-decorator__banner strong.gc-chat-decorator__banner-title{color:#1f2937!important;-webkit-text-fill-color:#1f2937!important}
body.gc-store-manager-page #wcfm-main-contentainer .gc-chat-decorator__banner span.gc-chat-decorator__banner-reason{color:#4b5563!important;-webkit-text-fill-color:#4b5563!important}
html:not([data-theme="light"]) body.gc-store-manager-page #wcfm-main-contentainer #wcfm_menu .wcfm_menu_items a.wcfm_menu_item.active span.text{color:var(--gc-deep)!important;-webkit-text-fill-color:var(--gc-deep)!important}
html:not([data-theme="light"]) body.gc-store-manager-page #wcfm-main-contentainer #wcfm_menu .wcfm_menu_items a.wcfm_menu_item.active span{color:var(--gc-deep)!important;-webkit-text-fill-color:var(--gc-deep)!important}

