html { height: 100%; }
body { background: #f6f8f9; line-height: 1.42857143; transition: background-color 150ms; }
body.selectable { -moz-user-select: text; -khtml-user-select: text; -webkit-user-select: text; -ms-user-select: text; user-select: text; }
.text-selectable { -moz-user-select: text; -khtml-user-select: text; -webkit-user-select: text; -ms-user-select: text; user-select: text; }

html, body, button, input, select, textarea, .pure-g [class *= "pure-u"] {
	color: #555459;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
	font-size: 13px;
	font-weight: normal;
	letter-spacing: 0.01em;
	-webkit-font-smoothing: antialiased;
	-webkit-text-size-adjust: 100%;
	-ms-text-size-adjust: 100%;
	-webkit-font-feature-settings: "kern" 1;
	-moz-font-feature-settings: "kern" 1;
}

@media	only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 13/10), only screen and (min-resolution: 120dpi) {
	html, body, button, input, select, textarea, .pure-g [class *= "pure-u"] {
		font-size: 12px;
	}
}

@media (max-width: 700px) {
	.hide-on-mobile {
	  display: none;
	}
  }

/* Resets */
input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-results-button,
input[type="search"]::-webkit-search-results-decoration {
	display: none;
}

a[disabled] { cursor: not-allowed; pointer-events: none; opacity: 0.4; }
a.unclickable { pointer-events: none; }

body {
	--tags-border-color: #c5c5c5;
	--tags-focus-border-color: #2780f8;
}

div.nice-select { float: none; margin: 0.25em 0; border-color: #c5c5c5; font-size: 100%; height: auto; line-height: normal; padding: 0.752em 2em 0.752em 0.75em; }
div.nice-select .current { width: 100%; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; display: inline-block; vertical-align: middle; }
div.nice-select:hover { border-color: #b0b0b0; }
div.nice-select::after { border-right-color: #7d7d7d; border-bottom-color: #7d7d7d; }
div.nice-select .nice-select-dropdown { width: 100%; box-shadow: 0 0 0 1px rgb(68 68 68 / 30%); }
div.nice-select > .nice-select-dropdown > .nice-select-search-box input[type="text"] { box-sizing: border-box; background-color: #fff; border: 1px solid #e8e8e8; border-radius: 3px; color: #444; display: inline-block !important; vertical-align: middle; padding: 7px 12px; margin: 0 10px 0 0; width: 100% !important; min-height: 36px; line-height: 22px; height: auto; font-size: 14px; }
div.nice-select ul { margin: 0; }
div.nice-select .option { overflow: hidden; text-overflow: ellipsis; color: #595c6a; }
div.nice-select .optgroup { padding: 11px 19px 11px 11px; background: #f4f5f7; color: #636e84; cursor: default; }
div.nice-select .option.disabled { color: #bbb; }

.video-large { margin: 0 0 2em; clear: both; }
.video { margin: 2em 0; }

hr { margin: 2em 0; border: none; height: 1px; background: #eee; }

pre { display: inline-block; margin: 0 0.25em; vertical-align: middle; }

.root.dash #layout,
.root.prodreports #layout,
.root.dash #hero .inner { max-width: 960px; } /* Absolute width for graphing */
.root.affiliates #layout,
.root.affiliates #hero .inner,
.root.students #layout,
.root.students #hero .inner { max-width: 940px; } /* Absolute width for graphing */

.root.wide_root #layout { max-width: 76em; }

/* Main layout styles */
#layout { position: relative; margin: 1em auto 0.5em auto; max-width: 64em; width: 90%; transition: max-width 0ms; }
#body { margin: 2em 0 0.5em; line-height: 1.6em; }

.footer { text-align: center; font-size: 90%; color: #9d9d9d; margin: 0; padding: 1em 0; clear: both; }

.ready #body { transition: margin-left 150ms, margin-right 150ms; }

.page-container {	}
.page-container-leaving {	}
.page-container-entering, .page-container-entered {	}
.page-container-exiting {	}

.inner { width: 90%; position: relative; margin: 0 auto; max-width: 64em; }

.header { position: relative; top: 0; width: 100%; z-index: 100; margin: 0; color: #2f3239; background: #33383e; line-height: 77px; min-height: 77px; box-shadow: 0 1px 1px rgba(0,0,0,.1); }
.header .inner { max-width: 64em; width: 90%; }
.header h1 { margin: 0; padding: 0; width: 6.5em; display: inline-block; vertical-align: top; }
.header h1 a { width: 150px; height: 77px; text-decoration: none; display: block; margin: 0; background: url(../../assets/logo-light.png) no-repeat left center; outline: none; background-size: contain; position: relative; transform: scale(0.98); will-change: transform; transform-style: preserve-3d; transition: transform 150ms; }
.header h1 a:hover { transform: scale(1); }
.header h1 .logo-tc { display: none; }
.header h1 em { font-size: 12px; color: #0dc0c1; border: 1px solid #0dc0c1; line-height: normal; padding: 0.1em 0.4em; font-style: normal; border-radius: 0.25em; position: absolute; top: 50%; right: -3.5em; transform: translate(0, -42%); }
.header h1 span.logo-courses { display: none; }
body.root.learn .header h1 span.logo-courses,
body.root.course_editor .header h1 span.logo-courses { display: inline-block; font-size: 12px; color: #b78ae8; border: 1px solid #b78ae8; line-height: normal; padding: 0.1em 0.4em; font-style: normal; border-radius: 0.25em; position: absolute; top: 50%; right: -4em; transform: translate(0, -42%); }
body.root.learn .header h1 em + span.logo-courses,
body.root.course_editor .header h1 em + span.logo-courses { right: -7em; }
body.root.learn .header h1.tc-learn-plus span.logo-courses,
body.root.course_editor .header h1.tc-learn-plus span.logo-courses { right: -5em; }
body.root.learn .header h1.tc-learn-plus em + span.logo-courses,
body.root.course_editor .header h1.tc-learn-plus em + span.logo-courses { right: -7.5em; }
body.root.learn .header h1.tc-pro.tc-learn-plus span.logo-courses,
body.root.course_editor .header h1.tc-pro.tc-learn-plus span.logo-courses { right: -8em; }

.header h1 em.tc-launch-plan-link-header { right: -4.4em; }
body.root.learn .header h1 em.tc-launch-plan-link-header + span.logo-courses,
body.root.course_editor .header h1 em.tc-launch-plan-link-header + span.logo-courses { right: -8em; }
body.root.learn .header h1.tc-learn-plus em.tc-launch-plan-link-header + span.logo-courses,
body.root.course_editor .header h1.tc-learn-plus em.tc-launch-plan-link-header + span.logo-courses { right: -9em; }
.header h1 span.logo-courses em { position: static; padding: 0; transform: none; border: none; color: #b78ae8; font-weight: bold; margin-left: 0.25em; }

.header.contains_detail .user-box,
.header.contains_detail .menu-main-wrap { opacity: 0; }

.header.header-minimal {	}
.header.header-minimal .inner { text-align: center; }
.header.header-minimal .menu-main-wrap,
.header.header-minimal .user-box { display: none; }

.header.header-unavailable {	}
.header.header-unavailable .menu-main-wrap,
.header.header-unavailable .user-box,
.header.header-unavailable h1,
.header.header-unavailable h1 a { cursor: default; pointer-events: none; }

/* Main menu */
.menu-main-wrap { display: inline-block; width: calc(100% - 11.5em - 8.5em); vertical-align: top; opacity: 1; transition: opacity 150ms; }
#menu-main { text-align: right; }
#menu-main li { display: inline-block; margin: 0 0.75em 0 0; line-height: 68px; text-align: center; }
#menu-main a { color: #bdc0c4; text-decoration: none; transition: color 250ms; font-weight: 600; font-size: 90%; opacity: 0.8; border-radius: 0.4em; padding: 0.6em 0.8em; line-height: 1em; display: inline-block; vertical-align: middle; position: relative; cursor: pointer; }
#menu-main a span { white-space: nowrap; position: absolute; bottom: -5px; font-size: 90%; transform: translateX(-50%); opacity: 0; transition: transition 150ms, opacity 90ms; }
#menu-main a i { display: block; margin: 0 auto; font-family: Font Awesome\ 5 Pro; font-size: 14px; line-height: 1; font-weight: 900; font-style: normal; font-size: 150%; text-rendering: auto; -moz-osx-font-smoothing: grayscale; transform: translate(0, 0); vertical-align: middle; transition: transform 150ms; }
#menu-main a i.fa.fa-angle-down { margin-left: 0.5em; } 
#menu-main #menu-main-item-dash i::before { content: "\f0db"; }
#menu-main #menu-main-item-products i::before { content: "\f00b"; }
#menu-main #menu-main-item-coupons i::before { content: "\f3ff"; }
#menu-main #menu-main-item-manage i::before { content: "\f187"; }
#menu-main #menu-main-item-transactions i::before { content: "\f007"; }
#menu-main #menu-main-item-settings i::before { content: "\f013"; }
#menu-main a:hover, #menu-main li.active a, body.root.course_editor #menu-main-item-learn, body.root.landingpage_editor #menu-main-item-pages, body.root.funnel_editor #menu-main-item-funnels { color: #fff; opacity: 1; background-color: rgba(0,0,0,0.025); }
#menu-main[data-section="affiliates"] #menu-main-item-affiliates,
#menu-main[data-section="contracts"] #menu-main-item-affiliates,
#menu-main[data-section="transactions"] #menu-main-item-transactions,
#menu-main[data-section="subscriptions"] #menu-main-item-transactions { color: #fff; opacity: 1; background-color: rgba(0,0,0,0.025); }
#menu-main a:hover i { transform: translate(0, -4px); }
#menu-main a:hover span { opacity: 1; }
#menu-main li.active a {	}
#menu-main li ul.active { display: block; opacity: 1; visibility: visible; top: 6em; }
#menu-main li ul { margin: 0; padding: 0; list-style: none; background: #fff; border-radius: 3px; border: 1px solid #d0d2db; box-shadow: 0px 0px 3px rgba(98, 98, 98, 0.2); position: absolute; width: 12em; left: -6em; top: 6em; top: 55px; opacity: 0; visibility: hidden; transition: top 250ms, opacity 250ms;	}
#menu-main li ul:before {
	position: absolute;
	top: -7px;
	right: 32px;
	display: inline-block;
	border-right: 7px solid rgba(0, 0, 0, 0);
	border-bottom: 7px solid #CCC;
	border-left: 7px solid rgba(0, 0, 0, 0);
	border-bottom-color: rgba(255, 255, 255, 1);
	content: '';
}
#menu-main li ul li { line-height: normal; margin: 0; display: block; }
#menu-main li ul li a { display: block; text-align: left; line-height: normal; padding: 0.75em; text-decoration: none; font-size: 100%; color: #5b5b5b; opacity: 1; border-radius: 0; box-shadow: none; }
#menu-main li ul li:last-child a { border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; }
#menu-main li ul li a:hover { color: #555e72; background-color: #f5f6f9; box-shadow: none; }
#menu-main li ul li i { width: 1.28571429em; text-align: center; color: #555e72; margin: 0 0.5em 0 0; font-family: Font Awesome\ 5 Pro; font-size: 14px; line-height: 1; font-weight: 900; font-style: normal; font-size: inherit; text-rendering: auto; -moz-osx-font-smoothing: grayscale; transform: translate(0, 0); vertical-align: middle; display: inline-block; }
#menu-main li ul li span { vertical-align: middle; display: inline-block; }
#menu-main li ul li .menu-main-sub-badge { display: inline-block; vertical-align: middle; margin: 0 0 0 0.6em; padding: 0.25em 0.45em; border: 0; border-radius: 4px; background: #10cfbd; color: #fff; font-size: 10px; font-style: normal; font-weight: normal; line-height: 1; text-transform: none; transform: none; position: static; }

#menu-main a#menu-main-item-watch-the-welcome-video { background: none; font-size: 90%; color: #d96e0d; text-decoration: underline; }
#menu-main a#menu-main-item-watch-the-welcome-video:hover { color: #8e4504; background: none; box-shadow: none; }

#menu-main.menu-nopaymentprocessors { display: none; }
#menu-main.menu-nopaymentprocessors.menu-paymentskipped { display: block; }
#menu-main.menu-nopaymentprocessors a#menu-main-item-settings { padding-right: 1.2em; }
#menu-main.menu-nopaymentprocessors a#menu-main-item-settings::before { content: ""; display: block; width: 8px; height: 8px; border-radius: 50%; background-color: #a20707; position: absolute; top: 5px; right: 5px; }

.user-box { position: relative; display: inline-block; vertical-align: top; width: 6em; opacity: 1; transition: opacity 150ms; }
.user-box .user-box-avatar-link { display: block; text-align: center; transition: background-color 250ms; color: #fff; }
.user-box .user-box-avatar-link i { position: absolute; right: 0.5em; bottom: 38%; color: #bdc0c4; }
.user-box .user-box-avatar-link:hover, #user-box.active { background-color: rgba(0,0,0,0.1); }
.user-box .user-box-avatar-link:hover i, #user-box.active i { color: #fff; }
.user-box .user-box-avatar { display: inline-block; vertical-align: middle; background-color: #000; border: 2px solid #4b535d; border-radius: 50%; width: 40px; height: 40px; margin: 0 auto; cursor: pointer; box-sizing: border-box; transition: border-color 250ms; }
.user-box .user-box-avatar-link:hover .user-box-avatar { border-color: #626b77; }
#user-box.active .user-box-avatar { border-color: #939eaa; }
.user-box ul { visibility: hidden; opacity: 0; position: absolute; top: 55px; right: -1%; width: 185%; transition: top 250ms, opacity 250ms; background: #fff; margin: 0; padding: 0; border-radius: 3px; list-style: none; border: 1px solid #d0d2db; z-index: 5; box-shadow: 0px 0px 3px rgba(98, 98, 98, 0.2); }
.user-box ul:before { position: absolute; top: -7px; right: 32px; display: inline-block; border-right: 7px solid rgba(0, 0, 0, 0); border-bottom: 7px solid #CCC; border-left: 7px solid rgba(0, 0, 0, 0); border-bottom-color: rgba(255, 255, 255, 1); content: ''; }
.user-box li { padding: 0; margin: 0; }
.user-box li:last-child { background-color: #f5f6f9; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; }
.user-box li a { display: block; line-height: normal; padding: 0.75em 1em; text-decoration: none; font-size: 100%; color: #5b5b5b; }
.user-box li:last-child a { border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; }
.user-box li a:hover { color: #555e72; background-color: #f5f6f9; }
.user-box li a i { color: #555e72; margin: 0 0.5em 0 0; font-family: Font Awesome\ 5 Pro; font-size: 14px; line-height: 1; font-weight: 900; font-style: normal; font-size: inherit; text-rendering: auto; -moz-osx-font-smoothing: grayscale; transform: translate(0, 0); vertical-align: middle; display: none; }
#user-box-submenu-item-my-profile i::before { content: "\f007"; }
#user-box-submenu-item-support i::before { content: "\f128"; }
#user-box-submenu-item-sign-out i::before { content: "\f08b"; }
#user-box-submenu-item-users i::before { content: "\f234" }
#user-box-submenu-item-admin i::before { content: "\f023" }
#user-box-submenu-item-welcome-video i::before { content: "\f16a" }
#user-box.active ul { visibility: visible; top: 72px; opacity: 1; }

/* Recommended products */
#menu-main-item-affiliates i::after { display: block; width: 0.65em; height: 0.3em; border-radius: 0.8em; background: #f55f10; position: absolute; top: -0.5em; left: 50%; transform: translate(-50%, -50%); }
body.ui-alert-pending-affiliate-applications #menu-main-item-affiliates i::after { content: ""; }
.box.ui-recommended-products { padding: 0; position: relative; }
.ui-recommended-products ul.recommended-products-grid { display: grid !important; grid-template-columns: repeat(3, 1fr); gap: 1.25em; list-style: none; padding: 1.25em 1.5em !important; margin: 0 !important; }
.ui-recommended-products ul.recommended-products-grid li { width: 100% !important; margin: 0 !important; padding: 0 !important; background: transparent !important; box-shadow: none !important; border-radius: 0 !important; -webkit-transform: none !important; transform: none !important; -webkit-backface-visibility: visible !important; backface-visibility: visible !important; }
.ui-recommended-products ul.recommended-products-grid li a { display: block; width: 100%; text-decoration: none; border-radius: 0.5em; overflow: hidden; transition: transform 150ms, box-shadow 150ms; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); }
.ui-recommended-products ul.recommended-products-grid li a:hover { transform: translateY(-4px) !important; box-shadow: 0 8px 16px rgba(0, 0, 0, 0.12); }
.ui-recommended-products ul.recommended-products-grid li:hover { -webkit-transform: none !important; transform: none !important; }
.ui-recommended-products ul.recommended-products-grid li img { width: 100%; height: auto; display: block; }
.ui-recommended-products ul { list-style: none; margin: 0; padding: 0; display: flex; }
.ui-recommended-products li { width: 160px; margin: 1em 0 1em 1em; -webkit-transform: perspective(1px) scale(1); transform: perspective(1px) scale(1); transition: -webkit-transform 150ms; transition: transform 150ms; transition: transform 150ms, -webkit-transform 150ms; will-change: transform; -webkit-backface-visibility: hidden; backface-visibility: hidden; }
.ui-recommended-products li:nth-child(4) { margin-right: 1em; }
.ui-recommended-products a { display: block; cursor: pointer; text-decoration: none; }
.ui-recommended-products img { display: block; width: 100%; }
.ui-recommended-products li:hover { -webkit-transform: translateZ(0) scale(1.025); transform: translateZ(0) scale(1.025); }
.ui-recommended-products .ui-recommended-products-more { background: #eee; color: #b3b3b3; text-align: center; padding: 1em; box-sizing: border-box; }
.root-affiliates .ui-recommended-products .ui-recommended-products-more { width: auto; flex-grow: 1; margin-right: 1em; }
.ui-recommended-products .ui-recommended-products-more a { color: #999; display: flex; align-items: center; justify-content: center; flex-direction: column; height: 100%; }
.ui-recommended-products .ui-recommended-products-more span { font-size: 120%; line-height: 0.8; display: block; }
.ui-recommended-products .ui-recommended-products-more em { font-weight: 300; display: block; border-bottom: 1px solid #dcdcdc; margin: 0 0 1em; padding: 0 0 1em; line-height: 0.8; }
.ui-recommended-products h2 { margin: 1em 0 0 1em; color: #6b6b6b; font-size: 120%; }
.ui-recommended-products .pill { border: 1px solid #f55f10; color: #f55f10; background-color: #fff6f2; font-size: 65%; padding: 0.1em 0.65em; font-weight: bold; letter-spacing: normal; margin: 0 0 0 0.5em; vertical-align: top; }
.tc-modal-recommended-products .ui-click { width: 14em; }
.ui-recommended-products-hide { position: absolute; top: 0.5em; right: 1em; font-size: 80%; opacity: 0.5; transition: opacity 150ms; }
.ui-recommended-products-hide:hover { opacity: 1; }
.ui-recommended-products-hide-trigger { border-bottom: 1px dotted #999; color: #999; cursor: pointer; }
.alertify .iframe-wrapper { margin: 0 -25px -30px -25px; }
.alertify .iframe-wrapper iframe { width: 100%; border: none; }

/* Header menu */
#header-menu {	}
#header-menu.avoid_sidebar { margin-left: 7.5em; }
.header-menu-wrap { max-height: 0; overflow: hidden; }
.ready .header-menu-wrap { transition: max-height 150ms; }
.header-menu-wrap.active { max-height: 100px; }
.header-menu-wrap ul { margin: 0 1.5em; padding: 0; list-style: none; }
.header-menu-wrap li { margin: 1.5em 0 0; display: inline-block; transition: background-color 150ms, color 150ms; font-family: "Segoe UI","Helvetica Neue",Helvetica,Arial,sans-serif; font-size: 130%; color: #555459; font-weight: 300; }
.header-menu-wrap li:hover { background-color: #D8D8D8; }
.header-menu-wrap li.active { background-color: #bdbdbd; color: #1a1a1a; }
.header-menu-wrap a { line-height: 40px; display: block; padding: 0 1em; position: relative; color: #555459; text-decoration: none; }
.header-menu-wrap span {	}

/* Pane */
#pane { background: #fff; z-index: 1000; box-shadow: 0 0 15px rgba(0, 0, 0, 0.1); border-left: 1px solid rgba(0,0,0,0.1); height: 100%; width: 40em; position: fixed; top: 0; right: 0; overflow: hidden; -webkit-transform: translate3d(40.5em, 0, 0); -moz-transform: translate3d(40.5em, 0, 0); transform: translate3d(40.5em, 0, 0); }
#pane { transition: -webkit-transform 150ms, -moz-transform 150ms, transform 150ms; }
#pane.active { -webkit-transform: translate3d(0, 0, 0); -moz-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); }
#pane .inner { width: 100%; height: 100%; padding: 1.5em; box-sizing: border-box; }
#pane .inner > div { height: 100%; }

#pane .pure-controls.controls-full { margin: 0; position: absolute; bottom: 0; right: 0; left: 0; padding: 1em; float: none; text-align: right; }
#pane .pure-controls.controls-full .button-xsmall { margin-top: 0.7em; }

#hero { position: relative; top: 0; left: 0; z-index: 10; width: 100%; box-sizing: border-box; background: #fff; border-bottom: 1px solid #EDEDED; display: none; }
#hero.active { display: block; margin-bottom: 1em; }
#hero .inner { padding: 0; }
#hero p { color: #9ca5ac; margin: 0; }
#hero p b, #footer p strong { color: #10CFBD; font-weight: bold; }
#hero ul { margin: 0; padding: 0; list-style: none; text-align: center; display: flex; }
#hero li { flex: 1; display: inline-block; margin: 0; padding: 0; /*box-shadow: inset 0 0 0 rgba(0,0,0,0);*/ background-color: #fff; transition: color 90ms, background-color 300ms; }
#hero li:hover { color: #0e669c; /*box-shadow: inset 0 4px 6px rgba(0,0,0,0.05);*/ }
#hero li div { padding: 1.15em 1.43em; font-size: 110%; font-weight: bold; cursor: pointer; }
#hero li div i { font-size: 200%; }
#hero li div i.fa-undefined { display: none; }
#hero li div span { display: block; }
#hero li:empty { display: none; }
#hero li.active { background-color: #f9f9f9; /*box-shadow: inset 0 4px 6px rgba(0,0,0,0.05);*/ color: #0e669c; border-bottom: 1px solid transparent; margin-bottom: -1px; }
#hero .pure-button { font-size: 110%; }

#hero.dark { background: #27292b; border-bottom: 1px solid #EDEDED; }
#hero.dark li.active { background: none; box-shadow: none; border-bottom: 2px solid #3aa3e4; color: #fff; margin-bottom: 0; }
#hero.dark li { box-shadow: none; background: none; color: #eee; }

#hero.active + #layout {	}

#footer { position: fixed; bottom: 0; left: 0; width: 100%; box-sizing: border-box; background: #fff; border-top: 1px solid rgba(230, 230, 230, 0.7); -webkit-transform: translate3d(0, 5em, 0); -moz-transform: translate3d(0, 5em, 0); transform: translate3d(0, 5em, 0); transition: transform 250ms; }
#footer.active { -webkit-transform: translate3d(0, 0, 0); -moz-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); }
#footer .inner { padding: 1.5em 0; }
#footer p { color: #9ca5ac; margin: 0; }
#footer p b, #footer p strong { color: #10CFBD; font-weight: bold; }
#footer ul { margin: 0; padding: 0; list-style: none; float: right; }
#footer li { display: inline-block; margin: 0 0 0 1em; }
#footer li:empty { display: none; }
#footer .pure-button { font-size: 110%; }
#footer .pure-button.ui-cancel { background-color: #3B4752; color: #fff; }
#footer .pure-button.ui-confirm { background-color: #10CFBC; color: #fff; }

#footer.error p b, #footer.error p strong { color: #F55753; }
#footer.error .pure-button.ui-confirm { background-color: #F55753; color: #fff; }

/* Styling */
.content-subhead { margin: 0 0 1em 0; display: inline-block; font-size: 150%; font-weight: 600; padding: 0; line-height: normal; overflow: hidden; text-overflow: ellipsis; }
.pure-form-aligned .pure-controls { margin-top: 1em; }
.pure-button:not(.hidden) + .pure-button { margin-left: 1em; }
.pure-button:not(.hidden) + .pure-button.hidden + .pure-button { margin-left: 1em; }

.pure-form input[type="range"] {
		display: block;
		width: 100%;
		margin: 0.75em 0;
		padding: 0;
		-webkit-appearance: none;
		-moz-appearance: none;
		appearance: none;
		outline: none;
		background: transparent;
}

.pure-form input[type="range"]:focus {
		outline: none;
}

.pure-form input[type="range"]::-moz-focus-outer {
		border: 0;
}

.pure-form input[type="range"]::-webkit-slider-runnable-track {
		cursor: pointer;
		width: 100%;
		height: 2px;
		-webkit-border-radius: 2px;
		border-radius: 2px;
		background: #CED7DB;
		border: none;
}

.pure-form input[type="range"]::-moz-range-track {
		cursor: pointer;
		width: 100%;
		height: 3px;
		border-radius: 2px;
		background: #CED7DB;
		border: none;
}

.pure-form input[type="range"]::-webkit-slider-thumb {
		-webkit-appearance: none;
		-moz-appearance: none;
		appearance: none;
		cursor: pointer;
		width: 16px;
		height: 16px;
		background: #fff;
		-webkit-border-radius: 50%;
		border-radius: 50%;
		border: 2px solid #CED7DB;
		box-shadow: 0 0 0 3px #fff;
		margin-top: -7px;
}

.pure-form input[type="range"]::-moz-range-thumb {
		-webkit-appearance: none;
		-moz-appearance: none;
		appearance: none;
		cursor: pointer;
		width: 16px;
		height: 16px;
		background: #fff;
		-webkit-border-radius: 50%;
		border-radius: 50%;
		border: 2px solid #CED7DB;
		box-shadow: 0 0 0 3px #fff;
		margin-top: -7px;
}

.pure-form input[type="range"]::-ms-thumb {
		-webkit-appearance: none;
		-moz-appearance: none;
		appearance: none;
		cursor: pointer;
		width: 16px;
		height: 16px;
		background: #fff;
		-webkit-border-radius: 50%;
		border-radius: 50%;
		border: 2px solid #CED7DB;
		box-shadow: 0 0 0 3px #fff;
		margin-top: -7px;
}

.pure-form input[type="range"]::-ms-track {
		cursor: pointer;
		width: 100%;
		height: 2px;
		border-radius: 2px;
		background: #CED7DB;
		border: none;
		background: transparent;
		color: transparent;
		height: 18px;
}

.pure-form input[type="range"]::-ms-fill-lower,
.pure-form input[type="range"]::-ms-fill-upper {
		height: 3px;
		border-radius: 2px;
		background: #CED7DB;
}

.pure-form input[type="range"].disabled,
.pure-form input[type="range"][disabled] {
		opacity: .3;
		cursor: default;
}

.pure-form input[type="range"].disabled::-webkit-slider-runnable-track,
.pure-form input[type="range"][disabled]::-webkit-slider-runnable-track {
		cursor: default;
}

.pure-form input[type="range"].disabled::-moz-range-track,
.pure-form input[type="range"][disabled]::-moz-range-track {
		cursor: default;
}

.pure-form input[type="range"].disabled::-webkit-slider-thumb,
.pure-form input[type="range"][disabled]::-webkit-slider-thumb {
		cursor: default;
}

.pure-form input[type="range"].disabled::-moz-range-thumb,
.pure-form input[type="range"][disabled]::-moz-range-thumb {
		cursor: default;
}

.pure-form input[type="range"].disabled::-ms-thumb,
.pure-form input[type="range"].disabled::-ms-track,
.pure-form input[type="range"][disabled]::-ms-thumb,
.pure-form input[type="range"][disabled]::-ms-track {
		cursor: default;
}

.pure-form fieldset { margin: 0; padding: 0; }
.pure-form label { color: #626262; display: block; margin: 0 0 0.5em 0; line-height: 1.8; }
.pure-form input[type="text"], .pure-form input[type="password"], .pure-form input[type="email"], .pure-form input[type="url"], .pure-form input[type="date"], .pure-form input[type="month"], .pure-form input[type="time"], .pure-form input[type="datetime"], .pure-form input[type="datetime-local"], .pure-form input[type="week"], .pure-form input[type="number"], .pure-form input[type="search"], .pure-form input[type="tel"], .pure-form input[type="color"], .pure-form select, .pure-form textarea {
	padding: 0.43em 0.6em;
	box-shadow: none;
	border: 1px solid #C5C5C5;
	border-radius: 0.25em;
	font-size: 130%;
	display: block;
	width: 100%;
	color: #555459;
	transition: border-color 150ms, box-shadow 150ms;
	resize: vertical;
	max-height: 16em;
}
.pure-form input[type="text"]:focus, .pure-form input[type="password"]:focus, .pure-form input[type="email"]:focus, .pure-form input[type="url"]:focus, .pure-form input[type="date"]:focus, .pure-form input[type="month"]:focus, .pure-form input[type="time"]:focus, .pure-form input[type="datetime"]:focus, .pure-form input[type="datetime-local"]:focus, .pure-form input[type="week"]:focus, .pure-form input[type="number"]:focus, .pure-form input[type="search"]:focus, .pure-form input[type="tel"]:focus, .pure-form input[type="color"]:focus, .pure-form select:focus, .pure-form textarea:focus {
	border-color: #2780f8;
	box-shadow: 0 0 7px rgba(39,128,248,.15);
}

.pure-form select.inline-selector { display: inline-block; }

.pure-form select { height: 2.142em; padding-top: 0; padding-bottom: 0; }

.pure-form .ui-input-group { width: calc(100% + 1em); margin-left: -0.5em; }
.pure-form .ui-input-group > div { padding-left: 0.5em; padding-right: 0.5em; box-sizing: border-box; }

.pure-form .input-pill { position: relative; }
.pure-form .input-pill em { position: absolute; top: 1px; right: 1px; height: calc(100% - 2px); line-height: 2.85em; padding: 0 0.5em; font-style: normal; text-align: center; border-left: 1px solid #c5c5c5; background: #ecf0f1; border-top-right-radius: 0.25em; border-bottom-right-radius: 0.25em; pointer-events: none; }
.pure-form .input-pill.input-pill-left em { right: auto; border-left: none; border-top-right-radius: 0; border-bottom-right-radius: 0; width: 2em; left: 1px; border-right: 1px solid #c5c5c5; border-top-left-radius: 0.25em; border-bottom-left-radius: 0.25em; }
.pure-form .input-pill.input-pill-left input { padding-left: 3em !important; }
.pure-form .input-faux-select input { background-color: #fff; }
.pure-form .input-actionable em,
.pure-form em.input-actionable { cursor: pointer; pointer-events: all; font-style: normal; min-width: 1.25em; text-align: right; padding-right: 1.25em; }
.pure-form .input-actionable em::after,
.pure-form em.input-actionable::after { content: '\f078'; font-family: Font Awesome\ 5 Pro; font-size: 14px; line-height: 1; font-weight: 900; font-style: normal; font-size: 6px; text-rendering: auto; -moz-osx-font-smoothing: grayscale; transform: translate(0, 0); color: #FFF; position: absolute; top: 50%; margin-top: -0.3em; right: 0.95em; color: rgba(0,0,0,0.3); }
.pure-form .input-dropdown select { position: absolute; top: 0; right: 0; width: 2.2em !important; margin: 0; opacity: 0; cursor: pointer; }
.pure-form .input-dropdown select:focus { width: 100% !important; opacity: 1; box-shadow: none; }
.pure-form .input-faux-multi { border: 1px solid #C5C5C5; border-radius: 0.25em; margin: 0.269em 0; }
.pure-form .input-faux-multi.input-pill em { top: 0; right: 0; height: 100%; }
.pure-form .input-faux-multi input { margin: 0; display: inline-block; border: none; background: transparent; text-align: center; font-size: 90%; padding: 0.899em 0.5em; width: 3.35em !important; }
.pure-form .input-faux-multi input:focus { box-shadow: none; }
.pure-form .input-faux-multi i { display: inline-block; vertical-align: middle; font-style: normal; width: 1em; text-align: center; cursor: default; color: #000; }
.pure-form .input-pill-control { overflow: hidden; }
.pure-form .input-pill-control input { margin: 0; }
.pure-form .input-pill-control .control { position: absolute; top: 50%; right: 0; transform: translate(100%, -50%); transition: transform 150ms; }
.pure-form .input-pill-control.active .control { transform: translate(-0.4em, -50%); }
.pure-form .input-pill-control.active input { padding-right: 3.25em !important; }

.tc-modal-v2 .pure-form .input-dropdown select { width: 3em !important; top: 0.25em; }
.tc-modal-v2 .pure-form .input-dropdown select:focus { width: 100% !important; }
.ajs-dialog.tc-modal-v2 .autolayout .input-pill.input-faux-multi.input-dropdown em { height: 100%; top: 0; }
.ajs-dialog.tc-modal-v2 .autolayout .input-pill.input-faux-multi.input-dropdown select { top: 0; }

/* -- Coming soon pages ----------------------------------------------------- */
.comingsoon-title { text-align: center; margin: 0.5em 0 1em; font-size: 200%; }
.comingsoon-img { display: block; margin: 0 auto 2em; background: #e2e2e2; border-radius: 0.25em; max-width: 286px; max-height: 169px; }
.comingsoon-img img { display: block; width: 100%; height: 100%; }
.comingsoon-message { margin: 0; text-align: center; font-size: 170%; color: #9f9f9f; }

/* -- 'Site' alternative styles -- */
.root-site #layout { height: auto; }
.root-site #body { height: auto; margin: 0 auto 2em; max-width: 48em; width: 100%; }
.root-site #body::after { content: ""; display: table; clear: both; }
.root-site .header h1 { margin: 0 auto; text-align: center; float: none; border: none; display: block; }
.root-site .header h1 a { margin: 0 auto; }

.root-site-design_export #layout { max-width: none; margin: 0; width: 100%; background: #fff; }
.root-site-design_export #body { max-width: 100%; margin: 0 auto; padding: 0 0 4em; }

/* -- Boxes -- */
.box { padding: 2em; margin: 0; border: 1px solid #e8e8e8; background: #fff; border-radius: 0.25em; /*box-shadow: 0 1px 0 rgba(0,0,0,.25);*/ }
.box.box-subtle {	}
.box.box-shadow { border: none; margin: 0 1%; box-shadow: 1px 1px 2px rgba(0,0,0,0.1); }
.box.padding { padding-top: 0; }
.box.padding > :last-child { margin-bottom: 0; }
.pure-g .box { margin-left: 0.5em; margin-right: 0.5em; }
.pure-g ul.nav-tabs { margin-left: 0.5em; margin-right: 0.5em; }
.box-list { position: relative; padding-bottom: 51px !important; }
.box-list-actions { padding: 0.5em; border-top: 1px solid #f4f4f4; text-align: right; position: absolute; bottom: 0; left: 0; width: 100%; box-sizing: border-box; }
.box.box-tabbed { margin-top: 5.6em; }
.box.box-tabbed .tabs { list-style: none; padding: 0; margin: -5.49em 0 2em -2.05em; }
.box.box-tabbed .tabs li { cursor: pointer; padding: 0.7em 2.14em; font-size: 120%; display: inline-block; border-top-left-radius: 0.25em; border-top-right-radius: 0.25em; border-left: 1px solid rgba(0, 0, 0, 0); border-right: 1px solid rgba(0, 0, 0, 0); color: #8c8c8c; text-align: center; }
.box.box-tabbed .tabs li i { display: block; margin: 0 auto 0.25em auto; font-size: 135%; }
.box.box-tabbed .tabs li a { color: inherit; text-decoration: none; }
.box.box-tabbed .tabs li.active { background: #fff; border: 1px solid #e8e8e8; border-bottom-color: #fff; cursor: default; color: #616161; }
.box.box-tabbed .tabs li[data-section="template"] { min-width: 4em; }
.box.box-tabbed .pull-nav { float: right; margin: -3em 0 0; line-height: normal; }
.box.box-tabbed .tabs-anchor li { padding: 0; }
.box.box-tabbed .tabs-anchor li a { padding: 0.7em 2.1em; display: block; text-align: center; }
.box.box-tabbed .tabs-anchor li.active.no-underline { position: relative; }
.box.box-tabbed .tabs-anchor li.active.no-underline::before { content: ""; display: block; width: 100%; height: 1px; background: #fff; position: absolute; left: 0; bottom: 0; }
.box.box-tabbed .tabs.tabs-full-width { display: -webkit-box; display: -ms-flexbox; display: flex; }
.box.box-tabbed .tabs.tabs-full-width li { -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; }
.box.box-tabbed-action { margin: 0; display: flex; align-items: center; }
.box-tabbed.box-invisible.box-tabbed-action .tabs { margin: 0; }
.box.box-tabbed.box-tabbed-action .tabs li { border: 2px solid transparent; border-radius: 0.25em; min-width: 8em; }
.box.box-tabbed.box-tabbed-action .tabs li.active { border: 2px solid #21c3c5; }
.box.box-tabbed.box-tabbed-action .tabs-anchor li a { padding: 1em; }
.box-tabbed-action-aside { margin-left: auto; }

.box.padding-0.box-tabbed {	}
.box.padding-0.box-tabbed .tabs { margin: -3.4em 0 0 -0.05em; }
.box.padding-1 { padding: 1em; }
.box.padding-125 { padding: 1.25em; }
.root .box.box-tabbed.box-invisible { padding: 0; background-color: transparent; border: none; box-shadow: none; margin-top: 0; }
.box-tabbed.box-invisible .tabs { margin: 0 0 -0.1em 0; }

.root .box.box-tabbed.box-tabbed-sectionaction { justify-content: center; margin-top: -0.5em; margin-bottom: 3em; }
.root .box.box-tabbed.box-tabbed-sectionaction .tabs li { position: relative; transform: translate(0, 0); transition: transform 150ms; }
.root .box.box-tabbed.box-tabbed-sectionaction .tabs li a,
.root .box.box-tabbed.box-tabbed-sectionaction .tabs li span { padding: 0.75em 2em !important; }
.root .box.box-tabbed.box-tabbed-sectionaction .tabs li span { cursor: default; }
.root .box.box-tabbed.box-tabbed-sectionaction .tabs li span.ui-coming_soon { padding: 0 !important; font-size: 80%; opacity: 0; position: absolute; display: block; width: 100%; text-align: center; transition: opacity 150ms; }
.root .box.box-tabbed.box-tabbed-sectionaction .tabs li.ui-coming_soon:hover { transform: translate(0, -0.6em); }
.root .box.box-tabbed.box-tabbed-sectionaction .tabs li.ui-coming_soon:hover span.ui-coming_soon { opacity: 0.8; }

.box-heading { padding: 1em 0; text-align: center; border-bottom: 1px solid #E9E9E9; }

.box-footer { padding: 1em; text-align: right; background: #f7f9fb; border-top: 1px solid #E9E9E9; }
.box-footer.box-footer-pull { width: 100%; margin-left: -2em; margin-top: 2em; margin-bottom: -2em; padding: 1em 2em; }

.box h3 { font-size: 130%; font-weight: 400; line-height: normal; overflow: hidden; text-overflow: ellipsis; border-bottom: 1px solid #f4f4f4; margin: 0 0 0.5em; padding: 0.5em; }
.box h3 i { font-size: 14px; margin: 0 0.5em 0 0; }

.ui-box-pills { position: absolute; top: 2em; right: 2em; }

.ui-box-icon { width: 5.5em; float: left; margin: 0; }
.ui-box-icon i { font-size: 300%; }
.ui-box-content { margin-left: 5.5em; }
.ui-box-content > h2 { margin-top: 0.4em !important; }

.grid-4x1 { text-align: center; margin: 0 auto; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; }
.grid-4x1 .grid-item { display: inline-block; padding: 1em; background-color: #f9f9f9; border-radius: 1em; box-sizing: border-box; position: relative; border: 2px solid #afe2cb; }
.grid-4x1-img {	}
.grid-4x1-img .fa { font-size: 340%; cursor: default; color: #81bfa3; }
.grid-4x1 h6 { font-size: 160%; margin: 0 0 1em; font-weight: normal; cursor: normal; }
.grid-4x1-footer {	}
.grid-4x1 .grid-item.ui-empty { border-color: transparent; }
.grid-4x1 .grid-item.ui-empty .fa { color: #555459; }

.control-bar { padding: 0.5em; border: 1px solid #e8e8e8; background: #fff; border-radius: 0.25em; margin: 0 0 2em; }
.control-bar-dark { border-color: #d6d6d6; background-color: #e6e6e6; }

/* -- Inline editors -- */
.ql-container + .ql-container { margin-top: 0.5em !important; }
.ql-container.ql-inline { padding: 0; line-height: inherit; font-family: inherit; outline: 1px dotted rgba(0,0,0,0.2); min-height: 19px; overflow: hidden; }
.ql-container.ql-inline:hover,
.ql-container.ql-inline.ql-active { outline: 1px dotted rgba(0,0,0,0.8); }
.ql-container.ql-inline::after { content: '\f044'; font-family: Font Awesome\ 5 Pro; font-size: 14px; line-height: 1; font-weight: 900; font-style: normal; font-size: 11px; text-rendering: auto; -moz-osx-font-smoothing: grayscale; transform: translate(0, 0); color: #FFF; position: absolute; top: 0.05em; right: 0.15em; padding: 0.2em; color: rgba(0,0,0,0.8); opacity: 0; }
.ql-container.ql-inline:hover::after,
.ql-container.ql-inline.ql-active::after { opacity: 1; }

/* -- Typography -- */
p { line-height: 22px; white-space: normal; margin: 1em 0; }
h1, h2, h3, h4, h5, h6 { margin: 1em 0; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; font-weight: 700; color: #555459; letter-spacing: -1px; }
h2 span { font-weight: 300; font-size: 90%; }
h5 { font-size: 140%; margin: 0.5em 0;}
.title-intro, .alertify .ajs-body .ajs-content p.title-intro { margin: 0 0 1em 0; text-align: left; }

.callout { background: #fff; color: #555459; padding: 1em; border-radius: 0.25em; border: 1px solid #e8e8e8; border-left: 4px solid #3aa3e3; margin: 0 0 1em 0; text-align: left; }
.callout.callout-borderless { border-left: 1px solid #e8e8e8; }
.callout-help {	}
.callout-error { border-left-color: #cb5234; }
.callout-success { border-left-color: #21c3c5; }
.callout-stats { border-left-color: #FF9333; }
.callout-warning { border-left-color: #f7ac5c; }
.callout p { margin: 0 0 1em; }
.callout h2 { text-align: left; margin: 0 0 0.5em; font-size: 160%; font-weight: normal; }
.callout-content { background: #f9f9f9; padding: 1em; margin: 1em 0 0; }
.callout-content h6 { font-weight: bold; font-size: 110%; margin: 0 0 0.5em 0; }
.callout-content .msg-block { position: relative; }
.callout-content .msg-block + .msg-block { border-top: 1px solid #e0e0e0; padding-top: 1em; }
.callout-content .msg-block .ui-commission-msg-resolve { position: absolute; top: 0; right: 0; }
.callout-content .msg-block + .msg-block .ui-commission-msg-resolve { top: 1em; }

/* -- Tables -- */
.table {	}
.table-row { border-bottom: 1px solid #f4f4f4; }
.table-row:last-child { border-bottom-left-radius: 2px; border-bottom-right-radius: 2px; }

.table-wrap { background: #fff; }
.table-wrap table { width: 100%; }
.table-wrap thead {	}
.table-wrap thead tr {	}
.table-wrap thead th { text-align: left; color: #555459;	text-transform: uppercase; font-weight: 600; font-size: 100%; padding: 1em; vertical-align: middle; border-bottom: 1px solid rgba(230, 230, 230, 0.7); }
.table-wrap tfoot { display: none; }
.table-wrap tbody {	}
.table-wrap tbody tr { border-bottom: 1px solid rgba(230, 230, 230, 0.3); cursor: default; }
.table-wrap tbody tr:nth-child(odd) { background-color: #fafafa; }
.table-wrap tbody tr:last-child { border-bottom: none; }
.table-wrap tbody tr:hover { background-color: #f4faff; }
.table-wrap tbody td { padding: 1em; }
.table-wrap .action-list { margin: 0; padding: 0; list-style: none; }
.table-wrap .action-list li { display: inline-block; margin: 0 1em 0 0; }
.table-wrap .action-list li:last-child { margin-right: 0; }

table.zebra-table { background: #fafafa; }
table.zebra-table tr:nth-child(2n) { background-color: #f5f5f5; }
table.zebra-table tr td:nth-child(2n) { background-color: #eee; }
table.zebra-table tr td { padding: 5px 10px; }

/* -- Forms -- */
.pure-form.pure-form-stacked label { font-weight: 600; margin: 0; padding: 0; overflow-wrap: break-word; word-wrap: break-word; }
.pure-form.pure-form-stacked label span { -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; font-weight: 300; color: #4e4e4e; text-transform: none; letter-spacing: normal; font-size: 95%; }
.pure-form.pure-form-stacked label span em { font-style: normal; }
.pure-form.pure-form-stacked.pure-form-simple label,
.pure-form.pure-form-stacked label.label-simple { text-transform: none; letter-spacing: normal; font-weight: normal; }

.label-helper { margin: 0 0 1em 0; color: #949494; font-size: 90%; }

.input-buttons { text-align: right; }
.input-buttons input { margin: 0 !important; }
.input-buttons textarea { margin: 0 !important; }
.input-buttons .pure-button { margin: 1em 0 0 0.5em; }
.input-buttons .checkbox,
.input-buttons .radio { float: left; margin: 1.35em 0 0 0; }

.input-dimensions { height: 50px; /* Height is fixed to prevent minor jumping around on embed pages specifically */ }
.input-dimensions input, .input-dimensions input[type="number"] { vertical-align: middle; display: inline-block !important; width: 5em; text-align: center; margin-bottom: 0; }
.input-dimensions b { vertical-align: middle; display: inline-block; padding: 0 0.5em; }

.pure-controls.controls-fluid { text-align: right; margin: 0 0.5em; }
.pure-controls.controls-full { float: right; margin: 0 0.5em; }
.pure-controls.controls-full .pure-button {	}
.pure-controls.controls-full-left { float: left; }
.box .pure-controls.controls-full { float: right; margin: 0 1em 1em; }
.box.padding .pure-controls.controls-full { margin-bottom: 0; }
.pure-controls.controls-fixed { position: absolute; }
.pure-controls.controls-fixed-left { left: 0; }
.pure-controls.controls-fixed-bottom { bottom: 0; }
.pure-controls.controls-fixed-right { right: 0; }

/*.tc.pcr-app[data-theme=nano] .pcr-selection { height: 13em; }
.tc.pcr-app[data-theme=nano] .pcr-selection .pcr-color-palette {	}
.tc.pcr-app[data-theme=nano] .pcr-selection .pcr-color-chooser,
.tc.pcr-app[data-theme=nano] .pcr-selection .pcr-color-opacity { margin: .7em .6em .6em; }
.tc.pcr-app[data-theme=nano] .pcr-interaction .pcr-type.active { display: none; }
.tc.pcr-app[data-theme=nano] .pcr-interaction .pcr-result { font-size: 13px; margin: -2px 3px 1px; }*/

.tc-2factor {	}
.tc-2factor-setup { border-bottom: 1px solid #ebeff5; padding: 0 0 1em; margin: 0 0 1em; }
.tc-2factor-setup .pure-u-1-3 { padding: 0 1em; box-sizing: border-box; }
.tc-2factor-setup .pure-u-1-3:first-child { padding: 0; }
.tc-2factor-setup .pure-u-1-3:last-child { padding: 0; }
.tc-2factor-step { background: #f7f9fb; margin: 0 0 1em; text-align: center; }
.tc-2factor-step i { font-size: 400%; line-height: 1.5em; }
.tc-2factor-step img { display: block; width: 100%; }
.tc-2factor-step-signin { color: #f19a2f; }
.tc-2factor-step-code { color: #3aa3e3; }
.tc-2factor-step-check { color: #21c3c5; }
.tc-2factor-instruction { margin: 0; text-align: center; font-size: 90%; }
.tc-2factor h6 { margin: 0 0 1em; font-size: 100%; clear: both; text-align: center; }
.tc-2factor p { font-size: 100%; }
.tc-2factor input[type="number"],
.tc-2factor input[type="text"] { width: 10em; text-align: center; margin: 0 auto; }
.tc-2factor input[type="number"]:focus:invalid,
.tc-2factor input[type="text"]:focus:invalid { color: #555459; }
.tc-2factor-code { margin: 0 0 0.25em 0; text-align: center; }
.tc-2factor-code img { display: block; margin: 0 auto; }
.tc-2factor-code-help { color: #4c4c4c; font-size: 100%; margin: 0 0 1em !important; text-align: center; }
.tc-2factor-steps { width: 100%; max-width: 26em; display: block; margin: 0 auto 0.5em; }
.tc-2factor-grid { width: 31.5em; margin: 0 auto; max-width: 100%; }
.tc-2factor .tc-2factor-step1 {	}
.tc-2factor .tc-2factor-step2 { width: 35%; }
.tc-2factor .tc-2factor-step3 { width: 31.5%; }
.tc-2factor-confirm-icon { float: left; width: 25%; margin: 0 1em 2em 0; background: #f7f9fb; text-align: center; }
.tc-2factor-confirm-icon i { font-size: 300%; line-height: 2em; color: #f19a2f; }
.tc-2factor-confirm-instruction { text-align: left !important; color: #2a2a2a !important; }
.tc-2factor-disable { clear: both; }

.avoid-controls { padding-bottom: 2.27em; }

textarea.embed { min-height: 8em; overflow: hidden; overflow-y: scroll; resize: none; }

textarea.large { min-height: 8em; overflow: hidden; overflow-y: scroll; resize: none; }

input[type=number] { -moz-appearance: textfield; }
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
	-webkit-appearance: none;
	margin: 0;
}
.pure-form label.checkbox-label { font-weight: 400; padding-left: 3em; }

.toggle { cursor: pointer; display: inline-block; }

.toggle-switch {
	display: inline-block;
	background: #e2e5e8;
	border-radius: 16px;
	width: 40px;
	height: 22px;
	position: relative;
	vertical-align: middle;
	transition: background 250ms;
}

.toggle-switch:before,
.toggle-switch:after { content: ""; }

.toggle-switch:before {
	display: block;
	background: #fff;
	border-radius: 50%;
	width: 16px;
	height: 16px;
	position: absolute;
	top: 3px;
	left: 4px;
	transition: left 250ms;
}

.toggle:hover .toggle-switch:before {
	
}

.toggle-checkbox:checked + .toggle-switch {
	background: #21c3c5;
}

.toggle-checkbox:checked + .toggle-switch:before {
	left: 20px;
}

.toggle-checkbox {
	position: absolute;
	visibility: hidden;
}

.toggle.toggle-combi { display: inline-block; background: #f9f9f9; padding: 0.5em; border-radius: 0.5em; min-width: 16em; }
.toggle.toggle-combi .toggle-label:first-child { margin: 0 0.5em 0 0; }
.toggle.toggle-combi .toggle-label { min-width: 6em; }
.toggle.toggle-combi .toggle-switch { width: 2.565em; height: 1.41em; border-radius: 1em; }
.toggle.toggle-combi .toggle-switch::before { width: 1.03em; height: 1.03em; left: 0.17em; top: 0.17em; }
.toggle.toggle-combi .toggle-checkbox:checked + .toggle-switch:before { left: 1.3em; }

.toggle.toggle-combi.toggle-combi-inner { background-color: transparent; }
.toggle.toggle-combi.toggle-combi-inner .toggle-label:first-child { text-align: right; }
.toggle.toggle-combi.toggle-combi-inner .toggle-switch { position: relative; top: 0.1em; }
.toggle.toggle-combi.toggle-combi-inner .toggle-switch::before { top: 0.19em; }

.toggle.toggle-combi.toggle-combi-primary {	}
.toggle.toggle-combi.toggle-combi-primary .toggle-switch { background-color: #96A9BD; }
.toggle.toggle-combi.toggle-combi-primary .toggle-checkbox:checked + .toggle-switch { background-color: #3aa3e3; }
.toggle.toggle-disabled {
	opacity: 0.5;
}

.toggle.toggle-disabled[data-hint] {
    opacity: 1 !important;
}

.toggle.toggle-disabled[data-hint] input,
.toggle.toggle-disabled[data-hint] div,
.toggle.toggle-disabled[data-hint] span {
    opacity: 0.5;
}

.toggle-label,
.pure-form.pure-form-stacked label .toggle-label {
	margin-left: 0.5em;
	display: inline-block;
	vertical-align: middle;
	font-weight: normal;
	font-size: 100%;
}

.radio.radio-align-top label:before, .checkbox.checkbox-align-top label:before { top: 0; }
.radio { padding-top: 0.5em; }
.radio, .checkbox {
	margin-bottom: 1em;
	padding-left: 0px;
	position: relative;
	display: block;
	min-height: 1.7em;
}
.radio input[type=radio] {
	display: none;
}
.checkbox input[type=checkbox] {
	display: none;
}
.radio input[type=radio], .radio-inline input[type=radio], .checkbox input[type=checkbox], .checkbox-inline input[type=checkbox] {
	position: absolute;
	margin-top: 4px \9;
	margin-left: -20px;
}
input[type="radio"], input[type="checkbox"] {
	margin-top: 1px 0 0;
	line-height: normal;
	cursor: pointer;
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
}
input[type=radio], input[type=checkbox] {
	margin: 4px 0 0;
	margin-top: 1px \9;
	line-height: normal;
}
input[type=checkbox], input[type=radio] {
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
	padding: 0;
}
.radio label {
	margin-bottom: 6px;
}
.radio label, .checkbox label {
	display: inline-block;
	cursor: pointer;
	position: relative;
	padding-left: 32px!important;
	margin-right: 15px;
}
.checkbox label {
	line-height: inherit;
}
.pure-form .radio label, .pure-form .checkbox label,
.radio label, .checkbox label {
	padding-left: 20px;
	margin-bottom: 0;
	font-weight: 400;
	cursor: pointer;
	font-family: inherit;
	text-transform: none;
	letter-spacing: inherit;
	margin-right: 15px;
}
.pure-form .checkbox label {
	transition: border 0.2s linear 0s, color 0.2s linear 0s;
	/*white-space: nowrap;*/
}
/*.pure-form .checkbox label b { font-weight: normal; }*/
.radio label:before {
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
	bottom: 0;
	border-radius: 99px;
	-webkit-transition: border 0.3s 0s cubic-bezier(0.455, 0.03, 0.215, 1.33);
	transition: border 0.3s 0s cubic-bezier(0.455, 0.03, 0.215, 1.33);
}
.radio label:before, .checkbox label:before {
	content: "";
	display: inline-block;
	width: 22px;
	height: 22px;
	margin-right: 10px;
	position: absolute;
	left: 0px;
	background-color: #FFF;
	border: 1px solid #D0D0D0;
	font-size: 13px;
}
.radio.invisible label, .checkbox.invisible label {
	position: static;
}
.radio.invisible label:before, .checkbox.invisible label:before {
	margin-right: 0;
	top: 0;
	left: 50%;
	transform: translate(-50%, 0);
}
.radio.invisible label:after, .checkbox.invisible label:after {
	left: 50%;
	transform: translate(-50%, 0);
}
.radio.radio-success input[type=radio]:checked+label:before {
	border-color: #10CFBD;
}
.radio input[type=radio]:checked+label:before {
	border-width: 8px;
}
.checkbox input[type=checkbox]:checked+label:before {
	border-width: 11px;
}
.checkbox label:before {
	border-radius: 3px;
	transition: border 0.2s linear 0s, color 0.2s linear 0s;
	-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.checkbox input[type=checkbox]:checked+label::after {
	font-family: Font Awesome\ 5 Pro; font-size: 14px; font-weight: 900; font-style: normal;
	content: "\F00C";
	color: #FFF;
}
.checkbox label::after {
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
	border-radius: 3px;
	display: inline-block;
	width: 22px;
	height: 22px;
	line-height: 23px;
  position: absolute;
  left: 0;
  top: 0;
  font-size: 11px;
	text-align: center;
	transition: border 0.2s linear 0s, color 0.2s linear 0s;
}
.radio input[type=radio][disabled]+label {
	opacity: 0.65;
}
.checkbox input[type=checkbox][disabled]+label {
	opacity: 0.65;
}
.checkbox.check-primary input[type=checkbox]:checked+label:before, .radio.radio-primary input[type=radio]:checked+label:before {
	border-color: #6D5CAE;
}
.checkbox.check-danger input[type=checkbox]:checked+label:before, .radio.radio-danger input[type=radio]:checked+label:before {
	border-color: #F55753;
}
.checkbox.check-warning input[type=checkbox]:checked+label:before, .radio.radio-warning input[type=radio]:checked+label:before {
	border-color: #F8D053;
}
.checkbox.check-info input[type=checkbox]:checked+label:before, .radio.radio-info input[type=radio]:checked+label:before {
	border-color: #3B4752;
}
.checkbox.check-success input[type=checkbox]:checked+label:before, .radio.radio-success input[type=radio]:checked+label:before {
	border-color: #10CFBD;
}
.checkbox.check-stats input[type=checkbox]:checked+label:before, .radio.radio-stats input[type=radio]:checked+label:before {
	border-color: #FF9333;
}
.checkbox.check-secondary input[type=checkbox]:checked+label:before, .radio.radio-secondary input[type=radio]:checked+label:before {
	border-color: #3aa3e3;
}

.checkbox.check-right {	}
.checkbox.check-right label { margin-right: 0; padding-left: 0 !important; padding-right: 32px !important; }
.checkbox.check-right label::before,
.checkbox.check-right label::after { left: auto; right: 0; margin-right: 0; }

.checkbox.check-fixedwidth {	}
.checkbox.check-fixedwidth label { min-width: 9em; }

.radio.radio-large label:before, .checkbox.check-large label:before {
	width: 2.169em;
	height: 2.169em;
}

.checkbox.check-large label::after {
	width: 2.169em;
	height: 2.169em;
	line-height: 2.5em;
	font-size: 13px !important;
}

.checkbox.check-large input[type=checkbox]:checked+label:before {
	border-width: 14px;
}

.ui-checkbox-logo { display: inline-block; vertical-align: middle; width: 7.7%; height: 3em; line-height: 3em; margin: 0 1.75em 0 0; position: relative; opacity: 0.5; transition: opacity 150ms; text-align: center; }
.ui-checkbox-logo i { font-size: 310%; }
.ui-checkbox-logo img { display: inline-block; vertical-align: middle; max-width: 100%; max-height: 100%; margin: 0; position: relative; }
.ui-checkbox { width: calc(100% - 23% - 2em); display: inline-block; vertical-align: middle; }
.ui-checkbox.checkbox label { font-size: 150%; color: #555459; letter-spacing: -1px; }
.ui-checkbox-content { padding-left: 2.7em; }

.ui-checkbox-logo.ui-checkbox-logo-styled { padding: 1em; border-radius: 0.25em; background: #f3f3f3; width: 4.5em; height: 4.5em; line-height: 4.5em; position: relative; }
.ui-checkbox-logo.ui-checkbox-logo-styled div { display: flex; justify-content: center; align-items: center; height: 100%; position: relative; }
.ui-checkbox-logo.ui-checkbox-logo-styled i { font-size: 400%; position: relative; }
.ui-checkbox-logo.ui-checkbox-logo-styled span { position: absolute; left: 0; bottom: 0; width: 100%; text-transform: uppercase; font-size: 80%; padding: 0.5em 0; line-height: normal; background: rgba(0,0,0,0.6); color: #fff; border-bottom-left-radius: 0.25em; border-bottom-right-radius: 0.25em; }
.ui-checkbox-logo.ui-checkbox-logo-styled img { -webkit-filter: grayscale(100%); filter: gray; filter: grayscale(100%); }

.aside { display: block; font-size: 90%; margin: 0 0 0 0.7em; color: #413768; }
.explain { font-size: 80%; margin: 0.5em 0 0 0; color: #929292; }

.info { font-size: 90%; color: #676085; }

.input-time {	}
.input-time input[type="number"] { display: inline-block; font-size: 200%; width: 3em; text-align: center; }
.input-time span { display: inline-block; padding: 0 0.5em; cursor: default; font-size: 150%; }

.radiogroup {	}
.radiogroup > div { display: inline-block; }
.radiogroup input { display: none; }
.radiogroup input[disabled] + label { opacity: 0.5; cursor: not-allowed !important; }
.radiogroup label, .pure-form.pure-form-stacked .radiogroup label { font-family: inherit; text-transform: none; letter-spacing: normal; font-weight: normal; background: #f9fafb; border-radius: 3px; margin: 0; font-size: 100%; padding: 0.53em; }
.radiogroup > div:last-child label { margin-right: 0; }
.radiogroup input:checked + label, .pure-form.pure-form-stacked .radiogroup input:checked + label { background-color: #48B0F7; color: #fff; }
.radiogroup input:checked + label span, .pure-form.pure-form-stacked .radiogroup input:checked + label span { color: #fff; font-weight: normal; }

.radiogroup.radiogroup-subtle label, .pure-form.pure-form-stacked .radiogroup.radiogroup-subtle label { background: #fff; }
.radiogroup.radiogroup-subtle input:checked + label, .pure-form.pure-form-stacked .radiogroup.radiogroup-subtle input:checked + label { background-color: #f7f7f7; color: #626262; }
.radiogroup.radiogroup-subtle input:checked + label span, .pure-form.pure-form-stacked .radiogroup.radiogroup-subtle input:checked + label span { color: #626262; }

.radiogroup.radiogroup-size {	}
.radiogroup.radiogroup-size label { display: inline-block; height: 3.14em; width: 3.14em; text-indent: -999px; position: relative; }
.radiogroup.radiogroup-size label::before { content: ""; display: block; position: absolute; bottom: 0; left: 0; background: rgba(0,0,0,0.3); width: 50%; height: 50%; border-bottom-left-radius: 3px; }
.radiogroup.radiogroup-size input[value="medium"] + label::before { width: 70%; height: 70%; }
.radiogroup.radiogroup-size input[value="full"] + label::before { width: 90%; height: 90%; }
.radiogroup.radiogroup-size input[value="portrait"] + label::before { width: 55%; height: 75%; top: 12.5%; left: 22.5%; border-radius: 3px;}
.radiogroup.radiogroup-size input[value="landscape"] + label::before { width: 75%; height: 55%; top: 22.5%; left: 12.5%; border-radius: 3px; }
.radiogroup.radiogroup-size input[value="left"] + label::before { width: 80%; height: 30%; left: 10%; top: 20%; border-radius: 3px; }
.radiogroup.radiogroup-size input[value="left"] + label::after { content: ""; display: block; position: absolute; background: rgba(0,0,0,0.3); width: 40%; height: 20%; top: 60%; border-radius: 3px; }
.radiogroup.radiogroup-size input[value="right"] + label::before { width: 80%; height: 30%; right: 10%; left: initial; top: 20%; border-radius: 3px; }
.radiogroup.radiogroup-size input[value="right"] + label::after { content: ""; display: block; position: absolute; background: rgba(0,0,0,0.3); right: 10%; width: 40%; height: 20%; top: 60%; border-radius: 3px; }

.radiogroup-large {	}
.radiogroup-large label { margin: 0; padding: 0.75em; cursor: pointer; display: block; }
.radiogroup-large label img { display: block; margin: 0; max-width: 100%; }
.radiogroup-large .fa { display: block; margin: 0 auto 0 auto; font-size: 300%; }
.radiogroup-large span { display: block; margin: 0.75em 0 0 0; text-align: center; font-weight: normal !important; color: inherit !important; }
.radiogroup-large span.aside { font-size: 75%; }

.radiogroup-modern {	}
.radiogroup-modern label, .pure-form.pure-form-stacked .radiogroup-modern label { background-color: inherit; border-bottom: 2px solid transparent; border-radius: 0; position: relative; }
.radiogroup-modern label img { max-width: 8.889em; margin: 0 auto; }
.radiogroup-modern label .fa,
.radiogroup-modern label .ui-preview-container { opacity: 0.7; transform: scale(0.9); transition: opacity 150ms, transform 150ms; }
.radiogroup-modern input:checked + label, .pure-form.pure-form-stacked .radiogroup-modern input:checked + label { color: inherit; background-color: inherit; }
.radiogroup-modern input:checked + label span, .pure-form.pure-form-stacked .radiogroup-modern input:checked + label span { font-weight: bold !important; }
.radiogroup-modern input:checked + label .fa, .pure-form.pure-form-stacked .radiogroup-modern input:checked + label .fa,
.radiogroup-modern input:checked + label .ui-preview-container, .pure-form.pure-form-stacked .radiogroup-modern input:checked + label .ui-preview-container { opacity: 1; transform: scale(1); border-color: #22c3c5 !important; }
.radiogroup-modern input:checked + label::after { content: ""; height: 2px; position: absolute; bottom: 0; width: 50%; margin-left: -25%; background: #21c3c6; }
_:-ms-fullscreen, :root .radiogroup-modern input:checked + label::after { width: 100%; margin-left: 0; }

.radiogroup-modern-center {	}
.radiogroup-modern-center > div label { padding-top: 0; }
.radiogroup-modern-center > div label span { text-align: left; padding-left: 0.5em; }
.radiogroup-modern-center input:checked + label::after { margin-left: 0; left: 2.5em; }

.radiogroup-styled {	}
.radiogroup-styled label, .pure-form.pure-form-stacked .radiogroup-styled label { background-color: #f2f8fb; cursor: pointer; border-radius: 0; transition: background-color 150ms, color 150ms; }
.radiogroup-styled label:hover, .pure-form.pure-form-stacked .radiogroup-styled label:hover { background-color: #e7eff3; }
.radiogroup-styled > div:first-child label, .pure-form.pure-form-stacked .radiogroup-styled > div:first-child label { border-top-left-radius: 0.25em; border-bottom-left-radius: 0.25em; }
.radiogroup-styled > div:last-child label, .pure-form.pure-form-stacked .radiogroup-styled > div:last-child label { border-top-right-radius: 0.25em; border-bottom-right-radius: 0.25em; }

.radiogroup-learn {	}
.radiogroup-learn label, .pure-form.pure-form-stacked .radiogroup-learn label { background-color: #eff2f7; cursor: pointer; border-radius: 0; transition: background-color 150ms, color 150ms; }
.radiogroup-learn label:hover, .pure-form.pure-form-stacked .radiogroup-learn label:hover { background-color: #e7eff3; }
.radiogroup-learn input:checked + label, .pure-form.pure-form-stacked .radiogroup-learn input:checked + label { box-shadow: 0 0 0px 2px inset #a3b5cc; background-color: #fff; color: #767a80; }
.radiogroup-learn input:checked + label span, .pure-form.pure-form-stacked .radiogroup-learn input:checked + label span { color: #767a80; }
.radiogroup-learn > div:first-child label, .pure-form.pure-form-stacked .radiogroup-learn > div:first-child label {	}
.radiogroup-learn > div:last-child label, .pure-form.pure-form-stacked .radiogroup-learn > div:last-child label {	}

.pure-form.pure-form-stacked .radiogroup-v2 { display: flex; justify-content: center; }
.pure-form.pure-form-stacked .radiogroup-v2 > div { margin: 0 1em 0 0; min-width: 30%; text-align: center; }
.pure-form.pure-form-stacked .radiogroup-v2 > div:last-child { margin-right: 0; }
.pure-form.pure-form-stacked .radiogroup-v2 > div:hover label { border-color: #bfc6ce; }
.pure-form.pure-form-stacked .radiogroup-v2 label { cursor: pointer; border-radius: 0.5em; background: transparent !important; border: 2px solid #dfe3e8; color: #464959 !important; transition: border-color 150ms, color 150ms; }
.pure-form.pure-form-stacked .radiogroup-v2 label i,
.pure-form.pure-form-stacked .radiogroup-v2 label span { color: #464959 !important; transition: color 150ms; }
.pure-form.pure-form-stacked .radiogroup-v2 input:checked + label { border-color: #21c3c5; color: #2a5556 !important; }
.pure-form.pure-form-stacked .radiogroup-v2 input:checked + label i,
.pure-form.pure-form-stacked .radiogroup-v2 input:checked + label span { color: #2a5556 !important; }
.pure-form.pure-form-stacked .radiogroup-v2 label span { display: block; margin: 0.5em 0 0 0; text-align: center; font-weight: normal !important; }

.radiogroup-half { display: flex; }
.radiogroup-half > div { width: 50%; text-align: center; }
.radiogroup-half > div:first-child label, .pure-form.pure-form-stacked .radiogroup-half > div:first-child label { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.radiogroup-half > div + div label, .pure-form.pure-form-stacked .radiogroup-half > div + div label { border-top-left-radius: 0; border-bottom-left-radius: 0; }

.radiogroup.radiogroup-triple { display: flex; margin: 0.25em 0; }
.radiogroup.radiogroup-triple > div { flex: 1; text-align: center; }
.pure-form .radiogroup.radiogroup-triple > div label { border-radius: 0; border-bottom: 3px solid transparent; font-weight: normal; cursor: pointer; padding-top: 0.4em; padding-bottom: 0.386em; }
.pure-form .radiogroup.radiogroup-triple > div label span {	}
.radiogroup.radiogroup-triple > div:first-child label { border-radius: 3px; border-top-right-radius: 0; border-bottom-right-radius: 0; }
.radiogroup.radiogroup-triple > div:last-child label { border-radius: 3px; border-top-left-radius: 0; border-bottom-left-radius: 0; }
.pure-form .radiogroup.radiogroup-triple input:checked + label { border-bottom-color: #000; background: #edeff4; color: #626262; }

.radiogroup.radiogroup-equal-heights { display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap; }
.radiogroup.radiogroup-equal-heights label { width: 100%; box-sizing: border-box; }

.radiogroup.radiogroup-flexible { display: flex; }
.radiogroup.radiogroup-flexible > div { flex: 1 1 0px; text-align: center; }

.divider { position: relative; height: 1px; background: #E8E8E8; margin: 2em 8em; }
.divider span { position: absolute; line-height: 1em; top: -0.7em; width: 4em; left: 50%; margin-left: -2em; text-align: center; background: #fff; padding: 0.25em 0; text-transform: uppercase; color: #7D7D7D; cursor: default; }
.empty-state .divider span { background-color: #f9fafb; }

.block-list { margin: 0; padding: 0; list-style: none; }
.block-list li { padding: 0.5em; border: 1px solid #EFEFEF; border-radius: 0.25em; margin: 0 0 0.5em; position: relative; }
.block-list li:hover { background-color: #f6faff; }
.block-list li:last-child { margin-bottom: 0; }
.ajs-content .block-list { font-size: 11px; }
.block-list.block-list-scrollable { max-height: 63.5em; overflow: scroll; }

body.root .empty-state { text-align: center; padding: 3.87em 3em; border: 1px solid #e8e8e8; border-radius: 0.25em; background: #f9fafb; }
body.root .empty-state h2 { margin: 0 0 0.5em; cursor: default; font-size: 1.5em; color: #555459; }
body.root .empty-state p { width: auto; display: block; margin: 0 0 1em; cursor: default; font-size: 110%; }
body.root .empty-state .hr p { margin: 0; font-size: 100%; display: inline-block; font-size: 85%; background-color: #f9fafb; }
body.root .empty-state .ui-autoresponder-add { float: none; margin: 0; }
body.root .empty-state.empty-state-minor { padding-top: 2em; padding-bottom: 2em; }
body.root .empty-state.empty-state-smallpadding { padding-left: 2em; padding-right: 2em; }

/* -- Hero areas -- */
.hero { padding: 2em; margin: 1em 0; border: 1px solid #e8e8e8; background: #fff; border-radius: 0.25em; box-shadow: 0 1px 0 rgba(0,0,0,.25); }
.hero h2 { font-size: 160%; font-weight: 600; margin: 0 0 1em; color: #3e4852; cursor: default; }
.hero p { font-size: 110%; cursor: default; }

/* -- Tabs -- */
div.nav-tabs {	}
div.nav-tabs-triangle {	}
ul.nav-tabs { margin: 0; padding: 0; list-style: none; }
ul.nav-tabs li { position: relative; display: block; float: left; line-height: 24px; float: left; margin-bottom: -1px; }
ul.nav-tabs li a { text-align: center; position: relative; display: block; text-decoration: none; border: 1px solid rgba(0, 0, 0, 0); line-height: 1.42857143; overflow: visible; border-radius: 0; padding: 0.4em 1em; margin-right: 0; font-weight: 400; color: rgba(98, 98, 98, 0.7); font-size: 16px; min-width: 70px; text-transform: uppercase;}
ul.nav-tabs li.active a { color: #626262; }
ul.nav-tabs li.active a::before { margin-left: -11px; border: 11px solid rgba(0, 0, 0, 0); border-top-color: rgba(0, 0, 0, 0.2); content: ""; height: 0; left: 50%; pointer-events: none; position: absolute; width: 0; z-index: 1; top: 100%; }
ul.nav-tabs li.active a::after { margin-left: -10px; border: 10px solid rgba(0, 0, 0, 0); border-top-color: #F0F0F0; content: ""; height: 0; left: 50%; pointer-events: none; position: absolute; width: 0; z-index: 1; top: 100%; }
.nav-tabs-triangle ul.nav-tabs::after { border-bottom: 1px solid rgba(0, 0, 0, 0.1); width: 100%; position: relative; bottom: 0; clear: both; display: table; content: " "; }
div.nav-tabs .nav-pane.box { padding: 2em 2em 0.5em; display: none; border-top: none; }
div.nav-tabs .nav-pane.box.active { display: block; }

/* -- Search -- */
.ui-search-field[type="search"] { border: none; background: #fff; color: #34495E; line-height: 1.467; padding: 0.7em 3em 0.7em 0.7em; border-radius: 3px; outline: none; width: 100%; display: block; box-sizing: border-box; -webkit-appearance: none; }
.ui-search-field:focus { border-color: #2bc5e1; }
.ui-search-field-icon { position: absolute; right: 1.1em; top: 50%; margin-top: -0.5em; color: #cfd4da; }
.ui-search-field::-webkit-input-placeholder { color: #aaa; }
.ui-search-field:-moz-placeholder { color: #aaa; }
.ui-search-field::-moz-placeholder { color: #aaa; }
.ui-search-field:-ms-input-placeholder { color: #aaa; }

/* -- Preview boxes -- */
.preview { background: #F7FBFC; box-shadow: 0 1px 2px rgba(0,0,0,0.1); border-radius: 2px; padding: 1.5em 0; display: flex; align-items: center; justify-content: center; }
.preview-full { margin: 0 auto 2em; }
.video-preview { position: relative; padding-bottom: 56.25%; height: 0; }
.video-preview iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }

.preview-block { display: block; height: 1.5em; margin: 0 0 0.5em 0; background: #E6E6E6; }
.preview-block-80 { width: 80%; }
.preview-block-60 { width: 60%; }
.preview-block-40 { width: 40%; }
.preview-block-20 { width: 20%; }
.preview-block-real { margin: 0 0 0.5em 0; display: block; }

/* -- Help boxes and containers -- */
.help-box {	}
.help-video { background: #000; color: #fff; text-align: center; margin: 1em 0; height: 0; padding-bottom: calc((14 / 25) * 100%); position: relative; }
.help-video p { margin: 0; padding: 0; position: absolute; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); text-align: center; width: 100%; }
.help-box .avoid-controls {	}
.payment-notice { clear: both; margin: 1em auto; max-width: 30em; background: #ecf5fc; color: #4f5b83; border-radius: 0.25em; padding: 0.5em; text-align: center; }
.payment-notice .fa { margin-right: 0.5em; color: #B6CEE0; font-size: 160%; vertical-align: middle; }

/* -- Uploaders -- */
.uploader-dropzone {	}
.uploader-dropzone input[type="file"] { display: none !important; }
.uploader-dropzone .uploader-progress { color: #fff; font-size: 90%; padding: 0.1em 1em; background: #21c3c5; margin-top: 0.5em; box-sizing: border-box; min-width: 3.25em; }
.uploader-dropzone .uploader-progress-percent {	}

.uploader.uploader-block { text-align: center; padding: 1em 3em; border: 1px solid #e8e8e8; border-radius: 0.25em; background: #f9fafb; max-width: 70%; margin: 0 auto; min-height: 7em; }
.uploader.uploader-block.ui-empty .uploader-trigger { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%);	}
.uploader.uploader-block .uploader-trigger { float: none; margin: 0; position: static; }
.uploader.uploader-block .uploader-preview { width: 100%; background: none; border: none; height: auto; min-height: 5em; }
.uploader.uploader-block .uploader-preview:empty { display: none; }
.uploader.uploader-block .uploader-preview img { position: static; transform: none; max-width: 100%; margin: 1em auto; }
.uploader.uploader-block.ui-empty .uploader-delete { display: none; }

.uploader.uploader-max { max-width: 100%; padding: 1em; }
.uploader.uploader-max .uploader-preview { padding: 0; }

/* -- Progress bar -- */
.progress-bar { height: 2em; position: relative; border-radius: 0.25em; border: 1px solid #ecf0f1; background: #f9f9f9; box-sizing: border-box; }
.progress-bar em { font-style: normal; position: absolute; left: 0.5em; line-height: 2em; color: #3b4752; z-index: 10; font-weight: bold; }
.progress-bar span { position: absolute; top: -1px; left: -1px; padding: 0 1px; height: calc(100% + 2px); background: #d0e8e8; width: 0%; border-radius: 0.25em; transition: width 750ms cubic-bezier(0.22, 0.61, 0.36, 1); max-width: 100%; }

/* -- Switch user menu -- */
.ui-switchuser-user-select { overflow-x: hidden; overflow-y: scroll; max-height: 21.5em; margin: 1em 0; padding: 0; list-style: none; }
.ui-switchuser-user-select li { border: 1px solid #eee; border-radius: 0.25em; padding: 0.5em; transition: border-color 150ms; }
.ui-switchuser-user-select li:after { content: ""; display: table; clear: both; }
.ui-switchuser-user-select li label { margin-right: 0; width: 100%; box-sizing: border-box; font-weight: bold; }
.ui-switchuser-user-select li label::before { margin-top: 1em; }
.ui-switchuser-user-select li label::after { margin-top: 1.25em; }
.ui-switchuser-user-select li i { display: block; font-style: normal; font-weight: normal; font-size: 80%; margin: 0.5em 0 0 0; cursor: default; }
.ui-switchuser-user-select .ui-switchuser-user-field { display: block; cursor: default; }
.ui-switchuser-user-select .ui-switchuser-user-username { font-size: 90%; }
.ui-switchuser-user-select .ui-switchuser-user-actions { float: right; margin-top: 0.4em; }
.ui-switchuser-user-select li .ui-switchuser-user-thumb { float: left; margin: 0 0.85em 0 0; width: 3em; height: 3em; border-radius: 0.25em; }
.ui-switchuser-user-select li + li { margin-top: 0.5em; }
.ui-switchuser-user-select li:hover { border-color: #d0d0d0; }
.ui-switchuser-user-select li.active { border-color: #10CFBD; }

/* -- Rules editor -- */
.tc-rules {	}
.tc-rules.tc-rules-list { font-size: 14px; }
.tc-rules-item { display: flex; align-items: center; border-radius: 0.25em; background: #fff; border: 1px solid transparent; padding: 0.5em; transition: background-color 150ms, border-color 150ms; }
.tc-rules-item:hover { background: #fbfbfa; border-color: #e8e8e8; }
.tc-rules-item + .tc-rules-item { margin-top: 1em; }
.tc-rules-item-description { padding-right: 1em; line-height: 1.8; color: #555459; }
.tc-rules-item-description .tc-rules-item-description-cond { background-color: #f1f7f9; color: #617075; padding: 0.1em 0.25em 0.25em; border-radius: 0.25em; vertical-align: baseline; }
.tc-rules-item-description .tc-rules-item-description-actn { background-color: #deeef3; color: #617075; padding: 0.1em 0.25em 0.25em; border-radius: 0.25em; vertical-align: baseline; }
.tc-rules-item-actions { margin-left: auto; display: flex; min-width: 10.25em; }
body.root .tc-rules-item-actions .pure-button { flex-grow: 1; }
.tc-rules-item .ui-rules-edit { margin-left: auto; }
.tc-rules-rule {	}
.tc-rules-rule h1 { font-size: 120%; margin: 0 0 0.5em 0; }
.tc-rules-rule-actions:not(:empty) { margin-top: 1em; padding-right: 0.5em; text-align: right; }
.tc-rule {	}
.tc-rule-matches {	}
.tc-rule-match { border-left: 4px solid #21c3c5; padding: 0 0 0 0.5em; }
.tc-rule-match + .tc-rule-match { margin-top: 2em; }
.tc-rule-match h6 { font-size: 100%; margin: 0 0 0.5em; }
.tc-rule-condition { display: flex; align-items: center; background: #f1f7f9; padding: 1em 1.25em; }
.tc-rule-condition + .tc-rule-condition { margin-top: 0.5em; }
.tc-rule-condition-actns { margin-left: auto; }
.tc-rule-match-actns { margin-top: 1em; }
.tc-rule-actns { margin-top: 1.5em; padding-left: calc(0.5em + 4px); }

.tc-rule-actions { margin: 1.5em 0 0; padding: 1.5em; background: #f9f9f9; margin-left: -24px; margin-right: -24px; margin-bottom: -16px; }
.tc-rule-actions .empty-state { background-color: #fff; }
.tc-rule-actions[data-action_count="1"] .ui-rules-remove_action { display: none; }
.tc-rule-action { display: flex; align-items: center; padding: 0 1.25em 0 0.75em; }
.tc-rule-action-actns { margin-left: auto; }
.tc-rule-action + .tc-rule-action { margin-top: 0.5em; }
.tc-rule-action-desc {	}
.tc-rule-actions-actns { margin-top: 0.5em; padding-left: calc(0.5em + 3px); }

body.root .ui-rules-fixed-add_condition { min-width: 6em; }
body.root .ui-rules-fixed-add_match { min-width: 6em; }
body.root .ui-rules-fixed-add_action { min-width: 6em; }
body.root .ui-rules-fixed-button { min-width: 5em; }

#tc-rules-condition-config-target { position: relative; }
#tc-rules-condition-config-target.ui-loading-tiny-spinner { min-height: 4em; }
#tc-rules-action-config-target { position: relative; }
#tc-rules-action-config-target.ui-loading-tiny-spinner { min-height: 4em; }

.tc-rules-option_grid { display: grid; grid-template-columns: repeat(3, 1fr); grid-column-gap: 2em; grid-row-gap: 2em; grid-auto-rows: 1fr; margin-bottom: 1em; }
.tc-rules-option_grid-item { cursor: pointer; padding: 1em 0.5em; box-sizing: border-box; display: flex; flex-direction: column; align-items: center; justify-content: center; transition: background-color 150ms, border-color 150ms, border-width 150ms, box-shadow 150ms; background: #FFFFFF; border: 1px solid #F0F0F0; box-shadow: 1px 1px 0 0 rgba(243,243,243,0.50); border-radius: 0.5em; }
.tc-rules-option_grid-item:hover { box-shadow: 1px 1px 8px 0 rgba(212, 212, 212, 0.5), inset 0 0 0 1px #848f9c; border-color: #848f9c; }
.tc-rules-option_grid-item.active { box-shadow: 1px 1px 5px 0 rgba(158, 158, 158, 0.3), inset 0 0 0 1px #848f9c; border-color: #848f9c; }
.tc-rules-option_grid-item:hover .tc-rules-option_grid-item-icon,
.tc-rules-option_grid-item.active .tc-rules-option_grid-item-icon {	}
.tc-rules-option_grid-item.coming_soon { background-color: #f9f9f9; cursor: default; }
.tc-rules-option_grid-item.coming_soon i { color: #c3c3c3; }
.tc-rules-option_grid-item.coming_soon img { opacity: 0.3; }
.tc-rules-option_grid-item.coming_soon .tc-rules-option_grid-item-name { color: #c3c3c3; }
.tc-rules-option_grid-item.coming_soon .tc-rules-option_grid-item-coming_soon { font-weight: normal; letter-spacing: normal; font-size: 75%; margin: 0; color: #999; }
.tc-rules-option_grid-item-icon { text-align: center; margin: 0 0 0.5em; }
.tc-rules-option_grid-item-icon i { font-size: 160%; color: #7fa1b5; }
.tc-rules-option_grid-item-icon img { display: block; width: 100%; max-width: 3em; max-height: 3em; }
.tc-rules-option_grid-item-name { margin: 0; font-size: 90%; letter-spacing: normal; text-align: center; color: #8C8C8C; }

.ui-input-affiliate_search { position: relative; }
.ui-input-affiliate_search-clear { cursor: pointer; position: absolute; top: 50%; right: -1.5em; transform: translateY(-50%); font-size: 140%; opacity: 0; transition: right 150ms, opacity 90ms; }
.ui-input-affiliate_search.ui-locked {	}
.ui-input-affiliate_search.ui-locked input { background-color: #f9f9f9 !important; color: #647284 !important; font-weight: bold; cursor: default; }
.ui-input-affiliate_search.ui-locked .ui-input-affiliate_search-clear { right: 0.2em; opacity: 0.6; }

/* -- Searchable lists -- */
.ui-search_list {	}
.ui-search_list-controls { display: flex; align-items: center; justify-content: center; padding: 1.5em; }
.ui-search_list-controls > div { flex-grow: 1; margin: 0 0.5em; box-sizing: border-box; }
.ui-search_list-controls > div:first-child { margin-left: 0; }
.ui-search_list-controls > div:last-child { margin-right: 0; }
.ui-search_list-controls .ui-search_list-control-query {	}
.ui-search_list-controls .ui-search_list-control-query input { font-size: 100%; padding: 0.68em; border-color: #D3D3D3; }
.ui-search_list-controls .ui-search_list-control-query input:focus { box-shadow: none; border-color: #b3b3b3; }
.ui-search_list-controls .ui-search_list-control-type { max-width: 15em; }
.ui-search_list-controls .ui-search_list-control-date { max-width: 13em; }
.ui-search_list-controls .ui-search_list-control-actions { display: flex; max-width: 12em; }
.ui-search_list-controls .ui-search_list-control-actions .pure-button { width: 100%; }
.ui-search_list-controls .dropdown { border-color: #D3D3D3; }

.ui-search_list-control-date #stats-date-range-type-custom-wrap { position: absolute; padding-right: 2em; top: 0; width: calc(100% - 0.5em - 1px); height: calc(100% - 2px); box-sizing: border-box; margin: 1px 0 0 0.5em; border: 1px solid transparent; border-left: none; background: #fff; border-radius: 0.5em; }
.ui-search_list-control-date #stats-date-range-type-custom-wrap:before { content: ""; display: block; position: absolute; width: 0.5em; height: 1px; top: 50%; left: 50%; background: #c5c5c5; margin-left: -1.75em; }
.ui-search_list-control-date #stats-date-range-type-custom-wrap input { border: none; width: 50%; margin: 0; background: transparent; border: 1px solid transparent; border-radius: 0; padding: 0.43em 0.4em; height: 2.4em; font-weight: bold; font-size: 100%; color: #747e87; }
.ui-search_list-control-date #stats-date-range-type-custom-wrap input:focus { box-shadow: none; }
.ui-search_list-control-date #stats-date-range-type-custom-clear { position: absolute; right: 0.5em; top: 50%; margin: -8px 0 0 0; color: #5c6064; font-size: 1.4em; cursor: pointer; }

.ui-search_list-stat_cards { display: grid; grid-template-columns: repeat(4, 1fr); grid-column-gap: 2em; grid-row-gap: 2em; margin: 1.5em 0 0 0; }
.ui-search_list-stat_card { flex-grow: 1; display: flex; justify-content: center; align-items: center; background: #FFFFFF; border: 2px solid #F0F0F0; box-shadow: 1px 1px 0 0 rgba(239,239,239,0.50); border-radius: 5px; padding: 2.2em 1em; box-sizing: border-box; transition: border-color 150ms; cursor: pointer; }
.ui-search_list-stat_card:hover { border-color: #d6d6d6; }
.ui-search_list-stat_card.active { border-color: #B8B8B8; }
.ui-search_list-stat_card .ui-search_list-stat_card-icon { max-width: 2.8em; margin-right: 1.5em; }
.ui-search_list-stat_card .ui-search_list-stat_card-icon img { display: block; width: 100%; }
.ui-search_list-stat_card .ui-search_list-stat_card-content {	}
.ui-search_list-stat_card .ui-search_list-stat_card-content h5 { margin: 0; letter-spacing: normal; color: #757575; font-weight: bold; text-align: center; font-size: 120%; }
.ui-search_list-stat_card .ui-search_list-stat_card-content h6 { margin: 0; letter-spacing: normal; color: #8C8C8C; font-weight: bold; text-align: center; font-size: 100%; }
.ui-search_list-stat_card[data-filter_type="active"] h5 { color: #29B0B1; }
.ui-search_list-stat_card[data-filter_type="suspended"] h5 { color: #B25B41; }
.ui-search_list-stat_card[data-filter_type="expired"] h5 { color: #B1B2B3; }

.ui-search_list-list { margin: 1.5em 0 0 0; }
.ui-search_list-results { padding: 0; }
.ui-search_list-results-list { padding: 0; margin: 0; list-style: none; }

.ui-search_list-results-row { display: flex; align-items: center; padding: 1em; margin: 0; box-sizing: border-box; color: #6F6F6F; color: #6F6F6F; border: 1px solid transparent; transition: background-color 150ms, border-color 150ms; }
.ui-search_list-results-list .ui-search_list-results-row:hover { background: #FBFAFC; }
.ui-search_list-results-row.ui-search_list-results-row-header { font-weight: bold; position: relative; padding: 1em; margin: 0; background: #f5f5f5; }
/*.ui-search_list-results-row.ui-search_list-results-row-header::after { content: ""; display: block; height: 1px; background: #EAEAEA; position: absolute; bottom: 0; left: 1.5em; right: 1.5em; }*/
.ui-search_list-results-row.ui-search_list-results-row-header .ui-search_list-results-col { color: #6F6F6F; }
.ui-search_list-results-col {	}
.ui-search_list-results-col-object { flex-grow: 1; }
.ui-search_list-results-col-object-info { display: flex; align-items: center; }
.ui-search_list-results-col-object-info-img { flex-shrink: 0; width: 3.5em; margin: 0 1.5em 0 0; }
.ui-search_list-results-col-object-info-img img { display: block; width: 100%; }
.ui-search_list-results-col-object-info-content { display: flex; flex-direction: column; }
.ui-search_list-results-row .order-row-customer-name { font-weight: bold; }
.ui-search_list-results-row a:link,
.ui-search_list-results-row a:visited,
.ui-search_list-results-row a:hover,
.ui-search_list-results-row a:active { color: #5385C5; text-decoration: none; }
.ui-search_list-results-col-status { width: 14%; }
.ui-search_list-results-col-date { width: 12%; color: #D0D0D0; }
.ui-search_list-results-col-actions { width: 15%; text-align: right; margin-left: auto; }

.ui-search_list-results-status_marker { display: flex; align-items: center; }
.ui-search_list-results-status_marker::before { content: ""; display: inline-block; width: 0.65em; height: 0.65em; border-radius: 50%; background-color: #999; margin: 0 0.3em 0 0; }
.ui-search_list-results-status_marker-active { color: #29B0B1; }
.ui-search_list-results-status_marker-active::before { background-color: #29B0B1; }
.ui-search_list-results-status_marker-suspended { color: #B25B41; }
.ui-search_list-results-status_marker-suspended::before { background-color: #B25B41; }
.ui-search_list-results-status_marker-expired { color: #B1B2B3; }
.ui-search_list-results-status_marker-expired::before { background-color: #B1B2B3; }

.ui-search_list-results-col-sort { margin: 0 0 0 0.5em; opacity: 0; transition: opacity 150ms; }
.ui-search_list-results-col-sort.active { opacity: 1; }
.ui-search_list-results-col:hover .ui-search_list-results-col-sort { opacity: 1; }
.ui-search_list-results-col-sort-control { cursor: pointer; display: inline-block; vertical-align: middle; width: 9px; height: 5px; background: url(/static/images/chevron_up.png) no-repeat; background-size: contain; }
.ui-search_list-results-col-sort-desc { background-image: url(/static/images/chevron_down.png); }
.ui-search_list-results-col-sort-control.active { display: none; }

.students-sort.students-sort-post { margin: 1.5em 0 0 0; }

/* -- Modal windows -- */
.alertify .ajs-commands button { display: none !important; }
.alertify .ajs-dialog.tc-modal-switchuser.ui-loading .loading-box { height: 16em; display: flex; align-items: center; justify-content: center; }
.alertify .ajs-dialog.tc-modal-switchuser.ui-loading .loading-box span { display: none; }
.alertify .ajs-dialog.tc-modal-switchuser.ui-loading .loading-box i { display: block; width: 80px; height: 80px; -moz-box-sizing: border-box; box-sizing: border-box; border-radius: 40px; border: solid 10px rgba(0, 0, 0, 0.2); border-top-color: #000; margin: 0 auto; -webkit-animation: spin 1s infinite linear; }

.alertify .box.box-tabbed .tabs li { padding: 0.7em 1em; font-size: 100%; }
.alertify .box.box-tabbed .tabs li i { display: inline-block; margin: 0 0.5em 0 0; font-size: 115%; }
.alertify .box.box-tabbed .pane { display: none; padding: 1em; border: 1px solid #e8e8e8; }
.alertify .box.box-tabbed .pane.active { display: block; }

.alertify .ajs-dialog.tc-modal-gdpr { max-width: 400px; }
.alertify .ajs-dialog.tc-modal-gdpr.ui-loading .loading-box { height: 16em; display: flex; align-items: center; justify-content: center; }
.alertify .ajs-dialog.tc-modal-gdpr.ui-loading .loading-box span { display: none; }
.alertify .ajs-dialog.tc-modal-gdpr.ui-loading .loading-box i { display: block; width: 80px; height: 80px; -moz-box-sizing: border-box; box-sizing: border-box; border-radius: 40px; border: solid 10px rgba(0, 0, 0, 0.2); border-top-color: #000; margin: 0 auto; -webkit-animation: spin 1s infinite linear; }
.alertify .ajs-dialog.tc-modal-gdpr .ui-documentation { font-size: 90%; }
.alertify .ajs-dialog.tc-modal-gdpr .ui-documentation .generic-list {	border-bottom: 1px solid #eee; margin: 0 0 1em; }

.alertify .ajs-dialog.tc-modal-genericload.ui-loading .loading-box { height: 16em; display: flex; align-items: center; justify-content: center; flex-direction: column; }
.alertify .ajs-dialog.tc-modal-genericload.ui-loading .loading-box span { margin: 1em 0 0; }
.alertify .ajs-dialog.tc-modal-genericload.ui-loading .loading-box i { display: block; width: 80px; height: 80px; -moz-box-sizing: border-box; box-sizing: border-box; border-radius: 40px; border: solid 10px rgba(0, 0, 0, 0.2); border-top-color: #000; margin: 0 auto; -webkit-animation: spin 1s infinite linear; }

.alertify .ajs-dialog.tc-modal-genericloadalt.ui-loading .loading-box { height: 10em; display: flex; align-items: center; justify-content: center; flex-direction: column; }
.alertify .ajs-dialog.tc-modal-genericloadalt.ui-loading .loading-box span { margin: 0 0 1em; }
.alertify .ajs-dialog.tc-modal-genericloadalt.ui-loading .loading-box i { display: block; width: 30px; height: 30px; -moz-box-sizing: border-box; box-sizing: border-box; border-radius: 50%; border: solid 4px rgba(0, 0, 0, 0.2); border-top-color: #3b4752; margin: 0 auto; -webkit-animation: spin 1s infinite linear; }
.alertify .ajs-dialog.tc-modal-genericloadalt.ui-loading.ui-loading-nospin .loading-box i { display: none; }

.alertify .ajs-dialog.tc-modal-genericwide { max-width: 64em !important; }
.alertify .ajs-dialog.tc-modal-genericwide.tc-modal-nested { max-width: 60em !important; margin: 8.5em auto; }

.alertify .ajs-dialog.tc-modal-evensizing { max-width: 64em !important; padding: 1em 1em 0 1em; }
.alertify .ajs-dialog.tc-modal-evensizing .ajs-header { margin: -0.5em; padding: 16px 1em; }
.alertify .ajs-dialog.tc-modal-evensizing .ajs-footer { margin-left: -1em; margin-right: -1em; padding: 1em; }

.alertify .ajs-dialog .ui-content.tc-modal-maxheight { max-height: 60vh; overflow: scroll; }

.alertify .ajs-dialog.tc-modal-genericwider { max-width: 78em !important; }
.alertify .ajs-dialog.tc-modal-genericwider .ajs-footer { padding: 1.75em; }

.alertify .ajs-dialog.tc-modal-genericslightwide { max-width: 550px !important; }

.alertify .ajs-dialog.tc-modal-learn-edition-upgrade { max-width: 50em !important; margin-top: 6em; }

.alertify .ajs-dialog.tc-modal-genericconfirm { max-width: 470px !important; margin-top: 7.5em; }

.alertify .ajs-dialog.tc-modal-filter { margin-top: 28em; }

.alertify .ajs-dialog.tc-modal-top-offset { margin-top: 8em; }

.alertify .ajs-dialog.tc-modal-twofa { max-width: 31em !important; }
.alertify .ajs-dialog.tc-modal-twofa .ajs-header { white-space: normal; }
.alertify .ajs-dialog.tc-modal-twofa .fa-user-lock { font-size: 500%; color: #d0d6d8; }
.alertify .ajs-dialog.tc-modal-twofa .ui-content { padding: 0 0.5em; margin-bottom: -1em; }
.alertify .ajs-dialog.tc-modal-twofa .ui-content .img { width: 100%; max-width: 7em; }
.alertify .ajs-dialog.tc-modal-twofa .ajs-footer .ajs-buttons.ajs-primary { text-align: center; }
.alertify .ajs-dialog.tc-modal-twofa .tc-2factor-steps { max-width: 20em; }

.alertify .ajs-dialog.tc-modal-genericsimple {	}
.alertify .ajs-dialog.tc-modal-genericsimple .ajs-content { padding-top: 12px; }

.alertify .ajs-dialog.tc-modal-centrecontrols {	}
.alertify .ajs-dialog.tc-modal-centrecontrols .ajs-footer { display: flex; align-items: center; justify-content: center; }
.alertify .ajs-dialog.tc-modal-centrecontrols .ajs-footer .ajs-buttons.ajs-auxiliary { float: none; }
.alertify .ajs-dialog.tc-modal-centrecontrols .ajs-footer .ajs-buttons.ajs-primary { text-align: left; }

.alertify .ajs-dialog.tc-modal-notitle {	}
.alertify .ajs-dialog.tc-modal-notitle .ajs-header { display: none; }
.alertify .ajs-dialog.tc-modal-notitle .ajs-body .ajs-content { padding-top: 0; }

.alertify .ajs-dialog.tc-modal-nofooter .ajs-footer { display: none; }
.alertify .tc-modal-fakefooter { background: #ecf0f1; border-top: #ecf0f1 2px solid; border-radius: 0 0 2px 2px; padding: 15px; margin: 16px -24px -16px -24px; display: flex; flex-wrap: nowrap; align-items: center; justify-content: flex-end; }

.alertify .ajs-dialog.tc-modal-shorterbody .ajs-body .ajs-content { padding-top: 12px; }

.alertify .ajs-dialog.tc-modal-pricing_option,
.product_editor .alertify .ajs-dialog.tc-modal-pricing_option { max-width: 48em; }

.alertify .ajs-dialog.tc-modal-cancellation_settings_option { max-width: 48em !important; }

.alertify .ajs-dialog.tc-modal-evensizing { max-width: 64em !important; padding: 1em 1em 0 1em; }

.alertify .ajs-dialog.tc-modal-slim { max-width: 35em !important; }

.alertify .modal-description { width: 33em; margin: 0 auto; color: #555359; }
.alertify .modal-description p { text-align: left; color: #555359; font-size: 100%; font-weight: 400; }
.alertify .modal-description p.text-minimal { color: #b4bdbf; font-size: 80%; }

.alertify .ajs-dialog.tc-rules_editor { max-width: 46em; }
.alertify .ajs-dialog.tc-rules_options_editor { max-width: 40em; margin-top: 8em; }

.alertify .ajs-dialog.tc-modal-funnel_editor {  }
.alertify .ajs-dialog.tc-modal-funnel_editor .ui-content > .pure-form-stacked > div { min-height: 12em; }
.alertify .ajs-dialog.tc-modal-funnel_editor .ajs-footer .ajs-primary.ajs-buttons .ajs-ok { min-width: 8em; }

.alertify .ajs-dialog.tc-rules_editor-condition,
.alertify .ajs-dialog.tc-rules_editor-action { max-width: 43em; margin-top: 8em; }
.alertify .ajs-dialog.tc-rules_editor-condition .ajs-header,
.alertify .ajs-dialog.tc-rules_editor-action .ajs-header { font-size: 175%; }
.alertify .ajs-dialog.tc-rules_editor-condition .ajs-content,
.alertify .ajs-dialog.tc-rules_editor-action .ajs-content { padding: 2em 0; }
.alertify .ajs-dialog.tc-rules_editor-condition .ql-editor,
.alertify .ajs-dialog.tc-rules_editor-action .ql-editor { font-size: 80%; }
.alertify .ajs-dialog.tc-rules_editor-condition .tagify,
.alertify .ajs-dialog.tc-rules_editor-action .tagify { margin: 0.25em 0; }

/*.alertify .ajs-dialog.tc-rules_editor-condition select,
.alertify .ajs-dialog.tc-rules_editor-action select,
.alertify .ajs-dialog.tc-rules_editor-condition input,
.alertify .ajs-dialog.tc-rules_editor-action input,
.alertify .ajs-dialog.tc-rules_editor-condition .tagify,
.alertify .ajs-dialog.tc-rules_editor-action .tagify { max-width: 20em; }*/

.alertify .ajs-dialog.tc-object_editor { max-width: 600px; }

.alertify .ajs-dialog.tc-image_editor { max-width: 400px; }

.alertify .ajs-dialog.tc-modal-tinyconfirm { max-width: 31em !important; }
.alertify .ajs-dialog.tc-modal-tinyconfirm .ajs-header { display: none; }
.alertify .ajs-dialog.tc-modal-tinyconfirm .ajs-body .ajs-content { padding-top: 0; }
.alertify .ajs-dialog.tc-modal-tinyconfirm .ajs-footer .ajs-buttons.ajs-primary { text-align: center; }
.alertify .ajs-dialog.tc-modal-tinyconfirm.tc-modal-tinyconfirm-offset { margin-top: 13.25em; }
.alertify .ajs-dialog.tc-modal-tinyconfirm.tc-modal-tinyconfirm-extra { max-width: 44em !important; }

p.legal-trademark { text-align: center; font-size: 11px; margin: 0.5em 0 0 0; color: #cacaca; }

.radiogroup-large label .icon-fraud { display: block; margin: 0 auto 0.5em; max-height: 4em; }
.radiogroup-large label i.icon-fraud { margin-top: 0.25em; margin-bottom: 0.25em; }

@-webkit-keyframes rising {
	0% {
		-webkit-transform: translateY(-50%);
		transform: translateY(-50%);
		opacity: 0;
	}

	50% {
		-webkit-transform: translateY(0%);
		transform: translateY(0%);
		opacity: 1;
	}

	100% {
		-webkit-transform: translateY(50%);
		transform: translateY(50%);
		opacity: 0;
	}
}

@keyframes rising {
	0% {
		-webkit-transform: translateY(-50%);
		transform: translateY(-50%);
		opacity: 0;
	}

	50% {
		-webkit-transform: translateY(0%);
		transform: translateY(0%);
		opacity: 1;
	}

	100% {
		-webkit-transform: translateY(50%);
		transform: translateY(50%);
		opacity: 0;
	}
}

.ui-jobs-view.active .fa {
	-webkit-transform: translateY(-50%);
	transform: translateY(-50%);
	opacity: 0;
	-webkit-animation: rising 1000ms linear infinite;
	animation: rising 1000ms linear infinite;
}

/* Fixes etc */
.ql-editor .ql-paste-manager { position: static; }

/* Standalone spinner --*/
.loading-box { display: none; }
.loading-box.active { height: 10em; display: flex; align-items: center; justify-content: center; flex-direction: column; }
.loading-box.active span { margin: 0 0 1em; }
.loading-box.active i { display: block; width: 30px; height: 30px; -moz-box-sizing: border-box; box-sizing: border-box; border-radius: 50%; border: solid 4px rgba(0, 0, 0, 0.2); border-top-color: #3b4752; margin: 0 auto; -webkit-animation: spin 1s infinite linear; }

/*.custom-scrollbar::-webkit-scrollbar {
	width: 10px;
	background-color: #F5F5F5;
}

.custom-scrollbar::-webkit-scrollbar-track {
	border-radius: 10px;
	background: rgba(0,0,0,0.1);
	border: 1px solid #ccc;
}

.custom-scrollbar::-webkit-scrollbar-thumb {
	border-radius: 10px;
	background: linear-gradient(left, #fff, #e4e4e4);
	border: 1px solid #aaa;
}

.custom-scrollbar::-webkit-scrollbar-thumb:hover {
	background: #fff;
}

.custom-scrollbar::-webkit-scrollbar-thumb:active {
	background: linear-gradient(left, #22ADD4, #1E98BA);
}*/

.custom-scrollbar::-webkit-scrollbar {
	width: 14px;
}
.custom-scrollbar::-webkit-scrollbar-thumb {
	background-clip: content-box;
	border: 4px solid transparent;
	border-radius: 7px;
	box-shadow: inset 0 0 0 10px #d0d0d0;
}
.custom-scrollbar::-webkit-scrollbar-button {
	width: 0;
	height: 0;
	display: none;
}
.custom-scrollbar	::-webkit-scrollbar-corner {
	background-color: transparent;
}

/* -- Loader animation --*/
@-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); } }
#loader-wrap { position: absolute; background: rgba(255,255,255,0.8); width: 100%; height: 100%; top: 0; left: 0; display: none; align-items: center; justify-content: center; z-index: 999; }
@supports (-webkit-appearance:none) { #loader-wrap { position: fixed; } }
_:-ms-input-placeholder, :root #loader-wrap { position: fixed; }
#loader { display: block; width: 60px; height: 60px; -moz-box-sizing: border-box; box-sizing: border-box; border-radius: 30px; border: solid 8px rgba(0, 0, 0, 0.2); border-top-color: #000; margin: 0 auto; -webkit-animation: spin 1s infinite linear; }
#loader-wrap p { margin: 0; width: 100%; position: absolute; top: calc(50% + 2.5em); left: 0; text-align: center; font-size: 200%; font-weight: 300; color: #404f66; }

/* -- Highlight animation --*/
@-webkit-keyframes flash-highlight {
	0%	 { background-color: #fff; }
	20%	{ background-color: #f1fbec; }
	100% { background-color: #fff; }
}
@-moz-keyframes flash-highlight {
	0%	 { background-color: #fff; }
	20%	{ background-color: #f1fbec; }
	100% { background-color: #fff; }
}
@-o-keyframes flash-highlight {
	0%	 { background-color: #fff; }
	20%	{ background-color: #f1fbec; }
	100% { background-color: #fff; }
}
@keyframes flash-highlight {
	0%	 { background-color: #fff; }
	20%	{ background-color: #f1fbec; }
	100% { background-color: #fff; }
}

/* -- Error animation --*/
@-webkit-keyframes flash-error {
	0%	 { background-color: #fff; }
	20%	{ background-color: #f9e3db; }
	100% { background-color: #fff; }
}
@-moz-keyframes flash-error {
	0%	 { background-color: #fff; }
	20%	{ background-color: #f9e3db; }
	100% { background-color: #fff; }
}
@-o-keyframes flash-error {
	0%	 { background-color: #fff; }
	20%	{ background-color: #f9e3db; }
	100% { background-color: #fff; }
}
@keyframes flash-error {
	0%	 { background-color: #fff; }
	20%	{ background-color: #f9e3db; }
	100% { background-color: #fff; }
}

@-webkit-keyframes flash-in {
	0% { opacity: 0; }
	100% { opacity: 1; }
}

@keyframes flash-in {
	0% { opacity: 0; }
	100% { opacity: 1; }
}

.flash-in { -webkit-animation: flash-in 750ms; -moz-animation: flash-in 750ms; -o-animation: flash-in 750ms; animation: flash-in 750ms; }

@media (max-width: 1099px) {
	h5 { font-size: 100%; }
}

@media (max-width: 879px) {

}

@media (max-width: 919px) {

}

@media (max-width: 1024px) {
	.ui-recommended-products ul.recommended-products-grid { grid-template-columns: repeat(2, 1fr) !important; gap: 1em !important; padding: 1em 1.25em !important; }
}

@media (max-width: 840px) {
	.help-video { margin-right: 0; }

	.table-wrap tbody td { vertical-align: top; }
	.table-wrap .action-list li { display: block; text-align: left; margin: 0; }
}

@media (max-width: 768px) {
	.ui-recommended-products ul.recommended-products-grid { grid-template-columns: 1fr !important; gap: 0.75em !important; padding: 0.75em 1em !important; }
}

@media (max-width: 649px) {
	#menu-main li { margin: 0 0.5em 0 0; }
	.box.padding-0.box-tabbed .tabs { margin-top: -3.4em; }
	.box.box-tabbed.box-invisible .tabs { margin: 0 0 -0.1em 0; }
	.box.box-tabbed .tabs { margin: -5.4em 0 2em -2.05em; width: calc(100% + 4em); }
	.box.box-tabbed .tabs li { padding-left: 1em; padding-right: 1em; font-size: 120%; }
	#hero li div { padding-left: 1em; padding-right: 1em; }
}

@media (max-width: 693px) {
	#menu-main a { font-size: 100%; }
	a#menu-main-item-support { display: none; }
}

@media (max-width: 619px) {
	.ui-respond-hide-sm { display: none; }
	.root-app .header h1 { display: none; }
}

@media (max-width: 579px) {
	.header h1 { width: 47px; padding-top: 15px; }
	.header h1 a { width: 47px; height: 40px; background-size: cover; }
	.header .menu-main-wrap { width: calc(100% - 8em - 28px); }

	.box.box-tabbed .tabs li { padding-left: 0.5em; padding-right: 0.5em; font-size: 120%; }

	#menu-main a span { display: none; }
	#menu-main li ul li span { display: inline-block; }
	#menu-main a i { margin: 0; }
}

@media (max-width: 469px) {
	.root .box { padding: 1em; }
	.root .padding-full { padding: 1em !important; }
	.root .box.padding { padding-top: 0; }
	.box.box-tabbed .tabs { margin: -4.5em 0 2em -1.09em; }
	h1, h2, h3, h4, h5, h6 { margin: 0.5em 0; }
	.pure-form.pure-form-stacked label span { display: block; }

	.header h1 { display: none; }
	.header .menu-main-wrap { width: calc(100% - 6em); }
	#menu-main { text-align: left; }
}

/* Products list tabs: six labels wrap and the second row falls into the card.
   Keep one row and scroll it. Below 469px the shared width still assumes 2em
   of box padding, so size the scrollport to the 1em padding instead. */
@media (max-width: 767px) {
	#core-view-list-products-wrap.box.box-tabbed .tabs {
		display: flex;
		flex-wrap: nowrap;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
	}

	#core-view-list-products-wrap.box.box-tabbed .tabs::-webkit-scrollbar {
		display: none;
	}

	#core-view-list-products-wrap.box.box-tabbed .tabs li {
		flex: 0 0 auto;
		white-space: nowrap;
	}
}

@media (max-width: 469px) {
	#core-view-list-products-wrap.box.box-tabbed .tabs {
		width: calc(100% + 2em);
		margin-left: -1em;
	}
}

@media (max-width: 349px) {
	.pure-button:not(.hidden) + .pure-button { margin-left: 0.5em; }
	html body.root .pure-button, html body.root .button-primary, html body.root .button-success, html body.root .button-error, html body.root .button-warning, html body.root .button-secondary { padding-left: 0.4em; padding-right: 0.4em; }
	html body.root .pure-button i.fa, html body.root .button-primary i.fa, html body.root .button-success i.fa, html body.root .button-error i.fa, html body.root .button-warning i.fa, html body.root .button-secondary i.fa,
	html body.root .pure-button i.far, html body.root .button-primary i.far, html body.root .button-success i.far, html body.root .button-error i.far, html body.root .button-warning i.far, html body.root .button-secondary i.far { margin-right: 0.25em; }
	.pure-controls.controls-full { margin: 0; }
}

@media screen and (max-width: 820px) {
		.pure-u-single-1,
		.pure-u-single-1-1,
		.pure-u-single-1-2,
		.pure-u-single-1-3,
		.pure-u-single-2-3,
		.pure-u-single-1-4,
		.pure-u-single-3-4,
		.pure-u-single-1-5,
		.pure-u-single-2-5,
		.pure-u-single-3-5,
		.pure-u-single-4-5,
		.pure-u-single-5-5,
		.pure-u-single-1-6,
		.pure-u-single-5-6,
		.pure-u-single-1-8,
		.pure-u-single-3-8,
		.pure-u-single-5-8,
		.pure-u-single-7-8,
		.pure-u-single-1-12,
		.pure-u-single-5-12,
		.pure-u-single-7-12,
		.pure-u-single-11-12,
		.pure-u-single-1-24,
		.pure-u-single-2-24,
		.pure-u-single-3-24,
		.pure-u-single-4-24,
		.pure-u-single-5-24,
		.pure-u-single-6-24,
		.pure-u-single-7-24,
		.pure-u-single-8-24,
		.pure-u-single-9-24,
		.pure-u-single-10-24,
		.pure-u-single-11-24,
		.pure-u-single-12-24,
		.pure-u-single-13-24,
		.pure-u-single-14-24,
		.pure-u-single-15-24,
		.pure-u-single-16-24,
		.pure-u-single-17-24,
		.pure-u-single-18-24,
		.pure-u-single-19-24,
		.pure-u-single-20-24,
		.pure-u-single-21-24,
		.pure-u-single-22-24,
		.pure-u-single-23-24,
		.pure-u-single-24-24 {
				display: inline-block;
				*display: inline;
				zoom: 1;
				letter-spacing: normal;
				word-spacing: normal;
				vertical-align: top;
				text-rendering: auto;
		}

		.pure-u-single-1-24 {
				width: 4.1667%;
				*width: 4.1357%;
		}

		.pure-u-single-1-12,
		.pure-u-single-2-24 {
				width: 8.3333%;
				*width: 8.3023%;
		}

		.pure-u-single-1-8,
		.pure-u-single-3-24 {
				width: 12.5000%;
				*width: 12.4690%;
		}

		.pure-u-single-1-6,
		.pure-u-single-4-24 {
				width: 16.6667%;
				*width: 16.6357%;
		}

		.pure-u-single-1-5 {
				width: 20%;
				*width: 19.9690%;
		}

		.pure-u-single-5-24 {
				width: 20.8333%;
				*width: 20.8023%;
		}

		.pure-u-single-1-4,
		.pure-u-single-6-24 {
				width: 25%;
				*width: 24.9690%;
		}

		.pure-u-single-7-24 {
				width: 29.1667%;
				*width: 29.1357%;
		}

		.pure-u-single-1-3,
		.pure-u-single-8-24 {
				width: 33.3333%;
				*width: 33.3023%;
		}

		.pure-u-single-3-8,
		.pure-u-single-9-24 {
				width: 37.5000%;
				*width: 37.4690%;
		}

		.pure-u-single-2-5 {
				width: 40%;
				*width: 39.9690%;
		}

		.pure-u-single-5-12,
		.pure-u-single-10-24 {
				width: 41.6667%;
				*width: 41.6357%;
		}

		.pure-u-single-11-24 {
				width: 45.8333%;
				*width: 45.8023%;
		}

		.pure-u-single-1-2,
		.pure-u-single-12-24 {
				width: 50%;
				*width: 49.9690%;
		}

		.pure-u-single-13-24 {
				width: 54.1667%;
				*width: 54.1357%;
		}

		.pure-u-single-7-12,
		.pure-u-single-14-24 {
				width: 58.3333%;
				*width: 58.3023%;
		}

		.pure-u-single-3-5 {
				width: 60%;
				*width: 59.9690%;
		}

		.pure-u-single-5-8,
		.pure-u-single-15-24 {
				width: 62.5000%;
				*width: 62.4690%;
		}

		.pure-u-single-2-3,
		.pure-u-single-16-24 {
				width: 66.6667%;
				*width: 66.6357%;
		}

		.pure-u-single-17-24 {
				width: 70.8333%;
				*width: 70.8023%;
		}

		.pure-u-single-3-4,
		.pure-u-single-18-24 {
				width: 75%;
				*width: 74.9690%;
		}

		.pure-u-single-19-24 {
				width: 79.1667%;
				*width: 79.1357%;
		}

		.pure-u-single-4-5 {
				width: 80%;
				*width: 79.9690%;
		}

		.pure-u-single-5-6,
		.pure-u-single-20-24 {
				width: 83.3333%;
				*width: 83.3023%;
		}

		.pure-u-single-7-8,
		.pure-u-single-21-24 {
				width: 87.5000%;
				*width: 87.4690%;
		}

		.pure-u-single-11-12,
		.pure-u-single-22-24 {
				width: 91.6667%;
				*width: 91.6357%;
		}

		.pure-u-single-23-24 {
				width: 95.8333%;
				*width: 95.8023%;
		}

		.pure-u-single-1,
		.pure-u-single-1-1,
		.pure-u-single-5-5,
		.pure-u-single-24-24 {
				width: 100%;
		}
}

.product-requires-thrivepay-tooltip, .product-requires-thrive-pay-and-proplus-toolip {
	position: relative;
}

.product-requires-thrivepay-tooltip::after {
	content: "This feature requires the latest version of Stripe.";
	position: absolute;
	bottom: 125%;
	left: 50%;
	transform: translateX(-50%);
	background-color: #333333;
	color: white;
	padding: 5px 10px;
	border-radius: 4px;
	font-size: 14px;
	white-space: nowrap;
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.3s, visibility 0.3s;
}
.product-requires-thrive-pay-and-proplus-toolip::after {
	content: "This feature requires the latest version of Stripe and a Pro+ licence.";
	position: absolute;
	bottom: 125%;
	left: 50%;
	transform: translateX(-50%);
	background-color: #333333;
	color: white;
	padding: 5px 10px;
	border-radius: 4px;
	font-size: 14px;
	white-space: nowrap;
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.3s, visibility 0.3s;
}
#show-qr-code-button {
	pointer-events: unset;
	cursor: pointer;
}
.product-requires-thrivepay-tooltip:hover::after, .product-requires-thrive-pay-and-proplus-toolip::hover::after {
	opacity: 1;
	visibility: visible;
}

/* -- Dashboard Reskin Css -- */
.mark-selector::before{
	content: '●';
	color: #02CBC9;
	font-size: 1.5em;
	margin: 0 0.3em 0 0;
}

.mark-selector.darker::before{
	color: #0B4F6C;
}
.mark-selector.none::before{
	content: '|';
	color: #fff;
	margin: 0 -0.5em;
}

.mark-selector.gray::before{
	color: #D7DAE0;
}
.mark-selector.green-1::before{
	color: #A6E7E8;
}
.mark-selector.green-2::before{
	color: #7ADBDC;
}
.mark-selector.green-3::before{
	color: #05A2AA;
}
.mark-selector.green-4::before{
	color: #007B8B;
}
.mark-selector.green-5::before{
	color: #0B4F6C;
}

.tc-dropdown:not(.date_range){
	padding: 0.2em 1em !important;
	margin: 0.25em 0;
	position:relative;
}
.tc-dropdown select{
	font-weight:600 !important;
	padding-left: 5px !important;
}
.tc-box{
	margin: 1em 0;
	padding: 0.2em 1em;
	background: #fff;
	border-radius: 10px;        
}

.pure-g > div:first-child .tc-box {
    margin-right: 0.5em;
}
.pure-g > div:last-child .tc-box {
    margin-left: 0.5em;
}
.pure-g > div:not(:first-child):not(:last-child) .tc-box {
    margin: 1em 0.5em;
}

.tc-tabs{
	background-color:#FFF;
	border: 1px solid #E3E6EB;
	border-radius: 10px;
}
.tc-tabs-list{
	background-color:#F5F6F9;
	padding: 0.5em;
	margin-bottom: 0.5em;
	border-radius: 10px;
}
.tc-tabs-list .pure-u-1-5 {
    position: relative;
}

.tc-tabs-list a {
    padding: 0.5em 1em;
    margin: 0.5em;
    border-radius: 10px;
}

.tc-tabs-list .pure-u-1-5:not(:first-child)::before {
    content: '';
    position: absolute;
    top: 10%;
    left: 0;
    height: 80%;
    width: 1px;
    background-color: #E3E6EB; 
}
.tc-tabs-list a.active {
    background-color: #fff;
}
.tc-tabs-list p{
	margin: 0.5em 0 0.2em;
}
.tc-tabs-list h2{
	letter-spacing: normal;margin: 0 0 0.5em;
}
.tc-tabs canvas{
	background-color:#F5F6F9;
	border-radius: 0 0 10px 10px;
}
.tc-flex{
	display:flex;
}
.tc-between{
	justify-content: space-between;
}
.tc-items-center{
	align-items:center;
}

.tc-items-baseline{
	align-items: baseline;
}

.tc-justify-center{
	justify-content: center;
}
.tc-flex.tc-label p{
	margin: 0;
}
.tc-flex.tc-label{
	gap:1em;
	align-items: center;
}

.tc-wrap{
	flex-wrap: wrap;
}

.tc-justify-c-end{
	justify-content: flex-end;
}

.tc-chart-label-color{
	width: 8px;
	height: 8px;
	display: inline-block;
	margin-right: 5px;
	border-width: 2px;
	border-radius: 50%;
}
.tc-custom-tooltip-inner{
	width: 250px;
}

.tc-custom-tooltip-inner .tooltip-row{
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin: 0.5em;
}

.tc-box h2, .graph-top h2{
	letter-spacing: normal;
}
.ui-dashboard-head{
	display:flex; justify-content:space-between; align-items: baseline
}
.compare-btn-wrap{
	justify-content: end; align-items: center; display: flex;
}
.hr-small{
	margin: 1em 0;
}
.graph-content{
	padding: 1em;
	position: relative;
	background-color:#fff;
	max-height: 366px;
	overflow: hidden;
	border-radius: 0 0 10px 10px;
}
.graph-content canvas{
	height: 342px !important;
	background:#fff; 
	width:100%
}
.tc-tabs .ui-statistics-graph-wrapper{
	height: 100% !important;
	padding-bottom: 1em;
}
.vis-hidden{
	visibility: hidden;
}
.graph-top{
	background-color: #fff;
	border-bottom: 1px solid #E3E6EB;
	padding: 1em 2em;
	border-radius: 10px 10px 0 0;
}
.graph-top h2{
	margin: 0 !important;
}
.header-light{
	background-color: #fff !important;
	line-height: 64px; 
	min-height: 64px;
}
.header.header-light h1 a { 
	width: 150px; 
	height: 77px; 
	text-decoration: none;
	display: block;
	margin: 0;    
	background:  url(../../../../../static/images/logo-dark.png) no-repeat left center;
	outline: none;
	background-size: contain;
	position: relative; 
	transform: scale(0.98);
	will-change: transform; 
	transform-style: preserve-3d;
	transition: transform 150ms;
}


.header-light #menu-main a i{
	color: rgba(95, 105, 125, 1); 
}
.header-light #menu-main a{
	padding: 0 0.8em;
	line-height: 62px;
}
.header-light #menu-main a i,
.header-dark #menu-main a i {
	display: inline-block;
	width: 16px;
	height: 16px;
	vertical-align: middle;
}
.header-light #menu-main a i:before:not(#menu-main-item-transactions i, #menu-main-item-learn i) {
	content: '' !important; 
    display: inline-block;
    width: 100%;
    height: 100%;
	background-size: contain; 
	mask-size: contain; 
}

.header-light #menu-main-item-dash i:before {
    -webkit-mask: url('../../assets/space_dashboard.svg') no-repeat center;
    mask: url('../../assets/space_dashboard.svg') no-repeat center;
	mask-size: contain;
	background-color: rgba(95, 105, 125, 1);    
}

.header-light #menu-main-item-prodreports i.tc:before {
	content: "\f0db";
    -webkit-mask: url('../../assets/leaderboard.svg') no-repeat center;
    mask: url('../../assets/leaderboard.svg') no-repeat center;
	mask-size: contain;
	background-color: rgba(95, 105, 125, 1);    
}

.header-dark #menu-main-item-prodreports i.tc:before {
    content: "\f0db";
    -webkit-mask: url('../../assets/leaderboard.svg') no-repeat center;
    mask: url('../../assets/leaderboard.svg') no-repeat center;
    mask-size: contain;
    background-color: #ffffff;
}

.header-light #menu-main-item-products i:before {
    -webkit-mask: url('../../assets/lists.svg') no-repeat center;
    mask: url('../../assets/lists.svg') no-repeat center; 
	mask-size: contain;
	background-color: rgba(95, 105, 125, 1);
}
.header-light #menu-main-item-affiliates i:before {
    -webkit-mask: url('../../assets/partner_exchange.svg') no-repeat center;
    mask: url('../../assets/partner_exchange.svg') no-repeat center;
	mask-size: contain;
	background-color: rgba(95, 105, 125, 1);
}
.header-light #menu-main li.pure-menu-item a:hover i, .header-light #menu-main li.pure-menu-item.active a i { 
	color: #000;
}
.header-light #menu-main li.pure-menu-item a:hover i:before, .header-light #menu-main .active a i:before { 
	 filter: saturate(100%)  brightness(0);
}
.header-light #menu-main li.pure-menu-item{
	line-height: 62px;
	border-bottom: 3px solid transparent;
	transition: border-bottom 0.3s ease;
}
.header-light #menu-main li.pure-menu-item a:hover, .header-light #menu-main li.pure-menu-item.active a{
	background-color: #fff;
}
.header-light #menu-main li.pure-menu-item:hover, .header-light #menu-main li.pure-menu-item.active{
	border-bottom: 3px solid #02CBC9;
}

.header-light ul.menu-main-sub.active li a,
.header-dark ul.menu-main-sub.active li a {
	background-color: #fff !important;
	opacity: 1 !important;
	line-height: normal !important;
	padding: 0.75em 1em !important;
	font-weight: normal;
	vertical-align: middle;
}
.header-light ul.menu-main-sub.active li a span,
.header-dark ul.menu-main-sub.active li a span {
	opacity: 1 !important;
	color: #5b5b5b !important;
	position: relative !important;
	bottom: 0px !important;
	font-size: 100% !important;
	transform: none !important;
	font-weight: normal;
	vertical-align: middle;
}
.header-light ul.menu-main-sub.active li a:hover,
.header-dark ul.menu-main-sub.active li a:hover {
	background-color: #f5f6f9 !important;
}

.header-light .user-box .user-box-avatar-link:hover, #user-box.active {    
	background-color: #fff;
}

.header-light .user-box .user-box-avatar-link i {
	color: #5F697D;
}
.header-light .user-box .user-box-avatar-link:hover i, #user-box.active i {
    color: #000;
}

#menu-main-wrapper-prodreports ul.inaccessible:before {
	border-bottom-color: #F5F6F9;
}

#menu-main-wrapper-prodreports ul.inaccessible li a {
	background-color: #F5F6F9 !important;
}

#menu-main-wrapper-prodreports ul.inaccessible .locked-hint {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	display: block;
}

.text-align-end{
	text-align: end;
	margin: 0 1%;
}
.tc-switch-btn{
	border-color:#5F697D !important; color:#5F697D !important;
}

.date_range.tc-dropdown{
	background: #fff;
    border: 1px solid #edeff2;
    display: flex;
    align-items: center;
	justify-content: space-between;
    width: 100%;
	height: 28px;
    border-radius: 0.25em;
    padding: 0.2em 1em;
    box-sizing: border-box;
    position: relative;
    transition: border-color 150ms;
}

.date_range.tc-dropdown input{
	color: #747e87;
    border: none;
    height: auto;
    font-weight: bold;
    display: inline-block;
    font-size: 100%;
    line-height: normal;
    margin: 0;
    padding: 0 1.75em 0 0;
}
.date_range.tc-dropdown .date_range_clear{
	font-size: 1.4em;
    position: relative;
    top: 0.2em;
    cursor: pointer;
    margin-left: 0.5em;
	align-self: baseline;
}

.product-wrapper{
	display: flex;
	flex-wrap: wrap;
	gap:10px;
	margin-bottom: 10px;
}

.tc-gap-10{
	gap: 10px;
}

.tc-align-baseline{
	align-items: baseline;
}

.tc-badge{
	background-color: #fff;
	color: #5F697D;
	border-radius: 0.5em;
	padding: 0.2em 0.5em;
	font-size: 100%;
	border: solid 1px #D7DAE0;
}

.ajs-cancel.tc-switch-btn{
	font-weight: 600 !important;
}

.filter-modal .tc-badge{
	background-color: #F5F6F9;
}
.filter-modal .tc-badge:hover{
	background-color: #FFF;
	cursor: pointer;
}

.icon-filter {
    display: inline-block;
    width: 1em; 
    height: 1em; 
    background-size: contain;
    background-repeat: no-repeat;
    vertical-align: middle;
    background-image: url('../../assets/filter_list.svg');
}
.icon-no-data {
    display: inline-block;
    width: 2.5em; 
    height: 2.5em; 
    background-size: contain;
    background-repeat: no-repeat;
    vertical-align: middle;
    background-image: url('../../assets/package.svg');
}
.icon-coupon {
    display: inline-block;
    width: 3em; 
    height: 3em; 
    background-size: contain;
    background-repeat: no-repeat;
    vertical-align: middle;
    background-image: url('../../assets/coupon.svg');
}

.tc-table-wrap{
	background-color: #fff;
	border-radius: 10px;
	border: 1px solid #E3E6EB;
	padding: 1em 1.5em;
}

.tc-nowrap{
	white-space: nowrap;
}

.tc-table thead th{
	text-transform: capitalize;
}

.tc-table tbody td{
	vertical-align: baseline;
}
.tc-table tbody{
	border-top: 1px solid #EBEDF2;
	border-bottom: 1px solid #EBEDF2;
}

.tc-table tbody tr{
	border-top: 1px solid #EBEDF2;
	border-bottom: 1px solid #EBEDF2;
	background: #fff !important;
}

.tc-table tbody tr:hover{
	background: #F5F6F9 !important;
}

.tc-table-section{
	width: 100%;
	margin-top: 2em;
}

.tc-table-no-data{
	text-align: center;
	padding: 1em;
}

.tc-table thead th{
	font-weight: normal !important;
	color: #5F697D !important;
}
.tc-table tbody td{
	color:#161825 !important;
}

.tc-table thead th .tc-soon{
	opacity: 0.5;
}
.tc-table tbody td.tc-soon{
	opacity: 0.3;
}

/* TC-12655: right-align all numeric/figure columns (and their headers) across
   every report table. Identity columns (id / name / email / type / position)
   stay left-aligned. New figure columns auto-inherit the right alignment. */
.tc-table thead th[data-col],
.tc-table tbody td[data-col]{
	text-align: right;
}
.tc-table thead th[data-col="id"],
.tc-table thead th[data-col="name"],
.tc-table thead th[data-col="email"],
.tc-table thead th[data-col="type"],
.tc-table thead th[data-col="position"],
.tc-table tbody td[data-col="id"],
.tc-table tbody td[data-col="name"],
.tc-table tbody td[data-col="email"],
.tc-table tbody td[data-col="type"],
.tc-table tbody td[data-col="position"]{
	text-align: left;
}

.th-tooltip, .tc-tooltip {
    position: relative;
}

/* Tooltip */
.th-tooltip::after, .tc-tooltip::after {
    content: attr(data-hover);
    position: absolute;
    top: 100%; 
    left: 12px;
    background-color: #333;
    color: #fff;
    padding: 6px 12px;
    border-radius: 4px;
    font-size: 12px;
    white-space: nowrap;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.2s ease, visibility 0.2s ease;
    z-index: 100;
    margin-top: 0px;
}

.tc-tooltip::after{
	left: 0;
    transform: translateX(-50%); 
	letter-spacing: normal;
	min-width: 180px;
	text-align: center;
	white-space: normal;
	max-width: 200px;
}
.tc-tooltip-center::after{
	left: 100px !important;
}

/* Caret */
.th-tooltip::before, .tc-tooltip::before {
    content: '';
    position: absolute;
    top: 100%; 
    left: 30%;
    transform: translateX(-50%) translateY(-100%); 
    border-width: 5px;
    border-style: solid;
    border-color: transparent transparent #333 transparent; 
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.2s ease, visibility 0.2s ease;
}

.tc-tooltip::before {
	left: 50%;
}

.th-tooltip:hover::after,
.th-tooltip:hover::before,
.tc-tooltip:hover::after,
.tc-tooltip:hover::before {
    opacity: 1;
    visibility: visible;
}

@media screen and (max-width: 768px) {
	.tc-tabs-list{
		flex-wrap: nowrap;
		overflow-x: auto;
	}
	.tc-tabs-list .pure-u-1-5{
		min-width: 130px !important;
	}
	.tc-table-wrap {
		padding: 0.75em;
	}
	.tc-table-scroll-wrap {
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
	}
	.filter-list-wrapper > .tc-flex {
		flex-wrap: wrap;
	}
}

/* ============================================================
   "Customize Display" modal — visuals only.
   Behaviour (Reset/Cancel/Save handlers, drag-and-drop ordering,
   preventDisableLastCheckbox) is unchanged.
   ============================================================ */
.tc-modal-dashboard-customise.ajs-dialog {
	max-width: 620px !important;
	width: 620px !important;
	padding: 24px !important;
	background: #fff !important;
	border: 1px solid #e8ecef !important;
	border-radius: 12px !important;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	gap: 24px;
}

/* Header — plain title, no decorative icon, no uppercase, no border */
.tc-modal-dashboard-customise .ajs-header {
	padding: 0 !important;
	margin: 0 !important;
	border: 0 !important;
	background: transparent !important;
	text-transform: none !important;
	font-family: 'Inter', sans-serif !important;
	font-size: 20px !important;
	font-weight: 600 !important;
	line-height: 28px !important;
	color: #364152 !important;
	letter-spacing: 0 !important;
}

.tc-modal-dashboard-customise .ajs-header > svg {
	display: none;
}

/* Body — strip default alertify padding */
.tc-modal-dashboard-customise .ajs-body,
.tc-modal-dashboard-customise .ajs-body .ajs-content {
	padding: 0;
	margin: 0;
}

.tc-modal-dashboard-customise .modal-content {
	display: flex;
	flex-direction: column;
	gap: 24px;
}

/* Subtitle — flatten the legacy info-box into plain descriptive text */
.tc-modal-dashboard-customise .customise-info-box {
	display: block;
	background: transparent;
	border: 0;
	padding: 0;
	margin: -16px 0 0 0;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #8493a8;
}

.tc-modal-dashboard-customise .customise-info-box .icon {
	display: none;
}

.tc-modal-dashboard-customise .customise-info-box .text {
	display: inline;
	margin: 0;
	color: inherit;
	font: inherit;
}

/* Block list (sortable rows) */
.tc-modal-dashboard-customise .block-list {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.tc-modal-dashboard-customise .block-list ul,
.tc-modal-dashboard-customise #sortable-blocks {
	list-style: none;
	padding: 0;
	margin: 0;
	display: flex;
	flex-direction: column;
}

.tc-modal-dashboard-customise .block-list li.sortable-item {
	list-style: none;
	margin: 0;
	padding: 0;
	border: 0;
	border-bottom: 1px solid #e8ecef;
	background: transparent;
	transition: background-color 150ms;
}

.tc-modal-dashboard-customise .block-list li.sortable-item:last-child {
	border-bottom: 0;
}

.tc-modal-dashboard-customise .block-list li.sortable-item:hover {
	background-color: transparent;
}

.tc-modal-dashboard-customise .ui-checkbox-wrap {
	width: 100%;
}

/* Row: checkbox — label — drag handle, on one 36px line */
.tc-modal-dashboard-customise li.sortable-item .ui-checkbox {
	display: flex;
	align-items: center;
	height: 36px;
	padding: 0 8px;
	width: 100%;
	position: relative;
	box-sizing: border-box;
}

/* Suppress the legacy `.checkbox label::before/::after` decorations
   from styles/layout/main.css:912-942. They render a second box and
   FA check on top of our native styled input, producing two visible
   checkboxes per row. */
.tc-modal-dashboard-customise .ui-checkbox label::before,
.tc-modal-dashboard-customise .ui-checkbox label::after,
.tc-modal-dashboard-customise .checkbox label::before,
.tc-modal-dashboard-customise .checkbox label::after {
	content: none !important;
	display: none !important;
}

/* Native checkbox: 20×20, teal when checked. */
.tc-modal-dashboard-customise .ui-checkbox input[type="checkbox"] {
	appearance: none;
	-webkit-appearance: none;
	width: 20px;
	height: 20px;
	margin: 0 8px 0 0;
	padding: 0;
	border: 1px solid #d1d7de;
	border-radius: 4px;
	background: #fff;
	cursor: pointer;
	flex-shrink: 0;
	position: relative;
	display: inline-block;
	box-sizing: border-box;
	transition: background-color 120ms, border-color 120ms;
}

.tc-modal-dashboard-customise .ui-checkbox input[type="checkbox"]:checked {
	background: #006b70;
	border-color: #006b70;
}

.tc-modal-dashboard-customise .ui-checkbox input[type="checkbox"]:checked::after {
	content: '';
	position: absolute;
	inset: 4px;
	background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23fff'><path d='M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/></svg>") no-repeat center / contain;
}

.tc-modal-dashboard-customise .ui-checkbox input[type="checkbox"]:disabled,
.tc-modal-dashboard-customise .ui-checkbox.disabled input[type="checkbox"] {
	cursor: not-allowed;
	opacity: 0.6;
}

.tc-modal-dashboard-customise li.sortable-item .ui-checkbox label {
	flex: 1 0 0;
	min-width: 0;
	margin: 0 !important;
	padding: 0 !important;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #2a3648;
	cursor: pointer;
}

.tc-modal-dashboard-customise .ui-checkbox .drag-handle {
	flex: 0 0 auto;
	float: none;
	width: 28px;
	height: 28px;
	margin-left: 8px;
	border-radius: 6px;
	cursor: grab;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: #8493a8;
	font-size: 14px;
}

.tc-modal-dashboard-customise .ui-checkbox .drag-handle:hover {
	background: #f6f8f9;
	color: #364152;
}

.tc-modal-dashboard-customise .sortable-item.dragging {
	cursor: grabbing;
	background: #f6f8f9;
	opacity: 0.85;
	border-bottom-color: #006b70;
}

/* "Hide additional graph info" — checkbox + label + helping text below */
.tc-modal-dashboard-customise .ui-checkbox-wrap.fixed-option {
	margin: 0;
	padding: 0;
}

.tc-modal-dashboard-customise .ui-checkbox-wrap.fixed-option .ui-checkbox {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	padding: 0;
	height: auto;
}

.tc-modal-dashboard-customise .ui-checkbox-wrap.fixed-option input[type="checkbox"] {
	margin: 4px 0 0 0;
}

.tc-modal-dashboard-customise .ui-checkbox-wrap.fixed-option label {
	flex: 1 0 0;
	margin: 0 !important;
	padding: 4px 0 0 0 !important;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #364152;
	cursor: pointer;
}

.tc-modal-dashboard-customise .ui-checkbox-wrap.fixed-option label .icon.tc-tooltip {
	color: #8493a8;
	margin-left: 4px;
}

/* Footer — Reset on the left, Cancel + Save on the right */
.tc-modal-dashboard-customise .ajs-footer {
	padding: 0 !important;
	border: 0 !important;
	margin: 0 !important;
	background: transparent !important;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
}

.tc-modal-dashboard-customise .ajs-footer .ajs-buttons {
	margin: 0;
	padding: 0;
	display: flex;
	gap: 8px;
}

.tc-modal-dashboard-customise .ajs-footer .ajs-auxiliary,
.tc-modal-dashboard-customise .ajs-footer .ajs-primary {
	flex: 0 0 auto;
}

.tc-modal-dashboard-customise .ajs-footer button.ajs-button {
	appearance: none;
	-webkit-appearance: none;
	background: #fff !important;
	border: 1px solid #e8ecef !important;
	border-radius: 8px !important;
	padding: 8px 18px !important;
	font-family: 'Inter', sans-serif !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	line-height: 20px !important;
	color: #364152 !important;
	cursor: pointer;
	text-transform: none !important;
	letter-spacing: 0 !important;
	box-shadow: none !important;
	transition: background-color 150ms, border-color 150ms, color 150ms;
}

.tc-modal-dashboard-customise .ajs-footer button.ajs-button:hover {
	background: #f6f8f9 !important;
}

.tc-modal-dashboard-customise .ajs-footer button.ajs-button.ajs-ok {
	background: #006b70 !important;
	border-color: #006b70 !important;
	color: #fff !important;
}

.tc-modal-dashboard-customise .ajs-footer button.ajs-button.ajs-ok:hover {
	background: #00585c !important;
	border-color: #00585c !important;
	color: #fff !important;
}

/* Disabled-checkbox tooltip ("At least one box has to be checked") */
.tc-modal-dashboard-customise .ui-checkbox.disabled {
	cursor: not-allowed;
}

.tc-modal-dashboard-customise .ui-checkbox.disabled label {
	cursor: not-allowed;
}

.tc-modal-dashboard-customise .ui-checkbox.disabled:hover .tc-checkbox-tooltip {
	display: block;
}

.tc-checkbox-tooltip {
	display: none;
	position: absolute;
	bottom: calc(100% + 10px);
	left: 10px;
	transform: translateX(-50%);
	background: #161825;
	color: white;
	padding: 8px 12px;
	border-radius: 4px;
	font-size: 13px;
	white-space: nowrap;
	z-index: 1000;
	box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.tc-checkbox-tooltip::after {
	content: '';
	position: absolute;
	bottom: -4px;
	left: 50%;
	transform: translateX(-50%) rotate(45deg);
	width: 8px;
	height: 8px;
	background: #161825;
}

.tc-modal-dashboard-customise .cloud {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	list-style: none;
	padding: 0;
	margin: 0;
}
.tc-modal-dashboard-customise .cloud li {
	display: inline-flex;
	align-items: center;
	border-radius: 6px;
	background: #f6f8f9;
	border: 1px solid transparent;
	margin: 0;
	padding: 0;
	cursor: pointer;
	transition: background-color 120ms, border-color 120ms;
}
.tc-modal-dashboard-customise .cloud li:has(input:checked) {
	background: #006b70;
	border-color: #006b70;
}
.tc-modal-dashboard-customise .cloud li .checkbox {
	display: flex;
	align-items: center;
	padding: 6px 12px;
	margin: 0;
}
.tc-modal-dashboard-customise .cloud li input[type="checkbox"] {
	position: absolute;
	opacity: 0;
	width: 1px;
	height: 1px;
	margin: 0;
	pointer-events: none;
}
.ajs-dialog.tc-modal-dashboard-customise .cloud li .checkbox label {
	display: inline-flex;
	align-items: center;
	gap: 0;
	padding: 0 !important;
	margin: 0;
	font-family: Inter, sans-serif;
	font-size: 13px;
	font-weight: 500;
	color: #8493a8;
	cursor: pointer;
	line-height: 18px;
	position: relative;
}
.ajs-dialog.tc-modal-dashboard-customise .cloud li:has(input:checked) .checkbox label {
	color: #ffffff;
}
.ajs-dialog.tc-modal-dashboard-customise .cloud li .checkbox label::before {
	display: none !important;
	content: none !important;
}
.ajs-dialog.tc-modal-dashboard-customise .cloud li:has(input:checked) .checkbox label::before {
	display: none !important;
	content: none !important;
}
.ajs-dialog.tc-modal-dashboard-customise .cloud li .checkbox label::after {
	display: none !important;
	content: none !important;
}
.tc-modal-dashboard-customise .cloud li .new {
	font-size: 10px;
	font-weight: 600;
	color: #006b70;
	background: #edf7f7;
	border-radius: 4px;
	padding: 1px 5px;
	margin-left: 6px;
}

.tc-modal-dashboard-customise h2.cutaway {
	position: relative;
	font-family: Inter, sans-serif;
	font-size: 11px !important;
	font-weight: 600;
	color: #8493a8;
	text-transform: uppercase;
	letter-spacing: 0.48px;
	margin: 20px 0 2px;
}
.tc-modal-dashboard-customise h2.cutaway span {
	background: transparent;
	padding: 0;
	font-weight: inherit;
	z-index: auto;
	position: static;
}
.tc-modal-dashboard-customise h2.cutaway::after {
	display: none;
}

.tc-modal-dashboard-customise .tc-modal-subtitle {
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #8493a8;
	margin: 0;
}

.tc-modal-dashboard-customise .tc-additional-insights-subhead {
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 600;
	line-height: 20px;
	color: #364152;
	margin: 0 0 12px 0;
}

.tc-modal-dashboard-customise .tc-modal-additional-insights {
	margin-top: 16px;
	padding-top: 16px;
	border-top: 1px solid #e8ecef;
}

.tc-modal-dashboard-customise .ui-cloud-hint-wrapper {
	margin-bottom: 4px;
}
.tc-modal-dashboard-customise .callout.callout-info {
	background: #f0f9f9;
	border: 1px solid #b3dcdc;
	border-left: 3px solid #006b70;
	border-radius: 8px;
	padding: 10px 14px;
	font-family: Inter, sans-serif;
	font-size: 13px;
	color: #364152;
	line-height: 18px;
	margin: 0;
}

.ajs-dialog.tc-modal-remove-card {
	max-width: 460px;
	border-radius: 12px !important;
	border: 1px solid #e8ecef;
	box-shadow: 0 4px 24px rgba(15, 23, 42, 0.12) !important;
}
.ajs-dialog.tc-modal-remove-card .ajs-header {
	font-family: Inter, sans-serif !important;
	font-size: 16px !important;
	font-weight: 600 !important;
	color: #364152 !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
}
.ajs-dialog.tc-modal-remove-card .ajs-body .ajs-content {
	font-family: Inter, sans-serif;
	font-size: 14px;
	color: #475467;
	line-height: 20px;
}
.ajs-dialog.tc-modal-remove-card .ajs-footer {
	background: #fff;
}
.ajs-dialog.tc-modal-remove-card .ajs-footer .ajs-button {
	appearance: none;
	-webkit-appearance: none;
	border-radius: 8px !important;
	padding: 8px 18px !important;
	font-family: Inter, sans-serif !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	text-transform: none !important;
	letter-spacing: 0 !important;
	box-shadow: none !important;
	transition: background-color 150ms, border-color 150ms;
}
.ajs-dialog.tc-modal-remove-card .ajs-footer .ajs-cancel {
	background: #fff !important;
	border: 1px solid #e8ecef !important;
	color: #364152 !important;
}
.ajs-dialog.tc-modal-remove-card .ajs-footer .ajs-cancel:hover {
	background: #f6f8f9 !important;
	border-color: #d1d7de !important;
}
.ajs-dialog.tc-modal-remove-card .ajs-footer .ajs-ok {
	background: #006b70 !important;
	border: 1px solid #006b70 !important;
	color: #fff !important;
}
.ajs-dialog.tc-modal-remove-card .ajs-footer .ajs-ok:hover {
	background: #00585c !important;
	border-color: #00585c !important;
}

.ui-dashboard {
	display: flex;
	flex-direction: column;
	width: 100%;
}

.tc-stats-section, .tc-w-100 {
	width: 100%;
}
.tc-w-80 {
	width: 80%;
}

.tc-modal-generic .ajs-header{
	display: flex;
	align-items: center;
	text-transform: uppercase;
	color: #5F697D !important;
	border-bottom : 1px solid #EBEDF2;
	padding-bottom: 1em !important;
}
.tc-modal-generic .ajs-header p{
	font-weight: 600;
	font-size: 0.7em;
	letter-spacing: normal;
	line-height: 0;
	margin: 0;
}

.tc-modal-generic h2{
	margin: 0.5em 0;
	font-size: 1.2em;
	font-weight: 600;
}
.tc-modal-generic label{
	font-weight: normal !important;
	color: #5F697D;
}

.tc-pointer-none{
    pointer-events:none;
}

/* -- Banners -- */
.banner {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0.325em;
	height: auto;
	opacity: 1;
	margin: 0;
	transition: all 0.3s ease;
}

.banner.banner-with-button {
	padding: 0.75em 0.325em;
}

.banner.banner-removing {
	height: 0 !important;
	opacity: 0;
	padding: 0;
	margin: 0;
}

.banner-inner {
	display: flex;
	align-items: center;
	justify-content: center;
	max-width: 64em;
	width: 90%;
	margin: 0 auto;
}

.banner.banner-with-button .banner-inner {
	justify-content: space-between;
}

.banner p {
	color: white;
	font-size: 88%;
	font-weight: 600;
	padding: 0;
	margin: 0;
}

.banner.banner-with-button p {
	margin: 0;
	flex: 1;
}

.banner a {
	color: white;
	text-decoration: none;
}

.banner .tc-banner-button {
	margin-left: 1em;
	white-space: nowrap;
	height: 35px;
	min-height: 35px;
	border-radius: 3px;
	padding: 9px;
}

.banner.tc-banner-teal .tc-banner-button {
	background-color: #3B4752;
}

.banner.tc-banner-teal .tc-banner-button:hover {
	background-color: #475562;
}

.banner-close {
	cursor: pointer;
	color: white;
	margin-left: 1em;
	opacity: 0.8;
	transition: opacity 0.2s ease;
}

.banner-close:hover {
	opacity: 1;
}

@media (max-width: 767px) {
	.banner {
		padding: 12px 0;
		justify-content: stretch;
	}
	.banner-inner {
		max-width: none;
		width: 100%;
		padding: 0 16px;
		justify-content: space-between;
		gap: 12px;
	}
	/* Whatever holds the text (either a wrapping <a> or the <p> itself when
	   there's no link) is the growing flex item. The close X stays at its
	   natural size, pinned to the right. */
	.banner-inner > *:not(.banner-close) {
		flex: 1 1 0;
		min-width: 0;
	}
	.banner-inner > a {
		display: block;
		width: 100%;
	}
	.banner p {
		font-size: 14px;
		line-height: 1.4;
		text-align: left;
	}
	.banner-close {
		flex: 0 0 auto;
		align-self: flex-start;
		margin: 2px 0 0 0;
		min-width: 24px;
		min-height: 24px;
		display: inline-flex;
		align-items: center;
		justify-content: center;
	}
}

.tc-report-tabs {
	margin-top: 20px;
}

.tc-report-tab-list {
	list-style: none;
	padding: 0;
	margin: 0;
	border-bottom: 2px solid #E3E6EB;
}

.tc-report-tab-list li {
	display: inline-block;
	margin-bottom: -2px;
}

/* Legacy tab styling — scoped away from prodreports, which uses the new
   Figma reskin styles below. */
body:not(.prodreports) .tc-report-tab-list li a {
	display: block;
	padding: 10px 15px;
	text-decoration: none;
	color: #666;
	border-bottom: 2px solid transparent;
	background: none;
}

body:not(.prodreports) .tc-report-tab-list li.active a {
	color: #333;
	border-bottom: 2px solid #02CBC9;
	font-weight: 600;
	background: none;
}

.tc-report-tab-content {
	padding: 20px 0;
	background: none;
}

.tc-report-tab-pane {
	display: none;
	background: none;
}

.tc-report-tab-pane.active {
	display: block;
	background: none;
}

/* Remove button backgrounds */
.tc-report-tab-content button,
.tc-report-tab-pane button {
	background: none;
}

.report-dropdown {
	align-content: end;
}

.tc-box .tc-badge {
	background-color: #F5F6F9;
	color: #161825;
}


div.nice-select .current:has(+ .nice-select-dropdown .nice-select-search-box):before {
	content: "\f002";
	font-family: "Font Awesome 5 Pro";
	margin-right: .5em;
}

.clear-section {
	font-size: 14px;
	color: #9FA5B1;
	cursor: pointer;
	font-weight: normal;
	margin-left: 8px;
}

.clear-section.has-items {
	color: #02CBC9;
}

.clear-section:before {
	content: '|';
	margin-right: 8px;
	color: #EBEDF2;
	cursor: default;
}

.clear-section:hover.has-items {
	opacity: 0.8;
}

.button.disabled {
	opacity: 0.5;
	cursor: not-allowed;
	pointer-events: none;
}

#stats-tag+.nice-select.disabled,
#stats-tag-parameter+.nice-select.disabled {
	background-color: #F5F6F9;
}

#tpl-product-filter .clear-tag {
	margin-left: 0;
}
 
#source.locked .source-wrap {
	opacity: 0.5;
}

#source.locked .source-wrap > * {
	pointer-events: none;
}


/* -- Funnels Report -- */
.table-wrap-report .tc-pagination {
	margin-top: 1rem;
}

.table-wrap-report .tc-pagination button:disabled {
	color: rgba(159, 165, 177, 1);
	cursor: not-allowed;
}

.table-wrap-report .tc-pagination .page-number {
	padding: 0.7em 1.1em;
	border-radius: 6px;
}

.table-wrap-report .tc-pagination .page-number:hover {
	background-color: rgba(255, 255, 255, 1);
	color: rgba(22, 24, 37, 1);
}

.table-wrap-report .tc-pagination .page-number:not(:last-child):after {
	content: "";
	left: 1.8em;
	position: relative;
	border-right: 1px rgba(215, 218, 224, 1) solid;
}

.table-wrap-report .tc-pagination .page-number.page-number-active {
	background-color: #fff;
	color: rgba(22, 24, 37, 1);
}

.table-wrap-report .tc-pagination .page-ellipsis {
	padding: 0 5px;
	line-height: 32px;
}

.table-wrap-report .tc-justify-right {
	justify-content: right;
}

.table-wrap-report .icon-no-data {
	width: 4.5em;
	height: 4.5em;
	background-image: url(/admin/themes/1.0/assets/select_window.svg);
}

.table-wrap-report .tc-page-numbers {
	display: flex;
	align-items: center;
	gap: 1em;
	border: 1px rgba(215, 218, 224, 1) solid;
	border-radius: 8px;
	padding: 0.3em;
}

.table-wrap-report button.page-number {
	background: unset;
	border: unset;
	color: rgba(95, 105, 125, 1);
}

.table-wrap-report .tc-pagination .page-number.page-number-active {
	background-color: #fff;
	color: rgba(22, 24, 37, 1);
}

.table-wrap-report {
	background: unset;
}

.table-wrap-report table {
	border-collapse: separate;
	border-spacing: 0 1em;
}

.table-wrap-report td {
	border: unset !important;
}

.table-wrap-report td:first-child {
	border-left-style: solid;
	border-top-left-radius: 10px;
	border-bottom-left-radius: 10px;
	padding-left: 2em;
	color: rgba(95, 105, 125, 1) !important;
}

.table-wrap-report td:last-child {
	border-right-style: solid;
	border-bottom-right-radius: 10px;
	border-top-right-radius: 10px;
	padding-right: 2em;
}

.table-wrap-report thead th:first-child {
	padding-left: 2em;
}

.table-wrap-report thead th:last-child {
	padding-right: 2em;
}

.table-wrap-report tbody td {
	padding: 1.5em 1em;
}

.table-wrap-report tbody tr:hover {
	box-shadow: 0px 16px 40px 0px rgba(235, 237, 242, 1);
	background-color: rgba(255, 255, 255, 1) !important;
	cursor: pointer;
	z-index: 2;
	position: relative;
}

.table-wrap-report button.next-page, button.prev-page {
	background: none;
	color: rgba(95, 105, 125, 1);
	border: unset;
}

.tc-table-scroll-wrap {
	overflow-x: auto;
	overflow-y: hidden;
}

.tc-table-scroll-wrap .tc-table {
	width: max-content;
	min-width: 100%;
}

#cohort-table-no-data .icon-no-data {
	background-image: url(/admin/themes/1.0/assets/bar_chart_4_bars.svg);
}


#subs-management-tabs .box.box-tabbed { margin-top: 6.6em; }
#subs-management-tabs .box.box-tabbed .subtabs { list-style: none; padding: 0; margin: -5.49em 0 2em 0em; }
#subs-management-tabs .box.box-tabbed .subtabs li { cursor: pointer; padding: 0.7em 2.14em; font-size: 100%; display: inline-block; border-top-left-radius: 0.25em; border-top-right-radius: 0.25em; border-left: 1px solid rgba(0, 0, 0, 0); border-right: 1px solid rgba(0, 0, 0, 0); color: #8c8c8c; text-align: center; }
#subs-management-tabs .box.box-tabbed .subtabs li.active { background: #fff; border: 1px solid #e8e8e8; border-bottom-color: #fff; cursor: default; color: #616161; }
#subs-management-tabs .content-list { margin-top: -15px; }

.select-product-line-margin { margin: 5px 0 5px; }
.product-listing-widget { height: 300px; overflow-y: scroll; }

#widget-products_to_cancel-container .product-listing-widget-card:nth-child(odd),
#widget-upsells_to_cancel-container .product-listing-widget-card:nth-child(odd),
#widget-downsells_to_cancel-container .product-listing-widget-card:nth-child(odd) {
	background-color: #fafafa;
}

.selector-footer-text {
	color: #919191;
}

.selector-footer-text span {
	font-weight: bold;
}

.product-listing-widget-card.product-embed-wrapper .ribbon { left: unset; top:0.5em;}
.product-listing-widget-inner-card { display: flex; flex-direction: row; justify-content: space-between; gap: 10px; }

.disabled {pointer-events: none;}

/* -- Coupon Report -- */
#top-coupons .icon-no-data, #most-sold-products .icon-no-data {
	width: 4.5em;
	height: 4.5em;
	background-image: url(/admin/themes/1.0/assets/coupon.svg);
}
.prodreports h2 {
	font-weight: 600;
}
.tc-breakdown-dot {
	border-width: 2px;
	border-radius: 50%;
	width: 10px;
	height: 10px;
	margin-right: 5px;
	display: inline-block
}

.tc-breakdown-dot.existing-subscribers {
	background-color: rgb(0, 75, 107);
}

.tc-breakdown-dot.new-subscriptions {
	background-color: rgba(2, 203, 201, 1);
}

.tc-breakdown-dot.trial-subscriptions {
	background-color: rgba(166, 231, 232, 1);
}

.tc-breakdown-dot.paused-subscriptions {
	background-color: rgba(235, 237, 242, 1);
}


.tc-soon.pure-u-1, .tc-tooltip{
    position: relative; 
}

.tc-soon .pure-g{
	opacity: 0.3;
}

.tc-soon.pure-u-1[data-msg]::after {
    content: attr(data-msg);
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translateX(-50%) translateY(-50%);
    background-color: #333;
    color: #fff;
    padding: 6px 12px;
    border-radius: 4px;
    font-size: 12px;
    white-space: nowrap;
    z-index: 100;
    text-align: center;
    width: max-content;
    max-width: 90%;
	opacity: 1 !important; 
}
.disabledQr {
	position: relative;
	opacity: 0.8;
}

.disabledQr::after {
	content: "Unlock this feature with your Pro+ upgrade and our latest compatible version of Stripe.";
	position: absolute;
	bottom: 100%;
	left: 60%;
	transform: translateX(-50%);
	background-color: #333333;
	color: white;
	padding: 5px 10px;
	border-radius: 4px;
	font-size: 14px;
	white-space: nowrap;
	opacity: 1;
	visibility: hidden;
	transition: opacity 0.3s, visibility 0.3s;
}

.disabledQr:hover::after {
	opacity: 1;
	visibility: visible;
}

.pure-controls-bottom {
	clear: both;
	margin-top: 1em !important;
}

.fixed-option {
    margin-top: 2em;
    padding-left: 5px;
}

.gray.disabled, .force-gray.disabled {
	opacity: 0.9;
    color: #cad2d3;
	pointer-events: none;
}

.force-gray {
	color: #cad2d3 !important;
}

.product-link {
  color: #007bff;  
  text-decoration: underline;
  cursor: pointer; 
}

/* Pro-rata info tag and tooltip styles */
.prorata-info-tag-container {
	margin-left: 8px;
	position: relative;
	display: inline-block;
	vertical-align: middle;
}

.prorata-tag {
	background-color: #21c3c5;
	color: white;
	padding: .2em .6em .3em;
	font-size: 75%;
	font-weight: 700;
	line-height: 1;
	text-align: center;
	white-space: nowrap;
	vertical-align: baseline;
	border-radius: .25rem;
}

.prorata-tooltip-details {
	visibility: hidden;
	opacity: 0;
	position: absolute;
	top: 100%;
	left: 50%;
	transform: translateX(-50%) translateY(10px);
	width: 650px;
	background-color: rgba(22, 24, 37, 1);
	color: rgba(255, 255, 255, 1);
	padding: 15px;
	border-radius: 8px;
	z-index: 1070;
	text-align: left;
	line-height: 1.5;
	pointer-events: none;
	transition: opacity 0.2s ease, visibility 0.2s ease;
	margin-top: 8px;
	max-width: 60vw;
}

.prorata-info-tag-container:hover .prorata-tooltip-details {
	visibility: visible;
	opacity: 1;
}

.prorata-tooltip-details::after {
	content: '';
	position: absolute;
	bottom: 100%;
	left: 50%;
	width: 16px;
	height: 16px;
	background-color: rgba(22, 24, 37, 1);
	transform: translateX(-50%) translateY(50%) rotate(45deg);
	border-radius: 3px 0 0 0;
}

/* End Pro-rata info tag and tooltip styles */


.account-level-setting-dropdown {
    width: 100%;
}

.account-level-setting-dropdown select:disabled {
    pointer-events: none;
}

.account-level-setting-dropdown.hint:before,
.account-level-setting-dropdown.hint:after {
    font-size: 1em;
}

.checkout-cancellation-options-wrapper .ui-title-gray-box {
    width: 40px;
    height: 40px;
    background: #ddd;
    margin-right: 10px;
}

.tc-flex-column {
	display: flex;
	flex-direction: column;
}

/* ============================================
   TC Sidebar Navigation
   ============================================ */

.tc-sidebar {
	position: fixed !important;
	left: 0 !important;
	top: 0 !important;
	width: 224px !important;
	font-family: 'Manrope', -apple-system, BlinkMacSystemFont, sans-serif !important;
	height: 100vh !important;
	background-color: #F6F8F9 !important;
	border-right: 1px solid #E8ECEF !important;
	z-index: 1001 !important;
	overflow-y: auto !important;
	overflow-x: visible !important;
	display: flex !important;
	flex-direction: column !important;
	padding: 20px 16px !important;
	box-sizing: border-box !important;
}

.tc-sidebar-logo {
	padding: 8px 0 8px 8px;
	margin-bottom: 20px;
}

.tc-sidebar-logo a {
	display: block !important;
	width: 129px !important;
	height: 32px !important;
	background: url(../../../../../static/images/logo-sidebar.svg) no-repeat left center !important;
	background-size: 129px 32px !important;
	text-decoration: none !important;
	margin: 0 !important;
	padding: 0 !important;
	transform: none !important;
}

.tc-sidebar-logo {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 8px;
}
.tc-sidebar-logo a {
	flex-shrink: 0;
}

.tc-sidebar-logo a .logo-tc {
	display: none;
}

/* Plan / edition badges that used to live in the old `.header h1`.
   Placed inline-right of the wordmark in the new sidebar. The Launch
   badge doubles as the click target for the limitations modal
   (handler binds to `.tc-launch-plan-link-header` in
   launch-plan-limitations-modal.js.twig). Colours match the legacy
   chrome's `#0dc0c1` / `#b78ae8` so the visual language carries over. */
.tc-sidebar-logo-badges {
	display: inline-flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 6px;
}
.tc-sidebar-logo-badges em,
.tc-sidebar-logo-badges .logo-courses {
	font-size: 10px;
	line-height: 1;
	padding: 4px 8px;
	border-radius: 999px;
	font-style: normal;
	font-weight: 600;
	letter-spacing: 0.2px;
	display: inline-flex;
	align-items: center;
}
.tc-sidebar-logo-badges em {
	color: #0dc0c1;
	border: 1px solid #0dc0c1;
	background: rgba(13, 192, 193, 0.08);
}
.tc-sidebar-logo-badges em.tc-launch-plan-link-header {
	cursor: pointer;
}
.tc-sidebar-logo-badges em.tc-launch-plan-link-header:hover {
	background: rgba(13, 192, 193, 0.16);
}
/* Learn+ pill — only visible on `.learn` / `.course_editor` body
   classes, matching the legacy rule scope. */
.tc-sidebar-logo-badges .logo-courses {
	display: none;
	color: #b78ae8;
	border: 1px solid #b78ae8;
	background: rgba(183, 138, 232, 0.08);
}
body.root.learn .tc-sidebar-logo-badges .logo-courses,
body.root.course_editor .tc-sidebar-logo-badges .logo-courses {
	display: inline-flex;
}
.tc-sidebar-logo-badges .logo-courses em {
	color: #b78ae8;
	border: none;
	background: transparent;
	padding: 0;
	margin-left: 2px;
	font-weight: bold;
	font-size: inherit;
}

/* Override ALL inherited #menu-main styles when inside sidebar */
.tc-sidebar #menu-main,
.tc-sidebar .tc-sidebar-nav {
	text-align: left !important;
	list-style: none !important;
	margin: 0 !important;
	padding: 4px 0 !important;
	flex: 1;
	display: block !important;
	overflow-x: visible !important;
	overflow-y: auto !important;
	min-height: 0 !important;
}

.tc-sidebar #menu-main > li,
.tc-sidebar .tc-sidebar-item {
	display: block !important;
	margin: 0 0 4px 0 !important;
	line-height: normal !important;
	text-align: left !important;
	position: relative;
	float: none !important;
	border-bottom: none !important;
}

.tc-sidebar #menu-main > li > a,
.tc-sidebar .tc-sidebar-link {
	display: flex !important;
	align-items: center !important;
	gap: 6px !important;
	padding: 8px !important;
	color: #364152 !important;
	opacity: 1 !important;
	font-size: 14px !important;
	font-weight: 400 !important;
	font-family: 'Manrope', -apple-system, BlinkMacSystemFont, sans-serif !important;
	border-radius: 8px !important;
	background-color: transparent !important;
	background: transparent !important;
	line-height: 16px !important;
	position: static !important;
	text-decoration: none !important;
	cursor: pointer;
	transition: background-color 0.15s ease, color 0.15s ease;
	border: none !important;
	box-shadow: none !important;
	height: auto !important;
}

.tc-sidebar #menu-main > li > a:hover,
.tc-sidebar .tc-sidebar-link:hover {
	background-color: #EEF0F3 !important;
	background: #EEF0F3 !important;
	color: rgba(58, 67, 81, 0.89) !important;
}

/* Force hide ALL old icon elements inside sidebar links */
.tc-sidebar #menu-main > li > a > i:not(.tc-sidebar-icon),
.tc-sidebar #menu-main > li > a > i.tc,
.tc-sidebar #menu-main > li > a > i.fa,
.tc-sidebar #menu-main > li > a > i.fa-angle-down {
	display: none !important;
}

/* Force label spans to be visible and inline */
.tc-sidebar #menu-main > li > a > span,
.tc-sidebar .tc-sidebar-label {
	position: static !important;
	opacity: 1 !important;
	font-size: 14px !important;
	font-weight: 400 !important;
	transform: none !important;
	white-space: nowrap !important;
	bottom: auto !important;
	display: inline !important;
	color: inherit !important;
	line-height: 16px !important;
	font-family: 'Manrope', -apple-system, BlinkMacSystemFont, sans-serif !important;
}

/* Deals/"Perks" page (TC-13080) — visual parity with the Integrations
   pages: white background, same heading/subtitle/disclaimer treatment as
   body.tc-integration-settings-page (main.css:10790+), scoped to #view-deals
   instead of a body class since this page's route doesn't match that
   class's detail-page regex and it's a single view, not a 2-column grid. */
body:has(#view-deals),
body:has(#view-deals) #layout {
	background: #ffffff;
}
#view-deals {
	max-width: 1088px;
	margin: 0 auto;
	padding: 24px 32px;
	box-sizing: border-box;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
	color: #364152;
}
#view-deals h2.content-subhead {
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #2a3648;
	margin: 0 0 16px;
	padding: 0;
	border: 0;
}
#view-deals .tc-deals-subtitle {
	margin: 0 0 16px;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #364152;
}
#view-deals .legal-trademark {
	margin: 32px 0 0;
	font-size: 12px;
	color: #8493a8;
}
/* Frame the embed distinctly from the now-white page background (both
   render on a light background otherwise) so its boundary is obvious and
   users don't try to scroll the page thinking they're inside the iframe.
   Values match the existing card treatment elsewhere in this reskin
   (body.tc-integration-settings-page .box.padding, main.css:10842). */
#view-deals .tc-deals-embed-frame {
	display: block;
	border: 1px solid #e8ecef;
	border-radius: 10px;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
}

/* "New"-style badge on a flat top-level sidebar item (TC-13080) — same
   visual treatment as the existing submenu .menu-main-sub-badge above. */
.tc-sidebar .tc-sidebar-badge,
.tc-mnav-more-item-badge {
	display: inline-block;
	vertical-align: middle;
	margin: 0 0 0 0.4em;
	padding: 0.25em 0.45em;
	border: 0;
	border-radius: 4px;
	background: #10cfbd;
	color: #fff;
	font-size: 10px;
	font-style: normal;
	font-weight: normal;
	line-height: 1;
	text-transform: none;
}

/* Active state driven by route only (`li.active` + the data-section rules
   below). `submenu-open` is purely a UI expansion state and must NOT switch
   the visual treatment, otherwise clicking a parent to open its submenu
   steals the active pill from the page you're actually on. */
.tc-sidebar #menu-main > li.active > a {
	background-color: #ECFDFC !important;
	background: #ECFDFC !important;
	color: #006B70 !important;
}

.tc-sidebar #menu-main > li.active > a .tc-sidebar-icon {
	background-color: #006B70 !important;
}

.tc-sidebar #menu-main > li.active > a > span {
	color: #006B70 !important;
	font-weight: 500 !important;
}

/* Preload filled icon SVGs to prevent blink on active state change */
.tc-sidebar::after {
	content: '';
	position: absolute;
	width: 0;
	height: 0;
	overflow: hidden;
	z-index: -1;
	background-image:
		url('../../assets/nav-dashboard-filled.svg'),
		url('../../assets/nav-reports-filled.svg'),
		url('../../assets/nav-products-filled.svg'),
		url('../../assets/nav-transactions-filled.svg'),
		url('../../assets/nav-affiliates-filled.svg'),
		url('../../assets/nav-learn-filled.svg'),
		url('../../assets/nav-integrations-filled.svg'),
		url('../../assets/nav-deals-filled.svg'),
		url('../../assets/nav-account-filled.svg');
}

/* Filled icons for active state — uses #menu-main for specificity */
.tc-sidebar #menu-main > li.active > a#menu-main-item-dash .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="dash"] #menu-main-wrapper-dash > a .tc-sidebar-icon {
	-webkit-mask: url('../../assets/nav-dashboard-filled.svg') no-repeat center !important;
	mask: url('../../assets/nav-dashboard-filled.svg') no-repeat center !important;
	mask-size: contain !important;
}
.tc-sidebar #menu-main > li.active > a#menu-main-item-prodreports .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="prodreports"] #menu-main-wrapper-prodreports > a .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="product-sales"] #menu-main-wrapper-prodreports > a .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="subscriptions"] #menu-main-wrapper-prodreports > a .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="funnels"] #menu-main-wrapper-prodreports > a .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="coupons"] #menu-main-wrapper-prodreports > a .tc-sidebar-icon {
	-webkit-mask: url('../../assets/nav-reports-filled.svg') no-repeat center !important;
	mask: url('../../assets/nav-reports-filled.svg') no-repeat center !important;
	mask-size: contain !important;
}
.tc-sidebar #menu-main > li.active > a#menu-main-item-products .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="products"] #menu-main-wrapper-products > a .tc-sidebar-icon,
:where(body:has(#ui-statistics.tc-reskin)) .tc-sidebar #menu-main[data-section="statistics"] #menu-main-wrapper-products > a .tc-sidebar-icon {
	-webkit-mask: url('../../assets/nav-products-filled.svg') no-repeat center !important;
	mask: url('../../assets/nav-products-filled.svg') no-repeat center !important;
	mask-size: contain !important;
}
.tc-sidebar #menu-main > li.active > a#menu-main-item-transactions .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="transactions"] #menu-main-wrapper-transactions > a .tc-sidebar-icon {
	-webkit-mask: url('../../assets/nav-transactions-filled.svg') no-repeat center !important;
	mask: url('../../assets/nav-transactions-filled.svg') no-repeat center !important;
	mask-size: contain !important;
}
.tc-sidebar #menu-main > li.active > a#menu-main-item-affiliates .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="affiliates"] #menu-main-wrapper-affiliates > a .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="contracts"] #menu-main-wrapper-affiliates > a .tc-sidebar-icon {
	-webkit-mask: url('../../assets/nav-affiliates-filled.svg') no-repeat center !important;
	mask: url('../../assets/nav-affiliates-filled.svg') no-repeat center !important;
	mask-size: contain !important;
}
.tc-sidebar #menu-main > li.active > a#menu-main-item-learn .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="learn"] #menu-main-wrapper-learn > a .tc-sidebar-icon {
	-webkit-mask: url('../../assets/nav-learn-filled.svg') no-repeat center !important;
	mask: url('../../assets/nav-learn-filled.svg') no-repeat center !important;
	mask-size: contain !important;
}
.tc-sidebar #menu-main > li.active > a#menu-main-item-integrations .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="integrations"] #menu-main-wrapper-integrations > a .tc-sidebar-icon {
	-webkit-mask: url('../../assets/nav-integrations-filled.svg') no-repeat center !important;
	mask: url('../../assets/nav-integrations-filled.svg') no-repeat center !important;
	mask-size: contain !important;
}
.tc-sidebar #menu-main > li.active > a#menu-main-item-deals .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="deals"] #menu-main-wrapper-deals > a .tc-sidebar-icon {
	-webkit-mask: url('../../assets/nav-deals-filled.svg') no-repeat center !important;
	mask: url('../../assets/nav-deals-filled.svg') no-repeat center !important;
	mask-size: contain !important;
}
.tc-sidebar #menu-main > li.active > a#menu-main-item-account .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="settings"] #menu-main-wrapper-account > a .tc-sidebar-icon {
	-webkit-mask: url('../../assets/nav-account-filled.svg') no-repeat center !important;
	mask: url('../../assets/nav-account-filled.svg') no-repeat center !important;
	mask-size: contain !important;
}

/* Also support data-section attribute matching for active state */
.tc-sidebar #menu-main[data-section="dash"] #menu-main-wrapper-dash > a,
.tc-sidebar #menu-main[data-section="prodreports"] #menu-main-wrapper-prodreports > a,
.tc-sidebar #menu-main[data-section="product-sales"] #menu-main-wrapper-prodreports > a,
.tc-sidebar #menu-main[data-section="subscriptions"] #menu-main-wrapper-prodreports > a,
.tc-sidebar #menu-main[data-section="funnels"] #menu-main-wrapper-prodreports > a,
.tc-sidebar #menu-main[data-section="coupons"] #menu-main-wrapper-prodreports > a,
.tc-sidebar #menu-main[data-section="products"] #menu-main-wrapper-products > a,
:where(body:has(#ui-statistics.tc-reskin)) .tc-sidebar #menu-main[data-section="statistics"] #menu-main-wrapper-products > a,
.tc-sidebar #menu-main[data-section="transactions"] #menu-main-wrapper-transactions > a,
.tc-sidebar #menu-main[data-section="affiliates"] #menu-main-wrapper-affiliates > a,
.tc-sidebar #menu-main[data-section="contracts"] #menu-main-wrapper-affiliates > a,
.tc-sidebar #menu-main[data-section="learn"] #menu-main-wrapper-learn > a,
.tc-sidebar #menu-main[data-section="integrations"] #menu-main-wrapper-integrations > a,
.tc-sidebar #menu-main[data-section="settings"] #menu-main-wrapper-account > a {
	background-color: #ECFDFC !important;
	background: #ECFDFC !important;
	color: #006B70 !important;
}

.tc-sidebar #menu-main[data-section="dash"] #menu-main-wrapper-dash > a .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="prodreports"] #menu-main-wrapper-prodreports > a .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="product-sales"] #menu-main-wrapper-prodreports > a .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="subscriptions"] #menu-main-wrapper-prodreports > a .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="funnels"] #menu-main-wrapper-prodreports > a .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="coupons"] #menu-main-wrapper-prodreports > a .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="products"] #menu-main-wrapper-products > a .tc-sidebar-icon,
:where(body:has(#ui-statistics.tc-reskin)) .tc-sidebar #menu-main[data-section="statistics"] #menu-main-wrapper-products > a .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="transactions"] #menu-main-wrapper-transactions > a .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="affiliates"] #menu-main-wrapper-affiliates > a .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="contracts"] #menu-main-wrapper-affiliates > a .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="learn"] #menu-main-wrapper-learn > a .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="integrations"] #menu-main-wrapper-integrations > a .tc-sidebar-icon,
.tc-sidebar #menu-main[data-section="settings"] #menu-main-wrapper-account > a .tc-sidebar-icon {
	background-color: #006B70 !important;
}

.tc-sidebar #menu-main[data-section="dash"] #menu-main-wrapper-dash > a > span,
.tc-sidebar #menu-main[data-section="prodreports"] #menu-main-wrapper-prodreports > a > span,
.tc-sidebar #menu-main[data-section="product-sales"] #menu-main-wrapper-prodreports > a > span,
.tc-sidebar #menu-main[data-section="subscriptions"] #menu-main-wrapper-prodreports > a > span,
.tc-sidebar #menu-main[data-section="funnels"] #menu-main-wrapper-prodreports > a > span,
.tc-sidebar #menu-main[data-section="coupons"] #menu-main-wrapper-prodreports > a > span,
.tc-sidebar #menu-main[data-section="products"] #menu-main-wrapper-products > a > span,
:where(body:has(#ui-statistics.tc-reskin)) .tc-sidebar #menu-main[data-section="statistics"] #menu-main-wrapper-products > a > span,
.tc-sidebar #menu-main[data-section="transactions"] #menu-main-wrapper-transactions > a > span,
.tc-sidebar #menu-main[data-section="affiliates"] #menu-main-wrapper-affiliates > a > span,
.tc-sidebar #menu-main[data-section="contracts"] #menu-main-wrapper-affiliates > a > span,
.tc-sidebar #menu-main[data-section="learn"] #menu-main-wrapper-learn > a > span,
.tc-sidebar #menu-main[data-section="integrations"] #menu-main-wrapper-integrations > a > span,
.tc-sidebar #menu-main[data-section="settings"] #menu-main-wrapper-account > a > span {
	color: #006B70 !important;
	font-weight: 500 !important;
}

/* Sidebar icon — render inline SVGs via mask */
.tc-sidebar .tc-sidebar-icon {
	display: inline-block !important;
	width: 16px !important;
	height: 16px !important;
	min-width: 16px !important;
	margin: 0 !important;
	background-color: #364152;
	transition: background-color 0.15s ease;
	font-family: inherit !important;
	font-size: 0 !important;
	transform: none !important;
	vertical-align: middle !important;
	flex-shrink: 0 !important;
}

.tc-sidebar .tc-sidebar-icon::before {
	content: '' !important;
	display: block !important;
	width: 100% !important;
	height: 100% !important;
}

.tc-sidebar .tc-sidebar-link:hover .tc-sidebar-icon,
.tc-sidebar #menu-main > li > a:hover .tc-sidebar-icon {
	background-color: #364152;
	transform: none !important;
}

.tc-sidebar #menu-main-item-dash .tc-sidebar-icon {
	-webkit-mask: url('../../assets/nav-dashboard.svg') no-repeat center;
	mask: url('../../assets/nav-dashboard.svg') no-repeat center;
	mask-size: contain;
}

.tc-sidebar #menu-main-item-prodreports .tc-sidebar-icon {
	-webkit-mask: url('../../assets/nav-reports.svg') no-repeat center;
	mask: url('../../assets/nav-reports.svg') no-repeat center;
	mask-size: contain;
}

.tc-sidebar #menu-main-item-products .tc-sidebar-icon {
	-webkit-mask: url('../../assets/nav-products.svg') no-repeat center;
	mask: url('../../assets/nav-products.svg') no-repeat center;
	mask-size: contain;
}

.tc-sidebar #menu-main-item-transactions .tc-sidebar-icon {
	-webkit-mask: url('../../assets/nav-transactions.svg') no-repeat center;
	mask: url('../../assets/nav-transactions.svg') no-repeat center;
	mask-size: contain;
}

.tc-sidebar #menu-main-item-affiliates .tc-sidebar-icon {
	-webkit-mask: url('../../assets/nav-affiliates.svg') no-repeat center;
	mask: url('../../assets/nav-affiliates.svg') no-repeat center;
	mask-size: contain;
}

.tc-sidebar #menu-main-item-learn .tc-sidebar-icon {
	-webkit-mask: url('../../assets/nav-learn.svg') no-repeat center;
	mask: url('../../assets/nav-learn.svg') no-repeat center;
	mask-size: contain;
}

.tc-sidebar #menu-main-item-integrations .tc-sidebar-icon {
	-webkit-mask: url('../../assets/nav-integrations.svg') no-repeat center;
	mask: url('../../assets/nav-integrations.svg') no-repeat center;
	mask-size: contain;
}

.tc-sidebar #menu-main-item-deals .tc-sidebar-icon {
	-webkit-mask: url('../../assets/nav-deals.svg') no-repeat center;
	mask: url('../../assets/nav-deals.svg') no-repeat center;
	mask-size: contain;
}

.tc-sidebar #menu-main-item-account .tc-sidebar-icon {
	-webkit-mask: url('../../assets/nav-account.svg') no-repeat center;
	mask: url('../../assets/nav-account.svg') no-repeat center;
	mask-size: contain;
}

/* Sidebar label — clip horizontally only; the 16px line box would cut descenders */
.tc-sidebar .tc-sidebar-label {
	min-width: 0;
	white-space: nowrap;
	overflow-x: clip;
	text-overflow: ellipsis;
}

/* Sub-menu styles - override all inherited dropdown styles */
.tc-sidebar #menu-main li ul,
.tc-sidebar .tc-sidebar-item .menu-main-sub {
	display: none !important;
	list-style: none;
	margin: 0 !important;
	padding: 0 !important;
	background: transparent !important;
	position: static !important;
	width: auto !important;
	border: none !important;
	box-shadow: none !important;
	opacity: 1 !important;
	visibility: visible !important;
	top: auto !important;
	left: auto !important;
}

.tc-sidebar #menu-main li ul:before,
.tc-sidebar .tc-sidebar-item .menu-main-sub:before {
	display: none !important;
}

.tc-sidebar #menu-main li ul.active,
.tc-sidebar .tc-sidebar-item .menu-main-sub.active {
	display: block !important;
}

/* Sub-menu container styling */
.tc-sidebar #menu-main li ul.active,
.tc-sidebar .tc-sidebar-item .menu-main-sub.active {
	display: block !important;
	background-color: transparent !important;
	border-radius: 0 !important;
	padding: 4px 0 !important;
	position: relative !important;
}

/* `:has(~ .sub-active)` matches every sub-item that comes BEFORE the active
   one, so the vertical line auto-extends to whichever item is current. */
.tc-sidebar #menu-main li ul.active li,
.tc-sidebar .tc-sidebar-item .menu-main-sub.active li {
	position: relative;
}
.tc-sidebar #menu-main li ul.active li:has(~ .sub-active)::before,
.tc-sidebar .tc-sidebar-item .menu-main-sub.active li:has(~ .sub-active)::before {
	content: '';
	display: block;
	position: absolute;
	left: 16px;
	top: 0;
	bottom: 0;
	width: 1.5px;
	background: #d1d7de;
	pointer-events: none;
}
.tc-sidebar #menu-main li ul.active li.sub-active::before,
.tc-sidebar .tc-sidebar-item .menu-main-sub.active li.sub-active::before {
	content: '';
	display: block;
	position: absolute;
	left: 16px;
	top: -3px;
	width: 11.5px;
	height: 18.5px;
	background: url('../../assets/nav-submenu-arrow.svg') no-repeat center;
	background-size: contain;
	pointer-events: none;
}

/* Sub-menu link styles — Inter font, aligned at 32px padding */
.tc-sidebar .tc-sidebar-sublink,
.tc-sidebar #menu-main li ul li a {
	display: block !important;
	padding: 8px 32px !important;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;
	color: #8493A8 !important;
	text-decoration: none !important;
	font-size: 14px !important;
	font-weight: 400 !important;
	letter-spacing: -0.0325em !important;
	transition: color 0.15s ease;
	line-height: 16px !important;
	background: transparent !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	text-align: left !important;
	border-left: 2px solid transparent !important;
}

/* Active sub-item — bold dark text (set via JS based on current section) */
.tc-sidebar #menu-main li ul li.sub-active a,
.tc-sidebar .menu-main-sub li.sub-active a,
.tc-sidebar .menu-main-sub li.sub-active .tc-sidebar-sublink {
	font-weight: 600 !important;
	color: #364152 !important;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;
	letter-spacing: -0.0325em !important;
}

.tc-sidebar .tc-sidebar-sublink:hover,
.tc-sidebar #menu-main li ul li a:hover {
	color: #006B70 !important;
	background-color: transparent !important;
}

.tc-sidebar #menu-main li ul li span {
	position: static !important;
	opacity: 1 !important;
	font-size: 14px !important;
	font-weight: inherit !important;
	transform: none !important;
	display: inline !important;
	vertical-align: baseline !important;
	color: inherit !important;
	font-family: inherit !important;
	letter-spacing: inherit !important;
}

.tc-sidebar #menu-main li ul li i {
	display: none !important;
}

/* Inaccessible submenu */
.tc-sidebar .tc-sidebar-item .menu-main-sub.inaccessible {
	position: relative !important;
}

.tc-sidebar .tc-sidebar-item .menu-main-sub.inaccessible .locked-hint {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	display: block;
}

/* Lift the locked-hint tooltip out of the sidebar's overflow clip — the
   sidebar has `overflow-y: auto` which (per CSS spec) silently promotes
   `overflow-x` to `auto` too, clipping any tooltip positioned past the
   right edge. `position: fixed` escapes the clip; `--locked-tip-top` is
   set on hover by the small handler at the bottom of `_chrome_sidebar.
   html.twig`, and `left` is hardcoded to the sidebar's width (224px)
   plus a 16px gap. The `::before` arrow is suppressed since it'd land
   way to the left of the bubble. */
.tc-sidebar .tc-sidebar-item .menu-main-sub.inaccessible .locked-hint::after {
	position: fixed !important;
	top: var(--locked-tip-top, 0) !important;
	left: 216px !important;
	right: auto !important;
	bottom: auto !important;
	transform: none !important;
	margin: 0 !important;
	width: max-content !important;
	height: auto !important;
	max-width: 260px !important;
	min-width: 0 !important;
	min-height: 0 !important;
	padding: 8px 12px !important;
	font-size: 12px !important;
	line-height: 1.4 !important;
	border-radius: 6px;
	box-sizing: border-box;
	z-index: 1100;
	white-space: normal !important;
}
.tc-sidebar .tc-sidebar-item .menu-main-sub.inaccessible .locked-hint::before {
	display: none !important;
}

/* Hide old header when sidebar is active */
.header.header-hidden {
	display: none !important;
}

/* Content offset for sidebar */
body.root #tc-sidebar ~ #hero,
body.root #tc-sidebar ~ #footer {
	margin-left: 224px !important;
	width: calc(100% - 224px) !important;
}

body.root #tc-sidebar ~ #layout {
	margin-left: 260px !important;
	margin-right: 36px !important;
	width: auto !important;
	max-width: none !important;
}

/* Builder has its own Save / Next chrome and Exit button — sidebar would only overlap. */
body.ui-builder-v2 #tc-sidebar,
body.ui-builder-v2 #tc-mnav-topbar,
body.ui-builder-v2 #tc-mnav-tabbar,
body.ui-builder-v2 #tc-mnav-more-backdrop,
body.ui-builder-v2 .tc-mnav-more-sheet {
	display: none !important;
}
body.ui-builder-v2 #tc-sidebar ~ #layout,
body.ui-builder-v2 #tc-sidebar ~ #hero,
body.ui-builder-v2 #tc-sidebar ~ #footer,
body.ui-builder-v2 #tc-sidebar ~ .footer {
	margin-left: 0 !important;
	margin-right: 0 !important;
	width: auto !important;
}

/* Course editor (`#/learn/edit/...`) has its own fixed left panel + top toolbar. */
body.course_editor #tc-sidebar,
body.course_editor #tc-mnav-topbar,
body.course_editor #tc-mnav-tabbar,
body.course_editor #tc-mnav-more-backdrop,
body.course_editor .tc-mnav-more-sheet {
	display: none !important;
}
body.course_editor #tc-sidebar ~ #layout,
body.course_editor #tc-sidebar ~ #hero,
body.course_editor #tc-sidebar ~ #footer,
body.course_editor #tc-sidebar ~ .footer {
	margin-left: 0 !important;
	margin-right: 0 !important;
	width: auto !important;
}
/* Legacy `padding-top: 5.4em` on #layout and `top: 5.4em` on .courses-menu were sized for the old fixed header; reclaim that space now the new chrome is hidden. */
body.course_editor #layout {
	padding-top: 0 !important;
	height: 100vh !important;
}
body.course_editor .courses-menu {
	top: 0 !important;
}
/* Legacy `.courses-menu-wrap` capped to 1404px and left-aligned, so Cancel/tabs/Preview hug the left while the right of the toolbar is empty white. Stretch the wrap full-width — the existing flex grid then puts Cancel at the viewport left edge, tabs centred (via `.courses-menu-tabs-wrapper`'s `justify-content: center`), and Preview/Next at the viewport right edge. */
body.course_editor .courses-menu .courses-menu-wrap {
	max-width: none !important;
}
/* `.courses-sidebar` was offset `top: 11.9em` to clear the old 5.4em header + 6.4em menu. Header is hidden now, so reclaim the 5.4em — sidebar starts flush under the menu strip and grows by the same amount. */
body.course_editor .courses-sidebar {
	top: calc(6.5em + 1px) !important;
	height: calc(100vh - 6.6em) !important;
}

/* Also override the .inner max-width inside layout */
body.root #tc-sidebar ~ #layout .inner {
	max-width: none !important;
	width: 100% !important;
}

body.root #tc-sidebar ~ #hero .inner {
	margin-left: 0;
}

body.root #tc-sidebar ~ .footer {
	margin-left: 224px !important;
	/* members.css caps .footer at 50em with auto margins — pinned margin-left parks that box against the sidebar, so span the whole content area instead. */
	margin-right: 0 !important;
	max-width: none !important;
	text-align: center;
}

/* Banners offset for sidebar layout — only when the sidebar is visible
   (desktop). On mobile the sidebar is hidden by the mobile shell, so the
   banner should fill the viewport without the 224px left gutter. */
@media (min-width: 768px) {
	body.root #tc-sidebar ~ .banner {
		padding-left: 224px !important;
	}
}

/* Dashboard reskin — all rules scoped to .ui-dashboard. */

/* Scope the white page canvas to `.root.dash` so other admin pages keep
   their existing body colour. */
body.root.dash,
body.root.dash #layout {
	background: #ffffff;
}

.ui-dashboard {
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
	color: #364050;
	padding: 0 32px 160px 32px;
	box-sizing: border-box;
	max-width: 1216px;
	margin: 0 auto;
}

.ui-dashboard .ui-dashboard-head {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin: 0 0 24px 0;
}

.ui-dashboard .ui-dashboard-head h2 {
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
	font-size: 24px;
	font-weight: 600;
	line-height: 32px;
	color: #28364a;
	margin: 0;
	letter-spacing: 0;
}

.ui-dashboard .tc-switch-btn,
.ui-dashboard #switch-btn {
	display: none;
}

.ui-dashboard .ui-dashboard-head + .pure-g,
.ui-dashboard .tc-today-cards-track {
	margin: 0;
	display: flex;
	gap: 16px;
	align-items: stretch;
}

.ui-dashboard .ui-dashboard-head + .pure-g > div,
.ui-dashboard .tc-today-cards-track > .tc-today-card {
	padding: 0;
	flex: 1 1 0;
	min-width: 0;
	width: auto;
}

.ui-dashboard .ui-dashboard-head + .pure-g .tc-box,
.ui-dashboard .tc-today-cards-track > .tc-today-card .tc-box {
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 12px;
	padding: 24px;
	margin: 0;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: flex-start;
	gap: 32px;
	flex: 1 0 0;
	height: 164px;
	box-sizing: border-box;
}

/* Icon square: 36×36 (20×20 icon + 8px padding), gray-100 bg, radius 8.
   `background-size: contain` preserves the SVG's natural aspect ratio so
   wide icons (e.g. payments 18.33×13.33) don't stretch to fill 20×20. */
.ui-dashboard .ui-dashboard-head + .pure-g .tc-box::before,
.ui-dashboard .tc-today-cards-track > .tc-today-card .tc-box::before {
	content: '';
	display: block;
	width: 36px;
	height: 36px;
	background-color: #e8ecef;
	border-radius: 8px;
	background-repeat: no-repeat;
	background-position: center;
	background-size: 20px 20px;
	flex: 0 0 auto;
}

/* Card 1 — payments */
.ui-dashboard .ui-dashboard-head + .pure-g > div:nth-child(1) .tc-box::before,
.ui-dashboard .tc-today-cards-track > .tc-today-card:nth-child(1) .tc-box::before {
	background-image: url("/static/icons/dashboard/today-revenue.svg");
}

/* Card 2 — receipt */
.ui-dashboard .ui-dashboard-head + .pure-g > div:nth-child(2) .tc-box::before,
.ui-dashboard .tc-today-cards-track > .tc-today-card:nth-child(2) .tc-box::before {
	background-image: url("/static/icons/dashboard/today-transactions.svg");
}

/* Cards 3, 4, 5 — Figma 838:881/882 don't expose distinct vectors (recycle
   the receipt icon as placeholder); using sensible Material outlined icons
   until the design system gives specific ones. */
.ui-dashboard .tc-today-cards-track > .tc-today-card:nth-child(3) .tc-box::before {
	background-image: url("/static/icons/dashboard/today-net-revenue.svg");
}
.ui-dashboard .tc-today-cards-track > .tc-today-card:nth-child(4) .tc-box::before {
	background-image: url("/static/icons/dashboard/today-commission.svg");
}
.ui-dashboard .tc-today-cards-track > .tc-today-card:nth-child(5) .tc-box::before {
	background-image: url("/static/icons/dashboard/today-refund.svg");
}

.ui-dashboard .ui-dashboard-head + .pure-g .tc-box p,
.ui-dashboard .tc-today-cards-track > .tc-today-card .tc-box p {
	font-family: 'Inter', sans-serif;
	font-size: 12px;
	font-weight: 600;
	line-height: 16px;
	color: #8493a8;
	text-transform: uppercase;
	letter-spacing: 0.48px;
	margin: 0;
	width: 100%;
	display: flex;
	align-items: center;
	gap: 6px;
}

/* Negative top margin collapses the card's 32px gap down to 4px between
   label and value (label/value live in nested wrapper with its own gap). */
.ui-dashboard .ui-dashboard-head + .pure-g .tc-box h2,
.ui-dashboard .tc-today-cards-track > .tc-today-card .tc-box h2 {
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
	margin: -28px 0 0 0;
	letter-spacing: 0;
	width: 100%;
}

.ui-dashboard .ui-dashboard-head + .pure-g .tc-box .hr-small,
.ui-dashboard .tc-today-cards-track > .tc-today-card .tc-box .hr-small {
	display: none;
}

/* Today's cards — clickable drill-in (handler in account.html.twig).
   Cursor, soft hover, active scale, focus-visible outline. No chevron —
   the drill-in is signalled by the tap state alone. */
.ui-dashboard .tc-today-card[data-target] {
	cursor: pointer;
	-webkit-tap-highlight-color: transparent;
}
.ui-dashboard .tc-today-card[data-target] .tc-box {
	transition: transform 120ms ease, box-shadow 180ms ease, border-color 180ms ease;
}
.ui-dashboard .tc-today-card[data-target]:hover .tc-box {
	border-color: #d1d7de;
	box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.06);
}
.ui-dashboard .tc-today-card[data-target]:active .tc-box {
	transform: scale(0.985);
}
.ui-dashboard .tc-today-card[data-target]:focus-visible {
	outline: 0;
}
.ui-dashboard .tc-today-card[data-target]:focus-visible .tc-box {
	outline: 2px solid #006b70;
	outline-offset: 2px;
}

/* Pulse-highlight applied to the destination card after a Today's drill-in
   so the user sees what they landed on. JS adds .tc-target-highlight, the
   keyframes fade in a teal ring, JS removes the class after 1.5s. */
@keyframes tc-target-pulse {
	0% {
		box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.05), 0 0 0 0 rgba(0, 107, 112, 0.35);
	}
	30% {
		box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.05), 0 0 0 8px rgba(0, 107, 112, 0.2);
	}
	100% {
		box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.05), 0 0 0 0 rgba(0, 107, 112, 0);
	}
}
.ui-dashboard .tc-box.tc-target-highlight {
	animation: tc-target-pulse 1.4s ease-out;
}

/* Mini section heading — small uppercase row label above grouped sections
   like "Today" above the today's hero cards. Margin-top kept tight so it
   reads as a subhead under the page title, not a free-standing block. */
.ui-dashboard .tc-section-mini-head {
	font-family: 'Inter', sans-serif;
	font-size: 12px;
	font-weight: 600;
	line-height: 16px;
	color: #8493a8;
	text-transform: uppercase;
	letter-spacing: 0.48px;
	margin: 0 0 12px 0;
}

.ui-dashboard .tc-stats-converted-label {
	font-family: Inter, sans-serif;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	color: #8493a8;
	margin: -4px 0 12px 0;
}

.ui-dashboard .tc-stats-section > .tc-stats-converted-label {
	margin: 4px 0 16px 0;
}

/* ID selectors needed to out-rank the legacy statistics.css cap
   `#stats-currency-wrap { max-width: 11em }`, which otherwise squeezes the
   group and wraps "in EUR" onto a second line. `:not(.hidden)` keeps the
   dashboard's initially-hidden wrap hidden (`.hidden` is class-specificity
   only and would lose to these ID selectors). */
.ui-dashboard #stats-currency-wrap.tc-currency-selector-group:not(.hidden),
.ui-dashboard #ai-currency-wrap.tc-currency-selector-group:not(.hidden) {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-wrap: nowrap;
	width: auto;
	max-width: none;
	flex: 0 0 auto;
}

.ui-dashboard .tc-display-currency-wrap:not(.hidden) {
	display: flex;
	align-items: center;
	gap: 8px;
}

.ui-dashboard .tc-currency-in-label {
	font-family: Inter, sans-serif;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	color: #8493a8;
	white-space: nowrap;
	letter-spacing: normal;
}

.ui-dashboard .tc-sub-drawer-converted-amount {
	color: #8493a8;
	font-size: 12px;
	font-weight: 500;
}

/* Recurring Revenue subscription-type filter pills per Figma 838-1002.
   Hidden on desktop — the design only shows them in the mobile layout. */
.ui-dashboard .tc-recurring-tabs {
	display: none;
}

/* "Today" hero cards carousel — same visual chrome as the Trends row,
   but the row now scrolls horizontally so we can fit one card per metric
   shown in the Trends section (Revenue / Transactions / Net Revenue /
   Commission Paid / Refund Volume). On wide desktops all five cards fit
   in the viewport so the row reads as a static grid; on narrower widths
   the track scrolls and the user navigates with arrow buttons (desktop)
   or a swipe gesture (mobile). */
.ui-dashboard .tc-today-cards {
	position: relative;
	margin: 0 0 24px 0;
}
.ui-dashboard .tc-today-cards-track {
	display: flex;
	gap: 16px;
	overflow-x: auto;
	overflow-y: clip;          /* keep card shadows visible while preventing
	                              any vertical drift during inertia swipes */
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
	padding: 4px 0;            /* breathing room for box-shadow on cards */
	/* Lock the carousel to horizontal pan so a sideways swipe doesn't
	   bleed into a vertical page scroll on iOS Safari (which otherwise
	   pulls the page up while the carousel is being swiped). The user
	   can still scroll the page vertically by touching ABOVE or BELOW
	   the track — the lock only applies inside the track. */
	touch-action: pan-x;
	overscroll-behavior: contain;
}
.ui-dashboard .tc-today-cards-track > * {
	/* Reinforce the lock on every child — iOS Safari sometimes lets the
	   gesture leak vertically when only the parent declares pan-x. */
	touch-action: pan-x;
}
.ui-dashboard .tc-today-cards-track::-webkit-scrollbar {
	display: none;
}
.ui-dashboard .tc-today-card {
	flex: 0 0 calc((100% - 64px) / 5);   /* 5 cards, 4 × 16px gaps at desktop */
	min-width: 0;
	scroll-snap-align: start;
	display: flex;                       /* let .tc-box stretch to fill the
	                                        flex-item height that the track
	                                        gives every card via align-items
	                                        stretch — keeps all 5 the same
	                                        height even when one card's
	                                        label wraps to two lines. */
}
.ui-dashboard .tc-today-card .tc-box {
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 12px;
	padding: 20px;
	margin: 0;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 16px;
	min-height: 132px;
	box-sizing: border-box;
	width: 100%;
	flex: 1 1 auto;                       /* fill the parent .tc-today-card */
}
.ui-dashboard .tc-today-card .tc-box::before {
	content: '';
	display: block;
	width: 36px;
	height: 36px;
	background: #e8ecef no-repeat center;
	background-size: 20px 20px;
	border-radius: 8px;
	flex: 0 0 36px;
}
/* Per-card icon mask. The first two reuse the masks the legacy
   two-card layout already had (revenue-stack + receipt). The new
   three echo the Trends section's tab metaphors: a banknote for net
   revenue, an affiliate-style person-arrow for commission, and an
   undo arrow for refunds. SVGs are inlined so we don't need to ship
   new asset files. */
.ui-dashboard .tc-today-card:nth-child(1) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%2328364a'><path d='M2 5h16v10H2z' fill='none' stroke='%2328364a' stroke-width='1.5'/><circle cx='10' cy='10' r='2.5' fill='none' stroke='%2328364a' stroke-width='1.5'/></svg>");
}
.ui-dashboard .tc-today-card:nth-child(2) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%2328364a'><path d='M5 2h10v16l-2.5-1.5L10 18l-2.5-1.5L5 18z' fill='none' stroke='%2328364a' stroke-width='1.5'/><path d='M7 6h6M7 9h6M7 12h4' stroke='%2328364a' stroke-width='1.5' stroke-linecap='round'/></svg>");
}
.ui-dashboard .tc-today-card:nth-child(3) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><rect x='2' y='5' width='16' height='10' rx='1' fill='none' stroke='%2328364a' stroke-width='1.5'/><circle cx='10' cy='10' r='2' fill='none' stroke='%2328364a' stroke-width='1.5'/><path d='M5 8v4M15 8v4' stroke='%2328364a' stroke-width='1.5' stroke-linecap='round'/></svg>");
}
.ui-dashboard .tc-today-card:nth-child(4) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><circle cx='8' cy='7' r='2.5' fill='none' stroke='%2328364a' stroke-width='1.5'/><path d='M3 16c.5-2.5 2.5-4 5-4s4.5 1.5 5 4' fill='none' stroke='%2328364a' stroke-width='1.5' stroke-linecap='round'/><path d='M14 4l3 3-3 3' fill='none' stroke='%2328364a' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
}
.ui-dashboard .tc-today-card:nth-child(5) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path d='M4 9V5l-3 3 3 3V7a4 4 0 1 1-4 4' fill='none' stroke='%2328364a' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/><path d='M11 13l3-3 3 3' fill='none' stroke='%2328364a' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
}
.ui-dashboard .tc-today-card .tc-box p {
	margin: 0;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #475467;
}
.ui-dashboard .tc-today-card .tc-box h2 {
	margin: 0;
	font-family: 'Inter', sans-serif;
	font-size: 28px;
	font-weight: 600;
	line-height: 36px;
	color: #28364a;
	letter-spacing: -0.4px;
}
.ui-dashboard .tc-today-card .tc-box .hr-small {
	display: none;
}

/* Prev/Next arrows — circular floating buttons that page the track by
   one card. Hidden by default; the JS controller toggles them on when
   the track has overflow. Hidden on phone viewports where the swipe
   gesture is the natural affordance. */
.ui-dashboard .tc-today-cards-arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	width: 36px;
	height: 36px;
	padding: 0;
	border-radius: 50%;
	background: #ffffff;
	border: 1px solid #d1d7de;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
	color: #364152;
	cursor: pointer;
	z-index: 5;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: background-color 120ms ease, transform 120ms ease;
	-webkit-tap-highlight-color: transparent;
}
.ui-dashboard .tc-today-cards-arrow[hidden] {
	display: none;
}
.ui-dashboard .tc-today-cards-arrow:hover {
	background: #f6f8f9;
}
.ui-dashboard .tc-today-cards-arrow:active {
	transform: translateY(-50%) scale(0.94);
}
.ui-dashboard .tc-today-cards-arrow-prev { left: -8px; }
.ui-dashboard .tc-today-cards-arrow-next { right: -8px; }

/* At ≥1024px the 5-card grid always fits the row, so the carousel arrows
   are never useful — hide them entirely instead of relying on the JS
   overflow detector (which can show phantom arrows from sub-pixel
   rounding / scrollbar reservation). The JS still toggles them as the
   user resizes below 1024px where 3 → 1 cards visible and arrows are
   genuinely needed. */
@media (min-width: 1024px) {
	.ui-dashboard .tc-today-cards-arrow {
		display: none;
	}
}

@media (max-width: 1023px) {
	.ui-dashboard .tc-today-card {
		flex: 0 0 calc((100% - 32px) / 3);   /* 3 cards visible */
	}
}

@media (max-width: 767px) {
	.ui-dashboard .tc-today-card {
		flex: 0 0 80%;                       /* 1 card + sliver of next */
	}
	/* Keep the arrows centered over the cards on phone (the affordance
	   the user wanted), but hide them after a short idle so they don't
	   permanently sit on top of the card text. The JS controller adds
	   `is-idle` 1.5s after the last interaction; CSS only applies the
	   fade at phone widths so desktop ignores the class entirely. */
	.ui-dashboard .tc-today-cards-arrow {
		width: 32px;
		height: 32px;
		/* Liquid-glass surface: heavy blur + saturation pulls whatever is
		   behind through with extra vibrance, the rgba bg is mostly clear
		   so the blur is what's doing the work, and the inset highlight
		   plus light border give the "raised pane of glass" depth cue. */
		background: rgba(255, 255, 255, 0.16);
		-webkit-backdrop-filter: blur(10px) saturate(170%);
		backdrop-filter: blur(10px) saturate(170%);
		border: 1px solid rgba(15, 23, 42, 0.12);
		box-shadow:
			0 1px 4px rgba(15, 23, 42, 0.06),
			inset 0 1px 0 rgba(255, 255, 255, 0.4);
		transition: opacity 240ms ease, background-color 120ms ease, transform 120ms ease;
	}
	.ui-dashboard .tc-today-cards-arrow:active {
		background: rgba(255, 255, 255, 0.7);
	}
	.ui-dashboard .tc-today-cards-arrow-prev { left: 4px; }
	.ui-dashboard .tc-today-cards-arrow-next { right: 4px; }
	.ui-dashboard .tc-today-cards-arrow.is-idle {
		opacity: 0;
		pointer-events: none;
	}
	.ui-dashboard .tc-today-card .tc-box {
		gap: 24px;
	}
	.ui-dashboard .tc-today-card .tc-box h2 {
		font-size: 24px;
		line-height: 32px;
	}
}

.ui-dashboard > .hr-small {
	display: none;
}

.ui-dashboard > .tc-flex.tc-between {
	display: none;
}

.ui-dashboard #my-stats-section {
	margin-top: 64px;
	order: 9999;
}
.ui-dashboard #my-stats-section > .tc-additional-insights-title {
	margin-bottom: 12px;
}
.ui-dashboard #ai-filter-wrap.pure-form.pure-form-stacked {
	margin: 0 0 20px;
}

.ui-dashboard .tc-additional-insights-title {
	font-family: Inter, sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
	overflow-wrap: anywhere;
	word-break: normal;
	margin: 0;
}
.ui-dashboard #dashboard-overview-stats ul {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 16px;
	list-style: none;
	margin: 0;
	padding: 0;
}
.ui-dashboard #dashboard-overview-stats li {
	min-width: 0;
}
/* cancel perspective/transform inherited from .ui-card in shared.css */
.ui-dashboard #dashboard-overview-stats .ui-card {
	perspective: none;
	min-height: 0;
	width: 100%;
}
.ui-dashboard #dashboard-overview-stats .ui-card .ui-card-inner {
	transform-style: flat;
	transform: none;
	transition: none;
	animation: none;
}
.ui-dashboard #dashboard-overview-stats .ui-card.flipped .ui-card-inner {
	transform: none;
}
.ui-dashboard #dashboard-overview-stats .ui-card .ui-card-front {
	position: relative;
	top: auto;
	left: auto;
	width: 100%;
	height: auto;
	min-height: 96px;
	backface-visibility: visible;
	transform: none;
	background: #fff;
	border: 1px solid #d1d7de;
	border-radius: 12px;
	padding: 24px;
	box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: flex-start;
	gap: 4px;
	text-align: left;
}
.ui-dashboard #dashboard-overview-stats .ui-card .ui-card-back {
	position: static;
	top: auto;
	left: auto;
	width: 100%;
	height: auto;
	min-height: 120px;
	backface-visibility: visible;
	transform: none;
	display: none;
	background: #f6f8f9;
	border: 1px solid #d1d7de;
	border-radius: 12px;
	padding: 16px 16px 16px 36px;
	box-sizing: border-box;
	font-size: 13px;
	color: #475467;
}
.ui-dashboard #dashboard-overview-stats .ui-card.flipped .ui-card-front { display: none; }
.ui-dashboard #dashboard-overview-stats .ui-card.flipped .ui-card-back  { display: block; }

.ui-dashboard #dashboard-overview-stats .ui-card .ui-card-front h6 {
	font-family: Inter, sans-serif;
	font-size: 12px;
	font-weight: 600;
	color: #8493a8;
	text-transform: uppercase;
	letter-spacing: 0.48px;
	margin: 0;
	line-height: 16px;
	text-align: left;
}
.ui-dashboard #dashboard-overview-stats .ui-card .ui-card-front h5 {
	font-family: Inter, sans-serif;
	font-size: 20px;
	font-weight: 600;
	color: #364152;
	margin: 0;
	line-height: 28px;
	text-align: left;
}
.ui-dashboard #dashboard-overview-stats .ui-card .ui-card-front h5 em {
	font-style: normal;
	font-size: 0.75em;
}
.ui-dashboard #dashboard-overview-stats .ui-card .ui-card-flip,
.ui-dashboard #dashboard-overview-stats .ui-card .ui-card-remove {
	position: absolute;
	top: 10px;
	font-size: 14px;
	color: #8493a8;
	opacity: 0;
	transition: opacity 120ms;
}
.ui-dashboard #dashboard-overview-stats .ui-card .ui-card-flip { right: 10px; }
.ui-dashboard #dashboard-overview-stats .ui-card .ui-card-remove { left: 10px; }
.ui-dashboard #dashboard-overview-stats .ui-card .ui-card-flip:hover,
.ui-dashboard #dashboard-overview-stats .ui-card .ui-card-remove:hover { color: #475467; }
.ui-dashboard #dashboard-overview-stats .ui-card:hover .ui-card-flip,
.ui-dashboard #dashboard-overview-stats .ui-card:hover .ui-card-remove { opacity: 1; }
.ui-dashboard #dashboard-overview-stats .ui-card .ui-card-flip span { display: none; }
.ui-dashboard #dashboard-overview-stats .sparkline-spacer { display: none; }
.ui-dashboard #dashboard-overview-stats .sparkline { display: none; }
.ui-dashboard #dashboard-overview-stats.ui-loading ul { opacity: 0.4; }

/* Rebuild the filter row as a single flex container so dropdowns auto-size
   and buttons never overlap them. The twig markup uses pure-grid (2/3 + 1/3,
   each split in halves) which cramps the right-side buttons into ~1/6 of the
   page; flex lets everything lay out on one line with real gaps. */
.ui-dashboard .pure-form.pure-form-stacked {
	margin: 48px 0 0 0;
}

.ui-dashboard .pure-form-stacked > .pure-g.ui-input-group {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: center;
	align-self: stretch;
	gap: 8px;
	margin: 0;
	width: 100%;
	margin-left: 0;
}

.ui-dashboard .pure-form-stacked > .pure-g.ui-input-group > .pure-u-1,
.ui-dashboard .pure-form-stacked > .pure-g.ui-input-group > .pure-u-md-2-3,
.ui-dashboard .pure-form-stacked > .pure-g.ui-input-group > .pure-u-md-1-3 {
	width: auto;
	flex: 0 0 auto;
	padding: 0;
}

/* Left group (products + date): dropdowns side-by-side */
.ui-dashboard #main-filter-wrap,
.ui-dashboard #ai-main-filter-wrap {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin: 0;
	margin-left: 0;
	width: auto;
	flex: 0 0 auto;
}

.ui-dashboard #main-filter-wrap > div,
.ui-dashboard #ai-main-filter-wrap > div {
	width: auto;
	flex: 0 0 auto;
	padding: 0;
}

/* Right group (currency + buttons): push to flex-end */
.ui-dashboard .pure-form-stacked .pure-g.ui-input-group > .pure-u-md-1-3 > .pure-g.ui-input-group {
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	justify-content: flex-end;
	gap: 8px;
	margin: 0;
	margin-left: 0;
	width: auto;
	flex: 0 0 auto;
}

.ui-dashboard .pure-form-stacked .pure-g.ui-input-group > .pure-u-md-1-3 > .pure-g.ui-input-group > div {
	width: auto;
	flex: 0 0 auto;
	padding: 0;
}

/* Wrapper around the styled <select> dropdowns. The `.date_range` variant
   (custom-date wrap with two text inputs) has its own chrome and is excluded. */
.ui-dashboard .tc-dropdown:not(.date_range) {
	position: relative;
	display: inline-block;
	padding: 0 !important;
	margin: 0;
	background: transparent;
	border: 0;
	border-radius: 8px;
	width: 180px;
	max-width: 180px;
	flex: 0 0 180px;
}

/* Currency dropdown narrower — override the 180px width */
.ui-dashboard #stats-currency-wrap .tc-dropdown,
.ui-dashboard #ai-currency-wrap .tc-dropdown {
	width: auto;
	max-width: none;
	flex: 0 0 auto;
}

/* Kill the inherited Font Awesome chevron from shared.css `.dropdown::after` —
   the custom SVG chevron on the <select> replaces it. */
.ui-dashboard .tc-dropdown::after,
.ui-dashboard .dropdown.tc-dropdown::after {
	content: none !important;
	display: none !important;
}

body.root .ui-dashboard .tc-dropdown select,
.ui-dashboard .tc-dropdown select {
	appearance: none;
	-webkit-appearance: none;
	background: #ffffff;
	border: 1px solid #d1d7de !important;
	border-radius: 8px !important;
	padding: 7px 37px 7px 37px !important;
	font-family: 'Inter', sans-serif !important;
	font-size: 14px !important;
	font-weight: 400 !important;
	line-height: 20px;
	color: #364152;
	height: 36px !important;
	box-sizing: border-box !important;
	width: 180px !important;
	min-width: 0;
	cursor: pointer;
	box-shadow: none;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'><path d='M4 6L8 10L12 6' stroke='%233A4351' stroke-opacity='0.89' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
	background-repeat: no-repeat;
	background-position: right 13px center;
}

/* Currency dropdown: narrower and no left mark-selector padding */
.ui-dashboard #stats-currency-wrap .tc-dropdown select,
.ui-dashboard #ai-currency-wrap .tc-dropdown select {
	padding-left: 13px !important;
	width: auto !important;
	min-width: 84px;
}

.ui-dashboard .tc-dropdown .mark-selector {
	position: absolute;
	left: 17px;
	top: 50%;
	width: 8px;
	height: 8px;
	margin-top: -4px;
	border-radius: 50%;
	background: #00a6aa;
	z-index: 1;
	pointer-events: none;
	font-size: 0;
}

.ui-dashboard .tc-dropdown .mark-selector::before {
	display: none;
}

.ui-dashboard .tc-dropdown .mark-selector.darker {
	background: #006b70;
}

.ui-dashboard .tc-dropdown .mark-selector.none {
	display: none;
}

.ui-dashboard #stats-btn-compare,
.ui-dashboard #stats-btn-customize,
.ui-dashboard #ai-stats-btn-compare,
.ui-dashboard #ai-stats-btn-customize,
.ui-dashboard #compare-btn,
.ui-dashboard #customize-stats-btn,
.ui-dashboard .tc-btn-customize {
	padding: 8px 18px;
	background: #006b70;
	color: #ffffff;
	border: 0;
	border-radius: 8px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	cursor: pointer;
	transition: background-color 0.15s ease;
	height: 36px;
	box-sizing: border-box;
	text-align: center;
	text-transform: none;
	letter-spacing: 0;
	white-space: nowrap;
	flex: 0 0 auto;
}

.ui-dashboard #stats-btn-customize,
.ui-dashboard #ai-stats-btn-customize {
	margin-left: 0 !important;
}

.ui-dashboard #stats-btn-compare:hover,
.ui-dashboard #stats-btn-customize:hover,
.ui-dashboard #ai-stats-btn-compare:hover,
.ui-dashboard #ai-stats-btn-customize:hover,
.ui-dashboard #compare-btn:hover,
.ui-dashboard #customize-stats-btn:hover,
.ui-dashboard .tc-btn-customize:hover {
	background: #005559;
}

.ui-dashboard .compare-btn-wrap {
	display: flex;
	align-items: center;
	justify-content: flex-end;
}

.ui-dashboard .compare-btn-wrap .tc-flex {
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	gap: 8px;
}

.ui-dashboard .tc-stats-section {
	margin: 64px 0 0 0;
}

.ui-dashboard .tc-stats-section[data-section="trends"] {
	margin-top: 48px;
}

/* The in-card "graph-top" heading takes over visually for each section. */
.ui-dashboard .tc-stats-section > h2 {
	display: none;
}

.ui-dashboard .tc-tabs {
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 12px;
	overflow: hidden;
	margin: 0;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	display: flex;
	flex-direction: column;
	gap: 32px;
}

.ui-dashboard .tc-tabs-list {
	background: #ffffff;
	padding: 8px 8px 0 8px;
	margin: 0;
	border-radius: 0;
	display: flex;
	gap: 0;
}

.ui-dashboard .tc-tabs-list .pure-u-1-5 {
	flex: 1 0 0;
	min-width: 0;
	position: relative;
}

/* Cancel the legacy vertical divider on the older .tc-tabs-list rule so
   tiles sit flush. */
.ui-dashboard .tc-tabs-list .pure-u-1-5:not(:first-child)::before {
	content: none;
	display: none;
	background: transparent;
}

/* Desktop tab segments — flat inside the outer .tc-tabs card per Figma
   2:572/573/577. No individual borders, just the gray bg fill on active.
   Mobile applies its own per-tab border + teal underline inside the
   @media (max-width: 767px) block further down. */
.ui-dashboard .tc-tabs-list a {
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: flex-start;
	padding: 24px;
	margin: 0;
	border-radius: 12px;
	text-decoration: none;
	background: transparent;
	transition: background-color 0.15s ease;
	width: 100%;
	box-sizing: border-box;
	cursor: pointer;
	gap: 4px;
	min-width: 0;
}

/* Lighter than the active fill so hovered tiles read as "available to click"
   without looking like the selected one. */
.ui-dashboard .tc-tabs-list a:not(.active):hover {
	background: #fbfcfd;
}

.ui-dashboard .tc-tabs-list a.active {
	background: #f6f8f9;
}

.ui-dashboard .tc-tabs-list a p {
	font-family: 'Inter', sans-serif;
	font-size: 12px;
	font-weight: 600;
	line-height: 16px;
	color: #8493a8;
	text-transform: uppercase;
	letter-spacing: 0.48px;
	margin: 0;
	width: 100%;
	min-width: 0;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* Pin the tooltip icon to 14px regardless of the label's font size so it
   doesn't push the label to wrap and make the active tile taller. */
.ui-dashboard .tc-tabs-list a p .icon.tc-tooltip {
	flex: 0 0 14px;
	width: 14px;
	height: 14px;
	font-size: 12px;
}

.ui-dashboard .tc-tabs-list a h2 {
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
	margin: 0;
	letter-spacing: 0;
	width: 100%;
}

.ui-dashboard .tc-tabs .ui-statistics-graph-wrapper {
	background: #ffffff;
	margin: 0;
	padding: 0 24px 24px 24px;
	position: relative;
	overflow: hidden;
	border-bottom-left-radius: 12px;
	border-bottom-right-radius: 12px;
}

.ui-dashboard .tc-tabs .tc-tabs-graph {
	margin: 0;
}

.ui-dashboard .tc-tabs .graph-content {
	background: transparent;
	padding: 0;
	margin: 0;
	border-radius: 0;
	max-height: none;
	overflow: visible;
}

.ui-dashboard .tc-tabs .graph-content canvas {
	background: transparent !important;
	height: 410px !important;
	width: 100% !important;
	display: block;
}

.ui-dashboard .tc-tabs canvas {
	background-color: transparent;
	border-radius: 0;
}

/* Metric-row item comparison block (visible when Compare mode active) */
.ui-dashboard .tc-tabs-list a .graph-comparison {
	margin-top: 12px;
}

.ui-dashboard .tc-tabs-list a .graph-comparison .hr-small {
	margin: 8px 0;
	border: 0;
	border-top: 1px solid #d1d7de;
}

.ui-dashboard .tc-tabs-list a .graph-comparison h2 {
	font-size: 16px;
	color: #6e819e;
}

.ui-dashboard .tc-tabs-list a .graph-mark.mark-selector {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: #00a6aa;
	display: inline-block;
	margin-right: 8px;
}

.ui-dashboard .tc-tabs-list a .graph-mark.mark-selector.darker {
	background: #006b70;
}

/* Lift KPI-tile tooltips above neighbouring sections so they float on top
   of the card rather than being clipped by it. */
.ui-dashboard .tc-tabs-list .tc-tooltip::after,
.ui-dashboard .tc-tabs-list .tc-tooltip::before {
	z-index: 200;
}

/* Card wrapper for the lower sections (Recurring / Breakdown / Refunds). */
/* Chart pure-g card chrome — Figma 838-999/1111 style. Matches both
   when the chart pure-g is a direct child of the section (Revenue
   Breakdown, Refunds) and when wrapped in `.tc-section-card` (Recurring
   Revenue, which needs the wrapper because title + tabs live alongside
   the chart per Figma 838-999). */
.ui-dashboard .tc-stats-section:not([data-section="trends"]):not([data-section="recovered-revenue"]) > .pure-g:first-of-type,
.ui-dashboard .tc-stats-section:not([data-section="trends"]) > .tc-section-card > .pure-g {
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 12px;
	overflow: hidden;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	margin: 0 0 24px 0;
	display: flex;
	flex-direction: column;
	gap: 24px;
	padding: 24px;
	box-sizing: border-box;
}

/* Info row: title (flex:1 0 0) pushes the legend chips to the right. */
.ui-dashboard .tc-stats-section:not([data-section="trends"]) .graph-top {
	background: transparent;
	border: 0;
	border-bottom: 0;
	border-radius: 0;
	padding: 0;
	font-family: 'Inter', sans-serif;
	display: flex;
	gap: 16px;
	align-items: center;
	width: 100%;
	justify-content: flex-start;
}

.ui-dashboard .tc-stats-section:not([data-section="trends"]) .graph-top p {
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
	margin: 0;
	flex: 1 0 0;
	min-width: 0;
}

/* Hide the secondary h2 metric in Breakdown/Refunds — title + legend only. */
.ui-dashboard .tc-stats-section[data-section="revenue-breakdown"] .graph-top h2,
.ui-dashboard .tc-stats-section[data-section="refunds"] .graph-top h2 {
	display: none;
}

/* Title-row tooltip icon would render at the 20px parent font-size, which
   looks oversized next to the title. Hide it — the legend chips already
   communicate what the breakdown segments mean. */
.ui-dashboard .tc-stats-section[data-section="revenue-breakdown"] .graph-top > p .icon.tc-tooltip {
	display: none;
}

/* Mobile: replace any body-level floating chart tooltip (which
   overflows the viewport on phones, dragging the page into a
   horizontal scroll) with an inline detail panel below the chart.
   Hidden by default; the JS callback adds `is-active` after the user
   first taps a bar. Style mirrors the desktop floater (dark fill,
   white text, dot per segment) so the visual language stays
   consistent. Applies to every chart that calls
   `GraphHelper.routeMobileTooltip` — Revenue Breakdown, Subscriber
   Breakdown, Productsales/Subscriptions/Coupons charts. */
.tc-breakdown-detail {
	display: none;
}
@media (max-width: 767px) {
	.tc-breakdown-detail.is-active {
		display: block;
		position: relative;
		margin: 16px 0 0 0;
		padding: 14px 36px 14px 16px;     /* extra right padding so close button doesn't overlap values */
		background: rgba(22, 24, 37, 1);
		color: #ffffff;
		border-radius: 8px;
		font: 13px/1.4 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
	}
	.tc-breakdown-detail-close {
		position: absolute;
		top: 6px;
		right: 6px;
		width: 28px;
		height: 28px;
		padding: 0;
		border: 0;
		background: transparent;
		color: rgba(255, 255, 255, 0.7);
		font: 22px/1 -apple-system, BlinkMacSystemFont, sans-serif;
		cursor: pointer;
		border-radius: 50%;
		display: flex;
		align-items: center;
		justify-content: center;
		-webkit-tap-highlight-color: transparent;
	}
	.tc-breakdown-detail-close:hover,
	.tc-breakdown-detail-close:active {
		background: rgba(255, 255, 255, 0.12);
		color: #ffffff;
	}
	.tc-breakdown-detail-table {
		width: 100%;
		border-collapse: collapse;
	}
	.tc-breakdown-detail-table tr td {
		padding: 4px 0;
		vertical-align: middle;
	}
	.tc-breakdown-detail-table .tc-breakdown-dot {
		display: inline-block;
		width: 10px;
		height: 10px;
		border-radius: 50%;
		border: 2px solid;
		box-sizing: border-box;
		margin-right: 8px;
	}
	.tc-breakdown-detail-table .tc-breakdown-label {
		width: 100%;
	}
	.tc-breakdown-detail-table .tc-breakdown-value {
		text-align: right;
		white-space: nowrap;
		font-variant-numeric: tabular-nums;
	}
	/* Belt-and-suspenders: even if the body-level floater sneaks back
	   in, force-hide it on phone so it can't drag horizontal scroll. */
	#chartjs-breakdown-tooltip {
		display: none !important;
	}
}

.ui-dashboard .tc-stats-section .graph-top .tc-label {
	gap: 16px;
	display: flex;
	align-items: center;
}

.ui-dashboard .tc-stats-section .graph-top .tc-label .tc-flex {
	display: flex;
	align-items: center;
	gap: 8px;
}

.ui-dashboard .tc-stats-section .graph-top .tc-label .tc-flex p {
	font-family: 'Inter', sans-serif;
	font-size: 12px;
	font-weight: 400;
	line-height: 16px;
	color: #8493a8;
	letter-spacing: 0;
	margin: 0;
	white-space: nowrap;
}

/* Suppress the legacy "●" character from .mark-selector::before so the dot
   is a pure CSS circle (the legacy rule renders a font-glyph dot). */
.ui-dashboard .tc-stats-section .graph-top .tc-label .mark-selector {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: #00c8c9;
	display: inline-block;
	margin: 0;
	padding: 0;
	flex: 0 0 auto;
	overflow: hidden;
}

.ui-dashboard .tc-stats-section .graph-top .tc-label .mark-selector::before {
	content: none;
	display: none;
}

.ui-dashboard .tc-stats-section .graph-top .tc-label .mark-selector.darker {
	background: #006b70;
}

.ui-dashboard .tc-stats-section:not([data-section="trends"]) .graph-content {
	background: transparent;
	padding: 0;
	max-height: none;
	width: 100%;
}

.ui-dashboard .tc-stats-section:not([data-section="trends"]) .graph-content canvas {
	background: transparent !important;
	height: 456px !important;
	width: 100% !important;
	display: block;
}

.ui-dashboard .tc-stats-section[data-section="recurring-revenue"] .graph-content canvas {
	height: 480px !important;
}

/* Sub-cards row (MRR/ARR, Breakdown, Refund stat tiles). */
.ui-dashboard .tc-stats-section:not([data-section="trends"]) > .pure-g:last-of-type {
	margin: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
	align-items: stretch;
}

.ui-dashboard .tc-stats-section:not([data-section="trends"]) > .pure-g:last-of-type > div {
	padding: 0;
	flex: 1 1 0;
	min-width: 180px;
	width: auto;
	margin-bottom: 0;
}

.ui-dashboard .tc-stats-section:not([data-section="trends"]) > .pure-g:last-of-type .tc-box {
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 12px;
	padding: 24px;
	margin: 0;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: flex-start;
	gap: 0;
	flex: 1 0 0;
	height: 100%;
	min-height: 164px;
	box-sizing: border-box;
}

.ui-dashboard .tc-stats-section:not([data-section="trends"]) > .pure-g:last-of-type .tc-box::before {
	content: '';
	display: block;
	width: 36px;
	height: 36px;
	background: #e8ecef;
	border-radius: 8px;
	background-repeat: no-repeat;
	background-position: center;
	background-size: 20px 20px;
	flex: 0 0 auto;
	margin-bottom: 32px;
	/* Default fallback: Material `arrow_upward`. Per-card icons override below. */
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='%233A4351' fill-opacity='0.89'><path d='M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z'/></svg>");
}

/* Refunded Customers — Material `remove_red_eye` */
.ui-dashboard .tc-stats-section[data-section="refunds"] > .pure-g:last-of-type > div:nth-child(1) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18.3333 12.5' fill='none'><path d='M9.16667 1.66667C12.325 1.66667 15.1417 3.44167 16.5167 6.25C15.1417 9.05833 12.3333 10.8333 9.16667 10.8333C6 10.8333 3.19167 9.05833 1.81667 6.25C3.19167 3.44167 6.00833 1.66667 9.16667 1.66667ZM9.16667 0C5 0 1.44167 2.59167 0 6.25C1.44167 9.90833 5 12.5 9.16667 12.5C13.3333 12.5 16.8917 9.90833 18.3333 6.25C16.8917 2.59167 13.3333 0 9.16667 0ZM9.16667 4.16667C10.3167 4.16667 11.25 5.1 11.25 6.25C11.25 7.4 10.3167 8.33333 9.16667 8.33333C8.01667 8.33333 7.08333 7.4 7.08333 6.25C7.08333 5.1 8.01667 4.16667 9.16667 4.16667ZM9.16667 2.5C7.1 2.5 5.41667 4.18333 5.41667 6.25C5.41667 8.31667 7.1 10 9.16667 10C11.2333 10 12.9167 8.31667 12.9167 6.25C12.9167 4.18333 11.2333 2.5 9.16667 2.5Z' fill='%233A4351' fill-opacity='0.89'/></svg>");
}

/* Revenue Breakdown card icons — Material Symbols Outlined (960×960 viewBox). */
/* Gross Revenue — show_chart */
.ui-dashboard .tc-stats-section[data-section="revenue-breakdown"] > .pure-g:last-of-type > div:nth-child(1) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' fill='%233A4351' fill-opacity='0.89'><path d='m140-220-60-60 300-300 160 160 284-320 56 56-340 384-160-160-240 240Z'/></svg>");
}
/* Net Revenue — stacked_line_chart */
.ui-dashboard .tc-stats-section[data-section="revenue-breakdown"] > .pure-g:last-of-type > div:nth-child(2) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' fill='%233A4351' fill-opacity='0.89'><path d='m140-100-60-60 300-300 160 160 284-320 56 56-340 384-160-160-240 240Zm0-240-60-60 300-300 160 160 284-320 56 56-340 384-160-160-240 240Z'/></svg>");
}
/* Commission Paid + JV Payments — handshake */
.ui-dashboard .tc-stats-section[data-section="revenue-breakdown"] > .pure-g:last-of-type > div:nth-child(3) .tc-box::before,
.ui-dashboard .tc-stats-section[data-section="revenue-breakdown"] > .pure-g:last-of-type > div:nth-child(4) .tc-box::before,
.ui-dashboard .tc-stats-section[data-section="recovered-revenue"] > .pure-g:last-of-type > div:nth-child(3) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' fill='%233A4351' fill-opacity='0.89'><path d='M475-160q4 0 8-2t6-4l328-328q12-12 17.5-27t5.5-30q0-16-5.5-30.5T817-607L647-777q-11-12-25.5-17.5T591-800q-15 0-30 5.5T534-777l-11 11 74 75q15 14 22 32t7 38q0 42-28.5 70.5T527-522q-20 0-38.5-7T456-550l-75-74-175 175q-3 3-4.5 6.5T200-435q0 8 6 14.5t14 6.5q4 0 8-2t6-4l136-136 56 56-135 136q-3 3-4.5 6.5T285-350q0 8 6 14t14 6q4 0 8-2t6-4l136-135 56 56-135 136q-3 2-4.5 6t-1.5 8q0 8 6 14t14 6q4 0 7.5-1.5t6.5-4.5l136-135 56 56-136 136q-3 3-4.5 6.5T454-180q0 8 6.5 14t14.5 6Zm-1 80q-37 0-65.5-24.5T375-166q-34-5-57-28t-28-57q-34-5-56.5-28.5T206-336q-38-5-62-33t-24-66q0-20 7.5-38.5T149-506l232-231 131 131q2 3 6 4.5t8 1.5q9 0 15-5.5t6-14.5q0-4-1.5-8t-4.5-6L398-777q-11-12-25.5-17.5T342-800q-15 0-30 5.5T285-777L144-635q-9 9-15 21t-8 24q-2 12 0 24.5t8 23.5l-58 58q-17-23-25-50.5T40-590q2-28 14-54.5T87-692l141-141q24-23 53.5-35t60.5-12q31 0 60.5 12t52.5 35l11 11 11-11q24-23 53.5-35t60.5-12q31 0 60.5 12t52.5 35l169 169q23 23 35 53t12 61q0 31-12 60.5T873-437L545-110q-14 14-32.5 22T474-80Zm-99-560Z'/></svg>");
}
/* Tax Collected — account_balance */
.ui-dashboard .tc-stats-section[data-section="revenue-breakdown"] > .pure-g:last-of-type > div:nth-child(5) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' fill='%233A4351' fill-opacity='0.89'><path d='M200-280v-280h80v280h-80Zm240 0v-280h80v280h-80ZM80-120v-80h800v80H80Zm600-160v-280h80v280h-80ZM80-640v-80l400-200 400 200v80H80Zm178-80h444-444Zm0 0h444L480-830 258-720Z'/></svg>");
}
/* Shipping Collected — local_shipping */
.ui-dashboard .tc-stats-section[data-section="revenue-breakdown"] > .pure-g:last-of-type > div:nth-child(6) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' fill='%233A4351' fill-opacity='0.89'><path d='M155-195q-35-35-35-85H40v-440q0-33 23.5-56.5T120-800h560v160h120l120 160v200h-80q0 50-35 85t-85 35q-50 0-85-35t-35-85H360q0 50-35 85t-85 35q-50 0-85-35Zm113.5-56.5Q280-263 280-280t-11.5-28.5Q257-320 240-320t-28.5 11.5Q200-297 200-280t11.5 28.5Q223-240 240-240t28.5-11.5ZM120-360h32q17-18 39-29t49-11q27 0 49 11t39 29h272v-360H120v360Zm628.5 108.5Q760-263 760-280t-11.5-28.5Q737-320 720-320t-28.5 11.5Q680-297 680-280t11.5 28.5Q703-240 720-240t28.5-11.5ZM680-440h170l-90-120h-80v120ZM360-540Z'/></svg>");
}

/* Revenue Breakdown sub-cards: 3×2 grid (6 tiles), overriding the default
   flex-wrap layout used by the 4-card Recurring Revenue and Refunds sections. */
.ui-dashboard .tc-stats-section[data-section="revenue-breakdown"] > .pure-g:last-of-type,
.ui-dashboard .tc-stats-section[data-section="recovered-revenue"] > .pure-g:last-of-type {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 16px;
}

.ui-dashboard .tc-stats-section[data-section="revenue-breakdown"] > .pure-g:last-of-type > div,
.ui-dashboard .tc-stats-section[data-section="recovered-revenue"] > .pure-g:last-of-type > div {
	min-width: 0;
	width: auto;
	flex: none;
}

/* Recovered Revenue (TC-8567) has only its three cards, no chart box: same 3-up grid on desktop. */
@media (min-width: 768px) {
	.ui-dashboard .tc-stats-section[data-section="recovered-revenue"] > .pure-g {
		display: grid;
		grid-template-columns: repeat(3, 1fr);
		gap: 16px;
	}
	.ui-dashboard .tc-stats-section[data-section="recovered-revenue"] > .pure-g > div { min-width: 0; width: auto; flex: none; }
}

/* Recurring Revenue card icons — Material Symbols Outlined. */
/* MRR — date_range */
.ui-dashboard .tc-stats-section[data-section="recurring-revenue"] > .pure-g:last-of-type > div:nth-child(1) .tc-box::before,
.ui-dashboard .tc-stats-section[data-section="recovered-revenue"] > .pure-g:last-of-type > div:nth-child(1) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' fill='%233A4351' fill-opacity='0.89'><path d='M291.5-411.5Q280-423 280-440t11.5-28.5Q303-480 320-480t28.5 11.5Q360-457 360-440t-11.5 28.5Q337-400 320-400t-28.5-11.5Zm160 0Q440-423 440-440t11.5-28.5Q463-480 480-480t28.5 11.5Q520-457 520-440t-11.5 28.5Q497-400 480-400t-28.5-11.5Zm160 0Q600-423 600-440t11.5-28.5Q623-480 640-480t28.5 11.5Q680-457 680-440t-11.5 28.5Q657-400 640-400t-28.5-11.5ZM200-80q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v560q0 33-23.5 56.5T760-80H200Zm0-80h560v-400H200v400Zm0-480h560v-80H200v80Zm0 0v-80 80Z'/></svg>");
}
/* ARR — calendar_month */
.ui-dashboard .tc-stats-section[data-section="recurring-revenue"] > .pure-g:last-of-type > div:nth-child(2) .tc-box::before,
.ui-dashboard .tc-stats-section[data-section="recovered-revenue"] > .pure-g:last-of-type > div:nth-child(2) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' fill='%233A4351' fill-opacity='0.89'><path d='M200-80q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v560q0 33-23.5 56.5T760-80H200Zm0-80h560v-400H200v400Zm0-480h560v-80H200v80Zm0 0v-80 80Zm280 240q-17 0-28.5-11.5T440-440q0-17 11.5-28.5T480-480q17 0 28.5 11.5T520-440q0 17-11.5 28.5T480-400Zm-188.5-11.5Q280-423 280-440t11.5-28.5Q303-480 320-480t28.5 11.5Q360-457 360-440t-11.5 28.5Q337-400 320-400t-28.5-11.5ZM640-400q-17 0-28.5-11.5T600-440q0-17 11.5-28.5T640-480q17 0 28.5 11.5T680-440q0 17-11.5 28.5T640-400ZM480-240q-17 0-28.5-11.5T440-280q0-17 11.5-28.5T480-320q17 0 28.5 11.5T520-280q0 17-11.5 28.5T480-240Zm-188.5-11.5Q280-263 280-280t11.5-28.5Q303-320 320-320t28.5 11.5Q360-297 360-280t-11.5 28.5Q337-240 320-240t-28.5-11.5ZM640-240q-17 0-28.5-11.5T600-280q0-17 11.5-28.5T640-320q17 0 28.5 11.5T680-280q0 17-11.5 28.5T640-240Z'/></svg>");
}
/* Total New Subscriptions — cached */
.ui-dashboard .tc-stats-section[data-section="recurring-revenue"] > .pure-g:last-of-type > div:nth-child(3) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' fill='%233A4351' fill-opacity='0.89'><path d='M482-160q-134 0-228-93t-94-227v-7l-64 64-56-56 160-160 160 160-56 56-64-64v7q0 100 70.5 170T482-240q26 0 51-6t49-18l60 60q-38 22-78 33t-82 11Zm278-161L600-481l56-56 64 64v-7q0-100-70.5-170T478-720q-26 0-51 6t-49 18l-60-60q38-22 78-33t82-11q134 0 228 93t94 227v7l64-64 56 56-160 160Z'/></svg>");
}
/* Revenue Churn % — percent */
.ui-dashboard .tc-stats-section[data-section="recurring-revenue"] > .pure-g:last-of-type > div:nth-child(4) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' fill='%233A4351' fill-opacity='0.89'><path d='M300-520q-58 0-99-41t-41-99q0-58 41-99t99-41q58 0 99 41t41 99q0 58-41 99t-99 41Zm0-80q25 0 42.5-17.5T360-660q0-25-17.5-42.5T300-720q-25 0-42.5 17.5T240-660q0 25 17.5 42.5T300-600Zm360 440q-58 0-99-41t-41-99q0-58 41-99t99-41q58 0 99 41t41 99q0 58-41 99t-99 41Zm42.5-97.5Q720-275 720-300t-17.5-42.5Q685-360 660-360t-42.5 17.5Q600-325 600-300t17.5 42.5Q635-240 660-240t42.5-17.5ZM216-160l-56-56 584-584 56 56-584 584Z'/></svg>");
}

.ui-dashboard .tc-stats-section:not([data-section="trends"]) > .pure-g:last-of-type .tc-box p {
	font-family: 'Inter', sans-serif;
	font-size: 12px;
	font-weight: 600;
	line-height: 16px;
	color: #8493a8;
	text-transform: uppercase;
	letter-spacing: 0.48px;
	margin: 0 0 4px 0;
	width: 100%;
	display: flex;
	align-items: center;
	gap: 6px;
}

.ui-dashboard .tc-stats-section:not([data-section="trends"]) > .pure-g:last-of-type .tc-box h2 {
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
	margin: 0;
	letter-spacing: 0;
	width: 100%;
}

.ui-dashboard .tc-stats-section:not([data-section="trends"]) > .pure-g:last-of-type .tc-box .hr-small {
	display: none;
	margin: 0;
}

/* Compare / multicurrency filter layout.
   When compare mode is active (`.tc-compare:not(.hidden)` exists inside
   `#main-filter-wrap`), filters render as two stacked rows: primary on top,
   comparison below, plus a trash-icon column on the right. */

/* Stack primary + comparison selects vertically inside each filter wrapper
   so the compare-row dropdowns line up underneath their primary counterparts. */
.ui-dashboard #main-filter-wrap #products-wrap,
.ui-dashboard #main-filter-wrap #data-range-wrap,
.ui-dashboard #main-filter-wrap #product-plan-wrap {
	display: flex;
	flex-direction: column;
	gap: 8px;
	align-self: flex-start;
	flex: 0 0 auto;
	width: auto;
}

/* Inside the column-flex wrappers above, `.tc-dropdown`'s `flex: 0 0 180px`
   would otherwise be interpreted as a 180px HEIGHT (flex-basis applies on
   the main axis). Reset to auto-basis + explicit 180×36 to keep the natural
   select height. The `.date_range` variant (custom-date wrap with two date
   inputs + clear icon) needs more room and is sized separately below. */
.ui-dashboard #main-filter-wrap #products-wrap > .tc-dropdown:not(.date_range),
.ui-dashboard #main-filter-wrap #data-range-wrap > .tc-dropdown:not(.date_range),
.ui-dashboard #main-filter-wrap #product-plan-wrap > .tc-dropdown:not(.date_range) {
	flex: 0 0 auto;
	width: 180px;
	max-width: 180px;
	height: 36px;
}

/* Custom-date wrap: two date inputs share the row evenly, clear icon pinned
   at the end. 280px keeps the YYYY-MM-DD values comfortably readable. The
   chrome (white bg, gray border, 8px radius) matches the styled selects. */
.ui-dashboard #main-filter-wrap #data-range-wrap > .date_range.tc-dropdown {
	display: flex;
	align-items: center;
	flex: 0 0 auto;
	width: 280px;
	max-width: 280px;
	height: 36px;
	margin: 0;
	padding: 0 12px;
	gap: 8px;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	box-sizing: border-box;
}
.ui-dashboard #main-filter-wrap #data-range-wrap > .date_range.tc-dropdown input {
	flex: 1 1 0;
	min-width: 0;
	width: auto;
	padding: 0;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 400;
	color: #364152;
	background: transparent;
}
.ui-dashboard #main-filter-wrap #data-range-wrap > .date_range.tc-dropdown .date_range_clear {
	flex: 0 0 auto;
	top: 0;
	margin: 0;
	align-self: center;
	color: #677281;
}

/* Trash-icon button at end of each filter row (hidden until compare on). */
.ui-dashboard .tc-filter-clear-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	padding: 8px;
	border: 0;
	background: transparent;
	border-radius: 8px;
	cursor: pointer;
	flex: 0 0 auto;
	transition: background-color 0.15s ease;
	box-sizing: border-box;
	margin: 0;
	align-self: flex-start;
}

.ui-dashboard .tc-filter-clear-btn:hover {
	background: #f6f8f9;
}

.ui-dashboard .tc-filter-clear-btn svg {
	display: block;
}

/* The buttons are 32×32 sitting inside 36px rows — the +2px vertical
   padding aligns each icon with the select's chevron. */
.ui-dashboard .tc-filter-clear-col {
	display: flex;
	flex-direction: column;
	gap: 8px;
	align-self: flex-start;
	flex: 0 0 32px;
	width: 32px;
	margin: 0;
	padding: 2px 0;
	box-sizing: content-box;
}

.ui-dashboard .tc-filter-clear-col.hidden {
	display: none !important;
}

/* When compare is OFF (default), hide compare-only UI. */
.ui-dashboard .tc-compare.hidden {
	display: none !important;
}

/* When compare is ON, hide the now-redundant `Compare` toggle button —
   the trash buttons handle "exit compare". Class-toggle pattern (not :has)
   so the rule applies in browsers without :has() support; the matching
   .tc-compare-on class is toggled by the existing #stats-btn-compare
   click handler in account.html.twig. */
.ui-dashboard.tc-compare-on #stats-btn-compare {
	display: none;
}

.ui-dashboard #main-filter-wrap {
	align-items: flex-start;
}

/* Revenue Breakdown legend chips. */
.ui-dashboard .tc-stats-section[data-section="revenue-breakdown"] .graph-top .tc-breakdown-legend {
	gap: 16px;
	flex-wrap: wrap;
	justify-content: flex-end;
}

/* Mobile breakdown detail panel — the tap-to-show inline list under the
   chart on phone widths. JS (account.html.twig ~2615+) writes a table
   with .tc-breakdown-dot / .tc-breakdown-label / .tc-breakdown-value
   columns plus a .tc-breakdown-detail-close button. Without this CSS
   the columns collapse to content-width and the value runs into long
   labels (e.g. "Shipping Collected$0.00"). */
.ui-dashboard .tc-breakdown-detail {
	display: none;
	position: relative;
	margin-top: 12px;
	padding: 16px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 12px;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
}
.ui-dashboard .tc-breakdown-detail.is-active {
	display: block;
}
.ui-dashboard .tc-breakdown-detail-close {
	position: absolute;
	top: 8px;
	right: 8px;
	width: 28px;
	height: 28px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: #f6f8f9;
	color: #364152;
	font-size: 16px;
	line-height: 1;
	cursor: pointer;
	-webkit-tap-highlight-color: transparent;
}
.ui-dashboard .tc-breakdown-detail-close:active {
	background: #e8ecef;
}
.ui-dashboard .tc-breakdown-detail-table {
	width: 100%;
	border-collapse: collapse;
	margin: 12px 0 0 0;
}
.ui-dashboard .tc-breakdown-detail-table td {
	padding: 6px 0;
	vertical-align: middle;
	font-family: 'Inter', sans-serif;
	font-size: 13px;
	line-height: 18px;
	color: #364152;
	border: 0;
}
.ui-dashboard .tc-breakdown-detail-table td:first-child {
	width: 16px;
	padding-right: 8px;
}
.ui-dashboard .tc-breakdown-detail-table .tc-breakdown-dot {
	display: inline-block;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	vertical-align: middle;
}
.ui-dashboard .tc-breakdown-detail-table .tc-breakdown-label {
	text-align: left;
	padding-right: 16px;
	color: #8493a8;
	white-space: nowrap;
}
.ui-dashboard .tc-breakdown-detail-table .tc-breakdown-value {
	text-align: right;
	font-weight: 600;
	color: #364152;
	white-space: nowrap;
	width: 1%;
}

/* Legend dot colors mirror the Chart.js bar palette so the tap-to-show
   detail panel's inline dots (driven by Chart.js labelColors) match the
   static legend above the chart. Changing CSS without also patching the
   JS chart config creates a visible mismatch in the detail panel — keep
   these in sync with the bar fills until the JS palette is touched. */
.ui-dashboard .tc-stats-section[data-section="revenue-breakdown"] .graph-top .mark-selector.mark-net-revenue {
	background: #006b70;
}
.ui-dashboard .tc-stats-section[data-section="revenue-breakdown"] .graph-top .mark-selector.mark-commission {
	background: #00a6aa;
}
.ui-dashboard .tc-stats-section[data-section="revenue-breakdown"] .graph-top .mark-selector.mark-jv {
	background: #00c8c9;
}
.ui-dashboard .tc-stats-section[data-section="revenue-breakdown"] .graph-top .mark-selector.mark-tax {
	background: #c0edea;
}
.ui-dashboard .tc-stats-section[data-section="revenue-breakdown"] .graph-top .mark-selector.mark-shipping {
	background: #dcf8f6;
}

/* KPI tile compare-mode value treatment: two stacked `● $value` rows,
   second uses a darker dot. The legacy `.graph-comparison` block provides
   the wrapper; we restyle it as a flush-bottom row (no divider). */
.ui-dashboard .tc-tabs-list a .graph-comparison {
	margin-top: 2px;
	width: 100%;
}

.ui-dashboard .tc-tabs-list a .graph-comparison .hr-small {
	display: none;
}

.ui-dashboard .tc-tabs-list a .graph-comparison .tc-flex {
	display: flex;
	align-items: center;
	gap: 8px;
	width: 100%;
}

.ui-dashboard .tc-tabs-list a .graph-comparison h2 {
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
	margin: 0;
	letter-spacing: 0;
	width: 100%;
}

/* Primary value row picks up the dot prefix when compare is on. */
.ui-dashboard .tc-tabs-list a > .tc-flex {
	gap: 8px;
	align-items: center;
}

.ui-dashboard .tc-tabs-list a .graph-trends.mark-selector,
.ui-dashboard .tc-tabs-list a .graph-comparison .mark-selector {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: #00a6aa;
	display: inline-block;
	flex: 0 0 auto;
	margin: 0;
	font-size: 0;
}

.ui-dashboard .tc-tabs-list a .graph-trends.mark-selector::before,
.ui-dashboard .tc-tabs-list a .graph-comparison .mark-selector::before {
	display: none;
	content: none;
}

.ui-dashboard .tc-tabs-list a .graph-comparison .mark-selector.darker {
	background: #006b70;
}

/* Multicurrency picker: prefix the selected value with a colored dot. */
.ui-dashboard #stats-currency-wrap .tc-dropdown::before {
	content: '';
	position: absolute;
	left: 13px;
	top: 50%;
	width: 8px;
	height: 8px;
	margin-top: -4px;
	border-radius: 50%;
	background: #00a6aa;
	z-index: 1;
	pointer-events: none;
}

.ui-dashboard #stats-currency-wrap .tc-dropdown select {
	padding-left: 29px !important;
}

/* Products and Sales report reskin — body class `prodreports` scopes all
   rules below to this report only. Behaviour-neutral / visual only. */
body.prodreports {
	background: #ffffff;
	overflow-x: clip;
}

/* Clip every wrapper so an overflowing child can't trigger page scroll. */
body.prodreports #layout,
body.prodreports .content,
body.prodreports .page-container {
	overflow-x: clip;
	max-width: 100%;
}

body.prodreports .ui-dashboard {
	overflow-x: clip;
	max-width: 1216px;
	margin: 0 auto;
}

/* Chart.js's size-monitor uses 1,000,000px-wide inner divs to detect resize.
   The inner divs MUST stay massive — clip the wrappers instead. */
.chartjs-size-monitor,
.chartjs-size-monitor-expand,
.chartjs-size-monitor-shrink {
	overflow: hidden !important;
}

/* Without this on the Source tab the size-monitor falls back to body and
   leaks its 1M-px children, triggering page horizontal scroll. */
body.prodreports .ui-dashboard .ui-statistics-graph-wrapper {
	overflow: hidden;
}
body.prodreports .ui-dashboard .ui-statistics-graph-wrapper .graph-content,
body.prodreports .ui-dashboard .ui-statistics-graph-wrapper > [id^="tab-"] {
	position: relative;
	overflow: hidden;
}

/* Override the base 160px padding-bottom from `.ui-dashboard`. */
body.prodreports .ui-dashboard {
	padding-bottom: 48px;
}

body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	margin: 0 0 0 0;
}

body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap > .ui-dashboard-head {
	margin: 0;
	padding: 0;
	flex: 1 1 auto;
}

body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap > .ui-dashboard-head h2 {
	font-family: 'Inter', sans-serif;
	font-size: 24px;
	font-weight: 600;
	line-height: 32px;
	color: #28364a;
	margin: 0;
	letter-spacing: 0;
}

body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form {
	margin: 0;
	padding: 0;
	flex: 0 0 auto;
}

body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group {
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	gap: 12px;
	margin: 0;
	width: auto;
}

body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap #data-range-wrap {
	width: 180px;
	flex: 0 0 180px;
	padding: 0;
}

body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap #data-range-wrap > .tc-dropdown {
	width: 180px;
	height: 36px;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	box-sizing: border-box;
}

/* When the user picks Custom range, the select hides and the
   `.date_range` wrap (two text inputs) takes its place. 180px isn't
   wide enough for two formatted dates like "Jun 4th '26" — the end
   date clips past the right border. Grow both the wrap AND its
   `#data-range-wrap` parent to 220px so the dates fit cleanly without
   bleeding into the adjacent USD pill. `:has()` keeps the parent at
   180px when the select is shown (no extra gap next to USD when the
   user is on a non-custom range). */
body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap #data-range-wrap:has(> .date_range.tc-dropdown:not(.hidden)) {
	width: 220px;
	flex: 0 0 220px;
}
body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap #data-range-wrap > .date_range.tc-dropdown {
	width: 220px;
	max-width: 220px;
	height: 36px;
	padding: 0 12px;
	gap: 8px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	box-sizing: border-box;
}
body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap #data-range-wrap > .date_range.tc-dropdown input {
	flex: 1 1 0;
	min-width: 0;
	width: auto;
	padding: 0;
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 400;
	color: #364152;
	background: transparent;
}
body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap #data-range-wrap > .date_range.tc-dropdown .date_range_clear {
	flex: 0 0 auto;
	top: 0;
	margin: 0;
	align-self: center;
	color: #677281;
}

/* The global .tc-dropdown select reserves 37px left padding for a colored
   mark-selector that doesn't exist on these controls — override with the
   Figma 13/28 values so the text doesn't sit under the chevron. */
body.prodreports .ui-dashboard #data-range-wrap > .tc-dropdown > select,
body.prodreports .ui-dashboard #stats-currency-wrap .tc-dropdown > select {
	width: 100% !important;
	height: 100% !important;
	min-width: 0;
	border: 0 !important;
	border-radius: 0 !important;
	box-sizing: border-box !important;
	background-color: transparent;
	padding-left: 13px !important;
	padding-right: 28px !important;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 7.41' fill='%232b384a'><path d='M10.59 0L6 4.58L1.41 0L0 1.41L6 7.41L12 1.41L10.59 0Z'/></svg>");
	background-position: right 17px center;
	background-size: 8px auto;
	font-family: 'Inter', sans-serif !important;
	font-size: 14px !important;
	font-weight: 400 !important;
	line-height: 20px;
	color: #2b384a;
}
body.prodreports .ui-dashboard #data-range-wrap > .tc-dropdown::before {
	content: none !important;
}

body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap #stats-currency-wrap {
	width: 72px;
	flex: 0 0 72px;
}

body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap #stats-currency-wrap.tc-currency-selector-group {
	width: auto;
	max-width: none;
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	gap: 8px;
	flex-wrap: nowrap;
}

body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap #stats-currency-wrap .tc-dropdown {
	width: 72px;
	height: 36px;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	box-sizing: border-box;
}

body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap #stats-currency-wrap.tc-currency-selector-group .tc-dropdown {
	width: auto;
	min-width: 72px;
}

/* Suppress the inherited mark-selector dot + ::after chevron. */
body.prodreports .ui-dashboard #stats-currency-wrap .tc-dropdown::before,
body.prodreports .ui-dashboard #stats-currency-wrap .tc-dropdown::after,
body.prodreports .ui-dashboard #stats-currency-wrap .tc-dropdown .mark-selector {
	content: none !important;
	display: none !important;
}

body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group > .tc-flex.tc-items-center {
	display: flex;
	align-items: center;
	gap: 12px;
}

body.prodreports .ui-dashboard .tc-stats-divider {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0 8px;
	height: 36px;
	width: 17px;
	flex: 0 0 17px;
	box-sizing: border-box;
}

body.prodreports .ui-dashboard .tc-stats-divider::before {
	content: '';
	display: block;
	width: 1px;
	height: 24px;
	background: #d1d7de;
	flex: 0 0 1px;
}

body.prodreports .ui-dashboard #stats-btn-filter {
	padding: 8px 18px;
	height: 36px;
	background: #006b70;
	color: #ffffff;
	border: 0;
	border-radius: 8px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	letter-spacing: 0;
	text-transform: none;
	cursor: pointer;
	white-space: nowrap;
	box-sizing: border-box;
	transition: background-color 0.15s ease;
}

body.prodreports .ui-dashboard #stats-btn-filter:hover {
	background: #005559;
}

body.prodreports .ui-dashboard > hr.hr-small {
	display: none;
}

body.prodreports .ui-dashboard .filter-list-wrapper {
	margin: 24px 0 16px 0;
	padding: 0;
}

body.prodreports .ui-dashboard .filter-list-wrapper > .pure-u-1 > .tc-flex.tc-gap-10 {
	gap: 8px;
	flex-wrap: wrap;
	align-items: center;
}

body.prodreports .ui-dashboard #product-filter-list,
body.prodreports .ui-dashboard #location-filter-list,
body.prodreports .ui-dashboard #tag-filter-list,
body.prodreports .ui-dashboard #country-filter-list,
body.prodreports .ui-dashboard #utm-filter-list,
body.prodreports .ui-dashboard #coupon-filter-list {
	display: flex;
	align-items: center;
	gap: 8px;
}

body.prodreports .ui-dashboard #product-filter-list > p,
body.prodreports .ui-dashboard #location-filter-list > p,
body.prodreports .ui-dashboard #tag-filter-list > p,
body.prodreports .ui-dashboard #country-filter-list > p,
body.prodreports .ui-dashboard #utm-filter-list > p,
body.prodreports .ui-dashboard #coupon-filter-list > p {
	display: none;
}

body.prodreports .ui-dashboard .tc-badge {
	display: inline-flex;
	align-items: center;
	height: 24px;
	padding: 2px 12px;
	background: #e8ecef;
	border: 0;
	border-radius: 999px;
	font-family: 'Inter', sans-serif;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	color: #364152;
	box-sizing: border-box;
	cursor: default;
	white-space: nowrap;
}

body.prodreports .ui-dashboard .filter-list-wrapper .tc-badge {
	cursor: pointer;
	transition: background 120ms, color 120ms;
}
body.prodreports .ui-dashboard .filter-list-wrapper .tc-badge:hover {
	background: #d1d7de;
	color: #1f2937;
}

body.prodreports .ui-dashboard .tc-badge::before {
	content: none;
	display: none;
}

body.prodreports .ui-dashboard .tc-report-tabs {
	margin: 0;
}

body.prodreports .ui-dashboard .tc-report-tab-list {
	display: flex;
	list-style: none;
	margin: 0;
	padding: 0;
	border-bottom: 1px solid #e8ecef;
	gap: 32px;
	background: transparent;
}

body.prodreports .ui-dashboard .tc-report-tab-list > li {
	margin: 0;
	padding: 0;
	background: transparent;
	border: 0;
}

body.prodreports .ui-dashboard .tc-report-tab-list > li > a {
	display: inline-block;
	padding: 8px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #8493a8;
	text-align: center;
	text-decoration: none;
	border-bottom: 2px solid transparent;
	margin-bottom: -1px;
	background: transparent;
	transition: color 0.15s ease, border-color 0.15s ease;
}

body.prodreports .ui-dashboard .tc-report-tab-list > li > a:hover {
	color: #2a3648;
}

body.prodreports .ui-dashboard .tc-report-tab-list > li.active > a {
	color: #2a3648;
	border-bottom-color: #006b70;
	font-weight: 500;
	padding: 8px 8px 10px 8px;
}

body.prodreports .ui-dashboard .tc-report-tab-list > li > a[disabled="disabled"],
body.prodreports .ui-dashboard .tc-report-tab-list > li:has(> a[disabled]) > a {
	color: #c7ccd5;
	cursor: not-allowed;
}

body.prodreports .ui-dashboard .tc-report-tab-content {
	margin-top: 40px;
	padding-top: 0;
}

/* `overflow: clip` so inner active-tile bg / chart lines don't bleed past
   the rounded corners. Safe override of the base `.tc-tabs { overflow: visible }`
   here because prodreports KPI tile tooltips are hidden (rule below). */
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-tabs {
	margin: 0;
	overflow: clip;
}

/* Parent `.tc-tabs gap: 32px` already spaces KPI row → chart. */
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-tabs > .ui-statistics-graph-wrapper {
	padding-top: 0;
}

body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section {
	background: #ffffff;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	padding: 0;
	margin: 40px 0 0 0;
	min-width: 0;
	max-width: 100%;
}

/* Outer h2 hidden — inner `.tc-flex.tc-between` row owns the header. */
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section > h2 {
	display: none;
}

body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) {
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 12px;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	padding: 24px;
	overflow: clip;
	/* `.tc-table-section` defaults to content-box; force border-box so the
	   24px padding + 1px border don't bleed past the 1152px container. */
	box-sizing: border-box;
	width: 100%;
}

/* Hide the duplicate outer title row — the inner `.tc-flex.tc-between`
   below is the actual title+controls header. */
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) > .tc-flex.tc-items-center.tc-gap-10 {
	display: none;
}

body.prodreports .ui-dashboard .tc-table-wrap {
	display: flex;
	flex-direction: column;
	gap: 16px;
	background: transparent;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	padding: 0;
	min-width: 0;
	max-width: 100%;
	overflow-x: auto;
}

body.prodreports .ui-dashboard .tc-table-wrap > .tc-flex.tc-between {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	margin: 0;
}

body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) .tc-table-wrap > .tc-flex.tc-between {
	align-items: center;
	gap: 16px;
}

body.prodreports .ui-dashboard .tc-table-wrap > .tc-flex.tc-between > p {
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
	margin: 0;
	white-space: nowrap;
	display: flex;
	align-items: center;
	gap: 8px;
}

body.prodreports .ui-dashboard .tc-table-wrap > .tc-flex.tc-between > p .icon.tc-tooltip,
body.prodreports .ui-dashboard .tc-table-wrap > .tc-flex.tc-between > p .th-tooltip {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 16px;
	height: 16px;
	flex: 0 0 16px;
}

/* Inline Material `info` (outlined) icon next to the Sources card title.
   SVG paints via `currentColor`; colour matches the Figma asset's
   #3A4351 at 0.89 opacity. `z-index` lifts the hint tooltip above the
   adjacent native `<select>` chrome which would otherwise occlude it. */
body.prodreports .ui-dashboard .tc-table-wrap > .tc-flex.tc-between > p .tc-sources-info {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 16px;
	height: 16px;
	flex: 0 0 16px;
	color: #3A4351;
	opacity: 0.89;
	position: relative;
	z-index: 100;
}
body.prodreports .ui-dashboard .tc-table-wrap > .tc-flex.tc-between > p .tc-sources-info svg {
	display: block;
	width: 16px;
	height: 16px;
}

body.prodreports .ui-dashboard .tc-table-wrap .pure-form.pure-form-aligned {
	margin: 0;
	padding: 0;
	width: auto;
	max-width: none;
	flex: 0 0 auto;
}

body.prodreports .ui-dashboard .tc-table-wrap .pure-form .ui-input-group {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
}

body.prodreports .ui-dashboard .tc-table-wrap .pure-form .ui-input-group > p.tc-nowrap {
	display: none;
}

body.prodreports .ui-dashboard .tc-table-wrap .pure-form .tc-w-100 {
	width: auto;
	min-width: 180px;
}

body.prodreports .ui-dashboard .tc-table-wrap .pure-form .tc-dropdown {
	width: 180px;
	height: 36px;
}

body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) > .tc-table-wrap {
	gap: 24px;
}

/* Pin the Sources canvas to a 480px-tall parent. Chart.js's responsive
   size-monitor would otherwise inline `padding-bottom: 358px` / `height: 0`
   to preserve its 1684×684 aspect, clipping the chart. */
body.prodreports .ui-dashboard .ui-statistics-graph-wrapper.tc-graph-sources {
	min-height: 504px;
	padding-bottom: 0 !important;
	height: auto !important;
}
body.prodreports .ui-dashboard .ui-statistics-graph-wrapper.tc-graph-sources > .graph-content {
	height: 480px;
	max-height: 480px;
}
/* Override the base `.graph-content canvas { height: 342px !important; }`. */
body.prodreports .ui-dashboard .ui-statistics-graph-wrapper.tc-graph-sources > .graph-content > canvas {
	height: 100% !important;
}
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) .tc-table-wrap .pure-form .tc-dropdown {
	height: 34px;
}
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) .tc-table-wrap .pure-form .tc-dropdown select {
	/* Figma 292-1220: padding 7px + line-height 20px + padding 7px = 34px.
	   Below that the "g" / "p" descenders on labels like "Campaign" clip. */
	height: 34px !important;
	/* padding-right = 12px gap + 16px chevron so text doesn't overlap. */
	padding: 7px 28px 7px 13px !important;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'><path d='M11.06 5.53L8 8.58L4.94 5.53L4 6.47L8 10.47L12 6.47L11.06 5.53Z' fill='%233A4351' fill-opacity='0.89'/></svg>") !important;
	background-position: right 12px center !important;
}

/* Flatten the legacy `.pure-form > .pure-g > .pure-u-1-2` two-column grid
   into a single `flex gap-[8px]` row. */
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) .tc-table-wrap > .tc-flex.tc-between > .pure-form {
	width: auto;
	max-width: none;
	margin: 0;
	padding: 0;
	flex: 0 0 auto;
}
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) .tc-table-wrap > .tc-flex.tc-between > .pure-form > .pure-g {
	display: flex;
	gap: 8px;
	width: auto;
	margin: 0;
	flex-wrap: nowrap;
	justify-content: flex-end;
}
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) .tc-table-wrap > .tc-flex.tc-between > .pure-form > .pure-g > .pure-u-1-2 {
	padding: 0;
	flex: 0 0 auto;
	width: auto;
}

/* The legacy `.tc-w-80` is too narrow for the reskin's 180px dropdown and
   clips the chevron. Size the inner wrappers to the dropdown instead. */
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) .tc-table-wrap .pure-form .ui-input-group,
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) .tc-table-wrap .pure-form .tc-w-80 {
	width: auto;
	padding: 0;
	flex: 0 0 auto;
}

body.prodreports .ui-dashboard .tc-table-wrap > .hr-small {
	display: none;
}

body.prodreports .ui-dashboard .tc-table-wrap .table-wrap {
	background: transparent;
	padding: 0;
	border: 0;
	overflow-x: auto;
}

body.prodreports .ui-dashboard .tc-table {
	width: 100%;
	border-collapse: collapse;
	border-spacing: 0;
	margin: 0;
}

body.prodreports .ui-dashboard .tc-table thead {
	background: #f6f8f9;
}

body.prodreports .ui-dashboard .tc-table thead th {
	height: 41px;
	padding: 10px 8px 11px 8px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500 !important;
	line-height: 20px;
	color: #8493a8 !important;
	text-align: left;
	text-transform: none !important;
	border-top: 0;
	border-bottom: 1px solid #e8ecef;
	white-space: nowrap;
	background: #f6f8f9;
	vertical-align: top;
	box-sizing: border-box;
}

body.prodreports .ui-dashboard .tc-table thead th:first-child,
body.prodreports .ui-dashboard .tc-table thead th:last-child {
	border-radius: 0;
}

/* TC-12655: right-align figure-column headers so they line up with their
   right-aligned values (overrides the default left alignment above; the
   [data-col] hook gives this enough specificity to win). Identity columns
   (id / name / email / type / position) stay left-aligned. */
body.prodreports .ui-dashboard .tc-table thead th[data-col] {
	text-align: right;
}
body.prodreports .ui-dashboard .tc-table thead th[data-col="id"],
body.prodreports .ui-dashboard .tc-table thead th[data-col="name"],
body.prodreports .ui-dashboard .tc-table thead th[data-col="email"],
body.prodreports .ui-dashboard .tc-table thead th[data-col="type"],
body.prodreports .ui-dashboard .tc-table thead th[data-col="position"] {
	text-align: left;
}

body.prodreports .ui-dashboard .tc-table thead th .icon.tc-tooltip,
body.prodreports .ui-dashboard .tc-table thead th .th-tooltip {
	color: #8493a8;
	margin-left: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 16px;
	height: 16px;
	vertical-align: middle;
	position: relative;
	top: -1px;
}

/* Swap legacy FontAwesome (solid) for the Figma `info` outlined SVG. */
body.prodreports .ui-dashboard .icon.tc-tooltip > i.fa-info-circle,
body.prodreports .ui-dashboard .th-tooltip > i.fa-info-circle,
body.prodreports .ui-dashboard .tc-table thead th .icon.tc-tooltip > i,
body.prodreports .ui-dashboard .tc-table thead th .th-tooltip > i {
	font-size: 0 !important;
	line-height: 0 !important;
	display: inline-block !important;
	width: 16px !important;
	height: 16px !important;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 13.3333 13.3333' fill='%233A4351' fill-opacity='0.89'><path d='M6 3.33333H7.33333V4.66667H6V3.33333ZM6 6H7.33333V10H6V6ZM6.66667 0C2.98667 0 0 2.98667 0 6.66667C0 10.3467 2.98667 13.3333 6.66667 13.3333C10.3467 13.3333 13.3333 10.3467 13.3333 6.66667C13.3333 2.98667 10.3467 0 6.66667 0ZM6.66667 12C3.72667 12 1.33333 9.60667 1.33333 6.66667C1.33333 3.72667 3.72667 1.33333 6.66667 1.33333C9.60667 1.33333 12 3.72667 12 6.66667C12 9.60667 9.60667 12 6.66667 12Z'/></svg>") !important;
	background-repeat: no-repeat !important;
	background-position: center !important;
	background-size: 13.33px 13.33px !important;
	vertical-align: middle;
}
body.prodreports .ui-dashboard .icon.tc-tooltip > i.fa-info-circle::before,
body.prodreports .ui-dashboard .th-tooltip > i.fa-info-circle::before,
body.prodreports .ui-dashboard .tc-table thead th .icon.tc-tooltip > i::before,
body.prodreports .ui-dashboard .tc-table thead th .th-tooltip > i::before {
	content: none !important;
	display: none !important;
}

/* Lift the hovered <th> above its siblings so the tooltip bubble isn't
   painted behind adjacent column header backgrounds. Selector mirrors the
   sticky-header rule (+ :hover) so it wins on specificity. */
body.prodreports .ui-dashboard .tc-table-section .tc-table-scroll-wrap .tc-table thead th:hover {
	z-index: 20;
}
/* Position bubble and caret below the header row, centred on the ⓘ icon. */
body.prodreports .ui-dashboard .tc-table-scroll-wrap thead th .tc-tooltip::after,
body.prodreports .ui-dashboard .tc-table-scroll-wrap thead th .th-tooltip::after {
	top: 100%;
	bottom: auto;
	margin-top: 14px;
	left: 50%;
	transform: translateX(-50%);
}
body.prodreports .ui-dashboard .tc-table-scroll-wrap thead th .tc-tooltip::before,
body.prodreports .ui-dashboard .tc-table-scroll-wrap thead th .th-tooltip::before {
	top: 100%;
	bottom: auto;
	margin-top: 4px;
	left: 50%;
	transform: translateX(-50%);
	border-color: transparent transparent #333 transparent;
}
/* Rightmost column: open the bubble leftward so it stays inside the table
   edge instead of clipping against the scroll container. */
body.prodreports .ui-dashboard .tc-table-scroll-wrap thead th:last-child .tc-tooltip::after,
body.prodreports .ui-dashboard .tc-table-scroll-wrap thead th:last-child .th-tooltip::after {
	left: auto;
	right: -4px;
	transform: none;
}

body.prodreports .ui-dashboard .tc-table tbody td {
	height: 37px;
	padding: 8px 8px 9px 8px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #364152 !important;
	border-bottom: 1px solid #e8ecef;
	vertical-align: top;
	box-sizing: border-box;
}

/* Cap Top Sellers / Top Coupons / Top Affiliates / Refunds tables at
   ~10 visible rows and scroll inside the wrap. Sticky `thead th` keeps
   the column headers in view while only the tbody scrolls, so the
   reader never loses track of which column they're looking at. The
   existing `background: #f6f8f9` on the prodreports thead at line
   6347 means the sticky header isn't transparent — no extra fill
   needed here.

   Horizontal scroll stays available for accounts with many columns,
   but the scrollbar chrome stays hidden until the user hovers the
   table — keeps the resting layout quiet while still allowing
   discovery via cursor / trackpad gesture. Same pattern is applied
   to the vertical scrollbar for consistency. */
body.prodreports .ui-dashboard .tc-table-section .tc-table-scroll-wrap {
	max-height: 560px;
	overflow-x: auto;
	overflow-y: auto;
	scrollbar-width: none;
	-ms-overflow-style: none;
}
body.prodreports .ui-dashboard .tc-table-section .tc-table-scroll-wrap::-webkit-scrollbar {
	width: 0;
	height: 0;
}
body.prodreports .ui-dashboard .tc-table-section .tc-table-scroll-wrap:hover {
	scrollbar-width: thin;
}
body.prodreports .ui-dashboard .tc-table-section .tc-table-scroll-wrap:hover::-webkit-scrollbar {
	width: 8px;
	height: 8px;
}
body.prodreports .ui-dashboard .tc-table-section .tc-table-scroll-wrap:hover::-webkit-scrollbar-thumb {
	background: #c5c5c5;
	border-radius: 4px;
}
body.prodreports .ui-dashboard .tc-table-section .tc-table-scroll-wrap:hover::-webkit-scrollbar-track {
	background: transparent;
}
body.prodreports .ui-dashboard .tc-table-section .tc-table-scroll-wrap .tc-table thead th {
	position: sticky;
	top: 0;
	z-index: 2;
}
/* Corner th already has top:0/z-index:2; left:0 + z-index:3 pins it on both axes. */
body.prodreports .ui-dashboard .tc-table-scroll-wrap .tc-table thead th:first-child {
	left: 0;
	z-index: 3;
}
body.prodreports .ui-dashboard .tc-table-scroll-wrap .tc-table tbody td:first-child {
	position: sticky;
	left: 0;
	z-index: 1;
	background: #fff;
}
body.prodreports .ui-dashboard .tc-table-scroll-wrap .tc-table tbody tr:hover td:first-child {
	background: #fafbfc;
}

/* Header tooltips use absolute `top: 100%` + opacity/visibility for fade.
   The pseudo-elements still inflate the table's scrollHeight by ~60px
   when hidden, which made wraps register Y overflow for tables with
   only 1–2 rows. Toggle via display so they contribute zero scrollHeight
   at rest. */
body.prodreports .ui-dashboard .tc-table-scroll-wrap thead th .tc-tooltip::after,
body.prodreports .ui-dashboard .tc-table-scroll-wrap thead th .tc-tooltip::before,
body.prodreports .ui-dashboard .tc-table-scroll-wrap thead th .th-tooltip::after,
body.prodreports .ui-dashboard .tc-table-scroll-wrap thead th .th-tooltip::before {
	display: none;
}
/* JS renders these header tooltips as a fixed element (initReportHeaderTooltips) so they escape the scroll container; CSS ::after stays hidden to avoid a clipped duplicate. */

/* TC-12655: centre the header tooltip bubble + caret on the ⓘ icon.
   Also lift the hovered <th> above its siblings so the tooltip isn't
   painted behind adjacent column header backgrounds. */
body.prodreports .ui-dashboard .tc-table-scroll-wrap thead th:hover {
	z-index: 20;
}
body.prodreports .ui-dashboard .tc-table-scroll-wrap thead th .tc-tooltip::after,
body.prodreports .ui-dashboard .tc-table-scroll-wrap thead th .th-tooltip::after {
	top: 100%;
	bottom: auto;
	/* 14px clears the th's bottom padding so the bubble starts below the header row */
	margin-top: 14px;
	left: 50%;
	transform: translateX(-50%);
}
body.prodreports .ui-dashboard .tc-table-scroll-wrap thead th .tc-tooltip::before,
body.prodreports .ui-dashboard .tc-table-scroll-wrap thead th .th-tooltip::before {
	top: 100%;
	bottom: auto;
	/* caret sits between span-bottom and the bubble; translate up by caret+gap so it
	   merges with the bubble's top edge and its tip clears the header bottom */
	margin-top: 4px;
	left: 50%;
	transform: translateX(-50%);
	border-color: transparent transparent #333 transparent;
}
/* Rightmost column: open the bubble leftward so it stays inside the table
   edge instead of clipping against the scroll container. */
body.prodreports .ui-dashboard .tc-table-scroll-wrap thead th:last-child .tc-tooltip::after,
body.prodreports .ui-dashboard .tc-table-scroll-wrap thead th:last-child .th-tooltip::after {
	left: auto;
	right: -4px;
	transform: none;
}

body.prodreports .ui-dashboard .tc-table tbody tr:last-child td {
	border-bottom: 0;
}

body.prodreports .ui-dashboard .tc-table tbody tr:hover td {
	background: #fafbfc;
}

body.prodreports .ui-dashboard .tc-table-no-data {
	text-align: center;
	padding: 48px 16px;
	font-family: 'Inter', sans-serif;
	color: #8493a8;
}

body.prodreports .ui-dashboard .tc-table-no-data > .icon-no-data,
body.prodreports .ui-dashboard .tc-table-no-data > .icon-coupon {
	display: block;
	margin: 0 auto 12px auto;
	width: 40px;
	height: 40px;
	opacity: 0.6;
}

body.prodreports .ui-dashboard .tc-table-no-data > p {
	margin: 0;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #8493a8;
}

/* Source tab Stats grid: 4 equal-width cards. The first 2 are nested inside
   a `.pure-u-lg-1-2` wrapper, cards 3 & 4 are direct `.pure-u-lg-1-4`
   siblings — flatten the math with calc() so all 4 leaf cards render equal. */
body.prodreports .ui-dashboard #source > .tc-table-section > .pure-g {
	display: flex;
	gap: 16px;
	flex-wrap: wrap;
	width: 100%;
	margin: 0;
}
/* 4-up only at ≥1400px. Below that (most laptop widths with the sidebar
   present) cards squeeze to ~218–245px and labels overflow / the "Coming
   Soon" badge crowds the icon — fall back to 2-up. */
@media (min-width: 1400px) {
	/* `:has()` scopes nowrap to the 4-card Stats grid only — sibling Top 5
	   Territories grid (.pure-u-lg-1-5 children) still needs to wrap. */
	body.prodreports .ui-dashboard #source > .tc-table-section > .pure-g:has(> .pure-u-lg-1-2) {
		flex-wrap: nowrap;
	}
	body.prodreports .ui-dashboard #source > .tc-table-section > .pure-g > .pure-u-lg-1-2 {
		flex: 0 0 calc(50% - 8px);
		min-width: 0;
		padding: 0;
		display: flex;
		gap: 16px;
	}
	body.prodreports .ui-dashboard #source > .tc-table-section > .pure-g > .pure-u-lg-1-2 > .pure-g {
		display: flex;
		gap: 16px;
		flex: 1 1 0;
		width: 100%;
		margin: 0;
	}
	body.prodreports .ui-dashboard #source > .tc-table-section > .pure-g > .pure-u-lg-1-2 > .pure-g > div {
		flex: 1 1 0;
		min-width: 0;
		padding: 0;
	}
	body.prodreports .ui-dashboard #source > .tc-table-section > .pure-g > .pure-u-lg-1-4 {
		flex: 0 0 calc(25% - 12px);
		min-width: 0;
		padding: 0;
	}
}
/* <1400px: 2-up layout. Row 1 = .pure-u-lg-1-2 wrapper (cards 1+2 inner 50/50);
   row 2 = the two .pure-u-lg-1-4 siblings at 50% each. */
@media (max-width: 1399px) {
	body.prodreports .ui-dashboard #source > .tc-table-section > .pure-g > .pure-u-lg-1-2 {
		flex: 0 0 100%;
		min-width: 0;
		padding: 0;
		display: flex;
		gap: 16px;
	}
	body.prodreports .ui-dashboard #source > .tc-table-section > .pure-g > .pure-u-lg-1-2 > .pure-g {
		display: flex;
		gap: 16px;
		width: 100%;
		margin: 0;
		flex: 1 1 0;
	}
	body.prodreports .ui-dashboard #source > .tc-table-section > .pure-g > .pure-u-lg-1-2 > .pure-g > div {
		flex: 1 1 0;
		min-width: 0;
		padding: 0;
	}
	body.prodreports .ui-dashboard #source > .tc-table-section > .pure-g > .pure-u-lg-1-4 {
		flex: 0 0 calc(50% - 8px);
		min-width: 0;
		padding: 0;
	}
}

/* Mobile only — turn the Source-tab Stats section's 4 cards into a
   single 2x2 grid. The first two cards (Checkout views, Views from
   affiliates) are nested inside a `.pure-u-lg-1-2` wrapper which at
   phone widths would produce a lopsided 3-cards-in-row-1 / 1-card-in-
   row-2 layout. `:has(> .pure-g > .pure-u-lg-1-2)` scopes this to ONLY
   the Stats section — Top 5 Territories (`.pure-u-lg-1-5` children)
   and Territories Breakdown (table) don't match. `display: contents`
   on the wrapper flattens its 2 inner cards into the outer grid so
   all 4 become direct grid items. */
@media (max-width: 767px) {
	body.prodreports .ui-dashboard #source > .tc-table-section:has(> .pure-g > .pure-u-lg-1-2) > .pure-g {
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: 12px;
	}
	body.prodreports .ui-dashboard #source > .tc-table-section:has(> .pure-g > .pure-u-lg-1-2) > .pure-g > .pure-u-lg-1-2,
	body.prodreports .ui-dashboard #source > .tc-table-section:has(> .pure-g > .pure-u-lg-1-2) > .pure-g > .pure-u-lg-1-2 > .pure-g {
		display: contents;
	}
	body.prodreports .ui-dashboard #source > .tc-table-section:has(> .pure-g > .pure-u-lg-1-2) > .pure-g > div,
	body.prodreports .ui-dashboard #source > .tc-table-section:has(> .pure-g > .pure-u-lg-1-2) > .pure-g > .pure-u-lg-1-2 > .pure-g > div {
		width: auto;
		min-width: 0;
		padding: 0;
	}
}

body.prodreports .ui-dashboard #source > .tc-table-section > .pure-g > .pure-u-lg-1-2 > .pure-g > div:nth-child(1) .tc-box::before,
body.prodreports .ui-dashboard #source > .tc-table-section > .pure-g > .pure-u-lg-1-2 > .pure-g > div:nth-child(2) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18.3333 12.5' fill='%233A4351' fill-opacity='0.89'><path d='M9.16667 1.66667C12.325 1.66667 15.1417 3.44167 16.5167 6.25C15.1417 9.05833 12.3333 10.8333 9.16667 10.8333C6 10.8333 3.19167 9.05833 1.81667 6.25C3.19167 3.44167 6.00833 1.66667 9.16667 1.66667ZM9.16667 0C5 0 1.44167 2.59167 0 6.25C1.44167 9.90833 5 12.5 9.16667 12.5C13.3333 12.5 16.8917 9.90833 18.3333 6.25C16.8917 2.59167 13.3333 0 9.16667 0ZM9.16667 4.16667C10.3167 4.16667 11.25 5.1 11.25 6.25C11.25 7.4 10.3167 8.33333 9.16667 8.33333C8.01667 8.33333 7.08333 7.4 7.08333 6.25C7.08333 5.1 8.01667 4.16667 9.16667 4.16667ZM9.16667 2.5C7.1 2.5 5.41667 4.18333 5.41667 6.25C5.41667 8.31667 7.1 10 9.16667 10C11.2333 10 12.9167 8.31667 12.9167 6.25C12.9167 4.18333 11.2333 2.5 9.16667 2.5Z'/></svg>") !important;
	background-size: 18.3333px 12.5px !important;
}
body.prodreports .ui-dashboard #source > .tc-table-section > .pure-g > .pure-u-lg-1-4:nth-child(2) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16.6729 16.6667' fill='%233A4351' fill-opacity='0.89'><path d='M12.125 9.16667C12.75 9.16667 13.3 8.825 13.5833 8.30833L16.5667 2.9C16.875 2.35 16.475 1.66667 15.8417 1.66667H3.50833L2.725 0H0V1.66667H1.66667L4.66667 7.99167L3.54167 10.025C2.93333 11.1417 3.73333 12.5 5 12.5H15V10.8333H5L5.91667 9.16667H12.125ZM4.3 3.33333H14.425L12.125 7.5H6.275L4.3 3.33333ZM5 13.3333C4.08333 13.3333 3.34167 14.0833 3.34167 15C3.34167 15.9167 4.08333 16.6667 5 16.6667C5.91667 16.6667 6.66667 15.9167 6.66667 15C6.66667 14.0833 5.91667 13.3333 5 13.3333ZM13.3333 13.3333C12.4167 13.3333 11.675 14.0833 11.675 15C11.675 15.9167 12.4167 16.6667 13.3333 16.6667C14.25 16.6667 15 15.9167 15 15C15 14.0833 14.25 13.3333 13.3333 13.3333Z'/></svg>") !important;
	background-size: 16.6729px 16.6667px !important;
}
body.prodreports .ui-dashboard #source > .tc-table-section > .pure-g > .pure-u-lg-1-4:nth-child(3) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18.3367 16.6583' fill='%233A4351' fill-opacity='0.89'><path d='M9.35333 14.875C9.20333 15.025 8.93666 15.05 8.76166 14.875C8.61166 14.725 8.58666 14.4583 8.76166 14.2833L11.5867 11.4583L10.4117 10.2833L7.58666 13.1083C7.42833 13.275 7.16166 13.2667 6.995 13.1083C6.82 12.9333 6.845 12.6667 6.995 12.5167L9.82 9.69167L8.645 8.51667L5.82 11.3417C5.67 11.4917 5.40333 11.5167 5.22833 11.3417C5.07 11.1833 5.07 10.9167 5.22833 10.75L8.05333 7.925L6.87 6.75L4.045 9.575C3.895 9.725 3.62833 9.75 3.45333 9.575C3.295 9.40833 3.295 9.15 3.45333 8.98333L7.10333 5.33333L8.66166 6.88333C9.45333 7.675 10.82 7.66667 11.6117 6.88333C12.4283 6.06667 12.4283 4.75 11.6117 3.93333L10.0617 2.38333L10.295 2.15C10.945 1.5 12.0033 1.5 12.6533 2.15L16.1867 5.68333C16.8367 6.33333 16.8367 7.39167 16.1867 8.04167L9.35333 14.875ZM17.3617 9.225C18.6617 7.925 18.6617 5.81667 17.3617 4.50833L13.8283 0.975C12.5283 -0.325 10.42 -0.325 9.11166 0.975L8.87833 1.20833L8.645 0.975C7.345 -0.325 5.23667 -0.325 3.92833 0.975L0.978332 3.925C-0.205001 5.10833 -0.313335 6.95 0.644998 8.25L1.85333 7.04167C1.52833 6.41667 1.63667 5.625 2.16167 5.1L5.11167 2.15C5.76167 1.5 6.82 1.5 7.47 2.15L10.4367 5.11667C10.5867 5.26667 10.6117 5.53333 10.4367 5.70833C10.2617 5.88333 9.995 5.85833 9.845 5.70833L7.10333 2.975L2.27 7.8C1.45333 8.60833 1.45333 9.93333 2.27 10.75C2.595 11.075 3.01167 11.275 3.45333 11.3333C3.51167 11.7667 3.70333 12.1833 4.03667 12.5167C4.37 12.85 4.78667 13.0417 5.22 13.1C5.27833 13.5333 5.47 13.95 5.80333 14.2833C6.13667 14.6167 6.55333 14.8083 6.98666 14.8667C7.045 15.3167 7.245 15.725 7.57 16.05C7.96166 16.4417 8.48666 16.6583 9.045 16.6583C9.60333 16.6583 10.1283 16.4417 10.52 16.05L17.3617 9.225Z'/></svg>") !important;
	background-size: 18.3367px 16.6583px !important;
}

/* Hide the legacy FontAwesome (solid) glyph and render the Figma `info`
   SVG (outlined) via the span's background instead. */
body.prodreports .ui-dashboard #source > .tc-table-section > .pure-g .tc-box p .icon.tc-tooltip {
	display: inline-block !important;
	flex: 0 0 16px;
	width: 16px !important;
	height: 16px !important;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 13.3333 13.3333' fill='%233A4351' fill-opacity='0.89'><path d='M6 3.33333H7.33333V4.66667H6V3.33333ZM6 6H7.33333V10H6V6ZM6.66667 0C2.98667 0 0 2.98667 0 6.66667C0 10.3467 2.98667 13.3333 6.66667 13.3333C10.3467 13.3333 13.3333 10.3467 13.3333 6.66667C13.3333 2.98667 10.3467 0 6.66667 0ZM6.66667 12C3.72667 12 1.33333 9.60667 1.33333 6.66667C1.33333 3.72667 3.72667 1.33333 6.66667 1.33333C9.60667 1.33333 12 3.72667 12 6.66667C12 9.60667 9.60667 12 6.66667 12Z'/></svg>");
	background-size: 13.3333px 13.3333px;
	background-position: center;
	background-repeat: no-repeat;
	font-size: 0;
	vertical-align: middle;
}
body.prodreports .ui-dashboard #source > .tc-table-section > .pure-g .tc-box p .icon.tc-tooltip i {
	display: none !important;
}

body.prodreports .ui-dashboard #source > .tc-table-section > .pure-g .tc-box {
	border-color: #d1d7de;
}

/* Map fills: page-level CSS targeting `.tc-graph-territories ...` beats the
   element-only rules in worldLow.svg without `!important`. */
body.prodreports .ui-dashboard .tc-graph-territories svg .land {
	fill: #d1d7de;
}
body.prodreports .ui-dashboard .tc-graph-territories svg .land.fill-green-1 {
	fill: #c0edea;  /* primitive-colors/primary/200 */
}
body.prodreports .ui-dashboard .tc-graph-territories svg .land.fill-green-2 {
	fill: #00c8c9;  /* primitive-colors/primary/400 */
}
body.prodreports .ui-dashboard .tc-graph-territories svg .land.fill-green-3 {
	fill: #00a6aa;  /* primitive-colors/primary/500 */
}
body.prodreports .ui-dashboard .tc-graph-territories svg .land.fill-green-4 {
	fill: #006b70;  /* primitive-colors/primary/700 */
}
body.prodreports .ui-dashboard .tc-graph-territories svg .land.fill-green-5 {
	fill: #004b4e;  /* primitive-colors/primary/900 */
}

body.prodreports .ui-dashboard #territories-range-label {
	display: flex;
	flex-wrap: wrap;
	gap: 24px;
	align-items: center;
	justify-content: center;
	margin: 24px 0 0 0;
}
body.prodreports .ui-dashboard #territories-range-label > div {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
}
/* Replace the legacy `●` text bullet with an 8×8 round bg-color div. */
body.prodreports .ui-dashboard #territories-range-label .mark-selector {
	display: inline-block;
	width: 8px;
	height: 8px;
	border-radius: 100px;
	margin: 0;
	flex: 0 0 8px;
}
body.prodreports .ui-dashboard #territories-range-label .mark-selector::before {
	content: none;
}
body.prodreports .ui-dashboard #territories-range-label .mark-selector.gray {
	background: #d1d7de;
}
body.prodreports .ui-dashboard #territories-range-label .mark-selector.green-1 {
	background: #c0edea;
}
body.prodreports .ui-dashboard #territories-range-label .mark-selector.green-2 {
	background: #00c8c9;
}
body.prodreports .ui-dashboard #territories-range-label .mark-selector.green-3 {
	background: #00a6aa;
}
body.prodreports .ui-dashboard #territories-range-label .mark-selector.green-4 {
	background: #006b70;
}
body.prodreports .ui-dashboard #territories-range-label .mark-selector.green-5 {
	background: #004b4e;
}
body.prodreports .ui-dashboard #territories-range-label > div > p {
	font-family: 'Inter', sans-serif;
	font-size: 12px;
	font-weight: 400;
	line-height: 16px;
	color: #364152;
	margin: 0;
	white-space: nowrap;
}

/* Top 5 Territories cards hold only a label + value. Strip the inherited
   icon, dot and divider that the shared `.pure-g .tc-box` rules would add. */
body.prodreports .ui-dashboard #source > .tc-table-section .tc-box[id^="stats-country-"]::before {
	display: none;
}
body.prodreports .ui-dashboard #source > .tc-table-section .tc-box[id^="stats-country-"] .mark-selector {
	display: none;
}
body.prodreports .ui-dashboard #source > .tc-table-section .tc-box[id^="stats-country-"] .hr-small {
	display: none;
}
/* `height: 100%` so siblings stay equal-height when one country label wraps
   to two lines (e.g. "United Kingdom"). */
body.prodreports .ui-dashboard #source > .tc-table-section .tc-box[id^="stats-country-"] {
	gap: 4px;
	height: 100%;
	box-sizing: border-box;
}
body.prodreports .ui-dashboard #source > .tc-table-section .tc-box[id^="stats-country-"] > .tc-flex {
	display: block;
	margin: 0;
}
body.prodreports .ui-dashboard #source > .tc-table-section .tc-box[id^="stats-country-"] p {
	white-space: normal;
}

body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) {
	background: transparent;
	border: 0;
	box-shadow: none;
	padding: 0;
	margin: 40px 0 0 0;
}

body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) > h2 {
	display: block;
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
	margin: 0 0 16px 0;
	letter-spacing: 0;
}

body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) > .pure-g {
	display: flex;
	gap: 16px;
	margin: 0;
	flex-wrap: wrap;
}

body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) > .pure-g > div {
	padding: 0;
	flex: 1 1 200px;
	min-width: 0;
	width: auto;
}
@media (min-width: 768px) {
	body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) > .pure-g > div {
		flex: 1 1 0;
	}
}

/* 5-up on desktop (2-up on mobile); calc subtracts each card's share of 16px gaps. */
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) > .pure-g > .pure-u-lg-1-5 {
	flex: 1 1 calc(50% - 8px);
	max-width: none;
}
@media (min-width: 768px) {
	body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) > .pure-g > .pure-u-lg-1-5 {
		flex: 1 1 calc(20% - 13px);
		max-width: calc(20% - 13px);
	}
}
/* Refund rate shown small/grey beneath the refund amount. */
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) .tc-box .tc-stat-subvalue {
	font-family: Inter, sans-serif;
	font-size: 13px;
	font-weight: 400;
	line-height: 18px;
	color: #8493a8;
	margin-top: 2px;
}

body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) .tc-box {
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 12px;
	padding: 24px;
	margin: 0;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: flex-start;
	gap: 0;
	height: 100%;
	box-sizing: border-box;
}

body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) .tc-box::before {
	content: '';
	display: block;
	width: 36px;
	height: 36px;
	background: #e8ecef;
	border-radius: 8px;
	background-repeat: no-repeat;
	background-position: center;
	flex: 0 0 auto;
	margin: 0 0 32px 0;
}

body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) > .pure-g > div:nth-child(1) .tc-box::before,
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) > .pure-g > div:nth-child(2) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18.3333 13.3333' fill='%233A4351' fill-opacity='0.89'><path d='M15 8.33333V1.66667C15 0.75 14.25 0 13.3333 0H1.66667C0.75 0 0 0.75 0 1.66667V8.33333C0 9.25 0.75 10 1.66667 10H13.3333C14.25 10 15 9.25 15 8.33333ZM13.3333 8.33333H1.66667V1.66667H13.3333V8.33333ZM7.5 2.5C6.11667 2.5 5 3.61667 5 5C5 6.38333 6.11667 7.5 7.5 7.5C8.88333 7.5 10 6.38333 10 5C10 3.61667 8.88333 2.5 7.5 2.5ZM18.3333 2.5V11.6667C18.3333 12.5833 17.5833 13.3333 16.6667 13.3333H2.5V11.6667H16.6667V2.5H18.3333Z'/></svg>");
	background-size: 18.3333px 13.3333px;
}
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) > .pure-g > div:nth-child(3) .tc-box::before,
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) > .pure-g > div:nth-child(4) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 16.6667' fill='%233A4351' fill-opacity='0.89'><path d='M13.75 1.25L12.5 0L11.25 1.25L10 0L8.75 1.25L7.5 0L6.25 1.25L5 0L3.75 1.25L2.5 0L1.25 1.25L0 0V16.6667L1.25 15.4167L2.5 16.6667L3.75 15.4167L5 16.6667L6.25 15.4167L7.5 16.6667L8.75 15.4167L10 16.6667L11.25 15.4167L12.5 16.6667L13.75 15.4167L15 16.6667V0L13.75 1.25ZM13.3333 14.2417H1.66667V2.425H13.3333V14.2417ZM2.5 10.8333H12.5V12.5H2.5V10.8333ZM2.5 7.5H12.5V9.16667H2.5V7.5ZM2.5 4.16667H12.5V5.83333H2.5V4.16667Z'/></svg>");
	background-size: 15px 16.6667px;
}
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) > .pure-g > div:nth-child(5) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%233A4351' fill-opacity='0.89' fill-rule='evenodd'><path d='M17.63 5.84C17.27 5.33 16.67 5 16 5L5 5.01C3.9 5.01 3 5.9 3 7v10c0 1.1.9 1.99 2 1.99L16 19c.67 0 1.27-.33 1.63-.84L22 12l-4.37-6.16zM16 17L5 17.01V7l11-.01L19.55 12 16 17z'/></svg>");
	background-size: 18px 14px;
}
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) > .pure-g > div:nth-child(6) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%233A4351' fill-opacity='0.89'><path d='M16 6l2.29 2.29-4.88 4.88-4-4L2 16.59 3.41 18l6-6 4 4 6.3-6.29L22 12V6z'/></svg>");
	background-size: 20px 14px;
}
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) > .pure-g > div:nth-child(7) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16.6667 11.6667' fill='%233A4351' fill-opacity='0.89'><path d='M5.83333 7.29167C3.88333 7.29167 0 8.26667 0 10.2083V11.6667H11.6667V10.2083C11.6667 8.26667 7.78333 7.29167 5.83333 7.29167ZM1.95 10C2.65 9.51667 4.34167 8.95833 5.83333 8.95833C7.325 8.95833 9.01667 9.51667 9.71667 10H1.95ZM5.83333 5.83333C7.44167 5.83333 8.75 4.525 8.75 2.91667C8.75 1.30833 7.44167 0 5.83333 0C4.225 0 2.91667 1.30833 2.91667 2.91667C2.91667 4.525 4.225 5.83333 5.83333 5.83333ZM5.83333 1.66667C6.525 1.66667 7.08333 2.225 7.08333 2.91667C7.08333 3.60833 6.525 4.16667 5.83333 4.16667C5.14167 4.16667 4.58333 3.60833 4.58333 2.91667C4.58333 2.225 5.14167 1.66667 5.83333 1.66667ZM11.7 7.34167C12.6667 8.04167 13.3333 8.975 13.3333 10.2083V11.6667H16.6667V10.2083C16.6667 8.525 13.75 7.56667 11.7 7.34167ZM10.8333 5.83333C12.4417 5.83333 13.75 4.525 13.75 2.91667C13.75 1.30833 12.4417 0 10.8333 0C10.3833 0 9.96667 0.108333 9.58333 0.291667C10.1083 1.03333 10.4167 1.94167 10.4167 2.91667C10.4167 3.89167 10.1083 4.8 9.58333 5.54167C9.96667 5.725 10.3833 5.83333 10.8333 5.83333Z'/></svg>");
	background-size: 16.6667px 11.6667px;
}
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) > .pure-g > div:nth-child(8) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18.3333 13.3333' fill='%233A4351' fill-opacity='0.89'><path d='M15.8333 4.16667V1.66667H14.1667V4.16667H11.6667V5.83333H14.1667V8.33333H15.8333V5.83333H18.3333V4.16667H15.8333ZM6.66667 6.66667C8.50833 6.66667 10 5.175 10 3.33333C10 1.49167 8.50833 0 6.66667 0C4.825 0 3.33333 1.49167 3.33333 3.33333C3.33333 5.175 4.825 6.66667 6.66667 6.66667ZM6.66667 1.66667C7.58333 1.66667 8.33333 2.41667 8.33333 3.33333C8.33333 4.25 7.58333 5 6.66667 5C5.75 5 5 4.25 5 3.33333C5 2.41667 5.75 1.66667 6.66667 1.66667ZM11.9917 8.8C10.5917 8.08333 8.775 7.5 6.66667 7.5C4.55833 7.5 2.74167 8.08333 1.34167 8.8C0.508333 9.225 0 10.0833 0 11.0167V13.3333H13.3333V11.0167C13.3333 10.0833 12.825 9.225 11.9917 8.8ZM11.6667 11.6667H1.66667V11.0167C1.66667 10.7 1.83333 10.4167 2.1 10.2833C3.09167 9.775 4.69167 9.16667 6.66667 9.16667C8.64167 9.16667 10.2417 9.775 11.2333 10.2833C11.5 10.4167 11.6667 10.7 11.6667 11.0167V11.6667Z'/></svg>");
	background-size: 18.3333px 13.3333px;
}
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) > .pure-g > div:nth-child(9) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 16.6667' fill='%233A4351' fill-opacity='0.89'><path d='M13.3333 1.66667H12.5V0H10.8333V1.66667H4.16667V0H2.5V1.66667H1.66667C0.741667 1.66667 0.00833333 2.41667 0.00833333 3.33333L0 15C0 15.9167 0.741667 16.6667 1.66667 16.6667H13.3333C14.25 16.6667 15 15.9167 15 15V3.33333C15 2.41667 14.25 1.66667 13.3333 1.66667ZM13.3333 15H1.66667V6.66667H13.3333V15ZM13.3333 5H1.66667V3.33333H13.3333V5ZM7.5 9.16667H11.6667V13.3333H7.5V9.16667Z'/></svg>");
	background-size: 15px 16.6667px;
}
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) > .pure-g > div:nth-child(10) .tc-box::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%233A4351' fill-opacity='0.89'><path d='M6.99 11L3 15l3.99 4v-3H14v-2H6.99v-3zM21 9l-3.99-4v3H10v2h7.01v3L21 9z'/></svg>");
	background-size: 20px 16px;
}

body.prodreports .ui-dashboard .tc-tabs-list a p .icon.tc-tooltip,
body.prodreports .ui-dashboard .tc-tabs-list a p .th-tooltip,
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) .tc-box p .icon.tc-tooltip,
body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) .tc-box p .th-tooltip {
	display: none !important;
}

body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) .tc-box p {
	font-family: 'Inter', sans-serif;
	font-size: 12px;
	font-weight: 600;
	line-height: 16px;
	color: #8493a8;
	text-transform: uppercase;
	letter-spacing: 0.48px;
	margin: 0 0 4px 0;
	width: 100%;
	min-width: 0;
	display: flex;
	align-items: center;
	gap: 6px;
}

body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) .tc-box h2 {
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
	margin: 0;
	width: 100%;
	letter-spacing: 0;
}

body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) .tc-box .hr-small {
	display: none;
}

body.prodreports .ui-dashboard .tc-section-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	margin: 0 0 16px 0;
	flex-wrap: wrap;
}
body.prodreports .ui-dashboard .tc-section-head > h2 {
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
	letter-spacing: 0;
	margin: 0;
	white-space: nowrap;
}
body.prodreports .ui-dashboard .tc-section-controls {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	position: relative;
}

body.prodreports .ui-dashboard .tc-cols-btn {
	display: inline-flex;
	align-items: center;
	gap: 0;
	height: 36px;
	padding: 8px;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #364152;
	cursor: pointer;
	transition: background 120ms, border-color 120ms;
}
body.prodreports .ui-dashboard .tc-cols-btn:hover {
	background: #f6f8f9;
}
body.prodreports .ui-dashboard .tc-cols-btn:focus-visible {
	outline: 2px solid #006b70;
	outline-offset: 1px;
}
body.prodreports .ui-dashboard .tc-cols-btn-icon {
	width: 20px;
	height: 20px;
	flex: 0 0 20px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: #364152;
}
body.prodreports .ui-dashboard .tc-cols-btn-icon > svg {
	width: 100%;
	height: auto;
	display: block;
}
body.prodreports .ui-dashboard .tc-cols-btn-text {
	display: inline-flex;
	padding: 0 6px;
	font-family: 'Inter', sans-serif;
	font-weight: 500;
	font-size: 14px;
	line-height: 20px;
	color: #364152;
}

/* On mobile the section heading sits on its own row and the controls
   (Columns toggle + Order-by dropdown) take a full-width row below it,
   so there's room for the "Columns" label alongside the icon — no need
   to hide it. The dropdown stretches to fill the remaining width via
   the `tc-section-order { flex: 1 1 auto }` rule below. */


body.prodreports .ui-dashboard .tc-cols-popover {
	position: absolute;
	top: calc(100% + 6px);
	left: 0;
	min-width: 200px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 8px;
	box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
	padding: 6px;
	z-index: 50;
	display: none;
}
body.prodreports .ui-dashboard .tc-cols-popover.open {
	display: block;
}
body.prodreports .ui-dashboard .tc-cols-popover-item {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 8px 10px;
	border-radius: 6px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #364152;
	cursor: pointer;
}
body.prodreports .ui-dashboard .tc-cols-popover-item:hover {
	background: #f6f8f9;
}
body.prodreports .ui-dashboard .tc-cols-popover-item input[type="checkbox"] {
	width: 16px;
	height: 16px;
	margin: 0;
	accent-color: #006b70;
	cursor: pointer;
}
body.prodreports .ui-dashboard .tc-cols-popover-item input[type="checkbox"]:disabled {
	cursor: not-allowed;
	opacity: 0.5;
}
body.prodreports .ui-dashboard .tc-cols-popover-item:has(input:disabled) {
	color: #8493a8;
	cursor: not-allowed;
}

body.prodreports .ui-dashboard .tc-section-order {
	width: 180px;
	height: 36px;
	position: relative;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	overflow: hidden;
}
body.prodreports .ui-dashboard .tc-section-order::after {
	content: '' !important;
	display: block !important;
	position: absolute;
	right: 13px;
	top: 50%;
	width: 16px;
	height: 16px;
	transform: translateY(-50%);
	background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 7.41' fill='%232b384a'><path d='M10.59 0L6 4.58L1.41 0L0 1.41L6 7.41L12 1.41L10.59 0Z'/></svg>") no-repeat center / 8px auto;
	pointer-events: none;
}
body.prodreports .ui-dashboard .tc-section-order > select {
	appearance: none;
	-webkit-appearance: none;
	-moz-appearance: none;
	width: 100% !important;
	height: 100% !important;
	background: transparent;
	background-image: none;
	border: 0 !important;
	border-radius: 0 !important;
	padding: 7px 32px 7px 13px !important;
	margin: 0;
	box-shadow: none;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 400 !important;
	line-height: 20px;
	color: #2b384a;
	cursor: pointer;
}
body.prodreports .ui-dashboard .tc-section-order > select:focus {
	outline: 0;
}
body.prodreports .ui-dashboard .tc-section-order:focus-within {
	outline: 2px solid #006b70;
	outline-offset: 1px;
}

/* Mobile: legacy `.ui-dashboard .tc-dropdown:not(.hidden) select` forces
   `min-height: 44px` (touch-target accessibility) — match the wrapper to
   the select so the chevron and text stay vertically aligned and nothing
   gets clipped by the wrapper's `overflow: hidden`. The Columns toggle
   button (`.tc-cols-btn`) sits beside the section-order dropdown, so bump
   it to the same 44px touch height to keep the row visually balanced. */
@media (max-width: 767px) {
	/* Wrap stays 44px (touch target). iOS Safari has a long-standing
	   sub-pixel quirk that drops the bottom edge of 1px borders on
	   flex-positioned elements at certain Y offsets. We've tried
	   `border`, `outline`, `box-shadow inset`, ::before pseudo, and a
	   `linear-gradient` border-image — none confirmed to work on iOS.
	   Switching to **outset** `box-shadow: 0 0 0 1px` — paints OUTSIDE
	   the box geometry, bypassing the sub-pixel layout path that drops
	   the border. Visual is identical to a 1px solid border, matching
	   the date-range filter dropdown style. Same approach used for the
	   Cohort `.tc-dropdown` for consistency. */
	body.prodreports .ui-dashboard .tc-section-order,
	body.prodreports .ui-dashboard .tc-cols-btn {
		position: relative;
		background: #ffffff;
		border: 0 !important;
		box-shadow: 0 0 0 1px #d1d7de;
		border-radius: 8px;
		/* Override the legacy `overflow: hidden` from the desktop
		   `.tc-section-order` rule. iOS Safari has a quirk where
		   `overflow: hidden` + `border-radius` clips outset box-shadow
		   on certain Y offsets — exactly what kept the Top Coupons
		   dropdown's bottom edge missing. The clipped child (native
		   select chrome) is no longer relevant here because we set
		   `appearance: none` on the select, so visible overflow is safe. */
		overflow: visible;
	}
	/* Remove the legacy ::before-border fallback (kept from earlier
	   iOS-bug attempts; box-shadow approach replaces it). */
	body.prodreports .ui-dashboard .tc-section-order::before,
	body.prodreports .ui-dashboard .tc-cols-btn::before {
		content: none;
	}
	body.prodreports .ui-dashboard .tc-section-order {
		height: 44px;
		display: flex;
		align-items: center;
	}
	body.prodreports .ui-dashboard .tc-section-order > select {
		height: 36px !important;
		min-height: 36px !important;
	}
	body.prodreports .ui-dashboard .tc-cols-btn {
		height: 44px;
		padding: 8px 12px;
	}

	/* Section head layout — heading on its own row, controls (Columns
	   toggle + Revenue dropdown) take a full-width row below it. The
	   dropdown stretches to fill the remaining width so the row reads as
	   a section toolbar rather than two floating controls. Works
	   identically for long headings like "Top Affiliates" / "Top Coupons"
	   since the heading never has to compete with controls for room. */
	body.prodreports .ui-dashboard .tc-section-head {
		flex-direction: column;
		align-items: stretch;
		gap: 12px;
	}
	body.prodreports .ui-dashboard .tc-section-head .tc-section-controls {
		width: 100%;
		margin-left: 0;
	}
	body.prodreports .ui-dashboard .tc-section-head .tc-section-controls .tc-section-order {
		flex: 1 1 auto;
		width: auto;
		min-width: 0;
	}
}

body.prodreports .ui-dashboard #top-seller-table th[data-col="id"],
body.prodreports .ui-dashboard #top-seller-table td[data-col="id"] {
	width: 67px;
	min-width: 67px;
}
body.prodreports .ui-dashboard #top-affiliates-table th[data-col="id"],
body.prodreports .ui-dashboard #top-affiliates-table td[data-col="id"] {
	width: 150px;
	max-width: 150px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
body.prodreports .ui-dashboard #top-affiliates-table th[data-col="name"],
body.prodreports .ui-dashboard #top-affiliates-table td[data-col="name"] {
	width: 134px;
	max-width: 134px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
body.prodreports .ui-dashboard #top-affiliates-table th[data-col="email"],
body.prodreports .ui-dashboard #top-affiliates-table td[data-col="email"] {
	width: 246px;
	max-width: 246px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
body.prodreports .ui-dashboard #top-affiliates-table th[data-col="sales"],
body.prodreports .ui-dashboard #top-affiliates-table td[data-col="sales"] {
	width: 184px;
	min-width: 184px;
}
body.prodreports .ui-dashboard #top-affiliates-table th[data-col="revenue"],
body.prodreports .ui-dashboard #top-affiliates-table td[data-col="revenue"] {
	width: 126px;
	min-width: 126px;
}
body.prodreports .ui-dashboard #top-affiliates-table th[data-col="conversion"],
body.prodreports .ui-dashboard #top-affiliates-table td[data-col="conversion"] {
	width: 170px;
	min-width: 170px;
}
body.prodreports .ui-dashboard #top-affiliates-table th[data-col="refund_rate"],
body.prodreports .ui-dashboard #top-affiliates-table td[data-col="refund_rate"] {
	width: 142px;
	min-width: 142px;
}
body.prodreports .ui-dashboard #top-coupon-table th[data-col="name"],
body.prodreports .ui-dashboard #top-coupon-table td[data-col="name"] {
	width: 284px;
	min-width: 284px;
}
body.prodreports .ui-dashboard #top-coupon-table th[data-col="sales"],
body.prodreports .ui-dashboard #top-coupon-table td[data-col="sales"],
body.prodreports .ui-dashboard #top-coupon-table th[data-col="revenue"],
body.prodreports .ui-dashboard #top-coupon-table td[data-col="revenue"] {
	min-width: 200px;
}
body.prodreports .ui-dashboard #top-coupon-table th[data-col="refund"],
body.prodreports .ui-dashboard #top-coupon-table td[data-col="refund"] {
	width: 217px;
	min-width: 217px;
}

/* Phone-only (≤639px) productsales mobile layout. Splits the filter row into
   two stacked rows, switches the per-tab hero stats to a 2×2 grid, and keeps
   the Stats section 2-up so wide cards don't collapse to 1-per-row. */
@media (max-width: 639px) {
	/* Force the form (a flex child of `.ui-dashboard-head.tc-wrap` that has
	   `flex: 0 0 auto` at desktop) to take the full row width at phone widths
	   so the inner grid actually fills the viewport. Without this, Row 1
	   (Date + USD) shrinks to content width while Row 2 (Filters) stretches,
	   leaving visible empty space to the right of USD. */
	body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form {
		flex: 1 0 100% !important;
		width: 100% !important;
	}

	/* Filter row stack: Date+Currency on row 1, Filters button full-width row 2.
	   Desktop sets fixed widths (date 180px, currency 72px) which combined with
	   the Filters button overflow the 358px inner viewport, clipping "Filters"
	   to "Filte...". Phone-only — at iPad widths the inline layout fits. */
	body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group {
		display: grid !important;
		grid-template-columns: minmax(0, 1fr) auto;
		grid-template-areas:
			"date currency"
			"filters filters";
		gap: 8px 12px !important;
		width: 100% !important;
		margin: 0 !important;
	}
	body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group #data-range-wrap {
		grid-area: date;
		width: 100% !important;
		flex: unset !important;
		min-width: 0 !important;
	}
	body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group #data-range-wrap > .tc-dropdown {
		width: 100% !important;
	}
	body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group > .tc-flex.tc-items-center {
		display: contents;
	}
	body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group #stats-currency-wrap {
		grid-area: currency;
	}
		body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group #stats-currency-wrap.tc-currency-selector-group,
		:is(body.product-sales, body.subscriptions, body.funnels, body.coupons) .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group #stats-currency-wrap.tc-currency-selector-group {
		width: auto;
		flex: 0 0 auto;
		flex-wrap: wrap;
		justify-content: flex-end;
	}
	/* All-currencies mode: "[All currencies] in [EUR]" is too wide to share a
	   row with the date pill (the auto grid column would crush the date to a
	   sliver) — give the sentence its own full row. :has() follows the JS
	   hidden-toggle when the user switches back to a single currency. */
		body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group:has(.tc-display-currency-wrap:not(.hidden)),
		:is(body.product-sales, body.subscriptions, body.funnels, body.coupons) .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group:has(.tc-display-currency-wrap:not(.hidden)) {
		grid-template-areas:
			"date date"
			"currency currency"
			"filters filters";
	}
		body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group #stats-currency-wrap.tc-currency-selector-group .tc-display-currency-wrap:not(.hidden),
		:is(body.product-sales, body.subscriptions, body.funnels, body.coupons) .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group #stats-currency-wrap.tc-currency-selector-group .tc-display-currency-wrap:not(.hidden) {
		flex: 1 1 auto;
		min-width: 0;
	}
	/* Beat the generic phone rule that stretches every .tc-dropdown to
	   width:100% (which would stack the two pills) — inside the group the
	   pills share one row: [All currencies] in [EUR]. */
		body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group #stats-currency-wrap.tc-currency-selector-group .tc-dropdown:not(.hidden),
		:is(body.product-sales, body.subscriptions, body.funnels, body.coupons) .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group #stats-currency-wrap.tc-currency-selector-group .tc-dropdown:not(.hidden) {
		width: auto !important;
		max-width: none !important;
		flex: 1 1 auto !important;
		min-width: 0;
	}
	body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group .tc-stats-divider {
		display: none !important;
	}
	body.prodreports .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group button {
		grid-area: filters;
		width: 100%;
		height: 44px;
	}

	/* Per-tab hero stats row → horizontal scroll carousel (mirrors the
	   Dashboard Trends pattern). 4-up `pure-u-1-4` (25%) squeezes to ~85px
	   at 390px viewport, clipping labels and values. Carousel keeps each
	   card readable. Phone-only — at iPad widths the 4-up grid renders fine.
	   16px inline padding gives breathing room from the outer `.tc-tabs`
	   border. `scroll-padding-inline-*` matches it so scroll-snap insets
	   the first/last card by the same 16px (otherwise mandatory snap pins
	   the first card flush against the carousel's content edge). */
	body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-tabs > .tc-tabs-list {
		flex-wrap: nowrap !important;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
		padding: 12px 12px 0 12px !important;
		scroll-padding-inline-start: 12px;
		scroll-padding-inline-end: 12px;
		gap: 12px;
	}
	body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-tabs > .tc-tabs-list::-webkit-scrollbar {
		display: none;
	}
	/* Target every direct child of the tabs list rather than the specific
	   `.pure-u-1-4` grid class — if a future Pro+ stat ships as a 5th tab
	   with `.pure-u-1-5` (matching the Dashboard Trends asymmetry), this
	   still applies the 72%-wide carousel slot. */
	body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-tabs > .tc-tabs-list > * {
		flex: 0 0 72% !important;
		width: 72% !important;
		min-width: 0 !important;
		scroll-snap-align: start;
	}
	/* Same compositing isolation we apply to the Dashboard Trends carousel —
	   keeps iOS Safari's `-webkit-overflow-scrolling: touch` layer from
	   painting over the wrapper's top border. */
	body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-tabs {
		isolation: isolate;
	}

	/* Stats section (TOTAL TRANSACTIONS / TOTAL CUSTOMERS / NEW CUSTOMERS / etc).
	   Desktop rule sets `flex: 1 1 200px`, which at 390px viewport
	   forces 1-per-row (2 × 200 + gap > 358). Override to 2-per-row at phone. */
	body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(> .pure-g .tc-box) > .pure-g > div {
		flex: 0 0 calc(50% - 8px) !important;
		min-width: 0 !important;
		width: auto !important;
	}
}

/* Pages without body.prodreports need their own filter-row stacking rule. */
@media (max-width: 639px) {
	:is(body.product-sales, body.subscriptions, body.funnels, body.coupons) .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form {
		flex: 1 0 100% !important;
		width: 100% !important;
	}
	:is(body.product-sales, body.subscriptions, body.funnels, body.coupons) .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group {
		display: grid !important;
		grid-template-columns: minmax(0, 1fr) auto;
		grid-template-areas:
			"date currency"
			"filters filters";
		gap: 8px 12px !important;
		width: 100% !important;
		margin: 0 !important;
	}
	:is(body.product-sales, body.subscriptions, body.funnels, body.coupons) .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group #data-range-wrap {
		grid-area: date;
		width: 100% !important;
		flex: unset !important;
		min-width: 0 !important;
	}
	:is(body.product-sales, body.subscriptions, body.funnels, body.coupons) .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group #data-range-wrap > .tc-dropdown {
		width: 100% !important;
	}
	:is(body.product-sales, body.subscriptions, body.funnels, body.coupons) .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group > .tc-flex.tc-items-center {
		display: contents;
	}
	:is(body.product-sales, body.subscriptions, body.funnels, body.coupons) .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group #stats-currency-wrap {
		grid-area: currency;
	}
	:is(body.product-sales, body.subscriptions, body.funnels, body.coupons) .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group .tc-stats-divider {
		display: none !important;
	}
	:is(body.product-sales, body.subscriptions, body.funnels, body.coupons) .ui-dashboard .ui-dashboard-head.tc-wrap > .pure-form > .pure-g.ui-input-group button {
		grid-area: filters;
		width: 100%;
		height: 44px;
	}
}

/* Outer report tabs ("Top Sellers / Funnels / Source / Refunds") wrap to
   2 lines because each <a> inherits white-space: normal and the 32px gap
   pushes content past narrow viewports. Use nowrap labels and a horizontal
   scroll fallback. Active up to iPad widths. */
@media (max-width: 767px) {
	body.prodreports .ui-dashboard .tc-report-tabs .tc-report-tab-list {
		flex-wrap: nowrap !important;
		/* overflow-x: auto promotes overflow-y to auto. The active tab is
		   2px taller, so the row itself could be scrolled upward. */
		overflow-x: auto;
		overflow-y: hidden;
		gap: 20px !important;
		margin: 0 -16px;
		/* 1px keeps the active underline inside the row so it is not clipped. */
		padding: 0 16px 1px;
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
	}
	body.prodreports .ui-dashboard .tc-report-tabs .tc-report-tab-list::-webkit-scrollbar {
		display: none;
	}
	body.prodreports .ui-dashboard .tc-report-tabs .tc-report-tab-list > li {
		flex: 0 0 auto;
	}
	body.prodreports .ui-dashboard .tc-report-tabs .tc-report-tab-list > li > a {
		white-space: nowrap;
	}
}

body.prodreports .ui-dashboard > .tc-table-section {
	background: #ffffff;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	padding: 0;
	margin: 24px 0 0 0;
}
body.prodreports .ui-dashboard > .tc-table-section > h2 {
	display: none;
}

body.prodreports .ui-dashboard #top-funnel-table th[data-col="id"],
body.prodreports .ui-dashboard #top-funnel-table td[data-col="id"] {
	width: 67px;
	min-width: 67px;
}
body.prodreports .ui-dashboard #top-funnel-table th[data-col="name"],
body.prodreports .ui-dashboard #top-funnel-table td[data-col="name"] {
	width: 217px;
	min-width: 217px;
}
body.prodreports .ui-dashboard #top-funnel-table th:not([data-col="id"]):not([data-col="name"]),
body.prodreports .ui-dashboard #top-funnel-table td:not([data-col="id"]):not([data-col="name"]) {
	text-align: right;
}

body.prodreports .ui-dashboard .tc-pagination {
	display: flex;
	justify-content: flex-end;
	align-items: center;
	gap: 8px;
	margin-top: 16px;
}
body.prodreports .ui-dashboard .tc-pagination .tc-page-numbers {
	display: flex;
	align-items: center;
	gap: 8px;
}
body.prodreports .ui-dashboard .tc-pagination button {
	box-sizing: border-box;
	width: 32px;
	height: 32px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	background: #f6f8f9;
	border: 1px solid #d1d7de;
	border-radius: 6px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	color: #364152;
	cursor: pointer;
	transition: background 120ms, border-color 120ms;
}
body.prodreports .ui-dashboard .tc-pagination button:hover {
	background: #e8ecef;
}
body.prodreports .ui-dashboard .tc-pagination button:disabled {
	color: #8493a8;
	cursor: not-allowed;
	opacity: 0.6;
}
body.prodreports .ui-dashboard .tc-pagination button.page-number {
	background: #ffffff;
	border-color: #e8ecef;
}
body.prodreports .ui-dashboard .tc-pagination button.page-number:hover {
	background: #f6f8f9;
}
body.prodreports .ui-dashboard .tc-pagination button.page-number.page-number-active {
	background: #ffffff;
	border-color: #d1d7de;
	color: #364152;
}
body.prodreports .ui-dashboard .tc-pagination .page-ellipsis {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 16px;
	height: 32px;
	color: #8493a8;
	font-size: 14px;
}

body.prodreports .ui-dashboard #refunds > h2 {
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
	letter-spacing: 0;
	margin: 40px 0 16px 0;
}
body.prodreports .ui-dashboard .tc-cohort-grid {
	margin-left: -8px;
	margin-right: -8px;
}
body.prodreports .ui-dashboard .tc-cohort-grid > .pure-u-1-4,
body.prodreports .ui-dashboard .tc-cohort-grid > .pure-u-1-3 {
	padding: 0 8px;
	box-sizing: border-box;
}
/* Override the legacy `.pure-g > div:first-child/middle/:last-child .tc-box`
   margin rules that would otherwise make middle cards narrower than outer ones. */
body.prodreports .ui-dashboard .pure-g > div .tc-cohort-card,
body.prodreports .ui-dashboard .pure-g > div:first-child .tc-cohort-card,
body.prodreports .ui-dashboard .pure-g > div:last-child .tc-cohort-card,
body.prodreports .ui-dashboard .pure-g > div:not(:first-child):not(:last-child) .tc-cohort-card {
	margin: 0;
}
body.prodreports .ui-dashboard .tc-cohort-card {
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 12px;
	padding: 24px;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: center;
	height: 100%;
	box-sizing: border-box;
}
body.prodreports .ui-dashboard .tc-cohort-card .tc-cohort-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 8px;
	border-radius: 8px;
	background: #e8ecef;
	color: rgba(58, 67, 81, 0.89);
	margin: 0 0 32px 0;
	flex: 0 0 auto;
}
body.prodreports .ui-dashboard .tc-cohort-card .tc-cohort-icon > svg {
	display: block;
	width: 20px;
	height: 20px;
}
body.prodreports .ui-dashboard .tc-cohort-card > p {
	margin: 0;
	font-family: 'Inter', sans-serif;
	font-size: 12px;
	font-weight: 600;
	line-height: 16px;
	letter-spacing: 0.48px;
	text-transform: uppercase;
	color: #8493a8;
	width: 100%;
}
/* Keep the last word + (i) tooltip together so they wrap as one unit. */
body.prodreports .ui-dashboard .tc-cohort-card > p .tc-cohort-tail {
	white-space: nowrap;
}
/* `!important` overrides a global `.tc-box p .icon.tc-tooltip { display: none !important }`
   that hides tooltips on summary cards in other report sections. */
body.prodreports .ui-dashboard .tc-cohort-card > p .icon.tc-tooltip {
	display: inline-flex !important;
	align-items: center;
	color: #8493a8;
	font-size: 16px;
	line-height: 16px;
	margin-left: 4px;
	vertical-align: middle;
}
body.prodreports .ui-dashboard .tc-cohort-card > p .icon.tc-tooltip > i {
	font-size: 16px;
	line-height: 16px;
}
body.prodreports .ui-dashboard .tc-cohort-card > hr.hr-small {
	display: none;
}
body.prodreports .ui-dashboard .tc-cohort-card > h2 {
	margin: 4px 0 0 0;
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
	letter-spacing: 0;
}

@media (max-width: 1409px) {
	body.prodreports .ui-dashboard .tc-cohort-grid > .pure-u-1-4,
	body.prodreports .ui-dashboard .tc-cohort-grid > .pure-u-1-3 {
		width: 50%;
		margin-bottom: 16px;
	}
	body.prodreports .ui-dashboard .tc-cohort-grid > .pure-u-1-4:nth-last-child(-n+2),
	body.prodreports .ui-dashboard .tc-cohort-grid > .pure-u-1-3:last-child {
		margin-bottom: 0;
	}
}
@media (max-width: 767px) {
	body.prodreports .ui-dashboard .tc-cohort-grid > .pure-u-1-4,
	body.prodreports .ui-dashboard .tc-cohort-grid > .pure-u-1-3 {
		margin-bottom: 12px;
	}
	/* Uneven row: when a 3-up cohort grid has an odd number of cards,
	   expand the final card to full width. Targets `.pure-u-1-3` only;
	   4-up grids (Subscriber Data, Trends) never have an odd last child. */
	body.prodreports .ui-dashboard .tc-cohort-grid > .pure-u-1-3:nth-child(odd):last-child {
		width: 100%;
	}
	body.prodreports .ui-dashboard .tc-cohort-card {
		padding: 20px;
	}
	body.prodreports .ui-dashboard .tc-cohort-card .tc-cohort-icon {
		margin-bottom: 24px;
	}
}

/* Source card on mobile: the desktop layout pins each dropdown at 180px
   and right-aligns them next to the title in a single row, which overflows
   sub-400px viewports. Wrap the title onto its own line and let the two
   dropdowns share the row below at equal flex width. */
@media (max-width: 767px) {
	body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) .tc-table-wrap > .tc-flex.tc-between {
		flex-wrap: wrap;
		row-gap: 12px;
	}
	body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) .tc-table-wrap > .tc-flex.tc-between > p {
		flex: 1 1 100%;
	}
	body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) .tc-table-wrap > .tc-flex.tc-between > .pure-form {
		width: 100%;
		flex: 1 1 100%;
	}
	body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) .tc-table-wrap > .tc-flex.tc-between > .pure-form > .pure-g {
		justify-content: stretch;
	}
	body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) .tc-table-wrap > .tc-flex.tc-between > .pure-form > .pure-g > .pure-u-1-2 {
		flex: 1 1 0;
		min-width: 0;
	}
	body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) .tc-table-wrap .pure-form .ui-input-group,
	body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) .tc-table-wrap .pure-form .tc-w-80,
	body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) .tc-table-wrap .pure-form .tc-dropdown {
		width: 100%;
		min-width: 0;
	}
	/* Cancel the dashboard-mobile `min-height: 44px` touch-target rule for
	   Source-card selects. Figma 292-1220 specifies padding 7px + line-height
	   20px + padding 7px = 34px; clipping below 34px chops the descender on
	   "Campaign" and similar labels. */
	body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) .tc-table-wrap .pure-form .tc-dropdown,
	body.prodreports .ui-dashboard .tc-report-tab-pane > .tc-table-section:has(.ui-statistics-graph-wrapper) .tc-table-wrap .pure-form .tc-dropdown select {
		height: 34px !important;
		min-height: 34px !important;
	}
}

/* Mobile app shell — top bar + bottom tab bar + More sheet (≤767px). */
.tc-mnav-topbar,
.tc-mnav-tabbar,
.tc-mnav-more-sheet,
.tc-mnav-more-backdrop {
	display: none;
}

/* Defensive: if a signin form ends up in the same DOM as the mobile shell
   (e.g. an iOS Safari back-forward cache restoring a master.php-shell page
   after a `/signin/` redirect), hide the shell so the user only sees the
   signin UI. The PHP-side redirect is the primary defence; this is a
   safety net for the user-visible state. */
body:has(#signin-form) .tc-mnav-topbar,
body:has(#signin-form) .tc-mnav-tabbar,
body:has(#signin-form) .tc-mnav-more-sheet,
body:has(#signin-form) .tc-mnav-more-backdrop {
	display: none !important;
}

@media (max-width: 767px) {
	/* --- Hide desktop sidebar, reset layout offsets --- */
	body.root #tc-sidebar {
		display: none !important;
	}
	/* Scope to `.root-app` (the admin SPA chrome). Site pages
	   (`.root-site` — members, sign-in, etc.) keep the global
	   `#layout { margin: 1em auto … }` so their cards stay centred. */
	body.root.root-app #tc-sidebar ~ #layout,
	body.root.root-app #layout {
		margin-left: 0 !important;
		margin-right: 0 !important;
	}

	/* Drop the desktop sidebar offset on the footer so the
	   "ThriveCart Pro+ / © ThriveCart LLC ..." block centers properly
	   on mobile (sidebar is hidden but `#tc-sidebar` is still in the DOM
	   so the rule at line 4084 would otherwise still add 224px margin). */
	body.root #tc-sidebar ~ .footer {
		margin-left: 0 !important;
		text-align: center !important;
	}

	/* Push page content below top bar, above tab bar */
	body.root.root-app {
		padding-top: 56px;
		padding-bottom: calc(64px + env(safe-area-inset-bottom, 0px));
	}

	/* --- Top bar (fixed, 56px) --- */
	.tc-mnav-topbar {
		display: flex;
		align-items: center;
		justify-content: space-between;
		position: fixed;
		top: 0;
		left: 0;
		right: 0;
		height: 56px;
		padding: 0 16px;
		background: #ffffff;
		border-bottom: 1px solid #e8ecef;
		z-index: 200;
		box-sizing: border-box;
	}
	.tc-mnav-brand {
		flex: 1;
		display: flex;
		align-items: center;
		justify-content: center;
		text-decoration: none;
		height: 100%;
	}
	/* Render the full ThriveCart wordmark (cart + text) instead of plain
	   text — same SVG asset the sidebar uses, sized for the mobile bar. */
	.tc-mnav-brand .logo-tc {
		display: block;
		width: 120px;
		height: 28px;
		text-indent: -9999px;
		overflow: hidden;
		background: url('../../../../../static/images/logo-sidebar.svg') no-repeat center / contain;
	}
	.tc-mnav-avatar {
		width: 36px;
		height: 36px;
		border-radius: 50%;
		overflow: hidden;
		display: none;
		align-items: center;
		justify-content: center;
	}
	.tc-mnav-avatar img {
		width: 100%;
		height: 100%;
		object-fit: cover;
	}
	.tc-mnav-help-btn {
		position: absolute;
		right: 16px;
		top: 50%;
		transform: translateY(-50%);
		height: 24px;
		padding: 0 8px;
		background: #00c8c8;
		color: #ffffff;
		border: none;
		border-radius: 100px;
		font-size: 11px;
		font-weight: 600;
		font-family: inherit;
		cursor: pointer;
		white-space: nowrap;
		line-height: 24px;
	}
	.BeaconFabButtonFrame {
		display: none !important;
	}

	/* --- Bottom tab bar (fixed, 64px + safe-area) --- */
	.tc-mnav-tabbar {
		display: flex;
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		height: calc(64px + env(safe-area-inset-bottom, 0px));
		padding-bottom: env(safe-area-inset-bottom, 0px);
		background: #ffffff;
		border-top: 1px solid #e8ecef;
		z-index: 200;
		box-sizing: border-box;
	}
	.tc-mnav-tab {
		flex: 1 0 0;
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		gap: 4px;
		padding: 8px 4px;
		background: transparent;
		border: 0;
		text-decoration: none;
		color: #8493a8;
		font-family: 'Inter', sans-serif;
		cursor: pointer;
		transition: color 180ms ease, transform 120ms ease;
		-webkit-tap-highlight-color: transparent;
	}
	.tc-mnav-tab:active {
		transform: scale(0.94);
	}
	.tc-mnav-tab-icon {
		width: 22px;
		height: 22px;
		background: #8493a8;
		-webkit-mask-repeat: no-repeat;
		        mask-repeat: no-repeat;
		-webkit-mask-position: center;
		        mask-position: center;
		-webkit-mask-size: contain;
		        mask-size: contain;
		transition: background-color 180ms ease;
	}
	.tc-mnav-tab-label {
		font-size: 11px;
		line-height: 14px;
		font-weight: 500;
		letter-spacing: 0.1px;
	}

	/* Tab icon masks (outline by default) */
	#tc-mnav-tab-dash .tc-mnav-tab-icon {
		-webkit-mask-image: url('../../assets/nav-dashboard.svg');
		        mask-image: url('../../assets/nav-dashboard.svg');
	}
	#tc-mnav-tab-prodreports .tc-mnav-tab-icon {
		-webkit-mask-image: url('../../assets/nav-reports.svg');
		        mask-image: url('../../assets/nav-reports.svg');
	}
	#tc-mnav-tab-products .tc-mnav-tab-icon {
		-webkit-mask-image: url('../../assets/nav-products.svg');
		        mask-image: url('../../assets/nav-products.svg');
	}
	#tc-mnav-tab-transactions .tc-mnav-tab-icon {
		-webkit-mask-image: url('../../assets/nav-transactions.svg');
		        mask-image: url('../../assets/nav-transactions.svg');
	}
	#tc-mnav-tab-affiliates .tc-mnav-tab-icon {
		-webkit-mask-image: url('../../assets/nav-affiliates.svg');
		        mask-image: url('../../assets/nav-affiliates.svg');
	}
	#tc-mnav-tab-learn .tc-mnav-tab-icon {
		-webkit-mask-image: url('../../assets/nav-learn.svg');
		        mask-image: url('../../assets/nav-learn.svg');
	}
	.tc-mnav-tab-icon-more {
		-webkit-mask-image: url('../../assets/nav-more.svg');
		        mask-image: url('../../assets/nav-more.svg');
	}

	/* Active tab (via bind-classmatch active OR data-section) */
	.tc-mnav-tabbar .tc-mnav-tab.active,
	.tc-mnav-tabbar[data-section="dash"] #tc-mnav-tab-dash,
	.tc-mnav-tabbar[data-section="prodreports"] #tc-mnav-tab-prodreports,
	.tc-mnav-tabbar[data-section="product-sales"] #tc-mnav-tab-prodreports,
	.tc-mnav-tabbar[data-section="subscriptions"] #tc-mnav-tab-prodreports,
	.tc-mnav-tabbar[data-section="funnels"] #tc-mnav-tab-prodreports,
	.tc-mnav-tabbar[data-section="coupons"] #tc-mnav-tab-prodreports,
	.tc-mnav-tabbar[data-section="products"] #tc-mnav-tab-products,
	:where(body:has(#ui-statistics.tc-reskin)) .tc-mnav-tabbar[data-section="statistics"] #tc-mnav-tab-products,
	.tc-mnav-tabbar[data-section="transactions"] #tc-mnav-tab-transactions,
	.tc-mnav-tabbar[data-section="affiliates"] #tc-mnav-tab-affiliates,
	.tc-mnav-tabbar[data-section="contracts"] #tc-mnav-tab-affiliates {
		color: #006b70;
	}
	.tc-mnav-tabbar .tc-mnav-tab.active .tc-mnav-tab-icon,
	.tc-mnav-tabbar[data-section="dash"] #tc-mnav-tab-dash .tc-mnav-tab-icon,
	.tc-mnav-tabbar[data-section="prodreports"] #tc-mnav-tab-prodreports .tc-mnav-tab-icon,
	.tc-mnav-tabbar[data-section="product-sales"] #tc-mnav-tab-prodreports .tc-mnav-tab-icon,
	.tc-mnav-tabbar[data-section="subscriptions"] #tc-mnav-tab-prodreports .tc-mnav-tab-icon,
	.tc-mnav-tabbar[data-section="funnels"] #tc-mnav-tab-prodreports .tc-mnav-tab-icon,
	.tc-mnav-tabbar[data-section="coupons"] #tc-mnav-tab-prodreports .tc-mnav-tab-icon,
	.tc-mnav-tabbar[data-section="products"] #tc-mnav-tab-products .tc-mnav-tab-icon,
	:where(body:has(#ui-statistics.tc-reskin)) .tc-mnav-tabbar[data-section="statistics"] #tc-mnav-tab-products .tc-mnav-tab-icon,
	.tc-mnav-tabbar[data-section="transactions"] #tc-mnav-tab-transactions .tc-mnav-tab-icon,
	.tc-mnav-tabbar[data-section="affiliates"] #tc-mnav-tab-affiliates .tc-mnav-tab-icon,
	.tc-mnav-tabbar[data-section="contracts"] #tc-mnav-tab-affiliates .tc-mnav-tab-icon {
		background: #006b70;
	}
	/* Swap to filled icon for active primary tabs */
	.tc-mnav-tabbar[data-section="dash"] #tc-mnav-tab-dash .tc-mnav-tab-icon {
		-webkit-mask-image: url('../../assets/nav-dashboard-filled.svg');
		        mask-image: url('../../assets/nav-dashboard-filled.svg');
	}
	.tc-mnav-tabbar[data-section="prodreports"] #tc-mnav-tab-prodreports .tc-mnav-tab-icon,
	.tc-mnav-tabbar[data-section="product-sales"] #tc-mnav-tab-prodreports .tc-mnav-tab-icon,
	.tc-mnav-tabbar[data-section="subscriptions"] #tc-mnav-tab-prodreports .tc-mnav-tab-icon,
	.tc-mnav-tabbar[data-section="funnels"] #tc-mnav-tab-prodreports .tc-mnav-tab-icon,
	.tc-mnav-tabbar[data-section="coupons"] #tc-mnav-tab-prodreports .tc-mnav-tab-icon {
		-webkit-mask-image: url('../../assets/nav-reports-filled.svg');
		        mask-image: url('../../assets/nav-reports-filled.svg');
	}
	.tc-mnav-tabbar[data-section="products"] #tc-mnav-tab-products .tc-mnav-tab-icon,
	:where(body:has(#ui-statistics.tc-reskin)) .tc-mnav-tabbar[data-section="statistics"] #tc-mnav-tab-products .tc-mnav-tab-icon {
		-webkit-mask-image: url('../../assets/nav-products-filled.svg');
		        mask-image: url('../../assets/nav-products-filled.svg');
	}
	.tc-mnav-tabbar[data-section="transactions"] #tc-mnav-tab-transactions .tc-mnav-tab-icon {
		-webkit-mask-image: url('../../assets/nav-transactions-filled.svg');
		        mask-image: url('../../assets/nav-transactions-filled.svg');
	}
	.tc-mnav-tabbar[data-section="affiliates"] #tc-mnav-tab-affiliates .tc-mnav-tab-icon,
	.tc-mnav-tabbar[data-section="contracts"] #tc-mnav-tab-affiliates .tc-mnav-tab-icon {
		-webkit-mask-image: url('../../assets/nav-affiliates-filled.svg');
		        mask-image: url('../../assets/nav-affiliates-filled.svg');
	}

	/* --- More bottom sheet --- */
	.tc-mnav-more-backdrop {
		display: block;
		position: fixed;
		inset: 0;
		background: rgba(54, 65, 82, 0.45);
		z-index: 300;
		opacity: 0;
		pointer-events: none;
		transition: opacity 200ms ease;
	}
	.tc-mnav-more-backdrop.is-open {
		opacity: 1;
		pointer-events: auto;
	}
	.tc-mnav-more-sheet {
		display: flex;
		flex-direction: column;
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		max-height: 80vh;
		background: #ffffff;
		border-radius: 20px 20px 0 0;
		padding: 8px 16px calc(16px + env(safe-area-inset-bottom, 0px)) 16px;
		box-shadow: 0 -4px 24px rgba(54, 65, 82, 0.15);
		z-index: 301;
		transform: translateY(100%);
		transition: transform 240ms cubic-bezier(0.32, 0.72, 0, 1);
		box-sizing: border-box;
	}
	.tc-mnav-more-sheet.is-open {
		transform: translateY(0);
	}
	.tc-mnav-more-handle {
		width: 40px;
		height: 4px;
		background: #d1d7de;
		border-radius: 2px;
		margin: 4px auto 12px;
	}
	.tc-mnav-more-title {
		font-family: 'Manrope', sans-serif;
		font-size: 16px;
		font-weight: 600;
		color: #364152;
		margin: 0 0 8px 0;
		padding: 0 8px;
	}
	.tc-mnav-more-list {
		list-style: none;
		padding: 0;
		margin: 0;
		overflow-y: auto;
	}
	.tc-mnav-more-item {
		display: flex;
		align-items: center;
		gap: 12px;
		padding: 14px 8px;
		text-decoration: none;
		color: #364152;
		font-family: 'Inter', sans-serif;
		font-size: 15px;
		line-height: 20px;
		border-radius: 8px;
		transition: background-color 150ms ease, transform 120ms ease;
		-webkit-tap-highlight-color: transparent;
	}
	.tc-mnav-more-item:active {
		background: #f6f8f9;
		transform: scale(0.98);
	}
	.tc-mnav-more-item:focus:not(:focus-visible) {
		outline: none;
	}
	.tc-mnav-more-item-sub {
		padding: 12px 8px;
		font-size: 14px;
		color: #475467;
	}
	/* More-sheet active item — when the current page matches an item in
	   the More sheet (top-level leaf or sub-link), tint its label and
	   accent it with the brand teal so the user can tell at a glance
	   which page they're on. */
	.tc-mnav-more-item.active {
		color: #006b70;
		font-weight: 600;
		background: rgba(0, 107, 112, 0.06);
	}
	.tc-mnav-more-divider {
		height: 1px;
		background: #e8ecef;
		margin: 8px 0;
		list-style: none;
	}

	/* Tabbar parent button (has children) — strip the default <button> chrome
	   so it lays out identically to the <a> siblings in the bar.
	   Critically: do NOT use the `font` shorthand here. `font: inherit`
	   would reset font-family back to the body's UA system stack (and
	   weight, size, etc.), wiping out `.tc-mnav-tab`'s `font-family:
	   'Inter'`. That made the Reports label render in macOS system font
	   while every other tab used Inter. We also intentionally don't set
	   `color: inherit` here — `.tc-mnav-tab { color: #8493a8 }` should
	   apply directly. */
	.tc-mnav-tab-parent {
		appearance: none;
		-webkit-appearance: none;
		background: transparent;
		border: 0;
		cursor: pointer;
	}

	/* More-sheet accordion group (parents with children render as expandable). */
	.tc-mnav-more-item-expand {
		width: 100%;
		appearance: none;
		-webkit-appearance: none;
		background: transparent;
		border: 0;
		font: inherit;
		cursor: pointer;
		text-align: left;
	}
	.tc-mnav-more-item-chevron {
		margin-left: auto;
		width: 12px;
		height: 12px;
		background: #677281;
		-webkit-mask-repeat: no-repeat;
		        mask-repeat: no-repeat;
		-webkit-mask-position: center;
		        mask-position: center;
		-webkit-mask-size: contain;
		        mask-size: contain;
		-webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><path d='M3 4.5l3 3 3-3' stroke='%23000' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
		        mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><path d='M3 4.5l3 3 3-3' stroke='%23000' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
		transition: transform 180ms ease;
	}
	.tc-mnav-more-group.is-expanded .tc-mnav-more-item-chevron {
		transform: rotate(180deg);
	}
	.tc-mnav-more-sub {
		list-style: none;
		padding: 0;
		margin: 0 0 0 32px;
		max-height: 0;
		overflow: hidden;
		transition: max-height 220ms ease;
	}
	.tc-mnav-more-group.is-expanded .tc-mnav-more-sub {
		max-height: 480px;
	}

	/* Sub-sheet variant — same chrome as More sheet but shorter. */
	.tc-mnav-sub-sheet {
		max-height: 60vh;
	}
	.tc-mnav-more-item-icon {
		width: 20px;
		height: 20px;
		background: #364152;
		-webkit-mask-repeat: no-repeat;
		        mask-repeat: no-repeat;
		-webkit-mask-position: center;
		        mask-position: center;
		-webkit-mask-size: contain;
		        mask-size: contain;
	}
	.tc-mnav-more-item[data-seed="affiliates"] .tc-mnav-more-item-icon,
	.tc-mnav-more-item[data-seed="contracts"] .tc-mnav-more-item-icon {
		-webkit-mask-image: url('../../assets/nav-affiliates.svg');
		        mask-image: url('../../assets/nav-affiliates.svg');
	}
	.tc-mnav-more-item[data-seed="learn"] .tc-mnav-more-item-icon,
	.tc-mnav-more-group[data-seed="learn"] > .tc-mnav-more-item .tc-mnav-more-item-icon {
		-webkit-mask-image: url('../../assets/nav-learn.svg');
		        mask-image: url('../../assets/nav-learn.svg');
	}
	.tc-mnav-more-item[data-seed="integrations"] .tc-mnav-more-item-icon,
	.tc-mnav-more-group[data-seed="integrations"] > .tc-mnav-more-item .tc-mnav-more-item-icon {
		-webkit-mask-image: url('../../assets/nav-integrations.svg');
		        mask-image: url('../../assets/nav-integrations.svg');
	}
	.tc-mnav-more-item[data-seed="deals"] .tc-mnav-more-item-icon,
	.tc-mnav-more-group[data-seed="deals"] > .tc-mnav-more-item .tc-mnav-more-item-icon {
		-webkit-mask-image: url('../../assets/nav-deals.svg');
		        mask-image: url('../../assets/nav-deals.svg');
	}
	/* Group rows are <button>s; a generic button rule shrank them to 13px. */
	button.tc-mnav-more-item { font-family: 'Inter', sans-serif; font-size: 15px; }

	/* Prevent body scroll when ANY sheet or modal is open. Plain
	   `overflow: hidden` on body alone is insufficient on iOS Safari —
	   the document keeps scrolling at the html level. Lock BOTH html
	   and body via `:has()` (single-level — nested `:has(body:has(...))`
	   is invalid per CSS spec) and add `overscroll-behavior: contain`
	   so iOS rubber-band doesn't bubble out. The
	   `body:has(.alertify:not(.ajs-hidden))` selector catches every
	   modal opened by the alertify library — Customize Display, Edit
	   Filters, generic alerts — without needing a per-modal entry. */
	/* Drained inline editors are open alertify elements in the page flow — exempt them or the page freezes. */
	html:has(body.tc-mnav-sheet-open),
	html:has(.alertify:not(.ajs-hidden):not(.tc-ps-pricing-inline)) {
		overflow: hidden;
		overscroll-behavior: contain;
	}
	/* `!important` here is justified: alertify (third-party library) sets
	   `.ajs-no-overflow.ajs-fixed { overflow-y: scroll }` on body when
	   any of its modals open, intending desktop UX where the modal can
	   scroll within the viewport. On mobile the resulting body scroll
	   lets the page behind the modal scroll, which we don't want. We
	   can't fix this upstream (third-party CSS), and equal-specificity
	   `body.ajs-no-overflow.ajs-fixed` doesn't reliably win source-order
	   in Chromium with `:has()` siblings — `!important` here is a
	   targeted override of one library's hardcoded rule, not a generic
	   short-circuit. */
	body.tc-mnav-sheet-open,
	body:has(.alertify:not(.ajs-hidden):not(.tc-ps-pricing-inline)),
	body.ajs-no-overflow.ajs-fixed {
		overflow: hidden !important;
		overscroll-behavior: contain;
	}
	.tc-mnav-more-sheet,
	.alertify .ajs-dialog {
		overscroll-behavior: contain;
	}
}

/* Dashboard mobile layout (≤767px). */
@media (max-width: 767px) {
	html,
	body.root {
		/* `clip` instead of `hidden` — `hidden` auto-promotes overflow-y to
		   `auto`, making html and body each their own scroll container. The
		   nested scrolls compete with each other on real mobile (especially
		   iOS Safari) and the page feels "stuck" near the bottom. */
		overflow-x: clip;
	}

	.ui-dashboard {
		padding: 0 16px 24px 16px;
		max-width: 100%;
		/* `overflow-x: clip` (not `hidden`) — `hidden` triggers a CSS spec
		   quirk that auto-promotes `overflow-y: visible` to `overflow-y: auto`,
		   creating an unintended nested scroll container that swallows the
		   user's vertical-scroll gestures and makes the page feel "stuck"
		   when scrolling near the bottom of the dashboard content. */
		overflow-x: clip;
		/* Mobile section reorder per user's spec:
		   Today → Filter → Trends → Revenue Breakdown → Refunds → Recurring Revenue.
		   Filter sits above the first chart so it's clearly the control for
		   every chart below. Flex column + per-child `order` is mobile-only;
		   desktop falls back to natural document order. */
		display: flex;
		flex-direction: column;
	}
	/* `!important` so we override the inline `style.order` set by the
	   Customize Display JS (account.html.twig ~L2167). Mobile follows
	   the fixed order regardless of the user's desktop custom layout;
	   desktop keeps the user's customization untouched. */
	.ui-dashboard .ui-dashboard-head { order: 1 !important; }
	.ui-dashboard > .tc-section-mini-head { order: 2 !important; }
	.ui-dashboard > .tc-today-cards { order: 3 !important; }
	.ui-dashboard > .pure-form { order: 4 !important; }
	.ui-dashboard > .tc-stats-section[data-section="trends"] { order: 5 !important; }
	.ui-dashboard > .tc-stats-section[data-section="revenue-breakdown"],
	.ui-dashboard > .tc-stats-section[data-section="recovered-revenue"] { order: 6 !important; }
	.ui-dashboard > .tc-stats-section[data-section="refunds"] { order: 7 !important; }
	.ui-dashboard > .tc-stats-section[data-section="recurring-revenue"] { order: 8 !important; }
	/* Sweep anything else (hidden hr, "see more reports" row, banners) to
	   the bottom so it can't visually interleave with the reordered sections. */
	.ui-dashboard > * { order: 99; }
	.ui-dashboard .ui-dashboard-head {
		margin: 16px 0 16px 0;
	}

	/* Recurring Revenue (Figma 838-999): the WRAPPER `.tc-section-card`
	   takes the white card chrome on mobile; the chart pure-g inside
	   resets to a plain container so we don't get visible nested cards.
	   Title -> tabs -> chart -> legend rendered in that visual order. */
	.ui-dashboard .tc-stats-section > .tc-section-card {
		background: #ffffff;
		border: 1px solid #e8ecef;
		border-radius: 12px;
		box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
		padding: 24px;
		display: flex;
		flex-direction: column;
		gap: 16px;
		margin: 0 0 16px 0;
	}
	/* Chart pure-g inside the wrapper card → plain (no nested card).
	   `:not([data-section="trends"])` adds specificity so this beats the
	   global desktop chart-card rule (which has the same not() qualifier). */
	.ui-dashboard .tc-stats-section:not([data-section="trends"]) > .tc-section-card > .pure-g {
		background: transparent;
		border: 0;
		box-shadow: none;
		padding: 0;
		margin: 0;
		gap: 12px;
		overflow: visible;
	}
	/* Reorder so the chart appears BEFORE the legend (Figma 838-999),
	   and hide the duplicate "Recurring Revenue" text in graph-top
	   (the section h2 above already shows it). */
	.ui-dashboard .tc-stats-section > .tc-section-card > .pure-g .graph-content {
		order: 1;
	}
	.ui-dashboard .tc-stats-section > .tc-section-card > .pure-g .graph-top {
		order: 2;
	}
	.ui-dashboard .tc-stats-section > .tc-section-card > .pure-g .graph-top > p:first-child {
		display: none;
	}
	/* Legend dots per Figma 838-1104: All Subscribers #00c8c9, New
	   Subscribers #006b70. Override the global .mark-selector colors
	   (which use #02CBC9 / #0B4F6C — too navy on the .darker dot). */
	.ui-dashboard .tc-stats-section[data-section="recurring-revenue"] .graph-top .mark-selector::before {
		color: #00c8c9;
	}
	.ui-dashboard .tc-stats-section[data-section="recurring-revenue"] .graph-top .mark-selector.darker::before {
		color: #006b70;
	}

	/* Recurring Revenue subscription-type filter pills (Figma 838-1002) */
	.ui-dashboard .tc-recurring-tabs {
		display: flex;
		gap: 12px;
		align-items: center;
		margin: 0 0 16px 0;
		flex-wrap: nowrap;
		overflow-x: auto;
		scrollbar-width: none;
		padding-bottom: 2px;
	}
	.ui-dashboard .tc-recurring-tabs::-webkit-scrollbar {
		display: none;
	}
	.ui-dashboard .tc-recurring-tab {
		flex: 0 0 auto;
		padding: 8px 18px;
		border: 1px solid #d1d7de;
		border-radius: 8px;
		background: #ffffff;
		color: #364152;
		font-family: 'Inter', sans-serif;
		font-size: 14px;
		font-weight: 400;
		line-height: 20px;
		cursor: pointer;
		-webkit-tap-highlight-color: transparent;
		white-space: nowrap;
		transition: background-color 120ms ease, transform 120ms ease;
	}
	.ui-dashboard .tc-recurring-tab.active {
		background: #f6f8f9;
	}
	.ui-dashboard .tc-recurring-tab:active {
		transform: scale(0.98);
	}
	.ui-dashboard .ui-dashboard-head h2 {
		font-size: 20px;
		line-height: 28px;
	}

	/* --- Hero cards (Today's): horizontal scroll carousel ---
	   Inherits card chrome + icons from desktop (line ~4193+); mobile only
	   converts the row to a scroll-snap track and tweaks typography to
	   Figma 838:879's 10/16 sizing. */
	.ui-dashboard .tc-today-cards {
		isolation: isolate;
		margin: 0 -16px;
	}
	.ui-dashboard .tc-today-cards-track {
		flex-wrap: nowrap !important;
		overflow-x: auto;
		scroll-snap-type: none;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
		gap: 8px !important;
		padding: 0 16px;
		scroll-padding-inline-start: 16px;
		scroll-padding-inline-end: 16px;
	}
	.ui-dashboard .tc-today-cards-track::-webkit-scrollbar {
		display: none;
	}
	.ui-dashboard .tc-today-cards-track > .tc-today-card {
		flex: 0 0 170px !important;
		width: 170px !important;
	}
	/* Mobile typography per Figma 838:879 — 10/16 instead of desktop 12/20.
	   Keep the desktop h2 `margin: -28px` so the gap between label and value
	   stays at 4px (desktop simulates a text-wrapper without one in the markup
	   via `gap: 32` on the box minus 28 on the h2 = 4). */
	.ui-dashboard .tc-today-cards-track > .tc-today-card .tc-box p {
		font-size: 10px;
		line-height: 16px;
		letter-spacing: 0.4px;
		display: block;
	}
	.ui-dashboard .tc-today-cards-track > .tc-today-card .tc-box h2 {
		font-size: 16px;
		line-height: 28px;
	}

	/* --- Filters: flatten pure-g hierarchy via display:contents, lay out
	       dropdowns + actions with CSS grid so short dropdowns share rows --- */
	.ui-dashboard .pure-form.pure-form-stacked {
		margin-bottom: 24px;
	}
	.ui-dashboard .pure-form.pure-form-stacked > .pure-g.ui-input-group {
		display: grid !important;
		/* Two rows on mobile:
		     Row 1 — Products spans the full width (fits "All products" or any
		             multi-product chips without ellipsis).
		     Row 2 — Date + Currency split 50/50 (each ~163px at 390px viewport,
		             enough for "Previous 7 days" and any currency code). */
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		gap: 8px !important;
		margin: 0 !important;
	}
	.ui-dashboard #products-wrap,
	.ui-dashboard #ai-products-wrap {
		grid-column: 1 / -1;
	}
	/* Match wrapper height to inner select's mobile touch-target (44px).
	   Without this, products/date wrappers stay at the desktop 36px while
	   the inner select expands to 44px, leaving the pill borders shorter
	   than the chevron+text and visually mismatched against the currency
	   dropdown (which auto-grows to 44px). */
	.ui-dashboard #main-filter-wrap #products-wrap > .tc-dropdown:not(.date_range),
	.ui-dashboard #main-filter-wrap #data-range-wrap > .tc-dropdown:not(.date_range),
	.ui-dashboard #main-filter-wrap #product-plan-wrap > .tc-dropdown:not(.date_range),
	.ui-dashboard #ai-main-filter-wrap #ai-products-wrap > .tc-dropdown:not(.date_range),
	.ui-dashboard #ai-main-filter-wrap #ai-data-range-wrap > .tc-dropdown:not(.date_range) {
		height: 44px;
	}
	/* When currency is hidden, drop to 2-column grid so Products + Date fill
	   the row. Class-toggle pattern (not :has) — .tc-currency-hidden is
	   rendered initially on .pure-form-stacked and removed by the JS at the
	   bottom of account.html.twig once multiple currencies are detected. */
	.ui-dashboard .pure-form.pure-form-stacked.tc-currency-hidden > .pure-g.ui-input-group {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	}
	/* Collapse all intermediate pure-g / pure-u wrappers so their children
	   participate directly in the outer grid */
	.ui-dashboard .pure-form.pure-form-stacked > .pure-g.ui-input-group > .pure-u-1.pure-u-md-2-3,
	.ui-dashboard .pure-form.pure-form-stacked > .pure-g.ui-input-group > .pure-u-1.pure-u-md-1-3,
	.ui-dashboard .pure-form.pure-form-stacked > .pure-g.ui-input-group > .pure-u-1.pure-u-md-1-3 > .pure-g.ui-input-group,
	.ui-dashboard #main-filter-wrap,
	.ui-dashboard #ai-main-filter-wrap,
	.ui-dashboard .pure-u-1-2.pure-u-md-1-2.tc-flex.tc-items-center {
		display: contents !important;
	}
	/* Filter cells = grid children — Sales Charts (#stats-*) + Additional Insights (#ai-*). */
	.ui-dashboard #products-wrap,
	.ui-dashboard #ai-products-wrap,
	.ui-dashboard #data-range-wrap,
	.ui-dashboard #ai-data-range-wrap,
	.ui-dashboard #product-plan-wrap:not(.hidden),
	.ui-dashboard #stats-currency-wrap:not(.hidden),
	.ui-dashboard #ai-currency-wrap:not(.hidden) {
		width: 100% !important;
		max-width: 100% !important;  /* override legacy `#stats-currency-wrap { max-width: 11em }` */
		min-width: 0 !important;
		padding: 0 !important;
		margin: 0 !important;
		display: block !important;
	}
	/* Hidden helper cells collapse out of the grid */
	.ui-dashboard #product-plan-wrap.hidden,
	.ui-dashboard #stats-currency-wrap.hidden,
	.ui-dashboard #ai-currency-wrap.hidden {
		display: none !important;
	}
	/* The multi-currency selector group must stay flex (the block rule above
	   would stack "All currencies / in / EUR" vertically). Wrap is allowed so
	   the display-currency pair drops below on very narrow phones. */
	.ui-dashboard #stats-currency-wrap.tc-currency-selector-group:not(.hidden),
	.ui-dashboard #ai-currency-wrap.tc-currency-selector-group:not(.hidden) {
		display: flex !important;
		flex-wrap: wrap;
		gap: 8px;
	}
	.ui-dashboard .tc-currency-selector-group .tc-display-currency-wrap:not(.hidden) {
		flex: 1 1 auto;
		min-width: 0;
	}
	/* Comparing: ranges + currency full width, each remove button on its range's 44px row */
	.ui-dashboard.tc-compare-on .pure-form.tc-compare-stack > .pure-g.ui-input-group {
		grid-template-columns: minmax(0, 1fr) 32px !important;
	}
	.ui-dashboard.tc-compare-on .pure-form.tc-compare-stack #stats-currency-wrap:not(.hidden) {
		grid-column: 1 / -1;
	}
	.ui-dashboard .pure-form.tc-compare-stack .tc-filter-clear-col {
		gap: 4px;
		padding: 0;
	}
	.ui-dashboard .pure-form.tc-compare-stack .tc-filter-clear-btn,
	.ui-dashboard .pure-form.tc-compare-stack #main-filter-wrap #data-range-wrap > .date_range.tc-dropdown {
		height: 44px;
	}
	.ui-dashboard .pure-form.tc-compare-stack #main-filter-wrap #data-range-wrap > #stats-date-range-type-custom-comp-wrap {
		margin-top: 4px;
	}

	/* Action button wrap: span full row */
	.ui-dashboard .compare-btn-wrap {
		grid-column: 1 / -1 !important;
		width: auto !important;
		padding: 0 !important;
		margin: 4px 0 0 0 !important;
	}

	/* Override the desktop 180px hard cap so selects fill their grid cell.
	   IMPORTANT: do NOT set display here — `.hidden` siblings (compare /
	   custom-range pickers) must remain display:none until toggled by JS. */
	body.root .ui-dashboard .tc-dropdown:not(.hidden),
	.ui-dashboard .tc-dropdown:not(.hidden),
	.ui-dashboard #stats-currency-wrap .tc-dropdown:not(.hidden),
	.ui-dashboard #ai-currency-wrap .tc-dropdown:not(.hidden) {
		width: 100% !important;
		max-width: 100% !important;
		flex: 1 1 auto !important;
	}
	body.root .ui-dashboard .tc-dropdown:not(.hidden) select,
	.ui-dashboard .tc-dropdown:not(.hidden) select,
	.ui-dashboard #stats-currency-wrap .tc-dropdown:not(.hidden) select,
	.ui-dashboard #ai-currency-wrap .tc-dropdown:not(.hidden) select,
	.ui-dashboard .pure-form select {
		width: 100% !important;
		max-width: 100% !important;
		min-width: 0 !important;
		min-height: 44px !important;
		height: 44px !important;
		font-size: 14px !important;
		padding-right: 32px !important;
	}

	/* Compare + Customize Stats: hierarchy — Compare is secondary (outlined),
	   Customize Stats is primary (filled teal). Reduces visual weight so the
	   filter pills above stay the focal point. */
	.ui-dashboard .compare-btn-wrap > .tc-flex {
		display: flex !important;
		flex-direction: row !important;
		gap: 8px;
		width: 100%;
	}
	.ui-dashboard .compare-btn-wrap > .tc-flex > .pure-button,
	.ui-dashboard .compare-btn-wrap > .tc-flex > button {
		flex: 1 1 0 !important;
		min-width: 0 !important;
		width: auto !important;
		margin: 0 !important;
		min-height: 40px !important;
		height: 40px !important;
		padding: 8px 14px !important;
		font-size: 14px !important;
		font-weight: 500 !important;
		line-height: 20px !important;
		white-space: nowrap;
		border-radius: 8px !important;
		box-shadow: none !important;
	}
	/* Compare = secondary (ghost/outlined) — #stats-btn-* and #ai-stats-btn-* share it. */
	.ui-dashboard .compare-btn-wrap > .tc-flex > #stats-btn-compare,
	.ui-dashboard .compare-btn-wrap > .tc-flex > #ai-stats-btn-compare {
		background: #ffffff !important;
		color: #006b70 !important;
		border: 1px solid #006b70 !important;
	}
	.ui-dashboard .compare-btn-wrap > .tc-flex > #stats-btn-compare:active,
	.ui-dashboard .compare-btn-wrap > .tc-flex > #ai-stats-btn-compare:active {
		background: #ecfdfc !important;
	}
	/* Customize Stats = primary filled */
	.ui-dashboard .compare-btn-wrap > .tc-flex > #stats-btn-customize,
	.ui-dashboard .compare-btn-wrap > .tc-flex > #ai-stats-btn-customize {
		background: #006b70 !important;
		color: #ffffff !important;
		border: 1px solid #006b70 !important;
	}
	.ui-dashboard .compare-btn-wrap > .tc-flex > #stats-btn-customize:active,
	.ui-dashboard .compare-btn-wrap > .tc-flex > #ai-stats-btn-customize:active {
		background: #004a4e !important;
	}

	/* Additional Insights cards: 3-up overflows on phones — drop to 2-up, tighter padding. */
	.ui-dashboard #dashboard-overview-stats ul {
		grid-template-columns: repeat(2, 1fr);
		gap: 12px;
	}
	.ui-dashboard #dashboard-overview-stats .ui-card .ui-card-front {
		padding: 16px;
	}
	.ui-dashboard #dashboard-overview-stats .ui-card .ui-card-front h5,
	.ui-dashboard #dashboard-overview-stats .ui-card .ui-card-front h6 {
		max-width: 100%;
		overflow-wrap: break-word;
	}

	/* --- Compare mode: visually group the compare-row dropdowns --- */
	/* When the .tc-compare hidden class is removed by JS, these become visible.
	   We don't need JS hooks — we style the compare dropdowns with a subtle
	   indent + separator so it's clear they're a "Compare with" group. */
	.ui-dashboard .tc-dropdown.tc-compare:not(.hidden) {
		position: relative;
		margin-top: 4px !important;
	}
	.ui-dashboard .tc-dropdown.tc-compare:not(.hidden)::before {
		content: '';
		position: absolute;
		left: 12px;
		top: -6px;
		width: 2px;
		height: 12px;
		background: #d1d7de;
		border-radius: 1px;
	}
	.ui-dashboard .tc-dropdown.tc-compare:not(.hidden) select {
		border-color: #a8b2c1 !important;
		background-color: #f6f8f9 !important;
	}

	/* --- Trends: tabs INSIDE the outer trends card per Figma 838-909 ---
	   Outer `.tc-tabs` keeps the desktop card chrome (white bg, border,
	   shadow, radius). The tab row scrolls horizontally inside it. Each
	   tab is flat (no individual border) — active state shows via the
	   #f6f8f9 fill + teal bottom underline that sits flush with the
	   tabs↔chart divider. */
	.ui-dashboard .tc-stats-section[data-section="trends"] .tc-tabs {
		isolation: isolate;
	}
	.ui-dashboard .tc-stats-section[data-section="trends"] .tc-tabs-list {
		flex-wrap: nowrap !important;
		overflow-x: auto;
		scroll-snap-type: none;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
		padding: 16px 16px 0 16px;
		gap: 8px;
		scroll-padding-inline-start: 16px;
	}
	.ui-dashboard .tc-stats-section[data-section="trends"] .tc-tabs-list::-webkit-scrollbar {
		display: none;
	}
	/* 180px tab width accommodates 10-character currency values like
	   "$22,297.40" without truncating the 20px h2. Target every direct
	   child of `.tc-tabs-list` regardless of its pure-grid class — the
	   five visible-by-default tabs are `.pure-u-1-5`, but the Projected
	   tab is `.pure-u-1-6` (and the rest dynamically switch to 1/6 when
	   Projected appears via JS at account.html.twig:1066). If a future
	   tab ships with `.pure-u-1-7` or any other grid class, this still
	   forces the 180px carousel size — the bug doesn't recur. */
	.ui-dashboard .tc-stats-section[data-section="trends"] .tc-tabs-list > * {
		flex: 0 0 180px !important;
		width: 180px !important;
	}
	/* Long currency values can't fit in a 132px content box (180 - 48 padding).
	   Allow the value to bleed slightly via `min-width: 0` plus `overflow: visible`
	   on the h2, and trust the slider's horizontal scroll to make any extra width
	   reachable. */
	.ui-dashboard .tc-stats-section[data-section="trends"] .tc-tabs-list a h2 {
		overflow: visible;
		white-space: nowrap;
	}
	.ui-dashboard .tc-stats-section[data-section="trends"] .tc-tabs-list a p {
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
	}
	/* Mobile-only: each tab gets its own bordered card chrome per Figma
	   838:910/914. Active = gray fill + teal bottom underline only; inactive
	   = white + full gray border. Desktop tabs (Figma 2:572/573) are flat
	   segments inside the outer .tc-tabs card and don't get this treatment. */
	.ui-dashboard .tc-stats-section[data-section="trends"] .tc-tabs-list a {
		border: 1px solid #d1d7de;
		background: #ffffff;
	}
	.ui-dashboard .tc-stats-section[data-section="trends"] .tc-tabs-list a.active {
		background: #f6f8f9;
		border-color: transparent;
		border-bottom-color: #006b70;
	}

	/* --- Charts: reduce canvas height --- */
	.ui-dashboard .tc-stats-section canvas,
	.ui-dashboard .tc-stats-section .graph-content canvas {
		height: 240px !important;
		max-height: 240px !important;
	}
	.ui-dashboard .tc-stats-section[data-section="revenue-breakdown"] canvas {
		height: 180px !important;
		max-height: 180px !important;
	}

	/* --- Section headings & legend row --- */
	.ui-dashboard .tc-stats-section h2 {
		font-size: 18px;
		line-height: 24px;
		margin-bottom: 12px;
	}
	.ui-dashboard .tc-stats-section .graph-top.tc-flex.tc-between {
		flex-direction: column;
		align-items: flex-start;
		flex-wrap: wrap;
		gap: 8px;
	}
	/* Override the desktop `flex: 1 0 0; min-width: 0` (line ~4630) which
	   squeezes the title to whatever's left after the legend takes its
	   content width — at mobile the legend is wide enough to push the title
	   to ~70px, wrapping "Recurring Revenue" awkwardly across two lines. */
	.ui-dashboard .tc-stats-section:not([data-section="trends"]) .graph-top p {
		flex: 0 0 auto;
		width: 100%;
	}
	.ui-dashboard .tc-stats-section .graph-top .tc-label {
		gap: 12px;
	}
	/* Revenue Breakdown legend: left-aligned under title per Figma 838-1111
	   (desktop right-aligns it next to the title; mobile stacks vertically
	   so flex-end leaves the chips visually orphaned on the right edge). */
	.ui-dashboard .tc-stats-section[data-section="revenue-breakdown"] .graph-top .tc-breakdown-legend {
		justify-content: flex-start !important;
		width: 100%;
		gap: 12px;
	}

	/* --- Sub-card grids → horizontal scroll carousel ---
	   Same scroll-snap pattern as the Today's hero and Trends carousels.
	   Applies to Recurring Revenue (MRR/ARR/new subs/churn), Revenue
	   Breakdown (Gross/Net/Commission/JV/Tax/Shipping) and Refunds (Total
	   Refunds/Customers/Volume/Rate). Each card is a fixed-width slide;
	   the row bleeds to the page gutter so the first card sits flush. */
	.ui-dashboard .tc-stats-section:not([data-section="trends"]) > .pure-g:last-of-type {
		display: flex !important;
		flex-wrap: nowrap !important;
		overflow-x: auto;
		scroll-snap-type: none;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
		gap: 8px;
		margin: 0 -16px;
		padding: 0 16px;
		scroll-padding-inline-start: 16px;
		scroll-padding-inline-end: 16px;
	}
	.ui-dashboard .tc-stats-section:not([data-section="trends"]) > .pure-g:last-of-type::-webkit-scrollbar {
		display: none;
	}
	.ui-dashboard .tc-stats-section:not([data-section="trends"]) > .pure-g:last-of-type > div[class*="pure-u-"] {
		flex: 0 0 168px !important;
		width: 168px !important;
		min-width: 0 !important;
		padding: 0 !important;
		margin: 0 !important;
		box-sizing: border-box;
	}
	/* Exact Figma 838:887 values: padding 24, gap-32 icon→text (icon margin),
	   gap-4 label→value (label margin), justify-center, shadow 0 1px 1px.
	   Uniform height: parent already has align-items: stretch (flex default),
	   so wrappers match the tallest sibling. `.tc-box` `height: 100%` then
	   fills the wrapper so the white card chrome spans the full row height. */
	.ui-dashboard .tc-stats-section:not([data-section="trends"]) > .pure-g:last-of-type .tc-box {
		padding: 24px !important;
		gap: 0 !important;
		min-height: 164px !important;
		height: 100% !important;
		border-color: #e8ecef;
		box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.05);
		justify-content: center;
		align-items: flex-start;
		box-sizing: border-box;
	}
	.ui-dashboard .tc-stats-section:not([data-section="trends"]) > .pure-g:last-of-type .tc-box::before {
		margin: 0 0 32px 0 !important;
	}
	.ui-dashboard .tc-stats-section:not([data-section="trends"]) > .pure-g:last-of-type .tc-box p {
		font-size: 10px;
		line-height: 16px;
		letter-spacing: 0.4px;
		margin: 0 0 4px 0;
	}
	.ui-dashboard .tc-stats-section:not([data-section="trends"]) > .pure-g:last-of-type .tc-box h2 {
		font-size: 16px;
		line-height: 28px;
		margin: 0;
	}

	/* --- Section spacing --- */
	.ui-dashboard .tc-stats-section {
		margin-bottom: 24px;
	}

	/* --- Micro-animations (native-app tap feedback) --- */
	.ui-dashboard .tc-box {
		transition: transform 120ms ease, box-shadow 180ms ease;
		-webkit-tap-highlight-color: transparent;
	}
	.ui-dashboard .tc-box:active {
		transform: scale(0.985);
	}
	.ui-dashboard .tc-stats-section[data-section="trends"] .tc-tabs-list .pure-u-1-5 {
		transition: transform 120ms ease;
	}
	.ui-dashboard .tc-stats-section[data-section="trends"] .tc-tabs-list .pure-u-1-5:active {
		transform: scale(0.98);
	}
	.ui-dashboard .compare-btn-wrap > .tc-flex > .pure-button {
		transition: transform 120ms ease, background-color 180ms ease, box-shadow 180ms ease;
		-webkit-tap-highlight-color: transparent;
	}
	.ui-dashboard .compare-btn-wrap > .tc-flex > .pure-button:active {
		transform: scale(0.97);
	}
	.ui-dashboard .pure-form .tc-dropdown {
		transition: box-shadow 180ms ease, border-color 180ms ease;
	}
	.ui-dashboard .pure-form .tc-dropdown:focus-within {
		box-shadow: 0 0 0 3px rgba(0, 168, 170, 0.15);
	}

	/* Respect reduced-motion preference */
	@media (prefers-reduced-motion: reduce) {
		.tc-mnav-tab,
		.tc-mnav-more-sheet,
		.tc-mnav-more-backdrop,
		.tc-mnav-more-item,
		.ui-dashboard .tc-box,
		.ui-dashboard .compare-btn-wrap > .tc-flex > .pure-button {
			transition: none !important;
			animation: none !important;
		}
	}

	/* "Customize Display" modal → mobile bottom-sheet. Slides up from the
	   bottom edge, full-width, drag handle at top, rounded top corners.
	   Footer buttons stack full-width so all 2-3 actions fit without
	   horizontal clipping at narrow viewports. The slide animation runs
	   off `.alertify`'s own `.ajs-hidden` toggle via plain CSS transition
	   (no shared keyframes) so the rule is self-contained. */
	.alertify .ajs-modal:has(.tc-modal-dashboard-customise),
	.alertify .ajs-modeless:has(.tc-modal-dashboard-customise) {
		display: flex;
		align-items: flex-end;
		justify-content: stretch;
		/* `!important` overrides the default alertify rule
		   `.alertify:not(.ajs-maximized) .ajs-modal { padding: 0 5%; }` at
		   ≤568px which would otherwise inset the sheet 5% on each side. */
		padding: 0 !important;
		overflow: hidden;
	}
	.alertify .ajs-dialog.tc-modal-dashboard-customise {
		width: 100% !important;
		max-width: 100% !important;
		min-width: 0 !important;
		max-height: 92vh;
		margin: 0 !important;
		border-radius: 16px 16px 0 0 !important;
		box-shadow: 0 -8px 24px rgba(15, 23, 42, 0.18) !important;
		display: block;
		overflow-y: auto;
		overflow-x: clip;
		-webkit-overflow-scrolling: touch;
		overscroll-behavior: contain;
		padding: 22px 20px max(20px, env(safe-area-inset-bottom)) 20px !important;
		transform: translateY(100%);
		transition: transform 280ms cubic-bezier(0.32, 0.72, 0, 1);
	}
	.alertify:not(.ajs-hidden) .ajs-dialog.tc-modal-dashboard-customise {
		transform: translateY(0);
	}
	.alertify.ajs-hidden .ajs-dialog.tc-modal-dashboard-customise {
		transition-duration: 220ms;
	}
	.alertify .ajs-dialog.tc-modal-dashboard-customise::before {
		content: '';
		position: sticky;
		top: 0;
		display: block;
		width: 36px;
		height: 4px;
		margin: 0 auto 12px auto;
		background: #d1d7de;
		border-radius: 2px;
	}
	/* Stack the footer buttons full-width. Cancel the alertify defaults
	   that fight the flex column layout:
	     `.ajs-footer { margin: 0 -24px }` — pulls footer wider than dialog
	     `.ajs-auxiliary { float: left }` — competes with flex children
	     `.ajs-button { margin: 4px }` — uneven gap; flex `gap: 8px` does it. */
	.tc-modal-dashboard-customise .ajs-footer {
		display: flex !important;
		flex-direction: column-reverse;
		align-items: stretch;
		gap: 8px;
		margin: 16px 0 0 0 !important;
		padding: 0 !important;
	}
	.tc-modal-dashboard-customise .ajs-footer .ajs-buttons {
		display: flex;
		flex-direction: column-reverse;
		align-items: stretch;
		gap: 8px;
		width: 100% !important;
		float: none !important;
		text-align: left !important;
		margin: 0 !important;
		padding: 0 !important;
	}
	.tc-modal-dashboard-customise .ajs-footer .ajs-auxiliary,
	.tc-modal-dashboard-customise .ajs-footer .ajs-primary {
		display: flex;
		flex-direction: column-reverse;
		gap: 8px;
		width: 100% !important;
		float: none !important;
		text-align: left !important;
	}
	.tc-modal-dashboard-customise .ajs-footer button.ajs-button {
		width: 100% !important;
		min-width: 0 !important;
		height: 44px;
		margin: 0 !important;
		padding: 10px 18px !important;
		box-sizing: border-box;
	}
}

/* Productsales mobile overrides. The dashboard's mobile rule above bumps
   every `.ui-dashboard .pure-form select` to 44px so the dashboard filter
   chips meet touch-target guidance, but on the productsales pages Figma
   keeps the "Previous 7 days" / "USD" chips at the same compact 34px as
   desktop (node 292-1168). Scope to `body.prodreports` so the dashboard
   keeps its larger touch targets and only the report pages compact. */
@media (max-width: 767px) {
	body.prodreports .ui-dashboard #stats-currency-wrap .tc-dropdown:not(.hidden) select,
	body.prodreports .ui-dashboard .tc-dropdown:not(.hidden) select,
	body.prodreports .ui-dashboard .pure-form select {
		height: 34px !important;
		min-height: 34px !important;
	}
}

/* Pure.css has no 1/5 grid, so the 5-card hero row uses flex on the wrapper.
   The wrapper keeps the `.pure-g` class but its flex children are plain
   <div>s (no `.pure-u-*`), so Pure.css's negative letter/word-spacing isn't
   reset by descendants — set it back to normal here. */
body.prodreports .ui-dashboard .tc-hero-grid-5 {
	display: flex;
	gap: 16px;
	margin: 0;
	letter-spacing: normal;
	word-spacing: normal;
}
body.prodreports .ui-dashboard .tc-hero-grid-5 > div {
	flex: 1 1 0;
	min-width: 0;
	padding: 0;
	box-sizing: border-box;
}
/* Override the legacy `.pure-g > div:first/last-child .tc-box` margins that
   would otherwise misalign cards inside the flex row. */
body.prodreports .ui-dashboard .tc-hero-grid-5 > div .tc-cohort-card,
body.prodreports .ui-dashboard .tc-hero-grid-5 > div:first-child .tc-cohort-card,
body.prodreports .ui-dashboard .tc-hero-grid-5 > div:last-child .tc-cohort-card {
	margin: 0;
}

body.prodreports .ui-dashboard .tc-chart-card {
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 12px;
	padding: 24px;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
	margin: 40px 0 0 0;
	box-sizing: border-box;
}
body.prodreports .ui-dashboard .tc-chart-card .tc-chart-head {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 16px;
	margin: 0 0 24px 0;
}
body.prodreports .ui-dashboard .tc-chart-card .tc-chart-head > h2 {
	flex: 1 1 auto;
	margin: 0;
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
	letter-spacing: 0;
}
body.prodreports .ui-dashboard .tc-chart-card .tc-chart-legend {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}
body.prodreports .ui-dashboard .tc-chart-card .tc-chart-legend > li {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-family: 'Inter', sans-serif;
	font-size: 12px;
	font-weight: 400;
	line-height: 16px;
	color: #8493a8;
}
body.prodreports .ui-dashboard .tc-chart-card .tc-chart-legend .tc-breakdown-dot {
	width: 8px;
	height: 8px;
	margin: 0;
	border: 0;
}
/* These dot colours must mirror the Chart.js dataset colours so the legend
   chips visually match the bar segments. */
body.prodreports .ui-dashboard .tc-breakdown-dot.existing-subscribers {
	background-color: #006b70;
}
body.prodreports .ui-dashboard .tc-breakdown-dot.new-subscriptions {
	background-color: #00a6aa;
}
body.prodreports .ui-dashboard .tc-breakdown-dot.trial-subscriptions {
	background-color: #00c8c9;
}
body.prodreports .ui-dashboard .tc-breakdown-dot.paused-subscriptions {
	background-color: #e8ecef;
}
body.prodreports .ui-dashboard .tc-chart-card .tc-chart-body {
	position: relative;
	width: 100%;
	height: 480px;
}
body.prodreports .ui-dashboard .tc-chart-card .tc-chart-body > canvas {
	display: block;
	width: 100% !important;
	height: 100% !important;
}

/* Section heading typography + spacing for Subscriptions tabs. The
   selector covers BOTH explicitly-classed `.tc-section-title` h2s
   (LTV) and any plain h2 that's a direct child of a tab pane (Churn
   Stats, Charges, etc.) — the latter is Subscriptions-specific
   because Productsales nests its section h2s inside
   `.tc-table-section > .tc-section-head`, so they're not direct
   children of `.tc-report-tab-pane` and won't match. 48px top margin
   matches Dashboard's section-divider rhythm. */
body.prodreports .ui-dashboard .tc-report-tab-pane > h2.tc-section-title,
body.prodreports .ui-dashboard .tc-report-tab-pane > h2:not(:first-child):not(.tc-section-title) {
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
	letter-spacing: 0;
	margin: 48px 0 16px 0;
}

body.prodreports .ui-dashboard .tc-ltv-grid {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
	margin: 0;
}
body.prodreports .ui-dashboard .tc-ltv-grid > .tc-cohort-card {
	width: 276px;
	flex: 0 0 276px;
	margin: 0;
	/* Base .tc-cohort-card sets `height: 100%`, which overrides the
	   flex container's default `align-items: stretch` and lets each
	   card size to its own content. Reset to auto so a longer label
	   (e.g. "Expected Value Per Customer" wrapping to two lines)
	   stretches the shorter sibling to the same height. */
	height: auto;
}

/* The active tab name takes the role of the section heading, so the
   first in-pane h2 (kept in markup for behavioural parity — duplicates
   the tab name) is hidden. Generalized from `#current-stats` to all
   tab panes so the Trends pane's redundant "Trends" h2 is hidden too. */
body.prodreports .ui-dashboard .tc-report-tab-pane > h2:first-child:not(.tc-section-title) {
	display: none;
}
body.prodreports .ui-dashboard .tc-hero-grid-5 .tc-cohort-card > hr.hr-small,
body.prodreports .ui-dashboard .tc-ltv-grid > .tc-cohort-card > hr.hr-small {
	display: none;
}

body.prodreports .ui-dashboard .tc-hero-grid-5 .tc-cohort-card > h2,
body.prodreports .ui-dashboard .tc-ltv-grid > .tc-cohort-card > h2 {
	margin: 4px 0 0 0;
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
	letter-spacing: 0;
}

body.prodreports .ui-dashboard #current-stats > .tc-cohort-grid {
	margin-top: 40px;
}

@media (max-width: 1409px) {
	body.prodreports .ui-dashboard .tc-hero-grid-5 {
		flex-wrap: wrap;
	}
	body.prodreports .ui-dashboard .tc-hero-grid-5 > div {
		flex: 0 0 calc((100% - 32px) / 3);
		max-width: calc((100% - 32px) / 3);
		margin-bottom: 16px;
	}
	body.prodreports .ui-dashboard .tc-hero-grid-5 > div:nth-last-child(-n+2) {
		flex-basis: calc((100% - 16px) / 2);
		max-width: calc((100% - 16px) / 2);
		margin-bottom: 0;
	}
}
@media (max-width: 767px) {
	/* 2-up rows on mobile. `gap: 16px` on the parent .tc-hero-grid-5
	   already provides the inter-card spacing; subtract half of that
	   from each child's width. When the total card count is odd, the
	   final card is alone in its row — expand it to full width via
	   `:nth-child(odd):last-child` so it doesn't sit awkwardly at half
	   width with empty space beside it. */
	body.prodreports .ui-dashboard .tc-hero-grid-5 > div,
	body.prodreports .ui-dashboard .tc-hero-grid-5 > div:nth-last-child(-n+2) {
		flex: 0 0 calc(50% - 8px);
		max-width: calc(50% - 8px);
		margin-bottom: 0;
	}
	body.prodreports .ui-dashboard .tc-hero-grid-5 > div:nth-child(odd):last-child {
		flex: 0 0 100%;
		max-width: 100%;
	}
	/* LTV: 2 cards per row on mobile (Expected Value Per Trial + Per
	   Customer), matching the 2x2 pattern used by other Subscriptions
	   sections. `tc-ltv-grid` is `display: flex` with `gap: 16px` so
	   each card takes (100% - 16px) / 2 = `calc(50% - 8px)`. */
	body.prodreports .ui-dashboard .tc-ltv-grid > .tc-cohort-card {
		flex: 0 0 calc(50% - 8px);
		max-width: calc(50% - 8px);
		min-width: 0;
	}
	body.prodreports .ui-dashboard .tc-chart-card {
		padding: 20px;
	}
	body.prodreports .ui-dashboard .tc-chart-card .tc-chart-head {
		flex-direction: column;
		align-items: flex-start;
	}
}

:where(body.prodreports .ui-dashboard #cohort) > .tc-cohort-wrap {
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 12px;
	padding: 24px;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
	margin: 40px 0 0 0;
	box-sizing: border-box;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-head {
	display: flex;
	align-items: center;
	gap: 16px;
	margin: 0 0 24px 0;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-title {
	display: flex;
	align-items: center;
	gap: 8px;
	flex: 1 1 auto;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-title > h2 {
	margin: 0;
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
	letter-spacing: 0;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-title > .icon.tc-tooltip {
	display: inline-flex !important;
	align-items: center;
	color: #8493a8;
	font-size: 16px;
	line-height: 16px;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-order {
	width: 180px;
	margin: 0;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-order .tc-dropdown {
	width: 100%;
	height: 36px;
	background: #ffffff;
	box-shadow: 0 0 0 1px #d1d7de;     /* outset 1px ring — matches date-range filter style, iOS-safe */
	border-radius: 8px;
	box-sizing: border-box;
	position: relative;                /* anchor for the chevron ::after */
}
/* Chevron indicator — same SVG path used by `.tc-section-order::after`. */
body.prodreports .ui-dashboard #cohort .tc-cohort-order .tc-dropdown::after {
	content: '' !important;
	display: block !important;
	position: absolute;
	right: 13px;
	top: 50%;
	width: 16px;
	height: 16px;
	transform: translateY(-50%);
	background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 7.41' fill='%232b384a'><path d='M10.59 0L6 4.58L1.41 0L0 1.41L6 7.41L12 1.41L10.59 0Z'/></svg>") no-repeat center / 8px auto;
	pointer-events: none;
}
/* Suppress the inner <select>'s own browser/legacy border + chevron so
   the wrapper's box-shadow ring + ::after chevron are the only visible
   edges — same pattern as the date-range filter dropdown. Reserve right
   padding so the value text doesn't run under the chevron. */
body.prodreports .ui-dashboard #cohort .tc-cohort-order .tc-dropdown > select {
	appearance: none;
	-webkit-appearance: none;
	-moz-appearance: none;
	border: 0 !important;
	background: transparent;
	background-image: none;
	box-shadow: none;
	padding-right: 32px !important;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table-scroll {
	overflow-x: auto;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table {
	width: 100%;
	border-collapse: separate;
	border-spacing: 0;
	font-family: 'Inter', sans-serif;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table th,
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table td {
	padding: 0;
	height: 40px;
	font-size: 14px;
	line-height: 20px;
	font-weight: 400;
	letter-spacing: 0;
	text-align: center;
	vertical-align: middle;
	border: 0;
	text-transform: none;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table th {
	color: #8493a8;
	background: transparent;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table th:nth-child(1),
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table td:nth-child(1) {
	width: 86px;
	min-width: 86px;
	padding-right: 12px;
	text-align: left;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table th:nth-child(2),
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table td:nth-child(2) {
	width: 82px;
	min-width: 82px;
	padding-right: 24px;
	text-align: left;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table td:nth-child(1),
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table td:nth-child(2) {
	color: #364152;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table td:not(:nth-child(1)):not(:nth-child(2)) {
	min-width: 77px;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table td.retention-80 {
	background-color: #006b70;
	color: #ffffff;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table td.retention-70 {
	background-color: #008a8e;
	color: #ffffff;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table td.retention-60 {
	background-color: #00a6aa;
	color: #ffffff;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table td.retention-50 {
	background-color: #00c8c9;
	color: #ffffff;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table td.retention-40 {
	background-color: #7adfdb;
	color: #364152;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table td.retention-30 {
	background-color: #a6eaea;
	color: #364152;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table td.retention-20 {
	background-color: #d3f3f3;
	color: #364152;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table td.retention-0 {
	background-color: #ecfdfc;
	color: #364152;
}
:where(body.prodreports .ui-dashboard #cohort) .tc-cohort-table td.retention-unknown {
	background: transparent;
	color: #d1d7de;
}

body.prodreports .ui-dashboard .tc-btn-primary {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 36px;
	padding: 8px 18px;
	background: #006b70;
	border: 0;
	border-radius: 8px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #ffffff;
	cursor: pointer;
	transition: background 120ms;
	text-transform: none;
	letter-spacing: 0;
	white-space: nowrap;
}
body.prodreports .ui-dashboard .tc-btn-primary:hover:not(:disabled) {
	background: #005559;
}
body.prodreports .ui-dashboard .tc-btn-primary:focus-visible {
	outline: 2px solid #006b70;
	outline-offset: 2px;
}
body.prodreports .ui-dashboard .tc-btn-primary:disabled {
	background: #d1d7de;
	color: #ffffff;
	cursor: not-allowed;
}

body.prodreports .ui-dashboard .tc-download-actions {
	display: flex;
	justify-content: center;
	gap: 12px;
	margin-top: 24px;
}

body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter {
	width: 480px;
	max-width: calc(100vw - 32px);
	padding: 0;
	background: #ffffff;
	border-radius: 12px;
	box-shadow: 0 20px 40px rgba(15, 23, 42, 0.16);
	font-family: 'Inter', sans-serif;
	color: #1f2937;
	overflow: visible;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-header {
	border-radius: 12px 12px 0 0;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-footer {
	border-radius: 0 0 12px 12px;
}

body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-reset {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-commands {
	position: absolute;
	right: 12px;
	top: 14px;
	left: auto;
	margin: 0;
	z-index: 2;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-pin,
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-maximize {
	display: none;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-close {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	background: transparent;
	border: 0;
	border-radius: 6px;
	color: #64748b;
	cursor: pointer;
	opacity: 0.7;
	transition: opacity 120ms, background 120ms;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-close::before {
	content: '\00d7';
	font-size: 22px;
	line-height: 1;
	font-weight: 400;
	color: #64748b;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-close:hover {
	opacity: 1;
	background: #f6f8f9;
}

body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-header {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	padding: 18px 52px 14px 20px;
	background: transparent;
	border: 0;
	font-family: 'Inter', sans-serif;
	font-size: 15px;
	font-weight: 600;
	line-height: 20px;
	color: #1f2937;
	border-bottom: 1px solid #eef1f4;
	box-sizing: border-box;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-header .icon-filter,
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-header i.icon-filter {
	color: #64748b;
	font-size: 14px;
	margin-right: 2px;
}

body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-body {
	display: block;
	padding: 0;
	margin: 0;
	min-height: 0;
	height: auto;
	background: transparent;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-body .ajs-content {
	position: static;
	top: auto;
	right: auto;
	bottom: auto;
	left: auto;
	padding: 4px 20px 16px 20px;
	height: auto;
	max-height: none;
	overflow: visible;
}
body.prodreports .alertify.ajs-resizable .ajs-dialog.tc-modal-genericproduct-filter,
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter {
	min-height: 0;
}
body.prodreports .alertify.ajs-resizable .ajs-dialog.tc-modal-genericproduct-filter .ajs-header,
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-header {
	position: static;
}
body.prodreports .alertify.ajs-resizable .ajs-dialog.tc-modal-genericproduct-filter .ajs-footer,
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-footer {
	position: static;
}

body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter {
	width: 100%;
	display: block;
}

body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter h2 {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 18px 0 8px 0;
	padding: 0;
	font-family: 'Inter', sans-serif;
	font-size: 13px;
	font-weight: 600;
	line-height: 18px;
	color: #1f2937;
	border: 0;
	background: transparent;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter h2:first-child {
	margin-top: 12px;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter h2 .clear-section {
	margin-left: auto;
	font-size: 12px;
	font-weight: 500;
	color: #94a3b8;
	cursor: pointer;
	text-transform: none;
	letter-spacing: 0;
	padding: 2px 6px;
	border-radius: 4px;
	transition: color 120ms, background 120ms;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter h2 .clear-section::before {
	content: none;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter h2 .clear-section.has-items {
	color: #006b70;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter h2 .clear-section:hover {
	background: #f6f8f9;
	color: #1f2937;
}

body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .ui-input-group {
	width: 100%;
	margin: 0;
	gap: 12px;
	display: flex;
	flex-wrap: wrap;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .ui-input-group > .pure-u-1,
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .ui-input-group > .pure-u-1-2 {
	width: 100%;
	padding: 0;
	box-sizing: border-box;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .ui-input-group > .pure-u-1-2 {
	flex: 1 1 calc(50% - 6px);
	min-width: 180px;
	width: auto;
}

body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter label {
	display: block;
	margin: 0 0 6px 0;
	padding: 0;
	font-family: 'Inter', sans-serif;
	font-size: 13px;
	font-weight: 500;
	line-height: 18px;
	color: #364152;
	text-transform: none;
}

/* NiceSelect2 trigger — leverages the existing FA search icon on .current */
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .nice-select {
	width: 100%;
	height: 36px;
	margin: 0;
	padding: 0 32px 0 12px;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	box-shadow: none;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 34px;
	color: #1f2937;
	display: flex;
	align-items: center;
	transition: border-color 120ms, box-shadow 120ms;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .nice-select .current::before {
	color: #94a3b8;
	margin-right: 8px;
	font-size: 13px;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .nice-select::after {
	right: 14px;
	width: 8px;
	height: 8px;
	border-color: #64748b;
	border-width: 0 1.5px 1.5px 0;
	margin-top: -6px;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .nice-select.disabled {
	background: #f6f8f9;
	color: #8493a8;
	cursor: not-allowed;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .nice-select:hover:not(.disabled) {
	border-color: #94a3b8;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .nice-select.open,
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .nice-select:focus {
	border-color: #006b70;
	box-shadow: 0 0 0 3px rgba(0, 107, 112, 0.12);
	outline: none;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .nice-select .current {
	display: block;
	width: 100%;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .nice-select .nice-select-dropdown {
	margin-top: 6px;
	border: 1px solid #e8ecef;
	border-radius: 8px;
	box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
	padding: 6px;
	background: #ffffff;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .nice-select .nice-select-search-box {
	padding: 4px;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .nice-select .nice-select-search {
	width: 100%;
	height: 32px;
	padding: 6px 10px;
	border: 1px solid #d1d7de;
	border-radius: 6px;
	font-family: 'Inter', sans-serif;
	font-size: 13px;
	color: #1f2937;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .nice-select .list {
	margin: 4px 0 0 0;
	padding: 0;
	max-height: 220px;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .nice-select .option {
	padding: 8px 10px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #1f2937;
	border-radius: 6px;
	min-height: auto;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .nice-select .option:hover,
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .nice-select .option.focus,
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .nice-select .option.selected.focus {
	background: #f0fbfb;
	color: #006b70;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .nice-select .option.selected {
	background: transparent;
	color: #006b70;
	font-weight: 500;
}

body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .filter-modal {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: 12px;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .filter-modal:empty {
	display: none;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .filter-modal .tc-badge {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	height: 28px;
	padding: 4px 10px;
	background: #f0fbfb;
	border: 1px solid #bcede9;
	border-radius: 999px;
	font-family: 'Inter', sans-serif;
	font-size: 13px;
	font-weight: 500;
	line-height: 18px;
	color: #006b70;
	cursor: pointer;
	transition: background 120ms, border-color 120ms;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .filter-modal .tc-badge:hover {
	background: #dcf9f7;
	border-color: #8adcd8;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .filter-modal .tc-badge .fa-times {
	font-size: 11px;
	color: #006b70;
}

body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	margin: 0;
	padding: 14px 20px;
	background: transparent;
	border-top: 1px solid #eef1f4;
	min-height: 0;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-footer .ajs-auxiliary,
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-footer .ajs-primary {
	float: none;
	margin: 0;
	padding: 0;
	display: flex;
	align-items: center;
	gap: 8px;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-footer button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 36px;
	padding: 8px 18px;
	border-radius: 8px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	cursor: pointer;
	transition: background 120ms, border-color 120ms, color 120ms;
	margin: 0;
	text-transform: none;
	letter-spacing: 0;
	min-width: 0;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-footer .ajs-ok {
	background: #006b70;
	color: #ffffff;
	border: 0;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-footer .ajs-ok:hover:not(:disabled) {
	background: #005559;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-footer .ajs-cancel,
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-footer .ajs-secondary {
	background: #ffffff;
	color: #364152;
	border: 1px solid #d1d7de;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-footer .ajs-cancel:hover:not(:disabled),
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-footer .ajs-secondary:hover:not(:disabled) {
	background: #f6f8f9;
	border-color: #94a3b8;
}
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-footer .ajs-secondary.disabled,
body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-footer .ajs-secondary:disabled {
	color: #94a3b8;
	cursor: not-allowed;
	opacity: 0.6;
}

body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .tc-flex > .clear-section {
	margin-left: auto;
}

body.prodreports .toggle-checkbox:checked + .toggle-switch {
	background: #006b70;
}
body.prodreports .hint--info:after {
	background-color: #006b70;
}
body.prodreports .hint--info.hint--top:before {
	border-top-color: #006b70;
}
body.prodreports .hint--info.hint--bottom:before {
	border-bottom-color: #006b70;
}
body.prodreports .hint--info.hint--left:before {
	border-left-color: #006b70;
}
body.prodreports .hint--info.hint--right:before {
	border-right-color: #006b70;
}

@keyframes tc-bottom-sheet-in {
	from { transform: translateY(100%); }
	to { transform: translateY(0); }
}
@keyframes tc-bottom-sheet-out {
	from { transform: translateY(0); }
	to { transform: translateY(100%); }
}
@media (max-width: 767px) {
	body.prodreports .alertify .ajs-modal.tc-product-filter-modal,
	body.prodreports .alertify .ajs-modeless.tc-product-filter-modal {
		display: flex;
		align-items: flex-end;
		justify-content: stretch;
		padding: 0;
		overflow: hidden;
	}
	body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter {
		width: 100%;
		max-width: 100%;
		min-width: 0;
		max-height: 92vh;
		margin: 0;
		border-radius: 16px 16px 0 0;
		box-shadow: 0 -8px 24px rgba(15, 23, 42, 0.18);
		display: block;
		overflow-y: auto;
		overflow-x: clip;
		-webkit-overflow-scrolling: touch;
		overscroll-behavior: contain;
	}
	body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-header {
		position: sticky;
		top: 0;
		z-index: 3;
		background: #ffffff;
		padding: 22px 20px 12px 20px;
		border-radius: 16px 16px 0 0;
	}
	body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-header::before {
		content: '';
		position: absolute;
		top: 8px;
		left: 50%;
		transform: translateX(-50%);
		width: 36px;
		height: 4px;
		background: #d1d7de;
		border-radius: 2px;
	}
	body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-body {
		overflow: visible;
	}
	body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-body .ajs-content {
		overflow: visible;
		padding: 4px 20px 24px 20px;
	}
	body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .nice-select .list {
		max-height: 28vh;
	}
	body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter #tpl-product-filter .nice-select.open .nice-select-dropdown {
		z-index: 4;
	}
	body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter .ajs-footer {
		position: sticky;
		bottom: 0;
		z-index: 3;
		background: #ffffff;
		border-radius: 0;
		padding: 14px 20px max(14px, env(safe-area-inset-bottom)) 20px;
	}
	body.prodreports .alertify.ajs-in:not(.ajs-hidden) .ajs-dialog.tc-modal-genericproduct-filter {
		animation-name: tc-bottom-sheet-in;
		animation-timing-function: cubic-bezier(0.32, 0.72, 0, 1);
		animation-duration: 280ms;
	}
	body.prodreports .alertify.ajs-out.ajs-hidden .ajs-dialog.tc-modal-genericproduct-filter {
		animation-name: tc-bottom-sheet-out;
		animation-timing-function: cubic-bezier(0.32, 0.72, 0, 1);
		animation-duration: 220ms;
	}
	/* Wrap hint tooltips inside the sheet so they don't get clipped horizontally */
	body.prodreports .alertify .ajs-dialog.tc-modal-genericproduct-filter [class*="hint--"]::after {
		max-width: 220px;
		white-space: normal;
		word-wrap: break-word;
		text-align: left;
	}
}


/* TC-11942 Integrations page reskin — scoped to `.tc-integrations-page`. */

/* Mirrors Dashboard reskin pattern at main.css:4082 — chrome painted
   white, page width matches `#layout`'s natural 1216. */
body:has(.tc-integrations-page),
body:has(.tc-integrations-page) #layout {
	background: #ffffff;
}
.tc-integrations-page {
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
	color: #364152;
	max-width: 1216px;
	margin: 0 auto;
	padding: 0;
	background: #ffffff;
	box-sizing: border-box;
}

/* 1152 = 1088 inner (190 sidebar + 32 gap + 866 content) + 64 padding —
   header's right edge aligns with the rightmost card. */
.tc-integrations-page .tc-integrations-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0;
	width: 100%;
	max-width: 1152px;
	padding: 24px 32px;
	margin: 0;
	box-sizing: border-box;
}

.tc-integrations-page .tc-integrations-title {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 20px;
	font-weight: 500;
	line-height: 28px;
	letter-spacing: 0;
	color: #2a3648;
	white-space: nowrap;
}

.tc-integrations-page .tc-integrations-body {
	display: flex;
	gap: 32px;
	align-items: flex-start;
	width: 100%;
	max-width: 1152px;
	padding: 0 32px 24px;
	box-sizing: border-box;
}

.tc-integrations-page .tc-integrations-sidebar {
	display: flex;
	flex-direction: column;
	gap: 8px;
	align-items: flex-start;
	flex: 0 0 190px;
	width: 190px;
	margin: 0;
	padding: 0;
}

.tc-integrations-page .tc-integrations-sidebar-label {
	display: flex;
	flex-direction: column;
	justify-content: center;
	width: 81px;
	height: 28px;
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 14px;
	font-weight: 600;
	line-height: 20px;
	letter-spacing: 0.56px;
	color: #8493a8;
	text-align: center;
	text-transform: uppercase;
	background: transparent;
}

.tc-integrations-page .tc-integrations-categories {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
	width: 100%;
}
.tc-integrations-page .tc-integrations-categories li { margin: 0; padding: 0; list-style: none; }

.tc-integrations-page .tc-integrations-category {
	display: inline-flex;
	align-items: center;
	justify-content: flex-start;
	gap: 8px;
	width: auto;
	margin: 0;
	padding: 8px;
	background: transparent;
	border: 0;
	border-radius: 4px;
	font-family: 'Inter', sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	letter-spacing: 0;
	color: #8493a8;
	text-align: left;
	cursor: pointer;
	overflow: hidden;
	white-space: nowrap;
	transition: background-color 0.15s ease, color 0.15s ease;
}
.tc-integrations-page .tc-integrations-category:hover { color: #2a3648; }

.tc-integrations-page .tc-integrations-category.active {
	background: #e8ecef;
	color: #2a3648;
	font-weight: 500;
}

/* Fixed 866 — body inner 1088 = 190 sidebar + 32 gap + 866 content. */
.tc-integrations-page .tc-integrations-content {
	display: flex;
	flex-direction: column;
	gap: 10px;
	align-items: stretch;
	flex: 0 0 866px;
	width: 866px;
	max-width: 866px;
	min-width: 0;
}

/* `width: 100%` is required — without it the row collapses to children's
   intrinsic width and justify-between becomes a no-op. */
.tc-integrations-page .tc-integrations-subhead {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	gap: 0;
	margin: 0;
	padding: 0;
	color: #364152;
	font-style: normal;
	white-space: nowrap;
}
.tc-integrations-page .tc-integrations-subtitle {
	margin: 0;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #364152;
	white-space: nowrap;
}
.tc-integrations-page .tc-integrations-total {
	margin: 0;
	font-weight: 400;
	letter-spacing: -0.3125px;
	color: #364152;
	white-space: nowrap;
}
.tc-integrations-page .tc-integrations-total-label,
.tc-integrations-page .tc-integrations-total-count {
	font-size: 16px;
	line-height: 24px;
	color: #364152;
}
.tc-integrations-page .tc-integrations-total-label { font-weight: 400; }
.tc-integrations-page .tc-integrations-total-count { font-weight: 500; }

/* Keep the <select> in the DOM so list.js can read its value. */
.tc-integrations-page .tc-integrations-legacy-filter { display: none !important; }
/* Reset legacy `.box` chrome padding/border so the grid spans 866px. */
.tc-integrations-page .box {
	padding: 0;
	margin: 0;
	background: transparent;
	border: 0;
	box-shadow: none;
	width: 100%;
}

.tc-integrations-page .box-list-autoresponder-wrapper {
	display: contents;
}
.tc-integrations-page #box-list-grid { padding: 0; width: 100%; }
.tc-integrations-page .box-list-autoresponder-grid {
	display: flex;
	flex-wrap: wrap;
	gap: 24px;
	align-items: center;
	align-content: center;
	margin: 0;
	padding: 20px 0;
	list-style: none;
	width: 100%;
}

/* `#box-list-grid` matches the (1,1,0) specificity of the legacy
   `#box-list-grid .box-list-autoresponder { padding: 2em 0.5em }` in
   list.settings.css — class-only here loses the cascade and padding
   reverts to 24/6. */
.tc-integrations-page #box-list-grid .box-list-autoresponder {
	position: relative;
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 8px;
	width: 272.667px;
	flex: 0 0 272.667px;
	min-height: 177.5px;
	height: auto;
	padding: 20px;
	margin: 0;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 10px;
	box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.05);
	overflow: hidden;
}

.tc-integrations-page .box-list-autoresponder .tc-integrations-card-head {
	display: flex;
	align-items: center;
	gap: 0;
	width: auto;
	margin: 0;
	padding: 0;
}

.tc-integrations-page .tc-integrations-card-logo {
	display: inline-flex;
	flex-shrink: 0;
	align-items: center;
	justify-content: flex-start;
	box-sizing: border-box;
	width: 64px;
	height: 64px;
	background: #ffffff;
	border-radius: 14px;
}
.tc-integrations-page .tc-integrations-card-logo .box-list-autoresponder-cover {
	display: block;
	width: 56px;
	height: 56px;
	max-width: none;
	max-height: none;
	margin: 0;
	padding: 0;
	object-fit: contain;
	-webkit-filter: none;
	filter: none;
	opacity: 1;
}

.tc-integrations-page .box-list-autoresponder h3 {
	display: block;
	width: 100%;
	height: 25.5px;
	margin: 0;
	padding: 0;
	border: 0;
	font-family: 'Inter', sans-serif;
	font-size: 18px;
	font-weight: 600;
	line-height: 25.5px;
	letter-spacing: -0.4316px;
	color: #2a3648;
	text-align: left;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.tc-integrations-page .box-list-autoresponder h3 strong { font-weight: 600; }
.tc-integrations-page .box-list-autoresponder > p { display: none; }

/* `transform: none` resets legacy `transform: translate(-50%, 0)` from
   list.settings.css that absolute-positions the pill over the logo. */
.tc-integrations-page .pill,
.tc-integrations-page .pill.pill-success,
.tc-integrations-page .pill.pill-error,
.tc-integrations-page .box-list-autoresponder-grid .pill-success {
	position: static;
	top: auto; left: auto; right: auto;
	transform: none;
	margin: 0 0 0 8px;
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 4px 8px;
	border-radius: 8px;
	font-size: 12px;
	font-weight: 500;
	font-style: normal;
	line-height: 16px;
	letter-spacing: 0;
	white-space: nowrap;
	box-sizing: border-box;
}
.tc-integrations-page .pill.pill-connected {
	background: #c6f6d5;
	color: #364152;
}
.tc-integrations-page .pill.pill-connected::before {
	content: '';
	display: inline-block;
	width: 12px;
	height: 12px;
	background-image: url('/static/logos/figma/icons/check.svg');
	background-size: contain;
	background-repeat: no-repeat;
	background-position: center;
	flex-shrink: 0;
}
.tc-integrations-page .pill.pill-new {
	background: #e8ecef;
	color: #364152;
}
.tc-integrations-page .pill.pill-update {
	background: #c6f6d5;
	color: #364152;
}

/* Suppress legacy ::after "Connected" pseudo — pill now in head row. */
.tc-integrations-page .box-list-autoresponder-active::after { content: none; }

.tc-integrations-page .pill.pill-error,
.tc-integrations-page .pill.pill-inline {
	background: #fde2e2;
	color: #9a2727;
}

/* Per Figma 594-3014: actions sit in-flow below the heading, left-aligned.
   Overrides legacy `list.settings.css:107` `position: absolute; top: 1.9em`
   which pins to top-right at ≤567px. */
.tc-integrations-page .box-list-autoresponder-actions {
	position: static;
	right: auto;
	bottom: auto;
	top: auto;
	width: auto;
	margin: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	align-items: center;
}
.tc-integrations-page .box-list-autoresponder-actions .pure-button,
.tc-integrations-page .box-list-autoresponder-actions .button-primary,
.tc-integrations-page .box-list-autoresponder-actions .button-success,
.tc-integrations-page .box-list-autoresponder-actions .button-outline,
.tc-integrations-page .box-list-autoresponder-actions .ui-plugins-settings,
.tc-integrations-page .box-list-autoresponder-actions .ui-plugins-activate {
	display: inline-flex;
	align-items: center;
	justify-content: flex-start;
	gap: 4px;
	height: auto;
	padding: 8px;
	background: #ffffff;
	color: #364152;
	border: 1px solid #e8ecef;
	border-radius: 6px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	letter-spacing: 0;
	text-decoration: none;
	box-shadow: none;
	cursor: pointer;
	white-space: nowrap;
	transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.tc-integrations-page .box-list-autoresponder-actions .pure-button:hover,
.tc-integrations-page .box-list-autoresponder-actions .button-primary:hover,
.tc-integrations-page .box-list-autoresponder-actions .button-success:hover,
.tc-integrations-page .box-list-autoresponder-actions .ui-plugins-settings:hover,
.tc-integrations-page .box-list-autoresponder-actions .ui-plugins-activate:hover {
	background: #f6f8f9;
	color: #2a3648;
	border-color: #d1d7de;
}
/* Press feedback matches Dashboard reskin pattern at main.css:7936. */
.tc-integrations-page .box-list-autoresponder-actions .pure-button {
	transition: transform 120ms ease, background-color 180ms ease,
		box-shadow 180ms ease, border-color 180ms ease, color 180ms ease;
	-webkit-tap-highlight-color: transparent;
}
.tc-integrations-page .box-list-autoresponder-actions .pure-button:active {
	transform: scale(0.97);
}
@media (prefers-reduced-motion: reduce) {
	.tc-integrations-page .box-list-autoresponder-actions .pure-button {
		transition: none !important;
		animation: none !important;
	}
}
.tc-integrations-page .box-list-autoresponder-actions .pure-button > span,
.tc-integrations-page .box-list-autoresponder-actions .pure-button > :not(.tc-btn-icon) {
	padding: 0 4px;
}

.tc-integrations-page .tc-btn-settings::before {
	content: '';
	display: inline-block;
	width: 16px;
	height: 16px;
	background-image: url('/static/logos/figma/icons/sliders.svg');
	background-size: contain;
	background-repeat: no-repeat;
	background-position: center;
	flex-shrink: 0;
	margin-right: 0;
}
.tc-integrations-page .tc-btn-add::before {
	content: '';
	display: inline-block;
	width: 16px;
	height: 16px;
	background-image: url('/static/logos/figma/icons/plus.svg');
	background-size: 10px 10px;
	background-repeat: no-repeat;
	background-position: center;
	flex-shrink: 0;
	margin-right: 0;
}
.tc-integrations-page .box-list-autoresponder-actions .tc-btn-text {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0 4px;
}

.tc-integrations-page .legal-trademark {
	margin: 32px 0 0;
	font-size: 12px;
	color: #8493a8;
}
.tc-integrations-page .pure-controls.controls-fluid { margin-top: 16px; }

/* Mirrors Dashboard `.tc-cols-btn` (main.css:6507). */
.tc-integrations-page .tc-integrations-back,
.tc-integrations-page .pure-controls .pure-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0;
	height: 36px;
	padding: 8px 16px;
	background: #ffffff;
	color: #364152;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	letter-spacing: 0;
	text-decoration: none;
	box-shadow: none;
	cursor: pointer;
	white-space: nowrap;
	transition: transform 120ms ease, background-color 180ms ease,
		box-shadow 180ms ease, border-color 180ms ease, color 180ms ease;
	-webkit-tap-highlight-color: transparent;
}
.tc-integrations-page .tc-integrations-back:hover,
.tc-integrations-page .pure-controls .pure-button:hover {
	background: #f6f8f9;
	color: #2a3648;
	border-color: #d1d7de;
}
.tc-integrations-page .tc-integrations-back:active,
.tc-integrations-page .pure-controls .pure-button:active { transform: scale(0.97); }
.tc-integrations-page .tc-integrations-back:focus-visible,
.tc-integrations-page .pure-controls .pure-button:focus-visible {
	outline: 2px solid #006b70;
	outline-offset: 1px;
}
@media (prefers-reduced-motion: reduce) {
	.tc-integrations-page .tc-integrations-back,
	.tc-integrations-page .pure-controls .pure-button {
		transition: none !important;
		animation: none !important;
	}
}

.tc-integrations-page .box-list-autoresponder-actions .pure-button:focus-visible {
	outline: 2px solid #006b70;
	outline-offset: 1px;
}

/* Below 1152 the fixed 866 + 190 + 32 gap won't fit — stack body. */
@media (max-width: 1151px) {
	.tc-integrations-page .tc-integrations-body {
		flex-direction: column;
		gap: 24px;
	}
	.tc-integrations-page .tc-integrations-sidebar {
		flex: 0 0 auto;
		width: 100%;
		justify-content: flex-start;
	}
	.tc-integrations-page .tc-integrations-content {
		flex: 0 0 auto;
		width: 100%;
		max-width: 100%;
	}
	.tc-integrations-page .tc-integrations-categories {
		flex-direction: row;
		flex-wrap: wrap;
		gap: 8px;
	}
}
/* Card width override needs `#box-list-grid` to match the desktop rule's
   (1,2,0) specificity — class-only here loses and cards stay 272.667px. */
@media (max-width: 767px) {
	.tc-integrations-page .tc-integrations-head { padding: 16px; max-width: none; }
	.tc-integrations-page .tc-integrations-body { padding: 0 16px 24px; max-width: none; }
	.tc-integrations-page #box-list-grid .box-list-autoresponder {
		width: 100%;
		flex: 0 0 100%;
		max-width: none;
	}
	.tc-integrations-page .tc-integrations-content {
		width: 100%;
		max-width: none;
		flex: 1 1 auto;
	}
	.tc-integrations-page .tc-integrations-subhead {
		flex-direction: column;
		align-items: flex-start;
		gap: 8px;
	}
	.tc-integrations-page .tc-integrations-categories {
		flex-direction: row;
		flex-wrap: nowrap;
		overflow-x: auto;
		gap: 8px;
		padding: 4px 0 8px;
		scrollbar-width: none;
	}
	.tc-integrations-page .tc-integrations-categories::-webkit-scrollbar { display: none; }
	.tc-integrations-page .tc-integrations-category {
		flex: 0 0 auto;
		padding: 8px 12px;
		background: #f6f8f9;
	}
	.tc-integrations-page .tc-integrations-category.active {
		background: #006b70;
		color: #ffffff;
	}
	.tc-integrations-page .tc-integrations-head { flex-wrap: wrap; gap: 12px; }
}

/* Integration plugin settings sub-pages. Body class toggled inline in
   master.php so overrides can't leak to the listing or other settings. */
body.tc-integration-settings-page,
body.tc-integration-settings-page #layout {
	background: #ffffff;
}
body.tc-integration-settings-page #body > .page-container {
	max-width: 1216px;
	margin: 0 auto;
	padding: 24px 32px;
	box-sizing: border-box;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
	color: #364152;
}

body.tc-integration-settings-page h2.content-subhead {
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #2a3648;
	margin: 0 0 16px;
	padding: 0;
	border: 0;
}
body.tc-integration-settings-page .box.padding h2 {
	font-family: 'Inter', sans-serif;
	font-size: 18px;
	font-weight: 600;
	line-height: 25.5px;
	color: #2a3648;
	margin: 0 0 12px;
}

body.tc-integration-settings-page .callout {
	background: #f6f8f9;
	color: #364152;
	border: 1px solid #e8ecef;
	border-radius: 8px;
	padding: 12px 16px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	line-height: 20px;
	margin: 0 0 16px;
}
body.tc-integration-settings-page .callout-success {
	background: #c6f6d5;
	border-color: #9ae6b4;
}
body.tc-integration-settings-page .callout-info {
	background: #e6f1ff;
	border-color: #c5dafd;
}

body.tc-integration-settings-page .box.padding {
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 10px;
	padding: 24px;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	margin: 0 0 16px;
}

body.tc-integration-settings-page .pure-form input[type=text],
body.tc-integration-settings-page .pure-form input[type=url],
body.tc-integration-settings-page .pure-form input[type=email],
body.tc-integration-settings-page .pure-form input[type=password],
body.tc-integration-settings-page .pure-form input[type=number],
body.tc-integration-settings-page .pure-form select,
body.tc-integration-settings-page .pure-form textarea {
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	line-height: 20px;
	color: #364152;
	padding: 8px 12px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	box-shadow: none;
	height: 36px;
	background: #ffffff;
}
body.tc-integration-settings-page .pure-form textarea {
	height: auto;
	min-height: 80px;
}
body.tc-integration-settings-page .pure-form input:focus,
body.tc-integration-settings-page .pure-form select:focus,
body.tc-integration-settings-page .pure-form textarea:focus {
	border-color: #006b70;
	outline: none;
	box-shadow: 0 0 0 3px rgba(0, 107, 112, 0.15);
}
body.tc-integration-settings-page .pure-form label {
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #364152;
	margin-bottom: 6px;
	display: block;
}

body.tc-integration-settings-page .pure-button.button-success,
body.tc-integration-settings-page input[type=submit].pure-button.button-success {
	background: #006b70;
	color: #ffffff;
	border: 1px solid #006b70;
	border-radius: 8px;
	padding: 8px 16px;
	height: 36px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	box-shadow: none;
	transition: background-color 0.15s ease, border-color 0.15s ease, transform 120ms ease;
}
body.tc-integration-settings-page .pure-button.button-success:hover {
	background: #00565a;
	border-color: #00565a;
	color: #ffffff;
}
body.tc-integration-settings-page .pure-button.button-success:active {
	transform: scale(0.97);
}

/* Outlined-teal variant for the secondary bulk action — Stripe Connect+
   has both "Connect another" (filled) and "Upgrade all" (outlined). */
body.tc-integration-settings-page .pure-controls.pure-controls-bottom .pure-button.button-success {
	background: #ffffff;
	color: #006b70;
	border-color: #006b70;
}
body.tc-integration-settings-page .pure-controls.pure-controls-bottom .pure-button.button-success:hover {
	background: #f6fefe;
	color: #00565a;
	border-color: #00565a;
}

body.tc-integration-settings-page .pure-button.button-primary {
	background: #ffffff;
	color: #364152;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	padding: 8px 16px;
	height: 36px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	box-shadow: none;
	transition: background-color 0.15s ease, border-color 0.15s ease, transform 120ms ease;
}
body.tc-integration-settings-page .pure-button.button-primary:hover {
	background: #f6f8f9;
	color: #2a3648;
	border-color: #d1d7de;
}
body.tc-integration-settings-page .pure-button.button-primary:active {
	transform: scale(0.97);
}

body.tc-integration-settings-page .pure-button.button-error {
	background: #ffffff;
	color: #9a2727;
	border: 1px solid #f5b8b8;
	border-radius: 8px;
	padding: 8px 16px;
	height: auto;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	box-shadow: none;
	transition: background-color 0.15s ease, border-color 0.15s ease;
}
body.tc-integration-settings-page .pure-button.button-error:hover {
	background: #fde2e2;
	color: #7a1f1f;
	border-color: #f5b8b8;
}
body.tc-integration-settings-page .pure-button.button-xsmall.button-error {
	font-size: 13px;
	padding: 6px 12px;
}

body.tc-integration-settings-page .pill,
body.tc-integration-settings-page .pill-fixedwidth {
	font-family: 'Inter', sans-serif;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	padding: 4px 8px;
	border-radius: 8px;
	letter-spacing: 0;
}
body.tc-integration-settings-page .pill.pill-success {
	background: #c6f6d5;
	color: #364152;
}
body.tc-integration-settings-page .pill.pill-info {
	background: #e6f1ff;
	color: #364152;
}

body.tc-integration-settings-page .pure-controls.controls-full {
	margin-top: 24px;
}

/* Reset legacy `.payment-list li:hover { background; border }` and
   `.payment-list-actions { float: right }` in list.settings.css:71-74
   so Delete is always pinned right (via `order: 99` + `margin-left: auto`)
   regardless of account-name length, and rows don't shift on hover. */
body.tc-integration-settings-page .payment-list {
	list-style: none;
	margin: 0;
	padding: 0;
}
body.tc-integration-settings-page .payment-list li {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	padding: 12px 0;
	margin: 0;
	background: transparent;
	border: 0;
	overflow: visible;
}
body.tc-integration-settings-page .payment-list li + li {
	border-top: 1px solid #e8ecef;
}
body.tc-integration-settings-page .payment-list li:hover {
	background: transparent;
	border-color: #e8ecef;
}
body.tc-integration-settings-page .payment-list .pill-fixedwidth,
body.tc-integration-settings-page .payment-list > li > .pill {
	flex-shrink: 0;
	align-self: flex-start;
	margin: 2px 0 0;
}
body.tc-integration-settings-page .payment-list-name {
	flex: 1 1 0;
	min-width: 0;
	word-break: break-word;
	line-height: 22px;
	font-size: 14px;
	color: #364152;
}
body.tc-integration-settings-page .payment-list-name .text-size-small {
	display: block;
	margin-top: 4px;
	color: #6b7280;
	font-size: 12px;
}
body.tc-integration-settings-page .payment-list-actions {
	flex-shrink: 0;
	float: none;
	margin: 0 0 0 auto;
	align-self: flex-start;
	order: 99;
}

@media (max-width: 767px) {
	body.tc-integration-settings-page #body > .page-container {
		padding: 16px;
	}
	body.tc-integration-settings-page h2.content-subhead {
		font-size: 18px;
		line-height: 24px;
		margin-bottom: 12px;
	}
	body.tc-integration-settings-page .box.padding {
		padding: 16px;
	}
	/* Legacy `.pure-controls.controls-full` is `float: right` (main.css:659);
	   on phones that pushes the inline-block buttons off the right edge.
	   Reset to a vertical stack of full-width buttons. */
	body.tc-integration-settings-page .pure-controls.controls-full,
	body.tc-integration-settings-page .box .pure-controls.controls-full,
	body.tc-integration-settings-page .box.padding .pure-controls.controls-full {
		float: none;
		display: flex;
		flex-direction: column;
		align-items: stretch;
		gap: 12px;
		width: 100%;
		margin: 16px 0 0;
	}
	body.tc-integration-settings-page .pure-controls.controls-full .pure-button {
		width: 100%;
		margin: 0;
		box-sizing: border-box;
		justify-content: center;
	}
	/* Go back stays small + right-aligned so the primary teal CTA is the
	   visual anchor; flatten any wrapper holding a content card alongside
	   action rows so `order: 99` can push Go back to the very end. */
	body.tc-integration-settings-page .pure-controls.controls-full .pure-button.button-primary {
		width: auto;
		align-self: flex-end;
	}
	body.tc-integration-settings-page #body > .page-container :is(div):has(> .box.padding):has(> .pure-controls.controls-full),
	body.tc-integration-settings-page #body > .page-container > .pure-controls.controls-full:has(.button-primary):has(.button-success) {
		display: flex;
		flex-direction: column;
		gap: 12px;
	}
	body.tc-integration-settings-page #body > .page-container :is(div):has(> .box.padding):has(> .pure-controls.controls-full) > .pure-controls.controls-full {
		display: contents;
	}
	body.tc-integration-settings-page #body > .page-container :is(div):has(> .box.padding):has(> .pure-controls.controls-full) > *,
	body.tc-integration-settings-page #body > .page-container :is(div):has(> .box.padding):has(> .pure-controls.controls-full) > .pure-controls.controls-full > * {
		margin-top: 0;
		margin-bottom: 0;
	}
	body.tc-integration-settings-page #body > .page-container .pure-button.button-primary {
		order: 99;
	}
	body.tc-integration-settings-page #body > .page-container > .pure-button,
	body.tc-integration-settings-page #thrivepay-list > .pure-button,
	body.tc-integration-settings-page #thrivepay-create > .pure-button,
	body.tc-integration-settings-page form > .pure-button {
		width: 100%;
		box-sizing: border-box;
		display: flex;
		justify-content: center;
		align-items: center;
	}
	body.tc-integration-settings-page .payment-notice {
		max-width: 100%;
		margin: 12px 0 0;
	}
}

/* TC-11808 Sign-in page reskin (login.php). Standalone page, not the SPA. */
body.tc-signin-page {
	margin: 0;
	background: #ffffff;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
	color: #2b384a;
	min-height: 100vh;
	/* Grid keeps the layout row at 1fr (filling viewport minus footer)
	   regardless of the right panel's 1032-tall graphic. Flex column let
	   the layout collapse to graphic height on tall viewports, pushing
	   the form below center. */
	display: grid;
	grid-template-rows: 1fr auto;
	grid-template-columns: minmax(0, 1fr);
	/* Belt-and-braces: never let any descendant exceed viewport width on
	   narrow phones. Without this, a fixed-width child (e.g. the 720
	   right panel before display:none kicks in below 767) could leak. */
	overflow-x: hidden;
}
body.tc-signin-page .tc-signin-layout {
	display: flex;
	min-height: 0;
}

body.tc-signin-page .tc-signin-left {
	flex: 1 1 50%;
	background: #ffffff;
	display: flex;
	flex-direction: column;
	align-items: center;
	/* Center form vertically in the panel. Logo is absolutely positioned
	   at the top so it doesn't shift the form's centering — matching
	   Figma 789-2499 where the form has equal 302px space above and below. */
	justify-content: center;
	padding: 16px 24px;
	box-sizing: border-box;
	position: relative;
}
body.tc-signin-page .tc-signin-logo-wrap {
	position: absolute;
	top: 88px;
	left: 0;
	right: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	height: 48px;
}
body.tc-signin-page .tc-signin-logo {
	display: inline-flex;
	align-items: center;
	text-decoration: none;
	height: 48px;
}
body.tc-signin-page .tc-signin-logo img {
	width: 194px;
	height: 48px;
	display: block;
}

body.tc-signin-page .tc-signin-form-wrap {
	/* `width: 100%; max-width: 400px` shrinks below 400 fluidly when the
	   parent is narrower than 400 (e.g. mobile 390 wide with 24px padding
	   each side leaves 342). The previous `width: 400; max-width: 100%`
	   declared 400 as tentative width and parent-width as cap, which some
	   layouts didn't honour, causing horizontal overflow on phones. */
	width: 100%;
	max-width: 400px;
	display: flex;
	flex-direction: column;
	gap: 16px;
}
/* Auto margins collapse to 0 on short viewports, so the form scrolls below the absolute logo instead of riding up under it; symmetric 152px padding keeps the tall-viewport centre unchanged. */
@media (min-width: 768px) {
	body.tc-signin-page .tc-signin-left {
		padding-top: 152px;
		padding-bottom: 152px;
	}
	body.tc-signin-page .tc-signin-form-wrap {
		margin-top: auto;
		margin-bottom: auto;
	}
}
body.tc-signin-page .tc-signin-headline {
	display: flex;
	flex-direction: column;
	gap: 16px;
	padding-bottom: 16px;
	text-align: center;
}
body.tc-signin-page .tc-signin-headline h1 {
	margin: 0;
	font-family: 'Inter', sans-serif;
	font-size: 30px;
	font-weight: 600;
	line-height: 36px;
	color: #2b384a;
}
body.tc-signin-page .tc-signin-headline p {
	margin: 0;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #55657a;
}

body.tc-signin-page .tc-signin-error {
	margin: 0;
	padding: 12px 16px;
	background: #fde2e2;
	color: #9a2727;
	border: 1px solid #f5b8b8;
	border-radius: 8px;
	font-size: 14px;
	line-height: 20px;
}

body.tc-signin-page .tc-signin-form {
	display: flex;
	flex-direction: column;
	gap: 16px;
	margin: 0;
	padding: 0;
	border: 0;
}
body.tc-signin-page .tc-signin-field {
	display: flex;
	flex-direction: column;
	gap: 4px;
}
body.tc-signin-page .tc-signin-field label {
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 14px;
	color: #2b384a;
}
body.tc-signin-page .tc-signin-field input {
	width: 100%;
	box-sizing: border-box;
	padding: 6px 20px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	background: #ffffff;
	font-family: 'Inter', sans-serif;
	font-size: 16px;
	line-height: 24px;
	color: #2b384a;
	height: 38px;
	box-shadow: none;
	outline: none;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
body.tc-signin-page .tc-signin-field input::placeholder { color: #afbbc9; }
body.tc-signin-page .tc-signin-field input:focus {
	border-color: #006b70;
	box-shadow: 0 0 0 3px rgba(0, 107, 112, 0.15);
}

body.tc-signin-page .tc-signin-submit {
	width: 100%;
	margin-top: 8px;
	padding: 12px 16px;
	background: #006b70;
	color: #ffffff;
	border: 1px solid #006b70;
	border-radius: 8px;
	font-family: 'Inter', sans-serif;
	font-size: 18px;
	font-weight: 500;
	line-height: 24px;
	cursor: pointer;
	box-shadow: none;
	transition: background-color 0.15s ease, border-color 0.15s ease, transform 120ms ease;
	-webkit-appearance: none;
	appearance: none;
}
body.tc-signin-page .tc-signin-submit:hover {
	background: #00565a;
	border-color: #00565a;
}
body.tc-signin-page .tc-signin-submit:active { transform: scale(0.98); }
body.tc-signin-page .tc-signin-submit:disabled {
	opacity: 0.6;
	cursor: not-allowed;
}

body.tc-signin-page .tc-signin-links {
	display: flex;
	align-items: center;
	justify-content: space-between;
}
body.tc-signin-page .tc-signin-links a {
	padding: 8px 4px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	color: #2a3648;
	text-decoration: none;
	border-radius: 6px;
	transition: background-color 0.15s ease, color 0.15s ease;
}
body.tc-signin-page .tc-signin-links a:hover {
	background: #f6f8f9;
	color: #006b70;
}
body.tc-twofactor-page .tc-twofactor-remember {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	font-size: 14px;
	line-height: 20px;
	color: #55657a;
	cursor: pointer;
}
body.tc-twofactor-page .tc-twofactor-remember input {
	width: 16px;
	height: 16px;
	margin: 0;
	accent-color: #006b70;
}
body.tc-twofactor-page .tc-signin-links {
	justify-content: center;
}
body.tc-twofactor-page .tc-signin-field input {
	letter-spacing: 0.2em;
}

/* Right half — Figma's 720×1032 panel with the profile-card group
   centered inside. Use flex centering so on shorter viewports the
   graphic stays visually centered (top/bottom clipped equally) and on
   wider right-halves the 720-wide graphic stays anchored center. */
/* Right panel locked to Figma's 789:2523 spec (720×1032). Without this
   the panel grows with viewport (flex 1 1 50%) and the 720-wide graphic
   looks shrunken inside it on screens wider than 1440. The form side
   absorbs any extra viewport width.

   Below 1280, we fall back to 50/50 so the 400-wide form has room
   alongside the right panel without triggering horizontal scroll. The
   graphic stays 720 wide (absolute, centered) and the panel clips
   anything outside the visible area via overflow:hidden. */
body.tc-signin-page .tc-signin-right {
	flex: 0 0 720px;
	max-width: 720px;
	background: #e8ecef;
	position: relative;
	overflow: hidden;
	display: flex;
	align-items: center;
	justify-content: center;
}
body.tc-signin-page .tc-signin-left {
	flex: 1 1 auto;
	min-width: 0;
}
@media (max-width: 1279px) and (min-width: 768px) {
	body.tc-signin-page .tc-signin-right {
		flex: 1 1 50%;
		max-width: none;
	}
	body.tc-signin-page .tc-signin-left {
		flex: 1 1 50%;
	}
}
/* Graphic is absolutely positioned + centered so its 1032 fixed height
   doesn't anchor the right panel's intrinsic height. Without `absolute`,
   the panel was forced to 1032 tall regardless of viewport, and on taller
   viewports the left panel (stretched to match) had the form sitting
   well below center. With `absolute` the panel stretches freely to
   viewport-minus-footer and the form centers within. */
body.tc-signin-page .tc-signin-graphic {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 720px;
	height: 1032px;
}


/* Lines exactly per Figma (789:2527-2530). Each starts as a horizontal
   4×N SVG and rotates around its top-left to land at the calculated
   endpoints. Group center ≈ profile card center at (360, 509). */
body.tc-signin-page .tc-signin-line {
	position: absolute;
	pointer-events: none;
	display: block;
	transform-origin: 0 0;
}
body.tc-signin-page .tc-signin-line-h {
	left: 141px;
	top: 506px;
	width: 438px;
	height: 4px;
}
body.tc-signin-page .tc-signin-line-v {
	left: 360px;
	top: 290px;
	width: 438px;
	height: 4px;
	transform: rotate(90deg);
}
/* Line 7 — 135° diagonal connecting the tag icon
   (upper-right) to the face-scan icon (lower-left), passing through the
   card center (360, 509). Line is centered on the card, 438 long, so
   endpoints sit at (515, 354) and (205, 664) — both INSIDE their
   respective icons' bounding boxes so the icons' white bodies cover the
   line endpoints, and only the line's middle (between the two icons) is
   visible. CSS box at (515, 354) with rotate(135°) origin top-left
   produces the other endpoint at (515-310, 354+310) = (205, 664). */
body.tc-signin-page .tc-signin-line-d1 {
	left: 515px;
	top: 354px;
	width: 438px;
	height: 4px;
	transform: rotate(135deg);
}
body.tc-signin-page .tc-signin-line-d2 {
	left: 360.12px;
	top: 508.3px;
	width: 219.203px;
	height: 4px;
	transform: rotate(45deg);
}

/* Per Figma 789:2544/2550/2555/2563/2567/2572/2580 — each icon is a
   white box with a solid #e8ecef border of the per-icon width below.
   No shadow, no filter — those are not in the Figma spec. */
body.tc-signin-page .tc-signin-icon {
	position: absolute;
	background: #ffffff;
	border-style: solid;
	border-color: #e8ecef;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
}
body.tc-signin-page .tc-signin-icon img { display: block; }
body.tc-signin-page .tc-signin-icon-1 {
	left: 340px; top: 289px; width: 40px; height: 40px;
	border-width: 4px; border-radius: 8px;
}
body.tc-signin-page .tc-signin-icon-1 img { width: 24px; height: 24px; }
body.tc-signin-page .tc-signin-icon-2 {
	left: 474.4px; top: 342.4px; width: 53.2px; height: 53.2px;
	border-width: 5.32px; border-radius: 10.64px;
}
body.tc-signin-page .tc-signin-icon-2 img { width: 31.92px; height: 31.92px; }
body.tc-signin-page .tc-signin-icon-3 {
	left: 526.8px; top: 476.8px; width: 66.4px; height: 66.4px;
	border-width: 6.64px; border-radius: 13.28px;
}
body.tc-signin-page .tc-signin-icon-3 img { width: 39.84px; height: 39.84px; }
body.tc-signin-page .tc-signin-icon-4 {
	left: 461px; top: 610px; width: 80px; height: 80px;
	border-width: 8px; border-radius: 16px;
}
body.tc-signin-page .tc-signin-icon-4 img { width: 48px; height: 48px; }
body.tc-signin-page .tc-signin-icon-5 {
	left: 326.8px; top: 675.8px; width: 66.4px; height: 66.4px;
	border-width: 6.64px; border-radius: 13.28px;
}
body.tc-signin-page .tc-signin-icon-5 img { width: 39.84px; height: 39.84px; }
body.tc-signin-page .tc-signin-icon-6 {
	left: 193.4px; top: 623.4px; width: 53.2px; height: 53.2px;
	border-width: 5.32px; border-radius: 10.64px;
}
body.tc-signin-page .tc-signin-icon-6 img { width: 31.92px; height: 31.92px; }
body.tc-signin-page .tc-signin-icon-7 {
	left: 140px; top: 490px; width: 40px; height: 40px;
	border-width: 4px; border-radius: 8px;
}
body.tc-signin-page .tc-signin-icon-7 img { width: 24px; height: 24px; }
/* Cursor. Metadata reports x=1275 in Figma's internal
   coordinate system, but the React export's `left-[1251px]` is the
   actual rendered position (24px = the cursor width, accounting for
   the horizontal flip wrapper). Panel-rel x=531 puts the cursor tip
   overlapping the sparkle's bottom-right corner per Figma. */
body.tc-signin-page .tc-signin-cursor {
	position: absolute;
	left: 531px; top: 666px; width: 24px; height: 24px;
	transform: scaleY(-1) rotate(180deg);
	pointer-events: none;
}

/* Profile card — verbatim Figma CSS:
     border-radius: 8px;
     border: 6px solid #e8ecef;
     background: #fff;
     display: flex;
     width: 168px;
     padding: 64px 16px 20px 16px;
     flex-direction: column;
     align-items: flex-start;
     gap: 24px;
   Height is auto from flex content (Frame 2206 = avatar 40 + gap-16 +
   name bars 16 = 72) + padding (64+20=84) = 156. Cover and pill remain
   absolute (overlay), positioned per their own Figma specs. */
body.tc-signin-page .tc-signin-profile {
	position: absolute;
	left: 276px;
	top: 431px;
	width: 168px;
	background: #ffffff;
	border: 6px solid #e8ecef;
	border-radius: 8px;
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	padding: 64px 16px 20px 16px;
	gap: 24px;
	/* Clip cover/pill at the card edge so the border stays clean even
	   when absolute children overflow padding-box. */
	overflow: hidden;
}
/* Frame 2206 — the only flex child of the card. Holds
   the avatar and name bars, stacked vertically with gap-16 and centered. */
body.tc-signin-page .tc-signin-profile-content {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 16px;
	width: 100%;
}
body.tc-signin-page .tc-signin-profile-cover {
	position: absolute;
	/* Figma 789:2532: cover at (4, 4) w=160 h=72 — but Figma renders this
	   in OUTER (border-box) coords, while CSS positions absolute children
	   relative to padding-box (inside the 6px border). To land cover at
	   Figma's RENDERED position (4px from outer edge), we'd need width 160
	   which overflows the 156-wide padding-box by 8. Shrinking cover to
	   148 keeps it fully inside padding-box with 4px symmetric white
	   margin to the border on left + right — matching Figma's visual. */
	left: 4px;
	top: 4px;
	width: 148px;
	height: 72px;
	border-radius: 4px;
	/* Figma 789:2532 cover — two radialGradient layers verbatim from the
	   Figma export (gradientTransform matrices unchanged), composited
	   over #e8ecef. Pink + teal blobs are anchored above the rect and
	   bleed downward into the visible area. */
	background-color: #e8ecef;
	background-image:
		url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 72' preserveAspectRatio='none'><defs><radialGradient id='g' gradientUnits='userSpaceOnUse' cx='0' cy='0' r='10' gradientTransform='matrix(0.78947 13.23 -7.7368 1.35 87.895 -24.3)'><stop offset='0' stop-color='%23F9DDF4' stop-opacity='1'/><stop offset='1' stop-color='%23F9DDF4' stop-opacity='0'/></radialGradient></defs><rect width='100%25' height='100%25' fill='url(%23g)'/></svg>"),
		url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 72' preserveAspectRatio='none'><defs><radialGradient id='g' gradientUnits='userSpaceOnUse' cx='0' cy='0' r='10' gradientTransform='matrix(-2.1053 12.96 -7.5789 -3.6 136.84 -57.6)'><stop offset='0' stop-color='%2380E7E1' stop-opacity='1'/><stop offset='1' stop-color='%2380E7E1' stop-opacity='0'/></radialGradient></defs><rect width='100%25' height='100%25' fill='url(%23g)'/></svg>");
	background-size: 100% 100%, 100% 100%;
	background-repeat: no-repeat;
}
/* Avatar: outer 40×40 with a 3px white border. Tailwind
   `border-3` + default border-box keeps the outer at 40 with a 3px inset
   border. The image inside is positioned per Figma's exact values:
   left:-37.69%, top:-0.45%, size:175.38% — frames the woman's face in the
   visible circle (default object-fit:cover would crop differently). */
/* Avatar: a flex child of Frame 2206, naturally
   positioned by the card's padding + Frame 2206's items-center. No
   absolute positioning needed. */
body.tc-signin-page .tc-signin-profile-avatar {
	position: relative;
	width: 40px;
	height: 40px;
	border: 3px solid #ffffff;
	border-radius: 100px;
	overflow: hidden;
	background: #0a0a0a;
	box-sizing: border-box;
	flex-shrink: 0;
}
body.tc-signin-page .tc-signin-profile-avatar img {
	position: absolute;
	left: -37.69%;
	top: -0.45%;
	width: 175.38%;
	height: 175.38%;
	max-width: none;
	display: block;
}
/* Name bars: also a flex child of Frame 2206, sits
   below the avatar with gap-16. Two pill-shaped gray bars side by side. */
body.tc-signin-page .tc-signin-profile-name {
	position: relative;
	display: flex;
	align-items: center;
	gap: 8px;
}
body.tc-signin-page .tc-signin-profile-name-bar {
	background: #e8ecef;
	border-radius: 100px;
	height: 16px;
	display: block;
}
body.tc-signin-page .tc-signin-profile-name-bar-lg { width: 64px; }
body.tc-signin-page .tc-signin-profile-name-bar-sm { width: 32px; }
/* Teal pill. Figma React says left:128 top:84 — but
   that's in OUTER coords; CSS positions absolute children relative to
   padding-box (6px inside the border). Shifting -6 each direction lands
   the pill at Figma's RENDERED outer position (128, 84). Without this
   adjustment the pill overflows padding-box right and gets clipped. */
body.tc-signin-page .tc-signin-profile-pill {
	position: absolute;
	left: 122px;
	top: 78px;
	width: 32px;
	height: 16px;
	background: #00868c;
	border-radius: 100px;
	display: block;
}

body.tc-signin-page .tc-signin-footer {
	flex: 0 0 auto;
	background: #ffffff;
	border-top: 1px solid #e8ecef;
	padding: 24px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	box-sizing: border-box;
	width: 100%;
	color: #55657a;
	font-family: 'Inter', sans-serif;
	font-size: 12px;
	line-height: 18px;
}
body.tc-signin-page .tc-signin-footer p { margin: 0; color: #55657a; }
body.tc-signin-page .tc-signin-footer-links {
	display: flex;
	align-items: center;
	gap: 16px;
}
body.tc-signin-page .tc-signin-footer-links a {
	color: #55657a;
	font-weight: 500;
	font-size: 12px;
	line-height: 16px;
	text-decoration: underline;
}
body.tc-signin-page .tc-signin-footer-links a:hover { color: #2a3648; }



@media (max-width: 767px) {
	body.tc-signin-page .tc-signin-layout {
		flex-direction: column;
	}
	body.tc-signin-page .tc-signin-left {
		flex: 1 1 auto;
		padding: 16px;
		min-width: 0;
		justify-content: flex-start;
	}
	body.tc-signin-page .tc-signin-logo-wrap {
		position: static;
		justify-content: center;
		margin-bottom: 24px;
		margin-top: 32px;
	}
	body.tc-signin-page .tc-signin-right { display: none; }
	body.tc-signin-page .tc-signin-headline h1 {
		font-size: 24px;
		line-height: 30px;
	}
	body.tc-signin-page .tc-signin-footer {
		flex-direction: column;
		gap: 12px;
		text-align: center;
		padding: 16px;
	}
	body.tc-signin-page .tc-signin-footer-links {
		flex-wrap: wrap;
		justify-content: center;
		gap: 12px 16px;
	}
}

/* ============================================================
   TC-11809 Reset password page reskin (reset.php)
   Reuses `.tc-signin-page` body class for shared layout, form,
   footer. Adds a different right-side illustration: three stacked
   cards (mail → password reveal → check) connected by vertical
   lines, plus a cursor near the password input. Figma 789:2652
   (default) and 789:2737 (submitted).
   ============================================================ */

/* "Go Back" button rendered as an <a> styled to match .tc-signin-submit.
   Explicit text-align + color belt-and-suspenders so the anchor element
   doesn't fall back to default underline / blue link colour. */
body.tc-signin-page .tc-signin-submit-link {
	display: flex;
	align-items: center;
	justify-content: center;
	text-align: center;
	text-decoration: none;
	color: #ffffff;
	box-sizing: border-box;
}
body.tc-signin-page .tc-signin-submit-link:hover,
body.tc-signin-page .tc-signin-submit-link:focus,
body.tc-signin-page .tc-signin-submit-link:active {
	text-decoration: none;
	color: #ffffff;
}

/* Top mail card + Bottom check card — Figma 789:2678 and 789:2702.
   Outer 320×64 with #e8ecef bg, #d1d7de border, 8px radius, 8px padding.
   Inside: a white card (Frame 2119) with mail/check icon + two gray bars. */
body.tc-signin-page .tc-reset-card {
	position: absolute;
	left: 200px;
	width: 320px;
	height: 64px;
	background: #e8ecef;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	padding: 8px;
	box-sizing: border-box;
}
body.tc-signin-page .tc-reset-card-top { top: 272px; }
body.tc-signin-page .tc-reset-card-bottom { top: 696px; }
body.tc-signin-page .tc-reset-card-inner {
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 8px;
	height: 48px;
	padding: 12px 16px;
	box-sizing: border-box;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
}
body.tc-signin-page .tc-reset-card-icon {
	width: 24px;
	height: 24px;
	flex-shrink: 0;
	display: block;
}
body.tc-signin-page .tc-reset-card-bars {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-shrink: 0;
}
body.tc-signin-page .tc-reset-card-bar {
	background: #e8ecef;
	height: 12px;
	border-radius: 100px;
	display: block;
}
body.tc-signin-page .tc-reset-card-bar-lg { width: 80px; }
body.tc-signin-page .tc-reset-card-bar-sm { width: 40px; }

/* Vertical white lines connecting the cards (Figma 789:2677 and 789:2701).
   4px wide, 44px tall, aligned with the icon column of the top/bottom
   cards at panel-rel x=234. */
body.tc-signin-page .tc-reset-line {
	position: absolute;
	left: 234px;
	width: 4px;
	height: 44px;
	background: #ffffff;
}
body.tc-signin-page .tc-reset-line-top { top: 340px; }
body.tc-signin-page .tc-reset-line-bottom { top: 648px; }

/* Password card. 320×256 white card with a 312×178
   gradient cover at top and a pill-shaped password input below. */
body.tc-signin-page .tc-reset-pw {
	position: absolute;
	left: 200px;
	top: 388px;
	width: 320px;
	height: 256px;
	background: #ffffff;
	border-radius: 8px;
	padding: 8px;
	box-sizing: border-box;
}
body.tc-signin-page .tc-reset-pw-cover {
	position: absolute;
	left: 4px;
	top: 4px;
	width: 312px;
	height: 178px;
	border-radius: 4px;
	background-color: #e8ecef;
	/* Figma 789:2691 — same two-radial-gradient layout as the sign-in
	   profile cover but with the matrix-transformed gradients scaled to
	   the 312×178 cover area (Figma React export, verbatim). */
	background-image:
		url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 312 178' preserveAspectRatio='none'><defs><radialGradient id='g' gradientUnits='userSpaceOnUse' cx='0' cy='0' r='10' gradientTransform='matrix(1.5395 32.708 -15.087 3.3375 171.39 -60.075)'><stop offset='0' stop-color='%23F9DDF4' stop-opacity='1'/><stop offset='1' stop-color='%23F9DDF4' stop-opacity='0'/></radialGradient></defs><rect width='100%25' height='100%25' fill='url(%23g)'/></svg>"),
		url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 312 178' preserveAspectRatio='none'><defs><radialGradient id='g' gradientUnits='userSpaceOnUse' cx='0' cy='0' r='10' gradientTransform='matrix(-4.1053 32.04 -14.779 -8.9 266.84 -142.4)'><stop offset='0' stop-color='%2380E7E1' stop-opacity='1'/><stop offset='1' stop-color='%2380E7E1' stop-opacity='0'/></radialGradient></defs><rect width='100%25' height='100%25' fill='url(%23g)'/></svg>");
	background-size: 100% 100%, 100% 100%;
	background-repeat: no-repeat;
}
body.tc-signin-page .tc-reset-pw-content {
	position: absolute;
	left: 24px;
	top: 168px;
	width: 272px;
	display: flex;
	flex-direction: column;
	align-items: center;
}
body.tc-signin-page .tc-reset-pw-input {
	background: #f6f8f9;
	border: 4px solid #ffffff;
	border-radius: 100px;
	height: 48px;
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 8px 8px 8px 16px;
	box-sizing: border-box;
}
body.tc-signin-page .tc-reset-pw-text {
	font-family: 'DM Mono', 'Courier New', monospace;
	font-size: 20px;
	font-weight: 500;
	line-height: 20px;
	color: #2b384a;
	white-space: nowrap;
}
body.tc-signin-page .tc-reset-pw-button {
	background: #00868c;
	border-radius: 100px;
	width: 56px;
	height: 32px;
	display: block;
	flex-shrink: 0;
}

body.prodreports .ui-dashboard .tc-charges-section {
	margin-top: 40px;
}

body.prodreports .ui-dashboard .tc-charges-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 20px;
	gap: 16px;
}

body.prodreports .ui-dashboard .tc-charges-head h2 {
	margin: 0;
}

body.prodreports .ui-dashboard .tc-charges-date-range {
	flex-shrink: 0;
}

body.prodreports .ui-dashboard .tc-charges-detail {
	background: #fff;
	border: 1px solid #e8ecef;
	border-radius: 8px;
	margin-top: 8px;
	overflow-x: auto;
}

body.prodreports .ui-dashboard .tc-charges-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 13px;
}

body.prodreports .ui-dashboard .tc-charges-table th,
body.prodreports .ui-dashboard .tc-charges-table td {
	padding: 10px 12px;
	text-align: left;
	border-bottom: 1px solid #e8ecef;
	white-space: nowrap;
}

body.prodreports .ui-dashboard .tc-charges-table tbody tr:last-child td {
	border-bottom: none;
}

body.prodreports .ui-dashboard .tc-charges-table th {
	font-weight: 600;
	color: #697586;
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	background: #f8f9fa;
}

body.prodreports .ui-dashboard .charges-spinner {
	padding: 20px;
	display: flex;
	justify-content: center;
}

body.prodreports .ui-dashboard .tc-charges-toggle {
	width: 100%;
	margin-top: 10px;
	font-size: 12px;
	padding: 4px 10px;
}

body.prodreports .ui-dashboard .tc-badge-warn {
	background: #fff3cd;
	color: #856404;
	padding: 2px 8px;
	border-radius: 12px;
	font-size: 11px;
}

body.prodreports .ui-dashboard .tc-projections-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 20px;
	gap: 16px;
}

body.prodreports .ui-dashboard .tc-projections-head h2 {
	margin: 0;
}

body.prodreports .ui-dashboard .tc-projections-view-wrap {
	flex-shrink: 0;
}
body.prodreports .ui-dashboard .tc-projections-controls {
	display: flex;
	gap: 8px;
	align-items: center;
}

body.prodreports .ui-dashboard .tc-projections-subtitle {
	color: #697586;
	font-size: 13px;
	margin: 4px 0 0 0;
}

body.prodreports .ui-dashboard #graph-projections {
	min-height: 280px;
}
body.prodreports .ui-dashboard #projections .tc-chart-body {
	height: 320px;
	padding-bottom: 0;
}

body.prodreports .ui-dashboard #projections .tc-chart-head > div {
	flex: 1 1 auto;
	min-width: 0;
}
body.prodreports .ui-dashboard #projections .tc-chart-head > div > h2 {
	margin: 0;
	font-family: Inter, sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
	letter-spacing: 0;
}

body.prodreports .ui-dashboard .tc-projections-schedule {
	margin-top: 40px;
}
body.prodreports .ui-dashboard .tc-projections-schedule > h2 {
	font-family: Inter, sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
	letter-spacing: 0;
	margin: 0 0 16px 0;
}
body.prodreports .ui-dashboard .tc-projections-schedule .tc-table-wrap {
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 12px;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
	overflow: hidden;
}
body.prodreports .ui-dashboard .tc-projections-schedule .tc-table {
	margin: 0;
}
body.prodreports .ui-dashboard .tc-projections-schedule .tc-table thead th:first-child {
	padding-left: 24px;
}
body.prodreports .ui-dashboard .tc-projections-schedule .tc-table tbody td:first-child {
	padding-left: 24px;
}

/* Cursor — purple arrow at panel-rel (416, 596), 20×20.
   `-scale-x-100` from Figma React = horizontal flip. */
body.tc-signin-page .tc-reset-cursor {
	position: absolute;
	left: 416px;
	top: 596px;
	width: 20px;
	height: 20px;
	transform: scaleX(-1);
	pointer-events: none;
	display: block;
}

/* Funnel breakdown Sankey (Products & Sales › Funnels tab) */
body.prodreports #funnel-viz {
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 12px;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	padding: 24px;
	box-sizing: border-box;
	width: 100%;
	margin: 0;
	font-family: 'Inter', sans-serif;
}

body.prodreports #funnel-viz .tc-fv-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	flex-wrap: wrap;
	margin-bottom: 8px;
}

body.prodreports #funnel-viz .tc-fv-title {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
	letter-spacing: 0;
}

body.prodreports #funnel-viz .tc-fv-sub {
	font-size: 13px;
	color: #8493a8;
	margin: 2px 0 22px;
	max-width: 64ch;
	line-height: 1.5;
}

body.prodreports #funnel-viz .tc-fv-measure {
	display: inline-flex;
	background: #f6f8f9;
	border: 1px solid #e8ecef;
	border-radius: 8px;
	padding: 3px;
	gap: 2px;
}

body.prodreports #funnel-viz .tc-fv-measure button {
	appearance: none;
	border: 0;
	background: transparent;
	cursor: pointer;
	font-family: inherit;
	font-size: 13px;
	font-weight: 500;
	color: #8493a8;
	padding: 6px 14px;
	border-radius: 6px;
	white-space: nowrap;
	transition: color 0.18s cubic-bezier(0.22, 0.61, 0.36, 1), background 0.18s cubic-bezier(0.22, 0.61, 0.36, 1), box-shadow 0.18s cubic-bezier(0.22, 0.61, 0.36, 1);
}

body.prodreports #funnel-viz .tc-fv-measure button:hover {
	color: #2a3648;
}

body.prodreports #funnel-viz .tc-fv-measure button.active {
	background: #ffffff;
	color: #2a3648;
	font-weight: 600;
	box-shadow: 0 1px 2px rgba(16, 24, 40, 0.10);
}

body.prodreports #funnel-viz .tc-fv-canvas {
	min-height: 320px;
	position: relative;
}

body.prodreports #funnel-viz .fv-cap {
	margin-top: 16px;
	padding-top: 16px;
	border-top: 1px solid #e8ecef;
	font-size: 12px;
	color: #8493a8;
}

/* gradient Sankey flow */
body.prodreports #funnel-viz .fv-sankey {
	width: 100%;
	position: relative;
}

body.prodreports #funnel-viz .fv-sankey svg {
	display: block;
	width: 100%;
	height: auto;
	overflow: visible;
}

body.prodreports #funnel-viz .fv-link {
	transition: opacity 0.25s cubic-bezier(0.22, 0.61, 0.36, 1);
	cursor: pointer;
}

body.prodreports #funnel-viz .fv-node {
	transition: opacity 0.25s cubic-bezier(0.22, 0.61, 0.36, 1);
}

body.prodreports #funnel-viz .fv-sankey.has-focus .fv-link:not(.is-active) {
	opacity: 0.4;
}

body.prodreports #funnel-viz .fv-sankey.has-focus .fv-node:not(.is-active) {
	opacity: 0.55;
}

body.prodreports #funnel-viz .fv-sankey .nlabel {
	font: 600 13px 'Inter', sans-serif;
	fill: #2a3648;
}

body.prodreports #funnel-viz .fv-sankey .nsub {
	font: 500 11.5px 'Inter', sans-serif;
	fill: #8493a8;
}

body.prodreports #funnel-viz .fv-sankey .src-kicker {
	font: 600 10.5px 'Inter', sans-serif;
	fill: #8493a8;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

body.prodreports #funnel-viz .fv-sankey .src-name {
	font: 700 15px 'Inter', sans-serif;
	fill: #28364a;
}

body.prodreports #funnel-viz .fv-sankey .src-big {
	font: 700 28px 'Inter', sans-serif;
	fill: #28364a;
	letter-spacing: -0.01em;
}

body.prodreports #funnel-viz .fv-sankey .src-rev {
	font: 600 13px 'Inter', sans-serif;
	fill: #006b70;
}

body.prodreports #funnel-viz .fv-tip {
	position: absolute;
	pointer-events: none;
	background: #161b26;
	color: #ffffff;
	border-radius: 10px;
	padding: 10px 12px;
	font-size: 12px;
	line-height: 1.5;
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.22);
	opacity: 0;
	transform: translateY(4px);
	transition: opacity 0.15s ease, transform 0.15s ease;
	z-index: 20;
	white-space: nowrap;
}

body.prodreports #funnel-viz .fv-tip.show {
	opacity: 1;
	transform: translateY(0);
}

body.prodreports #funnel-viz .fv-tip b {
	font-weight: 600;
}

body.prodreports #funnel-viz .fv-tip .k {
	color: #9aa6b8;
	font-weight: 500;
}

body.prodreports #funnel-viz .fv-tip .hd {
	font-weight: 700;
	margin-bottom: 4px;
	display: flex;
	align-items: center;
	gap: 7px;
}

body.prodreports #funnel-viz .fv-tip .sw {
	width: 9px;
	height: 9px;
	border-radius: 3px;
	display: inline-block;
}

/* mobile */
@media (max-width: 767px) {
	body.prodreports #funnel-viz {
		padding: 18px;
	}
	body.prodreports #funnel-viz .tc-fv-head {
		flex-direction: column;
		align-items: flex-start;
	}
	body.prodreports #funnel-viz .tc-fv-measure-slot {
		width: 100%;
	}
	body.prodreports #funnel-viz .tc-fv-measure {
		width: 100%;
	}
	body.prodreports #funnel-viz .tc-fv-measure button {
		flex: 1;
		text-align: center;
	}
}

/* Reskin report tables: text/identifier columns left, numbers (and headers) right. */

/* numbers from col 2 — one leading text column */
body.prodreports .ui-dashboard #top-coupon-table thead th:nth-child(n+2):not(.tc-col-tx),
body.prodreports .ui-dashboard #top-coupon-table tbody td:nth-child(n+2):not(.tc-col-tx) {
	text-align: right;
}

/* numbers from col 3 — two leading text columns */
body.prodreports .ui-dashboard #top-seller-table thead th:nth-child(n+3):not(.tc-col-tx),
body.prodreports .ui-dashboard #top-seller-table tbody td:nth-child(n+3):not(.tc-col-tx),
body.prodreports .ui-dashboard #funnels-table thead th:nth-child(n+3):not(.tc-col-tx),
body.prodreports .ui-dashboard #funnels-table tbody td:nth-child(n+3):not(.tc-col-tx),
body.prodreports .ui-dashboard #top-funnel-table thead th:nth-child(n+3):not(.tc-col-tx),
body.prodreports .ui-dashboard #top-funnel-table tbody td:nth-child(n+3):not(.tc-col-tx),
body.prodreports .ui-dashboard #most-sold-products-table thead th:nth-child(n+3):not(.tc-col-tx),
body.prodreports .ui-dashboard #most-sold-products-table tbody td:nth-child(n+3):not(.tc-col-tx) {
	text-align: right;
}

/* numbers from col 4 — three leading text columns */
body.prodreports .ui-dashboard #top-affiliates-table thead th:nth-child(n+4):not(.tc-col-tx),
body.prodreports .ui-dashboard #top-affiliates-table tbody td:nth-child(n+4):not(.tc-col-tx),
body.prodreports .ui-dashboard #most-refunded-product-table thead th:nth-child(n+4):not(.tc-col-tx),
body.prodreports .ui-dashboard #most-refunded-product-table tbody td:nth-child(n+4):not(.tc-col-tx),
body.prodreports .ui-dashboard #most-refunded-affiliates-table thead th:nth-child(n+4):not(.tc-col-tx),
body.prodreports .ui-dashboard #most-refunded-affiliates-table tbody td:nth-child(n+4):not(.tc-col-tx) {
	text-align: right;
}

.tc-col-tx { text-align: center; }
/* Overrides the default text-align: left on prodreports table headers for transaction columns */
body.prodreports .ui-dashboard .tc-table thead th.tc-col-tx { text-align: center; }
/* [data-col] (0,2,1) beats .tc-col-tx (0,1,0) on td — restore center */
body.prodreports .ui-dashboard .tc-table tbody td[data-col].tc-col-tx { text-align: center; }

.alertify .ajs-dialog.tc-modal-gdpr,
.alertify .ajs-dialog.tc-modal-terms202208 {
	max-width: 440px;
	border-radius: 16px;
	overflow: hidden;
	box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);
}

.alertify .ajs-dialog.tc-modal-gdpr .ajs-header,
.alertify .ajs-dialog.tc-modal-terms202208 .ajs-header {
	font-family: Inter, sans-serif;
	font-size: 16px;
	font-weight: 600;
	color: #161825;
	padding: 24px 24px 12px;
	border-bottom: none;
}

.alertify .ajs-dialog.tc-modal-gdpr .ajs-body .ajs-content,
.alertify .ajs-dialog.tc-modal-terms202208 .ajs-body .ajs-content {
	padding: 0 24px 8px;
	font-family: Inter, sans-serif;
	font-size: 14px;
	color: #555e6d;
	line-height: 1.5;
}

.alertify .ajs-dialog.tc-modal-gdpr .ui-documentation .generic-list,
.alertify .ajs-dialog.tc-modal-terms202208 .ui-documentation .generic-list {
	border: 1px solid #e8ecef;
	border-radius: 10px;
	overflow: hidden;
	margin: 12px 0;
}

.alertify .ajs-dialog.tc-modal-gdpr .ui-documentation .generic-list li,
.alertify .ajs-dialog.tc-modal-terms202208 .ui-documentation .generic-list li {
	border-bottom: 1px solid #e8ecef;
	padding: 12px 16px;
}

.alertify .ajs-dialog.tc-modal-gdpr .ui-documentation .generic-list li:last-child,
.alertify .ajs-dialog.tc-modal-terms202208 .ui-documentation .generic-list li:last-child {
	border-bottom: none;
}

.alertify .ajs-dialog.tc-modal-gdpr .ajs-footer,
.alertify .ajs-dialog.tc-modal-terms202208 .ajs-footer {
	padding: 16px 24px;
	border-top: 1px solid #f0f2f5;
	background: #fff;
}

.alertify .ajs-dialog.tc-modal-gdpr .ajs-footer button.ajs-button,
.alertify .ajs-dialog.tc-modal-terms202208 .ajs-footer button.ajs-button {
	appearance: none;
	-webkit-appearance: none;
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 500;
	border-radius: 8px;
	padding: 9px 20px;
	border: 1px solid #e8ecef;
	background: #fff;
	color: #364152;
	text-transform: none;
	letter-spacing: 0;
	box-shadow: none;
	cursor: pointer;
	transition: background-color 150ms, border-color 150ms;
}

.alertify .ajs-dialog.tc-modal-gdpr .ajs-footer button.ajs-button.ajs-ok,
.alertify .ajs-dialog.tc-modal-terms202208 .ajs-footer button.ajs-button.ajs-ok {
	background: #006b70;
	border-color: #006b70;
	color: #fff;
}

.alertify .ajs-dialog.tc-modal-gdpr .ajs-footer button.ajs-button.ajs-ok:hover,
.alertify .ajs-dialog.tc-modal-terms202208 .ajs-footer button.ajs-button.ajs-ok:hover {
	background: #00585c;
	border-color: #00585c;
}

.alertify .ajs-dialog.tc-modal-twofa {
	max-width: 400px !important;
	border-radius: 16px;
	overflow: hidden;
	box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);
}

.alertify .ajs-dialog.tc-modal-twofa .ajs-header {
	font-family: Inter, sans-serif;
	font-size: 16px;
	font-weight: 600;
	color: #161825;
	padding: 24px 24px 0;
	border-bottom: none;
	white-space: normal;
	text-align: center;
}

.alertify .ajs-dialog.tc-modal-twofa .ui-content {
	padding: 16px 24px 8px;
}

.alertify .ajs-dialog.tc-modal-twofa .ui-content .img {
	max-width: 80px;
	width: 100%;
}

.alertify .ajs-dialog.tc-modal-twofa .ajs-footer {
	padding: 16px 24px;
	border-top: 1px solid #f0f2f5;
	background: #fff;
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.alertify .ajs-dialog.tc-modal-twofa .ajs-footer .ajs-buttons {
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.alertify .ajs-dialog.tc-modal-twofa .ajs-footer button.ajs-button {
	appearance: none;
	-webkit-appearance: none;
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 500;
	border-radius: 8px;
	margin: 0;
	padding: 9px 20px;
	border: 1px solid #e8ecef;
	background: #fff;
	color: #364152;
	text-transform: none;
	letter-spacing: 0;
	box-shadow: none;
	cursor: pointer;
	transition: background-color 150ms, border-color 150ms;
	width: 100%;
	box-sizing: border-box;
}

.alertify .ajs-dialog.tc-modal-twofa .ajs-footer button.ajs-button.ajs-ok {
	background: #006b70;
	border-color: #006b70;
	color: #fff;
	order: -1;
}

.alertify .ajs-dialog.tc-modal-twofa .ajs-footer button.ajs-button.ajs-ok:hover {
	background: #00585c;
	border-color: #00585c;
}

.alertify .ajs-dialog.tc-modal-twofa .ajs-footer button.ajs-button.ajs-cancel:hover {
	background: #f6f8f9;
}

body.prodreports .ui-dashboard .tc-sub-view-link {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	margin-top: 12px;
	padding: 0;
	background: none;
	border: none;
	color: #00a6aa;
	font-size: 12px;
	font-weight: 500;
	cursor: pointer;
	letter-spacing: 0.01em;
	font-family: inherit;
	transition: opacity 0.15s;
	text-decoration: none;
}
body.prodreports .ui-dashboard .tc-sub-view-link:disabled,
body.prodreports .ui-dashboard .tc-sub-view-link[disabled] {
	color: #c1c7d0;
	cursor: not-allowed;
	pointer-events: none;
}
body.prodreports .ui-dashboard .tc-sub-view-link:hover {
	opacity: 0.7;
	text-decoration: underline;
}
body.prodreports .ui-dashboard .tc-sub-view-link svg {
	transition: transform 0.15s;
	flex-shrink: 0;
}
body.prodreports .ui-dashboard .tc-sub-view-link:hover svg {
	transform: translateX(2px);
}
body.prodreports .ui-dashboard .tc-sub-view-link:focus-visible {
	outline: 2px solid #006b70;
	outline-offset: 2px;
}

body.prodreports .tc-sub-drawer {
	position: fixed;
	bottom: 0;
	opacity: 0;
	pointer-events: none;
	background: #fff;
	z-index: 50;
	display: flex;
	flex-direction: column;
	transition: opacity 0.18s ease;
}
body.prodreports .tc-sub-drawer.open {
	opacity: 1;
	pointer-events: auto;
}
body.prodreports .tc-sub-drawer-header {
	display: flex;
	align-items: center;
	padding: 24px 32px 20px;
	border-bottom: 1px solid #f0f2f4;
	flex-shrink: 0;
	gap: 8px;
}
body.prodreports .tc-sub-drawer-title-text {
	min-width: 0;
}
body.prodreports .tc-sub-drawer-title {
	font-size: 24px;
	font-weight: 600;
	color: #364152;
	margin: 0;
	line-height: 32px;
}
body.prodreports .tc-sub-drawer-count {
	display: inline-block;
	font-size: 13px;
	font-weight: 400;
	color: #697586;
	white-space: nowrap;
}
body.prodreports .tc-sub-drawer-back {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	background: #f0f2f4;
	border: none;
	border-radius: 8px;
	cursor: pointer;
	color: #364152;
	transition: background 0.15s, color 0.15s;
	flex-shrink: 0;
	padding: 0;
}
body.prodreports .tc-sub-drawer-back:hover {
	background: #e4e7ec;
	color: #1d2939;
}
body.prodreports .tc-sub-drawer-export {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin-left: auto;
	padding: 8px 14px;
	height: 36px;
	background: #006b70;
	border: 0;
	border-radius: 8px;
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #ffffff;
	cursor: pointer;
	transition: background 120ms;
	white-space: nowrap;
	flex-shrink: 0;
}
body.prodreports .tc-sub-drawer-export:hover {
	background: #005559;
}
body.prodreports .tc-sub-drawer-filters {
	display: flex;
	gap: 4px;
	padding: 12px 32px;
	border-bottom: 1px solid #f0f2f4;
	flex-shrink: 0;
}
body.prodreports .tc-sub-filter-btn {
	padding: 6px 14px;
	border: 1px solid #e4e7ec;
	border-radius: 20px;
	background: #fff;
	font-family: Inter, sans-serif;
	font-size: 13px;
	font-weight: 500;
	color: #697586;
	cursor: pointer;
	transition: background 120ms, color 120ms, border-color 120ms;
	white-space: nowrap;
}
body.prodreports .tc-sub-filter-btn:hover {
	background: #f5f6f7;
	color: #364152;
}
body.prodreports .tc-sub-filter-btn.active {
	background: #e6f4f4;
	border-color: #006b70;
	color: #006b70;
}
body.prodreports .tc-sub-drawer-back:focus-visible,
body.prodreports .tc-sub-drawer-export:focus-visible,
body.prodreports .tc-sub-filter-btn:focus-visible {
	outline: 2px solid #006b70;
	outline-offset: 2px;
}
body.prodreports .tc-sub-drawer-body {
	flex: 1;
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
}
body.prodreports .tc-sub-drawer-spinner {
	padding: 64px;
	display: flex;
	justify-content: center;
}
body.prodreports .tc-sub-drawer-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 13.5px;
}
body.prodreports .tc-sub-drawer-table thead th {
	position: sticky;
	top: 0;
	font-weight: 600;
	color: #6b7280;
	font-size: 11.5px;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	background: #f9fafb;
	padding: 12px 24px;
	border-bottom: 1px solid #e8ecef;
	text-align: left;
	white-space: nowrap;
	z-index: 1;
}
body.prodreports .tc-sub-drawer-table thead th:first-child { padding-left: 40px; }
body.prodreports .tc-sub-drawer-table tbody td {
	padding: 15px 24px;
	text-align: left;
	border-bottom: 1px solid #f3f4f6;
	color: #374151;
	font-size: 13.5px;
	white-space: nowrap;
}
body.prodreports .tc-sub-drawer-table tbody td:first-child { padding-left: 40px; }
body.prodreports .tc-sub-drawer-table tbody tr:hover td {
	background: #f9fafb;
}
body.prodreports .tc-sub-drawer-table tbody tr:last-child td {
	border-bottom: none;
}
body.prodreports .tc-sub-drawer-empty {
	padding: 72px 32px;
	text-align: center;
	color: #9ca3af;
	font-size: 14px;
}
body.prodreports #projections-table th:nth-child(3),
body.prodreports #projections-table td:nth-child(3) {
	text-align: right;
}
body.prodreports #cohort-table th:not(:first-child),
body.prodreports #cohort-table td:not(:first-child) {
	text-align: right;
}
body.prodreports .tc-sub-drawer-table .tc-num,
body.prodreports #projections-table .tc-num {
	text-align: right;
}
body.prodreports .tc-sub-drawer-table .tc-sub-customer-link,
body.prodreports .tc-sub-drawer-table .tc-sub-customer-link:link,
body.prodreports .tc-sub-drawer-table .tc-sub-customer-link:visited {
	color: #00a6aa;
	text-decoration: none;
}
body.prodreports .tc-sub-drawer-table .tc-sub-customer-link:hover {
	text-decoration: underline;
}
body.prodreports .tc-sub-drawer-table .tc-sub-customer-link:focus-visible {
	outline: 2px solid #006b70;
	outline-offset: 2px;
}

/* Customer Hub admin settings — scoped to body.tc-customerhub-page. */
body.tc-customerhub-page,
body.tc-customerhub-page #layout,
body:has(.tc-customerhub-page),
body:has(.tc-customerhub-page) #layout {
	background: #ffffff;
}
/* Legacy global .footer overflows ~160px at 1280-wide; clip horizontal scroll. */
html:has(body.tc-customerhub-page),
body.tc-customerhub-page {
	overflow-x: clip;
}

/* Drop the chrome's right gutter so the page reaches the right edge. */
body.tc-customerhub-page #tc-sidebar ~ #layout,
body:has(.tc-customerhub-page) #tc-sidebar ~ #layout {
	margin-left: 224px !important;
	margin-right: 0 !important;
	margin-top: 0 !important;
}
/* Desktop only — mobile shell still needs its 56px top padding for the top-bar. */
@media (min-width: 768px) {
	body.tc-customerhub-page {
		padding-top: 0 !important;
	}
}
body.tc-customerhub-page #body.content,
body:has(.tc-customerhub-page) #body.content {
	margin-top: 0 !important;
}

/* :not(body) so this doesn't apply to body itself (which carries the same class). */
.tc-customerhub-page:not(body) {
	font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
	color: #364152;
	letter-spacing: 0;
	width: 100%;
	max-width: 1216px;
	margin: 0 auto;
	padding: 32px 32px 64px 32px;
	box-sizing: border-box;
	background: #ffffff;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 19px;
}
/* Beat the global `h1..h6 { letter-spacing: -1px }`. */
.tc-customerhub-page h1,
.tc-customerhub-page h2,
.tc-customerhub-page h3,
.tc-customerhub-page h4,
.tc-customerhub-page h5,
.tc-customerhub-page h6,
.tc-customerhub-page input,
.tc-customerhub-page select,
.tc-customerhub-page textarea,
.tc-customerhub-page button {
	letter-spacing: 0;
}
.tc-customerhub-page > * {
	width: 100%;
	box-sizing: border-box;
}
.tc-customerhub-page > .tc-customerhub-url-field {
	width: 525px;
	max-width: 100%;
}

.tc-customerhub-page .tc-customerhub-head {
	min-height: 57px;
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	margin: 0;
}

.tc-customerhub-page .tc-customerhub-breadcrumb {
	display: flex;
	align-items: center;
	gap: 4px;
	margin: 0 0 0 0;
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #8493a8;
	white-space: nowrap;
}
.tc-customerhub-page .tc-customerhub-breadcrumb-sep {
	display: inline-block;
	width: 14px;
	height: 14px;
	background-image: url("/static/icons/customerhub/breadcrumb-chevron.svg");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 14px 14px;
	text-indent: -9999px;
	overflow: hidden;
}

.tc-customerhub-page .tc-customerhub-title {
	margin: 0;
	padding: 0;
	border: 0;
	font-family: Inter, sans-serif;
	font-size: 20px;
	font-weight: 500;
	line-height: 28px;
	color: #364152;
	letter-spacing: 0;
	white-space: nowrap;
}

.tc-customerhub-page .tc-customerhub-preview-btn {
	position: absolute;
	right: 0;
	top: 11px;
	display: inline-flex;
	align-items: center;
	gap: 0;
	height: 36px;
	padding: 7px 13px;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #2b384a;
	text-decoration: none;
	white-space: nowrap;
	box-sizing: border-box;
}
.tc-customerhub-page .tc-customerhub-preview-btn:hover {
	background: #f6f8f9;
	color: #2b384a;
	text-decoration: none;
}
.tc-customerhub-page .tc-customerhub-preview-btn .tc-customerhub-icon-callmade {
	display: inline-block;
	width: 16px;
	height: 16px;
	background-color: currentcolor;
	-webkit-mask-image: url("/static/icons/customerhub/call_made.svg");
	mask-image: url("/static/icons/customerhub/call_made.svg");
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-size: 10px 10px;
	mask-size: 10px 10px;
}
.tc-customerhub-page .tc-customerhub-preview-btn i {
	display: none;
}

.tc-customerhub-page .tc-customerhub-banner {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	padding: 16px;
	margin: 0;
	border-radius: 0;
	box-sizing: border-box;
}
.tc-customerhub-page .tc-customerhub-banner-info {
	background: #bee3f8;
}
.tc-customerhub-page .tc-customerhub-banner-warning {
	background: #fee9da;
}
.tc-customerhub-page .tc-customerhub-banner-icon {
	flex: 0 0 32px;
	width: 32px;
	height: 32px;
	display: inline-block;
	background-repeat: no-repeat;
	background-position: center;
}
.tc-customerhub-page .tc-customerhub-banner-icon i {
	display: none;
}
.tc-customerhub-page .tc-customerhub-banner-info .tc-customerhub-banner-icon {
	background-image: url("/static/icons/customerhub/banner-info.svg");
	background-size: 26.67px 26.67px;
}
.tc-customerhub-page .tc-customerhub-banner-warning .tc-customerhub-banner-icon {
	background-image: url("/static/icons/customerhub/banner-warning.svg");
	background-size: 25.42px 22.68px;
}
.tc-customerhub-page .tc-customerhub-banner-body {
	flex: 1 1 0;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 2px;
	justify-content: center;
}
.tc-customerhub-page .tc-customerhub-banner-title {
	margin: 0;
	font-family: Inter, sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #2a3648;
}
.tc-customerhub-page .tc-customerhub-banner-text {
	margin: 0;
	font-family: Inter, sans-serif;
	font-size: 16px;
	font-weight: 400;
	line-height: 24px;
	color: #364152;
}
.tc-customerhub-page .tc-customerhub-banner-text b,
.tc-customerhub-page .tc-customerhub-banner-text strong {
	font-weight: 700;
}
.tc-customerhub-page .tc-customerhub-banner-close {
	flex: 0 0 auto;
	width: 32px;
	height: 32px;
	padding: 8px;
	background: transparent;
	border: 0;
	border-radius: 6px;
	cursor: pointer;
	mix-blend-mode: multiply;
	box-sizing: border-box;
	color: #2a3648;
	background-color: currentcolor;
	-webkit-mask-image: url("/static/icons/customerhub/banner-close.svg");
	mask-image: url("/static/icons/customerhub/banner-close.svg");
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-size: 8.79px 8.79px;
	mask-size: 8.79px 8.79px;
}
.tc-customerhub-page .tc-customerhub-banner-close i {
	display: none;
}

.tc-customerhub-page .tc-customerhub-field {
	display: flex;
	flex-direction: column;
	gap: 4px;
	margin: 0;
	box-sizing: border-box;
}

.tc-customerhub-page label.tc-customerhub-label,
.tc-customerhub-page .tc-customerhub-label > span:not(.tc-customerhub-label-icon):not(.tc-customerhub-label-optional) {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	margin: 0;
	font-family: Inter, sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #2b384a;
}
/* Mask on the inner <i> so hint.css's tooltip pseudo on the span isn't clipped. */
.tc-customerhub-page .tc-customerhub-label-icon {
	display: inline-block;
	width: 16px;
	height: 16px;
	vertical-align: middle;
	cursor: help;
}
.tc-customerhub-page .tc-customerhub-label-icon > i {
	display: block;
	width: 100%;
	height: 100%;
	font-size: 0;
	background-color: #8493a8;
	-webkit-mask-image: url("/static/icons/customerhub/label-info.svg");
	mask-image: url("/static/icons/customerhub/label-info.svg");
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-size: 13.33px 13.33px;
	mask-size: 13.33px 13.33px;
}
.tc-customerhub-page .tc-customerhub-label > span.tc-customerhub-label-optional,
.tc-customerhub-page .tc-customerhub-label-optional {
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #8593a8;
}

.tc-customerhub-page .tc-customerhub-input,
.tc-customerhub-page .tc-customerhub-form input[type="text"],
.tc-customerhub-page .tc-customerhub-form input[type="email"],
.tc-customerhub-page .tc-customerhub-form input[type="url"] {
	width: 100%;
	margin: 0;
	padding: 14px 8px;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #364152;
	box-sizing: border-box;
}
.tc-customerhub-page .tc-customerhub-input:focus,
.tc-customerhub-page .tc-customerhub-form input[type="text"]:focus,
.tc-customerhub-page .tc-customerhub-form input[type="email"]:focus,
.tc-customerhub-page .tc-customerhub-form input[type="url"]:focus {
	outline: none;
	border-color: #006b70;
}

.tc-customerhub-page .tc-customerhub-form select {
	width: 100%;
	height: 48px;
	margin: 0;
	padding: 0 32px 0 16px;
	letter-spacing: 0;
	background-color: #ffffff;
	border: 1px solid #e7ebee;
	border-radius: 4px;
	font-family: Inter, sans-serif;
	font-size: 16px;
	font-weight: 400;
	line-height: 24px;
	color: #364152;
	box-sizing: border-box;
	appearance: none;
	-webkit-appearance: none;
	background-image: url("/static/icons/customerhub/select-chevron.svg");
	background-repeat: no-repeat;
	background-position: right 16px center;
	background-size: 12px 7.41px;
}
.tc-customerhub-page .tc-customerhub-form select:focus {
	outline: none;
	border-color: #006b70;
}

.tc-customerhub-page .tc-customerhub-input-readonly {
	background: #e8ecef;
	color: #364152;
	cursor: text;
}

.tc-customerhub-page .tc-customerhub-field-hint {
	margin: 0;
	font-family: Inter, sans-serif;
	font-size: 12px;
	font-weight: 400;
	line-height: 16px;
	color: #8493a8;
}

.tc-customerhub-page .tc-customerhub-field-hint-13 {
	font-size: 13px;
	line-height: 20px;
	color: #8593a8;
}

.tc-customerhub-page .tc-customerhub-url-field {
	max-width: 525px;
	margin: 0;
}
.tc-customerhub-page .tc-customerhub-url-input-wrap {
	position: relative;
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 14px 8px;
	background: #e8ecef;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	box-sizing: border-box;
}
.tc-customerhub-page .tc-customerhub-url-input {
	flex: 1 1 0;
	min-width: 0;
	background: transparent;
	border: 0;
	padding: 0;
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #364152;
}
.tc-customerhub-page .tc-customerhub-url-input:focus {
	outline: none;
}
.tc-customerhub-page .tc-customerhub-copy-btn {
	flex: 0 0 24px;
	width: 24px;
	height: 24px;
	display: inline-block;
	background: transparent;
	border: 0;
	padding: 0;
	cursor: pointer;
	color: #364152;
	background-color: currentcolor;
	-webkit-mask-image: url("/static/icons/customerhub/copy.svg");
	mask-image: url("/static/icons/customerhub/copy.svg");
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-size: 11.33px 13.33px;
	mask-size: 11.33px 13.33px;
}
.tc-customerhub-page .tc-customerhub-copy-btn i {
	display: none;
}
.tc-customerhub-page .tc-customerhub-copy-btn:hover {
	color: #006b70;
}
.tc-customerhub-page .tc-customerhub-copy-btn:active {
	opacity: 0.6;
}
/* clipboard.js toggles `.clipboard-clicked` for ~1s on success. */
.tc-customerhub-page .tc-customerhub-copy-btn.clipboard-clicked {
	color: #006b70;
	-webkit-mask-image: url("/static/icons/customerhub/checkbox-check.svg");
	mask-image: url("/static/icons/customerhub/checkbox-check.svg");
	-webkit-mask-size: 14px 14px;
	mask-size: 14px 14px;
}

.tc-customerhub-page .tc-customerhub-card {
	background: #ffffff;
	border: 1px solid #e8edef;
	border-radius: 10px;
	padding: 0;
	margin: 0;
	box-sizing: border-box;
}
/* Match the outer page wrapper's 19px gap. */
.tc-customerhub-page .tc-customerhub-form {
	display: flex;
	flex-direction: column;
	gap: 19px;
}
/* Inset margins so the bottom border doesn't span edge-to-edge. */
.tc-customerhub-page .tc-customerhub-card-head {
	display: flex;
	align-items: center;
	padding: 0;
	border-bottom: 1px solid #e8ecef;
	margin: 24px 77px 0 40px;
	box-sizing: border-box;
}
.tc-customerhub-page .tc-customerhub-card-customise > .tc-customerhub-card-head {
	height: 39px;
}
.tc-customerhub-page .tc-customerhub-card-cancellation > .tc-customerhub-card-head {
	height: 50px;
}
.tc-customerhub-page .tc-customerhub-card-title {
	margin: 0;
	padding: 0;
	border: 0;
	font-family: Inter, sans-serif;
	font-size: 20px;
	font-weight: 500;
	line-height: 28px;
	color: #2a3648;
}

.tc-customerhub-page .tc-customerhub-card-body {
	display: flex;
	flex-direction: column;
	gap: 24px;
	padding: 24px 39px 40px 39px;
	box-sizing: border-box;
}

.tc-customerhub-page .tc-customerhub-field-language {
	max-width: 501px;
}

/* Card body's 24px gap accounts for 24 of the 42px Figma gap above the banner; add the remaining 18 here. */
.tc-customerhub-page .tc-customerhub-card-body .tc-customerhub-banner {
	margin: 18px 0 0 0;
}

/* items-start so the two fields stay their own heights (96 / 196) instead of stretching. */
.tc-customerhub-page .tc-customerhub-row-2col {
	display: flex;
	gap: 24px;
	align-items: flex-start;
}
.tc-customerhub-page .tc-customerhub-row-2col > .tc-customerhub-field {
	flex: 1 1 0;
	min-width: 0;
}

.tc-customerhub-page .tc-customerhub-row-2col > .tc-customerhub-field:has(.tc-customerhub-wysiwyg) {
	height: 196px;
}

.tc-customerhub-page .tc-customerhub-wysiwyg {
	position: relative;
	display: flex;
	flex-direction: column;
	flex: 1 1 0;
	min-height: 0;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	overflow: hidden;
}
.tc-customerhub-page .tc-customerhub-wysiwyg .wysiwyg-toolbar {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	z-index: 2;
	display: flex;
	gap: 4px;
	padding: 6px 8px;
	background: #ffffff;
	border-bottom: 1px solid #e8ecef;
	border-radius: 8px 8px 0 0;
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity 0.15s ease, visibility 0.15s ease;
}
.tc-customerhub-page .tc-customerhub-wysiwyg:focus-within .wysiwyg-toolbar {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
}
.tc-customerhub-page .tc-customerhub-wysiwyg:focus-within .wysiwyg-body {
	padding-top: 44px;
}
.tc-customerhub-page .tc-customerhub-wysiwyg .wysiwyg-toolbar button {
	height: 24px;
	padding: 0 6px;
	background: transparent;
	border: 0;
	border-radius: 4px;
	color: #5e6b80;
	font-family: Inter, sans-serif;
	font-size: 12px;
	font-weight: 500;
	cursor: pointer;
}
.tc-customerhub-page .tc-customerhub-wysiwyg .wysiwyg-toolbar button:hover {
	background: #f1f4f7;
}
.tc-customerhub-page .tc-customerhub-wysiwyg .wysiwyg-body {
	flex: 1 1 0;
	min-height: 0;
	padding: 8px;
	background: transparent;
	border: 0;
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #364152;
	outline: none;
	box-sizing: border-box;
}
/* `:has(.ql-blank)` is Quill's "empty editor" signal — `:empty` stops matching once Quill mounts. */
.tc-customerhub-page .tc-customerhub-wysiwyg .wysiwyg-body:not(:focus-within):empty::before,
.tc-customerhub-page .tc-customerhub-wysiwyg .wysiwyg-body:not(:focus-within):has(.ql-blank)::before,
.tc-customerhub-page .tc-customerhub-wysiwyg .wysiwyg-body:not(:focus-within):has(br:only-child)::before {
	content: attr(data-placeholder);
	color: #8493a8;
}

.tc-customerhub-page .tc-customerhub-uploader {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 10px;
	padding: 48px;
	background: #ffffff;
	border: 2px dashed #e8ecef;
	border-radius: 8px;
	box-sizing: border-box;
	margin: 0;
	width: 100%;
}
/* The file input is transparent and absolutely placed, so surface keyboard focus on the dropzone. */
.tc-customerhub-page .tc-customerhub-uploader:focus-within {
	outline: 2px solid #006b70;
	outline-offset: 2px;
}
.tc-customerhub-page .tc-customerhub-uploader-inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
	width: auto;
	max-width: none;
	padding: 0;
}
/* Stacked tray + arrow SVGs make up the upload icon. */
.tc-customerhub-page .tc-customerhub-uploader-icon {
	position: relative;
	width: 32px;
	height: 32px;
	display: inline-block;
	background-image:
		url("/static/icons/customerhub/upload-arrow.svg"),
		url("/static/icons/customerhub/upload-tray.svg");
	background-repeat: no-repeat, no-repeat;
	/* Absolute px positions — CSS % resolves against container−bg-size, not Figma's inset. */
	background-position:
		13.11px 7.77px,
		6.67px 4px;
	background-size:
		5.79px 10.89px,
		18.67px 22.67px;
}
.tc-customerhub-page .tc-customerhub-uploader-icon i {
	display: none;
}
.tc-customerhub-page .tc-customerhub-uploader-trigger {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 4px;
	background: transparent;
	border: 0;
	padding: 0;
	cursor: pointer;
	text-align: center;
}
.tc-customerhub-page .tc-customerhub-uploader-primary {
	font-family: Inter, sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #364152;
	white-space: nowrap;
}
.tc-customerhub-page .tc-customerhub-uploader-secondary {
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #8493a8;
	white-space: nowrap;
}

.tc-customerhub-page .tc-customerhub-uploader .uploader-preview-wrap {
	display: none;
	width: 100%;
	flex: 1 1 0;
	gap: 16px;
	align-items: center;
	min-width: 0;
	/* Override the legacy `.uploader-minimal .uploader-preview-wrap` bg + border. */
	background: transparent;
	border: 0;
	border-radius: 0;
	padding: 0;
	min-height: 0;
}
.tc-customerhub-page .tc-customerhub-uploader.uploader-hasimage .uploader-preview-wrap {
	display: flex;
}
.tc-customerhub-page .tc-customerhub-uploader.uploader-hasimage .tc-customerhub-uploader-inner {
	display: none;
}
.tc-customerhub-page .tc-customerhub-uploader.uploader-hasimage {
	flex-direction: row;
	gap: 8px;
	padding: 24px;
	justify-content: center;
	align-items: center;
}
.tc-customerhub-page .tc-customerhub-uploader .uploader-preview {
	position: relative;
	flex: 0 0 136px;
	width: 136px;
	height: 136px;
	border-radius: 8px;
	overflow: hidden;
	background-color: rgba(0, 200, 201, 0.1);
}
.tc-customerhub-page .tc-customerhub-uploader .uploader-preview img {
	width: 100%;
	height: 100%;
	max-width: none;
	max-height: none;
	margin: 0;
	object-fit: cover;
	display: block;
	border-radius: 8px;
}
.tc-customerhub-page .tc-customerhub-uploader .uploader-preview-info {
	flex: 1 1 0;
	min-width: 0;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 4px;
}
.tc-customerhub-page .tc-customerhub-uploader .uploader-preview-name {
	margin: 0;
	font-family: Inter, sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #364152;
	letter-spacing: 0;
}
.tc-customerhub-page .tc-customerhub-uploader .uploader-preview-meta {
	margin: 0;
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #8493a8;
	letter-spacing: 0;
}
.tc-customerhub-page .tc-customerhub-uploader .uploader-preview-actions {
	flex: 0 0 auto;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	gap: 0;
}
/* `button.` selector overrides legacy shared.css `.uploader-delete { position: absolute }`. */
.tc-customerhub-page .tc-customerhub-uploader button.uploader-replace,
.tc-customerhub-page .tc-customerhub-uploader button.uploader-delete {
	position: static;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 8px 12px;
	background: transparent;
	border: 0;
	border-radius: 8px;
	cursor: pointer;
	color: #3a4351;
	opacity: 1;
	box-sizing: border-box;
}
.tc-customerhub-page .tc-customerhub-uploader button.uploader-replace:hover,
.tc-customerhub-page .tc-customerhub-uploader button.uploader-delete:hover {
	background: #f6f8f9;
}
.tc-customerhub-page .tc-customerhub-uploader .uploader-replace-icon,
.tc-customerhub-page .tc-customerhub-uploader .uploader-delete-icon {
	display: inline-block;
	width: 20px;
	height: 20px;
	background-color: currentcolor;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
}
.tc-customerhub-page .tc-customerhub-uploader .uploader-replace-icon {
	-webkit-mask-image: url("/static/icons/customerhub/uploader-folder.svg");
	mask-image: url("/static/icons/customerhub/uploader-folder.svg");
	-webkit-mask-size: 16.67px 13.33px;
	mask-size: 16.67px 13.33px;
}
.tc-customerhub-page .tc-customerhub-uploader .uploader-delete-icon {
	-webkit-mask-image: url("/static/icons/customerhub/uploader-trash.svg");
	mask-image: url("/static/icons/customerhub/uploader-trash.svg");
	-webkit-mask-size: 11.67px 15px;
	mask-size: 11.67px 15px;
}
.tc-customerhub-page .tc-customerhub-uploader input[type="file"] {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	opacity: 0;
	cursor: pointer;
}
/* pointer-events:none lets delete/replace buttons through; uploader JS triggers the input */
.tc-customerhub-page .tc-customerhub-uploader.uploader-hasimage > input[type="file"] {
	pointer-events: none;
}

.tc-customerhub-page .tc-customerhub-cancellation-prompt {
	margin: 0 0 16px 0;
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #2a3648;
}

.tc-customerhub-page .tc-customerhub-cancellation-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	column-gap: 48px;
	row-gap: 36px;
}
/* `label` tag in selector so it outranks `.pure-form.pure-form-stacked label { padding: 0 }`. */
.tc-customerhub-page label.tc-customerhub-cancellation-card {
	display: flex;
	align-items: flex-start;
	justify-content: center;
	gap: 16px;
	padding: 20px 16px;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	box-sizing: border-box;
	cursor: pointer;
	margin: 0;
}
.tc-customerhub-page label.tc-customerhub-cancellation-card.is-active {
	border-color: #006b70;
	box-shadow: inset 0 0 0 1px #006b70;
}
/* Surface keyboard focus on the whole card when the hidden checkbox inside is focused. */
.tc-customerhub-page label.tc-customerhub-cancellation-card:focus-within {
	outline: 2px solid #00a6aa;
	outline-offset: 2px;
}
.tc-customerhub-page .tc-customerhub-cancellation-content {
	flex: 1 1 0;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding-right: 20px;
}
.tc-customerhub-page .tc-customerhub-cancellation-title {
	margin: 0;
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #2a3648;
}
.tc-customerhub-page .tc-customerhub-cancellation-sub {
	margin: 0;
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #8493a8;
}

.tc-customerhub-page .tc-customerhub-checkbox-wrap {
	flex: 0 0 16px;
	position: relative;
	width: 16px;
	height: 16px;
}
.tc-customerhub-page .tc-customerhub-checkbox-wrap input[type="checkbox"] {
	position: absolute;
	inset: 0;
	width: 16px;
	height: 16px;
	margin: 0;
	padding: 0;
	opacity: 0;
	cursor: pointer;
}
.tc-customerhub-page .tc-customerhub-checkbox-box {
	position: absolute;
	inset: 0;
	width: 16px;
	height: 16px;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 4px;
	box-sizing: border-box;
	pointer-events: none;
}
.tc-customerhub-page .tc-customerhub-checkbox-wrap input[type="checkbox"]:checked + .tc-customerhub-checkbox-box {
	background: #006b70;
	border-color: #006b70;
}
.tc-customerhub-page .tc-customerhub-checkbox-wrap input[type="checkbox"]:checked + .tc-customerhub-checkbox-box::after {
	content: '';
	position: absolute;
	left: 25%;
	right: 25%;
	top: 30%;
	bottom: 32.5%;
	background-color: #ffffff;
	-webkit-mask-image: url("/static/icons/customerhub/checkbox-check.svg");
	mask-image: url("/static/icons/customerhub/checkbox-check.svg");
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-size: contain;
	mask-size: contain;
}
.tc-customerhub-page .tc-customerhub-checkbox-wrap input[type="checkbox"]:disabled + .tc-customerhub-checkbox-box {
	background: #f6f8f9;
	border-color: #e8ecef;
}
.tc-customerhub-page .tc-customerhub-checkbox-wrap input[type="checkbox"]:disabled:checked + .tc-customerhub-checkbox-box {
	background: #b3bcc9;
	border-color: #b3bcc9;
}
/* The real checkbox is transparent, so surface keyboard focus on the faux box. */
.tc-customerhub-page .tc-customerhub-checkbox-wrap input[type="checkbox"]:focus-visible + .tc-customerhub-checkbox-box {
	outline: 2px solid #006b70;
	outline-offset: 2px;
}
/* drop-shadow (not border-top) to match Figma. */
.tc-customerhub-page .tc-customerhub-footer {
	display: flex;
	justify-content: flex-end;
	align-items: center;
	gap: 12px;
	padding: 16px 45.5px;
	margin: 0;
	background: #ffffff;
	filter: drop-shadow(0 -1px 2px #ececee);
}

.tc-customerhub-page .tc-customerhub-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 4px;
	height: 32px;
	padding: 8px 12px;
	border-radius: 6px;
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	letter-spacing: 0;
	text-decoration: none;
	cursor: pointer;
	box-sizing: border-box;
	white-space: nowrap;
}
.tc-customerhub-page .checkbox.check-success input[type=checkbox]:checked+label:before {
	border-color: #006b70;
}

.tc-customerhub-page .tc-customerhub-btn-primary {
	background: #006b70;
	border: 0;
	color: #ffffff;
}
.tc-customerhub-page .tc-customerhub-btn-primary:hover {
	background: #005357;
	color: #ffffff;
	text-decoration: none;
}
.tc-customerhub-page .tc-customerhub-btn-secondary {
	background: #ffffff;
	border: 1px solid #d1d7de;
	color: #2a3648;
}
.tc-customerhub-page .tc-customerhub-btn-secondary:hover {
	background: #f6f8f9;
	color: #2a3648;
	text-decoration: none;
}

/* Mobile (≤767px) — no Figma node; defensive pass to fit the viewport. */
@media (max-width: 767px) {
	body.root.tc-customerhub-page #tc-sidebar ~ #layout,
	body.root:has(.tc-customerhub-page) #tc-sidebar ~ #layout {
		margin-left: 0 !important;
		margin-right: 0 !important;
		margin-top: 0 !important;
	}
	body.tc-customerhub-page .tc-customerhub-page,
	body:has(.tc-customerhub-page) .tc-customerhub-page {
		padding: 16px 16px 48px 16px;
		gap: 20px;
	}
	body.tc-customerhub-page .tc-customerhub-page > .tc-customerhub-url-field {
		width: 100%;
	}
	body.tc-customerhub-page .tc-customerhub-head {
		flex-wrap: wrap;
		gap: 12px;
		padding-bottom: 4px;
	}
	body.tc-customerhub-page .tc-customerhub-card,
	body:has(.tc-customerhub-page) .tc-customerhub-card {
		padding: 0;
	}
	/* Reset desktop margin so the card-head border spans full card width. */
	body.tc-customerhub-page .tc-customerhub-card-head {
		margin: 0;
		padding: 16px;
		height: auto;
	}
	body.tc-customerhub-page .tc-customerhub-card-customise > .tc-customerhub-card-head,
	body.tc-customerhub-page .tc-customerhub-card-cancellation > .tc-customerhub-card-head {
		height: auto;
	}
	body.tc-customerhub-page .tc-customerhub-card-body {
		padding: 16px;
		gap: 16px;
	}
	body.tc-customerhub-page .tc-customerhub-title {
		font-size: 18px;
		line-height: 24px;
		white-space: normal;
	}
	body.tc-customerhub-page .tc-customerhub-breadcrumb {
		font-size: 12px;
	}
	/* Drop the desktop absolute positioning so a long sub-user title can't slide under the button. */
	body.tc-customerhub-page .tc-customerhub-preview-btn {
		position: static;
		height: 32px;
		padding: 6px 10px;
		font-size: 12px;
	}
	body.tc-customerhub-page .tc-customerhub-card-title {
		font-size: 16px;
		line-height: 22px;
	}
	body.tc-customerhub-page .tc-customerhub-label,
	body.tc-customerhub-page label.tc-customerhub-label,
	body.tc-customerhub-page .tc-customerhub-label > span:not(.tc-customerhub-label-icon):not(.tc-customerhub-label-optional) {
		font-size: 13px;
	}
	body.tc-customerhub-page .tc-customerhub-field-hint {
		font-size: 12px;
		line-height: 16px;
	}
	body.tc-customerhub-page .tc-customerhub-cancellation-title {
		font-size: 13px;
		line-height: 18px;
	}
	body.tc-customerhub-page .tc-customerhub-cancellation-sub {
		font-size: 12px;
		line-height: 16px;
	}
	body.tc-customerhub-page .tc-customerhub-banner {
		padding: 12px;
		gap: 10px;
		align-items: flex-start;
	}
	body.tc-customerhub-page .tc-customerhub-banner .tc-customerhub-banner-icon {
		width: 24px;
		height: 24px;
		flex: 0 0 24px;
	}
	body.tc-customerhub-page .tc-customerhub-banner-info .tc-customerhub-banner-icon {
		background-size: 20px 20px;
	}
	body.tc-customerhub-page .tc-customerhub-banner-warning .tc-customerhub-banner-icon {
		background-size: 19.1px 17px;
	}
	body.tc-customerhub-page .tc-customerhub-banner-title {
		font-size: 13px;
		line-height: 18px;
	}
	body.tc-customerhub-page .tc-customerhub-banner-text {
		font-size: 13px;
		line-height: 18px;
	}
	body.tc-customerhub-page .tc-customerhub-banner-close {
		width: 20px;
		height: 20px;
		font-size: 12px;
	}
	/* Children need explicit width:100% — `flex: 1 1 0` sizes along the new main axis after we flip direction. */
	body.tc-customerhub-page .tc-customerhub-row-2col {
		flex-direction: column;
		gap: 16px;
	}
	body.tc-customerhub-page .tc-customerhub-row-2col > .tc-customerhub-field {
		width: 100%;
	}
	/* Pin the wysiwyg to 140px or it collapses once the parent goes auto-height. */
	body.tc-customerhub-page .tc-customerhub-row-2col > .tc-customerhub-field:has(.tc-customerhub-wysiwyg) {
		height: auto;
	}
	body.tc-customerhub-page .tc-customerhub-wysiwyg {
		flex: 0 0 auto;
		height: 140px;
		min-height: 140px;
	}
	body.tc-customerhub-page .tc-customerhub-cancellation-grid {
		grid-template-columns: 1fr !important;
		gap: 12px !important;
	}
	body.tc-customerhub-page label.tc-customerhub-cancellation-card {
		padding: 14px;
		gap: 12px;
	}
	body.tc-customerhub-page .tc-customerhub-cancellation-content {
		padding-right: 4px;
	}
	/* Shrink the thumbnail so the name + meta column has room at 390px. */
	body.tc-customerhub-page .tc-customerhub-uploader.uploader-hasimage {
		padding: 16px;
		gap: 12px;
	}
	/* Empty-state copy must wrap or it overflows the padded dropzone and gets clipped. */
	body.tc-customerhub-page .tc-customerhub-uploader-primary,
	body.tc-customerhub-page .tc-customerhub-uploader-secondary {
		white-space: normal;
		text-align: center;
	}
	body.tc-customerhub-page .tc-customerhub-uploader .uploader-preview {
		flex: 0 0 80px;
		width: 80px;
		height: 80px;
	}
	body.tc-customerhub-page .tc-customerhub-uploader .uploader-preview-info {
		gap: 2px;
	}
	body.tc-customerhub-page .tc-customerhub-uploader .uploader-preview-name {
		font-size: 14px;
		line-height: 20px;
	}
	body.tc-customerhub-page .tc-customerhub-uploader .uploader-preview-meta {
		font-size: 12px;
		line-height: 16px;
	}
	body.tc-customerhub-page .tc-customerhub-uploader .uploader-preview-actions {
		flex-direction: column;
		gap: 4px;
	}
	body.tc-customerhub-page .tc-customerhub-footer {
		padding: 16px;
	}
	body.tc-customerhub-page .tc-customerhub-footer .tc-customerhub-btn-primary {
		width: 100%;
		justify-content: center;
	}
	/* Let the toolbar wrap — the four buttons overflow at narrow widths. */
	body.tc-customerhub-page .wysiwyg-toolbar {
		flex-wrap: wrap;
	}
	/* Reserve room for the wrapped (2-row) toolbar so it can't sit over the editable body. */
	body.tc-customerhub-page .tc-customerhub-wysiwyg:focus-within .wysiwyg-body {
		padding-top: 72px;
	}
}
/* =========================================================================
   TC-12837 — Product creation flow reskin (stepper)
   Scoped entirely under .tc-product-stepper so nothing leaks to the classic
   editor or other pages. Tokens mirror the Figma design variables.
   ========================================================================= */
/* JS-injected mobile progress bar — hidden until the mobile rules ship. */
.tc-ps-mobilebar { display: none; }
.tc-product-stepper {
	--tcps-text: #364152;
	--tcps-text-dark: #2a3648;
	--tcps-text-light: #8493a8;
	--tcps-text-muted: #afbbc9;
	--tcps-label: #2b384a;
	--tcps-bg: #f6f8f9;
	--tcps-panel: #ffffff;
	--tcps-bg-secondary: #e8ecef;
	--tcps-border: #d1d7de;
	--tcps-border-secondary: #e8ecef;
	--tcps-primary: #006b70;
	--tcps-primary-hover: #00868c;
	--tcps-green-200: #9ae6b4;
	--tcps-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);

	display: flex;
	flex-direction: column;
	min-height: 100vh; /* fill the viewport so the sticky footer pins to the bottom even on short steps (ancestors collapse to content height) */
	background: #ffffff; /* Figma page is white, not grey */
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
	color: var(--tcps-text);
	-webkit-font-smoothing: antialiased;
}

.tc-product-stepper *,
.tc-product-stepper *::before,
.tc-product-stepper *::after {
	box-sizing: border-box;
}

/* Reskin font sweep: force Inter + reset legacy negative letter-spacing across the stepper + its drained modals (old TC Arial / global h1..h6 -1px). FA icons excluded; specific reskin tracking still wins. */
.tc-product-stepper *:not(.fa):not(i):not([class*="fa-"]),
body:has(.tc-product-stepper) .alertify *:not(.fa):not(i):not([class*="fa-"]) {
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;
}
.tc-product-stepper,
body:has(.tc-product-stepper) .alertify,
body:has(.tc-product-stepper) .ajs-header,
.tc-product-stepper h1, .tc-product-stepper h2, .tc-product-stepper h3,
.tc-product-stepper h4, .tc-product-stepper h5, .tc-product-stepper h6,
.tc-product-stepper .ui-checkbox.checkbox label,
body:has(.tc-product-stepper) .alertify h1, body:has(.tc-product-stepper) .alertify h2,
body:has(.tc-product-stepper) .alertify h3, body:has(.tc-product-stepper) .alertify h4,
body:has(.tc-product-stepper) .alertify h5, body:has(.tc-product-stepper) .alertify h6 {
	letter-spacing: normal !important;
}

/* Info icons carry the reskin primary color (were legacy blue via .color-help). */
.tc-product-stepper .fa-info-circle.color-help,
.tc-product-stepper .hint .fa-info-circle,
body:has(.tc-product-stepper) .alertify .fa-info-circle.color-help,
body:has(.tc-product-stepper) .alertify .hint .fa-info-circle {
	color: #006b70 !important;
}

/* Cart language + owner fill the container width (were a cramped half-width pair). */
.tc-product-stepper .tc-ps-field-half-group { flex-direction: column; gap: 20px; }
.tc-product-stepper .tc-ps-field-half-group > .tc-ps-field-half { width: 100%; flex: 1 1 auto; }

/* Paint the chrome wrappers white so no grey shows around the full-bleed
   stepper (Figma is all white). Scoped via :has(.tc-product-stepper) — the
   stepper element is server-rendered and always present, unlike a JS body
   class which the SPA overwrites on navigation. */
body:has(.tc-product-stepper),
body:has(.tc-product-stepper) #layout,
body:has(.tc-product-stepper) #body.content,
body:has(.tc-product-stepper) .page-container {
	background: #ffffff !important;
}
/* Remove the chrome's top spacing so the stepper header sits flush at the top
   (Figma has no gap above the header). */
body:has(.tc-product-stepper) #layout,
body:has(.tc-product-stepper) #body.content,
body:has(.tc-product-stepper) .page-container {
	margin-top: 0 !important;
	padding-top: 0 !important;
}

/* ---- Header + step nav ---- */
.tc-ps-header {
	position: sticky;
	top: 0;
	z-index: 20;
	background: var(--tcps-panel);
	border-bottom: 1px solid #e7ebee;
}

.tc-ps-header-inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	/* Top bar spans the full content width (fills #layout) instead of a centered 1216 column. */
	padding: 8px 32px;
}

.tc-ps-titlearea {
	flex: 1 1 0;
	white-space: nowrap;
}

.tc-ps-pagetitle {
	font-size: 16px;
	font-weight: 700; /* Figma: Inter Bold */
	line-height: 24px;
	color: #364152;
}

.tc-ps-steps {
	display: flex;
	align-items: center;
	gap: 24px;
	height: 40px;
	flex: 0 0 auto;
}

.tc-ps-step {
	display: inline-flex;
	align-items: center;
	justify-content: flex-start;
	gap: 8px;
	padding: 0;
	margin: 0;
	border: 0;
	background: none;
	cursor: pointer;
	font-family: inherit;
	text-decoration: none;
	white-space: nowrap;
	flex-shrink: 0;
	overflow: hidden;
}
/* Fixed per-step widths from Figma (left-aligned content within each). Keyed by step, not position:
   the Adaptive Pricing step is gated, and positional widths shifted every step after it. */
.tc-ps-steps .tc-ps-step[data-step-target="details"] { width: 75px; }
.tc-ps-steps .tc-ps-step[data-step-target="pricing"] { width: 76px; }
.tc-ps-steps .tc-ps-step[data-step-target="bumps"] { width: 75px; }
.tc-ps-steps .tc-ps-step[data-step-target="checkout"] { width: 94px; }
.tc-ps-steps .tc-ps-step[data-step-target="fulfilment"] { width: 96px; }
.tc-ps-steps .tc-ps-step[data-step-target="adaptive-pricing"] { width: 140px; }
.tc-ps-steps .tc-ps-step[data-step-target="affiliates"] { width: 89px; }
.tc-ps-steps .tc-ps-step[data-step-target="advanced"] { width: 97px; }

/* Step status indicator = verbatim Figma ring+dot SVG, coloured by state
   (Figma: inactive #AFBBC9, active #364152). */
.tc-ps-step-dot {
	width: 20px;
	height: 20px;
	flex-shrink: 0;
	background-color: #afbbc9;
	-webkit-mask: url('/static/icons/product-stepper/step-active.svg') center / 20px 20px no-repeat;
	mask: url('/static/icons/product-stepper/step-active.svg') center / 20px 20px no-repeat;
}

.tc-ps-step-label {
	font-size: 14px;
	line-height: 20px;
	font-weight: 600;
	color: #8493a8;
}

.tc-ps-step.is-active .tc-ps-step-dot { background-color: #364152; }
.tc-ps-step.is-active .tc-ps-step-label { color: #364152; }

/* Figma 5873: a completed step is a green (#2f855a) circle with a white check. */
.tc-ps-step.is-complete .tc-ps-step-dot {
	-webkit-mask: none;
	mask: none;
	background-color: #2f855a;
	border-radius: 50%;
	background-image: url('/static/icons/product-stepper/step-check.svg');
	background-repeat: no-repeat;
	background-position: center;
	background-size: 11.17px 8.38px;
}
.tc-ps-step.is-complete .tc-ps-step-label { color: #364152; }

/* ---- Footer ---- */
.tc-ps-footer {
	position: sticky;
	bottom: 0;
	z-index: 20;
	background: var(--tcps-panel);
	border-top: 1px solid var(--tcps-border-secondary);
}

.tc-ps-footer-inner {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 8px;
	height: 64px;
	max-width: 1216px;
	margin: 0 auto;
	padding: 0 112px;
}

.tc-ps-btn {
	height: 32px;
	padding: 0 12px;
	border-radius: 6px;
	font-family: inherit;
	font-size: 14px;
	line-height: 16px;
	font-weight: 500;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

.tc-ps-btn-ghost {
	background: var(--tcps-panel);
	border: 1px solid var(--tcps-border);
	color: var(--tcps-text);
}

.tc-ps-btn-ghost:hover { background: var(--tcps-bg); }
.tc-ps-btn-ghost[disabled] { opacity: 0.5; cursor: default; }

.tc-ps-btn-primary {
	background: var(--tcps-primary);
	border: 1px solid var(--tcps-primary);
	color: #fff;
}

.tc-ps-btn-primary:hover { background: var(--tcps-primary-hover); border-color: var(--tcps-primary-hover); }

/* Save button — shown only while editing an existing product (create uses Next → Create Product); it saves and returns to the success page. */
.tc-ps-nav-save { display: none; }
.tc-product-stepper.tc-ps-editing .tc-ps-nav-save { display: inline-flex; }
.tc-product-stepper.tc-ps-editing.tc-ps-last .tc-ps-nav-next { display: none; }

/* ---- Body / step content column ---- */
.tc-ps-body { flex: 1 1 auto; }

/* First-load spinner: shown until the form drops its .hidden class (ready). */
.tc-ps-loader { display: flex; align-items: center; justify-content: center; padding: 96px 0; }
.tc-product-stepper:has(#ui-product-settings:not(.hidden)) .tc-ps-loader { display: none; }
/* While switching steps, hide the body until it's re-decorated so the classic section never flashes. */
.tc-product-stepper.tc-ps-switching .tc-ps-body-inner { visibility: hidden; }
.tc-ps-spinner {
	width: 40px;
	height: 40px;
	border-radius: 50%;
	border: 3px solid #e8ecef;
	border-top-color: #006b70;
	animation: tc-ps-spin 0.8s linear infinite;
}
@keyframes tc-ps-spin { to { transform: rotate(360deg); } }

.tc-ps-body-inner {
	max-width: 1216px;
	margin: 0 auto;
	padding: 32px 112px 48px;
}

/* Hide the classic chrome inside the stepper */
.tc-ps-body-inner > h2 { display: none; }
/* Adaptive Pricing edit banner (TP-1889): same stepper warning panel as the archived banner. */
.tc-product-stepper .ap-edit-banner { background: #fee9da; border: 0; border-radius: 8px; padding: 16px; margin: 0 0 24px; color: #2a3648; }
.tc-product-stepper .ap-edit-banner-icon { font-size: 20px; color: #c4510c; }
.tc-product-stepper .ap-edit-banner-title, .tc-product-stepper .ap-edit-banner-text, .tc-product-stepper .ap-edit-banner-cta { font-size: 13px; line-height: 18px; color: #55657a; }
.tc-product-stepper .ap-edit-banner-title { font-size: 14px; line-height: 20px; color: #2a3648; }
.tc-product-stepper .ap-edit-banner-cta a { color: #006b70; }
/* Archived product (TC-11894): the stepper's warning panel instead of the classic orange banner; Restore keeps its handler. */
.tc-product-stepper .ui-product-archived-banner { gap: 12px; padding: 16px; margin: 0 0 24px; background: #fee9da; border: 0; border-radius: 8px; box-shadow: none; box-sizing: border-box; font-family: inherit; }
.tc-product-stepper .ui-product-archived-banner-icon { width: 32px; height: 32px; }
.tc-product-stepper .ui-product-archived-banner-title { font-size: 14px; line-height: 20px; color: #2a3648; }
.tc-product-stepper .ui-product-archived-banner-description { font-size: 13px; line-height: 18px; color: #55657a; }
.tc-product-stepper .ui-product-archived-banner .ui-product-edit-restore { padding: 8px 16px; border: 1px solid #006b70; border-radius: 8px; background: #006b70; color: #ffffff; font-size: 14px; font-weight: 500; line-height: 20px; box-shadow: none; }
@media (max-width: 767px) {
	.tc-product-stepper .ui-product-archived-banner { flex-wrap: wrap; }
	.tc-product-stepper .ui-product-archived-banner-content { flex: 1 1 calc(100% - 44px); }
	.tc-product-stepper .ui-product-archived-banner .ui-product-edit-restore { width: 100%; text-align: center; box-sizing: border-box; }
}
.tc-product-stepper .ui-product-settings-tab .box-tabbed > .tabs,
.tc-product-stepper .ui-product-settings-tab .tabs.tabs-full-width { display: none; }
.tc-product-stepper #ui-product-settings { display: block; }
.tc-product-stepper .ui-product-settings-tab .box,
.tc-product-stepper .ui-product-settings-tab .box-tabbed,
.tc-product-stepper .ui-product-settings-tab .box-invisible {
	border: 0;
	box-shadow: none;
	background: none;
	padding: 0;
	margin: 0;
}

/* Step visibility: Details shows the product + processors sections only.
   (Hero-tab .active state is driven by products-stepper.js, mirroring the
   classic hero buttons, since the hero bar itself is suppressed.) */
.tc-product-stepper[data-step="details"] #ui-product-settings-tab-settings-options-pricing,
.tc-product-stepper[data-step="details"] #ui-product-settings-tab-settings-options-bump,
.tc-product-stepper[data-step="details"] #ui-product-settings-tab-settings-options-affiliates,
.tc-product-stepper[data-step="details"] #ui-product-settings-tab-settings-options-compliance {
	display: none !important;
}
.tc-product-stepper[data-step="details"] #ui-product-settings-tab-settings-options-product,
.tc-product-stepper[data-step="details"] #ui-product-settings-tab-settings-options-processors {
	display: block !important;
}
.tc-product-stepper[data-step="details"] #ui-product-settings-tab-settings-options-processors {
	margin-top: 64px;
}
/* Product + processors belong to Details only; hide them elsewhere so a preseeded deep-link never flashes the details sections. */
.tc-product-stepper:not([data-step="details"]) #ui-product-settings-tab-settings-options-product,
.tc-product-stepper:not([data-step="details"]) #ui-product-settings-tab-settings-options-processors {
	display: none !important;
}

/* ---- Details: section heading ---- */
.tc-ps-section { display: flex; flex-direction: column; gap: 24px; }
.tc-ps-h1 {
	font-size: 24px;
	line-height: 32px;
	font-weight: 600;
	color: var(--tcps-text);
	margin: 0;
}

/* ---- Details: product type chooser ---- */
.tc-ps-typegroup { display: flex; gap: 16px; }
/* Design order: Physical (shipping) left, Digital right — swap the legacy DOM order visually without touching the markup. */
.tc-ps-typecard[data-type="2"] { order: 0; }
.tc-ps-typecard[data-type="1"] { order: 1; }
.tc-ps-typecard {
	flex: 1 1 0;
	min-width: 0;
	display: flex;
	align-items: center;
	gap: 16px;
	padding: 20px 16px;
	background: var(--tcps-panel);
	border: 1px solid var(--tcps-border);
	border-radius: 8px;
	cursor: pointer;
	margin: 0;
}
.tc-ps-typecard.is-selected {
	border: 2px solid var(--tcps-primary);
	padding: 19px 15px;
}
.tc-ps-typecard > input { position: absolute; opacity: 0; pointer-events: none; width: 0; height: 0; }
.tc-ps-typecard-icon {
	width: 48px;
	height: 48px;
	flex-shrink: 0;
	border-radius: 50%;
	background: var(--tcps-bg);
	display: inline-flex;
	align-items: center;
	justify-content: center;
}
/* Verbatim multi-colour Streamline icons, swapped by selection state
   (Figma: unselected = slate #495D78, selected = teal #00868C). */
.tc-ps-typecard-icon::before {
	content: '';
	width: 24px;
	height: 24px;
	background: center / contain no-repeat;
}
.tc-ps-typecard[data-type="1"] .tc-ps-typecard-icon::before { background-image: url('/static/icons/product-stepper/window-tabs.svg'); }
.tc-ps-typecard[data-type="1"].is-selected .tc-ps-typecard-icon::before { background-image: url('/static/icons/product-stepper/window-tabs-teal.svg'); }
.tc-ps-typecard[data-type="2"] .tc-ps-typecard-icon::before { background-image: url('/static/icons/product-stepper/delivery-truck-slate.svg'); }
.tc-ps-typecard[data-type="2"].is-selected .tc-ps-typecard-icon::before { background-image: url('/static/icons/product-stepper/delivery-truck.svg'); }
.tc-ps-typecard-body { display: flex; flex-direction: column; gap: 4px; padding-right: 20px; min-width: 0; flex: 1 1 0; }
.tc-ps-typecard-title {
	font-size: 16px;
	line-height: 24px;
	font-weight: 600;
	color: var(--tcps-text-dark);
}
.tc-ps-typecard-desc {
	font-size: 14px;
	line-height: 20px;
	color: var(--tcps-text-light);
}

/* ---- Details: fields card ---- */
.tc-ps-fields {
	background: var(--tcps-panel);
	border-radius: 12px;
	display: flex;
	flex-direction: column;
	gap: 24px;
}
.tc-ps-field { display: flex; flex-direction: column; gap: 4px; position: relative; }
.tc-ps-label {
	font-size: 14px;
	line-height: 20px;
	font-weight: 500;
	color: var(--tcps-label);
	margin: 0;
}
.tc-ps-input,
.tc-product-stepper .tc-ps-fields input[type="text"] {
	width: 100%;
	min-height: 36px;
	padding: 8px;
	background: var(--tcps-panel);
	border: 1px solid var(--tcps-border);
	border-radius: 8px;
	font-family: inherit;
	font-size: 14px;
	line-height: 20px;
	color: var(--tcps-text);
}
.tc-ps-input::placeholder { color: var(--tcps-text-muted); }
/* URL field: drop the legacy slug-block square left corners (the "/" prefix is
   gone) so it matches the reskin input radius. */
.tc-product-stepper #product-basic-slug { border-radius: 8px !important; }
.tc-ps-input:focus,
.tc-product-stepper .tc-ps-fields input[type="text"]:focus {
	outline: none;
	border-color: var(--tcps-primary);
}
/* halves row (cart language + owner) */
.tc-ps-field-half-group { flex-direction: row; gap: 16px; align-items: flex-start; }
.tc-ps-field-half { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
/* The owner field comes from a PHP snippet wrapped in .pure-u-1-2 (50%) + a
   .row.margin-top; normalise it so it fills its half and tops-align with the
   Cart language field. */
.tc-product-stepper .tc-ps-owner-wrap .pure-u-1-2 { width: 100% !important; padding: 0 !important; }
.tc-product-stepper .tc-ps-owner-wrap .row { margin: 0 !important; }
.tc-product-stepper .tc-ps-owner-wrap select { width: 100%; }
.tc-ps-field-half label { font-size: 14px; line-height: 20px; font-weight: 500; color: var(--tcps-label); }
.tc-ps-field-half select {
	width: 100%;
	min-height: 36px;
	/* Room on the right for the chevron (was 8px → native arrow sat against the edge). */
	padding: 7px 36px 7px 8px;
	background-color: var(--tcps-panel);
	/* Figma expand_more chevron at its native 8×4.94, 16px from the right (D11). */
	background-image: url('/static/icons/product-stepper/expand-more.svg');
	background-repeat: no-repeat;
	background-position: right 16px center;
	background-size: 8px 4.94px;
	border: 1px solid var(--tcps-border);
	border-radius: 8px;
	font-family: inherit;
	font-size: 14px;
	color: var(--tcps-text);
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
}

/* Enforcement layer. Our new markup lives INSIDE the classic #ui-product-settings
   form, whose heavy descendant + pure-form-stacked rules bleed onto our elements
   (resetting padding, shrinking fonts, recolouring). Re-assert the design here,
   scoped to .tc-product-stepper and !important only where the legacy cascade wins. */
.tc-product-stepper label.tc-ps-typecard {
	display: flex !important;
	align-items: center;
	justify-content: center;
	gap: 16px;
	margin: 0 !important;
	padding: 20px 16px !important;
}
.tc-product-stepper label.tc-ps-typecard.is-selected { padding: 19px 15px !important; }
.tc-product-stepper .tc-ps-typecard-title {
	font-size: 16px !important;
	line-height: 24px !important;
	font-weight: 600 !important;
	color: #2a3648 !important;
}
.tc-product-stepper .tc-ps-typecard-desc {
	font-size: 14px !important;
	line-height: 20px !important;
	font-weight: 400 !important;
	color: #8493a8 !important;
}
.tc-product-stepper label.tc-ps-label,
.tc-product-stepper .tc-ps-field-half label {
	display: block !important;
	margin: 0 !important;
	padding: 0 !important;
	font-size: 14px !important;
	line-height: 20px !important;
	font-weight: 500 !important;
	color: #2b384a !important;
}
/* "How should tax be applied?" — the description is a <label> wedged between the
   heading and the select (not a <p>, so the JS hint-mover can't reach it); reorder
   it below the select via flex so it reads as a hint under the field. */
.tc-product-stepper .product-tax-inclusive { display: flex; flex-direction: column; }
.tc-product-stepper .product-tax-inclusive .tax-structure-label { order: 1; margin: 4px 0 0 !important; }

/* Design-system hint/additional text — relocated below the input by products-stepper.js (enhanceInputHints). */
.tc-product-stepper .tc-ps-input-hint {
	display: block !important;
	margin: 4px 0 0 !important;
	padding: 0 !important;
	font-family: 'Inter', sans-serif !important;
	font-weight: 400 !important;
	font-size: 12px !important;
	line-height: 16px !important;
	color: #8493a8 !important;
}

/* Design-system baseline for every reused legacy text field / select / textarea in
   the product creation flow (currency, quantity, locations, plan name, "I want to…"
   etc.) that no step-specific reskin rule reaches. Matches the canonical reskin
   field (.tc-ps-flexpay-select / details input). Step-specific reskin rules that
   need a different treatment stay more specific and still win. */
body:has(.tc-product-stepper) .tc-product-stepper input[type="text"],
body:has(.tc-product-stepper) .tc-product-stepper input[type="email"],
body:has(.tc-product-stepper) .tc-product-stepper input[type="number"],
body:has(.tc-product-stepper) .tc-product-stepper input[type="url"],
body:has(.tc-product-stepper) .tc-product-stepper input[type="tel"],
body:has(.tc-product-stepper) .tc-product-stepper input[type="password"],
body:has(.tc-product-stepper) .tc-product-stepper textarea,
body:has(.tc-product-stepper) .tc-product-stepper select {
	box-sizing: border-box !important;
	background-color: #ffffff !important;
	border: 1px solid #d1d7de !important;
	border-radius: 8px !important;
	padding: 8px 12px !important;
	font-family: 'Inter', sans-serif !important;
	font-size: 14px !important;
	line-height: 20px !important;
	letter-spacing: normal !important;
	color: #364152 !important;
	box-shadow: none !important;
}
body:has(.tc-product-stepper) .tc-product-stepper select {
	height: 38px !important;
	padding: 8px 36px 8px 12px !important;
	-webkit-appearance: none !important;
	-moz-appearance: none !important;
	appearance: none !important;
	background-image: url('/static/icons/product-stepper/expand-more.svg') !important;
	background-position: right 16px center !important;
	background-size: 8px 4.94px !important;
	background-repeat: no-repeat !important;
}
/* Prefix pill ($ price): the symbol carries the left border + radius; the broad rule
   above re-added a full border/radius that split the input off — pin it back so the
   field reads as one unified pill. */
body:has(.tc-product-stepper) .tc-product-stepper .input-pill-left input {
	border-left: 0 !important;
	border-radius: 0 8px 8px 0 !important;
}
/* Char counter → top-right helper slot. It's bottom-anchored, so once the inputs
   gained a border (and some gained a hint line below) it overlapped the field;
   pin it to the label row and mute the legacy teal. */
.tc-product-stepper .validate-maxlength-wrap .validate-maxlength {
	top: 2px !important;
	bottom: auto !important;
	right: 0 !important;
	color: #8493a8 !important;
	font-size: 12px !important;
	line-height: 16px !important;
}

/* ===== Design-system banners =====
   Filled tint + variant icon + rounded, replacing the legacy left-stripe callouts
   across the product creation flow and the product page. Per-context reskin rules
   that are more specific keep their own treatment. */
body:has(.tc-product-stepper) .callout.callout-info,
body:has(.tc-product-stepper) .callout.callout-warning,
body:has(.tc-product-stepper) .callout.callout-error,
html.tc-ps-reskin body.root.products .callout.callout-info,
html.tc-ps-reskin body.root.products .callout.callout-warning,
html.tc-ps-reskin body.root.products .callout.callout-error {
	display: flex !important;
	align-items: flex-start !important;
	gap: 10px !important;
	border: 0 !important;
	border-radius: 8px !important;
	padding: 12px 14px !important;
	font-family: 'Inter', sans-serif !important;
	font-size: 14px !important;
	line-height: 20px !important;
	color: #364152 !important;
	box-shadow: none !important;
}
body:has(.tc-product-stepper) .callout.callout-info,
html.tc-ps-reskin body.root.products .callout.callout-info { background: #bee3f8 !important; }
body:has(.tc-product-stepper) .callout.callout-warning,
html.tc-ps-reskin body.root.products .callout.callout-warning { background: #fee9da !important; }
body:has(.tc-product-stepper) .callout.callout-error,
html.tc-ps-reskin body.root.products .callout.callout-error { background: #ffd5d5 !important; }

body:has(.tc-product-stepper) .callout.callout-info::before,
body:has(.tc-product-stepper) .callout.callout-warning::before,
body:has(.tc-product-stepper) .callout.callout-error::before,
html.tc-ps-reskin body.root.products .callout.callout-info::before,
html.tc-ps-reskin body.root.products .callout.callout-warning::before,
html.tc-ps-reskin body.root.products .callout.callout-error::before {
	content: '' !important;
	display: block !important;
	flex: 0 0 18px !important;
	width: 18px !important;
	height: 18px !important;
	margin: 1px 0 0 !important;
	background-repeat: no-repeat !important;
	background-position: center !important;
	background-size: contain !important;
	color: transparent !important;
}
body:has(.tc-product-stepper) .callout.callout-info::before,
html.tc-ps-reskin body.root.products .callout.callout-info::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Ccircle cx='12' cy='12' r='9' fill='%231f5895'/%3E%3Crect x='11' y='10.5' width='2' height='6' rx='1' fill='white'/%3E%3Ccircle cx='12' cy='7.75' r='1.25' fill='white'/%3E%3C/svg%3E") !important;
}
body:has(.tc-product-stepper) .callout.callout-warning::before,
html.tc-ps-reskin body.root.products .callout.callout-warning::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M12 3.2 22 20.5H2Z' fill='%23da5c07'/%3E%3Crect x='11' y='9' width='2' height='6' rx='1' fill='white'/%3E%3Ccircle cx='12' cy='17.5' r='1.15' fill='white'/%3E%3C/svg%3E") !important;
}
body:has(.tc-product-stepper) .callout.callout-error::before,
html.tc-ps-reskin body.root.products .callout.callout-error::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Ccircle cx='12' cy='12' r='9' fill='%23b30606'/%3E%3Crect x='11' y='7' width='2' height='7' rx='1' fill='white'/%3E%3Ccircle cx='12' cy='16.5' r='1.15' fill='white'/%3E%3C/svg%3E") !important;
}

/* Separate the payment-processor warning banner from the "Add Pricing Option" button above it. */
body:has(.tc-product-stepper) #pricing-warning-box .callout { margin-top: 16px !important; }
/* The banner display:flex above must never un-hide a conditionally-hidden callout
   (validation/error notices default to .hidden and show only when populated). */
body:has(.tc-product-stepper) .callout.hidden,
html.tc-ps-reskin body.root.products .callout.hidden { display: none !important; }
.tc-product-stepper .tc-ps-h1 {
	font-size: 24px !important;
	line-height: 32px !important;
	font-weight: 600 !important;
	color: #364152 !important;
	margin: 0 !important;
}
.tc-product-stepper .tc-ps-fields input[type="text"],
.tc-product-stepper .tc-ps-input-slug input,
.tc-product-stepper .tc-ps-field-half select {
	font-size: 14px !important;
	line-height: 20px !important;
	color: #364152 !important;
}

/* ---- Details: Status radios (kept per TC-12838 decision, styled to match) ---- */
.tc-product-stepper .tc-ps-statusgroup {
	display: inline-flex;
	gap: 0;
	border: 1px solid var(--tcps-border);
	border-radius: 8px;
	overflow: hidden;
}
.tc-product-stepper .tc-ps-statusgroup .product-basic-status-option { margin: 0; }
.tc-product-stepper .tc-ps-statusgroup input { position: absolute; opacity: 0; pointer-events: none; }
.tc-product-stepper .tc-ps-statusgroup label {
	display: block !important;
	margin: 0 !important;
	padding: 8px 16px !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	color: #8493a8 !important;
	background: var(--tcps-panel);
	border-right: 1px solid var(--tcps-border);
	cursor: pointer;
}
.tc-product-stepper .tc-ps-statusgroup .product-basic-status-option:last-child label { border-right: 0; }
/* Selected status keeps its pre-reskin colour identity
   (Test mode = orange, Live = teal, Disabled = grey). */
.tc-product-stepper .tc-ps-statusgroup input[value="1"]:checked + label {
	background: #fbf3ea !important;
	color: #364152 !important;
	box-shadow: inset 0 -3px 0 #f7ac5c;
}
.tc-product-stepper .tc-ps-statusgroup input[value="2"]:checked + label {
	/* Live = the reskin dark button green (#006b70), solid like the primary buttons. */
	background: #006b70 !important;
	color: #ffffff !important;
	box-shadow: none;
}
.tc-product-stepper .tc-ps-statusgroup input[value="3"]:checked + label {
	background: #e7e7e8 !important;
	color: #364152 !important;
	box-shadow: inset 0 -3px 0 #717073;
}

/* ---- Details: Payment processors → cards ---- */
.tc-product-stepper .ui-payment-wrapper { padding: 0 !important; }
.tc-product-stepper .ui-payment-wrapper .ui-title {
	display: flex;
	align-items: center;
	gap: 24px;
	margin-bottom: 24px;
}
.tc-product-stepper .ui-payment-wrapper .ui-title .ui-title-icon { display: none; }
.tc-product-stepper .ui-payment-wrapper .ui-title h2 {
	flex: 1 1 auto;
	font-size: 24px !important;
	line-height: 32px !important;
	font-weight: 600 !important;
	color: #364152 !important;
	margin: 0 !important;
}
.tc-product-stepper .ui-thrivepay-upgrade-products {
	background: var(--tcps-primary) !important;
	color: #fff !important;
	border: 0 !important;
	border-radius: 8px !important;
	/* py-8 + line-height 20 = 36px tall; px-12 button + px-6 inner text = 18px effective horizontal. */
	padding: 8px 18px !important;
	font-size: 14px !important;
	line-height: 20px !important;
	font-weight: 500 !important;
	box-shadow: none !important;
}
.tc-product-stepper .ui-thrivepay-upgrade-products i { display: none !important; } /* Figma button has no icon */
.tc-product-stepper #ui-processors-editor {
	display: flex;
	flex-direction: column;
	gap: 24px;
}
.tc-product-stepper .ui-payment-platform {
	background: var(--tcps-panel);
	border: 1px solid var(--tcps-border-secondary);
	border-radius: 8px;
	box-shadow: var(--tcps-shadow);
	padding: 0;
	margin: 0;
}
/* Classic paints active processors with a teal tint (#faffff / #bcd9d9); the reskin card stays white with the neutral border in every state. */
.tc-product-stepper .ui-payment-platform[data-state="active"] {
	background: var(--tcps-panel);
	border-color: var(--tcps-border-secondary);
}
.tc-product-stepper .ui-payment-platform .ui-payment-opts-launcher {
	display: flex;
	/* Figma 1574:5021 Header is items-start: the name + action buttons sit at the
	   TOP of the card (aligned with the logo top), not vertically centred. */
	align-items: flex-start;
	gap: 16px;
	padding: 16px;
}
.tc-product-stepper .ui-payment-platform .ui-payment-opts-launcher > h2 {
	margin: 0 !important;
	padding: 0 !important;
	width: 88px;
	height: 88px;
	flex-shrink: 0;
	background: var(--tcps-bg);
	border-radius: 16px;
	display: flex;
	align-items: center;
	justify-content: center;
}
.tc-product-stepper .ui-payment-platform .ui-payment-opts-launcher > h2 input { display: none; }
.tc-product-stepper .ui-payment-platform .ui-payment-opts-launcher > h2 label { margin: 0 !important; padding: 0 !important; }
.tc-product-stepper .ui-payment-platform .ui-payment-opts-launcher > h2 img {
	max-width: 64px;
	max-height: 40px;
	object-fit: contain;
}
.tc-product-stepper .ui-payment-platform .tc-ps-proc-info {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 2px;
}
.tc-product-stepper .ui-payment-platform .tc-ps-proc-title {
	font-size: 16px;
	line-height: 24px;
	font-weight: 600;
	color: #364152;
}
.tc-product-stepper .ui-payment-platform .tc-ps-proc-subtitle {
	font-size: 14px;
	line-height: 20px;
	color: #8493a8;
}
.tc-product-stepper .ui-payment-platform .tc-ps-proc-badge {
	margin-top: 6px;
	background: var(--tcps-green-200);
	color: #2a3648;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	border-radius: 8px;
	padding: 2px 6px;
}
.tc-product-stepper .ui-payment-platform .ui-payment-opts-description {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 14px;
	color: var(--tcps-text-light);
}
.tc-product-stepper .ui-payment-platform .ui-payment-opts-description-modify {
	color: var(--tcps-primary);
	cursor: pointer;
	font-weight: 500;
}
/* Classic Connect+ "NEW!" block is replaced by our injected subtitle + badge. */
.tc-product-stepper .ui-payment-platform .ui-payment-opts-thrivecart { display: none !important; }
.tc-product-stepper .ui-payment-platform .ui-payment-opts-actions {
	display: flex;
	align-items: center;
	gap: 8px;
	justify-content: flex-start;
	padding: 8px 16px;
}
/* Inactive processor: the lone Activate button carries the divider the Selected Account row would otherwise provide. */
.tc-product-stepper .ui-payment-platform .ui-payment-opts-actions.tc-ps-proc-actions-standalone { border-top: 1px solid var(--tcps-border-secondary); }
.tc-product-stepper .ui-payment-platform .ui-payment-opts-actions .pure-button {
	border-radius: 6px !important;
	padding: 8px 12px !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	margin: 0 !important;
}
/* Per Figma: Connect+ Activate is the solid primary button; all other
   processors use the outline Activate. */
.tc-product-stepper .ui-payment-platform .ui-payment-opts-actions-button_activate {
	background: var(--tcps-panel) !important;
	color: var(--tcps-text) !important;
	border: 1px solid var(--tcps-border-secondary) !important;
}
.tc-product-stepper .ui-payment-platform-thrivepay .ui-payment-opts-actions-button_activate {
	background: var(--tcps-primary) !important;
	color: #fff !important;
	border: 1px solid var(--tcps-primary) !important;
}

/* Active processor: "Edit" button (replaces the legacy Modify link) — outline,
   pencil icon, matches Figma. */
.tc-product-stepper .ui-payment-opts-actions .tc-ps-proc-edit {
	display: inline-flex !important;
	align-items: center;
	/* Figma 1574:5029: button gap 4px + the text layout's own 4px left padding =
	   8px between the icon and "Edit" (was a flat 4px). */
	gap: 4px;
	background: var(--tcps-panel) !important;
	color: var(--tcps-text) !important;
	border: 1px solid var(--tcps-border-secondary) !important;
	border-radius: 6px !important;
	padding: 8px !important;
	margin: 0 !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	line-height: 16px !important;
	cursor: pointer;
}
.tc-product-stepper .ui-payment-opts-actions .tc-ps-proc-edit .tc-ps-proc-edit-text {
	padding: 0 4px;
}
.tc-product-stepper .tc-ps-proc-edit-icon {
	width: 16px;
	height: 16px;
	flex-shrink: 0;
	/* Figma 1574:5029: 16px frame, glyph inset 12.5% → native 12px. Render as
	   background-image at the native viewBox size (not mask/contain, which would
	   scale the glyph up to 16px, bold) and keep the SVG's baked #3A4351. */
	background: url('/static/icons/product-stepper/edit.svg') center / 12px 12px no-repeat;
}

/* Active processor: bottom "Selected Account" data row. */
.tc-product-stepper .ui-payment-platform .tc-ps-proc-data {
	width: 100%;
	border-top: 1px solid var(--tcps-border-secondary);
	padding: 16px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
}
.tc-product-stepper .tc-ps-proc-data-label {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 12px;
	line-height: 18px;
	font-weight: 400;
	color: var(--tcps-text);
}
.tc-product-stepper .tc-ps-proc-data-label::before {
	content: '';
	width: 16px;
	height: 16px;
	flex-shrink: 0;
	/* Figma 1540:13381: 16px frame, glyph inset 16.67% → native 10.67px. Render as
	   background-image at the native viewBox size (not mask/contain) and keep the
	   SVG's baked #3A4351 — the mask+flat-colour version scaled it up and greyed it. */
	background: url('/static/icons/product-stepper/person.svg') center / 10.6667px 10.6667px no-repeat;
}
.tc-product-stepper .ui-payment-platform .tc-ps-proc-data-value {
	font-size: 12px !important;
	line-height: 18px !important;
	font-weight: 400 !important;
	color: var(--tcps-text-light) !important;
	text-align: right;
}
.tc-product-stepper .ui-payment-platform .ui-payment-opts-actions-button_deactivate {
	background: var(--tcps-panel) !important;
	color: var(--tcps-text) !important;
	border: 1px solid var(--tcps-border-secondary) !important;
}
/* Drop the legacy dashed tooltip-underline under the selected processor's account email. */
.tc-product-stepper .ui-payment-opts-description-account::after { border-bottom: 0 !important; }

/* Hide the classic per-tab nav/save controls — the stepper footer (Back/Next,
   and later Save) replaces them entirely. */
.tc-product-stepper .ui-type-change,
.tc-product-stepper [class*="-btn-next"],
.tc-product-stepper .ui-ctrl-btn-save,
.tc-product-stepper .ui-ctrl-btn-nav {
	display: none !important;
}

/* ---- Details: Tags (Tagify) → match Figma (label "Tags", chip box) ---- */
.tc-product-stepper .tc-ps-field-tags .ui-tags-input-wrapper { margin: 0 !important; }
.tc-product-stepper .tc-ps-field-tags label {
	display: block !important;
	margin: 0 0 4px !important;
	padding: 0 !important;
	font-size: 14px !important;
	line-height: 20px !important;
	font-weight: 500 !important;
	color: #2b384a !important;
}
.tc-product-stepper .tc-ps-field-tags label .hint { display: none !important; } /* Figma Tags label has no info icon */
.tc-product-stepper .tc-ps-field-tags .tagify {
	--tags-border-color: #d1d7de;
	--tag-bg: #e8ecef;
	--tag-hover: #e8ecef;
	--tag-text-color: #364152;
	--tag-remove-btn-color: #8493a8;
	--placeholder-color: #afbbc9;
	--tagify-dd-color-primary: #006b70;
	border: 1px solid #d1d7de !important;
	border-radius: 8px !important;
	min-height: 36px !important;
	padding: 2px 6px !important;
	background: #fff !important;
}
.tc-product-stepper .tc-ps-field-tags .tagify__tag {
	margin: 3px 4px 3px 0 !important;
}
.tc-product-stepper .tc-ps-field-tags .tagify__tag > div {
	border-radius: 8px !important;
	padding: 4px 8px !important;
	background: #e8ecef !important;
}
.tc-product-stepper .tc-ps-field-tags .tagify__tag-text {
	font-size: 12px !important;
	line-height: 16px !important;
	font-weight: 500 !important;
	color: #364152 !important;
}
.tc-product-stepper .tc-ps-field-tags .tagify__input {
	font-size: 14px !important;
	color: #364152 !important;
}

/* ==========================================================================
   TC-12837 — Modals (reskinned alertify shell + payment-processor "Set up")

   Restyles the SHARED alertify dialog chrome, but scoped to
   `body:has(.tc-product-stepper)` so it only applies on the reskinned product
   editor page (flag ON) and never leaks to the rest of admin. This gives every
   modal in the flow (type selector, gallery, funnel editor, confirms, etc.) the
   reskinned shell generically; the payment-processor "Set up X" modal then gets
   its exact Figma internal layout (nodes 1574:5161/5181/5214/5265/5299/5343).
   Alertify DOM: .ajs-dimmer + .ajs-modal > .ajs-dialog >
     .ajs-commands(.ajs-close) · .ajs-header · .ajs-body>.ajs-content ·
     .ajs-footer > .ajs-auxiliary.ajs-buttons + .ajs-primary.ajs-buttons
   ========================================================================== */

/* ---- Overlay + dialog card (Figma: white, 1px #e8ecef, radius 12, subtle shadow) ---- */
body:has(.tc-product-stepper) .ajs-dimmer {
	background: rgba(0, 0, 0, 0.5) !important;
	opacity: 1 !important;
}
body:has(.tc-product-stepper) .ajs-dialog {
	background: #ffffff !important;
	border: 1px solid #e8ecef !important;
	border-radius: 12px !important;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important;
	padding: 0 !important;
	/* visible (not hidden) so in-modal tooltips can escape the dialog bounds like
	   on classic; header/footer round their own corners to keep the 12px radius. */
	overflow: visible;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
}
/* Processor "Set up" modal = 620px per Figma; other modals keep their width. */
body:has(.tc-product-stepper) .tc-modal-genericslightwide.ajs-dialog,
body:has(.tc-product-stepper) .tc-modal-genericslightwide .ajs-dialog {
	width: 620px !important;
	max-width: calc(100vw - 40px) !important;
}

/* ---- Header: title + close × on one bordered row ---- */
body:has(.tc-product-stepper) .ajs-header {
	display: flex !important;
	align-items: center !important;
	padding: 16px 24px !important;
	margin: 0 !important;
	border-bottom: 1px solid #e8ecef !important;
	border-radius: 12px 12px 0 0 !important;
	background: #ffffff !important;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;
	font-size: 16px !important;
	font-weight: 500 !important;
	line-height: 24px !important;
	color: #364152 !important;
}
body:has(.tc-product-stepper) .ajs-header i,
body:has(.tc-product-stepper) .ajs-header b {
	font-style: normal !important;
	font-weight: 500 !important;
	text-align: left !important;
}
/* Keep classic .hidden toggles working inside reskinned modal titles — e.g. the
   invoice/notification title has two <i data-invoice-design> variants and JS
   .hidden's the inactive one. A blanket display override here would show both. */
body:has(.tc-product-stepper) .ajs-header i.hidden,
body:has(.tc-product-stepper) .ajs-header b.hidden { display: none !important; }
/* Hide alertify's pin + native close (genericWindow renders the close
   inconsistently, and we inject our own Figma × via the stepper JS). Maximize
   is left intact so larger modals (gallery, funnel editor) keep it; it's nudged
   left of our injected ×. */
body:has(.tc-product-stepper) .ajs-commands .ajs-pin,
body:has(.tc-product-stepper) .ajs-commands .ajs-close { display: none !important; }
body:has(.tc-product-stepper) .ajs-commands { margin-right: 24px !important; }
body:has(.tc-product-stepper) .ajs-header .tc-ps-modal-close {
	position: absolute;
	top: 20px;
	right: 24px;
	width: 16px;
	height: 16px;
	padding: 0;
	border: 0;
	background-color: #3a4351;
	-webkit-mask: url('/static/icons/product-stepper/modal-close.svg') center / 12px 12px no-repeat;
	mask: url('/static/icons/product-stepper/modal-close.svg') center / 12px 12px no-repeat;
	cursor: pointer;
	opacity: 0.85;
}
body:has(.tc-product-stepper) .ajs-header .tc-ps-modal-close:hover { opacity: 1; }
body:has(.tc-product-stepper) .ajs-header { position: relative !important; }

/* ---- Body ---- */
body:has(.tc-product-stepper) .ajs-body { color: #364152; }
body:has(.tc-product-stepper) .ajs-body .ajs-content {
	padding: 24px !important;
}

/* ---- Footer: right-aligned Cancel + Save, no top border ---- */
body:has(.tc-product-stepper) .ajs-footer {
	display: flex !important;
	justify-content: flex-end !important;
	align-items: center !important;
	gap: 8px !important;
	padding: 0 24px 24px !important;
	margin: 0 !important;
	border-top: 0 !important;
	border-radius: 0 0 12px 12px !important;
	background: #ffffff !important;
	min-height: 0 !important;
}
body:has(.tc-product-stepper) .ajs-footer .ajs-buttons {
	display: inline-flex !important;
	gap: 8px !important;
	float: none !important;
	margin: 0 !important;
	text-align: right !important;
}
body:has(.tc-product-stepper) .ajs-footer .ajs-auxiliary { order: 1; }
body:has(.tc-product-stepper) .ajs-footer .ajs-primary { order: 2; }
body:has(.tc-product-stepper) .ajs-footer .ajs-button {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	padding: 8px 18px !important;
	margin: 0 !important;
	border-radius: 8px !important;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	line-height: 20px !important;
	text-transform: none !important;
	box-shadow: none !important;
}
body:has(.tc-product-stepper) .ajs-footer .ajs-button.ajs-cancel {
	background: #ffffff !important;
	border: 1px solid #e8ecef !important;
	color: #364152 !important;
}
body:has(.tc-product-stepper) .ajs-footer .ajs-button.ajs-cancel:hover { background: #f6f8f9 !important; }
body:has(.tc-product-stepper) .ajs-footer .ajs-button.ajs-ok {
	background: #006b70 !important;
	border: 1px solid #006b70 !important;
	color: #ffffff !important;
}
body:has(.tc-product-stepper) .ajs-footer .ajs-button.ajs-ok:hover { background: #00868c !important; border-color: #00868c !important; }

/* Destructive confirms (delete/remove) get the red danger button, tagged by the stepper JS. */
body:has(.tc-product-stepper) .ajs-dialog.tc-ps-danger-confirm .ajs-footer .ajs-button.ajs-ok {
	background: #d64545 !important;
	border-color: #d64545 !important;
}
body:has(.tc-product-stepper) .ajs-dialog.tc-ps-danger-confirm .ajs-footer .ajs-button.ajs-ok:hover { background: #c53030 !important; border-color: #c53030 !important; }

/* ==========================================================================
   Payment-processor "Set up X" modal internals (.ui-payment-opts in .ajs-content)
   ========================================================================== */
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts { padding: 0 !important; }

/* Any leftover legacy-blue primary button in a drained processor modal → reskin teal (green connect/save + red cancel keep their own colours). */
body:has(.tc-product-stepper) .ajs-content .pure-button.button-primary {
	background: #006b70 !important; border-color: #006b70 !important; color: #ffffff !important;
}
body:has(.tc-product-stepper) .ajs-content .pure-button.button-primary:hover { background: #00868c !important; border-color: #00868c !important; }

/* Legacy / Enhanced choice cards */
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-radio-tabs {
	display: flex !important;
	gap: 16px !important;
	margin-bottom: 32px !important;
}
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-radio {
	flex: 1 1 0 !important;
	display: grid !important;
	grid-template-columns: 56px 1fr !important;
	grid-template-areas: "logo title" "logo desc" !important;
	column-gap: 16px !important;
	row-gap: 4px !important;
	align-content: center !important;
	padding: 20px 16px !important;
	border: 1px solid #d1d7de !important;
	border-radius: 8px !important;
	background: #ffffff !important;
	cursor: pointer;
}
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-radio.active {
	border: 2px solid #006b70 !important;
	padding: 19px 15px !important; /* keep box size stable with the 2px border */
}
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-radio img {
	grid-area: logo !important;
	align-self: center !important;
	width: 56px !important;
	height: auto !important;
	max-height: 33px !important;
	object-fit: contain !important;
	margin: 0 !important;
}
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-radio h6 {
	grid-area: title !important;
	display: block !important; /* legacy CSS hides this; Figma shows the title */
	margin: 0 !important;
	font-size: 16px !important;
	font-weight: 600 !important;
	line-height: 24px !important;
	text-align: left !important;
	color: #2a3648 !important;
}
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-radio .default-description {
	grid-area: desc !important;
	margin: 0 !important;
	font-size: 14px !important;
	font-weight: 400 !important;
	line-height: 20px !important;
	text-align: left !important;
	color: #8493a8 !important;
}
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-radio .unavailable-content { grid-column: 1 / -1 !important; }
/* PayPal/Stripe Enhanced setup copy carried a legacy indent (a 30em centred block) to clear the old radio button; the reskin shows the options as cards, so drop it and align the copy with the modal column. */
body:has(.tc-product-stepper) .ajs-content .ui-paypal-setup,
body:has(.tc-product-stepper) .ajs-content .ui-stripe-setup { margin-left: 0 !important; }
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-radio-content:has(.ui-paypal-setup),
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-radio-content:has(.ui-stripe-setup) { padding-left: 0 !important; }
/* The Connect button was wrapped in .text-align-center; left-align it with the (left-aligned) setup copy. */
body:has(.tc-product-stepper) .ajs-content .text-align-center:has(.ui-paypal-save),
body:has(.tc-product-stepper) .ajs-content .text-align-center:has(.ui-stripe-save) { text-align: left !important; }

/* The Enhanced-setup copy leaked the admin h1-h6 colour (#555459) and a non-token size; normalise it to the reskin type scale. */
body:has(.tc-product-stepper) .ajs-content .ui-paypal-setup-h6,
body:has(.tc-product-stepper) .ajs-content .ui-stripe-setup-h6 {
	font-size: 14px !important;
	line-height: 20px !important;
	font-weight: 600 !important;
	color: #364152 !important;
}
body:has(.tc-product-stepper) .ajs-content .ui-paypal-setup,
body:has(.tc-product-stepper) .ajs-content .ui-paypal-setup-ul,
body:has(.tc-product-stepper) .ajs-content .ui-paypal-setup-ul li,
body:has(.tc-product-stepper) .ajs-content .ui-stripe-setup,
body:has(.tc-product-stepper) .ajs-content .ui-stripe-setup-ul,
body:has(.tc-product-stepper) .ajs-content .ui-stripe-setup-ul li {
	font-size: 14px !important;
	line-height: 20px !important;
	color: #8493a8 !important;
}

/* Account selector (label + select styled as the Figma text field) */
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts label {
	display: block !important;
	margin: 0 0 4px !important;
	padding: 0 !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	line-height: 20px !important;
	color: #2b384a !important;
}
/* The label reset above also hits the Enhanced radio/checkbox labels; restore the left padding so the control doesn't overlap the text. */
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts .radio label,
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts .checkbox label {
	display: inline-block !important;
	padding-left: 32px !important;
}
/* Selected radio/checkbox uses the legacy success mint (#10CFBD); recolour to the reskin primary. */
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts .radio.radio-success input[type=radio]:checked + label::before,
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts .checkbox.check-success input[type=checkbox]:checked + label::before {
	border-color: #006b70 !important;
}
/* Promo logo (e.g. Stripe Connect+) is centred via margin:0 auto; left-align it to match the reskin's left-aligned modal content. */
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts > img { margin-left: 0 !important; }
body:has(.tc-product-stepper) .ajs-content .ui-payment-select,
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts select {
	width: 100% !important;
	height: 38px !important;
	padding: 8px 36px 8px 12px !important;
	border: 1px solid #d1d7de !important;
	border-radius: 8px !important;
	background-color: #ffffff !important;
	font-size: 14px !important;
	line-height: 20px !important;
	color: #364152 !important;
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	/* CSS caret chevron (right side) */
	background-image:
		linear-gradient(45deg, transparent 50%, #8493a8 50%),
		linear-gradient(135deg, #8493a8 50%, transparent 50%);
	background-position:
		right 16px center,
		right 11px center;
	background-size: 5px 5px, 5px 5px;
	background-repeat: no-repeat, no-repeat;
}

/* Extra payment methods (Apple Pay / Google Pay) */
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-extra_payment_methods { margin-top: 32px !important; }
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-extra_payment_methods > .hr {
	border: 0 !important;
	margin: 0 0 16px !important;
	padding: 0 !important;
}
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-extra_payment_methods > .hr p {
	margin: 0 !important;
	font-size: 16px !important;
	font-weight: 600 !important;
	line-height: 24px !important;
	color: #364152 !important;
}
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-extra_payment_method {
	padding: 20px !important;
	margin: 0 0 16px !important;
	border: 1px solid #e8ecef !important;
	border-radius: 8px !important;
	background: #ffffff !important;
	box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.05) !important;
}
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-extra_payment_method:last-child { margin-bottom: 0 !important; }
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-extra_payment_method label {
	font-size: 14px !important;
	font-weight: 400 !important;
	color: #364152 !important;
}
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-extra_payment_method-content .callout {
	display: flex !important;
	align-items: center !important;
	margin: 12px 0 0 !important;
	padding: 0 !important;
	border: 0 !important;
	background: transparent !important;
	font-size: 14px !important;
	line-height: 20px !important;
	color: #8493a8 !important;
}
/* "Setup" / "Info" → Figma "How to Setup" button */
body:has(.tc-product-stepper) .ajs-content .ui-apple_pay-setup,
body:has(.tc-product-stepper) .ajs-content .ui-google_pay-setup {
	margin-left: auto !important;
	padding: 8px 18px !important;
	border: 1px solid #e8ecef !important;
	border-radius: 8px !important;
	background: #ffffff !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	line-height: 20px !important;
	color: #364152 !important;
	white-space: nowrap;
}

/* Connect-account button (Authorize.Net / PayPal / unconnected) → primary teal */
body:has(.tc-product-stepper) .ajs-content .ui-payment-opts .button-success {
	background: #006b70 !important;
	border: 1px solid #006b70 !important;
	border-radius: 8px !important;
	padding: 8px 18px !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	line-height: 20px !important;
	color: #ffffff !important;
	box-shadow: none !important;
}

/* ==========================================================================
   TC-12837 — Pricing step (Step 2)

   Reskin chrome (heading + banner + One Time / Subscription cards) is server-
   rendered by products.settings/pricing.stepper.php at the top of the classic
   pricing section. The editor itself is the classic alertify pricing-option
   modal, REUSED unchanged and only repositioned inline by products-stepper.js
   (enhancePricing) — this CSS strips its modal chrome so it reads as inline.
   ========================================================================== */

/* Reskin chrome container (mount point for the inlined editor). */
.tc-product-stepper .tc-ps-pricing {
	display: flex;
	flex-direction: column;
	gap: 32px;
	max-width: 992px;
}
/* Order: heading/banner/cards (source order 0) → editor → sales tax → Add button.
   The editor + tax box + button are appended by JS at different times, so pin
   their order explicitly rather than rely on append sequence. */
.tc-product-stepper .tc-ps-pricing > .tc-ps-pricing-inline { order: 1; }
.tc-product-stepper .tc-ps-pricing > .tc-ps-tax-box { order: 2; }
.tc-product-stepper .tc-ps-pricing > .tc-ps-add-btn { order: 3; }
.tc-product-stepper .tc-ps-pricing-title {
	margin: 0 !important;
	font-size: 24px !important;
	font-weight: 600 !important;
	line-height: 32px !important;
	color: #364152 !important; /* Figma 5885 title node = #364152 */
}

/* Info banner (Figma blue-100). */
.tc-product-stepper .tc-ps-pricing-banner {
	display: flex;
	gap: 8px;
	align-items: flex-start;
	padding: 16px;
	border-radius: 8px;
	background: #bee3f8;
}
.tc-product-stepper .tc-ps-pricing-banner-icon {
	flex-shrink: 0;
	width: 24px;
	height: 24px;
	background-color: #364152;
	-webkit-mask: url('/static/icons/product-stepper/banner-info.svg') center no-repeat;
	-webkit-mask-size: 20px 20px;
	mask: url('/static/icons/product-stepper/banner-info.svg') center no-repeat;
	mask-size: 20px 20px;
}
.tc-product-stepper .tc-ps-pricing-banner p {
	margin: 0;
	font-size: 14px;
	line-height: 20px;
	color: #364152;
}
/* Field helper text moved under its input (products-stepper.js) — small muted note. */
.tc-product-stepper .tc-ps-field-hint {
	display: block;
	margin: 4px 0 0;
	font-size: 12px;
	line-height: 16px;
	color: #8493a8;
}

/* One Time / Subscription cards (Figma "Inputs / Checkbox Group"). */
.tc-product-stepper .tc-ps-pricecards { display: flex; gap: 16px; }
.tc-product-stepper .tc-ps-pricecard {
	flex: 1 1 0;
	display: flex !important;
	gap: 16px !important;
	align-items: center !important;
	padding: 20px 16px !important;
	border: 1px solid #d1d7de !important;
	border-radius: 8px !important;
	background: #ffffff !important;
	cursor: pointer;
	margin: 0 !important;
	position: relative;
}
.tc-product-stepper .tc-ps-pricecard.is-selected { border: 2px solid #006b70 !important; padding: 19px 15px !important; }
/* Retention offers (TC-8567) ride the toggle-card chrome; its settings need a gap under the description. */
.tc-product-stepper .ui-retention-offers #ui-retention-offers-options { margin-top: 16px; }
/* Anchored billing date (TP-1461) in the stepper: same neutrals and teal selected outline as the type cards above. */
.tc-product-stepper #checkout-pricing-anchored-subscription-wrapper .billing-date-section { background: #ffffff; border: 1px solid #e8ecef; border-radius: 8px; padding: 16px; }
.tc-product-stepper #checkout-pricing-anchored-subscription-wrapper .billing-date-section > label { font-size: 14px; font-weight: 500; line-height: 20px; color: #2a3648; }
.tc-product-stepper #checkout-pricing-anchored-subscription-wrapper .billing-date-section .radio-option { border: 1px solid #d1d7de; padding: 12px 16px; background: #ffffff; }
.tc-product-stepper #checkout-pricing-anchored-subscription-wrapper .billing-date-section .radio-option.selected { border: 2px solid #006b70; padding: 11px 15px; background: #ffffff; }
.tc-product-stepper #checkout-pricing-anchored-subscription-wrapper .billing-date-section .radio-option:hover { border-color: #006b70; background: #ffffff; }
.tc-product-stepper #checkout-pricing-anchored-subscription-wrapper .billing-date-section .radio-option input[type="radio"] { accent-color: #006b70; }
.tc-product-stepper #checkout-pricing-anchored-subscription-wrapper .billing-date-section .radio-label-wrap strong { font-size: 14px; color: #2a3648; }
.tc-product-stepper #checkout-pricing-anchored-subscription-wrapper .billing-date-section .radio-label-wrap span { color: #8493a8; }
.tc-product-stepper #checkout-pricing-anchored-subscription-wrapper .billing-date-section .anchor-picker { border: 1px solid #d1d7de; }
.tc-product-stepper #checkout-pricing-anchored-subscription-wrapper .billing-date-section .anchor-picker .preview { color: #006b70; }
@media (max-width: 767px) {
	/* The option text and the day/gap pickers wrap inside the card instead of running past it. */
	.tc-product-stepper #checkout-pricing-anchored-subscription-wrapper .billing-date-section .radio-label-wrap { min-width: 0; }
	.tc-product-stepper #checkout-pricing-anchored-subscription-wrapper .billing-date-section .anchor-picker,
	.tc-product-stepper #checkout-pricing-anchored-subscription-wrapper .billing-date-section .gap-option { flex-wrap: wrap; }
	.tc-product-stepper #checkout-pricing-anchored-subscription-wrapper .billing-date-section .anchor-picker label,
	.tc-product-stepper #checkout-pricing-anchored-subscription-wrapper .billing-date-section .gap-option label,
	.tc-product-stepper #checkout-pricing-anchored-subscription-wrapper .billing-date-section .anchor-picker .preview { white-space: normal; }
	.tc-product-stepper #checkout-pricing-anchored-subscription-wrapper .billing-date-section .gap-option select { max-width: 100%; }
}
/* No radio in the Figma cards - the teal outline is the state. Kept in the DOM for arrow-key selection. */
.tc-product-stepper .tc-ps-pricecard-input {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	border: 0;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}
.tc-product-stepper .tc-ps-pricecard:has(.tc-ps-pricecard-input:focus-visible) {
	outline: 2px solid #006b70;
	outline-offset: 2px;
}
.tc-product-stepper .tc-ps-pricecard-icon {
	flex-shrink: 0;
	width: 48px;
	height: 48px;
	border-radius: 24px;
	background-color: #f6f8f9;
	position: relative;
}
/* Multi-color Streamline icons → background-image (native colors), NOT mask
   (masking a filled icon flattens it to a solid block). */
.tc-product-stepper .tc-ps-pricecard-icon::before {
	content: '';
	position: absolute;
	inset: 12px;
	background-position: center;
	background-repeat: no-repeat;
	background-size: contain;
}
.tc-product-stepper .tc-ps-pricecard-icon-onetime::before {
	background-image: url('/static/icons/product-stepper/credit-card.svg');
}
.tc-product-stepper .tc-ps-pricecard-icon-subscription::before {
	background-image: url('/static/icons/product-stepper/sync-loop.svg');
}
.tc-product-stepper .tc-ps-pricecard-body {
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding-right: 20px;
}
/* !important: the cards sit inside the legacy #ui-product-settings form whose
   span rules force font-size/weight/color — override them to the Figma spec. */
.tc-product-stepper .tc-ps-pricecard-title {
	font-size: 16px !important;
	font-weight: 600 !important;
	line-height: 24px !important;
	color: #2a3648 !important;
}
.tc-product-stepper .tc-ps-pricecard-desc {
	font-size: 14px !important;
	font-weight: 400 !important;
	line-height: 20px !important;
	color: #8493a8 !important;
}

/* Offer Flexible Payment Options? dropdown (Figma: between cards and Price) */
.tc-product-stepper .tc-ps-flexpay,
.tc-product-stepper .tc-ps-subtype { display: flex; flex-direction: column; gap: 4px; }
.tc-product-stepper .tc-ps-flexpay > label,
.tc-product-stepper .tc-ps-subtype > label {
	font-size: 14px; font-weight: 500; line-height: 20px; color: #2b384a; margin: 0;
}
/* Subscription-limited non-payment warning (Figma 8639). */
.tc-product-stepper .tc-ps-sub-warning {
	display: flex; gap: 8px; align-items: flex-start; width: 100%;
	padding: 16px; border-radius: 8px; background: #fee9da; box-sizing: border-box;
}
.tc-product-stepper .tc-ps-sub-warning-icon {
	flex-shrink: 0; width: 20px; height: 20px; margin-top: 1px;
	background: url('/static/icons/product-stepper/warning-triangle.svg') no-repeat center;
	background-size: 20px 20px;
}
.tc-product-stepper .tc-ps-sub-warning-text strong {
	display: block; font-size: 16px; font-weight: 500; line-height: 24px; color: #2a3648; margin-bottom: 2px;
}
.tc-product-stepper .tc-ps-sub-warning-text p {
	margin: 0; font-size: 14px; line-height: 20px; color: #364152;
}

.tc-product-stepper .tc-ps-flexpay-select {
	height: 38px; padding: 8px 36px 8px 12px;
	border: 1px solid #d1d7de; border-radius: 8px; background-color: #ffffff;
	font-size: 14px; line-height: 20px; color: #364152; width: 100%;
	-webkit-appearance: none; -moz-appearance: none; appearance: none;
	/* Figma 5924: expand_more chevron (native 8×4.94), not a triangle. */
	background-image: url('/static/icons/product-stepper/expand-more.svg');
	background-position: right 16px center;
	background-size: 8px 4.94px; background-repeat: no-repeat;
}

/* Currency picker keeps the classic select (Authorize.net lock + hint), restyled as a stacked field. */
.tc-product-stepper[data-step="pricing"] #ui-product-settings-tab-settings-options-pricing .pure-g.ui-input-group:has(#checkout-pricing-currency) {
	display: flex; flex-direction: column; gap: 4px; width: auto; margin: 0;
}
.tc-product-stepper[data-step="pricing"] #ui-product-settings-tab-settings-options-pricing .ui-input-group:has(#checkout-pricing-currency) > [class*="pure-u-"] { width: 100%; padding: 0; }
.tc-product-stepper[data-step="pricing"] #ui-product-settings-tab-settings-options-pricing .ui-input-group:has(#checkout-pricing-currency) .row { margin: 0; padding: 0; }
.tc-product-stepper[data-step="pricing"] #ui-product-settings-tab-settings-options-pricing .ui-input-group:has(#checkout-pricing-currency) label {
	font-size: 14px; font-weight: 500; color: #2b384a; margin: 0; padding: 0;
}
/* helpers.css forces .label-vertical line-height 2.8 !important; a fixed-height flex box keeps the one-line label at 20px. */
@media (min-width: 768px) {
	.tc-product-stepper[data-step="pricing"] #ui-product-settings-tab-settings-options-pricing .ui-input-group:has(#checkout-pricing-currency) label {
		display: flex; align-items: center; height: 20px;
	}
}
.tc-product-stepper[data-step="pricing"] #checkout-pricing-currency {
	height: 38px; padding: 8px 36px 8px 12px; width: 100%;
	border: 1px solid #d1d7de; border-radius: 8px; background-color: #ffffff;
	font-size: 14px; line-height: 20px; color: #364152;
	-webkit-appearance: none; -moz-appearance: none; appearance: none;
	background-image: url('/static/icons/product-stepper/expand-more.svg');
	background-position: right 16px center;
	background-size: 8px 4.94px; background-repeat: no-repeat;
}

/* Hide the classic pricing chrome the reskin replaces. */
.tc-product-stepper[data-step="pricing"] #ui-product-settings-tab-settings-options-pricing .box > .ui-title,
.tc-product-stepper[data-step="pricing"] #ui-product-settings-tab-settings-options-pricing .box > .pure-g.ui-input-group:not(:has(#checkout-pricing-currency)),
.tc-product-stepper[data-step="pricing"] #ui-product-settings-tab-settings-options-pricing #ui-payment_plans-empty {
	display: none !important;
}
/* Remove the classic .box border/padding — the stepper provides the frame. */
.tc-product-stepper[data-step="pricing"] #ui-product-settings-tab-settings-options-pricing .box:not(.tc-ps-togglecard) {
	border: 0 !important;
	background: transparent !important;
	padding: 0 !important;
	box-shadow: none !important;
	margin: 0 !important;
}
/* Tighten the pricing option's title → price gap (legacy .generic-list-aside sets 0.5em). */
.tc-product-stepper[data-step="pricing"] .generic-list-aside { margin-top: 2px; }

/* #2: Suppress the flash of the pricing-option modal before the reskin inlines
   it. In stepper mode the pricing editor is ALWAYS relocated inline, so a
   pricing modal that isn't inlined yet must NEVER be visible — hide it
   unconditionally (no timing flag), which kills the flash on user-clicked Add
   too, not just the auto-open. */
body:has(.tc-product-stepper) .alertify:has(.tc-modal-pricing_option):not(.tc-ps-pricing-inline) {
	visibility: hidden !important;
}

/* #3: The "Set up sales tax" wizard modal — toggling "Calculate sales tax?"
   opens it, but the reskin flattens its sections inline (Figma "Sales Tax On"),
   so it must never be visible. It has no class, so JS tags it `.tc-ps-tax-modal`
   the instant it appears; the tax-opening flag covers the pre-tag window. */
body:has(.tc-product-stepper) .alertify.tc-ps-tax-modal,
body.tc-ps-tax-opening .alertify:not(.tc-ps-pricing-inline) {
	visibility: hidden !important;
}

/* The pricing editor is inlined but stays a technically-"open" alertify modal,
   so alertify scroll-locks the body (.ajs-fixed / .ajs-no-overflow + inline top).
   Unlock it so the pricing step scrolls normally. */
body:has(.tc-ps-pricing-inline).ajs-no-overflow,
body:has(.tc-ps-pricing-inline).ajs-fixed {
	position: static !important;
	overflow: visible !important;
	overflow-y: visible !important;
	top: auto !important;
}

/* ---- Inlined pricing editor: strip the alertify modal chrome ---- */
.tc-product-stepper .tc-ps-pricing-inline { position: static !important; display: block !important; width: 100%; }
/* Legacy .pure-form-stacked shrinks field sub-labels (e.g. split-pay "Including today") to 95% = 13.3px; normalise to the reskin hint size. */
.tc-product-stepper .tc-ps-pricing-inline .pure-form-stacked label span { font-size: 12px !important; line-height: 16px !important; }
/* Split-pay/subscription charge summary → clean info-card row (was muted body text). */
.tc-product-stepper .tc-ps-editor #checkout-pricing-overview-wrapper { margin: 4px 0 12px !important; }
.tc-product-stepper .tc-ps-editor #checkout-pricing-overview-wrapper .callout-info {
	display: flex !important;
	align-items: flex-start;
	gap: 10px;
	background: #bee3f8 !important;
	border: 0 !important;
	border-radius: 8px !important;
	padding: 12px 14px !important;
	margin: 0 !important;
	font-size: 13px !important;
	line-height: 20px !important;
	color: #364152 !important;
}
.tc-product-stepper .tc-ps-editor #checkout-pricing-overview-wrapper .callout-info::before {
	content: '';
	flex: 0 0 18px;
	width: 18px;
	height: 18px;
	margin-top: 1px;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Ccircle cx='12' cy='12' r='9' fill='%23364152'/%3E%3Crect x='11' y='10.5' width='2' height='6' rx='1' fill='white'/%3E%3Ccircle cx='12' cy='7.75' r='1.25' fill='white'/%3E%3C/svg%3E") no-repeat center;
	background-size: contain;
}
/* Affiliates bottom note → the Figma blue info banner (matches Pricing/Adaptive). .tc-aff-reskin beats the generic grey .callout rule. */
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .callout.callout-info {
	display: flex !important;
	align-items: flex-start;
	gap: 10px;
	background: #bee3f8 !important;
	border: 0 !important;
	border-radius: 8px !important;
	padding: 16px !important;
	font-size: 14px !important;
	line-height: 20px !important;
	color: #364152 !important;
}
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .callout.callout-info::before {
	content: '';
	flex: 0 0 18px;
	width: 18px;
	height: 18px;
	margin-top: 1px;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none'%3E%3Ccircle cx='12' cy='12' r='9' fill='%23364152'/%3E%3Crect x='11' y='10.5' width='2' height='6' rx='1' fill='white'/%3E%3Ccircle cx='12' cy='7.75' r='1.25' fill='white'/%3E%3C/svg%3E") no-repeat center;
	background-size: contain;
}
.tc-product-stepper .tc-ps-pricing-inline .ajs-modal {
	position: static !important;
	padding: 0 !important;
	overflow: visible !important;
	max-width: none !important;
	width: 100% !important;
}
.tc-product-stepper .tc-ps-pricing-inline .ajs-dialog {
	position: static !important;
	width: 100% !important;
	max-width: none !important;
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	background: transparent !important;
}
/* Our own heading + cards stand in for the modal title. */
.tc-product-stepper .tc-ps-pricing-inline .ajs-header,
.tc-product-stepper .tc-ps-pricing-inline .ajs-commands { display: none !important; }
.tc-product-stepper .tc-ps-pricing-inline.alertify { padding: 0 !important; margin: 0 !important; }
.tc-product-stepper .tc-ps-pricing-inline .ajs-body { max-height: none !important; padding: 0 !important; margin: 0 !important; min-height: 0 !important; overflow: visible !important; }
/* overflow:visible — the inline editor is not a rounded card, so it must not
   clip the fields' left edges/rounded corners (alertify's dialog clips by default). */
.tc-product-stepper .tc-ps-pricing-inline .ajs-dialog { min-height: 0 !important; padding: 0 !important; margin: 0 !important; overflow: visible !important; }
.tc-product-stepper .tc-ps-pricing-inline .ajs-body .ajs-content { padding: 0 !important; overflow: visible !important; }
/* Neutralise the classic gutter compensation (main.css:461 makes .ui-input-group
   calc(100% + 1em) with a -0.5em pull, expecting the child columns' 0.5em padding
   to absorb it). The reskin zeroes that child padding, so the extra 1em overflowed
   the 992 column — the editor fields rendered ~13px wider than the Payment Type
   select and the cards. Clamp the group to the mount so every field aligns. */
.tc-product-stepper .tc-ps-pricing-inline .ui-input-group {
	width: 100% !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}
/* The editor's own "Payment type" select is replaced by the reskin cards. */
.tc-product-stepper .tc-ps-pricing-inline .ui-payment_plans-tpl-typeselector { display: none !important; }
/* Footer: keep Cancel/Next but align right, no top border. */
/* The dialog's own footer (Cancel / Next / Save) is hidden — the single Figma
   "Add Pricing Option" button (.tc-ps-form-add) drives it via JS click, which
   works on a display:none element. This is what replaces the 2-pane Next/Save. */
.tc-product-stepper .tc-ps-pricing-inline .ajs-footer { display: none !important; }

/* ---- Inline editor: reskin the classic form controls to the design system.
   Retained fields the Figma omits (receipt email, quantity, locations) are
   kept and restyled here rather than hidden (skill D10). ---- */
.tc-product-stepper .tc-ps-pricing-inline .ajs-content { font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; }
.tc-product-stepper .tc-ps-pricing-inline .row { margin-bottom: 20px !important; }
/* Empty classic spacer rows (e.g. between a toggle-revealed label and its select) must not inherit the 20px — it detaches the label from its input. */
.tc-product-stepper .tc-ps-pricing-inline .row:empty { margin-bottom: 0 !important; }
/* Figma stacks every field full-width; the classic editor uses pure-u columns
   (Price + Trial side by side). Force each column full-width to stack them, and
   drop the grid gutter padding so fields align flush to the content edge (not
   inset/clipped). */
.tc-product-stepper .tc-ps-pricing-inline .pure-g { margin-left: 0 !important; margin-right: 0 !important; }
.tc-product-stepper .tc-ps-pricing-inline .pure-g > [class*="pure-u"] {
	width: 100% !important;
	padding-left: 0 !important;
	padding-right: 0 !important;
}
/* Labels */
.tc-product-stepper .tc-ps-pricing-inline label {
	font-size: 14px !important;
	font-weight: 500 !important;
	line-height: 20px !important;
	color: #2b384a !important;
	margin-bottom: 4px !important;
}
/* Section sub-headings (e.g. "Customer purchase email") */
.tc-product-stepper .tc-ps-pricing-inline .hr p,
.tc-product-stepper .tc-ps-pricing-inline h3,
.tc-product-stepper .tc-ps-pricing-inline h4 {
	font-size: 16px !important;
	font-weight: 600 !important;
	line-height: 24px !important;
	color: #364152 !important;
}
/* Text inputs + selects */
.tc-product-stepper .tc-ps-pricing-inline input[type="text"],
.tc-product-stepper .tc-ps-pricing-inline input[type="number"],
.tc-product-stepper .tc-ps-pricing-inline select {
	height: 38px !important;
	padding: 8px 12px !important;
	border: 1px solid #d1d7de !important;
	border-radius: 8px !important;
	background-color: #ffffff !important;
	font-size: 14px !important;
	line-height: 20px !important;
	color: #364152 !important;
	box-shadow: none !important;
}
.tc-product-stepper .tc-ps-pricing-inline select {
	-webkit-appearance: none; -moz-appearance: none; appearance: none;
	padding-right: 36px !important;
	/* Figma 5924/5926: the select uses the expand_more chevron (native 8×4.94),
	   NOT a triangle. */
	background-image: url('/static/icons/product-stepper/expand-more.svg') !important;
	background-position: right 16px center !important;
	background-size: 8px 4.94px !important;
	background-repeat: no-repeat !important;
}
/* Center the % suffix pill vertically — the legacy line-height centering breaks at the reskin input height, leaving it top-aligned. */
.tc-product-stepper .input-pill:not(.input-pill-left) em {
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	line-height: 1 !important;
}

/* $ price pill (input-pill-left) — Figma 8506: $ pill joined to the input as
   flex siblings. The classic `em` is position:absolute (overlaps the input);
   force it static so it sits beside the input instead of over it. */
.tc-product-stepper .tc-ps-pricing-inline .input-pill-left {
	display: flex !important;
	align-items: stretch !important;
	position: relative;
}
.tc-product-stepper .tc-ps-pricing-inline .input-pill-left em {
	position: static !important;
	flex-shrink: 0 !important;
	display: inline-flex !important;
	align-items: center !important;
	width: auto !important;
	height: auto !important;
	padding: 8px 12px !important;
	border: 1px solid #d1d7de !important;
	border-right: 0 !important;
	border-radius: 8px 0 0 8px !important;
	background: #f6f8f9 !important;
	font-style: normal !important;
	font-size: 14px !important;
	line-height: 20px !important;
	color: #364152 !important;
}
.tc-product-stepper .tc-ps-pricing-inline .input-pill-left input {
	border-radius: 0 8px 8px 0 !important;
	flex: 1 1 auto !important;
	width: auto !important;
	min-width: 0 !important;
	/* Figma 5925: input p-8. The classic input's margin inflated the flex row to
	   45px so the $ pill (align stretch) overshot the 38px input — kill it. */
	margin: 0 !important;
	padding: 8px !important;
}
.tc-product-stepper .tc-ps-pricing-inline .input-pill-left input::placeholder {
	color: #afbbc9 !important;
	opacity: 1;
}
/* Checkboxes (receipts etc.) → reskin square, teal when checked */
.tc-product-stepper .tc-ps-pricing-inline .checkbox input[type="checkbox"] + label::before {
	border-radius: 4px !important;
	border-color: #d1d7de !important;
}
.tc-product-stepper .tc-ps-pricing-inline .checkbox input[type="checkbox"]:checked + label::before {
	background-color: #006b70 !important;
	border-color: #006b70 !important;
}
.tc-product-stepper .tc-ps-pricing-inline .checkbox label {
	font-weight: 400 !important;
	color: #364152 !important;
}
/* Info callouts → subtle reskin (clean bordered box, no classic left-accent) */
.tc-product-stepper .tc-ps-pricing-inline .callout {
	border-radius: 8px !important;
	border: 1px solid #e8ecef !important;
	border-left: 1px solid #e8ecef !important;
	background: #f6f8f9 !important;
	padding: 12px 16px !important;
	font-size: 14px !important;
	line-height: 20px !important;
	color: #364152 !important;
	box-shadow: none !important;
}

/* ---- Calculate Sales Tax box + toggle switch (Figma grey box + 32×20 switch) ---- */
/* Shared toggle-card chrome for the tax box + cancel/receipt opt-boxes. */
.tc-product-stepper .tc-ps-togglecard {
	background: #f6f8f9 !important;
	border: 0 !important;
	border-radius: 8px !important;
	padding: 24px !important;
	box-shadow: none !important;
	margin: 0 !important;
	overflow: visible !important;
}
.tc-product-stepper .tc-ps-optbox { margin: 0 0 16px !important; }
/* Restyle the cancel card's expanded product picker (subtabs + search); keeps showTab(). */
.tc-product-stepper .ui-product-cancel .ui-user-access-global_tabs {
	display: flex !important;
	gap: 24px !important;
	list-style: none !important;
	margin: 12px 0 16px !important;
	padding: 0 !important;
	border-bottom: 1px solid #d1d7de !important;
}
.tc-product-stepper .ui-product-cancel .ui-user-access-global_tabs li {
	padding: 8px 0 !important;
	margin: 0 0 -1px 0 !important;
	font-size: 14px !important;
	line-height: 20px !important;
	color: #8493a8 !important;
	cursor: pointer;
	border: 0 !important;
	border-bottom: 2px solid transparent !important;
	border-radius: 0 !important;
	list-style: none !important;
	background: none !important;
}
.tc-product-stepper .ui-product-cancel .ui-user-access-global_tabs li.active {
	color: #006b70 !important;
	border-bottom-color: #006b70 !important;
	font-weight: 500 !important;
}
.tc-product-stepper .ui-product-cancel input[placeholder] {
	width: 100% !important;
	box-sizing: border-box !important;
	padding: 10px 12px !important;
	margin: 0 0 12px !important;
	border: 1px solid #d1d7de !important;
	border-radius: 8px !important;
	background: #fff !important;
	font-size: 14px !important;
	color: #364152 !important;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;
}
/* Distinct white row cards instead of near-invisible strips; contain the ribbon. */
.tc-product-stepper .ui-product-cancel .product-listing-widget-card {
	background: #fff !important;
	border: 1px solid #d1d7de !important;
	border-radius: 8px !important;
	padding: 12px 16px !important;
	margin: 0 0 8px !important;
	box-shadow: none !important;
	overflow: hidden !important;
}
.tc-product-stepper .ui-product-cancel .product-listing-widget-card:last-child { margin-bottom: 0 !important; }
.tc-product-stepper .ui-product-cancel .product-listing-widget-card .ribbon { border-radius: 0 8px 0 0 !important; }
.tc-product-stepper .tc-ps-togglecard .ui-box-icon { display: none !important; }
.tc-product-stepper .tc-ps-togglecard .ui-box-content { margin: 0 !important; padding: 0 !important; }
.tc-product-stepper .tc-ps-togglecard h2 { margin: 0 !important; font-size: 14px !important; font-weight: 400 !important; }
.tc-product-stepper .tc-ps-togglecard > .ui-box-content > p { margin: 4px 0 0 44px !important; font-size: 13px !important; line-height: 18px !important; color: #8493a8 !important; }
/* checkbox → switch */
.tc-product-stepper .tc-ps-togglecard .checkbox { position: relative; margin: 0 !important; }
.tc-product-stepper .tc-ps-togglecard .checkbox input[type="checkbox"] { position: absolute !important; opacity: 0 !important; width: 32px; height: 20px; margin: 0; cursor: pointer; z-index: 1; }
.tc-product-stepper .tc-ps-togglecard .checkbox label {
	position: relative;
	display: inline-flex !important;
	align-items: center;
	min-height: 20px;
	padding-left: 44px !important;
	margin: 0 !important;
	font-size: 14px !important;
	font-weight: 400 !important;
	color: #364152 !important;
	cursor: pointer;
}
.tc-product-stepper .tc-ps-togglecard .checkbox label::before {
	content: '' !important;
	position: absolute !important;
	left: 0; top: 50%;
	transform: translateY(-50%);
	width: 32px !important; height: 20px !important;
	border-radius: 100px !important;
	background: #d1d7de !important;
	border: 0 !important;
	transition: background .15s;
}
.tc-product-stepper .tc-ps-togglecard .checkbox label::after {
	content: '' !important;
	position: absolute !important;
	left: 3px; top: 50%;
	transform: translateY(-50%);
	width: 14px !important; height: 14px !important;
	border-radius: 50% !important;
	background: #ffffff !important;
	transition: left .15s;
}
.tc-product-stepper .tc-ps-togglecard .checkbox input:checked + label::before { background: #006b70 !important; }
.tc-product-stepper .tc-ps-togglecard .checkbox input:checked + label::after { left: 15px; }
/* Pro+ gating badge stays, just spaced */
.tc-product-stepper .tc-ps-togglecard .checkbox .pure-button { margin-left: 8px !important; }

/* ---- Flattened tax config (sections stacked inline) ---- */
.tc-product-stepper .tc-ps-tax-config { display: flex; flex-direction: column; gap: 16px; margin-top: 20px; }
/* Figma 8469 flow: Provider → Category → Overrides toggle → checkboxes → Address.
   Every child needs an explicit order or it defaults to 0 and floats to the top
   (that's why Tax profile / the empty duplicate category were appearing first).
   The inclusive-tax setting + tax profile aren't in the Figma but are retained
   (D10) at the end. */
.tc-product-stepper .tc-ps-tax-config #ui-salestax-tpl-provider { order: 1; }
.tc-product-stepper .tc-ps-tax-config #ui-salestax-tpl-category { order: 2; }
.tc-product-stepper .tc-ps-tax-config #ui-salestax-tpl-remote_industry { order: 3; }
.tc-product-stepper .tc-ps-tax-config .tc-ps-tax-overrides { order: 4; }
.tc-product-stepper .tc-ps-tax-config #ui-salestax-tpl-opts { order: 5; }
.tc-product-stepper .tc-ps-tax-config .tc-ps-tax-address { order: 6; }
.tc-product-stepper .tc-ps-tax-config #ui-salestax-tpl-structure { order: 7; }
.tc-product-stepper .tc-ps-tax-config #ui-salestax-tpl-profile { order: 8; }
/* remote-industry (the integration-provider category list) visibility is driven by
   JS (syncTaxSections) mirroring the wizard's hidden_steps, not a CSS :empty hack. */
/* Trim the verbose classic helper paragraphs the Figma omits (keep them muted +
   small rather than the current full-size body copy that adds noise). */
.tc-product-stepper .tc-ps-tax-config [id^="ui-salestax-tpl-"] > p:first-child,
.tc-product-stepper .tc-ps-tax-box .ui-payment-opts p,
.tc-product-stepper .tc-ps-tax-box .product-tax-inclusive p { font-size: 12px !important; line-height: 16px !important; color: #8493a8 !important; margin: 0 0 4px !important; font-weight: 400 !important; }
/* Redundant with the inline provider dropdown; mute rather than remove. */
.tc-product-stepper .tc-ps-tax-box .ui-payment-opts > .margin-top-055 { font-size: 12px !important; color: #8493a8 !important; margin: 0 0 12px !important; }
.tc-product-stepper .tc-ps-tax-box .ui-payment-opts > .margin-top-055 #ui-salestax-edit { display: none !important; }
/* This block's helper copy is a <label> not <p>; mute it and drop the <hr>. */
.tc-product-stepper .tc-ps-tax-box .ui-payment-opts hr { display: none !important; }
.tc-product-stepper .tc-ps-tax-box .product-tax-inclusive .tax-structure-label { font-size: 12px !important; line-height: 16px !important; color: #8493a8 !important; font-weight: 400 !important; margin-bottom: 4px !important; }
.tc-product-stepper .tc-ps-tax-box .product-tax-inclusive .tax-structure-heading { font-size: 14px !important; font-weight: 400 !important; color: #364152 !important; margin-bottom: 4px !important; }
/* Collapsed tax card is toggle-only — drop the helper description line. */
.tc-product-stepper .tc-ps-tax-box > .ui-box-content > p { display: none !important; }

/* Tax address block (net-new; pre-filled from owner's business address) */
.tc-product-stepper .tc-ps-tax-address { display: flex; flex-direction: column; gap: 12px; }
.tc-product-stepper .tc-ps-tax-address-field { display: flex; flex-direction: column; gap: 4px; }

/* Tax Overrides toggle (Figma 8514: 32×20 switch, ON #00868c, "Tax Overrides") */
.tc-product-stepper .tc-ps-tax-overrides {
	display: inline-flex !important;
	align-items: center;
	gap: 8px;
	margin: 0 !important;
	cursor: pointer;
}
.tc-product-stepper .tc-ps-tax-overrides input { position: absolute; opacity: 0; width: 0; height: 0; }
.tc-product-stepper .tc-ps-tax-overrides-track {
	position: relative;
	flex-shrink: 0;
	width: 32px; height: 20px;
	border-radius: 100px;
	background: #d1d7de;
	transition: background .15s;
}
.tc-product-stepper .tc-ps-tax-overrides-track::after {
	content: '';
	position: absolute;
	left: 3px; top: 50%;
	transform: translateY(-50%);
	width: 14px; height: 14px;
	border-radius: 50%;
	background: #fff;
	transition: left .15s;
}
.tc-product-stepper .tc-ps-tax-overrides input:checked + .tc-ps-tax-overrides-track { background: #00868c; }
.tc-product-stepper .tc-ps-tax-overrides input:checked + .tc-ps-tax-overrides-track::after { left: 15px; }
.tc-product-stepper .tc-ps-tax-overrides-label {
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #364152;
}
/* Sections are un-hidden in JS (classList.remove('hidden')); don't force display
   here or it overrides the JS visibility-sync + the Tax Overrides toggle. */
.tc-product-stepper .tc-ps-tax-config [id^="ui-salestax-tpl-"] { margin: 0 !important; }
/* JS visibility-sync hide (mirrors the wizard's hidden_steps per provider/profile).
   Higher specificity + !important so it beats the overrides toggle's inline-flex. */
.tc-product-stepper .tc-ps-tax-config .tc-ps-tax-hidden { display: none !important; }

/* Bumps step reskin. */
.tc-product-stepper .tc-bump {
	display: flex; flex-direction: column; gap: 40px;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
	color: #364152;
}
.tc-product-stepper .tc-bump-section { display: flex; flex-direction: column; gap: 24px; }
.tc-product-stepper .tc-bump-title { margin: 0 !important; font-size: 24px; font-weight: 600; line-height: 32px; color: #364152; }
.tc-product-stepper .tc-bump-empty {
	display: flex; flex-direction: column; gap: 16px; align-items: center;
	width: 100%; padding: 32px; box-sizing: border-box;
	background: #ffffff; border: 1px solid #e8ecef; border-radius: 8px;
	box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
}
/* Non-Pro+: the Pro+ upgrade banner replaces the dead "Add Bump Rule" empty-state. */
.tc-product-stepper .tc-bump-section[data-tcps-rules-locked="1"] .tc-bump-empty-rules { display: none !important; }
/* Reskin the relocated Pro+ upgrade banner (legacy cyan/12px) to the design system. */
.tc-product-stepper #ui-product-settings-multiple-bumps-upgrade-pro-plus {
	background: #fff !important; border: 1px solid #e8ecef !important; border-radius: 8px !important; box-shadow: none !important; padding: 16px 20px !important; margin: 0 !important;
}
.tc-product-stepper #ui-product-settings-multiple-bumps-upgrade-pro-plus .ui-proplus-upgrade-banner { display: flex; align-items: center; gap: 16px; border: 0 !important; border-radius: 0 !important; padding: 0 !important; background: transparent !important; }
.tc-product-stepper #ui-product-settings-multiple-bumps-upgrade-pro-plus .ui-proplus-upgrade-content { display: flex; align-items: center; gap: 16px; flex: 1 1 auto; min-width: 0; }
.tc-product-stepper #ui-product-settings-multiple-bumps-upgrade-pro-plus .ui-proplus-upgrade-logo em {
	font-style: normal; font-weight: 600; font-size: 12px; line-height: 16px; color: #006b70; border: 1px solid #006b70; border-radius: 100px; padding: 2px 10px; display: inline-block; white-space: nowrap;
}
.tc-product-stepper #ui-product-settings-multiple-bumps-upgrade-pro-plus .ui-proplus-upgrade-divider { background: #e8ecef !important; width: 1px !important; align-self: stretch; min-height: 24px; }
.tc-product-stepper #ui-product-settings-multiple-bumps-upgrade-pro-plus .ui-proplus-upgrade-text { display: flex; flex-direction: column; gap: 2px; }
.tc-product-stepper #ui-product-settings-multiple-bumps-upgrade-pro-plus .ui-proplus-upgrade-text h3 { margin: 0 !important; font-weight: 600 !important; font-size: 14px !important; line-height: 20px !important; color: #2a3648 !important; }
.tc-product-stepper #ui-product-settings-multiple-bumps-upgrade-pro-plus .ui-proplus-upgrade-text p { margin: 0 !important; font-weight: 400 !important; font-size: 14px !important; line-height: 20px !important; color: #8493a8 !important; }
.tc-product-stepper #ui-product-settings-multiple-bumps-upgrade-pro-plus .ui-proplus-upgrade-button {
	background: #006b70 !important; border: 0 !important; border-radius: 6px !important; color: #fff !important; font-weight: 500 !important; font-size: 14px !important; line-height: 20px !important; padding: 8px 16px !important; box-shadow: none !important; flex: 0 0 auto; text-transform: none !important;
}
.tc-product-stepper #ui-product-settings-multiple-bumps-upgrade-pro-plus .ui-proplus-upgrade-button:hover { background: #005a5e !important; }
.tc-product-stepper .tc-bump-empty-icon {
	width: 48px; height: 48px; flex-shrink: 0;
	background: url(/static/icons/product-stepper/inbox.svg) no-repeat center;
	background-size: 36px 36px;
}
.tc-product-stepper .tc-bump-empty-heading { margin: 0; font-size: 18px; font-weight: 600; line-height: 28px; color: #364152; text-align: center; }
.tc-product-stepper .tc-bump-empty-desc { margin: 0; font-size: 14px; font-weight: 400; line-height: 20px; color: #8493a8; text-align: center; }
.tc-product-stepper .tc-bump-empty-btn {
	display: inline-flex; align-items: center; gap: 4px;
	padding: 8px; box-sizing: border-box;
	background: #ffffff; border: 1px solid #e8ecef; border-radius: 6px;
	font-size: 14px; font-weight: 500; line-height: 16px; color: #364152; cursor: pointer;
}
.tc-product-stepper .tc-bump-empty-btn:hover { background: #f6f8f9; border-color: #d1d7de; }
.tc-product-stepper .tc-bump-btn-icon {
	width: 16px; height: 16px; flex-shrink: 0;
	background: url(/static/icons/product-stepper/add-dark.svg) no-repeat center;
	background-size: 9.33px 9.33px;
}
.tc-product-stepper .tc-bump-btn-text { padding: 0 4px; }
/* Hide the classic bump chrome the reskin replaces; handlers stay in the DOM. */
.tc-product-stepper[data-step="bumps"] #ui-product-settings-multiple-bumps > .margin-bottom:first-child,
.tc-product-stepper[data-step="bumps"] #ui-bumps-empty,
.tc-product-stepper[data-step="bumps"] #ui-bump-footer-action-add { display: none !important; }

/* Bump editor: relocated inline, reusing .tc-ps-pricing-inline to drain the alertify chrome. */
.tc-product-stepper .tc-bump-editor { width: 100%; }
.tc-product-stepper[data-step="bumps"] #ui-product-settings-tab-settings-options-bump.tc-bump-editing .tc-bump-empty-products { display: none !important; }
.tc-product-stepper .tc-bump-form-add {
	align-self: flex-end;
	display: inline-flex; align-items: center; gap: 8px;
	background: #006b70; border: 1px solid #006b70; color: #ffffff;
	border-radius: 6px; padding: 8px 12px; box-sizing: border-box;
	font-size: 14px; font-weight: 500; line-height: 16px; cursor: pointer; margin-top: 8px;
}
.tc-product-stepper .tc-bump-form-add:hover { background: #00868c; border-color: #00868c; }
.tc-product-stepper .tc-bump-btn-icon-light {
	width: 16px; height: 16px; flex-shrink: 0;
	background: url(/static/icons/product-stepper/add.svg) no-repeat center;
	background-size: 9.33px 9.33px;
}
/* Bump type-card icons reuse the pricing card chrome. */
.tc-product-stepper .tc-ps-pricecard-icon.tc-bump-icon-new {
	background-image: url(/static/icons/product-stepper/credit-card.svg);
	background-repeat: no-repeat; background-position: center; background-size: 24px 24px;
}
.tc-product-stepper .tc-ps-pricecard-icon.tc-bump-icon-existing {
	background-image: url(/static/icons/product-stepper/window-tabs.svg);
	background-repeat: no-repeat; background-position: center; background-size: 24px 24px;
}
/* Bump chrome (banner + type cards) sits above the editor. */
.tc-product-stepper .tc-bump-chrome { display: flex; flex-direction: column; gap: 24px; }

/* Populated bump list: classic items → cards. */
.tc-product-stepper[data-step="bumps"] #ui-bump-list { display: flex; flex-direction: column; gap: 16px; margin: 0 !important; }
.tc-product-stepper[data-step="bumps"] #ui-bump-list .ui-bump-list-item {
	display: flex; align-items: center; gap: 16px; margin: 0 !important;
	padding: 20px 16px; background: #ffffff; border: 1px solid #d1d7de; border-radius: 8px;
	box-shadow: none; list-style: none;
}
.tc-product-stepper[data-step="bumps"] #ui-bump-list .tc-bump-item-icon {
	width: 48px; height: 48px; flex-shrink: 0; border-radius: 999px;
	/* Classic JS inlines the bump's product image (squashed to 24px) — force the reskin type icon. */
	background: #f6f8f9 url(/static/icons/product-stepper/credit-card.svg) no-repeat center !important;
	background-size: 24px 24px !important;
}
.tc-product-stepper[data-step="bumps"] #ui-bump-list .tc-bump-item-main { flex: 1 1 auto; min-width: 0; }
.tc-product-stepper[data-step="bumps"] #ui-bump-list .tc-bump-item-main [data-field="title"] { margin: 0 !important; padding: 0 !important; border: 0 !important; font-size: 14px; font-weight: 500; line-height: 20px; color: #2a3648; }
.tc-product-stepper[data-step="bumps"] #ui-bump-list .tc-bump-item-price { margin: 2px 0 0; font-size: 14px; line-height: 20px; color: #8493a8; }
.tc-product-stepper[data-step="bumps"] #ui-bump-list .generic-list-actions { display: flex; align-items: center; gap: 8px; margin: 0; }
.tc-product-stepper[data-step="bumps"] #ui-bump-list .ui-bump-list-action-edit,
.tc-product-stepper[data-step="bumps"] #ui-bump-list .ui-bump-list-action-delete {
	width: 32px; height: 32px; padding: 0 !important; border: 0 !important; background-color: transparent !important;
	border-radius: 6px; font-size: 0; color: transparent; cursor: pointer; box-shadow: none !important;
}
.tc-product-stepper[data-step="bumps"] #ui-bump-list .ui-bump-list-action-edit { background-image: url(/static/icons/product-stepper/edit.svg); background-repeat: no-repeat; background-position: center; background-size: 12px 12px; }
.tc-product-stepper[data-step="bumps"] #ui-bump-list .ui-bump-list-action-delete { background-image: url(/static/icons/product-stepper/trash.svg); background-repeat: no-repeat; background-position: center; background-size: 9.333px 12px; }
.tc-product-stepper[data-step="bumps"] #ui-bump-list .ui-bump-list-action-edit:hover,
.tc-product-stepper[data-step="bumps"] #ui-bump-list .ui-bump-list-action-delete:hover { background-color: #f6f8f9 !important; }
.tc-product-stepper .tc-bump-add-another {
	align-self: flex-end; display: inline-flex; align-items: center; gap: 4px;
	padding: 8px; box-sizing: border-box; margin-top: 0;
	background: #ffffff; border: 1px solid #e8ecef; border-radius: 6px;
	font-size: 14px; font-weight: 500; line-height: 16px; color: #364152; cursor: pointer;
}
.tc-product-stepper .tc-bump-add-another:hover { background: #f6f8f9; border-color: #d1d7de; }
/* The product "Add Another Bump" sits at the section's left edge (the rule variant keeps its own alignment). */
.tc-product-stepper .tc-bump-add-another:not(.tc-bump-add-another-rule) { align-self: flex-start; }
/* At the bump limit the classic add is disabled; grey the reskin button to match (the click surfaces the upgrade hint). */
.tc-product-stepper .tc-bump-add-another.tc-bump-add-another-disabled { opacity: 0.55; }
.tc-product-stepper .tc-bump-add-another.tc-bump-add-another-disabled:hover { background: #ffffff; border-color: #e8ecef; }

/* Bump editor blue info banner. */
.tc-product-stepper .tc-bump-editor .customization-callout {
	display: flex !important; gap: 8px; align-items: flex-start;
	padding: 16px !important; border-radius: 8px !important; margin: 8px 0 0 !important;
	background: #bee3f8 !important; border: 0 !important;
}
.tc-product-stepper .tc-bump-editor .customization-callout::before {
	content: ''; flex-shrink: 0; width: 20px; height: 20px;
	background: url(/static/icons/product-stepper/banner-info.svg) no-repeat center; background-size: 20px 20px;
}
.tc-product-stepper .tc-bump-editor .customization-callout p,
.tc-product-stepper .tc-bump-editor .customization-callout b { margin: 0 !important; font-size: 14px !important; line-height: 20px !important; color: #364152 !important; font-weight: 400 !important; }

/* Show/Hide for returning customer → toggle switches. */
.tc-product-stepper .tc-bump-editor .checkbox.check-success:is(:has([data-field$="for_returning_customers"]), .tc-bump-toggle-row) { position: relative; margin: 0 0 12px !important; }
.tc-product-stepper .tc-bump-editor .checkbox.check-success:is(:has([data-field$="for_returning_customers"]), .tc-bump-toggle-row) input[type="checkbox"] {
	position: absolute !important; opacity: 0 !important; width: 32px; height: 20px; margin: 0; top: 2px; left: 0; cursor: pointer; z-index: 1;
}
.tc-product-stepper .tc-bump-editor .checkbox.check-success:is(:has([data-field$="for_returning_customers"]), .tc-bump-toggle-row) label {
	display: inline-flex !important; align-items: center; gap: 8px; padding: 0 !important; margin: 0 !important; cursor: pointer; font-size: 14px; color: #364152; position: relative;
}
.tc-product-stepper .tc-bump-editor .checkbox.check-success:is(:has([data-field$="for_returning_customers"]), .tc-bump-toggle-row) label::before {
	content: '' !important; position: static !important; flex-shrink: 0; width: 32px !important; height: 20px !important; border-radius: 100px !important; background: #d1d7de !important; border: 0 !important; transition: background .15s; margin: 0 !important;
}
.tc-product-stepper .tc-bump-editor .checkbox.check-success:is(:has([data-field$="for_returning_customers"]), .tc-bump-toggle-row) label::after {
	content: '' !important; position: absolute !important; left: 3px !important; top: 50% !important; transform: translateY(-50%) !important; width: 14px !important; height: 14px !important; border-radius: 50% !important; background: #fff !important; transition: left .15s; box-shadow: none !important; border: 0 !important; margin: 0 !important;
}
.tc-product-stepper .tc-bump-editor .checkbox.check-success:is(:has([data-field$="for_returning_customers"]), .tc-bump-toggle-row) input:checked + label::before { background: #00868c !important; }
.tc-product-stepper .tc-bump-editor .checkbox.check-success:is(:has([data-field$="for_returning_customers"]), .tc-bump-toggle-row) input:checked + label::after { left: 15px !important; }
/* Payment Type: inline Digital/Physical dropdown (drives the type modal). */
.tc-product-stepper .tc-bump-type-select {
	width: 100% !important; box-sizing: border-box; cursor: pointer;
	background: #ffffff url('/static/icons/product-stepper/expand-more.svg') no-repeat right 12px center / 8px 4.94px !important;
	border: 1px solid #d1d7de !important; border-radius: 8px !important;
	padding: 8px 36px 8px 12px !important; min-height: 38px;
	font-size: 14px !important; line-height: 20px !important; color: #364152 !important;
	-webkit-appearance: none; -moz-appearance: none; appearance: none;
}
/* Add Existing Bump: inline single-select panel. */
.tc-product-stepper .tc-bump-existing { margin-top: 16px; }
.tc-product-stepper .tc-bump-existing-label { display: block; font-size: 14px; font-weight: 500; line-height: 20px; color: #2b384a; margin-bottom: 4px; }
.tc-product-stepper .tc-bump-existing .tc-bump-banner { margin-top: 16px; }
/* Bump Rules editor (relocated inline): When/is/then label + dropdown rows. */
.tc-product-stepper .tc-bump-rules-editor .ui-bump-visibility-rule-form { display: flex; flex-direction: column; gap: 12px; }
.tc-product-stepper .tc-bump-rules-editor .ui-bump-visibility-rule-selector-wrap { display: flex; align-items: center; gap: 16px; }
.tc-product-stepper .tc-bump-rules-editor .ui-bump-visibility-rule-selector-label { flex: 0 0 39px; font-size: 14px; font-weight: 500; line-height: 20px; color: #2b384a; text-align: right; }
.tc-product-stepper .tc-bump-rules-editor .ui-bump-visibility-rule-selector { flex: 1 1 auto; min-width: 0; }
.tc-product-stepper .tc-bump-rules-editor .ui-bump-visibility-rule-selector select {
	width: 100% !important; box-sizing: border-box; cursor: pointer;
	background: #ffffff url('/static/icons/product-stepper/expand-more.svg') no-repeat right 12px center / 8px 4.94px !important;
	border: 1px solid #d1d7de !important; border-radius: 8px !important;
	padding: 8px 36px 8px 12px !important; min-height: 38px;
	font-size: 14px !important; line-height: 20px !important; color: #364152 !important;
	-webkit-appearance: none; -moz-appearance: none; appearance: none;
}
.tc-product-stepper .tc-bump-rules-actions { display: flex; justify-content: flex-end; align-items: center; gap: 8px; margin-top: 24px; }
.tc-product-stepper .tc-bump-rules-actions .tc-bump-form-add { margin-top: 0; align-self: auto; }
.tc-product-stepper .tc-bump-rules-cancel {
	background: #ffffff; border: 1px solid #d1d7de; border-radius: 6px;
	padding: 8px 16px; font-size: 14px; font-weight: 500; line-height: 16px; color: #364152; cursor: pointer;
}
.tc-product-stepper .tc-bump-rules-cancel:hover { background: #f6f8f9; }
/* No bump is eligible as a show/hide target — Create is disabled, hint explains why. */
.tc-product-stepper .tc-bump-rules-form-add.tc-bump-rules-form-add-disabled { opacity: 0.55; cursor: not-allowed; }
/* While editing a rule the reskin form (in the alertify dialog) is the whole UI — hide the redundant classic Show/Hide Rules box that sits behind it in the section. */
.tc-product-stepper .tc-bump-rules-editing #ui-product-settings-multiple-bumps-visibility-rules { display: none !important; }
/* Suppress the bump/rules modal flash before the reskin relocates it inline
   (the wrapper gains .tc-ps-pricing-inline on relocation). */
body:has(.tc-product-stepper[data-step="bumps"]) .alertify:not(.tc-ps-pricing-inline):has(.tc-modal-create-or-edit-bump),
body:has(.tc-product-stepper[data-step="bumps"]) .alertify:not(.tc-ps-pricing-inline):has(.tc-modal-edit-bump-visibility),
body:has(.tc-product-stepper[data-step="bumps"]) .alertify:not(.tc-ps-pricing-inline):has(.ui-bump-visibility-rule-form) {
	opacity: 0 !important; pointer-events: none !important;
}
/* Populated bump rules list: rule rows rendered as cards. */
.tc-product-stepper[data-step="bumps"] .tc-bump-rules-banner { margin-bottom: 16px; }
.tc-product-stepper[data-step="bumps"] .tc-bump-rules-list { margin: 0 !important; padding: 0 !important; }
.tc-product-stepper[data-step="bumps"] .tc-bump-rules-list #ui-bump-list-visibility-rules { display: flex; flex-direction: column; gap: 8px; margin: 0 !important; }
.tc-product-stepper[data-step="bumps"] .tc-bump-rules-list .ui-bump-list-item {
	display: flex !important; align-items: center; gap: 16px; margin: 0 !important;
	padding: 20px 16px !important; background: #ffffff !important; border: 1px solid #d1d7de !important; border-radius: 8px !important; box-shadow: none !important; list-style: none;
}
.tc-product-stepper[data-step="bumps"] .tc-bump-rules-list .tc-bump-rule-icon {
	width: 48px; height: 48px; flex-shrink: 0; border-radius: 999px;
	background: #f6f8f9 url(/static/icons/product-stepper/rule.svg) no-repeat center; background-size: 24px 24px;
}
.tc-product-stepper[data-step="bumps"] .tc-bump-rules-list .tc-bump-item-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.tc-product-stepper[data-step="bumps"] .tc-bump-rules-list [data-field="title"] { margin: 0 !important; padding: 0 !important; border: 0 !important; font-size: 14px !important; font-weight: 500 !important; line-height: 20px !important; color: #2a3648 !important; }
.tc-product-stepper[data-step="bumps"] .tc-bump-rules-list [data-field="description"] { margin: 0 !important; font-size: 14px !important; line-height: 20px !important; color: #8493a8 !important; }
.tc-product-stepper[data-step="bumps"] .tc-bump-rules-list .generic-list-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
.tc-product-stepper[data-step="bumps"] .tc-bump-rules-list .ui-bump-visibility-list-action-edit,
.tc-product-stepper[data-step="bumps"] .tc-bump-rules-list .ui-bump-visibility-list-action-delete {
	width: 32px !important; height: 32px !important; padding: 0 !important; border: 0 !important; border-radius: 8px !important;
	background-color: transparent !important; color: transparent !important; font-size: 0 !important;
	display: inline-flex !important; align-items: center; justify-content: center; cursor: pointer;
	background-repeat: no-repeat !important; background-position: center !important; box-shadow: none !important;
}
.tc-product-stepper[data-step="bumps"] .tc-bump-rules-list .ui-bump-visibility-list-action-edit { background-image: url(/static/icons/product-stepper/edit.svg) !important; background-size: 12px 12px !important; }
.tc-product-stepper[data-step="bumps"] .tc-bump-rules-list .ui-bump-visibility-list-action-delete { background-image: url(/static/icons/product-stepper/trash.svg) !important; background-size: 9.33px 12px !important; }
.tc-product-stepper[data-step="bumps"] .tc-bump-rules-list .ui-bump-visibility-list-action-edit:hover,
.tc-product-stepper[data-step="bumps"] .tc-bump-rules-list .ui-bump-visibility-list-action-delete:hover { background-color: #f6f8f9 !important; }
/* Hide the classic import modal while the inline select drives it invisibly. */
body.tc-bump-importing .alertify:has(.tc-modal-import-bump) { opacity: 0 !important; pointer-events: none !important; }

/* Checkout step: two-card landing replaces the classic preview box. */
.tc-product-stepper[data-step="checkout"] .tc-checkout { display: flex; flex-direction: column; gap: 24px; }
.tc-product-stepper .tc-checkout-title { margin: 0; font-size: 24px; line-height: 32px; font-weight: 600; color: #364152; }
.tc-product-stepper .tc-checkout-cards { display: flex; gap: 24px; align-items: stretch; }
.tc-product-stepper .tc-checkout-card {
	flex: 1 1 0; display: flex; flex-direction: column; gap: 16px; align-items: flex-start;
	background: #ffffff; border: 1px solid #d1d7de; border-radius: 8px; padding: 20px 16px;
}
/* Pin the CTA to the card bottom so both cards' buttons share a baseline whatever the copy length. */
.tc-product-stepper .tc-checkout-card .tc-checkout-card-btn { margin-top: auto; }
.tc-product-stepper .tc-checkout-card-icon {
	width: 48px; height: 48px; flex-shrink: 0; border-radius: 24px;
	background-color: #f6f8f9; background-repeat: no-repeat; background-position: center; background-size: 24px 24px;
}
.tc-product-stepper .tc-checkout-icon-gallery { background-image: url(/static/icons/product-stepper/window-tabs-card.svg); }
.tc-product-stepper .tc-checkout-icon-editor { background-image: url(/static/icons/product-stepper/design-mug.svg); }
.tc-product-stepper .tc-checkout-card-content { display: flex; flex-direction: column; gap: 4px; align-items: flex-start; padding-right: 20px; }
.tc-product-stepper .tc-checkout-card-title { margin: 0; font-size: 16px; line-height: 24px; font-weight: 600; color: #2a3648; }
.tc-product-stepper .tc-checkout-card-desc { margin: 0; font-size: 14px; line-height: 20px; color: #8493a8; }
.tc-product-stepper .tc-checkout-card-btn {
	display: inline-flex; align-items: center; gap: 4px; padding: 8px 12px; border: 0; border-radius: 6px;
	background: #006b70; color: #ffffff; font-size: 14px; line-height: 16px; font-weight: 500; cursor: pointer;
}
.tc-product-stepper .tc-checkout-card-btn:hover { background: #005a5e; }
/* Collapse the classic template chrome but keep it in the DOM — cards drive its buttons. */
#ui-product-settings-tab-customize-options-template.tc-checkout-reskin > *:not(.tc-checkout):not(.tc-gallery-page) {
	height: 0 !important; margin: 0 !important; padding: 0 !important; overflow: hidden !important;
	opacity: 0 !important; pointer-events: none !important;
}
/* Gallery-as-page: hide the two checkout cards while the gallery is shown. */
#ui-product-settings-tab-customize-options-template.tc-gallery-open .tc-checkout { display: none !important; }

/* Hide the gallery modal until enhanceGallery relocates it inline. Scoped to the
   gallery-opening flag (set on the Open Gallery click) so it blanks ONLY the gallery
   loader — not the "missing steps" genericWindow that Launch Editor opens on the same step. */
body.tc-ps-gallery-opening:has(.tc-product-stepper[data-step="checkout"]) .alertify:has(.genericWindow-dialog):not(.tc-ps-pricing-inline) {
	opacity: 0 !important; pointer-events: none !important;
}
/* Template gallery modal — reskinned only when opened from the stepper flow. */
body:has(.tc-product-stepper) .ui-content:has(.ui-designer-remote_gallery-template_v) {
	display: grid !important; grid-template-columns: 190px minmax(0, 1fr);
	column-gap: 32px; row-gap: 16px; align-content: start;
}
body:has(.tc-product-stepper) .tc-gallery-title {
	grid-column: 1 / -1; margin: 0; font-family: 'Inter', sans-serif;
	font-weight: 600; font-size: 24px; line-height: 32px; letter-spacing: normal; color: #364152;
}
/* New / Legacy tabs */
body:has(.tc-product-stepper) .ui-designer-remote_gallery-template_v {
	grid-column: 1 / -1; display: flex; gap: 32px; align-items: center;
	border-bottom: 1px solid #e8ecef; padding: 0; margin: 0;
}
body:has(.tc-product-stepper) .ui-designer-remote_gallery-template_v > span {
	padding: 8px 8px 10px; font-family: 'Inter', sans-serif; font-weight: 500;
	font-size: 14px; line-height: 20px; color: #8493a8; cursor: pointer;
	border: 0; border-bottom: 2px solid transparent; margin-bottom: -1px;
	background: transparent; border-radius: 0; box-shadow: none;
}
body:has(.tc-product-stepper) .ui-designer-remote_gallery-template_v > span.active {
	color: #2a3648; border-bottom-color: #006b70;
}
/* Mobile-only category select proxy (see products-stepper.js); specificity beats the legacy .pure-form-stacked select rule. */
.tc-product-stepper .tc-gallery-page .tc-gallery-filter-select { display: none; }
/* Category sidebar */
body:has(.tc-product-stepper) .ui-designer-remote_gallery-filters {
	grid-column: 1; display: flex !important; flex-direction: column; gap: 8px;
	align-items: stretch; width: auto; margin: 0; padding: 0;
}
body:has(.tc-product-stepper) .ui-designer-remote_gallery-filters::before {
	content: "Category"; font-family: 'Inter', sans-serif; font-weight: 600;
	font-size: 14px; line-height: 20px; letter-spacing: 0.56px;
	text-transform: uppercase; color: #8493a8; padding: 4px 0;
}
body:has(.tc-product-stepper) .ui-designer-remote_gallery-filters > span {
	padding: 8px; border-radius: 4px; font-family: 'Inter', sans-serif;
	font-weight: 500; font-size: 16px; line-height: 24px; color: #8493a8;
	cursor: pointer; white-space: nowrap;
}
body:has(.tc-product-stepper) .ui-designer-remote_gallery-filters > span.active {
	background: #e8ecef; color: #2a3648;
}
/* Grid + template cards */
body:has(.tc-product-stepper) .ui-designer-remote_import-step { grid-column: 2; min-width: 0; }
body:has(.tc-product-stepper) .ui-designer-remote_import-step .minitabs,
body:has(.tc-product-stepper) .ui-designer-remote_import-step .minitabs-panes,
body:has(.tc-product-stepper) .ui-designer-remote_import-step .minitabs-pane {
	min-width: 0 !important; width: 100% !important; max-width: 100% !important;
}
body:has(.tc-product-stepper) .ui-designer-remote_gallery-grid {
	grid-template-columns: repeat(3, minmax(0, 1fr)) !important; gap: 24px !important;
	width: 100% !important; max-width: 100% !important; margin: 0 !important;
}
/* Flow the two legacy grids (types + saved templates) as ONE continuous 3-col grid. */
body:has(.tc-product-stepper) .tc-gallery-page .minitabs-pane:has(.templates-legacy) {
	display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; align-content: start;
}
body:has(.tc-product-stepper) .tc-gallery-page .minitabs-pane:has(.templates-legacy) > .ui-designer-remote_gallery-legacy_callout { grid-column: 1 / -1; }
body:has(.tc-product-stepper) .tc-gallery-page .minitabs-pane:has(.templates-legacy) > .ui-designer-remote_gallery-grid { display: contents; }
/* Zero the classic pane margin (its -7.2px left pulled the sidebar↔grid gap to 25px vs Figma's 32px). */
body:has(.tc-product-stepper) .tc-gallery-page .minitabs-pane { margin: 0 !important; }
body:has(.tc-product-stepper) .ui-designer-remote_gallery-item {
	background: #ffffff; border: 1px solid #e8ecef; border-radius: 8px;
	box-shadow: 0 1px 2px rgba(0, 0, 0, .05); overflow: hidden;
	width: auto !important; min-width: 0 !important; max-width: 100% !important;
}
body:has(.tc-product-stepper) .ui-designer-remote_gallery-item-inner { display: flex; flex-direction: column; height: auto; box-shadow: none !important; }
/* Currently-applied template: a soft "Current" corner badge, not the classic glow. */
body:has(.tc-product-stepper) .ui-designer-remote_gallery-item-active { position: relative; }
body:has(.tc-product-stepper) .ui-designer-remote_gallery-item-active::before {
	content: "Current"; position: absolute; top: 8px; left: 8px; z-index: 2;
	background: #c0edea; color: #006b70; font-family: 'Inter', sans-serif;
	font-weight: 500; font-size: 12px; line-height: 16px; padding: 2px 8px; border-radius: 4px;
}
body:has(.tc-product-stepper) .tc-gallery-page .ui-designer-remote_gallery-item.ui-designer-remote_gallery-item-active .ui-designer-remote_gallery-item-inner { box-shadow: none !important; outline: none !important; }
body:has(.tc-product-stepper) .ui-designer-remote_gallery-item-labels { order: 0; }
body:has(.tc-product-stepper) .ui-designer-remote_gallery-item-screenshot-wrap {
	order: 1; height: 160px !important; min-height: 0 !important; overflow: hidden; position: relative;
}
body:has(.tc-product-stepper) .ui-designer-remote_gallery-item-screenshot {
	width: 100% !important; height: auto !important; display: block; object-fit: cover; object-position: top;
}
body:has(.tc-product-stepper) .ui-designer-remote_gallery-item-label {
	order: 2; display: block; padding: 16px 16px 0; font-family: 'Inter', sans-serif;
	font-weight: 500; font-size: 16px; line-height: 24px; color: #364152; text-align: left;
}
/* Legacy cards center their content by default — keep everything left, buttons too. */
body:has(.tc-product-stepper) .ui-designer-remote_gallery-item-inner { text-align: left; }
body:has(.tc-product-stepper) .ui-designer-remote_gallery-item-controls { justify-content: flex-start; }
body:has(.tc-product-stepper) .ui-designer-remote_gallery-item-label:empty { display: none; }
body:has(.tc-product-stepper) .ui-designer-remote_gallery-item-controls {
	order: 3; position: static !important; display: flex; gap: 8px; padding: 8px 16px 12px;
	opacity: 1 !important; background: none !important; transform: none !important; inset: auto !important;
}
body:has(.tc-product-stepper) .ui-designer-remote_gallery-item-control {
	display: inline-flex; align-items: center; justify-content: center;
	padding: 8px 12px !important; min-width: 0 !important; width: auto !important;
	flex: 0 0 auto !important; white-space: nowrap; margin: 0 !important; height: auto !important;
	box-sizing: border-box; border-radius: 6px; font-family: 'Inter', sans-serif;
	font-weight: 500; font-size: 14px; line-height: 16px; cursor: pointer;
}
body:has(.tc-product-stepper) .ui-designer-remote_gallery-item-control-view {
	background: #ffffff; border: 1px solid #e8ecef; color: #364152;
}
body:has(.tc-product-stepper) .ui-designer-remote_gallery-item-control:not(.ui-designer-remote_gallery-item-control-view) {
	background: #006b70; color: #ffffff;
}
/* Override the classic dark rgba(0,0,0,.8) hover with subtle, on-brand hovers. */
body:has(.tc-product-stepper) .ui-designer-remote_gallery-item-controls .ui-designer-remote_gallery-item-control-view:hover {
	background: #f6f8f9 !important; color: #364152 !important; border-color: #d1d7de !important;
}
body:has(.tc-product-stepper) .ui-designer-remote_gallery-item-controls .ui-designer-remote_gallery-item-control:not(.ui-designer-remote_gallery-item-control-view):hover {
	background: #005a5e !important; color: #ffffff !important;
}
/* Legacy upgrade callout → the Figma blue info banner (icon + text + teal link). */
body:has(.tc-product-stepper) .tc-gallery-page .ui-designer-remote_gallery-legacy_callout {
	display: flex !important; gap: 8px; align-items: flex-start;
	background: #bee3f8 !important; border: 0 !important; box-shadow: none !important;
	border-radius: 8px !important; padding: 16px !important; margin: 0 0 8px !important;
	color: #364152 !important; font-family: 'Inter', sans-serif !important;
	font-size: 14px !important; line-height: 20px !important;
}
body:has(.tc-product-stepper) .tc-gallery-page .ui-designer-remote_gallery-legacy_callout::before {
	content: ''; flex: 0 0 24px; width: 24px; height: 24px;
	background-color: #364152;
	-webkit-mask: url(/static/icons/product-stepper/banner-info.svg) center no-repeat; -webkit-mask-size: 20px 20px;
	mask: url(/static/icons/product-stepper/banner-info.svg) center no-repeat; mask-size: 20px 20px;
}
body:has(.tc-product-stepper) .tc-gallery-page .ui-designer-remote_gallery-legacy_callout p { margin: 0; }
body:has(.tc-product-stepper) .tc-gallery-page .ui-designer-remote_gallery-legacy_callout a { color: #006b70 !important; text-decoration: underline !important; }
/* Legacy Preview: self-contained in-place white overlay over the grid column (like New). */
.tc-gallery-page .tc-legacy-preview-panel { display: none; position: absolute; inset: 0; z-index: 50; background: #ffffff; border-radius: 8px; }
.tc-gallery-page .tc-legacy-preview-panel.is-open { display: block; }
.tc-gallery-page .tc-legacy-preview-body { max-height: 100%; overflow: auto; }
.tc-gallery-page .tc-legacy-preview-body img { display: block; width: 100%; }
.tc-gallery-page .tc-legacy-preview-close {
	position: absolute; top: 12px; right: 12px; z-index: 2; width: 32px; height: 32px; border: 1px solid #d1d7de; border-radius: 8px;
	background: #ffffff url(/static/icons/product-stepper/modal-close.svg) center no-repeat; background-size: 12px 12px; cursor: pointer;
}
.tc-gallery-page .tc-legacy-preview-close:hover { background-color: #f6f8f9; }
/* Relocated legacy callout spans the full width below the tabs (classic caps it at 798px). */
body:has(.tc-product-stepper) .tc-gallery-page .ui-content > .ui-designer-remote_gallery-legacy_callout { grid-column: 1 / -1; max-width: none !important; width: auto !important; }

/* Fulfilment step: title + stacked reskinned fields; strip the classic box + section title. */
.tc-product-stepper .tc-fulfil-title { margin: 0 0 24px; font-family: 'Inter', sans-serif; font-weight: 600; font-size: 24px; line-height: 32px; letter-spacing: normal; color: #364152; }
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin .box { background: transparent !important; border: 0 !important; box-shadow: none !important; padding: 0 !important; }
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin .ui-title { display: none !important; }
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin .row.ui-input-group.display-flex { display: flex !important; flex-direction: column !important; gap: 24px !important; }
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin .row.ui-input-group.display-flex > div { width: 100% !important; }
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin label {
	font-family: 'Inter', sans-serif !important; font-weight: 500 !important; font-size: 14px !important;
	line-height: 20px !important; color: #2b384a !important; margin-bottom: 4px !important;
}
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin input[type="text"],
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin input[type="email"],
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin input[type="url"],
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin select {
	height: 38px !important; padding: 8px !important; border: 1px solid #d1d7de !important; border-radius: 8px !important;
	background-color: #ffffff !important; font-size: 14px !important; line-height: 20px !important; color: #364152 !important;
	box-shadow: none !important; width: 100% !important; box-sizing: border-box;
}
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin input::placeholder { color: #afbbc9 !important; }
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin select {
	appearance: none; -webkit-appearance: none; padding-right: 32px !important;
	background-image: url(/static/icons/product-stepper/expand-more.svg); background-repeat: no-repeat;
	background-position: right 12px center; background-size: 8px 4.94px;
}
/* Conditional URL fields render in pure-grid columns; Figma stacks them full-width. */
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin .pure-g.ui-input-group { display: flex !important; flex-direction: column !important; gap: 24px !important; margin: 0 !important; width: 100% !important; }
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin .pure-g.ui-input-group > [class*="pure-u-"] { width: 100% !important; padding: 0 !important; }
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin .pure-g.ui-input-group .row { margin: 0 !important; }
/* Keep a consistent 24px gap between the resolution field and the revealed block. */
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin #ui-product-config-itemised-opts.margin-top,
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin #ui-product-config-membership-opts.margin-top { margin-top: 24px !important; }
/* Membership Tagify fields (Tags / custom-field mapping, any platform) — match the reskinned inputs + Figma chips. */
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin .tagify {
	border: 1px solid #d1d7de !important; border-radius: 8px !important; min-height: 38px !important;
	padding: 2px 6px !important; background: #ffffff !important;
	--tag-bg: #e8ecef; --tag-text-color: #364152; --tag-remove-btn-color: #8493a8; --placeholder-color: #afbbc9; --tagify-dd-color-primary: #006b70;
}
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin .tagify__tag { margin: 3px 4px 3px 0 !important; }
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin .tagify__tag > div { border-radius: 8px !important; padding: 4px 8px !important; background: #e8ecef !important; }
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin .tagify__tag-text { font-size: 12px !important; line-height: 16px !important; font-weight: 500 !important; color: #364152 !important; }

/* Shipping options list (physical products). No Figma frame covers this surface, so it
   mirrors the pricing-options / automation-rule cards already used in this wizard. */
.tc-product-stepper[data-step="fulfilment"] #ui-shipping_rates-list {
	list-style: none; margin: 0 0 16px !important; padding: 0 !important;
	display: flex; flex-direction: column; gap: 12px;
}
.tc-product-stepper[data-step="fulfilment"] #ui-shipping_rates-list li.generic-list-row {
	display: flex !important;
	align-items: center !important;
	gap: 16px !important;
	background: #ffffff !important;
	border: 1px solid #d1d7de !important;
	border-radius: 8px !important;
	padding: 20px 16px !important;
	margin: 0 !important;
	box-shadow: none !important;
}
.tc-product-stepper[data-step="fulfilment"] #ui-shipping_rates-list .generic-list-drag {
	order: -1; color: #afbbc9 !important; cursor: grab; margin: 0 !important; flex-shrink: 0;
}
.tc-product-stepper[data-step="fulfilment"] #ui-shipping_rates-list .generic-list-name {
	flex: 1 1 auto !important; min-width: 0; display: flex; flex-direction: column; gap: 2px; padding-right: 20px;
}
.tc-product-stepper[data-step="fulfilment"] #ui-shipping_rates-list .generic-list-name > span {
	font-size: 14px !important; font-weight: 500 !important; line-height: 20px !important; color: #2a3648 !important;
}
.tc-product-stepper[data-step="fulfilment"] #ui-shipping_rates-list .generic-list-name > span i {
	font-style: normal !important; color: #8493a8 !important;
}
.tc-product-stepper[data-step="fulfilment"] #ui-shipping_rates-list .generic-list-aside {
	font-size: 14px !important; font-weight: 400 !important; line-height: 20px !important;
	color: #8493a8 !important; font-style: normal !important; margin-top: 0 !important;
}
/* Legacy pins this to the bottom of the row (align-self:flex-end), same trap as the pricing-list actions. */
.tc-product-stepper[data-step="fulfilment"] #ui-shipping_rates-list .generic-list-i { flex-shrink: 0; display: flex; align-items: center; align-self: center !important; }
.tc-product-stepper[data-step="fulfilment"] #ui-shipping_rates-list .generic-list-actions {
	display: flex !important; align-items: center; gap: 8px; flex-shrink: 0; align-self: center !important;
}
.tc-product-stepper[data-step="fulfilment"] #ui-shipping_rates-list .generic-list-actions .pure-button {
	font-size: 0 !important; width: 32px; height: 32px; padding: 8px !important; border: 0 !important;
	border-radius: 8px !important; background-color: transparent !important; background-repeat: no-repeat !important;
	background-position: center !important; box-shadow: none !important; color: transparent !important;
}
.tc-product-stepper[data-step="fulfilment"] #ui-shipping_rates-list .generic-list-actions .button-primary {
	background-image: url('/static/icons/product-stepper/adv-auto-edit.svg') !important; background-size: 12px 12px !important;
}
.tc-product-stepper[data-step="fulfilment"] #ui-shipping_rates-list .generic-list-actions .button-error {
	background-image: url('/static/icons/product-stepper/adv-auto-delete.svg') !important; background-size: 9.333px 12px !important;
}
.tc-product-stepper[data-step="fulfilment"] #ui-shipping_rates-list .generic-list-actions .pure-button:hover { background-color: #f6f8f9 !important; }
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin .tagify__input { font-size: 14px !important; color: #364152 !important; }
/* Membership course+tags render as a 2-column autolayout row; Figma stacks them full-width. */
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin #ui-product-config-membership-opts .autolayout.autolayout-multiline { flex-direction: column !important; gap: 24px !important; align-items: stretch !important; }
.tc-product-stepper[data-step="fulfilment"] .tc-fulfil-reskin #ui-product-config-membership-opts .autolayout.autolayout-multiline > .autolayout-column { width: 100% !important; max-width: none !important; flex: 1 1 auto !important; }
/* Gallery-as-page: full-width mount inside the step; drop the modal footer for a Back action. */
.tc-product-stepper .tc-gallery-page { width: 100%; }
.tc-product-stepper .tc-gallery-page .ajs-footer,
.tc-product-stepper .tc-gallery-page .ajs-handle { display: none !important; }
/* The gallery is a modal in the classic UI; as a page it must flow, not scroll inside a box. */
.tc-product-stepper .tc-gallery-page .ajs-body,
.tc-product-stepper .tc-gallery-page .ajs-content,
.tc-product-stepper .tc-gallery-page .ui-content,
.tc-product-stepper .tc-gallery-page .ui-designer-remote_import-step,
.tc-product-stepper .tc-gallery-page .minitabs,
.tc-product-stepper .tc-gallery-page .minitabs-panes,
.tc-product-stepper .tc-gallery-page .minitabs-pane {
	max-height: none !important; height: auto !important; overflow: visible !important;
}
.tc-product-stepper .tc-gallery-page .ajs-modal {
	position: static !important; width: 100% !important; max-width: none !important; height: auto !important;
}
/* Hide the inactive preview overlay so it doesn't reserve space to the right. */
.tc-product-stepper .tc-gallery-page .ui-designer-remote_gallery-preview:not(.active) { display: none !important; }
/* Gallery page footer: only "Back" (which returns to the checkout cards). */
#ui-product-settings-tab-customize:has(.tc-gallery-open) > .pure-controls { display: none !important; }
.tc-product-stepper[data-step="checkout"]:has(.tc-gallery-open) .tc-ps-footer .tc-ps-nav-next { display: none !important; }
.tc-product-stepper .tc-ps-tax-config .row { margin-bottom: 12px !important; }
.tc-product-stepper .tc-ps-tax-box label {
	font-size: 14px !important; font-weight: 500 !important; line-height: 20px !important;
	color: #2b384a !important; margin-bottom: 4px !important;
}
.tc-product-stepper .tc-ps-tax-box input[type="text"],
.tc-product-stepper .tc-ps-tax-box input[type="number"],
.tc-product-stepper .tc-ps-tax-box select {
	height: 38px !important; padding: 8px 12px !important;
	border: 1px solid #d1d7de !important; border-radius: 8px !important;
	background-color: #ffffff !important; font-size: 14px !important; color: #364152 !important;
	box-shadow: none !important; width: 100% !important;
}
.tc-product-stepper .tc-ps-tax-box select {
	-webkit-appearance: none; -moz-appearance: none; appearance: none; padding-right: 36px !important;
	/* Figma expand_more chevron (native 8×4.94), not a triangle. */
	background-image: url('/static/icons/product-stepper/expand-more.svg') !important;
	background-position: right 16px center !important;
	background-size: 8px 4.94px !important; background-repeat: no-repeat !important;
}
/* Tax-override checkboxes → reskin square teal-when-checked (keep as checkboxes, not switches) */
.tc-product-stepper .tc-ps-tax-config [id="ui-salestax-tpl-opts"] .checkbox label { font-weight: 400 !important; color: #364152 !important; padding-left: 28px !important; }
.tc-product-stepper .tc-ps-tax-config [id="ui-salestax-tpl-opts"] .checkbox input[type="checkbox"] + label::before {
	width: 20px !important; height: 20px !important; border-radius: 4px !important; border: 1px solid #d1d7de !important; background: #fff !important;
}
.tc-product-stepper .tc-ps-tax-config [id="ui-salestax-tpl-opts"] .checkbox input[type="checkbox"]:checked + label::before { background: #006b70 !important; border-color: #006b70 !important; }

/* ---- + Add Pricing Option button (teal, right-aligned) ---- */
.tc-product-stepper .tc-ps-add-btn {
	align-self: flex-end !important;
	display: inline-flex !important;
	align-items: center !important;
	/* Figma 9335 (list state): secondary/outline — white bg, teal text + "+",
	   light border. (The FORM's primary teal Add is .tc-ps-form-add.) */
	gap: 8px !important;
	background: #ffffff !important;
	border: 1px solid #d1d7de !important;
	color: #006b70 !important;
	border-radius: 6px !important;
	padding: 8px 12px !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	line-height: 16px !important;
	text-transform: capitalize !important;
	box-shadow: none !important;
	float: none !important;
	margin: 8px 0 0 auto !important;
}
.tc-product-stepper .tc-ps-add-btn .fa-plus { color: #006b70 !important; }

/* ---- Retained pricing advanced controls (D10 — reskin, never hide) ---- */

/* "Customer experience settings" toggle — a legacy button that was rendering as
   a teal full-width bar (caught by the .button-secondary reskin + classic inline
   width:100%), which didn't read as a button. Reskin to a normal white
   design-system button sized to its content; behaviour (expands settings) is
   unchanged. width:auto !important beats the classic inline width:100%. */
.tc-product-stepper .ui-pricing-customer-experience-settings {
	display: inline-flex !important;
	align-items: center !important;
	width: auto !important;
	text-align: left !important;
	background: #ffffff !important;
	border: 1px solid #d1d7de !important;
	border-radius: 6px !important;
	color: #364152 !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	line-height: 20px !important;
	padding: 8px 14px !important;
	box-shadow: none !important;
	margin: 8px 0 0 !important;
	text-transform: none !important;
}
.tc-product-stepper .ui-pricing-customer-experience-settings:hover { background: #f6f8f9 !important; border-color: #afbbc9 !important; }

/* "Cancel another product's subscriptions" box — was stripped to transparent/0
   by the pricing .box reset (now excluded), which made its revealed product
   picker overlap. Reskin it like the tax box; the picker inside keeps working. */
.tc-product-stepper .ui-product-cancel {
	background: #f6f8f9 !important;
	border: 0 !important;
	border-radius: 8px !important;
	padding: 24px !important;
	box-shadow: none !important;
	margin: 16px 0 0 !important;
	overflow: visible !important;
}
.tc-product-stepper .ui-product-cancel .ui-box-icon { display: none !important; }
.tc-product-stepper .ui-cancellation-settings-button svg { display: none; }
.tc-product-stepper .ui-product-cancel .ui-box-content { margin: 0 !important; padding: 0 !important; }
.tc-product-stepper .ui-product-cancel .tabs { border: 0 !important; margin: 12px 0 !important; }
.tc-product-stepper .ui-product-cancel .tabs li span { font-size: 14px !important; color: #8493a8 !important; }
.tc-product-stepper .ui-product-cancel .tabs li.active span { color: #364152 !important; }
.tc-product-stepper .ui-product-cancel input[type="text"],
.tc-product-stepper .ui-product-cancel input[type="search"] {
	height: 38px !important; padding: 8px 12px !important;
	border: 1px solid #d1d7de !important; border-radius: 8px !important;
	background: #ffffff !important; font-size: 14px !important; color: #364152 !important;
	box-shadow: none !important; width: 100% !important;
}

/* Modal mode: the editor is a modal with its own "Payment type" selector +
   flexpay, so the tab's reskin-added type cards + flexpay select are redundant
   (no feature lost — the modal handles both). Keep heading + banner + tax + cards. */
/* ── Inline pricing editor — 3-state flow (form 1574:5885 / list 1574:9335) ──
   State classes live on the pricing section (#…-options-pricing):
   default (no class)   → FORM: type cards + flexpay + inline editor + Add
   .tc-ps-editing       → FORM (editing an existing option)
   .tc-ps-has-options   → LIST: saved option cards + outline Add             */

/* Drained alertify shell stays in the DOM (its footer button still drives the
   real validated save) but is never shown. Scoped WITHOUT the .tc-product-stepper
   ancestor because alertify appends the dialog to <body>, outside the stepper. */
.alertify.tc-ps-inlined-shell { display: none !important; }

/* Editor mount = the relocated One-Time / Subscription form, first in order. */
.tc-product-stepper .tc-ps-pricing > .tc-ps-editor { order: 1; width: 100%; }
/* Flatten the classic 2-pane wizard into one continuous form. */
.tc-product-stepper .tc-ps-editor .ui-pane-1,
.tc-product-stepper .tc-ps-editor .ui-pane-2 { display: block !important; }

/* Figma 5930 primary "Add Pricing Option" (teal, bottom-right of the form). */
.tc-product-stepper .tc-ps-form-add {
	align-self: flex-end;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background: #006b70;
	border: 1px solid #006b70;
	color: #ffffff;
	border-radius: 6px;
	padding: 8px 12px;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	cursor: pointer;
	margin-top: 8px;
}
.tc-product-stepper .tc-ps-form-add-icon {
	width: 16px; height: 16px; flex-shrink: 0;
	background: url(/static/icons/product-stepper/add.svg) no-repeat center;
	background-size: 9.33px 9.33px;
}
/* Figma 8469: form-add is the LAST element in the pricing column — after the tax
   box (order 2). It's now a direct child of .tc-ps-pricing (moved out of the
   editor), so order it here. Hidden in LIST state + until state resolves below. */
.tc-product-stepper .tc-ps-pricing > .tc-ps-form-add { order: 4; }
#ui-product-settings-tab-settings-options-pricing.tc-ps-has-options:not(.tc-ps-editing) .tc-ps-form-add,
#ui-product-settings-tab-settings-options-pricing:not(.tc-ps-resolved) .tc-ps-form-add { display: none !important; }

/* #4: spinner shown on an "Add Pricing Option" button between click and the
   editor appearing (JS toggles .tc-ps-btn-loading). Label is hidden, a centered
   ring spins. White on the teal buttons; teal on the white outline Add. */
.tc-product-stepper .tc-ps-btn-loading {
	position: relative !important;
	color: transparent !important;
	pointer-events: none !important;
}
.tc-product-stepper .tc-ps-btn-loading > * { opacity: 0 !important; }
.tc-product-stepper .tc-ps-btn-loading::after {
	content: '';
	position: absolute; top: 50%; left: 50%;
	width: 15px; height: 15px; margin: -8px 0 0 -8px; box-sizing: border-box;
	border: 2px solid rgba(255, 255, 255, 0.45);
	border-top-color: #ffffff;
	border-radius: 50%;
	animation: tc-ps-spin 0.6s linear infinite;
}
.tc-product-stepper .tc-ps-add-btn.tc-ps-btn-loading::after {
	border-color: rgba(0, 107, 112, 0.28); border-top-color: #006b70;
}
@keyframes tc-ps-spin { to { transform: rotate(360deg); } }

/* #2 (first-load flash): until JS has resolved the state (.tc-ps-resolved), hide
   the form chrome — otherwise the server-rendered type cards / editor paint, then
   vanish when the SPA loads a product that already has options. Title + banner
   (shown in both states) stay visible so the step never looks blank. */
#ui-product-settings-tab-settings-options-pricing:not(.tc-ps-resolved) .tc-ps-pricecards,
#ui-product-settings-tab-settings-options-pricing:not(.tc-ps-resolved) .tc-ps-flexpay,
#ui-product-settings-tab-settings-options-pricing:not(.tc-ps-resolved) .tc-ps-subtype,
#ui-product-settings-tab-settings-options-pricing:not(.tc-ps-resolved) .tc-ps-editor {
	display: none !important;
}

/* FORM state — hide the list-state secondary (outline) Add. */
#ui-product-settings-tab-settings-options-pricing:not(.tc-ps-has-options) .tc-ps-add-btn,
#ui-product-settings-tab-settings-options-pricing.tc-ps-editing .tc-ps-add-btn { display: none !important; }

/* LIST state — hide the form chrome (cards / flexpay / inline editor / tax box).
   Tax lives in the FORM per Figma (5885/8466), not the list (9335). User-approved
   reversible show/hide — the control is untouched, just not shown here. */
#ui-product-settings-tab-settings-options-pricing.tc-ps-has-options:not(.tc-ps-editing) .tc-ps-pricecards,
#ui-product-settings-tab-settings-options-pricing.tc-ps-has-options:not(.tc-ps-editing) .tc-ps-flexpay,
#ui-product-settings-tab-settings-options-pricing.tc-ps-has-options:not(.tc-ps-editing) .tc-ps-subtype,
#ui-product-settings-tab-settings-options-pricing.tc-ps-has-options:not(.tc-ps-editing) .tc-ps-sub-warning,
#ui-product-settings-tab-settings-options-pricing.tc-ps-has-options:not(.tc-ps-editing) .tc-ps-tax-box,
#ui-product-settings-tab-settings-options-pricing.tc-ps-has-options:not(.tc-ps-editing) .tc-ps-editor { display: none !important; }

/* #1 (Figma 9335): gap above the first option card so it never sits flush against
   the card above it (banner in list-only state, sales-tax card while editing). */
/* The list now sits in the .tc-ps-pricing flex column, whose gap already spaces it from the currency. */
#ui-product-settings-tab-settings-options-pricing.tc-ps-has-options #ui-payment_plans-list { margin-top: 0 !important; }

/* #5: the classic grey "Back" sub-nav button is redundant in the stepper — the
   stepper's own Back/Next handle navigation. (My nav button is .tc-ps-nav-back.) */
body:has(.tc-product-stepper) .button-back-grey { display: none !important; }

/* #4: the cancel-subscriptions product-selector tab bar (.ui-user-access-global_tabs)
   carries a classic negative margin-top (~-66px) that pulls the Products/Upsells/
   Downsells tabs UP over the description text. Reset it so the tabs sit below the
   description, and give the rows overflow-hidden so the "Live" corner ribbons are
   clipped to the row instead of spilling out. */
.tc-product-stepper .ui-user-access-global_tabs.subtabs { margin-top: 0 !important; }
.tc-product-stepper .product-listing-widget-card.box-list-product-row {
	overflow: hidden !important;
	border-radius: 8px !important;
}

/* Reskin retained controls to the design system (D10). */
/* Purple .check-primary checkboxes (payment-notification / cancel-subscription /
   silent-cancellation) → teal when checked, matching the reskin toggles. */
.tc-product-stepper .checkbox.check-primary input[type="checkbox"]:checked + label::before {
	background: #006b70 !important;
	border-color: #006b70 !important;
}
/* "Preview" (grey high-contrast) → outline secondary; "Edit" (purple secondary)
   → teal primary. Exclude the pricing Add buttons which have their own style. */
.tc-product-stepper .pure-button.button-highcontrast {
	background: #ffffff !important; color: #364152 !important;
	border: 1px solid #d1d7de !important; border-radius: 6px !important; box-shadow: none !important;
}
.tc-product-stepper .pure-button.button-secondary:not(.ui-payment_plan-add):not(.tc-ps-add-btn):not(.ui-quantity-settings):not(.ui-pricing-customer-experience-settings) {
	background: #006b70 !important; color: #ffffff !important;
	border: 1px solid #006b70 !important; border-radius: 6px !important; box-shadow: none !important;
}
/* Decorative classic "section icon" (looks like a menu but is inert) — hide it
   like the other reskinned boxes already do. */
.tc-product-stepper[data-step="pricing"] #ui-product-settings-tab-settings-options-pricing .ui-box-icon { display: none !important; }
/* With the box icons hidden, their content should no longer reserve the icon's
   left space — reset the margin so it aligns flush (fixes the payment-notification
   label sitting ~66px to the right). */
.tc-product-stepper[data-step="pricing"] #ui-product-settings-tab-settings-options-pricing .ui-box-content { margin-left: 0 !important; }

/* Validation error: highlight the offending price field (alongside the toast),
   and focus it (JS). Red outline on both halves of the $ pill + a soft tint so
   the error reads clearly. Clears on the next keystroke. */
.tc-product-stepper .tc-ps-pricing-inline .input-pill-left input.tc-ps-field-error,
.tc-product-stepper input.tc-ps-field-error {
	border-color: #e53e3e !important;
	background-color: #fef2f2 !important;
}
.tc-product-stepper .tc-ps-pricing-inline .input-pill-left:has(input.tc-ps-field-error) em,
.tc-product-stepper .input-pill-left:has(input.tc-ps-field-error) em { border-color: #e53e3e !important; }

/* The tax-box subtitle rule (.tc-ps-tax-box p { margin-left:44px }) was also
   indenting the tax-config field DESCRIPTIONS 44px right of their own labels/
   fields — reset those so each field group aligns flush. */
.tc-product-stepper .tc-ps-tax-config p { margin-left: 0 !important; }

/* ---- Pricing Options — saved-option cards (Figma 1574:9340) ---- */
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list {
	list-style: none; margin: 0 !important; padding: 0 !important;
	display: flex; flex-direction: column; gap: 12px;
}
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list li.generic-list-row {
	display: flex !important;
	align-items: center !important;
	gap: 16px !important;
	background: #ffffff !important;
	border: 1px solid #d1d7de !important;
	border-radius: 8px !important;
	padding: 20px 16px !important;
	margin: 0 !important;
	box-shadow: none !important;
}
/* Drag handle kept (reorder is a feature) but subtle, before the icon tile. */
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .generic-list-drag {
	order: -1; color: #afbbc9 !important; cursor: grab; margin: 0 !important; flex-shrink: 0;
}
/* Injected type icon tile (Figma 1574:9341: 48px #f6f8f9 rounded-24 + 24px icon). */
.tc-ps-option-icon {
	flex-shrink: 0; width: 48px; height: 48px; border-radius: 24px; background: #f6f8f9;
	display: inline-flex; align-items: center; justify-content: center;
}
.tc-ps-option-icon::before {
	content: ''; width: 24px; height: 24px; background: center / contain no-repeat;
}
.tc-ps-option-icon-single::before { background-image: url('/static/icons/product-stepper/credit-card.svg'); }
.tc-ps-option-icon-subscription::before { background-image: url('/static/icons/product-stepper/sync-loop.svg'); }
/* Name (#2a3648 14/500) + price/detail (#8493a8 14/400). */
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .generic-list-name {
	flex: 1 1 auto !important; min-width: 0; display: flex; flex-direction: column; gap: 4px; padding-right: 20px;
}
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .generic-list-name > span {
	font-size: 14px !important; font-weight: 500 !important; line-height: 20px !important; color: #2a3648 !important;
}
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .generic-list-aside {
	font-size: 14px !important; font-weight: 400 !important; line-height: 20px !important; color: #8493a8 !important; font-style: normal !important;
}
/* Actions: Edit + Remove → 32px icon-only buttons (Figma 1574:9359). */
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .generic-list-actions {
	display: flex !important; align-items: center; gap: 8px; flex-shrink: 0;
}
/* Card polish: tighten the name→price gap (4px name-gap + 2px aside margin read too
   loose) and vertically centre the edit/remove actions (base align-self:flex-end
   pushed them below centre). */
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .generic-list-name { gap: 2px !important; }
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .generic-list-aside { margin-top: 0 !important; }
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .generic-list-actions,
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .ui-payment_plans-list-actions { align-self: center !important; }
/* Payment-notification card — Preview (Secondary) + Edit (Primary) buttons → button
   design system: text-only (no leading FA icon), Inter 500 14px, reskin metrics. */
.tc-product-stepper #ui-customize-receipt-preview,
.tc-product-stepper #ui-customize-receipt-edit {
	font-family: 'Inter', sans-serif !important;
	font-weight: 500 !important;
	font-size: 14px !important;
	line-height: 20px !important;
	padding: 8px 12px !important;
	border-radius: 6px !important;
	box-shadow: none !important;
}
.tc-product-stepper #ui-customize-receipt-preview i,
.tc-product-stepper #ui-customize-receipt-edit i { display: none !important; }
.tc-product-stepper #ui-customize-receipt-preview {
	background: #ffffff !important;
	border: 1px solid #e8ecef !important;
	color: #364152 !important;
}
.tc-product-stepper #ui-customize-receipt-edit {
	background: #006b70 !important;
	border: 1px solid #006b70 !important;
	color: #ffffff !important;
}
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .ui-payment_plans-list-action-edit,
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .ui-payment_plans-list-action-delete {
	width: 32px !important; height: 32px !important; padding: 0 !important; border: 0 !important; border-radius: 8px !important;
	background-color: transparent !important; color: transparent !important; font-size: 0 !important;
	display: inline-flex !important; align-items: center; justify-content: center; cursor: pointer;
	background-repeat: no-repeat !important; background-position: center !important; box-shadow: none !important;
}
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .ui-payment_plans-list-action-edit {
	background-image: url('/static/icons/product-stepper/edit.svg') !important; background-size: 12px 12px !important;
}
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .ui-payment_plans-list-action-delete {
	background-image: url('/static/icons/product-stepper/trash.svg') !important; background-size: 9.33px 12px !important;
}
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .ui-payment_plans-list-action-edit:hover,
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .ui-payment_plans-list-action-delete:hover {
	background-color: #f6f8f9 !important;
}
/* Preferred badge + Make-preferred / out-of-stock actions (kept; not in Figma). */
/* "Preferred" badge → Figma soft-primary (#c0edea bg, #364152 text, 4px radius). */
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .ui-payment_plans-list-label-prefer {
	background: #c0edea !important; color: #364152 !important; border: 0 !important;
	border-radius: 4px !important; padding: 2px 6px !important; margin-right: 8px !important;
	font-size: 12px !important; line-height: 16px !important; font-weight: 500 !important;
}
/* "Make preferred" / out-of-stock → subtle secondary button (readable, not washed out). */
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .ui-payment_plans-list-action-prefer,
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .ui-payment_plans-list-action-stock {
	background: #ffffff !important; color: #364152 !important; border: 1px solid #d1d7de !important;
	border-radius: 8px !important; padding: 6px 12px !important; margin-right: 8px !important; cursor: pointer;
	font-size: 12px !important; line-height: 16px !important; font-weight: 500 !important;
}
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .ui-payment_plans-list-action-prefer:hover,
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .ui-payment_plans-list-action-stock:hover {
	background: #f6f8f9 !important; border-color: #b6bfca !important;
}

/* #5: "Set global quantity" lives in a .margin-top-negative-15 container that
   pulls it up onto the last option card in the reskin's bordered layout (it bled
   over the card + the cancellation button). Drop the pull so it flows cleanly
   below the list, right-aligned, above the global-actions row. */
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-wrapper > .text-align-right {
	margin-top: 12px !important;
}

/* #1: reskin the "Customer cancellation options" button to the design system
   (was a legacy light-grey outline). White surface, neutral border + text. */
.tc-product-stepper .ui-cancellation-settings-button {
	background: #ffffff !important;
	border: 1px solid #d1d7de !important;
	border-radius: 6px !important;
	color: #364152 !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	line-height: 20px !important;
	padding: 8px 14px !important;
	box-shadow: none !important;
}
.tc-product-stepper .ui-cancellation-settings-button:hover { background: #f6f8f9 !important; border-color: #afbbc9 !important; }
.tc-product-stepper .ui-cancellation-settings-button i,
.tc-product-stepper .ui-cancellation-settings-button svg { color: #6a7686 !important; }

/* Same global-actions row: reskin "Set out-of-stock options" (was legacy purple
   button-secondary) and "Set global quantity" (was legacy grey) to match the
   cancellation button, so the whole row reads as one design-system set. */
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-stock,
.tc-product-stepper[data-step="pricing"] .ui-payment_plans-global-action-stock {
	background: #ffffff !important;
	border: 1px solid #d1d7de !important;
	border-radius: 6px !important;
	color: #364152 !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	line-height: 20px !important;
	padding: 8px 14px !important;
	box-shadow: none !important;
}
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-stock:hover,
.tc-product-stepper[data-step="pricing"] .ui-payment_plans-global-action-stock:hover { background: #f6f8f9 !important; border-color: #afbbc9 !important; }
.tc-product-stepper[data-step="pricing"] #ui-payment_plans-stock i { color: #6a7686 !important; }

/* Adaptive Pricing step: no classic editor section — hide the editor, show the reskinned intro panel. */
.tc-product-stepper[data-step="adaptive-pricing"] #ui-product-settings { display: none; }

/* Hidden on every other step; revealed only when the AP step is active. */
.tc-ps-ap { display: none; }
.tc-product-stepper[data-step="adaptive-pricing"] .tc-ps-ap {
	display: flex; flex-direction: column; gap: 24px; align-items: flex-end;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
}

.tc-ps-ap-head { width: 100%; display: flex; flex-direction: column; gap: 8px; }
.tc-ps-ap-title { margin: 0; font-weight: 600; font-size: 24px; line-height: 32px; letter-spacing: normal; color: #364152; }
.tc-ps-ap-subtitle { margin: 0; font-weight: 400; font-size: 14px; line-height: 20px; color: #8493a8; }

.tc-ps-ap-main { width: 100%; display: flex; flex-direction: column; gap: 40px; align-items: flex-end; }

.tc-ps-ap-cards { width: 100%; display: flex; flex-direction: column; gap: 24px; }
.tc-ps-ap-card {
	width: 100%; box-sizing: border-box; display: flex; align-items: center; gap: 16px;
	padding: 20px 16px; background: #ffffff; border: 1px solid #d1d7de; border-radius: 8px;
}
.tc-ps-ap-chip {
	flex-shrink: 0; width: 48px; height: 48px; border-radius: 24px; background: #f6f8f9;
	display: inline-flex; align-items: center; justify-content: center;
}
.tc-ps-ap-chip img { display: block; width: 24px; height: 24px; }
.tc-ps-ap-card-body { flex: 1 1 0; min-width: 0; padding-right: 20px; display: flex; flex-direction: column; gap: 4px; }
.tc-ps-ap-card-title { margin: 0; font-weight: 500; font-size: 14px; line-height: 20px; color: #2a3648; }
.tc-ps-ap-card-text { margin: 0; font-weight: 400; font-size: 14px; line-height: 20px; color: #8493a8; }

.tc-ps-ap-banner {
	width: 100%; box-sizing: border-box; display: flex; align-items: flex-start; gap: 8px;
	padding: 16px; background: #bee3f8; border-radius: 8px;
}
.tc-ps-ap-banner-ico { flex-shrink: 0; width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center; }
.tc-ps-ap-banner-ico img { display: block; width: 20px; height: 20px; }
.tc-ps-ap-banner-text { margin: 0; font-weight: 400; font-size: 14px; line-height: 20px; color: #364152; }
.tc-ps-ap-banner-link { color: #006b70; text-decoration: underline; }

.tc-ps-ap-add {
	display: inline-flex; align-items: center; gap: 4px; padding: 8px; border: 0; cursor: pointer;
	background: #006b70; border-radius: 6px;
}
.tc-ps-ap-add:hover { background: #005a5e; }
.tc-ps-ap-add-ico { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; }
.tc-ps-ap-add-ico img { display: block; width: 9.33px; height: 9.33px; }
.tc-ps-ap-add-text { padding: 0 4px; font-weight: 500; font-size: 14px; line-height: 16px; color: #ffffff; }

/* Affiliates step: title + reskinned toggle/labels/fields; strip the classic box + icon. Keeps every affiliate control. */
.tc-product-stepper .tc-aff-title { margin: 0 0 24px; font-family: 'Inter', sans-serif; font-weight: 600; font-size: 24px; line-height: 32px; letter-spacing: normal; color: #364152; }
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin.box,
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .box { background: transparent !important; border: 0 !important; box-shadow: none !important; padding: 0 !important; }
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .ui-box-icon { display: none !important; }
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .ui-title { display: none !important; }
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin label {
	font-family: 'Inter', sans-serif !important; font-weight: 500 !important; font-size: 14px !important;
	line-height: 20px !important; color: #2b384a !important; margin-bottom: 4px !important;
}
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin input[type="text"],
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin input[type="url"],
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin input[type="email"],
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin input[type="number"],
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin select {
	height: 38px !important; padding: 8px !important; border: 1px solid #d1d7de !important; border-radius: 8px !important;
	background-color: #ffffff !important; font-size: 14px !important; line-height: 20px !important; color: #364152 !important;
	box-shadow: none !important; width: 100% !important; box-sizing: border-box;
}
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin input::placeholder { color: #afbbc9 !important; }
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin select {
	appearance: none; -webkit-appearance: none; padding-right: 32px !important;
	background-image: url(/static/icons/product-stepper/expand-more.svg); background-repeat: no-repeat;
	background-position: right 12px center; background-size: 8px 4.94px;
}
/* Commission %/amount fields are input-pills (input + unit em) — border the pill, not the inner input. */
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .input-pill {
	display: flex !important; align-items: center; height: 38px; border: 1px solid #d1d7de !important; border-radius: 8px !important;
	background: #ffffff !important; overflow: hidden; box-shadow: none !important; width: 100%;
}
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .input-pill input[type="number"] {
	border: 0 !important; border-radius: 0 !important; height: 36px !important; flex: 1 1 auto; width: auto !important;
}
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .input-pill em {
	font-style: normal; color: #8493a8; padding: 0 12px; font-size: 14px; line-height: 20px;
}
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .input-pill-left em { order: -1; padding: 0 0 0 12px; }
/* Toggle: teal switch (reuse the shipped stepper togglecard pattern) — applies to the enable toggle + option switches. */
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .checkbox { position: relative; margin: 0 !important; }
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .checkbox input[type="checkbox"] { position: absolute !important; opacity: 0 !important; width: 32px; height: 20px; margin: 0; cursor: pointer; z-index: 1; }
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .checkbox label {
	position: relative; display: inline-flex !important; align-items: center; min-height: 20px;
	padding-left: 44px !important; margin: 0 !important; font-size: 14px !important; font-weight: 400 !important; color: #364152 !important; cursor: pointer;
}
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .checkbox label::before {
	content: '' !important; position: absolute !important; left: 0; top: 50%; transform: translateY(-50%);
	width: 32px !important; height: 20px !important; border-radius: 100px !important; background: #d1d7de !important; border: 0 !important; transition: background .15s;
}
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .checkbox label::after {
	content: '' !important; position: absolute !important; left: 3px; top: 50%; transform: translateY(-50%);
	width: 14px !important; height: 14px !important; border-radius: 50% !important; background: #ffffff !important; transition: left .15s;
}
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .checkbox input:checked + label::before { background: #006b70 !important; }
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .checkbox input:checked + label::after { left: 15px; }
/* Stack fields with a consistent 24px rhythm; the enable toggle heads the group. */
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .ui-box-content { margin: 0 !important; padding: 0 !important; }
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .ui-box-content h2 { margin: 0 0 24px !important; }
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .ui-affiliate-opts > .row,
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .pure-form > .row { margin: 0 0 24px !important; }
/* Setup cards (empty-state entry points) + callout — aligned to the design-system tokens. */
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .empty-state {
	background: #ffffff !important; border: 1px solid #d1d7de !important; border-radius: 8px !important;
	box-shadow: none !important; padding: 24px !important; margin: 0 0 24px !important; text-align: center;
}
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .empty-state h2 {
	font-family: 'Inter', sans-serif !important; font-weight: 600 !important; font-size: 16px !important; line-height: 24px !important; color: #2b384a !important; margin: 0 0 4px !important;
}
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .empty-state p {
	font-family: 'Inter', sans-serif !important; font-size: 14px !important; line-height: 20px !important; color: #8493a8 !important; margin: 0 0 16px !important;
}
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .empty-state .pure-button {
	display: inline-flex; align-items: center; gap: 8px; background: #006b70 !important; border: 0 !important; border-radius: 6px !important;
	color: #ffffff !important; font-family: 'Inter', sans-serif !important; font-weight: 500 !important; font-size: 14px !important; line-height: 16px !important;
	padding: 8px 12px !important; box-shadow: none !important;
}
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .empty-state .pure-button:hover { background: #005a5e !important; }
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .callout {
	background: #f6f8f9 !important; border: 1px solid #d1d7de !important; border-radius: 8px !important;
	padding: 12px 16px !important; margin: 0 !important; color: #364152 !important; font-family: 'Inter', sans-serif !important; font-size: 14px !important; line-height: 20px !important;
}

/* Affiliate options modal rebuild: one field per line, "Advanced" as a left sub-heading (no flanking line), reskinned selects. */
body:has(.tc-product-stepper) #ui-affiliate-options-tpl .ui-input-group.row > .pure-u-1-3 {
	display: block; width: 100% !important; margin-bottom: 16px; /* !important beats the legacy grid JS's inline calc width */
}
body:has(.tc-product-stepper) #ui-affiliate-options-tpl .hr { text-align: left; margin: 8px 0 16px; }
body:has(.tc-product-stepper) #ui-affiliate-options-tpl .hr::before { display: none; }
body:has(.tc-product-stepper) #ui-affiliate-options-tpl .hr p {
	display: block; margin: 0; padding: 0; background: transparent;
	font-family: 'Inter', sans-serif; font-weight: 600; font-size: 16px; line-height: 24px; color: #2a3648;
}
body:has(.tc-product-stepper) #ui-affiliate-options-tpl select {
	-webkit-appearance: none; -moz-appearance: none; appearance: none; width: 100%; height: auto;
	padding: 8px 32px 8px 12px; border: 1px solid #d1d7de; border-radius: 8px; background-color: #fff;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'><path d='M4 6l4 4 4-4' stroke='%23364152' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
	background-repeat: no-repeat; background-position: right 10px center;
	font-family: 'Inter', sans-serif; font-size: 14px; line-height: 20px; color: #364152; box-shadow: none;
}
/* Every text node in the affiliate step uses Inter (the legacy form inherits the theme font otherwise). Icons keep their own font. */
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin,
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin h1,
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin h2,
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin h3,
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin h4,
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin p,
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin label,
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin span,
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin a,
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin button,
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin select,
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin input,
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin em {
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;
}
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .fa,
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin [class^="fa-"],
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin [class*=" fa-"] {
	font-family: 'Font Awesome 5 Free', 'Font Awesome 5 Pro', 'FontAwesome' !important;
}
/* Commission setup is drained inline (see enhanceAffiliates) — hide the modal flash during auto-open, and space the inline mount from the options card. */
body:has(.tc-product-stepper[data-step="affiliates"]) .alertify:has(#affiliate-option-commission_type):not(.tc-ps-pricing-inline) { opacity: 0 !important; pointer-events: none !important; }
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .tc-aff-commissions-mount { margin: 0 0 24px; }
/* ID-boosted Inter guard — wins over later theme font rules regardless of stylesheet order. */
#ui-product-settings-tab-settings-options-affiliates.tc-aff-reskin,
#ui-product-settings-tab-settings-options-affiliates.tc-aff-reskin h1,
#ui-product-settings-tab-settings-options-affiliates.tc-aff-reskin h2,
#ui-product-settings-tab-settings-options-affiliates.tc-aff-reskin h3,
#ui-product-settings-tab-settings-options-affiliates.tc-aff-reskin h4,
#ui-product-settings-tab-settings-options-affiliates.tc-aff-reskin p,
#ui-product-settings-tab-settings-options-affiliates.tc-aff-reskin label,
#ui-product-settings-tab-settings-options-affiliates.tc-aff-reskin span:not([class*="fa"]),
#ui-product-settings-tab-settings-options-affiliates.tc-aff-reskin a,
#ui-product-settings-tab-settings-options-affiliates.tc-aff-reskin button,
#ui-product-settings-tab-settings-options-affiliates.tc-aff-reskin select,
#ui-product-settings-tab-settings-options-affiliates.tc-aff-reskin input,
#ui-product-settings-tab-settings-options-affiliates.tc-aff-reskin em {
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;
}

/* Advanced step (TC-12837 / Figma 1574-6718): Automations + relocated Tracking Scripts. */
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .tc-adv-auto-title,
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .tc-adv-track-title {
	margin: 0 0 24px; font-family: 'Inter', sans-serif; font-weight: 600; font-size: 24px; line-height: 32px; letter-spacing: normal; color: #364152;
}
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .tc-adv-tracking-mount { margin-top: 32px; }
/* "Combine purchase events" dedupe: hide the duplicate heading, show the tooltip as a description. */
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .tc-adv-dupe-hide { display: none !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .tc-adv-track-desc {
	margin: 4px 0 0 !important; font-family: 'Inter', sans-serif !important; font-weight: 400 !important; font-size: 12px !important; line-height: 16px !important; color: #8493a8 !important;
}
/* The tracking section is a hidden customize sub-tab; force it visible once relocated into the step. */
.tc-product-stepper[data-step="advanced"] .tc-adv-tracking-mount > .tc-adv-tracking-active { display: block !important; }
/* Strip the classic boxes + section titles. */
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .box { background: transparent !important; border: 0 !important; box-shadow: none !important; padding: 0 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin > .box > .ui-title,
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .box-tabbed > .ui-title { display: none !important; }
/* Automation-rules empty state → design-system card. */
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .empty-state {
	background: #ffffff !important; border: 1px solid #d1d7de !important; border-radius: 8px !important; box-shadow: none !important; padding: 32px 40px !important; margin: 0 !important; text-align: center;
}
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .empty-state::before {
	content: ''; display: block; width: 36px; height: 36px; margin: 0 auto 16px; background: url('/static/icons/product-stepper/adv-inbox.svg') no-repeat center / contain;
}
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .empty-state h2 { font-family: 'Inter', sans-serif !important; font-weight: 600 !important; font-size: 18px !important; line-height: 28px !important; color: #364152 !important; margin: 0 0 4px !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .empty-state p { font-family: 'Inter', sans-serif !important; font-size: 14px !important; line-height: 20px !important; color: #2a3648 !important; margin: 0 0 16px !important; }
/* ID-scoped to beat the stepper-wide teal .button-secondary rule. */
.tc-product-stepper[data-step="advanced"] #ui-product-settings-tab-behavior.tc-adv-reskin .empty-state .pure-button { display: inline-flex; align-items: center; gap: 4px; background: #fff !important; border: 1px solid #e8ecef !important; border-radius: 6px !important; color: #364152 !important; font-family: 'Inter', sans-serif !important; font-weight: 500 !important; font-size: 14px !important; line-height: 16px !important; padding: 8px !important; box-shadow: none !important; }
.tc-product-stepper[data-step="advanced"] #ui-product-settings-tab-behavior.tc-adv-reskin .empty-state .pure-button:hover { background: #f6f8f9 !important; }
.tc-product-stepper[data-step="advanced"] #ui-product-settings-tab-behavior.tc-adv-reskin .empty-state .pure-button i { color: #364152 !important; }
/* Legacy empty-state has a third prompt line Figma omits. */
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .empty-state p + p { display: none !important; }
/* Tracking integrations: each row separated by a #e7ebee divider; stack with 32px rhythm. */
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-tracking-integration { padding: 0 0 32px !important; margin: 0 0 32px !important; border-bottom: 1px solid #e7ebee !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-tracking-integration:last-child { border-bottom: 0 !important; margin-bottom: 0 !important; padding-bottom: 0 !important; }
/* Labels + inputs. */
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin label { font-family: 'Inter', sans-serif !important; font-weight: 500 !important; font-size: 14px !important; line-height: 20px !important; color: #2b384a !important; margin-bottom: 4px !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin input[type="text"],
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin input[type="url"],
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin textarea,
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin select {
	padding: 8px !important; border: 1px solid #d1d7de !important; border-radius: 8px !important; background-color: #fff !important; font-size: 14px !important; line-height: 20px !important; color: #364152 !important; box-shadow: none !important; width: 100% !important; box-sizing: border-box;
}
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin input::placeholder { color: #afbbc9 !important; }
/* Toggles → teal switch (reuse the shipped togglecard pattern). */
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .checkbox { position: relative; margin: 0 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .checkbox input[type="checkbox"] { position: absolute !important; opacity: 0 !important; width: 32px; height: 20px; margin: 0; cursor: pointer; z-index: 1; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .checkbox label { position: relative; display: inline-flex !important; align-items: center; min-height: 20px; padding-left: 44px !important; margin: 0 !important; font-size: 14px !important; font-weight: 400 !important; color: #364152 !important; cursor: pointer; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .checkbox label::before { content: '' !important; position: absolute !important; left: 0; top: 50%; transform: translateY(-50%); width: 32px !important; height: 20px !important; border-radius: 100px !important; background: #d1d7de !important; border: 0 !important; transition: background .15s; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .checkbox label::after { content: '' !important; position: absolute !important; left: 3px; top: 50%; transform: translateY(-50%); width: 14px !important; height: 14px !important; border-radius: 50% !important; background: #fff !important; transition: left .15s; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .checkbox input:checked + label::before { background: #006b70 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .checkbox input:checked + label::after { left: 15px; }
/* Toggle header row: teal pill + service name (logo hidden), 8px gap. */
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-tracking-integration > .row.pull-left {
	display: flex !important; align-items: center; gap: 8px; float: none !important; width: 100% !important; margin: 0 !important; padding: 0 !important;
}
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-tracking-integration-enable { flex: 0 0 auto; }
/* The legacy z-index: 999 on these toggles lifts them over the sticky step footer. */
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-tracking-integration .ui-checkbox { z-index: auto; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-tracking-integration-enable label { width: 32px !important; padding-left: 32px !important; box-sizing: border-box; overflow: hidden; min-height: 20px; }
/* The logo cell is a 54x54 chip; with the logo hidden, pin it to the 20px line so the toggle + name align on one line. */
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-checkbox-logo,
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-checkbox-logo > div { display: inline-flex !important; align-items: center; height: 20px !important; width: auto !important; min-height: 0 !important; min-width: 0 !important; margin: 0 !important; padding: 0 !important; background: transparent !important; border: 0 !important; box-shadow: none !important; float: none !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-checkbox-logo img,
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-checkbox-logo i { display: none !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-checkbox-logo span { font-weight: 400 !important; font-size: 14px !important; line-height: 20px !important; color: #364152 !important; text-transform: none !important; letter-spacing: normal !important; white-space: nowrap; width: auto !important; max-width: none !important; background: transparent !important; padding: 0 !important; border-radius: 0 !important; }
/* The section's own "Set up the tracking services…" heading duplicates the injected "Tracking Scripts" title. */
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .tc-adv-tracking-mount > .tc-adv-tracking-active > h2:first-child { display: none !important; }
/* Revealed settings: 24px stack, drop the classic intro blurb Figma omits. */
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-tracking-integration-settings:not(.hidden) { display: flex !important; flex-direction: column; gap: 24px; margin-top: 24px !important; margin-left: 0 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-tracking-integration-settings > p:first-child:not(:only-child) { display: none !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-tracking-integration-settings > div { margin: 0 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin input[type="number"],
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin input[type="email"],
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin input[type="password"] {
	padding: 8px !important; border: 1px solid #d1d7de !important; border-radius: 8px !important; background-color: #fff !important; font-size: 14px !important; line-height: 20px !important; color: #364152 !important; box-shadow: none !important; width: 100% !important; box-sizing: border-box;
}
/* Extra action buttons in a tracking integration (e.g. GTM "Get container file") → secondary inline, not a full-width teal bar. ID-scoped to beat the stepper teal .button-secondary rule. */
.tc-product-stepper[data-step="advanced"] .tc-adv-tracking-mount > .tc-adv-tracking-active .pure-button {
	display: inline-flex !important; align-self: flex-start; align-items: center; gap: 4px; width: auto !important; background: #fff !important; border: 1px solid #e8ecef !important; border-radius: 6px !important; color: #364152 !important; font-weight: 500 !important; font-size: 14px !important; line-height: 16px !important; padding: 8px !important; box-shadow: none !important;
}
.tc-product-stepper[data-step="advanced"] .tc-adv-tracking-mount > .tc-adv-tracking-active .pure-button:hover { background: #f6f8f9 !important; }
/* Drop the lone floating tooltip beside "Get container file" — the modal it opens already carries the same explanation (review). */
.tc-product-stepper[data-step="advanced"] .ui-tracking-integration-gtm-build_template + .hint { display: none !important; }
/* "Download a container file" modal → design-system type + inputs (tagged by products-stepper.js so it stays gated). */
.tc-adv-gtm-modal .ajs-body p { font-family: 'Inter', sans-serif !important; font-size: 14px !important; line-height: 20px !important; color: #364152 !important; }
.tc-adv-gtm-modal label { font-family: 'Inter', sans-serif !important; font-weight: 500 !important; font-size: 14px !important; line-height: 20px !important; color: #2b384a !important; margin-bottom: 4px !important; display: block; }
.tc-adv-gtm-modal input[type="text"],
.tc-adv-gtm-modal input[type="url"],
.tc-adv-gtm-modal input:not([type]),
.tc-adv-gtm-modal select,
.tc-adv-gtm-modal textarea {
	padding: 8px !important; border: 1px solid #d1d7de !important; border-radius: 8px !important; background-color: #fff !important; font-family: 'Inter', sans-serif !important; font-size: 14px !important; line-height: 20px !important; color: #364152 !important; box-shadow: none !important; width: 100% !important; box-sizing: border-box; height: auto !important; }
.tc-adv-gtm-modal input::placeholder { color: #afbbc9 !important; }
/* Option groups (FB Conversions API) render as plain toggles, not a boxed card. */
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-tracking-integration-option_group,
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-tracking-integration-option_groups-settings { background: transparent !important; border: 0 !important; box-shadow: none !important; padding: 0 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-tracking-integration-option_group.margin-top { margin-top: -8px !important; } /* FB Pixel sub-options group tighter: negate 8px of the settings' 24px flex gap → 16px between the Combine + Conversions toggles */
/* The "add your own tracking code" divider only makes sense when a per-checkout custom-code row is actually shown; hide the orphaned divider otherwise. */
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .tc-adv-tracking-mount > .tc-adv-tracking-active:not(:has(.ui-product-settings-tab-customize-options-inner-wrapper:not(.hidden))) > .hr { display: none !important; }

/* Automations "Add rule" form drained inline (Figma 1574-7060). */
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ajs-header,
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-icon,
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-block-description { display: none !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ajs-modal,
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ajs-dialog,
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ajs-body,
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ajs-content,
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-content,
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-block { padding: 0 !important; margin: 0 !important; background: transparent !important; border: 0 !important; box-shadow: none !important; max-width: none !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-row { display: flex !important; flex-direction: column; gap: 16px; float: none !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-action-selector-wrap,
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-provider-block { display: flex !important; align-items: center; gap: 16px; margin: 0 !important; float: none !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-action-selector-wrap > p,
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-provider-block > p { flex: 0 0 39px; width: 39px; margin: 0 !important; text-align: right; font-family: 'Inter', sans-serif !important; font-weight: 500 !important; font-size: 14px !important; line-height: 20px !important; color: #2b384a !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation select {
	flex: 1 1 auto;
	width: 100%;
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	padding: 8px 32px 8px 8px !important;
	border: 1px solid #d1d7de !important;
	border-radius: 8px !important;
	background-color: #fff !important;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'><path d='M4 6l4 4 4-4' stroke='%23364152' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>") !important;
	background-repeat: no-repeat !important;
	background-position: right 8px center !important;
	font-family: 'Inter', sans-serif !important;
	font-size: 14px !important;
	line-height: 20px !important;
	color: #364152 !important;
	box-shadow: none !important;
	height: auto !important;
}
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-row { padding: 0 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-content { margin-left: 55px !important; }
/* When row: trigger + condition selects share the full width evenly (basis 0); zero the legacy 77px margin that shoved the second select right and cramped both. */
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-action-selector-wrap > select { flex: 1 1 0 !important; min-width: 0 !important; max-width: none !important; width: auto !important; margin: 0 !important; }
/* Action row (e.g. "add them to … this … list"): keep the mode select compact and drop the target select onto its own full-width line so the fields stack. */
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-action-row:not(.tc-adv-gs-done) .ui-autoresponder-select-mode { flex: 0 1 auto !important; width: auto !important; max-width: 55% !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-action-row:not(.tc-adv-gs-done) .ui-autoresponder-select-subtype { flex: 1 1 100% !important; width: 100% !important; }
/* Full-size chevron on every automation dropdown (a legacy background-size shrinks it to 8px). */
.tc-product-stepper[data-step="advanced"] .tc-adv-automation select { background-size: 16px !important; }
/* Modern list-search toolbar + result table (retained ActiveCampaign provider fields). */
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-table-container { border: 1px solid #e7ebee !important; border-radius: 8px !important; overflow: hidden; margin-top: 8px; background: #fff !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-table-wrap { border: 0 !important; margin: 0 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-table-wrap > div:first-child { display: flex !important; gap: 8px; align-items: center; padding: 10px !important; margin: 0 !important; background: #fff !important; border: 0 !important; border-bottom: 1px solid #e7ebee !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation input[type="text"].ui-autoresponder-search {
	flex: 1 1 auto !important;
	width: auto !important;
	height: 36px;
	box-sizing: border-box;
	padding: 6px 10px 6px 34px !important;
	border: 0 !important;
	border-radius: 8px !important;
	background-color: #f6f8f9 !important;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'><circle cx='7' cy='7' r='5' stroke='%23afbbc9' stroke-width='1.5'/><path d='M10.5 10.5l3 3' stroke='%23afbbc9' stroke-width='1.5' stroke-linecap='round'/></svg>") !important;
	background-repeat: no-repeat !important;
	background-position: left 10px center !important;
	background-size: 16px !important;
	font-family: 'Inter', sans-serif !important;
	font-size: 14px !important;
	line-height: 20px !important;
	color: #364152 !important;
	box-shadow: none !important;
}
.tc-product-stepper[data-step="advanced"] .tc-adv-automation input[type="text"].ui-autoresponder-search::placeholder { color: #afbbc9 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-ac-refresh-btn { flex: 0 0 auto; height: 36px; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-table-container table { border: 0 !important; border-radius: 0 !important; margin: 0 !important; width: 100% !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-table-container th { background: #fff !important; color: #8493a8 !important; font-family: 'Inter', sans-serif !important; font-weight: 500 !important; font-size: 12px !important; letter-spacing: .04em; text-transform: uppercase; border: 0 !important; border-bottom: 1px solid #e7ebee !important; padding: 10px 14px !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-table-container td { padding: 12px 14px !important; color: #364152 !important; font-size: 14px !important; border: 0 !important; border-bottom: 1px solid #f0f2f4 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-table-container tr:last-child td { border-bottom: 0 !important; }
/* Location section: heading + square checkbox (not the toggle pill), no grey card. */
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .tc-adv-auto-loc-title { margin: 24px 0 8px !important; font-family: 'Inter', sans-serif !important; font-weight: 600 !important; font-size: 20px !important; line-height: 28px !important; color: #364152 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-geo-selector-wrap { background: transparent !important; border: 0 !important; padding: 0 !important; margin: 0 !important; position: static !important; left: auto !important; width: 100% !important; display: flex !important; flex-direction: column; align-items: flex-start; gap: 0; text-align: left !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-geo-selector-wrap > .checkbox { order: 0; text-align: left !important; }
/* Helper reads as the checkbox sub-label: aligned under the label text (28px), tight gap-2, 13px muted. */
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-geo-selector-wrap > span { order: 1; margin: 2px 0 0 !important; padding-left: 28px !important; font-family: 'Inter', sans-serif !important; font-size: 13px !important; line-height: 20px !important; color: #8493a8 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-geo-selector-wrap > .ui-autoresponder-geo-selector { order: 2; width: 100% !important; margin-top: 16px !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .tc-adv-automation .checkbox { position: static !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .tc-adv-automation .checkbox input[type="checkbox"] { position: absolute !important; opacity: 0 !important; width: 20px; height: 20px; margin: 0; cursor: pointer; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .tc-adv-automation .checkbox label { position: relative; display: inline-flex !important; align-items: center; gap: 8px; padding-left: 28px !important; min-height: 20px; margin: 0 !important; font-weight: 400 !important; font-size: 14px !important; line-height: 20px !important; color: #364152 !important; cursor: pointer; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .tc-adv-automation .checkbox label::before { content: '' !important; position: absolute !important; left: 0; top: 50%; transform: translateY(-50%); width: 20px !important; height: 20px !important; border: 1px solid #d1d7de !important; border-radius: 4px !important; background: #fff !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .tc-adv-automation .checkbox label::after { content: '' !important; position: absolute !important; left: 7px; top: 50%; width: 5px !important; height: 10px !important; border: solid #006b70 !important; border-width: 0 2px 2px 0 !important; transform: translateY(-60%) rotate(45deg); opacity: 0; background: transparent !important; border-radius: 0 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .tc-adv-automation .checkbox input:checked + label::before { border-color: #006b70 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .tc-adv-automation .checkbox input:checked + label::after { opacity: 1 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-content textarea { width: 100% !important; min-height: 144px !important; border: 1px solid #d1d7de !important; border-radius: 8px !important; padding: 8px 12px !important; font-family: 'Inter', sans-serif !important; font-size: 14px !important; line-height: 20px !important; color: #364152 !important; box-shadow: none !important; box-sizing: border-box; }
/* footer → Cancel (outline) + teal Create; ID-free but high specificity to beat the stepper teal .button rule. */
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ajs-footer { display: flex !important; justify-content: flex-end; border: 0 !important; padding: 0 !important; margin-top: 40px !important; background: transparent !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ajs-footer .ajs-primary { display: flex !important; gap: 8px; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ajs-footer .ajs-auxiliary:empty { display: none !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ajs-footer .ajs-buttons { text-align: right !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ajs-footer .ajs-cancel { background: #fff !important; border: 1px solid #e8ecef !important; border-radius: 6px !important; color: #364152 !important; font-family: 'Inter', sans-serif !important; font-weight: 500 !important; font-size: 14px !important; padding: 8px !important; box-shadow: none !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ajs-footer .ajs-ok { display: inline-flex !important; align-items: center; gap: 4px; background: #006b70 !important; border: 0 !important; border-radius: 6px !important; color: #fff !important; font-family: 'Inter', sans-serif !important; font-weight: 500 !important; font-size: 14px !important; padding: 8px !important; box-shadow: none !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ajs-footer .ajs-ok:hover { background: #005a5e !important; }
/* The injected icon/label must not swallow the click — alertify's handler only fires when the target IS the button, so a real click landing on a child does nothing. */
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ajs-footer .ajs-ok > *,
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin #ui-autoresponder-add-list > * { pointer-events: none; }
/* Provider sub-fields (ActiveCampaign "add them / this / list") align with the main inputs, not extra-indented. */
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-action-row { display: flex !important; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 !important; padding: 0 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-action-row > * { margin: 0 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-action-row select { width: auto !important; flex: 1 1 0 !important; max-width: none !important; }
/* Google Sheets: "add them to" dropdown + static "this spreadsheet" as two equal halves. */
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-action-row.tc-adv-gs-done { flex-wrap: nowrap; gap: 16px; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-action-row.tc-adv-gs-done .ui-autoresponder-select-mode { flex: 1 1 0 !important; width: auto !important; max-width: none !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .tc-adv-gs-secondhalf { flex: 1 1 0; display: flex; align-items: center; gap: 4px; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .tc-adv-gs-secondhalf p { margin: 0 !important; font-family: 'Inter', sans-serif !important; font-size: 14px !important; line-height: 20px !important; color: #364152 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-select-subtype-single { flex: 0 0 auto !important; border: 0 !important; background: none !important; background-image: none !important; padding: 0 !important; width: auto !important; max-width: none !important; -webkit-appearance: none; appearance: none; font-family: 'Inter', sans-serif !important; font-size: 14px !important; line-height: 20px !important; color: #364152 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-action-row p { flex: 0 0 auto; margin: 0 !important; font-family: 'Inter', sans-serif !important; font-size: 14px !important; color: #364152 !important; }
/* Retained provider fields not in Figma (search, Refresh, result table) → design system. */
.tc-product-stepper[data-step="advanced"] .tc-adv-automation input[type="text"],
.tc-product-stepper[data-step="advanced"] .tc-adv-automation input[type="search"] { border: 1px solid #d1d7de !important; border-radius: 8px !important; padding: 8px !important; background: #fff !important; font-family: 'Inter', sans-serif !important; font-size: 14px !important; line-height: 20px !important; color: #364152 !important; box-shadow: none !important; box-sizing: border-box; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation input::placeholder { color: #afbbc9 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .pure-button { display: inline-flex !important; align-items: center; gap: 4px; background: #fff !important; border: 1px solid #e8ecef !important; border-radius: 6px !important; color: #364152 !important; font-family: 'Inter', sans-serif !important; font-weight: 500 !important; font-size: 14px !important; padding: 8px !important; box-shadow: none !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .pure-button:hover { background: #f6f8f9 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation table { width: 100% !important; border-collapse: collapse !important; font-family: 'Inter', sans-serif !important; font-size: 14px !important; color: #364152 !important; border: 1px solid #e7ebee !important; border-radius: 8px !important; overflow: hidden; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation table th { background: #f6f8f9 !important; text-align: left; font-weight: 500 !important; color: #2b384a !important; padding: 8px 12px !important; border-bottom: 1px solid #e7ebee !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation table td { padding: 8px 12px !important; border-bottom: 1px solid #e7ebee !important; }
/* Google Sheets "Exclude" block → heading + subtitle + stacked box-first checkbox rows; pulled back to the form's left edge (out of the 55px content indent). */
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-aligner { display: block; margin: 24px 0 0 -55px !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .tc-adv-excl-head { display: block; margin: 0 0 8px !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .tc-adv-excl-head b { font-family: 'Inter', sans-serif !important; font-weight: 600 !important; font-size: 20px !important; line-height: 28px !important; color: #364152 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .tc-adv-excl-sub { margin: 0 0 16px !important; font-family: 'Inter', sans-serif !important; font-weight: 400 !important; font-size: 14px !important; line-height: 20px !important; color: #8493a8 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .tc-adv-excl-row { display: flex !important; align-items: center; gap: 8px; margin: 0 0 16px !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .tc-adv-excl-row:last-child { margin-bottom: 0 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .tc-adv-excl-row input[type="checkbox"] { -webkit-appearance: none; appearance: none; width: 20px !important; height: 20px !important; margin: 0 !important; border: 1px solid #d1d7de !important; border-radius: 4px !important; background: #fff !important; cursor: pointer; position: relative; flex: 0 0 auto; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .tc-adv-excl-row input[type="checkbox"]:checked { border-color: #006b70 !important; background: #006b70 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .tc-adv-excl-row input[type="checkbox"]:checked::after { content: ''; position: absolute; left: 6px; top: 2px; width: 5px; height: 10px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .tc-adv-excl-row label { margin: 0 !important; font-family: 'Inter', sans-serif !important; font-weight: 400 !important; font-size: 14px !important; line-height: 20px !important; color: #364152 !important; }
/* Location geo checkbox: the switch rule shoved its checkmark right and tinted it teal. Restore a centered white checkmark. */
.tc-product-stepper[data-step="advanced"] .tc-adv-automation .ui-autoresponder-geo-selector-wrap .checkbox input[type="checkbox"]:checked + label::after {
	content: '' !important; left: 6px !important; top: 3px !important; width: 5px !important; height: 10px !important;
	border: solid #fff !important; border-width: 0 2px 2px 0 !important; border-radius: 0 !important; background: none !important; transform: rotate(45deg) !important;
}

/* Suppress the autoresponder modal flash — it's always drained inline, so an un-drained instance should never be a visible centered modal (scoped to the stepper, any step, since load starts on Details). */
body:has(.tc-product-stepper) .alertify:has(.ui-autoresponder-block):not(.tc-adv-automation) { opacity: 0 !important; pointer-events: none !important; }

/* Committed automation rules → cards (Figma 1574-6868): icon chip + title/description + Edit/Delete icon buttons. */
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-autoresponder-opts { display: flex !important; flex-direction: column; gap: 16px; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-autoresponder-opts > .ui-autoresponder-block { background: #fff !important; border: 1px solid #d1d7de !important; border-radius: 8px !important; padding: 20px 16px !important; margin: 0 !important; box-shadow: none !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-autoresponder-opts .ui-autoresponder-block-description { display: flex !important; align-items: center; gap: 16px; margin: 0 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-autoresponder-opts .ui-autoresponder-block-description::before { content: ''; flex: 0 0 auto; width: 24px; height: 24px; background: url('/static/icons/product-stepper/adv-auto-target.svg') no-repeat center; background-size: 24px; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-autoresponder-opts .generic-list-name { flex: 1 1 auto; display: flex !important; flex-direction: column; gap: 4px; padding-right: 20px; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-autoresponder-opts .generic-list-name > span { font-family: 'Inter', sans-serif !important; font-weight: 500 !important; font-size: 14px !important; line-height: 20px !important; color: #2a3648 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-autoresponder-opts .generic-list-aside { font-family: 'Inter', sans-serif !important; font-weight: 400 !important; font-style: normal !important; font-size: 14px !important; line-height: 20px !important; color: #8493a8 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-autoresponder-opts .generic-list-actions { display: flex !important; gap: 8px; align-items: center; flex: 0 0 auto; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-autoresponder-opts .generic-list-actions .pure-button { font-size: 0 !important; width: 32px; height: 32px; padding: 8px !important; border: 0 !important; border-radius: 8px !important; background-color: transparent !important; background-repeat: no-repeat !important; background-position: center !important; box-shadow: none !important; color: transparent !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-autoresponder-opts .generic-list-actions .button-primary { background-image: url('/static/icons/product-stepper/adv-auto-edit.svg') !important; background-size: 12px 12px !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-autoresponder-opts .generic-list-actions .button-error { background-image: url('/static/icons/product-stepper/adv-auto-delete.svg') !important; background-size: 9.333px 12px !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-autoresponder-opts .generic-list-actions .pure-button:hover { background-color: #f6f8f9 !important; }
/* Hover the whole rule card, not the inner content block (the legacy hover tinted only the description). */
/* "Add Another Automation" button (ID beats the stepper-wide teal .button rule). */
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin #ui-autoresponder-add-list { display: inline-flex; align-items: center; gap: 4px; float: right; background: #fff !important; border: 1px solid #e8ecef !important; border-radius: 6px !important; color: #364152 !important; font-family: 'Inter', sans-serif !important; font-weight: 500 !important; font-size: 14px !important; padding: 8px !important; box-shadow: none !important; margin-top: 16px; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin #ui-autoresponder-add-list:hover { background: #f6f8f9 !important; }
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin #ui-autoresponder-add-list i { color: #364152 !important; }
/* Inter everywhere in the advanced step (icons keep their font). */
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin,
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin h2,
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin h3,
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin p,
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin span:not([class*="fa"]),
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin label,
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin input,
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin select,
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin a { font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important; }

/* ===== TC-12837 product-created Success page (Figma 1574-7343) ===== */
.tc-embed-reskin { font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; color: #364152; max-width: 1216px; margin: 0 auto; }
.tc-embed-reskin, .tc-embed-reskin * { box-sizing: border-box; }
.tc-embed-header { display: flex; align-items: center; padding: 8px 32px; border-bottom: 1px solid #e7ebee; margin: -16px -16px 48px; }
.tc-embed-header .tc-ps-header-inner { display: flex; align-items: center; gap: 40px; width: 100%; padding: 0; }
.tc-embed-header .tc-ps-pagetitle { font-weight: 700; font-size: 16px; line-height: 24px; color: #364152; }
.tc-embed-header .tc-ps-steps { display: flex; gap: 24px; flex-wrap: wrap; }
.tc-embed-header .tc-ps-step { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; color: #8493a8; }
.tc-embed-header .tc-ps-step .tc-ps-step-dot { width: 20px; height: 20px; border-radius: 50%; border: 1.5px solid #d1d7de; flex: 0 0 auto; }
.tc-embed-header .tc-ps-step.is-done .tc-ps-step-dot { -webkit-mask: none; mask: none; background-color: #2f855a; border-color: #2f855a; background-image: url('/static/icons/product-stepper/step-check.svg'); background-repeat: no-repeat; background-position: center; background-size: 11.17px 8.38px; }
.tc-embed-header .tc-ps-step-label { font-weight: 600; }
.tc-embed-header .tc-ps-step.is-done .tc-ps-step-label { color: #364152; }
.tc-embed-header .tc-ps-step:hover .tc-ps-step-label { text-decoration: underline; }
.tc-embed-header .tc-ps-step.is-active .tc-ps-step-label { font-weight: 600; }
.tc-embed-body { max-width: 992px; margin: 0 auto; display: flex; flex-direction: column; gap: 24px; padding: 0 32px; }
.tc-embed-card { background: #fff; border: 1px solid #e8ecef; border-radius: 12px; box-shadow: 0 1px 1px rgba(0,0,0,.05); padding: 24px; }
.tc-embed-success { display: flex; flex-direction: column; gap: 16px; }
.tc-embed-chip { width: 48px; height: 48px; border-radius: 24px; background: #f6f8f9; display: inline-flex; align-items: center; justify-content: center; }
.tc-embed-heads .tc-embed-h { margin: 0 0 8px; font-weight: 600; font-size: 20px; line-height: 28px; color: #364152; }
.tc-embed-heads .tc-embed-sub { margin: 0; font-size: 14px; line-height: 20px; color: #8493a8; }
.tc-embed-urlfield { display: flex; align-items: center; gap: 12px; border: 1px solid #d1d7de; border-radius: 8px; background: #fff; padding: 6px 6px 6px 8px; }
.tc-embed-urlfield .tc-embed-url { flex: 1; min-width: 0; border: 0; background: transparent; font-size: 14px; line-height: 20px; color: #364152; outline: none; padding: 0; font-family: inherit; text-overflow: ellipsis; }
.tc-embed-urlfield:has(.tc-embed-snippet:not([hidden])) { align-items: flex-start; }
.tc-embed-urlfield .tc-embed-snippet { min-height: 88px; resize: vertical; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; line-height: 18px; }
.tc-embed-copy { display: inline-flex; align-items: center; gap: 4px; background: #fff; border: 1px solid #e8ecef; border-radius: 4px; padding: 2px 8px; font-weight: 500; font-size: 14px; color: #2b384a; cursor: pointer; white-space: nowrap; }
.tc-embed-copy i { font-size: 12px; }
.tc-embed-copy-icon { height: 12px; width: auto; flex: 0 0 auto; display: block; }
.tc-embed-cta { display: flex; gap: 12px; justify-content: flex-end; padding-top: 8px; }
.tc-embed-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; border-radius: 8px; padding: 8px 18px; font-weight: 500; font-size: 14px; line-height: 20px; text-decoration: none; cursor: pointer; border: 0; }
.tc-embed-btn-primary { background: #006b70; color: #fff; }
.tc-embed-btn-primary:hover { background: #005a5e; color: #fff; }
.tc-embed-btn-secondary { background: #fff; box-shadow: inset 0 0 0 1px #e8ecef; color: #364152; }
.tc-embed-btn-sm { padding: 8px 12px; border-radius: 6px; line-height: 16px; }
.tc-embed-btn-secondary:hover { background: #f6f8f9; }
.tc-embed-product { display: flex; gap: 16px; align-items: flex-start; }
.tc-embed-product-avatar { flex: 0 0 auto; width: 160px; height: 160px; border-radius: 16px; background: #f6f8f9; display: flex; align-items: center; justify-content: center; }
.tc-embed-product-avatar img { width: 96px; height: 96px; }
.tc-embed-product-info { flex: 1; min-width: 0; }
.tc-embed-product-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.tc-embed-product-title h3 { margin: 0; font-weight: 600; font-size: 16px; line-height: 24px; color: #364152; }
.tc-embed-product-title p { margin: 0; font-size: 14px; line-height: 20px; color: #8493a8; }
.tc-embed-product-actions { display: flex; gap: 8px; flex: 0 0 auto; }
.tc-embed-iconbtn { display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 10px; border: 1px solid #e8ecef; border-radius: 6px; background: #fff; color: #364152; font-size: 14px; font-weight: 500; cursor: pointer; text-decoration: none; }
.tc-embed-iconbtn:hover { background: #f6f8f9; }
.tc-embed-product-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.tc-embed-badge { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 8px; font-size: 12px; font-weight: 500; line-height: 16px; background: #e8ecef; color: #2a3648; }
.tc-embed-badge-status-2 { background: #c6f6d5; color: #364152; }
.tc-embed-badge-status-1 { background: #fff3d6; color: #9a6b00; }
.tc-embed-kebab { position: relative; }
.tc-embed-kebab-toggle { width: 32px; padding: 0; justify-content: center; background: #f6f8f9; border-color: transparent; }
.tc-embed-kebab-menu { position: absolute; right: 0; top: calc(100% + 4px); min-width: 160px; background: #fff; border: 1px solid #e8ecef; border-radius: 8px; box-shadow: 0 4px 16px rgba(0,0,0,.08); padding: 8px; display: none; z-index: 10; }
.tc-embed-kebab.is-open .tc-embed-kebab-menu { display: block; }
.tc-embed-kebab-menu a { display: block; padding: 6px 8px; border-radius: 6px; font-size: 14px; color: #364152; text-decoration: none; }
.tc-embed-kebab-menu a:hover { background: #f6f8f9; }
.tc-embed-kebab-menu .tc-embed-kebab-danger { color: #d64545; }
.tc-embed-section { display: flex; flex-direction: column; gap: 24px; }
.tc-embed-section-head { display: flex; flex-direction: column; gap: 16px; }
.tc-embed-field { display: flex; flex-direction: column; gap: 4px; }
.tc-embed-section-title { margin: 0; font-weight: 600; font-size: 20px; line-height: 28px; color: #364152; }
.tc-embed-banner { display: flex; gap: 8px; align-items: flex-start; padding: 16px; border-radius: 8px; font-size: 14px; line-height: 20px; }
.tc-embed-banner i { font-size: 20px; line-height: 20px; flex: 0 0 auto; }
.tc-embed-banner-icon { width: 20px; height: 20px; flex: 0 0 auto; display: block; }
.tc-embed-banner-warn { background: #ffd5d5; color: #364152; }
.tc-embed-banner-warn i { color: #e5484d; }
.tc-embed-banner-info { background: #bee3f8; color: #364152; }
.tc-embed-reskin .tc-embed-label { margin: 0; padding: 0; font-weight: 500; font-size: 14px; line-height: 20px; color: #2b384a; }
.tc-embed-inline { display: flex; gap: 12px; align-items: flex-end; }
.tc-embed-inline .tc-embed-field { flex: 1 1 0; min-width: 0; }
.tc-embed-input, .tc-embed-select { border: 1px solid #d1d7de; border-radius: 8px; padding: 8px; font-size: 14px; line-height: 20px; color: #364152; background: #fff; font-family: inherit; }
.tc-embed-input { flex: 1; min-width: 0; }
.tc-embed-select { width: 100%; }
.tc-embed-input::placeholder { color: #afbbc9; }
.tc-embed-section-cta { display: flex; justify-content: flex-end; }
.tc-embed-error { color: #d64545; font-size: 13px; display: none; }
.tc-embed-qr-row { display: flex; gap: 24px; align-items: stretch; }
.tc-embed-qr { flex: 1 1 0; min-width: 0; display: flex; align-items: flex-start; gap: 16px; padding: 16px; border-radius: 8px; box-shadow: 0 1px 2px rgba(0,0,0,.05); }
.tc-embed-qr > .tc-embed-qr-label { flex: 1; min-width: 0; }
.tc-embed-qr-label { font-weight: 600; font-size: 16px; line-height: 24px; color: #364152; }
.tc-embed-qr-box { flex: 0 0 auto; width: 160px; height: 160px; background: #f6f8f9; border: 1px solid #e8ecef; border-radius: 8px; display: flex; align-items: center; justify-content: center; }
.tc-embed-qr-img { width: 112px; height: 112px; display: block; }
.tc-embed-qr-ph-icon { width: 96px; height: 96px; display: block; }
.tc-embed-qr-third { display: flex; flex-direction: column; align-items: flex-start; gap: 16px; flex: 1; min-width: 0; }
.tc-embed-qr-third .tc-embed-input { width: 100%; }
.tc-embed-footer { display: flex; justify-content: center; background: #fff; box-shadow: 0 -1px 2px #ececee; margin: 24px -16px -16px; }
.tc-embed-footer-inner { width: 992px; max-width: 100%; margin: 0 auto; display: flex; justify-content: flex-end; }

/* TC-12837 Success page — beat legacy .pure-form input[readonly] (grey bg, border, padding). */
.tc-embed-reskin .tc-embed-body { max-width: 992px !important; padding: 0 !important; gap: 40px; }
.tc-embed-forms { display: flex; flex-direction: column; gap: 64px; padding-top: 24px; }
.tc-embed-reskin .tc-embed-footer { padding: 16px 32px !important; }
.tc-embed-reskin .tc-embed-url { background: transparent !important; border: 0 !important; padding: 0 !important; box-shadow: none !important; height: auto !important; margin: 0 !important; }
.tc-embed-reskin .tc-embed-urlfield { height: 36px; padding: 0 6px 0 8px; }
.tc-embed-reskin .tc-embed-input, .tc-embed-reskin .tc-embed-select { background-color: #fff !important; border: 1px solid #d1d7de !important; box-shadow: none !important; height: 36px !important; margin: 0 !important; padding: 8px !important; border-radius: 8px !important; font-size: 14px !important; line-height: 20px !important; box-sizing: border-box !important; }
.tc-embed-reskin select.tc-embed-select { padding: 8px 32px 8px 8px !important; -webkit-appearance: none; appearance: none; background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'><path d='M4 6l4 4 4-4' stroke='%23364152' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>"); background-repeat: no-repeat; background-position: right 8px center; background-size: 16px; }
.tc-embed-reskin select.tc-embed-select { -webkit-appearance: none; -moz-appearance: none; appearance: none; padding-right: 34px !important; background-image: url('/static/icons/product-embed/chevron.svg'); background-repeat: no-repeat; background-position: right 14px center; background-size: 8px 5px; }
.tc-embed-reskin .tc-embed-copy { border: 0 !important; background: transparent !important; }
.tc-embed-reskin .tc-embed-copy:hover { background: #f6f8f9 !important; }

/* TC-12837 Success page — mobile (393px). Data + actions drop below the header, QR cards stack. */
@media (max-width: 767px) {
	/* Clear the fixed 56px top bar and stack the title over a swipeable step rail (mirrors the stepper header). */
	/* The mobile page container has no side padding, so the page brings its own 16px gutter. */
	.tc-embed-reskin { padding: 56px 16px 0; }
	.tc-embed-header { position: static; margin: 0 -16px 24px; padding: 12px 16px; background: #fff; }
	.tc-embed-header .tc-ps-header-inner { flex-direction: column; align-items: stretch; gap: 12px; }
	.tc-embed-header .tc-ps-steps { flex-wrap: nowrap; overflow-x: auto; gap: 16px; width: 100%; padding-bottom: 2px; scrollbar-width: none; }
	.tc-embed-header .tc-ps-steps::-webkit-scrollbar { display: none; }
	.tc-embed-header .tc-ps-step { flex: 0 0 auto; }

	.tc-embed-product-avatar { width: 104px; height: 104px; }
	.tc-embed-product-avatar img { width: 64px; height: 64px; }

	/* Avatar + title/tags share the top row; the divider, data rows and actions span the full card below. */
	.tc-embed-product { display: grid; grid-template-columns: 104px 1fr; column-gap: 16px; align-items: start; }
	.tc-embed-product-avatar { grid-column: 1; grid-row: 1 / 3; }
	.tc-embed-product-info { display: contents; }
	.tc-embed-product-top { display: contents; }
	.tc-embed-product-title { grid-column: 2; grid-row: 1; }
	.tc-embed-product-tags { grid-column: 2; grid-row: 2; margin-top: 8px; align-self: start; }
	.tc-embed-product-actions { grid-column: 1 / -1; grid-row: 4; margin-top: 16px; }

	.tc-embed-qr-row { flex-direction: column; }

	.tc-embed-cta, .tc-embed-section-cta { justify-content: flex-start; }
}

/* ==============================================================
   TC-12837 — product creation flow, mobile (native app feel).
   Scoped to .tc-product-stepper; desktop is untouched.
   ============================================================== */
/* Pricing-option bottom sheet — the injected sheet chrome (grip/header/footer/
   scrim) only exists on mobile; hide it on desktop, where the editor stays inline. */
.tc-ps-sheet-grip,
.tc-ps-sheet-head,
.tc-ps-sheet-foot,
.tc-ps-sheet-scrim { display: none; }

@media (max-width: 767px) {
	/* Clear the fixed 56px top bar: the .root-app clearance misses this page, so reserve it on the stepper and stick the header under the bar. */
	.tc-product-stepper { padding-top: 56px; min-height: calc(100vh - 56px); } /* subtract the reserved bar so 100vh doesn't overflow (content-box) */
	.tc-product-stepper .tc-ps-header { top: 56px; }

	/* Hide the top bar on scroll-down / reveal on scroll-up; the header rises to top:0 to fill the gap. */
	body:has(.tc-product-stepper) .tc-mnav-topbar { transition: transform .25s ease; }
	.tc-product-stepper .tc-ps-header { transition: top .25s ease; }
	body.tc-ps-topbar-hidden:has(.tc-product-stepper) .tc-mnav-topbar { transform: translateY(-100%); }
	body.tc-ps-topbar-hidden .tc-product-stepper .tc-ps-header { top: 0; }

	/* Header: title stacked over a swipeable step rail (gap 16, padding 16). */
	.tc-product-stepper .tc-ps-header-inner {
		flex-direction: column;
		align-items: stretch;
		gap: 16px;
		padding: 16px;
	}
	.tc-product-stepper .tc-ps-titlearea { flex: 0 0 auto; }

	/* Mobile stepper is just the step rail — no separate progress bar / step count. */
	.tc-product-stepper .tc-ps-mobilebar { display: none; }
	.tc-product-stepper .tc-ps-mmeta { display: flex; align-items: baseline; justify-content: space-between; }
	.tc-product-stepper .tc-ps-mnow { font-size: 15px; font-weight: 700; color: var(--tcps-text); }
	.tc-product-stepper .tc-ps-mcount { font-size: 12px; color: var(--tcps-text-light); font-variant-numeric: tabular-nums; }
	.tc-product-stepper .tc-ps-mtrack { height: 4px; border-radius: 999px; background: var(--tcps-border-secondary); overflow: hidden; }
	.tc-product-stepper .tc-ps-mtrack > i { display: block; height: 100%; width: 12.5%; background: linear-gradient(90deg, var(--tcps-primary), var(--tcps-primary-hover)); border-radius: 999px; transition: width .4s cubic-bezier(.22,1,.36,1); }

	/* Steps → horizontally scrollable rail (kill the fixed widths); plain dot + label — no pills. */
	.tc-product-stepper .tc-ps-steps {
		height: auto;
		gap: 16px;
		width: 100%;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
		padding-bottom: 2px;
		scrollbar-width: none;
	}
	.tc-product-stepper .tc-ps-steps::-webkit-scrollbar { display: none; }
	.tc-product-stepper .tc-ps-steps .tc-ps-step {
		width: auto !important;
		flex: 0 0 auto;
		overflow: visible;
	}

	/* Mobile: icon chip on top, title+description stacked; `label.` matches the global icon-left rule's specificity so flex-start wins. */
	.tc-product-stepper label.tc-ps-typecard {
		display: flex;
		flex-direction: column;
		align-items: flex-start;
		gap: 10px;
	}
	.tc-product-stepper .tc-ps-typecard-body { align-items: flex-start; text-align: left; }
	.tc-product-stepper .tc-ps-typecard-desc { overflow-wrap: normal; word-break: normal; }
	/* A legacy `.pure-form-stacked label span { display:block }` (≤469px) flattened the icon wrapper, killing its flex centering (glyph fell to top-left) — outspecify it so the glyph stays centred in the circle. */
	.tc-product-stepper .tc-ps-typecard .tc-ps-typecard-icon { display: flex; align-items: center; justify-content: center; }
	.tc-product-stepper .tc-ps-typecard-icon::before { display: block; }

	/* Pricing option cards (One-Time / Subscription): same icon-top treatment. */
	.tc-product-stepper .tc-ps-pricecards { gap: 10px; }
	.tc-product-stepper .tc-ps-pricecard { flex-direction: column; align-items: flex-start; gap: 10px; flex: 1 1 0; min-width: 0; }
	.tc-product-stepper .tc-ps-pricecard-body { align-items: flex-start; text-align: left; min-width: 0; }
	.tc-product-stepper .tc-ps-pricecard-desc { overflow-wrap: normal; word-break: normal; }
	.tc-product-stepper .tc-ps-pricecard .tc-ps-pricecard-icon { display: flex; align-items: center; justify-content: center; }
	.tc-product-stepper .tc-ps-pricecard-icon::before { display: block; }

	/* Checkout template previews shouldn't exceed their card. */
	.tc-product-stepper [class*="template-v2-preview"] { max-width: 100%; }

	/* Payment-processor rows: wrap the description onto its own full-width line
	   instead of squeezing it into a collapsed column. */
	.tc-product-stepper .ui-payment-opts-launcher { flex-wrap: wrap; align-items: center; gap: 8px 12px; }
	.tc-product-stepper .ui-payment-opts-description { flex: 1 1 100%; width: 100%; }

	/* Section-header rows (.ui-title): drop the right-aligned action onto its own
	   full-width line instead of overflowing off-screen. Keeps the icon inline. */
	.tc-product-stepper .ui-title { flex-wrap: wrap; }
	.tc-product-stepper .ui-title .pull-right,
	.tc-product-stepper .ui-title .pure-controls { float: none; flex: 1 1 100%; width: 100%; margin-top: 8px; }

	/* Body: single column, full-width fields, comfortable padding. */
	.tc-product-stepper .tc-ps-body-inner { padding: 16px 16px 96px; max-width: 100%; overflow-x: clip; }
	.tc-product-stepper [class*="pure-u-"] { width: 100% !important; margin-left: 0 !important; margin-right: 0 !important; }
	.tc-product-stepper .pure-g { display: block !important; margin-left: 0 !important; margin-right: 0 !important; }
	/* Every two-up field row → single column (mockup is one column throughout). */
	.tc-product-stepper .tc-ps-field-half-group { flex-direction: column !important; align-items: stretch !important; gap: 16px; }
	.tc-product-stepper .tc-ps-field-half { width: 100% !important; max-width: 100% !important; flex: 1 1 100% !important; }
	.tc-product-stepper input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
	.tc-product-stepper select,
	.tc-product-stepper textarea {
		width: 100% !important;
		min-height: 36px;
		font-size: 14px !important; /* page sets user-scalable=no, so 14px is safe from iOS zoom-on-focus */
	}
	/* Text inputs are p8; the shared body:has rule uses 8px 12px, so match its specificity to win on mobile. Selects keep their own chevron padding. */
	body:has(.tc-product-stepper) .tc-product-stepper input[type="text"],
	body:has(.tc-product-stepper) .tc-product-stepper input[type="email"],
	body:has(.tc-product-stepper) .tc-product-stepper input[type="url"],
	body:has(.tc-product-stepper) .tc-product-stepper input[type="tel"],
	body:has(.tc-product-stepper) .tc-product-stepper input[type="number"],
	body:has(.tc-product-stepper) .tc-product-stepper input[type="password"],
	body:has(.tc-product-stepper) .tc-product-stepper textarea { padding: 8px !important; }

	/* Type-picker cards: keep labels on one line, don't break mid-word. */
	.tc-product-stepper .tc-ps-body-inner .ui-choose-product-type-option strong,
	.tc-product-stepper .tc-ps-body-inner label { overflow-wrap: normal; word-break: normal; }

	/* Hide the app's global mobile tab bar during the focused creation flow
	   (native pattern) so it doesn't cover the stepper's Back/Next bar. */
	body:has(.tc-product-stepper) #tc-mnav-tabbar { display: none; }

	/* Footer: pinned thumb bar at the true viewport bottom, big targets, safe-area. */
	.tc-product-stepper .tc-ps-footer {
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 30;
	}
	.tc-product-stepper .tc-ps-footer-inner {
		height: auto;
		padding: 16px 16px calc(16px + env(safe-area-inset-bottom));
		justify-content: flex-start;
		gap: 8px;
	}
	/* Compact small buttons — Back (ghost) left, primary actions right. */
	.tc-product-stepper .tc-ps-footer .tc-ps-btn {
		flex: 0 0 auto;
		width: auto;
		height: auto;
		min-height: 32px;
		padding: 8px 12px;
		border-radius: 6px;
		font-size: 14px;
		line-height: 16px;
	}
	.tc-product-stepper .tc-ps-footer .tc-ps-nav-back { margin-right: auto; }

	/* Pricing-option bottom sheet: re-home the inline editor as a sheet pinned above
	   the sticky header, over a scrim. Same DOM/fields, so save is unchanged. */
	.tc-product-stepper .tc-ps-sheet {
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		top: auto;
		/* Above app toggles: .checkbox.check-success carry z-index:999 in the same
		   stacking context, so a lower sheet would let them paint on top of it. */
		z-index: 1001;
		margin: 0;
		padding: 0;
		max-height: 92vh;
		background: var(--tcps-panel);
		border-radius: 20px 20px 0 0;
		box-shadow: 0 -12px 40px rgba(16, 24, 40, .28);
		display: flex;
		flex-direction: column;
		transform: translateY(100%);
		transition: transform .34s cubic-bezier(.22, 1, .36, 1);
		will-change: transform;
	}
	.tc-product-stepper .tc-ps-sheet.tc-ps-sheet-open { transform: translateY(0); }
	/* The editor also carries the drain class, whose base rule pins it static/block with
	   !important; re-beat just those two props so the sheet can leave the flow. */
	.tc-product-stepper .tc-ps-pricing-inline.tc-ps-sheet { position: fixed !important; display: flex !important; }

	/* Pricing/bump editors drive save via their own add button, so their drained
	   alertify footer stays hidden; the automation editor (below) shows its own footer inline. */
	.tc-product-stepper .tc-ps-sheet .ajs-footer { display: none !important; }
	/* Automation editor renders inline, not a sheet — show its own Cancel / Create and Add Automation footer. */
	.tc-product-stepper[data-step="advanced"] .tc-ps-sheet .tc-adv-automation .ajs-footer { display: flex !important; }

	/* The automation reskin zeroes .ajs-content padding (it spaces its own desktop
	   modal), so in the sheet the content bleeds to the edge. Inset the scroll region
	   instead — grip/header/footer sit outside .alertify and keep their own padding. */
	.tc-product-stepper[data-step="advanced"] .tc-ps-sheet > .alertify { padding-left: 16px !important; padding-right: 16px !important; }

	/* Pricing sheet: the pricing-inline reskin zeroes .ajs-content padding, so inset the .alertify scroll region instead. */
	.tc-product-stepper[data-step="pricing"] .tc-ps-sheet > .alertify { padding-left: 16px !important; padding-right: 16px !important; }

	/* Pricing/advanced editors render INLINE, not a bottom sheet: neutralise the
	   fixed sheet positioning + injected chrome/scrim; the desktop-inline .tc-ps-form-add
	   / .ajs footer already drives save, so no proxy needed. */
	.tc-product-stepper .tc-ps-sheet,
	.tc-product-stepper .tc-ps-pricing-inline.tc-ps-sheet {
		position: static !important;
		transform: none !important;
		max-height: none !important;
		box-shadow: none !important;
		border-radius: 0 !important;
		z-index: auto !important;
		background: transparent !important;
		overflow: visible !important;
	}
	.tc-product-stepper .tc-ps-sheet .tc-ps-sheet-grip,
	.tc-product-stepper .tc-ps-sheet .tc-ps-sheet-head,
	.tc-product-stepper .tc-ps-sheet .tc-ps-sheet-foot { display: none !important; }
	body:has(.tc-product-stepper) .tc-ps-sheet-scrim { display: none !important; }
	/* Focus: while editing/adding a pricing option, hide the saved-options list so only the editor form shows. */
	#ui-product-settings-tab-settings-options-pricing.tc-ps-editing #ui-payment_plans-list,
	#ui-product-settings-tab-settings-options-pricing.tc-ps-editing #ui-payment_plans-wrapper > .text-align-right { display: none !important; }

	/* Same focus for the advanced automations editor: while it's open, hide the tracking-scripts section + the rules list so only the editor shows. */
	#ui-product-settings-tab-behavior:has(.tc-adv-automation-mount.tc-ps-sheet-open) .tc-adv-tracking-mount,
	#ui-product-settings-tab-behavior:has(.tc-adv-automation-mount.tc-ps-sheet-open) .ui-autoresponder-opts { display: none !important; }

	/* Empty pricing on mobile: show the Add button instead of auto-opening the sheet (fixes popup-on-entry + cancel-reopen). */
	#ui-product-settings-tab-settings-options-pricing.tc-ps-empty .tc-ps-add-btn { display: flex !important; }
	/* Hide the form's teal add in the empty state, else two Add buttons show. */
	#ui-product-settings-tab-settings-options-pricing.tc-ps-empty .tc-ps-form-add { display: none !important; }
	/* The empty-state Add carries the form-state primary look — solid teal, white text/icon, left-aligned — while keeping the safe click-to-open behaviour. */
	#ui-product-settings-tab-settings-options-pricing.tc-ps-empty .tc-ps-add-btn {
		align-self: flex-start !important;
		margin: 8px 0 0 !important;
		background: #006b70 !important;
		border-color: #006b70 !important;
		color: #ffffff !important;
	}
	#ui-product-settings-tab-settings-options-pricing.tc-ps-empty .tc-ps-add-btn .fa-plus { color: #ffffff !important; }

	/* At 393px the drag handle + wide "Make preferred" button crush the name to ~20px — drop the handle (touch-reorder is impractical) and shrink Make-preferred to a star icon-button so title/price get the width. */
	.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .generic-list-drag { display: none !important; }
	.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .ui-payment_plans-list-action-prefer {
		width: 32px !important;
		height: 32px !important;
		padding: 0 !important;
		margin: 0 !important;
		border: 0 !important;
		border-radius: 8px !important;
		background-color: transparent !important;
		color: transparent !important;
		font-size: 0 !important;
		background-image: url('/static/icons/product-stepper/star.svg') !important;
		background-size: 16px 16px !important;
		background-repeat: no-repeat !important;
		background-position: center !important;
	}
	.tc-product-stepper[data-step="pricing"] #ui-payment_plans-list .ui-payment_plans-list-action-prefer:hover { background-color: #f6f8f9 !important; }

	/* Processor "Set up X" modals: stack the choice cards and fit the dialog to the viewport (scoped to .ui-payment-opts so the sheets are untouched). */
	body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-radio-tabs { flex-direction: column !important; }
	/* Base CSS pins cards to 50% + side margins for the desktop row; stacked they must fill the column and align flush. */
	body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-radio { width: auto !important; margin: 0 !important; }
	body:has(.tc-product-stepper) .alertify:has(.ui-payment-opts) .ajs-dialog {
		width: calc(100vw - 24px) !important;
		max-width: calc(100vw - 24px) !important;
	}
	/* The selected option's detail (.ui-paypal-setup / .ui-stripe-setup) is desktop-sized and overflows; constrain the subtree so text wraps. */
	body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-radio-content { overflow-x: clip; }
	body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-radio-content .ui-paypal-setup,
	body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-radio-content .ui-paypal-setup-ul,
	body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-radio-content .ui-paypal-setup li,
	body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-radio-content .ui-stripe-setup,
	body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-radio-content .ui-stripe-setup-ul,
	body:has(.tc-product-stepper) .ajs-content .ui-payment-opts-radio-content .ui-stripe-setup li {
		width: 100% !important;
		max-width: 100% !important;
		box-sizing: border-box !important;
	}

	/* Template preview froze (absolute + taller than viewport, scroll locked): make it a fixed scrollable overlay with a pinned close; hide the top bar so it can't cover the close. */
	body:has(.tc-gallery-page .ui-designer-remote_gallery-preview.active) .tc-mnav-topbar { display: none !important; }
	.tc-product-stepper .tc-gallery-page .ajs-modal { transform: none !important; }
	.tc-product-stepper .tc-gallery-page .ui-designer-remote_gallery-preview.active {
		position: fixed !important;
		top: 0 !important; right: 0 !important; bottom: 0 !important; left: 0 !important;
		z-index: 2000 !important;
		display: block !important;
		overflow-y: auto !important;
		-webkit-overflow-scrolling: touch;
		background: #ffffff !important;
		border: 0 !important;
	}
	.tc-product-stepper .tc-gallery-page .ui-designer-remote_gallery-preview-close.active {
		position: fixed !important;
		top: 12px !important; right: 12px !important; left: auto !important;
		z-index: 2001 !important;
		transform: scale(1) !important;
	}

	/* The automation modal is a desktop connector/timeline layout: the action content
	   is indented (margin-left) with a left gutter for connector graphics. Flatten it
	   for the phone so the sentence-builder aligns to the single column. */
	.tc-product-stepper[data-step="advanced"] .tc-ps-sheet .ui-autoresponder-content { margin-left: 0 !important; }
	.tc-product-stepper[data-step="advanced"] .tc-ps-sheet .ui-autoresponder-list { margin-left: 0 !important; }
	.tc-product-stepper[data-step="advanced"] .tc-ps-sheet .ui-autoresponder-icon { display: none !important; }

	/* Bumps: the composite editor pieces (type cards + drained fields + add button) are
	   siblings in the Bump Products section, so the whole section becomes the sheet and
	   scrolls internally with sticky chrome — no node moves, desktop DOM untouched. */
	.tc-product-stepper[data-step="bumps"] .tc-bump-sheet {
		overflow-y: auto;
		/* Clip x-overflow so a wide .hint tooltip can't cause a phantom x-scroll (computes to hidden with overflow-y:auto; y-scroll kept). */
		overflow-x: clip;
		-webkit-overflow-scrolling: touch;
		overscroll-behavior: contain;
	}
	.tc-product-stepper[data-step="bumps"] .tc-bump-sheet .tc-ps-sheet-grip,
	.tc-product-stepper[data-step="bumps"] .tc-bump-sheet .tc-ps-sheet-head {
		position: sticky;
		top: 0;
		z-index: 2;
		background: var(--tcps-panel);
	}
	.tc-product-stepper[data-step="bumps"] .tc-bump-sheet .tc-ps-sheet-foot {
		position: sticky;
		bottom: 0;
		z-index: 2;
	}
	/* Editors render inline — the old sheet/modal paddings doubled the page's 16px gutter to 48px.
	   Buttons keep their own padding (zeroing it ran the label edge-to-edge). */
	.tc-product-stepper[data-step="bumps"] .tc-bump-sheet > *:not(.tc-ps-sheet-grip):not(.tc-ps-sheet-head):not(.tc-ps-sheet-foot):not(button) {
		padding-left: 0;
		padding-right: 0;
	}
	.tc-product-stepper[data-step="bumps"] .tc-modal-create-or-edit-bump .ui-bump-edit-form {
		padding-left: 0;
		padding-right: 0;
	}
	/* The rule form ships a 65px desktop-modal centring pad; rows span the page inline. */
	.tc-product-stepper[data-step="bumps"] .ui-bump-visibility-rule-form {
		padding-left: 0 !important;
		padding-right: 0 !important;
	}
	/* Redundant section title + inline add/cancel hidden (the sheet header Cancel and
	   pinned footer proxy them). */
	.tc-product-stepper[data-step="bumps"] .tc-bump-sheet .tc-bump-title,
	.tc-product-stepper[data-step="bumps"] .tc-bump-sheet .tc-bump-form-add,
	.tc-product-stepper[data-step="bumps"] .tc-bump-sheet .tc-bump-rules-cancel { display: none; }

	/* Editors render INLINE, not as a bottom sheet: neutralise the fixed sheet
	   positioning + injected chrome/scrim, and restore the section's own title + buttons. */
	.tc-product-stepper[data-step="bumps"] .tc-bump-sheet {
		position: static !important;
		transform: none !important;
		max-height: none !important;
		box-shadow: none !important;
		border-radius: 0 !important;
		z-index: auto !important;
		background: transparent !important;
		overflow: visible !important;
	}
	.tc-product-stepper[data-step="bumps"] .tc-bump-sheet .tc-ps-sheet-grip,
	.tc-product-stepper[data-step="bumps"] .tc-bump-sheet .tc-ps-sheet-head,
	.tc-product-stepper[data-step="bumps"] .tc-bump-sheet .tc-ps-sheet-foot { display: none !important; }
	body:has(.tc-product-stepper[data-step="bumps"]) .tc-ps-sheet-scrim { display: none !important; }
	.tc-product-stepper[data-step="bumps"] .tc-bump-sheet .tc-bump-title { display: block !important; }
	.tc-product-stepper[data-step="bumps"] .tc-bump-sheet .tc-bump-rules-cancel,
	.tc-product-stepper[data-step="bumps"] .tc-bump-sheet .tc-bump-rules-form-add,
	.tc-product-stepper[data-step="bumps"] .tc-bump-sheet .tc-bump-form-add { display: inline-flex !important; }
	/* Mobile: the create/add CTAs sit left, matching the stacked-field layout. */
	.tc-product-stepper[data-step="bumps"] .tc-bump-form-add,
	.tc-product-stepper[data-step="bumps"] .tc-bump-add-another-rule { align-self: flex-start; }
	/* Focused editor: while a bump section is being edited, hide the sibling section so the inline editor stands alone. */
	.tc-product-stepper[data-step="bumps"]:has(.tc-bump-section.tc-bump-sheet) .tc-bump-section:not(.tc-bump-sheet) { display: none !important; }

	/* Checkout gallery: desktop lays it out as a fixed 2-col grid (190px category rail +
	   templates), which squeezes the templates to a sliver on a phone. Stack the pieces
	   (each spans the full grid row) — category as wrapping pills, templates 2-up. */
	.tc-product-stepper .tc-gallery-page .ui-designer-remote_gallery-filters,
	.tc-product-stepper .tc-gallery-page .ui-designer-remote_import-step {
		grid-column: 1 / -1 !important;
		width: auto !important;
	}
	/* Mobile swaps the chip rail for a plain select. */
	.tc-product-stepper .tc-gallery-page .ui-designer-remote_gallery-filters { display: none !important; }
	.tc-product-stepper .tc-gallery-page .tc-gallery-filter-select {
		display: block;
		grid-column: 1 / -1;
		width: 100%;
		height: 40px;
		padding: 8px 34px 8px 12px;
		border: 1px solid #d1d7de;
		border-radius: 8px;
		background-color: #ffffff;
		font-family: 'Inter', sans-serif;
		font-size: 14px;
		line-height: 20px;
		color: #364152;
		-webkit-appearance: none;
		appearance: none;
		background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'><path d='M4 6l4 4 4-4' stroke='%23364152' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
		background-repeat: no-repeat;
		background-position: right 12px center;
		background-size: 16px;
	}
	.tc-product-stepper .tc-gallery-page .ui-designer-remote_gallery-grid {
		grid-template-columns: 1fr !important;
		gap: 12px !important;
	}
	/* Legacy tab lays cards straight into the pane grid (the inner grid is display:contents) — single column on phones. */
	body:has(.tc-product-stepper) .tc-gallery-page .minitabs-pane:has(.templates-legacy) { grid-template-columns: 1fr; }
	/* Tile controls stay compact, side by side on the left. */
	.tc-product-stepper .tc-gallery-page .ui-designer-remote_gallery-item-controls { gap: 8px !important; justify-content: flex-start !important; }
	.tc-product-stepper .tc-gallery-page .ui-designer-remote_gallery-item-control {
		flex: 0 0 auto !important;
		padding: 8px 12px !important;
		font-size: 14px !important;
		line-height: 16px !important;
		border-radius: 6px !important;
		text-align: center;
	}

	/* Grip handle. */
	.tc-product-stepper .tc-ps-sheet-grip {
		display: flex;
		flex: 0 0 auto;
		justify-content: center;
		padding: 8px 0 4px;
		touch-action: none;
	}
	.tc-product-stepper .tc-ps-sheet-grip::before {
		content: '';
		width: 40px;
		height: 5px;
		border-radius: 999px;
		background: var(--tcps-border);
	}

	/* Sheet header: title + Cancel (close). */
	.tc-product-stepper .tc-ps-sheet-head {
		display: flex;
		flex: 0 0 auto;
		align-items: center;
		justify-content: space-between;
		gap: 12px;
		padding: 2px 16px 12px;
		border-bottom: 1px solid var(--tcps-border-secondary);
	}
	.tc-product-stepper .tc-ps-sheet-head-title { font-size: 16px; font-weight: 700; color: var(--tcps-text); }
	.tc-product-stepper .tc-ps-sheet-head-cancel {
		font-size: 14px;
		line-height: 20px;
		color: var(--tcps-primary);
		background: none;
		border: 0;
		padding: 4px 2px;
		cursor: pointer;
	}

	/* The drained .alertify is the sheet's single scroll region (making it the scroller
	   avoids depending on the whole nested flex chain resolving). */
	.tc-product-stepper .tc-ps-sheet > .alertify {
		flex: 1 1 auto;
		min-height: 0;
		width: auto;
		max-width: none;
		margin: 0;
		box-shadow: none;
		overflow-y: auto;
		-webkit-overflow-scrolling: touch;
		overscroll-behavior: contain;
	}
	.tc-product-stepper .tc-ps-sheet .ajs-content { padding: 16px; }

	/* Pinned sheet footer (the alertify one is display:none in the reskin). */
	.tc-product-stepper .tc-ps-sheet-foot {
		display: flex;
		flex: 0 0 auto;
		gap: 12px;
		padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
		border-top: 1px solid var(--tcps-border-secondary);
		background: var(--tcps-panel);
	}
	.tc-product-stepper .tc-ps-sheet-done {
		flex: 1 1 auto;
		min-height: 48px;
		border: 0;
		border-radius: 12px;
		background: var(--tcps-primary);
		color: #fff;
		font-size: 16px;
		font-weight: 600;
		cursor: pointer;
	}

	/* Scrim behind the sheet. */
	.tc-ps-sheet-scrim {
		display: block;
		position: fixed;
		inset: 0;
		z-index: 1000;
		background: rgba(16, 24, 40, .45);
		opacity: 0;
		pointer-events: none;
		transition: opacity .3s ease;
	}
	.tc-ps-sheet-scrim.tc-ps-sheet-open { opacity: 1; pointer-events: auto; }

	/* Mobile page-editor warning gate (injected by tcpsMobileEditorGate). */
	.tc-ps-gate {
		/* The gate is appended to <body>, outside .tc-product-stepper — redeclare these vars or the panel background is transparent. */
		--tcps-panel: #ffffff;
		--tcps-text: #364152;
		--tcps-text-light: #8493a8;
		--tcps-bg-secondary: #e8ecef;
		--tcps-border: #d1d7de;
		--tcps-primary: #006b70;
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 1001;
		background: var(--tcps-panel);
		border-radius: 20px 20px 0 0;
		box-shadow: 0 -12px 40px rgba(16, 24, 40, .28);
		padding: 0 20px calc(20px + env(safe-area-inset-bottom));
		transform: translateY(100%);
		transition: transform .34s cubic-bezier(.22, 1, .36, 1);
	}
	.tc-ps-gate.tc-ps-gate-open { transform: translateY(0); }
	.tc-ps-gate .tc-ps-sheet-grip { display: flex; justify-content: center; padding: 8px 0 4px; }
	.tc-ps-gate .tc-ps-sheet-grip::before { content: ''; width: 40px; height: 5px; border-radius: 999px; background: var(--tcps-border); }
	.tc-ps-gate-title { font-size: 18px; font-weight: 700; color: var(--tcps-text); margin: 8px 0; }
	.tc-ps-gate-msg { font-size: 15px; line-height: 1.5; color: var(--tcps-text-light); margin: 0 0 20px; }
	.tc-ps-gate-actions { display: flex; gap: 12px; }
	.tc-ps-gate-actions button { flex: 1 1 0; min-height: 48px; border-radius: 12px; font-size: 15px; font-weight: 600; cursor: pointer; }
	.tc-ps-gate-cancel { background: var(--tcps-bg-secondary); color: var(--tcps-text); border: 0; }
	.tc-ps-gate-continue { background: var(--tcps-primary); color: #fff; border: 0; }
	/* While the gate is open, hide the stepper's sticky footer so its Back/Next don't
	   collide with the gate's actions (the footer outstacks the body-level gate). */
	body.tc-ps-gate-active .tc-product-stepper .tc-ps-footer { display: none; }
}

@media (max-width: 767px) and (prefers-reduced-motion: reduce) {
	.tc-product-stepper .tc-ps-sheet,
	.tc-ps-sheet-scrim,
	body:has(.tc-product-stepper) .tc-mnav-topbar,
	.tc-product-stepper .tc-ps-header { transition: none; }
}

/* ===== TC-12837 Affiliates step: summary reskin + layout fixes ===== */
/* Commission/Options summary — reskin the legacy product-name headline + grey meta. */
.tc-product-stepper[data-step="affiliates"] .generic-list-name,
.tc-product-stepper[data-step="affiliates"] h2 > span {
	font-weight: 500 !important; font-size: 14px !important; line-height: 20px !important; color: #2a3648 !important; letter-spacing: normal !important;
}
.tc-product-stepper[data-step="affiliates"] .generic-list-aside,
.tc-product-stepper[data-step="affiliates"] .generic-list-aside a,
.tc-product-stepper[data-step="affiliates"] .generic-list-aside em,
.tc-product-stepper[data-step="affiliates"] .empty-state p,
.tc-product-stepper[data-step="affiliates"] .empty-state li,
.tc-product-stepper[data-step="affiliates"] .empty-state ul li {
	font-size: 14px !important; line-height: 20px !important; color: #8493a8 !important; letter-spacing: normal !important;
}
/* Section summary boxes — reskin the legacy bordered card. */
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .empty-state:not(.hidden),
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .product-listing-widget-inner-card {
	background: #fff !important; border: 1px solid #e8ecef !important; border-radius: 8px !important; padding: 16px !important;
}
/* Commission fields align flush-left with the fields above (kill the ~6px Pure-grid indent). */
.tc-product-stepper[data-step="affiliates"] .ui-affiliate-commission_type-opts > .row:first-child { padding-left: 0 !important; }
.tc-product-stepper[data-step="affiliates"] .ui-affiliate-commission_type-opts > .row:last-child { padding-right: 0 !important; }
/* Space the bottom live-mode note from the Edit button above it. */
.tc-product-stepper[data-step="affiliates"] .tc-aff-reskin .callout.callout-info { margin-top: 24px !important; }
/* Commission summary -> reskin card; bold labels stay dark (only the description is muted). */
.tc-product-stepper[data-step="affiliates"] .ui-payment_plans-multi-commissions-all:has(> .generic-list-row) {
	background: #fff !important; border: 1px solid #e8ecef !important; border-radius: 8px !important; padding: 16px !important;
}
.tc-product-stepper[data-step="affiliates"] .generic-list-aside b,
.tc-product-stepper[data-step="affiliates"] .generic-list-aside strong,
.tc-product-stepper[data-step="affiliates"] .empty-state b,
.tc-product-stepper[data-step="affiliates"] .empty-state strong {
	color: #2a3648 !important; font-weight: 600 !important;
}
/* Commission summary: kill the legacy list-row border + hover so the card isn't nested/double-boxed. */
.tc-product-stepper[data-step="affiliates"] .ui-payment_plans-multi-commissions-all:has(> .generic-list-row) .generic-list-row,
.tc-product-stepper[data-step="affiliates"] .ui-payment_plans-multi-commissions-all:has(> .generic-list-row) .generic-list-row:hover {
	border: 0 !important; background: transparent !important; box-shadow: none !important; padding: 0 !important;
}
/* Section header icons (% Commissions / gear Options) -> reskin colour instead of legacy grey #555459. */
.tc-product-stepper[data-step="affiliates"] h2 > i.fa,
.tc-product-stepper[data-step="affiliates"] h3 > i.fa {
	color: #2a3648 !important;
}
/* Automation card: clear the inner list-row border + hover so hovering the content doesn't box it (the outer card is the boundary). */
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-autoresponder-opts .ui-autoresponder-block-description,
.tc-product-stepper[data-step="advanced"] .tc-adv-reskin .ui-autoresponder-opts .ui-autoresponder-block-description:hover {
	border: 0 !important; background: transparent !important; box-shadow: none !important;
}

/* TC-12837 — shipping-rate modal: labels wrap to different heights ("Available to the
   following locations" is two lines), so grow the label and bottom-align each row's inputs. */
html.tc-ps-reskin .alertify .ajs-dialog.tc-modal-shipping .ui-input-group .pure-u-1-2 { display: flex; flex-direction: column; box-sizing: border-box; }
html.tc-ps-reskin .alertify .ajs-dialog.tc-modal-shipping .ui-input-group .pure-u-1-2 > label { flex: 1 0 auto; }
html.tc-ps-reskin .alertify .ajs-dialog.tc-modal-shipping .ui-input-group .pure-u-1-2 > .row { display: flex; flex-direction: column; flex: 1 0 auto; }
html.tc-ps-reskin .alertify .ajs-dialog.tc-modal-shipping .ui-input-group .pure-u-1-2 > .row > label { flex: 1 0 auto; }
@media (max-width: 767px) {
	html.tc-ps-reskin .alertify .ajs-dialog.tc-modal-shipping .ui-input-group .pure-u-1-2:nth-child(odd) { padding-right: 8px; }
	html.tc-ps-reskin .alertify .ajs-dialog.tc-modal-shipping .ui-input-group .pure-u-1-2:nth-child(even) { padding-left: 8px; }
	html.tc-ps-reskin .alertify .ajs-dialog.tc-modal-shipping .input-pill > input { margin-top: 0; margin-bottom: 0; }
	html.tc-ps-reskin .alertify .ajs-dialog.tc-modal-shipping .input-faux-multi { display: flex; flex-wrap: nowrap; align-items: center; }
	html.tc-ps-reskin .alertify .ajs-dialog.tc-modal-shipping .input-faux-multi input { flex: 1 1 0; min-width: 0; width: auto; }
	html.tc-ps-reskin .alertify .ajs-dialog.tc-modal-shipping .input-faux-multi i { flex: 0 0 auto; }
}



/* =========================================================================
   TC-12324 Affiliates — Overview reskin.
   All rules scoped to `.tc-affiliates-page`. Mirrors the Dashboard /
   Integrations reskin pattern (chrome painted white, 1216 outer / 1152 inner,
   Inter, reskin colour tokens). UI-only: every form id / JS hook preserved.
   ========================================================================= */
/* Gate-off parity: .tc-aff-filter-scroll and .tc-aff-compare-clear-col ship
   ungated in the shared graph markup; neutralize them when the reskin page
   class is absent. The scoped rules below override both inside the reskin. */
.tc-aff-filter-scroll { display: contents; }
.tc-aff-compare-clear-col { display: none; }

body:has(.tc-affiliates-page),
body:has(.tc-affiliates-page) #layout {
	background: #ffffff;
}

.tc-affiliates-page {
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
	color: #364152;
	max-width: 1216px;
	margin: 0 auto;
	padding: 0 32px 160px;
	background: #ffffff;
	box-sizing: border-box;
}
.tc-affiliates-page *,
.tc-affiliates-page *::before,
.tc-affiliates-page *::after { box-sizing: border-box; }

/* Neutralise the legacy affiliate chrome (top Aff/JV switcher + grey boxes)
   that the shared includes still emit — the breadcrumb + sidebar replace it. */
.tc-affiliates-page .box-tabbed-sectionaction { display: none; }
.tc-affiliates-page > .box,
.tc-affiliates-page .box.box-invisible {
	background: transparent;
	border: 0;
	box-shadow: none;
	padding: 0;
	margin: 0;
}

/* ---- Page header --------------------------------------------------------- */
.tc-affiliates-page .tc-aff-head {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 16px;
	padding: 24px 0 0;
	margin: 0 0 16px;
}
.tc-affiliates-page .tc-aff-breadcrumb {
	display: flex;
	align-items: center;
	gap: 4px;
	margin: 0 0 0;
}
.tc-affiliates-page .tc-aff-breadcrumb a {
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #8493a8;
	text-decoration: none;
}
.tc-affiliates-page .tc-aff-breadcrumb a:hover { color: #006b70; }
.tc-affiliates-page .tc-aff-breadcrumb-sep {
	width: 14px;
	height: 14px;
	background: url("/static/icons/affiliates/breadcrumb-sep.svg") no-repeat center;
	background-size: 14px 14px;
}
.tc-affiliates-page .tc-aff-title {
	margin: 2px 0 0;
	padding: 0;
	border: 0;
	font-size: 20px;
	font-weight: 500;
	line-height: 28px;
	letter-spacing: 0;
	color: #364152;
	white-space: nowrap;
}
.tc-affiliates-page .tc-aff-head-controls {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-shrink: 0;
	padding-top: 16px;
}
.tc-affiliates-page .tc-aff-head-divider {
	width: 1px;
	height: 24px;
	background: #d1d7de;
	margin: 0 -4px;
}

/* ---- Select pills (mode / date in header, generic selects in page) -------- */
.tc-affiliates-page .tc-aff-pill select,
.tc-affiliates-page .tc-aff-head-controls select {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	height: 36px;
	min-width: 0;
	width: auto;
	padding: 7px 34px 7px 13px;
	background: #ffffff url("/static/icons/affiliates/chevron-expand.svg") no-repeat right 17px center;
	background-size: 8px 4.94px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #2b384a;
	cursor: pointer;
	box-shadow: none;
	margin: 0;
}

/* ---- Primary / secondary buttons ---------------------------------------- */
.tc-affiliates-page .tc-aff-btn-primary {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	height: 36px;
	padding: 8px 18px;
	background: #006b70;
	border: 0;
	border-radius: 8px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #ffffff;
	cursor: pointer;
	white-space: nowrap;
}
.tc-affiliates-page .tc-aff-btn-primary:hover { background: #00868c; }
.tc-affiliates-page .tc-aff-btn-secondary {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 4px;
	height: 36px;
	padding: 8px 18px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 8px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #364152;
	cursor: pointer;
	white-space: nowrap;
}
.tc-affiliates-page .tc-aff-btn-secondary:hover { background: #f6f8f9; }

/* ---- Active-filter chips ------------------------------------------------- */
.tc-affiliates-page .tc-aff-chips {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-wrap: wrap;
	margin: 0 0 16px;
	min-height: 24px;
}
/* No active filters -> no chips row (chips render only for non-default filters). */
.tc-affiliates-page .tc-aff-chips:empty {
	display: none;
}
.tc-affiliates-page .tc-aff-chip {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 4px 8px;
	background: #e8ecef;
	border-radius: 8px;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	color: #364152;
	white-space: nowrap;
}
.tc-affiliates-page .tc-aff-chip-x {
	width: 12px;
	height: 12px;
	background: url("/static/icons/affiliates/close.svg") no-repeat center;
	background-size: 9px 9px;
	cursor: pointer;
	opacity: 0.7;
}
.tc-affiliates-page .tc-aff-chip-x:hover { opacity: 1; }
.tc-affiliates-page .tc-aff-chip-clear {
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	color: #1a1a1a;
	cursor: pointer;
}

/* ---- Sub-tabs (restyle shared .tabs.tabs-anchor) ------------------------- */
.tc-affiliates-page .tabs.tabs-anchor {
	display: flex;
	align-items: center;
	gap: 32px;
	margin: 0 0 24px;
	padding: 0;
	list-style: none;
	border-bottom: 1px solid #d1d7de;
	background: transparent;
}
.tc-affiliates-page .tabs.tabs-anchor li {
	margin: 0;
	padding: 0;
	background: transparent;
	border: 0;
	float: none;
	list-style: none;
}
.tc-affiliates-page .tabs.tabs-anchor li a {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 8px;
	background: transparent;
	border: 0;
	border-bottom: 2px solid transparent;
	margin-bottom: -1px;
	font-family: 'Inter', sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #8493a8;
	text-decoration: none;
}
.tc-affiliates-page .tabs.tabs-anchor li a i { display: none; }
.tc-affiliates-page .tabs.tabs-anchor li.active a,
.tc-affiliates-page .tabs.tabs-anchor li a:hover { color: #2a3648; }
.tc-affiliates-page .tabs.tabs-anchor li.active a { border-bottom-color: #006b70; }

/* ---- KPI data cards ----------------------------------------------------- */
.tc-affiliates-page .tc-aff-kpis {
	/* Figma: KPI cards are flex-1 equals filling the container — Overview has
	   four, My Affiliates three; flex handles both (a fixed 4-track grid left
	   a quarter of the row empty on the 3-card page). */
	display: flex;
	gap: 16px;
	margin: 0 0 24px;
	padding: 0;
	list-style: none;
}
.tc-affiliates-page .tc-aff-kpi {
	display: flex;
	flex-direction: column;
	gap: 32px;
	flex: 1 1 0;
	min-width: 0;
	padding: 24px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 12px;
	box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.05);
}
.tc-affiliates-page .tc-aff-kpi-icon {
	width: 36px;
	height: 36px;
	flex-shrink: 0;
	background-color: #e8ecef;
	border-radius: 8px;
	background-repeat: no-repeat;
	background-position: center;
	background-size: 20px 20px;
}
.tc-affiliates-page .tc-aff-kpi-icon--commissions { background-image: url("/static/icons/affiliates/kpi-commissions-earned.svg"); background-size: 18.33px 13.33px; }
.tc-affiliates-page .tc-aff-kpi-icon--paid { background-image: url("/static/icons/affiliates/kpi-paid-commissions.svg"); background-size: 16.67px 15px; }
.tc-affiliates-page .tc-aff-kpi-icon--affiliates { background-image: url("/static/icons/affiliates/kpi-approved.svg"); background-size: 18.33px 13.33px; }
.tc-affiliates-page .tc-aff-kpi-icon--sales { background-image: url("/static/icons/affiliates/kpi-affiliate-sales.svg"); background-size: 16.67px 16.66px; }
.tc-affiliates-page .tc-aff-kpi-text { display: flex; flex-direction: column; gap: 4px; }
.tc-affiliates-page .tc-aff-kpi-label {
	font-size: 12px;
	font-weight: 600;
	line-height: 16px;
	letter-spacing: 0.48px;
	text-transform: uppercase;
	color: #8493a8;
}
.tc-affiliates-page .tc-aff-kpi-value {
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
}
.tc-affiliates-page .tc-aff-kpi-value em { font-style: normal; }

/* ---- Card shell (chart + table) ----------------------------------------- */
/* Top-performers table section: a chrome-less container —
   no border, no shadow, no fill — content inset 20px horizontally, sitting
   directly on the white page (unlike the bordered KPI tiles). */
.tc-affiliates-page .tc-aff-card {
	background: transparent;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	/* Flat wrapper — no h-padding so the table sits flush to the 16px page edge like Figma. */
	padding: 8px 0;
	margin: 0 0 24px;
}

/* ---- Chart card: control row + Compare ---------------------------------- */
.tc-affiliates-page #graph-dashboard-outer.box,
.tc-affiliates-page #graph-dashboard-outer .box {
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 12px;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	padding: 16px;
	margin: 0 0 24px;
}
/* Drop the horizontal padding that helpers.css .padding-full forces with 2em !important (insets the stats section ~36px); !important needed to beat it. */
.tc-affiliates-page #graph-dashboard-outer.box,
.tc-affiliates-page #graph-dashboard-outer .box { padding-left: 0 !important; padding-right: 0 !important; }
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap .autolayout {
	margin-left: -6.5px;
	margin-right: -6.5px;
}
/* Transparent by default so the filter selects stay direct autolayout children; only the mobile breakpoint turns it into a horizontal scroll strip. */
.tc-affiliates-page #graph-dashboard-outer .tc-aff-filter-scroll { display: contents; }
/* Compare button → teal to match the affiliates Figma. Scoped with body.root so
   it out-specifies `body.root .button-secondary` (buttons.css); dashboard unaffected.
   `.pure-button` keeps it off the graph heading's `span.ui-compare` chip. */
body.root .tc-affiliates-page .pure-button.ui-compare {
	background-color: #006b70;
	border-color: #006b70;
	color: #ffffff;
}
body.root .tc-affiliates-page .pure-button.ui-compare:hover {
	background-color: #00868c;
	border-color: #00868c;
}

/* ---- Chart stat strip (.stat-wrapper .stat) -----------------------------
   The strip lives inside legacy `#custom-tooltip`, whose id-specificity rules
   (width 14.285%, padding 12px 6px, radius 3px, centered) would beat plain
   class selectors — so every rule here carries the id in the scope. */
/* body scope outranks legacy `.root.affiliates #custom-tooltip { padding: 0 1em }`
   (statistics.css loads after main.css) — the Figma strip runs to the card
   inner edges with only its own 8px right padding. */
body.root .tc-affiliates-page #custom-tooltip,
.tc-affiliates-page #custom-tooltip {
	background: transparent;
	padding: 0;
	/* Reset legacy #custom-tooltip's -2em side margins (they pulled the active stat box past the card's left border). */
	margin: 0;
	width: 100%;
	min-width: 0;
	box-sizing: border-box;
}
.tc-affiliates-page #custom-tooltip .stat-wrapper {
	display: flex;
	gap: 4px;
	align-items: stretch;
	justify-content: flex-start;
	flex-wrap: nowrap;
	/* Cap to the graph width so the fixed-basis tabs shrink and the active box stays inside the card. */
	width: 100%;
	min-width: 0;
	padding-right: 8px;
}
.tc-affiliates-page #custom-tooltip .stat-wrapper .stat {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 4px;
	padding: 8px;
	width: auto;
	min-width: 83px;
	/* Figma: every stat card is a constant 112px tall (active included, its
	   24px padding just eats the inner space) — without this, selecting a
	   metric whose label wraps under the active padding reflows the row. */
	min-height: 112px;
	box-sizing: border-box;
	flex: 0 0 auto;
	background: #ffffff;
	border-radius: 12px;
	cursor: pointer;
}
.tc-affiliates-page #custom-tooltip .stat-wrapper .stat span {
	font-size: 12px;
	font-weight: 600;
	line-height: 16px;
	letter-spacing: 0.48px;
	text-transform: uppercase;
	color: #8493a8;
}
.tc-affiliates-page #custom-tooltip .stat-wrapper .stat b {
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
}
.tc-affiliates-page #custom-tooltip .stat-wrapper .stat.ui-active { background: #f6f8f9; padding: 24px; }
.tc-affiliates-page #custom-tooltip .stat-wrapper .stat .stat-compare b { font-size: 12px; color: #8493a8; }
/* The nested compare row also carries `.stat`, so undo the card chrome it
   inherits from the rule above; it renders as a plain sub-line in compare mode
   and is hidden entirely while compare is inactive (Figma shows no dash row). */
.tc-affiliates-page #custom-tooltip .stat-wrapper .stat .stat.stat-compare {
	padding: 0;
	min-width: 0;
	background: transparent;
	border-radius: 0;
}
.tc-affiliates-page:has(#stats-date-range-type-compare-active-wrap.hidden) #custom-tooltip .stat-wrapper .stat .stat.stat-compare {
	display: none;
}

/* ---- Top affiliates / products as table --------------------------------- */
.tc-affiliates-page .tc-aff-table-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	margin: 0 0 16px;
}
/* Keep the table count visible on the left of the toolbar — the design shows it. */
.tc-affiliates-page .tc-aff-table-count {
	color: #8493a8;
	font-size: 14px;
	line-height: 20px;
	font-weight: 500;
}
.tc-affiliates-page .tc-aff-table-tools { display: flex; align-items: center; gap: 8px; }
.tc-affiliates-page .tc-aff-table-search {
	display: flex;
	align-items: center;
	gap: 8px;
	width: 200px;
	/* Figma 1546:17383 is px-13/py-8 in a 32-tall field — that only adds up
	   because its stroke is drawn inside. Painting the hairline as an inset
	   shadow keeps the padding verbatim and the field 32 tall (8+16+8). */
	padding: 8px 13px;
	background: #ffffff;
	border: 0;
	box-shadow: inset 0 0 0 1px #d1d7de;
	border-radius: 6px;
	/* Legacy form CSS gives every <label> a 6px bottom margin, which shifts
	   this pill 3px off its flex-centre against the Products button. */
	margin: 0;
}
.tc-affiliates-page .tc-aff-table-search::before {
	content: '';
	width: 16px;
	height: 16px;
	flex-shrink: 0;
	background: url("/static/icons/affiliates/search.svg") no-repeat center;
	background-size: 11.66px 11.66px;
}
.tc-affiliates-page .tc-aff-table-search input {
	border: 0;
	outline: 0;
	padding: 0;
	margin: 0;
	width: 100%;
	background: transparent;
	font-size: 12px;
	line-height: 16px;
	color: #364152;
	box-shadow: none;
	height: auto;
}
.tc-affiliates-page .tc-aff-table-search input::placeholder { color: #afbbc9; }
.tc-affiliates-page .tc-aff-list { display: flex; flex-direction: column; }
.tc-affiliates-page .tc-aff-list-head {
	display: grid;
	grid-template-columns: 52px minmax(0, 1fr) 70px;
	background: #f6f8f9;
	border-bottom: 1px solid #e8ecef;
}
.tc-affiliates-page .tc-aff-list-head span {
	padding: 10px 8px 11px;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #8493a8;
}

.tc-affiliates-page .affiliates-list-top ol {
	list-style: none;
	margin: 0;
	padding: 0;
}
.tc-affiliates-page .affiliates-list-top li {
	display: grid;
	grid-template-columns: 52px minmax(0, 1fr) 70px;
	align-items: center;
	border-bottom: 1px solid #e8ecef;
	margin: 0;
	padding: 0;
}
/* Legacy .display-block (display:block !important) on the row <a> defeats display:contents; !important beats it so the grid cells align. */
.tc-affiliates-page .affiliates-list-top li a {
	display: contents !important;
	color: #2a3648;
	text-decoration: none;
}
/* .self-clear's clearfix ::after would otherwise sit as a phantom grid cell. */
.tc-affiliates-page .affiliates-list-top li.self-clear::after { content: none; }
/* DOM order is idx, sales, name — pin to row 1 so sparse auto-placement can't bump the name to a 2nd row. */
.tc-affiliates-page .affiliates-list-top li .idx,
.tc-affiliates-page .affiliates-list-top li b,
.tc-affiliates-page .affiliates-list-top li .pull-right { grid-row: 1; }
.tc-affiliates-page .affiliates-list-top li .idx {
	grid-column: 1;
	padding: 8px;
	font-size: 14px;
	line-height: 20px;
	color: #2a3648;
	float: none;
}
.tc-affiliates-page .affiliates-list-top li b {
	grid-column: 2;
	padding: 8px;
	font-size: 14px;
	line-height: 20px;
	font-weight: 400;
	color: #2a3648;
}
.tc-affiliates-page .affiliates-list-top li .pull-right {
	grid-column: 3;
	padding: 8px;
	float: none;
	display: flex;
	align-items: center;
	justify-content: flex-start;
	font-size: 14px;
	line-height: 20px;
	color: #2a3648;
}
/* Figma cell shows the bare value; the legacy row builder prefixes it with the
   metric label ("Total sales: 893") — hide the label, keep the value.
   line-height:20 (not the inherited 20.8) kills the fs-0 strut that otherwise
   inflates the cell to 42px and makes rows taller than the 36px Figma spec. */
.tc-affiliates-page .affiliates-list-top li .pull-right .color-money-gross { font-size: 0; line-height: 20px; color: #2a3648; display: flex; align-items: center; }
/* Legacy .font-weight-bold forces `bold !important`; 400 needs !important to win. */
.tc-affiliates-page .affiliates-list-top li .pull-right .color-money-gross .font-weight-bold { font-size: 14px; font-weight: 400 !important; line-height: 20px; }
/* Zero the inherited 0.1px letter-spacing on the leaves so nothing widens the row text. */
.tc-affiliates-page .tc-aff-list-head span,
.tc-affiliates-page .affiliates-list-top li .idx,
.tc-affiliates-page .affiliates-list-top li b,
.tc-affiliates-page .affiliates-list-top li .pull-right,
.tc-affiliates-page .affiliates-list-top li .pull-right .color-money-gross .font-weight-bold { letter-spacing: 0; }
.tc-affiliates-page .tc-aff-list-foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	margin-top: 16px;
}
.tc-affiliates-page .tc-aff-list-foot .tc-aff-perpage { display: flex; align-items: center; gap: 8px; }
.tc-affiliates-page .tc-aff-list-foot .tc-aff-perpage span { font-size: 14px; line-height: 20px; color: #2a3648; }
/* Per-page select — Figma 1468:8900: 72x32, px-13, radius 8, 14/400/16. */
.tc-affiliates-page .tc-aff-list-foot .tc-aff-perpage .tc-aff-pill select {
	height: 32px;
	width: 72px;
	padding-top: 0;
	padding-bottom: 0;
	line-height: 16px;
}
.tc-affiliates-page .tc-aff-pagination { display: flex; align-items: center; gap: 8px; }
.tc-affiliates-page .tc-aff-page-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 32px;
	min-width: 32px;
	padding: 8px;
	border-radius: 6px;
	font-size: 14px;
	font-weight: 500;
	color: #364152;
	cursor: pointer;
	background: #ffffff;
	border: 1px solid #e8ecef;
}
.tc-affiliates-page .tc-aff-page-btn.tc-aff-page-nav { background: #f6f8f9; border-color: #d1d7de; }
.tc-affiliates-page .tc-aff-page-btn.tc-aff-page-prev::before,
.tc-affiliates-page .tc-aff-page-btn.tc-aff-page-next::before {
	content: '';
	width: 16px;
	height: 16px;
	background-repeat: no-repeat;
	background-position: center;
	background-size: 4.94px 8px;
}
.tc-affiliates-page .tc-aff-page-btn.tc-aff-page-prev::before { background-image: url("/static/icons/affiliates/page-prev.svg"); }
.tc-affiliates-page .tc-aff-page-btn.tc-aff-page-next::before { background-image: url("/static/icons/affiliates/page-next.svg"); }

/* ---- Filters modal (rendered into alertify .tc-modal-aff-filters) -------- */
.tc-aff-filter-modal { font-family: 'Inter', sans-serif; color: #364152; }
.tc-aff-filter-modal .tc-aff-filter-row { display: flex; flex-direction: column; gap: 4px; margin: 0 0 16px; }
.tc-aff-filter-modal label {
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #2b384a;
	margin: 0;
}
.tc-aff-filter-modal select {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	width: 100%;
	height: 40px;
	line-height: 20px;
	padding: 8px 34px 8px 8px;
	background: #ffffff url("/static/icons/affiliates/select-chevron.svg") no-repeat right 12px center;
	background-size: 8px 4.94px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-size: 14px;
	color: #364152;
	cursor: pointer;
	box-shadow: none;
}
.tc-aff-filter-modal .tc-aff-filter-divider { height: 1px; background: #e8ecef; margin: 16px 0; }

/* Filters modal container + backdrop */
.tc-aff-modal-backdrop { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.4); z-index: 100000; }
.tc-aff-modal-backdrop.hidden, .tc-aff-filter-modal.hidden { display: none; }
.tc-aff-filter-modal {
	position: fixed;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 620px;
	max-width: calc(100vw - 32px);
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 12px;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	z-index: 100001;
	display: flex;
	flex-direction: column;
	padding-bottom: 24px;
}
.tc-aff-filter-modal-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 16px 24px;
	border-bottom: 1px solid #e8ecef;
}
.tc-aff-filter-modal-title { font-size: 16px; font-weight: 500; line-height: 24px; color: #364152; }
.tc-aff-filter-modal-close {
	width: 16px;
	height: 16px;
	cursor: pointer;
	background: url("/static/icons/affiliates/close.svg") no-repeat center;
	background-size: 12px 12px;
}
.tc-aff-filter-modal-body { padding: 24px 24px 0; }
.tc-aff-filter-foot { display: flex; align-items: center; justify-content: space-between; padding-top: 8px; }
.tc-aff-filter-foot-right { display: flex; align-items: center; gap: 8px; }

/* Chart section: strip the inherited `.ui-dashboard` page padding/width so the
   chart card lines up with the KPI cards + table at the 32px page gutter. */
.tc-affiliates-page .ui-dashboard {
	max-width: none;
	margin: 0;
	padding: 0;
}
.tc-affiliates-page #graph-dashboard-outer {
	margin: 0 0 24px;
	background: #ffffff;
	/* Figma 1468:8906 "Vertical Card": white, radius 12, card shadow, NO
	   border stroke (unlike the KPI tiles) — px-16, content v-centred (~8px). */
	border: 0;
	border-radius: 12px;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	padding: 8px 16px;
}

/* Compare sits at the right of the chart control row (Figma). It's the first
   DOM child, so push it last + right within the flex `.autolayout`. */
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap .autolayout > .position-relative:has(.ui-compare) {
	order: 99;
	margin-left: auto;
}

/* Chart control row selects — same pill treatment as the header (Figma text
   fields: h36 / 13x7 padding / #d1d7de border / radius 8 / 14px text, chevron).
   Currency + product are fixed 180px in the Figma; the rest hug content. */
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap select {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	height: 36px;
	min-width: 0;
	width: auto;
	padding: 7px 34px 7px 13px;
	background: #ffffff url("/static/icons/affiliates/chevron-expand.svg") no-repeat right 17px center;
	background-size: 8px 4.94px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #2b384a;
	cursor: pointer;
	box-shadow: none;
	margin: 0;
}
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap #stats-currency,
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap #stats-product {
	width: 180px;
}
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap .autolayout-column {
	width: auto;
	flex: 0 0 auto;
}
/* Legacy `.root.affiliates #stats-currency-wrap { max-width: 6em }` clamps the
   currency column under the 180px Figma field — lift it in the reskin. */
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap #stats-currency-wrap {
	max-width: none;
}

/* Compare-mode close control — Figma shows a labelled "× Close Comparison"
   pill; the legacy control is a bare square with an fa-times icon. */
.tc-affiliates-page #graph-dashboard-outer .ui-compare-clear {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	height: 32px;
	padding: 0 12px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 6px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	color: #364152;
	box-shadow: none;
	cursor: pointer;
}
.tc-affiliates-page #graph-dashboard-outer .ui-compare-clear::after {
	content: "Close Comparison";
}
/* Swap the fa-times glyph for the node close asset (16px slot, 9.33px glyph). */
.tc-affiliates-page #graph-dashboard-outer .ui-compare-clear .fa-times {
	width: 16px;
	height: 16px;
	margin: 0;
	background: url("/static/icons/affiliates/close-compare.svg") no-repeat center;
	background-size: 9.33px 9.33px;
}
.tc-affiliates-page #graph-dashboard-outer .ui-compare-clear .fa-times::before {
	content: none;
}

/* The legacy `.dropdown` widget wraps these selects in its own fixed-width
   bordered box with an ::after arrow (the double-chevron / grey box). Dissolve
   the box so the pill-styled select lays out directly in the column. */
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap .dropdown {
	display: contents;
}
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap .dropdown::after,
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap .dropdown::before {
	content: none;
}

/* Table-header source toggle ("Products"/"Affiliates") — smaller than header pills */
.tc-affiliates-page .tc-aff-table-toggle select {
	height: 32px;
	/* Figma 1468:18927: px-12, gap-4 to the 16px icon slot -> 12+16+4 = 32. */
	padding: 8px 32px 8px 12px;
	border-color: #e8ecef;
	border-radius: 6px;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	color: #364152;
	background-position: right 16px center;
}

/* ============================================================================
   TC-12342 — Affiliates > My Affiliates reskin (gated via tc_reskin_enabled).
   Scoped under .tc-affiliates-page like the Overview block above.
   ========================================================================== */

/* Header import icon (Figma viewBox 14.667x12 in a 16px box) */
.tc-affiliates-page .tc-aff-ico-import {
	display: inline-block;
	width: 16px;
	height: 16px;
	background: url("/static/icons/affiliates/import-list.svg") no-repeat center;
	background-size: 14.67px 12px;
}

/* KPI icons (native viewBox sizes) */
.tc-affiliates-page .tc-aff-kpi-icon--approved { background-image: url("/static/icons/affiliates/kpi-approved.svg"); background-size: 18.33px 13.33px; }
.tc-affiliates-page .tc-aff-kpi-icon--pending { background-image: url("/static/icons/affiliates/kpi-pending.svg"); background-size: 13.33px 16.67px; }
.tc-affiliates-page .tc-aff-kpi-icon--incomplete { background-image: url("/static/icons/affiliates/kpi-incomplete.svg"); background-size: 24px 24px; }

/* KPI labels double as the legacy stat-filter anchors — keep them looking like labels */
.tc-affiliates-page .tc-aff-kpi-label a {
	color: inherit;
	text-decoration: none;
	cursor: pointer;
}

/* Toolbar: count left, controls right */
.tc-affiliates-page .tc-aff-toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	margin: 0 0 16px;
}
.tc-affiliates-page .tc-aff-toolbar-right {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-wrap: wrap;
	justify-content: flex-end;
	position: relative;
}
.tc-affiliates-page .tc-aff-toolbar-right .tc-aff-pill { display: inline-flex; }
.tc-affiliates-page .tc-aff-toolbar button.tc-aff-btn-secondary,
.tc-affiliates-page .tc-aff-toolbar button.tc-aff-btn-primary {
	height: 36px;
	cursor: pointer;
}
.tc-affiliates-page .tc-aff-toolbar button.tc-aff-btn-secondary[disabled] {
	opacity: 0.5;
	cursor: default;
}

/* Custom date-range popover (lightpick inputs) */
.tc-affiliates-page .tc-aff-daterange-custom {
	display: none;
	align-items: center;
	gap: 8px;
}
.tc-affiliates-page .tc-aff-daterange-custom:not(.hidden) { display: inline-flex; }
.tc-affiliates-page .tc-aff-daterange-custom input {
	height: 36px;
	width: 110px;
	padding: 7px 12px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-size: 14px;
	color: #364152;
	box-shadow: none;
}
.tc-affiliates-page .tc-aff-daterange-custom .fa-times { cursor: pointer; color: #8493a8; }

/* Sort / Filter panels (legacy control groups re-rendered per iterate) */
.tc-affiliates-page .tc-aff-panels { display: block; }
.tc-affiliates-page .tc-aff-panel {
	display: none;
	align-items: center;
	gap: 8px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 12px;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	padding: 12px 16px;
	margin: 0 0 16px;
}
#view-affiliates-list.tc-aff-sort-open .tc-aff-sort-panel { display: flex; }
#view-affiliates-list.tc-aff-filter-open .tc-aff-filter-panel { display: flex; }
.tc-affiliates-page .tc-aff-panel-label {
	font-size: 12px;
	font-weight: 600;
	line-height: 16px;
	letter-spacing: 0.48px;
	text-transform: uppercase;
	color: #8493a8;
	margin: 0 4px 0 0;
}
.tc-affiliates-page .tc-aff-panel select {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	height: 36px;
	width: auto;
	padding: 7px 34px 7px 13px;
	background: #ffffff url("/static/icons/affiliates/chevron-expand.svg") no-repeat right 17px center;
	background-size: 8px 4.94px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-size: 14px;
	color: #2b384a;
	cursor: pointer;
	box-shadow: none;
	margin: 0;
}
.tc-affiliates-page .tc-aff-panel select.hidden { display: none; }
.tc-affiliates-page .tc-aff-panel input[type="number"] {
	height: 36px;
	width: 120px;
	padding: 7px 12px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-size: 14px;
	color: #364152;
	box-shadow: none;
}
.tc-affiliates-page .tc-aff-panel input.hidden { display: none; }

/* Custom dropdown layered over the native <select> (hidden, still the source of truth). */
.tc-affiliates-page .tc-aff-dd { position: relative; display: inline-flex; }
.tc-affiliates-page .tc-aff-panel select.tc-aff-dd-native {
	position: absolute; width: 1px; height: 1px; padding: 0; opacity: 0; pointer-events: none;
}
.tc-affiliates-page .tc-aff-dd-btn {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	display: inline-flex;
	align-items: center;
	height: 36px;
	padding: 7px 34px 7px 13px;
	background: #ffffff url("/static/icons/affiliates/chevron-expand.svg") no-repeat right 17px center;
	background-size: 8px 4.94px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-size: 14px;
	line-height: 16px;
	color: #2b384a;
	cursor: pointer;
	box-shadow: none;
	white-space: nowrap;
}
.tc-affiliates-page .tc-aff-dd-menu {
	display: none;
	position: absolute;
	top: calc(100% + 4px);
	left: 0;
	z-index: 30;
	min-width: 175px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 8px;
	box-shadow: 0 6px 8px rgba(0, 0, 0, 0.07);
	overflow: hidden;
}
.tc-affiliates-page .tc-aff-dd.is-open .tc-aff-dd-menu { display: block; }
.tc-affiliates-page .tc-aff-dd-item {
	padding: 12px 16px;
	font-size: 14px;
	line-height: 17px;
	color: #2a3648;
	cursor: pointer;
	white-space: nowrap;
}
.tc-affiliates-page .tc-aff-dd-item:hover,
.tc-affiliates-page .tc-aff-dd-item.is-selected { background: #f6f8f9; }

/* Affiliate row cards (Figma Horizontal Card) */
.tc-affiliates-page .affiliates-list { margin: 0; }
.tc-affiliates-page ul.affiliate-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 16px;
}
.tc-affiliates-page ul.affiliate-list > li.tc-aff-row {
	display: flex;
	align-items: flex-start;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 8px;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	padding: 16px 0;
	margin: 0;
	/* Must stay visible — the row hosts hint tooltips (the approvals info "i")
	   that render outside the card bounds; clip cut them off. */
	overflow: visible;
}
.tc-affiliates-page .tc-aff-row-avatar {
	position: relative;
	flex: 0 0 auto;
	padding-left: 16px;
}
.tc-affiliates-page .tc-aff-row-avatar img {
	display: block;
	width: 160px;
	height: 160px;
	border-radius: 16px;
	/* Two-part placeholder (same as payouts/options rows): an #f6f8f9 tile with the
	   person illustration centred, shown through the gravatar `blank` PNG when there
	   is no avatar, and covered when there is one. */
	background-color: #f6f8f9;
	background-image: url("/static/icons/affiliates/avatar-person.svg");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 96px 96px;
	object-fit: cover;
}
.tc-affiliates-page .tc-aff-row-ribbon {
	position: absolute;
	top: 8px;
	left: 24px;
	z-index: 1;
	background: #fef3c7;
	color: #92400e;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	padding: 2px 6px;
	border-radius: 4px;
}
.tc-affiliates-page .tc-aff-row-viewprofile {
	position: absolute;
	left: 50%;
	bottom: 8px;
	transform: translateX(calc(-50% + 8px));
	/* Compact secondary button (same treatment as Close Comparison / the
	   table's Products button): 32px, #e8ecef border, radius 6, 14/500/16. */
	display: inline-flex;
	align-items: center;
	height: 32px;
	padding: 8px 12px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 6px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	color: #364152;
	text-decoration: none;
	white-space: nowrap;
	box-shadow: none;
	/* Legacy shows the profile shortcut only while hovering the avatar. */
	opacity: 0;
	pointer-events: none;
	transition: opacity 150ms ease;
}
.tc-affiliates-page .tc-aff-row-avatar:hover .tc-aff-row-viewprofile,
.tc-affiliates-page .tc-aff-row-viewprofile:focus-visible {
	opacity: 1;
	pointer-events: auto;
}
/* Design-system secondary states for the chip itself. */
.tc-affiliates-page .tc-aff-row-viewprofile:hover {
	background: #f6f8f9;
}
.tc-affiliates-page .tc-aff-row-viewprofile:active {
	background: #e8ecef;
}
.tc-affiliates-page .tc-aff-row-main {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	/* Fill the avatar height and drop the stats/totals to its bottom edge. */
	min-height: 160px;
	justify-content: space-between;
}
.tc-affiliates-page .tc-aff-row-top {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 8px;
	padding: 0 16px;
}
.tc-affiliates-page .tc-aff-row-title {
	display: flex;
	flex-direction: column;
	gap: 4px;
	min-width: 0;
}
.tc-affiliates-page .tc-aff-row-name {
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #364152;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.tc-affiliates-page .tc-aff-row-name em {
	font-style: normal;
	color: #8493a8;
}
.tc-affiliates-page .tc-aff-row-email a {
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #006b70;
	text-decoration: underline;
}
.tc-affiliates-page .tc-aff-row-vip {
	display: inline-block;
	margin-left: 8px;
	vertical-align: 2px;
	cursor: pointer;
}
.tc-affiliates-page .tc-aff-row-vip-pill {
	display: inline-block;
	background: #e8ecef;
	color: #8493a8;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	padding: 2px 6px;
	border-radius: 4px;
}
.tc-affiliates-page .ui-affiliate-favourite-active .tc-aff-row-vip-pill {
	background: #9ae6b4;
	color: #2a3648;
}
.tc-affiliates-page .tc-aff-row-ctas {
	display: flex;
	align-items: center;
	gap: 8px;
	flex: 0 0 auto;
}
.tc-affiliates-page .tc-aff-btn-sm {
	height: 32px;
	padding: 8px 12px;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	border-radius: 6px;
}
.tc-affiliates-page .tc-aff-btn-sm[disabled] {
	opacity: 0.5;
	cursor: default;
	pointer-events: none;
}
.tc-affiliates-page .tc-aff-row-body {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 16px;
	padding: 8px 16px 0;
}
.tc-affiliates-page .tc-aff-row-stats {
	display: flex;
	gap: 35px;
	flex: 1 1 auto;
	min-width: 0;
}
.tc-affiliates-page .tc-aff-row-stat {
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding-top: 4px;
	max-width: 160px;
	flex: 1 1 0;
	min-width: 0;
}
.tc-affiliates-page .tc-aff-row-stat-label {
	font-size: 12px;
	font-weight: 600;
	line-height: 16px;
	letter-spacing: 0.48px;
	text-transform: uppercase;
	color: #8493a8;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.tc-affiliates-page .tc-aff-row-stat-value {
	font-size: 12px;
	font-weight: 400;
	line-height: 18px;
	color: #364152;
}
.tc-affiliates-page .tc-aff-row-totals {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	justify-content: center;
	flex: 0 0 auto;
	width: 181px;
	text-align: right;
}
.tc-affiliates-page .tc-aff-row-earned {
	font-size: 14px;
	font-weight: 600;
	line-height: 20px;
	color: #364152;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	max-width: 100%;
}
.tc-affiliates-page .tc-aff-row-due {
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #364152;
}

/* List footer: jobs indicator left, pagination right */
.tc-affiliates-page .tc-aff-list-foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	margin: 16px 0 24px;
}
.tc-affiliates-page .tc-aff-list-foot.hidden { display: none; }

/* Legacy `.ui-affiliate-favourite` is position:absolute (card-corner heart) —
   in the reskin the VIP pill sits inline right after the name. */
.tc-affiliates-page .tc-aff-row .ui-affiliate-favourite.tc-aff-row-vip {
	position: static;
	top: auto;
	right: auto;
	width: auto;
	height: auto;
}
.tc-affiliates-page .tc-aff-table-count { white-space: nowrap; }
.tc-affiliates-page .tc-aff-toolbar-right { flex-wrap: nowrap; }
.tc-affiliates-page .tc-aff-toolbar .tc-aff-table-search input { width: 170px; min-width: 0; }
.tc-affiliates-page .tc-aff-panel select { flex: 0 0 auto; }
/* Search + Clear are redundant (type/Enter already searches) and overflowed the row. */
.tc-affiliates-page .tc-aff-toolbar #affiliates-list-search,
.tc-affiliates-page .tc-aff-toolbar #affiliates-list-reset,
.tc-affiliates-page .tc-aff-toolbar #affiliates-payouts-search,
.tc-affiliates-page .tc-aff-toolbar #affiliates-payouts-reset { display: none; }
.tc-affiliates-page .tc-aff-toolbar { margin: 32px 0 24px; }

/* ============================================================================
   TC-12343 — Affiliates > Payments reskin (gated via tc_reskin_enabled).
   The stats / info / list markup is shared with legacy; these rules only apply
   under .tc-affiliates-page (the gated wrapper).
   ========================================================================== */

/* Segmented Automatic/Manual toggle */
.tc-affiliates-page .tc-aff-pay-toggle-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	margin: 0 0 16px;
}
/* Tabs: gap-32 between tabs, each p-8/rounded-4 with a 20px
   info icon and a 16/500/24 label. */
.tc-affiliates-page .tc-aff-segmented {
	display: inline-flex;
	align-items: center;
	gap: 32px;
}
.tc-affiliates-page .tc-aff-seg-item {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 8px;
	border-radius: 4px;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #8493a8;
	cursor: pointer;
}
.tc-affiliates-page .tc-aff-seg-item.active {
	background: #e8ecef;
	color: #2a3648;
}
/* The info glyph (I1540:14301;2472:105091;2472:104943) — a 20px slot around a
   16.67px icon. The <i> is already in the markup and carries the data-hint
   explaining automatic vs manual, so it is restyled, never replaced. It rendered
   as an 18x0 box with no glyph: the hint library's ::before (its tooltip arrow)
   beats Font Awesome's ::before, so the character never painted. Drawing the
   Figma SVG as a background leaves both pseudo-elements to the tooltip, and
   font-size:0 only hides the dead FA glyph — the hint bubble sets its own 12px. */
.tc-affiliates-page .tc-aff-seg-item .fa-info-circle {
	display: inline-block;
	flex: 0 0 auto;
	width: 20px;
	height: 20px;
	font-size: 0;
	background: url("/static/icons/affiliates/seg-info.svg") no-repeat center;
	background-size: 16.67px 16.67px;
}
.tc-affiliates-page .tc-aff-seg-item.active .fa-info-circle {
	background-image: url("/static/icons/affiliates/seg-info-active.svg");
}

/* Stats box → transparent; the two legacy panels toggle via the segment */
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats {
	background: transparent;
	border: 0;
	box-shadow: none;
	padding: 0;
	margin: 0 0 16px;
}
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats .affiliates-payouts-stats-wrap .autolayout { display: block; }
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats .affiliates-payouts-stats {
	width: 100%;
	max-width: none;
	float: none;
}
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats .affiliates-payouts-stats h2 { display: none; }
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats .affiliates-payouts-stats-manual { display: none; }
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats.tc-aff-pay-show-manual .affiliates-payouts-stats-manual { display: block; }
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats.tc-aff-pay-show-manual .affiliates-payouts-stats-automatic { display: none; }

/* The stat <li>s become cards (Figma Data Cards row of 3) */
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear {
	display: flex;
	gap: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}
/* Data Cards_01 (Figma 1540:14304/14305/14306): 164 tall, p-24, r12, icon box
   32px above the label/value stack (icon 36 + 32 + text 48 + 48 padding = 164). */
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li {
	flex: 1 1 0;
	min-width: 0;
	float: none;
	width: auto;
	min-height: 164px;
	box-sizing: border-box;
	background: #ffffff;
	/* Inside stroke, as on the payout rows: Figma 1540:14304 is 164 tall from
	   p-24 + 36 icon + gap-32 + 48 text, with the hairline drawn within that. A
	   CSS border would push the icon and the kebab to 25,25 instead of 24,24. */
	border: 0;
	border-radius: 12px;
	box-shadow: inset 0 0 0 1px #e8ecef, 0 1px 1px 0 rgba(0, 0, 0, 0.05);
	padding: 24px;
	margin: 0;
	text-align: left;
	cursor: pointer;
	display: flex;
	flex-direction: column;
	gap: 4px;
	position: relative;
}
/* IconArea: 36 box (20 slot + 8 padding), glyph at its native viewBox. */
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li::before {
	content: '';
	order: 0;
	width: 36px;
	height: 36px;
	flex: 0 0 auto;
	box-sizing: border-box;
	/* Figma 14305/14306 are justify-between: icon pinned top, the label/value
	   stack pinned to the card's bottom edge. `auto` reproduces that regardless
	   of the card's final height. */
	margin: 0 0 auto;
	border-radius: 8px;
	background-color: #e8ecef;
	background-repeat: no-repeat;
	background-position: center;
}
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li[data-status_string$="failed"]::before {
	background-image: url("/static/icons/affiliates/pay-failed.svg");
	background-size: 16.67px 13.33px;
}
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li[data-status_string$="accruing"]::before,
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li[data-status_string$="overdue"]::before,
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li[data-status_string$="due"]::before {
	background-image: url("/static/icons/affiliates/pay-accruing.svg");
	background-size: 18.33px 18.33px;
}
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li[data-status_string$="upcoming"]::before {
	background-image: url("/static/icons/affiliates/pay-upcoming.svg");
	background-size: 18.33px 13.33px;
}
/* The selected card's hairline goes teal — an inset shadow now, to match. */
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li.active {
	box-shadow: inset 0 0 0 1px #006b70, 0 1px 1px 0 rgba(0, 0, 0, 0.05);
}
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li h6 {
	order: 1;
	margin: 0;
	font-size: 12px;
	font-weight: 600;
	line-height: 16px;
	letter-spacing: 0.48px;
	text-transform: uppercase;
	color: #8493a8;
}
/* Figma labels read "FAILED PAYMENTS" / "ACCRUING PAYMENT" / "UPCOMING PAYMENTS"
   (14304/05/06) where the markup only has the status word. Appended here rather
   than gating the <h6> text: the stats markup is shared with the legacy branch,
   and a gated copy swap breaks its byte-for-byte parity for no visual gain. */
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li[data-status_string$="failed"] h6::after { content: "\00a0payments"; }
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li[data-status_string$="accruing"] h6::after { content: "\00a0payment"; }
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li[data-status_string$="upcoming"] h6::after { content: "\00a0payments"; }
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li h5 {
	order: 2;
	margin: 0;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
}
/* Figma 14304-06 has no transaction-count line, and the legacy one renders
   broken anyway (letter-spacing -2px squish from the plugin sheet). Hidden in
   the reskin; the count still feeds the card's bind-txn_count attribute. */
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li h5.txn { display: none; }
/* The value must be uniform 20/600/28 — the plugin's
   `.affiliates-payouts-stats h5 em { font-size: 60%; vertical-align: top }`
   shrinks and raises the decimals (Figma's $54.00 is one size). */
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats .affiliates-payouts-stats ul.self-clear > li h5 em,
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li h5 em {
	font-size: inherit;
	font-style: normal;
	font-weight: inherit;
	vertical-align: baseline;
	/* The plugin's superscript styling also gives the em `margin: 0.2em 0 0
	   0.15em` — at full size that reads as "$16,299 .49". */
	margin: 0;
}
/* Legacy squeezes big values with letter-spacing:-2px (`large-number`); the
   164px cards fit them at the Figma type size without it. */
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats .affiliates-payouts-stats ul.self-clear > li h5 span.large-number,
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li h5 span.large-number {
	letter-spacing: normal;
	font-size: inherit;
}

/* Info rows → Banner: blue/100 #bee3f8, p-16, gap-8, 32px
   info glyph, 16/500/24 text, 8.79 close in a 16 slot.
   The legacy sheet toggles these with display:none → block per status, so the
   flex layout is applied ONLY to the six shown combinations — a blanket
   `display: flex` here would reveal every banner at once. */
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-info-block { margin: 16px 0 0; }
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-info-row {
	position: relative;
	background: #bee3f8;
	border-radius: 8px;
	padding: 16px;
	gap: 8px;
	align-items: flex-start;
	box-sizing: border-box;
	/* The instance (1540:14318) is 71 tall even though its own p-16 around a 32px
	   icon only accounts for 64 — the designer sized the frame. items-start means
	   the extra sits under the icon, which is what the Figma render shows. */
	min-height: 71px;
}
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts[data-status_string="auto_failed"] .affiliates-payouts-info-row[data-status="auto_failed"],
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts[data-status_string="auto_accruing"] .affiliates-payouts-info-row[data-status="auto_accruing"],
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts[data-status_string="auto_upcoming"] .affiliates-payouts-info-row[data-status="auto_upcoming"],
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts[data-status_string="manual_overdue"] .affiliates-payouts-info-row[data-status="manual_overdue"],
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts[data-status_string="manual_due"] .affiliates-payouts-info-row[data-status="manual_due"],
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts[data-status_string="manual_upcoming"] .affiliates-payouts-info-row[data-status="manual_upcoming"] {
	display: flex;
}
/* Left Icon: 32 slot, glyph at its native 26.67 viewBox. */
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-info-row::before {
	content: '';
	flex: 0 0 auto;
	width: 32px;
	height: 32px;
	background: url("/static/icons/affiliates/banner-info.svg") no-repeat center;
	background-size: 26.67px 26.67px;
}
/* .affiliates-payouts-info-block is load-bearing: the plugin's
   `.affiliates-payouts-info-block .affiliates-payouts-info-row p { line-height:
   1.75em }` (=28px) ties a 2-class selector and style.css loads after this. */
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-info-block .affiliates-payouts-info-row p {
	flex: 1 1 auto;
	min-width: 0;
	margin: 0;
	padding: 4px 0;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #2a3648;
	text-align: left;
}
/* Close Button (Figma 14318): p-8, r6, 8.79 glyph in a 16 slot, mix-blend
   multiply so it sits on the blue rather than punching a white hole. */
.tc-affiliates-page .tc-aff-banner-close {
	flex: 0 0 auto;
	align-self: center;
	position: static;
	transform: none;
	width: 32px;
	height: 32px;
	box-sizing: border-box;
	padding: 8px;
	border-radius: 6px;
	font-size: 0;
	line-height: 0;
	color: transparent;
	background: url("/static/icons/affiliates/modal-close.svg") no-repeat center;
	background-size: 8.79px 8.79px;
	mix-blend-mode: multiply;
	cursor: pointer;
}

/* Pay/queue action buttons under the cards */
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-pay-block {
	display: flex;
	justify-content: flex-end;
	gap: 8px;
	margin: 12px 0 0;
}

/* Sort/filter row from payments_iterate — pill styling */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-pre {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	margin: 0 0 16px;
}
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-pre .pure-g {
	display: flex;
	align-items: center;
	gap: 8px;
	width: 100%;
}
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-pre .pure-g > div {
	width: auto;
	display: flex;
	align-items: center;
	gap: 8px;
	flex-wrap: wrap;
}
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-pre select {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	height: 36px;
	width: auto;
	flex: 0 0 auto;
	padding: 7px 34px 7px 13px;
	background: #ffffff url("/static/icons/affiliates/chevron-expand.svg") no-repeat right 17px center;
	background-size: 8px 4.94px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-size: 14px;
	color: #2b384a;
	cursor: pointer;
	box-shadow: none;
	margin: 0;
}
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-pre select.hidden { display: none; }
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-pre input[type="number"] {
	height: 36px;
	width: 120px;
	padding: 7px 12px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	box-shadow: none;
}
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-pre input.hidden { display: none; }

/* Payment rows → cards (legacy markup, card chrome) */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .box.padding-0 {
	background: transparent;
	border: 0;
	box-shadow: none;
}
.tc-affiliates-page.tc-affiliates-page ul.payouts-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 16px;
}
.tc-affiliates-page.tc-affiliates-page ul.payouts-list > li.payouts-list-row {
	background: #ffffff;
	/* Figma 1540:16374 strokes the card on the INSIDE: the frame is 192 tall with
	   Info's py-16 measured from the outer edge (16 + 160 + 16 = 192). A CSS
	   `border` sits outside the padding box and so displaces every child by 1px —
	   which is what put the avatar at 17,17 and made the row 194. An inset shadow
	   paints the same hairline (and follows the radius) without taking up space. */
	border: 0;
	box-shadow: inset 0 0 0 1px #e8ecef, 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	border-radius: 8px;
	padding: 16px;
	margin: 0;
	overflow: clip;
	position: relative;
}
/* Horizontal Card: 160-tall content row — avatar left, info
   centre, actions TOP-right and amount BOTTOM-right. Grid rather than flex: the
   action and amount columns are markup siblings, and grid stacks them into one
   right-hand column without touching the template. */
.tc-affiliates-page.tc-affiliates-page ul.payouts-list > li.payouts-list-row > .pure-g {
	display: grid;
	grid-template-columns: 160px auto 1fr auto;
	grid-template-rows: auto 1fr;
	/* No column-gap: Figma's inset comes from Text's px-16 (1540:16395), which is
	   one-sided — the Title starts at 192 (avatar frame 176 + 16). A symmetric gap
	   would also space the empty checkbox column and push the Title to 208. */
	column-gap: 0;
	align-items: start;
	min-height: 160px;
}
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-thumbnail {
	width: 160px;
	flex: 0 0 auto;
	grid-column: 1;
	grid-row: 1 / -1;
	/* Figma 1540:16379 layers the avatar: an #f6f8f9 tile with a 96px person
	   illustration (1540:16380) centred, and the photo painted over it. The <img>
	   requests gravatar with d=blank, so this shows through when there is no
	   avatar and is covered when there is. */
	height: 160px;
	border-radius: 16px;
	background-color: #f6f8f9;
	background-image: url("/static/icons/affiliates/avatar-person.svg");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 96px 96px;
}
/* `.affiliates-payouts .payouts-list` is load-bearing: the plugin's
   `.affiliates-payouts .payouts-list .payout-column-thumbnail img { border-radius:
   0.25em }` ties a 3-class selector and style.css loads after main.css. */
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts .payouts-list .payout-column-thumbnail img,
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-thumbnail img {
	display: block;
	width: 160px;
	height: 160px;
	border-radius: 16px;
	/* Transparent, not #f6f8f9 — the tile and its person illustration are painted
	   by the column behind this img, and d=blank leaves this see-through when the
	   affiliate has no gravatar. */
	background: transparent;
	object-fit: cover;
}
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-checkbox {
	width: auto;
	flex: 0 0 auto;
	grid-column: 2;
	grid-row: 1 / -1;
	align-self: center;
}
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-affiliate {
	flex: 1 1 auto;
	min-width: 0;
	width: auto;
	grid-column: 3;
	grid-row: 1 / -1;
	display: flex;
	flex-direction: column;
	gap: 0;
	/* Text's px-16 (1540:16395) — the left half. */
	padding-left: 16px;
	/* Anchors the status badge, which Figma positions against the Title. */
	position: relative;
	/* Text (1540:16395) is items-start, so the Title is top-aligned and its own
	   justify-center is a no-op against its 149px of content. The legacy sheet
	   centres this column, which against the 160px above is a real ~2px shift. */
	justify-content: flex-start;
	/* Legacy padding-right: 0.7em. Figma's Title is flex-1 with no right inset. */
	padding-right: 0;
	/* Title (1540:16396) is measured inside a 160-tall Text frame; the column has
	   to span that height or the Commission block below has nothing to sink to. */
	min-height: 160px;
}
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-affiliate-name {
	font-size: 16px;
	font-weight: 600;
	line-height: 24px;
	color: #364152;
}
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-affiliate-name em { font-style: normal; color: #8493a8; }
/* Scope carries `.affiliates-payouts .payouts-list` to beat the plugin's
   `.payout-row-affiliate-email a { color: #3c75bd }` (ties on specificity,
   loads later). Figma 1540:16399 is the teal #006b70. */
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts .payouts-list .payout-row-affiliate-email a,
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-affiliate-email a {
	font-size: 14px;
	line-height: 20px;
	color: #006b70;
	text-decoration: underline;
}
/* "Commission:" over the product name — Figma 1540:16403 is a FIXED h-105 block
   with pt-16 and justify-end, i.e. the two lines sit on its bottom edge, which is
   what places them at y=109/129 in the Title (row y=125/145). `margin-top: auto`
   was a no-op here: the column is sized by its content, so there was no free
   space to push into, and the block rode up directly under the email. */
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-affiliate-for {
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	align-items: flex-start;
	height: 105px;
	box-sizing: border-box;
	padding-top: 16px;
	font-size: 14px;
	line-height: 20px;
	color: #8493a8;
}
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-affiliate-for b {
	display: block;
	font-weight: 400;
	color: #364152;
}
/* Actions top-right; amount bottom-right (Frame 2141 at y=0, Title at y=98). */
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-action {
	flex: 0 0 auto;
	width: auto;
	grid-column: 4;
	grid-row: 1;
	justify-self: end;
	display: flex;
	align-items: center;
	gap: 8px;
}
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-amount {
	flex: 0 0 auto;
	width: auto;
	grid-column: 4;
	grid-row: 2;
	justify-self: end;
	align-self: end;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	text-align: right;
}
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-commission-amount {
	font-size: 14px;
	font-weight: 600;
	line-height: 20px;
	color: #364152;
}
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-commission-date {
	font-size: 12px;
	line-height: 18px;
	color: #8493a8;
}
/* Same bare-wrapper fix as the create modal. The payouts ribbon is coloured by
   `.affiliates-payouts .payouts-list .payouts-status-X .ribbon` (0,4,0) in the
   plugin sheet, so the scope has to carry enough weight to beat it. */
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts .payouts-list .payouts-list-row .ribbon,
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .ribbon {
	position: absolute;
	/* Figma 1546:17434: absolute, top-50 / left-0 within the Title. The JS moves
	   the ribbon into that column, whose padding-left is the Title's 16px inset. */
	top: 50px;
	left: 16px;
	z-index: 1;
	background: transparent;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	/* The legacy wrapper is a 13em banner rotated -45° across the thumbnail
	   corner (plugin style.css) — unwind it here, not on the span, or the pill
	   inherits the rotation. */
	transform: none;
	rotate: none;
	width: auto;
	height: auto;
	line-height: normal;
	text-align: left;
	overflow: visible;
	opacity: 1;
	font-size: 100%;
}
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear { width: 100%; }
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats .affiliates-payouts-stats-wrap,
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats .affiliates-payouts-stats-wrap .autolayout,
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats .affiliates-payouts-stats {
	width: 100%;
	max-width: none;
	text-align: left;
}
/* The iterate row renders its own "N found" — the toolbar count covers it */
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-filters-inline > span { display: none; }
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li { max-width: none; }

/* ---- TC-12342: Create/Edit Affiliate page as a Figma-style centered card --- */
/* Create/Edit affiliate renders as a MODAL over a backdrop
   — the route still renders the view; the presentation is the dialog. The
   backdrop matches alertify's dimmer so both modal families look alike. */
.tc-aff-create-page {
	position: fixed;
	inset: 0;
	z-index: 1050;
	display: flex;
	justify-content: center;
	align-items: flex-start;
	padding: 48px 24px;
	background: rgba(37, 37, 37, 0.5);
	overflow-y: auto;
	/* The shared .tc-affiliates-page chrome caps pages at 1216px centred —
	   on this fixed dimmer that leaves the sidebar and viewport edges
	   undimmed, so it reads as a page swap instead of a modal. */
	max-width: none;
	margin: 0;
}
.tc-aff-create-page .tc-aff-modal-card {
	width: 762px;
	max-width: 100%;
	background: #ffffff;
	border: 1px solid #e8e8e8;
	border-radius: 12px;
	box-shadow: 0 6px 10px rgba(0, 0, 0, 0.08), 0 1px 18px rgba(0, 0, 0, 0.06), 0 3px 5px rgba(0, 0, 0, 0.1);
	overflow: clip;
	height: fit-content;
	margin-bottom: 48px;
	/* Figma 1551:13453: the Affiliate-info step is a fixed-height dialog with
	   the footer pinned at the bottom (zip→footer 63px, bar→edge 31px). The
	   design canvas is 1062 tall; our rendered fields run 27px taller in
	   aggregate, so 1089 reproduces the node's visible spacings exactly. */
	display: flex;
	flex-direction: column;
}
/* Only the Affiliate-info step is fixed-height — the Product Access step
   hugs its content. The legacy tab JS only toggles the
   `hidden` class (`active` never moves), so visibility is the signal. */
.tc-aff-create-page .tc-aff-modal-card:has(#ui-affiliate-settings-tab-basic:not(.hidden)) {
	min-height: 1089px;
}
.tc-aff-create-page .tc-aff-modal-card-body {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
}
.tc-aff-create-page .tc-aff-modal-card-body #ui-affiliate-settings:not(.hidden) {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
}
.tc-aff-create-page .tc-aff-modal-card-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	padding: 12px 24px;
	border-bottom: 1px solid #e7ebee;
}
.tc-aff-create-page .tc-aff-modal-card-title {
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #2b384a;
}
.tc-aff-create-page .tc-aff-modal-card-close {
	display: inline-flex;
	width: 32px;
	height: 32px;
	flex: 0 0 auto;
	border-radius: 6px;
	background: url("/static/icons/affiliates/modal-close.svg") no-repeat center;
	background-size: 8.79px 8.79px;
	cursor: pointer;
}
.tc-aff-create-page .tc-aff-modal-card-close:hover { background-color: #f6f8f9; }
.tc-aff-create-page .tc-aff-modal-card-body { padding: 16px 22px 0; }

/* Tabs: icon + label, teal underline on active */
.tc-aff-create-page .tc-aff-create-box { background: transparent; border: 0; box-shadow: none; }
.tc-aff-create-page ul.tc-aff-create-tabs {
	display: flex;
	gap: 16px;
	margin: 0 0 16px;
	padding: 0;
	border-bottom: 1px solid #d1d7de;
	list-style: none;
}
.tc-aff-create-page ul.tc-aff-create-tabs li {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 8px;
	margin: 0;
	border: 0;
	background: transparent;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #8493a8;
	cursor: pointer;
	border-bottom: 2px solid transparent;
}
.tc-aff-create-page ul.tc-aff-create-tabs li.active {
	color: #2a3648;
	border-bottom-color: #006b70;
}
/* Tab icons — 20px slots, glyphs at native viewBox (person 13.33, box 16.67).
   mask + currentColor because the icon follows the tab's active/inactive
   colour at runtime (the one sanctioned mask case). */
.tc-aff-create-page .tc-aff-tab-ico {
	display: inline-block;
	width: 20px;
	height: 20px;
	flex: 0 0 auto;
	background-color: currentColor;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
}
.tc-aff-create-page .tc-aff-tab-ico--person {
	-webkit-mask-image: url("/static/icons/affiliates/tab-person.svg");
	mask-image: url("/static/icons/affiliates/tab-person.svg");
	-webkit-mask-size: 13.33px 13.33px;
	mask-size: 13.33px 13.33px;
}
.tc-aff-create-page .tc-aff-tab-ico--inventory {
	-webkit-mask-image: url("/static/icons/affiliates/tab-inventory.svg");
	mask-image: url("/static/icons/affiliates/tab-inventory.svg");
	-webkit-mask-size: 16.67px 16.67px;
	mask-size: 16.67px 16.67px;
}
.tc-aff-create-page .tc-aff-create-tab {
	background: transparent;
	border: 0;
	box-shadow: none;
	/* !important counters helpers.css `.padding-full { padding: 2em !important }`
	   — the legacy pane padding indented the fields 24px off the tabs (Figma
	   1551:13459 has them flush, 16px below the tabs row). The 24px bottom
	   is Frame 5's own pb-24. */
	padding: 0 0 24px !important;
}

/* Stacked fields — Figma 13453: 16px between fields; label 16/500/24 #2b384a
   with 4px to the input; inputs px-8 py-14 (50px), radius 8, #d1d7de;
   helper 12/400/16 #8493a8 at 4px below. */
.tc-aff-create-page .tc-aff-field { margin: 0 0 16px; }
.tc-aff-create-page .tc-aff-field label {
	display: block;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #2b384a;
	margin: 0 0 4px;
}
.tc-aff-create-page .tc-aff-field input[type="text"],
.tc-aff-create-page .tc-aff-field input[type="email"] {
	width: 100%;
	/* 48px border-box: Figma strokes sit inside the 48-tall field (13461). */
	height: 48px;
	padding: 13px 8px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-size: 14px;
	line-height: 20px;
	color: #364152;
	box-shadow: none;
	margin: 0;
	box-sizing: border-box;
}
.tc-aff-create-page .tc-aff-field select {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	width: 100%;
	height: 48px;
	box-sizing: border-box;
	padding: 13px 32px 13px 8px;
	background: #ffffff url("/static/icons/affiliates/select-chevron.svg") no-repeat right 8px center;
	background-size: 8px 4.94px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-size: 14px;
	line-height: 20px;
	color: #364152;
	box-shadow: none;
	margin: 0;
}
.tc-aff-create-page .tc-aff-field-help {
	margin: 4px 0 0;
	font-size: 12px;
	line-height: 16px;
	color: #8493a8;
}
/* (superseded question/search rules removed — the authoritative Product
   Access block lives further down; the old input-background icon doubled
   up with the ::before search glyph.) */
.tc-aff-create-page #products-list-title {
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #364152;
	margin: 0 0 8px;
}
.tc-aff-create-page .box-list-product-row {
	position: relative;
	border-bottom: 1px solid #e8ecef;
	padding: 16px 8px;
	margin: 0;
	background: transparent;
	border-radius: 0;
}
/* (duplicate .ribbon wrapper rule removed — the authoritative block is further
   down and silently overrode this one.) */
.tc-aff-create-page #ui-affiliate-settings .box-list-product-row .ribbon span {
	display: inline-block;
	background: #e8ecef;
	color: #8493a8;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	padding: 2px 6px;
	border-radius: 999px;
}
.tc-aff-create-page #ui-affiliate-settings .box-list-product-row.box-list-product-row-status-2 .ribbon span {
	background: #9ae6b4;
	color: #2a3648;
}
/* Modal footer (Figma 13469): px-24 py-12, right-aligned, gap 8 — it spans
   the full card width, escaping the body's 22px side padding. */
.tc-aff-create-page .tc-aff-create-foot {
	display: flex;
	justify-content: flex-end;
	gap: 8px;
	padding: 12px 24px;
	/* margin-top auto pins the footer toward the card bottom; the 31px bottom
	   margin is the space between the footer bar and the card edge in Figma
	   (bar ends at y=1031 of the 1062 card). The pane's 24px bottom padding
	   keeps the minimum gap when content outgrows the fixed height. */
	margin: auto -22px 31px;
	border-top: 0;
}
/* Legacy .box-tabbed ul.tabs li chrome outranks the plain tab rules — repeat
   them with the box class in the scope. */
.tc-aff-create-page .tc-aff-create-box > ul.tabs.tc-aff-create-tabs {
	display: flex;
	gap: 24px;
	margin: 0 0 16px;
	padding: 0;
	border-bottom: 1px solid #e8ecef;
	background: transparent;
}
.tc-aff-create-page .tc-aff-create-box > ul.tabs.tc-aff-create-tabs li,
.tc-aff-create-page .tc-aff-create-box > ul.tabs.tc-aff-create-tabs li.active {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	float: none;
	width: auto;
	padding: 12px 4px;
	margin: 0;
	border: 0;
	border-bottom: 2px solid transparent;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #8493a8;
	text-align: left;
}
.tc-aff-create-page .tc-aff-create-box > ul.tabs.tc-aff-create-tabs li.active {
	color: #364152;
	border-bottom: 2px solid #006b70;
}
.tc-aff-create-page .tc-aff-create-box > ul.tabs.tc-aff-create-tabs li i.fa {
	display: inline;
	font-size: 14px;
	margin: 0;
}
/* Legacy diagonal corner ribbon → status pill (Figma LIVE badge).
   The wrapper paints its own SQUARE per-status box (#21c3c5 live, #8f8f8f
   inactive…) at exactly the pill's size, so its corners frame the rounded span
   — that's the "weird edges" on the LIVE tag. The span carries the badge; the
   wrapper must be bare.
   The `[class*=...status-]` qualifier is load-bearing: the plugin's
   `#ui-affiliate-settings .box-list-product-row.box-list-product-row-status-2
   .ribbon` ties this rule's specificity (1 id + 3 classes) and style.css loads
   AFTER main.css, so the tie went to the legacy colour. The attribute selector
   adds the weight needed to win outright (no !important). */
.tc-aff-create-page #ui-affiliate-settings .box-list-product-row[class*="box-list-product-row-status-"] .ribbon,
.tc-aff-create-page #ui-affiliate-settings .box-list-product-row .ribbon {
	position: static;
	transform: none;
	width: auto;
	height: auto;
	overflow: visible;
	background: transparent;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	margin: 0;
	padding: 0;
}
.tc-aff-create-page #ui-affiliate-settings .box-list-product-row .ribbon span {
	position: static;
	display: inline-block;
	transform: none;
	rotate: none;
	width: auto;
	background: #9ae6b4;
	color: #2a3648;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	padding: 2px 6px;
	/* Fully-rounded pill (user request); colours stay as-is. */
	border-radius: 999px;
	box-shadow: none;
	text-transform: none;
	letter-spacing: 0.3px;
	text-align: center;
}
.tc-aff-create-page #ui-affiliate-settings .box-list-product-row:not(.box-list-product-row-status-2) .ribbon span {
	background: #e8ecef;
	color: #8493a8;
}

/* ============================================================================
   TC-12341 — Affiliate Profile reskin (gated via tc_reskin_enabled).
   Legacy markup restyled under .tc-aff-profile-page; template only adds the
   page wrapper + breadcrumb head and moves the Delete link into the head.
   ========================================================================== */

.tc-aff-profile-page #view-affiliate .box-tabbed.box-invisible {
	background: transparent;
	border: 0;
	box-shadow: none;
}

/* Sub-tabs (Overview / Commissions / Payments) → underline style */
.tc-aff-profile-page #view-affiliate .box-tabbed > ul.tabs {
	display: flex;
	/* Figma 1551:14200: gap-32 and a #d1d7de rule (was 24 / #e8ecef). */
	gap: 32px;
	/* 14200 is 40 tall in total and its rule is an inside stroke, so a real
	   border-bottom pushed the whole page 3px down. */
	margin: 0;
	padding: 0;
	border-bottom: 0;
	box-shadow: inset 0 -1px 0 #d1d7de;
	background: transparent;
	list-style: none;
}
.tc-aff-profile-page #view-affiliate .box-tabbed > ul.tabs li,
.tc-aff-profile-page #view-affiliate .box-tabbed > ul.tabs li.active {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	float: none;
	width: auto;
	/* Figma I1551:14200;2470:105129 — p-8, 16/500/24 (was 12px/4px, 14/500/20). */
	padding: 8px;
	margin: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	letter-spacing: normal;
	color: #8493a8;
	cursor: pointer;
	text-align: left;
}
.tc-aff-profile-page #view-affiliate .box-tabbed > ul.tabs li.active {
	/* Figma's active label is #2a3648 (Text Dark), not #364152. */
	color: #2a3648;
	/* Inside stroke — a border-bottom makes the 40-tall tab 42. */
	box-shadow: inset 0 -2px 0 #006b70;
}

/* Tab wrappers lose the legacy box chrome */
.tc-aff-profile-page #view-affiliate .ui-affiliate-tab-wrapper {
	background: transparent;
	border: 0;
	box-shadow: none;
	padding: 0;
}

/* Personal block */
.tc-aff-profile-page #view-affiliate .ui-personal-block { position: relative; text-align: left; }
.tc-aff-profile-page #view-affiliate .ui-personal-block > img {
	width: 96px;
	height: 96px;
	border-radius: 16px;
	background: rgba(0, 200, 201, 0.1);
	object-fit: cover;
	float: left;
	margin-right: 16px;
}
.tc-aff-profile-page #view-affiliate .ui-personal-block .info { overflow: hidden; padding-top: 8px; }
.tc-aff-profile-page #view-affiliate .ui-personal-block .info-row.ui-affiliate-name {
	display: inline-block;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #364152;
}
.tc-aff-profile-page #view-affiliate .ui-personal-block .info-row-secondary.ui-affiliate-affiliate_id {
	display: block;
	font-size: 14px;
	line-height: 20px;
	color: #8493a8;
}
.tc-aff-profile-page #view-affiliate .ui-personal-block .info-row-secondary.ui-affiliate-affiliate_id:not(:empty)::before { content: "@"; }
.tc-aff-profile-page #view-affiliate .ui-personal-block .ui-view-affiliate-profile {
	display: inline-block;
	background: transparent;
	border: 0;
	box-shadow: none;
	padding: 0;
	margin: 4px 12px 0 0;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	color: #006b70;
	text-decoration: underline;
	cursor: pointer;
}
.tc-aff-profile-page #view-affiliate .tc-aff-profile-delete {
	display: inline-block;
	margin: 4px 0 0;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	color: #c53030;
	text-decoration: none;
	cursor: pointer;
}
.tc-aff-profile-page #view-affiliate .tc-aff-profile-delete::before { content: "\1F5D1  "; font-size: 11px; }

/* VIP heart → pill next to the name */
.tc-aff-profile-page #view-affiliate .ui-personal-block .ui-affiliate-favourite {
	position: static;
	display: inline-block;
	/* The 8 gap belongs to .tc-aff-profile-name-row now; keeping a margin here too
	   made it 16. */
	margin-left: 0;
	/* style.css dims the legacy heart to 0.6 until :hover. That washed BOTH the
	   badge's green and its label out — every colour audited correct while the
	   render was visibly wrong. 14212/14524 are fully opaque; `cursor: pointer`
	   keeps the toggle's affordance. */
	opacity: 1;
	cursor: pointer;
	width: auto;
	height: auto;
}
/* VIP badge — Figma 1551:14212 (Overview) / 1551:14524 (Commissions), identical:
   px-8 py-4, r8, gap-4, 12/500/16. Both render the ACTIVE state, so the colours
   below belong to `.ui-affiliate-favourite-active`. */
.tc-aff-profile-page #view-affiliate .ui-personal-block .ui-affiliate-favourite .heart {
	position: static;
	display: inline-flex;
	align-items: center;
	gap: 4px;
	box-sizing: border-box;
	width: auto;
	height: auto;
	transform: none;
	background: #e8ecef;
	color: #8493a8;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	/* Paragraph tokens here carry no tracking; legacy leaves 0.12px behind. */
	letter-spacing: normal;
	padding: 4px 8px;
	/* style.css puts a 1px #ffcc91 hairline on .heart — no border in 14212/14524,
	   and it made the badge 26 tall instead of 24. */
	border: 0;
	border-radius: 8px;
	text-indent: 0;
}
/* 14212/14524: Primitive Colors/Green/100 on Day/Text/Base — was #9ae6b4 on
   #2a3648, which is a different green and a different grey. */
.tc-aff-profile-page #view-affiliate .ui-personal-block.ui-affiliate-favourite-active .ui-affiliate-favourite .heart {
	background: #c6f6d5;
	color: #364152;
}
.tc-aff-profile-page #view-affiliate .ui-personal-block .ui-affiliate-favourite .heart-shadow { display: none; }

/* PayPal status → pill (blue-ish info pill per Figma) */
.tc-aff-profile-page #view-affiliate .ui-personal-block .info a.pure-button {
	display: inline-block;
	background: #cce4f6;
	border: 0;
	box-shadow: none;
	border-radius: 6px;
	padding: 4px 10px;
	margin: 8px 0 0;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	color: #2a3648;
}
.tc-aff-profile-page #view-affiliate .ui-personal-block .info a.pure-button.button-error { background: #fed7d7; }

/* Currency / date selects (top-right) → pills */
.tc-aff-profile-page #stats-date-range .dropdown { display: contents; }
.tc-aff-profile-page #stats-date-range .dropdown::after,
.tc-aff-profile-page #stats-date-range .dropdown::before { content: none; }
.tc-aff-profile-page #stats-date-range form.pure-form { display: inline-flex; gap: 8px; align-items: center; }
.tc-aff-profile-page #stats-date-range select {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	height: 36px;
	width: auto;
	flex: 0 0 auto;
	max-width: none;
	padding: 7px 34px 7px 13px;
	background: #ffffff url("/static/icons/affiliates/chevron-expand.svg") no-repeat right 17px center;
	background-size: 8px 4.94px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-size: 14px;
	color: #2b384a;
	cursor: pointer;
	box-shadow: none;
	margin: 0;
}

/* Stat rows → cards (the fifths ULs + commissions/payouts stat ULs) */
.tc-aff-profile-page #view-affiliate .affiliates-list-stats ul.self-clear {
	display: flex;
	gap: 16px;
	width: 100%;
	margin: 0 0 16px;
	padding: 0;
	list-style: none;
}
.tc-aff-profile-page #view-affiliate .affiliates-list-stats ul.self-clear > li {
	flex: 1 1 0;
	min-width: 0;
	max-width: none;
	float: none;
	width: auto;
	background: #ffffff;
	border: 0;
	border-radius: 12px;
	/* 1551:14216 — p-24 with an inside stroke gives Figma's 96 exactly; a real
	   border plus p-20 measured 90. */
	box-shadow: inset 0 0 0 1px #e8ecef;
	filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.05));
	padding: 24px;
	margin: 0;
	text-align: left;
	display: flex;
	flex-direction: column;
	gap: 4px;
}
.tc-aff-profile-page #view-affiliate .affiliates-list-stats ul.self-clear > li h6 {
	order: 1;
	margin: 0;
	/* I1551:14216;110866:1465 — the whole text wrapper is Inter Semi Bold. main.css
	   sets letter-spacing:-1px on every h1-h6, so it must be declared here. */
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 12px;
	font-weight: 600;
	line-height: 16px;
	letter-spacing: 0.48px;
	text-transform: uppercase;
	color: #8493a8;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
/* I1551:14216;110866:1467 — 20/600/28 Inter Semi Bold, tracking 0. style.css sets
   `.affiliates-list-stats h5 { letter-spacing: -2px }` (the legacy big-number look)
   and main.css sets -1px on every heading; neither was overridden, so the values
   rendered visibly squeezed against the design. */
.tc-aff-profile-page #view-affiliate .affiliates-list-stats ul.self-clear > li h5 {
	order: 2;
	margin: 0;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	letter-spacing: normal;
	color: #364152;
}
/* The value is wrapped in a bind-html span, and large numbers additionally get a
   .large-number class — both must carry the same type as the <p> Figma draws.
   The `split_period` filter also wraps the decimals in an <em> ($14,734<em>.49</em>).
   style.css renders that as a superscript — `font-size:60%; vertical-align:top;
   position:absolute; margin:0.2em 0 0 0.15em` — so overriding the type alone left
   ".49" detached and offset. 14216 draws "$675,451.00" as one uniform 20/600 run,
   so the positioning has to be undone too. */
.tc-aff-profile-page #view-affiliate .affiliates-list-stats ul.self-clear > li h5 span,
.tc-aff-profile-page #view-affiliate .affiliates-list-stats ul.self-clear > li h5 .large-number,
.tc-aff-profile-page #view-affiliate .affiliates-list-stats ul.self-clear > li h5 em {
	position: static;
	display: inline;
	margin: 0;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 20px;
	font-style: normal;
	font-weight: 600;
	line-height: 28px;
	letter-spacing: normal;
	vertical-align: baseline;
	color: #364152;
}
/* 1551:14213 — the two card rows are 16 apart (293 → 405). The legacy block's
   own 24 margin wins the collapse against the ul's 16 and pushed every section
   below it down by 8. */
.tc-aff-profile-page #view-affiliate .affiliates-list-stats { width: 100%; max-width: none; margin-bottom: 16px; }
/* ul.self-clear is a flex row, so its clearfix ::after counts as a sixth item and
   consumes one 16px gap — the cards measured 214.4 instead of Figma's 217.6. */
.tc-aff-profile-page #view-affiliate .affiliates-list-stats ul.self-clear::before,
.tc-aff-profile-page #view-affiliate .affiliates-list-stats ul.self-clear::after { content: none; }

/* ===== Profile body — Figma 1551:14168 / 14170 (gated TC-12341) =============
   Measured against the page frame's own 1152 container. The earlier pass never
   checked container-relative positions, so it missed that the legacy
   .affiliates-refine panel and the tab wrapper's 2em padding held every section
   24px in from x=0, and that the frame draws no panel and no dividers at all. */

/* 14168 has no card behind the header. .affiliates-refine's `margin: -2em -2em 0`
   exists purely to cancel the tab wrapper's 2em padding (now gated off in the
   template, since helpers.css sets it !important), so it goes with it. */
.tc-aff-profile-page #view-affiliate .affiliates-refine {
	display: flex;
	align-items: flex-start;
	box-sizing: border-box;
	width: auto;
	/* 1551:14392 — the badge's top edge is at 148, i.e. 12 below the tab rule
	   (136); the avatar row at 160 and the first card row at 293. */
	margin: 12px 0 36px;
	padding: 0;
	border: 0;
	background: transparent;
	text-align: left;
}
/* 1551:14201 — the avatar frame is 160..257: 12 below the badge, and 97 tall
   because its 89 avatar is inset 4 top and bottom. */
.tc-aff-profile-page #view-affiliate .affiliates-refine > .ui-personal-block {
	float: none;
	margin-top: 12px;
	padding: 4px 0;
}

/* 1551:14392 — the PayPal state badge sits top-right of the header row, opposite
   the avatar. The legacy markup keeps it under the name. The real <a> moves with
   its siblings (business email + hint), so no state or handler is lost. */
.tc-aff-profile-page #view-affiliate .tc-aff-profile-paypal {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-left: auto;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 12px;
	line-height: 16px;
	color: #364152;
}
.tc-aff-profile-page #view-affiliate .tc-aff-profile-paypal a.pure-button {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	box-sizing: border-box;
	height: 28px;
	margin: 0;
	padding: 6px 8px;
	border: 0;
	border-radius: 6px;
	background: #2a76bd;
	box-shadow: none;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	letter-spacing: normal;
	text-transform: none;
	text-align: center;
	white-space: nowrap;
	color: #ffffff;
}
.tc-aff-profile-page #view-affiliate .tc-aff-profile-paypal a.pure-button b { font-weight: 500; }
/* Figma draws only the connected state. The disconnected one keeps a distinct
   colour so the two remain tellable apart. */
.tc-aff-profile-page #view-affiliate .tc-aff-profile-paypal a.pure-button.button-error {
	background: #fdeceb;
	color: #d13f36;
}
/* The badge carries no icon in 14392 — its only child is the label. */
.tc-aff-profile-page #view-affiliate .tc-aff-profile-paypal a.pure-button i { display: none; }

/* 14168 has no dividers between the header, the cards and the sections. */
.tc-aff-profile-page #view-affiliate .ui-affiliate-tab-wrapper > hr { display: none; }
/* Legacy float spacers; inert once nothing in these sections floats. `:empty` is
   load-bearing — the Commissions and Payments tabs put `.margin-top` on the stats
   block itself (`<div class="affiliates-list-stats margin-top">`), so matching the
   class alone hid every stat card on those tabs. */
.tc-aff-profile-page #view-affiliate .ui-affiliate-tab-wrapper > div.margin-top:not(.margin-bottom):empty,
.tc-aff-profile-page #view-affiliate .ui-affiliate-tab-wrapper > .clear.margin-bottom:empty { display: none; }

/* ===== Settings — 1551:14228 ============================================== */

/* Card row 2 ends at 501; the section title is 24 below it. */
.tc-aff-profile-page #view-affiliate .ui-affiliate-tab-wrapper > .margin-top.margin-bottom { margin: 24px 0 0; }

/* 1551:14230 / 14233 — "Settings" and "Products" are both 20/600/28, gap-17. */
.tc-aff-profile-page #view-affiliate h1 {
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	letter-spacing: normal;
	color: #364152;
	margin: 0 0 17px;
}

/* 1551:14231 Label */
.tc-aff-profile-page #view-affiliate label[for="affiliate-master"] {
	display: block;
	margin: 0 0 4px;
	padding: 0;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	letter-spacing: normal;
	color: #2b384a;
	text-transform: none;
}
/* 1551:14231 Input Area — p-8 with a 16 icon slot, so the chevron's 8x4.94 glyph
   centres 12 from the right edge. */
.tc-aff-profile-page #affiliate-cookie-lifetime {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	box-sizing: border-box;
	display: block;
	width: 100%;
	max-width: none;
	height: 36px;
	margin: 0;
	padding: 8px 32px 8px 8px;
	background: #ffffff url("/static/icons/affiliates/select-chevron.svg") no-repeat right 12px center;
	background-size: 8px 4.94px;
	border: 0;
	border-radius: 8px;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #364152;
	/* Inside stroke: 8 + 20 + 8 = Figma's 36. */
	box-shadow: inset 0 0 0 1px #d1d7de;
	cursor: pointer;
}
/* 1551:14231 Additional Text */
.tc-aff-profile-page #view-affiliate #affiliate-cookie-lifetime + div {
	margin: 4px 0 0;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 12px;
	font-weight: 400;
	line-height: 16px;
	color: #8493a8;
}
/* 1551:14232 — Save settings sits at x=0 under the field, not floated right. */
.tc-aff-profile-page #view-affiliate .margin-top.margin-bottom > .pull-right {
	float: none;
	margin: 17px 0 0;
}
.tc-aff-profile-page #view-affiliate .affiliate-settings-save {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	height: 28px;
	padding: 6px 8px;
	border: 0;
	border-radius: 6px;
	background: #006b70;
	box-shadow: none;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	letter-spacing: normal;
	text-transform: none;
	color: #ffffff;
	cursor: pointer;
}

/* ===== Commissions tab — Figma 1551:14481 ================================= */

/* 1551:14533 "Info" — a bordered callout, not the legacy grey panel
   (`body.root .empty-state` paints #f9fafb with a 3.87em/3em padding). py-32 with
   NO horizontal padding; the copy is centred and already matches the frame. */
.tc-aff-profile-page #view-affiliate .empty-state,
.tc-aff-profile-page #view-affiliate .empty-state.empty-state-help {
	display: flex;
	flex-direction: column;
	align-items: center;
	box-sizing: border-box;
	width: 100%;
	/* Cards end at 365, the callout starts at 404. Collapses against the stats
	   block's own 16 bottom margin, so this is the effective gap. */
	margin: 39px 0 0;
	padding: 32px 0;
	border: 0;
	/* Inside stroke, so the 32 padding stays exactly 32. */
	box-shadow: inset 0 0 0 1px #d1d7de;
	border-radius: 12px;
	background: transparent;
	text-align: center;
}
/* 1551:14535 — the heading, then 14534's gap-4 to the body copy. Figma groups the
   two in a wrapper the markup has no element for, so the gaps live on the leaves. */
.tc-aff-profile-page #view-affiliate .empty-state h2 {
	width: 100%;
	margin: 0 0 4px;
	padding: 0;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 18px;
	font-weight: 600;
	line-height: 28px;
	letter-spacing: normal;
	color: #364152;
	cursor: default;
}
/* 1551:14536 — each paragraph is 14/400/20 #2a3648 with mb-8. */
.tc-aff-profile-page #view-affiliate .empty-state p {
	display: block;
	width: 100%;
	margin: 0 0 8px;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	letter-spacing: normal;
	color: #2a3648;
	cursor: default;
}
/* 14533 declares gap-29 to the button, but that gap is measured from 14534, which
   Figma clamped to h-83 while its own copy is ~100 tall — applying 29 verbatim puts
   the button 17 BELOW where Figma draws it. 14537's own y=144 is the reliable
   number, and it is what the frame renders: 32 + 28 + 4 + 40 + 8 + 20 + 12 = 144. */
.tc-aff-profile-page #view-affiliate .empty-state p:last-of-type { margin-bottom: 12px; }
/* 1551:14537 — solid teal, h-32, px-12 py-8, r6, gap-4. */
.tc-aff-profile-page #view-affiliate .empty-state a.pure-button,
.tc-aff-profile-page #view-affiliate .empty-state a.pure-button.button-large {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 4px;
	box-sizing: border-box;
	width: auto;
	height: 32px;
	margin: 0;
	padding: 8px 12px;
	border: 0;
	border-radius: 6px;
	background: #006b70;
	box-shadow: none;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	letter-spacing: normal;
	text-transform: none;
	text-decoration: none;
	white-space: nowrap;
	color: #ffffff;
	cursor: pointer;
}
/* I1551:14537;111116:1652 — Figma's own open-in-new glyph at its native 12 in a
   16 slot, replacing the legacy FontAwesome chevron. */
.tc-aff-profile-page #view-affiliate .empty-state a.pure-button > i {
	width: 16px;
	height: 16px;
	margin: 0;
	font-size: 0;
	background: url("/static/icons/affiliates/open-external.svg") no-repeat center;
	background-size: 12px 12px;
}
.tc-aff-profile-page #view-affiliate .empty-state a.pure-button > i::before { content: none; }

/* ===== Products — 1551:14233 / 14234 / 14384 ============================== */

/* Save settings ends at 699; the Products title is 24 below. */
.tc-aff-profile-page #view-affiliate .tc-aff-products-head { margin: 24px 0 0; }
.tc-aff-profile-page #view-affiliate .tc-aff-products-head h1 { margin: 0; }

/* 1551:14234 — the toolbar: count on the left, tools on the right. Title ends at
   751, toolbar at 775. */
.tc-aff-profile-page #view-affiliate .tc-aff-products-bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	margin: 24px 0 0;
	min-height: 32px;
}
/* 1551:14235 */
.tc-aff-profile-page #view-affiliate .tc-aff-products-count {
	margin: 0;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #2a3648;
	white-space: nowrap;
}
/* 1551:14236 */
.tc-aff-profile-page #view-affiliate .tc-aff-products-tools {
	display: flex;
	align-items: center;
	gap: 8px;
}
/* 1551:14237 */
.tc-aff-profile-page #view-affiliate .tc-aff-products-search {
	display: flex;
	align-items: center;
	gap: 8px;
	box-sizing: border-box;
	width: 200px;
	height: 32px;
	padding: 8px 13px;
	background: #ffffff;
	/* Inside stroke: 8 + 16 + 8 = Figma's 32. A real border makes it 34. */
	border: 0;
	box-shadow: inset 0 0 0 1px #d1d7de;
	border-radius: 6px;
}
.tc-aff-profile-page #view-affiliate .tc-aff-products-search::before {
	content: '';
	flex: 0 0 auto;
	width: 16px;
	height: 16px;
	background: url("/static/icons/affiliates/search.svg") no-repeat center;
	background-size: 11.66px 11.66px;
}
.tc-aff-profile-page #view-affiliate .tc-aff-products-search input {
	flex: 1 1 0;
	min-width: 0;
	height: 16px;
	margin: 0;
	padding: 0;
	border: 0;
	background: transparent;
	box-shadow: none;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 12px;
	font-weight: 400;
	line-height: 16px;
	color: #364152;
}
.tc-aff-profile-page #view-affiliate .tc-aff-products-search input::placeholder { color: #afbbc9; }
/* 1551:14238 */
.tc-aff-profile-page #view-affiliate .tc-aff-products-sort {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	box-sizing: border-box;
	height: 32px;
	padding: 8px 12px;
	background: #ffffff;
	border: 0;
	box-shadow: inset 0 0 0 1px #e8ecef;
	border-radius: 6px;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	letter-spacing: normal;
	text-transform: none;
	color: #364152;
	cursor: pointer;
}
.tc-aff-profile-page #view-affiliate .tc-aff-products-sort::before {
	content: '';
	flex: 0 0 auto;
	width: 16px;
	height: 16px;
	background: url("/static/icons/affiliates/sort.svg") no-repeat center;
	background-size: 14.67px 12.67px;
}
.tc-aff-profile-page #view-affiliate .tc-aff-products-sort.active { background: #f6f8f9; }
/* 1551:14239/14247 — Figma draws this as the last base of a button group, so only
   its right corners are rounded. */
.tc-aff-profile-page #view-affiliate .tc-aff-products-tools .ui-affiliate-grant {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	box-sizing: border-box;
	height: 32px;
	margin: 0;
	padding: 8px 13px;
	background: #f6f8f9;
	border: 0;
	box-shadow: inset 0 0 0 1px #d1d7de;
	border-radius: 0 6px 6px 0;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	letter-spacing: normal;
	text-transform: none;
	color: #364152;
	cursor: pointer;
}

/* Sort panel — 14238 is a control, not decoration, so it drives a real reorder of
   the grid. The panel reuses the pattern the affiliates list already uses. */
.tc-aff-profile-page #view-affiliate .tc-aff-products-sortpanel {
	display: none;
	align-items: center;
	gap: 8px;
	margin: 16px 0 0;
	padding: 12px 16px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 12px;
	box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.05);
}
.tc-aff-profile-page #view-affiliate .tc-aff-products-sortpanel.open { display: flex; }
.tc-aff-profile-page #view-affiliate .tc-aff-products-sortpanel label {
	margin: 0;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 12px;
	font-weight: 600;
	line-height: 16px;
	letter-spacing: 0.48px;
	text-transform: uppercase;
	color: #8493a8;
}
.tc-aff-profile-page #view-affiliate .tc-aff-products-sortpanel select {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	box-sizing: border-box;
	width: auto;
	height: 32px;
	margin: 0;
	padding: 8px 32px 8px 13px;
	background: #ffffff url("/static/icons/affiliates/select-chevron.svg") no-repeat right 12px center;
	background-size: 8px 4.94px;
	border: 1px solid #d1d7de;
	border-radius: 6px;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 16px;
	color: #364152;
	box-shadow: none;
	cursor: pointer;
}

/* ===== Product cards — 1551:14248 / 14249 ================================ */

/* Toolbar ends at 807; the first card row is at 831. Rows are 20 apart across
   and 24 down (831 → 1072.5 = 217.5 + 24). */
/* The markup splits the cards into one .pure-g row per approval status; 14168 is
   one continuous 3-up grid. `display: contents` on the rows lifts every card into
   the outer grid, which also lets the Sort control reorder across statuses via
   `order` without moving nodes between parents. */
.tc-aff-profile-page #view-affiliate #affiliate-dashboard-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px 20px;
	margin: 24px 0 0;
}
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-row {
	display: contents;
	margin: 0;
}
/* `display: contents` removes the row's own box but NOT its ::after — the
   .self-clear float clearfix survives as a real grid item and takes the first
   cell. Nothing in the grid floats any more, so drop it. */
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-row::before,
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-row::after { content: none; }
/* .pure-g hands FreeSans + letter-spacing:-0.31em to non-pure-u children, and
   main.css's own base rule re-declares 13px/-apple-system on the pure-u columns.
   Fix it on the grid itself rather than on each leaf. */
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-row,
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-row > [class*="pure-u"] {
	font-family: 'Inter', -apple-system, sans-serif;
	letter-spacing: normal;
}
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-row > .affiliate-dashboard-grid-item-pad {
	width: auto;
	padding: 0;
	display: flex;
}
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item-pad.tc-aff-hidden { display: none; }
/* 1551:14249 — p-20, gap-8, r10, #e8ecef hairline. Inside stroke, as everywhere
   else in this design, so the 20 padding stays exactly 20. */
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 8px;
	box-sizing: border-box;
	width: 100%;
	padding: 20px;
	margin: 0;
	border: 0;
	border-radius: 10px;
	background: #ffffff;
	box-shadow: inset 0 0 0 1px #e8ecef;
	filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.05));
	overflow: visible;
	min-height: 0;
}
/* The card is .self-clear; that clearfix ::after is display:table, so as a flex
   item it contributes a real gap-8 and made the card 225.5 instead of 217.5.
   Nothing inside the card floats now. */
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item::before,
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item::after { content: none; }
/* 1551:14250 — the thumbnail becomes the icon area: 48 round-square, #f6f8f9,
   holding a 24 slot with the 20x20 inventory glyph at its native size. */
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item .thumbnail {
	flex: 0 0 auto;
	box-sizing: border-box;
	width: 48px;
	height: 48px;
	margin: 0;
	padding: 0;
	float: none;
	position: relative;
	border-radius: 24px;
	background: #f6f8f9 url("/static/icons/affiliates/card-inventory.svg") no-repeat center;
	background-size: 20px 20px;
	overflow: hidden;
}
/* 14249 shows the product icon, never the product's own logo. */
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item .thumbnail > img,
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item .thumbnail > .img { display: none; }
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item .thumbnail .ribbon { display: none; }
/* .info is a plain pass-through so its children are the card's own flex items and
   pick up the card's gap-8 — Figma has no wrapper between them. */
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item .info {
	display: contents;
	padding: 0;
	margin: 0;
	float: none;
}
/* 1551:14253 */
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item .info h1 {
	box-sizing: border-box;
	width: 100%;
	margin: 0;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 18px;
	font-weight: 600;
	line-height: 25.5px;
	letter-spacing: -0.4316px;
	color: #2a3648;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
/* 1551:14254 / 14255 */
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item .info p.status,
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item .tc-aff-card-received {
	box-sizing: border-box;
	width: 100%;
	margin: 0;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	letter-spacing: normal;
	color: #364152;
}
/* 14249 has no info trigger, but the tooltip is the only place the affiliate's
   answers to the product's custom question are readable — dropping it would lose
   a capability, so it is retained in the card's top-right corner, clear of every
   node Figma does place. */
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item .html-tooltip-trigger {
	position: absolute;
	top: 20px;
	right: 20px;
	line-height: 0;
	color: #8493a8;
	cursor: pointer;
}
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item .html-tooltip-trigger .fa-info-circle { font-size: 14px; }

/* 14254 draws the whole referral line in one colour. The value is the legacy
   inline-edit control, so it keeps its pencil affordance and its handler — only
   the legacy teal goes. */
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item .info p.status .ui-affiliate-parent,
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item .info p.status .ui-affiliate-parent span {
	color: #364152;
	font-style: normal;
}
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item .info p.status .ui-affiliate-parent .fa-pencil-alt { color: #8493a8; }

/* 1551:14256 / 14258 — both buttons on one row, 12 apart (158 → 170). */
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item .tc-aff-card-actions {
	display: flex;
	align-items: center;
	gap: 12px;
}
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item .ui-affiliate-manage,
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item a.pure-button,
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item .pure-button-block.ui-affiliate-manage,
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item a.pure-button.pure-button-block {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	width: auto;
	height: 32px;
	/* 14257: p-8 plus a px-4 text layout inside. */
	padding: 8px 12px;
	margin: 0;
	background: #ffffff;
	border: 0;
	box-shadow: inset 0 0 0 1px #e8ecef;
	border-radius: 6px;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	letter-spacing: normal;
	text-transform: none;
	color: #364152;
	text-decoration: none;
	white-space: nowrap;
	cursor: pointer;
}
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item .ui-affiliate-manage[disabled],
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item a.pure-button[disabled] {
	opacity: 0.5;
	pointer-events: none;
}

/* ===== Products footer — 1551:14384 ====================================== */

.tc-aff-profile-page #view-affiliate .tc-aff-products-foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin: 24px 0 0;
}
/* 1551:14385 */
.tc-aff-profile-page #view-affiliate .tc-aff-products-perpage {
	display: flex;
	align-items: center;
	gap: 8px;
}
/* 1551:14386 */
.tc-aff-profile-page #view-affiliate .tc-aff-products-perpage select {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	box-sizing: border-box;
	width: 72px;
	height: 32px;
	margin: 0;
	padding: 8px 29px 8px 13px;
	background: #ffffff url("/static/icons/affiliates/expand-more.svg") no-repeat right 13px center;
	background-size: 8px 4.94px;
	border: 0;
	box-shadow: inset 0 0 0 1px #d1d7de;
	border-radius: 8px;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 16px;
	color: #364152;
	cursor: pointer;
}
/* 1551:14387 */
.tc-aff-profile-page #view-affiliate .tc-aff-products-perpage span {
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #2a3648;
	white-space: nowrap;
}
/* 1551:14388 */
.tc-aff-profile-page #view-affiliate .tc-aff-products-pager {
	display: flex;
	align-items: center;
	gap: 8px;
}
/* 1551:14389 / 14391 */
.tc-aff-profile-page #view-affiliate .tc-aff-products-pager .tc-aff-products-page-step {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	width: 32px;
	height: 32px;
	padding: 8px;
	background: #f6f8f9;
	border: 0;
	box-shadow: inset 0 0 0 1px #d1d7de;
	border-radius: 6px;
	cursor: pointer;
}
.tc-aff-profile-page #view-affiliate .tc-aff-products-pager .tc-aff-products-page-step::before {
	content: '';
	width: 16px;
	height: 16px;
	background-repeat: no-repeat;
	background-position: center;
	background-size: 4.94px 8px;
}
.tc-aff-profile-page #view-affiliate .tc-aff-products-pager .tc-aff-products-page-prev::before {
	background-image: url("/static/icons/affiliates/pager-prev.svg");
}
.tc-aff-profile-page #view-affiliate .tc-aff-products-pager .tc-aff-products-page-next::before {
	background-image: url("/static/icons/affiliates/pager-next.svg");
}
.tc-aff-profile-page #view-affiliate .tc-aff-products-pager .tc-aff-products-page-step[disabled] {
	opacity: 0.5;
	pointer-events: none;
}
/* 1551:14390 */
.tc-aff-profile-page #view-affiliate .tc-aff-products-pager .tc-aff-products-page-num {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 4px;
	box-sizing: border-box;
	width: 32px;
	height: 32px;
	padding: 8px 12px;
	background: #ffffff;
	border: 0;
	box-shadow: inset 0 0 0 1px #e8ecef;
	border-radius: 6px;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	letter-spacing: normal;
	text-align: center;
	color: #364152;
	cursor: pointer;
}
.tc-aff-profile-page #view-affiliate .tc-aff-products-pager .tc-aff-products-page-num.active { background: #f6f8f9; }

/* Footer: Back only (Delete moved to the head) */
.tc-aff-profile-page #view-affiliate + * .back-link,
.tc-aff-profile-page #view-affiliate .pure-controls .back-link {
	display: inline-flex;
	align-items: center;
	height: 36px;
	padding: 8px 18px;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-size: 14px;
	font-weight: 500;
	color: #364152;
	box-shadow: none;
}
.tc-aff-profile-page #stats-date-range select#stats-currency { min-width: 84px; }

/* ============================================================================
   Product options + Rules tabs (gated with TC-12324 — no dedicated tickets yet)
   ========================================================================== */

/* --- Product options ------------------------------------------------------ */
.tc-aff-options-page #campaigns-list-campaigns-wrap {
	background: transparent;
	border: 0;
	box-shadow: none;
	padding: 0;
}
.tc-aff-options-page #campaigns-list-search-field {
	width: 260px;
	height: 36px;
	padding: 7px 12px 7px 36px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	background: #ffffff url("/static/icons/affiliates/search.svg") no-repeat 12px center;
	background-size: 16px 16px;
	font-size: 14px;
	color: #364152;
	box-shadow: none;
	float: right;
	margin: 0 0 12px;
}
.tc-aff-options-page #campaigns-list-title {
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #364152;
	margin: 8px 0 16px;
	text-align: left;
}
.tc-aff-options-page #campaigns-list.campaigns-list-list {
	display: flex;
	flex-direction: column;
	gap: 16px;
}
.tc-aff-options-page #campaigns-list.campaigns-list-list .box-list-product-row {
	position: relative;
	display: flex;
	align-items: flex-start;
	gap: 16px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 8px;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	padding: 16px;
	margin: 0;
	overflow: visible;
}
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-name {
	display: flex;
	align-items: center;
	gap: 16px;
	flex: 1 1 auto;
	min-width: 0;
	float: none;
	width: auto;
}
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-thumbnail {
	position: relative;
	width: 96px;
	height: 96px;
	border-radius: 12px;
	overflow: hidden;
	flex: 0 0 auto;
	float: none;
	margin: 0;
}
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-thumbnail img,
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-thumbnail div {
	width: 100%;
	height: 100%;
	object-fit: cover;
	background-size: cover;
}
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-thumbnail .ribbon {
	position: absolute;
	left: auto;
	right: auto;
	top: auto;
	bottom: 4px;
	left: 4px;
	width: auto;
	height: auto;
	transform: none;
	overflow: visible;
	z-index: 1;
	/* Bare wrapper — the legacy square teal box would frame the rounded pill. */
	background: transparent;
	border: 0;
	border-radius: 0;
	box-shadow: none;
}
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-thumbnail .ribbon span {
	position: static;
	display: inline-block;
	transform: none;
	width: auto;
	background: #9ae6b4;
	color: #2a3648;
	font-size: 11px;
	font-weight: 500;
	line-height: 14px;
	padding: 2px 6px;
	border-radius: 999px;
	box-shadow: none;
	text-transform: uppercase;
	letter-spacing: 0.3px;
	text-align: center;
}
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-title .list-product-name-el {
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #364152;
}
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-title .list-product-label-el {
	display: block;
	font-size: 14px;
	line-height: 20px;
	color: #8493a8;
}
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions {
	display: flex;
	align-items: center;
	gap: 8px;
	flex: 0 0 auto;
	float: none;
	width: auto;
	position: static;
}
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .button-submenu {
	height: 32px;
	padding: 8px 12px;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 6px;
	font-size: 13px;
	font-weight: 500;
	color: #364152;
	box-shadow: none;
}
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .ui-affiliates-campaigns-embed {
	height: 32px;
	padding: 8px 12px;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 6px;
	font-size: 13px;
	font-weight: 500;
	color: #364152;
	box-shadow: none;
}

/* --- Rules ---------------------------------------------------------------- */
.tc-aff-rules-page #view-affiliates-rules > .box {
	background: transparent;
	border: 0;
	box-shadow: none;
	padding: 0;
}
.tc-aff-rules-page .ui-autoresponder {
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 12px;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	padding: 24px;
}
.tc-aff-rules-page .ui-autoresponder select {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	height: 40px;
	padding: 8px 34px 8px 12px;
	background: #ffffff url("/static/icons/affiliates/select-chevron.svg") no-repeat right 12px center;
	background-size: 8px 4.94px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-size: 14px;
	color: #364152;
	box-shadow: none;
}
.tc-aff-rules-page .ui-autoresponder input[type="text"],
.tc-aff-rules-page .ui-autoresponder input[type="number"] {
	height: 40px;
	padding: 8px 12px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-size: 14px;
	color: #364152;
	box-shadow: none;
}
.tc-aff-rules-page .ui-autoresponder-add {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	height: 36px;
	padding: 8px 14px;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-size: 14px;
	font-weight: 500;
	color: #364152;
	box-shadow: none;
	cursor: pointer;
}
.tc-aff-rules-page .box-footer {
	display: flex;
	justify-content: flex-end;
	background: transparent;
	border: 0;
	padding: 16px 0 0;
}
.tc-aff-rules-page .box-footer .ui-save {
	display: inline-flex;
	align-items: center;
	height: 36px;
	padding: 8px 18px;
	background: #006b70;
	border: 1px solid #006b70;
	border-radius: 8px;
	font-size: 14px;
	font-weight: 500;
	color: #ffffff;
	box-shadow: none;
	cursor: pointer;
}
.tc-aff-options-page #campaigns-list.campaigns-list-list .box-list-product-row {
	width: 100%;
	max-width: none;
	min-height: 0;
	height: auto;
	float: none;
}
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-thumbnail .ribbon { bottom: auto; top: 4px; }
.tc-aff-options-page #campaigns-list { width: 100%; max-width: none; }
.tc-aff-options-page #campaigns-list .box-list-product-row {
	width: 100%;
	max-width: none;
	float: none;
}
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-add,
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-remove {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	height: 32px;
	padding: 8px 12px;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 6px;
	font-size: 13px;
	font-weight: 500;
	color: #364152;
	box-shadow: none;
	cursor: pointer;
}

/* ============================================================================
   Affiliate modal chrome — applies only when a reskinned affiliates page set
   the `tc-aff-reskin` body marker (modals mount at body level, outside the
   gated page wrapper).
   ========================================================================== */

body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-import,
body.tc-aff-reskin .ajs-dialog.tc-profile,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize,
body.tc-aff-reskin .ajs-dialog.tc-payout,
body.tc-aff-reskin .ajs-dialog.tc-modal-payout_cancel,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-inline-manage {
	border-radius: 16px;
	overflow: hidden;
	box-shadow: 0 8px 32px rgba(0, 0, 0, 0.14);
	background: #ffffff;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-import .ajs-header,
body.tc-aff-reskin .ajs-dialog.tc-profile .ajs-header,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ajs-header,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-header,
body.tc-aff-reskin .ajs-dialog.tc-payout .ajs-header,
body.tc-aff-reskin .ajs-dialog.tc-modal-payout_cancel .ajs-header,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-inline-manage .ajs-header {
	padding: 16px 24px;
	border-bottom: 1px solid #e8ecef;
	background: #ffffff;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #364152;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-import .ajs-content,
body.tc-aff-reskin .ajs-dialog.tc-profile .ajs-content,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ajs-content,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-content,
body.tc-aff-reskin .ajs-dialog.tc-payout .ajs-content,
body.tc-aff-reskin .ajs-dialog.tc-modal-payout_cancel .ajs-content,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-inline-manage .ajs-content {
	padding: 20px 24px;
	color: #364152;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-import .ajs-footer,
body.tc-aff-reskin .ajs-dialog.tc-profile .ajs-footer,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ajs-footer,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-footer,
body.tc-aff-reskin .ajs-dialog.tc-payout .ajs-footer,
body.tc-aff-reskin .ajs-dialog.tc-modal-payout_cancel .ajs-footer,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-inline-manage .ajs-footer {
	padding: 12px 24px;
	border-top: 1px solid #e8ecef;
	background: #ffffff;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-import .ajs-footer .ajs-button,
body.tc-aff-reskin .ajs-dialog.tc-profile .ajs-footer .ajs-button,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ajs-footer .ajs-button,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-footer .ajs-button,
body.tc-aff-reskin .ajs-dialog.tc-payout .ajs-footer .ajs-button,
body.tc-aff-reskin .ajs-dialog.tc-modal-payout_cancel .ajs-footer .ajs-button,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-inline-manage .ajs-footer .ajs-button {
	height: 40px;
	padding: 8px 18px;
	border-radius: 8px;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 14px;
	font-weight: 500;
	background: #ffffff;
	border: 1px solid #d1d7de;
	color: #364152;
	box-shadow: none;
	text-shadow: none;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-import .ajs-footer .ajs-button.ajs-ok,
body.tc-aff-reskin .ajs-dialog.tc-profile .ajs-footer .ajs-button.ajs-ok,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ajs-footer .ajs-button.ajs-ok,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-footer .ajs-button.ajs-ok,
body.tc-aff-reskin .ajs-dialog.tc-payout .ajs-footer .ajs-button.ajs-ok,
body.tc-aff-reskin .ajs-dialog.tc-modal-payout_cancel .ajs-footer .ajs-button.ajs-ok,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-inline-manage .ajs-footer .ajs-button.ajs-ok {
	background: #006b70;
	border-color: #006b70;
	color: #ffffff;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-import .ajs-footer .ajs-button[disabled],
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ajs-footer .ajs-button[disabled] {
	opacity: 0.5;
}

/* Inputs & selects inside affiliate modals */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-import .ajs-content input[type="text"],
body.tc-aff-reskin .ajs-dialog.tc-profile .ajs-content input[type="text"],
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ajs-content input[type="text"],
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-content input[type="text"],
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-content input[type="number"] {
	height: 40px;
	padding: 8px 12px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-size: 14px;
	color: #364152;
	box-shadow: none;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-content select,
body.tc-aff-reskin .ajs-dialog.tc-profile .ajs-content select {
	-webkit-appearance: none;
	appearance: none;
	height: 40px;
	padding: 8px 34px 8px 12px;
	background: #ffffff url("/static/icons/affiliates/select-chevron.svg") no-repeat right 12px center;
	background-size: 8px 4.94px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-size: 14px;
	color: #364152;
	box-shadow: none;
}
body.tc-aff-reskin .ajs-dialog .ajs-content label {
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #364152;
}

/* Product checklists (import + grant) — clean bordered rows */
body.tc-aff-reskin .ajs-dialog .ui-affiliate-import-product-select,
body.tc-aff-reskin .ajs-dialog .ui-affiliate-grant-product-select {
	list-style: none;
	margin: 12px 0 0;
	padding: 0;
}
body.tc-aff-reskin .ajs-dialog .ui-affiliate-import-product-select > li,
body.tc-aff-reskin .ajs-dialog .ui-affiliate-grant-product-select > li {
	border-bottom: 1px solid #e8ecef;
	padding: 12px 4px;
	margin: 0;
}
body.tc-aff-reskin .ajs-dialog .ui-affiliate-import-product-select > li:last-child,
body.tc-aff-reskin .ajs-dialog .ui-affiliate-grant-product-select > li:last-child {
	border-bottom: 0;
}

/* Recovered 2026-07-17: this region (underline tabs, profile minitabs and the
   import-modal component styles) was lost to a bad scripted edit and restored
   from the browser's parsed stylesheet — comments in it did not survive. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .box-tabbed { background: transparent; border: 0px; box-shadow: none; }
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .box-tabbed > ul.tabs {
	display: flex;
	/* Figma 1551:14100: gap 16, border-b #d1d7de (--color-border). */
	gap: 16px;
	align-items: center;
	margin: 16px 0 0;
	padding: 0;
	border-bottom: 0;
	box-shadow: inset 0 -1px 0 #d1d7de;
	background: transparent;
	list-style: none;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .box-tabbed > ul.tabs li,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .box-tabbed > ul.tabs li.active {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	/* Icon-to-label gap 8; the tab itself is padded 8 on every side. */
	gap: 8px;
	float: none;
	width: auto;
	padding: 8px;
	margin: 0;
	/* Figma's border-b-2 is an inside stroke: the tab is 8 + 24 + 8 = 40 WITH it, so a
	   real border would make it 42. Drawn as an inset shadow on .active instead. */
	border: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	letter-spacing: 0;
	/* --color-text-light */
	color: #8493a8;
	cursor: pointer;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .box-tabbed > ul.tabs li.active {
	/* --color-text-dark, not the #2b384a the modal header uses. */
	color: #2a3648;
	/* --color-text-primary */
	box-shadow: inset 0 -2px 0 #006b70;
}
/* Figma 1551:14100 draws each tab icon as a 20px SVG. They recolour with the tab's
   state, so they are masks tinted by currentColor — mask-size is the native viewBox.
   NOTE: Figma's own inactive icons disagree (#8493A8 on Custom commissions, #AFBBC9 on
   Second-tier and Revoke); normalised to the label colour. Confirm with John. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .box-tabbed > ul.tabs li .tc-tab-ico {
	flex: 0 0 20px;
	width: 20px;
	height: 20px;
	background-color: currentColor;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .box-tabbed > ul.tabs li .tc-tab-ico-link {
	-webkit-mask-image: url("/static/icons/affiliates/tab-link.svg");
	mask-image: url("/static/icons/affiliates/tab-link.svg");
	-webkit-mask-size: 16.67px 8.33px;
	mask-size: 16.67px 8.33px;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .box-tabbed > ul.tabs li .tc-tab-ico-commissions {
	-webkit-mask-image: url("/static/icons/affiliates/tab-commissions.svg");
	mask-image: url("/static/icons/affiliates/tab-commissions.svg");
	-webkit-mask-size: 16.67px 4.17px;
	mask-size: 16.67px 4.17px;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .box-tabbed > ul.tabs li .tc-tab-ico-secondtier {
	-webkit-mask-image: url("/static/icons/affiliates/tab-secondtier.svg");
	mask-image: url("/static/icons/affiliates/tab-secondtier.svg");
	-webkit-mask-size: 18.34px 16.66px;
	mask-size: 18.34px 16.66px;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .box-tabbed > ul.tabs li .tc-tab-ico-revoke {
	-webkit-mask-image: url("/static/icons/affiliates/tab-revoke.svg");
	mask-image: url("/static/icons/affiliates/tab-revoke.svg");
	-webkit-mask-size: 16.67px 16.67px;
	mask-size: 16.67px 16.67px;
}
body.tc-aff-reskin .ajs-dialog.tc-profile .minitabs-tabs { display: flex; gap: 24px; margin: 0px 0px 16px; padding: 0px; border-bottom: 1px solid rgb(232, 236, 239); list-style: none; }
body.tc-aff-reskin .ajs-dialog.tc-profile .minitabs-tabs li, body.tc-aff-reskin .ajs-dialog.tc-profile .minitabs-tabs li.active { float: none; padding: 10px 4px; margin: 0px; border-width: 0px 0px 2px; border-style: none none solid; border-color: currentcolor currentcolor transparent; border-image: initial; border-radius: 0px; background: transparent; font-size: 14px; font-weight: 500; color: rgb(132, 147, 168); cursor: pointer; }
body.tc-aff-reskin .ajs-dialog.tc-profile .minitabs-tabs li.active { color: rgb(54, 65, 82); border-bottom-color: rgb(0, 107, 112); }
body.tc-aff-reskin .ajs-dialog.tc-profile .ajs-content input[readonly] { background: rgb(246, 248, 249); color: rgb(54, 65, 82); }
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .box-tabbed > ul.tabs li { white-space: nowrap; }
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-content .pure-button { height: 40px; padding: 8px 14px; background: rgb(255, 255, 255); border: 1px solid rgb(209, 215, 222); border-radius: 8px; font-size: 14px; font-weight: 500; color: rgb(54, 65, 82); box-shadow: none; text-shadow: none; }
.tc-affiliates-page .ui-statistics-graph-slider { gap: 0px; justify-content: flex-start; }
.tc-affiliates-page .ui-statistics-graph-slider > .graph-wrap { flex: 0 0 100%; width: 100%; max-width: 100%; margin: 0px; }
.tc-affiliates-page #graph-dashboard-outer .position-relative.box.padding, .tc-affiliates-page #graph-dashboard-outer .box.padding.padding-full { background: transparent; border: 0px; box-shadow: none; border-radius: 0px; }
.tc-affiliates-page #graph-dashboard-outer .pure-button.ui-compare { display: inline-flex; align-items: center; justify-content: center; height: 36px; padding: 8px 18px; background: rgb(0, 107, 112); border: 0px; border-radius: 8px; font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; font-size: 14px; font-weight: 500; line-height: 20px; color: rgb(255, 255, 255); box-shadow: none; text-shadow: none; }
.tc-affiliates-page #custom-tooltip .stat-wrapper .stat:hover { background: rgb(246, 248, 249); }
.tc-affiliates-page .box.box-tabbed .tabs.tabs-anchor { display: flex; align-items: center; gap: 32px; margin: 0px 0px 24px; padding: 0px; list-style: none; border-bottom: 1px solid rgb(209, 215, 222); background: transparent; width: 100%; }
.tc-affiliates-page .box.box-tabbed .tabs.tabs-anchor li, .tc-affiliates-page .box.box-tabbed .tabs.tabs-anchor li.active, .tc-affiliates-page .box.box-tabbed.box-tabbed-action .tabs.tabs-anchor li, .tc-affiliates-page .box.box-tabbed.box-tabbed-action .tabs.tabs-anchor li.active { margin: 0px; padding: 0px; background: transparent; border: 0px; border-radius: 0px; box-shadow: none; float: none; width: auto; list-style: none; }
.tc-affiliates-page .box.box-tabbed .tabs.tabs-anchor li a,
.tc-affiliates-page .box.box-tabbed.box-tabbed-action .tabs.tabs-anchor li a {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 8px;
	background: transparent;
	border-width: 0px 0px 2px;
	border-style: none none solid;
	border-color: currentcolor currentcolor transparent;
	border-image: initial;
	margin-bottom: -1px;
	border-radius: 0px;
	font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: rgb(132, 147, 168);
	text-decoration: none;
}
.tc-affiliates-page .box.box-tabbed .tabs.tabs-anchor li.active a, .tc-affiliates-page .box.box-tabbed.box-tabbed-action .tabs.tabs-anchor li.active a { color: rgb(42, 54, 72); border-bottom: 2px solid rgb(0, 107, 112); background: transparent; }
.tc-affiliates-page .box.box-tabbed .tabs.tabs-anchor li a:hover { color: rgb(42, 54, 72); }
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode label[for="stats-date-range-type"]::before,
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode label[for="stats-product"]::before,
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode label[for="stats-affiliate"]::before,
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .ui-compare-block::before,
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stat-compare-markers::before,
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stat-compare-markers::after {
	content: none;
}
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap .autolayout-column > .dropdown select,
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap .autolayout-column > .position-relative > .dropdown select,
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap .ui-compare-block .dropdown select {
	width: 180px;
	padding-left: 37px;
	background-repeat: no-repeat, no-repeat;
	background-position: 17px center, right 17px center;
	background-size: 8px 8px, 8px 4.94px;
}
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap .autolayout-column > .dropdown select, .tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap .autolayout-column > .position-relative > .dropdown select { background-image: radial-gradient(4px, rgb(0, 166, 170) 98%, rgba(0, 166, 170, 0) 100%), url("/static/icons/affiliates/chevron-expand.svg"); }
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap .ui-compare-block .dropdown select { background-image: radial-gradient(4px, rgb(42, 118, 189) 98%, rgba(42, 118, 189, 0) 100%), url("/static/icons/affiliates/chevron-expand.svg"); }
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .ui-compare-block { margin: 8px 0px 0px; }
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode #custom-tooltip .stat-wrapper .stat > b::before, .tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode #custom-tooltip .stat-wrapper .stat .stat-compare b::before { content: ""; display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: rgb(0, 166, 170); margin-right: 8px; vertical-align: middle; flex: 0 0 auto; }
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode #custom-tooltip .stat-wrapper .stat .stat-compare b::before { background: rgb(42, 118, 189); }
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .ui-projection-total-range::before { background: rgb(0, 166, 170); }
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .ui-projection-total-comparison::before { background-color: rgb(42, 118, 189); }
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode #custom-trigger::before { border-color: rgb(0, 166, 170) !important; }
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode #custom-trigger-compare { border-color: rgb(42, 118, 189); }
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode #stats-date-range-wrap .ui-compare-block::before, .tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode #stats-product-wrap .ui-compare-block::before, .tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode #stats-affiliate-wrap .ui-compare-block::before { content: none; }
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap .autolayout { align-items: flex-start; }
/* Compare-mode: currency's column is first in the DOM, so reorder to product·affiliate·date·currency·trash. */
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap #stats-product-wrap { order: 1; }
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap #stats-affiliate-wrap { order: 2; }
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap #stats-date-range-wrap { order: 3; }
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap #stats-currency-wrap { order: 4; }
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap .tc-aff-compare-clear-col { order: 5; }
/* Hide the vestigial label.width-0 above product/affiliate/date so their selects top-align with currency. */
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap .autolayout label.width-0 { display: none; }
.tc-affiliates-page .date-wrapper h2 em, .tc-affiliates-page .date-wrapper h2 span, .tc-affiliates-page .date-wrapper h2 span em { color: #006b70; }
.tc-affiliates-page .date-wrapper h2 span.ui-compare, .tc-affiliates-page .date-wrapper h2 span.ui-compare em { color: rgb(42, 118, 189); }
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap .autolayout-column > .position-relative > .dropdown select, .tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap .ui-compare-block .dropdown select { width: 180px !important; }
.tc-affiliates-page #graph-dashboard-outer .tc-aff-compare-clear-col { display: none; }
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap .tc-aff-compare-clear-col { display: flex; flex-direction: column; gap: 12px; align-self: flex-start; flex: 0 0 32px; width: 32px; padding: 8px 0px 0px; box-sizing: content-box; }
.tc-affiliates-page #graph-dashboard-outer .tc-aff-compare-clear-btn { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; padding: 8px; border: 0px; background: url("/static/icons/affiliates/trash.svg") center center / 9.33px 12px no-repeat transparent; border-radius: 8px; cursor: pointer; transition: background-color 0.15s; margin: 0px; box-shadow: none; box-sizing: border-box; }
.tc-affiliates-page #graph-dashboard-outer .tc-aff-compare-clear-btn:hover { background-color: rgb(246, 248, 249); }
.tc-affiliates-page .tc-aff-list .tc-aff-empty { display: none; }
.tc-affiliates-page .tc-aff-list:has(.affiliates-list-top.ui-empty) .tc-aff-empty { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 48px 24px; }
.tc-affiliates-page .tc-aff-list:has(.affiliates-list-top.ui-empty) .affiliates-list-top.ui-empty ol li { display: none; }
.tc-affiliates-page .tc-aff-empty-icon { display: inline-flex; width: 36px; height: 36px; background: url("/static/icons/affiliates/kpi-affiliate-sales.svg") center center / 16.67px 16.66px no-repeat rgb(232, 236, 239); border-radius: 8px; margin: 0px 0px 12px; }
.tc-affiliates-page .tc-aff-empty-title { margin: 0px 0px 4px; font-size: 14px; font-weight: 500; line-height: 20px; color: rgb(54, 65, 82); }
.tc-affiliates-page .tc-aff-empty-sub { margin: 0px; max-width: 380px; font-size: 14px; font-weight: 400; line-height: 20px; color: rgb(132, 147, 168); }
.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap .autolayout > .position-relative:has(.ui-compare) { align-self: center; }
.tc-affiliates-page #custom-tooltip .stat-wrapper .stat.stat-click, .tc-affiliates-page #custom-tooltip .stat-wrapper .stat.stat-view, .tc-affiliates-page #custom-tooltip .stat-wrapper .stat.stat-refunded, .tc-affiliates-page #custom-tooltip .stat-wrapper .stat.stat-refundrate, .tc-affiliates-page #custom-tooltip .stat-wrapper .stat.stat-net { flex: 0 1 140px; min-width: 0px; }
.tc-affiliates-page #custom-tooltip .stat-wrapper .stat.stat-order { flex: 0 1 83px; min-width: 0px; }
.tc-affiliates-page #custom-tooltip .stat-wrapper .stat.stat-clickviewconversion, .tc-affiliates-page #custom-tooltip .stat-wrapper .stat.stat-conversion { flex: 0 1 159px; min-width: 0px; }
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap #stats-affiliate_id-wrap:not(.hidden),
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap #stats-compare-affiliate_id-wrap:not(.hidden),
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap #stats-date-range-type-custom-wrap:not(.hidden),
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap #stats-date-range-compare-type-custom-wrap:not(.hidden) {
	position: static;
	display: flex;
	align-items: center;
	gap: 8px;
	width: 180px;
	height: 36px;
	margin: 0px;
	padding: 7px 13px;
	background: rgb(255, 255, 255);
	border: 1px solid rgb(209, 215, 222);
	border-radius: 8px;
	box-sizing: border-box;
}
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap #stats-date-range-type-custom-wrap:not(.hidden), .tc-affiliates-page #graph-dashboard-outer .stats-control-wrap #stats-date-range-compare-type-custom-wrap:not(.hidden) { width: 280px; }
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap #stats-affiliate_id-wrap input,
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap #stats-compare-affiliate_id-wrap input,
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap #stats-date-range-type-custom-wrap input,
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap #stats-date-range-compare-type-custom-wrap input {
	flex: 1 1 0px;
	min-width: 0px;
	width: auto;
	height: auto;
	margin: 0px;
	padding: 0px;
	border: 0px;
	outline: 0px;
	background: transparent;
	font-family: Inter, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: rgb(54, 65, 82);
	box-shadow: none;
}
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap #stats-affiliate_id-wrap .date_range_clear,
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap #stats-compare-affiliate_id-wrap .date_range_clear,
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap #stats-date-range-type-custom-wrap .date_range_clear,
.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap #stats-date-range-compare-type-custom-wrap .date_range_clear {
	position: static;
	top: auto;
	right: auto;
	margin: 0px;
	flex: 0 0 auto;
	font-size: 14px;
	color: rgb(103, 114, 129);
	cursor: pointer;
}
.tc-affiliates-page .tc-aff-btn-sort::before { content: ""; width: 16px; height: 16px; flex: 0 0 auto; background: url("/static/icons/affiliates/sort.svg") center center / 14.67px 12.67px no-repeat; }
.tc-affiliates-page .tc-aff-btngroup { display: inline-flex; align-items: center; }
.tc-affiliates-page .tc-aff-btngroup-seg { display: inline-flex; align-items: center; gap: 4px; padding: 6px 9px; background: rgb(246, 248, 249); border: 0px; box-shadow: rgb(209, 215, 222) 0px 0px 0px 1px inset; font-family: Inter, sans-serif; font-size: 12px; font-weight: 500; line-height: 16px; color: rgb(54, 65, 82); cursor: pointer; }
.tc-affiliates-page .tc-aff-btngroup-seg:first-child { border-radius: 6px 0px 0px 6px; }
.tc-affiliates-page .tc-aff-btngroup-seg + .tc-aff-btngroup-seg { box-shadow: rgb(209, 215, 222) -1px 0px 0px 0px inset, rgb(209, 215, 222) 0px 1px 0px 0px inset, rgb(209, 215, 222) 0px -1px 0px 0px inset; padding: 6px 9px 6px 8px; }
.tc-affiliates-page .tc-aff-btngroup-seg:last-child { border-radius: 0px 6px 6px 0px; }
.tc-affiliates-page .tc-aff-btngroup-seg:first-child:last-child { border-radius: 6px; }
.tc-affiliates-page .tc-aff-btngroup-seg::before { content: ""; width: 12px; height: 12px; flex: 0 0 auto; background-repeat: no-repeat; background-position: center center; }
.tc-affiliates-page .tc-aff-btngroup-seg--filter::before { background-image: url("/static/icons/affiliates/filter-list.svg"); background-size: 9px 6px; }
.tc-affiliates-page .tc-aff-btngroup-seg--download::before { background-image: url("/static/icons/affiliates/download-csv.svg"); background-size: 8px 8px; }
.tc-affiliates-page .tc-aff-toolbar .tc-aff-btn-secondary, .tc-affiliates-page .tc-aff-toolbar .tc-aff-btn-primary { height: 32px; padding: 8px 12px; border-radius: 6px; line-height: 16px; }
.tc-affiliates-page .tc-aff-toolbar .tc-aff-pill select { height: 32px; padding-top: 0px; padding-bottom: 0px; border-radius: 6px; line-height: 16px; }
.tc-affiliates-page .tc-aff-btn-primary, .tc-affiliates-page .tc-aff-btn-secondary, .tc-affiliates-page .tc-aff-create-cancel, .tc-affiliates-page .tc-aff-btn-primary:hover, .tc-affiliates-page .tc-aff-btn-secondary:hover, .tc-affiliates-page .tc-aff-create-cancel:hover, .tc-affiliates-page .tc-aff-btn-primary:visited, .tc-affiliates-page .tc-aff-btn-secondary:visited { text-decoration: none; }
.tc-aff-modal-behind { position: fixed; bottom: 0px; z-index: 1040; overflow: hidden; pointer-events: none; background: rgb(255, 255, 255); }
.tc-affiliates-page .tc-aff-row-status { display: inline-block; margin-left: 8px; vertical-align: 2px; font-size: 12px; font-weight: 500; line-height: 16px; padding: 2px 6px; border-radius: 4px; }
.tc-affiliates-page .tc-aff-row-status--pending { background: rgb(250, 240, 137); color: rgb(42, 54, 72); }
.tc-affiliates-page .tc-aff-row-ctas .affiliate-inline-approvals { position: static; display: inline-flex; align-items: center; gap: 8px; margin: 0px; float: none; }
.tc-affiliates-page .tc-aff-row-ctas .affiliate-inline-approvals .ui-inline-approvals-approve, .tc-affiliates-page .tc-aff-row-ctas .affiliate-inline-approvals .ui-inline-approvals-reject { display: inline-flex; align-items: center; justify-content: center; height: 32px; padding: 8px 12px; margin: 0px; border-radius: 6px; font-family: Inter, sans-serif; font-size: 14px; font-weight: 500; line-height: 16px; cursor: pointer; box-shadow: none; text-shadow: none; }
.tc-affiliates-page .tc-aff-row-ctas .affiliate-inline-approvals .ui-inline-approvals-approve { background: rgb(0, 107, 112); border: 1px solid rgb(0, 107, 112); color: rgb(255, 255, 255); }
.tc-affiliates-page .tc-aff-row-ctas .affiliate-inline-approvals .ui-inline-approvals-approve:hover { background: rgb(0, 134, 140); border-color: rgb(0, 134, 140); }
.tc-affiliates-page .tc-aff-row-ctas .affiliate-inline-approvals .ui-inline-approvals-reject { background: rgb(255, 255, 255); border: 1px solid rgb(232, 236, 239); color: rgb(207, 59, 57); }
.tc-affiliates-page .tc-aff-row-ctas .affiliate-inline-approvals .ui-inline-approvals-reject:hover { background: rgb(246, 248, 249); }
.tc-affiliates-page .tc-aff-row-ctas { display: flex; align-items: center; gap: 8px; flex: 0 0 auto; }
.tc-aff-create-page .tc-aff-create-question { font-size: 20px; font-weight: 500; line-height: 28px; color: rgb(132, 147, 168); margin: 0px 0px 16px; }
.tc-aff-create-page .tc-aff-create-question .ui-data { border-bottom: 0px; text-decoration: none; font-style: normal; }
.tc-aff-create-page .tc-aff-create-search { position: relative; margin: 0px 0px 16px; }
.tc-aff-create-page .tc-aff-create-search::before { content: ""; position: absolute; left: 8px; top: 50%; transform: translateY(-50%); width: 16px; height: 16px; background: url("/static/icons/affiliates/search-products.svg") center center / 11.66px 11.66px no-repeat; pointer-events: none; }
.tc-aff-create-page .tc-aff-create-search input, .tc-aff-create-page .tc-aff-create-search #products-list-search-field { width: 100%; height: 48px; padding: 13px 8px 13px 36px; border: 1px solid rgb(209, 215, 222); border-radius: 8px; font-size: 14px; line-height: 20px; color: rgb(54, 65, 82); box-shadow: none; margin: 0px; box-sizing: border-box; }
.tc-aff-create-page .tc-aff-create-search input::placeholder, .tc-aff-create-page .tc-aff-create-search #products-list-search-field::placeholder { color: rgb(175, 187, 201); }
.tc-aff-create-page .tc-aff-access-chips { display: flex; align-items: center; gap: 13px; flex-wrap: nowrap; overflow: hidden; margin: 0px 0px 16px; }
.tc-aff-create-page .tc-aff-access-chips.hidden { display: none; }
.tc-aff-create-page .tc-aff-access-chip { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; background: rgb(198, 246, 213); border-radius: 8px; font-size: 12px; font-weight: 500; line-height: 16px; color: rgb(54, 65, 82); white-space: nowrap; flex-shrink: 0; }
.tc-aff-create-page .tc-aff-access-chip-x { width: 12px; height: 12px; background: url("/static/icons/affiliates/chip-close.svg") center center / 7px 7px no-repeat; cursor: pointer; }
.tc-aff-create-page .tc-aff-access-chip-more { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 500; line-height: 16px; color: rgb(0, 0, 0); }
.tc-aff-create-page .tc-aff-access-chip-more::before { content: ""; width: 1px; height: 16px; background: rgb(217, 217, 217); }
.tc-aff-create-page .tc-aff-access-toolbar { display: flex; align-items: center; gap: 9.5px; margin: 0px 0px 16px; }
.tc-aff-create-page .tc-aff-access-count { font-size: 14px; line-height: 20px; color: rgb(42, 54, 72); white-space: nowrap; margin-right: auto; }
.tc-aff-create-page .tc-aff-access-selectall { display: inline-flex; align-items: center; gap: 7px; margin: 0px; font-size: 12px; font-weight: 400; line-height: 18px; color: rgb(54, 65, 82); cursor: pointer; }
.tc-aff-create-page .tc-aff-access-selectall input { position: absolute; opacity: 0; pointer-events: none; }
.tc-aff-create-page .tc-aff-access-check { width: 16px; height: 16px; border: 1px solid rgb(209, 215, 222); border-radius: 4px; background: rgb(255, 255, 255); flex: 0 0 auto; }
.tc-aff-create-page .tc-aff-access-selectall input:checked + .tc-aff-access-check { background: url("/static/icons/affiliates/check-white.svg") center center / 8px 6px no-repeat rgb(0, 107, 112); border-color: rgb(0, 107, 112); }
.tc-aff-create-page .tc-aff-access-minisearch { width: 200px; margin: 0px; }
.tc-aff-create-page .pure-form-stacked label.tc-aff-table-search { padding: 7px 13px; }
.tc-aff-create-page .pure-form-stacked label.tc-aff-access-selectall { padding: 0px; font-weight: 400; }
.tc-aff-create-page .products-list-list .box-list-product-row { display: flex; align-items: center; gap: 8px; height: 66px; width: 100%; box-sizing: border-box; margin: 0px 0px 16px; padding: 0px; border-width: 0px 0px 1px; border-style: none none solid; border-color: currentcolor currentcolor rgb(232, 236, 239); border-image: initial; background: transparent; box-shadow: none; border-radius: 0px; float: none; }
.tc-aff-create-page .products-list-list { border-top: 1px solid rgb(232, 236, 239); }
.tc-aff-create-page .products-list-list .box-list-product-row:last-child { margin-bottom: 0px; }
.tc-aff-create-page .products-list-list .box-list-product-row .selector { width: 100%; }
.tc-aff-create-page .products-list-list .box-list-product-row .checkbox input[type="checkbox"] { appearance: none; width: 16px; height: 16px; margin: 0px 8px 0px 0px; border: 1px solid rgb(209, 215, 222); border-radius: 4px; background: rgb(255, 255, 255); cursor: pointer; vertical-align: middle; box-shadow: none; }
.tc-aff-create-page .products-list-list .box-list-product-row .checkbox input[type="checkbox"]:checked { background: url("/static/icons/affiliates/check-white.svg") center center / 8px 6px no-repeat rgb(0, 107, 112); border-color: rgb(0, 107, 112); }
.tc-aff-create-page .products-list-list .box-list-product-row .checkbox label { display: inline-flex; align-items: center; margin: 0px; padding: 0px; font-size: 14px; font-weight: 400; line-height: 20px; color: rgb(54, 65, 82); cursor: pointer; }
.tc-aff-create-page .products-list-list .box-list-product-row .checkbox label::before, .tc-aff-create-page .products-list-list .box-list-product-row .checkbox label::after { content: none; }
.tc-aff-create-page .products-list-list .box-list-product-row .ribbon { order: 2; margin-left: auto; position: static; transform: none; background: transparent; }
.tc-aff-create-page #products-list-title { font-size: 12px; font-weight: 400; line-height: 16px; color: rgb(132, 147, 168); margin: 0px 0px 8px; border: 0px; padding: 0px; }
.tc-aff-create-page .tc-aff-access-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 16px 0px 0px; }
.tc-aff-create-page .tc-aff-access-foot .tc-aff-perpage { display: flex; align-items: center; gap: 8px; font-size: 14px; line-height: 20px; color: rgb(42, 54, 72); }
.tc-aff-create-page .tc-aff-access-foot .tc-aff-pill select { appearance: none; width: 72px; height: 32px; padding: 0px 30px 0px 13px; background: url("/static/icons/affiliates/chevron-expand.svg") right 13px center / 8px 4.94px no-repeat rgb(255, 255, 255); border: 1px solid rgb(209, 215, 222); border-radius: 8px; font-size: 14px; line-height: 16px; color: rgb(54, 65, 82); cursor: pointer; box-shadow: none; margin: 0px; }
.tc-aff-create-page .tc-aff-pagination { display: flex; align-items: center; gap: 8px; }
.tc-aff-create-page .tc-aff-page-btn { display: inline-flex; align-items: center; justify-content: center; height: 32px; min-width: 32px; box-sizing: border-box; padding: 8px; border-radius: 6px; font-size: 14px; font-weight: 500; color: rgb(54, 65, 82); cursor: pointer; background: rgb(255, 255, 255); border: 1px solid rgb(232, 236, 239); }
.tc-aff-create-page .tc-aff-page-btn.tc-aff-page-nav { width: 32px; padding: 7px; background: rgb(246, 248, 249); border-color: rgb(209, 215, 222); }
.tc-aff-create-page .tc-aff-page-btn[disabled] { opacity: 0.5; cursor: default; }
.tc-aff-create-page .tc-aff-page-btn.tc-aff-page-prev::before, .tc-aff-create-page .tc-aff-page-btn.tc-aff-page-next::before { content: ""; width: 16px; height: 16px; background-repeat: no-repeat; background-position: center center; background-size: 4.94px 8px; }
.tc-aff-create-page .tc-aff-page-btn.tc-aff-page-prev::before { background-image: url("/static/icons/affiliates/page-prev.svg"); }
.tc-aff-create-page .tc-aff-page-btn.tc-aff-page-next::before { background-image: url("/static/icons/affiliates/page-next.svg"); }
.tc-aff-create-page .products-list-list .box-list-product-row.ui-selected, .tc-aff-create-page .products-list-list .box-list-product-row:hover { background: transparent; }
.tc-aff-create-page .products-list-list .box-list-product-row .checkbox input[type="checkbox"] { position: static; opacity: 1; pointer-events: auto; left: auto; top: auto; }
.tc-aff-create-page #ui-affiliate-settings .products-list-list .box-list-product-row .checkbox input[type="checkbox"] { display: inline-block; }
.tc-aff-create-page #ui-affiliate-settings .box-list-product-row.ui-selected, .tc-aff-create-page #ui-affiliate-settings .box-list-product-row:hover { background: transparent; }
.tc-aff-create-page #ui-affiliate-settings #products-list .box-list-product-row.ui-selected, .tc-aff-create-page #ui-affiliate-settings #products-list .box-list-product-row:hover, .tc-aff-create-page #ui-affiliate-settings #products-list .box-list-product-row { background: transparent; }
.tc-aff-create-page #ui-affiliate-settings #products-list .box-list-product-row .selector { width: auto; flex: 0 1 auto; min-width: 0px; }
.tc-aff-create-page #ui-affiliate-settings #products-list .box-list-product-row .checkbox { display: flex; align-items: center; gap: 8px; margin: 0px; padding: 0px; min-height: 0px; }
.tc-aff-create-page #ui-affiliate-settings #products-list .box-list-product-row .checkbox input[type="checkbox"] { margin: 0px; flex: 0 0 auto; }
.tc-aff-create-page #ui-affiliate-settings #products-list .box-list-product-row .checkbox label { padding: 0px; margin: 0px; text-indent: 0px; }
.tc-aff-create-page #ui-affiliate-settings #products-list .box-list-product-row .checkbox label { padding-left: 0px !important; margin-right: 0px; }
.tc-aff-create-page #ui-affiliate-settings #products-list .box-list-product-row .ui-search-name { display: inline-flex; align-items: center; padding: 0px; font-size: 14px; font-weight: 400; line-height: 20px; color: rgb(54, 65, 82); }
.alertify .ajs-dialog.tc-aff-modal { padding: 0px; border: 1px solid rgb(232, 232, 232); border-radius: 12px; background: rgb(255, 255, 255); box-shadow: rgba(0, 0, 0, 0.08) 0px 6px 10px, rgba(0, 0, 0, 0.06) 0px 1px 18px, rgba(0, 0, 0, 0.1) 0px 3px 5px; overflow: hidden; font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; max-width: 762px !important; }
.alertify .ajs-dialog.tc-aff-modal .ajs-header { margin: 0px; padding: 16px 56px 16px 24px; border-bottom: 1px solid rgb(231, 235, 238); background: rgb(255, 255, 255); font-size: 16px; font-weight: 500; line-height: 24px; color: rgb(43, 56, 74); border-radius: 12px 12px 0px 0px; }
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-close { position: absolute; top: 12px; right: 15px; width: 32px; height: 32px; border-radius: 6px; background: url("/static/icons/affiliates/modal-close.svg") center center / 8.79px 8.79px no-repeat; cursor: pointer; }
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-close:hover { background-color: rgb(246, 248, 249); }
.alertify .ajs-dialog.tc-aff-modal .ajs-body { min-height: 0px; }
.alertify .ajs-dialog.tc-aff-modal .ajs-content, body.tc-aff-reskin .ajs-dialog.tc-aff-import-modal.tc-modal-affiliate-import .ajs-content { padding: 0px 22px; color: rgb(54, 65, 82); }
.alertify .ajs-dialog.tc-aff-import-modal .ui-content { padding: 16px 0px 24px; margin: 0px; }
.alertify .ajs-dialog.tc-aff-modal .ajs-footer { padding: 12px 24px; margin: 0px 0px 29px; background: rgb(255, 255, 255); border-radius: 0px 0px 12px 12px; }
.alertify .ajs-dialog.tc-aff-modal .ajs-footer .ajs-buttons.ajs-primary { display: flex; justify-content: flex-end; align-items: center; }
.alertify .ajs-dialog.tc-aff-modal .ajs-footer .ajs-button, body.tc-aff-reskin .ajs-dialog.tc-aff-import-modal.tc-modal-affiliate-import .ajs-footer .ajs-button { margin: 0px 0px 0px 8px; padding: 8px 18px; border-radius: 8px; font-size: 14px; font-weight: 500; line-height: 20px; text-decoration: none; text-transform: none; letter-spacing: 0px; box-shadow: none; min-height: 0px; min-width: 0px; height: 36px; box-sizing: border-box; }
.alertify .ajs-dialog.tc-aff-modal .ajs-footer .ajs-button.ajs-cancel { background: rgb(255, 255, 255); border: 1px solid rgb(232, 236, 239); color: rgb(54, 65, 82); }
.alertify .ajs-dialog.tc-aff-modal .ajs-footer .ajs-button.ajs-ok { background: rgb(0, 107, 112); border: 1px solid rgb(0, 107, 112); color: rgb(255, 255, 255); }
.alertify .ajs-dialog.tc-aff-modal .ajs-footer .ajs-button[disabled] { opacity: 0.5; }
/* Sign-up modal: the Copy actions carry the emphasis (primary), the footer Close is secondary. */
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed .ajs-footer .ajs-button.ajs-ok {
	background: #ffffff;
	border-color: #e8ecef;
	color: #364152;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed .pure-button.button-secondary[data-clipboard-target] {
	background: #006b70;
	border: 0;
	box-shadow: none;
	color: #ffffff;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed .pure-button.button-secondary[data-clipboard-target]:hover {
	background: #00868c;
	border-color: #00868c;
}
/* Sign-up modal chrome: title 18/600, 24px gutter, no divider, readonly grey inputs. */
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed .ajs-header {
	font-size: 18px;
	font-weight: 600;
	line-height: normal;
	color: #1f2937;
	padding: 24px 56px 0 24px;
	border-bottom: 0;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed .ajs-content { padding: 20px 24px 24px; }
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed input.embed.ui-embed-link {
	height: 36px;
	box-sizing: border-box;
	padding: 0 14px;
	background: #f6f8f9;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	box-shadow: none;
	font-size: 14px;
	color: #364152;
}
/* Copy buttons: Figma content-copy icon (white) instead of the fa-clipboard glyph. */
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed .button-secondary[data-clipboard-target] .fa-clipboard {
	width: 16px;
	height: 16px;
	margin: 0 2px 0 0;
	font-size: 0;
	background-color: #ffffff;
	-webkit-mask: url("/static/icons/affiliates/copy.svg") center / 12.67px 14.67px no-repeat;
	mask: url("/static/icons/affiliates/copy.svg") center / 12.67px 14.67px no-repeat;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed .button-secondary[data-clipboard-target] .fa-clipboard::before { content: none; }

/* Embed tab: live preview, Button/Image segment, colour swatches, code box. */
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-modal-preview {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 100px;
	box-sizing: border-box;
	margin: 0 0 16px;
	background: #f7f9fa;
	border: 1px solid #e8e8e8;
	border-radius: 6px;
	overflow: hidden;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-modal-preview > i {
	position: absolute;
	top: 0;
	right: 0;
	margin: 0;
	padding: 4px 8px;
	background: #b5c8e1;
	border-radius: 0 0 0 4px;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 10px;
	font-weight: 800;
	font-style: normal;
	letter-spacing: 0.5px;
	text-transform: uppercase;
	color: #ffffff;
}
/* Preview button — match the Figma mock (in-modal preview only; real embeds are unaffected). */
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-modal-preview .thrivecart-button {
	padding: 10px 24px;
	border: 0;
	border-radius: 4px;
	box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1);
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 700;
	line-height: normal;
}
/* Three equal control columns (type / text / colour). */
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-modal-options {
	display: flex;
	gap: 24px;
	align-items: flex-start;
	margin: 0 0 16px;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-modal-options > .pure-u-sm-5-24 { flex: 1 1 0; width: auto; min-width: 0; padding: 0; }
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-modal-options > .pure-u-sm-18-24 { flex: 2 1 0; width: auto; min-width: 0; padding: 0; }
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-modal-options > .pure-u-sm-1-24 { display: none; }
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-customise-button_type-button-wrap > .pure-g { display: flex; gap: 24px; }
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-customise-button_type-button-wrap > .pure-g > .pure-u-sm-13-24,
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-customise-button_type-button-wrap > .pure-g > .pure-u-sm-10-24 { flex: 1 1 0; width: auto; min-width: 0; padding: 0; }
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-customise-button_type-button-wrap > .pure-g > .pure-u-sm-1-24 { display: none; }
/* Column labels. */
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-modal-options > div > label,
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-customise-button_type-button-wrap > .pure-g > div > label {
	display: block;
	margin: 0 0 8px;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 13px;
	font-weight: 700;
	color: #223047;
}
/* Button / Image segment toggle (scoped to the options wrap so it never touches the tab radios). */
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-modal-options .radiogroup-half {
	display: flex;
	height: 38px;
	margin: 0;
	padding: 0;
	background: #f1f3f5;
	border-radius: 6px;
	overflow: hidden;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-modal-options .radiogroup-half > div { flex: 1 1 0; display: flex; }
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-modal-options .radiogroup-half label {
	flex: 1 1 auto;
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 13px;
	font-weight: 600;
	color: #8292a1;
	cursor: pointer;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-modal-options .radiogroup-half > div:has(input:checked) label {
	background: #4e97e8;
	color: #ffffff;
	font-weight: 700;
}
/* Button-text input. */
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed input#affiliate-embed-modal-option-label {
	height: 38px;
	box-sizing: border-box;
	margin: 0;
	padding: 0 12px;
	background: #ffffff;
	border: 1px solid #e1e5eb;
	border-radius: 6px;
	box-shadow: none;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 13px;
	font-weight: 500;
	color: #223047;
}
/* Colour swatches. */
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed .colour-swatch-wrapper { display: flex; gap: 8px; }
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed .colour-swatch { width: 34px; height: 34px; margin: 0; border-radius: 6px; }
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed .colour-swatch.active { box-shadow: inset 0 0 0 2px #006b70; }
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed .colour-swatch.active::after { content: none; }
/* Embed code box. */
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #ui-affiliate-code {
	box-sizing: border-box;
	padding: 16px;
	background: #f1f3f5;
	border: 1px solid #e8e8e8;
	border-radius: 6px;
	box-shadow: none;
	font-family: 'Cousine', 'SFMono-Regular', Menlo, Consolas, monospace;
	font-size: 12px;
	line-height: 1.6;
	color: #7e8299;
}
/* Customizer modal: URL prefix fills the row, Partner input gets a real width,
   and the content sits in a 32px gutter. */
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .ajs-content { padding: 16px 32px 32px; }
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .affiliate-option-affiliate_url-wrap {
	display: flex;
	align-items: stretch;
	gap: 7px;
	text-align: left;
	margin: 0 0 24px;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .affiliate-option-affiliate_url-wrap .product-basic-slug-prefix {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	align-items: center;
	height: 32px;
	margin: 0;
	padding: 0 12px;
	box-sizing: border-box;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	background: #f6f8f9;
	font-size: 14px;
	line-height: 32px;
	color: #364152;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .affiliate-option-affiliate_url-wrap #affiliate-option-affiliate_url {
	flex: 0 0 255px;
	height: 32px;
	margin: 0;
	padding: 0 12px;
	box-sizing: border-box;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-size: 14px;
	color: #364152;
	box-shadow: none;
}
/* Title: Inter 18/600, #1f2937 — the product name stays bold via its <b>.
   No divider; 32px gutter so the title lines up with the inputs below it. */
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .ajs-header {
	font-size: 18px;
	font-weight: 600;
	line-height: normal;
	color: #1f2937;
	padding: 32px 56px 0 32px;
	border-bottom: 0;
}

/* Preview builder: restyle the legacy checkout builder
   into the affiliate sign-up preview — canvas, dashed sections, white Edit buttons,
   and the grey placeholder bars. */
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .builder-wrap {
	position: relative;
	background: #f9fafb;
	border: 1px solid #e5e7eb;
	border-radius: 8px;
	padding: 32px;
	overflow: hidden;
	box-sizing: border-box;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .builder-header,
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .builder-footer { display: none; }
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .builder-body { padding: 0; margin: 0; width: 100%; box-sizing: border-box; }
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .builder-content {
	display: flex;
	flex-direction: column;
	gap: 16px;
	width: 100%;
	max-width: none;
	box-sizing: border-box;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .builder-widget {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: 100%;
	margin: 0;
	padding: 24px;
	box-sizing: border-box;
	background: rgba(0, 0, 0, 0.02);
	border: 1px dashed #9ca3af;
	border-radius: 6px;
	float: none;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .builder-widget-success_heading { padding: 16px; }
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .builder-widget-btn {
	margin: 8px 0 0;
	padding: 8px 16px;
	background: #ffffff;
	border: 1px solid #d1d5db;
	border-radius: 6px;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 13px;
	font-weight: 600;
	line-height: normal;
	color: #6b7280;
	box-shadow: none;
	width: auto;
	float: none;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .builder-widget-success_heading .builder-widget-btn { margin: 0; }
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .builder-widget-block {
	width: 280px;
	max-width: 100%;
	height: 110px;
	margin: 0;
	background: #e5e7eb;
	border-radius: 4px;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .builder-widget-success_content .builder-widget-field {
	width: 380px;
	max-width: 100%;
	margin: 0;
	float: none;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .builder-widget-success_content .builder-widget-field span {
	display: block;
	width: 100%;
	height: 10px;
	background: #e5e7eb;
	border-radius: 2px;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .builder-widget-success_content .builder-widget-field-double span { height: 16px; }
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .builder-widget-fields .builder-widget-field {
	width: 480px;
	max-width: 100%;
	margin: 0;
	float: none;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .builder-widget-fields .builder-widget-field span {
	display: block;
	width: 100%;
	height: 12px;
	background: #e5e7eb;
	border-radius: 2px;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .builder-widget-fields .builder-widget-field-multi {
	display: flex;
	gap: 8px;
}
.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-signup .builder-widget-fields .builder-widget-field-multi span {
	flex: 1 1 0;
	height: 16px;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-tabs { display: flex; gap: 16px; margin: 0px 0px 16px; border-bottom: 1px solid rgb(209, 215, 222); }
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-tab { display: inline-flex; align-items: center; gap: 8px; padding: 8px; font-size: 16px; font-weight: 500; line-height: 24px; color: rgb(132, 147, 168); border-bottom: 2px solid transparent; margin-bottom: -1px; }
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-tab.active { color: rgb(42, 54, 72); border-bottom-color: rgb(0, 107, 112); }
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-tab-ico { display: inline-block; width: 20px; height: 20px; flex: 0 0 auto; background-color: currentcolor; mask-repeat: no-repeat; mask-position: center center; }
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-tab-ico--products { mask-image: url("/static/icons/affiliates/import-tab-products.svg"); mask-size: 16.67px 16.67px; }
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-tab-ico--type { mask-image: url("/static/icons/affiliates/import-tab-type.svg"); mask-size: 16.67px 16.67px; }
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-tab-ico--file { mask-image: url("/static/icons/affiliates/import-tab-file.svg"); mask-size: 18.33px 15px; }
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-step[data-step="1"] > p { font-size: 16px; font-weight: 500; line-height: 24px; color: rgb(132, 147, 168); margin: 0px 0px 16px; }

.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-search,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-import-search { position: relative; margin: 0 0 16px; }
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-search::before,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-import-search::before {
	content: '';
	position: absolute;
	left: 8px;
	top: 50%;
	transform: translateY(-50%);
	width: 16px;
	height: 16px;
	background: url("/static/icons/affiliates/search-products.svg") no-repeat center;
	background-size: 11.66px 11.66px;
	pointer-events: none;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-search input.ui-search-field[type="text"],
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-import-search input.ui-search-field[type="text"] {
	width: 100%;
	height: 48px;
	padding: 13px 8px 13px 36px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-size: 14px;
	line-height: 20px;
	color: #364152;
	box-shadow: none;
	margin: 0;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-search input.ui-search-field[type="text"]::placeholder,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-import-search input.ui-search-field[type="text"]::placeholder { color: #afbbc9; }

/* Chips / toolbar / footer reuse the Product Access anatomy (1551:13523-13546). */
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-access-chips,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-access-chips {
	display: flex;
	align-items: center;
	gap: 13px;
	flex-wrap: nowrap;
	overflow: hidden;
	margin: 0 0 16px;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-access-chips.hidden,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-access-chips.hidden { display: none; }
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-access-chip,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-access-chip {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 2px 8px;
	background: #c6f6d5;
	border-radius: 8px;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	color: #364152;
	/* Keep each chip a single-line pill; the fit-loop rolls overflow into "+N". */
	flex-shrink: 0;
	white-space: nowrap;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-access-chip-x,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-access-chip-x {
	width: 12px;
	height: 12px;
	background: url("/static/icons/affiliates/chip-close.svg") no-repeat center;
	background-size: 7px 7px;
	cursor: pointer;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-access-chip-more,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-access-chip-more {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	color: #000000;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-access-chip-more::before,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-access-chip-more::before {
	content: '';
	width: 1px;
	height: 16px;
	background: #d9d9d9;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-access-toolbar,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-access-toolbar {
	display: flex;
	align-items: center;
	gap: 9.5px;
	margin: 0 0 16px;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-access-count,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-access-count {
	font-size: 14px;
	line-height: 20px;
	color: #2a3648;
	white-space: nowrap;
	margin-right: auto;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-access-selectall,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-access-selectall {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	margin: 0;
	padding: 0 !important;
	font-size: 12px;
	font-weight: 400;
	line-height: 18px;
	color: #364152;
	cursor: pointer;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-access-selectall input,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-access-selectall input { position: absolute; opacity: 0; pointer-events: none; }
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-access-check,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-access-check {
	width: 16px;
	height: 16px;
	border: 1px solid #d1d7de;
	border-radius: 4px;
	background: #ffffff;
	flex: 0 0 auto;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-access-selectall input:checked + .tc-aff-access-check,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-access-selectall input:checked + .tc-aff-access-check {
	background: #006b70 url("/static/icons/affiliates/check-white.svg") no-repeat center;
	background-size: 8px 6px;
	border-color: #006b70;
}
/* Mini search = the shared table-search pill (Figma 13493): px-13 py-8, r6,
   16px icon slot w/ 11.66 glyph, 12/16 text. The alertify dialog mounts at
   body level so the .tc-affiliates-page pill rules don't reach it. */
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-access-minisearch,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-access-minisearch {
	display: flex;
	align-items: center;
	gap: 8px;
	width: 200px;
	margin: 0;
	padding: 7px 13px !important;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 6px;
	box-sizing: border-box;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-access-minisearch::before,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-access-minisearch::before {
	content: '';
	width: 16px;
	height: 16px;
	flex-shrink: 0;
	background: url("/static/icons/affiliates/search.svg") no-repeat center;
	background-size: 11.66px 11.66px;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-access-minisearch input.ui-search-field[type="text"],
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-access-minisearch input.ui-search-field[type="text"] {
	width: 100%;
	height: auto;
	margin: 0;
	padding: 0;
	border: 0;
	outline: 0;
	background: transparent;
	font-size: 12px;
	line-height: 16px;
	color: #364152;
	box-shadow: none;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-access-minisearch input.ui-search-field[type="text"]::placeholder,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-access-minisearch input.ui-search-field[type="text"]::placeholder { color: #afbbc9; }

/* Product rows: 66px, hairline separators, 16px custom-look checkboxes. */
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-product-select {
	overflow-x: visible;
	overflow-y: auto;
	max-height: none;
	margin: 0;
	padding: 0;
	list-style: none;
	/* The top hairline lives here, not on li:first-child — List.js hides
	   filtered rows with display:none, so :first-child can be invisible. */
	border-top: 1px solid #e8ecef;
}
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-product-select li {
	display: flex;
	align-items: center;
	height: 66px;
	box-sizing: border-box;
	margin: 0 0 16px;
	padding: 0;
	border: 0;
	/* Rows are border-b only (13537/13538); the list's top border supplies the
	   first row's line (13536) — a top border per row would draw a double
	   hairline 16px under the previous row's. */
	border-bottom: 1px solid #e8ecef;
	border-radius: 0;
	background: transparent;
}
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-product-select li:last-child { margin-bottom: 0; }
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-product-select li + li { margin-top: 0; }
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-product-select li:hover,
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-product-select li.active { border-color: #e8ecef; background: transparent; }
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-product-select li .checkbox { width: 100%; }
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-product-select li .checkbox input[type="checkbox"] {
	display: inline-block;
	position: static;
	-webkit-appearance: none;
	appearance: none;
	width: 16px;
	height: 16px;
	margin: 0 8px 0 0;
	border: 1px solid #d1d7de;
	border-radius: 4px;
	background: #ffffff;
	cursor: pointer;
	vertical-align: middle;
	box-shadow: none;
}
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-product-select li .checkbox input[type="checkbox"]:checked {
	background: #006b70 url("/static/icons/affiliates/check-white.svg") no-repeat center;
	background-size: 8px 6px;
	border-color: #006b70;
}
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-product-select li .checkbox label {
	display: inline-flex;
	align-items: center;
	width: auto;
	margin: 0;
	padding: 0 !important;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #364152;
	cursor: pointer;
	position: static;
}
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-product-select li .checkbox label::before,
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-product-select li .checkbox label::after { content: none; }
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-product-select li i {
	display: inline-block;
	margin: 0 0 0 8px;
	font-size: 12px;
	line-height: 16px;
	color: #8493a8;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-access-foot,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-access-foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	margin: 16px 0 0;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-perpage,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-perpage { display: flex; align-items: center; gap: 8px; font-size: 14px; line-height: 20px; color: #2a3648; }
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-pill select,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-pill select {
	-webkit-appearance: none;
	appearance: none;
	width: 72px;
	height: 32px;
	padding: 0 30px 0 13px;
	background: #ffffff url("/static/icons/affiliates/chevron-expand.svg") no-repeat right 13px center;
	background-size: 8px 4.94px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-size: 14px;
	line-height: 16px;
	color: #364152;
	cursor: pointer;
	box-shadow: none;
	margin: 0;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-pagination,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-pagination { display: flex; align-items: center; gap: 8px; }
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-page-btn,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-page-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 32px;
	min-width: 32px;
	box-sizing: border-box;
	padding: 8px;
	border-radius: 6px;
	font-size: 14px;
	font-weight: 500;
	color: #364152;
	cursor: pointer;
	background: #ffffff;
	border: 1px solid #e8ecef;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-page-btn.tc-aff-page-nav,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-page-btn.tc-aff-page-nav { width: 32px; padding: 7px; background: #f6f8f9; border-color: #d1d7de; }
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-page-btn[disabled],
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-page-btn[disabled] { opacity: 0.5; cursor: default; }
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-page-btn.tc-aff-page-prev::before,
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-page-btn.tc-aff-page-next::before,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-page-btn.tc-aff-page-next::before {
	content: '';
	width: 16px;
	height: 16px;
	background-repeat: no-repeat;
	background-position: center;
	background-size: 4.94px 8px;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-page-btn.tc-aff-page-prev::before,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-page-btn.tc-aff-page-prev::before { background-image: url("/static/icons/affiliates/page-prev.svg"); }
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-page-btn.tc-aff-page-next::before,
.alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-page-btn.tc-aff-page-next::before { background-image: url("/static/icons/affiliates/page-next.svg"); }

/* Step 2 — import-type radio cards (1551:13561/13563). Tabs→card gap is 36
   (13552): the ul's 36 top margin collapses with the tabs' 16 through the
   unstyled step wrapper, resolving to 36. */
.alertify .ajs-dialog.tc-aff-import-modal .tc-modal-radios { display: flex; flex-direction: column; gap: 36px; margin: 36px 0 0; padding: 0; list-style: none; }
.alertify .ajs-dialog.tc-aff-import-modal .tc-modal-radios li, .alertify .ajs-dialog.tc-payout .tc-modal-radios li, .alertify .ajs-dialog.tc-modal-payout_cancel .tc-modal-radios li {
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 24px 16px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	background: #ffffff;
	box-sizing: border-box;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-modal-radios li.active, .alertify .ajs-dialog.tc-payout .tc-modal-radios li.active, .alertify .ajs-dialog.tc-modal-payout_cancel .tc-modal-radios li.active {
	border: 2px solid #006b70;
	padding: 23px 15px;
	background: #ffffff;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-modal-radios .radio, .alertify .ajs-dialog.tc-payout .tc-modal-radios .radio, .alertify .ajs-dialog.tc-modal-payout_cancel .tc-modal-radios .radio {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 16px;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-modal-radios .radio input[type="radio"], .alertify .ajs-dialog.tc-payout .tc-modal-radios .radio input[type="radio"], .alertify .ajs-dialog.tc-modal-payout_cancel .tc-modal-radios .radio input[type="radio"] {
	order: 2;
	display: inline-block;
	position: static;
	-webkit-appearance: none;
	appearance: none;
	width: 20px;
	height: 20px;
	margin: 0;
	border: 1px solid #d1d7de;
	border-radius: 100px;
	background: #ffffff;
	cursor: pointer;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-modal-radios .radio input[type="radio"]:checked, .alertify .ajs-dialog.tc-payout .tc-modal-radios .radio input[type="radio"]:checked, .alertify .ajs-dialog.tc-modal-payout_cancel .tc-modal-radios .radio input[type="radio"]:checked {
	border-color: #006b70;
	background: radial-gradient(circle, #006b70 4px, transparent 4.5px) #ffffff;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-modal-radios .radio input[type="radio"][disabled] { opacity: 0.65; cursor: default; }
.alertify .ajs-dialog.tc-aff-import-modal .tc-modal-radios .radio label, .alertify .ajs-dialog.tc-payout .tc-modal-radios .radio label, .alertify .ajs-dialog.tc-modal-payout_cancel .tc-modal-radios .radio label {
	order: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	width: 100%;
	margin: 0;
	padding: 0 !important;
	position: static;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #2a3648;
	text-align: center;
	cursor: pointer;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-modal-radios .radio label::before, .alertify .ajs-dialog.tc-payout .tc-modal-radios .radio label::before, .alertify .ajs-dialog.tc-modal-payout_cancel .tc-modal-radios .radio label::before {
	content: '';
	position: static;
	display: block;
	width: 48px;
	height: 48px;
	/* IconArea→Content gap is 16 (13561); the label has no own gap. */
	margin: 0 0 16px;
	border: 0;
	border-radius: 24px;
	background-color: #f6f8f9;
	background-repeat: no-repeat;
	background-position: center;
	transition: none;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-modal-radios .radio label::after { content: none; }
.alertify .ajs-dialog.tc-aff-import-modal .tc-modal-radios .radio label[for="tc-affiliate-import-source-csv"]::before, .alertify .ajs-dialog.tc-payout .tc-modal-radios .radio label[for="tc-affiliate-import-source-csv"]::before, .alertify .ajs-dialog.tc-modal-payout_cancel .tc-modal-radios .radio label[for="tc-affiliate-import-source-csv"]::before {
	background-image: url("/static/icons/affiliates/import-type-csv.svg");
	background-size: 16px 20px;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-modal-radios .radio label[for="tc-affiliate-import-source-autoresponder"]::before, .alertify .ajs-dialog.tc-payout .tc-modal-radios .radio label[for="tc-affiliate-import-source-autoresponder"]::before, .alertify .ajs-dialog.tc-modal-payout_cancel .tc-modal-radios .radio label[for="tc-affiliate-import-source-autoresponder"]::before {
	background-image: url("/static/icons/affiliates/import-type-autoresponder.svg");
	background-size: 19.5px 20px;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-modal-radios .radio label span, .alertify .ajs-dialog.tc-payout .tc-modal-radios .radio label span, .alertify .ajs-dialog.tc-modal-payout_cancel .tc-modal-radios .radio label span {
	display: block;
	margin-top: 4px;
	font-size: 16px;
	font-weight: 400;
	line-height: 24px;
	color: #8493a8;
}

/* Step 3-csv — dashed uploader (1551:13577-13580). */
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-source-wrapper-csv { text-align: left; padding: 0; }
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-source-wrapper-csv .tc-aff-import-file-label {
	width: 100%;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #2b384a;
	/* 36 collapses with the tabs' 16 through the step wrapper → 36 (13569). */
	margin: 36px 0 4px;
	text-align: left;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-dropzone {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: 100%;
	padding: 48px;
	border: 2px dashed #e8ecef;
	border-radius: 8px;
	background: #ffffff;
	cursor: pointer;
	box-sizing: border-box;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-dropzone-ico {
	display: block;
	width: 32px;
	height: 32px;
	background: url("/static/icons/affiliates/import-upload.svg") no-repeat center;
	background-size: 32px 32px;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-dropzone-text {
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #364152;
	text-align: center;
}
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-source-wrapper-csv .tc-aff-import-file-help {
	width: 100%;
	margin: 4px 0 0;
	font-size: 13px;
	line-height: 20px;
	color: #8593a8;
	text-align: left;
}

/* Validation-error state on the create/edit modal fields (reskin only):
   the failing validator's input gets .tc-aff-field-invalid until edited. */
.tc-aff-create-page #ui-affiliate-settings .tc-aff-field-invalid {
	border-color: #cf3b39;
}
.tc-aff-create-page #ui-affiliate-settings .tc-aff-field-invalid:focus {
	border-color: #cf3b39;
	outline: 0;
}

/* Clear/Search match the toolbar's 32px compact buttons (Sort/Filter/CSV).
   The button-qualified variant outranks the earlier
   `.tc-aff-toolbar button.tc-aff-btn-secondary { height: 36px }`. */
.tc-affiliates-page .tc-aff-toolbar button.affiliates-list-reset,
.tc-affiliates-page .tc-aff-toolbar button.affiliates-list-search {
	display: inline-flex;
	align-items: center;
	height: 32px;
	padding: 0 12px;
	box-sizing: border-box;
}

/* ---- Import wizard: autoresponder step, errors, selected-file state --------
   None of these have a Figma frame (the set covers 13513/13552/13569 only), so
   they reuse the values the CSV step already establishes. Selectors carry extra
   weight because plugins/core.affiliates/admin/style.css loads AFTER main.css
   and would win any specificity tie. */

/* In-modal error surface (additive — the toast still fires). */
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-error {
	margin: 0 0 16px;
	padding: 12px 16px;
	border-radius: 8px;
	border-left: 3px solid #cf3b39;
	background: #fdf3f3;
	font-size: 13px;
	line-height: 20px;
	color: #8a2f2e;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-error.hidden { display: none; }

/* Selected CSV file — the pick had no on-page confirmation before. */
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-dropzone--has-file { border-color: #006b70; }
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-dropzone-file {
	display: inline-flex;
	align-items: center;
	max-width: 100%;
	padding: 2px 8px;
	border-radius: 8px;
	background: #c6f6d5;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	color: #364152;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.alertify .ajs-dialog.tc-aff-import-modal .tc-aff-import-dropzone-file.hidden { display: none; }

/* Step 3-autoresponder — same anatomy as the CSV step. */
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-step[data-step="3-autoresponder"] > p:not(.callout) {
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #8493a8;
	margin: 36px 0 16px;
	width: 100%;
	text-align: left;
}
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-source-wrapper.ui-affiliate-import-source-wrapper-autoresponder {
	text-align: left;
	padding: 0;
}
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-source-wrapper-autoresponder > div { margin: 0 0 16px; }
/* Field label (the tag/list sentence) — matches "Select CSV file" (13578). */
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-source-wrapper-autoresponder p.ui-affiliate-import-source-wrapper-autoresponder-sentence {
	width: 100%;
	margin: 0 0 4px;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #2b384a;
	text-align: left;
}
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-source-wrapper-autoresponder p.ui-affiliate-import-source-wrapper-autoresponder-sentence.hidden { display: none; }
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-source-wrapper-autoresponder select {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	width: 100%;
	height: 48px;
	box-sizing: border-box;
	padding: 13px 32px 13px 8px;
	background: #ffffff url("/static/icons/affiliates/chevron-expand.svg") no-repeat right 13px center;
	background-size: 8px 4.94px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-size: 14px;
	line-height: 20px;
	color: #364152;
	box-shadow: none;
	margin: 0;
}
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-source-wrapper-autoresponder select[disabled] {
	background-color: #f6f8f9;
	color: #afbbc9;
	cursor: default;
}
/* Tip callout → the reskin's quiet helper card (was a blue-bar legacy callout). */
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-step[data-step="3-autoresponder"] p.callout.callout-help {
	width: 100%;
	box-sizing: border-box;
	margin: 16px 0 0;
	padding: 12px 16px;
	border: 0;
	border-left: 3px solid #006b70;
	border-radius: 8px;
	background: #f6f8f9;
	font-size: 13px;
	line-height: 20px;
	color: #8593a8;
	text-align: left;
}
.alertify .ajs-dialog.tc-aff-import-modal .ui-affiliate-import-step[data-step="3-autoresponder"] p.callout.callout-help b { color: #2b384a; font-weight: 500; }

/* ---- Bulk approve modal (dev/internal tool — no Figma frame) ---------------
   Reskinned to the same chrome as the import wizard so the two dialogs match.
   Legacy markup untouched; the class is added via the gated `classNames` opt. */
.alertify .ajs-dialog.tc-aff-bulk-modal {
	max-width: 560px !important;
	padding: 0;
	border: 1px solid #e8e8e8;
	border-radius: 12px;
	background: #ffffff;
	box-shadow: 0 6px 10px rgba(0, 0, 0, 0.08), 0 1px 18px rgba(0, 0, 0, 0.06), 0 3px 5px rgba(0, 0, 0, 0.1);
	overflow: hidden;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
.alertify .ajs-dialog.tc-aff-bulk-modal .ajs-header {
	margin: 0;
	padding: 16px 24px;
	border-bottom: 1px solid #e7ebee;
	background: #ffffff;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #2b384a;
	border-radius: 12px 12px 0 0;
}
.alertify .ajs-dialog.tc-aff-bulk-modal .ajs-body { min-height: 0; }
.alertify .ajs-dialog.tc-aff-bulk-modal .ajs-content,
body.tc-aff-reskin .ajs-dialog.tc-aff-bulk-modal .ajs-content { padding: 16px 24px 24px; color: #364152; }
.alertify .ajs-dialog.tc-aff-bulk-modal .ui-content { padding: 0; margin: 0; }
/* Body copy + the "search by ID" footnote. */
.alertify .ajs-dialog.tc-aff-bulk-modal .pane > p {
	font-size: 14px;
	line-height: 20px;
	color: #364152;
	margin: 0 0 16px;
}
.alertify .ajs-dialog.tc-aff-bulk-modal .pane .text-size-small {
	font-size: 13px;
	line-height: 20px;
	color: #8593a8;
	margin: 4px 0 0;
}
.alertify .ajs-dialog.tc-aff-bulk-modal .pane > div:last-child { margin: 0; }
/* Field: label + textarea (48px-family metrics, radius 8). */
.alertify .ajs-dialog.tc-aff-bulk-modal .pane form.pure-form-stacked label {
	display: block;
	padding: 0;
	margin: 0 0 4px;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #2b384a;
	text-transform: none;
	letter-spacing: 0;
}
.alertify .ajs-dialog.tc-aff-bulk-modal .pane form.pure-form-stacked textarea[name="affiliate_ids"] {
	width: 100%;
	min-height: 120px;
	box-sizing: border-box;
	padding: 13px 8px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	background: #ffffff;
	font-size: 14px;
	line-height: 20px;
	color: #364152;
	box-shadow: none;
	margin: 0;
	resize: vertical;
}
.alertify .ajs-dialog.tc-aff-bulk-modal .pane form.pure-form-stacked textarea[name="affiliate_ids"]::placeholder { color: #afbbc9; }
/* Results list (step 2). */
.alertify .ajs-dialog.tc-aff-bulk-modal .ui-massapprove-affiliate_list {
	margin: 0 0 16px;
	padding: 0;
	border: 1px solid #e8ecef;
	border-radius: 8px;
	max-height: 220px;
	overflow-y: auto;
	list-style: none;
	text-align: left;
}
.alertify .ajs-dialog.tc-aff-bulk-modal .ui-massapprove-affiliate_list li {
	padding: 12px 16px;
	border-bottom: 1px solid #e8ecef;
	font-size: 14px;
	line-height: 20px;
	color: #364152;
}
.alertify .ajs-dialog.tc-aff-bulk-modal .ui-massapprove-affiliate_list li:last-child { border-bottom: 0; }
/* Footer: white bar, teal primary, outline secondary — as the import wizard. */
.alertify .ajs-dialog.tc-aff-bulk-modal .ajs-footer {
	padding: 12px 24px;
	margin: 0;
	background: #ffffff;
	border-top: 1px solid #e7ebee;
	border-radius: 0 0 12px 12px;
}
.alertify .ajs-dialog.tc-aff-bulk-modal .ajs-footer .ajs-buttons.ajs-primary { text-align: right; }
.alertify .ajs-dialog.tc-aff-bulk-modal .ajs-footer .ajs-button,
body.tc-aff-reskin .ajs-dialog.tc-aff-bulk-modal .ajs-footer .ajs-button {
	margin: 0 0 0 8px;
	padding: 8px 18px;
	height: 36px;
	box-sizing: border-box;
	border-radius: 8px;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	text-decoration: none;
	text-transform: none;
	letter-spacing: 0;
	box-shadow: none;
	min-height: 0;
	min-width: 0;
	text-shadow: none;
}
.alertify .ajs-dialog.tc-aff-bulk-modal .ajs-footer .ajs-button.ajs-cancel {
	background: #ffffff;
	border: 1px solid #e8ecef;
	color: #364152;
}
.alertify .ajs-dialog.tc-aff-bulk-modal .ajs-footer .ajs-button.ajs-ok {
	background: #006b70;
	border: 1px solid #006b70;
	color: #ffffff;
}
.alertify .ajs-dialog.tc-aff-bulk-modal .ajs-footer .ajs-button.ajs-secondary {
	background: #ffffff;
	border: 1px solid #e8ecef;
	color: #364152;
}
.alertify .ajs-dialog.tc-aff-bulk-modal .ajs-footer .ajs-button[disabled] { opacity: 0.5; }

/* Retry, moved inline onto the Failed card (Figma 1540:14313: teal text action
   with a replay glyph, sitting beside the label). The <h6> label row becomes the
   flex line that holds it. */
/* Label row: label (inline, so its ::after suffix flows) + the Retry action. */
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li .tc-aff-card-labelrow {
	order: 1;
	display: flex;
	align-items: center;
	/* Figma 1540:14313 places the Retry button flush against the end of the label
	   (button x=128.91 == label x=24 + label width) — the 20px of visual space
	   comes from the button's own px-20, not from a row gap. */
	gap: 0;
	/* The buttons are absolute overlays in Figma (siblings of the cards, not
	   children), so a 36px-tall button must not grow this row: the card is
	   p-24 + icon 36 + gap 32 + (label 16 + gap 4 + value 28) + p-24 = 164 exactly.
	   Pinning the row to the label's own leading-[16px] keeps that arithmetic and
	   lets the taller button overflow, centred, the way the overlay does. */
	height: 16px;
	width: 100%;
}
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li .tc-aff-card-labelrow h6 { order: 0; }
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li .tc-aff-card-action {
	display: inline-flex;
	align-items: center;
	/* 14313/14308: icon and Text Layout are adjacent — the button declares no gap. */
	gap: 0;
	padding: 8px 20px;
	margin: 0;
	border: 0;
	background: transparent;
	box-shadow: none;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	letter-spacing: 0;
	text-transform: none;
	color: #006b70;
	cursor: pointer;
	white-space: nowrap;
}
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li .tc-aff-card-action[disabled] { opacity: 0.5; cursor: default; }
/* Legacy label is "Retry failed payments"; Figma's action reads "Retry". The
   text is hidden rather than dropped so the button (and its handler) is intact. */
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li .tc-aff-card-action { font-size: 0; }
/* The ::after stands in for Figma's "Text Layout" wrapper, which carries its own
   padding — pr-[6px] on Retry (1540:14315), px-[6px] on Pay now (1540:14310). */
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li .tc-aff-card-action::after {
	content: "Retry";
	padding-right: 6px;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #006b70;
}
/* Retry's glyph is the `replay` icon rotated 180° — not the
   currency_exchange used on the card's IconArea. */
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li .tc-aff-card-action .fa {
	font-size: 0;
	width: 16px;
	height: 16px;
	background: url("/static/icons/affiliates/card-retry.svg") no-repeat center;
	background-size: 10.67px 13.33px;
	transform: rotate(180deg);
}
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li .tc-aff-card-action .fa::before { content: none; }

/* Queue up / View queue have no Figma slot (dev-gated tools) — kept and given the
   reskin's secondary-button look rather than dropped. */
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats .affiliates-payouts-pay-block .ui-massqueue,
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats .affiliates-payouts-pay-block .ui-massqueue-status {
	display: inline-flex;
	align-items: center;
	height: 32px;
	padding: 0 12px;
	box-sizing: border-box;
	border: 1px solid #e8ecef;
	border-radius: 8px;
	background: #ffffff;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #364152;
	text-shadow: none;
	box-shadow: none;
}

/* Payout row actions (Figma 1540:16410/16411: 32-tall buttons top-right).
   Figma draws only "View" + a kebab; Pay / Cancel / Clawback / Retry are real
   live actions the frame omits, so they are KEPT and given the same button
   language rather than dropped or hidden behind an invented kebab. */
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-action .pure-button {
	display: inline-flex;
	align-items: center;
	height: 32px;
	padding: 0 12px;
	box-sizing: border-box;
	margin: 0;
	border: 1px solid #e8ecef;
	border-radius: 6px;
	background: #ffffff;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #364152;
	text-decoration: none;
	text-shadow: none;
	box-shadow: none;
	white-space: nowrap;
}
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-action .pure-button[disabled] { opacity: 0.5; }
/* Pay is the row's primary action. */
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-action .ui-payout {
	background: #006b70;
	border-color: #006b70;
	color: #ffffff;
}
/* Amount / date / processor stack (16414/16415/16452). */
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-commission-amount {
	font-size: 14px;
	font-weight: 600;
	line-height: 20px;
	color: #364152;
}
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-commission-date {
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #8493a8;
}
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-amount .icon-order-processor {
	display: block;
	width: 32px;
	height: 18px;
	margin: 4px 0 0;
	object-fit: contain;
}

/* Payout status ribbon → pill, matching the affiliate rows. Figma 16375 shows no
   status badge, but Overdue/Scheduled/Paid is real state the list depends on, so
   it is kept and restyled rather than dropped. The legacy span is a rotated -45°
   banner across the thumbnail corner; unwind that and pill it.
   `.affiliates-payouts .payouts-list` is needed to outrank the plugin sheet. */
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts .payouts-list .payouts-list-row .ribbon span,
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .ribbon span {
	position: static;
	display: inline-block;
	width: auto;
	transform: none;
	rotate: none;
	padding: 2px 8px;
	border-radius: 999px;
	background: #e8ecef;
	color: #364152;
	font-size: 11px;
	font-weight: 600;
	line-height: 16px;
	letter-spacing: 0.3px;
	text-transform: none;
	text-align: center;
	box-shadow: none;
	opacity: 1;
}
/* Status colours, mirroring the legacy palette's intent. */
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts .payouts-list .payouts-status-overdue .ribbon span { background: #fed7d7; color: #822727; }
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts .payouts-list .payouts-status-due .ribbon span { background: #faf089; color: #5f4c0b; }
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts .payouts-list .payouts-status-scheduled .ribbon span { background: #bee3f8; color: #1f5895; }
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts .payouts-list .payouts-status-paid .ribbon span { background: #9ae6b4; color: #22543d; }
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts .payouts-list .payouts-status-refunded .ribbon span,
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts .payouts-list .payouts-status-clawback .ribbon span { background: #feebc8; color: #7b341e; }
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts .payouts-list .payouts-status-cancelled .ribbon span { background: #e8ecef; color: #6d7d87; }
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts .payouts-list .payouts-status-failed .ribbon span,
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts .payouts-list .payouts-status-paused .ribbon span { background: #fed7d7; color: #822727; }

/* View button: px-8 py-8, gap-4, r6, 12px glyph in a 16 slot,
   label 14/500/16 — the icon was missing entirely. */
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-action .ui-order-more {
	gap: 4px;
	padding: 8px;
}
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-action .ui-order-more::before {
	content: '';
	width: 16px;
	height: 16px;
	flex: 0 0 auto;
	background: url("/static/icons/affiliates/row-view.svg") no-repeat center;
	background-size: 12px 12px;
}
/* Text Layout px-4 (16410) — applied to the label, not the button box. */
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-action .ui-order-more {
	line-height: 16px;
}

/* Payments head: [Upcoming ▾] [All time ▾] │ [Filters],
   gap 12, selects 36 tall px-13 py-7 r8, divider 1×24 #d1d7de inside 8px pads. */
.tc-affiliates-page .tc-aff-head-controls { display: flex; align-items: center; gap: 12px; }
.tc-affiliates-page .tc-aff-head-controls .tc-aff-pill select {
	height: 36px;
	box-sizing: border-box;
	padding: 7px 34px 7px 13px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	background: #ffffff url("/static/icons/affiliates/chevron-expand.svg") no-repeat right 13px center;
	background-size: 8px 4.94px;
	font-size: 14px;
	line-height: 20px;
	color: #2b384a;
	box-shadow: none;
	margin: 0;
}
.tc-affiliates-page .tc-aff-head-controls .tc-aff-head-divider {
	flex: 0 0 auto;
	width: 1px;
	height: 24px;
	margin: 0 8px;
	background: #d1d7de;
}
.tc-affiliates-page .tc-aff-head-controls .tc-aff-pay-filters {
	display: inline-flex;
	align-items: center;
	height: 36px;
	padding: 8px 18px;
	box-sizing: border-box;
	border-radius: 8px;
	background: #006b70;
	border: 1px solid #006b70;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #ffffff;
	cursor: pointer;
	white-space: nowrap;
}
/* Filters toggles the legacy sort/filter strip — hidden only on demand. */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-pre { display: none; }
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts.tc-aff-pay-filters-open .affiliates-sort-pre { display: block; }

/* Row kebab: 32×32, px-8, r6, #e8ecef border, more_vert glyph
   at its native 2.67×10.67 viewBox in a 16 slot. */
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-action { position: relative; }
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .tc-aff-row-kebab {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	box-sizing: border-box;
	border: 1px solid #e8ecef;
	border-radius: 6px;
	background: #ffffff;
	cursor: pointer;
	flex: 0 0 auto;
}
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .tc-aff-row-kebab::before {
	content: '';
	width: 16px;
	height: 16px;
	background: url("/static/icons/affiliates/row-kebab.svg") no-repeat center;
	background-size: 2.67px 10.67px;
}
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .tc-aff-row-kebab:hover { background: #f6f8f9; }
/* The overflow menu — real buttons, relocated. */
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .tc-aff-kebab-menu {
	position: absolute;
	top: calc(100% + 4px);
	right: 0;
	z-index: 20;
	min-width: 160px;
	padding: 4px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 8px;
	box-shadow: 0 6px 10px rgba(0, 0, 0, 0.08), 0 1px 18px rgba(0, 0, 0, 0.06), 0 3px 5px rgba(0, 0, 0, 0.1);
	display: flex;
	flex-direction: column;
	gap: 2px;
}
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .tc-aff-kebab-menu.hidden { display: none; }
@keyframes tc-aff-sheet-up { from { transform: translateY(100%); } to { transform: translateY(0); } }
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .tc-aff-kebab-menu .pure-button {
	display: flex;
	width: 100%;
	height: auto;
	padding: 8px 12px;
	border: 0;
	border-radius: 6px;
	background: transparent;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #364152;
	text-align: left;
	justify-content: flex-start;
	box-shadow: none;
}
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .tc-aff-kebab-menu .pure-button:hover { background: #f6f8f9; }
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .tc-aff-kebab-menu .ui-payout { color: #006b70; }
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .tc-aff-kebab-menu .ui-payout-cancel { color: #cf3b39; }
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .tc-aff-kebab-menu .pure-button[disabled] { opacity: 0.5; cursor: default; }

/* ---- Payments page order --------------------------------
   The frame runs: segmented tabs → stat cards → banner → toolbar → rows → pager.
   The template emits the toolbar BEFORE the stats box, so reorder with flex
   rather than moving markup (the toolbar is a <form> the search JS binds to). */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts { display: flex; flex-direction: column; }
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts > .tc-aff-pay-toggle-row { order: 0; }
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts > #affiliates-payouts-stats { order: 1; }
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts > form.tc-aff-toolbar { order: 2; }
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts > .affiliates-payouts-empty { order: 3; }
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts > #affiliates-payouts-loading { order: 3; }
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts > #affiliates-payouts { order: 4; }
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts > #affiliates-payouts-masspay-actions { order: 5; }

/* Refine controls + sort strip are revealed by Filter / Sort — they keep their
   handlers and are never removed, only collapsed to match the frame. */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .tc-aff-refine-item { display: none; }
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts.tc-aff-pay-filters-open .tc-aff-refine-item { display: flex; }
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts.tc-aff-pay-filters-open .tc-aff-refine-item.hidden { display: none; }
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-pre { display: none; }
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts.tc-aff-pay-sort-open .affiliates-sort-pre { display: block; }
/* Active state for the toolbar toggles. */
.tc-affiliates-page .tc-aff-toolbar .tc-aff-btn-sort.active,
.tc-affiliates-page .tc-aff-toolbar .tc-aff-btngroup-seg.active { background: #f6f8f9; }

/* The cards must span the same 1152 as the toolbar/rows (Figma 14303 = 1152).
   The legacy `.box.padding-full-05` wrapper adds 12px padding and the
   autolayout-column panel adds a 12px right pad + 1px divider border, which
   shrank the row to 1115 and drew a stray rule to the right of the cards. */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts > #affiliates-payouts-stats {
	/* in-kind !important: helpers.css `.padding-full-05 { padding: !important }` */
	padding: 0 !important;
	border: 0;
	background: transparent;
	box-shadow: none;
	margin: 0 0 16px;
}
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats .affiliates-payouts-stats-wrap .autolayout > .affiliates-payouts-stats.autolayout-column {
	padding: 0;
	border: 0;
	max-width: none;
	width: 100%;
}

/* `.self-clear::after` is a float clearfix (display:table). Inside the flex card
   row it becomes a 4th flex item and eats one 16px gap, shrinking the cards to
   368 instead of Figma's 373.33 (3×373.33 + 2×16 = 1152). */
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear::after { display: none; }

/* Card kebab: more_horiz at its native 16×4 viewBox in a 24
   slot, pinned to the card's top-right. Holds the queue tools. */
/* The queue tools carry the app's runtime `hidden` class until a queue is
   actionable, so the kebab is shown only while it has something to open —
   otherwise it would be the dead control we keep refusing to ship. */
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li .tc-aff-card-kebab { display: none; }
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li:has(.tc-aff-kebab-menu .pure-button:not(.hidden)) .tc-aff-card-kebab {
	position: absolute;
	top: 24px;
	right: 24px;
	width: 24px;
	height: 24px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 6px;
	cursor: pointer;
}
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li .tc-aff-card-kebab::before {
	content: '';
	width: 16px;
	height: 4px;
	background: url("/static/icons/affiliates/card-kebab.svg") no-repeat center;
	background-size: 16px 4px;
}
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li .tc-aff-card-kebab:hover { background: #f6f8f9; }
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li .tc-aff-kebab-menu {
	position: absolute;
	top: 52px;
	right: 24px;
	z-index: 20;
	min-width: 160px;
	padding: 4px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 8px;
	box-shadow: 0 6px 10px rgba(0, 0, 0, 0.08), 0 1px 18px rgba(0, 0, 0, 0.06), 0 3px 5px rgba(0, 0, 0, 0.1);
	display: flex;
	flex-direction: column;
	gap: 2px;
	cursor: default;
}
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li .tc-aff-kebab-menu.hidden { display: none; }
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li .tc-aff-kebab-menu .pure-button {
	display: flex;
	width: 100%;
	height: auto;
	margin: 0;
	padding: 8px 12px;
	border: 0;
	border-radius: 6px;
	background: transparent;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #364152;
	text-align: left;
	justify-content: flex-start;
	text-shadow: none;
	box-shadow: none;
}
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li .tc-aff-kebab-menu .pure-button:hover { background: #f6f8f9; }

/* Avatar placeholder: #f6f8f9 fill, r16 — the legacy
   gravatar default is a grey mystery-person bitmap. */
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts .payouts-list .payout-column-thumbnail img,
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-thumbnail img { background: transparent; }

/* ROOT CAUSE of the payout rows rendering in the legacy face at legacy sizes:
   main.css's own base rule
     `html, body, button, input, select, textarea, .pure-g [class*="pure-u"]
      { font-size: 13px; font-family: -apple-system… }`
   re-declares BOTH on every Pure grid column. The payout row is built from
   .pure-u-* columns, so Inter inheritance dies at the column and each child
   resolves against 13px (hence 10.8px labels and -apple-system text) no matter
   what the row-level rules say. Restore inheritance inside the reskinned rows. */
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .pure-g [class*="pure-u"] {
	font-family: inherit;
	font-size: inherit;
}

/* …and Pure's own `.pure-g { font-family: FreeSans… }` (its inline-block grid
   whitespace hack) is what the columns then inherit, so the face must be
   restored on the grid itself, not just its columns. */
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .pure-g {
	font-family: inherit;
	font-size: inherit;
}
/* The plugin scopes the amount/date with an element+class tail
   (`.payout-column-amount span.payout-row-commission-date` = 4 classes + 1
   element), which outranks the doubled page class. Match its shape and add one. */
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-amount span.payout-row-commission-amount {
	font-size: 14px;
	font-weight: 600;
	line-height: 20px;
	color: #364152;
	margin-bottom: 0;
}
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-amount span.payout-row-commission-date {
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #8493a8;
	/* Also carried a 0.4em bottom margin (5.6px) from the same element-qualified
	   plugin rule; Figma 1540:16413 stacks date straight onto the amount and lets
	   the processor logo's own pt-4 (1540:16450) be the only space below. */
	margin-bottom: 0;
}

/* The plugin sheet blocks out every stacked span in the row with
   `margin: 0 0 0.15em` and an em-based `padding-right`
   (`.affiliates-payouts .payouts-list .payout-row-affiliate-email` etc, 3 classes,
   loaded after this file). Because those are em units they scale with each span's
   font-size, so they landed as ~2-2.4px of drift ABOVE and BETWEEN every line —
   which is what put the name at y=18 instead of 16, the email at 44.9 instead of
   40 and the amount at 106 instead of 114. Figma stacks all of these flush:
   name 0-24, email 24-44 (1540:16396) and amount 0-20, date 20-40 (1540:16413). */
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-affiliate-name,
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-affiliate-email,
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-affiliate-for,
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-commission-amount,
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-commission-date {
	margin-bottom: 0;
	padding-right: 0;
}

/* The affiliates plugin sizes every text input on its views at 110%
   (`.view-affiliates-list .pure-form input[type="text"]`, 3 classes + element,
   loaded after this file), which reads the 13px base and lands the placeholder at
   13.2px. Figma 1546:17383 specifies 12/16. Matching the attribute selector to
   outrank it — the same trap as `#products-list-search-field { font-size: 128% }`
   on the products list. */
.tc-affiliates-page.tc-affiliates-page .tc-aff-table-search input[type="text"] {
	font-size: 12px;
	line-height: 16px;
}

/* The relocated export button carries a legacy <i class="fa fa-table"> glyph; the
   segment paints Figma's file_download icon (111116:12350) via ::before, so the
   legacy one would double up. Hidden, not removed — the element is the real
   control and its markup belongs to the iterate view. */
.tc-affiliates-page .tc-aff-btngroup-seg > .fa { display: none; }

/* The plugin's `.affiliates-payouts-stats h5 { letter-spacing: -2px }` (and
   main.css's own `h1..h6 { letter-spacing: -1px }`) squeeze the card value.
   Figma's value node (I1540:14304;111067:879) carries no tracking class at all,
   unlike its label, which is explicitly tracking-[0.48px]. */
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats .affiliates-payouts-stats ul.self-clear > li h5,
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li h5,
.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li h5 span {
	letter-spacing: normal;
}

/* Figma 1540:16399 is plain teal text — no underline. The rule below carried one
   over from the legacy link styling; the design does not have it. */
.tc-affiliates-page.tc-affiliates-page .affiliates-payouts .payouts-list .payout-row-affiliate-email a,
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-affiliate-email a {
	text-decoration: none;
}

/* 1540:16397: min-w-full + overflow-hidden + text-ellipsis + nowrap. */
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-affiliate-name {
	min-width: 100%;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	letter-spacing: normal;
}
/* 1540:16405: the product name is whitespace-nowrap in Figma; 16404's label is
   w-[392px]. Both sit in the fixed 105px block, so neither may wrap. */
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-affiliate-for,
.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-affiliate-for b {
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	max-width: 392px;
}

/* Clear is surfaced in the toolbar while a search/filter is applied, so there is
   always a way back to the unfiltered list even with the Filters panel closed.
   This is the REAL #affiliates-payouts-reset, not a copy — its handler restores
   every default and re-runs the search. `.tc-aff-pay-filtered` is set by the
   page's own refineApplied() check (payments.php); the button's `disabled`
   attribute can't drive this, as payouts.js clears it on the page-load search. */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts.tc-aff-pay-filtered .tc-aff-refine-item.affiliates-payouts-reset {
	display: inline-flex;
}

/* Pagination row. The legacy footer holds the real paginator
   (and the CSV job-status button); Figma lays it out as a justify-between row.
   It only renders when there is more than one page, which is why it is invisible
   on small accounts — per_page is 10 (view.affiliate_payments_iterate.php). */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin: 16px 0 0;
	padding: 0;
	background: transparent;
	border: 0;
}
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post > .pure-g {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	margin: 0;
}
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post > .pure-g > [class*="pure-u"] {
	width: auto;
	padding: 0;
}
/* Frame 2245 (1546:17417): the pager sits right, gap-8. */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post ul.pagination {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
	justify-content: flex-end;
}
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post ul.pagination li {
	margin: 0;
	padding: 0;
	list-style: none;
	float: none;
}
/* Page button (1546:17419): 32 square, white, #e8ecef hairline, 14/500/16. */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post ul.pagination li a.page,
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post ul.pagination li > span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	width: 32px;
	height: 32px;
	padding: 8px 12px;
	border-radius: 6px;
	background: #ffffff;
	/* Inside stroke, as everywhere else in this design. */
	box-shadow: inset 0 0 0 1px #e8ecef;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	color: #364152;
	text-decoration: none;
}
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post ul.pagination li.current a.page {
	background: #f6f8f9;
	box-shadow: inset 0 0 0 1px #d1d7de;
}
/* Prev / next (1546:17418 / 17420): 32 square, #f6f8f9 with a #d1d7de hairline
   and a 16px chevron slot. The paginator prints &laquo;/&raquo; text, so the
   glyph is hidden and Figma's chevron painted in its place. */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post ul.pagination li.pagination--start,
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post ul.pagination li.pagination--end {
	display: inline-flex;
}
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post ul.pagination li.pagination--start a,
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post ul.pagination li.pagination--end a,
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post ul.pagination li.pagination--start,
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post ul.pagination li.pagination--end {
	box-sizing: border-box;
	width: 32px;
	height: 32px;
	border-radius: 6px;
	background-color: #f6f8f9;
	box-shadow: inset 0 0 0 1px #d1d7de;
	font-size: 0;
	background-repeat: no-repeat;
	background-position: center;
	background-size: 4.94px 8px;
	text-decoration: none;
}
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post ul.pagination li.pagination--start a,
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post ul.pagination li.pagination--start {
	background-image: url("/static/icons/affiliates/pager-prev.svg");
}
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post ul.pagination li.pagination--end a,
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post ul.pagination li.pagination--end {
	background-image: url("/static/icons/affiliates/pager-next.svg");
}
/* Page 1: drop the back arrow entirely rather than show it disabled. The last-page
   next arrow stays, greyed, the way a disabled control does. */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post ul.pagination li.pagination--start:not(:has(a)) {
	display: none;
}
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post ul.pagination li.pagination--end:not(:has(a)) {
	opacity: 0.5;
}

/* Item-per-page: the select and its label share a gap-8 row on
   the left of the pagination row. Hidden until the JS re-homes it into the footer,
   so it never flashes in the toolbar where the markup lives. */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post .tc-aff-perpage {
	display: flex;
	align-items: center;
	gap: 8px;
}
/* 1546:17416 — the label. */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post .tc-aff-perpage > span {
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #2a3648;
	white-space: nowrap;
}
/* 1546:17415 — a 72px select: px-13/py-8, rounded-8, #d1d7de hairline (inside, so
   the box stays 32 tall), 14/400/16, with a 16px expand_more slot on the right. */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post .tc-aff-perpage .tc-aff-pill {
	position: relative;
	display: flex;
	align-items: center;
	box-sizing: border-box;
	width: 72px;
	/* py-0: the native select already carries the 32px height; py-8 made it 48. */
	height: 32px;
	padding: 0 13px;
	border: 0;
	border-radius: 8px;
	background-color: #ffffff;
	box-shadow: inset 0 0 0 1px #d1d7de;
	background-image: url("/static/icons/affiliates/select-expand.svg");
	background-repeat: no-repeat;
	/* 13px right padding, 16px icon slot, 8px glyph centred in it. */
	background-position: right 13px center;
	background-size: 8px 4.94px;
}
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post .tc-aff-perpage .tc-aff-pill select {
	width: 100%;
	height: auto;
	margin: 0;
	padding: 0;
	border: 0;
	outline: 0;
	background: transparent;
	box-shadow: none;
	font-size: 14px;
	font-weight: 400;
	line-height: 16px;
	color: #364152;
	appearance: none;
	-webkit-appearance: none;
	cursor: pointer;
}

/* `.pure-g` collapses whitespace between inline-block columns with
   `letter-spacing: -0.31em`, and only `[class*="pure-u"]` children undo it. This
   block sits directly in the footer's grid without being a column, so it inherited
   the hack and rendered "Item Per Page" with its letters piled on top of each
   other. (Same trap as `.pure-g`'s FreeSans font-family on the payout rows.) */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post .tc-aff-perpage,
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post .tc-aff-perpage * {
	letter-spacing: normal;
	font-family: inherit;
}

/* ...and `.pure-g` also sets `font-family: FreeSans` (the other half of the same
   inline-block hack), so `inherit` above resolves to FreeSans rather than Inter.
   Restore the face on the grid itself, exactly as the payout rows do. */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post .pure-g {
	font-family: inherit;
	letter-spacing: normal;
}

/* The pager sits in a Pure column, so main.css's own base rule
   (`… .pure-g [class*="pure-u"] { font-size: 13px; font-family: -apple-system }`)
   re-declares the face on it — the same rule that put the payout rows in the
   legacy font. Restore inheritance so the page buttons render in Inter. */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .affiliates-sort-post .pure-g [class*="pure-u"] {
	font-family: inherit;
	font-size: inherit;
	letter-spacing: normal;
}

/* "Pay manual commissions" (.ui-masspay). Shares the reskin modal shell
   (.tc-aff-modal) with the import wizard, but keeps its own option cards: the
   import wizard's .tc-modal-radios are a bespoke icon-on-top design for choosing
   an import type, whereas these are a radio beside a title and description. */
.alertify .ajs-dialog.tc-aff-masspay-modal .tc-modal-radios {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin: 24px 0 0;
	padding: 0;
	list-style: none;
}
.alertify .ajs-dialog.tc-aff-masspay-modal .tc-modal-radios li {
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 16px;
	border: 0;
	border-radius: 8px;
	background: #ffffff;
	box-sizing: border-box;
	/* Inside stroke, so selecting a card doesn't shift its contents by a pixel. */
	box-shadow: inset 0 0 0 1px #d1d7de;
	cursor: pointer;
}
.alertify .ajs-dialog.tc-aff-masspay-modal .tc-modal-radios li.active {
	background: #f6f8f9;
	box-shadow: inset 0 0 0 2px #006b70;
}
.alertify .ajs-dialog.tc-aff-masspay-modal .tc-modal-radios .radio {
	display: block;
	margin: 0;
	padding: 0;
	min-height: 0;
}
/* The native radio is replaced by a drawn control on the label, the same way the
   rest of the reskin does it — but kept in the DOM and focusable, since it is
   what the save handler reads (:checked). */
.alertify .ajs-dialog.tc-aff-masspay-modal .tc-modal-radios .radio input[type="radio"] {
	position: absolute;
	opacity: 0;
	width: 0;
	height: 0;
	margin: 0;
}
.alertify .ajs-dialog.tc-aff-masspay-modal .tc-modal-radios .radio label {
	display: block;
	position: relative;
	margin: 0;
	padding: 0 0 0 32px;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	letter-spacing: normal;
	color: #364152;
	cursor: pointer;
}
.alertify .ajs-dialog.tc-aff-masspay-modal .tc-modal-radios .radio label span {
	display: block;
	margin-top: 2px;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #8493a8;
}
/* Radio: 20px ring, teal when chosen. */
.alertify .ajs-dialog.tc-aff-masspay-modal .tc-modal-radios .radio label::before {
	content: '';
	position: absolute;
	left: 0;
	top: 2px;
	width: 20px;
	height: 20px;
	box-sizing: border-box;
	border-radius: 50%;
	background: #ffffff;
	/* The legacy skin draws this ring as a BORDER and turns it purple on :checked
	   (`.radio.radio-primary input:checked + label::before`). Painting the teal
	   ring as an inset shadow without clearing that border left the purple one on
	   top of it — the ring has to be zeroed, not just over-painted. */
	border: 0;
	box-shadow: inset 0 0 0 1px #d1d7de;
}
.alertify .ajs-dialog.tc-aff-masspay-modal .tc-modal-radios .radio label::after {
	content: '';
	position: absolute;
	left: 6px;
	top: 8px;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: transparent;
}
.alertify .ajs-dialog.tc-aff-masspay-modal .tc-modal-radios .radio input[type="radio"]:checked + label::before {
	box-shadow: inset 0 0 0 2px #006b70;
}
.alertify .ajs-dialog.tc-aff-masspay-modal .tc-modal-radios .radio input[type="radio"]:checked + label::after {
	background: #006b70;
}
.alertify .ajs-dialog.tc-aff-masspay-modal .tc-modal-radios .radio input[type="radio"]:focus-visible + label::before {
	box-shadow: inset 0 0 0 2px #006b70, 0 0 0 3px rgba(0, 107, 112, 0.2);
}

/* "Make manual payments" — the Manual panel's real .ui-masspay
   button, moved onto the tabs row and right-aligned (Figma x=971+215 = the 1184
   content edge, y=184 = the tabs row). Shown only while the Manual segment is
   active, since it is that panel's control, as in the existing UI. */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .tc-aff-segmented {
	/* Full width so the button can sit at the far right; the tabs keep their gap-32
	   and stay left-aligned. */
	display: flex;
	width: 100%;
}
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .tc-aff-segmented .tc-aff-masspay-btn { display: none; }
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .tc-aff-segmented:has(.tc-aff-seg-item[data-pay-view="manual"].active) .tc-aff-masspay-btn {
	display: inline-flex;
	align-items: center;
	margin-left: auto;
	box-sizing: border-box;
	height: 36px;
	padding: 8px 12px;
	border: 1px solid #006b70;
	border-radius: 8px;
	background: #006b70;
	box-shadow: none;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	letter-spacing: normal;
	text-transform: none;
	color: #ffffff;
	cursor: pointer;
}
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .tc-aff-segmented .tc-aff-masspay-btn:hover { background: #00868c; border-color: #00868c; }
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .tc-aff-segmented .tc-aff-masspay-btn[disabled] { opacity: 0.5; cursor: default; }
/* Left Icon (I1540:14695;2421:113844): a 20px slot holding a 16.67x13.33 glyph.
   The legacy markup carries a fa-dollar-sign <i>; it is restyled into the Figma
   payment icon rather than removed, since the element belongs to the template. */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .tc-aff-segmented .tc-aff-masspay-btn .fa {
	width: 20px;
	height: 20px;
	margin: 0;
	font-size: 0;
	background: url("/static/icons/affiliates/masspay-payment.svg") no-repeat center;
	background-size: 16.67px 13.33px;
	filter: brightness(0) invert(1);
}
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .tc-aff-segmented .tc-aff-masspay-btn .fa::before { content: none; }
/* Text Layout (I1540:14695;2423:111940) is px-6 around the label. */
.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts .tc-aff-segmented .tc-aff-masspay-btn .tc-aff-masspay-label {
	padding: 0 6px;
}

/* The shared shell's `.ajs-content { padding: 0 22px }` is tuned for the import
   wizard, which supplies its own vertical rhythm via an inner .ui-content wrapper.
   This modal has no such wrapper, so it was left with no vertical padding (the
   description sat on the header rule) and a 22px horizontal inset that missed the
   header's and footer's 24px by 2. Align to 24 and give the body room. */
.alertify .ajs-dialog.tc-aff-masspay-modal .ajs-content {
	padding: 20px 24px 24px;
}
/* The cards then space off the description rather than the container. */
.alertify .ajs-dialog.tc-aff-masspay-modal .tc-modal-radios {
	margin: 20px 0 0;
}

/* Footer button spacing. Two later sheets tie with the shell's own rule and win
   on load order: alertify.css's `.ajs-footer .ajs-buttons.ajs-primary .ajs-button
   { margin: 4px }` and style.css's `.ajs-button + .ajs-button { margin-left: 15px }`.
   That 4px right margin held Next 29px off the edge — 4 short of the 24px gutter
   the title, description and cards all share — and made the button gap 19. Carry
   `.ajs-buttons.ajs-primary` to outrank both, and let the flex row own the gap. */
.alertify .ajs-dialog.tc-aff-modal .ajs-footer .ajs-buttons.ajs-primary {
	gap: 8px;
}
.alertify .ajs-dialog.tc-aff-modal .ajs-footer .ajs-buttons.ajs-primary .ajs-button,
.alertify .ajs-dialog.tc-aff-modal .ajs-footer .ajs-buttons.ajs-primary .ajs-button + .ajs-button {
	margin: 0;
}

/* ===== Product options tab — Figma 1546:18023 ===================== */

/* Toolbar (1551:13398): count left, search right. Same shape as the payouts
   toolbar (17380/17383), so the sizes below match that verified build. */
.tc-aff-options-page #campaigns-list-campaigns-wrap { display: flex; flex-direction: column; }
.tc-aff-options-page .tc-aff-options-toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin: 0 0 16px;
}
.tc-aff-options-page #campaigns-list-title {
	order: 0;
	margin: 0;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #2a3648;
	text-align: left;
}
.tc-aff-options-page #campaigns-list-search-field {
	float: none;
	margin: 0;
	box-sizing: border-box;
	width: 200px;
	height: 32px;
	padding: 8px 13px 8px 37px;
	border: 0;
	border-radius: 6px;
	background: #ffffff url("/static/icons/affiliates/search.svg") no-repeat 13px center;
	background-size: 16px 16px;
	box-shadow: inset 0 0 0 1px #d1d7de;
	font-size: 12px;
	line-height: 16px;
	color: #364152;
}
.tc-aff-options-page #campaigns-list-search-field::placeholder { color: #afbbc9; }

/* Row (1551:13112): Info py-16; Avatar pl-16 + 160 square; Text px-16 with the
   Title stack centred against the avatar; actions top-right. */
.tc-aff-options-page #campaigns-list.campaigns-list-list .box-list-product-row {
	display: flex;
	align-items: flex-start;
	gap: 0;
	padding: 16px 0;
	border: 0;
	/* Inside stroke, as everywhere else in this design. */
	box-shadow: inset 0 0 0 1px #e8ecef, 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	border-radius: 8px;
	overflow: visible;
}
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-name {
	display: flex;
	align-items: flex-start;
	gap: 0;
	flex: 1 1 auto;
	min-width: 0;
}
/* Avatar (1551:13115/13116): pl-16, 160 square, r16. The tile keeps the product's
   own gradient/image — the person illustration is the empty state behind it. */
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-thumbnail {
	position: relative;
	flex: 0 0 auto;
	width: 160px;
	height: 160px;
	margin: 0 0 0 16px;
	border-radius: 16px;
	overflow: hidden;
	background-color: #f6f8f9;
	background-image: url("/static/icons/affiliates/avatar-person.svg");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 96px 96px;
}
/* Title (1551:13133): flex-1, gap-8, justify-center, inside Text's px-16. */
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-additional {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: flex-start;
	gap: 8px;
	flex: 1 1 auto;
	min-width: 0;
	padding: 0 16px;
	margin: 0;
	float: none;
	width: auto;
}
/* 1551:13134 name / 1551:13136 subtitle */
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-name-el {
	display: block;
	min-width: 100%;
	margin: 0;
	font-size: 16px;
	font-weight: 600;
	line-height: 24px;
	letter-spacing: normal;
	color: #364152;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-additional .tc-aff-options-sub {
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #364152;
}
/* LIVE badge (1551:13184). The .ribbon is the real status element; the JS lifts it
   out of the thumbnail into the Title stack, where Figma puts it. */
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-additional .ribbon,
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-additional .ribbon span {
	position: static;
	display: inline-flex;
	align-items: center;
	width: auto;
	height: auto;
	inset: auto;
	margin: 0;
	padding: 0;
	transform: none;
	rotate: none;
	overflow: visible;
	background: transparent;
	border: 0;
	box-shadow: none;
	opacity: 1;
	text-align: left;
	line-height: normal;
}
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-additional .ribbon span {
	padding: 4px 8px;
	border-radius: 8px;
	background: #c6f6d5;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	letter-spacing: normal;
	color: #364152;
	text-transform: none;
}
/* Actions (1551:13144/13146): top-right, gap-8, inside Text's px-16. */
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions {
	display: flex;
	align-items: center;
	gap: 8px;
	flex: 0 0 auto;
	align-self: flex-start;
	padding: 0 16px 0 0;
	margin: 0;
	float: none;
	width: auto;
}
/* Get sign-up URL (1551:13147) + the kebab (1551:13148) share one button shape. */
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .pure-button {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	box-sizing: border-box;
	height: 32px;
	margin: 0;
	padding: 8px;
	border: 0;
	border-radius: 6px;
	background: #ffffff;
	box-shadow: inset 0 0 0 1px #e8ecef;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	letter-spacing: normal;
	text-transform: none;
	color: #364152;
	text-shadow: none;
}
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .ui-affiliates-campaigns-signup-url::before {
	content: '';
	width: 16px;
	height: 16px;
	flex: 0 0 auto;
	background: url("/static/icons/affiliates/signup-url.svg") no-repeat center;
	background-size: 12px 12px;
}
/* Text Layout px-4 (I1551:13147;2423:111997) */
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .tc-aff-options-btn-label { padding: 0 4px; }
/* Manage → kebab (1551:13148): same submenu, icon instead of the word. */
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .button-submenu {
	position: relative;
	width: 32px;
	padding: 8px;
	font-size: 0;
	justify-content: center;
}
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .button-submenu::before {
	content: '';
	width: 16px;
	height: 16px;
	background: url("/static/icons/affiliates/row-kebab.svg") no-repeat center;
	background-size: 2.67px 10.67px;
}

/* The legacy #campaigns-list-title is a search-state message ("N affiliate
   campaigns match your search") that legacy CSS keeps display:none until a search
   runs. Figma 1551:13399 wants a persistent "Showing X of Y Items" in that slot,
   so the JS renders one and this hides the legacy line rather than fighting it. */
/* Both are mobile-only; the 767px block switches them on. Desktop never had either. */
.tc-aff-options-page .tc-aff-options-heading { display: none; }
/* Same for the profile's stats heading and products badge — both are added on
   every viewport, and the 767px block is what switches them on. */
.tc-aff-profile-page .tc-aff-profile-stats-head,
.tc-aff-profile-page .tc-aff-products-badge { display: none; }
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .tc-aff-options-copy { display: none; }

.tc-aff-options-page #campaigns-list-title { display: none; }
.tc-aff-options-page .tc-aff-options-count {
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	letter-spacing: normal;
	color: #2a3648;
	white-space: nowrap;
}
/* The buttons must size to their own label — the legacy sheet pins them narrow,
   which cut "Get sign up URL" off mid-word. */
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .pure-button {
	flex: 0 0 auto;
	width: auto;
	min-width: 0;
	max-width: none;
	white-space: nowrap;
}
/* Figma 1551:13146 orders them "Get sign-up URL" then the kebab; the markup has
   the Manage submenu first, so re-order visually without moving the DOM (the
   submenu's handlers and its <ul> stay exactly where they are). */
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .pure-button.button-primary { order: 0; }
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .button-submenu { order: 1; }

/* Get sign-up URL icon (I1551:13147;2421:114007). The control is
   .ui-affiliates-campaigns-embed — the earlier selector guessed at a
   -signup-url class that does not exist, so no icon rendered. */
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .ui-affiliates-campaigns-embed::before {
	content: '';
	width: 16px;
	height: 16px;
	flex: 0 0 auto;
	background: url("/static/icons/affiliates/signup-url.svg") no-repeat center;
	background-size: 12px 12px;
}
/* The thumbnail's inner div is the legacy generated placeholder — a translucent
   gradient, which let the person illustration show through it. Figma 1551:13116
   uses the illustration as the empty state, so the gradient goes when there is no
   real product image; a real <img> still covers the tile. */
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-thumbnail > div:not(.ribbon) { display: none; }
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-thumbnail img {
	position: relative;
	z-index: 1;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
/* Row = Info py-16 around the 160 avatar (Figma 1551:13112 → 192 tall). The
   legacy sheet pads the row itself, which pushed it to 204. */
.tc-aff-options-page #campaigns-list.campaigns-list-list .box-list-product-row {
	padding: 16px 0;
	min-height: 0;
}

/* An earlier rule for this tab scopes the name via `.list-product-title
   .list-product-name-el`, one class deeper than the block above, so it kept the
   name at 500. Figma 1551:13134 is Semi Bold 600. */
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-title .list-product-name-el,
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-additional .list-product-name-el {
	font-size: 16px;
	font-weight: 600;
	line-height: 24px;
	color: #364152;
}
/* The row carries `.self-clear`, whose ::after float-clearfix (display: table)
   becomes a real flex item here and added 12px — the row is Info's py-16 around a
   160 avatar, i.e. 192. Same trap as the payout stat cards' ul.self-clear. */
.tc-aff-options-page #campaigns-list.campaigns-list-list .box-list-product-row.self-clear::after,
.tc-aff-options-page #campaigns-list.campaigns-list-list .box-list-product-row.self-clear::before {
	display: none;
}

/* .list-product-name keeps a legacy 12px bottom margin, which made the row 204
   instead of Figma's 192 (Info's py-16 around the 160 avatar, 1551:13112). */
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-name { margin: 0; }

/* Kebab dropdown: white card, #e8ecef hairline, r8, p-16,
   gap-8, items 13/500/20 #364152. The legacy submenu <ul> stays exactly where it
   is inside the button — it is only restyled, so its hover behaviour and the
   items' own handlers are untouched. */
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .button-submenu .button-submenu-list {
	display: none;
	flex-direction: column;
	align-items: flex-start;
	justify-content: center;
	gap: 8px;
	padding: 16px;
	margin: 0;
	border: 0;
	border-radius: 8px;
	background: #ffffff;
	box-shadow: inset 0 0 0 1px #e8ecef, 0 6px 10px 0 rgba(0, 0, 0, 0.08);
	list-style: none;
	font-size: 13px;
	text-align: left;
}
/* Hover is what the legacy uses to open it — keep that, just display:flex now. */
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .button-submenu:hover .button-submenu-list {
	display: flex;
}
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .button-submenu .button-submenu-list li {
	margin: 0;
	padding: 0;
	list-style: none;
	width: 100%;
}
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .button-submenu .button-submenu-list li span {
	display: block;
	padding: 0;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 13px;
	font-weight: 500;
	line-height: 20px;
	letter-spacing: normal;
	text-transform: none;
	color: #364152;
	white-space: nowrap;
	text-align: left;
	cursor: pointer;
}

/* The legacy submenu is absolutely positioned with BOTH left:-1px and right:-1px,
   so it stretched to its trigger's width — fine for the old wide "Manage" button,
   but the kebab is 32px, leaving 2px of content box and the items spilling out of
   the card. Release the left edge so it sizes to its content and hangs off the
   right, and give it Figma's 4px offset below the button (1551:13207). */
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .button-submenu .button-submenu-list {
	left: auto;
	right: 0;
	width: auto;
	min-width: max-content;
	top: calc(100% + 4px);
}
/* The kebab (32px) is far narrower than the menu, which hangs ~107px to its left with
   a 4px gap. Moving diagonally from the kebab to a menu item, the pointer leaves the
   kebab's left edge ABOVE the menu and drops :hover — the menu closes before it can be
   reached. Widen the hover target: a transparent ::before spanning the menu's FULL
   width and reaching up to the kebab's top (gap 4 + kebab 32 = 36) so the whole area
   above the menu keeps the hover alive. It is a child of the (display:none-until-open)
   menu, so it only exists while the menu is open and never blocks the sibling button. */
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .button-submenu .button-submenu-list::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: -36px;
	height: 36px;
}

/* A thumbnail whose src 404s (the resize proxy misses for some products) would
   otherwise show the browser's broken-image glyph over the tile — the JS flags it
   and the person illustration behind it becomes the empty state, as Figma intends. */
.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-thumbnail img.tc-aff-thumb-broken { display: none; }

/* Footer — the same component as the payouts footer (17413),
   so the values below mirror that verified build. */
.tc-aff-options-page .tc-aff-options-foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin: 16px 0 0;
}
.tc-aff-options-page .tc-aff-options-foot .tc-aff-perpage {
	display: flex;
	align-items: center;
	gap: 8px;
}
.tc-aff-options-page .tc-aff-options-foot .tc-aff-perpage > span {
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	letter-spacing: normal;
	color: #2a3648;
	white-space: nowrap;
}
/* 1551:13433 — 72px select, px-13/py-8, r8, inside stroke, expand_more at 16. */
.tc-aff-options-page .tc-aff-options-foot .tc-aff-perpage .tc-aff-pill {
	display: flex;
	align-items: center;
	box-sizing: border-box;
	width: 72px;
	padding: 8px 13px;
	border: 0;
	border-radius: 8px;
	background-color: #ffffff;
	box-shadow: inset 0 0 0 1px #d1d7de;
	background-image: url("/static/icons/affiliates/select-expand.svg");
	background-repeat: no-repeat;
	background-position: right 13px center;
	background-size: 8px 4.94px;
}
.tc-aff-options-page .tc-aff-options-foot .tc-aff-perpage .tc-aff-pill select {
	width: 100%;
	height: auto;
	margin: 0;
	padding: 0;
	border: 0;
	outline: 0;
	background: transparent;
	box-shadow: none;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 16px;
	letter-spacing: normal;
	color: #364152;
	appearance: none;
	-webkit-appearance: none;
	cursor: pointer;
}
/* Pager (1551:13435): List.js fills this <ul>. */
.tc-aff-options-page .tc-aff-options-foot ul.pagination {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.tc-aff-options-page .tc-aff-options-foot ul.pagination li { margin: 0; padding: 0; list-style: none; float: none; }
/* 1551:13437 page button */
.tc-aff-options-page .tc-aff-options-foot ul.pagination li a,
.tc-aff-options-page .tc-aff-options-foot ul.pagination li span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	min-width: 32px;
	height: 32px;
	padding: 8px 12px;
	border: 0;
	border-radius: 6px;
	background: #ffffff;
	box-shadow: inset 0 0 0 1px #e8ecef;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	letter-spacing: normal;
	color: #364152;
	text-decoration: none;
	cursor: pointer;
}
.tc-aff-options-page .tc-aff-options-foot ul.pagination li.active a,
.tc-aff-options-page .tc-aff-options-foot ul.pagination li.active span {
	background: #f6f8f9;
	box-shadow: inset 0 0 0 1px #d1d7de;
}

/* ===== Campaign modals (Get sign-up URL / Promo materials / sign-up page) =====
   They all come from buildWindow() in options.php and share the reskin shell
   (.tc-aff-modal). Only their contents need the reskin's language. */

/* The "Sign up URL" / "Embeddable sign up button" switch is a .radiogroup whose
   labels are option cards — legacy paints the chosen one bright blue. Same card
   treatment as the Pay-manual-commissions modal: white with a hairline, teal ring
   and a tinted fill when selected. The radios themselves are untouched. */
.alertify .ajs-dialog.tc-aff-campaign-modal .radiogroup:has(.ui-affiliate-signup_type-option) { display: flex; gap: 16px; }
.alertify .ajs-dialog.tc-aff-campaign-modal .radiogroup .ui-affiliate-signup_type-option { flex: 1 1 0; min-width: 0; float: none; margin: 0; }
.alertify .ajs-dialog.tc-aff-campaign-modal .radiogroup .ui-affiliate-signup_type-option label {
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-height: 96px;
	padding: 12px;
	border: 0;
	border-radius: 12px;
	background: #ffffff;
	box-shadow: inset 0 0 0 1px #e8ecef;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	letter-spacing: normal;
	color: #64748b;
	text-shadow: none;
	cursor: pointer;
}
.alertify .ajs-dialog.tc-aff-campaign-modal .radiogroup .ui-affiliate-signup_type-option label span { margin: 0; color: inherit; }
/* Tab icons rendered from the Figma SVGs (28px), recoloured per state. */
.alertify .ajs-dialog.tc-aff-campaign-modal .radiogroup .ui-affiliate-signup_type-option label .fa {
	margin: 0;
	width: 28px;
	height: 28px;
	font-size: 0;
	background-color: #64748b;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-size: 28px 28px;
	mask-size: 28px 28px;
}
.alertify .ajs-dialog.tc-aff-campaign-modal .radiogroup .ui-affiliate-signup_type-option label .fa::before { content: none; }
.alertify .ajs-dialog.tc-aff-campaign-modal .radiogroup .ui-affiliate-signup_type-option label .fa-link { -webkit-mask-image: url("/static/icons/affiliates/tab-link.svg"); mask-image: url("/static/icons/affiliates/tab-link.svg"); }
.alertify .ajs-dialog.tc-aff-campaign-modal .radiogroup .ui-affiliate-signup_type-option label .fa-mouse-pointer { -webkit-mask-image: url("/static/icons/affiliates/tab-cursor.svg"); mask-image: url("/static/icons/affiliates/tab-cursor.svg"); }
.alertify .ajs-dialog.tc-aff-campaign-modal .radiogroup .ui-affiliate-signup_type-option:has(input:checked) label {
	background: #ffffff;
	box-shadow: inset 0 0 0 2px #1e5e67;
	color: #1e293b;
}
.alertify .ajs-dialog.tc-aff-campaign-modal .radiogroup .ui-affiliate-signup_type-option:has(input:checked) label .fa { background-color: #1e5e67; }
/* Section headings + copy inside the modal. */
.alertify .ajs-dialog.tc-aff-campaign-modal .ajs-content h2,
.alertify .ajs-dialog.tc-aff-campaign-modal .ajs-content h3 {
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 16px;
	font-weight: 600;
	line-height: 24px;
	letter-spacing: normal;
	color: #364152;
}
.alertify .ajs-dialog.tc-aff-campaign-modal .ajs-content p {
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	letter-spacing: normal;
	color: #8493a8;
}
/* The URL fields read as inputs, not disabled grey boxes. */
.alertify .ajs-dialog.tc-aff-campaign-modal .ajs-content input[type="text"] {
	box-sizing: border-box;
	height: 36px;
	padding: 8px 13px;
	border: 0;
	border-radius: 8px;
	background: #ffffff;
	box-shadow: inset 0 0 0 1px #d1d7de;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	line-height: 20px;
	color: #364152;
}
/* Copy buttons — the reskin's secondary shape, matching the row's own buttons. */
.alertify .ajs-dialog.tc-aff-campaign-modal .ajs-content .pure-button.button-secondary {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 4px;
	box-sizing: border-box;
	height: 36px;
	padding: 8px 12px;
	border: 0;
	border-radius: 8px;
	background: #ffffff;
	box-shadow: inset 0 0 0 1px #e8ecef;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	letter-spacing: normal;
	text-transform: none;
	color: #364152;
	text-shadow: none;
}
.alertify .ajs-dialog.tc-aff-campaign-modal .ajs-content .pure-button.button-secondary:hover { background: #f6f8f9; }

/* ===== Affiliate Profile header — Figma 1551:14201 (gated TC-12341) =====
   Corrects the earlier pass: the avatar was 96x96/r16 (Figma 96x89/r12), the name
   16/500/24 (Figma 20/500/28), View profile was an underlined teal link (Figma is
   a bordered button) and Delete used an emoji glyph (Figma has the delete icon). */
.tc-aff-profile-page #view-affiliate .ui-personal-block {
	display: flex;
	align-items: center;
	gap: 16px;
	position: relative;
	text-align: left;
}
/* 1551:14202 — 96x89, r12. With no avatar the tile is the shared placeholder
   (1540:16379): an #f6f8f9 square with the Person illustration (1540:16380)
   centred, same as the payout rows and product tiles. The <img> requests gravatar
   with d=blank, so it is a transparent PNG when the affiliate has no avatar and the
   tile shows through; a real gravatar paints over it.
   16379 sizes the icon at 96 inside a 160 tile (60%); this frame is 96 wide, so the
   icon is 57.6 to hold the component's proportions — the design has no profile-sized
   empty state to copy verbatim. */
.tc-aff-profile-page #view-affiliate .ui-personal-block > img {
	flex: 0 0 auto;
	width: 96px;
	height: 89px;
	border-radius: 12px;
	background-color: #f6f8f9;
	background-image: url("/static/icons/affiliates/avatar-person.svg");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 57.6px 57.6px;
	object-fit: cover;
	float: none;
	margin: 0;
}
/* Info column (1551:14205/14206): 89 tall beside the avatar, no extra padding. */
.tc-aff-profile-page #view-affiliate .ui-personal-block .info {
	display: block;
	overflow: visible;
	padding-top: 0;
}
/* 1551:14207 */
.tc-aff-profile-page #view-affiliate .ui-personal-block .info-row.ui-affiliate-name {
	font-size: 20px;
	font-weight: 500;
	line-height: 28px;
	letter-spacing: normal;
	color: #364152;
}
/* 1551:14211 — the affiliate id reads as a handle. Paragraph/P3-14 is
   14/400/20 with letterSpacing 0; legacy leaves 0.12px on it. */
.tc-aff-profile-page #view-affiliate .ui-personal-block .info-row-secondary.ui-affiliate-affiliate_id {
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	letter-spacing: normal;
	color: #8493a8;
}
/* Buttons row (1551:14208): gap-9. Both keep their own elements and handlers. */
/* 1551:14209 — View profile is a bordered button, not a link. */
.tc-aff-profile-page #view-affiliate .ui-personal-block .ui-view-affiliate-profile {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	height: 28px;
	margin: 0;
	padding: 6px 8px;
	border: 0;
	border-radius: 6px;
	background: #ffffff;
	box-shadow: inset 0 0 0 1px #e8ecef;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	letter-spacing: normal;
	text-transform: none;
	color: #364152;
	text-decoration: none;
	cursor: pointer;
}
.tc-aff-profile-page #view-affiliate .ui-personal-block .ui-view-affiliate-profile:hover { background: #f6f8f9; }
/* 1551:14210 — Delete Affiliate: no border, 12px delete icon, #d13f36. */
.tc-aff-profile-page #view-affiliate .tc-aff-profile-delete {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	box-sizing: border-box;
	height: 28px;
	margin: 0;
	padding: 6px 8px;
	border-radius: 6px;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	letter-spacing: normal;
	color: #d13f36;
	text-decoration: none;
	cursor: pointer;
}
.tc-aff-profile-page #view-affiliate .tc-aff-profile-delete:hover { background: #f6f8f9; }
/* Replaces the emoji glyph with Figma's own asset at its native 7x9.5 in a 12 slot. */
.tc-aff-profile-page #view-affiliate .tc-aff-profile-delete::before {
	content: '';
	width: 12px;
	height: 12px;
	flex: 0 0 auto;
	font-size: 0;
	background: url("/static/icons/affiliates/profile-delete.svg") no-repeat center;
	background-size: 7px 9px;
}

/* Name row (Figma 1551:14207 + 14212) — a real flex row, so the newline the
   markup keeps between the name and the VIP badge is discarded and the gap is
   exactly Figma's 8 (name ends ~133, badge at 141). */
.tc-aff-profile-page #view-affiliate .ui-personal-block .tc-aff-profile-name-row {
	display: flex;
	align-items: center;
	gap: 8px;
}

/* Buttons row — a real flex row, so gap-9 is exactly 9 and not
   9 plus the inline whitespace between the two elements. */
.tc-aff-profile-page #view-affiliate .ui-personal-block .tc-aff-profile-actions {
	display: flex;
	align-items: center;
	gap: 9px;
	margin-top: 8px;
}


/* ===== Rules tab — Figma 1546:18184 / 18211 / 1613:10004 (gated TC-12324) ===== */

/* Each rule is a card (1546:18211): p-24, gap-24, r12, #e8ecef hairline. */
.tc-aff-rules-page #view-affiliates-rules .box { background: transparent; border: 0; box-shadow: none; padding: 0; }
.tc-aff-rules-page .ui-autoresponder-opts {
	display: flex;
	flex-direction: column;
	gap: 16px;
}
.tc-aff-rules-page .ui-autoresponder-row {
	position: relative;
	display: block;
	box-sizing: border-box;
	margin: 0;
	padding: 24px;
	border: 0;
	border-radius: 12px;
	background: #ffffff;
	/* Inside stroke, as everywhere else in this design. */
	box-shadow: inset 0 0 0 1px #e8ecef, 0 1px 1px 0 rgba(0, 0, 0, 0.05);
}
/* Figma drops the decorative rule illustration — it is artwork, not a control. */
.tc-aff-rules-page .ui-autoresponder-row .ui-autoresponder-icon { display: none; }
/* 1546:18214/18217/18219: the fields flow in a grid — the first two share a row
   (gap-16), the method and its follow-up select each get a 544 row. */
.tc-aff-rules-page .ui-autoresponder-row .ui-autoresponder-content {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 24px 16px;
	width: auto;
	float: none;
	margin: 0;
	padding: 0;
}
.tc-aff-rules-page .ui-autoresponder-content > .ui-autoresponder-action-selector-wrap,
.tc-aff-rules-page .ui-autoresponder-content > .ui-autoresponder-product-selector-wrap {
	flex: 1 1 calc(50% - 8px);
	min-width: 0;
}
/* Figma 1546:18217 / 18219 each occupy their own row at 544 wide. Relying on
   flex-wrap to break them was fragile: once the legacy wrapper's padding was
   removed the container became exactly 1104, so 544+16+544 fit on one line and
   "Custom HTML" jumped up beside "I want to". Claiming the full line and capping
   the width forces the break regardless of the container. */
/* The wrap claims the whole line so it breaks; the FIELD inside is what gets
   capped at Figma's 544. Putting max-width on the flex item itself does not work —
   it clamps the hypothetical main size BEFORE the wrap decision, so two 544s still
   measure as fitting 1104 and stay on one line. */
.tc-aff-rules-page .ui-autoresponder-content > .ui-autoresponder-method-selector-wrap,
.tc-aff-rules-page .ui-autoresponder-content > .ui-autoresponder-block {
	flex: 1 1 100%;
	max-width: none;
}
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-content > .ui-autoresponder-method-selector-wrap select,
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-content > .ui-autoresponder-block select {
	max-width: 544px;
}
/* The HTML block only appears for the integration method — Figma's example has no
   such field, so it is retained full-width rather than dropped. */
.tc-aff-rules-page .ui-autoresponder-content > .ui-autoresponder-html-post,
.tc-aff-rules-page .ui-autoresponder-content > .ui-autoresponder-html { flex: 1 1 100%; }

/* Text Field group (I1546:18215;2441:111134): label above its input, gap-4. */
.tc-aff-rules-page .ui-autoresponder-content > [class*="-selector-wrap"] {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 4px;
	margin: 0;
}
/* The label is the wrap's first div (I1546:18215;2441:111134;2474:104855).
   style.css scopes these by ID (`#view-affiliates-rules ... -selector-wrap > div`
   { text-align: right; font-size: 140%; width: 10em }) — the legacy label sat to
   the LEFT of its select — so the ID has to be carried here to outrank it. */
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-content > [class*="-selector-wrap"] > div:first-child {
	width: auto;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	letter-spacing: normal;
	color: #2b384a;
	text-align: left;
	white-space: nowrap;
}
/* Input Area (I1546:18215;2441:128894;2441:127703): white, #d1d7de, p-8, r8, with
   a 16px expand_more on the right. */
/* style.css pins these to `calc(100% - 10.8em)` by ID, to leave room for the old
   left-hand label; the label is above the field now, so the select fills its column. */
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-content select,
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-content > .ui-autoresponder-block select {
	box-sizing: border-box;
	width: 100%;
	height: auto;
	margin: 0;
	padding: 8px 36px 8px 8px;
	border: 0;
	border-radius: 8px;
	background-color: #ffffff;
	box-shadow: inset 0 0 0 1px #d1d7de;
	background-image: url("/static/icons/affiliates/select-expand-field.svg");
	background-repeat: no-repeat;
	background-position: right 8px center;
	background-size: 8px 4.94px;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	letter-spacing: normal;
	color: #364152;
	appearance: none;
	-webkit-appearance: none;
	cursor: pointer;
}
.tc-aff-rules-page .ui-autoresponder-content textarea.ui-autoresponder-html {
	box-sizing: border-box;
	padding: 8px;
	border: 0;
	border-radius: 8px;
	background: #ffffff;
	box-shadow: inset 0 0 0 1px #d1d7de;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	line-height: 20px;
	color: #364152;
}
.tc-aff-rules-page .ui-autoresponder-content p.ui-autoresponder-html-post {
	margin: 0;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #2b384a;
}
/* Remove (1546:18184): a red link in the card's top-right corner. The element and
   its handler are the legacy .ui-autoresponder-kill — only its chrome changes. */
.tc-aff-rules-page .ui-autoresponder-row .ui-autoresponder-kill {
	position: absolute;
	top: 24px;
	right: 24px;
	z-index: 1;
	display: inline-flex;
	align-items: center;
	width: auto;
	height: auto;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	letter-spacing: normal;
	text-transform: none;
	color: #e02d3c;
	text-shadow: none;
	cursor: pointer;
}
.tc-aff-rules-page .ui-autoresponder-row .ui-autoresponder-kill .fa { display: none; }
.tc-aff-rules-page .ui-autoresponder-row .ui-autoresponder-kill:hover { color: #b30606; box-shadow: none; }

/* Info tooltips (TC-12082): bring the affiliate/JV ⓘ triggers into the reskin.
   The legacy markup (.hint--info + i.fa-info-circle.color-help) otherwise falls
   through to hint.css's dark-navy bubble + blue FA glyph. The dashboard reskin
   already replaced that with a soft grey glyph + teal bubble; same treatment,
   scoped to the affiliate/JV reskin surfaces. */
body.tc-aff-reskin .hint i.fa-info-circle,
body.tc-aff-reskin i.fa-info-circle.hint,
body.tc-jv-reskin .hint i.fa-info-circle,
body.tc-jv-reskin i.fa-info-circle.hint {
	font-size: 0 !important;
	line-height: 0 !important;
	display: inline-block !important;
	width: 16px !important;
	height: 16px !important;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 13.3333 13.3333' fill='%233A4351' fill-opacity='0.89'><path d='M6 3.33333H7.33333V4.66667H6V3.33333ZM6 6H7.33333V10H6V6ZM6.66667 0C2.98667 0 0 2.98667 0 6.66667C0 10.3467 2.98667 13.3333 6.66667 13.3333C10.3467 13.3333 13.3333 10.3467 13.3333 6.66667C13.3333 2.98667 \
10.3467 0 6.66667 0ZM6.66667 12C3.72667 12 1.33333 9.60667 1.33333 6.66667C1.33333 3.72667 3.72667 1.33333 6.66667 1.33333C9.60667 1.33333 12 3.72667 12 6.66667C12 9.60667 9.60667 12 6.66667 12Z'/></svg>") !important;
	background-repeat: no-repeat !important;
	background-position: center !important;
	background-size: 13.33px 13.33px !important;
	vertical-align: middle;
}
body.tc-aff-reskin .hint i.fa-info-circle::before,
body.tc-aff-reskin i.fa-info-circle.hint::before,
body.tc-jv-reskin .hint i.fa-info-circle::before,
body.tc-jv-reskin i.fa-info-circle.hint::before {
	content: none !important;
	display: none !important;
}
body.tc-aff-reskin .hint--info:after,
body.tc-jv-reskin .hint--info:after {
	background-color: #006b70;
}
body.tc-aff-reskin .hint--info.hint--top:before,
body.tc-jv-reskin .hint--info.hint--top:before {
	border-top-color: #006b70;
}
body.tc-aff-reskin .hint--info.hint--bottom:before,
body.tc-jv-reskin .hint--info.hint--bottom:before {
	border-bottom-color: #006b70;
}
body.tc-aff-reskin .hint--info.hint--left:before,
body.tc-jv-reskin .hint--info.hint--left:before {
	border-left-color: #006b70;
}
body.tc-aff-reskin .hint--info.hint--right:before,
body.tc-jv-reskin .hint--info.hint--right:before {
	border-right-color: #006b70;
}

/* Action bar (1613:10004): justify-end, gap-10. */
.tc-aff-rules-page #view-affiliates-rules .tc-aff-rules-actions {
	display: flex;
	align-items: flex-start;
	justify-content: flex-end;
	gap: 10px;
	margin: 16px 0 0;
	padding: 0;
	background: transparent;
	border: 0;
}
/* 1613:10005 — Add new rule */
.tc-aff-rules-page #view-affiliates-rules .tc-aff-rules-actions .ui-autoresponder-add {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	box-sizing: border-box;
	/* The legacy button is float:right + position:relative, which lifted it clean
	   out of the bar's flow and stacked it above Save. Both have to be unwound —
	   a bare `margin: 0` leaves it floating. */
	float: none;
	position: static;
	top: auto;
	right: auto;
	margin: 0;
	padding: 8px;
	border: 0;
	border-radius: 6px;
	background: #ffffff;
	box-shadow: inset 0 0 0 1px #e8ecef;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	letter-spacing: normal;
	text-transform: none;
	color: #364152;
	text-shadow: none;
	cursor: pointer;
}
.tc-aff-rules-page #view-affiliates-rules .tc-aff-rules-actions .ui-autoresponder-add .fa {
	width: 16px;
	height: 16px;
	margin: 0;
	font-size: 0;
	background: url("/static/icons/affiliates/rule-add.svg") no-repeat center;
	background-size: 9.33px 9.33px;
}
.tc-aff-rules-page #view-affiliates-rules .tc-aff-rules-actions .ui-autoresponder-add .fa::before { content: none; }
.tc-aff-rules-page #view-affiliates-rules .tc-aff-rules-actions .ui-autoresponder-add .tc-aff-rules-add-label { padding: 0 4px; }
/* 1613:10006 — Save affiliate rules */
.tc-aff-rules-page #view-affiliates-rules .tc-aff-rules-actions .ui-save {
	display: inline-flex;
	align-items: center;
	box-sizing: border-box;
	margin: 0;
	padding: 8px 12px;
	border: 0;
	border-radius: 6px;
	background: #006b70;
	box-shadow: none;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	letter-spacing: normal;
	text-transform: none;
	color: #ffffff;
	text-shadow: none;
	cursor: pointer;
}

/* The legacy .box-footer only held the Save button; the action bar replaces it, so
   the empty footer must not leave its chrome or spacing behind. */
.tc-aff-rules-page #view-affiliates-rules .box-footer {
	padding: 0;
	margin: 0;
	border: 0;
	background: transparent;
}

/* The legacy rule row is built around a floated 108px illustration: the content
   carries `margin-left: 132px` to clear it, the method wrap and the follow-up
   select are `float: left`, the select is indented `margin-left: 12px`, and every
   wrap has a 12px bottom margin. Hiding the illustration left all of that behind —
   the fields sat 156px in from the card edge instead of Figma's 24, and "Custom
   HTML" was indented past "Use my integration with". Figma 1546:18211 has no
   illustration and no gutter, so every one of those has to be unwound. */
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-row .ui-autoresponder-content {
	margin: 0;
	padding: 0;
	float: none;
	width: auto;
}
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-content > .ui-autoresponder-action-selector-wrap,
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-content > .ui-autoresponder-product-selector-wrap,
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-content > .ui-autoresponder-method-selector-wrap,
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-content > .ui-autoresponder-block,
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-content > .ui-autoresponder-html-post,
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-content > .ui-autoresponder-html {
	/* The flex row owns the spacing; legacy margins would add to its gap. */
	float: none;
	margin: 0;
}
/* Left-align the integration sub-flow: "to"/"the following" connectors flush-left, mode/subtype/list selects stacked at the 544 field width (legacy right-aligned "to" in a 156px box, full-bleed selects). */
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-content > p {
	flex: 0 0 100%;
	width: auto;
	margin: 0;
	text-align: left;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #2b384a;
}
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-content > select {
	flex: 0 0 100%;
	max-width: 544px;
}
/* Empty state: hide the JS-built Add-rule/Save bar (the empty-state card has its own Add rule). */
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-empty .tc-aff-rules-actions { display: none; }

/* Add/Remove-all checkbox: full-width + drop the legacy pure-u-6-24 spacer so it sits flush-left and the label stops wrapping. */
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-content > .pure-g:has(> .pure-u-6-24) {
	flex: 0 0 100%;
	width: 100%;
	margin: 0;
}
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-content > .pure-g > .pure-u-6-24 { display: none; }
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-content > .pure-g > .pure-u-13-24 { width: 100%; margin: 0; float: none; }

/* Commission-override actions carried a legacy 168px left-pad + content-width shrink that squeezed the pure-grid labels — full-width flush-left, each sub-field a labelled 544 field. */
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-content > .ui-affiliate-option-override-wrap {
	flex: 0 0 100%;
	width: 100%;
	margin: 0;
	padding: 0;
}
.tc-aff-rules-page #view-affiliates-rules .ui-affiliate-option-override-wrap .ui-input-group {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 24px;
	margin: 0;
}
.tc-aff-rules-page #view-affiliates-rules .ui-affiliate-option-override-wrap .ui-input-group > [class*="pure-u"],
.tc-aff-rules-page #view-affiliates-rules .ui-affiliate-option-override-wrap > .ui-autoresponder-product-affecting-wrap,
.tc-aff-rules-page #view-affiliates-rules .ui-affiliate-option-override-wrap > .ui-affiliate-option-aggregate-wrap {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 4px;
	width: 100%;
	margin: 0;
	padding: 0;
	float: none;
}
.tc-aff-rules-page #view-affiliates-rules .ui-affiliate-option-override-wrap > .ui-autoresponder-product-affecting-wrap,
.tc-aff-rules-page #view-affiliates-rules .ui-affiliate-option-override-wrap > .ui-affiliate-option-aggregate-wrap {
	margin-top: 24px;
}
.tc-aff-rules-page #view-affiliates-rules .ui-affiliate-option-override-wrap label {
	width: auto;
	margin: 0;
	text-align: left;
	white-space: normal;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #2b384a;
}
.tc-aff-rules-page #view-affiliates-rules .ui-affiliate-option-override-wrap select { width: 100%; max-width: 544px; margin: 0; }
.tc-aff-rules-page #view-affiliates-rules .ui-affiliate-option-override-wrap .input-pill { width: auto; max-width: 544px; margin: 0; }
.tc-aff-rules-page #view-affiliates-rules .ui-affiliate-option-override-wrap .input-pill input { min-width: 120px; }
/* Card heading: 20/600/28, with Remove on its line. */
.tc-aff-rules-page #view-affiliates-rules .ui-autoresponder-row .tc-aff-rule-title {
	display: block;
	margin: 0 0 24px;
	padding-right: 90px;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	letter-spacing: normal;
	color: #364152;
}

/* #view-affiliates-rules-list carries the legacy panel chrome (white, #e8ecef
   border, 24px padding, shadow) — it wrapped the whole list in a box. Figma
   1546:18184 has no such wrapper: the rule cards sit straight on the page at x=32,
   and the action bar is its own panel (1613:10003). */
.tc-aff-rules-page #view-affiliates-rules #view-affiliates-rules-list {
	background: transparent;
	border: 0;
	box-shadow: none;
	padding: 0;
	margin: 0;
}
/* Action bar panel: white, py-16, and a top-edge shadow rather
   than a border. Full page width; its Container (1613:10004) holds the buttons. */
.tc-aff-rules-page #view-affiliates-rules .tc-aff-rules-actions {
	box-sizing: border-box;
	width: 100%;
	margin: 16px 0 0;
	padding: 16px 27px;
	border: 0;
	border-radius: 12px;
	background: #ffffff;
	filter: drop-shadow(0 -1px 2px #ececee);
}

/* View profile modal. Specialises the shared affiliate modal
   chrome above, which predates this frame and only approximated it. */

body.tc-aff-reskin .ajs-dialog.tc-profile {
	width: 762px;
	max-width: calc(100vw - 32px);
	/* alertify gives .ajs-dialog content-box + 24px padding — the 762 frame renders 812. */
	box-sizing: border-box;
	padding: 0;
	/* alertify's real 1px border stacks with Figma's inside stroke and shifts every child 1px. */
	border: 0;
	border-radius: 8px;
	box-shadow: inset 0 0 0 1px #e8ecef, 0 1px 1px rgba(0, 0, 0, 0.05);
}

/* Header 1551:13984: avatar 100 at 16,12 | name y=35 | ID y=69 | close 24 at 722,12 */
body.tc-aff-reskin .ajs-dialog.tc-profile .ajs-header {
	/* -24px here only cancels the dialog padding zeroed above; left alone it overhangs. */
	margin: 0;
	padding: 12px 16px;
	/* A real border-bottom would make the header 125; Figma's is 12 + 100 + 12 = 124. */
	border-bottom: 0;
	box-shadow: inset 0 -1px 0 #e7ebee;
}
body.tc-aff-reskin .tc-profile-head {
	position: relative;
	display: flex;
	align-items: flex-start;
	gap: 16px;
}
body.tc-aff-reskin .tc-profile-head-avatar {
	flex: 0 0 100px;
	width: 100px;
	height: 100px;
	border-radius: 16px;
	overflow: hidden;
	/* Two-part avatar: tile shows the placeholder, the gravatar `blank` PNG covers it. */
	background-color: #f6f8f9;
	background-image: url("/static/icons/affiliates/avatar-person.svg");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 96px 96px;
}
body.tc-aff-reskin .tc-profile-head-avatar img {
	display: block;
	width: 100px;
	height: 100px;
	border-radius: 16px;
	object-fit: cover;
	margin: 0;
	float: none;
}
/* Name sits at y=35 = header padding-top 12 + 23. */
body.tc-aff-reskin .tc-profile-head-info {
	flex: 1 1 auto;
	min-width: 0;
	margin-top: 23px;
	padding-right: 40px;
}
body.tc-aff-reskin .tc-profile-head-name {
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 20px;
	font-weight: 500;
	line-height: 28px;
	letter-spacing: 0;
	color: #364152;
}
/* ID at y=69 = 35 + 28 (name) + 6. */
body.tc-aff-reskin .tc-profile-head-id {
	margin-top: 6px;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	letter-spacing: 0;
	color: #8593a8;
}
/* style.css `.alertify .ajs-header span` breaks this onto 2 lines — declare every property it sets. */
body.tc-aff-reskin .tc-profile-head-id span {
	display: inline;
	font-size: inherit;
	color: #364152;
}
body.tc-aff-reskin .tc-profile-head-close {
	position: absolute;
	top: 0;
	right: 0;
	width: 24px;
	height: 24px;
	padding: 0;
	border: 0;
	cursor: pointer;
	/* Glyph is 14px in a 24px frame — native viewBox size, never `contain`. */
	background: transparent url("/static/icons/affiliates/close.svg") no-repeat center;
	background-size: 14px 14px;
}

/* Body 1551:14009: rows 730x48 at x=16, gap 4 */
body.tc-aff-reskin .ajs-dialog.tc-profile .ajs-content {
	padding: 8px 16px;
}
body.tc-aff-reskin .tc-profile-list {
	display: flex;
	flex-direction: column;
	gap: 4px;
}
body.tc-aff-reskin .tc-profile-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	height: 48px;
	padding: 4px 0;
	box-sizing: border-box;
	border-bottom: 1px solid #d1d7de;
}
body.tc-aff-reskin .tc-profile-row-label {
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 16px;
	font-weight: 400;
	line-height: 24px;
	letter-spacing: 0;
	color: #364152;
}
body.tc-aff-reskin .tc-profile-row-value {
	min-width: 0;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 16px;
	font-weight: 400;
	line-height: 24px;
	letter-spacing: 0;
	color: #8493a8;
	text-align: right;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
body.tc-aff-reskin .tc-profile-row-value.tc-profile-field-username { cursor: pointer; }
/* Socials and the W9/W8-BEN downloads are retained rows the frame omits. */
body.tc-aff-reskin .tc-profile-row-link,
body.tc-aff-reskin .tc-profile-row-download {
	color: #006b70;
	font-weight: 500;
}

/* Buttons 1551:14046: 92x36, centred */
body.tc-aff-reskin .ajs-dialog.tc-profile .ajs-footer {
	/* Same -24px scaffolding as the header, cancelling a padding that is now 0. */
	margin: 0;
	padding: 8px 16px 16px;
	border-top: 0;
}
body.tc-aff-reskin .ajs-dialog.tc-profile .ajs-footer .ajs-primary {
	float: none;
	text-align: center;
}
body.tc-aff-reskin .ajs-dialog.tc-profile .ajs-footer .ajs-button.ajs-cancel {
	height: 36px;
	/* 12px button padding + 6px inner Text Layout padding. */
	padding: 8px 18px;
	border: 1px solid #e8ecef;
	border-radius: 8px;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	letter-spacing: 0;
	color: #364152;
	background: #ffffff;
}

/* Approve modal header, opened by "Allow other products". */

body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize {
	width: 762px;
	max-width: calc(100vw - 32px);
	box-sizing: border-box;
	padding: 0;
	/* alertify.css's real 1px border shifts every child in by 1px. */
	border: 0;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ajs-header,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-header {
	/* -24px margin is scaffolding for the dialog padding zeroed above. */
	margin: 0;
	display: flex;
	align-items: center;
	gap: 24px;
	/* 12px top/bottom + the 32px close = Figma's 56 header. */
	padding: 12px 24px;
	border-bottom: 0;
	box-shadow: inset 0 -1px 0 #e7ebee;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ajs-footer,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-footer {
	margin: 0;
}
/* style.css `.ajs-header span` ties on specificity and wins on load order — carry the
   dialog + header classes to break the tie. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ajs-header .tc-grant-head-title,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-header .tc-grant-head-title {
	display: block;
	flex: 1 0 0;
	min-width: 0;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	letter-spacing: 0;
	color: #2b384a;
}
body.tc-aff-reskin .tc-grant-head-close {
	flex: 0 0 32px;
	width: 32px;
	height: 32px;
	padding: 8px;
	border: 0;
	border-radius: 6px;
	cursor: pointer;
	box-sizing: border-box;
	/* Glyph is 8.79px in a 16px frame — native viewBox size, keep the SVG's own fill. */
	background: transparent url("/static/icons/affiliates/modal-close.svg") no-repeat center;
	background-size: 8.79px 8.79px;
}

/* Affiliate options modal (Figma 1551:14093/14107/14129/14150). Chrome is shared with
   the grant modal; every control the frames omit is retained and restyled. */

/* Content column: Figma's Frame 5 is 714 wide at x=24. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-content {
	padding: 0 24px;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .box-tabbed {
	background: transparent;
	border: 0;
	box-shadow: none;
	margin: 0;
	padding: 0;
}
/* The legacy pane draws a 1px box around the tab content; Figma has none. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane {
	/* Figma: tabs bottom 112 -> first field 128. */
	margin: 16px 0 0;
	padding: 0;
	border: 0;
	background: transparent;
}

/* Link rows 1551:14101: 714x76 = label 24 + gap 4 + input 48 */
body.tc-aff-reskin .tc-afflink-row {
	display: flex;
	flex-direction: column;
	gap: 4px;
	margin-top: 16px;
}
body.tc-aff-reskin .tc-afflink-row:first-child { margin-top: 0; }
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .tc-afflink-row label {
	display: block;
	margin: 0;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	letter-spacing: 0;
	color: #2b384a;
}
body.tc-aff-reskin .tc-afflink-field {
	display: flex;
	align-items: center;
	gap: 12px;
	/* Inside stroke so padding + stroke total Figma's 48. */
	padding: 14px 8px;
	border-radius: 8px;
	background: #ffffff;
	box-shadow: inset 0 0 0 1px #d1d7de;
	box-sizing: border-box;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .affiliate-link-wrap .tc-afflink-field input,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .tc-afflink-field input,
body.tc-aff-reskin .tc-afflink-field input {
	flex: 1 0 0;
	min-width: 0;
	height: 20px;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	letter-spacing: 0;
	color: #364152;
}
body.tc-aff-reskin .tc-afflink-copy {
	flex: 0 0 16px;
	width: 16px;
	height: 16px;
	cursor: pointer;
	/* Glyph is 11.33x13.33 — native viewBox size, keep the SVG's own fill. */
	background: url("/static/icons/affiliates/copy-all.svg") no-repeat center;
	background-size: 11.33px 13.33px;
}

/* Footer 1551:14104: 60 tall, button right-aligned to the 24px gutter */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-footer {
	padding: 12px 24px;
	border-top: 0;
	/* alertify's content-box min-height:43 makes the footer 67, not Figma's 60. */
	min-height: 36px;
}
/* alertify's 4px .ajs-button margin makes the footer 68 not 60 — space them with the frame's 8px gap. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-footer .ajs-primary {
	display: flex;
	justify-content: flex-end;
	gap: 8px;
	float: none;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-footer .ajs-button {
	margin: 0;
	height: 36px;
	padding: 8px 18px;
	border-radius: 8px;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	letter-spacing: 0;
}

/* Revoke is destructive; the JS already flags the state with .ajs-error, so no JS change. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-footer .ajs-button.ajs-ok.ajs-error {
	background: #d13f36;
	border-color: #d13f36;
	color: #ffffff;
}

/* 1551:14107/14129 stack every field full-width at a 92 pitch, not the legacy pure-g row.
   `> *` so the product-type-conditional wrappers stack too. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .ui-input-group {
	display: flex;
	flex-direction: column;
	gap: 16px;
	/* Figma 1551:14129 pitches the fields 92 apart = 76 tall + 16. Bottom-only margin
	   left no gap above the first one; the callout below sets its own top gap.
	   !important for the same reason as the children: the groups also carry
	   `.margin-bottom-05`. */
	margin: 16px 0 0 !important;
	/* Legacy width:102% gutter hack overhangs the modal padding and pushes the % pills out. */
	width: 100%;
	box-sizing: border-box;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .ui-input-group > * {
	width: 100%;
	padding: 0;
	/* These carry the global `.margin-bottom-05` helper (0.9em !important), which adds
	   14.4px of trailing space inside the flex column and breaks the 92 pitch. The
	   helper is shared app-wide and cannot be narrowed, so it needs an in-kind
	   counter — same approach as `.checkbox label`'s padding-left. */
	margin: 0 !important;
	box-sizing: border-box;
}
/* Field labels: Figma's Text Field label is 16/500/24 #2b384a. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .ui-input-group label {
	display: block;
	margin: 0 0 4px;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	letter-spacing: 0;
	color: #2b384a;
}
/* Inputs/selects: 48 tall to match the links tab's Text Field. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .ui-input-group select,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .ui-input-group input[type="text"],
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .ui-input-group input[type="number"] {
	width: 100%;
	height: 48px;
	box-sizing: border-box;
}

/* Approve modal body (Figma 1551:14052 — 14053 is only its header). Scoped to the grant
   modal so the shared product-checklist rules, which the import modal also uses, keep theirs. */

body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ajs-content {
	/* Figma's Frame 5 (1551:14058): 714 wide at x=24, pt-16 pb-24. The 24px bottom
	   gives the space below the pager before the footer (footer adds its own 12 top). */
	padding: 16px 24px 24px;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ui-affiliate-grant-step > p {
	margin: 0 0 16px;
}

/* --- Search (1551:14059): 714x36, magnifier 11.66 in a 16 frame at x=8 --- */
/* Rows 1551:14073: 714x66 at a 94 pitch. Mirrors the import modal's pattern — the legacy
   .checkbox draws a 22x22 label::before, so suppress it and style the real input instead. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ui-affiliate-grant-product-select {
	margin: 16px 0 0;
	padding: 0;
	list-style: none;
	/* The plugin sheet scrolls this list inside 21.5em, which was sized for the old
	   compact rows and shows barely 3 of Figma's — let it grow like the import modal. */
	overflow-x: visible;
	overflow-y: auto;
	max-height: none;
	/* Top hairline lives here, not on li:first-child — List.js hides filtered rows
	   with display:none, so :first-child can be invisible. */
	border-top: 1px solid #e8ecef;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ui-affiliate-grant-product-select > li {
	display: flex;
	align-items: center;
	height: 66px;
	padding: 0;
	/* Figma spaces the rows 94 apart (66 + 28). */
	margin: 0 0 28px;
	/* Legacy puts a full 1px border on the row; only the hairline is wanted. */
	border: 0;
	border-bottom: 1px solid #e8ecef;
	border-radius: 0;
	background: transparent;
	box-sizing: border-box;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ui-affiliate-grant-product-select > li:last-child {
	margin-bottom: 0;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ui-affiliate-grant-product-select > li .checkbox {
	display: flex;
	align-items: center;
	width: 100%;
	margin: 0;
	padding: 0;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ui-affiliate-grant-product-select > li .checkbox label::before,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ui-affiliate-grant-product-select > li .checkbox label::after {
	content: none;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ui-affiliate-grant-product-select > li .checkbox input[type="checkbox"] {
	display: inline-block;
	position: static;
	-webkit-appearance: none;
	appearance: none;
	flex: 0 0 16px;
	width: 16px;
	height: 16px;
	/* Figma's row gap is 8. */
	margin: 0 8px 0 0;
	border: 1px solid #d1d7de;
	border-radius: 4px;
	background: #ffffff;
	cursor: pointer;
	box-shadow: none;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ui-affiliate-grant-product-select > li .checkbox input[type="checkbox"]:checked {
	background: #006b70 url("/static/icons/affiliates/check-white.svg") no-repeat center;
	/* Figma's Check is inset 25%/30% of the 16 box = 8x6. */
	background-size: 8px 6px;
	border-color: #006b70;
}
/* Name over subtitle, gap 2. The <i> already carries the product label. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ajs-content .ui-affiliate-grant-product-select > li label {
	display: flex;
	flex: 1 0 0;
	min-width: 0;
	flex-direction: column;
	gap: 2px;
	width: auto;
	margin: 0;
	/* Core's `.checkbox label { padding-left: 32px!important }` is shared and can't be
	   narrowed, so it needs an in-kind counter (same as .tc-aff-create-page). */
	padding-left: 0 !important;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 14px;
	/* The shared `.ajs-content label` rule above sets 500; Figma's row is 400. */
	font-weight: 400;
	line-height: 20px;
	letter-spacing: 0;
	color: #364152;
	cursor: pointer;
}
/* Products with no label have no subtitle — collapse the line rather than leave a gap. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ui-affiliate-grant-product-select > li label i:empty {
	display: none;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ui-affiliate-grant-product-select > li label i {
	/* Legacy .checkbox label i adds margin-top:7px on the label's gap:2px; zero it for a tight name↔subcopy stack. */
	margin: 0;
	font-style: normal;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #8493a8;
}

/* Footer 1551:14088: Cancel | Auto-approve | Approve. alertify splits these across
   .ajs-auxiliary and .ajs-primary, so both are flattened with display:contents and reordered. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ajs-footer {
	display: flex;
	justify-content: flex-end;
	align-items: center;
	gap: 8px;
	padding: 12px 24px 20px;
	min-height: 36px;
	border-top: 0;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ajs-footer .ajs-auxiliary,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ajs-footer .ajs-primary {
	display: contents;
	float: none;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ajs-footer .ajs-cancel { order: 1; }
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ajs-footer .ajs-secondary { order: 2; }
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ajs-footer .ajs-ok { order: 3; }
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-grant .ajs-footer .ajs-button {
	margin: 0;
	height: 36px;
	padding: 8px 18px;
	border-radius: 8px;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	letter-spacing: 0;
}

/* Auto-approve confirm. No Figma frame for it, so it reuses the chrome verified against
   1551:14053 rather than inventing sizes. Tagged per-instance in view.php because
   alertify.confirm is a singleton shared by every confirm in the app. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-autoapprove,
body.tc-aff-reskin .ajs-dialog.tc-aff-confirm {
	box-sizing: border-box;
	padding: 0;
	border: 0;
	border-radius: 8px;
	/* Clip the square-cornered header/footer to the rounded dialog corners — without
	   this the white header pokes past the rounded corners at the top. */
	overflow: hidden;
	box-shadow: inset 0 0 0 1px #e8ecef, 0 8px 32px rgba(0, 0, 0, 0.14);
	background: #ffffff;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-autoapprove .ajs-header,
body.tc-aff-reskin .ajs-dialog.tc-aff-confirm .ajs-header {
	margin: 0;
	padding: 12px 24px;
	border-bottom: 0;
	box-shadow: inset 0 -1px 0 #e7ebee;
	background: #ffffff;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	letter-spacing: 0;
	color: #2b384a;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-autoapprove .ajs-body,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-autoapprove .ajs-content,
body.tc-aff-reskin .ajs-dialog.tc-aff-confirm .ajs-body,
body.tc-aff-reskin .ajs-dialog.tc-aff-confirm .ajs-content {
	padding: 0;
	background: #ffffff;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-autoapprove .ajs-content,
body.tc-aff-reskin .ajs-dialog.tc-aff-confirm .ajs-content {
	padding: 16px 24px;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	letter-spacing: 0;
	color: #364152;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-autoapprove .ajs-footer,
body.tc-aff-reskin .ajs-dialog.tc-aff-confirm .ajs-footer {
	margin: 0;
	padding: 12px 24px 20px;
	min-height: 36px;
	border-top: 0;
	background: #ffffff;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-autoapprove .ajs-footer .ajs-primary,
body.tc-aff-reskin .ajs-dialog.tc-aff-confirm .ajs-footer .ajs-primary {
	display: flex;
	justify-content: flex-end;
	gap: 8px;
	float: none;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-autoapprove .ajs-footer .ajs-button,
body.tc-aff-reskin .ajs-dialog.tc-aff-confirm .ajs-footer .ajs-button {
	margin: 0;
	height: 36px;
	padding: 8px 18px;
	border-radius: 8px;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	letter-spacing: 0;
	background: #ffffff;
	border: 1px solid #e8ecef;
	color: #364152;
	box-shadow: none;
	text-shadow: none;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-autoapprove .ajs-footer .ajs-button.ajs-ok,
body.tc-aff-reskin .ajs-dialog.tc-aff-confirm .ajs-footer .ajs-button.ajs-ok {
	background: #006b70;
	border-color: #006b70;
	color: #ffffff;
}
/* Destructive confirms (e.g. remove affiliate) flag their OK button with .ajs-error. */
body.tc-aff-reskin .ajs-dialog.tc-aff-confirm .ajs-footer .ajs-button.ajs-ok.ajs-error {
	background: #d13f36;
	border-color: #d13f36;
	color: #ffffff;
}

/* Product card tooltip. shared.css styles .html-tooltip app-wide with legacy tokens
   (0.25em radius, `0 0 1px #6f6f6f`, 90%/#5a5a5a), so bring it onto the design system
   here rather than there — scoped to the page, like the trigger rule above. No Figma
   frame for it; it reuses the tokens the modals were verified against. */
.tc-aff-profile-page #view-affiliate .html-tooltip {
	padding: 12px;
	/* em widths track the 90% font-size above; pin them so retyping cannot reflow it. */
	width: 320px;
	border-radius: 8px;
	background: #ffffff;
	box-shadow: inset 0 0 0 1px #e8ecef, 0 8px 24px rgba(0, 0, 0, 0.12);
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	letter-spacing: 0;
	color: #364152;
}
.tc-aff-profile-page #view-affiliate .html-tooltip.html-tooltip-small { width: 260px; }
.tc-aff-profile-page #view-affiliate .html-tooltip b,
.tc-aff-profile-page #view-affiliate .html-tooltip strong {
	font-weight: 500;
	color: #2b384a;
}
.tc-aff-profile-page #view-affiliate .html-tooltip p { margin: 0 0 8px; }
.tc-aff-profile-page #view-affiliate .html-tooltip p:last-child { margin-bottom: 0; }
/* The arrow is two stacked triangles — ::before is the border, ::after the fill. */
.tc-aff-profile-page #view-affiliate .html-tooltip::before { border-top-color: #e8ecef; }
.tc-aff-profile-page #view-affiliate .html-tooltip::after { border-top-color: #ffffff; }

/* Affiliate list rows fell back to shared.css's legacy tooltip box — bring them onto the design system. */
body.tc-aff-reskin #view-affiliates .html-tooltip {
	padding: 12px;
	width: auto;
	max-width: 300px;
	border-radius: 8px;
	background: #ffffff;
	box-shadow: inset 0 0 0 1px #e8ecef, 0 8px 24px rgba(0, 0, 0, 0.12);
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	letter-spacing: 0;
	color: #364152;
}
body.tc-aff-reskin #view-affiliates .html-tooltip p { margin: 0; }
body.tc-aff-reskin #view-affiliates .html-tooltip b,
body.tc-aff-reskin #view-affiliates .html-tooltip strong { font-weight: 500; color: #2b384a; }
body.tc-aff-reskin #view-affiliates .html-tooltip [class*="fa-"] { color: #8493a8; }
body.tc-aff-reskin #view-affiliates .html-tooltip span[data-timestamp] { font-weight: 500; color: #2b384a; }
body.tc-aff-reskin #view-affiliates .html-tooltip::before { border-top-color: #e8ecef; }
body.tc-aff-reskin #view-affiliates .html-tooltip::after { border-top-color: #ffffff; }

/* The Custom commissions / Second-tier / Revoke enabling checkboxes are the first thing
   each tab shows, and they were still fully legacy: a 22x22 absolute label::before,
   the real input hidden, and an -apple-system 14/500 label. Same treatment as the grant
   rows — suppress the pseudo-elements and style the real input. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .checkbox label::before,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .checkbox label::after {
	content: none;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .checkbox {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	padding: 0;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .checkbox input[type="checkbox"] {
	display: inline-block;
	position: static;
	-webkit-appearance: none;
	appearance: none;
	flex: 0 0 16px;
	width: 16px;
	height: 16px;
	margin: 0;
	border: 1px solid #d1d7de;
	border-radius: 4px;
	background: #ffffff;
	cursor: pointer;
	box-shadow: none;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .checkbox input[type="checkbox"]:checked {
	background: #006b70 url("/static/icons/affiliates/check-white.svg") no-repeat center;
	background-size: 8px 6px;
	border-color: #006b70;
}
/* Revoke is destructive, so its toggle carries the destructive token like its button. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .checkbox.check-danger input[type="checkbox"]:checked {
	background-color: #d13f36;
	border-color: #d13f36;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .checkbox label {
	display: block;
	flex: 1 1 auto;
	min-width: 0;
	margin: 0;
	/* Core's shared `.checkbox label { padding-left: 32px!important }` reserves room for
	   the ::before box that is now suppressed; it needs an in-kind counter. */
	padding-left: 0 !important;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	letter-spacing: 0;
	color: #364152;
	cursor: pointer;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .checkbox label b {
	font-weight: 500;
	color: #2b384a;
}

/* Summary callouts — Figma's "Inputs / Checkbox Group" (1551:14141 / 14120 / 14159).
   Legacy renders these as a white box with a 4px blue (or red) left stripe, 3.6px
   radius and -apple-system/#555459 text; Figma has a mint #ecfdfc panel with a full
   1px border. Every property below is overriding a legacy one. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .callout {
	/* Legacy `p { margin: 1em 0 }` applies here. Figma's gap above this panel differs
	   per frame, so each tab sets its own below rather than normalising. */
	margin: 0;
	box-sizing: border-box;
	/* px-16 py-20 = Figma's 80 tall. */
	padding: 20px 16px;
	/* --color-bg-muted */
	background: #ecfdfc;
	/* Inside stroke, so the border does not push it to 82. */
	border: 0;
	box-shadow: inset 0 0 0 1px #d1d7de;
	border-radius: 8px;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	letter-spacing: 0;
	/* --color-text-dark */
	color: #2a3648;
	white-space: normal;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .callout b,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .callout strong {
	font-weight: 500;
	color: #2a3648;
}

/* Revoke textarea — Figma 1551:14158: label 24 + gap 4 + a 168 field = 196. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .tc-aff-textarea-label {
	display: block;
	margin: 0 0 4px;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	letter-spacing: 0;
	color: #2b384a;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane textarea {
	box-sizing: border-box;
	width: 100%;
	height: 168px;
	min-height: 168px;
	margin: 0;
	padding: 8px;
	border: 0;
	border-radius: 8px;
	box-shadow: inset 0 0 0 1px #d1d7de;
	background: #ffffff;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	/* Legacy sets font-size:100% inline; the reskin needs the design-system size. */
	font-size: 14px !important;
	font-weight: 400;
	line-height: 20px;
	letter-spacing: 0;
	color: #364152;
	resize: vertical;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane textarea::placeholder {
	/* --color-text-muted */
	color: #afbbc9;
}
/* Per-frame gap above the summary panel, verbatim: 14107 -> 32, 14129 -> 33,
   14150 -> 40 (Text Field ends 268, Checkbox Group at 308).
   The customize callout carries the global `.margin-top` helper (2em !important) and
   the revoke one `.margin-top-05` (1em !important) — both shared and un-narrowable, so
   they need in-kind counters. Second-tier's has no helper class, hence no !important. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane[data-section="customize"] .callout {
	margin: 32px 0 0 !important;
}
/* TP-2153: one bullet per pricing plan and bump. The body scrolls so a long list keeps Save in view. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .affiliate-options-commission-preview-list { margin: 0; padding-left: 20px; }
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .affiliate-options-commission-preview-list li + li { margin-top: 8px; }
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-content { max-height: calc(100vh - 320px); overflow-y: auto; }
@media (max-width: 767px) {
	body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-content { max-height: calc(100vh - 140px); overflow-x: hidden; }
	/* The four tabs are wider than a phone; let the tab row swipe instead of widening (and side-scrolling) the whole body. */
	body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-content .tabs { max-width: 100%; overflow-x: auto; flex-wrap: nowrap; scrollbar-width: none; }
	body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .ajs-content .tabs::-webkit-scrollbar { display: none; }
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane[data-section="secondtier"] .callout {
	margin: 33px 0 0;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane[data-section="revoke"] .callout {
	margin: 40px 0 0 !important;
}
/* textarea is inline-block, so its baseline leaves a few px under it — remove it so
   the gap above the Note is exactly the margin. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane textarea {
	display: block;
}

/* Every input/select/textarea in this modal still rendered in -apple-system; Figma's
   fields are Inter 14/400/20 #364152 (--color-text) on white with a #d1d7de stroke. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane input:not([type="checkbox"]):not([type="radio"]),
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane select,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane textarea {
	/* Legacy `margin: 3.5px 0` breaks the 76 field height and the 92 pitch. */
	margin: 0;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	letter-spacing: 0;
	color: #364152;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane input::placeholder,
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane textarea::placeholder {
	/* --color-text-muted */
	color: #afbbc9;
}

/* Suffixed amount field — Figma 1551:14139. Two boxes side by side: the input with
   only its LEFT corners rounded, and a #f6f8f9 suffix with no left border and only
   its RIGHT corners rounded. Legacy instead absolutely positions the <em> on top of
   the input, 24px wide, 12px/#555459 on #ecf0f1 with a 3px radius. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .input-pill {
	display: flex;
	align-items: stretch;
	position: relative;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .input-pill input {
	flex: 1 0 0;
	min-width: 0;
	width: auto;
	height: 48px;
	box-sizing: border-box;
	/* Inside stroke keeps the field exactly 48: 14 + 20 + 14. */
	padding: 14px 8px;
	border: 0;
	box-shadow: inset 0 0 0 1px #d1d7de;
	border-radius: 8px 0 0 8px;
	background: #ffffff;
}
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .input-pill em {
	position: static;
	display: flex;
	align-items: center;
	flex: 0 0 auto;
	width: auto;
	height: 48px;
	box-sizing: border-box;
	padding: 14px 12px;
	/* --color-bg */
	background: #f6f8f9;
	/* Top, bottom and right only — the divider is the input's own right stroke. */
	border: 0;
	box-shadow: inset 0 1px 0 #d1d7de, inset 0 -1px 0 #d1d7de, inset -1px 0 0 #d1d7de;
	border-radius: 0 8px 8px 0;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
	font-size: 14px;
	font-style: normal;
	font-weight: 400;
	line-height: 20px;
	letter-spacing: 0;
	color: #364152;
}

/* Selects — Figma 1551:14138: white, 1px #d1d7de, radius 8, px-8 py-14 (= 48 tall),
   with the 8x4.94 chevron in a 16px frame at the right. The shared .ajs-content select
   rule above is 40 tall with 12px padding, which is the profile modal's sizing. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane select {
	box-sizing: border-box;
	width: 100%;
	height: 48px;
	/* right: 8 padding + 16 icon frame + 12 gap = 36. */
	padding: 14px 36px 14px 8px;
	border: 0;
	box-shadow: inset 0 0 0 1px #d1d7de;
	border-radius: 8px;
	background: #ffffff url("/static/icons/affiliates/select-chevron.svg") no-repeat right 12px center;
	/* Native viewBox, never `contain`. */
	background-size: 8px 4.94px;
}
/* The plain (non-suffixed) text/number fields use the same box as 1551:14101. */
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .ui-input-group > * > input[type="text"],
body.tc-aff-reskin .ajs-dialog.tc-modal-affiliate-customize .pane .ui-input-group > * > input[type="number"] {
	box-sizing: border-box;
	width: 100%;
	height: 48px;
	padding: 14px 8px;
	border: 0;
	box-shadow: inset 0 0 0 1px #d1d7de;
	border-radius: 8px;
	background: #ffffff;
}

/* Copy control feedback. thrivecart.clipboard() (main.js:2173) reacts by swapping an
   inner <span>'s text to "Copied!" and, via buttons.css:546, an inner <i>'s glyph to a
   check. This control is a bare span with a background-image, so both no-op and the
   copy gives no sign it worked — swap the glyph itself for a teal check instead. */
body.tc-aff-reskin .tc-afflink-copy {
	transition: background-color 120ms linear;
}
body.tc-aff-reskin .tc-afflink-copy.clipboard-clicked {
	background-image: none;
	background-color: #006b70;
	-webkit-mask-image: url("/static/icons/affiliates/check-white.svg");
	mask-image: url("/static/icons/affiliates/check-white.svg");
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	/* Native viewBox. */
	-webkit-mask-size: 11px 8.25px;
	mask-size: 11px 8.25px;
}
/* Nothing to copy (the row's link is missing) — keep the control in place so the field
   does not reflow, but make it plainly inert. */
body.tc-aff-reskin .tc-afflink-copy-empty {
	opacity: 0.35;
	pointer-events: none;
	cursor: default;
}

/* Pay / Cancel-payment modals reuse the import modal's tall vertical radio cards
   (icon-top / label / radio-bottom, 24px padding) — too large for a simple
   PayPal-vs-Manual choice. Compact them to a row (radio left, title over subtitle),
   scoped so the import modal's source-select cards are untouched. */
body.tc-aff-reskin .ajs-dialog.tc-payout .tc-modal-radios,
body.tc-aff-reskin .ajs-dialog.tc-modal-payout_cancel .tc-modal-radios {
	/* The base flex rule is scoped to the import modal, so these lists were block and
	   the gap did nothing (cards touched). Make them a flex column so the gap applies. */
	display: flex;
	flex-direction: column;
	gap: 16px;
	margin: 16px 0 0;
}
body.tc-aff-reskin .ajs-dialog.tc-payout .tc-modal-radios li,
body.tc-aff-reskin .ajs-dialog.tc-modal-payout_cancel .tc-modal-radios li {
	padding: 14px 16px;
}
body.tc-aff-reskin .ajs-dialog.tc-payout .tc-modal-radios li.active,
body.tc-aff-reskin .ajs-dialog.tc-modal-payout_cancel .tc-modal-radios li.active {
	padding: 13px 15px;
}
body.tc-aff-reskin .ajs-dialog.tc-payout .tc-modal-radios .radio,
body.tc-aff-reskin .ajs-dialog.tc-modal-payout_cancel .tc-modal-radios .radio {
	flex-direction: row;
	align-items: center;
	gap: 12px;
}
/* Drop the import modal's icon slot — the pay modal has no icon there (it rendered
   as an empty grey circle). */
body.tc-aff-reskin .ajs-dialog.tc-payout .tc-modal-radios .radio label::before,
body.tc-aff-reskin .ajs-dialog.tc-modal-payout_cancel .tc-modal-radios .radio label::before {
	display: none;
}
body.tc-aff-reskin .ajs-dialog.tc-payout .tc-modal-radios .radio label,
body.tc-aff-reskin .ajs-dialog.tc-modal-payout_cancel .tc-modal-radios .radio label {
	flex: 1 1 auto;
	align-items: flex-start;
	text-align: left;
	gap: 2px;
}
/* Radio input inline on the left rather than centred at the bottom. */
body.tc-aff-reskin .ajs-dialog.tc-payout .tc-modal-radios .radio input[type="radio"],
body.tc-aff-reskin .ajs-dialog.tc-modal-payout_cancel .tc-modal-radios .radio input[type="radio"] {
	order: -1;
	flex: 0 0 20px;
	margin: 0;
}

/* Product card "Referred by" edit pencil — smaller, and revealed on card hover only. */
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item .info p.status .ui-affiliate-parent .fa-pencil-alt {
	font-size: 11px;
	opacity: 0;
	transition: opacity 120ms linear;
}
.tc-aff-profile-page #view-affiliate .affiliate-dashboard-grid-item:hover .info p.status .ui-affiliate-parent .fa-pencil-alt {
	opacity: 1;
}

/* JV Partners reskin — scoped to `.tc-jv-page`; UI-only, all ids, data attributes and handlers preserved. Mirrors the Affiliates reskin tokens. */
body.tc-jv-reskin,
body.tc-jv-reskin #layout { background: #ffffff; }
body:has(.tc-jv-page),
body:has(.tc-jv-page) #layout { background: #ffffff; }

.tc-jv-page {
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
	color: #364152;
	letter-spacing: 0;
	max-width: 1216px;
	margin: 0 auto;
	padding: 0 32px 160px;
	background: #ffffff;
	box-sizing: border-box;
}
.tc-jv-page *,
.tc-jv-page *::before,
.tc-jv-page *::after { box-sizing: border-box; }

/* Neutralise the legacy chrome the shared includes still emit (Aff/JV switcher + grey boxes); breadcrumb + tabs replace it. */
.tc-jv-page .box-tabbed-sectionaction { display: none; }
.tc-jv-page > .box,
.tc-jv-page .box.box-invisible {
	background: transparent;
	border: 0;
	box-shadow: none;
	padding: 0;
	margin: 0;
}

/* ---- Page header --------------------------------------------------------- */
.tc-jv-page .tc-jv-head {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 16px;
	padding: 24px 0 0;
	margin: 0 0 16px;
}
.tc-jv-page .tc-jv-breadcrumb {
	display: flex;
	align-items: center;
	gap: 4px;
}
.tc-jv-page .tc-jv-breadcrumb a {
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #8493a8;
	text-decoration: none;
}
.tc-jv-page .tc-jv-breadcrumb a:hover { color: #006b70; }
.tc-jv-page .tc-jv-breadcrumb-sep {
	width: 14px;
	height: 14px;
	background: url("/static/icons/affiliates/breadcrumb-sep.svg") no-repeat center;
	background-size: 14px 14px;
}
.tc-jv-page .tc-jv-title {
	margin: 2px 0 0;
	padding: 0;
	border: 0;
	font-size: 20px;
	font-weight: 500;
	line-height: 28px;
	letter-spacing: 0;
	color: #364152;
	white-space: nowrap;
}
.tc-jv-page .tc-jv-head-controls {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-shrink: 0;
	padding-top: 16px;
}
/* Header search (Figma 1468:9342) — white input, search icon, muted placeholder. */
.tc-jv-page .tc-jv-head-search {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	width: 230px;
	padding: 8px 12px;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	margin: 0;
}
.tc-jv-page .tc-jv-head-search::before {
	content: '';
	width: 16px;
	height: 16px;
	flex-shrink: 0;
	background: url("/static/icons/affiliates/search.svg") no-repeat center;
	background-size: 11.66px 11.66px;
}
.tc-jv-page .tc-jv-head-search input {
	border: 0;
	outline: 0;
	padding: 0;
	margin: 0;
	width: 100%;
	background: transparent;
	font-size: 12px;
	line-height: 16px;
	color: #364152;
	box-shadow: none;
	height: auto;
}
.tc-jv-page .tc-jv-head-search input::placeholder { color: #afbbc9; }
.tc-jv-page .tc-jv-head-divider { width: 1px; height: 24px; background: #d1d7de; margin: 0 4px; }

/* ---- Primary / secondary buttons ---------------------------------------- */
.tc-jv-page .tc-jv-btn-primary {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	height: 36px;
	padding: 8px 18px;
	background: #006b70;
	border: 1px solid #006b70;
	border-radius: 8px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #ffffff;
	cursor: pointer;
	white-space: nowrap;
}
.tc-jv-page .tc-jv-btn-primary:hover { background: #00868c; border-color: #00868c; }
.tc-jv-page .tc-jv-btn-secondary {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	height: 36px;
	padding: 8px 18px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 8px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #364152;
	cursor: pointer;
	white-space: nowrap;
}
.tc-jv-page .tc-jv-btn-secondary:hover { background: #f6f8f9; }
.tc-jv-page .tc-jv-ico-plus { display: none; }
/* 16px frame, glyph at its native viewBox size — `contain` scales it ~2x too big. */
.tc-jv-page .tc-jv-ico-sort,
.tc-jv-page .tc-jv-ico-filter,
.tc-jv-page .tc-jv-ico-csv {
	width: 16px;
	height: 16px;
	flex-shrink: 0;
	background-repeat: no-repeat;
	background-position: center;
}
.tc-jv-page .tc-jv-ico-sort { background-image: url("/static/icons/jv/sort.svg"); background-size: 12px 8px; }
.tc-jv-page .tc-jv-ico-filter { background-image: url("/static/icons/jv/filter.svg"); background-size: 12px 8px; }
.tc-jv-page .tc-jv-ico-csv { background-image: url("/static/icons/jv/download.svg"); background-size: 10.67px 10.67px; }

/* ---- Underline sub-tabs (restyle shared .tabs.tabs-anchor from include.menu) */
.tc-jv-page .tabs.tabs-anchor {
	display: flex;
	align-items: center;
	gap: 32px;
	margin: 0 0 24px;
	padding: 0;
	list-style: none;
	border-bottom: 1px solid #d1d7de;
	background: transparent;
}
.tc-jv-page .tabs.tabs-anchor li {
	margin: 0;
	padding: 0;
	background: transparent;
	border: 0;
	float: none;
	list-style: none;
}
.tc-jv-page #view-contracts .tabs.tabs-anchor li a {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 8px;
	background: transparent;
	border: 0;
	border-bottom: 2px solid transparent;
	margin-bottom: -1px;
	font-family: 'Inter', sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	color: #8493a8;
	text-decoration: none;
}
.tc-jv-page .tabs.tabs-anchor li a i { display: none; }
.tc-jv-page #view-contracts .tabs.tabs-anchor li.active a,
.tc-jv-page #view-contracts .tabs.tabs-anchor li a:hover { color: #2a3648; }
.tc-jv-page #view-contracts .tabs.tabs-anchor li.active a { border-bottom-color: #006b70; }
/* Kill the legacy box-tabbed "connected tab" chrome on the active li (border + white bg). */
.tc-jv-page #view-contracts .tabs.tabs-anchor li,
.tc-jv-page #view-contracts .tabs.tabs-anchor li.active { border: 0; background: transparent; }

/* ---- KPI data cards (keep #contracts-list-stats data-status_string hooks) - */
.tc-jv-page .tc-jv-kpis { margin: 0 0 32px; }
/* KPI frame sits above the list toolbar with breathing room. */
.tc-jv-page #contracts-list-stats.tc-jv-kpis { margin-bottom: 88px; }
.tc-jv-page .tc-jv-kpi-list {
	display: flex;
	gap: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.tc-jv-page .tc-jv-kpi-list::before,
.tc-jv-page .tc-jv-kpi-list::after { content: none; display: none; }
.tc-jv-page .tc-jv-kpi {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 32px;
	flex: 1 1 0;
	min-width: 0;
	margin: 0;
	padding: 24px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 12px;
	box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.05);
	list-style: none;
	cursor: pointer;
}
/* No selected-state highlight — the active-filter card reads the same as the others. */
.tc-jv-page .tc-jv-kpi.ui-disabled { opacity: 0.55; cursor: default; }
.tc-jv-page .tc-jv-kpi-icon {
	width: 36px;
	height: 36px;
	flex-shrink: 0;
	background-color: #e8ecef;
	border-radius: 8px;
	background-repeat: no-repeat;
	background-position: center;
}
.tc-jv-page .tc-jv-kpi-icon--pending { background-image: url("/static/icons/contracts/kpi-pending.svg"); background-size: 20px 20px; }
.tc-jv-page .tc-jv-kpi-icon--active { background-image: url("/static/icons/contracts/kpi-active.svg"); background-size: 18px 20px; }
.tc-jv-page .tc-jv-kpi-icon--inactive { background-image: url("/static/icons/contracts/kpi-inactive.svg"); background-size: 20px 20px; }
.tc-jv-page .tc-jv-kpi-text { display: flex; flex-direction: column; gap: 4px; }
.tc-jv-page .tc-jv-kpi-label {
	font-size: 12px;
	font-weight: 600;
	line-height: 16px;
	letter-spacing: 0.48px;
	text-transform: uppercase;
	color: #8493a8;
}
.tc-jv-page .tc-jv-kpi-value {
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	color: #364152;
}
.tc-jv-page .tc-jv-kpi-value h5,
.tc-jv-page .tc-jv-kpi-value h6 { margin: 0; padding: 0; border: 0; font: inherit; color: inherit; }

/* ---- Toolbar (Showing X | Search + Sort + Filter + Download CSV) --------- */
.tc-jv-page .tc-jv-toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	margin: 0 0 16px;
}
.tc-jv-page .tc-jv-table-count {
	font-size: 14px;
	line-height: 20px;
	color: #2a3648;
}
.tc-jv-page .tc-jv-toolbar-right {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-wrap: wrap;
	justify-content: flex-end;
	position: relative;
}
.tc-jv-page .tc-jv-toolbar button.tc-jv-btn-secondary,
.tc-jv-page .tc-jv-toolbar button.tc-jv-btn-primary { height: 32px; box-sizing: border-box; padding: 8px 12px; border-radius: 6px; line-height: 16px; cursor: pointer; }
.tc-jv-page .tc-jv-toolbar button.tc-jv-btn-secondary[disabled] { opacity: 0.5; cursor: default; }
/* Search runs off the page-level search (and Enter in this input) — drop the redundant Search + Clear buttons (contracts + payouts). */
.tc-jv-page .tc-jv-toolbar [id$="-search"].tc-jv-btn-primary,
.tc-jv-page .tc-jv-toolbar [id$="-reset"].tc-jv-btn-secondary { display: none; }
/* The Filter refine dropdowns default to display:block and stack, stretching the toolbar row — lay them out inline at button height. */
.tc-jv-page .tc-jv-toolbar [id$="-filters-refine-status-wrap"] { display: flex; gap: 8px; align-items: center; }
.tc-jv-page .tc-jv-toolbar [id$="-filters-refine-status-wrap"] select { height: 32px; box-sizing: border-box; }
.tc-jv-page .tc-jv-table-search {
	display: flex;
	align-items: center;
	gap: 8px;
	width: 200px;
	padding: 8px 13px;
	background: #ffffff;
	border: 0;
	box-shadow: inset 0 0 0 1px #d1d7de;
	border-radius: 6px;
	margin: 0;
}
.tc-jv-page .tc-jv-table-search::before {
	content: '';
	width: 16px;
	height: 16px;
	flex-shrink: 0;
	background: url("/static/icons/affiliates/search.svg") no-repeat center;
	background-size: 11.66px 11.66px;
}
.tc-jv-page .tc-jv-table-search input {
	border: 0;
	outline: 0;
	padding: 0;
	margin: 0;
	width: 100%;
	background: transparent;
	font-size: 12px;
	line-height: 16px;
	color: #364152;
	box-shadow: none;
	height: auto;
}
.tc-jv-page .tc-jv-table-search input::placeholder { color: #afbbc9; }
/* Inside-stroke via box-shadow so the 1px border doesn't grow the 32px box. */
.tc-jv-page .tc-jv-btn-sort {
	height: 32px;
	box-sizing: border-box;
	padding: 8px 12px;
	gap: 4px;
	border: 0;
	box-shadow: inset 0 0 0 1px #e8ecef;
	border-radius: 6px;
	background: #ffffff;
	line-height: 16px;
}
.tc-jv-page .tc-jv-btn-sort:hover { background: #f6f8f9; }
/* Joined pill: each segment has its own inset stroke; the second drops its left edge so they share one divider. */
.tc-jv-page .tc-jv-btngroup { display: inline-flex; align-items: center; }
.tc-jv-page .tc-jv-btngroup-seg {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	height: 32px;
	box-sizing: border-box;
	padding: 8px 13px;
	background: #f6f8f9;
	border: 0;
	box-shadow: inset 0 0 0 1px #d1d7de;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	color: #364152;
	cursor: pointer;
	white-space: nowrap;
}
.tc-jv-page .tc-jv-btngroup-seg--filter { border-radius: 6px 0 0 6px; }
.tc-jv-page .tc-jv-btngroup-seg--download { border-radius: 0 6px 6px 0; padding: 8px 13px 8px 12px; }
.tc-jv-page .tc-jv-btngroup-seg + .tc-jv-btngroup-seg {
	box-shadow: inset -1px 0 0 0 #d1d7de, inset 0 1px 0 0 #d1d7de, inset 0 -1px 0 0 #d1d7de;
}
.tc-jv-page .tc-jv-btngroup-seg:hover { background: #eef1f4; }

/* ---- Sort / Filter panel (the legacy .contracts-sort selects) ------------ */
.tc-jv-page .tc-jv-panel {
	display: none;
	align-items: center;
	gap: 8px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 12px;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	padding: 12px 16px;
	margin: 0 0 16px;
}
#view-contracts-list.tc-jv-sort-open .tc-jv-sort-panel { display: flex; }
.tc-jv-page .tc-jv-panel .pure-form { display: flex; align-items: center; gap: 8px; margin: 0; }
.tc-jv-page .tc-jv-panel select {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	height: 36px;
	width: auto;
	padding: 7px 34px 7px 13px;
	background: #ffffff url("/static/icons/affiliates/select-chevron.svg") no-repeat right 13px center;
	background-size: 8px 4.94px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	color: #2b384a;
	cursor: pointer;
	box-shadow: none;
	margin: 0;
}
.tc-jv-page .tc-jv-panel select.hidden { display: none; }

/* ---- Contract row cards (Figma Horizontal Card) -------------------------- */
.tc-jv-page .tc-jv-list-wrap { margin: 0; }
.tc-jv-page ul.tc-jv-rows {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 16px;
}
.tc-jv-page ul.tc-jv-rows > li.tc-jv-row {
	display: flex;
	align-items: center;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 8px;
	box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
	padding: 16px 0;
	margin: 0;
	/* Row hosts the "Contract includes" hint tooltip, which paints outside the card — clip would cut it off. */
	overflow: visible;
}
.tc-jv-page .tc-jv-row-avatar {
	flex: 0 0 auto;
	padding-left: 16px;
	display: flex;
	align-items: center;
}
.tc-jv-page .tc-jv-row-avatar img {
	display: block;
	width: 160px;
	height: 160px;
	border-radius: 16px;
	/* Two-part placeholder: #f6f8f9 tile + person icon, shown through the gravatar `blank` PNG when there's no avatar, covered when there is. */
	background-color: #f6f8f9;
	background-image: url("/static/icons/affiliates/avatar-person.svg");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 96px 96px;
	object-fit: cover;
}
.tc-jv-page .tc-jv-row-main {
	flex: 1 1 auto;
	min-width: 0;
	align-self: stretch;
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 16px;
	padding: 0 16px;
}
.tc-jv-page .tc-jv-row-title {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 8px;
}
.tc-jv-page .tc-jv-row-name {
	font-size: 16px;
	font-weight: 600;
	line-height: 24px;
	color: #364152;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.tc-jv-page .tc-jv-row-line {
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #364152;
}
.tc-jv-page .tc-jv-row-line b { font-weight: 500; }
.tc-jv-page .tc-jv-row-line .text-underline { text-decoration: underline; }
/* Real group on mobile; on desktop it dissolves (display:contents) so layout is unchanged. */
.tc-jv-page .tc-jv-row-meta { display: contents; }
.tc-jv-page .tc-jv-badge {
	display: inline-flex;
	align-items: center;
	align-self: flex-start;
	gap: 4px;
	padding: 4px 8px;
	border-radius: 8px;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	color: #364152;
	margin-top: 4px;
}
.tc-jv-page .tc-jv-badge-green { background: #c6f6d5; }
.tc-jv-page .tc-jv-badge-amber { background: #feebc8; }
.tc-jv-page .tc-jv-badge-red { background: #fed7d7; }
.tc-jv-page .tc-jv-badge-neutral { background: #e8ecef; color: #8493a8; }
.tc-jv-page .tc-jv-row-cta { flex: 0 0 auto; }
.tc-jv-page .tc-jv-btn-sm {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	height: 32px;
	padding: 8px 12px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 6px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	color: #364152;
	text-decoration: none;
	white-space: nowrap;
	box-shadow: none;
	cursor: pointer;
}
.tc-jv-page .tc-jv-btn-sm:hover { background: #f6f8f9; }
.tc-jv-page .tc-jv-btn-sm[disabled] { opacity: 0.5; cursor: default; pointer-events: none; }
.tc-jv-page .tc-jv-ico-ext {
	width: 12px;
	height: 12px;
	flex-shrink: 0;
	background: url("/static/icons/contracts/row-external.svg") no-repeat center;
	background-size: 12px 12px;
}

/* ---- List footer: jobs indicator left, pagination right ------------------ */
.tc-jv-page .tc-jv-list-foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	margin-top: 16px;
}
.tc-jv-page .tc-jv-list-foot.hidden { display: none; }
.tc-jv-page .tc-jv-foot-left { display: flex; align-items: center; gap: 8px; min-height: 32px; }
.tc-jv-page .tc-jv-jobs-view {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 32px;
	min-width: 32px;
	border: 1px solid #e8ecef;
	border-radius: 6px;
	color: #8493a8;
	cursor: pointer;
}
.tc-jv-page .tc-jv-jobs-view.hidden { display: none; }
.tc-jv-page .tc-jv-pagination { display: flex; align-items: center; gap: 8px; }
.tc-jv-page .tc-jv-pagination ul,
.tc-jv-page .tc-jv-pagination ol { display: flex; align-items: center; gap: 8px; list-style: none; margin: 0; padding: 0; }
.tc-jv-page .tc-jv-pagination li { margin: 0; padding: 0; float: none; }
.tc-jv-page .tc-jv-pagination a,
.tc-jv-page .tc-jv-pagination span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 32px;
	min-width: 32px;
	padding: 8px;
	border-radius: 6px;
	font-size: 14px;
	font-weight: 500;
	color: #364152;
	background: #ffffff;
	border: 1px solid #e8ecef;
	text-decoration: none;
	cursor: pointer;
}
.tc-jv-page .tc-jv-pagination a:hover { background: #f6f8f9; }
.tc-jv-page .tc-jv-pagination .active span,
.tc-jv-page .tc-jv-pagination .current span { background: #f6f8f9; border-color: #d1d7de; }

/* ---- Empty state --------------------------------------------------------- */
.tc-jv-page .tc-jv-empty {
	text-align: center;
	padding: 48px 24px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 12px;
}
.tc-jv-page .tc-jv-empty h2 { font-size: 20px; font-weight: 600; color: #364152; margin: 0 0 8px; }
.tc-jv-page .tc-jv-empty p { font-size: 14px; line-height: 20px; color: #8493a8; margin: 0 0 8px; }
.tc-jv-page .tc-jv-empty .tc-jv-btn-primary { margin-top: 8px; }

/* JV Payouts — sub-tabs, info banner, pay rows (reuses .tc-jv-* chrome). */
.tc-jv-page .tc-jv-subtabs-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin: 0 0 24px; }
.tc-jv-page .tc-jv-subtabs { display: flex; gap: 32px; align-items: center; margin: 0; }
.tc-jv-page .tc-jv-subtab { display: inline-flex; align-items: center; padding: 8px; border-radius: 4px; font-family: 'Inter', sans-serif; font-size: 16px; font-weight: 500; line-height: 24px; color: #8593a8; cursor: pointer; }
/* Mass-pay button lives on the right of the sub-tab row; the one shown matches the active mode. */
.tc-jv-page .tc-jv-po-massbtns { flex-shrink: 0; }
#view-affiliates-payouts .tc-jv-massbtn-auto { display: none; }
#view-affiliates-payouts.tc-jv-pomode-auto .tc-jv-massbtn-auto { display: inline-flex; }
#view-affiliates-payouts.tc-jv-pomode-auto .tc-jv-massbtn-manual { display: none; }
.tc-jv-page .tc-jv-subtab.active { background: #e7ebee; color: #2b384a; }

.tc-jv-page .tc-jv-banner { display: flex; align-items: flex-start; gap: 8px; padding: 16px; background: #bee3f8; border-radius: 8px; margin: 0 0 16px; }
.tc-jv-page .tc-jv-banner-icon { width: 32px; height: 32px; flex-shrink: 0; background: url("/static/icons/contracts/banner-info-filled.svg") no-repeat center; background-size: 26.67px 26.67px; }
.tc-jv-page .tc-jv-banner-text { flex: 1 1 auto; min-width: 0; font-family: 'Inter', sans-serif; font-size: 16px; font-weight: 500; line-height: 24px; color: #2a3648; }
.tc-jv-page .tc-jv-banner-close { width: 32px; height: 32px; flex-shrink: 0; padding: 8px; border-radius: 6px; background: url("/static/icons/contracts/banner-close.svg") no-repeat center; background-size: 12px 12px; cursor: pointer; opacity: 0.7; }
.tc-jv-page .tc-jv-banner-close:hover { opacity: 1; }
.tc-jv-page .tc-jv-banner.hidden { display: none; }

/* Payout KPI icons */
.tc-jv-page .tc-jv-kpi-icon--po-overdue { background-image: url("/static/icons/contracts/kpi-overdue.svg"); background-size: 18px 20px; }
.tc-jv-page .tc-jv-kpi-icon--po-due { background-image: url("/static/icons/contracts/kpi-due.svg"); background-size: 18px 20px; }
.tc-jv-page .tc-jv-kpi-icon--po-upcoming { background-image: url("/static/icons/contracts/kpi-upcoming.svg"); background-size: 20px 20px; }
.tc-jv-page .tc-jv-kpi-icon--po-failed { background-image: url("/static/icons/contracts/kpi-inactive.svg"); background-size: 20px 20px; }
.tc-jv-page .tc-jv-kpi-icon--po-partners { background-image: url("/static/icons/contracts/kpi-active.svg"); background-size: 18px 20px; }
.tc-jv-page .tc-jv-kpi-icon--po-transactions { background-image: url("/static/icons/contracts/kpi-active.svg"); background-size: 18px 20px; }
.tc-jv-page .tc-jv-kpi-icon--po-completed { background-image: url("/static/icons/contracts/kpi-pending.svg"); background-size: 20px 20px; }
/* KPI value renders legacy split $amount (h5 with <em>.00</em>) or a count — normalise. */
.tc-jv-page .tc-jv-kpi-value em { font-style: normal; }

/* State visibility: .ui-status-upcoming toggles upcoming/paid; .tc-jv-pomode-* toggles auto/manual (default manual, per Figma). */
.tc-jv-page .tc-jv-po-paid { display: none; }
#view-affiliates-payouts:not(.ui-status-upcoming) .tc-jv-po-upcoming { display: none; }
#view-affiliates-payouts:not(.ui-status-upcoming) .tc-jv-po-paid { display: block; }
#view-affiliates-payouts .tc-jv-po-auto-cards { display: none; }
#view-affiliates-payouts.tc-jv-pomode-auto .tc-jv-po-auto-cards { display: block; }
#view-affiliates-payouts.tc-jv-pomode-auto .tc-jv-po-manual-cards { display: none; }
.tc-jv-page .tc-jv-po-massbtn { margin: 16px 0 0; }

/* Pay rows (reuse .tc-jv-row / -avatar / -main / -title / -name). */
.tc-jv-page .tc-jv-row-emailrow { display: flex; align-items: center; gap: 4px; }
.tc-jv-page .tc-jv-row-emailrow a { font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 400; line-height: 20px; color: #006b70; text-decoration: none; }
.tc-jv-page .tc-jv-row-emailrow a:hover { text-decoration: underline; }
.tc-jv-page .tc-jv-copy { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; padding: 4px 6px; border-radius: 6px; cursor: pointer; background: url("/static/icons/contracts/row-copy.svg") no-repeat center; background-size: 12px 12px; opacity: 0.75; }
.tc-jv-page .tc-jv-copy:hover { opacity: 1; background-color: #f6f8f9; }
.tc-jv-page .tc-jv-po-badge { margin: 8px 0 0; }
.tc-jv-page .tc-jv-po-lines { display: flex; flex-direction: column; margin-top: 16px; font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 400; line-height: 20px; color: #8493a8; }
.tc-jv-page .tc-jv-po-lines b { font-weight: 400; color: #8493a8; }
.tc-jv-page .tc-jv-po-right { align-self: stretch; display: flex; flex-direction: column; align-items: flex-end; justify-content: space-between; flex: 0 0 auto; }
.tc-jv-page .tc-jv-po-actions { display: flex; align-items: center; gap: 8px; position: relative; }
.tc-jv-page .tc-jv-po-amountblock { display: flex; flex-direction: column; align-items: flex-end; }
.tc-jv-page .tc-jv-po-amount { font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 600; line-height: 20px; color: #364152; text-align: right; }
.tc-jv-page .tc-jv-po-date { font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 400; line-height: 20px; color: #8493a8; text-align: right; }
.tc-jv-page .tc-jv-po-logo { height: 18px; width: auto; max-width: 80px; object-fit: contain; margin-top: 4px; display: block; }

/* Pay + kebab menu */
.tc-jv-page .tc-jv-kebab { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; padding: 8px; border: 1px solid #e8ecef; border-radius: 6px; background: #ffffff; cursor: pointer; }
.tc-jv-page .tc-jv-kebab::before { content: ''; width: 16px; height: 16px; background: url("/static/icons/contracts/row-kebab.svg") no-repeat center; background-size: 4px 16px; }
.tc-jv-page .tc-jv-kebab:hover { background: #f6f8f9; }
.tc-jv-page .tc-jv-kebab-menu { display: none; position: absolute; top: 36px; right: 0; z-index: 20; min-width: 160px; padding: 4px; background: #ffffff; border: 1px solid #e8ecef; border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); }
.tc-jv-page .tc-jv-po-actions.open .tc-jv-kebab-menu { display: block; }
/* Bridge the 4px gap so the menu doesn't close when the cursor crosses it. */
.tc-jv-page .tc-jv-kebab-menu::before { content: ''; position: absolute; top: -6px; right: 0; width: 100%; height: 6px; }
.tc-jv-page .tc-jv-kebab-menu .tc-jv-menu-item { display: block; width: 100%; padding: 8px 10px; border: 0; background: transparent; border-radius: 6px; font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 500; line-height: 16px; color: #364152; text-align: left; text-decoration: none; white-space: nowrap; cursor: pointer; box-shadow: none; }
.tc-jv-page .tc-jv-kebab-menu .tc-jv-menu-item:hover { background: #f6f8f9; }
.tc-jv-page .tc-jv-kebab-menu .tc-jv-menu-item[disabled] { opacity: 0.5; cursor: default; pointer-events: none; }

/* Masspay control bar */
/* Selection-mode UI: bar + row checkboxes only show under .ui-masspay-active (the reskin dropped the legacy gating). */
.tc-jv-page #contracts-payouts-masspay-actions.control-bar { background: #ffffff; border: 1px solid #e8ecef; border-radius: 12px; box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); padding: 12px 16px; margin-top: 16px; display: none; align-items: center; gap: 12px; }
.tc-jv-page #view-affiliates-payouts.ui-masspay-active #contracts-payouts-masspay-actions.control-bar { display: flex; }
.tc-jv-page .tc-jv-po-check { display: none; }
.tc-jv-page #view-affiliates-payouts.ui-masspay-active .tc-jv-po-check { display: block; }
.tc-jv-page #contracts-payouts-masspay-actions .ui-masspay-pay {
	display: inline-flex; align-items: center; height: 36px; padding: 8px 18px; background: #006b70; border: 1px solid #006b70; border-radius: 8px;
	font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 500; line-height: 20px; color: #ffffff; box-shadow: none; cursor: pointer;
}
.tc-jv-page #contracts-payouts-masspay-actions .ui-masspay-pay:hover { background: #00868c; border-color: #00868c; }
.tc-jv-page #contracts-payouts-masspay-actions .ui-masspay-cancel {
	display: inline-flex; align-items: center; height: 36px; padding: 8px 18px; background: #ffffff; border: 1px solid #e8ecef; border-radius: 8px;
	font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 500; line-height: 20px; color: #d13f36; box-shadow: none; cursor: pointer;
}
.tc-jv-page #contracts-payouts-masspay-actions .ui-masspay-cancel:hover { background: #fef2f2; }
/* Pay-money icon on the mass-pay buttons (mask → recolours with the button's text colour). */
.tc-jv-page .tc-jv-ico-pay {
	display: inline-block; width: 16.67px; height: 13.33px; flex-shrink: 0; background-color: currentColor;
	-webkit-mask: url("/static/icons/contracts/pay-money.svg") no-repeat center; mask: url("/static/icons/contracts/pay-money.svg") no-repeat center;
	-webkit-mask-size: 16.67px 13.33px; mask-size: 16.67px 13.33px;
}

#view-affiliates-payouts.tc-jv-sort-open .tc-jv-sort-panel { display: flex; }
#view-affiliates-payouts.tc-jv-filter-open .tc-jv-po-filter-panel { display: flex; }
.tc-jv-page .tc-jv-po-filter-panel { flex-wrap: wrap; }
.tc-jv-page .tc-jv-po-check { position: absolute; top: 8px; left: 24px; z-index: 2; }
.tc-jv-page .tc-jv-row-avatar { position: relative; }

/* JV Rules — chrome + empty state + footer (rule cards are JS-templated; basic card chrome only). */
.tc-jv-page #view-contracts-rules > .box,
.tc-jv-page #view-contracts-rules .box.padding-0 { background: transparent; border: 0; box-shadow: none; padding: 0; }
.tc-jv-page #ui-autoresponder-empty { text-align: center; padding: 48px 24px; background: #ffffff; border: 1px solid #e8ecef; border-radius: 12px; margin: 0; }
.tc-jv-page #ui-autoresponder-empty::before { content: ''; display: block; width: 48px; height: 48px; margin: 0 auto 16px; background: url("/static/icons/contracts/rules-inbox.svg") no-repeat center; background-size: 48px 48px; }
.tc-jv-page #ui-autoresponder-empty h2 { font-family: 'Inter', sans-serif; font-size: 16px; font-weight: 600; line-height: 24px; color: #364152; margin: 0 0 8px; }
.tc-jv-page #ui-autoresponder-empty p { font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 400; line-height: 20px; color: #8493a8; margin: 0 0 4px; }
.tc-jv-page #ui-autoresponder-empty .ui-autoresponder-add { display: inline-flex; align-items: center; gap: 6px; margin-top: 16px; height: 36px; padding: 8px 18px; background: #006b70; border: 1px solid #006b70; border-radius: 8px; font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 500; line-height: 20px; color: #ffffff; cursor: pointer; box-shadow: none; }
.tc-jv-page #ui-autoresponder-empty .ui-autoresponder-add:hover { background: #00868c; border-color: #00868c; }
.tc-jv-page #ui-autoresponder-empty .ui-autoresponder-add i { display: none; }
.tc-jv-page #ui-autoresponder-empty p { max-width: 560px; margin-left: auto; margin-right: auto; }
/* Empty state: the empty-card has its own Add rule — hide the Save-rules footer until a rule exists. */
.tc-jv-page #view-contracts-rules .ui-autoresponder-empty ~ .box-footer { display: none; }
.tc-jv-page .box-footer { display: flex; align-items: center; justify-content: flex-end; gap: 12px; padding: 16px 0 0; margin-top: 16px; border-top: 1px solid #e8ecef; background: transparent; }
.tc-jv-page .box-footer .ui-autoresponder-add-primary { display: inline-flex; align-items: center; gap: 6px; height: 36px; padding: 8px 18px; background: #ffffff; border: 1px solid #e8ecef; border-radius: 8px; font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 500; line-height: 20px; color: #364152; cursor: pointer; box-shadow: none; }
.tc-jv-page .box-footer .ui-autoresponder-add-primary:hover { background: #f6f8f9; }
.tc-jv-page .box-footer .ui-save { display: inline-flex; align-items: center; height: 36px; padding: 8px 18px; background: #006b70; border: 1px solid #006b70; border-radius: 8px; font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 500; line-height: 20px; color: #ffffff; cursor: pointer; box-shadow: none; }
.tc-jv-page .box-footer .ui-save:hover { background: #00868c; border-color: #00868c; }
.tc-jv-page .ui-autoresponder-opts { display: flex; flex-direction: column; gap: 16px; margin: 0; }
.tc-jv-page .ui-autoresponder-opts:not(:empty) { margin: 0 0 16px; }
.tc-jv-page .ui-autoresponder-row { background: #ffffff; border: 1px solid #e8ecef; border-radius: 12px; box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); padding: 24px; }
/* style.css strips the border off sibling rule cards; re-assert it with higher specificity so every card is bordered. */
.tc-jv-page #view-contracts-rules-list .ui-autoresponder-row + .ui-autoresponder-row { border: 1px solid #e8ecef; }

/* JV Rules — reskin the JS-templated rule-card controls (CSS only; layout labels left is legacy). */
.tc-jv-page .ui-autoresponder-content select,
.tc-jv-page .ui-autoresponder-block select {
	-webkit-appearance: none; -moz-appearance: none; appearance: none;
	height: 36px; padding: 7px 34px 7px 13px;
	background: #ffffff url("/static/icons/affiliates/select-chevron.svg") no-repeat right 13px center; background-size: 8px 4.94px;
	border: 1px solid #d1d7de; border-radius: 8px;
	font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 400; line-height: 20px; color: #2b384a; box-shadow: none;
}
.tc-jv-page .ui-autoresponder-content textarea,
.tc-jv-page .ui-autoresponder-block textarea {
	border: 1px solid #d1d7de; border-radius: 8px; padding: 10px 12px;
	font-family: 'Inter', sans-serif; font-size: 14px; line-height: 20px; color: #364152; box-shadow: none;
}
.tc-jv-page .ui-autoresponder-content label,
.tc-jv-page .ui-autoresponder-content > div > div:first-child {
	font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 500; line-height: 20px; color: #2b384a;
}
.tc-jv-page .generic-list-actions .pure-button.button-primary {
	background: #ffffff; border: 1px solid #e8ecef; border-radius: 6px; color: #364152; box-shadow: none;
	font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 500; line-height: 16px; padding: 8px 12px; height: auto;
}
.tc-jv-page .generic-list-actions .pure-button.button-primary:hover { background: #f6f8f9; }

/* Rule card form (Figma 1607:9556) — labels ABOVE + 2-col top row. Overrides the legacy
   #view-contracts-rules ID rules that make each label a right-aligned 11em inline column (D13). */
.tc-jv-page #view-contracts-rules .ui-autoresponder-row .ui-autoresponder-content {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 24px 16px;
	width: auto;
	float: none;
	margin: 0;
	padding: 0;
}
/* Row 1: the two selector fields share the row (Figma 544 each, 16 gap). */
.tc-jv-page #view-contracts-rules .ui-autoresponder-content > .ui-autoresponder-product-selector-wrap,
.tc-jv-page #view-contracts-rules .ui-autoresponder-content > .ui-autoresponder-action-selector-wrap {
	flex: 1 1 calc(50% - 8px);
	min-width: 0;
}
/* "I want to", the Custom-HTML block, and the submit-HTML block each claim their
   own full-width row, flush-left. This is where the legacy scaffolding lived:
   .ui-autoresponder-block had `float:left` (→ 393px floated box) and
   .ui-autoresponder-blocked had `margin-left:156px` (→ textarea shoved right).
   Reset both (D12). */
.tc-jv-page #view-contracts-rules .ui-autoresponder-content > .ui-autoresponder-method-selector-wrap,
.tc-jv-page #view-contracts-rules .ui-autoresponder-content > .ui-autoresponder-block,
.tc-jv-page #view-contracts-rules .ui-autoresponder-content > .ui-autoresponder-blocked,
.tc-jv-page #view-contracts-rules .ui-autoresponder-content > .ui-uneditable,
.tc-jv-page #view-contracts-rules .ui-autoresponder-content > .ui-autoresponder-preopts {
	flex: 1 1 100%;
	max-width: none;
	width: auto;
	float: none;
	margin: 0;
}
/* The Custom-HTML select carries a legacy `margin-left:14px`; the submit-HTML
   label + textarea sit inside .ui-autoresponder-blocked — all flush-left now. */
.tc-jv-page #view-contracts-rules .ui-autoresponder-block .ui-autoresponder-provider-block,
.tc-jv-page #view-contracts-rules .ui-autoresponder-block .ui-autoresponder-provider-block select { margin-left: 0; }
.tc-jv-page #view-contracts-rules .ui-autoresponder-blocked .ui-autoresponder-html-post,
.tc-jv-page #view-contracts-rules .ui-autoresponder-blocked .ui-autoresponder-html { width: 100%; margin-left: 0; }
/* Legacy sheet renders these at 13/11.7px; ID scope needed to outrank it. */
.tc-jv-page #view-contracts-rules p.ui-autoresponder-html-post {
	margin: 0;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #2b384a;
}
.tc-jv-page #view-contracts-rules textarea.ui-autoresponder-html {
	box-sizing: border-box;
	padding: 8px;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	line-height: 20px;
	color: #364152;
}
/* JS-injected card heading; padding-right clears the absolute Remove button. */
.tc-jv-page #view-contracts-rules .ui-autoresponder-row .tc-jv-rule-title {
	display: block;
	margin: 0 0 24px;
	padding-right: 90px;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	letter-spacing: normal;
	color: #364152;
}
/* Selects fill their row but cap at Figma's 544 for the single-column fields. */
.tc-jv-page #view-contracts-rules .ui-autoresponder-content select { width: 100%; }
.tc-jv-page #view-contracts-rules .ui-autoresponder-content > .ui-autoresponder-method-selector-wrap select,
.tc-jv-page #view-contracts-rules .ui-autoresponder-content > .ui-autoresponder-block select { max-width: 544px; }
.tc-jv-page #view-contracts-rules .ui-autoresponder-block textarea,
.tc-jv-page #view-contracts-rules .ui-autoresponder-blocked textarea { width: 100%; }
/* Action inputs (email / webhook URL etc.) matched the legacy grey field — style + cap them like the selects. */
.tc-jv-page #view-contracts-rules .ui-autoresponder-content input[type="email"],
.tc-jv-page #view-contracts-rules .ui-autoresponder-content input[type="text"],
.tc-jv-page #view-contracts-rules .ui-autoresponder-content input[type="url"],
.tc-jv-page #view-contracts-rules .ui-autoresponder-content input[type="number"] {
	width: 100%;
	max-width: 544px;
	height: 36px;
	box-sizing: border-box;
	margin: 0;
	padding: 7px 13px;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	background: #ffffff;
	box-shadow: none;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	line-height: 20px;
	color: #364152;
}
/* Selector-wrap = label above its input, gap-4, left-aligned. Carry the ID to
   outrank style.css's right-aligned 11em inline label (D13). */
.tc-jv-page #view-contracts-rules .ui-autoresponder .ui-autoresponder-product-selector-wrap,
.tc-jv-page #view-contracts-rules .ui-autoresponder .ui-autoresponder-action-selector-wrap,
.tc-jv-page #view-contracts-rules .ui-autoresponder .ui-autoresponder-method-selector-wrap { margin: 0; float: none; width: auto; }
.tc-jv-page #view-contracts-rules .ui-autoresponder .ui-autoresponder-product-selector-wrap > div:first-child,
.tc-jv-page #view-contracts-rules .ui-autoresponder .ui-autoresponder-action-selector-wrap > div:first-child,
.tc-jv-page #view-contracts-rules .ui-autoresponder .ui-autoresponder-method-selector-wrap > div:first-child {
	display: block; text-align: left; width: auto; float: none; white-space: nowrap;
	font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 500; line-height: 20px; color: #2b384a; margin: 0 0 4px;
}

/* JV Create a Contract — CSS reskin of the tabbed form (create.php); tabbed behaviour kept. */
.tc-jv-create { font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; color: #364152; max-width: 1216px; margin: 0 auto; padding: 0 32px 160px; box-sizing: border-box; }
.tc-jv-create *, .tc-jv-create *::before, .tc-jv-create *::after { box-sizing: border-box; }
.tc-jv-create .box.box-invisible, .tc-jv-create .box.box-tabbed { background: transparent; border: 0; box-shadow: none; padding: 0; margin: 0; }
.tc-jv-create ul.tabs { display: flex; gap: 32px; align-items: center; margin: 0 0 24px; padding: 0; list-style: none; border-bottom: 1px solid #d1d7de; background: transparent; }
.tc-jv-create ul.tabs li { margin: 0 0 -1px; padding: 8px; background: transparent; border: 0; border-bottom: 2px solid transparent; float: none; list-style: none; font-family: 'Inter', sans-serif; font-size: 16px; font-weight: 500; line-height: 24px; color: #8493a8; cursor: pointer; }
.tc-jv-create ul.tabs li i { display: none; }
.tc-jv-create ul.tabs li.active { color: #2a3648; border-bottom-color: #006b70; }
.tc-jv-create .ui-contract-settings-tab.box { background: #ffffff; border: 1px solid #e8ecef; border-radius: 12px; box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); padding: 24px; margin: 0 0 32px; }
.tc-jv-create .ui-contract-settings-tab.hidden { display: none; }
.tc-jv-create label { display: block; font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 500; line-height: 20px; color: #2b384a; margin: 0 0 4px; }
.tc-jv-create input[type="text"], .tc-jv-create input[type="email"], .tc-jv-create input[type="number"], .tc-jv-create input[type="search"] {
	height: 40px; width: 100%; padding: 8px 12px; border: 1px solid #d1d7de; border-radius: 8px;
	font-family: 'Inter', sans-serif; font-size: 14px; line-height: 20px; color: #364152; background: #ffffff; box-shadow: none;
}
.tc-jv-create input::placeholder { color: #afbbc9; }
.tc-jv-create select {
	-webkit-appearance: none; -moz-appearance: none; appearance: none;
	height: 40px; width: 100%; padding: 8px 34px 8px 12px;
	background: #ffffff url("/static/icons/affiliates/select-chevron.svg") no-repeat right 13px center; background-size: 8px 4.94px;
	border: 1px solid #d1d7de; border-radius: 8px; font-family: 'Inter', sans-serif; font-size: 14px; line-height: 20px; color: #2b384a; cursor: pointer; box-shadow: none;
}
.tc-jv-create .ui-contract-settings-tab h2 { font-family: 'Inter', sans-serif; font-size: 18px; font-weight: 600; line-height: 24px; color: #364152; margin: 0 0 16px; }
/* Edit-mode legacy heading is replaced by the breadcrumb + title header. */
.tc-jv-create > .content-subhead, .tc-jv-create > .content-subhead + p { display: none; }
.tc-jv-create .pure-button.button-primary { background: #006b70; border: 1px solid #006b70; border-radius: 8px; color: #fff; box-shadow: none; font-family: 'Inter', sans-serif; font-weight: 500; }
.tc-jv-create .pure-button.button-primary:hover { background: #00868c; border-color: #00868c; }
.tc-jv-create .pure-button.button-secondary { background: #fff; border: 1px solid #e8ecef; border-radius: 8px; color: #364152; box-shadow: none; font-family: 'Inter', sans-serif; font-weight: 500; }

/* JV Create — tab specificity (beat legacy .box-tabbed .tabs) + wizard nav buttons. */
.tc-jv-create .tc-jv-head { margin-bottom: 32px; }
.tc-jv-create .box-tabbed .tabs { display: flex; gap: 32px; align-items: center; margin: 0 0 32px; padding: 0; border-bottom: 0; background: transparent; }
.tc-jv-create .box-tabbed .tabs li { float: none; list-style: none; background: transparent; border: 0; border-radius: 4px; margin: 0; padding: 8px; font-family: 'Inter', sans-serif; font-size: 16px; font-weight: 500; line-height: 24px; color: #8493a8; cursor: pointer; }
.tc-jv-create .box-tabbed .tabs li i { display: none; }
.tc-jv-create .box-tabbed .tabs li.active { color: #2a3648; background: #e8ecef; border: 0; border-radius: 4px; }
.tc-jv-create .pure-button.button-dark, .tc-jv-create .pure-button.button-inverse { background: #ffffff; border: 1px solid #e8ecef; border-radius: 8px; color: #364152; box-shadow: none; font-family: 'Inter', sans-serif; font-weight: 500; }

/* JV Create tabs — field layouts + product rows + percentages (Figma 1468:10084). */
/* Field rows: labels above already; make the pure-g/autolayout rows a 2-col grid. */
.tc-jv-create .ui-contract-settings-tab .row { margin: 0 0 16px; }
.tc-jv-create .ui-contract-settings-tab .pure-g.row { display: flex; flex-wrap: wrap; gap: 16px; margin: 0 0 16px; }
.tc-jv-create .ui-contract-settings-tab .pure-g.row > [class*="pure-u"] { float: none; width: auto; padding: 0; margin: 0; flex: 1 1 calc(50% - 8px); min-width: 0; }
.tc-jv-create .ui-contract-settings-tab .pure-g.row > .pure-u-1 { flex-basis: 100%; }
/* Partner-info company field (3rd) spans full width per Figma. */
.tc-jv-create #ui-contract-settings-tab-basic .pure-g.row > .pure-u-1-3:nth-child(3) { flex-basis: 100%; }
/* Contract-settings 2-col autolayout. */
.tc-jv-create .autolayout.autolayout-justify { display: flex; gap: 16px; margin: 0 0 16px; }
.tc-jv-create .autolayout.autolayout-justify > .autolayout-column { flex: 1 1 0; min-width: 0; }
.tc-jv-create .autolayout.autolayout-justify > .autolayout-column .row { margin: 0; }
.tc-jv-create .ui-contract-settings-tab input.width-100 { width: 100%; }

/* Included-products tab — product rows as selectable cards (Figma Checkbox Group). */
.tc-jv-create #ui-contract-settings .products-list-list { display: flex; flex-direction: column; gap: 12px; margin-top: 12px; max-height: 540px; }
.tc-jv-create #ui-contract-settings .box-list-product-row {
	display: flex; align-items: center; gap: 8px;
	background: #ffffff; border: 1px solid #d1d7de; border-radius: 8px;
	padding: 18px 16px; margin: 0; float: none; width: auto; overflow: visible;
}
.tc-jv-create #ui-contract-settings .box-list-product-row::after { display: none; }
.tc-jv-create #ui-contract-settings .box-list-product-row .checkbox { flex: 1 1 auto; display: flex; align-items: center; gap: 8px; margin: 0; padding: 0; min-height: 0; }
.tc-jv-create #ui-contract-settings .box-list-product-row .checkbox label { order: 1; flex: 0 1 auto; display: inline-flex; align-items: center; margin: 0; padding-left: 0 !important; min-height: 0; }
.tc-jv-create #ui-contract-settings .box-list-product-row .checkbox label::before, .tc-jv-create #ui-contract-settings .box-list-product-row .checkbox label::after { display: none; content: none; }
.tc-jv-create #ui-contract-settings .box-list-product-row .ui-search-name { display: inline-flex; align-items: center; padding: 0; margin: 0; font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 500; line-height: 20px; color: #2a3648; }
.tc-jv-create #ui-contract-settings .box-list-product-row .checkbox input[type="checkbox"] { order: 3; display: inline-block; appearance: none; -webkit-appearance: none; position: static; width: 16px; height: 16px; min-height: 0; flex: 0 0 auto; align-self: flex-start; margin: 0 0 0 auto; border: 1px solid #d1d7de; border-radius: 4px; background: #ffffff; opacity: 1; cursor: pointer; box-shadow: none; }
.tc-jv-create #ui-contract-settings .box-list-product-row .checkbox input[type="checkbox"]:checked { background: url("/static/icons/affiliates/check-white.svg") center center / 8px 6px no-repeat #006b70; border-color: #006b70; }
.tc-jv-create #ui-contract-settings .box-list-product-row .ribbon { order: 2; display: inline-flex; align-items: center; line-height: 16px; position: static; transform: none; top: auto; right: auto; left: auto; width: auto; height: auto; padding: 4px 8px; background: #c6f6d5; border-radius: 8px; box-shadow: none; }
.tc-jv-create #ui-contract-settings .box-list-product-row .ribbon span { display: inline-flex; font-family: 'Inter', sans-serif; font-size: 12px; font-weight: 500; line-height: 16px; color: #364152; text-transform: none; letter-spacing: 0; }
.tc-jv-create #ui-contract-settings .box-list-product-row:has(input:checked) { border: 2px solid #006b70; padding: 17px 15px; }
.tc-jv-create #ui-contract-settings .box-list-product-row .checkbox, .tc-jv-create #ui-contract-settings .box-list-product-row .checkbox label { cursor: pointer; }
.tc-jv-create #ui-contract-settings .ui-contract-access-global_wrap input[type="checkbox"] { width: 16px; height: 16px; accent-color: #006b70; margin: 0; flex-shrink: 0; }
.tc-jv-create .ui-contract-settings-tab-permissions-prefix { font-family: 'Inter', sans-serif; font-size: 16px; font-weight: 600; line-height: 24px; color: #364152; margin: 0 0 16px; }

/* Percentages tab — blue info banner + percentage fields. */
.tc-jv-create .ui-contract-commissions-defaults > p:first-child {
	display: flex; align-items: flex-start; gap: 8px;
	background: #bee3f8; border-radius: 8px; padding: 16px; margin: 0 0 16px;
	font-family: 'Inter', sans-serif; font-size: 16px; font-weight: 400; line-height: 24px; color: #364152;
}
.tc-jv-create .ui-contract-commissions-defaults > p:first-child::before {
	content: ''; width: 32px; height: 32px; flex-shrink: 0;
	background: url("/static/icons/contracts/banner-info.svg") no-repeat center; background-size: 26.67px 26.67px;
}
.tc-jv-create .ui-contract-commissions-defaults ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.tc-jv-create .ui-contract-commissions-defaults ul > li { flex: none; width: auto; max-width: none; min-width: 0; margin: 0; }
.tc-jv-create .ui-contract-commissions-defaults ul > li.hidden { display: none; }
.tc-jv-create .ui-contract-commissions-defaults ul > li label { display: block; margin: 0 0 4px; font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 500; line-height: 20px; color: #2b384a; }
.tc-jv-create .ui-contract-commissions-defaults .input-pill { display: block; width: 100%; }
.tc-jv-create .ui-contract-commissions-defaults .input-pill input { width: 100%; padding-right: 3em; }
.tc-jv-create .ui-contract-commissions-defaults .input-pill em { background: #f6f8f9; border-left: 1px solid #d1d7de; border-top-right-radius: 8px; border-bottom-right-radius: 8px; color: #364152; font-family: 'Inter', sans-serif; }
.tc-jv-create .ui-contract-commissions-defaults > p:first-child { align-items: center; }
.tc-jv-create .ui-contract-commissions-defaults .tc-jv-banner-close { flex-shrink: 0; margin-left: auto; width: 32px; height: 32px; padding: 8px; border: 0; border-radius: 6px; background: url("/static/icons/contracts/banner-close.svg") no-repeat center; background-size: 16px 16px; cursor: pointer; opacity: 0.7; }
.tc-jv-create .ui-contract-commissions-defaults .tc-jv-banner-close:hover { opacity: 1; background-color: rgba(0, 0, 0, 0.05); }
/* "Enter default percentages" reads as the subcategory heading; the "You have selected N" banner sits under it. */
.tc-jv-create .ui-contract-commissions-defaults { display: flex; flex-direction: column; }
.tc-jv-create .ui-contract-commissions-defaults > p:first-child { order: 2; }
.tc-jv-create .ui-contract-commissions-defaults > p:nth-of-type(2) { order: 1; margin: 0 0 8px; font-family: 'Inter', sans-serif; font-size: 16px; font-weight: 600; line-height: 24px; color: #364152; }
.tc-jv-create .ui-contract-commissions-defaults > ul { order: 3; }
.tc-jv-create .ui-contract-commissions-defaults > .callout { order: 4; }
.tc-jv-create .ui-contract-commissions-defaults .tc-jv-info-icon { display: inline-block; width: 16px; height: 16px; margin-left: 4px; vertical-align: middle; background: url("/static/icons/affiliates/seg-info.svg") no-repeat center; background-size: 16px 16px; }

/* Footer wizard buttons (Back / Create Contract). */
.tc-jv-create .box-footer, .tc-jv-create .content-footer { display: flex; align-items: center; justify-content: flex-end; gap: 12px; padding: 16px 0 0; margin-top: 16px; border-top: 1px solid #e8ecef; }

/* Create wizard nav buttons — Back secondary, Next/Create primary teal. */
.tc-jv-create .pure-button.button-back-grey { background: #ffffff; border: 1px solid #e8ecef; border-radius: 8px; color: #364152; box-shadow: none; font-family: 'Inter', sans-serif; font-weight: 500; }
.tc-jv-create .pure-button.button-back-grey:hover { background: #f6f8f9; }
.tc-jv-create .pure-button.button-success { background: #006b70; border: 1px solid #006b70; border-radius: 8px; color: #ffffff; box-shadow: none; font-family: 'Inter', sans-serif; font-weight: 500; }
.tc-jv-create .pure-button.button-success:hover { background: #00868c; border-color: #00868c; }

/* JV Payouts modals — reskin alertify dialogs while on a JV page (tc-jv-reskin body class). */
body.tc-jv-reskin .alertify .ajs-dialog { border-radius: 12px; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15); padding: 24px; font-family: 'Inter', sans-serif; color: #364152; }
body.tc-jv-reskin .alertify .ajs-header { border: 0; background: transparent; margin: 0; padding: 0 0 8px; font-family: 'Inter', sans-serif; font-size: 20px; font-weight: 600; line-height: 28px; color: #364152; }
body.tc-jv-reskin .alertify .ajs-body .ajs-content { padding: 0; font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 400; line-height: 20px; color: #8493a8; }
body.tc-jv-reskin .alertify .ajs-footer { border: 0; background: transparent; margin: 0; padding: 16px 0 0; }
body.tc-jv-reskin .alertify .ajs-footer .ajs-buttons .ajs-button { border-radius: 8px; padding: 8px 18px; font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 500; line-height: 20px; text-transform: none; box-shadow: none; margin: 0 0 0 8px; min-height: 36px; }
body.tc-jv-reskin .alertify .ajs-footer .ajs-buttons .ajs-ok { background: #006b70; border: 1px solid #006b70; color: #ffffff; }
body.tc-jv-reskin .alertify .ajs-footer .ajs-buttons .ajs-ok:hover { background: #00868c; border-color: #00868c; }
body.tc-jv-reskin .alertify .ajs-footer .ajs-buttons .ajs-cancel { background: #ffffff; border: 1px solid #e8ecef; color: #364152; }
body.tc-jv-reskin .alertify .ajs-footer .ajs-buttons .ajs-cancel:hover { background: #f6f8f9; }
/* Radio option cards (Pay manual earnings). */
body.tc-jv-reskin .alertify .ajs-content label.pure-radio,
body.tc-jv-reskin .alertify .ajs-content .pure-radio { display: flex; align-items: flex-start; gap: 12px; border: 1px solid #d1d7de; border-radius: 8px; padding: 16px; margin: 0 0 12px; cursor: pointer; color: #364152; }
body.tc-jv-reskin .alertify .ajs-content label.pure-radio.checked,
body.tc-jv-reskin .alertify .ajs-content .pure-radio input:checked ~ * { border-color: #006b70; }

/* Modal footer buttons live directly in .ajs-footer (no .ajs-buttons wrapper) + teal radio accent. */
body.tc-jv-reskin .alertify .ajs-footer button.ajs-ok { background: #006b70; border: 1px solid #006b70; color: #ffffff; border-radius: 8px; box-shadow: none; }
body.tc-jv-reskin .alertify .ajs-footer button.ajs-ok:hover { background: #00868c; border-color: #00868c; }
body.tc-jv-reskin .alertify .ajs-footer button.ajs-cancel { background: #ffffff; border: 1px solid #e8ecef; color: #364152; border-radius: 8px; box-shadow: none; }
body.tc-jv-reskin .alertify .ajs-footer button.ajs-cancel:hover { background: #f6f8f9; }
body.tc-jv-reskin .alertify .ajs-content input[type="radio"] { accent-color: #006b70; }
body.tc-jv-reskin .alertify .ajs-content .active { border-color: #006b70; }
/* Legacy .radio-primary draws the checked dot via label::before in brand purple — recolour to teal. */
body.tc-jv-reskin .alertify .radio.radio-primary input[type="radio"]:checked + label::before { border-color: #006b70; }

/* Masspay control-bar buttons + status dropdown (Upcoming/Completed). */
.tc-jv-page #contracts-payouts-masspay-actions .pure-button.button-success { background: #006b70; border: 1px solid #006b70; border-radius: 8px; color: #ffffff; box-shadow: none; font-family: 'Inter', sans-serif; font-weight: 500; }
.tc-jv-page #contracts-payouts-masspay-actions .pure-button.button-success:hover { background: #00868c; border-color: #00868c; }
.tc-jv-page #contracts-payouts-masspay-actions .pure-button.button-error { background: #ffffff; border: 1px solid #e8ecef; border-radius: 8px; color: #d13f36; box-shadow: none; font-family: 'Inter', sans-serif; font-weight: 500; }
.tc-jv-page #contracts-payouts-masspay-actions .pure-button.button-error:hover { background: #fef2f2; }
.tc-jv-page .tc-jv-toolbar .tc-jv-pill select {
	-webkit-appearance: none; -moz-appearance: none; appearance: none;
	height: 32px; padding: 6px 30px 6px 12px;
	background: #ffffff url("/static/icons/affiliates/select-chevron.svg") no-repeat right 12px center; background-size: 8px 4.94px;
	border: 1px solid #d1d7de; border-radius: 6px;
	font-family: 'Inter', sans-serif; font-size: 14px; line-height: 16px; color: #364152; box-shadow: none; cursor: pointer; margin: 0;
}

/* Rule card Save/Remove inline controls + uneditable note. */
.tc-jv-page #view-contracts-rules .ui-autoresponder-control { display: inline-flex; align-items: center; gap: 6px; padding: 8px 12px; border-radius: 8px; font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 500; line-height: 16px; cursor: pointer; box-shadow: none; justify-self: end; }
.tc-jv-page #view-contracts-rules .ui-autoresponder-save { background: #006b70; color: #ffffff; border: 1px solid #006b70; }
.tc-jv-page #view-contracts-rules .ui-autoresponder-kill { background: #ffffff; color: #d13f36; border: 1px solid #e8ecef; }
.tc-jv-page #view-contracts-rules .ui-uneditable { grid-column: 1 / -1; display: flex; align-items: center; gap: 8px; background: #f6f8f9; border-radius: 8px; padding: 12px 16px; font-family: 'Inter', sans-serif; font-size: 14px; color: #8493a8; margin: 0; }
/* Collapsed rule header → card title + Edit button. */
.tc-jv-page #view-contracts-rules .ui-autoresponder-block-description .generic-list-name > span { font-family: 'Inter', sans-serif; font-size: 16px; font-weight: 600; line-height: 24px; color: #364152; }
.tc-jv-page #view-contracts-rules .ui-autoresponder-block-description .generic-list-actions .pure-button { background: #ffffff; border: 1px solid #e8ecef; border-radius: 6px; color: #364152; box-shadow: none; font-family: 'Inter', sans-serif; font-weight: 500; }
/* In the collapsed (minimised) rule card the block-description is just the title
   row inside the outer card — its border belongs to the expanded editing state
   only. Keep it invisible when minimised, including on hover, so no stray inner
   box border appears. */
.tc-jv-page #view-contracts-rules .ui-autoresponder-row.ui-minimised .ui-autoresponder-block-description,
.tc-jv-page #view-contracts-rules .ui-autoresponder-row.ui-minimised .ui-autoresponder-block-description:hover { border-color: transparent; background-color: transparent; }

/* Rules card → match Figma 1607:9533 (mirrors the affiliate rules treatment).
   Remove becomes a red text-link pinned to the card's top-right; the element and
   its JS handler are untouched — only its chrome + position change. The per-card
   Save stays (it is the collapse/confirm control, not a duplicate persist). */
.tc-jv-page #view-contracts-rules .ui-autoresponder-row { position: relative; }
.tc-jv-page #view-contracts-rules .ui-autoresponder-row .ui-autoresponder-kill {
	position: absolute;
	top: 24px;
	right: 24px;
	z-index: 1;
	display: inline-flex;
	align-items: center;
	width: auto;
	height: auto;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	font-family: 'Inter', -apple-system, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #e02d3c;
	cursor: pointer;
}
.tc-jv-page #view-contracts-rules .ui-autoresponder-row .ui-autoresponder-kill .fa { display: none; }
.tc-jv-page #view-contracts-rules .ui-autoresponder-row .ui-autoresponder-kill:hover { color: #b30606; box-shadow: none; }
/* Per-card Save hidden (Figma has no per-card save; page-level "Save contract
   rules" persists). Element + handler stay in the DOM — the add/edit flow still
   triggers it to collapse open rows — only the manual button is hidden. */
.tc-jv-page #view-contracts-rules .ui-autoresponder-row .ui-autoresponder-save { display: none; }

/* Create single-page — section titles + section spacing + footer row. */
.tc-jv-create .tc-jv-section-title { font-family: 'Inter', sans-serif; font-size: 20px; font-weight: 600; line-height: 28px; color: #364152; margin: 0 0 24px; }
.tc-jv-create .ui-contract-settings-tab.box { margin: 0 0 32px; }
.tc-jv-create .pure-controls.controls-fluid { display: flex; align-items: center; justify-content: flex-end; gap: 12px; padding: 16px 0 0; margin: 0; border-top: 1px solid #e8ecef; background: transparent; }
.tc-jv-create .pure-controls.controls-fluid .pure-button { display: inline-flex; align-items: center; height: 36px; padding: 8px 18px; margin: 0; }

/* Create — inputs + labels match the Figma text-field. */
.tc-jv-create #ui-contract-settings input[type="text"], .tc-jv-create #ui-contract-settings input[type="email"], .tc-jv-create #ui-contract-settings input[type="number"], .tc-jv-create #ui-contract-settings select { border: 1px solid #d1d7de; border-radius: 8px; padding: 8px 12px; font-family: 'Inter', sans-serif; font-size: 14px; line-height: 20px; color: #364152; box-shadow: none; height: auto; min-height: 38px; }
.tc-jv-create #ui-contract-settings input.ui-search-field { background: #ffffff url("/static/icons/affiliates/search.svg") no-repeat 12px center; background-size: 16px 16px; padding-left: 38px; }
.tc-jv-create #ui-contract-settings label { font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 500; line-height: 20px; color: #2b384a; }

/* Create — Contract settings as a 2-col grid (name | begin, duration | pay). */
.tc-jv-create .ui-contract-settings-tab[data-section="settings"] { display: grid; grid-template-columns: 1fr 1fr; column-gap: 16px; row-gap: 16px; align-items: start; }
.tc-jv-create .ui-contract-settings-tab[data-section="settings"] > .tc-jv-section-title { grid-column: 1 / -1; }
.tc-jv-create .ui-contract-settings-tab[data-section="settings"] > .row, .tc-jv-create .ui-contract-settings-tab[data-section="settings"] > .autolayout { margin: 0; }
.tc-jv-create .ui-contract-settings-tab[data-section="settings"] > .autolayout { display: block; width: 100% !important; max-width: 100% !important; box-sizing: border-box; }
.tc-jv-create .ui-contract-settings-tab[data-section="settings"] > .autolayout > .autolayout-column { max-width: none; width: 100%; padding-left: 0; padding-right: 0; }

/* JV Partners — mobile (≤767px). Follows the established Dashboard/Transactions
   reskin mobile pattern: overflow-x clip, full-width 16px gutters, stacked cards,
   scroll-pill tabs, 44px touch targets, tap-scale feedback. */
@media (max-width: 767px) {
	html, body.root { overflow-x: clip; }
	.tc-jv-page, .tc-jv-create { max-width: 100%; padding: 0 16px 24px; overflow-x: clip; }

	/* Header stacks; every control full-width. NOTE the .tc-jv-page prefix — the
	   desktop rules are .tc-jv-page-scoped (0,2,0), so unprefixed overrides lose
	   and the search stayed a narrow centered box. */
	.tc-jv-page .tc-jv-head { flex-direction: column; align-items: stretch; gap: 12px; margin: 16px 0; }
	.tc-jv-page .tc-jv-title { font-size: 24px; font-weight: 600; color: #2a3648; }
	.tc-jv-page .tc-jv-breadcrumb, .tc-jv-page .tc-jv-breadcrumb a { font-size: 12px; }
	/* Create page: header is a back-arrow bar — the back-link becomes the arrow. */
	.tc-jv-create .tc-jv-head { flex-direction: row; align-items: center; justify-content: flex-start; gap: 12px; margin: 0 -16px; padding: 16px; background: #fff; border-bottom: 1px solid #e8ecef; }
	.tc-jv-create .tc-jv-head-left { display: contents; }
	.tc-jv-create .tc-jv-breadcrumb { margin: 0; }
	.tc-jv-create .tc-jv-breadcrumb a { display: block; width: 20px; height: 20px; font-size: 0; background: url("/static/icons/jv/arrow-left.svg") no-repeat center; background-size: 20px 20px; }
	.tc-jv-create .tc-jv-breadcrumb-sep { display: none; }
	.tc-jv-create .tc-jv-title { font-size: 24px; font-weight: 500; line-height: 32px; color: #2a3648; }
	/* Create page = grey canvas with white section cards, no tab strip. */
	body:has(.tc-jv-create), body:has(.tc-jv-create) #layout { background: #f6f8f9; }
	.tc-jv-create .box-tabbed .tabs { display: none; }
	.tc-jv-create .box.box-tabbed.box-invisible { background: transparent; border: 0; box-shadow: none; padding: 16px 0 0; }
	/* Text inputs are 48 tall (Figma _Input_Base py-14); legacy pure-form pins them to 38. */
	.tc-jv-create .box.ui-contract-settings-tab input[type="text"],
	.tc-jv-create .box.ui-contract-settings-tab input[type="email"],
	.tc-jv-create .box.ui-contract-settings-tab input[type="search"],
	.tc-jv-create .box.ui-contract-settings-tab input:not([type]) { height: 48px !important; min-height: 48px !important; padding: 14px 12px !important; box-sizing: border-box; }
	/* Product search is the 40px search bar, not a 48px field — icon stays left. */
	.tc-jv-create #products-list-search-field { height: 40px !important; min-height: 40px !important; padding: 10px 12px 10px 36px !important; background-image: url("/static/icons/jv/search.svg") !important; background-position: 12px center !important; background-size: 16px 16px !important; }
	/* !important counters the legacy helpers.css `.padding-full { padding: !important }`. */
	.tc-jv-create .box.padding-full.ui-contract-settings-tab { display: block; background: #fff; border: 1px solid #e8ecef; border-radius: 12px; padding: 16px !important; margin: 0 0 24px; box-shadow: none; }
	/* Section heading + labels are 16 on mobile. */
	.tc-jv-create .tc-jv-section-title { font-size: 16px; font-weight: 500; line-height: 24px; color: #2a3648; margin: 0 0 16px; }
	/* The product-question heading is Medium #2a3648 like the other section titles. */
	.tc-jv-create .ui-contract-settings-tab-permissions-prefix { font-weight: 500; color: #2a3648; }
	.tc-jv-create #ui-contract-settings label { font-size: 16px; line-height: 24px; margin-bottom: 6px; }
	.tc-jv-page .tc-jv-head-controls { flex-direction: column; align-items: stretch; gap: 8px; width: 100%; }
	.tc-jv-page .tc-jv-head-search { width: 100%; box-sizing: border-box; }
	.tc-jv-page .tc-jv-head-search input { flex: 1 1 auto; min-width: 0; width: 100%; }
	.tc-jv-page .tc-jv-head-divider { display: none; }
	.tc-jv-page .tc-jv-head-controls .ui-contract-create { width: 100%; justify-content: center; min-height: 32px; height: 32px; padding: 8px; border-radius: 6px; font-size: 14px; line-height: 16px; -webkit-tap-highlight-color: transparent; }
	.tc-jv-page .tc-jv-head-controls .ui-contract-create:active { transform: scale(0.98); }

	.tc-jv-page .box-tabbed .tabs.tabs-anchor { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; gap: 32px; margin: 0 0 20px; }
	.tc-jv-page .box-tabbed .tabs.tabs-anchor::-webkit-scrollbar { display: none; }
	.tc-jv-page .tabs.tabs-anchor li { flex: 0 0 auto; }
	.tc-jv-page .tabs.tabs-anchor li a { white-space: nowrap; padding: 8px; -webkit-tap-highlight-color: transparent; }
	.tc-jv-page .tabs.tabs-anchor li a:active { transform: scale(0.98); }

	.tc-jv-page .tc-jv-kpis { margin: 0 0 24px; }
	.tc-jv-page .tc-jv-kpi-list { flex-direction: column; gap: 20px; }
	.tc-jv-page .tc-jv-kpi-list > * { padding: 16px; gap: 16px; justify-content: center; min-width: 0; }

	/* Toolbar: clean stacked layout (mirrors the affiliate list). Search full-
	   width; Clear/Search/Sort in one equal row; Filter+Download group below. */
	.tc-jv-page .tc-jv-toolbar { flex-direction: column; align-items: stretch; gap: 10px; }
	.tc-jv-page .tc-jv-toolbar-right { display: flex; flex-flow: row wrap; gap: 12px 4px; align-items: stretch; }
	.tc-jv-page .tc-jv-toolbar-right > * { -webkit-tap-highlight-color: transparent; min-height: 36px; }
	.tc-jv-page .tc-jv-toolbar-right > .tc-jv-table-search { flex: 1 1 100%; width: 100%; gap: 12px; padding: 14px 12px; border-radius: 8px; }
	.tc-jv-page .tc-jv-toolbar .tc-jv-table-search input { min-width: 100%; width: 100%; box-sizing: border-box; min-height: 20px; font-size: 14px; line-height: 20px; }
	.tc-jv-page .tc-jv-toolbar-right > button,
	.tc-jv-page .tc-jv-toolbar-right > .tc-jv-btn-secondary,
	.tc-jv-page .tc-jv-toolbar-right > .tc-jv-btn-primary { flex: 1 1 calc(33.333% - 6px); justify-content: center; }
	/* Sort auto-width, group fills the row; don't set display/gap on the group or the desktop inline-flex join breaks. */
	.tc-jv-page .tc-jv-toolbar-right > .tc-jv-btn-sort { flex: 0 0 auto; padding: 10px 18px; border-radius: 8px; }
	/* The status pill (not in the design) gets its own row so Sort + Filter/Download share one row. */
	.tc-jv-page .tc-jv-toolbar-right > .tc-jv-pill { flex: 1 1 100%; width: 100%; }
	.tc-jv-page .tc-jv-toolbar-right > .tc-jv-pill select { width: 100%; box-sizing: border-box; }
	.tc-jv-page .tc-jv-toolbar-right > .tc-jv-btngroup { flex: 1 1 0; }
	.tc-jv-page .tc-jv-toolbar-right > .tc-jv-btngroup > * { flex: 1 1 0; justify-content: center; }
	.tc-jv-page .tc-jv-toolbar-right .tc-jv-btngroup-seg { font-size: 12px; }
	/* Group icons are the smaller 12px-box variant on mobile (Figma). */
	.tc-jv-page .tc-jv-btngroup-seg .tc-jv-ico-filter,
	.tc-jv-page .tc-jv-btngroup-seg .tc-jv-ico-csv { width: 12px; height: 12px; }
	.tc-jv-page .tc-jv-btngroup-seg .tc-jv-ico-filter { background-size: 9px 6px; }
	.tc-jv-page .tc-jv-btngroup-seg .tc-jv-ico-csv { background-size: 8px 8px; }
	/* Filter/Download segments are white, h36, tighter padding on mobile. */
	.tc-jv-page .tc-jv-toolbar-right .tc-jv-btngroup-seg { background: #ffffff; min-height: 36px; }
	.tc-jv-page .tc-jv-toolbar-right .tc-jv-btngroup-seg--filter { padding: 6px 9px; }
	.tc-jv-page .tc-jv-toolbar-right .tc-jv-btngroup-seg--download { padding: 6px 9px 6px 8px; }
	/* Sort / Filter dropdown panels: stack controls full-width (Descending was
	   truncated in a tight 2-col row) — mirrors the affiliate treatment. */
	.tc-jv-page .contracts-sort .pure-form,
	.tc-jv-page .tc-jv-sort-panel .pure-form { flex-direction: column; align-items: stretch; gap: 8px; width: 100%; }
	.tc-jv-page .contracts-sort select,
	.tc-jv-page .tc-jv-sort-panel select,
	.tc-jv-page .tc-jv-filter-panel select { width: 100%; min-width: 100%; box-sizing: border-box; min-height: 44px; }
	/* The list "Filter" toggle doesn't open a panel — it injects the contract
	   type + status selects (#contracts-list-filters-refine-*) straight into the
	   toolbar-right flex row, where they render ~106px wide and crowd the Clear/
	   Search buttons. Give each refine control its own full-width row. */
	.tc-jv-page .tc-jv-toolbar-right > [id^="contracts-list-filters-refine"] { flex: 1 1 100%; width: 100%; }
	.tc-jv-page .tc-jv-toolbar-right [id^="contracts-list-filters-refine"] select,
	.tc-jv-page .tc-jv-toolbar-right select[id^="contracts-list-filters-refine"] { width: 100%; min-width: 100%; box-sizing: border-box; min-height: 44px; }

	/* Payouts subtabs row = [Automatic/Manual toggle] + [action button]; stack
	   them, then make the action button full-width. Do NOT use [class*="masspay"]
	   here — it matched the .ui-masspay BUTTONS and set flex-direction:column,
	   which stacked each button's icon above its label. */
	.tc-jv-page .tc-jv-subtabs-row { flex-direction: column; align-items: stretch; gap: 20px; margin-bottom: 20px; }
	.tc-jv-page .tc-jv-subtabs-row .pure-button, .tc-jv-page .tc-jv-subtabs-row button { width: 100%; justify-content: center; min-height: 44px; }
	.tc-jv-page .tc-jv-po-massbtns { width: 100%; }
	.tc-jv-page .tc-jv-po-massbtns .tc-jv-btn-primary,
	.tc-jv-page .tc-jv-po-massbtns .pure-button,
	.tc-jv-page .tc-jv-po-massbtns .ui-masspay { display: inline-flex; flex-direction: row; align-items: center; justify-content: center; gap: 4px; width: 100%; min-height: 0; height: 32px; padding: 8px; border-radius: 6px; font-size: 14px; line-height: 16px; box-sizing: border-box; }
	/* Mobile primary buttons are text-only — drop the pay icon. */
	.tc-jv-page .tc-jv-po-massbtns .tc-jv-ico-pay { display: none; }

	/* Mass-pay selection bar (#contracts-payouts-masspay-actions): desktop packs
	   "Select all", the "Selected payouts: N" count, "Pay selected" and "Cancel"
	   into one nowrap row. On a phone the count+Pay group is a floated 124px box
	   so everything collides. Rebuild as a clean stacked bar: Select all, then
	   the count, then full-width Pay selected and Cancel. */
	.tc-jv-page #contracts-payouts-masspay-actions.control-bar { flex-direction: column; align-items: stretch; gap: 10px; }
	.tc-jv-page #contracts-payouts-masspay-actions.control-bar > .checkbox { order: 1; margin: 0; }
	.tc-jv-page #contracts-payouts-masspay-actions.control-bar > .pull-right { order: 2; float: none; width: 100%; display: flex; flex-direction: column; align-items: stretch; gap: 8px; }
	.tc-jv-page #contracts-payouts-masspay-actions.control-bar > .pull-right > p { margin: 0; }
	.tc-jv-page #contracts-payouts-masspay-actions.control-bar > .pull-right > .pure-button { width: 100%; justify-content: center; min-height: 44px; margin: 0; }
	.tc-jv-page #contracts-payouts-masspay-actions.control-bar > .pure-button.button-error { order: 3; width: 100%; justify-content: center; min-height: 44px; margin: 0; }

	/* Rules — expanded edit form. Desktop lays it out as a 2-col grid that crams
	   every dropdown + the HTML textarea into two narrow columns. On a phone:
	   single column, every control full-width. */
	.tc-jv-page #view-contracts-rules .ui-autoresponder-row .ui-autoresponder-content { grid-template-columns: 1fr; }
	/* Every field/block spans the single column, left-aligned, no float — so the
	   nested provider select and the "submit HTML form" block stop overflowing. */
	.tc-jv-page #view-contracts-rules .ui-autoresponder-row .ui-autoresponder-content > *,
	.tc-jv-page #view-contracts-rules .ui-autoresponder-row .ui-autoresponder-content .ui-autoresponder-block,
	.tc-jv-page #view-contracts-rules .ui-autoresponder-row .ui-autoresponder-content .ui-autoresponder-provider-block,
	.tc-jv-page #view-contracts-rules .ui-autoresponder-row .ui-autoresponder-content .ui-autoresponder-blocked { min-width: 0; width: 100%; flex: 1 1 100%; grid-column: 1 / -1; float: none; margin-left: 0; justify-self: stretch; box-sizing: border-box; }
	.tc-jv-page #view-contracts-rules .ui-autoresponder-row .ui-autoresponder-content select { width: 100%; min-width: 100%; margin-left: 0; box-sizing: border-box; min-height: 44px; }
	.tc-jv-page #view-contracts-rules .ui-autoresponder-row .ui-autoresponder-content .ui-autoresponder-provider-block select { margin-left: 0; }
	.tc-jv-page #view-contracts-rules .ui-autoresponder-row .ui-autoresponder-content textarea { width: 100%; box-sizing: border-box; }
	/* Keep the Remove link a compact top-right link on mobile — the full-width
	   `> *` rule above otherwise stretches this absolutely-positioned element to
	   100% and its left edge overflows the card. */
	.tc-jv-page #view-contracts-rules .ui-autoresponder-row .ui-autoresponder-kill { width: auto; flex: none; }

	/* Rules empty state: bigger 18px title, 24px inbox icon, "+ Add rule". */
	.tc-jv-page #ui-autoresponder-empty { padding: 40px; }
	.tc-jv-page #ui-autoresponder-empty::before { width: 24px; height: 24px; background-size: 24px 24px; margin: 0 auto 16px; }
	.tc-jv-page #ui-autoresponder-empty h2 { font-size: 18px; line-height: 26px; color: #2a3648; margin: 0 0 4px; }
	.tc-jv-page #ui-autoresponder-empty p { font-size: 13px; margin: 0 auto; }
	.tc-jv-page #ui-autoresponder-empty .ui-autoresponder-add { margin-top: 20px; padding: 8px 12px; }
	.tc-jv-page #ui-autoresponder-empty .ui-autoresponder-add i { display: inline-block; width: 20px; height: 20px; font-size: 0; background: url("/static/icons/jv/plus.svg") no-repeat center; background-size: 11.67px 11.67px; }

	/* Rules edit form: 20px card padding, 16px labels, 48px selects, red Remove. */
	.tc-jv-page .ui-autoresponder-row { padding: 20px; }
	.tc-jv-page #view-contracts-rules .ui-autoresponder-row .tc-jv-rule-title { font-weight: 500; color: #2a3648; margin: 0 0 16px; }
	.tc-jv-page #view-contracts-rules .ui-autoresponder-row .ui-autoresponder-content { gap: 12px; }
	.tc-jv-page #view-contracts-rules .ui-autoresponder .ui-autoresponder-product-selector-wrap > div:first-child,
	.tc-jv-page #view-contracts-rules .ui-autoresponder .ui-autoresponder-action-selector-wrap > div:first-child,
	.tc-jv-page #view-contracts-rules .ui-autoresponder .ui-autoresponder-method-selector-wrap > div:first-child,
	.tc-jv-page #view-contracts-rules p.ui-autoresponder-html-post { font-size: 16px; line-height: 24px; color: #2a3648; }
	.tc-jv-page #view-contracts-rules .ui-autoresponder-content select { height: 48px; padding: 14px 34px 14px 12px; box-sizing: border-box; }
	/* Remove = plain red text + trash icon (Figma), not a bordered button. */
	.tc-jv-page #view-contracts-rules .ui-autoresponder-row .ui-autoresponder-kill { display: inline-flex; align-items: center; gap: 4px; background: transparent; border: 0; padding: 0; height: auto; min-height: 0; color: #b30606; box-shadow: none; }
	.tc-jv-page #view-contracts-rules .ui-autoresponder-row .ui-autoresponder-kill span { color: #b30606; font-size: 14px; line-height: 20px; }
	.tc-jv-page #view-contracts-rules .ui-autoresponder-row .ui-autoresponder-kill .fa { display: none; }
	.tc-jv-page #view-contracts-rules .ui-autoresponder-row .ui-autoresponder-kill::before { content: ''; width: 24px; height: 24px; flex-shrink: 0; background: url("/static/icons/jv/delete.svg") no-repeat center; background-size: 14px 18px; }
	/* Rules page sits on grey so the white cards float (Figma jv-rules-mobile bg). */
	body:has(#view-contracts-rules),
	body:has(#view-contracts-rules) #layout,
	body:has(#view-contracts-rules) .tc-jv-page { background: #f6f8f9; }
	/* Bottom bar: Add-rule carries the sparkle icon (Figma), buttons are 14/16. */
	.tc-jv-page .box-footer .ui-autoresponder-add-primary { gap: 4px; color: #0d0d0d; line-height: 16px; }
	.tc-jv-page .box-footer .ui-autoresponder-add-primary i { display: inline-block; width: 16px; height: 16px; font-size: 0; background: url("/static/icons/jv/sparkle.svg") no-repeat center; background-size: 14.67px 14.67px; }
	.tc-jv-page .box-footer .ui-save { line-height: 16px; }
	.tc-jv-page .box-footer { justify-content: space-between; padding: 16px 16px 8px; margin-top: 0; }
	.tc-jv-page .box-footer .ui-autoresponder-add-primary,
	.tc-jv-page .box-footer .ui-save { border-radius: 6px; padding: 8px; height: auto; min-height: 32px; }

	/* Contract rows (.tc-jv-row): shrink the 160px avatar to a 48px circle and
	   stack the title block; the "View contract info" CTA goes full-width. */
	/* Avatar is absolute so only name+partner clear it (47px = 35 + 12 gap); metadata + button run full width. */
	.tc-jv-page ul.tc-jv-rows > li.tc-jv-row { display: block; position: relative; padding: 16px; border-radius: 12px; }
	.tc-jv-page ul.tc-jv-rows > li.tc-jv-row:active { transform: scale(0.995); }
	.tc-jv-page .tc-jv-row-avatar { position: absolute; top: 16px; left: 16px; padding: 0; }
	.tc-jv-page .tc-jv-row-avatar img { width: 35px; height: 35px; border-radius: 4px; background-size: 21px 21px; }
	.tc-jv-page .tc-jv-row-main { display: flex; flex-direction: column; gap: 14px; padding: 0; }
	.tc-jv-page .tc-jv-row-title { display: flex; flex-direction: column; gap: 2px; }
	.tc-jv-page .tc-jv-row-title .tc-jv-row-name { padding-left: 47px; font-size: 15px; line-height: normal; }
	.tc-jv-page .tc-jv-row-title .tc-jv-row-partner { padding-left: 47px; font-size: 13px; line-height: normal; }
	.tc-jv-page .tc-jv-row-meta { display: flex; flex-direction: column; gap: 6px; margin-top: 12px; font-size: 12px; }
	/* Figma keeps each metadata row on one line at 12px, truncating the value with an ellipsis. */
	.tc-jv-page ul.tc-jv-rows > li.tc-jv-row .tc-jv-row-meta .tc-jv-row-line { font-size: 12px; line-height: normal; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
	/* Partner line: label is Regular, the name is Medium (Figma inverts the default bold-label). */
	.tc-jv-page ul.tc-jv-rows > li.tc-jv-row .tc-jv-row-partner { font-weight: 500; }
	.tc-jv-page ul.tc-jv-rows > li.tc-jv-row .tc-jv-row-partner b { font-weight: 400; }
	/* Figma: values dark #2a3648, inline labels light #8493a8. */
	.tc-jv-page ul.tc-jv-rows > li.tc-jv-row .tc-jv-row-name,
	.tc-jv-page ul.tc-jv-rows > li.tc-jv-row .tc-jv-row-line { color: #2a3648; }
	.tc-jv-page ul.tc-jv-rows > li.tc-jv-row .tc-jv-row-line b { color: #8493a8; }
	.tc-jv-page .tc-jv-row-cta { width: 100%; }
	.tc-jv-page .tc-jv-row-cta .tc-jv-btn-sm { width: 100%; justify-content: center; min-height: 0; height: 32px; padding: 8px; }
	.tc-jv-page .tc-jv-row-cta .tc-jv-btn-sm .tc-jv-ico-ext { width: 16px; height: 16px; }
	/* Badge sits top-right of the card, out of the text flow (Figma FooterRow is absolute). */
	.tc-jv-page ul.tc-jv-rows > li.tc-jv-row .tc-jv-row-title .tc-jv-badge { position: absolute; top: 16px; right: 16px; padding: 2px 8px; }

	/* Payout cards: rebuild the shared .tc-jv-row into the mobile card (header, badge, lines, divider, footer). */
	.tc-jv-page ul.payouts-list > li.payouts-list-row { padding: 16px; }
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-row-avatar { top: 16px; left: 16px; }
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-row-avatar img { width: 40px; height: 40px; border-radius: 20px; background-color: #ecfdfc; background-image: url("/static/icons/jv/user.svg"); background-size: 20px 20px; }
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-row-main { display: block; }
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-row-title { display: block; }
	/* Name + email clear the 40px avatar (40 + 10 gap). */
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-row-name { padding-left: 50px; margin: 0; font-size: 15px; font-weight: 600; line-height: 20px; color: #2a3648; }
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-row-emailrow { padding-left: 50px; margin-top: 2px; }
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-row-emailrow a { font-size: 12px; line-height: 16px; }
	/* Badge is its own full-width row under the header (override the absolute contract rule). */
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-row-title .tc-jv-po-badge { position: static; top: auto; right: auto; margin: 12px 0 0; align-self: flex-start; }
	/* Detail lines: 13px, label #2a3648 medium / value #8493a8 regular (Figma inverts the <b>). */
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-po-lines { gap: 6px; margin-top: 12px; font-size: 13px; line-height: normal; color: #2a3648; font-weight: 500; }
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-po-lines b { font-weight: 400; color: #8493a8; }
	/* Kebab pinned to the card top-right (Figma more_vert), menu anchors to the card. */
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-po-actions { position: static; }
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-kebab { position: absolute; top: 16px; right: 16px; width: 24px; height: 24px; padding: 0; border: 0; background: transparent; }
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-kebab:hover { background: transparent; }
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-kebab-menu { top: 46px; right: 16px; }
	/* Footer: divider on top, amount block left, Pay button right. */
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-po-right { position: static; align-self: auto; flex-direction: row; align-items: center; justify-content: space-between; margin-top: 12px; padding-top: 12px; border-top: 1px solid #e8ecef; }
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-po-amountblock { order: 0; align-items: flex-start; }
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-po-actions { order: 1; }
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-po-amount { font-size: 16px; font-weight: 700; line-height: normal; color: #2a3648; text-align: left; }
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-po-date { font-size: 11px; font-weight: 400; line-height: normal; color: #8493a8; text-align: left; }
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-po-logo { margin-top: 4px; }
	/* Pay button = Figma bordered action (dark #2a3648 stroke). */
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-po-actions .ui-payout { border-color: #2a3648; color: #2a3648; }
	/* Overdue badge is Figma red-100 #ffd5d5 (a touch lighter than the shared red). */
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-po-badge.tc-jv-badge-red { background: #ffd5d5; }
	/* Due badge is Figma yellow-50 #fffff0 / #664d00 (the pale "Pending Due" chip). */
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-po-badge.tc-jv-badge-amber { background: #fffff0; color: #664d00; }
	/* Kebab menu → native bottom sheet with a dimmed scrim. */
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-po-actions.open .tc-jv-kebab-menu { position: fixed; top: auto; left: 0; right: 0; bottom: 0; width: 100%; min-width: 0; padding: 8px 8px calc(8px + env(safe-area-inset-bottom)); border: 0; border-radius: 16px 16px 0 0; box-shadow: 0 -6px 24px rgba(13, 22, 38, 0.18); z-index: 1001; }
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-kebab-menu::before { display: none; }
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-po-actions.open .tc-jv-kebab-menu .tc-jv-menu-item { padding: 16px; font-size: 16px; line-height: 24px; border-radius: 8px; }
	/* Scrim behind the sheet — a fixed overlay from the open actions wrapper. */
	.tc-jv-page ul.payouts-list > li.payouts-list-row .tc-jv-po-actions.open::after { content: ''; position: fixed; inset: 0; background: rgba(13, 22, 38, 0.4); z-index: 1000; }

	/* In selection mode the row checkbox sits at the avatar's top-left corner. */
	.tc-jv-page #view-affiliates-payouts.ui-masspay-active ul.payouts-list > li.payouts-list-row .tc-jv-po-check { top: 12px; left: 12px; }

	.tc-jv-create .ui-contract-settings-tab[data-section="settings"], .tc-jv-create .ui-contract-commissions-defaults ul { grid-template-columns: 1fr; }
	.tc-jv-create .pure-g.row { flex-direction: column; align-items: stretch; }
	.tc-jv-create .pure-g.row > [class*="pure-u"] { width: 100%; float: none; }
	/* "You have selected N products…" banner: the desktop flex row fragments the
	   sentence into columns on a phone — render it as a normal paragraph with the
	   icon inline and the × pinned top-right. */
	.tc-jv-create .ui-contract-commissions-defaults > p:first-child { display: block; position: relative; padding: 12px 40px 12px 12px; font-size: 14px; line-height: 20px; color: #2a3648; }
	.tc-jv-create .ui-contract-commissions-defaults .input-pill input { min-height: 48px !important; box-sizing: border-box; padding: 14px 3em 14px 12px !important; }
	/* Top-align the % with the input value (Figma % box is items-start / py-14), not vertically centered. */
	.tc-jv-create .ui-contract-commissions-defaults .input-pill em { font-size: 14px; line-height: 20px; padding-top: 13px; }
	.tc-jv-create .ui-contract-commissions-defaults > p:first-child::before { display: inline-block; vertical-align: -3px; width: 16px; height: 16px; background-image: url("/static/icons/jv/info.svg"); background-size: 16px 16px; margin: 0 8px 0 0; }
	.tc-jv-create .ui-contract-commissions-defaults > p:first-child b { display: inline; }
	.tc-jv-create .ui-contract-commissions-defaults > p:first-child > button { position: absolute; top: 10px; right: 10px; margin: 0; }
	/* Any select in the Create form fills its row (the platform sets narrow
	   inline widths on some, e.g. the custom-percentages dropdown). */
	.tc-jv-create #ui-contract-settings select,
	.tc-jv-create .ui-contract-commissions-defaults select { width: 100%; min-width: 100%; box-sizing: border-box; min-height: 48px; padding: 14px 36px 14px 12px; }
	.tc-jv-create .ui-contract-settings-tab.box { padding: 16px; }
	.tc-jv-create #ui-contract-settings input { min-height: 44px; }
	.tc-jv-create #ui-contract-settings select { width: 100%; min-width: 0; box-sizing: border-box; min-height: 48px; padding: 14px 36px 14px 12px; }
	/* Bottom action bar: full-bleed white bar with a top border. */
	.tc-jv-create .pure-controls.controls-fluid { flex-direction: row; gap: 12px; background: #fff; margin: 0 -16px; padding: 16px; }
	.tc-jv-create .pure-controls.controls-fluid .pure-button { flex: 1 1 0; width: auto; justify-content: center; min-height: 0; height: 36px; padding: 8px 12px; }
	.tc-jv-create #ui-contract-settings .box-list-product-row { padding: 20px 16px; align-items: flex-start; }
	.tc-jv-create #ui-contract-settings .box-list-product-row:has(input:checked) { padding: 19px 15px; }

	/* Full-width sheet: border-box keeps the 24px padding inside 100vw; drop the .ajs-modal side padding. */
	body.tc-jv-reskin .alertify .ajs-modal { padding: 0; }
	body.tc-jv-reskin .alertify .ajs-dialog { width: 100vw; max-width: 100vw; box-sizing: border-box; height: auto; min-height: 0; border-radius: 12px 12px 0 0; margin: 0; }
	body.tc-jv-reskin .alertify .ajs-footer .ajs-buttons .ajs-button, body.tc-jv-reskin .alertify .ajs-footer button { min-height: 44px; }
}

/* =========================================================================
   AFFILIATES — mobile (≤767px)   [TC-12324]
   Native-app feel on phones: full-bleed 16px gutters, stacked white cards,
   horizontally-scrollable tab pills, 44px touch targets. Follows the
   established Dashboard/Transactions/JV mobile pattern. This whole block is
   self-contained so it can live on the TC-12324 (affiliates) branch.
   ========================================================================= */
@media (max-width: 767px) {
	/* -- Page shell ------------------------------------------------------- */
	html, body.root.affiliates { overflow-x: clip; }
	.tc-affiliates-page { max-width: 100%; overflow-x: clip; padding-left: 16px; padding-right: 16px; }
	/* Full-bleed the stats card so filters, metrics and chart all line up on the 16px page edge (Figma), instead of the card's 16px padding + the -13px .stats-control-wrap pull offsetting each row differently. */
	/* Strip the outer stats card's chrome (shadow/border/radius/bg) so only the chart + metric cards read as cards — otherwise the container's rounded drop-shadow shows as a faint second border under the chart. */
	.tc-affiliates-page #graph-dashboard-outer,
	.tc-affiliates-page #graph-dashboard-outer.box,
	.tc-affiliates-page #graph-dashboard-outer > .box,
	.tc-affiliates-page #graph-dashboard-outer .box.padding { padding-left: 0; padding-right: 0; box-shadow: none; border: 0; border-radius: 0; background: transparent; }
	.tc-affiliates-page #graph-dashboard-outer .box.padding,
	.tc-affiliates-page #graph-dashboard-outer .box.padding-full { padding-left: 0 !important; padding-right: 0 !important; }
	.tc-affiliates-page #graph-dashboard-outer .stats-control-wrap { margin-left: 0; margin-right: 0; }
	.tc-affiliates-page .ui-searching,
	.tc-affiliates-page .box.box-tabbed { padding-left: 16px; padding-right: 16px; }
	/* My Affiliates list already sits inside the page's 16px padding; .ui-searching's own 16px doubled the inset to 32. Zero it so the list hits the 16px edge (Figma 2865-12067). */
	.tc-affiliates-page .ui-searching:has(#view-affiliates-list) { padding-left: 0; padding-right: 0; }

	/* -- Header: breadcrumb/title left, controls become full-width buttons - */
	.tc-affiliates-page .tc-aff-head { flex-direction: column; align-items: stretch; gap: 12px; padding-top: 16px; margin: 0 0 16px; }
	/* Title is 28/Bold with -0.75 tracking on mobile. */
	.tc-affiliates-page .tc-aff-title { font-size: 28px; font-weight: 700; line-height: normal; letter-spacing: -0.75px; color: #2a3648; }
	.tc-affiliates-page .tc-aff-head-controls { flex-flow: row wrap; align-items: stretch; gap: 8px; width: 100%; }
	.tc-affiliates-page .tc-aff-head-divider { display: none; }
	/* Prominent primary action (Create new affiliate / Filters) takes a full row… */
	.tc-affiliates-page .tc-aff-head-controls > * { flex: 1 1 100%; width: auto; }
	/* …and the secondary controls pair up 2-per-row: the Overview's dropdown
	   pills (Front-end only + Today) and the list's secondary buttons
	   (Import affiliate list + Bulk approve). */
	.tc-affiliates-page .tc-aff-head-controls > .tc-aff-pill,
	.tc-affiliates-page .tc-aff-head-controls > .tc-aff-btn-secondary { flex: 1 1 calc(50% - 4px); min-width: 0; }
	/* Shrunk secondary buttons: smaller text so the longer label still fits half-width. */
	.tc-affiliates-page .tc-aff-head-controls > .tc-aff-btn-secondary { font-size: 13px; padding-left: 10px; padding-right: 10px; }
	/* The platform JS sets an inline width on each <select>; `min-width` (no
	   inline value to fight) forces it to fill its pill — no !important needed. */
	/* The desktop 14/20 text needs 36, so a 32 box clipped the descenders. */
	.tc-affiliates-page .tc-aff-head-controls .tc-aff-pill select {
		min-width: 100%;
		box-sizing: border-box;
		height: 32px;
		min-height: 32px;
		padding: 8px 32px 8px 8px;
		font-size: 12px;
		line-height: 16px;
		background-position: right 12px center;
		/* The hairline has to sit inside the 32, or it steals 2px from the text. */
		border: 0;
		box-shadow: inset 0 0 0 1px #d1d7de;
	}
	.tc-affiliates-page .tc-aff-head-controls .pure-button,
	.tc-affiliates-page .tc-aff-head-controls button,
	.tc-affiliates-page .tc-aff-head-controls > .tc-aff-btn-secondary,
	.tc-affiliates-page .tc-aff-head-controls > .tc-aff-btn-primary { justify-content: center; min-height: 36px; -webkit-tap-highlight-color: transparent; }
	.tc-affiliates-page .tc-aff-head-controls .pure-button:active,
	.tc-affiliates-page .tc-aff-head-controls button:active { transform: scale(0.98); }

	/* Overview report filters (USD / product / affiliate / date) sit in an
	   .autolayout row that sizes each column to its content → jagged widths.
	   Stack them full-width so every dropdown fills the row consistently. */
	.tc-affiliates-page .autolayout { flex-direction: column; align-items: stretch; }
	.tc-affiliates-page .autolayout > .autolayout-column,
	.tc-affiliates-page .autolayout > .autolayout-column.autolayout-max-50 { width: 100%; max-width: none; flex: 1 1 auto; }
	.tc-affiliates-page .autolayout > .autolayout-column select { width: 100%; min-width: 100%; min-height: 44px; box-sizing: border-box; }

	/* Overview filters: currency + product + affiliate + date-range scroll horizontally as one strip (Figma widths 84/124/124, 8px gap); Compare goes full-width below. Comparison mode keeps its stacked column. margin:0 drops the desktop -6.5px pull so the row's left edge lines up with the stat cards. */
	.tc-affiliates-page #graph-dashboard-outer:not(.ui-comparison-mode) .stats-control-wrap .autolayout { flex-direction: row; flex-wrap: wrap; gap: 8px; align-items: stretch; margin-left: 0; margin-right: 0; }
	.tc-affiliates-page #graph-dashboard-outer:not(.ui-comparison-mode) .tc-aff-filter-scroll { display: flex; flex-wrap: nowrap; align-items: center; overflow-x: auto; gap: 8px; order: 1; flex: 1 0 100%; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
	.tc-affiliates-page #graph-dashboard-outer:not(.ui-comparison-mode) .tc-aff-filter-scroll::-webkit-scrollbar { display: none; }
	.tc-affiliates-page #graph-dashboard-outer:not(.ui-comparison-mode) .tc-aff-filter-scroll > .autolayout-column { flex: 0 0 auto; width: 124px; min-width: 124px; padding-left: 0; padding-right: 0; }
	.tc-affiliates-page #graph-dashboard-outer:not(.ui-comparison-mode) .tc-aff-filter-scroll > .autolayout-breaker { display: none; }
	/* !important overrides the dashboard mobile rule that pins #stats-currency-wrap to 100%. */
	.tc-affiliates-page #graph-dashboard-outer:not(.ui-comparison-mode) .tc-aff-filter-scroll > #stats-currency-wrap { width: 84px !important; min-width: 84px; }
	.tc-affiliates-page #graph-dashboard-outer:not(.ui-comparison-mode) .tc-aff-filter-scroll > #stats-date-range-wrap { width: 84px; min-width: 84px; }
	.tc-affiliates-page #graph-dashboard-outer:not(.ui-comparison-mode) .tc-aff-filter-scroll #stats-currency,
	.tc-affiliates-page #graph-dashboard-outer:not(.ui-comparison-mode) .tc-aff-filter-scroll #stats-product,
	.tc-affiliates-page #graph-dashboard-outer:not(.ui-comparison-mode) .tc-aff-filter-scroll #stats-affiliate,
	.tc-affiliates-page #graph-dashboard-outer:not(.ui-comparison-mode) .tc-aff-filter-scroll #stats-date-range-type { width: 100%; min-width: 0; height: 32px !important; min-height: 32px !important; font-size: 14px !important; padding: 6px 24px 6px 12px !important; background-position: right 9px center; }
	/* .dropdown fills its column so the select (forced to width:100% by a dashboard !important rule) spans the full pill. */
	.tc-affiliates-page #graph-dashboard-outer:not(.ui-comparison-mode) .tc-aff-filter-scroll .dropdown { width: 100%; }
	/* The product/affiliate/date-range dropdowns carry a hidden `<label>&nbsp;</label>` spacer that the currency dropdown doesn't, pushing their selects 7px lower — collapse it so every pill sits on the same line. */
	.tc-affiliates-page #graph-dashboard-outer:not(.ui-comparison-mode) .tc-aff-filter-scroll .dropdown > label { display: none; }
	.tc-affiliates-page #graph-dashboard-outer:not(.ui-comparison-mode) .stats-control-wrap .autolayout > .position-relative:has(.ui-compare) { order: 2; flex: 1 0 100%; }
	.tc-affiliates-page #graph-dashboard-outer:not(.ui-comparison-mode) .stats-control-wrap .pure-button.ui-compare { width: 100%; }

	/* Comparison mode (Figma 2865-10612): each filter column stacks its primary + compare control, and the columns scroll horizontally as one strip — giving the two rows (primary series on top, comparison below). Product · date · currency only; the affiliate column is hidden while comparing. */
	.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap .autolayout { flex-direction: row; flex-wrap: wrap; align-items: flex-start; gap: 8px; margin-left: 0; margin-right: 0; }
	.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .tc-aff-filter-scroll { display: flex; flex-wrap: nowrap; align-items: flex-start; overflow-x: auto; gap: 8px; order: 1; flex: 1 0 100%; min-width: 0; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
	.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .tc-aff-filter-scroll::-webkit-scrollbar { display: none; }
	/* Figma 2865-10613: 140px pills with full labels; the row scrolls with the currency peeking at the frame edge. */
	.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .tc-aff-filter-scroll > .autolayout-column { flex: 0 0 140px; width: 140px; min-width: 140px; padding: 0; }
	.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .tc-aff-filter-scroll > .autolayout-breaker { display: none; }
	.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .tc-aff-filter-scroll > #stats-affiliate-wrap { display: none; }
	.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .tc-aff-filter-scroll .dropdown { width: 100%; }
	.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .tc-aff-filter-scroll .dropdown > label { display: none; }
	/* Compact the pills to 140px, overriding the 180px desktop comparison width. */
	.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .tc-aff-filter-scroll .autolayout-column > .dropdown select,
	.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .tc-aff-filter-scroll .autolayout-column > .position-relative > .dropdown select,
	.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .tc-aff-filter-scroll .ui-compare-block .dropdown select { width: 100% !important; min-width: 0 !important; height: 36px; padding-left: 28px; padding-right: 20px; background-position: 12px center, right 8px center; }
	/* The two per-row trash buttons both just exit comparison, and can't sit at each scrollable row's end without markup changes — hide them on mobile; the full-width Close Comparison below is the exit. */
	.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap .tc-aff-compare-clear-col { display: none; }
	.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap .autolayout > .position-relative:has(.ui-compare) { order: 3; flex: 1 0 100%; }
	/* Figma 2865-10667: Close Comparison is a full-width 36px button, not the legacy compact xsmall. */
	.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap #stats-date-range-type-compare-active-wrap { padding-right: 0; }
	.tc-affiliates-page #graph-dashboard-outer.ui-comparison-mode .stats-control-wrap .pure-button.ui-compare-clear { width: 100%; height: 36px; box-sizing: border-box; justify-content: center; }

	/* -- Tabs: horizontally scrollable pills, no wrap -------------------- */
	.tc-affiliates-page .tabs.tabs-anchor { flex-wrap: nowrap; overflow-x: auto; overflow-y: hidden; touch-action: pan-x; scrollbar-width: none; gap: 8px; margin: 0 0 16px; -webkit-overflow-scrolling: touch; }
	.tc-affiliates-page .tabs.tabs-anchor::-webkit-scrollbar { display: none; }
	.tc-affiliates-page .tabs.tabs-anchor li { flex: 0 0 auto; }
	.tc-affiliates-page .tabs.tabs-anchor li a { white-space: nowrap; -webkit-tap-highlight-color: transparent; }
	.tc-affiliates-page .tabs.tabs-anchor li a:active { transform: scale(0.98); }

	/* -- KPI cards. My Affiliates has 3 → compact 3-across stat strip;
	   Overview has 4 → 2×2 grid (a lone 4th would dangle in 3-across). --- */
	.tc-affiliates-page .tc-aff-kpis { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 0 0 20px; }
	.tc-affiliates-page .tc-aff-kpis:has(> .tc-aff-kpi:nth-child(4)) { grid-template-columns: 1fr 1fr; }
	.tc-affiliates-page .tc-aff-kpi { flex: none; min-width: 0; gap: 10px; padding: 12px 10px; }
	.tc-affiliates-page .tc-aff-kpi-icon { width: 26px; height: 26px; }
	.tc-affiliates-page .tc-aff-kpi-value { font-size: 18px; line-height: 24px; }
	.tc-affiliates-page .tc-aff-kpi-label { font-size: 11px; letter-spacing: 0.2px; line-height: 15px; }

	/* My Affiliates list (Figma 2865-12079/12080): the 3 stat cards stack vertically full-width, each icon-box / label / value with the full card padding. */
	.tc-affiliates-page #affiliates-list-stats.tc-aff-kpis { grid-template-columns: 1fr; gap: 12px; }
	.tc-affiliates-page #affiliates-list-stats .tc-aff-kpi { flex-direction: column; align-items: flex-start; gap: 16px; padding: 16px; }
	.tc-affiliates-page #affiliates-list-stats .tc-aff-kpi-icon { width: 36px; height: 36px; }
	.tc-affiliates-page #affiliates-list-stats .tc-aff-kpi-value { font-size: 20px; line-height: 28px; }
	.tc-affiliates-page #affiliates-list-stats .tc-aff-kpi-label { font-size: 12px; letter-spacing: 0.48px; line-height: 16px; }

	/* -- Toolbar / search / filters: a clean stacked layout instead of a
	   wrapping jumble of mixed-size controls. Search + both filter dropdowns
	   go full-width, one per row; the action buttons form tidy equal rows. */
	.tc-affiliates-page .tc-aff-toolbar { flex-direction: column; align-items: stretch; gap: 10px; }
	.tc-affiliates-page .tc-aff-toolbar-right { display: flex; flex-flow: row wrap; gap: 8px; align-items: stretch; }
	.tc-affiliates-page .tc-aff-toolbar-right > * { -webkit-tap-highlight-color: transparent; min-height: 40px; }
	.tc-affiliates-page .tc-aff-toolbar-right > .tc-aff-table-search,
	.tc-affiliates-page .tc-aff-toolbar-right > .tc-aff-pill { flex: 1 1 100%; width: 100%; }
	.tc-affiliates-page .tc-aff-toolbar .tc-aff-table-search input,
	.tc-affiliates-page .tc-aff-toolbar-right > .tc-aff-pill select { min-width: 100%; width: 100%; box-sizing: border-box; min-height: 44px; }
	/* Action buttons (Clear / Search / Sort) share one equal-width row… */
	.tc-affiliates-page .tc-aff-toolbar-right > button,
	.tc-affiliates-page .tc-aff-toolbar-right > .tc-aff-btn-secondary,
	.tc-affiliates-page .tc-aff-toolbar-right > .tc-aff-btn-primary { flex: 1 1 calc(33.333% - 6px); justify-content: center; }
	/* …and the Filter + Download group gets its own row, split evenly. Figma 2865-12087: the two segments are joined (no gap) — one segmented control with a shared middle border. */
	.tc-affiliates-page .tc-aff-toolbar-right > .tc-aff-btngroup { flex: 1 1 100%; display: flex; gap: 0; }
	.tc-affiliates-page .tc-aff-toolbar-right > .tc-aff-btngroup > * { flex: 1 1 0; justify-content: center; }
	/* Figma 2865-12085: Sort + Filter/Download-CSV group share one row — Sort keeps its natural width, the group fills the rest. */
	.tc-affiliates-page .tc-aff-toolbar-right > .tc-aff-btn-sort { flex: 0 0 auto; }
	.tc-affiliates-page .tc-aff-toolbar-right > .tc-aff-btngroup { flex: 1 1 auto; }
	/* Sort must match the Filter/Download-CSV segments (28px, radius 6). It was stretching to the row's 40px, so center it and pin the height instead. */
	.tc-affiliates-page .tc-aff-toolbar-right > .tc-aff-btn-sort { height: 28px; min-height: 0; align-self: center; border-radius: 6px; padding: 6px 12px; }

	/* Full-bleed grey band with white cards: cancel the 16px gutter, re-inset to 24. */
	#view-affiliates-payouts .tc-aff-toolbar,
	#view-affiliates-payouts #affiliates-payouts {
		background: #f6f8f9;
		margin-left: -16px;
		margin-right: -16px;
		padding-left: 24px;
		padding-right: 24px;
		box-sizing: border-box;
	}
	/* Keep the grey continuous: move the toolbar's bottom gap inside the band. */
	#view-affiliates-payouts .tc-aff-toolbar { margin-bottom: 0; padding-bottom: 16px; }
	#view-affiliates-payouts #affiliates-payouts { padding-bottom: 16px; }

	#view-affiliates-payouts .tc-aff-toolbar-right { justify-content: flex-start; }
	#view-affiliates-payouts .tc-aff-toolbar-right > .tc-aff-btngroup { gap: 8px; flex: 0 1 auto; }
	#view-affiliates-payouts .tc-aff-toolbar-right > .tc-aff-btngroup > * { flex: 0 0 auto; white-space: nowrap; }
	#view-affiliates-payouts .tc-aff-toolbar-right > .tc-aff-btn-sort,
	#view-affiliates-payouts .tc-aff-toolbar-right .tc-aff-btngroup-seg {
		height: 36px;
		box-sizing: border-box;
		box-shadow: inset 0 0 0 1px #e8ecef;
		border-radius: 8px;
		padding: 8px 12px;
		font-size: 14px;
		font-weight: 500;
	}
	#view-affiliates-payouts .tc-aff-toolbar-right .tc-aff-btngroup-seg--download {
		background: #006b70;
		color: #ffffff;
		box-shadow: none;
	}
	#view-affiliates-payouts .tc-aff-toolbar-right .tc-aff-btngroup-seg--download::before {
		background: #ffffff;
		-webkit-mask: url("/static/icons/affiliates/download-csv.svg") no-repeat center;
		mask: url("/static/icons/affiliates/download-csv.svg") no-repeat center;
		-webkit-mask-size: 8px 8px;
		mask-size: 8px 8px;
	}
	/* Figma 2865-12086: Sort uses the filter_list (three-lines) glyph, not the funnel sort.svg — reuse the existing filter-list icon at the Sort size (12×8). */
	.tc-affiliates-page .tc-aff-toolbar-right > .tc-aff-btn-sort::before { background-image: url("/static/icons/affiliates/filter-list.svg"); background-size: 12px 8px; }
	.tc-affiliates-page .tc-aff-table-head { flex-direction: column; align-items: stretch; gap: 10px; }
	/* Figma 2865-10248: search fills and the Products toggle sits beside it on one row. */
	.tc-affiliates-page .tc-aff-table-tools { flex-wrap: nowrap; gap: 8px; width: 100%; }
	.tc-affiliates-page .tc-aff-table-search { width: auto; flex: 1 1 0; min-width: 0; }
	.tc-affiliates-page .tc-aff-table-tools > .tc-aff-table-toggle { flex: 0 0 auto; }

	/* My Affiliates card → mobile-only grid re-lay of the shared desktop markup (nothing here applies >767px, so desktop stays the horizontal card). Figma 2865-12089. */
	.tc-affiliates-page ul.affiliate-list > li.tc-aff-row {
		position: relative;
		display: grid;
		grid-template-columns: 44px minmax(0, 1fr);
		column-gap: 12px;
		row-gap: 16px;
		align-items: center;
		padding: 16px;
	}
	.tc-affiliates-page ul.affiliate-list > li.tc-aff-row:active { transform: scale(0.995); }
	/* Flatten the wrapper divs so their children become items of the card grid. */
	.tc-affiliates-page .tc-aff-row-main,
	.tc-affiliates-page .tc-aff-row-top,
	.tc-affiliates-page .tc-aff-row-body,
	.tc-affiliates-page .tc-aff-row-ctas { display: contents; }
	.tc-affiliates-page .tc-aff-row-avatar { grid-column: 1; grid-row: 1; width: 44px; height: 44px; padding: 0; display: block; border-radius: 8px; overflow: hidden; }
	.tc-affiliates-page .tc-aff-row-avatar img { width: 44px; height: 44px; border-radius: 8px; background-size: 26px 26px; }
	/* The old "View profile" button becomes an invisible full-card tap target (design shows no button). */
	.tc-affiliates-page .tc-aff-row-viewprofile { position: absolute; inset: 0; margin: 0; padding: 0; width: auto; height: auto; min-width: 0; opacity: 0; font-size: 0; transform: none; transition: none; z-index: 1; }
	.tc-affiliates-page .tc-aff-row-title { grid-column: 2; grid-row: 1; display: flex; flex-direction: column; gap: 2px; min-width: 0; order: 0; }
	/* Approvals: only the pending Approve/Reject row shows (a lone info tooltip is dropped on mobile). */
	/* position:relative here activates a dormant legacy `left:-42px` on this element — pin left/top to 0 so the row doesn't bleed out of the card. */
	.tc-affiliates-page .tc-aff-row-ctas .affiliate-inline-approvals { grid-column: 1 / -1; order: 1; width: 100%; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; gap: 8px; margin: 0; position: relative; left: 0; top: 0; z-index: 2; }
	.tc-affiliates-page .tc-aff-row-ctas .affiliate-inline-approvals:not(:has(.ui-inline-approvals-approve)) { display: none; }
	.tc-affiliates-page .tc-aff-row-ctas .affiliate-inline-approvals { align-items: center; }
	.tc-affiliates-page .tc-aff-row-ctas .affiliate-inline-approvals .ui-inline-approvals-approve,
	.tc-affiliates-page .tc-aff-row-ctas .affiliate-inline-approvals .ui-inline-approvals-reject { height: 36px; min-width: 0; margin: 0 !important; }
	/* Keep the info tooltip inline and vertically centred with the buttons, not floating off with a margin. */
	.tc-affiliates-page .tc-aff-row-ctas .affiliate-inline-approvals > span:not(.ui-inline-approvals-approve):not(.ui-inline-approvals-reject) { margin: 0 !important; display: inline-flex; align-items: center; height: 36px; flex: 0 0 auto; }
	/* Soften the info glyph: a subtle muted-grey icon instead of a heavy dark filled circle. */
	.tc-affiliates-page .tc-aff-row-ctas .affiliate-inline-approvals .fa-info-circle { color: #8493a8; font-size: 16px; }
	.tc-affiliates-page .tc-aff-row-stats { grid-column: 1 / -1; order: 2; display: grid; grid-template-columns: 1fr 1fr; gap: 8px 12px; }
	.tc-affiliates-page .tc-aff-row-stat { flex: none; max-width: none; }
	/* Divider (border-top) + Earned/Due row, then the full-width Pay button. */
	.tc-affiliates-page .tc-aff-row-totals { grid-column: 1 / -1; order: 3; width: auto; display: flex; flex-direction: row; align-items: flex-start; justify-content: space-between; gap: 14px; padding-top: 16px; border-top: 1px solid #e8ecef; }
	.tc-affiliates-page .tc-aff-row-due { text-align: right; }
	.tc-affiliates-page .tc-aff-row-ctas .ui-payout { grid-column: 1 / -1; order: 4; width: 100%; justify-content: center; height: 40px; position: relative; z-index: 2; }

	/* -- Payments: summary tiles → 2-col; payout rows → stacked cards ----
	   The desktop rules use an ID (#affiliates-payouts-stats) and the
	   .tc-affiliates-page.tc-affiliates-page doubled-class hack; statistics.css
	   also loads after main.css. So these overrides must carry the ID and a
	   TRIPLED class to out-specify (an ID can't be beaten by classes alone). */
	/* Summary tiles (FAILED/ACCRUING/UPCOMING) → 2-col grid. Two rules: the
	   id-scoped one wins on the automatic block (id rule), the class-only one
	   covers the manual block (which lacks the id). */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear,
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear { display: grid; grid-template-columns: 1fr; gap: 12px; }
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear::before,
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear::after,
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear::before,
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear::after { display: none; }
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear > li { width: auto; max-width: none; min-width: 0; float: none; }
	/* 2-col: a lone final tile (3rd of 3) spans full width instead of dangling. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear > li:last-child:nth-child(odd) { grid-column: 1 / -1; }
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear > li h6 { font-size: 12px; letter-spacing: 0.48px; line-height: 16px; }
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear > li .large-number,
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear > li b { font-size: 20px; }

	/* Payout rows: desktop lays each row as a 4-col × 2-row grid
	   (`160px auto 1fr auto` / `auto 1fr`, min-height 160px) with the children
	   PINNED across the two rows via `grid-row: 1 / -1`. Overriding only
	   grid-template-columns leaves those spans intact, so the 160px-tall avatar
	   column survives (the giant placeholder). Tear the grid down to a wrapping
	   flex card: row 1 = avatar + name/email/badge, then View/kebab and the
	   amount block each on their own full-width line. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page ul.payouts-list li.payouts-list-row .pure-g {
		display: flex; flex-flow: row wrap; align-items: flex-start; gap: 16px 12px;
		grid-template-columns: none; grid-template-rows: none; min-height: 0;
	}
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page ul.payouts-list li.payouts-list-row .pure-g > [class*="pure-u"] {
		grid-row: auto; grid-column: auto; float: none; box-sizing: border-box; min-height: 0;
	}
	/* Avatar → 44px circle (the placeholder is a background on the column div, so
	   size the div, not just the blank <img> inside it). */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-thumbnail {
		width: 44px; height: 44px; min-height: 0; flex: 0 0 auto; order: 1;
		border-radius: 50%; overflow: hidden; background-size: cover; background-position: center;
	}
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-thumbnail img { width: 44px; height: 44px; border-radius: 50%; }
	/* Per-row mass-pay checkbox: keep it, as a small leading control. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-checkbox { flex: 0 0 auto; width: auto; min-height: 0; order: 0; }
	/* Name / email / badge fills the rest of row 1. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-affiliate { flex: 1 1 0; min-width: 0; order: 2; }
	/* Action (View + kebab) and amount each claim their own full-width line. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-action { flex: 1 1 100%; order: 3; display: flex; align-items: center; gap: 8px; }
	.tc-affiliates-page .payouts-list-row .payout-column-action .pure-button { flex: 1 1 auto; justify-content: center; min-height: 40px; }
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-amount { flex: 1 1 100%; order: 4; display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 8px; }
	.tc-affiliates-page .tc-aff-pay-show-manual,
	.tc-affiliates-page .tc-aff-pay-sort-open { -webkit-tap-highlight-color: transparent; min-height: 40px; }
	/* Mass-pay bar: desktop crams Select-all + count + Pay + Cancel into one nowrap row. */
	.tc-affiliates-page #affiliates-payouts-masspay-actions.control-bar { flex-direction: column; align-items: stretch; gap: 10px; background: #ffffff; border: 1px solid #e8ecef; border-radius: 12px; box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); padding: 12px 16px; }
	/* Only flex once the bar is actually open — plain `display` here beat the plugin's `display: none`. */
	/* Legacy pulls it up 7.5em onto the pager; zeroing that left it flush, so it read as tucked behind. */
	#view-affiliates-payouts.ui-masspay-active #affiliates-payouts-masspay-actions.control-bar { display: flex; flex-direction: column; margin-top: 16px; margin-bottom: 16px; }
	.tc-affiliates-page #affiliates-payouts-masspay-actions.control-bar > .checkbox { order: 1; margin: 0; }
	.tc-affiliates-page #affiliates-payouts-masspay-actions.control-bar > .pull-right { order: 2; float: none; width: 100%; display: flex; flex-direction: column; align-items: stretch; gap: 8px; }
	.tc-affiliates-page #affiliates-payouts-masspay-actions.control-bar > .pull-right > p { margin: 0; }
	.tc-affiliates-page #affiliates-payouts-masspay-actions.control-bar > .pull-right > .pure-button { width: 100%; justify-content: center; min-height: 44px; margin: 0; }
	.tc-affiliates-page #affiliates-payouts-masspay-actions.control-bar > .pure-button.button-error { order: 3; width: 100%; justify-content: center; min-height: 44px; margin: 0; }

	/* -- Product options -------------------------------------------------- */
	.tc-affiliates-page .tc-aff-options-toolbar,
	.tc-affiliates-page .tc-aff-products-bar,
	.tc-affiliates-page .tc-aff-products-head,
	.tc-affiliates-page .tc-aff-products-tools { flex-direction: column; align-items: stretch; gap: 10px; }
	/* The desktop row rule's align-items: center outranks the stretch above. */
	.tc-aff-profile-page #view-affiliate .tc-aff-products-bar { align-items: stretch; }

	/* Products header: title + count left, the allow-products button right. */
	.tc-aff-profile-page #view-affiliate .tc-aff-products-head {
		display: flex;
		flex-direction: row;
		align-items: center;
		gap: 8px;
	}
	.tc-aff-profile-page #view-affiliate .tc-aff-products-head > h1 {
		margin: 0;
		font-size: 18px;
		font-weight: 600;
		line-height: normal;
		letter-spacing: normal;
		color: #2a3648;
	}
	.tc-aff-profile-page #view-affiliate .tc-aff-products-badge {
		display: inline;
		font-size: 13px;
		font-weight: 400;
		line-height: normal;
		letter-spacing: normal;
		color: #8493a8;
	}
	.tc-aff-profile-page #view-affiliate .tc-aff-products-head > .pure-button {
		flex: 0 0 auto;
		box-sizing: border-box;
		margin: 0 0 0 auto;
		height: 28px;
		min-height: 0;
		padding: 6px 8px;
		border: 0;
		border-radius: 6px;
		background: #ffffff;
		box-shadow: inset 0 0 0 1px #e8ecef;
		font-size: 12px;
		font-weight: 500;
		line-height: 16px;
		color: #364152;
		text-shadow: none;
	}
	/* The badge carries the total now; the sentence would repeat it. */
	.tc-aff-profile-page #view-affiliate #affiliate-products-count { display: none; }

	/* Search takes the slack, Sort trails it — as the affiliates list toolbar does. */
	.tc-aff-profile-page #view-affiliate .tc-aff-products-tools {
		flex-direction: row;
		flex-wrap: nowrap;
		align-items: center;
		gap: 8px;
		width: 100%;
	}
	.tc-aff-profile-page #view-affiliate .tc-aff-products-search { flex: 1 1 0; min-width: 0; width: auto; }
	.tc-aff-profile-page #view-affiliate .tc-aff-products-search input { width: 100%; box-sizing: border-box; }
	.tc-aff-profile-page #view-affiliate .tc-aff-products-sort { flex: 0 0 auto; }

	/* The dialog is pinned to 390 and hangs off a 390 viewport. */
	.alertify .ajs-dialog.genericWindow-dialog.tc-modal-affiliate-grant {
		width: calc(100vw - 32px);
		max-width: calc(100vw - 32px);
		margin: 0 auto;
	}
	/* Two searches bind the same List; at this width there is no room for both. The
	   toolbar one stays, matching the import modal. Desktop keeps them as they were. */
	body.tc-aff-reskin .alertify .ajs-dialog.tc-modal-affiliate-grant .tc-aff-import-search { display: none; }
	/* The desktop rule carries body.tc-aff-reskin, so this has to match it to win. */
	body.tc-aff-reskin .alertify .ajs-dialog.tc-modal-affiliate-grant ul.ui-affiliate-grant-product-select > li { margin-bottom: 8px; }
	/* .ajs-buttons is display:contents, so the buttons lay out against .ajs-footer. */
	/* The title is nowrap in a shrunk flex item, so it overflows under the close. */
	body.tc-aff-reskin .alertify .ajs-dialog.tc-modal-affiliate-grant .ajs-header { align-items: flex-start; gap: 8px; }
	body.tc-aff-reskin .alertify .ajs-dialog.tc-modal-affiliate-grant .tc-grant-head-title {
		flex: 1 1 auto;
		min-width: 0;
		white-space: normal;
	}
	body.tc-aff-reskin .alertify .ajs-dialog.tc-modal-affiliate-grant .tc-grant-head-close { flex: 0 0 auto; }

	body.tc-aff-reskin .alertify .ajs-dialog.tc-modal-affiliate-grant .ajs-footer {
		display: flex;
		flex-direction: column;
		align-items: stretch;
		gap: 8px;
	}
	body.tc-aff-reskin .alertify .ajs-dialog.tc-modal-affiliate-grant .ajs-footer button {
		float: none;
		width: 100%;
		margin: 0;
		/* A fixed height clips the longest label once it wraps to two lines. */
		height: auto;
		min-height: 44px;
		padding: 10px 18px;
		white-space: normal;
	}
	.tc-affiliates-page .tc-aff-products-search { width: 100%; }
	.tc-affiliates-page .tc-aff-products-search input { width: 100%; box-sizing: border-box; min-height: 44px; }
	.tc-affiliates-page .tc-aff-options-toolbar .ui-search-field { width: 100%; min-width: 100%; box-sizing: border-box; height: 32px; min-height: 0; font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; letter-spacing: normal; }
	.tc-affiliates-page .tc-aff-products-foot { flex-direction: column; align-items: stretch; gap: 10px; }

	/* The wrapper is a legacy .box.padding-full, and `.root .padding-full` forces 1em with !important under 469px. */
	.tc-aff-options-page #campaigns-list-campaigns-wrap { padding: 0 !important; }

	/* These match `.box.box-tabbed .tabs.tabs-anchor` class-for-class and carry #view-affiliates, or the legacy padding wins. */
	.tc-affiliates-page #view-affiliates .box.box-tabbed:not(.box-tabbed-action) > ul.tabs.tabs-anchor {
		gap: 16px;
		/* Full-bleed band inside the page's own 16px gutter; no bottom margin, the heading sets that gap. */
		margin: 0 -16px;
		padding: 0 16px;
		background: #ffffff;
		border-bottom: 1px solid #e8ecef;
		overflow-x: auto;
		scrollbar-width: none;
	}
	.tc-affiliates-page #view-affiliates .box.box-tabbed:not(.box-tabbed-action) > ul.tabs.tabs-anchor::-webkit-scrollbar { display: none; }
	/* The 2px underline is an inside stroke, so it comes out of the 10px bottom padding rather than adding to it. */
	.tc-affiliates-page #view-affiliates .box.box-tabbed:not(.box-tabbed-action) > ul.tabs.tabs-anchor > li > a {
		padding: 12px 0 8px;
		font-size: 14px;
		font-weight: 500;
		line-height: normal;
		letter-spacing: normal;
		border-bottom: 2px solid transparent;
	}
	.tc-affiliates-page #view-affiliates .box.box-tabbed:not(.box-tabbed-action) > ul.tabs.tabs-anchor > li.active > a {
		padding: 12px 0 8px;
		font-weight: 600;
		color: #2a3648;
		border-bottom-color: #38a169;
	}

	/* "Showing X of Y Items" is a desktop-only line this tab's own JS renders; mobile goes heading straight to search. */
	.tc-affiliates-page .tc-aff-options-toolbar .tc-aff-options-count { display: none; }

	/* main.css letter-spaces every h1-h6 at -1px, so that gets reset explicitly. */
	.tc-aff-options-page .tc-aff-options-heading {
		display: block;
		margin: 16px 0 20px;
		font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
		font-size: 22px;
		font-weight: 600;
		line-height: normal;
		letter-spacing: normal;
		color: #2a3648;
	}

	.tc-aff-options-page .tc-aff-options-toolbar { margin-bottom: 20px; }
	.tc-aff-options-page .tc-aff-options-foot { margin-top: 20px; }
	.tc-aff-options-page #campaigns-list.campaigns-list-list { gap: 12px; }

	/* The row becomes a card: header, divider, actions. Desktop keeps them on one line around a 160px tile. */
	.tc-aff-options-page #campaigns-list.campaigns-list-list .box-list-product-row {
		flex-direction: column;
		flex-wrap: nowrap;
		align-items: stretch;
		gap: 14px;
		padding: 16px;
		border-radius: 12px;
		box-shadow: inset 0 0 0 1px #e8ecef;
	}

	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-name {
		display: flex;
		flex: 0 0 auto;
		width: auto;
		min-width: 0;
		align-items: flex-start;
		gap: 12px;
		margin: 0;
	}
	/* The body class is what out-specifies the 160px #campaigns-list rule. */
	body.tc-aff-reskin .tc-aff-options-page #campaigns-list .box-list-product-row .list-product-thumbnail {
		width: 48px;
		height: 48px;
		min-width: 48px;
		flex: 0 0 auto;
		margin: 0;
		border-radius: 8px;
		box-shadow: inset 0 0 0 1px #e8ecef;
		/* Its own 20px export — the desktop asset is drawn at 96 and its 1px strokes vanish scaled down. */
		background-image: url("/static/icons/affiliates/avatar-person-sm.svg");
		background-size: 20px 20px;
	}
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-additional {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: center;
		column-gap: 8px;
		row-gap: 4px;
		padding: 0;
		flex: 1 1 0;
	}
	/* Name and label are two wrappers deep and render inline, so the label lands inside the ellipsised name box. Flattening makes them siblings; none of the three has a ::before/::after to lose. */
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-additional > .list-product-aligner,
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-aligner > .list-product-title,
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-title > .list-product-name-wrap { display: contents; }
	/* Flattened the DOM reads name, label, badge — the badge belongs between them. */
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-additional .list-product-name-el { order: 0; }
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-additional > .ribbon { order: 1; flex: 0 0 auto; margin-left: auto; }
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-additional .ribbon span { padding: 2px 8px; }
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-additional .list-product-label-el,
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-additional > .tc-aff-options-sub { order: 2; flex: 1 1 100%; min-width: 100%; }
	/* Capped so a long name ellipsises instead of pushing the badge off the row. */
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-title .list-product-name-el,
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-additional .list-product-name-el {
		min-width: 0;
		max-width: 160px;
		font-size: 15px;
		font-weight: 600;
		line-height: normal;
		color: #2a3648;
	}
	/* Products and funnels carry the second line as .list-product-label-el; the tab's JS builds .tc-aff-options-sub for rows that don't. */
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-title .list-product-label-el,
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-additional .list-product-label-el,
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-additional .tc-aff-options-sub {
		display: block;
		margin: 0;
		font-size: 13px;
		font-weight: 400;
		line-height: normal;
		letter-spacing: normal;
		color: #8493a8;
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}

	/* The divider is this row's own top border, so the card's 14px gap sits above it and 13 + the border below. */
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions {
		display: flex;
		flex: 0 0 auto;
		width: auto;
		/* Desktop pins it top-right; here it has to take the column's stretch. */
		align-self: stretch;
		align-items: center;
		/* Two groups, three children — the pair sits left and the kebab is pushed over by its own auto margin. */
		justify-content: flex-start;
		gap: 8px;
		padding: 13px 0 0;
		margin: 0;
		border-top: 1px solid #e8ecef;
	}
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .pure-button.button-primary {
		flex: 0 0 auto;
		width: auto;
		justify-content: flex-start;
		min-height: 0;
	}
	/* Mobile uses a send arrow where desktop has the open-in-new box. */
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .ui-affiliates-campaigns-embed::before {
		background-image: url("/static/icons/affiliates/signup-url-send.svg");
		background-size: 12.97px 11.31px;
	}
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .tc-aff-options-copy {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		box-sizing: border-box;
		flex: 0 0 auto;
		width: 32px;
		height: 32px;
		min-height: 0;
		margin: 0;
		padding: 8px;
		border: 0;
		border-radius: 6px;
		background: #f6f8f9;
		box-shadow: inset 0 0 0 1px #d1d7de;
		font-size: 0;
		text-shadow: none;
		cursor: pointer;
	}
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .tc-aff-options-copy::before {
		content: '';
		width: 16px;
		height: 16px;
		background: url("/static/icons/affiliates/copy-all.svg") no-repeat center;
		background-size: 11.33px 13.33px;
	}

	/* Bare more_horiz instead of the desktop bordered kebab. Same element, same submenu, same handlers. */
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .button-submenu {
		width: 24px;
		height: 24px;
		min-height: 0;
		margin-left: auto;
		padding: 0;
		border-radius: 0;
		background: transparent;
		box-shadow: none;
	}
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .button-submenu::before {
		width: 24px;
		height: 24px;
		background-image: url("/static/icons/affiliates/row-kebab-h.svg");
		background-size: 16px 4px;
	}
	/* The hover bridge back up to the trigger shortens by the 8px the button lost. */
	.tc-aff-options-page #campaigns-list .box-list-product-row .list-product-actions .button-submenu .button-submenu-list::before {
		top: -28px;
		height: 28px;
	}

	.tc-aff-options-page .tc-aff-options-foot { padding-bottom: 12px; }
	.tc-aff-options-page .tc-aff-options-foot ul.pagination li.active a,
	.tc-aff-options-page .tc-aff-options-foot ul.pagination li.active span {
		padding: 6px 12px;
		background: #006b70;
		box-shadow: none;
		font-size: 13px;
		font-weight: 600;
		color: #ffffff;
	}

	/* -- Rules ----------------------------------------------------------- */
	/* Two inline segments, not two full-width blocks. */
	/* They sum to ~398 in a 358 row; the frame clips rather than stacks, so it scrolls. */
	.tc-affiliates-page .tc-aff-segmented {
		flex-wrap: nowrap;
		gap: 12px;
		align-items: center;
		overflow-x: auto;
		scrollbar-width: none;
	}
	.tc-affiliates-page .tc-aff-segmented::-webkit-scrollbar { display: none; }
	.tc-affiliates-page .tc-aff-seg-item { flex: 0 0 auto; width: auto; min-height: 0; }
	.tc-affiliates-page .tc-aff-segmented > .pure-button { flex: 0 0 auto; }

	/* The wrapper was 60 tall, r6 and borderless. */
	.tc-affiliates-page form.tc-aff-toolbar .tc-aff-table-search {
		display: flex;
		align-items: center;
		gap: 12px;
		box-sizing: border-box;
		width: 100%;
		height: 48px;
		min-height: 0;
		padding: 14px 12px;
		border: 0;
		border-radius: 8px;
		background: #ffffff;
		box-shadow: inset 0 0 0 1px #d1d7de;
	}
	.tc-affiliates-page form.tc-aff-toolbar .tc-aff-table-search::before {
		content: '';
		flex: 0 0 auto;
		width: 16px;
		height: 16px;
		background: url("/static/icons/affiliates/search.svg") no-repeat center;
		background-size: 16px 16px;
	}
	/* Carries the input's id — the legacy 12px rule is id-scoped. */
	.tc-affiliates-page form.tc-aff-toolbar .tc-aff-table-search > input,
	.tc-affiliates-page form.tc-aff-toolbar .tc-aff-table-search > input#affiliates-payouts-filters-search-query {
		flex: 1 1 0;
		min-width: 0;
		box-sizing: border-box;
		height: auto;
		min-height: 0;
		margin: 0;
		padding: 0;
		border: 0;
		border-radius: 0;
		background: transparent;
		box-shadow: none;
		font-size: 14px;
		line-height: 20px;
		letter-spacing: normal;
		color: #364152;
	}
	.tc-affiliates-page form.tc-aff-toolbar .tc-aff-table-search > input::placeholder { color: #afbbc9; }

	/* 36-tall controls; the group's radii and shared borders already match. */
	/* Siblings in one wrap container, so a single gap would serve both axes. */
	.tc-affiliates-page form.tc-aff-toolbar .tc-aff-toolbar-right { row-gap: 12px; column-gap: 4px; }
	/* The count sits above the search in the frame; it is rendered but hidden here. */
	.tc-affiliates-page form.tc-aff-toolbar { flex-wrap: wrap; row-gap: 12px; }
	.tc-affiliates-page form.tc-aff-toolbar > .tc-aff-table-count {
		display: block;
		flex: 1 1 100%;
		margin: 0;
		font-size: 14px;
		font-weight: 400;
		line-height: normal;
		letter-spacing: normal;
		color: #2a3648;
	}
	.tc-affiliates-page form.tc-aff-toolbar .tc-aff-btn-sort {
		box-sizing: border-box;
		height: 36px;
		min-height: 0;
		padding: 10px 18px;
		border-radius: 8px;
		font-size: 14px;
		line-height: 16px;
	}
	/* Idle segments are white in the frame; the grey is reserved for .active. */
	.tc-affiliates-page form.tc-aff-toolbar .tc-aff-btngroup-seg {
		box-sizing: border-box;
		height: 36px;
		min-height: 0;
		background: #ffffff;
	}
	.tc-affiliates-page form.tc-aff-toolbar .tc-aff-btngroup-seg.active { background: #f6f8f9; }

	/* Its -97.5px top margin was sized to the old 80px footer and now drags it over. */
	.tc-affiliates-page #affiliates-payouts-masspay-actions { margin-top: 0; }

	/* Identified by the pager it holds; sibling .pure-g.pure-form rows are unrelated. */
	.tc-affiliates-page .pure-g.pure-form:has(> .pure-u-18-24 > ul.pagination) {
		display: flex;
		flex-direction: row;
		flex-wrap: nowrap;
		align-items: center;
		justify-content: space-between;
		gap: 8px;
	}
	.tc-affiliates-page .pure-g.pure-form:has(> .pure-u-18-24 > ul.pagination) > .tc-aff-perpage {
		flex: 0 0 auto;
		align-items: center;
		height: 32px;
		min-height: 0;
	}
	.tc-affiliates-page .pure-g.pure-form:has(> .pure-u-18-24 > ul.pagination) > .tc-aff-perpage select {
		flex: 0 0 auto;
		align-self: center;
		box-sizing: border-box;
		width: 72px;
		min-width: 72px;
		height: 32px;
		min-height: 32px;
		padding: 6px 8px;
	}
	.tc-affiliates-page .pure-g.pure-form:has(> .pure-u-18-24 > ul.pagination) > [class*="pure-u"] { flex: 0 0 auto; width: auto; }

	/* Amount above the actions, View a compact pill rather than a full-width bar. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page ul.payouts-list > li.payouts-list-row {
		padding: 12px 20px;
		border-radius: 12px;
		/* On the grey band the card takes the frame's darker #8493a8 hairline. */
		box-shadow: inset 0 0 0 1px #8493a8;
		min-height: 256px;
		box-sizing: border-box;
	}
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-affiliate-name {
		font-size: 16px;
		font-weight: 700;
		line-height: normal;
		letter-spacing: normal;
		color: #2a3648;
	}
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-row-affiliate-email {
		font-size: 13px;
		font-weight: 400;
		line-height: normal;
		letter-spacing: normal;
		color: #006b70;
	}
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page ul.payouts-list > li.payouts-list-row .payout-column-amount span.payout-row-commission-amount {
		font-size: 18px;
		font-weight: 700;
		line-height: normal;
		letter-spacing: normal;
		color: #2a3648;
	}
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page ul.payouts-list > li.payouts-list-row .payout-column-amount span.payout-row-commission-date {
		font-size: 12px;
		font-weight: 400;
		line-height: normal;
		letter-spacing: normal;
		color: #8493a8;
	}
	/* Amount stack fills the band; the frame pins View+kebab absolute to its right. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-amount { order: 3; padding-right: 130px; }
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-action {
		position: absolute;
		right: 20px;
		bottom: 12px;
		width: auto;
		flex: 0 0 auto;
		display: flex;
		align-items: center;
		gap: 8px;
	}
	/* View uses the eye, not the desktop external-link box. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-action .ui-order-more::before {
		width: 14px;
		height: 14px;
		background-image: url("/static/icons/affiliates/row-view-eye.svg");
		background-size: 12.83px 8.75px;
	}
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-action .ui-order-more { color: #2a3648; }
	/* Frame's kebab is plain dots beside the bordered View, no box of its own. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .tc-aff-row-kebab {
		width: auto;
		height: auto;
		padding: 4px;
		border: 0;
		background: transparent;
	}
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .tc-aff-row-kebab::before {
		width: 18px;
		height: 18px;
		background-image: url("/static/icons/affiliates/row-kebab-vert.svg");
		background-size: 3px 12px;
	}
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .tc-aff-row-kebab:hover { background: transparent; }
	/* overflow:clip hid the absolute dropdown; on mobile the menu is a fixed bottom sheet (same buttons/handlers). */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .tc-aff-kebab-menu:not(.hidden) {
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		top: auto;
		width: 100%;
		min-width: 0;
		box-sizing: border-box;
		margin: 0;
		padding: 8px 16px calc(20px + env(safe-area-inset-bottom, 0px));
		border: 0;
		border-radius: 16px 16px 0 0;
		gap: 4px;
		z-index: 9999;
		box-shadow: 0 -2px 24px rgba(0, 0, 0, 0.16);
		animation: tc-aff-sheet-up 0.24s ease;
	}
	/* Dim backdrop; a tap on it bubbles to the document handler that closes the menu. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .tc-aff-kebab-menu:not(.hidden)::after {
		content: '';
		position: fixed;
		inset: 0;
		z-index: -1;
		background: rgba(15, 23, 42, 0.45);
	}
	/* Grab handle. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .tc-aff-kebab-menu:not(.hidden)::before {
		content: '';
		align-self: center;
		width: 36px;
		height: 4px;
		margin: 0 0 8px;
		border-radius: 999px;
		background: #d1d7de;
	}
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .tc-aff-kebab-menu:not(.hidden) .pure-button {
		width: 100%;
		justify-content: flex-start;
		min-height: 52px;
		padding: 14px 12px;
		font-size: 16px;
		border-radius: 8px;
	}
	/* Avatar is the frame's 48 tile with the person glyph, not the raw gravatar. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page ul.payouts-list > li.payouts-list-row .payout-column-thumbnail > img {
		width: 48px;
		height: 48px;
		min-width: 48px;
		border-radius: 8px;
		background-color: #f6f8f9;
		background-image: url("/static/icons/affiliates/avatar-person-sm.svg");
		background-repeat: no-repeat;
		background-position: center;
		background-size: 20px 20px;
		box-shadow: inset 0 0 0 1px #e8ecef;
	}
	/* The 44px column was cropping the 48px avatar inside it. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page ul.payouts-list > li.payouts-list-row .payout-column-thumbnail {
		width: 48px;
		height: 48px;
		border-radius: 8px;
	}
	/* Drop the legacy 16px indent so the name starts one 12px gap after the avatar. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page ul.payouts-list > li.payouts-list-row .payout-column-affiliate { display: flex; flex-direction: column; align-items: flex-start; padding-left: 0; }
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page ul.payouts-list > li.payouts-list-row .payout-column-affiliate > .ribbon {
		position: static;
		inset: auto;
		order: 3;
		margin: 6px 0 0;
		width: auto;
		height: auto;
	}
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page ul.payouts-list > li.payouts-list-row .payout-column-affiliate > .payout-row-affiliate-name { order: 1; }
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page ul.payouts-list > li.payouts-list-row .payout-column-affiliate > .payout-row-affiliate-email { order: 2; margin-top: 6px; }
	/* Commission is a full-width block under the avatar row, not part of the name column. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page ul.payouts-list > li.payouts-list-row .payout-column-affiliate > .payout-row-affiliate-for {
		order: 4;
		margin-top: 16px;
		margin-left: -60px;
		width: calc(100% + 60px);
		/* The flex column stretched this block ~36px; fit-content pins it to content. */
		height: fit-content;
	}
	/* The markup has these inline as "Commission: <b>name</b>". */
	/* line-height:0 collapses the hidden "Commission:" text's phantom line (label/product set their own). */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page ul.payouts-list > li.payouts-list-row span.payout-row-affiliate-for { display: block; font-size: 0; line-height: 0; }
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page ul.payouts-list > li.payouts-list-row span.payout-row-affiliate-for::before {
		content: 'Commission';
		display: block;
		margin-bottom: 4px;
		font-size: 11px;
		font-weight: 600;
		line-height: normal;
		letter-spacing: 0.22px;
		text-transform: uppercase;
		color: #8493a8;
	}
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page ul.payouts-list > li.payouts-list-row span.payout-row-affiliate-for > b {
		display: block;
		font-size: 13px;
		font-weight: 400;
		line-height: normal;
		letter-spacing: normal;
		color: #364152;
	}
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .payouts-list-row .payout-column-action > .pure-button {
		flex: 0 0 auto;
		width: auto;
		box-sizing: border-box;
		height: auto;
		min-height: 0;
		padding: 6px 12px;
		border-radius: 6px;
		font-size: 13px;
		font-weight: 500;
		line-height: normal;
	}
	/* Add + Save on one row; the id beats the base flex-end. */
	.tc-affiliates-page #view-affiliates-rules .tc-aff-rules-actions { flex-direction: row; align-items: center; justify-content: space-between; gap: 12px; }
	.tc-affiliates-page .tc-aff-rules-actions .pure-button,
	.tc-affiliates-page .tc-aff-rules-actions button { width: auto; justify-content: center; min-height: 36px; }
	.tc-affiliates-page #view-affiliates-rules .tc-aff-rules-actions .ui-autoresponder-add { background: transparent; box-shadow: none; border: 0; padding: 10px 18px; font-weight: 600; border-radius: 8px; }
	.tc-affiliates-page #view-affiliates-rules .tc-aff-rules-actions .ui-save { padding: 10px 18px; border-radius: 8px; }
	.tc-affiliates-page .tc-aff-panels { grid-template-columns: 1fr; }
	/* Rule edit form: the content is a flex ROW — make it a column so the
	   "When an affiliate"/"For" pair (For was truncated) stacks full-width. */
	.tc-affiliates-page #view-affiliates-rules .ui-autoresponder-content { flex-direction: column; align-items: stretch; }
	.tc-affiliates-page #view-affiliates-rules .ui-autoresponder-content > *,
	.tc-affiliates-page #view-affiliates-rules .ui-autoresponder-content .ui-autoresponder-block,
	.tc-affiliates-page #view-affiliates-rules .ui-autoresponder-content .ui-autoresponder-provider-block,
	.tc-affiliates-page #view-affiliates-rules .ui-autoresponder-content .ui-autoresponder-blocked { display: block; width: 100%; min-width: 0; float: none; margin-left: 0; box-sizing: border-box; }
	.tc-affiliates-page #view-affiliates-rules .ui-autoresponder-content select { width: 100%; min-width: 100%; margin-left: 0; box-sizing: border-box; min-height: 44px; }
	.tc-affiliates-page #view-affiliates-rules .ui-autoresponder-content textarea { width: 100%; box-sizing: border-box; }
	.tc-affiliates-page #view-affiliates-rules .ui-autoresponder-row { padding: 16px; }
	.tc-affiliates-page #view-affiliates-rules .ui-autoresponder-content { gap: 16px; }
	/* The stack rule forces these to block, killing the gap — restore flex-column. */
	.tc-affiliates-page #view-affiliates-rules .ui-autoresponder-content > [class*="-selector-wrap"] { display: flex; flex-direction: column; gap: 6px; }
	.tc-affiliates-page #view-affiliates-rules .ui-autoresponder-content > [class*="-selector-wrap"] > div:first-child { font-size: 13px; font-weight: 500; line-height: normal; color: #8493a8; }
	/* This label sits outside a selector-wrap, so the rule above misses it (was inheriting a legacy 1.4em/18px). */
	.tc-affiliates-page #view-affiliates-rules .ui-autoresponder-content .ui-autoresponder-html-post { font-size: 13px; font-weight: 500; line-height: normal; color: #8493a8; margin: 0; }
	.tc-affiliates-page #view-affiliates-rules .ui-autoresponder-content select { min-height: 48px; padding: 14px 36px 14px 12px; }
	/* Full-width card: transparent container, no gutter, no grey page. */
	.tc-affiliates-page #view-affiliates-rules .box { background: transparent; margin: 0 -16px; padding: 0; box-sizing: border-box; }
	.tc-affiliates-page #view-affiliates-rules .ui-autoresponder-opts { padding: 0; }
	/* Closed box — border on all 4 sides, no radius. */
	.tc-affiliates-page #view-affiliates-rules .ui-autoresponder-row {
		margin: 0;
		border: 1px solid #e8ecef;
		border-radius: 0;
		box-shadow: none;
	}
	/* Pulled up 1px so the top border overlaps the card's bottom border — one seam, not a stacked 2px line. */
	.tc-affiliates-page #view-affiliates-rules .tc-aff-rules-actions {
		margin: -1px 0 0;
		padding: 16px 16px calc(24px + env(safe-area-inset-bottom, 0px));
		background: #ffffff;
		border-radius: 0;
		border-top: 1px solid #e8ecef;
		box-shadow: none;
	}
	/* "Remove" (not "Remove rule") — swapped via ::before so the handler and desktop copy stay intact. */
	.tc-affiliates-page #view-affiliates-rules .ui-autoresponder-row .ui-autoresponder-kill { top: 16px; right: 16px; width: auto; display: inline-flex; color: #b30606; font-size: 13px; }
	.tc-affiliates-page #view-affiliates-rules .ui-autoresponder-row .ui-autoresponder-kill > span { font-size: 0; }
	.tc-affiliates-page #view-affiliates-rules .ui-autoresponder-row .ui-autoresponder-kill > span::before { content: "Remove"; font-size: 13px; font-weight: 500; }
	/* Heading's gap-20 to the fields comes off its margin-bottom (card is block). */
	.tc-affiliates-page #view-affiliates-rules .ui-autoresponder-row .tc-aff-rule-title { font-size: 16px; font-weight: 600; line-height: normal; color: #2a3648; margin-bottom: 20px; }

	/* Sort / Filter dropdown panels: stack the controls full-width so the
	   selected value (e.g. "Descending") isn't truncated. */
	.tc-affiliates-page .affiliates-sort .pure-form,
	.tc-affiliates-page .tc-aff-sort-panel .pure-form { flex-direction: column; align-items: stretch; gap: 8px; }
	.tc-affiliates-page .affiliates-sort .pure-form select,
	.tc-affiliates-page .tc-aff-sort-panel select,
	.tc-affiliates-page .tc-aff-filter-panel select { width: 100%; min-width: 100%; box-sizing: border-box; min-height: 44px; }

	/* -- Create affiliate modal: comfortable footer touch targets -------- */
	.tc-affiliates-page .tc-aff-create-foot { gap: 8px; }
	.tc-affiliates-page .tc-aff-create-foot .pure-button,
	.tc-affiliates-page .tc-aff-create-foot button { flex: 1 1 0; justify-content: center; min-height: 44px; }
	.tc-affiliates-page .tc-aff-create-tabs { overflow-x: auto; scrollbar-width: none; }
	.tc-affiliates-page .tc-aff-create-tabs::-webkit-scrollbar { display: none; }
	/* Product-access toolbar (Create modal's Product Access tab + Import modal):
	   count + Select-all stay on row 1; the search wraps full-width below so it
	   isn't squeezed to ~94px. Scoped to the reskin body — the Import modal is an
	   alertify dialog appended outside .tc-affiliates-page. */
	body.tc-aff-reskin .tc-aff-access-toolbar { flex-wrap: wrap; gap: 8px 10px; }
	/* Desktop pushes "Select all products" flush-right; at phone width it pins
	   against the modal edge (~1px margin, reads as clipped). Give the count its
	   own first row so the select-all control wraps below it with breathing room. */
	body.tc-aff-reskin .tc-aff-access-toolbar .tc-aff-access-count { flex: 1 1 100%; }
	body.tc-aff-reskin .tc-aff-access-toolbar .tc-aff-access-selectall { margin-left: 0; order: 2; }
	body.tc-aff-reskin .tc-aff-access-toolbar .tc-aff-table-search { flex: 1 1 100%; width: 100%; order: 3; }
	body.tc-aff-reskin .tc-aff-access-toolbar .tc-aff-table-search input { min-width: 100%; width: 100%; box-sizing: border-box; min-height: 40px; }

	/* -- Profile (per-affiliate view) ------------------------------------ */
	/* Header row: desktop keeps the avatar+name block and the PayPal badge on one
	   line (badge pushed right by margin-left:auto). At phone width that starves
	   the name column to ~73px, wrapping "Modal Test Affiliate" onto three lines.
	   Let the header wrap, give the avatar+name block the full width, and drop the
	   badge to its own line. */
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .affiliates-refine { flex-wrap: wrap; }
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .affiliates-refine > .ui-personal-block { width: 100%; }
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .ui-personal-block .info { overflow: visible; }
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .tc-aff-profile-paypal { margin-left: 0; }
	.tc-affiliates-page .tc-aff-profile-actions { flex-direction: column; align-items: stretch; gap: 8px; }
	.tc-affiliates-page .tc-aff-profile-actions .pure-button,
	.tc-affiliates-page .tc-aff-profile-actions button { width: 100%; justify-content: center; min-height: 44px; }
	/* The whole profile body is one grid (#affiliate-dashboard-grid) laid out
	   repeat(3, 1fr); the .pure-g/.info wrappers are display:contents pass-
	   throughs. Collapse to a single column so stat + product cards stack.
	   The desktop rule chains two IDs (#view-affiliate #affiliate-dashboard-
	   grid) so this must match both IDs plus a class to win. */
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate #affiliate-dashboard-grid { grid-template-columns: 1fr; gap: 12px; }
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate #affiliate-dashboard-grid .pure-u-1-2 { width: auto; }
	/* The affiliate-name H1 is white-space:nowrap on desktop — let it wrap. */
	.tc-affiliates-page #affiliate-dashboard-grid h1 { white-space: normal; min-width: 0; overflow-wrap: anywhere; }
	/* The affiliate stat strip is a nowrap clearfix <ul> of ~10 cells with wide
	   currency values — lay it out as a 2-col grid so nothing clips. The
	   desktop rule chains #view-affiliate, so match the ID + profile class. */
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-overview .affiliates-list-stats ul.self-clear { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 12px; }
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-overview .affiliates-list-stats ul.self-clear::before,
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-overview .affiliates-list-stats ul.self-clear::after { display: none; }
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-overview .affiliates-list-stats ul.self-clear > li { width: auto; min-width: 0; float: none; }
	/* Profile sub-tabs ran 410 wide inside a 390 viewport. */
	.tc-aff-profile-page #view-affiliate > .box.box-tabbed > ul.tabs {
		display: flex;
		gap: 0;
		width: auto;
		margin: 0 -16px;
		padding: 0;
		background: #ffffff;
		border-bottom: 1px solid #d1d7de;
		overflow: visible;
	}
	.tc-aff-profile-page #view-affiliate > .box.box-tabbed > ul.tabs > li {
		flex: 1 1 0;
		min-width: 0;
		box-sizing: border-box;
		margin: 0;
		padding: 10px 12px 8px;
		text-align: center;
		font-size: 13px;
		font-weight: 500;
		line-height: normal;
		letter-spacing: normal;
		color: #8493a8;
		border-bottom: 2px solid transparent;
	}
	.tc-aff-profile-page #view-affiliate > .box.box-tabbed > ul.tabs > li.active {
		padding: 10px 12px 8px;
		color: #2a3648;
		border-bottom-color: #006b70;
	}

	/* Commission history card. The markup is a legacy .empty-state. */
	.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-commissions .empty-state-help {
		display: flex;
		flex-direction: column;
		align-items: stretch;
		gap: 12px;
		box-sizing: border-box;
		padding: 20px 16px;
		border-radius: 12px;
		background: #ffffff;
		box-shadow: inset 0 0 0 1px #e8ecef, 0 1px 2px 0 rgba(0, 0, 0, 0.05);
		text-align: center;
	}
	.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-commissions .empty-state-help > h2 {
		margin: 0;
		font-size: 15px;
		font-weight: 500;
		line-height: 22px;
		letter-spacing: normal;
		color: #2a3648;
	}
	.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-commissions .empty-state-help > p {
		margin: 0;
		font-size: 13px;
		font-weight: 400;
		line-height: 20px;
		letter-spacing: normal;
		color: #364152;
	}
	.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-commissions .empty-state-help > .pure-button {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		gap: 4px;
		box-sizing: border-box;
		align-self: center;
		width: auto;
		height: 32px;
		min-height: 0;
		margin: 0;
		padding: 8px 12px;
		border: 0;
		border-radius: 6px;
		background: #006b70;
		font-size: 14px;
		font-weight: 500;
		line-height: 16px;
		color: #ffffff;
		text-shadow: none;
	}
	/* Open-in-new where the markup has a chevron; white-filled for the teal button. */
	.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-commissions .empty-state-help > .pure-button > i {
		width: 16px;
		height: 16px;
		margin: 0;
		background: url("/static/icons/affiliates/signup-url-white.svg") no-repeat center;
		background-size: 12px 12px;
		font-size: 0;
	}
	.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-commissions .empty-state-help > .pure-button > i::before { content: none; }

	/* Commissions uses the full-width card, not the Overview tab's compact grid. */
	.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-commissions .affiliates-list-stats ul.self-clear {
		display: grid;
		grid-template-columns: 1fr;
		gap: 12px;
	}
	.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-commissions .affiliates-list-stats ul.self-clear::before,
	.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-commissions .affiliates-list-stats ul.self-clear::after { display: none; }
	.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-commissions .affiliates-list-stats ul.self-clear > li {
		display: flex;
		flex-direction: column;
		align-items: flex-start;
		justify-content: center;
		gap: 4px;
		box-sizing: border-box;
		width: auto;
		min-width: 0;
		min-height: 0;
		float: none;
		padding: 16px;
		border-radius: 12px;
		background: #ffffff;
		box-shadow: inset 0 0 0 1px #d1d7de, 0 1px 1px rgba(0, 0, 0, 0.05);
	}
	.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-commissions .affiliates-list-stats ul.self-clear > li h6 {
		order: 0;
		margin: 0;
		font-size: 12px;
		font-weight: 600;
		line-height: 16px;
		letter-spacing: 0.48px;
		text-transform: uppercase;
		color: #8493a8;
	}
	/* The value paints from a bind-html span carrying its own size, not from the h5. */
	.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-commissions .affiliates-list-stats ul.self-clear > li h5,
	.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-commissions .affiliates-list-stats ul.self-clear > li h5 span,
	.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-commissions .affiliates-list-stats ul.self-clear > li h5 em {
		order: 1;
		margin: 0;
		font-size: 20px;
		font-weight: 600;
		line-height: 28px;
		letter-spacing: normal;
		color: #364152;
	}

	.tc-affiliates-page .affiliates-list-stats .large-number { min-width: 0; }
	.tc-affiliates-page .tc-aff-card-actions { flex-wrap: wrap; gap: 8px; }
	.tc-affiliates-page .tc-aff-card-actions .pure-button,
	.tc-affiliates-page .tc-aff-card-actions button { flex: 1 1 auto; justify-content: center; min-height: 40px; }
	/* Profile sub-tabs (Overview/Commissions/Payments) → scrollable pills. */
	.tc-affiliates-page .tc-aff-profile-page ul.tabs { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
	.tc-affiliates-page .tc-aff-profile-page ul.tabs::-webkit-scrollbar { display: none; }
	.tc-affiliates-page .tc-aff-profile-page ul.tabs > li { flex: 0 0 auto; }

	/* Currency and timeframe get a full-width line each rather than sharing a row. */
	.tc-aff-profile-page .tc-aff-head .tc-aff-head-controls { flex-direction: column; align-items: stretch; gap: 16px; }
	.tc-aff-profile-page .tc-aff-head .tc-aff-head-controls > .tc-aff-pill { width: 100%; }
	.tc-aff-profile-page .tc-aff-head .tc-aff-head-controls > .tc-aff-pill select { width: 100%; min-width: 100%; box-sizing: border-box; height: 32px; min-height: 0; }

	/* The header block becomes a card: avatar + identity, quick links, connect button. */
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .affiliates-refine {
		display: flex;
		flex-direction: column;
		align-items: stretch;
		gap: 16px;
		padding: 16px;
		border-radius: 12px;
		background: #ffffff;
		box-shadow: inset 0 0 0 1px #e8ecef;
		text-align: left;
	}
	/* Spacing hangs off the payout button; the collapsed picker between them was collecting the gap twice. */
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .affiliates-refine { display: block; }
	/* Collapsed it is still an inline-block, so it holds a ~20px line box open. */
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .affiliates-refine > #stats-date-range { display: block; }
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .affiliates-refine > .tc-aff-profile-paypal { margin-top: 16px; }
	/* Quick Links is a sibling of the identity row in the design but a child of .info here. */
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .affiliates-refine > .ui-personal-block {
		display: grid;
		grid-template-columns: 48px 1fr;
		/* Auto rows sized themselves off the VIP badge and ran 9px over the frame. */
		grid-template-rows: 22px 16px auto;
		column-gap: 12px;
		row-gap: 4px;
		align-items: center;
		width: 100%;
		float: none;
		margin: 0;
	}
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .ui-personal-block > img { grid-column: 1; grid-row: 1 / 3; }
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .info .tc-aff-profile-name-row { grid-column: 2; grid-row: 1; }
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .info .ui-affiliate-affiliate_id { grid-column: 2; grid-row: 2; }
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .info .tc-aff-profile-actions { grid-column: 1 / 3; grid-row: 3; margin-top: 12px; }
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .ui-personal-block > img {
		width: 48px;
		height: 48px;
		min-width: 48px;
		flex: 0 0 auto;
		margin: 0;
		border-radius: 8px;
		object-fit: cover;
		/* The desktop illustration is drawn for a 120px tile and spills out of a 48. */
		background-color: #f6f8f9;
		background-image: url("/static/icons/affiliates/avatar-person-sm.svg");
		background-position: center;
		background-repeat: no-repeat;
		background-size: 24px 24px;
	}
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .ui-personal-block .info { display: contents; }
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .info .tc-aff-profile-name-row { display: flex; align-items: center; gap: 6px; margin: 0; }
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .info .ui-affiliate-name {
		font-size: 18px;
		font-weight: 600;
		line-height: normal;
		letter-spacing: normal;
		color: #2a3648;
	}
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .info .ui-affiliate-affiliate_id {
		font-size: 13px;
		font-weight: 400;
		line-height: normal;
		letter-spacing: normal;
		color: #8493a8;
	}
	/* Quick links sit on one row here, where the narrow-screen fallback stacked them. */
	.tc-affiliates-page.tc-aff-profile-page .tc-aff-profile-actions { flex-direction: row; align-items: flex-start; gap: 16px; }
	.tc-affiliates-page.tc-aff-profile-page .tc-aff-profile-actions .pure-button,
	.tc-affiliates-page.tc-aff-profile-page .tc-aff-profile-actions button {
		width: auto;
		flex: 0 0 auto;
		box-sizing: border-box;
		height: 28px;
		min-height: 0;
		padding: 6px 8px;
		border-radius: 6px;
		font-size: 12px;
		font-weight: 500;
		line-height: 16px;
	}
	.tc-affiliates-page.tc-aff-profile-page .tc-aff-profile-actions .tc-aff-profile-delete {
		display: inline-flex;
		align-items: center;
		gap: 4px;
		height: 28px;
		padding: 6px 8px;
		border-radius: 6px;
		font-size: 12px;
		font-weight: 500;
		line-height: 16px;
	}
	/* Colour stays state-driven; red still means inactive. */
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .tc-aff-profile-paypal { display: block; width: 100%; margin: 0; }
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .tc-aff-profile-paypal > .pure-button {
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 4px;
		box-sizing: border-box;
		width: 100%;
		height: 36px;
		min-height: 0;
		padding: 10px 18px;
		border-radius: 8px;
		font-size: 14px;
		font-weight: 500;
		line-height: 16px;
	}
	/* The legacy error tint reads as a banner rather than an action. */
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate .tc-aff-profile-paypal > .pure-button.button-error {
		background: #d13f36;
		color: #ffffff;
	}

	/* One grid across both blocks; separately each would orphan its fifth card. */
	.tc-aff-profile-page .tc-aff-profile-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
	/* Carries #view-affiliate so it outranks the earlier rule that grids each ul. */
	.tc-aff-profile-page #view-affiliate .tc-aff-profile-stats > .affiliates-list-stats,
	.tc-aff-profile-page #view-affiliate .tc-aff-profile-stats > .affiliates-list-stats > ul.self-clear { display: contents; }
	/* Re-assert contents on the overview tab (its own ul-grid rule out-specifies the line above), else each block collapses to one 175px cell — 4 cramped columns. */
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-overview .tc-aff-profile-stats > .affiliates-list-stats > ul.self-clear { display: contents; }
	.tc-aff-profile-page .tc-aff-profile-stats-head {
		display: block;
		grid-column: 1 / -1;
		margin: 0 0 17px;
		font-size: 14px;
		font-weight: 600;
		line-height: normal;
		letter-spacing: 0.4px;
		text-transform: uppercase;
		color: #8493a8;
	}

	/* Stat cards: 12px box, 10px label over a 16px value. */
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-overview .affiliates-list-stats ul.self-clear { gap: 8px; }
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-overview .affiliates-list-stats ul.self-clear > li {
		display: flex;
		flex-direction: column;
		align-items: flex-start;
		gap: 4px;
		box-sizing: border-box;
		min-height: 0;
		padding: 12px;
		border-radius: 0;
		background: #ffffff;
		box-shadow: inset 0 0 0 1px #e8ecef;
	}
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-overview .affiliates-list-stats ul.self-clear > li h6 {
		order: 0;
		margin: 0;
		font-size: 10px;
		font-weight: 600;
		line-height: normal;
		letter-spacing: 0.4px;
		text-transform: uppercase;
		color: #8493a8;
	}
	/* The value paints from a bind-html span carrying its own 20px, not from the h5. */
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-overview .affiliates-list-stats ul.self-clear > li h5,
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-overview .affiliates-list-stats ul.self-clear > li h5 span,
	.tc-affiliates-page.tc-aff-profile-page #view-affiliate #ui-affiliate-tab-overview .affiliates-list-stats ul.self-clear > li h5 em {
		order: 1;
		margin: 0;
		font-size: 16px;
		font-weight: 600;
		line-height: normal;
		letter-spacing: normal;
		color: #2a3648;
	}

	/* The parent is a bare .margin-top.margin-bottom; the select identifies it. */
	#ui-affiliate-tab-overview > div:has(> #affiliate-cookie-lifetime) {
		display: flex;
		flex-direction: column;
		align-items: stretch;
		gap: 4px;
		margin: 0;
		padding: 16px;
		border-radius: 12px;
		background: #ffffff;
		box-shadow: inset 0 0 0 1px #e8ecef;
	}
	#ui-affiliate-tab-overview > div:has(> #affiliate-cookie-lifetime) > h1 {
		margin: 0 0 8px;
		font-size: 16px;
		font-weight: 600;
		line-height: normal;
		letter-spacing: normal;
		color: #2a3648;
	}
	#ui-affiliate-tab-overview > div:has(> #affiliate-cookie-lifetime) > label {
		margin: 0;
		font-size: 16px;
		font-weight: 500;
		line-height: 24px;
		letter-spacing: normal;
		color: #2b384a;
	}
	#ui-affiliate-tab-overview > div:has(> #affiliate-cookie-lifetime) > select {
		box-sizing: border-box;
		width: 100%;
		height: auto;
		min-height: 0;
		margin: 0;
		padding: 8px;
		border: 1px solid #d1d7de;
		border-radius: 8px;
		font-size: 14px;
		font-weight: 400;
		line-height: 20px;
		color: #364152;
	}
	#ui-affiliate-tab-overview > div:has(> #affiliate-cookie-lifetime) > div:not(.pull-right):not(.clear) {
		margin: 0;
		font-size: 12px;
		font-weight: 400;
		line-height: 16px;
		letter-spacing: normal;
		color: #8493a8;
	}
	#ui-affiliate-tab-overview > div:has(> #affiliate-cookie-lifetime) > .pull-right { float: none; width: 100%; margin: 8px 0 0; }
	#ui-affiliate-tab-overview > div:has(> #affiliate-cookie-lifetime) .affiliate-settings-save {
		display: flex;
		align-items: center;
		justify-content: center;
		box-sizing: border-box;
		width: 100%;
		height: 32px;
		min-height: 0;
		margin: 0;
		padding: 8px 12px;
		border: 0;
		border-radius: 6px;
		background: #006b70;
		font-size: 14px;
		font-weight: 500;
		line-height: 16px;
		color: #ffffff;
		text-shadow: none;
	}

	/* .info passes through so a grid can place its children against the icon. */
	.tc-aff-profile-page #affiliate-dashboard-grid .affiliate-dashboard-grid-item {
		position: relative;
		display: grid;
		grid-template-columns: 36px 1fr;
		column-gap: 12px;
		row-gap: 2px;
		box-sizing: border-box;
		padding: 16px;
		border-radius: 12px;
		background: #ffffff;
		box-shadow: inset 0 0 0 1px #e8ecef;
	}
	.tc-aff-profile-page #affiliate-dashboard-grid .affiliate-dashboard-grid-item > .info { display: contents; }
	.tc-aff-profile-page #affiliate-dashboard-grid .affiliate-dashboard-grid-item > .thumbnail {
		grid-column: 1;
		grid-row: 1 / 3;
		align-self: center;
		width: 36px;
		height: 36px;
		min-width: 36px;
		margin: 0;
		border-radius: 0;
		background-color: #f6f8f9;
		background-size: 20px 20px;
	}
	.tc-aff-profile-page #affiliate-dashboard-grid .affiliate-dashboard-grid-item .info > h1 {
		grid-column: 2;
		grid-row: 1;
		margin: 0;
		font-size: 15px;
		font-weight: 600;
		line-height: normal;
		letter-spacing: normal;
		color: #2a3648;
	}
	.tc-aff-profile-page #affiliate-dashboard-grid .affiliate-dashboard-grid-item .info > .tc-aff-card-received {
		grid-column: 2;
		grid-row: 2;
		margin: 0;
		font-size: 12px;
		font-weight: 400;
		line-height: normal;
		letter-spacing: normal;
		color: #8493a8;
	}
	/* Referral reads as a filled strip across the card. */
	.tc-aff-profile-page #affiliate-dashboard-grid .affiliate-dashboard-grid-item .info > p.status:not(.status-secondtier) {
		grid-column: 1 / -1;
		grid-row: 3;
		margin: 10px 0 0;
		padding: 10px;
		background: #f6f8f9;
		font-size: 12px;
		font-weight: 400;
		line-height: normal;
		letter-spacing: normal;
		color: #364152;
	}
	.tc-aff-profile-page #affiliate-dashboard-grid .affiliate-dashboard-grid-item .info > .tc-aff-card-actions {
		grid-column: 1 / -1;
		grid-row: 4;
		display: flex;
		flex-wrap: nowrap;
		gap: 12px;
		margin: 10px 0 0;
	}
	.tc-aff-profile-page #affiliate-dashboard-grid .tc-aff-card-actions > .pure-button {
		flex: 1 1 0;
		min-width: 0;
		box-sizing: border-box;
		height: 32px;
		min-height: 0;
		margin: 0;
		padding: 8px 12px;
		border: 0;
		border-radius: 6px;
		background: #ffffff;
		box-shadow: inset 0 0 0 1px #e8ecef;
		font-size: 14px;
		font-weight: 500;
		line-height: 16px;
		color: #364152;
		text-shadow: none;
	}
	/* The info tooltip the design omits stays — pinned to the card corner. */
	.tc-aff-profile-page #affiliate-dashboard-grid .affiliate-dashboard-grid-item .html-tooltip-trigger { position: absolute; top: 16px; right: 16px; }

	/* -- Pagination ------------------------------------------------------ */
	/* Figma 2865-10248: per-page group flush left, prev/1/next flush right. */
	.tc-affiliates-page .tc-aff-list-foot { flex-wrap: nowrap; gap: 8px; justify-content: space-between; }
	.tc-affiliates-page .tc-aff-pagination { flex-wrap: wrap; gap: 10px; justify-content: center; }
	/* Figma 2865-10248: prev/next match the 32px page-number button, not a 40px tap target. */
	.tc-affiliates-page .tc-aff-page-nav a,
	.tc-affiliates-page .tc-aff-page-prev,
	.tc-affiliates-page .tc-aff-page-next { min-height: 32px; -webkit-tap-highlight-color: transparent; }

	/* Overview chart metrics: horizontal-scroll row, ~3 visible per screen. */
	/* Overview chart metrics — Figma metric cards: 120px bordered white cards (1px #e8ecef, radius 10, 12px padding, 4px inner gap) in a horizontal-scroll track (gap 10). #graph-dashboard-outer raises specificity over the per-metric `flex: 0 1 140px` desktop rules so cards keep their width and scroll. */
	.tc-affiliates-page #custom-tooltip .stat-wrapper { display: flex; flex-wrap: nowrap; overflow-x: auto; gap: 10px; padding-right: 0; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
	.tc-affiliates-page #custom-tooltip .stat-wrapper::-webkit-scrollbar { display: none; }
	.tc-affiliates-page #graph-dashboard-outer #custom-tooltip .stat-wrapper .stat { flex: 0 0 auto; width: 120px; min-width: 120px; min-height: 0; justify-content: flex-start; align-items: flex-start; gap: 4px; padding: 12px; background: #ffffff; border: 1px solid #e8ecef; border-radius: 10px; }
	.tc-affiliates-page #graph-dashboard-outer #custom-tooltip .stat-wrapper .stat.ui-active { padding: 12px; }
	.tc-affiliates-page #custom-tooltip .stat-wrapper .stat span { display: block; width: 100%; font-size: 9px; letter-spacing: 0.18px; line-height: normal; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
	.tc-affiliates-page #custom-tooltip .stat-wrapper .stat b { display: block; width: 100%; font-size: 15px; font-weight: 700; line-height: normal; color: #2a3648; }

	/* Chart card (Figma 2865-10231): white card, 1px #e8ecef border, 16px radius, subtle drop shadow. Only the chart wrapper — its sibling graph-tray holds the metric cards. Vertical padding only: the Chart.js canvas is locked to the slider's fixed width, so horizontal padding would clip the latest data point; the plot spans the card width. No overflow:hidden — the canvas is absolutely positioned, so clipping it collapses the card's height. */
	/* Pin the card height (Figma canvas 160px + 32 vertical padding) and make it the positioning context so the absolutely-positioned Chart.js canvas renders inside it instead of collapsing the card. */
	.tc-affiliates-page #graph-dashboard-outer .ui-statistics-graph-wrapper { background: #ffffff; border: 1px solid #e8ecef; border-radius: 16px; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); padding: 0; box-sizing: border-box; position: relative; min-height: 164px; }
	.tc-affiliates-page #graph-dashboard-outer .ui-statistics-graph-wrapper .ui-statistics-graph-slider,
	.tc-affiliates-page #graph-dashboard-outer .ui-statistics-graph-wrapper .graph-wrap { height: 144px; min-height: 144px; }
	/* The plot slider is absolutely positioned, so it ignores the card padding — nudge it down for even top/bottom breathing room (card 164 = 10 + 144 + 10). */
	.tc-affiliates-page #graph-dashboard-outer .ui-statistics-graph-wrapper .ui-statistics-graph-slider { top: 10px; }
	/* Legacy `#graph-dashboard-outer .box { min-height: 47em }` reserves ~611px for the tall desktop chart; the compact mobile chart hugs its content instead. */
	.tc-affiliates-page #graph-dashboard-outer .box.padding { min-height: 0; }

	/* Recommended programs: two-row horizontal-scroll carousel with the next column peeking. Overrides the shared single-column mobile grid (its !important). */
	/* Figma 2865-10272: 280px columns, two rows, 12px gap, cards flush to the 16px page edge. */
	.tc-affiliates-page .ui-recommended-products ul.recommended-products-grid { display: grid !important; grid-auto-flow: column; grid-template-columns: none !important; grid-template-rows: repeat(2, auto); grid-auto-columns: 280px; gap: 12px !important; overflow-x: auto; padding-left: 0 !important; padding-right: 0 !important; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
	.tc-affiliates-page .ui-recommended-products ul.recommended-products-grid::-webkit-scrollbar { display: none; }

	/* -- Modals → bottom sheets ------------------------------------------ */
	body.tc-aff-reskin .alertify .ajs-modal { padding: 0; }
	body.tc-aff-reskin .alertify .ajs-dialog { width: 100vw; max-width: 100vw; box-sizing: border-box; height: auto; min-height: 0; border-radius: 12px 12px 0 0; margin: 0; }
	body.tc-aff-reskin .alertify .ajs-footer .ajs-buttons .ajs-button,
	body.tc-aff-reskin .alertify .ajs-footer button { min-height: 44px; }
	.tc-aff-filter-modal .tc-aff-filter-modal-body { max-height: 70vh; overflow-y: auto; }

	/* Affiliate sign-up modal (Options → "Get sign up URL"): a legacy .pure-g
	   modal with no mobile rules. Its URL rows put the input in .pure-u-16-24 and
	   the "Copy …" button in .pure-u-8-24 (33%), so the button label clips. Stack
	   input + copy button full-width. */
	body.tc-aff-reskin #ui-affiliate-signup_type-url .pure-g { flex-direction: column; align-items: stretch; }
	body.tc-aff-reskin #ui-affiliate-signup_type-url .pure-g > [class*="pure-u"] { width: 100%; padding-right: 0; box-sizing: border-box; }
	body.tc-aff-reskin #ui-affiliate-signup_type-url .pure-g > [class*="pure-u"] + [class*="pure-u"] { margin-top: 8px; }
	body.tc-aff-reskin #ui-affiliate-signup_type-url .pure-button-block { width: 100%; justify-content: center; min-height: 44px; }
	/* The two type-option cards (Sign up URL / Embeddable button) sit flush to the
	   edge — let them share the row evenly with a small gap. */
	body.tc-aff-reskin .ui-affiliate-signup_type-options { display: flex; gap: 8px; }
	body.tc-aff-reskin .ui-affiliate-signup_type-option { flex: 1 1 0; min-width: 0; box-sizing: border-box; }
	/* Sign-up modal shrinks for phones: shorter tabs, 20px icons,
	   12px tab gap, 20px gutter, 40px inputs. Input + copy button already stack above. */
	.alertify .ajs-dialog.tc-aff-campaign-modal .radiogroup:has(.ui-affiliate-signup_type-option) { gap: 12px; }
	.alertify .ajs-dialog.tc-aff-campaign-modal .radiogroup .ui-affiliate-signup_type-option label { min-height: 61px; padding: 10px; }
	.alertify .ajs-dialog.tc-aff-campaign-modal .radiogroup .ui-affiliate-signup_type-option label .fa { width: 20px; height: 20px; -webkit-mask-size: 20px 20px; mask-size: 20px 20px; }
	.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed .ajs-header { padding: 20px 40px 0 20px; }
	.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed .ajs-content { padding: 16px 20px 20px; }
	.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed input.embed.ui-embed-link { height: 40px; }
	/* Embed config tab: stack the three control groups
	   (type / text / colour) full-width, and let the copy button span the row. */
	.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-modal-options,
	.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-customise-button_type-button-wrap > .pure-g {
		flex-direction: column;
		gap: 16px;
	}
	.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-modal-options > [class*="pure-u"],
	.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-customise-button_type-button-wrap > .pure-g > [class*="pure-u"] {
		width: 100%;
		flex: none;
		min-width: 0;
	}
	.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed #affiliate-embed-modal-preview { min-height: 90px; }
	.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed .colour-swatch { width: 32px; height: 32px; }
	.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed .button-secondary[data-clipboard-target] { width: 100%; justify-content: center; box-sizing: border-box; }
	.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed .button-secondary[data-clipboard-target]:only-child,
	.alertify .ajs-dialog.tc-aff-modal.tc-modal-affiliate-campaign-embed .text-align-right:has(> .button-secondary[data-clipboard-target]) { text-align: center; }
}


/* Mobile re-sweep polish (2026-07-20). */
@media (max-width: 767px) {
	/* Overview chart legend: the "Avg. daily revenue" block is position:absolute
	   right:0 and overlaps the date <h2> at narrow width — let it flow static. */
	.root.affiliates .tc-affiliates-page .date-wrapper .graph-dashboard-average { position: static; text-align: left; margin-top: 4px; }

	/* JV Create partner fields (.pure-u-1-3) render ~225px, not full-width; the
	   desktop rule sets width:auto and out-specifies the plain override — match
	   the #ui-contract-settings ID to win. */
	.tc-jv-create #ui-contract-settings .pure-g > [class*="pure-u"] { width: 100%; float: none; }

	/* Payments summary tiles ("ACCRUING PAYMENTS" is the longest label): trim the
	   24px padding + letter-spacing so it fits the 2-col tile on one line. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li,
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear > li { padding: 16px; gap: 4px; }
	/* Only cards with an action get a labelrow, so the 16/4 split hangs off the icon. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li::before,
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear > li::before { margin-bottom: 12px; }
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li .tc-aff-card-labelrow { margin-top: 0; min-height: 0; }
	/* Desktop floors the tile at 164 for its 2-up row; the frame's card is 132. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li,
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear > li { min-height: 0; }
	.tc-affiliates-page .affiliates-payouts-stats ul.self-clear li h6 { letter-spacing: 0.48px; }
	/* Frame hairline is #d1d7de, a shade darker than the desktop card's #e8ecef. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li:not(.active),
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear > li:not(.active) {
		box-shadow: inset 0 0 0 1px #d1d7de, 0 1px 1px 0 rgba(0, 0, 0, 0.05);
	}

	/* The frame draws people / stamp / alert here, not the desktop card-and-notes set. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li[data-status_string$="failed"]::before,
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear > li[data-status_string$="failed"]::before {
		background-image: url("/static/icons/affiliates/stat-people.svg");
		background-size: 18.33px 13.33px;
	}
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li[data-status_string$="accruing"]::before,
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li[data-status_string$="overdue"]::before,
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li[data-status_string$="due"]::before,
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear > li[data-status_string$="accruing"]::before,
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear > li[data-status_string$="overdue"]::before,
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear > li[data-status_string$="due"]::before {
		background-image: url("/static/icons/affiliates/stat-stamp.svg");
		background-size: 13.33px 16.67px;
	}
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li[data-status_string$="upcoming"]::before,
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear > li[data-status_string$="upcoming"]::before {
		background-image: url("/static/icons/affiliates/stat-alert.svg");
		background-size: 16.67px 16.67px;
	}

	/* Every row hides until a card is picked, leaving 51px of empty under the cards. */
	.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats .affiliates-payouts-info-block {
		display: flex;
		flex-direction: column;
		margin-top: 0;
		min-height: 0;
	}
	.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats .affiliates-payouts-info-row { margin-top: 16px; }
	/* Not :empty — the block keeps a whitespace text node between renders. */
	.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats .affiliates-payouts-pay-block:not(:has(*)) { margin-top: 0; }
	/* Retry belongs on the icon row; inline it set the label row to its own 36px. */
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear > li { position: relative; gap: 4px; }
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear > li .tc-aff-card-labelrow {
		margin-top: 0;
		min-height: 0;
	}
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear > li .tc-aff-card-labelrow > .pure-button {
		position: absolute;
		top: 6px;
		left: 119px;
		margin: 0;
	}

	/* Let the row wrap so a long label can't push the action past the tile's edge. */
	.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li .tc-aff-card-labelrow,
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear > li .tc-aff-card-labelrow { flex-wrap: wrap; height: auto; row-gap: 2px; }
	.tc-affiliates-page.tc-affiliates-page #affiliates-payouts-stats ul.self-clear > li .tc-aff-card-action,
	.tc-affiliates-page.tc-affiliates-page.tc-affiliates-page .affiliates-payouts-stats ul.self-clear > li .tc-aff-card-action { padding-left: 20px; }

	/* The segments sat flush against the tab strip; the frame leaves 28 above and 12 below. */
	.tc-affiliates-page #view-affiliates-payouts .tc-aff-pay-toggle-row { margin: 28px 0 12px; }
	.tc-affiliates-page.tc-affiliates-page #view-affiliates-payouts > #affiliates-payouts-stats { margin-top: 0; }

	/* Bulk-pay actions were raw pure-buttons; sizing stays, the 44px target is deliberate. */
	.tc-affiliates-page #affiliates-payouts-masspay-actions span.ui-masspay-pay,
	.tc-affiliates-page #affiliates-payouts-masspay-actions span.ui-masspay-cancel {
		border-radius: 8px;
		font-family: 'Inter', sans-serif;
		font-size: 14px;
		font-weight: 500;
		line-height: 20px;
		text-shadow: none;
	}
	.tc-affiliates-page #affiliates-payouts-masspay-actions span.ui-masspay-pay {
		background: #006b70;
		border: 0;
		color: #ffffff;
	}
	.tc-affiliates-page #affiliates-payouts-masspay-actions span.ui-masspay-cancel {
		background: #ffffff;
		border: 1px solid #e8ecef;
		color: #364152;
	}
}


/* =========================================================================
   JV contract-detail page (#view-contract) — MINIMAL mobile containment.
   This page is NOT part of the TC-13091 reskin (no reskin class, legacy
   styling on desktop too). This is not a reskin — just guards so it stops
   scrolling sideways and is usable on a phone: the tab strip and the 10-stat
   strip run wider than 390px and push the page to ~442px. Scoped to
   #view-contract so nothing else is affected.
   ========================================================================= */
@media (max-width: 767px) {
	/* Safety net: contain any residual horizontal overflow to the page. */
	#view-contract { overflow-x: clip; }
	/* The tab strip ("Overview" / "Payouts") only holds two items but renders
	   ~442px wide from legacy negative side-margins that bleed it past the
	   viewport. Reset those margins so both tabs sit inside the page; keep a
	   horizontal-scroll fallback in case labels ever grow. */
	#view-contract .tabs { margin-left: 0; margin-right: 0; flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
	#view-contract .tabs::-webkit-scrollbar { display: none; }
	#view-contract .tabs > li { flex: 0 0 auto; }
	/* Header refine row (avatar/name + "All time" + PayPal badge) and the stat
	   strips are nowrap flex rows — let them wrap so nothing spills off-screen. */
	#view-contract .contracts-refine { flex-wrap: wrap; }
	#view-contract .self-clear { flex-wrap: wrap; }
	/* The 10 stat cells sit ~64px each in a single nowrap row; on a phone lay
	   them out 2-up so labels and the "$0.00" values have room. */
	#view-contract .contract-list-stats ul.self-clear > li,
	#view-contract .affiliates-list-stats ul.self-clear > li { width: 50%; box-sizing: border-box; }
}
/* =========================================================================
   TC-12323 Customer Hub portal (End Customer Facing side) reskin
   ------------------------------------------------------------------------
   Figma file "ThriveCart Reskin - Presentation", page "Customer Hub".
   Covers the customer-facing dashboard, purchases/subscriptions/payment
   plans lists, and their detail pages — all scoped under
   .tc-customerhub-portal-page / body.tc-customerhub-portal-body so it
   never touches vendor-facing admin pages.
   ======================================================================== */

/* The legacy members chrome caps #body at 48em (~768) and #layout has its
   own narrow constraint. Widen both for the customer-hub portal body so
   the 1152-wide Figma layout has room, and paint the page bg #f6f8f9
   per Figma 946:1286 (`bg-[var(--color-bg,#f6f8f9)]`). The whole portal
   reskin is scoped to body.tc-customerhub-portal-body — the class is
   only set by plugins/core.customer/frontend/page.master.php so it never
   touches admin pages. */
body.tc-customerhub-portal-body {
	background: #f6f8f9 !important;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
}

body.tc-customerhub-portal-body #layout {
	max-width: 1216px !important;
	width: 100% !important;
	margin: 0 auto !important;
	margin-top: 0 !important;
	box-sizing: border-box;
	background: transparent !important;
	min-height: 100vh !important;
}

body.tc-customerhub-portal-body #body.content {
	max-width: 1216px !important;
	width: 100% !important;
	margin: 0 auto !important;
	padding: 0 !important;
	background: transparent !important;
	border: 0 !important;
	border-radius: 0 !important;
}

body.tc-customerhub-portal-body .tc-customerhub-portal-topnav,
body.tc-customerhub-portal-body .header.header-vendor {
	background: #ffffff;
	border: 0;
	border-bottom: 1px solid #e8edf2;
	height: 60px;
	min-height: 60px;
	max-height: 60px;
	line-height: normal;
	padding: 0;
	box-shadow: none;
	margin: 0;
	display: flex;
	align-items: center;
	justify-content: space-between;
	position: relative;
	color: #1a1a2e;
}

/* Brand shows "Customer Hub" text, not the vendor logo. */
body.tc-customerhub-portal-body .header.header-vendor a.tc-customerhub-portal-topnav-brand {
	display: flex;
	align-items: center;
	padding: 0 47px;
	margin: 0;
	height: 100%;
	color: #1a1a2e;
	text-decoration: none;
	border: 0;
	max-width: 50%;
	overflow: hidden;
	background: transparent;
}

body.tc-customerhub-portal-body .header.header-vendor a.tc-customerhub-portal-topnav-brand .tc-customerhub-portal-topnav-title {
	font-family: 'Inter', sans-serif;
	font-weight: 600;
	font-size: 16px;
	line-height: normal;
	letter-spacing: 0;
	color: #1a1a2e;
	display: inline-block;
	white-space: nowrap;
}

/* Sub-page nav is 72px vs 60px brand nav; (0,4,1) out-specifies the base (0,3,1) rule. */
body.tc-customerhub-portal-body .header.header-vendor.tc-customerhub-portal-topnav-sub {
	height: 72px;
	min-height: 72px;
	max-height: 72px;
}

/* Back link + section switcher are absolutely positioned against the relative #header. */
body.tc-customerhub-portal-body .tc-customerhub-portal-topnav-sub .tc-customerhub-portal-topnav-nav {
	position: static;
	display: block;
	padding: 0;
	height: auto;
}

/* Figma 946:1443 — ← Back row: Inter Medium 13 / #8A99BA, arrow_back icon
   vertically centred with the label. Arrow via ::before so members.css
   `.header.header-vendor a span { font-size: 200% }` cannot blow up the text. */
body.tc-customerhub-portal-body .header.header-vendor.tc-customerhub-portal-topnav-sub .tc-customerhub-portal-topnav-back,
body.tc-customerhub-portal-body #header.tc-customerhub-portal-topnav-sub .tc-customerhub-portal-topnav-back {
	position: absolute;
	left: 47px;
	top: 21px;
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-family: 'Inter', sans-serif;
	font-weight: 500;
	font-size: 13px;
	line-height: 16px;
	color: #8a99ba;
	text-decoration: none;
	text-align: left;
	border: 0;
	background: transparent;
	padding: 0;
	margin: 0;
	height: auto;
	max-height: none;
	max-width: none;
	overflow: visible;
	white-space: nowrap;
	box-sizing: border-box;
}

body.tc-customerhub-portal-body #header.tc-customerhub-portal-topnav-sub .tc-customerhub-portal-topnav-back:hover {
	color: #3d4a66;
}

body.tc-customerhub-portal-body #header.tc-customerhub-portal-topnav-sub .tc-customerhub-portal-topnav-back-icon {
	display: block;
	width: 10px;
	height: 10px;
	flex: none;
	overflow: visible;
}

body.tc-customerhub-portal-body #header.tc-customerhub-portal-topnav-sub .tc-customerhub-portal-topnav-switch {
	position: absolute;
	left: 47px;
	top: 41px;
}

body.tc-customerhub-portal-body .tc-customerhub-portal-topnav-switch-btn {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 0;
	padding: 0;
	border: 0;
	background: transparent;
	cursor: pointer;
}

body.tc-customerhub-portal-body .tc-customerhub-portal-topnav-sub .tc-customerhub-portal-topnav-switch-btn .tc-customerhub-portal-topnav-title {
	font-family: 'Inter', sans-serif;
	font-weight: 600;
	font-size: 16px;
	line-height: normal;
	letter-spacing: 0;
	color: #1a1a2e;
	white-space: nowrap;
}

body.tc-customerhub-portal-body .tc-customerhub-portal-topnav-switch-caret {
	/* ▾ is inline text in the title, not an SVG icon. */
	background-color: transparent;
	-webkit-mask: none;
	mask: none;
	width: auto;
	height: auto;
	flex: none;
}

body.tc-customerhub-portal-body .tc-customerhub-portal-topnav-switch-caret::before {
	/* CSS escape avoids UTF-8 ▾ mojibake (â–¾) when the stylesheet charset is misread */
	content: '\25BE';
	font-family: 'Inter', sans-serif;
	font-size: 16px;
	font-weight: 600;
	color: #1a1a2e;
	line-height: normal;
}

body.tc-customerhub-portal-body .tc-customerhub-portal-topnav-switch-menu {
	position: absolute;
	left: 0;
	top: calc(100% + 8px);
	z-index: 30;
	min-width: 200px;
	margin: 0;
	padding: 4px;
	list-style: none;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
	line-height: normal;
}

body.tc-customerhub-portal-body .tc-customerhub-portal-topnav-switch-menu[hidden] {
	display: none;
}

body.tc-customerhub-portal-body .tc-customerhub-portal-topnav-switch-menu li {
	margin: 0;
	padding: 0;
	border: 0;
	background: transparent;
	line-height: normal;
	height: auto;
}

/* Out-specify `.header.header-vendor a` from members.css — that rule forced white
   centred text + height:100% + overflow:hidden, which made hover look like a thin
   left scrap instead of a full-row pill. */
body.tc-customerhub-portal-body .header.header-vendor .tc-customerhub-portal-topnav-switch-menu a,
body.tc-customerhub-portal-body .tc-customerhub-portal-topnav-switch-menu a {
	display: block;
	width: 100%;
	box-sizing: border-box;
	padding: 8px 12px;
	margin: 0;
	border: 0;
	border-left: 0;
	border-radius: 6px;
	outline: none;
	box-shadow: none;
	background: transparent;
	font-family: 'Inter', sans-serif;
	font-weight: 400;
	font-size: 14px;
	line-height: 20px;
	height: auto;
	max-height: none;
	max-width: none;
	overflow: visible;
	text-align: left;
	color: #364152;
	text-decoration: none;
	white-space: nowrap;
}

body.tc-customerhub-portal-body .header.header-vendor .tc-customerhub-portal-topnav-switch-menu a:hover,
body.tc-customerhub-portal-body .header.header-vendor .tc-customerhub-portal-topnav-switch-menu a:focus,
body.tc-customerhub-portal-body .tc-customerhub-portal-topnav-switch-menu a:hover,
body.tc-customerhub-portal-body .tc-customerhub-portal-topnav-switch-menu a:focus {
	background: #f6f8f9;
	border: 0;
	border-left: 0;
	box-shadow: none;
	outline: none;
	color: #364152;
}

/* Figma 946:1330 — language pill at top=11, right=49 (Figma artboard
   1440 with `left:1283` + `w:108`). 108×36, white, border #e8edf2,
   rounded 7. Inner text "English  ▾" at left=11 top=9, Inter Medium 13
   color #3d4a66. The native <select> arrow is suppressed and replaced
   with a CSS chevron so it matches Figma's literal "▾". */
body.tc-customerhub-portal-body .tc-customerhub-portal-topnav-lang {
	padding: 0 49px 0 0;
	display: flex;
	align-items: center;
	height: 100%;
}

body.tc-customerhub-portal-body .tc-customerhub-portal-topnav-lang select {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	background-color: #ffffff;
	background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6' fill='none'%3e%3cpath d='M1 1L5 5L9 1' stroke='%233d4a66' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e%3c/svg%3e");
	background-repeat: no-repeat;
	background-position: right 12px center;
	background-size: 10px 6px;
	border: 1px solid #e8edf2;
	border-radius: 7px;
	padding: 0 28px 0 11px;
	width: 108px;
	height: 36px;
	font-family: 'Inter', sans-serif;
	font-weight: 500;
	font-size: 13px;
	line-height: 36px;
	color: #3d4a66;
	cursor: pointer;
	box-shadow: none;
	margin: 0;
	box-sizing: border-box;
}

body.tc-customerhub-portal-body .tc-customerhub-portal-topnav-lang select:focus {
	outline: none;
	border-color: #3d4a66;
}

/* The faux-mode preview banner sits above the topnav — keep its existing
   dark styling but slim it down so it doesn't push the layout. */
body.tc-customerhub-portal-body.ui-mode-faux .faux {
	background: #292e33;
	color: #fff;
	font-size: 13px;
	padding: 10px 16px;
	border-bottom: 1px solid #385050;
	text-align: center;
}

/* --- Footer (Figma 946:1325) ------------------------------------------ */

body.tc-customerhub-portal-body .tc-customerhub-portal-footer,
body.tc-customerhub-portal-body .footer {
	background: #ffffff;
	border: 0;
	border-top: 1px solid #e8edf2;
	height: 60px;
	padding: 0 47px;
	margin: 0;
	max-width: none;
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: space-between;
	box-sizing: border-box;
	font-family: 'Inter', sans-serif;
}

body.tc-customerhub-portal-body .tc-customerhub-portal-footer-data {
	font-family: 'Inter', sans-serif;
	font-weight: 400;
	font-size: 13px;
	line-height: normal;
	color: #8a99ba;
	text-decoration: none;
	border: 0;
	cursor: pointer;
}

body.tc-customerhub-portal-body .tc-customerhub-portal-footer-data:hover {
	color: #5a6786;
	text-decoration: none;
}

body.tc-customerhub-portal-body .tc-customerhub-portal-footer-copyright {
	font-family: 'Inter', sans-serif;
	font-weight: 400;
	font-size: 12px;
	line-height: normal;
	color: #8a99ba;
	opacity: 0.6;
	margin: 0;
	text-align: right;
}

.tc-customerhub-portal-page {
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
	color: #364152;
	letter-spacing: 0;
	display: flex;
	flex-direction: column;
	gap: 40px !important;
	align-items: center;
	padding: 48px 32px 64px !important;
	box-sizing: border-box;
	width: 100%;
}

/* The legacy global `body { letter-spacing: 0.12px }` and
   `h1..h6 { letter-spacing: -1px }` would otherwise out-specific our
   wrappers — pin everything inside the portal back to Figma's 0. */
.tc-customerhub-portal-page h1,
.tc-customerhub-portal-page h2,
.tc-customerhub-portal-page h3,
.tc-customerhub-portal-page h4,
.tc-customerhub-portal-page h5,
.tc-customerhub-portal-page h6,
.tc-customerhub-portal-page input,
.tc-customerhub-portal-page select,
.tc-customerhub-portal-page textarea,
.tc-customerhub-portal-page button,
.tc-customerhub-portal-page a {
	letter-spacing: 0;
}

/* Legacy purchase-search, intro WYSIWYG and "Information" link hidden — the Information link moved to the footer.
   The no-orders notice shares those classes but must stay visible; without it a customer with no
   purchases gets a blank page. */
.tc-customerhub-portal-page #ui-purchase-search-form,
.tc-customerhub-portal-page>.text-align-center:not(#ui-customer-no-orders),
.tc-customerhub-portal-page>.box.padding.padding-full:not(#ui-customer-no-orders) {
	display: none;
}

.tc-customerhub-portal-page .personal-block {
	position: relative;
	display: grid;
	/* Photo column size comes from row height (text+button) via aspect-ratio —
	   keeps a true square flush with name (top) and Update profile (bottom). */
	grid-template-columns: auto 1fr;
	align-items: stretch;
	column-gap: 28px;
	background: transparent;
	border: 0;
	box-shadow: none;
	padding: 0;
	margin: 0;
	width: 1152px;
	max-width: 100%;
	min-height: 0;
}

/*
 * Square profile photo flush with the text column (Figma): top ↔ name,
 * bottom ↔ Update profile. Row height is owned by .personal-block-main;
 * aspect-ratio transfers that height into an equal width.
 */
.tc-customerhub-portal-page .personal-block-avatar,
body.tc-customerhub-portal-body #personal .personal-block-avatar {
	position: relative;
	justify-self: start;
	align-self: stretch;
	/* Stretched block size + aspect-ratio → equal inline size (true square). */
	width: auto;
	height: auto;
	aspect-ratio: 1 / 1;
	min-width: 0;
	min-height: 0;
	margin: 0;
	overflow: hidden;
	border-radius: 12px;
	/* Beat legacy `#personal .personal-block-avatar { display:none }` at ≤569px
	   (frontend.css) — ID selector would otherwise still hide the portal photo. */
	display: block;
}

.tc-customerhub-portal-page .personal-block-avatar-img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border-radius: 12px;
	display: block;
	object-fit: cover;
}

.tc-customerhub-portal-page .personal-block-main {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: flex-start;
	min-width: 0;
	/* Owns the grid row height that sizes the square avatar */
}

.tc-customerhub-portal-page .personal-block-info {
	margin: 0;
	max-width: none;
	width: 100%;
}

.tc-customerhub-portal-page .personal-block-info ul {
	list-style: none;
	padding: 0;
	margin: 0;
}

.tc-customerhub-portal-page .personal-block-individual {
	margin-left: 0;
	min-width: 0;
	max-width: 100%;
}

.tc-customerhub-portal-page .personal-block-individual li {
	margin: 0;
}

.tc-customerhub-portal-page .personal-block-address {
	margin-left: 0;
	min-width: 0;
	max-width: 100%;
}

.tc-customerhub-portal-page .personal-block-address li {
	margin: 0;
}

.tc-customerhub-portal-page .personal-block-billing {
	align-self: flex-start;
	margin-left: 0;
	margin-top: 16px !important;
	margin-bottom: 0 !important;
	padding: 0;
	max-width: none;
	line-height: 0; /* kill leftover inline gap under the button */
}

.tc-customerhub-portal-page .personal-block-billing .pure-button {
	margin: 0;
	vertical-align: top;
}

.tc-customerhub-portal-page .personal-block-info li {
	font-family: 'Inter', sans-serif;
	font-weight: 400;
	font-size: 14px;
	line-height: 20px;
	color: #364152;
	white-space: normal;
	overflow: visible;
	text-overflow: clip;
	display: block;
}

.tc-customerhub-portal-page .personal-block-individual li[data-key="name"] {
	font-weight: 500;
	font-size: 24px;
	line-height: 32px;
	margin-bottom: 2px !important;
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 8px;
	min-width: 0;
	max-width: 100%;
	overflow-wrap: anywhere;
	word-break: break-word;
}

.tc-customerhub-portal-page .personal-block-individual li[data-key="name"] .ch-username {
	font-weight: 400;
	font-size: 18px;
	line-height: 24px;
	color: #8a99ba;
	min-width: 0;
	overflow-wrap: anywhere;
	word-break: break-word;
}

.tc-customerhub-portal-page .personal-block-individual li[data-key="email"] a {
	color: #2c7a7b;
	text-decoration: underline;
	border-bottom: 0;
}

.tc-customerhub-portal-page .personal-block-address li img {
	width: 16px;
	height: auto;
	vertical-align: middle;
	margin-left: 6px;
}

body.root .tc-customerhub-portal-page .personal-block-billing .pure-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: auto;
	height: 32px;
	padding: 8px 12px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 6px;
	font-family: 'Inter', sans-serif;
	font-weight: 500;
	font-size: 14px;
	line-height: 16px;
	letter-spacing: 0;
	color: #364152;
	white-space: nowrap;
	box-shadow: none;
	text-shadow: none;
}

body.root .tc-customerhub-portal-page .personal-block-billing .pure-button:hover {
	background: #f6f8f9;
	color: #364152;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update {
	border-radius: 12px;
	border: 1px solid #e8ecef;
	box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08);
	font-family: 'Inter', sans-serif;
	overflow: hidden;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update .ajs-header {
	font-family: 'Inter', sans-serif;
	font-size: 18px;
	font-weight: 600;
	color: #1a1a2e;
	background: #ffffff;
	padding: 20px 24px 0;
	border-bottom: 0;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update .ajs-body {
	font-family: 'Inter', sans-serif;
	background: #ffffff;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update .ajs-body .ajs-content {
	padding: 16px 24px;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update h5 {
	font-family: 'Inter', sans-serif;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: #697586;
	margin: 16px 0 8px;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update .section-personal h5 {
	margin-top: 0;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update input[type="text"],
body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update input[type="number"],
body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update select {
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 400;
	color: #364152;
	border: 1px solid #e8ecef;
	border-radius: 6px;
	padding: 8px 12px;
	height: 36px;
	box-sizing: border-box;
	background: #ffffff;
	box-shadow: none;
	width: 100%;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update input[type="text"]:focus,
body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update input[type="number"]:focus,
body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update select:focus {
	border-color: #006b70;
	outline: none;
	box-shadow: none;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update input[disabled],
body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update input[type="text"]:disabled,
body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update input[type="number"]:disabled {
	background: #f6f8f9;
	color: #697586;
	border-color: #e8ecef;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update .ajs-footer {
	background: #f6f8f9;
	border-top: 1px solid #e8ecef;
	border-radius: 0;
	padding: 16px 24px;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update .ajs-footer .ajs-buttons {
	float: none;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update .ajs-footer .ajs-primary {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 8px;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update .ajs-footer .ajs-ok {
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 600;
	color: #ffffff;
	background: #006b70;
	border: 0;
	border-radius: 6px;
	padding: 0 16px;
	height: 36px;
	line-height: 36px;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	order: 2;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update .ajs-footer .ajs-ok:hover {
	background: #005758;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update .ajs-footer .ajs-cancel {
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	color: #364152;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 6px;
	padding: 0 16px;
	height: 36px;
	line-height: 36px;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	order: 1;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update .ajs-footer .ajs-cancel:hover {
	background: #f6f8f9;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update .pure-button.button-primary,
body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update .pure-button.pure-button-primary {
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 600;
	color: #ffffff;
	background: #006b70;
	border: 0;
	border-radius: 6px;
	padding: 0 16px;
	height: 36px;
	line-height: 36px;
	box-shadow: none;
	text-shadow: none;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update .pure-button.button-primary:hover,
body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update .pure-button.pure-button-primary:hover {
	background: #005758;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update .pure-button.button-secondary {
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	color: #364152;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 6px;
	padding: 0 12px;
	height: 36px;
	line-height: 34px;
	box-shadow: none;
	text-shadow: none;
}

body.tc-customerhub-portal-body .alertify .ajs-dialog.tc-billing-update .pure-button.button-secondary:hover {
	background: #f6f8f9;
}

.tc-customerhub-portal-cards {
	width: 1152px;
	max-width: 100%;
	/* Equal gutters: cards are direct grid children (no Pure .pure-u / letter-spacing).
	   Rhonda: spaces between One-time / Payment Plans / Subscriptions must match. */
	display: grid !important;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 16px;
	column-gap: 16px;
	row-gap: 16px;
	justify-content: stretch;
	align-items: stretch;
	margin: 0;
	padding: 0;
	letter-spacing: 0 !important;
	word-spacing: 0 !important;
	font-family: inherit !important;
	text-rendering: auto;
}

/* Kill legacy `.pure-g .box { margin-left/right: 0.5em }` and utility `.margin-bottom`
   so only the grid gap controls spacing between cards. */
.tc-customerhub-portal-page .tc-customerhub-portal-cards > *,
.tc-customerhub-portal-page .tc-customerhub-portal-cards .box,
.tc-customerhub-portal-page .tc-customerhub-portal-cards .tc-customerhub-portal-card {
	margin: 0 !important;
	width: 100%;
	max-width: none;
	min-width: 0;
	letter-spacing: 0;
	word-spacing: normal;
}

.tc-customerhub-portal-card {
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 10px;
	box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
	padding: 0;
	min-height: 244px;
	width: 100%;
	margin: 0;
	box-sizing: border-box;
}

body.root .dashboard-link.tc-customerhub-portal-card a,
body.tc-customerhub-portal-body .tc-customerhub-portal-card a {
	display: flex !important;
	flex-direction: column !important;
	gap: 12px !important;
	align-items: flex-start !important;
	justify-content: flex-start !important;
	width: 100% !important;
	height: 100% !important;
	padding: 20px !important;
	box-sizing: border-box !important;
	text-decoration: none !important;
	border: 0 !important;
	border-radius: 10px !important;
	background: transparent !important;
	text-align: left !important;
	letter-spacing: 0 !important;
}

body.root .dashboard-link.tc-customerhub-portal-card a:hover,
body.tc-customerhub-portal-body .tc-customerhub-portal-card a:hover {
	background: #f6f8f9 !important;
}

.tc-customerhub-portal-card .dashboard-image {
	display: none;
}

.tc-customerhub-portal-card-icon {
	display: block;
	width: 66px;
	height: 66px;
	background-color: #364152;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-size: contain;
	mask-size: contain;
}

.tc-customerhub-portal-card-icon-onetime {
	-webkit-mask-image: url("/static/icons/customerhub/portal/cart.svg");
	mask-image: url("/static/icons/customerhub/portal/cart.svg");
	-webkit-mask-size: 55px 55px;
	mask-size: 55px 55px;
}

.tc-customerhub-portal-card-icon-paymentplans {
	-webkit-mask-image: url("/static/icons/customerhub/portal/credit-score.svg");
	mask-image: url("/static/icons/customerhub/portal/credit-score.svg");
	-webkit-mask-size: 55px 49.5px;
	mask-size: 55px 49.5px;
}

.tc-customerhub-portal-card-icon-subscriptions {
	-webkit-mask-image: url("/static/icons/customerhub/portal/rotate-right.svg");
	mask-image: url("/static/icons/customerhub/portal/rotate-right.svg");
	-webkit-mask-size: 43.81px 52.06px;
	mask-size: 43.81px 52.06px;
}

.tc-customerhub-portal-card .tc-customerhub-portal-card-title {
	font-family: 'Inter', sans-serif;
	font-weight: 600;
	font-size: 18px;
	line-height: 25.5px;
	letter-spacing: -0.4316px;
	color: #2a3648;
	margin: 0;
	padding: 0;
	border-bottom: 0;
	overflow: visible;
	text-overflow: clip;
	text-align: left;
}

.tc-customerhub-portal-card-desc {
	display: flex;
	align-items: center;
	height: 52px;
	font-family: 'Inter', sans-serif;
	font-weight: 400;
	font-size: 14px;
	line-height: 20px;
	color: #364152;
	margin: 0;
	max-width: 251px;
	text-align: left;
}

body.root .tc-customerhub-portal-card .tc-customerhub-portal-card-btn,
body.root .tc-customerhub-portal-card a .pure-button.tc-customerhub-portal-card-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: auto;
	height: 32px;
	margin-top: auto;
	padding: 8px 12px;
	background: #006b70;
	border: 0;
	border-radius: 6px;
	font-family: 'Inter', sans-serif;
	font-weight: 500;
	font-size: 14px;
	line-height: 16px;
	letter-spacing: 0;
	color: #ffffff;
	white-space: nowrap;
	box-shadow: none;
	text-shadow: none;
}

body.root .tc-customerhub-portal-card a:hover .tc-customerhub-portal-card-btn {
	background: #005357;
	color: #ffffff;
}

@media (max-width: 1199px) {

	/* Stack the 3 cards vertically once the row no longer fits. */
	.tc-customerhub-portal-page .tc-customerhub-portal-cards {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 767px) {
	body.tc-customerhub-portal-body .tc-customerhub-portal-page {
		padding: 32px 16px 48px;
		gap: 32px;
	}

	body.tc-customerhub-portal-body .tc-customerhub-portal-page .personal-block {
		display: flex;
		flex-direction: column;
		align-items: center;
		gap: 0;
		height: auto;
		min-height: 0;
		width: 100%;
	}

	body.tc-customerhub-portal-body .tc-customerhub-portal-page .personal-block-avatar,
	body.tc-customerhub-portal-body #personal .personal-block-avatar {
		grid-column: auto;
		grid-row: auto;
		width: 80px;
		height: 80px;
		min-width: 80px;
		min-height: 80px;
		aspect-ratio: auto;
		margin: 0 0 12px;
		align-self: auto;
		display: block;
	}

	body.tc-customerhub-portal-body .tc-customerhub-portal-page .personal-block-avatar-img {
		width: 80px;
		height: 80px;
		min-height: 0;
		border-radius: 50%;
	}

	body.tc-customerhub-portal-body .tc-customerhub-portal-page .personal-block-main {
		display: flex;
		flex-direction: column;
		align-items: center;
		width: 100%;
	}

	body.tc-customerhub-portal-body .tc-customerhub-portal-page .personal-block-individual {
		grid-column: auto;
		grid-row: auto;
		text-align: center;
		width: 100%;
		max-width: 100%;
		min-width: 0;
		margin-bottom: 4px;
	}

	body.tc-customerhub-portal-body .tc-customerhub-portal-page .personal-block-address {
		grid-column: auto;
		grid-row: auto;
		text-align: center;
		width: 100%;
		max-width: 100%;
		min-width: 0;
	}

	/* Desktop uses align-self:end (cross-axis end) — in a column flex that
	   pins the button to the right. Recentre it for the stacked profile. */
	body.tc-customerhub-portal-body .tc-customerhub-portal-page .personal-block-billing {
		grid-column: auto;
		grid-row: auto;
		align-self: center;
		justify-self: auto;
		margin-top: 16px !important;
		margin-left: 0;
		width: auto;
		max-width: 100%;
	}

	/* Name is display:flex, so text-align alone cannot centre it. */
	body.tc-customerhub-portal-body .tc-customerhub-portal-page .personal-block-individual li[data-key="name"] {
		justify-content: center;
		font-size: 18px;
		line-height: 24px;
		color: #1a1a2e;
		max-width: 100%;
		min-width: 0;
		overflow-wrap: anywhere;
		word-break: break-word;
	}

	body.tc-customerhub-portal-body .tc-customerhub-portal-page .personal-block-individual li[data-key="name"] .ch-username {
		font-size: 16px;
		line-height: 22px;
		overflow-wrap: anywhere;
		word-break: break-word;
	}

	body.tc-customerhub-portal-body .tc-customerhub-portal-page .personal-block-info li {
		font-size: 13px;
		line-height: 18px;
		color: #697586;
		text-align: center;
		max-width: 100%;
		overflow-wrap: anywhere;
		word-break: break-word;
	}

	/* Slim the top-nav side padding so brand + language stay on one line
	   and don't push the layout past viewport width. */
	body.tc-customerhub-portal-body .header.header-vendor a.tc-customerhub-portal-topnav-brand {
		padding: 0 16px;
	}

	body.tc-customerhub-portal-body .tc-customerhub-portal-topnav-lang {
		padding: 0 16px 0 0;
	}

	body.tc-customerhub-portal-body .tc-customerhub-portal-footer {
		height: auto;
		min-height: 60px;
		padding: 16px;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		gap: 8px;
		margin-top: 8px;
	}

	body.tc-customerhub-portal-body .tc-customerhub-portal-footer-copyright {
		text-align: center;
	}

	/* Ensure the View buttons stay inside the card width (the legacy
	   `.pure-button-block { display: block; width: 100% }` would stretch
	   them to 100% which is already fine — but the legacy `padding: 0.5em 1em`
	   on .pure-button can push the right edge past the card. Pin width auto
	   and let the `.tc-customerhub-portal-card-btn` rule above style it. */
	body.tc-customerhub-portal-body .tc-customerhub-portal-card .pure-button.tc-customerhub-portal-card-btn {
		width: auto;
		max-width: 100%;
	}
}

/* List-page reskin; scoped to .tc-customerhub-portal-list — shared.css not loaded in the portal master. */
/* Sub-topnav is 72px → content padding-top = 40px (base is 114px for the sub-topnav-less landing page). */
.tc-customerhub-portal-page.tc-customerhub-portal-list {
	gap: 19px;
	padding-top: 40px;
}

.tc-customerhub-portal-list .wrap {
	width: 1152px;
	max-width: 100%;
	margin: 0;
	padding: 0;
}

.tc-customerhub-portal-list .tc-chl {
	display: flex;
	flex-direction: column;
	gap: 19px;
	width: 100%;
}

.tc-customerhub-portal-list .tc-chl-tabs,
.tc-customerhub-portal-detail .tc-chd-tabs,
.tc-customerhub-portal-detail .tc-chl-tabs-links {
	overflow: visible !important;
	scrollbar-width: none;
	-ms-overflow-style: none;
}

.tc-customerhub-portal-list .tc-chl-tabs::-webkit-scrollbar,
.tc-customerhub-portal-detail .tc-chd-tabs::-webkit-scrollbar,
.tc-customerhub-portal-detail .tc-chl-tabs-links::-webkit-scrollbar {
	display: none;
	width: 0;
	height: 0;
}

.tc-customerhub-portal-list .tc-chl-tabs {
	display: flex;
	gap: 32px;
	align-items: center;
	list-style: none;
	margin: 0;
	padding: 0;
	border-bottom: 1px solid #d1d7de;
}

.tc-customerhub-portal-list .tc-chl-tabs li {
	margin: 0 0 -1px;
	padding: 8px;
	border: 0;
	border-bottom: 2px solid transparent;
	border-radius: 0;
	background: transparent;
	font-family: 'Inter', sans-serif;
	font-weight: 500;
	font-size: 16px;
	line-height: 24px;
	color: #8493a8;
	white-space: nowrap;
	cursor: pointer;
}

.tc-customerhub-portal-list .tc-chl-tabs li:hover {
	background: transparent;
	color: #364152;
}

.tc-customerhub-portal-list .tc-chl-tabs li.active {
	color: #2a3648;
	border-bottom-color: #006b70;
}

.tc-customerhub-portal-list .tc-chl-toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
}

.tc-customerhub-portal-list .tc-chl-showing {
	font-family: 'Inter', sans-serif;
	font-weight: 400;
	font-size: 14px;
	line-height: 20px;
	color: #2a3648;
	white-space: nowrap;
}

.tc-customerhub-portal-list .tc-chl-toolbar-controls {
	display: flex;
	align-items: center;
	gap: 8px;
}

.tc-customerhub-portal-list .tc-chl-search {
	display: flex;
	align-items: center;
	gap: 8px;
	width: 200px;
	height: 32px;
	box-sizing: border-box;
	padding: 8px 13px;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 6px;
}

.tc-customerhub-portal-list .tc-chl-search-icon {
	width: 12px;
	height: 12px;
	flex: none;
	color: #364152;
	display: block;
	overflow: visible;
}

.tc-customerhub-portal-list .tc-chl-search-input {
	flex: 1 1 0;
	min-width: 0;
	height: 16px;
	margin: 0;
	padding: 0;
	border: 0;
	outline: 0;
	background: transparent;
	box-shadow: none;
	font-family: 'Inter', sans-serif;
	font-weight: 400;
	font-size: 12px;
	line-height: 16px;
	color: #364152;
}

.tc-customerhub-portal-list .tc-chl-search-input::placeholder {
	color: #afbbc9;
	opacity: 1;
}

/* Sort + Filter: white fill matching the search input beside them
   (Samuel: white, not grey chip). Same border token as .tc-chl-search. */
.tc-customerhub-portal-list .tc-chl-tbtn {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	height: 32px;
	box-sizing: border-box;
	padding: 8px 12px;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 6px;
	font-family: 'Inter', sans-serif;
	font-weight: 500;
	font-size: 14px;
	line-height: 16px;
	color: #364152;
	white-space: nowrap;
	cursor: pointer;
}

.tc-customerhub-portal-list .tc-chl-tbtn:hover,
.tc-customerhub-portal-list .tc-chl-tbtn[aria-expanded="true"] {
	background: #f6f8f9;
}

.tc-customerhub-portal-list .tc-chl-tbtn-group {
	background: #ffffff;
	border-color: #d1d7de;
	padding: 8px 13px;
}

/* Inline SVG icons (Figma 946:1332) — avoid /static mask URLs which 404 on
   account subdomains and made Sort/Filter look identical when both masks failed. */
.tc-customerhub-portal-list .tc-chl-tbtn-icon {
	flex: none;
	display: block;
	overflow: visible;
	color: #364152;
}

.tc-customerhub-portal-list .tc-chl-tbtn-icon-sort {
	width: 14px;
	height: 12px;
}

.tc-customerhub-portal-list .tc-chl-tbtn-icon-filter {
	width: 12px;
	height: 8px;
}

/* Sort/Filter dropdown menus — no open-state Figma; matched to reskin button/surface tokens. */
.tc-customerhub-portal-list .tc-chl-menu {
	position: relative;
}

.tc-customerhub-portal-list .tc-chl-menu-list {
	position: absolute;
	right: 0;
	top: calc(100% + 4px);
	z-index: 20;
	min-width: 180px;
	margin: 0;
	padding: 4px;
	list-style: none;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
}

.tc-customerhub-portal-list .tc-chl-menu-list[hidden] {
	display: none;
}

.tc-customerhub-portal-list .tc-chl-menu-list li {
	margin: 0;
	padding: 8px 12px;
	border: 0;
	border-radius: 6px;
	background: transparent;
	font-family: 'Inter', sans-serif;
	font-weight: 400;
	font-size: 14px;
	line-height: 20px;
	color: #364152;
	white-space: nowrap;
	cursor: pointer;
}

.tc-customerhub-portal-list .tc-chl-menu-list li:hover {
	background: #f6f8f9;
}

.tc-customerhub-portal-list .tc-chl-menu-list li.is-active {
	color: #006b70;
	font-weight: 500;
}

.tc-customerhub-portal-list .minitabs-pane {
	display: none;
}

.tc-customerhub-portal-list .minitabs-pane.active {
	display: block;
}

.tc-customerhub-portal-list .block-list {
	display: flex;
	flex-direction: column;
	gap: 19px;
	margin: 0;
	padding: 0;
	list-style: none;
}

/* 185px: image row (114) + gap (12) + actions row (28) = 154, centred → 15.5px top+bottom. */
.tc-customerhub-portal-list .block-list-item {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 12px;
	margin: 0;
	min-height: 185px;
	padding: 0 24px;
	box-sizing: border-box;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 12px;
	box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
	list-style: none;
}

/* Clears the legacy frontend.css clearfix ::after (display:table) — in flex column it's a phantom item that inflates card/pager gaps. */
.tc-customerhub-portal-list .block-list-item::after,
.tc-customerhub-portal-list .block-list::after {
	content: none;
	display: none;
}

.tc-customerhub-portal-list .block-list-item:hover {
	background: #ffffff;
}

.tc-customerhub-portal-list .block-list-empty {
	margin: 0;
	padding: 40px 24px;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 12px;
	text-align: center;
	color: #8493a8;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	list-style: none;
}

.tc-customerhub-portal-list .tc-chl-card-main {
	display: flex;
	align-items: center;
	gap: 20px;
	width: 100%;
}

.tc-customerhub-portal-list .tc-chl-card-img {
	width: 114px;
	height: 114px;
	flex: none;
	border-radius: 24px;
	overflow: hidden;
	background: #e8ecef;
}

.tc-customerhub-portal-list .tc-chl-card-img img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.tc-customerhub-portal-list .tc-chl-card-img-empty {
	display: block;
	width: 100%;
	height: 100%;
	background: #e8ecef;
}

.tc-customerhub-portal-list .tc-chl-card-info {
	flex: 1 1 0;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 4px;
}

/* #body prefix beats the legacy .root-members #body p { font-weight:normal } in members.css. */
#body .tc-customerhub-portal-list .tc-chl-card-title {
	margin: 0;
	font-family: 'Inter', sans-serif;
	font-weight: 500;
	font-size: 20px;
	line-height: 28px;
	color: #2b384a;
}

.tc-customerhub-portal-list .tc-chl-card-title em {
	font-style: normal;
	font-weight: 400;
	color: #8493a8;
}

.tc-customerhub-portal-list .tc-chl-card-date {
	margin: 0;
	font-family: 'Inter', sans-serif;
	font-weight: 400;
	font-size: 16px;
	line-height: 24px;
	color: #364152;
}

.tc-customerhub-portal-list .tc-chl-card-price {
	display: flex;
	align-items: center;
	gap: 8px;
	flex: none;
	overflow: visible;
}

.tc-customerhub-portal-list .tc-chl-card-price-amount {
	font-family: 'Inter', sans-serif;
	font-weight: 400;
	font-size: 20px;
	line-height: 32px;
	color: #364152;
	white-space: nowrap;
}

.tc-customerhub-portal-list .tc-chl-card-proc {
	display: block;
	height: auto;
	width: auto;
	flex: none;
	overflow: visible;
}

/* Stripe / Connect logo — Figma 946:1450 ~33×19; list + detail cards. */
.tc-customerhub-portal-list .tc-chl-card-proc-stripe,
.tc-customerhub-portal-detail .tc-chl-card-proc-stripe,
.tc-customerhub-portal-detail .tc-chd-card-price .tc-chl-card-proc-stripe {
	display: block;
	height: 19px;
	width: auto;
	max-width: 40px;
	flex: none;
	object-fit: contain;
	object-position: center;
	vertical-align: middle;
	border-radius: 0;
	overflow: visible;
}

.tc-customerhub-portal-list .tc-chl-card-proc-text {
	height: auto;
	padding: 2px 6px;
	border-radius: 4px;
	background: #f6f8f9;
	font-family: 'Inter', sans-serif;
	font-weight: 500;
	font-size: 11px;
	line-height: 15px;
	color: #8493a8;
	text-transform: capitalize;
}

.tc-customerhub-portal-list .tc-chl-card-actions {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 10px;
	width: 100%;
}

.tc-customerhub-portal-list .tc-chl-card-btn {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	height: 28px;
	box-sizing: border-box;
	padding: 6px 8px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 6px;
	font-family: 'Inter', sans-serif;
	font-weight: 500;
	font-size: 12px;
	line-height: 16px;
	color: #364152;
	white-space: nowrap;
	text-decoration: none;
	cursor: pointer;
}

.tc-customerhub-portal-list .tc-chl-card-btn:hover {
	background: #f6f8f9;
}

.tc-customerhub-portal-list .tc-chl-card-btn-icon {
	width: 12px;
	height: 12px;
	flex: none;
	background-color: #364152;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
}

.tc-customerhub-portal-list .tc-chl-card-btn-icon-card {
	/* viewBox 8×10 — inset-[8.33%_16.67%] in 12px box = glyph 8×10px */
	-webkit-mask: url("/static/icons/customerhub/portal/card-update.svg") center / 8px 10px no-repeat;
	mask: url("/static/icons/customerhub/portal/card-update.svg") center / 8px 10px no-repeat;
}

.tc-customerhub-portal-list .tc-chl-card-btn-icon-invoice {
	/* viewBox 9×10 — inset-[8.33%_12.5%] in 12px box = glyph 9×10px */
	-webkit-mask: url("/static/icons/customerhub/portal/invoice.svg") center / 9px 10px no-repeat;
	mask: url("/static/icons/customerhub/portal/invoice.svg") center / 9px 10px no-repeat;
}

.tc-customerhub-portal-list .tc-chl-pager {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
}

.tc-customerhub-portal-list .tc-chl-pager[hidden] {
	display: none;
}

.tc-customerhub-portal-list .tc-chl-pager-left {
	display: flex;
	align-items: center;
	gap: 8px;
}

.tc-customerhub-portal-list .tc-chl-select {
	position: relative;
	display: inline-flex;
	align-items: center;
}

.tc-customerhub-portal-list .tc-chl-select select {
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	width: 72px;
	height: 32px;
	box-sizing: border-box;
	margin: 0;
	padding: 8px 28px 8px 13px;
	background: #ffffff;
	border: 1px solid #d1d7de;
	border-radius: 8px;
	font-family: 'Inter', sans-serif;
	font-weight: 400;
	font-size: 14px;
	line-height: 16px;
	color: #364152;
	cursor: pointer;
}

.tc-customerhub-portal-list .tc-chl-select-caret {
	position: absolute;
	right: 9px;
	top: 50%;
	transform: translateY(-50%);
	pointer-events: none;
	background-color: transparent;
	-webkit-mask: none;
	mask: none;
	width: auto;
	height: auto;
}

.tc-customerhub-portal-list .tc-chl-select-caret::before {
	/* CSS escape avoids UTF-8 ▾ mojibake (â–¾) when the stylesheet charset is misread */
	content: '\25BE';
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 400;
	color: #364152;
	line-height: 1;
}

.tc-customerhub-portal-list .tc-chl-pager-label {
	font-family: 'Inter', sans-serif;
	font-weight: 400;
	font-size: 14px;
	line-height: 20px;
	color: #2a3648;
	white-space: nowrap;
}

.tc-customerhub-portal-list .tc-chl-pager-nav {
	display: flex;
	align-items: center;
	gap: 8px;
}

.tc-customerhub-portal-list .tc-chl-pager-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	box-sizing: border-box;
	padding: 8px;
	background: #ffffff;
	border: 1px solid #e8ecef;
	border-radius: 6px;
	font-family: 'Inter', sans-serif;
	font-weight: 500;
	font-size: 14px;
	line-height: 16px;
	color: #364152;
	cursor: pointer;
}

.tc-customerhub-portal-list .tc-chl-pager-btn.is-nav {
	background: #f6f8f9;
	border-color: #d1d7de;
}

.tc-customerhub-portal-list .tc-chl-pager-btn.is-active {
	border-color: #006b70;
	color: #006b70;
}

.tc-customerhub-portal-list .tc-chl-pager-btn:disabled {
	opacity: 0.4;
	cursor: default;
}

.tc-customerhub-portal-list .tc-chl-pager-ico {
	width: 16px;
	height: 16px;
	flex: none;
	background-color: #364152;
}

.tc-customerhub-portal-list .tc-chl-pager-ico-prev {
	/* viewBox 4.94×8 — SVG has preserveAspectRatio=none so auto doesn't resolve; use explicit px */
	-webkit-mask: url("/static/icons/customerhub/portal/chevron-left.svg") center / 5px 8px no-repeat;
	mask: url("/static/icons/customerhub/portal/chevron-left.svg") center / 5px 8px no-repeat;
}

.tc-customerhub-portal-list .tc-chl-pager-ico-next {
	/* viewBox 4.94×8 — SVG has preserveAspectRatio=none so auto doesn't resolve; use explicit px */
	-webkit-mask: url("/static/icons/customerhub/portal/chevron-right.svg") center / 5px 8px no-repeat;
	mask: url("/static/icons/customerhub/portal/chevron-right.svg") center / 5px 8px no-repeat;
}

.tc-customerhub-portal-list .tc-chl-pager-ellipsis {
	padding: 0 2px;
	color: #8493a8;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	line-height: 32px;
}

@media (max-width: 767px) {

	/* No mobile Figma for the list page — full-width cards, wrapped toolbar/actions. */
	.tc-customerhub-portal-list .tc-chl-toolbar {
		flex-direction: column;
		align-items: stretch;
		gap: 12px;
	}

	.tc-customerhub-portal-list .tc-chl-toolbar-controls {
		flex-wrap: wrap;
	}

	.tc-customerhub-portal-list .tc-chl-search {
		flex: 1 1 100%;
		width: auto;
	}

	.tc-customerhub-portal-list .block-list-item {
		min-height: 0;
		padding: 16px;
		overflow: visible;
	}

	.tc-customerhub-portal-list .tc-chl-card-main {
		flex-wrap: wrap;
		align-items: flex-start;
		gap: 12px 16px;
	}

	.tc-customerhub-portal-list .tc-chl-card-img {
		width: 72px;
		height: 72px;
		border-radius: 16px;
	}

	.tc-customerhub-portal-list .tc-chl-card-info {
		flex: 1 1 calc(100% - 88px);
		min-width: 0;
	}

	/* #body beats the desktop title rule above. */
	#body .tc-customerhub-portal-list .tc-chl-card-title {
		font-size: 16px;
		line-height: 22px;
		overflow-wrap: anywhere;
		word-break: break-word;
		white-space: normal;
	}

	.tc-customerhub-portal-list .tc-chl-card-date {
		font-size: 14px;
		line-height: 20px;
		overflow-wrap: anywhere;
	}

	.tc-customerhub-portal-list .tc-chl-card-price {
		flex: 1 1 100%;
		flex-wrap: wrap;
		min-width: 0;
	}

	.tc-customerhub-portal-list .tc-chl-card-actions {
		flex-wrap: wrap;
		justify-content: flex-start;
		gap: 8px;
	}

	.tc-customerhub-portal-list .tc-chl-card-btn {
		max-width: 100%;
	}

	.tc-customerhub-portal-list .tc-chl-pager {
		flex-direction: column;
		align-items: stretch;
		gap: 12px;
		margin-top: 8px;
		margin-bottom: 24px;
	}

	.tc-customerhub-portal-list .tc-chl-pager-left {
		justify-content: center;
		flex-wrap: wrap;
	}

	.tc-customerhub-portal-list .tc-chl-pager-nav {
		justify-content: center;
		flex-wrap: wrap;
	}

	/* Keep list content clear of the stacked footer on small viewports. */
	.tc-customerhub-portal-page.tc-customerhub-portal-list {
		padding-bottom: 32px !important;
	}
}

/* Narrow phones: stack card body + action buttons so nothing overflows. */
@media (max-width: 480px) {
	.tc-customerhub-portal-list .tc-chl-card-main {
		flex-direction: column;
		align-items: stretch;
	}

	.tc-customerhub-portal-list .tc-chl-card-img {
		width: 64px;
		height: 64px;
	}

	.tc-customerhub-portal-list .tc-chl-card-info,
	.tc-customerhub-portal-list .tc-chl-card-price {
		flex: 1 1 auto;
		width: 100%;
	}

	.tc-customerhub-portal-list .tc-chl-card-actions {
		flex-direction: column;
		align-items: stretch;
	}

	.tc-customerhub-portal-list .tc-chl-card-btn {
		width: 100%;
		justify-content: center;
		white-space: normal;
		height: auto;
		min-height: 28px;
	}

	.tc-customerhub-portal-list .tc-chl-tabs {
		gap: 16px;
		overflow: visible;
	}
}

/* Detail-page reskin (subscription payment history); layered on top of .tc-customerhub-portal-list. */
/* Back-only topnav (no section switcher) — centre the ← Back link in the 72px bar. */
body.tc-customerhub-portal-body #header.tc-customerhub-portal-topnav-backonly .tc-customerhub-portal-topnav-back {
	top: 28px;
}

/* The customer personal block stays in the DOM (its data feeds the card-update modal) but is hidden;
   the detail header shows the product instead. */
body.tc-customerhub-portal-body .tc-customerhub-portal-detail .personal-block {
	display: none !important;
}

.tc-customerhub-portal-detail .tc-chl-detailhead {
	display: flex;
	align-items: center;
	gap: 16px;
	width: 100%;
	margin-bottom: 19px;
}

.tc-customerhub-portal-detail .tc-chl-detailhead-img {
	width: 112px;
	height: 112px;
	flex: none;
	float: none;
	border-radius: 16px;
	overflow: hidden;
	background: #e8ecef;
}

.tc-customerhub-portal-detail .tc-chl-detailhead-img img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.tc-customerhub-portal-detail .tc-chl-detailhead-info {
	display: flex;
	flex-direction: column;
	gap: 6px;
	min-width: 0;
}

/* #body prefix beats the legacy .root-members #body p rule. */
#body .tc-customerhub-portal-detail .tc-chl-detailhead-title {
	margin: 0;
	font-family: 'Inter', sans-serif;
	font-weight: 500;
	font-size: 24px;
	line-height: 32px;
	color: #2a3648;
}

#body .tc-customerhub-portal-detail .tc-chl-detailhead-sub {
	margin: 0;
	font-family: 'Inter', sans-serif;
	font-weight: 400;
	font-size: 14px;
	line-height: 20px;
	color: #8493a8;
}

.tc-customerhub-portal-detail .tc-chl-detailhead-sub i {
	font-style: normal;
}

.tc-customerhub-portal-detail .tc-chl-detailhead-sub a {
	color: #2c7a7b;
}

.tc-customerhub-portal-detail .tc-chl-detailhead-actions {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-top: 4px;
}

.tc-customerhub-portal-detail .tc-chl-detailhead-actions .tc-chl-card-btn {
	height: 32px;
	padding: 8px 12px;
	font-size: 14px;
}

.tc-customerhub-portal-detail .tc-chl-detailhead-cancel,
.tc-customerhub-portal-detail .tc-chl-detailhead-cancel:hover {
	background: #e53e3e;
	border-color: #e53e3e;
	color: #ffffff;
}

.tc-customerhub-portal-detail .tc-chl-detailhead-cancel:hover {
	background: #c53030;
	border-color: #c53030;
}

/* Detail status tabs link back to the subscriptions list, pre-filtered to that status. */
.tc-customerhub-portal-detail .tc-chl-tabs-links li {
	cursor: pointer;
}

.tc-customerhub-portal-detail .tc-chl-tabs-links a {
	display: block;
	margin: -8px;
	padding: 8px;
	color: inherit;
	text-decoration: none;
}

/* Detail card: no thumbnail, info spans full width with Month/Date meta lines and a status badge. */
.tc-customerhub-portal-detail .tc-chl-card-main {
	align-items: flex-start;
}

#body .tc-customerhub-portal-detail .tc-chl-card-meta {
	margin: 0;
	font-family: 'Inter', sans-serif;
	font-weight: 400;
	font-size: 16px;
	line-height: 24px;
	color: #364152;
}

.tc-customerhub-portal-detail .tc-chl-card-meta i {
	font-style: normal;
}

.tc-customerhub-portal-detail .tc-chl-card-badge {
	display: inline-flex;
	align-items: center;
	margin-left: 8px;
	padding: 4px 8px;
	border-radius: 8px;
	font-family: 'Inter', sans-serif;
	font-weight: 500;
	font-size: 12px;
	line-height: 16px;
	vertical-align: middle;
	white-space: nowrap;
}

.tc-customerhub-portal-detail .tc-chl-card-badge.is-paid {
	background: #c6f6d5;
	color: #22543d;
}

.tc-customerhub-portal-detail .tc-chl-card-badge.is-upcoming {
	background: #bee3f8;
	color: #2c5282;
}

.tc-customerhub-portal-detail .tc-chl-card-badge.is-refunded {
	background: #fed7d7;
	color: #822727;
}

@media (max-width: 767px) {
	.tc-customerhub-portal-detail .tc-chl-detailhead {
		align-items: flex-start;
	}

	.tc-customerhub-portal-detail .tc-chl-detailhead-img {
		width: 88px;
		height: 88px;
	}

	#body .tc-customerhub-portal-detail .tc-chl-detailhead-title {
		font-size: 20px;
		line-height: 28px;
	}
}

/* Inline-styled detail pages (view subscription / payment plan) — Figma 946:1450.
   Base .tc-customerhub-portal-page uses gap/padding !important for dashboard;
   detail must override those so hero/tabs/cards align like the Figma frame. */
.tc-customerhub-portal-detail.tc-customerhub-portal-page {
	width: 100%;
	max-width: 1152px;
	margin: 0 auto;
	padding: 32px 0 64px !important;
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 19px !important;
	box-sizing: border-box;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}

.tc-customerhub-portal-detail .tc-chd-hero {
	display: flex;
	align-items: flex-start;
	gap: 16px;
	width: 100%;
	min-height: 160px;
	margin: 0;
	box-sizing: border-box;
	position: relative;
}

.tc-customerhub-portal-detail .tc-chd-hero-img {
	width: 166px;
	height: 160px;
	border-radius: 12px;
	object-fit: cover;
	flex: none;
}

.tc-customerhub-portal-detail .tc-chd-hero-img-empty {
	background: #e8ecef;
}

.tc-customerhub-portal-detail .tc-chd-hero-info {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: flex-start;
	gap: 8px;
	padding-top: 7px;
	min-height: 0;
	flex: 1;
	min-width: 0;
}

#body .tc-customerhub-portal-detail .tc-chd-hero-title {
	margin: 0;
	padding: 0;
	font-family: 'Inter', sans-serif;
	font-size: 24px;
	font-weight: 500;
	line-height: 32px;
	color: #364152;
	word-wrap: break-word;
}

#body .tc-customerhub-portal-detail .tc-chd-hero-sub {
	margin: 0;
	padding: 0;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	color: #364152;
}

.tc-customerhub-portal-detail .tc-chd-hero-cancel {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	margin-top: 10px;
	padding: 8px 12px;
	background: #d13f36;
	border-radius: 6px;
	border: none;
	color: #ffffff;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	cursor: pointer;
}

.tc-customerhub-portal-detail .tc-chd-hero-cancel:hover {
	background: #b8362e;
}

.tc-customerhub-portal-detail .tc-chd-tabs {
	width: 100%;
	border-bottom: 1px solid #d1d7de;
	display: flex;
	align-items: center;
	gap: 32px;
	overflow: visible;
}

.tc-customerhub-portal-detail .tc-chd-tab {
	padding: 8px;
	color: #8493a8;
	font-family: 'Inter', sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 24px;
	cursor: pointer;
	white-space: nowrap;
	border-bottom: 2px solid transparent;
	margin-bottom: -1px;
}

.tc-customerhub-portal-detail .tc-chd-tab.is-active {
	color: #2a3648;
	border-bottom-color: #006b70;
}

.tc-customerhub-portal-detail .tc-chd-body {
	width: 100%;
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.tc-customerhub-portal-detail .tc-chd-toolbar {
	width: 100%;
	height: 32px;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 12px;
	padding: 0;
	box-sizing: border-box;
}

.tc-customerhub-portal-detail .tc-chd-showing {
	color: #2a3648;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
	white-space: nowrap;
}

.tc-customerhub-portal-detail .tc-chd-toolbar-controls {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-wrap: wrap;
	justify-content: flex-end;
}

.tc-customerhub-portal-detail .tc-chd-search {
	width: 200px;
	max-width: 100%;
	height: 32px;
	padding: 7px 12px;
	background: #ffffff;
	border-radius: 6px;
	border: 1px solid #d1d7de;
	display: flex;
	align-items: center;
	gap: 8px;
	box-sizing: border-box;
}

.tc-customerhub-portal-detail .tc-chd-search-icon {
	width: 12px;
	height: 12px;
	flex: none;
	color: #364152;
	display: block;
}

.tc-customerhub-portal-detail .tc-chd-search-input {
	flex: 1 1 0;
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
	outline: 0;
	background: transparent;
	box-shadow: none;
	color: #364152;
	font-family: 'Inter', sans-serif;
	font-size: 12px;
	font-weight: 400;
	line-height: 16px;
}

.tc-customerhub-portal-detail .tc-chd-search-input::placeholder {
	color: #afbbc9;
	opacity: 1;
}

.tc-customerhub-portal-detail .tc-chd-tbtn {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	height: 32px;
	padding: 8px 12px;
	background: #ffffff;
	border-radius: 6px;
	border: 1px solid #d1d7de;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	color: #364152;
	cursor: pointer;
	box-sizing: border-box;
	white-space: nowrap;
}

.tc-customerhub-portal-detail .tc-chd-tbtn-filter {
	background: #ffffff;
	border-color: #d1d7de;
	padding: 7px 12px;
}

.tc-customerhub-portal-detail .tc-chd-tbtn-icon {
	display: block;
	flex: none;
	overflow: visible;
	color: #364152;
}

.tc-customerhub-portal-detail .tc-chd-tbtn-icon-sort {
	width: 14px;
	height: 12px;
}

.tc-customerhub-portal-detail .tc-chd-tbtn-icon-filter {
	width: 12px;
	height: 8px;
}

.tc-customerhub-portal-detail .tc-chd-cards {
	width: 100%;
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.tc-customerhub-portal-detail .tc-chd-card {
	width: 100%;
	padding: 24px;
	background: #ffffff;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
	border-radius: 12px;
	border: 1px solid #d1d7de;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 12px;
	box-sizing: border-box;
}

.tc-customerhub-portal-detail .tc-chd-card-top {
	width: 100%;
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
	gap: 20px;
}

.tc-customerhub-portal-detail .tc-chd-card-info {
	display: flex;
	flex-direction: column;
	gap: 4px;
	min-width: 0;
	flex: 1 1 auto;
	position: relative;
}

.tc-customerhub-portal-detail .tc-chd-card-title-row {
	display: flex;
	align-items: flex-start;
	flex-wrap: wrap;
	gap: 8px;
	min-width: 0;
}

.tc-customerhub-portal-detail .tc-chd-card-title {
	color: #2b384a;
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 500;
	line-height: 28px;
	word-wrap: break-word;
	overflow-wrap: anywhere;
}

.tc-customerhub-portal-detail .tc-chd-card-badge {
	display: inline-flex;
	align-items: center;
	padding: 4px 8px;
	border-radius: 8px;
	font-family: 'Inter', sans-serif;
	font-weight: 500;
	font-size: 12px;
	line-height: 16px;
	color: #364152;
	flex: none;
	white-space: nowrap;
}

.tc-customerhub-portal-detail .tc-chd-card-badge.is-upcoming {
	background: #bee3f8;
}

.tc-customerhub-portal-detail .tc-chd-card-badge.is-paid {
	background: #c6f6d5;
}

.tc-customerhub-portal-detail .tc-chd-card-badge.is-refunded {
	background: #fed7d7;
}

.tc-customerhub-portal-detail ul.tc-chd-cards {
	list-style: none;
	margin: 0;
	padding: 0;
}

#body .tc-customerhub-portal-detail .tc-chd-card-meta {
	margin: 0;
	color: #364152;
	font-family: 'Inter', sans-serif;
	font-size: 16px;
	font-weight: 400;
	line-height: 24px;
}

.tc-customerhub-portal-detail .tc-chd-card-price {
	display: flex;
	align-items: center;
	gap: 8px;
	flex: none;
	overflow: visible;
	min-width: 0;
}

.tc-customerhub-portal-detail .tc-chd-card-amount {
	color: #364152;
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 400;
	line-height: 32px;
	white-space: nowrap;
}

.tc-customerhub-portal-detail .tc-chd-card-actions {
	width: 100%;
	display: flex;
	justify-content: flex-end;
	align-items: center;
	flex-wrap: wrap;
	gap: 10px;
}

.tc-customerhub-portal-detail .tc-chd-card-btn {
	height: 28px;
	padding: 6px 8px;
	background: #ffffff;
	border-radius: 6px;
	border: 1px solid #e8ecef;
	font-family: 'Inter', sans-serif;
	font-size: 12px;
	font-weight: 500;
	line-height: 16px;
	color: #364152;
	cursor: pointer;
	text-decoration: none;
	display: inline-flex;
	align-items: center;
	gap: 4px;
	box-sizing: border-box;
	white-space: nowrap;
}

.tc-customerhub-portal-detail .tc-chd-pager {
	width: 100%;
	height: 32px;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 12px;
	margin: 0;
	box-sizing: border-box;
}

.tc-customerhub-portal-detail .tc-chd-pager-left,
.tc-customerhub-portal-detail .tc-chd-pager-nav {
	display: flex;
	align-items: center;
	gap: 8px;
}

.tc-customerhub-portal-detail .tc-chd-perpage {
	width: 72px;
	height: 32px;
	padding: 7px 12px;
	background: #ffffff;
	border-radius: 8px;
	border: 1px solid #d1d7de;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	box-sizing: border-box;
	color: #364152;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 16px;
}

.tc-customerhub-portal-detail .tc-chd-pager-label {
	color: #2a3648;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
}

.tc-customerhub-portal-detail .tc-chd-pagebtn {
	height: 32px;
	padding: 8px;
	border-radius: 6px;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 16px;
	color: #364152;
	cursor: pointer;
	box-sizing: border-box;
}

.tc-customerhub-portal-detail .tc-chd-pagebtn-nav {
	background: #f6f8f9;
	border: 1px solid #d1d7de;
}

.tc-customerhub-portal-detail .tc-chd-pagebtn-num {
	width: 32px;
	padding: 8px 12px;
	background: #ffffff;
	border: 1px solid #e8ecef;
}

@media (max-width: 767px) {
	.tc-customerhub-portal-detail.tc-customerhub-portal-page {
		padding-left: 16px !important;
		padding-right: 16px !important;
	}

	.tc-customerhub-portal-detail .tc-chd-tabs {
		gap: 16px;
		overflow: visible;
	}

	.tc-customerhub-portal-detail .tc-chd-hero {
		flex-direction: column;
		align-items: stretch;
		gap: 12px;
	}

	.tc-customerhub-portal-detail .tc-chd-hero-img {
		width: 80px;
		height: 80px;
		border-radius: 12px;
	}

	.tc-customerhub-portal-detail .tc-chd-hero-info {
		min-height: 0;
		padding-top: 0;
	}

	.tc-customerhub-portal-detail .tc-chd-toolbar {
		height: auto;
		flex-direction: column;
		align-items: stretch;
	}

	.tc-customerhub-portal-detail .tc-chd-toolbar-controls {
		justify-content: flex-start;
	}

	.tc-customerhub-portal-detail .tc-chd-search {
		flex: 1 1 100%;
		width: auto;
	}

	.tc-customerhub-portal-detail .tc-chd-card {
		padding: 16px;
	}

	.tc-customerhub-portal-detail .tc-chd-card-top {
		flex-direction: column;
		align-items: stretch;
		gap: 10px;
	}

	.tc-customerhub-portal-detail .tc-chd-card-price {
		flex-wrap: wrap;
	}

	.tc-customerhub-portal-detail .tc-chd-card-actions {
		justify-content: flex-start;
	}

	.tc-customerhub-portal-detail .tc-chd-pager {
		height: auto;
		flex-direction: column;
		align-items: stretch;
	}
}

@media (max-width: 480px) {
	.tc-customerhub-portal-detail .tc-chd-card-actions {
		flex-direction: column;
		align-items: stretch;
	}

	.tc-customerhub-portal-detail .tc-chd-card-btn {
		width: 100%;
		justify-content: center;
		white-space: normal;
		height: auto;
		min-height: 28px;
	}

	.tc-customerhub-portal-detail .tc-chd-card-title-row {
		align-items: flex-start;
	}
}

/* TC-12922 Error pages reskin - shared standalone shell (.tc-errpage). Standalone pages, not the SPA.
   First consumer: customer hub sign-in (customer.php). Type rules declare font-family + letter-spacing
   explicitly because this sheet's legacy h1-h6 rules would otherwise leak in. */
body.tc-errpage {
	margin: 0;
	min-height: 100vh;
	display: flex;
	flex-direction: column;
	background: #f6f8fb;
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
	color: #364152;
	letter-spacing: normal;
}
.tc-errpage-nav {
	background: #ffffff;
	border-bottom: 1px solid #e8edf2;
	min-height: 60px;
	box-sizing: border-box;
	padding: 8px 24px;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	position: relative;
	flex-shrink: 0;
}
.tc-errpage-brand {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 2px;
	text-decoration: none;
	color: #364152;
}
.tc-errpage-brand:hover { text-decoration: none; color: #364152; }
.tc-errpage-logo { width: 177px; height: 44px; display: block; }
.tc-errpage-vendor-logo { max-height: 44px; display: block; }
.tc-errpage-company {
	font-family: 'Inter', sans-serif;
	font-size: 18px;
	font-weight: 600;
	line-height: 24px;
	letter-spacing: normal;
	color: #364152;
}
.tc-errpage-powered {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-family: 'Inter', sans-serif;
	font-size: 11px;
	font-weight: 400;
	letter-spacing: normal;
	color: #8493a8;
}
.tc-errpage-powered img { height: 14px; width: auto; display: inline-block; vertical-align: middle; }
.tc-errpage-lang {
	position: absolute;
	right: 24px;
	top: 50%;
	transform: translateY(-50%);
	display: flex;
	align-items: center;
	gap: 6px;
	font-family: 'Inter', sans-serif;
	font-size: 12px;
	letter-spacing: normal;
	color: #8493a8;
}
.tc-errpage-lang select {
	font-family: 'Inter', sans-serif;
	font-size: 12px;
	color: #364152;
	background: #ffffff;
	border: 1px solid #d1d9e2;
	border-radius: 6px;
	padding: 4px 8px;
	max-width: 140px;
}
.tc-errpage-stage {
	flex: 1 0 auto;
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	padding: 24px;
	box-sizing: border-box;
}
.tc-errpage-card {
	width: 440px;
	max-width: 100%;
	box-sizing: border-box;
	background: #ffffff;
	border-radius: 12px;
	padding: 40px;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 20px;
}
.tc-errpage-heading {
	margin: 0;
	font-family: 'Inter', sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 28px;
	letter-spacing: normal;
	color: #364152;
}
.tc-errpage-intro {
	margin: 0;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 150%;
	letter-spacing: normal;
	color: #8493a8;
}
.tc-errpage-alert {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	box-sizing: border-box;
	width: 100%;
	padding: 12px;
	border-radius: 6px;
	/* inset shadow, not border: the Figma stroke is inside, a border would shift contents 1px */
	box-shadow: inset 0 0 0 1px #dc2626;
	background: #fff0f0;
}
.tc-errpage-alert--success {
	box-shadow: inset 0 0 0 1px #16a34a;
	background: #f0fdf4;
}
.tc-errpage-alert-icon {
	flex-shrink: 0;
	width: 20px;
	height: 20px;
	border-radius: 10px;
	background: #dc2626;
	color: #ffffff;
	font-family: 'Inter', sans-serif;
	font-size: 13px;
	font-weight: 700;
	line-height: 20px;
	letter-spacing: normal;
	text-align: center;
}
.tc-errpage-alert--success .tc-errpage-alert-icon { background: #16a34a; }
.tc-errpage-alert-text {
	display: flex;
	flex-direction: column;
	gap: 4px;
	min-width: 0;
}
.tc-errpage-alert-title {
	margin: 0;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 600;
	line-height: normal;
	letter-spacing: normal;
	color: #dc2626;
	max-width: 290px; /* the design caps alert text at 290 inside the 308 column */
}
.tc-errpage-alert-body {
	margin: 0;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 150%;
	letter-spacing: normal;
	color: #8493a8;
	max-width: 290px;
}
.tc-errpage-alert-body b { color: #364152; font-weight: 600; }
.tc-errpage-alert-body a { color: #006b70; }
.tc-errpage-form {
	display: flex;
	flex-direction: column;
	gap: 20px;
	width: 100%;
	margin: 0;
}
.tc-errpage-field {
	display: flex;
	flex-direction: column;
	gap: 4px;
	width: 100%;
}
.tc-errpage-field label {
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 600;
	line-height: normal;
	letter-spacing: normal;
	color: #364152;
}
.tc-errpage-field input {
	width: 100%;
	box-sizing: border-box;
	height: 39px;
	padding: 0 11px;
	border: 1px solid #d1d9e2;
	border-radius: 6px;
	background: #ffffff;
	font-family: 'Inter', sans-serif;
	font-size: 16px;
	font-weight: 400;
	letter-spacing: normal;
	color: #364152;
	outline: none;
	box-shadow: none;
}
.tc-errpage-field input::placeholder { color: #b3bcca; }
.tc-errpage-field input:focus {
	border-color: #006b70;
	box-shadow: 0 0 0 3px rgba(0, 107, 112, 0.15);
}
.tc-errpage-submit {
	align-self: flex-start;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 8px 12px;
	border: 0;
	border-radius: 8px;
	background: #006b70;
	color: #ffffff;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	letter-spacing: normal;
	cursor: pointer;
	-webkit-appearance: none;
	appearance: none;
}
.tc-errpage-submit:hover:not(:disabled) { background: #00565a; }
.tc-errpage-submit:disabled {
	background: #495d78;
	opacity: 0.4;
	cursor: not-allowed;
}
.tc-errpage-back {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 8px 12px;
	border: 1px solid #d1d9e2;
	border-radius: 8px;
	background: #ffffff;
	color: #364152;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	letter-spacing: normal;
	text-decoration: none;
}
.tc-errpage-back:hover { background: #f6f8fb; color: #364152; text-decoration: none; }
.tc-errpage-footer {
	margin: 0;
	padding: 24px 0 0;
	font-family: 'Inter', sans-serif;
	font-size: 12px;
	font-weight: 400;
	letter-spacing: normal;
	color: #8493a8;
	text-align: center;
}
@media (max-width: 767px) {
	.tc-errpage-nav { padding: 8px 12px; }
	/* A centred brand leaves no room beside it on phones; the picker takes its own row. */
	.tc-errpage-lang { position: static; transform: none; margin-top: 6px; }
	.tc-errpage-lang label { display: none; }
	.tc-errpage-stage { padding: 16px; }
	.tc-errpage-card { padding: 24px; }
}

/* TC-12923 message-card variant of the tc-errpage shell - the generic error.php render
   (icon + heading + body + actions, centred 480 card). */
.tc-errpage-card.tc-errpage-msgcard {
	width: 480px;
	align-items: center;
	text-align: center;
	gap: 16px;
}
.tc-errpage-msgicon {
	width: 48px;
	height: 48px;
	border-radius: 24px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-family: 'Inter', sans-serif;
	font-size: 22px;
	font-weight: 700;
	line-height: 100%;
	letter-spacing: normal;
}
.tc-errpage-msgicon--error { background: #ffe7e7; color: #dc2626; }
.tc-errpage-msgicon--success { background: #e0f7e5; color: #22b456; }
.tc-errpage-msgicon--info { background: #fff2dc; color: #db7d14; }
.tc-errpage-msgicon--neutral { background: #e5edfc; color: #3e77d9; }
/* TC-12930 - the sign-in page reuses the alert inside its 400px form column;
   alignment declared explicitly because legacy sign-in rules centre text. */
.tc-signin-alert { text-align: left; }
.tc-signin-alert .tc-errpage-alert-title,
.tc-signin-alert .tc-errpage-alert-body { max-width: none; text-align: left; }
.tc-errpage-msgtitle {
	margin: 0;
	font-family: 'Inter', sans-serif;
	font-size: 24px;
	font-weight: 600;
	line-height: normal;
	letter-spacing: normal;
	color: #364152;
	max-width: 400px;
}
.tc-errpage-msgbody {
	margin: 0;
	font-family: 'Inter', sans-serif;
	font-size: 16px;
	font-weight: 400;
	line-height: 150%;
	letter-spacing: normal;
	color: #8493a8;
	max-width: 400px;
}
.tc-errpage-actions {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 4px;
}
.tc-errpage-btn-primary {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 8px 12px;
	border: 0;
	border-radius: 8px;
	background: #006b70;
	color: #ffffff;
	font-family: 'Inter', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	letter-spacing: normal;
	text-decoration: none;
	cursor: pointer;
}
.tc-errpage-btn-primary:hover { background: #00565a; color: #ffffff; text-decoration: none; }
@media (max-width: 767px) {
	.tc-errpage-card.tc-errpage-msgcard { width: 100%; }
}
