/* ==========================================================================
   Teetees Event Hall — theme styles
   Colours and fonts match the original site. Breakpoints: 640 / 768 / 1024px.
   ========================================================================== */

:root {
	--tt-background: oklch(0.975 0.012 85);
	--tt-foreground: oklch(0.2 0.008 60);
	--tt-card: oklch(0.955 0.018 82);
	--tt-muted: oklch(0.94 0.016 82);
	--tt-muted-foreground: oklch(0.46 0.015 65);
	--tt-gold: oklch(0.7 0.095 78);
	--tt-ivory: oklch(0.975 0.012 85);
	--tt-ink: oklch(0.17 0.006 60);
	--tt-ink-foreground: oklch(0.95 0.015 82);
	--tt-border: oklch(0.86 0.025 80);
	--tt-input: oklch(0.84 0.025 80);
	--tt-destructive: oklch(0.55 0.2 27);
	--tt-overlay: linear-gradient(180deg, oklch(0.12 0.005 60 / 0.55) 0%, oklch(0.12 0.005 60 / 0.25) 40%, oklch(0.12 0.005 60 / 0.8) 100%);
	--tt-font-display: "Cormorant Garamond", "Times New Roman", serif;
	--tt-font-sans: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;
	--tt-ease: cubic-bezier(.2, .7, .2, 1);
	--tt-gutter: 1.5rem;
}

/* Base ------------------------------------------------------------------ */

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
	margin: 0;
	background-color: var(--tt-background);
	color: var(--tt-foreground);
	font-family: var(--tt-font-sans);
	font-size: 1rem;
	line-height: 1.5;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
h1, h2, h3, h4 { font-family: var(--tt-font-display); font-weight: 400; letter-spacing: -0.01em; color: inherit; }
a { color: inherit; text-decoration: none; }
img, video { max-width: 100%; height: auto; display: block; }
button { font: inherit; color: inherit; }
:focus-visible { outline: 2px solid var(--tt-gold); outline-offset: 3px; }

/* Reset inside theme sections so the layout matches the design exactly.
   :where() keeps these at zero specificity, so every component rule below wins. */
:where(.tt-w, .tt-header, .tt-footer) :where(h1, h2, h3, p, ol, ul, dl, dd, figure) { margin: 0; padding: 0; }
:where(.tt-w, .tt-header, .tt-footer) :where(ol, ul) { list-style: none; }
:where(.tt-w) button { background: none; border: 0; padding: 0; cursor: pointer; }
.tt-w img.tt-cover, .tt-w video.tt-cover, img.tt-cover { width: 100%; height: 100%; object-fit: cover; max-width: none; }

.tt-container { width: 100%; max-width: 80rem; margin-inline: auto; padding-inline: var(--tt-gutter); }
.tt-container--normal { max-width: 72rem; }
.tt-container--narrow { max-width: 56rem; }
.tt-container--text { max-width: 48rem; }

.tt-muted { color: var(--tt-muted-foreground); }

.tt-skip-link {
	position: absolute; left: -9999px; top: 1rem; z-index: 100;
	background: var(--tt-background); padding: .75rem 1rem;
}
.tt-skip-link:focus { left: 1rem; }

/* Typography helpers ---------------------------------------------------- */

.tt-eyebrow {
	font-family: var(--tt-font-sans);
	font-size: .75rem;
	font-weight: 600;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--tt-gold);
}
.tt-heading .tt-title { margin-top: 1rem; font-size: 3rem; line-height: 1.05; }
.tt-heading .tt-eyebrow + .tt-title { margin-top: 1rem; }
.tt-heading .tt-title:first-child { margin-top: 0; }
@media (min-width: 768px) { .tt-heading .tt-title { font-size: 3.75rem; } }
.tt-heading--narrow { max-width: 42rem; }
.tt-lead { margin-top: 2rem; line-height: 1.65; color: var(--tt-muted-foreground); }
.tt-rich > * + * { margin-top: 1.5rem; }
.tt-rich a { text-decoration: underline; text-underline-offset: 3px; }
.tt-caption { margin-top: 1.5rem; font-size: .875rem; color: var(--tt-muted-foreground); }

/* Buttons --------------------------------------------------------------- */

