:root{--tm-meta:#6B6B6B;--tm-red-aa:#C4121F}
/**
 * Presentation for the rebuilt Tile Mob templates.
 *
 * Two jobs only: the pieces Elementor cannot express (the specification
 * table's row rhythm, the product card), and dressing the quote plugin's own
 * markup for the new design. The quote controls' behaviour stays where it
 * belongs — this file never touches anything but their surface.
 *
 * Everything that re-dresses quote markup is scoped under a template class so
 * it outranks the plugin's own rules without resorting to !important.
 */

/* ---------- product subtitle ---------- */

.tms-subtitle{font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;line-height:1.5;margin-top:2px}
.tms-size{font-size:17px;color:#333333}
.tms-code{font-size:15px;color:var(--tm-meta);margin-top:2px}

/* ---------- specification table ---------- */

.tms-specs{font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:15px;border-top:1px solid #ececec}
.tms-spec-row{display:flex;gap:24px;align-items:flex-start;padding:12px 0;border-bottom:1px solid #ececec}
.tms-spec-label{flex:0 0 42%;max-width:42%;color:var(--tm-meta)}
.tms-spec-value{flex:1 1 auto;color:#333333;font-weight:700}
@media(max-width:600px){
	.tms-spec-row{flex-direction:column;gap:2px}
	.tms-spec-label{flex:none;max-width:none}
}

/* ---------- back to results ---------- */

.tms-back{display:inline-block;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:12px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;color:#333333;text-decoration:none}
.tms-back:hover{color:#EB1B2E;text-decoration:none}

/* ---------- the quote and sample controls, dressed for the product page ---------- */

.tm-product .tmq-add{margin:0;padding:0;border:0}
.tm-product .tmq-add-label{font-size:13px;font-weight:700;color:#333333;margin-bottom:8px}
.tm-product .tmq-add-row{align-items:stretch;gap:10px;flex-wrap:wrap}
.tm-product .tmq-add-qty{width:110px!important;max-width:110px!important;flex:0 0 110px;min-height:52px;padding:0 14px;border:1px solid #d8d8d8;border-radius:0;font-size:15px}
.tm-product .tmq-add-qty:focus{outline:none;border-color:#EB1B2E}
.tm-product .tmq-add-unit{display:flex;align-items:center;font-size:15px;color:var(--tm-meta)}
.tm-product .tmq-add-btn{min-height:52px;padding:0 30px;background:#EB1B2E;color:#fff;border:0;border-radius:0;font-size:13px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase}
.tm-product .tmq-add-btn:hover{background:#C0142A}
.tm-product .tmq-add-hint{margin:10px 0 0;font-size:13px;color:#6b6b6b}

.tm-product .tmq-sample{margin:0}
.tm-product .tmq-sample-btn{min-height:52px;padding:0 30px;border:1px solid #333333;background:#fff;color:#333333;font-family:inherit;font-size:13px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;text-decoration:none;transition:background .18s ease,color .18s ease,border-color .18s ease}
.tm-product .tmq-sample-btn:hover{background:#333333;color:#fff;text-decoration:none}
.tm-product .tmq-sample-btn[disabled]{border-color:#d8d8d8;color:var(--tm-meta);background:#fff;text-decoration:none;cursor:default}
.tm-product .tmq-sample-terms{margin:10px 0 0;font-size:13px;color:var(--tm-meta);line-height:1.6}

.tm-product .tmq-availability{margin:0;font-size:14px;color:#EB1B2E;font-weight:700}

/* ---------- product tabs ---------- */

.tm-ptabs{
	--n-tabs-gap:0;
	--n-tabs-border-width:0;
	--n-tabs-title-background-color:transparent;
	--n-tabs-title-background-color-hover:transparent;
	--n-tabs-title-background-color-active:transparent;
	--n-tabs-title-color:var(--tm-meta);
	--n-tabs-title-color-hover:#333333;
	--n-tabs-title-color-active:#333333;
	--n-tabs-title-border-radius:0;
	--n-tabs-title-padding-block-start:12px;
	--n-tabs-title-padding-block-end:12px;
	--n-tabs-title-padding-inline-start:0;
	--n-tabs-title-padding-inline-end:20px;
	--n-tabs-title-font-size:19px;
	--n-tabs-heading-justify-content:flex-start;
}
.tm-ptabs .e-n-tabs-heading{border-bottom:1px solid #ececec}
.tm-ptabs .e-n-tab-title{border:0;border-bottom:3px solid transparent;margin-right:22px;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-weight:800;transition:color .18s ease}
.tm-ptabs .e-n-tab-title[aria-selected="true"]{border-bottom-color:#EB1B2E}
.tm-ptabs .e-n-tabs-content{padding-top:22px}

/* ---------- share ---------- */

.tm-share .elementor-share-btn{background-color:transparent;border:0;padding:0;margin-right:20px;min-height:0}
.tm-share .elementor-share-btn .elementor-share-btn__icon{background-color:transparent;color:#333333;font-size:17px;transition:color .18s ease}
.tm-share .elementor-share-btn:hover .elementor-share-btn__icon{background-color:transparent;color:#EB1B2E}

/* ---------- product gallery ---------- */

.tm-gallery .woocommerce-product-gallery__image img{aspect-ratio:1;object-fit:cover;width:100%}
.tm-gallery .flex-control-thumbs li img{aspect-ratio:1;object-fit:cover}

/* ---------- related products ---------- */

.tm-related{margin:0}
.tm-related .tm-related-title{font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:26px;font-weight:800;color:#333333;margin:0 0 22px;line-height:1.25}
.tm-related .tm-related-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:32px 20px}
.tm-related .tm-related-card{font-family:'Mulish',-apple-system,'Segoe UI',sans-serif}
.tm-related .tm-related-img{border:1px solid #e6e6e6;background:#f4f4f4}
.tm-related .tm-related-card:hover .tm-related-img{border-color:#333333}
.tm-related .tm-related-name{display:block;margin-top:12px;font-size:14px;font-weight:700;color:#333333;line-height:1.4}
.tm-related .tm-related-meta{display:block;margin-top:4px;font-size:13px;color:#6b6b6b}
.tm-related .tm-related-code{display:block;margin-top:2px;font-size:12px;color:var(--tm-meta)}

/* ---------- catalogue sidebar ---------- */

.tms-side{font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;margin-bottom:42px}
.tms-side-title{font-family:'Lora',Georgia,serif;font-size:22px;font-weight:600;color:#333333;margin:0 0 14px;line-height:1.35}

.tms-cats{display:block;border-top:1px solid #ececec}
.tms-cat{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 0;border-bottom:1px solid #ececec;color:#333333;text-decoration:none;font-size:15px;transition:color .16s ease}
.tms-cat:hover,.tms-cat.is-current{color:#EB1B2E;text-decoration:none}
/* The Elementor kit's global link colour outranked .tms-cat and turned every
   sidebar category brand-red (4.4:1 on white, fails AA). */
.tms-side .tms-cats .tms-cat{color:#333333}
.tms-side .tms-cats .tms-cat:hover,.tms-side .tms-cats .tms-cat.is-current{color:var(--tm-red-aa)}
.tms-side .tms-cats .tms-cat:hover .tms-cat-count{color:var(--tm-red-aa)}
.tms-cat-name{flex:1 1 auto}
.tms-cat-count{flex:0 0 auto;font-size:13px;color:var(--tm-meta)}
.tms-cat:hover .tms-cat-count{color:#EB1B2E}

.tms-search input[type="search"]{width:100%;min-height:44px;padding:0 14px;border:1px solid #d8d8d8;background:#fff;font-family:inherit;font-size:15px;border-radius:0}
.tms-search input[type="search"]:focus{outline:none;border-color:#EB1B2E}
.tms-search-actions{display:flex;gap:10px;margin-top:14px}
.tms-btn{display:inline-flex;align-items:center;justify-content:center;min-height:43px;padding:0 22px;font-size:12px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;text-decoration:none;border-radius:0;cursor:pointer;transition:background .18s ease,color .18s ease}
.tms-btn-ghost{flex:1 1 auto;border:1px solid #d8d8d8;background:#fff;color:#333333}
.tms-btn-ghost:hover{border-color:#333333;color:#333333;text-decoration:none}
.tms-btn-dark{flex:1 1 auto;border:0;background:#333333;color:#ffffff;font-family:inherit}
.tms-btn-dark:hover{background:#EB1B2E;color:#ffffff}

.tms-styles{display:flex;flex-direction:column}
.tms-style{padding:9px 0;color:#EB1B2E;text-decoration:none;font-size:15px;line-height:1.35}
.tms-style:hover{color:#C0142A;text-decoration:underline}

/* ---------- product loop cards ---------- */

.tm-archive ul.products{display:grid;grid-template-columns:repeat(4,1fr);gap:28px 24px;margin:0;padding:0;list-style:none}
@media(max-width:1200px){.tm-archive ul.products{grid-template-columns:repeat(3,1fr)}}
@media(max-width:900px){.tm-archive ul.products{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.tm-archive ul.products{grid-template-columns:1fr}}
.tm-archive ul.products li.product{width:auto!important;margin:0!important;float:none!important;border:1px solid #e6e6e6;background:#fff;transition:border-color .18s ease,box-shadow .18s ease}
.tm-archive ul.products li.product:hover{border-color:#333333;box-shadow:0 8px 22px rgba(0,0,0,.07)}
.tm-archive ul.products li.product a img{aspect-ratio:1;object-fit:cover;width:100%;margin:0;display:block}
.tm-archive ul.products li.product .woocommerce-loop-product__title{padding:16px 16px 0;margin:0;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:13px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:#333333;line-height:1.45}
.tm-archive .tms-card-meta{display:block;padding:6px 16px 16px;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif}
.tm-archive .tms-card-size{display:block;font-size:13px;color:#6b6b6b}
.tm-archive .tms-card-code{display:block;margin-top:2px;font-size:12px;color:var(--tm-meta)}
.tm-archive ul.products li.product .price{display:block;padding:0 16px 14px;margin:-8px 0 0;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:14px;font-weight:700;color:#333333}

.tm-archive .woocommerce-result-count{margin:0 0 22px;padding:15px 18px;background:#f4f4f4;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:14px;color:#333333}
.tm-archive .woocommerce-pagination ul.page-numbers{display:flex;flex-wrap:wrap;gap:12px;border:0;margin:32px 0 0;padding:0}
.tm-archive .woocommerce-pagination ul.page-numbers li{border:0;margin:0}
.tm-archive .woocommerce-pagination ul.page-numbers li .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:38px;padding:0 12px;border:1px solid #d8d8d8;background:#fff;color:#333333;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:14px;font-weight:700;border-radius:0}
.tm-archive .woocommerce-pagination ul.page-numbers li .page-numbers.current,
.tm-archive .woocommerce-pagination ul.page-numbers li .page-numbers:hover{background:#EB1B2E;border-color:#EB1B2E;color:#fff}

/* The results column has to be allowed to shrink; a grid's min-content width
   would otherwise push the whole row past the viewport. */
.tm-archive-page{align-items:flex-start}
.tm-archive-main{min-width:0}
.tm-archive-page > .e-con{min-width:0}

/* ---------- homepage ---------- */

/* The hero slider's styling now lives on the widget itself, in Elementor's
   own Custom CSS field. Nothing for it here. */

/* The category tiles are Elementor controls now; the rollover lives in the
   section's own Custom CSS field. */

/* Latest arrivals uses the same grid controls as the shop archive now. */

.tm-video-still{position:relative;display:block}
.tm-video-still a{position:relative;display:block}
.tm-video-still a:after{content:"";position:absolute;left:50%;top:50%;width:64px;height:64px;margin:-32px 0 0 -32px;border-radius:50%;background:#EB1B2E url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffffff'><path d='M8 5v14l11-7z'/></svg>") no-repeat center/22px;transition:background-color .18s ease}
.tm-video-still a:hover:after{background-color:#C0142A}

.tm-insta-cell{min-width:16.6%}
@media(max-width:900px){.tm-insta-cell{min-width:33.3%}}
.tm-col{min-width:0}

/* ---------- page heroes, kickers, chips ---------- */

.tms-kicker{font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:12px;font-weight:800;letter-spacing:1.8px;text-transform:uppercase;color:var(--tm-meta)}

.tms-chips{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}
.tms-chip{display:inline-flex;align-items:center;min-height:44px;padding:0 24px;border:1px solid #d8d8d8;background:#fff;color:#333333;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:12px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;text-decoration:none;transition:background .18s ease,color .18s ease,border-color .18s ease}
.tms-chip:hover,.tms-chip.is-current{background:#EB1B2E;border-color:#EB1B2E;color:#fff;text-decoration:none}

/* ---------- project + article cards (Elementor Posts, Cards skin) ---------- */

.tm-projects .elementor-post__card,.tm-articles .elementor-post__card{border:0;border-radius:0;box-shadow:none;overflow:hidden;background:transparent}
.tm-projects .elementor-post__thumbnail,.tm-articles .elementor-post__thumbnail{padding-bottom:74%}
.tm-projects .elementor-post__text,.tm-articles .elementor-post__text{margin:0;padding:20px 22px 22px}
.tm-projects .elementor-post__text{background:#333333;transition:background .22s ease}
.tm-projects .elementor-post__card:hover .elementor-post__text{background:#EB1B2E}
.tm-articles .elementor-post__text{background:#ffffff}

.tm-projects .elementor-post__badge,.tm-articles .elementor-post__badge{position:static;margin:0 0 8px;padding:0;background:transparent;border-radius:0;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:11px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase}
.tm-projects .elementor-post__badge{color:rgba(255,255,255,.72)}
.tm-articles .elementor-post__badge{color:var(--tm-meta)}

.tm-projects .elementor-post__title{margin:0 0 10px;font-family:'Lora',Georgia,serif;font-size:19px;font-weight:400;line-height:1.35}
.tm-projects .elementor-post__title a{color:#ffffff}
.tm-articles .elementor-post__title{margin:0 0 10px;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:17px;font-weight:800;line-height:1.4}
.tm-articles .elementor-post__title a{color:#333333}

.tm-projects .elementor-post__read-more,.tm-articles .elementor-post__read-more{font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:14px;font-weight:400;text-decoration:none}
.tm-projects .elementor-post__read-more{color:rgba(255,255,255,.85)}
.tm-articles .elementor-post__read-more{color:#6b6b6b}

/* ---------- single project ---------- */

.tms-proj-meta{font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:15px;line-height:2}
.tms-proj-label{font-weight:800;color:#333333}
.tms-proj-value{color:#6b6b6b}
.tms-proj-product{display:block;color:#EB1B2E;text-decoration:none;line-height:2}
.tms-proj-product:hover{color:#C0142A;text-decoration:underline}

.tms-gallery{display:flex;flex-wrap:wrap;gap:14px}
.tms-gal-item{display:block;width:86px;height:86px;overflow:hidden;border:1px solid #e6e6e6}
.tms-gal-item img{width:100%;height:100%;object-fit:cover;display:block}
.tms-gal-item:hover{border-color:#333333}

.tm-project-hero img{width:100%;display:block}
.tm-project-body p{margin:0 0 18px}
.tm-article .elementor-widget-theme-post-content p{margin:0 0 20px}

/* Elementor's card skin floats the taxonomy badge over the image and reserves a
   strip for meta we do not print. The design puts the term in the caption. */
.tm-projects .elementor-post__card .elementor-post__badge,
.tm-articles .elementor-post__card .elementor-post__badge{position:static;display:block;margin:0;padding:20px 22px 0;border-radius:0;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:11px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;line-height:1.4}
.tm-projects .elementor-post__card .elementor-post__badge{background:#333333;color:rgba(255,255,255,.72);transition:background .22s ease}
.tm-projects .elementor-post__card:hover .elementor-post__badge{background:#EB1B2E}
.tm-articles .elementor-post__card .elementor-post__badge{background:#ffffff;color:var(--tm-meta)}
.tm-projects .elementor-post__card .elementor-post__text,
.tm-articles .elementor-post__card .elementor-post__text{padding-top:8px}
.tm-projects .elementor-post__meta-data:empty,.tm-articles .elementor-post__meta-data:empty{display:none}
.tm-projects .elementor-post__card .elementor-post__avatar,
.tm-articles .elementor-post__card .elementor-post__avatar{display:none}
.tm-projects .elementor-post__card > .elementor-post__text,
.tm-articles .elementor-post__card > .elementor-post__text{margin-top:0}

a.tms-chip{color:#333333}
a.tms-chip:hover,a.tms-chip.is-current{color:#ffffff}

/* The cards skin paints a white card and floats the badge; the design has the
   caption block run straight off the image. */
.tm-projects .elementor-post__card,
.tm-articles .elementor-post__card{background-color:transparent!important;border:0!important;box-shadow:none!important;border-radius:0!important;overflow:hidden}
.tm-projects .elementor-post__card .elementor-post__badge,
.tm-articles .elementor-post__card .elementor-post__badge{margin:0!important;top:auto!important;left:auto!important;right:auto!important;bottom:auto!important;max-width:none}
.tm-projects .elementor-post__card .elementor-post__text,
.tm-articles .elementor-post__card .elementor-post__text{margin:0!important}
.tm-articles .elementor-post__card .elementor-post__badge,
.tm-articles .elementor-post__card .elementor-post__text{background:#ffffff}

/* ---------- quote page ---------- */

.tmq-quote,.tmq-root{font-family:'Mulish',-apple-system,'Segoe UI',sans-serif}
.tmq-quote .tmq-table{font-size:15px}
.tmq-quote .tmq-table thead th,.tmq-quote .tmq-grouphead td{font-family:inherit;letter-spacing:1.4px}
.tmq-quote .tmq-name{font-weight:700;color:#333333}
.tmq-quote .tmq-send,.tmq-root .tmq-send{min-height:52px;padding:0 32px;background:#EB1B2E;color:#fff;border:0;border-radius:0;font-family:inherit;font-size:13px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;cursor:pointer;transition:background .18s ease}
.tmq-quote .tmq-send:hover,.tmq-root .tmq-send:hover{background:#C0142A}
.tmq-root .elementor-field-group input,.tmq-root .elementor-field-group textarea{border-radius:0}

/* ============================================================
   Pre-launch audit fixes — 21 Aug 2026
   ============================================================ */

/* --- P0: the collapsed navigation was white-on-white (1:1 contrast).
       Elementor's own dropdown rules (.elementor-widget-n-menu
       .e-n-menu[data-layout="dropdown"] .e-n-menu-title) force a white panel
       while the widget's title colour token stays white for the dark desktop
       bar. These selectors match that specificity deliberately. --- */
@media (max-width:1024px){
	.tm-navrow .elementor-widget-n-menu .e-n-menu[data-layout="dropdown"] .e-n-menu-wrapper{background:#333333;padding:4px 0}
	.tm-navrow .elementor-widget-n-menu .e-n-menu[data-layout="dropdown"] .e-n-menu-title{background:#333333;border-bottom:1px solid rgba(255,255,255,.14);padding-left:24px;padding-right:24px}
	.tm-navrow .elementor-widget-n-menu .e-n-menu[data-layout="dropdown"] .e-n-menu-item:last-child .e-n-menu-title{border-bottom:0}
	.tm-navrow .elementor-widget-n-menu .e-n-menu[data-layout="dropdown"] .e-n-menu-title:not(.e-current) .e-n-menu-title-container .e-n-menu-title-text,
	.tm-navrow .elementor-widget-n-menu .e-n-menu[data-layout="dropdown"] .e-n-menu-title .e-n-menu-title-text,
	.tm-navrow .elementor-widget-n-menu .e-n-menu[data-layout="dropdown"] .e-n-menu-title a{color:#ffffff}
	.tm-navrow .elementor-widget-n-menu .e-n-menu[data-layout="dropdown"] .e-n-menu-title .e-n-menu-dropdown-icon i,
	.tm-navrow .elementor-widget-n-menu .e-n-menu[data-layout="dropdown"] .e-n-menu-title .e-n-menu-dropdown-icon svg{color:#ffffff;fill:#ffffff}
	.tm-navrow .elementor-widget-n-menu .e-n-menu[data-layout="dropdown"] .e-n-menu-title[aria-expanded="true"],
	.tm-navrow .elementor-widget-n-menu .e-n-menu[data-layout="dropdown"] .e-n-menu-title:hover,
	.tm-navrow .elementor-widget-n-menu .e-n-menu[data-layout="dropdown"] .e-n-menu-title.e-current{background:#3f3f3f}
	.tm-navrow .elementor-widget-n-menu .e-n-menu[data-layout="dropdown"] .e-n-menu-content{background:#EFEFEF}
	.tm-navrow .elementor-widget-n-menu .e-n-menu[data-layout="dropdown"] .e-n-menu-content a{color:#333333}
	.tm-navrow .e-n-menu-toggle{width:48px;height:48px;margin-left:auto;display:flex;align-items:center;justify-content:center}
	.tm-navrow .e-n-menu-toggle svg,.tm-navrow .e-n-menu-toggle i{width:26px;height:26px;font-size:26px}
	.tm-navrow{padding-top:0;padding-bottom:0}
}

/* --- Contrast. Brand red on white is 4.44:1 and fails AA by a hair; the
       hover red passes. Buttons and links take the darker red. Small meta
       greys move to a single accessible token. --- */
:root{--tm-red-aa:#C4121F;--tm-meta:#6B6B6B}
.elementor-button-wrapper .elementor-button:not(.tms-btn-ghost),
.elementor-form .elementor-button,button.elementor-button,
.tm-product .tmq-add-btn,
.tms-btn-dark:hover,
.tmq-quote .tmq-send,.tmq-root .tmq-send{background-color:var(--tm-red-aa)}
/* The kit's global link colour is now #C4121F, so links inherit an accessible
   red without a blanket override here. Only the quote plugin's own greys,
   which predate the kit, still need correcting. */
.tm-product .tmq-add .tmq-add-unit,.tm-product .tmq-add-unit,
.tm-product .tmq-sample-terms,.tmq-quote .tmq-hint,
.tm-product .woocommerce-Price-amount,.tm-product .woocommerce-Price-currencySymbol,
.woocommerce-Price-amount,.woocommerce-Price-currencySymbol{color:var(--tm-meta)}
.tms-code,.tm-related .tm-related-code,.tm-archive .tms-card-code,
.tms-spec-label,.tm-archive .tms-card-size,.tm-related .tm-related-meta,
.tmq-quote .tmq-hint,.tms-proj-value{color:var(--tm-meta)}
.tms-style{color:var(--tm-red-aa)}
.tms-cat-count{color:var(--tm-meta)}
.tmq-head-count--empty{background:#6B6B6B}
.tm-ptabs{--n-tabs-title-color-normal:#6B6B6B}
.tm-ptabs .e-n-tab-title,.tm-ptabs .e-n-tab-title .e-n-tab-title-text{color:#6B6B6B}
.tm-ann-sub{color:#C9C9C9;opacity:1}

/* --- Focus. The browser default was removed on two controls and is thin
       everywhere else; one visible ring for keyboard users. --- */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,
textarea:focus-visible,[tabindex]:focus-visible,.e-n-menu-title:focus-visible{
	outline:3px solid #C4121F;outline-offset:2px}
.tm-navrow .e-n-menu-title:focus-visible,.tm-header .elementor-button:focus-visible{outline-color:#ffffff}

/* --- The AI Tile Finder launcher (#tm-launcher) is docked bottom-right in
       aiengine-brand.php. This only keeps page content clear of it. --- */
body{--tm-finder-clearance:96px}
.tm-product,.tm-archive-page,.tm-project,.tm-article{padding-bottom:var(--tm-finder-clearance)}

/* --- Tablet: the catalogue sidebar was stacking 2,855px above the grid.
       Below 1025px the filters collapse to a disclosure above the results. --- */
@media (max-width:1024px){
	.tm-archive-page{flex-wrap:wrap}
	.tm-archive-page > .e-con:first-child{order:1;width:100%}
	.tm-archive-main{order:2;width:100%}
	.tms-side{margin-bottom:20px;border:1px solid #e6e6e6;background:#fff}
	.tms-side-title{margin:0;padding:16px 18px;cursor:pointer;position:relative;font-size:18px}
	.tms-side-title:after{content:"";position:absolute;right:20px;top:50%;width:9px;height:9px;margin-top:-6px;border-right:2px solid #333;border-bottom:2px solid #333;transform:rotate(45deg);transition:transform .2s ease}
	.tms-side.is-open .tms-side-title:after{transform:rotate(-135deg);margin-top:-2px}
	.tms-side > :not(.tms-side-title){display:none;padding:0 18px 18px}
	.tms-side.is-open > :not(.tms-side-title){display:block}
	.tms-cats{border-top:0}
}

/* --- Mobile: one product per screen made 5,387 SKUs unbrowsable. --- */
@media (max-width:560px){
	.tm-archive ul.products{grid-template-columns:repeat(2,1fr);gap:20px 14px}
	.tm-archive ul.products li.product .woocommerce-loop-product__title{padding:12px 12px 0;font-size:12px}
	.tm-archive .tms-card-meta{padding:5px 12px 12px}
	.tm-archive .tms-card-size{font-size:12px}
	.tm-archive .tms-card-code{font-size:11px}
	.tm-arrivals ul.products{grid-template-columns:repeat(2,1fr)}
}

/* --- Catalogue sort control. Elementor's Woo Products widget renders
       woocommerce_result_count() and woocommerce_catalog_ordering()
       natively; this only lays them out. --- */
.tm-archive .woocommerce-result-count,
.tm-archive .woocommerce-ordering{margin:0 0 22px;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:14px;color:#6B6B6B}
.tm-archive .woocommerce-result-count{float:left}
.tm-archive .woocommerce-ordering{float:right;display:flex;align-items:center}
.tm-archive .woocommerce-ordering:before{content:"Sort by";flex:0 0 auto;white-space:nowrap;margin-right:10px;font-size:13px;letter-spacing:.4px;color:#6B6B6B}
.tm-archive .woocommerce-ordering select{min-height:44px;padding:0 12px;border:1px solid #d8d8d8;border-radius:0;background:#fff;font-family:inherit;font-size:14px;color:#333}
.tm-archive .woocommerce-ordering select:focus{outline:none;border-color:#C4121F}
.tm-archive ul.products{clear:both}
@media (max-width:560px){
	.tm-archive .woocommerce-result-count,
	.tm-archive .woocommerce-ordering{float:none;margin-bottom:12px}
	.tm-archive .woocommerce-ordering select{width:100%}
}

/* --- Accessibility utilities --- */
.tm-sr-only,.tm-sr-only *{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.tm-skip{position:absolute;left:-9999px;top:0;z-index:9999;padding:12px 20px;background:#333333;color:#ffffff;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:14px;font-weight:700;text-decoration:none}
.tm-skip:focus{left:0;color:#ffffff}

/* --- Mobile header: the logo row wrapped onto two lines. The search label
       is hidden visually but kept for screen readers. --- */
@media (max-width:767px){
	.tm-search-toggle .elementor-button-text{position:absolute!important;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
	.tm-search-toggle .elementor-button-icon{margin:0}
	.tm-search-toggle .elementor-button-content-wrapper{gap:0}
}

/* --- Breadcrumb links were distinguished by colour alone. --- */
.tm-crumb a{text-decoration:underline;text-underline-offset:2px}
.tm-crumb a:hover{text-decoration:none}

/* --- The Elementor kit's global submit-button styling outranked
       .tms-btn-dark and painted it brand red (white on #EB1B2E is 3.9:1).
       Red is the right look here, so it takes the accessible red. --- */
.tms-search .tms-btn.tms-btn-dark,.tms-side .tms-btn.tms-btn-dark{background:var(--tm-red-aa);color:#ffffff}
.tms-search .tms-btn.tms-btn-dark:hover,.tms-side .tms-btn.tms-btn-dark:hover{background:#333333;color:#ffffff}

/* Breadcrumb underline, raised above the kit's blanket text-decoration:none. */
.tm-crumb .woocommerce-breadcrumb a{text-decoration:underline;text-underline-offset:2px}
.tm-crumb .woocommerce-breadcrumb a:hover{text-decoration:none}

/* Empty-basket message was mid-grey on white. */
.tmq-empty{color:#6B6B6B}

/* --- Filter chips. The kit's global link colour was turning idle chips
       brand-red on white (4.4:1) and the active chip was white on #EB1B2E
       (3.9:1). Both now use the accessible red. --- */
.tms-chips a.tms-chip{color:#333333;background:#fff;border-color:#d8d8d8}
.tms-chips a.tms-chip:hover,.tms-chips a.tms-chip.is-current{background:var(--tm-red-aa);border-color:var(--tm-red-aa);color:#ffffff}

/* ---------- filter rail ----------
   The five headline facets ride in the band with the result count and the sort
   control; the rest live in the sidebar. Counts are muted, the chosen term
   takes the red accent. */

.tm-archive .tms-filterbar{float:left;display:flex;flex-wrap:wrap;gap:8px;margin:0 0 22px 14px}
.tm-archive .tms-filterbar .tms-facet{margin:0}
.tm-archive .tms-filterbar select,
.tms-refine select{font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:14px;color:#333333;background:#fff;border:1px solid #DDDDDD;border-radius:0;padding:9px 12px;max-width:200px}
.tm-archive .tms-filterbar select:focus,
.tms-refine select:focus{outline:2px solid #EB1B2E;outline-offset:1px}

.tm-archive .tms-chips{clear:both;margin:0 0 18px}
.tm-archive .tms-chips ul{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0}
.tm-archive .tms-chips li{margin:0}
.tm-archive .tms-chips a{display:inline-flex;align-items:center;gap:6px;border:1px solid #DDDDDD;padding:5px 10px;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:13px;color:#333333;text-decoration:none}
.tm-archive .tms-chips a:hover{border-color:#EB1B2E;color:#EB1B2E}

.tms-refine .tms-facet{margin:0 0 22px}
.tms-refine .tms-facet-title{display:block;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#333333;margin:0 0 8px}
.tms-refine ul{list-style:none;margin:0;padding:0;border-top:1px solid #ececec}
.tms-refine li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid #ececec;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:14px}
.tms-refine li a{color:#333333;text-decoration:none}
.tms-refine li a:hover{color:#EB1B2E}
.tms-refine li.chosen a,.tms-refine li.chosen{color:#EB1B2E;font-weight:700}
.tms-refine .count{color:#6B6B6B;font-size:13px}

@media (max-width:1024px){
.tm-archive .tms-filterbar{float:none;width:100%;margin:0 0 18px}
.tm-archive .woocommerce-result-count,.tm-archive .woocommerce-ordering{float:none}
.tm-archive .tms-filterbar select{flex:1 1 140px;max-width:none}
}
/* Filtering in place: dim the grid while the swap is in flight, and keep it
   from being clicked twice. */
.elementor-widget-woocommerce-archive-products{transition:opacity .12s ease}
.elementor-widget-woocommerce-archive-products.tms-loading{opacity:.45;pointer-events:none}
.tms-refine{transition:opacity .12s ease}

/* ============================================================
   Filter panel — category strip, Filter button, left slide-out
   ============================================================ */
.tmf-cats{display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin:0 0 14px;padding:0}
.tmf-cat{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 12px;border:1px solid #DDDDDD;background:#FFFFFF;color:#333333;font-size:14px;line-height:1;text-decoration:none;white-space:nowrap}
.tmf-cat:hover{border-color:#333333;color:#333333}
.tmf-cat.is-current{background:#333333;border-color:#333333;color:#FFFFFF}
.tmf-cat-n{font-size:11px;color:var(--tm-meta);font-variant-numeric:tabular-nums}
.tmf-cat.is-current .tmf-cat-n,.tmf-cat:hover .tmf-cat-n{color:inherit;opacity:.65}

.tmf-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 16px}
.tmf-open{display:inline-flex;align-items:center;gap:9px;height:40px;padding:0 16px;border:1px solid #333333;background:#333333;color:#FFFFFF;font-size:14px;font-weight:600;cursor:pointer}
.tmf-open:hover{background:#000000;border-color:#000000}
.tmf-ico{width:15px;height:15px;flex:none}
.tmf-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;background:#EB1B2E;color:#FFFFFF;font-size:11px;font-variant-numeric:tabular-nums}
.tmf-chips{display:flex;flex-wrap:wrap;gap:7px;align-items:center}
.tmf-chip{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 9px 0 11px;border:1px solid #DDDDDD;background:#F5F4F2;color:#333333;font-size:13px;cursor:pointer}
.tmf-chip:hover{border-color:#333333}
.tmf-chip em{font-style:normal;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--tm-meta)}
.tmf-chip-x{font-size:15px;line-height:1;color:var(--tm-meta)}
.tmf-chip:hover .tmf-chip-x{color:var(--tm-red-aa)}
.tmf-clear-all{border:0;background:none;color:var(--tm-red-aa);font-size:13px;font-weight:600;text-decoration:underline;text-underline-offset:3px;cursor:pointer;padding:0 4px}

.tmf-scrim{position:fixed;inset:0;background:rgba(26,26,28,.42);opacity:0;transition:opacity .22s ease;z-index:9998}
body.tmf-open-panel .tmf-scrim{opacity:1}
.tmf-panel{position:fixed;top:0;bottom:0;left:0;width:398px;max-width:100%;background:#FFFFFF;z-index:9999;display:flex;flex-direction:column;transform:translateX(-100%);transition:transform .26s cubic-bezier(.32,.72,0,1);box-shadow:0 12px 34px rgba(26,26,28,.16)}
.tmf-panel[hidden]{display:none}
body.tmf-open-panel .tmf-panel{transform:translateX(0)}
@media (prefers-reduced-motion:reduce){.tmf-panel,.tmf-scrim{transition:none}}
.tmf-head{display:flex;align-items:center;gap:12px;padding:17px 18px 14px;border-bottom:1px solid #DDDDDD}
.tmf-head-t{flex:1;min-width:0}
.tmf-head h2{margin:0;font-size:18px;font-weight:700;letter-spacing:-.02em;color:#333333}
.tmf-sub{display:block;margin-top:2px;font-size:12px;color:var(--tm-meta);font-variant-numeric:tabular-nums}
.tmf-x{width:32px;height:32px;flex:none;display:grid;place-items:center;border:1px solid #DDDDDD;background:none;font-size:18px;line-height:1;color:var(--tm-meta);cursor:pointer}
.tmf-x:hover{border-color:#333333;color:#333333}
.tmf-body{flex:1;overflow-y:auto;overscroll-behavior:contain}
.tmf-panel.is-counting .tmf-body{opacity:.62}
.tmf-body{transition:opacity .12s ease}

.tmf-g{border-bottom:1px solid #EFEDEA}
.tmf-g>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;padding:13px 18px;font-size:14px;font-weight:600;color:#333333}
.tmf-g>summary::-webkit-details-marker{display:none}
.tmf-g>summary:hover{background:#F7F6F4}
.tmf-picked{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;background:#EB1B2E;color:#FFFFFF;font-size:11px;font-weight:600}
.tmf-caret{margin-left:auto;width:8px;height:8px;border-right:1.6px solid #9A9590;border-bottom:1.6px solid #9A9590;transform:rotate(45deg) translate(-2px,-2px);transition:transform .18s ease}
.tmf-g[open]>summary .tmf-caret{transform:rotate(-135deg) translate(-2px,-2px)}
.tmf-in{padding:0 18px 14px}
.tmf-find{width:100%;height:34px;margin-bottom:9px;padding:0 10px;border:1px solid #DDDDDD;background:#F7F6F4;font-size:13.5px;color:#333333}
.tmf-find:focus{outline:none;border-color:#333333;background:#FFFFFF}
.tmf-terms{display:flex;flex-direction:column}
.tmf-term{display:flex;align-items:center;gap:10px;padding:5px 0;font-size:14px;line-height:1.35;cursor:pointer;color:#333333}
.tmf-term input{position:absolute;width:0;height:0;opacity:0}
.tmf-box{width:16px;height:16px;flex:none;border:1.5px solid #DDDDDD;background:#FFFFFF;display:grid;place-items:center}
.tmf-term:hover .tmf-box{border-color:#333333}
.tmf-term input:checked+.tmf-box{background:#EB1B2E;border-color:#EB1B2E}
.tmf-term input:checked+.tmf-box::after{content:"";width:8px;height:4px;border-left:2px solid #FFFFFF;border-bottom:2px solid #FFFFFF;transform:rotate(-45deg) translate(1px,-1px)}
.tmf-term input:focus-visible+.tmf-box{outline:2px solid #EB1B2E;outline-offset:2px}
.tmf-nm{flex:1}
.tmf-ct{font-size:11px;color:#9A9590;font-variant-numeric:tabular-nums}
.tmf-term.is-zero{opacity:.42;pointer-events:none}
.tmf-term.is-over{display:none}
.tmf-g.is-all .tmf-term.is-over{display:flex}
.tmf-g.is-finding .tmf-term.is-over{display:flex}
.tmf-term.is-hidden{display:none!important}
.tmf-more{margin-top:7px;padding:0;border:0;background:none;color:var(--tm-meta);font-size:12.5px;font-weight:600;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.tmf-more:hover{color:#333333}

.tmf-foot{display:flex;align-items:center;gap:10px;padding:12px 16px;border-top:1px solid #DDDDDD;background:#FFFFFF}
.tmf-reset{border:0;background:none;color:var(--tm-meta);font-size:13.5px;font-weight:600;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.tmf-reset:hover{color:var(--tm-red-aa)}
.tmf-apply{flex:1;height:44px;border:0;background:#EB1B2E;color:#FFFFFF;font-size:14.5px;font-weight:700;cursor:pointer}
.tmf-apply:hover{background:var(--tm-red-aa)}
.tmf-apply[disabled]{background:#EFEDEA;color:#9A9590;cursor:default}

.tmf-loading{opacity:.45;transition:opacity .12s ease;pointer-events:none}

@media (max-width:782px){
	.tmf-panel{width:100%}
	.tmf-cats{gap:6px}
	.tmf-cat{font-size:13px;height:30px;padding:0 10px}
}
.tmf-findall{margin-top:7px;padding:0;border:0;background:none;color:var(--tm-meta);font-size:12.5px;font-weight:600;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.tmf-findall:hover{color:#333333}
.tmf-none{margin:6px 0 0;font-size:13px;color:#9A9590}

/* ------------------------------------------------------------------
   The theme styles every button red, uppercase and padded, and every
   link red. These are controls, not calls to action, so they opt out.
   ------------------------------------------------------------------ */
.tmf-cats a.tmf-cat{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 12px;border:1px solid #DDDDDD;border-radius:0;background:#FFFFFF;color:#333333;font-size:14px;font-weight:400;line-height:1;letter-spacing:normal;text-transform:none;text-decoration:none}
.tmf-cats a.tmf-cat:hover,.tmf-cats a.tmf-cat:focus{border-color:#333333;background:#FFFFFF;color:#333333;text-decoration:none}
.tmf-cats a.tmf-cat.is-current,.tmf-cats a.tmf-cat.is-current:hover{background:#333333;border-color:#333333;color:#FFFFFF}

.tmf-bar button.tmf-open{height:40px;padding:0 16px;border:1px solid #333333;border-radius:0;background:#333333;color:#FFFFFF;font-size:14px;font-weight:600;line-height:1;letter-spacing:normal;text-transform:none}
.tmf-bar button.tmf-open:hover,.tmf-bar button.tmf-open:focus{background:#000000;border-color:#000000;color:#FFFFFF}
.tmf-bar button.tmf-chip{height:32px;padding:0 9px 0 11px;border:1px solid #DDDDDD;border-radius:0;background:#F5F4F2;color:#333333;font-size:13px;font-weight:400;line-height:1;letter-spacing:normal;text-transform:none}
.tmf-bar button.tmf-chip:hover{background:#F5F4F2;border-color:#333333;color:#333333}
.tmf-bar button.tmf-clear-all{height:auto;padding:0 4px;border:0;border-radius:0;background:none;color:var(--tm-red-aa);font-size:13px;font-weight:600;letter-spacing:normal;text-transform:none;text-decoration:underline;text-underline-offset:3px}
.tmf-bar button.tmf-clear-all:hover{background:none;color:var(--tm-red-aa)}

.tmf-panel button.tmf-x{width:32px;height:32px;padding:0;border:1px solid #DDDDDD;border-radius:0;background:none;color:var(--tm-meta);font-size:18px;line-height:1;letter-spacing:normal;text-transform:none}
.tmf-panel button.tmf-x:hover{background:none;border-color:#333333;color:#333333}
.tmf-panel button.tmf-more,.tmf-panel button.tmf-findall,.tmf-panel button.tmf-reset{height:auto;padding:0;margin-top:7px;border:0;border-radius:0;background:none;color:var(--tm-meta);font-size:12.5px;font-weight:600;line-height:1.4;letter-spacing:normal;text-transform:none;text-align:left;text-decoration:underline;text-underline-offset:3px}
.tmf-panel button.tmf-reset{margin-top:0;font-size:13.5px}
.tmf-panel button.tmf-more:hover,.tmf-panel button.tmf-findall:hover{background:none;color:#333333}
.tmf-panel button.tmf-reset:hover{background:none;color:var(--tm-red-aa)}
.tmf-panel button.tmf-apply{height:44px;padding:0 16px;border:0;border-radius:0;background:#EB1B2E;color:#FFFFFF;font-size:14.5px;font-weight:700;line-height:1;letter-spacing:normal;text-transform:none}
.tmf-panel button.tmf-apply:hover{background:var(--tm-red-aa);color:#FFFFFF}
.tmf-panel button.tmf-apply[disabled],.tmf-panel button.tmf-apply[disabled]:hover{background:#EFEDEA;color:#9A9590}
.tmf-panel input.tmf-find{width:100%;height:34px;margin:0 0 9px;padding:0 10px;border:1px solid #DDDDDD;border-radius:0;background:#F7F6F4;color:#333333;font-size:13.5px;line-height:1}
.tmf-panel label.tmf-term{display:flex;align-items:center;gap:10px;margin:0;padding:5px 0;font-size:14px;font-weight:400;line-height:1.35;color:#333333;text-transform:none;letter-spacing:normal}
.tmf-panel .tmf-g>summary{list-style:none;text-transform:none;letter-spacing:normal}
.tmf-panel .tmf-g>summary::marker,.tmf-panel .tmf-g>summary::-webkit-details-marker{display:none;content:""}

.tmf-panel label.tmf-term.is-over{display:none}
.tmf-panel .tmf-g.is-all label.tmf-term.is-over,.tmf-panel .tmf-g.is-finding label.tmf-term.is-over{display:flex}
.tmf-panel label.tmf-term.is-hidden{display:none}
.tmf-bar button.tmf-chip{display:inline-flex;align-items:center;gap:8px}
.tmf-bar button.tmf-chip .tmf-chip-x{margin-left:1px;font-size:15px;line-height:1}
.tmf-bar{align-items:center}

/* ---- band layout: one toolbar row, chips on their own ---- */
.tmf-toolbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 14px}
.tmf-toolbar .tmf-bar{order:1;margin:0}
.tmf-toolbar .woocommerce-result-count{order:2;margin:0;padding:0;background:none;font-size:14px;line-height:1.3;color:var(--tm-meta)}
.tmf-toolbar .woocommerce-ordering{order:3;margin:0 0 0 auto}
.tmf-toolbar .tmf-perpage{order:4;margin:0}
.tmf-perpage{display:inline-flex;align-items:center;gap:6px}
.tmf-perpage-label{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#9A9590}
.tmf-toolbar button.tmf-pp{height:32px;min-width:38px;padding:0 9px;border:1px solid #DDDDDD;border-radius:0;background:#FFFFFF;color:#333333;font-size:13px;font-weight:500;line-height:1;letter-spacing:normal;text-transform:none;font-variant-numeric:tabular-nums;cursor:pointer}
.tmf-toolbar button.tmf-pp:hover{background:#FFFFFF;border-color:#333333;color:#333333}
.tmf-toolbar button.tmf-pp.is-current,.tmf-toolbar button.tmf-pp.is-current:hover{background:#333333;border-color:#333333;color:#FFFFFF}
.tmf-cat.is-over{display:none}
.tmf-cats.is-all .tmf-cat.is-over{display:inline-flex}
.tmf-cats button.tmf-cats-more{height:32px;padding:0 11px;border:1px dashed #CFCBC6;border-radius:0;background:none;color:var(--tm-meta);font-size:13px;font-weight:600;line-height:1;letter-spacing:normal;text-transform:none;cursor:pointer}
.tmf-cats button.tmf-cats-more:hover{background:none;border-color:#333333;border-style:solid;color:#333333}
.tmf-chips{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 18px;padding:11px 13px;background:#F7F6F4;border:1px solid #EAE7E3}
.tmf-chips-label{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#9A9590;margin-right:2px;font-variant-numeric:tabular-nums;white-space:nowrap}
.tmf-chips button.tmf-chip{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 9px 0 11px;border:1px solid #DDDDDD;border-radius:0;background:#FFFFFF;color:#333333;font-size:13px;font-weight:400;line-height:1;letter-spacing:normal;text-transform:none}
.tmf-chips button.tmf-chip:hover{background:#FFFFFF;border-color:#333333;color:#333333}
.tmf-chips button.tmf-chip .tmf-chip-x{font-size:15px;line-height:1;color:var(--tm-meta)}
.tmf-chips button.tmf-chip:hover .tmf-chip-x{color:var(--tm-red-aa)}
.tmf-chips button.tmf-clear-all{margin-left:auto;height:auto;padding:0 2px;border:0;border-radius:0;background:none;color:var(--tm-red-aa);font-size:13px;font-weight:600;line-height:1;letter-spacing:normal;text-transform:none;text-decoration:underline;text-underline-offset:3px}
.tmf-toolbar button.tmf-open,.tmf-bar button.tmf-open{background:#EB1B2E;border-color:#EB1B2E;color:#FFFFFF}
.tmf-toolbar button.tmf-open:hover,.tmf-bar button.tmf-open:hover{background:var(--tm-red-aa);border-color:var(--tm-red-aa);color:#FFFFFF}
.tmf-badge{background:#FFFFFF;color:#EB1B2E}
@media(max-width:782px){.tmf-toolbar{gap:10px}.tmf-toolbar .woocommerce-ordering{margin-left:0}.tmf-chips-label{width:100%}}

.tmf-cats a.tmf-cat.is-over{display:none}
.tmf-cats.is-all a.tmf-cat.is-over{display:inline-flex}

.tmf-toolbar .tmf-bar button.tmf-open,.tmf-bar button.tmf-open{display:inline-flex;align-items:center;gap:9px;padding:0 15px}
.tmf-toolbar .tmf-bar button.tmf-open .tmf-badge,.tmf-bar button.tmf-open .tmf-badge{flex:none;min-width:20px;height:20px;padding:0 5px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;line-height:1}

/* ============================================================
   Product card — Layout B (design: tile-card-layouts_1.html)
   Square image with an overlaid sale badge, uppercase title paired
   with the country flag, attributes as chips, size/code and price
   on a footed row. No Enquire button by decision.
   ============================================================ */
.tm-archive ul.products li.product{background:#FFFFFF;border:1px solid #E6E6E6;border-radius:0;overflow:hidden;padding:0;text-align:left;transition:box-shadow .2s ease,transform .2s ease,border-color .2s ease}
.tm-archive ul.products li.product:hover{border-color:#E6E6E6;box-shadow:0 10px 26px rgba(0,0,0,.10);transform:translateY(-2px)}
.tm-archive ul.products li.product a.tmc{display:flex;flex-direction:column;height:100%;color:#333333;text-decoration:none}
.tm-archive ul.products li.product a.tmc:hover{color:#333333;text-decoration:none}

.tmc-img{position:relative;display:block;aspect-ratio:1;background:#EFEFEF;overflow:hidden}
.tm-archive ul.products li.product a.tmc .tmc-img img{display:block;width:100%;height:100%;margin:0;border-radius:0;object-fit:cover;transition:transform .35s ease}
.tm-archive ul.products li.product:hover a.tmc .tmc-img img{transform:scale(1.03)}
.tmc-badge{position:absolute;top:0;left:0;z-index:2;padding:6px 11px;border-radius:0;background:#EB1B2E;color:#FFFFFF;font-size:.7rem;font-weight:700;line-height:1.2;letter-spacing:.04em;text-transform:uppercase}

.tmc-body{display:flex;flex-direction:column;flex:1;padding:14px}
.tmc-titlerow{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:8px}
.tmc-title{font-size:.9rem;font-weight:700;line-height:1.3;letter-spacing:.01em;text-transform:uppercase;color:#222222}
.tmc-flag{flex:none;position:relative;width:22px;height:15px;margin-top:2px;border-radius:2px;box-shadow:0 0 0 1px rgba(0,0,0,.08);overflow:hidden}

.tmc-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.tmc-chips span{padding:4px 9px;border-radius:20px;background:#EFEFEF;color:#555555;font-size:.72rem;font-weight:600;line-height:1.3}

.tmc-foot{display:flex;justify-content:space-between;align-items:flex-end;gap:10px;margin-top:auto;padding-top:10px;border-top:1px solid #E6E6E6}
.tmc-sz{color:#8A8A8A;font-size:.8rem;line-height:1.4}
.tmc-sku{display:block;color:#8A8A8A;font-size:.8rem;letter-spacing:.02em}
.tmc-price{flex:none;text-align:right;color:#222222;font-size:1.05rem;font-weight:700;line-height:1.3;white-space:nowrap}
.tmc-price .woocommerce-Price-amount,.tmc-price bdi{color:inherit;font-weight:inherit}
.tmc-was{color:#8A8A8A;font-weight:400;font-size:.9em;text-decoration:line-through;margin-right:8px}
.tmc-now{color:#EB1B2E}
.tmc-per{display:block;color:#8A8A8A;font-weight:400;font-size:.8em}

/* The flag is TM_ERP_Flags' own SVG, sized to the design. */
.tmc-titlerow .tm-flag{flex:none;margin-top:3px}
.tmc-titlerow .tm-flag img{width:22px!important;height:15px!important;max-width:22px!important;border-radius:2px;box-shadow:0 0 0 1px rgba(0,0,0,.08);border:0}

@media(max-width:560px){
	.tmc-body{padding:11px}
	.tmc-title{font-size:.85rem}
	.tmc-price{font-size:.95rem}
}

/* ---- product page: gallery thumbnails need room to breathe ---- */
.tm-gallery .flex-control-thumbs{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0 0;padding:0;list-style:none}
.tm-gallery .flex-control-thumbs li{width:calc(25% - 7.5px);margin:0;float:none;list-style:none}
.tm-gallery .flex-control-thumbs li img{display:block;width:100%;border:1px solid #E6E6E6;opacity:.7;cursor:pointer;transition:opacity .18s ease,border-color .18s ease}
.tm-gallery .flex-control-thumbs li img:hover,.tm-gallery .flex-control-thumbs li img.flex-active{opacity:1;border-color:#333333}
.tm-gallery .woocommerce-product-gallery__wrapper{margin:0}

/* ---- product page: sample sits on the quote row ---- */
.tm-product .tmq-add-row{align-items:stretch;gap:10px;flex-wrap:wrap}
.tm-product .tmq-add-row .tmq-sample{display:flex;margin:0}
.tm-product .tmq-add-row .tmq-sample-btn{min-height:52px;padding:0 22px;white-space:nowrap}
.tm-product .tmq-add .tmq-sample-terms{margin:12px 0 0}
@media(max-width:600px){
	.tm-product .tmq-add-row .tmq-sample,.tm-product .tmq-add-row .tmq-sample-btn{width:100%}
	.tm-gallery .flex-control-thumbs li{width:calc(33.333% - 6.7px)}
}

/* ---- sort control, sized to match the page-size buttons beside it ---- */
.tmf-toolbar .woocommerce-ordering{order:3;display:inline-flex;align-items:center;gap:8px;float:none;margin:0 0 0 auto;font-size:13px}
.tmf-toolbar .woocommerce-ordering::before{content:"Sort by";flex:0 0 auto;margin:0;font-size:11px;font-weight:700;line-height:1;letter-spacing:.1em;text-transform:uppercase;color:#9A9590}
.tmf-toolbar .woocommerce-ordering select.orderby{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:auto;height:32px;min-height:32px;margin:0;padding:0 30px 0 11px;border:1px solid #DDDDDD;border-radius:0;background-color:#FFFFFF;background-image:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2010%206'%3E%3Cpath%20d='M1%201l4%204%204-4'%20fill='none'%20stroke='%23333333'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E);background-repeat:no-repeat;background-position:right 10px center;background-size:9px 6px;color:#333333;font-family:inherit;font-size:13px;font-weight:500;line-height:1;letter-spacing:normal;text-transform:none;cursor:pointer}
.tmf-toolbar .woocommerce-ordering select.orderby:hover{border-color:#333333}
.tmf-toolbar .woocommerce-ordering select.orderby:focus{outline:none;border-color:#333333;box-shadow:none}
@media(max-width:782px){.tmf-toolbar .woocommerce-ordering{margin-left:0}.tmf-toolbar .woocommerce-ordering select.orderby{width:auto}}

/* ============================================================
   Tile detail — Concept A (design: tile-detail-conceptA.html)
   ============================================================ */
.tmd-eyebrow{margin:0 0 8px;font-size:.72rem;font-weight:700;line-height:1.3;letter-spacing:.1em;text-transform:uppercase;color:#8A8A8A}
.tm-product .elementor-widget-theme-post-title .elementor-heading-title{font-family:'Lora',Georgia,serif;font-weight:500;font-size:1.7rem;line-height:1.2;color:#222222;margin:0 0 10px}

.tmd-subline{display:flex;align-items:center;flex-wrap:wrap;gap:9px;margin:0 0 18px;color:#8A8A8A;font-size:.9rem;line-height:1.4}
.tmd-subline .tm-flag{margin:0}
.tmd-subline .tm-flag img{width:24px!important;height:16px!important;max-width:24px!important;border:0;box-shadow:0 0 0 1px rgba(0,0,0,.1);border-radius:0}
.tmd-dot{font-style:normal;color:#CBCBCB}

.tmd-price{display:flex;align-items:baseline;flex-wrap:wrap;gap:12px;margin:0 0 18px}
.tmd-now{font-size:1.7rem;font-weight:700;line-height:1.1;color:#222222}
.tmd-price.is-sale .tmd-now{color:#EB1B2E}
.tmd-per{color:#8A8A8A;font-size:.9rem;font-weight:400}
.tmd-was{color:#8A8A8A;font-size:1.1rem;text-decoration:line-through}
.tmd-save{padding:4px 9px;background:#FDECEC;color:#EB1B2E;font-size:.74rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase}
.tmd-price .woocommerce-Price-amount,.tmd-price bdi,.tmd-price .woocommerce-Price-currencySymbol{color:inherit!important;font-weight:inherit;font-size:inherit}

.tmd-facts{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:0 0 20px}
.tmd-fact{padding:12px 10px;border:1px solid #E2E2E2;background:#FAF9F8;text-align:center}
.tmd-fact svg{display:block;width:22px;height:22px;margin:0 auto 6px;stroke:#EB1B2E;fill:none;stroke-width:1.8}
.tmd-fact-k{font-size:.66rem;letter-spacing:.04em;text-transform:uppercase;color:#8A8A8A;line-height:1.3}
.tmd-fact-v{font-size:.86rem;font-weight:700;color:#222222;line-height:1.3}

/* the quote panel */
.tm-buy{padding:18px;border:1px solid #E2E2E2;background:#FAF9F8}
.tm-buy .elementor-widget:not(:last-child){margin-bottom:0}
.tm-buy .tmq-add,.tm-buy .tmq-sample{margin:0}
.tm-buy .tmq-add-label{margin-bottom:8px}
.tm-buy .tmq-add-hint:empty{display:none}

/* specifications, three labelled columns */
.tmd-specs{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:22px 40px}
.tmd-specgroup h4{margin:0 0 8px;padding-bottom:6px;border-bottom:1px solid #E2E2E2;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#EB1B2E}
.tmd-specgroup dl{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;margin:0}
.tmd-specgroup dt{margin:0;color:#8A8A8A;font-size:.86rem;line-height:1.4}
.tmd-specgroup dd{margin:0;text-align:right;font-size:.86rem;font-weight:600;color:#222222;line-height:1.4}

/* gallery thumbs: five across, red on the one you are looking at */
.tm-gallery .flex-control-thumbs{display:grid!important;grid-template-columns:repeat(5,1fr);gap:8px;margin:8px 0 0;padding:0;list-style:none}
.tm-gallery .flex-control-thumbs li{width:auto;margin:0;float:none;list-style:none}
.tm-gallery .flex-control-thumbs li img{display:block;width:100%;border:2px solid transparent;opacity:1;cursor:pointer;transition:border-color .18s ease}
.tm-gallery .flex-control-thumbs li img:hover,.tm-gallery .flex-control-thumbs li img.flex-active{border-color:#EB1B2E}

@media(max-width:860px){
	.tmd-specs{grid-template-columns:1fr}
	.tmd-facts{grid-template-columns:1fr 1fr}
	.tm-product .elementor-widget-theme-post-title .elementor-heading-title{font-size:1.45rem}
}

/* Elementor's kit writes .elementor-16151 .elementor-element.elementor-element-XXX,
   which out-specifies anything reasonable, so the two overrides that matter
   are stated loudly rather than fought with a longer selector. */
.tm-product .elementor-widget-theme-post-title .elementor-heading-title{font-family:'Lora',Georgia,serif!important;font-weight:500!important;font-size:1.7rem!important;line-height:1.2!important;letter-spacing:0!important;color:#222222!important;margin:0 0 10px!important}
@media(max-width:860px){.tm-product .elementor-widget-theme-post-title .elementor-heading-title{font-size:1.45rem!important}}
.tm-product .elementor-element-d6fffe0,.tm-product .tm-buy{padding:18px!important;border:1px solid #E2E2E2;background:#FAF9F8}
.tm-product .elementor-element-d6fffe0 .tmq-add,.tm-product .elementor-element-d6fffe0 .tmq-sample{margin:0}

/* WooCommerce sizes the flexslider thumbs itself, and the kit styles every h4. */
.tm-gallery .flex-control-thumbs li{width:100%!important;max-width:100%!important;height:auto!important;margin:0!important;padding:0!important;float:none!important}
.tm-gallery .flex-control-thumbs li img{width:100%!important;height:auto!important;max-width:100%!important;aspect-ratio:1;object-fit:cover}
.tmd-specgroup h4{font-size:.72rem!important;font-weight:700!important;line-height:1.3!important;letter-spacing:.06em!important;text-transform:uppercase!important;color:#EB1B2E!important;margin:0 0 8px!important;padding:0 0 6px!important;border-bottom:1px solid #E2E2E2!important}
.tm-product .elementor-element-d6fffe0{row-gap:0!important}

/* ============================================================
   Tile detail — Concept A, followed in detail
   (design: desigsn/tile-detail-conceptA.html; corners stay square)
   ============================================================ */

/* The buy panel runs calculator, coverage, full-width sample, stock line.
   The sample no longer shares the quote row, so the rules that put it there
   are superseded here rather than left to fight. */
.tm-product .tmq-add-label{margin:0 0 8px;font-size:.85rem;font-weight:700;color:#333333}
.tm-product .tmq-add-row{display:flex;align-items:stretch;flex-wrap:nowrap;gap:10px;margin:0}
.tm-product .tmq-add-qty{flex:0 0 90px;width:90px!important;max-width:90px!important;min-height:48px;padding:0 11px;border:1.5px solid #E2E2E2;border-radius:0;font-size:1rem}
.tm-product .tmq-add-unit{flex:0 0 auto;font-weight:700}
.tm-product .tmq-add-btn{flex:1 1 auto;min-width:0;min-height:48px;padding:0 18px;font-size:.85rem;letter-spacing:.04em}
.tm-product .tmq-add-hint{margin:8px 0 14px;font-size:.8rem;line-height:1.5}
.tm-product .tmq-add-hint:empty{display:none;margin:0}
.tm-product .tmq-sample{display:block;margin:0}
.tm-product .tmq-sample-btn{display:block;width:100%;min-height:0;padding:12px;border:1.5px solid #333333;font-size:.82rem;letter-spacing:.04em;text-align:center;white-space:normal}
.tm-product .tmq-add .tmq-sample-terms,.tm-product .tmq-sample-terms{margin:10px 0 0;font-size:.78rem;line-height:1.55}

/* The stock line, with the design's square marker. The amber is darkened
   from the mockup's #C98A00 so bold small text still clears AA against the
   panel's off-white. */
.tm-product .tmq-availability{display:flex;align-items:center;gap:7px;margin:14px 0 0;font-size:.82rem;font-weight:600;color:#9A6800}
.tm-product .tmq-availability::before{content:"";flex:0 0 8px;width:8px;height:8px;background:#9A6800}
.tm-product .tmq-availability strong{font-weight:600;color:inherit}

/* Sale badge, over the top-left corner of the main image. */
.tm-product .woocommerce-product-gallery{position:relative}
.tm-product .tmd-badge{position:absolute;top:0;left:0;z-index:3;display:flex;align-items:center;gap:8px;padding:8px 12px;background:#EB1B2E;color:#ffffff;font-size:.74rem;font-weight:700;line-height:1.2;letter-spacing:.03em;text-transform:uppercase}
.tm-product .tmd-badge-qty{padding:2px 7px;background:rgba(0,0,0,.22);font-size:.68rem}

/* The zoom control, squared like everything else. */
.tm-product .woocommerce-product-gallery__trigger{top:10px;right:10px;width:34px;height:34px;display:flex;align-items:center;justify-content:center;background:#ffffff;border-radius:0;box-shadow:0 2px 8px rgba(0,0,0,.15);text-decoration:none;line-height:1}

/* Other tiles in this range: five across, one meta line, as designed. */
.tm-product .tm-related .tm-related-title{margin:0 0 16px;font-family:'Lora',Georgia,serif;font-size:1.25rem;font-weight:500;color:#222222}
.tm-product .tm-related .tm-related-grid{grid-template-columns:repeat(5,1fr);gap:22px 14px}
.tm-product .tm-related .tm-related-img{position:relative;display:block;border:0;background:#EFEFEF}
.tm-product .tm-related-sale{position:absolute;top:0;left:0;z-index:2;padding:3px 7px;background:#EB1B2E;color:#ffffff;font-size:.62rem;font-weight:700;line-height:1.3;letter-spacing:.02em;text-transform:uppercase}
.tm-product .tm-related .tm-related-name{margin-top:8px;font-size:.8rem;font-weight:600;line-height:1.3;color:#222222}
.tm-product .tm-related .tm-related-meta,.tm-product .tm-related .tm-related-code{display:inline;margin:0;font-size:.75rem}
.tm-product .tm-related .tm-related-meta+.tm-related-code::before{content:" · "}

@media(max-width:1100px){.tm-product .tm-related .tm-related-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:860px){
	.tm-product .tm-related .tm-related-grid{grid-template-columns:repeat(2,1fr)}
	.tm-product .tmq-add-row{flex-wrap:wrap}
	.tm-product .tmq-add-btn{flex:1 1 100%}
}

/* WooCommerce prints its own round "Sale!" flash in the same corner of the
   gallery. Concept A's badge replaces it rather than sitting on top of it. */
.tm-product .tm-gallery span.onsale,.tm-product .woocommerce-product-gallery span.onsale,.tm-product .elementor-widget-woocommerce-product-images span.onsale{display:none!important}

/* Woo's own gallery rules out-specify the block above, so the zoom control's
   squared corners are stated loudly. */
.tm-product .woocommerce-product-gallery__trigger{top:10px!important;right:10px!important;width:34px!important;height:34px!important;border-radius:0!important;background:#ffffff!important;box-shadow:0 2px 8px rgba(0,0,0,.15)!important;font-size:18px!important;line-height:34px!important;text-align:center;text-decoration:none}

/* The product tabs now sit below both columns rather than inside the info
   column, so the Specifications grid runs the full width the design gives it.
   Out there they need their own separation from the product row -- Concept A's
   `.tabswrap` rule -- instead of the column's. */
.tm-product .tm-ptabs{margin-top:12px;padding-top:26px;border-top:1px solid #E2E2E2}
.tm-product .tm-ptabs .e-n-tabs,.tm-product .tm-ptabs .e-n-tabs-content{width:100%}

/* Gallery thumbnails: room to breathe under the main image. */
.tm-gallery .flex-control-thumbs{margin:14px 0 0;gap:10px}

/* Woo's own gallery rules zero the thumbnail strip's margin at a specificity
   the block above cannot reach. */
.tm-product .tm-gallery .flex-control-thumbs,.woocommerce div.product .tm-gallery .flex-control-thumbs{margin:16px 0 0!important;gap:10px}

/* ============================================================
   Quote request form -- the expanded set from the legacy checkout
   ============================================================ */

/* Questions that only apply sometimes. The class has to out-specify the
   theme's own field styling, hence the !important. */
.elementor-element-tmqform .elementor-field-group.tmq-hide,.elementor-form .elementor-field-group.tmq-hide{display:none!important}

/* Section headings inside the form, from the HTML fields. */
.elementor-element-tmqform .tmq-fh{margin:26px 0 2px;font-size:.78rem;font-weight:700;line-height:1.3;letter-spacing:.1em;text-transform:uppercase;color:#C4121F}
.elementor-element-tmqform .elementor-field-group-hd_you .tmq-fh{margin-top:0}
.elementor-element-tmqform .elementor-field-type-html{padding-bottom:0}

/* Squared controls, matching everything else on the site. */
.elementor-element-tmqform .elementor-field-group input,.elementor-element-tmqform .elementor-field-group select,.elementor-element-tmqform .elementor-field-group textarea{border-radius:0}
.elementor-element-tmqform .elementor-field-group select{min-height:44px}

/* Checkbox and radio lists: a readable column-flow rather than one long line. */
.elementor-element-tmqform .elementor-field-subgroup{display:grid;grid-template-columns:repeat(3,1fr);gap:8px 22px;width:100%}
.elementor-element-tmqform .elementor-field-subgroup .elementor-field-option{display:flex;align-items:flex-start;gap:8px;font-size:.9rem;line-height:1.4}
.elementor-element-tmqform .elementor-field-subgroup .elementor-field-option label{margin:0;font-weight:400}
.elementor-element-tmqform .elementor-field-subgroup .elementor-field-option input{flex:0 0 auto;margin-top:3px}
.elementor-element-tmqform .elementor-field-group-fulfilment .elementor-field-subgroup{grid-template-columns:1fr}

@media(max-width:860px){
	.elementor-element-tmqform .elementor-field-subgroup{grid-template-columns:1fr 1fr}
}
@media(max-width:560px){
	.elementor-element-tmqform .elementor-field-subgroup{grid-template-columns:1fr}
}

/* Checkbox and radio options read as one line each. */
.elementor-element-tmqform .elementor-field-subgroup .elementor-field-option{align-items:center;gap:8px}
.elementor-element-tmqform .elementor-field-subgroup .elementor-field-option input{margin:0}
.elementor-element-tmqform .elementor-field-type-acceptance .elementor-field-option{display:flex;align-items:flex-start;gap:9px;font-size:.85rem;line-height:1.5}
.elementor-element-tmqform .elementor-field-type-acceptance .elementor-field-option input{flex:0 0 auto;margin-top:3px}

/* ============================================================
   Form typography and spacing -- quote request + product enquiry
   Elementor ships a 10px gap between field groups and no gap at all
   between a label and the control it names, which reads as the label
   sitting on top of the next field.
   ============================================================ */
.elementor-element-tmqform .elementor-field-group,
.tm-ptabs .elementor-widget-form .elementor-field-group{margin-bottom:18px}
.elementor-element-tmqform .elementor-field-label,
.tm-ptabs .elementor-widget-form .elementor-field-label{display:block;margin-bottom:7px;font-size:14px;font-weight:600;line-height:1.4;color:#333333}
.elementor-element-tmqform .elementor-field-group-message,
.tm-ptabs .elementor-widget-form .elementor-field-type-textarea{margin-bottom:14px}

/* Section headings inside the quote form. The small red caps read as a
   field label rather than a heading, so these take the site's own
   section voice -- Lora, sentence case -- a step below the form's own
   "Where should we send your quote?". */
.elementor-element-tmqform .elementor-field-type-html{margin-bottom:0}
.elementor-element-tmqform .tmq-fh{margin:34px 0 16px;padding-bottom:9px;border-bottom:1px solid #E2E2E2;font-family:'Lora',Georgia,serif;font-size:17px;font-weight:600;line-height:1.3;letter-spacing:0;text-transform:none;color:#333333}
.elementor-element-tmqform .elementor-field-group-hd_you .tmq-fh{margin-top:10px}

/* Option lists get their own breathing room under the label, and the
   radio pair is a decision rather than a list, so it sits wider. */
.elementor-element-tmqform .elementor-field-subgroup{margin-top:3px}
.elementor-element-tmqform .elementor-field-group-fulfilment{margin-bottom:24px}
.elementor-element-tmqform .elementor-field-group-fulfilment .elementor-field-subgroup{gap:10px}
.elementor-element-tmqform .elementor-field-group-areas .elementor-field-subgroup{gap:10px 22px}

/* Consent line, then the button. */
.elementor-element-tmqform .elementor-field-type-acceptance,
.tm-ptabs .elementor-widget-form .elementor-field-type-acceptance{margin-top:8px;margin-bottom:20px}

/* ---------------------------------------------------------------------------
 * Document block — the embedded PDF on Projects and New in Store items.
 * ------------------------------------------------------------------------ */
.tm-doc { margin: 0 0 40px; }
.tm-doc__intro { margin: 0 auto 28px; max-width: 68ch; }
.tm-doc__frame { position: relative; width: 100%; max-width: 900px; margin: 0 auto; background: #efefef; border: 1px solid #e6e6e6; aspect-ratio: 1 / 1.414; max-height: 85vh; }
.tm-doc__object,
.tm-doc__iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block; }
.tm-doc__cover { display: none; }
.tm-doc__actions { display: flex; gap: 12px; flex-wrap: wrap; justify-content: center; margin: 20px 0 0; }
.tm-doc__btn { display: inline-block; background: #eb1b2e; color: #fff; font-family: "Mulish", sans-serif; font-weight: 800; font-size: 13px; line-height: 1; letter-spacing: 1.4px; text-transform: uppercase; padding: 15px 26px; text-decoration: none; border: 1px solid #eb1b2e; transition: background .18s ease, border-color .18s ease, color .18s ease; }
.tm-doc__btn:hover,
.tm-doc__btn:focus { background: #c0142a; border-color: #c0142a; color: #fff; }
.tm-doc__btn--ghost { background: transparent; color: #333; border-color: #333; }
.tm-doc__btn--ghost:hover,
.tm-doc__btn--ghost:focus { background: #333; border-color: #333; color: #fff; }

@media (max-width: 940px) {
	.tm-doc__frame { display: none; }
	.tm-doc__cover { display: block; position: relative; max-width: 520px; margin: 0 auto; }
	.tm-doc__cover-img { display: block; width: 100%; height: auto; }
	.tm-doc__cover-tag { position: absolute; left: 0; bottom: 0; background: #eb1b2e; color: #fff; font-family: "Mulish", sans-serif; font-weight: 800; font-size: 12px; line-height: 1; letter-spacing: 1.4px; padding: 11px 14px; }
	.tm-doc__actions { flex-direction: column; }
	.tm-doc__btn { text-align: center; }
}
.tm-nis-intro { max-width: 760px; margin-left: auto; margin-right: auto; }

/* ============================================================
   New in Store — the sheet rack

   39 of the 47 cover images are portrait renders of the PDF, so the card is
   A4 (1/1.414) and nothing is cropped. Note every box here states its own
   display: these are spans inside an <a>, and aspect-ratio and overflow are
   both ignored on an inline element.
   ============================================================ */
.tmn{margin:0}

/* Chips. The theme paints every button red and uppercase, so each rule carries
   the element as well as the class to out-specify the reset block. */
.tmn .tmn-filter{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:0 0 30px}
.tmn .tmn-filter[hidden]{display:none}
.tmn button.tmn-chip{display:inline-flex;align-items:center;gap:7px;margin:0;padding:9px 16px;
	border:1px solid #E2E2E2;border-radius:0;background:#ffffff;color:#333333;
	font-family:inherit;font-size:12px;font-weight:700;line-height:1;letter-spacing:.07em;text-transform:uppercase;
	cursor:pointer;transition:background .2s ease,color .2s ease,border-color .2s ease}
.tmn button.tmn-chip:hover{background:#ffffff;color:#333333;border-color:#333333}
.tmn button.tmn-chip[aria-pressed="true"]{background:#EB1B2E;border-color:#EB1B2E;color:#ffffff}
.tmn button.tmn-chip .tmn-n{font-weight:400;opacity:.6}
.tmn button.tmn-chip[aria-pressed="true"] .tmn-n{opacity:.75}

/* The rack. */
.tmn .tmn-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:30px 24px}
.tmn a.tmn-card{display:block;text-decoration:none;color:inherit}
.tmn a.tmn-card.is-out{display:none}
.tmn a.tmn-card:hover,.tmn a.tmn-card:focus-visible{text-decoration:none;color:inherit}

.tmn .tmn-paper{display:block;position:relative;overflow:hidden;background:#ffffff;border:1px solid #E2E2E2;
	aspect-ratio:1/1.414;box-shadow:0 2px 6px rgba(0,0,0,.07);
	transition:transform .34s cubic-bezier(.22,.61,.36,1),box-shadow .34s cubic-bezier(.22,.61,.36,1),border-color .34s ease}
.tmn .tmn-paper img,.tmn .tmn-img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center;
	transition:transform .5s cubic-bezier(.22,.61,.36,1)}
.tmn .tmn-img--none{background:#EFEFEF}

.tmn .tmn-pages{display:block;position:absolute;top:0;right:0;z-index:2;padding:5px 9px;
	background:rgba(34,34,34,.82);color:#ffffff;font-size:10px;font-weight:700;line-height:1.3;
	letter-spacing:.06em;text-transform:uppercase;opacity:0;transition:opacity .3s ease}
.tmn .tmn-bar{display:block;position:absolute;left:0;right:0;bottom:0;z-index:2;padding:11px 8px;
	background:#EB1B2E;color:#ffffff;font-size:11px;font-weight:700;line-height:1.3;letter-spacing:.09em;
	text-transform:uppercase;text-align:center;transform:translateY(101%);
	transition:transform .34s cubic-bezier(.22,.61,.36,1)}

.tmn a.tmn-card:hover .tmn-paper,.tmn a.tmn-card:focus-visible .tmn-paper{transform:translateY(-7px);box-shadow:0 16px 30px rgba(0,0,0,.17);border-color:#cfcfcf}
.tmn a.tmn-card:hover .tmn-img{transform:scale(1.03)}
.tmn a.tmn-card:hover .tmn-bar,.tmn a.tmn-card:focus-visible .tmn-bar{transform:translateY(0)}
.tmn a.tmn-card:hover .tmn-pages,.tmn a.tmn-card:focus-visible .tmn-pages{opacity:1}

.tmn .tmn-meta{display:block;padding:13px 2px 0}
.tmn .tmn-title{display:block;font-family:'Lora',Georgia,serif;font-size:16px;font-weight:500;line-height:1.3;
	color:#222222;transition:color .25s ease}
.tmn a.tmn-card:hover .tmn-title{color:#C4121F}
.tmn .tmn-date{display:block;margin-top:5px;font-size:12px;line-height:1.3;letter-spacing:.05em;
	text-transform:uppercase;color:#6B6B6B}
.tmn .tmn-empty{margin:36px 0;text-align:center;color:#6B6B6B}

@media(max-width:1100px){.tmn .tmn-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:780px){.tmn .tmn-grid{grid-template-columns:repeat(2,1fr);gap:24px 16px}}
@media(max-width:420px){.tmn .tmn-title{font-size:14px}}
@media (prefers-reduced-motion:reduce){
	.tmn .tmn-paper,.tmn .tmn-img,.tmn .tmn-bar,.tmn .tmn-pages,.tmn .tmn-title,.tmn button.tmn-chip{transition:none}
}

/* The whole point of this card is that nothing gets cut off, and `cover` was
   trimming the sheet's own margins — badly on the eight landscape scans. These
   are documents on white, so `contain` against a white card shows every sheet
   whole and the letterboxing lands on the sheet's own ground. */
.tmn .tmn-paper{background:#ffffff}
.tmn .tmn-paper img,.tmn .tmn-img{object-fit:contain;object-position:center}

/* =============================================================
   NEW IN STORE — THE ITEM PAGE (page gallery)
   Every page of the spec sheet as an image: one large, the rest
   as a rail beneath. No <object>, no plug-in, no blank box on a
   phone. Rules carry the element as well as the class because the
   theme paints every button red and uppercase and every link red.
   ============================================================= */
.tmp{max-width:1080px;margin:0 auto}

.tmp .tmp-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 22px;
	font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:12px;font-weight:700;
	line-height:1.4;letter-spacing:.08em;text-transform:uppercase}
.tmp .tmp-crumbs a{color:#EB1B2E;text-decoration:none;border-bottom:1px solid transparent}
.tmp .tmp-crumbs a:hover{color:#C4121F;border-bottom-color:currentColor}
.tmp .tmp-crumbs span{color:#9A9A9A}
.tmp .tmp-crumbs .tmp-here{color:#767676;font-weight:400;letter-spacing:.05em;text-transform:none}

.tmp .tmp-eyebrow{margin:0 0 8px;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;
	font-size:12px;font-weight:700;line-height:1.4;letter-spacing:.11em;text-transform:uppercase;color:#8A8A8A}

.tmp .tmp-title{margin:0 0 26px;font-family:'Lora',Georgia,serif;font-weight:400;
	font-size:clamp(28px,3.4vw,42px);line-height:1.18;letter-spacing:-.01em;color:#222222;text-wrap:balance}

.tmp .tm-doc__intro{max-width:62ch;margin:0 0 28px;color:#4A4A4A}
.tmp .tm-doc__intro p{margin:0 0 12px}

/* The sheet, and the two arrows that sit beside it. */
.tmp .tmp-stage{display:flex;align-items:center;justify-content:center;gap:18px}
.tmp .tmp-sheet{flex:0 1 760px;min-width:0;max-width:760px;background:#ffffff;border:1px solid #E2E2E2;
	box-shadow:0 6px 26px rgba(0,0,0,.10);aspect-ratio:1/1.414}
.tmp .tmp-sheet img,.tmp img.tmp-page{display:block;width:100%;height:100%;object-fit:contain;object-position:center}

.tmp button.tmp-nav{flex:0 0 auto;display:flex;align-items:center;justify-content:center;
	width:46px;height:46px;margin:0;padding:0;border:1px solid #D8D8D8;border-radius:0;
	background:#ffffff;color:#333333;font-family:inherit;font-size:24px;font-weight:400;line-height:1;
	letter-spacing:0;text-transform:none;cursor:pointer;
	transition:background .2s ease,color .2s ease,border-color .2s ease}
.tmp button.tmp-nav:hover{background:#EB1B2E;border-color:#EB1B2E;color:#ffffff}
.tmp button.tmp-nav:focus-visible{outline:2px solid #EB1B2E;outline-offset:2px}

/* Page counter on the left, the file on the right. */
.tmp .tmp-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;
	max-width:760px;margin:18px auto 0;padding-top:16px;border-top:1px solid #E7E7E7}
.tmp .tmp-count{margin:0;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:12px;
	font-weight:400;line-height:1.4;letter-spacing:.08em;text-transform:uppercase;color:#767676}
.tmp .tmp-count b{font-weight:700;color:#222222;font-variant-numeric:tabular-nums}
.tmp .tmp-count[hidden]{display:none}

.tmp a.tmp-dl{display:inline-flex;align-items:center;padding:12px 22px;border:1px solid #EB1B2E;
	border-radius:0;background:#EB1B2E;color:#ffffff;text-decoration:none;
	font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:12px;font-weight:700;line-height:1;
	letter-spacing:.09em;text-transform:uppercase;
	transition:background .2s ease,border-color .2s ease,color .2s ease}
.tmp a.tmp-dl:hover{background:#C4121F;border-color:#C4121F;color:#ffffff;text-decoration:none}

/* The rail. */
.tmp .tmp-rail{display:flex;gap:12px;max-width:760px;margin:26px auto 0;padding:0 0 8px;
	list-style:none;overflow-x:auto;scrollbar-width:thin}
.tmp .tmp-rail::-webkit-scrollbar{height:6px}
.tmp .tmp-rail::-webkit-scrollbar-thumb{background:#D2D2D2}
.tmp li.tmp-railitem{flex:0 0 auto;margin:0;padding:0;list-style:none}
.tmp li.tmp-railitem::before,.tmp li.tmp-railitem::marker{content:none}

.tmp button.tmp-thumb{display:block;position:relative;width:78px;margin:0;padding:0;
	border:1px solid #E2E2E2;border-radius:0;background:#ffffff;color:inherit;
	font-family:inherit;letter-spacing:0;text-transform:none;cursor:pointer;
	transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease}
.tmp button.tmp-thumb img{display:block;width:100%;height:auto;aspect-ratio:1/1.414;object-fit:contain;background:#ffffff}
.tmp button.tmp-thumb .tmp-num{display:block;position:absolute;left:0;bottom:0;padding:3px 7px;
	background:rgba(34,34,34,.78);color:#ffffff;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;
	font-size:10px;font-weight:700;line-height:1.3;letter-spacing:.04em}
.tmp button.tmp-thumb:hover{border-color:#9A9A9A;transform:translateY(-2px);background:#ffffff;color:inherit}
.tmp button.tmp-thumb.is-active{border-color:#EB1B2E;box-shadow:0 0 0 2px rgba(235,27,46,.25);background:#ffffff}
.tmp button.tmp-thumb.is-active .tmp-num{background:#EB1B2E}
.tmp button.tmp-thumb:focus-visible{outline:2px solid #EB1B2E;outline-offset:2px}

@media (max-width:880px){
	.tmp .tmp-stage{gap:10px}
	.tmp button.tmp-nav{width:38px;height:38px;font-size:20px}
}

@media (max-width:600px){
	.tmp .tmp-crumbs{margin-bottom:16px}
	.tmp .tmp-title{margin-bottom:20px}
	.tmp button.tmp-nav{display:none}
	.tmp .tmp-sheet{flex:1 1 auto;max-width:none}
	.tmp .tmp-bar{margin-top:14px}
	.tmp a.tmp-dl{width:100%;justify-content:center}
	.tmp button.tmp-thumb{width:62px}
}

@media (prefers-reduced-motion:reduce){
	.tmp button.tmp-thumb,.tmp button.tmp-nav,.tmp a.tmp-dl{transition:none}
}

/* One left edge. The breadcrumb, the title, the sheet, the bar and the rail
   all start in the same place; the arrows step outside the sheet rather than
   sitting in the flow and pushing it off-centre. */
.tmp{max-width:760px}
.tmp .tmp-stage{position:relative;display:block}
.tmp .tmp-sheet{flex:none;width:100%;max-width:none}
.tmp button.tmp-nav{position:absolute;top:50%;margin-top:-23px;z-index:2}
.tmp button.tmp-prev{left:-66px}
.tmp button.tmp-next{right:-66px}
.tmp .tmp-bar,.tmp .tmp-rail{max-width:none;margin-left:0;margin-right:0}

/* Once the column is too narrow to hold the arrows beside the sheet, they sit
   on its edges instead. */
@media (max-width:1100px){
	.tmp button.tmp-nav{margin-top:-19px;background:rgba(255,255,255,.92)}
	.tmp button.tmp-prev{left:10px}
	.tmp button.tmp-next{right:10px}
}

/* More New Arrivals: the same card as the rack, three across. */
.tmn.tmn--3 .tmn-grid{grid-template-columns:repeat(3,1fr)}
.tmn.tmn--2 .tmn-grid{grid-template-columns:repeat(2,1fr)}
.tmn.tmn--1 .tmn-grid{grid-template-columns:1fr}

@media (max-width:900px){
	.tmn.tmn--3 .tmn-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:560px){
	.tmn.tmn--3 .tmn-grid,.tmn.tmn--2 .tmn-grid{grid-template-columns:1fr}
}

/* The related row keeps the rack's card size rather than stretching three
   sheets across the full column. */
.tmn.tmn--3 .tmn-grid{grid-template-columns:repeat(3,minmax(0,320px));justify-content:start}

/* REL-GRID-RESPONSIVE — must follow the cap above, or the cap wins everywhere. */
@media (max-width:900px){
	.tmn.tmn--3 .tmn-grid{grid-template-columns:repeat(2,minmax(0,320px))}
}
@media (max-width:560px){
	.tmn.tmn--3 .tmn-grid{grid-template-columns:minmax(0,1fr)}
}

/* The showroom still is an Elementor video widget now (YouTube lightbox), so the
   brand play button has to sit on the overlay div, not on the old link. */
.tm-video-still .elementor-custom-embed-image-overlay{position:relative;display:block;cursor:pointer}
.tm-video-still .elementor-custom-embed-image-overlay:after{content:"";position:absolute;left:50%;top:50%;width:64px;height:64px;margin:-32px 0 0 -32px;border-radius:50%;background:#EB1B2E url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffffff'><path d='M8 5v14l11-7z'/></svg>") no-repeat center/22px;transition:background-color .18s ease;pointer-events:none}
.tm-video-still .elementor-custom-embed-image-overlay:hover:after{background-color:#C0142A}
.tm-video-still .elementor-custom-embed-play{display:none}

/* The booking icon sits on a photograph, so it needs its own separation. */
.tm-book-icon .elementor-icon svg,
.tm-book-icon .elementor-icon i{filter:drop-shadow(0 2px 10px rgba(0,0,0,.75)) drop-shadow(0 0 3px rgba(0,0,0,.55))}

/* tm-video-still hover treatment: the whole still reacts, not just the button —
   a slow push-in behind a scrim, with the play button lifting on top. */
.tm-video-still .elementor-wrapper { overflow: hidden; }
.tm-video-still .elementor-custom-embed-image-overlay { transition: transform .5s cubic-bezier(.2,.6,.2,1); }
.tm-video-still .elementor-custom-embed-image-overlay:before { content: ""; position: absolute; inset: 0; background: #1e1e1e; opacity: 0; transition: opacity .3s ease; pointer-events: none; }
.tm-video-still .elementor-custom-embed-image-overlay:after { transition: background-color .18s ease, transform .3s cubic-bezier(.2,.6,.2,1); z-index: 1; }
.tm-video-still .elementor-custom-embed-image-overlay:hover { transform: scale(1.04); }
.tm-video-still .elementor-custom-embed-image-overlay:hover:before { opacity: .3; }
.tm-video-still .elementor-custom-embed-image-overlay:hover:after { background-color: #C0142A; transform: scale(1.12); }
.tm-video-still .elementor-custom-embed-image-overlay:focus-visible { outline: 2px solid #EB1B2E; outline-offset: 3px; }

@media (prefers-reduced-motion: reduce) {
	.tm-video-still .elementor-custom-embed-image-overlay,
	.tm-video-still .elementor-custom-embed-image-overlay:hover,
	.tm-video-still .elementor-custom-embed-image-overlay:hover:after { transform: none; }
}

/* Category tiles: Elementor stores a container link but renders no anchor, so
   each tile carries its own overlay link. Transparent, sits above the plate. */
.tm-cat-tile { position: relative; }
.tm-cat-tile .tm-cat-link { position: absolute; inset: 0; z-index: 3; display: block; text-indent: -9999px; overflow: hidden; white-space: nowrap; }
.tm-cat-tile .tm-cat-link:focus-visible { outline: 2px solid #EB1B2E; outline-offset: -4px; }

/* Consultation page: prep cards crop to a common band so the three line up. */
.tm-prep-img.elementor-widget-image img { width: 100%; height: 230px; min-height: 230px; max-height: 230px; object-fit: cover; display: block; }
@media (max-width: 940px) { .tm-prep-img.elementor-widget-image img { height: 200px; min-height: 200px; max-height: 200px; } }

/* Contact form: the labels sat right on top of their inputs. */
.tm-contact-form .elementor-field-group > label.elementor-field-label { display: block; margin-bottom: 7px; line-height: 1.3; }
.tm-contact-form .elementor-field-group { margin-bottom: 6px; }
.tm-contact-form .elementor-field-subgroup { margin-top: 2px; }

/* Mega-menu promo tiles: the video fills its column so both tiles match height,
   and the still gets the same play button, rollover and lightbox as the home page. */
.tm-mega-video,
.tm-mega-video .elementor-widget-container,
.tm-mega-video figure,
.tm-mega-video a { height: 100%; display: block; }
.tm-mega-video.elementor-widget-image img { width: 100%; height: 100%; min-height: 100%; object-fit: cover; display: block; }
.tm-mega-video { flex-grow: 1; }

.tm-video-still a { overflow: hidden; }
.tm-video-still a img { transition: transform .5s cubic-bezier(.2,.6,.2,1); }
.tm-video-still a:hover img { transform: scale(1.04); }
.tm-video-still a:before { content: ""; position: absolute; inset: 0; background: #1e1e1e; opacity: 0; transition: opacity .3s ease; pointer-events: none; z-index: 1; }
.tm-video-still a:hover:before { opacity: .3; }
.tm-video-still a:after { z-index: 2; transition: background-color .18s ease, transform .3s cubic-bezier(.2,.6,.2,1); }
.tm-video-still a:hover:after { transform: scale(1.12); }

/* The mega panel's promo tiles are desktop furniture; on a phone the drawer
   should be the category list and nothing else. */
@media (max-width: 940px) {
	.tm-mega-promo { display: none !important; }
	.tm-mega-cats-col { width: 100% !important; }
}

/* Mega panel: tighter category rows so the panel is not a tall square. */
.tm-mega-cats .elementor-icon-list-items .elementor-icon-list-item { padding-top: 0; padding-bottom: 0; margin: 0; }
.tm-mega-cats .elementor-icon-list-items { margin-left: -14px; }
.tm-mega-cats .elementor-icon-list-items .elementor-icon-list-item a { display: block; padding: 7px 0 7px 14px; line-height: 1.4; }

/* ---------------------------------------------------------------------------
 * Booking form (Option B): one page, three numbered groups on a white card.
 * ------------------------------------------------------------------------ */
.tm-book-card { background: #ffffff; }
.tm-book-form .elementor-field-group > label.elementor-field-label { display: block; margin-bottom: 7px; line-height: 1.3; }
.tm-book-form .elementor-field-group { margin-bottom: 6px; }

.tm-step { display: flex; align-items: baseline; gap: 11px; margin: 26px 0 6px; }
.elementor-field-type-html:first-child .tm-step { margin-top: 2px; }
.tm-step b { font-family: "Mulish", sans-serif; font-size: 12px; font-weight: 800; color: #ffffff; background: #333333; width: 22px; height: 22px; display: grid; place-items: center; flex: 0 0 auto; position: relative; top: 3px; }
.tm-step i { font-style: normal; font-size: 12.5px; font-weight: 800; letter-spacing: 1.5px; text-transform: uppercase; color: #333333; }
.tm-step u { text-decoration: none; font-size: 12px; color: #8a8a8a; margin-left: auto; }
.tm-step + .tm-rule { border: 0; border-top: 1px solid #e6e6e6; margin: 0 0 14px; }

.tm-book-form .elementor-field-type-html { padding-bottom: 0; }
.tm-book-form .elementor-button { width: 100%; justify-content: center; }
.tm-book-form .elementor-field-type-acceptance { margin-top: 10px; }

@media (max-width: 620px) {
	.tm-step u { display: none; }
}

/* The booking form is the site-wide anchor target; the sticky header must not
   land on top of it. */
#book { scroll-margin-top: 120px; }
@media (max-width: 940px) { #book { scroll-margin-top: 80px; } }

/* Ten areas stacked ten-deep buried step 2 and broke the two-column rhythm the
   rest of the form keeps. A grid holds the checklist scannable and short. */
.tm-book-form .elementor-field-group-areas .elementor-field-subgroup {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 9px 22px;
}

.tm-book-form .elementor-field-group-areas .elementor-field-option {
	display: flex;
	align-items: flex-start;
	gap: 8px;
}

.tm-book-form .elementor-field-group-areas .elementor-field-option input {
	flex: 0 0 auto;
	margin-top: 3px;
}

.tm-book-form .elementor-field-group-areas .elementor-field-option label {
	margin: 0;
	font-weight: 400;
	font-size: 14px;
	line-height: 1.35;
}

@media (max-width: 880px) {
	.tm-book-form .elementor-field-group-areas .elementor-field-subgroup { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 520px) {
	.tm-book-form .elementor-field-group-areas .elementor-field-subgroup { grid-template-columns: 1fr; }
}

/* Sales hotline, under the sample block on a tile page. Sean asked for it in
   UAT round 1 — a visitor who does not want to type a form should be able to
   ring the counter from the tile they are looking at. */
.tmd-hotline{margin:0;font-size:15px;line-height:1.4;font-weight:700;color:#333}
.tmd-hotline a{color:inherit;text-decoration:none}
.tmd-hotline a:hover,.tmd-hotline a:focus{color:#ED193A;text-decoration:underline}

/* Closed-Sunday message under the booking date field. */
.tm-book-form .tm-book-note{margin:6px 0 0;font-size:13px;line-height:1.4;color:#ED193A}

/* Our Tiles megamenu — Sean's five columns, laid out here rather than on
   Elementor container controls because this site serves no per-post Elementor
   stylesheet for the header (no post-16149.css is enqueued), so flex and grid
   settings set in the editor never reach the browser.

   Every layout rule doubles its class. Elementor's frontend.min.css loads
   after site.css, so `.e-flex{--display:flex}` beats a single-class rule on a
   tie and the grid silently stays a flex column.

   Style & Look holds 26 of the 57 links, so it takes a double-width track and
   flows into two sub-columns; Specialties tucks under the short Areas column
   so the panel stays roughly square rather than one very long leg. */
.tm-mega-panel.tm-mega-panel{padding:26px 0 30px}
.tm-mega-in.tm-mega-in,
.tm-mega-in.tm-mega-in > .e-con-inner{--gap:0px;gap:0;padding-top:0;padding-bottom:0}

.tm-mega-lede{margin:0 0 22px;font-size:14px;line-height:1.5;color:#666}
.tm-mega-lede strong{color:#333;font-weight:600}

.tm-mega-grid.tm-mega-grid{
	--display:grid;
	display:grid;
	grid-template-columns:repeat(5,minmax(0,1fr));
	column-gap:34px;
	row-gap:26px;
	align-items:start;
}
.tm-mega-col.tm-mega-col{--display:block;display:block;min-width:0}
.tm-mega-col--material.tm-mega-col--material,
.tm-mega-col--shapes.tm-mega-col--shapes{grid-row:span 2}
.tm-mega-col--style.tm-mega-col--style{grid-column:span 2;grid-row:span 2}

.tm-mega-col .elementor-widget-heading{margin-bottom:10px}
.tm-mega-col .elementor-heading-title{
	display:block;
	padding-bottom:7px;
	border-bottom:1px solid #DCDCDC;
	font-size:11px;
	font-weight:700;
	letter-spacing:.11em;
	line-height:1.3;
	text-transform:uppercase;
	color:#ED193A;
}
.tm-mega-col .elementor-icon-list-items{margin:0;padding:0;list-style:none;display:block}
.tm-mega-col--style .elementor-icon-list-items{column-count:2;column-gap:34px}
.tm-mega-col .elementor-icon-list-item{margin:0;padding:0;display:block;break-inside:avoid}
.tm-mega-col .elementor-icon-list-item > a{display:block;padding:3px 0;text-decoration:none}
.tm-mega-col .elementor-icon-list-text{
	font-size:13px;
	line-height:1.4;
	color:#333;
	padding:0;
}
.tm-mega-col .elementor-icon-list-item > a:hover .elementor-icon-list-text,
.tm-mega-col .elementor-icon-list-item > a:focus .elementor-icon-list-text{
	color:#ED193A;
	text-decoration:underline;
}

.tm-mega-foot{
	margin:26px 0 0;
	padding-top:16px;
	border-top:1px solid #DCDCDC;
	font-size:13px;
	color:#666;
}
.tm-mega-foot a{margin-left:24px;color:#333;font-weight:600;text-decoration:none}
.tm-mega-foot a:hover,.tm-mega-foot a:focus{color:#ED193A;text-decoration:underline}

@media(max-width:1100px){
	.tm-mega-grid.tm-mega-grid{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:24px}
	.tm-mega-col--style.tm-mega-col--style{grid-column:span 2;grid-row:auto}
	.tm-mega-col--material.tm-mega-col--material,
	.tm-mega-col--shapes.tm-mega-col--shapes{grid-row:auto}
}
@media(max-width:720px){
	.tm-mega-grid.tm-mega-grid{grid-template-columns:minmax(0,1fr)}
	.tm-mega-col--style.tm-mega-col--style{grid-column:auto}
	.tm-mega-col--style .elementor-icon-list-items{column-count:1}
	.tm-mega-foot a{display:block;margin:6px 0 0}
}

/* Our Tiles index page — the megamenu's contents as a page a visitor can
   bookmark and a crawler can read. Every rule is scoped under .tm-index
   because the theme styles page content with .entry-content h2 and
   .entry-content a, which outrank a bare class. */
.tm-index{max-width:1320px;margin:0 auto;padding:4px 0 12px}
.tm-index .tm-index-lede{margin:0 0 26px;font-size:15px;line-height:1.55;color:#666}

.tm-index .tm-index-grid{
	display:grid;
	grid-template-columns:repeat(5,minmax(0,1fr));
	column-gap:34px;
	row-gap:30px;
	align-items:start;
}
.tm-index .tm-index-col{min-width:0}
.tm-index .tm-index-col--material,
.tm-index .tm-index-col--shapes{grid-row:span 2}
.tm-index .tm-index-col--style{grid-column:span 2;grid-row:span 2}

.tm-index .tm-index-head{
	margin:0 0 10px;
	padding:0 0 7px;
	border-bottom:1px solid #DCDCDC;
	font-family:Montserrat,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
	font-size:11px;
	font-weight:700;
	letter-spacing:.11em;
	line-height:1.3;
	text-transform:uppercase;
	color:#ED193A;
}
.tm-index .tm-index-list{margin:0;padding:0;list-style:none}
.tm-index .tm-index-col--style .tm-index-list{column-count:2;column-gap:34px}
.tm-index .tm-index-list li{margin:0;padding:0;list-style:none;break-inside:avoid}
.tm-index .tm-index-list a{
	display:block;
	padding:3px 0;
	font-family:Montserrat,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
	font-size:13.5px;
	line-height:1.45;
	color:#333;
	text-decoration:none;
	border-bottom:0;
}
.tm-index .tm-index-list a:hover,
.tm-index .tm-index-list a:focus{color:#ED193A;text-decoration:underline}

.tm-index .tm-index-foot{
	margin:32px 0 0;
	padding-top:18px;
	border-top:1px solid #DCDCDC;
	font-size:13.5px;
	color:#666;
}
.tm-index .tm-index-foot a{
	margin-left:24px;
	color:#333;
	font-weight:600;
	text-decoration:none;
	border-bottom:0;
}
.tm-index .tm-index-foot a:hover,
.tm-index .tm-index-foot a:focus{color:#ED193A;text-decoration:underline}

@media(max-width:1100px){
	.tm-index .tm-index-grid{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:26px}
	.tm-index .tm-index-col--style{grid-column:span 2;grid-row:auto}
	.tm-index .tm-index-col--material,
	.tm-index .tm-index-col--shapes{grid-row:auto}
}
@media(max-width:720px){
	.tm-index .tm-index-grid{grid-template-columns:minmax(0,1fr);row-gap:24px}
	.tm-index .tm-index-col--style{grid-column:auto}
	.tm-index .tm-index-col--style .tm-index-list{column-count:1}
	.tm-index .tm-index-foot a{display:block;margin:8px 0 0}
}

/* --- tm-r2-itemcode: lift the NC code out of the grey subline. Sean, 31 Aug 2026:
   phone customers cannot find the code when they ring. --- */
.tmd-subline .tmd-itemcode{display:inline-block;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:1.05rem;font-weight:700;letter-spacing:.06em;color:#333;background:#EFEFEF;border:1px solid #DDD;border-radius:2px;padding:2px 8px;margin-left:2px;line-height:1.35;user-select:all}
.tmd-subline .tmd-itemcode:hover{background:#E4E4E4}
@media(max-width:600px){.tmd-subline .tmd-itemcode{font-size:1rem}}

/* --- tm-r2-imagefit: a pencil trim is not a square. Images whose shape falls
   outside the crop band are tagged .tm-fit-contain by TileMob_Image_Fit and
   shown whole on a light ground instead of being magnified to fill. --- */
img.tm-fit-contain{object-fit:contain!important;background:#F5F5F5;padding:6px}
.tmc-img img.tm-fit-contain,.tm-archive ul.products li.product a.tmc .tmc-img img.tm-fit-contain{object-fit:contain!important;background:#F5F5F5}
.tm-gallery .woocommerce-product-gallery__image img.tm-fit-contain{object-fit:contain!important;background:#F5F5F5}
.tm-archive ul.products li.product:hover a.tmc .tmc-img img.tm-fit-contain{transform:none}

/* --- tm-r2-share: the Share control. The Elementor Pro share-buttons widget
   is in Single Product 16151 with its size and colours set, but Elementor
   generates NO per-element CSS for it, so every button computed to
   font-size:0 and height:0 and the whole row was invisible. Same class of
   problem as the header: the layout has to be written here, against our own
   class, with the class doubled so frontend.min.css does not win the tie. */
.tm-share.tm-share{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.tm-share.tm-share::before{content:"Share";font-family:"Mulish",-apple-system,"Segoe UI",sans-serif;font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#6B6B6B;line-height:1}
.tm-share.tm-share .elementor-grid{display:flex;align-items:center;gap:10px;margin:0;padding:0;list-style:none}
.tm-share.tm-share .elementor-grid-item{width:auto;height:auto;margin:0;padding:0}
.tm-share.tm-share .elementor-share-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;min-height:40px;font-size:1rem;line-height:1;color:#333333;background:transparent;border:1px solid #DDDDDD;border-radius:2px;cursor:pointer;transition:color .2s ease,border-color .2s ease}
.tm-share.tm-share .elementor-share-btn:hover,.tm-share.tm-share .elementor-share-btn:focus-visible{color:#C4121F;border-color:#C4121F}
.tm-share.tm-share .elementor-share-btn:focus-visible{outline:2px solid #C4121F;outline-offset:2px}
.tm-share.tm-share .elementor-share-btn__icon{display:flex;align-items:center;justify-content:center;width:auto;height:auto;background:transparent}
.tm-share.tm-share .elementor-share-btn svg{width:17px;height:17px;fill:currentColor}
.tm-share.tm-share .elementor-share-btn__text{display:none}
@media(max-width:600px){.tm-share.tm-share{gap:10px}.tm-share.tm-share .elementor-grid{gap:8px}}
.tm-share.tm-share button.elementor-share-btn.tm-share-copy{padding:0;margin:0;font-family:inherit;letter-spacing:0;text-transform:none;-webkit-appearance:none;appearance:none}
.tm-share.tm-share .tm-share-note{flex:0 0 auto;white-space:nowrap;font-family:"Mulish",-apple-system,"Segoe UI",sans-serif;font-size:.78rem;color:#6B6B6B;opacity:0;transition:opacity .2s ease}
.tm-share.tm-share .tm-share-note.is-on{opacity:1}

/* =============================================================
   tm-r2-quickfinder — QUICK FINDER
   Every rule is scoped under .tmqf because the theme styles page
   content with .entry-content h2 / .entry-content a, which outranks a
   bare class — the same trap the /our-tiles/ index hit.
   ============================================================= */
.tmqf{max-width:1200px;margin:0 auto}
.tmqf .tmqf-lede{margin:0 0 20px;font-size:1.05rem;line-height:1.6;color:#4A4A4A}
.tmqf .tmqf-lede a{color:#C4121F;text-decoration:underline}
.tmqf .tmqf-jump{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 34px;padding:0 0 22px;border-bottom:1px solid #E2E2E2}
.tmqf .tmqf-jump a{display:inline-block;padding:7px 14px;border:1px solid #DDDDDD;border-radius:2px;background:#FFFFFF;font-family:"Mulish",-apple-system,"Segoe UI",sans-serif;font-size:.76rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#333333;text-decoration:none;transition:background .18s ease,border-color .18s ease,color .18s ease}
.tmqf .tmqf-jump a:hover,.tmqf .tmqf-jump a:focus-visible{background:#333333;border-color:#333333;color:#FFFFFF}
.tmqf .tmqf-sec{margin:0 0 44px;scroll-margin-top:120px}
.tmqf .tmqf-h{margin:0 0 18px;font-family:"Lora",Georgia,serif;font-size:1.55rem;font-weight:600;line-height:1.25;color:#333333;border:0;padding:0}
.tmqf .tmqf-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:18px}
.tmqf a.tmqf-card{display:block;text-decoration:none;color:#333333;background:transparent}
.tmqf a.tmqf-card .tmqf-media{display:block;position:relative;overflow:hidden;background:#EFEFEF;aspect-ratio:1}
.tmqf a.tmqf-card .tmqf-media img{display:block;width:100%;height:100%;object-fit:cover;margin:0;transition:transform .4s cubic-bezier(.22,.61,.36,1)}
.tmqf a.tmqf-card:hover .tmqf-media img{transform:scale(1.05)}
.tmqf a.tmqf-card .tmqf-media img.tm-fit-contain{object-fit:contain;background:#F5F5F5}
.tmqf a.tmqf-card .tmqf-noimg{display:block;width:100%;height:100%;background:#EFEFEF}
.tmqf a.tmqf-card .tmqf-label{display:block;margin:10px 0 0;font-family:"Mulish",-apple-system,"Segoe UI",sans-serif;font-size:.78rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;line-height:1.35;color:#333333}
.tmqf a.tmqf-card:hover .tmqf-label{color:#C4121F}
.tmqf a.tmqf-card:focus-visible{outline:2px solid #C4121F;outline-offset:3px}
.tmqf .tmqf-count{display:block;margin:3px 0 0;font-size:.72rem;font-weight:400;letter-spacing:.02em;text-transform:none;color:#8A8A8A}
.tmqf .tmqf-chips{display:flex;flex-wrap:wrap;gap:10px}
.tmqf a.tmqf-chip{display:inline-flex;align-items:baseline;gap:8px;padding:10px 15px;border:1px solid #DDDDDD;border-radius:2px;background:#FFFFFF;font-family:"Mulish",-apple-system,"Segoe UI",sans-serif;font-size:.86rem;font-weight:700;color:#333333;text-decoration:none;transition:border-color .18s ease,color .18s ease}
.tmqf a.tmqf-chip:hover,.tmqf a.tmqf-chip:focus-visible{border-color:#C4121F;color:#C4121F}
.tmqf a.tmqf-chip .tmqf-count{display:inline;margin:0;font-size:.74rem}
.tmqf .tmqf-foot{display:flex;flex-wrap:wrap;gap:22px;margin:8px 0 0;padding:22px 0 0;border-top:1px solid #E2E2E2}
.tmqf .tmqf-foot a{font-family:"Mulish",-apple-system,"Segoe UI",sans-serif;font-size:.8rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#C4121F;text-decoration:none}
.tmqf .tmqf-foot a:hover{text-decoration:underline}
@media(max-width:1100px){.tmqf .tmqf-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:780px){.tmqf .tmqf-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.tmqf .tmqf-h{font-size:1.3rem}}
@media(max-width:520px){.tmqf .tmqf-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tmqf .tmqf-jump{gap:6px}.tmqf .tmqf-jump a{padding:6px 10px;font-size:.7rem}}
@media(prefers-reduced-motion:reduce){.tmqf a.tmqf-card .tmqf-media img{transition:none}.tmqf a.tmqf-card:hover .tmqf-media img{transform:none}}

/* --- tm-r2-didyoumean: stated plainly, with the way back. --- */
.tm-archive .tm-didyoumean,.tm-didyoumean{margin:0 0 14px;font-family:'Mulish',-apple-system,'Segoe UI',sans-serif;font-size:.92rem;line-height:1.5;color:#4A4A4A}
.tm-didyoumean strong{color:#333333}
.tm-didyoumean a{color:#C4121F;text-decoration:underline}

/* --- tm-r2-specs: a fourth column (Availability) joined the three on
   1 Sep 2026, so the track count is no longer hard-coded — auto-fit keeps the
   groups even instead of orphaning the last one on a row of its own. --- */

/* --- tm-r2-overview: the Notepad tab. Hidden until the script has looked
   inside the panel, so a tile with no note never flashes a tab it is about to
   lose. The all-clear is a class on the WIDGET, not on the title: keying it to
   the title meant that once Overview was removed, Ask a Question became the
   second tab and inherited the hiding rule, which is exactly what happened. --- */
.elementor-element-f6e1129:not(.tm-tabs-ready) .e-n-tab-title:nth-of-type(2){visibility:hidden}
.elementor-element-f6e1129.tm-no-overview .e-n-tab-title:nth-of-type(2){display:none}
.elementor-element-f6e1129.tm-no-overview .elementor-element-tmovwpan{display:none}
.tmd-overview{max-width:70ch}
.tmd-overview p{margin:0 0 10px;font-family:"Mulish",-apple-system,"Segoe UI",sans-serif;font-size:.95rem;line-height:1.65;color:#4A4A4A}
.tmd-overview p:last-child{margin-bottom:0}


/* tm-r2-bookwidth — the booking form is an old-style Elementor section, where
   boxed_width (880) is not a real control, so it inherited the site 1320px and
   the card read as stretched. Constrain the section itself. 31 Aug 2026. */
#book > .elementor-container{max-width:880px}


/* --- tm-r2-favourites: a saved list of tiles, kept in the browser. Hearts are
   hydrated by TileMob_Favourites after the cached HTML lands, so nothing here
   may assume the script has run. Deliberately quieter than Add to quote - the
   basket is the list that reaches the sales team. 31 Aug 2026. --- */
.tm-fav{
	display:inline-flex;align-items:center;gap:8px;background:none;border:0;padding:0;
	cursor:pointer;color:#6B6B6B;font-family:inherit;font-size:.72rem;font-weight:700;
	letter-spacing:.08em;text-transform:uppercase;line-height:1;transition:color .15s
}
.tm-fav svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round;transition:fill .15s,stroke .15s}
.tm-fav:hover,.tm-fav.is-on{color:#EB1B2E}
.tm-fav.is-on svg{fill:#EB1B2E;stroke:#EB1B2E}
.tm-fav:focus-visible{outline:2px solid #EB1B2E;outline-offset:3px}

/* On a card the heart sits over the image, icon only. */
.tm-fav--icon{position:absolute;top:8px;right:8px;z-index:3;padding:7px;border-radius:50%;background:rgba(255,255,255,.92);box-shadow:0 1px 3px rgba(0,0,0,.16)}
.tm-fav--icon .tm-fav-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.tm-fav-host,.tm-favcard{position:relative}

/* On the product page it sits beside the quantity and the quote button. */
.tmq-add-row .tm-fav{margin-left:14px;white-space:nowrap}

/* Header link, beside the Quote Basket. */
.tm-favlink{display:inline-flex;align-items:center;gap:8px;text-decoration:none;color:#333}
.tm-favlink svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round}
.tm-favlink:hover{color:#EB1B2E}
.tm-favcount{background:#EB1B2E;color:#fff;border-radius:999px;min-width:19px;height:19px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;padding:0 5px;line-height:1}

/* The Favourites page reuses the related-strip card so it reads as one system. */
.tm-favpage .tm-related-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:24px;margin:0}
.tm-favpage .tm-favcard .tm-related-card{height:100%}
.tm-fav-loading,.tm-fav-empty p{color:#6B6B6B;font-size:15px}
.tm-fav-browse,.tm-fav-clear{
	display:inline-block;background:#fff;color:#EB1B2E;border:1.5px solid #EB1B2E;
	font-weight:700;font-size:12px;letter-spacing:.1em;text-transform:uppercase;
	padding:13px 28px;text-decoration:none;cursor:pointer;border-radius:0;transition:background .15s,color .15s
}
.tm-fav-browse:hover,.tm-fav-clear:hover{background:#EB1B2E;color:#fff}
.tm-fav-actions{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin:34px 0 0}
.tm-fav-note{color:#6B6B6B;font-size:13px}

@media(max-width:600px){
	.tm-favpage .tm-related-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px}
	.tm-fav-actions{align-items:flex-start;flex-direction:column;gap:12px}
}

/* The heart is a bare button, and both the theme and the Elementor kit style
   bare buttons red. Double the class so these win without !important. Also let
   the Favourites page borrow the related-strip card, which is why the section
   carries .tm-related as well. 31 Aug 2026. */
.tm-fav.tm-fav{background:none;border:0;border-radius:0;box-shadow:none;color:#6B6B6B;padding:0;min-height:0;text-shadow:none}
.tm-fav.tm-fav:hover,.tm-fav.tm-fav.is-on{background:none;color:#EB1B2E}
.tm-fav--icon.tm-fav--icon{background:rgba(255,255,255,.92);border-radius:50%;padding:7px;box-shadow:0 1px 3px rgba(0,0,0,.16)}
.tm-fav--icon.tm-fav--icon:hover{background:#fff}
.tm-favpage .tm-related-card{display:block;text-decoration:none}
.tm-favpage .tm-related-img{display:block;position:relative}
.tm-favpage .tm-related-img img{width:100%;height:auto;aspect-ratio:1;object-fit:cover;display:block}


/* Clear all is a bare button too, so it loses its outline to the same kit rule. */
.tm-fav-clear.tm-fav-clear{background:#fff;color:#EB1B2E;border:1.5px solid #EB1B2E;border-radius:0;padding:13px 28px;font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.tm-fav-clear.tm-fav-clear:hover{background:#EB1B2E;color:#fff}


/* Browse tiles is an anchor, so the kit link colour won the hover and left dark
   text on the red fill. Double the class and set the hover explicitly. */
.tm-fav-browse.tm-fav-browse{display:inline-block;background:#fff;color:#EB1B2E;border:1.5px solid #EB1B2E;border-radius:0;padding:13px 28px;font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;text-decoration:none}
.tm-fav-browse.tm-fav-browse:hover,.tm-fav-browse.tm-fav-browse:focus{background:#EB1B2E;border-color:#EB1B2E;color:#fff}
.tm-fav-clear.tm-fav-clear:hover,.tm-fav-clear.tm-fav-clear:focus{background:#EB1B2E;border-color:#EB1B2E;color:#fff}


/* Below 940px the Quote Basket drops to an icon, so Favourites does the same.
   Hidden the accessible way, not display:none, so the link keeps its name. */
@media(max-width:940px){.tm-favlink-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}


/* The grid is display:grid, which outranks the browser rule behind the hidden
   attribute, so hiding it in script did nothing and Clear all left the cards on
   screen. Let hidden mean hidden inside this page. 31 Aug 2026. */
.tm-favpage [hidden]{display:none !important}

/* Heart over the product gallery, same treatment as a card. */
.tm-gallery.tm-fav-host{position:relative}
.tm-gallery > .tm-fav--icon{top:12px;right:12px}


/* The gallery already has WooCommerce zoom top-right, so the heart takes the
   opposite corner rather than fighting it for the same 40px. */
.tm-gallery > .tm-fav--icon{top:14px;right:auto;left:14px;padding:9px}
.tm-gallery > .tm-fav--icon svg{width:22px;height:22px}


/* tm-r3-gridcode: the item code on a grid card, matching the chip on the
   product page. It was already there in grey 12px and read as a footnote;
   Sean asked for the same treatment as the detail page, minus the word Item.
   2 Sep 2026. */
.tmc-sz .tmc-sku{
	display:inline-block;margin-top:5px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
	font-size:.72rem;font-weight:700;letter-spacing:.05em;color:#333;background:#EFEFEF;
	border:1px solid #DDD;border-radius:2px;padding:1px 6px;line-height:1.35
}
a.tmc:hover .tmc-sz .tmc-sku{background:#E4E4E4}


/* tm-r3-notice: the site notice bar. Sits above everything, including the
   consultation strip, because a closure outranks a booking prompt.
   2 Sep 2026. */
.tm-notice{background:#333333;color:#fff;font-family:"Mulish",-apple-system,"Segoe UI",sans-serif}
.tm-notice--important{background:#EB1B2E}
.tm-notice-in{
	max-width:1320px;margin:0 auto;padding:9px 24px;display:flex;align-items:center;
	gap:14px;justify-content:center;font-size:.82rem;line-height:1.4
}
.tm-notice-msg{font-weight:600}
.tm-notice-link{color:#fff;text-decoration:underline;white-space:nowrap}
.tm-notice-link:hover{color:#fff;opacity:.8}
.tm-notice-x{
	margin-left:auto;background:none;border:0;color:#fff;font-size:1.2rem;line-height:1;
	padding:0 2px;cursor:pointer;opacity:.75
}
.tm-notice-x:hover{opacity:1;background:none;color:#fff}
.tm-notice [hidden]{display:none}
@media(max-width:767px){
	.tm-notice-in{padding:8px 16px;gap:10px;font-size:.78rem;text-align:left;justify-content:flex-start}
}


/* The close control is a bare button, so the theme paints it like a form
   button. Double the class, and take it out of the flow so the message stays
   centred instead of being shoved left by its margin. */
.tm-notice-in{position:relative;padding-right:52px;padding-left:52px}
.tm-notice-x.tm-notice-x{
	position:absolute;top:50%;right:14px;transform:translateY(-50%);margin:0;
	background:none;border:0;border-radius:0;box-shadow:none;color:#fff;
	font-size:1.35rem;line-height:1;padding:0 4px;min-height:0;opacity:.75
}
.tm-notice-x.tm-notice-x:hover{background:none;color:#fff;opacity:1}
@media(max-width:767px){.tm-notice-in{padding-left:16px;padding-right:44px}}


/* tm-r3-noticelink: the bar link was inheriting the theme link colour, which
   is a dark red and unreadable on the red bar. Double the class so it beats
   the theme without an !important, same trick as the close button. 2 Sep 2026. */
.tm-notice .tm-notice-link.tm-notice-link{
	color:#fff;text-decoration:underline;text-underline-offset:3px;
	text-decoration-thickness:1px;font-weight:600;opacity:1
}
.tm-notice .tm-notice-link.tm-notice-link:hover,
.tm-notice .tm-notice-link.tm-notice-link:focus{color:#fff;opacity:.82}
.tm-notice .tm-notice-link.tm-notice-link:visited{color:#fff}

/* tm-r3-dimgap: the size and the code chip were butting up against each other.
   The size is now its own span so the gap can hang off it - a card with no size
   still starts its chip flush left. 3 Sep 2026. */
.tmc-sz .tmc-dim{margin-right:8px}

/* tm-r4-speclinks: specification values lead back into the catalogue.
   Underlined on hover only - a spec table where every value is underlined
   reads as a wall of links rather than a specification. 4 Sep 2026. */
.tmd-specs dd a.tmd-filterlink,
.tmd-fact-v a.tmd-filterlink,
.tmd-subline a.tmd-filterlink{color:inherit;text-decoration:none;border-bottom:1px solid #DDD}
.tmd-specs dd a.tmd-filterlink:hover,
.tmd-specs dd a.tmd-filterlink:focus-visible,
.tmd-fact-v a.tmd-filterlink:hover,
.tmd-fact-v a.tmd-filterlink:focus-visible,
.tmd-subline a.tmd-filterlink:hover,
.tmd-subline a.tmd-filterlink:focus-visible{color:#C4121F;border-bottom-color:#C4121F}

/* tm-r4-headericons: one row, one set. Rewritten 4 Sep 2026 after the first
   attempt left the magnifier almost invisible.

   The three controls are not made the same way and cannot be painted the same
   way. Search is a Font Awesome SVG on a 512 viewBox with a FILLED path, so
   the earlier fill:none plus a 1.6 stroke was 1.6 user units on a 512 grid -
   about a fifteenth of a pixel once scaled down to 19px, which is why it turned
   into a ghost. The heart and the basket are 24-viewBox marks, both stroked. So paint follows the icon, and only the box,
   the colour and the centring are shared.

   Alignment was the other half. The search wrapper is a block div 26px tall
   with its 19px icon sitting at the top, so it rode higher than the rest.
   Every control now gets the same fixed height and centres its glyph. */

.tm-search-toggle,
.tm-search-toggle a,
.tm-search-toggle .elementor-button,
.tm-search-toggle .elementor-button-content-wrapper,
.tm-search-toggle .elementor-button-icon,
.tm-favlink.tm-favlink,
a.tmq-head.tmq-head{
	display:inline-flex;align-items:center;justify-content:center;
	height:26px;line-height:1;padding:0;margin:0;border:0;background:none
}

/* Favourites and the basket carry a label and a count beside the glyph. */
.tm-favlink.tm-favlink,
a.tmq-head.tmq-head{gap:8px;width:auto}
.tm-search-toggle{width:26px}

/* Same optical size for every glyph. */
.tm-search-toggle svg,
.tm-favlink svg,
a.tmq-head svg{width:19px;height:19px}

/* Paint follows the icon. */
.tm-favlink svg,
a.tmq-head svg{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}

/* One colour. The heart and the basket were inheriting brand red from the
   header while search stayed charcoal, so the row read as
   two sets. Charcoal at rest, red on hover, as everywhere else. */
.tm-search-toggle.tm-search-toggle svg,
.tm-favlink.tm-favlink,
a.tmq-head.tmq-head{color:#333333}
.tm-search-toggle.tm-search-toggle:hover svg,
.tm-favlink.tm-favlink:hover,
a.tmq-head.tmq-head:hover{color:#C4121F}

/* The search control needed !important, which is worth explaining rather than
   leaving as a mystery. Elementor writes per-element CSS for that widget -
   .elementor-element-b9fb397 ... svg - which outranks a class selector here and
   pins the icon at 15px. Doubling the class only ties, and a tie plus load
   order is too fragile to rely on for something a rebuild of the header could
   reorder. Same reason its box and alignment are forced: its wrapper ignored
   align-items and sat a pixel lower than the other three. 4 Sep 2026. */
/* Top-aligned, not centred: Favourites and the basket come through a
   .elementor-shortcode wrapper that is 30px tall and sits its 26px link at
   the top, so centring search inside the same 30px row put it 2px lower
   than the rest. All four now share the same top edge, which also means
   they move together if that row height ever changes. */
.tm-search-toggle.tm-search-toggle{align-self:flex-start !important;margin:0 !important;height:26px !important}
.tm-search-toggle.tm-search-toggle svg{width:19px !important;height:19px !important}

/* tm-r4-searchmark: the magnifier is drawn, not sized.

   Font Awesome's search glyph is a solid shape - there is no thin variant of it
   in the free set - so beside a 1.6px stroked heart and basket it always read
   as the heavy one. Sizing it never going to fix that, because the weight is in
   the path itself. The Elementor widget still owns the markup and the link, so
   rather than rebuild the header the glyph is hidden and a stroked magnifier is
   painted in its place as a mask. A mask takes its colour from the element, so
   the icon still follows the charcoal/red hover with the other two.

   Aegir, 4 Sep 2026. */
/* Guarded: if masks were ever unsupported, hiding the glyph with nothing to
   replace it would leave no search icon at all - worse than a heavy one. */
@supports ((mask: url("#m")) or (-webkit-mask: url("#m"))) {
.tm-search-toggle.tm-search-toggle svg{display:none !important}
.tm-search-toggle .elementor-button-icon::before{
	content:"";display:block;width:19px;height:19px;background:currentColor;
	-webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><circle cx='10.8' cy='10.8' r='6.8'/><path d='M20 20 L15.6 15.6'/></svg>") center / 19px 19px no-repeat;
	mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><circle cx='10.8' cy='10.8' r='6.8'/><path d='M20 20 L15.6 15.6'/></svg>") center / 19px 19px no-repeat
}
}

/* tm-r4-chatavatar: the two-star sparkle in the chat header.

   The header avatar was AI Engine's stock chat-traditional-1.svg - a speech
   bubble - which appeared when the chatbot config was reset on 5 Sep 2026 and
   its icon field was emptied. A speech bubble reads as live chat with a person,
   and the sparkle is the mark this site uses for AI everywhere else, so the
   stock image is masked over rather than swapped: it survives a plugin update,
   and there is no new asset to lose.

   Same technique as the header search icon - a mask takes its colour from the
   element, so it stays white on the red header. */
.mwai-timeless-theme .mwai-header .mwai-avatar img,
.mwai-timeless-theme .mwai-mobile-header .mwai-avatar img{
	width:21px !important;height:21px !important;
	background:#ffffff;
	-webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M10 4 L11.7 8.3 L16 10 L11.7 11.7 L10 16 L8.3 11.7 L4 10 L8.3 8.3 Z'/><path d='M17.5 2.5 L18.3 4.7 L20.5 5.5 L18.3 6.3 L17.5 8.5 L16.7 6.3 L14.5 5.5 L16.7 4.7 Z'/></svg>") center / 21px 21px no-repeat;
	mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M10 4 L11.7 8.3 L16 10 L11.7 11.7 L10 16 L8.3 11.7 L4 10 L8.3 8.3 Z'/><path d='M17.5 2.5 L18.3 4.7 L20.5 5.5 L18.3 6.3 L17.5 8.5 L16.7 6.3 L14.5 5.5 L16.7 4.7 Z'/></svg>") center / 21px 21px no-repeat
}

/* tm-r4-chattitle: the desktop chat header reads "AI Tile Finder".

   AI Engine builds that header from two strings: headerSubtitle above the
   chatbot's aiName. Out of the box that gave "Discuss with" over "AI:", which
   tells a customer nothing about what they have opened.

   The words now come from headerSubtitle in the chatbot config. The aiName line
   is hidden here rather than renamed, because aiName also labels every message
   in the transcript - changing it would prefix each reply with the whole name.
   The subtitle takes the title's own type so the header still reads as a title.

   Not done in JavaScript on purpose: that header is a React node, so anything
   writing over its text trades frames with the component that renders it.
   5 Sep 2026. */
.mwai-timeless-theme .mwai-header .mwai-subtitle{
	font-family:'Lora',Georgia,serif !important;font-weight:600 !important;
	font-size:1.1rem !important;line-height:1.2 !important;letter-spacing:.2px;
	opacity:1 !important;text-transform:none !important
}
/* The aiName line is an unclassed <div> beside the <small> subtitle - there is
   no .mwai-name-text in this header, which is why the first attempt at hiding
   it did nothing. */
.mwai-timeless-theme .mwai-header .mwai-name > div{display:none !important}