.tt-btn-gold, .tt-btn-line, .tt-btn-line-light {
	display: inline-flex; align-items: center; justify-content: center; gap: .6rem;
	padding: .95rem 1.8rem;
	font-family: var(--tt-font-sans); font-size: .78rem; font-weight: 500; line-height: 1.2;
	letter-spacing: .2em; text-transform: uppercase;
	border: 1px solid transparent; border-radius: 0; cursor: pointer;
	transition: background .4s, color .4s, transform .4s, border-color .4s;
}
.tt-btn-gold { background: var(--tt-gold); color: var(--tt-ink); }
.tt-btn-gold:hover, .tt-btn-gold:focus-visible { background: var(--tt-ivory); color: var(--tt-ink); transform: translateY(-2px); }
.tt-btn-line { border-color: currentColor; color: inherit; }
.tt-btn-line:hover, .tt-btn-line:focus-visible { background: var(--tt-foreground); border-color: var(--tt-foreground); color: var(--tt-background); transform: translateY(-2px); }
.tt-btn-line-light { border-color: var(--tt-ink-foreground); color: var(--tt-ink-foreground); }
.tt-btn-line-light:hover, .tt-btn-line-light:focus-visible { background: var(--tt-ink-foreground); color: var(--tt-ink); }
.tt-bg--dark .tt-btn-line { color: var(--tt-ink-foreground); }
.tt-bg--dark .tt-btn-line:hover { background: var(--tt-ink-foreground); color: var(--tt-ink); }
.tt-btn--small { padding: .75rem 1.25rem; }
.tt-btn--block { display: flex; width: 100%; }
.tt-link-line {
	display: inline-flex; align-items: center; gap: .5rem; margin-top: 2.5rem;
	padding-bottom: .25rem; border-bottom: 1px solid var(--tt-gold);
	font-size: .75rem; letter-spacing: .2em; text-transform: uppercase;
}
.tt-icon { flex-shrink: 0; }
.tt-actions { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 2.5rem; }
.tt-actions--center { justify-content: center; }

/* Section shells -------------------------------------------------------- */

.tt-section { position: relative; }
.tt-bg--light { background: var(--tt-background); color: var(--tt-foreground); }
.tt-bg--card { background: var(--tt-card); color: var(--tt-foreground); }
.tt-bg--dark { background: var(--tt-ink); color: var(--tt-ink-foreground); }
.tt-bg--dark .tt-muted, .tt-bg--dark .tt-lead, .tt-bg--dark .tt-caption { color: var(--tt-ink-foreground); opacity: .75; }

.tt-pt--none { padding-top: 0; }   .tt-pb--none { padding-bottom: 0; }
.tt-pt--s { padding-top: 6rem; }   .tt-pb--s { padding-bottom: 6rem; }
.tt-pt--m { padding-top: 7rem; }   .tt-pb--m { padding-bottom: 7rem; }
.tt-pt--l { padding-top: 7rem; }   .tt-pb--l { padding-bottom: 7rem; }
.tt-pt--xl { padding-top: 7rem; }  .tt-pb--xl { padding-bottom: 7rem; }
@media (min-width: 768px) {
	.tt-pt--l { padding-top: 9rem; }   .tt-pb--l { padding-bottom: 9rem; }
	.tt-pt--xl { padding-top: 10rem; } .tt-pb--xl { padding-bottom: 10rem; }
}
@media (max-width: 639px) {
	.tt-pt--s, .tt-pt--m, .tt-pt--l, .tt-pt--xl { padding-top: 5rem; }
	.tt-pb--s, .tt-pb--m, .tt-pb--l, .tt-pb--xl { padding-bottom: 5rem; }
}

/* Image helpers --------------------------------------------------------- */

.tt-zoom { overflow: hidden; display: block; }
.tt-zoom img { transition: transform 1.2s var(--tt-ease); }
.tt-zoom:hover img { transform: scale(1.06); }
.tt-ratio-4-5 { aspect-ratio: 4 / 5; }
.tt-ratio-4-3 { aspect-ratio: 4 / 3; }

/* Animations ------------------------------------------------------------ */

@keyframes tt-rise { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: none; } }
@keyframes tt-slowzoom { from { transform: scale(1.08); } to { transform: scale(1); } }
.tt-anim-rise { animation: tt-rise 1.2s var(--tt-ease) both; }
.tt-anim-zoom { animation: tt-slowzoom 14s ease-out both; }

.tt-js .tt-reveal {
	opacity: 0; transform: translateY(28px);
	transition: opacity 1s var(--tt-ease), transform 1s var(--tt-ease);
}
.tt-js .tt-reveal.is-visible,
.elementor-editor-active .tt-reveal,
.elementor-editor-preview .tt-reveal { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
	.tt-js .tt-reveal { opacity: 1; transform: none; }
}

/* Header ---------------------------------------------------------------- */

.tt-header {
	position: fixed; inset-inline: 0; top: 0; z-index: 50;
	padding-block: 1rem;
	background: oklch(0.975 0.012 85 / 0.95);
	border-bottom: 1px solid var(--tt-border);
	color: var(--tt-foreground);
	-webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
	transition: background .5s, padding .5s, border-color .5s, color .5s;
}
.admin-bar .tt-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .tt-header { top: 46px; } }
@media (max-width: 600px) { .admin-bar .tt-header { top: 0; } }

.tt-header[data-overlay]:not(.is-solid) {
	background: transparent; border-color: transparent; padding-block: 1.5rem;
	color: var(--tt-ink-foreground);
	-webkit-backdrop-filter: none; backdrop-filter: none;
}
.tt-header__inner { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; }

.tt-logo { display: inline-block; line-height: 1; color: inherit; }
.tt-logo__name { display: block; font-family: var(--tt-font-display); font-size: 1.5rem; letter-spacing: .025em; }
.tt-logo__tag { display: block; margin-top: .15rem; font-size: .58rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--tt-gold); }
.tt-logo--light { color: var(--tt-ink-foreground); }
.tt-logo--img { display: inline-flex; align-items: center; }
.tt-logo img.tt-logo__img { display: block; width: auto; max-width: none; height: var(--tt-logo-h, 48px); }
.tt-logo img.tt-logo__img--light { display: none; }
.tt-header[data-overlay]:not(.is-solid) .tt-logo img.tt-logo__img--dark { display: none; }
.tt-header[data-overlay]:not(.is-solid) .tt-logo img.tt-logo__img--light { display: block; }
@media (max-width: 639px) { .tt-logo img.tt-logo__img { height: calc(var(--tt-logo-h, 48px) * .85); } }

/* Editing the header/footer in Elementor (Appearance → Header & Footer) */
body.tt-part-canvas { background: oklch(0.9 0.02 80); }
.tt-part-canvas .tt-header { position: relative; top: 0; }

.tt-nav { display: none; align-items: center; gap: 2.25rem; }
.tt-nav__list { display: flex; align-items: center; gap: 2.25rem; margin: 0; padding: 0; list-style: none; }
.tt-nav__list > li { position: relative; }
.tt-nav__list a {
	position: relative; display: inline-block;
	font-size: .74rem; letter-spacing: .2em; text-transform: uppercase;
}
.tt-nav__list > li > a::after {
	content: ""; position: absolute; left: 0; bottom: -.25rem; width: 100%; height: 1px;
	background: var(--tt-gold); transform: scaleX(0); transform-origin: left;
	transition: transform .5s;
}
.tt-nav__list > li > a:hover::after { transform: scaleX(1); }
.tt-nav__list .current-menu-item > a,
.tt-nav__list .current_page_item > a,
.tt-nav__list .current-menu-ancestor > a { color: var(--tt-gold); }
.tt-nav__list .sub-menu {
	position: absolute; top: 100%; left: -1rem; min-width: 14rem; margin: 0; padding: 1rem;
	list-style: none; background: var(--tt-background); color: var(--tt-foreground);
	border: 1px solid var(--tt-border);
	opacity: 0; visibility: hidden; transform: translateY(6px);
	transition: opacity .3s, transform .3s, visibility .3s;
}
.tt-nav__list .sub-menu li + li { margin-top: .75rem; }
.tt-nav__list li:hover > .sub-menu,
.tt-nav__list li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: none; }

.tt-menu-toggle { display: inline-flex; background: none; border: 0; padding: .25rem; cursor: pointer; color: inherit; }
.tt-menu-toggle__close { display: none; }
.tt-header.is-open .tt-menu-toggle__open { display: none; }
.tt-header.is-open .tt-menu-toggle__close { display: inline-flex; }

.tt-mobile-nav {
	display: flex; flex-direction: column; gap: 1.5rem;
	height: calc(100vh - 64px); overflow-y: auto;
	padding: 2.5rem var(--tt-gutter) 6rem;
	background: var(--tt-background); color: var(--tt-foreground);
	animation: tt-rise .6s var(--tt-ease) both;
}
.tt-mobile-nav[hidden] { display: none; }
.tt-mobile-nav__list { display: flex; flex-direction: column; gap: 1.5rem; margin: 0; padding: 0; list-style: none; }
.tt-mobile-nav__list a { font-family: var(--tt-font-display); font-size: 2.25rem; line-height: 1.1; }
.tt-mobile-nav__list .sub-menu { margin: 1rem 0 0 1rem; padding: 0; list-style: none; }
.tt-mobile-nav__list .sub-menu a { font-size: 1.5rem; }
.tt-mobile-nav .tt-btn-gold { margin-top: 1rem; }

@media (min-width: 1024px) {
	.tt-nav { display: flex; }
	.tt-menu-toggle, .tt-mobile-nav { display: none !important; }
}

/* Phone "Check Availability" bar */
.tt-mobile-cta {
	position: fixed; inset-inline: 0; bottom: 0; z-index: 40;
	padding: .75rem; background: oklch(0.975 0.012 85 / 0.95);
	border-top: 1px solid var(--tt-border);
	-webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
}
@media (min-width: 1024px) { .tt-mobile-cta { display: none; } }

/* Footer ---------------------------------------------------------------- */

.tt-footer { padding: 5rem 0 7rem; background: var(--tt-ink); color: var(--tt-ink-foreground); }
@media (min-width: 1024px) { .tt-footer { padding-bottom: 3rem; } }
body:not(.tt-has-mobile-cta) .tt-footer { padding-bottom: 3rem; }
.tt-footer__grid { display: grid; gap: 3rem; }
@media (min-width: 768px) {
	.tt-footer__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.tt-footer__brand { grid-column: span 2; }
}
.tt-footer__text { margin-top: 1.5rem; max-width: 24rem; font-size: .875rem; line-height: 1.65; opacity: .7; }
.tt-footer__heading { margin-bottom: 1.25rem; }
.tt-footer__list { margin: 0; padding: 0; list-style: none; font-size: .875rem; opacity: .8; }
.tt-footer__list li + li { margin-top: .75rem; }
.tt-footer__list .sub-menu { display: none; }
.tt-footer a:hover { color: var(--tt-gold); }
.tt-footer__bottom {
	display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem;
	margin-top: 4rem; padding-top: 2rem;
	border-top: 1px solid oklch(0.95 0.015 82 / 0.15);
	font-size: .75rem; opacity: .6;
}
.tt-footer__bottom .tt-container { padding: 0; }
.tt-footer__legal { display: flex; flex-wrap: wrap; gap: 1.5rem; margin: 0; padding: 0; list-style: none; }

/* Hero ------------------------------------------------------------------ */

.tt-hero {
	position: relative; display: flex; align-items: flex-end; overflow: hidden;
	background: var(--tt-ink); color: var(--tt-ink-foreground);
}
.tt-hero--home { min-height: 100vh; min-height: 100svh; }
.tt-hero--page { min-height: 62vh; }
.tt-w .tt-hero__media { position: absolute; inset: 0; }
.tt-hero__overlay { position: absolute; inset: 0; background: var(--tt-overlay); }
.tt-hero__content { position: relative; }
.tt-hero--home .tt-hero__content { padding-top: 10rem; padding-bottom: 6rem; }
.tt-hero--page .tt-hero__content { padding-top: 10rem; padding-bottom: 4rem; }
.tt-hero__title { margin-top: 1.5rem; max-width: 56rem; font-size: 3rem; line-height: .98; }
.tt-hero--page .tt-hero__title { margin-top: 1rem; max-width: 48rem; line-height: 1.02; }
.tt-hero__intro { margin-top: 2rem; max-width: 32rem; opacity: .85; }
.tt-hero--page .tt-hero__intro { margin-top: 1.5rem; max-width: 36rem; }
@media (min-width: 768px) {
	.tt-hero--home .tt-hero__content { padding-bottom: 8rem; }
	.tt-hero--home .tt-hero__title { font-size: 6rem; }
	.tt-hero--page .tt-hero__title { font-size: 4.5rem; }
}

/* Intro ----------------------------------------------------------------- */

.tt-intro__grid { display: grid; gap: 4rem; align-items: center; }
.tt-intro__media { position: relative; }
.tt-intro__inset {
	display: none; position: absolute; bottom: -2.5rem; left: -2.5rem;
	width: 12rem; aspect-ratio: 1; border: 8px solid var(--tt-background);
}
.tt-bg--card .tt-intro__inset { border-color: var(--tt-card); }
.tt-bg--dark .tt-intro__inset { border-color: var(--tt-ink); }
@media (min-width: 768px) {
	.tt-intro__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); }
	.tt-intro__text { grid-column: 1 / span 5; }
	.tt-intro__media { grid-column: 7 / span 6; }
	.tt-intro__inset { display: block; }
}

/* Mosaic ---------------------------------------------------------------- */

.tt-split-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1.5rem; }
.tt-mosaic__grid { display: grid; gap: 1rem; margin-top: 3.5rem; }
.tt-mosaic__item--2, .tt-mosaic__item--3 { aspect-ratio: 4 / 3; }
@media (min-width: 768px) {
	.tt-mosaic__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); grid-template-rows: repeat(2, auto); }
	.tt-mosaic__item--1 { grid-column: span 7; grid-row: span 2; }
	.tt-mosaic__item--2, .tt-mosaic__item--3 { grid-column: span 5; }
}

/* Event types ----------------------------------------------------------- */

.tt-events__head + .tt-events__grid, .tt-events__head + .tt-events__list { margin-top: 4rem; }
.tt-events__grid { display: grid; column-gap: 2rem; row-gap: 3.5rem; }
@media (min-width: 640px) { .tt-events__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .tt-events__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.tt-event-card { display: block; }
.tt-event-card__body { margin-top: 1.5rem; transition: transform .5s; }
.tt-event-card:hover .tt-event-card__body { transform: translateX(.5rem); }
.tt-event-card__title { font-size: 1.875rem; line-height: 1.2; }
.tt-event-card__text { margin-top: .75rem; font-size: .875rem; line-height: 1.65; color: var(--tt-muted-foreground); }
.tt-event-card__more { display: inline-flex; align-items: center; gap: .5rem; margin-top: 1rem; font-size: .75rem; letter-spacing: .2em; text-transform: uppercase; color: var(--tt-gold); }
.tt-bg--dark .tt-event-card__text { color: var(--tt-ink-foreground); opacity: .75; }

.tt-events__list > * + * { margin-top: 6rem; }
.tt-event-row { display: grid; gap: 3rem; align-items: center; }
.tt-event-row .tt-title { margin-top: .75rem; font-size: 3rem; line-height: 1.05; }
.tt-event-row__text { margin-top: 1.5rem; max-width: 28rem; color: var(--tt-muted-foreground); }
.tt-event-row .tt-btn-line { margin-top: 2rem; }
@media (min-width: 768px) {
	.tt-event-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.tt-event-row--flip > :first-child { order: 2; }
}

/* Steps ----------------------------------------------------------------- */

.tt-steps__list { display: grid; gap: 3rem; margin-top: 4rem; }
@media (min-width: 768px) { .tt-steps__list { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.tt-steps__item { padding-top: 2rem; border-top: 1px solid oklch(0.95 0.015 82 / 0.2); }
.tt-bg--light .tt-steps__item, .tt-bg--card .tt-steps__item { border-top-color: var(--tt-border); }
.tt-steps__num { display: block; font-family: var(--tt-font-display); font-size: 3.75rem; line-height: 1; color: var(--tt-gold); }
.tt-steps__text { margin-top: 1rem; font-family: var(--tt-font-display); font-size: 1.5rem; line-height: 1.3; }
.tt-steps__action { margin-top: 4rem; }

/* Features -------------------------------------------------------------- */

.tt-features__head .tt-title { font-size: 3rem; }
.tt-features__head + .tt-features__grid { margin-top: 3.5rem; }
.tt-features--boxed .tt-features__grid { display: grid; gap: 1px; background: var(--tt-border); }
.tt-features--boxed .tt-features__item { padding: 2rem; background: var(--tt-background); }
.tt-bg--card.tt-features--boxed .tt-features__item { background: var(--tt-card); }
.tt-bg--dark.tt-features--boxed .tt-features__grid { background: oklch(0.95 0.015 82 / 0.15); }
.tt-bg--dark.tt-features--boxed .tt-features__item { background: var(--tt-ink); }
.tt-features--boxed .tt-features__title { font-size: 1.5rem; }
.tt-features--boxed .tt-features__text { margin-top: .5rem; font-size: .875rem; color: var(--tt-muted-foreground); }
.tt-features--columns .tt-features__grid { display: grid; gap: 3rem; }
.tt-features--columns .tt-features__item { padding-top: 1.5rem; border-top: 1px solid var(--tt-border); }
.tt-features--columns .tt-features__title { font-size: 1.875rem; }
.tt-features--columns .tt-features__text { margin-top: .75rem; color: var(--tt-muted-foreground); }
.tt-bg--dark .tt-features__text { color: var(--tt-ink-foreground); opacity: .75; }
@media (min-width: 640px) { .tt-features--boxed .tt-features__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 768px) { .tt-features--columns .tt-features__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

/* Gallery --------------------------------------------------------------- */

.tt-gallery__head { margin-bottom: 3rem; }
.tt-gallery__filters { display: flex; flex-wrap: wrap; gap: 1.5rem; margin-bottom: 2.5rem; }
.tt-w .tt-gallery__filters button {
	padding-bottom: .25rem; border-bottom: 1px solid transparent;
	font-size: .75rem; letter-spacing: .2em; text-transform: uppercase;
	color: var(--tt-muted-foreground); transition: color .3s, border-color .3s;
}
.tt-w .tt-gallery__filters button:hover { color: var(--tt-foreground); }
.tt-w .tt-gallery__filters button[aria-selected="true"] { color: var(--tt-foreground); border-bottom-color: var(--tt-gold); }
.tt-bg--dark .tt-gallery__filters button:hover,
.tt-bg--dark .tt-gallery__filters button[aria-selected="true"] { color: var(--tt-ink-foreground); }
.tt-gallery__grid { columns: 1; column-gap: 1rem; }
@media (min-width: 640px) { .tt-gallery__grid { columns: 2; } }
@media (min-width: 1024px) { .tt-gallery__grid { columns: 3; } }
.tt-w .tt-gallery__item { display: block; width: 100%; margin-bottom: 1rem; break-inside: avoid; cursor: zoom-in; }
.tt-gallery__item[hidden] { display: none !important; }
.tt-gallery__img { width: 100%; height: auto; }

.tt-lightbox {
	position: fixed; inset: 0; z-index: 100000;
	display: flex; align-items: center; justify-content: center; padding: 1rem;
	background: oklch(0.17 0.006 60 / 0.95); color: var(--tt-ink-foreground);
	animation: tt-rise .5s var(--tt-ease) both;
}
.tt-lightbox[hidden] { display: none; }
.tt-lightbox button { position: absolute; display: inline-flex; padding: .75rem; background: none; border: 0; color: inherit; cursor: pointer; }
.tt-lightbox__close { top: 1.25rem; right: 1.25rem; }
.tt-lightbox__prev { left: .75rem; }
.tt-lightbox__next { right: .75rem; }
@media (min-width: 768px) { .tt-lightbox__prev { left: 2rem; } .tt-lightbox__next { right: 2rem; } }
.tt-lightbox figure { margin: 0; max-width: 64rem; max-height: 100%; }
.tt-lightbox img { max-height: 80vh; width: auto; margin-inline: auto; object-fit: contain; }
.tt-lightbox figcaption { margin-top: 1rem; text-align: center; font-size: .875rem; opacity: .7; }
body.tt-no-scroll { overflow: hidden; }

/* FAQ ------------------------------------------------------------------- */

.tt-faq-section--split .tt-container { display: grid; gap: 3rem; }
.tt-faq-section__side .tt-title { font-size: 3rem; }
.tt-faq-section__side .tt-btn-line { margin-top: 2rem; }
@media (min-width: 768px) {
	.tt-faq-section--split .tt-container { grid-template-columns: repeat(12, minmax(0, 1fr)); }
	.tt-faq-section__side { grid-column: span 4; }
	.tt-faq-section--split .tt-faq { grid-column: span 8; }
}
.tt-faq { border-top: 1px solid var(--tt-border); }
.tt-faq__item { border-bottom: 1px solid var(--tt-border); }
.tt-w .tt-faq__q { font-size: inherit; }
.tt-w .tt-faq__trigger {
	display: flex; width: 100%; align-items: center; justify-content: space-between; gap: 1rem;
	padding-block: 1.5rem; text-align: left;
	font-family: var(--tt-font-display); font-size: 1.5rem; line-height: 1.3;
}
.tt-faq__trigger .tt-icon { color: var(--tt-muted-foreground); transition: transform .3s; }
.tt-faq__trigger[aria-expanded="true"] .tt-icon { transform: rotate(180deg); }
.tt-faq__a { padding-bottom: 1.5rem; color: var(--tt-muted-foreground); }
.tt-bg--dark .tt-faq, .tt-bg--dark .tt-faq__item { border-color: oklch(0.95 0.015 82 / 0.2); }
.tt-bg--dark .tt-faq__a { color: var(--tt-ink-foreground); opacity: .75; }

/* Videos ---------------------------------------------------------------- */

.tt-videos__grid { display: grid; gap: 1.5rem; }
@media (min-width: 768px) { .tt-videos__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.tt-w video.tt-videos__video { aspect-ratio: 16 / 9; height: auto; background: var(--tt-ink); }

/* Heading + text -------------------------------------------------------- */

.tt-split-text__grid { display: grid; gap: 4rem; }
.tt-split-text .tt-title { line-height: 1.15; }
.tt-split-text .tt-lead { margin-top: 0; }
@media (min-width: 768px) { .tt-split-text__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Contact --------------------------------------------------------------- */

.tt-contact__grid { display: grid; gap: 4rem; }
@media (min-width: 768px) {
	.tt-contact__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); }
	.tt-contact__aside { grid-column: span 4; }
	.tt-contact__form { grid-column: span 8; }
}
.tt-contact__title { font-size: 2.25rem; }
.tt-contact__text { margin-top: 1rem; }
.tt-contact__steps { margin-top: 2.5rem; padding-top: 2rem; border-top: 1px solid var(--tt-border); font-size: .875rem; }
.tt-contact__steps li { display: flex; gap: 1rem; }
.tt-contact__steps li + li { margin-top: 1.5rem; }
.tt-contact__steps strong { display: block; font-weight: 500; }
.tt-contact__num { font-family: var(--tt-font-display); font-size: 1.5rem; line-height: 1; color: var(--tt-gold); }
.tt-contact__details { margin-top: 2rem; padding-top: 2rem; border-top: 1px solid var(--tt-border); font-size: .875rem; }
.tt-contact__details a { border-bottom: 1px solid var(--tt-gold); }

/* Address / email / phone groups (Contact page and footer) */
.tt-details { display: grid; gap: 1.25rem; line-height: 1.6; }
.tt-details p { margin: 0; }
.tt-details__label { margin-bottom: .35rem !important; font-size: .68rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--tt-gold); }
.tt-details a { transition: color .3s; }
.tt-details a:hover { color: var(--tt-gold); }
.tt-footer .tt-details { margin-top: 1.25rem; font-size: .875rem; }
.tt-footer .tt-details > .tt-details__group > :not(.tt-details__label) { opacity: .8; }
.tt-footer__visit-text { font-size: .875rem; opacity: .8; }
.tt-footer__visit-link { margin-top: 1.25rem; font-size: .875rem; opacity: .8; }
.tt-notice { margin-bottom: 1rem; padding: 1rem; border-left: 2px solid var(--tt-destructive); background: var(--tt-muted); font-size: .875rem; }

/* Inquiry form (Contact Form 7) ---------------------------------------- */

.tt-form .wpcf7 form { margin: 0; }
.tt-form-grid { display: grid; gap: 2rem; }
@media (min-width: 768px) {
	.tt-form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.tt-span-2 { grid-column: span 2; }
}
.tt-field { display: block; min-width: 0; margin: 0; padding: 0; border: 0; }
.tt-label {
	display: block; padding: 0;
	font-size: .75rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase;
	color: var(--tt-muted-foreground);
}
.tt-form .wpcf7-form-control-wrap { display: block; }
.tt-form input[type="text"], .tt-form input[type="email"], .tt-form input[type="tel"],
.tt-form input[type="number"], .tt-form input[type="date"], .tt-form select, .tt-form textarea {
	display: block; width: 100%; padding: .75rem 0;
	font: inherit; font-size: 1rem; color: var(--tt-foreground);
	background: transparent; border: 0; border-bottom: 1px solid var(--tt-input); border-radius: 0;
	outline: none; box-shadow: none; transition: border-color .3s;
	-webkit-appearance: none; appearance: none;
}
.tt-form select {
	padding-right: 1.5rem; cursor: pointer;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23776d63' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat; background-position: right center;
}
.tt-form input:focus, .tt-form select:focus, .tt-form textarea:focus { border-bottom-color: var(--tt-gold); }
.tt-form textarea { resize: vertical; min-height: 7rem; }
.tt-form .wpcf7-not-valid { border-bottom-color: var(--tt-destructive) !important; }
.tt-form .wpcf7-not-valid-tip { display: block; margin-top: .5rem; font-size: .875rem; color: var(--tt-destructive); }
.tt-form .wpcf7-radio { display: flex; flex-wrap: wrap; gap: 2rem; margin-top: .75rem; }
.tt-form .wpcf7-list-item { margin: 0; }
.tt-form .wpcf7-list-item label { display: inline-flex; align-items: center; gap: .5rem; cursor: pointer; }
.tt-form input[type="radio"], .tt-form input[type="checkbox"] { width: 1rem; height: 1rem; margin: 0; accent-color: var(--tt-gold); }
.tt-consent { font-size: .875rem; }
.tt-consent .wpcf7-list-item label { align-items: flex-start; gap: .75rem; }
.tt-consent input[type="checkbox"] { margin-top: .2rem; flex-shrink: 0; }
.tt-form .tt-btn-gold { border: 0; }
.tt-form .tt-btn-gold:disabled { opacity: .6; cursor: wait; transform: none; }
.tt-form .wpcf7-spinner { vertical-align: middle; margin-left: 1rem; }
.tt-form .wpcf7 form .wpcf7-response-output {
	margin: 1.5rem 0 0; padding: 0 0 0 1rem;
	border: 0; border-left: 2px solid var(--tt-gold);
	font-size: .875rem; color: var(--tt-muted-foreground);
}
.tt-form .wpcf7 form.invalid .wpcf7-response-output,
.tt-form .wpcf7 form.failed .wpcf7-response-output,
.tt-form .wpcf7 form.spam .wpcf7-response-output { border-left-color: var(--tt-destructive); }
.tt-form .wpcf7 form.sent .wpcf7-response-output { border-left-color: var(--tt-gold); color: var(--tt-foreground); }
.tt-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

/* Call to action -------------------------------------------------------- */

.tt-cta {
	position: relative; overflow: hidden; padding-block: 9rem;
	background: var(--tt-ink); color: var(--tt-ink-foreground); text-align: center;
}
.tt-w .tt-cta__bg { position: absolute; inset: 0; opacity: .35; }
.tt-cta__content { position: relative; max-width: 48rem; margin-inline: auto; padding-inline: var(--tt-gutter); }
.tt-cta .tt-title { margin-top: 1.25rem; font-size: 3rem; line-height: 1.15; }
@media (min-width: 768px) { .tt-cta .tt-title { font-size: 4.5rem; } }

/* Legal pages (Elementor Heading + Text Editor) ------------------------- */

.elementor-section.tt-legal { padding: 10rem var(--tt-gutter) 6rem; }
.tt-legal .elementor-heading-title { font-family: var(--tt-font-display); font-weight: 400; font-size: 3.75rem; line-height: 1; color: var(--tt-foreground); }
.tt-legal .elementor-widget-text-editor { color: var(--tt-muted-foreground); }
.tt-legal .elementor-widget-heading { margin-bottom: 1.5rem; }
.tt-legal .elementor-widget-text-editor p { margin: 0 0 1.5rem; }

/* Plain pages, blog and 404 -------------------------------------------- */

.tt-page { padding-top: 10rem; padding-bottom: 6rem; }
.tt-page__title { margin: 0 0 2rem; font-size: 3rem; line-height: 1.05; }
@media (min-width: 768px) { .tt-page__title { font-size: 3.75rem; } }
.tt-post__meta { margin-bottom: 1rem; }
.tt-post__image { margin-bottom: 2.5rem; }
.tt-prose { color: var(--tt-muted-foreground); line-height: 1.75; }
.tt-prose > * { margin-top: 0; margin-bottom: 1.5rem; }
.tt-prose h2, .tt-prose h3, .tt-prose h4 { margin-top: 2.5rem; color: var(--tt-foreground); line-height: 1.15; }
.tt-prose h2 { font-size: 2.25rem; }
.tt-prose h3 { font-size: 1.75rem; }
.tt-prose a { color: var(--tt-foreground); text-decoration: underline; text-decoration-color: var(--tt-gold); text-underline-offset: 3px; }
.tt-prose blockquote { margin-inline: 0; padding-left: 1.5rem; border-left: 2px solid var(--tt-gold); font-family: var(--tt-font-display); font-size: 1.5rem; color: var(--tt-foreground); }
.tt-prose img { height: auto; }
.tt-prose .alignwide { max-width: none; }
.tt-prose .aligncenter { margin-inline: auto; }
.tt-prose .alignleft { float: left; margin: 0 1.5rem 1rem 0; }
.tt-prose .alignright { float: right; margin: 0 0 1rem 1.5rem; }
.wp-caption-text, .wp-element-caption { font-size: .875rem; color: var(--tt-muted-foreground); }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); white-space: nowrap; }

.tt-archive__header { margin-bottom: 3rem; }
.tt-posts { display: grid; gap: 3rem 2rem; }
@media (min-width: 640px) { .tt-posts { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .tt-posts { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.tt-card__link { display: block; }
.tt-card .tt-zoom { margin-bottom: 1.5rem; }
.tt-card__title { margin: .5rem 0 0; font-size: 1.875rem; line-height: 1.2; }
.tt-card__text { margin-top: .75rem; font-size: .875rem; color: var(--tt-muted-foreground); }
.tt-card__text p { margin: 0; }
.tt-pagination, .navigation.pagination, .post-navigation { margin-top: 4rem; }
.nav-links { display: flex; flex-wrap: wrap; gap: 1rem; font-size: .875rem; letter-spacing: .1em; text-transform: uppercase; }
.nav-links .current { color: var(--tt-gold); }
.tt-comments, .tt-sidebar { margin-top: 4rem; padding-top: 2rem; border-top: 1px solid var(--tt-border); }
.tt-comments input:not([type="submit"]):not([type="checkbox"]), .tt-comments textarea, .search-form .search-field {
	width: 100%; padding: .75rem; font: inherit; background: transparent; border: 1px solid var(--tt-input);
}
.tt-comments input[type="submit"], .search-form .search-submit {
	padding: .95rem 1.8rem; border: 0; background: var(--tt-gold); color: var(--tt-ink);
	font: inherit; font-size: .78rem; letter-spacing: .2em; text-transform: uppercase; cursor: pointer;
}

.tt-404 { display: flex; min-height: 80vh; flex-direction: column; align-items: center; justify-content: center; gap: 1rem; padding: 10rem var(--tt-gutter) 6rem; text-align: center; }
.tt-404__code { margin: 0; font-family: var(--tt-font-display); font-size: 6rem; line-height: 1; }
.tt-404__title { margin: 0; font-size: 2.25rem; }
.tt-404 .tt-btn-gold { margin-top: 1rem; }
