diff --git a/assets/section-tt-event-header.css b/assets/section-tt-event-header.css new file mode 100644 index 00000000000..f3972f89c27 --- /dev/null +++ b/assets/section-tt-event-header.css @@ -0,0 +1,218 @@ +/* + * section-tt-event-header.css + * Trainers Travel — event collection page header + */ + +.tt-eh { + --tt-navy: #1A1A2E; + --tt-gold: #C8A96E; + --tt-off-white: #F2F0EB; + --tt-mid: #4a4a6a; + --tt-border: #d8d4cc; + + background: var(--tt-navy); + border-bottom: 2px solid var(--tt-gold); + color: var(--tt-off-white); +} + +.tt-eh__inner { + max-width: 1080px; + margin: 0 auto; + padding: 32px 32px 36px; +} + +/* Back link + badge row */ +.tt-eh__top { + display: flex; + align-items: center; + gap: 12px; + margin-bottom: 16px; + flex-wrap: wrap; +} + +.tt-eh__back { + font-size: 0.8rem; + color: rgba(242, 240, 235, 0.55); + text-decoration: none; + transition: color 0.15s; +} +.tt-eh__back:hover { color: var(--tt-gold); } + +/* Status badges — same system as homepage cards */ +.tt-eh__badge { + display: inline-block; + font-size: 0.68rem; + font-weight: 700; + letter-spacing: 0.08em; + text-transform: uppercase; + padding: 3px 8px; + border-radius: 3px; +} + +.tt-eh__badge--available { + background: rgba(39, 174, 96, 0.18); + color: #58d68d; +} +.tt-eh__badge--selling-fast { + background: rgba(200, 169, 110, 0.2); + color: var(--tt-gold); +} +.tt-eh__badge--coming-soon { + background: rgba(255, 255, 255, 0.08); + color: rgba(242, 240, 235, 0.6); +} +.tt-eh__badge--sold-out { + background: rgba(192, 57, 43, 0.18); + color: #e74c3c; +} + +/* Title */ +.tt-eh__title { + font-size: clamp(1.8rem, 4.5vw, 3rem); + font-weight: 800; + color: var(--tt-off-white); + margin: 0 0 0.4rem; + letter-spacing: -0.02em; + line-height: 1.1; +} + +/* Date / city meta */ +.tt-eh__meta { + font-size: 0.88rem; + color: rgba(242, 240, 235, 0.55); + margin: 0 0 1.25rem; +} + +/* Collection description — written in Shopify admin */ +.tt-eh__description { + font-size: 0.92rem; + color: rgba(242, 240, 235, 0.75); + line-height: 1.65; + max-width: 680px; + margin-bottom: 1.5rem; +} + +.tt-eh__description p { margin: 0 0 0.75em; } +.tt-eh__description p:last-child { margin-bottom: 0; } +.tt-eh__description strong { color: var(--tt-off-white); } +.tt-eh__description a { color: var(--tt-gold); text-decoration: none; } +.tt-eh__description a:hover { text-decoration: underline; } + +/* Bottom bar */ +.tt-eh__footer-bar { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + flex-wrap: wrap; + padding-top: 1rem; + border-top: 1px solid rgba(255, 255, 255, 0.08); +} + +.tt-eh__pricing-note { + font-size: 0.88rem; + color: rgba(242, 240, 235, 0.65); + margin: 0; +} +.tt-eh__pricing-note strong { + color: var(--tt-off-white); + font-size: 1rem; +} + +.tt-eh__rooms-count { + font-size: 0.78rem; + color: rgba(242, 240, 235, 0.4); + margin: 0; +} + +/* ─── Coming soon body ───────────────────────────────────── */ +.tt-eh__coming-soon-body { + margin-top: 1.5rem; + padding-top: 1.5rem; + border-top: 1px solid rgba(255, 255, 255, 0.08); +} + +.tt-eh__cs-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 24px 40px; + margin-bottom: 2rem; +} + +@media (max-width: 560px) { + .tt-eh__cs-grid { + grid-template-columns: 1fr; + gap: 20px; + } +} + +.tt-eh__cs-label { + font-size: 0.68rem; + font-weight: 700; + letter-spacing: 0.1em; + text-transform: uppercase; + color: var(--tt-gold); + margin: 0 0 0.75rem; +} + +.tt-eh__cs-list { + list-style: none; + margin: 0; + padding: 0; + display: flex; + flex-direction: column; + gap: 8px; +} + +.tt-eh__cs-list li { + font-size: 0.88rem; + color: rgba(242, 240, 235, 0.7); + line-height: 1.45; + padding-left: 14px; + position: relative; +} + +.tt-eh__cs-list li::before { + content: '—'; + position: absolute; + left: 0; + color: var(--tt-gold); + opacity: 0.6; + font-size: 0.75rem; + top: 0.1em; +} + +.tt-eh__cs-cta { + padding-top: 1.5rem; + border-top: 1px solid rgba(255, 255, 255, 0.06); + display: flex; + align-items: center; + gap: 20px; + flex-wrap: wrap; +} + +.tt-eh__cs-cta p { + font-size: 0.85rem; + color: rgba(242, 240, 235, 0.45); + margin: 0; + flex: 1; + min-width: 180px; +} + +.tt-eh__cs-btn { + display: inline-block; + font-size: 0.82rem; + font-weight: 700; + color: var(--tt-gold); + text-decoration: none; + border: 1px solid rgba(200, 169, 110, 0.35); + padding: 8px 16px; + border-radius: 4px; + white-space: nowrap; + transition: border-color 0.15s, background 0.15s; +} + +.tt-eh__cs-btn:hover { + border-color: var(--tt-gold); + background: rgba(200, 169, 110, 0.08); +} diff --git a/assets/section-tt-home.css b/assets/section-tt-home.css new file mode 100644 index 00000000000..b4a6a49e219 --- /dev/null +++ b/assets/section-tt-home.css @@ -0,0 +1,400 @@ +/* + * section-tt-home.css + * Trainers Travel — multi-event homepage + * + * The tt-home section renders its own header, so we hide the Dawn global + * header/announcement bar on the homepage (template-index body class). + */ + +.template-index .shopify-section-group-header-group { + display: none !important; +} + +/* ─── Tokens ──────────────────────────────────────────────── */ +.tt-home { + --tt-navy: #1A1A2E; + --tt-gold: #C8A96E; + --tt-off-white: #F2F0EB; + --tt-mid: #4a4a6a; + --tt-border: #d8d4cc; + + --tt-max-w: 1080px; + --tt-pad-h: 32px; + + font-family: inherit; + color: var(--tt-navy); + background: var(--tt-off-white); +} + +.tt-home *, +.tt-home *::before, +.tt-home *::after { + box-sizing: border-box; +} + +/* ─── Container ───────────────────────────────────────────── */ +.tt-home__container { + max-width: var(--tt-max-w); + margin: 0 auto; + padding: 0 var(--tt-pad-h); +} + +/* ─── Shared ──────────────────────────────────────────────── */ +.tt-home__section-title { + font-size: 0.72rem; + font-weight: 700; + letter-spacing: 0.1em; + text-transform: uppercase; + color: var(--tt-gold); + margin: 0 0 1.25rem; +} + +/* ─── 1. HEADER ───────────────────────────────────────────── */ +.tt-home__header { + background: var(--tt-navy); + padding: 14px var(--tt-pad-h); +} + +.tt-home__header-inner { + max-width: var(--tt-max-w); + margin: 0 auto; + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + flex-wrap: wrap; +} + +.tt-home__wordmark { + font-size: 1rem; + font-weight: 700; + letter-spacing: 0.02em; + color: var(--tt-off-white); +} + +.tt-home__header-email { + font-size: 0.8rem; + color: var(--tt-gold); + text-decoration: none; + opacity: 0.85; + transition: opacity 0.15s; +} +.tt-home__header-email:hover { opacity: 1; } + +/* ─── 2. HERO ─────────────────────────────────────────────── */ +.tt-home__hero { + background: var(--tt-navy); + padding: 64px 0 60px; + border-bottom: 2px solid var(--tt-gold); +} + +.tt-home__hero-heading { + font-size: clamp(2.4rem, 5vw, 4rem); + font-weight: 800; + color: var(--tt-off-white); + margin: 0 0 1rem; + line-height: 1.08; + letter-spacing: -0.03em; + max-width: 680px; +} + +.tt-home__hero-sub { + font-size: 1.05rem; + color: rgba(242, 240, 235, 0.6); + margin: 0 0 2rem; + max-width: 540px; + line-height: 1.6; +} + +.tt-home__hero-actions { + display: flex; + align-items: center; + gap: 20px; + flex-wrap: wrap; +} + +.tt-home__hero-proof { + font-size: 0.8rem; + color: rgba(242, 240, 235, 0.35); +} + +/* ─── Buttons ─────────────────────────────────────────────── */ +.tt-home__btn { + display: inline-block; + padding: 11px 22px; + font-size: 0.88rem; + font-weight: 700; + border-radius: 4px; + cursor: pointer; + text-decoration: none; + border: none; + line-height: 1; + transition: background 0.15s, color 0.15s, opacity 0.15s; + white-space: nowrap; +} + +.tt-home__btn--primary { + background: var(--tt-gold); + color: var(--tt-navy); +} +.tt-home__btn--primary:hover { background: #d4b87c; } + +/* ─── 3. EVENTS GRID ──────────────────────────────────────── */ +.tt-home__events { + background: var(--tt-off-white); + padding: 40px 0; + border-bottom: 1px solid var(--tt-border); +} + +.tt-home__events-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); + gap: 16px; +} + +/* Event card */ +.tt-home__event-card { + display: flex; + flex-direction: column; + background: #fff; + border: 1px solid var(--tt-border); + border-radius: 6px; + text-decoration: none; + color: inherit; + overflow: hidden; + transition: border-color 0.15s, box-shadow 0.15s; +} + +.tt-home__event-card:hover { + border-color: var(--tt-gold); + box-shadow: 0 2px 12px rgba(26, 26, 46, 0.08); +} + +.tt-home__event-card--sold-out { + opacity: 0.65; +} + +.tt-home__event-card-top { + padding: 12px 14px 0; +} + +/* Status badges */ +.tt-home__event-badge { + display: inline-block; + font-size: 0.68rem; + font-weight: 700; + letter-spacing: 0.08em; + text-transform: uppercase; + padding: 3px 8px; + border-radius: 3px; +} + +.tt-home__event-badge--available { + background: rgba(39, 174, 96, 0.12); + color: #1e8449; +} + +.tt-home__event-badge--selling-fast { + background: rgba(200, 169, 110, 0.18); + color: #8a6a2a; +} + +.tt-home__event-badge--coming-soon { + background: rgba(74, 74, 106, 0.1); + color: var(--tt-mid); +} + +.tt-home__event-badge--sold-out { + background: rgba(192, 57, 43, 0.1); + color: #922b21; +} + +.tt-home__event-card-body { + padding: 12px 14px 10px; + flex: 1; +} + +.tt-home__event-card-title { + font-size: 1rem; + font-weight: 700; + color: var(--tt-navy); + margin: 0 0 4px; + line-height: 1.25; +} + +.tt-home__event-card-meta { + font-size: 0.78rem; + color: var(--tt-mid); + margin: 0 0 8px; +} + +.tt-home__event-card-desc { + font-size: 0.82rem; + color: var(--tt-mid); + margin: 0; + line-height: 1.5; +} + +.tt-home__event-card-footer { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + padding: 10px 14px 14px; + border-top: 1px solid #f0ede6; + margin-top: auto; +} + +.tt-home__event-card-price { + font-size: 0.95rem; + font-weight: 700; + color: var(--tt-navy); +} + +.tt-home__event-card-price-note { + font-size: 0.72rem; + font-weight: 400; + color: var(--tt-mid); +} + +.tt-home__event-card-cta { + font-size: 0.78rem; + font-weight: 700; + color: var(--tt-gold); + white-space: nowrap; +} + +/* Empty state */ +.tt-home__events-empty { + padding: 40px 0; + font-size: 0.9rem; + color: var(--tt-mid); + line-height: 1.6; +} + +.tt-home__events-empty a { + color: var(--tt-gold); + text-decoration: none; +} +.tt-home__events-empty a:hover { text-decoration: underline; } + +/* ─── 4. FAQ ──────────────────────────────────────────────── */ +.tt-home__faq { + background: var(--tt-off-white); + padding: 40px 0; + border-bottom: 1px solid var(--tt-border); +} + +.tt-home__faq-list { + margin: 0; + padding: 0; +} + +.tt-home__faq-item { + border-bottom: 1px solid var(--tt-border); +} + +.tt-home__faq-item:first-child { + border-top: 1px solid var(--tt-border); +} + +.tt-home__faq-q { margin: 0; } + +.tt-home__faq-btn { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + padding: 15px 0; + font-size: 0.9rem; + font-weight: 600; + color: var(--tt-navy); + background: none; + border: none; + cursor: pointer; + text-align: left; + gap: 12px; +} +.tt-home__faq-btn:hover { color: var(--tt-gold); } + +.tt-home__faq-icon { + flex-shrink: 0; + width: 16px; + height: 16px; + position: relative; +} + +.tt-home__faq-icon::before, +.tt-home__faq-icon::after { + content: ''; + position: absolute; + background: currentColor; + border-radius: 1px; + transition: transform 0.2s, opacity 0.2s; +} + +.tt-home__faq-icon::before { + top: 50%; left: 0; right: 0; + height: 2px; + transform: translateY(-50%); +} + +.tt-home__faq-icon::after { + top: 0; bottom: 0; left: 50%; + width: 2px; + transform: translateX(-50%); +} + +.tt-home__faq-btn[aria-expanded="true"] .tt-home__faq-icon::after { + opacity: 0; + transform: translateX(-50%) rotate(90deg); +} + +.tt-home__faq-a { + padding: 0 0 16px; + font-size: 0.88rem; + color: var(--tt-mid); + line-height: 1.6; + margin: 0; +} + +.tt-home__faq-a a { + color: var(--tt-gold); + text-decoration: none; +} +.tt-home__faq-a a:hover { text-decoration: underline; } + +/* ─── 5. FOOTER ───────────────────────────────────────────── */ +.tt-home__footer { + background: var(--tt-navy); + padding: 28px 0; +} + +.tt-home__footer-inner { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + flex-wrap: wrap; +} + +.tt-home__footer-tagline { + font-size: 0.82rem; + color: rgba(242, 240, 235, 0.45); + margin: 0; +} + +.tt-home__footer-links { + display: flex; + align-items: center; + gap: 16px; + flex-wrap: wrap; +} + +.tt-home__footer-link { + font-size: 0.82rem; + color: rgba(242, 240, 235, 0.6); + text-decoration: none; + transition: color 0.15s; +} +.tt-home__footer-link:hover { color: var(--tt-gold); } diff --git a/assets/section-tt-sponsored.css b/assets/section-tt-sponsored.css new file mode 100644 index 00000000000..d427ef9cf20 --- /dev/null +++ b/assets/section-tt-sponsored.css @@ -0,0 +1,185 @@ +/* + * section-tt-sponsored.css + * Trainers Travel — Sponsored Players page + */ + +.tt-sp { + --tt-navy: #1A1A2E; + --tt-gold: #C8A96E; + --tt-off-white: #F2F0EB; + --tt-mid: #4a4a6a; + --tt-border: #d8d4cc; + --tt-max-w: 860px; + --tt-pad-h: 24px; + + background: var(--tt-off-white); + color: var(--tt-navy); + font-family: inherit; +} + +.tt-sp *, +.tt-sp *::before, +.tt-sp *::after { + box-sizing: border-box; +} + +.tt-sp__container { + max-width: var(--tt-max-w); + margin: 0 auto; + padding: 0 var(--tt-pad-h); +} + +/* ─── Hero ───────────────────────────────────────────────── */ +.tt-sp__hero { + background: var(--tt-navy); + padding: 48px 0 40px; + border-bottom: 2px solid var(--tt-gold); +} + +.tt-sp__eyebrow { + font-size: 0.72rem; + font-weight: 700; + letter-spacing: 0.1em; + text-transform: uppercase; + color: var(--tt-gold); + margin: 0 0 0.5rem; +} + +.tt-sp__heading { + font-size: clamp(1.8rem, 4vw, 2.8rem); + font-weight: 800; + color: var(--tt-off-white); + margin: 0 0 0.6rem; + letter-spacing: -0.02em; + line-height: 1.1; +} + +.tt-sp__sub { + font-size: 0.92rem; + color: rgba(242, 240, 235, 0.6); + margin: 0; + max-width: 480px; +} + +/* ─── Player grid ────────────────────────────────────────── */ +.tt-sp__grid-wrap { + padding: 40px 0; +} + +.tt-sp__grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); + gap: 20px; +} + +.tt-sp__card { + background: #fff; + border: 1px solid var(--tt-border); + border-radius: 6px; + overflow: hidden; + display: flex; + flex-direction: column; +} + +/* ─── Avatar ─────────────────────────────────────────────── */ +.tt-sp__avatar { + width: 100%; + aspect-ratio: 1; + overflow: hidden; + background: var(--tt-navy); + display: flex; + align-items: center; + justify-content: center; +} + +.tt-sp__avatar img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; +} + +.tt-sp__avatar--placeholder { + background: var(--tt-navy); +} + +.tt-sp__avatar--placeholder span { + font-size: 3rem; + font-weight: 800; + color: var(--tt-gold); + line-height: 1; +} + +/* ─── Card body ──────────────────────────────────────────── */ +.tt-sp__card-body { + padding: 18px 18px 20px; + display: flex; + flex-direction: column; + gap: 4px; + flex: 1; +} + +.tt-sp__player-name { + font-size: 1rem; + font-weight: 700; + color: var(--tt-navy); + margin: 0; +} + +.tt-sp__player-handle { + font-size: 0.8rem; + color: var(--tt-gold); + margin: 0; + font-weight: 600; +} + +.tt-sp__player-bio { + font-size: 0.82rem; + color: var(--tt-mid); + margin: 6px 0 0; + line-height: 1.5; +} + +.tt-sp__player-link { + display: inline-block; + margin-top: 12px; + font-size: 0.82rem; + font-weight: 700; + color: var(--tt-navy); + text-decoration: none; + border: 1px solid var(--tt-navy); + padding: 6px 14px; + border-radius: 3px; + align-self: flex-start; + transition: background 0.15s, color 0.15s; +} + +.tt-sp__player-link:hover { + background: var(--tt-navy); + color: var(--tt-off-white); +} + +/* ─── Empty state ────────────────────────────────────────── */ +.tt-sp__empty { + padding: 60px 0; + text-align: center; + font-size: 0.92rem; + color: var(--tt-mid); +} + +/* ─── Footer note ────────────────────────────────────────── */ +.tt-sp__footer-note { + border-top: 1px solid var(--tt-border); + padding: 28px 0; + font-size: 0.82rem; + color: var(--tt-mid); +} + +.tt-sp__footer-note a { + color: var(--tt-gold); + text-decoration: none; +} + +.tt-sp__footer-note a:hover { + text-decoration: underline; +} diff --git a/assets/trainers-travel-brand.css b/assets/trainers-travel-brand.css new file mode 100644 index 00000000000..a3dc61acbd9 --- /dev/null +++ b/assets/trainers-travel-brand.css @@ -0,0 +1,437 @@ +/* ============================================================ + TRAINERS TRAVEL — BRAND STYLESHEET + Navy #1A1A2E | Gold #C8A96E | Off-white #F2F0EB + Headings: Playfair Display | Body: DM Sans + ============================================================ */ + +/* ——— Brand Tokens ——————————————————————————————————————— */ +:root { + --tt-navy: #1A1A2E; + --tt-navy-mid: #252545; + --tt-navy-dark: #0F0F1E; + --tt-gold: #C8A96E; + --tt-gold-light: #D9BF8F; + --tt-gold-dark: #A88B4E; + --tt-offwhite: #F2F0EB; + --tt-offwhite-dim: rgba(242, 240, 235, 0.65); + --tt-gold-line: rgba(200, 169, 110, 0.22); +} + +/* ——— Color Scheme Overrides ————————————————————————————— */ +/* scheme-1 (default / :root) — Navy primary */ +:root, +.color-scheme-1 { + --color-background: 26, 26, 46; + --gradient-background: #1A1A2E; + --color-foreground: 242, 240, 235; + --color-background-contrast: 37, 37, 69; + --color-shadow: 10, 10, 18; + --color-button: 200, 169, 110; + --color-button-text: 26, 26, 46; + --color-secondary-button: 26, 26, 46; + --color-secondary-button-text: 200, 169, 110; + --color-link: 200, 169, 110; + --color-badge-foreground: 26, 26, 46; + --color-badge-background: 200, 169, 110; + --color-badge-border: 200, 169, 110; + --payment-terms-background-color: rgb(26, 26, 46); +} + +/* scheme-2 — Mid-navy (used for cards) */ +.color-scheme-2 { + --color-background: 37, 37, 69; + --gradient-background: #252545; + --color-foreground: 242, 240, 235; + --color-background-contrast: 50, 50, 90; + --color-shadow: 10, 10, 18; + --color-button: 200, 169, 110; + --color-button-text: 26, 26, 46; + --color-secondary-button: 37, 37, 69; + --color-secondary-button-text: 200, 169, 110; + --color-link: 200, 169, 110; + --color-badge-foreground: 242, 240, 235; + --color-badge-background: 37, 37, 69; + --color-badge-border: 200, 169, 110; + --payment-terms-background-color: rgb(37, 37, 69); +} + +/* scheme-3 — Deep navy accent */ +.color-scheme-3 { + --color-background: 30, 30, 53; + --gradient-background: #1E1E35; + --color-foreground: 242, 240, 235; + --color-background-contrast: 45, 45, 75; + --color-shadow: 10, 10, 18; + --color-button: 200, 169, 110; + --color-button-text: 26, 26, 46; + --color-secondary-button: 30, 30, 53; + --color-secondary-button-text: 200, 169, 110; + --color-link: 200, 169, 110; + --color-badge-foreground: 242, 240, 235; + --color-badge-background: 30, 30, 53; + --color-badge-border: 200, 169, 110; + --payment-terms-background-color: rgb(30, 30, 53); +} + +/* scheme-4 — Darkest navy */ +.color-scheme-4 { + --color-background: 15, 15, 30; + --gradient-background: #0F0F1E; + --color-foreground: 242, 240, 235; + --color-background-contrast: 26, 26, 46; + --color-shadow: 0, 0, 0; + --color-button: 200, 169, 110; + --color-button-text: 15, 15, 30; + --color-secondary-button: 15, 15, 30; + --color-secondary-button-text: 200, 169, 110; + --color-link: 200, 169, 110; + --color-badge-foreground: 242, 240, 235; + --color-badge-background: 15, 15, 30; + --color-badge-border: 200, 169, 110; + --payment-terms-background-color: rgb(15, 15, 30); +} + +/* scheme-5 — Gold accent (sale badges, CTAs) */ +.color-scheme-5 { + --color-background: 200, 169, 110; + --gradient-background: #C8A96E; + --color-foreground: 26, 26, 46; + --color-background-contrast: 168, 139, 78; + --color-shadow: 10, 10, 18; + --color-button: 26, 26, 46; + --color-button-text: 200, 169, 110; + --color-secondary-button: 200, 169, 110; + --color-secondary-button-text: 26, 26, 46; + --color-link: 26, 26, 46; + --color-badge-foreground: 26, 26, 46; + --color-badge-background: 200, 169, 110; + --color-badge-border: 26, 26, 46; + --payment-terms-background-color: rgb(200, 169, 110); +} + +/* ——— Font Overrides ————————————————————————————————————— */ +/* Google Fonts take precedence over Shopify CDN fallbacks */ +:root { + --font-heading-family: 'Playfair Display', Georgia, 'Times New Roman', serif; + --font-heading-style: normal; + --font-heading-weight: 700; + --font-body-family: 'DM Sans', 'Helvetica Neue', Arial, sans-serif; + --font-body-style: normal; + --font-body-weight: 400; + --font-body-weight-bold: 700; +} + +/* ——— Typography ————————————————————————————————————————— */ +h1, h2, h3, h4, h5, h6, +.h0, .h1, .h2, .h3, .h4, .h5, .hxl, .hxxl { + font-family: var(--font-heading-family); + font-weight: var(--font-heading-weight); + letter-spacing: 0.01em; +} + +/* Subtle gold accent on primary display headings */ +.banner__heading, +.section-heading { + color: rgb(var(--color-foreground)); +} + +/* ——— Buttons ———————————————————————————————————————————— */ +.button, +.button--primary { + background-color: var(--tt-gold); + color: var(--tt-navy); + border-color: var(--tt-gold); + font-family: var(--font-body-family); + font-weight: 600; + letter-spacing: 0.1em; + text-transform: uppercase; + font-size: 1.2rem; + transition: background-color 0.2s ease, border-color 0.2s ease; +} + +.button:hover, +.button--primary:hover { + background-color: var(--tt-gold-light); + border-color: var(--tt-gold-light); + color: var(--tt-navy); +} + +.button--secondary { + border-color: var(--tt-gold); + color: var(--tt-gold); + background-color: transparent; + transition: background-color 0.2s ease; +} + +.button--secondary:hover { + background-color: rgba(200, 169, 110, 0.12); + color: var(--tt-gold-light); +} + +/* ——— Links ——————————————————————————————————————————————— */ +a { + color: var(--tt-gold); +} + +a:hover { + color: var(--tt-gold-light); +} + +/* ——— Header / Navigation ————————————————————————————————— */ +.header, +.header-wrapper { + background-color: var(--tt-navy); + border-bottom: 1px solid var(--tt-gold-line); +} + +.header__heading-link, +.header__menu-item { + color: var(--tt-offwhite); +} + +.header__menu-item:hover, +.header__menu-item:focus { + color: var(--tt-gold); +} + +/* ——— Hero Banner ————————————————————————————————————————— */ +/* + Navy base with repeating gold geometric diamond grid. + The SVG tile (80×80px) contains: + - A diamond outline (stroke gold @ 12% opacity) + - Subtle gold dots at diamond center and tile corners (15% opacity) + A soft radial gradient adds depth at the viewport center. + The background sits behind .banner__media — when a store owner + adds an image via the editor, it covers the pattern naturally. +*/ +.banner { + background-color: var(--tt-navy); + background-image: + radial-gradient( + ellipse 80% 60% at 50% 50%, + rgba(37, 37, 69, 0.55) 0%, + rgba(26, 26, 46, 0) 70% + ), + url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80'%3E%3Cpath d='M40 5 L75 40 L40 75 L5 40 Z' fill='none' stroke='%23C8A96E' stroke-opacity='0.12' stroke-width='1'/%3E%3Ccircle cx='40' cy='40' r='2' fill='%23C8A96E' fill-opacity='0.14'/%3E%3Ccircle cx='0' cy='0' r='2' fill='%23C8A96E' fill-opacity='0.14'/%3E%3Ccircle cx='80' cy='0' r='2' fill='%23C8A96E' fill-opacity='0.14'/%3E%3Ccircle cx='0' cy='80' r='2' fill='%23C8A96E' fill-opacity='0.14'/%3E%3Ccircle cx='80' cy='80' r='2' fill='%23C8A96E' fill-opacity='0.14'/%3E%3C/svg%3E"); + background-size: 100% 100%, 80px 80px; + background-repeat: no-repeat, repeat; +} + +/* Gold rule below hero */ +.banner { + box-shadow: 0 3px 0 0 rgba(200, 169, 110, 0.25); +} + +/* Text content box on the hero — subtle glass effect */ +.banner__box { + background-color: rgba(26, 26, 46, 0.72); + border: 1px solid var(--tt-gold-line); + backdrop-filter: blur(4px); + -webkit-backdrop-filter: blur(4px); +} + +/* On desktop transparent variant, remove the box background */ +@media screen and (min-width: 750px) { + .banner--desktop-transparent .banner__box { + background-color: transparent; + border: none; + backdrop-filter: none; + -webkit-backdrop-filter: none; + } +} + +/* Gold decorative line above heading inside banner */ +.banner__box .banner__heading::before { + content: ''; + display: block; + width: 3.2rem; + height: 2px; + background-color: var(--tt-gold); + margin: 0 auto 1.2rem; + opacity: 0.85; +} + +.banner--content-align-left .banner__box .banner__heading::before, +.banner--content-align-mobile-left .banner__box .banner__heading::before { + margin-left: 0; +} + +.banner--content-align-right .banner__box .banner__heading::before, +.banner--content-align-mobile-right .banner__box .banner__heading::before { + margin-right: 0; + margin-left: auto; +} + +/* ——— Cards ——————————————————————————————————————————————— */ +.card-wrapper .card, +.card-wrapper.card { + background-color: var(--tt-navy-mid); + border-color: var(--tt-gold-line); + transition: border-color 0.2s ease, transform 0.2s ease; +} + +.card-wrapper .card:hover, +.card-wrapper.card:hover { + border-color: rgba(200, 169, 110, 0.45); +} + +.card__heading a { + color: var(--tt-offwhite); +} + +.card__heading a:hover { + color: var(--tt-gold); +} + +/* Price */ +.price__regular, +.price__sale { + color: var(--tt-offwhite); +} + +.price__sale { + color: var(--tt-gold); +} + +/* ——— Collection Banner / Hero ———————————————————————————— */ +.collection-hero { + background-color: var(--tt-navy); + border-bottom: 1px solid var(--tt-gold-line); +} + +/* ——— Forms & Inputs ————————————————————————————————————— */ +.field__input, +.select__select, +.customer .field__input { + background-color: var(--tt-navy-mid); + border-color: rgba(200, 169, 110, 0.3); + color: var(--tt-offwhite); +} + +.field__input:focus, +.select__select:focus { + border-color: var(--tt-gold); + box-shadow: 0 0 0 1px var(--tt-gold); + outline: none; +} + +.field__label, +.select__label { + color: var(--tt-offwhite-dim); + background-color: transparent; +} + +/* ——— Footer ——————————————————————————————————————————————— */ +.footer { + background-color: var(--tt-navy-dark); + border-top: 1px solid var(--tt-gold-line); + color: var(--tt-offwhite); +} + +.footer__heading { + color: var(--tt-gold); + font-family: var(--font-heading-family); + letter-spacing: 0.05em; + text-transform: uppercase; + font-size: 1.2rem; +} + +.footer a { + color: var(--tt-offwhite-dim); +} + +.footer a:hover { + color: var(--tt-gold); +} + +/* ——— Cart Drawer / Notification ————————————————————————— */ +.cart-notification, +.cart-drawer { + background-color: var(--tt-navy-mid); + border-color: var(--tt-gold-line); +} + +.cart-notification__heading, +.cart-drawer__heading { + color: var(--tt-offwhite); +} + +/* ——— Predictive Search ——————————————————————————————————— */ +.predictive-search { + background-color: var(--tt-navy-mid); + border-color: var(--tt-gold-line); +} + +.predictive-search__item:hover, +.predictive-search__item:focus { + background-color: rgba(200, 169, 110, 0.08); +} + +/* ——— Menu Drawer (mobile nav) ———————————————————————————— */ +.menu-drawer, +.menu-drawer__navigation { + background-color: var(--tt-navy); +} + +.menu-drawer__menu-item, +.menu-drawer__close-button { + color: var(--tt-offwhite); +} + +.menu-drawer__menu-item:hover { + color: var(--tt-gold); +} + +/* ——— Breadcrumbs ————————————————————————————————————————— */ +.breadcrumb, +.breadcrumb__item { + color: var(--tt-offwhite-dim); +} + +.breadcrumb__item a:hover { + color: var(--tt-gold); +} + +/* ——— Pagination ————————————————————————————————————————— */ +.pagination__item--current { + background-color: var(--tt-gold); + color: var(--tt-navy); + border-color: var(--tt-gold); +} + +.pagination__item:hover:not(.pagination__item--current) { + border-color: var(--tt-gold); + color: var(--tt-gold); +} + +/* ——— Product Page ——————————————————————————————————————— */ +.product__title { + color: var(--tt-offwhite); +} + +.product-form__submit { + background-color: var(--tt-gold); + color: var(--tt-navy); + border-color: var(--tt-gold); +} + +.product-form__submit:hover { + background-color: var(--tt-gold-light); + border-color: var(--tt-gold-light); +} + +/* Variant pills */ +.swatch-input__button--active, +.swatch-input__button:checked + label { + border-color: var(--tt-gold); + color: var(--tt-gold); +} + +/* ——— Responsive adjustments ————————————————————————————— */ +@media screen and (max-width: 749px) { + /* Tighter decorative line on mobile banners */ + .banner__box .banner__heading::before { + width: 2.4rem; + margin-bottom: 0.8rem; + } +} diff --git a/config/settings_data.json b/config/settings_data.json index 0f7a06db992..3d9d40e3b1c 100644 --- a/config/settings_data.json +++ b/config/settings_data.json @@ -6,63 +6,63 @@ "color_schemes": { "scheme-1": { "settings": { - "background": "#FFFFFF", + "background": "#1A1A2E", "background_gradient": "", - "text": "#121212", - "button": "#121212", - "button_label": "#FFFFFF", - "secondary_button_label": "#121212", - "shadow": "#121212" + "text": "#F2F0EB", + "button": "#C8A96E", + "button_label": "#1A1A2E", + "secondary_button_label": "#C8A96E", + "shadow": "#0A0A12" } }, "scheme-2": { "settings": { - "background": "#F3F3F3", + "background": "#252545", "background_gradient": "", - "text": "#121212", - "button": "#121212", - "button_label": "#F3F3F3", - "secondary_button_label": "#121212", - "shadow": "#121212" + "text": "#F2F0EB", + "button": "#C8A96E", + "button_label": "#1A1A2E", + "secondary_button_label": "#C8A96E", + "shadow": "#0A0A12" } }, "scheme-3": { "settings": { - "background": "#242833", + "background": "#1E1E35", "background_gradient": "", - "text": "#FFFFFF", - "button": "#FFFFFF", - "button_label": "#000000", - "secondary_button_label": "#FFFFFF", - "shadow": "#121212" + "text": "#F2F0EB", + "button": "#C8A96E", + "button_label": "#1A1A2E", + "secondary_button_label": "#C8A96E", + "shadow": "#0A0A12" } }, "scheme-4": { "settings": { - "background": "#121212", + "background": "#0F0F1E", "background_gradient": "", - "text": "#FFFFFF", - "button": "#FFFFFF", - "button_label": "#121212", - "secondary_button_label": "#FFFFFF", - "shadow": "#121212" + "text": "#F2F0EB", + "button": "#C8A96E", + "button_label": "#0F0F1E", + "secondary_button_label": "#C8A96E", + "shadow": "#000000" } }, "scheme-5": { "settings": { - "background": "#334FB4", + "background": "#C8A96E", "background_gradient": "", - "text": "#FFFFFF", - "button": "#FFFFFF", - "button_label": "#334FB4", - "secondary_button_label": "#FFFFFF", - "shadow": "#121212" + "text": "#1A1A2E", + "button": "#1A1A2E", + "button_label": "#C8A96E", + "secondary_button_label": "#1A1A2E", + "shadow": "#0A0A12" } } }, - "type_header_font": "assistant_n4", - "heading_scale": 100, - "type_body_font": "assistant_n4", + "type_header_font": "playfair_display_n4", + "heading_scale": 110, + "type_body_font": "dm_sans_n4", "body_scale": 100, "page_width": 1200, "spacing_sections": 0, @@ -93,8 +93,8 @@ "card_image_padding": 0, "card_text_alignment": "left", "card_color_scheme": "scheme-2", - "card_border_thickness": 0, - "card_border_opacity": 10, + "card_border_thickness": 1, + "card_border_opacity": 20, "card_corner_radius": 0, "card_shadow_opacity": 0, "card_shadow_horizontal_offset": 0, @@ -104,8 +104,8 @@ "collection_card_image_padding": 0, "collection_card_text_alignment": "left", "collection_card_color_scheme": "scheme-2", - "collection_card_border_thickness": 0, - "collection_card_border_opacity": 10, + "collection_card_border_thickness": 1, + "collection_card_border_opacity": 20, "collection_card_corner_radius": 0, "collection_card_shadow_opacity": 0, "collection_card_shadow_horizontal_offset": 0, @@ -115,8 +115,8 @@ "blog_card_image_padding": 0, "blog_card_text_alignment": "left", "blog_card_color_scheme": "scheme-2", - "blog_card_border_thickness": 0, - "blog_card_border_opacity": 10, + "blog_card_border_thickness": 1, + "blog_card_border_opacity": 20, "blog_card_corner_radius": 0, "blog_card_shadow_opacity": 0, "blog_card_shadow_horizontal_offset": 0, diff --git a/config/settings_schema.json b/config/settings_schema.json index bcaab5b5d2a..30174cd22b1 100644 --- a/config/settings_schema.json +++ b/config/settings_schema.json @@ -44,7 +44,7 @@ "type": "color", "id": "background", "label": "t:settings_schema.colors.settings.background.label", - "default": "#FFFFFF" + "default": "#1A1A2E" }, { "type": "color_background", @@ -56,31 +56,31 @@ "type": "color", "id": "text", "label": "t:settings_schema.colors.settings.text.label", - "default": "#121212" + "default": "#F2F0EB" }, { "type": "color", "id": "button", "label": "t:settings_schema.colors.settings.button_background.label", - "default": "#121212" + "default": "#C8A96E" }, { "type": "color", "id": "button_label", "label": "t:settings_schema.colors.settings.button_label.label", - "default": "#FFFFFF" + "default": "#1A1A2E" }, { "type": "color", "id": "secondary_button_label", "label": "t:settings_schema.colors.settings.secondary_button_label.label", - "default": "#121212" + "default": "#C8A96E" }, { "type": "color", "id": "shadow", "label": "t:settings_schema.colors.settings.shadow.label", - "default": "#121212" + "default": "#0A0A12" } ], "role": { @@ -111,7 +111,7 @@ { "type": "font_picker", "id": "type_header_font", - "default": "assistant_n4", + "default": "playfair_display_n4", "label": "t:settings_schema.typography.settings.type_header_font.label" }, { @@ -131,7 +131,7 @@ { "type": "font_picker", "id": "type_body_font", - "default": "assistant_n4", + "default": "dm_sans_n4", "label": "t:settings_schema.typography.settings.type_body_font.label" }, { diff --git a/layout/theme.liquid b/layout/theme.liquid index 70db635823b..638f0555bf4 100644 --- a/layout/theme.liquid +++ b/layout/theme.liquid @@ -15,6 +15,10 @@ {%- endunless -%} + + + +
Share contact information, store details, and brand content with your customers.<\/p>" - } - } - }, - "block_order": [ - "footer-0", - "footer-1", - "footer-2" - ], + "blocks": {}, + "block_order": [], "settings": { "color_scheme": "scheme-1", - "newsletter_enable": true, - "newsletter_heading": "Subscribe to our emails", - "show_social": true, + "newsletter_enable": false, + "show_social": false, "enable_country_selector": false, "enable_language_selector": false, - "payment_enable": true, + "payment_enable": false, "show_policy": false, - "margin_top": 48, - "padding_top": 36, - "padding_bottom": 36 + "margin_top": 0, + "padding_top": 20, + "padding_bottom": 20 } } }, diff --git a/sections/header-group.json b/sections/header-group.json index a9ac3a08a0d..f07015391ff 100644 --- a/sections/header-group.json +++ b/sections/header-group.json @@ -2,43 +2,25 @@ "name": "t:sections.header.name", "type": "header", "sections": { - "announcement-bar": { - "type": "announcement-bar", - "blocks": { - "announcement-bar-0": { - "type": "announcement", - "settings": { - "text": "Welcome to our store", - "text_alignment": "center", - "color_scheme": "scheme-1", - "link": "" - } - } - }, - "block_order": [ - "announcement-bar-0" - ] - }, "header": { "type": "header", "settings": { "color_scheme": "scheme-1", "logo_position": "middle-left", - "menu": "main-menu", + "menu": "", "menu_type_desktop": "dropdown", - "sticky_header_type": "on-scroll-up", - "show_line_separator": true, - "enable_country_selector": true, - "enable_language_selector": true, + "sticky_header_type": "none", + "show_line_separator": false, + "enable_country_selector": false, + "enable_language_selector": false, "mobile_logo_position": "center", "margin_bottom": 0, - "padding_top": 20, - "padding_bottom": 20 + "padding_top": 16, + "padding_bottom": 16 } } }, "order": [ - "announcement-bar", "header" ] } diff --git a/sections/tt-event-header.liquid b/sections/tt-event-header.liquid new file mode 100644 index 00000000000..47d54179527 --- /dev/null +++ b/sections/tt-event-header.liquid @@ -0,0 +1,162 @@ +{% comment %} + Trainers Travel — Event collection header + File: sections/tt-event-header.liquid + + Used in templates/collection.event.json. + Shows the collection title and description prominently at the top of an + event collection page. All event-specific details (hotel name, venue + proximity, dates, price comparison notes) live in the collection + description written in Shopify admin — no theme edits required. + + Also reads product tags to derive a status badge and starting price, + and surfaces an "all-in pricing" note inline. +{% endcomment %} + +{{ 'section-tt-event-header.css' | asset_url | stylesheet_tag }} + +{%- assign col = collection -%} + +{%- comment -%}Derive status and pricing from collection products{%- endcomment -%} +{%- assign eh_min_price = nil -%} +{%- assign eh_all_sold_out = true -%} +{%- assign eh_status_tag = '' -%} +{%- assign eh_date_str = '' -%} +{%- assign eh_city_str = '' -%} + +{%- for product in col.products limit: 20 -%} + {%- if product.available -%} + {%- assign eh_all_sold_out = false -%} + {%- endif -%} + {%- if eh_min_price == nil or product.price_min < eh_min_price -%} + {%- assign eh_min_price = product.price_min -%} + {%- endif -%} + {%- for tag in product.tags -%} + {%- if tag == 'status:selling-fast' and eh_status_tag == '' -%} + {%- assign eh_status_tag = 'selling-fast' -%} + {%- elsif tag == 'status:coming-soon' and eh_status_tag == '' -%} + {%- assign eh_status_tag = 'coming-soon' -%} + {%- endif -%} + {%- if tag contains 'event-date:' and eh_date_str == '' -%} + {%- assign eh_date_str = tag | remove: 'event-date:' -%} + {%- endif -%} + {%- if tag contains 'city:' and eh_city_str == '' -%} + {%- assign eh_city_str = tag | remove: 'city:' | capitalize -%} + {%- endif -%} + {%- endfor -%} +{%- endfor -%} + +{%- if col.products_count == 0 -%} + {%- assign eh_status_tag = 'coming-soon' -%} +{%- elsif eh_all_sold_out -%} + {%- assign eh_status_tag = 'sold-out' -%} +{%- elsif eh_status_tag == '' -%} + {%- assign eh_status_tag = 'available' -%} +{%- endif -%} + +{%- comment -%}When the collection is empty, hide the Dawn product grid that follows{%- endcomment -%} +{%- if col.products_count == 0 -%} + +{%- endif -%} + +
What’s confirmed
+What’s coming
+We’ll announce when rooms open. Follow us or reach out directly.
+ + contact@trainerstravel.com + ++ Group hotel blocks for the competitive Pokémon TCG community. + We negotiate the rate and include every tax and fee upfront — the price you see is what you pay. +
+ +Events coming soon — check back shortly or follow us for updates.
+ {%- if section.settings.contact_email != blank -%} ++ Want early access? + {{ section.settings.contact_email }} +
+ {%- endif -%} +Trainers Travel
++ These are the players we support. Follow them, root for them, watch their content. +
+{{ block.settings.name }}
+ + {%- if block.settings.handle != blank -%} +@{{ block.settings.handle }}
+ {%- endif -%} + + {%- if block.settings.bio != blank -%} +{{ block.settings.bio }}
+ {%- endif -%} + + {%- if block.settings.link != blank -%} + + {{ block.settings.link_label | default: 'Follow' }} + + {%- endif -%} +Players coming soon.
+{{ col.title }}
+ {%- if ec_city_str != '' or ec_date_str != '' -%} + + {%- endif -%} + {%- if col.description != blank -%} +{{ col.description | strip_html | truncate: 120 }}
+ {%- endif -%} +Share information about your brand with your customers. Describe a product, make announcements, or welcome customers to your store.<\/p>" - } - } - }, - "block_order": [ - "heading", - "text" - ], - "settings": { - "color_scheme": "scheme-1", - "full_width": true, - "padding_top": 40, - "padding_bottom": 0 - } - }, - "featured_collection": { - "type": "featured-collection", - "settings": { - "title": "Featured products", - "heading_size": "h2", - "collection": "all", - "products_to_show": 8, - "columns_desktop": 4, - "color_scheme": "scheme-1", - "show_view_all": false, - "swipe_on_mobile": false, - "image_ratio": "adapt", - "show_secondary_image": true, - "show_vendor": false, - "show_rating": false, - "columns_mobile": "2", - "padding_top": 28, - "padding_bottom": 36 - } - }, - "collage": { - "type": "collage", - "blocks": { - "collection-0": { - "type": "collection", - "settings": { - "collection": "" - } - }, - "product": { - "type": "product", - "settings": { - "product": "", - "second_image": false - } - }, - "collection-1": { - "type": "collection", - "settings": { - "collection": "" - } - } - }, - "block_order": [ - "collection-0", - "product", - "collection-1" - ], - "settings": { - "heading": "Multimedia collage", - "heading_size": "h2", - "desktop_layout": "left", - "mobile_layout": "collage", - "color_scheme": "scheme-1", - "padding_top": 36, - "padding_bottom": 36 - } - }, - "video": { - "type": "video", - "settings": { - "heading": "", - "video_url": "https://www.youtube.com/watch?v=_9VUPq3SxOc", - "heading_size": "h1", - "description": "", - "full_width": false, - "color_scheme": "scheme-1", - "padding_top": 36, - "padding_bottom": 36 - } - }, - "multicolumn": { - "type": "multicolumn", - "blocks": { - "column1": { - "type": "column", - "settings": { - "title": "Column", - "text": "
Pair text with an image to focus on your chosen product, collection, or blog post. Add details on availability, style, or even provide a review.<\/p>", - "link_label": "", - "link": "" - } - }, - "column2": { - "type": "column", - "settings": { - "title": "Column", - "text": "
Pair text with an image to focus on your chosen product, collection, or blog post. Add details on availability, style, or even provide a review.<\/p>", - "link_label": "", - "link": "" - } - }, - "column3": { - "type": "column", - "settings": { - "title": "Column", - "text": "
Pair text with an image to focus on your chosen product, collection, or blog post. Add details on availability, style, or even provide a review.<\/p>", - "link_label": "", - "link": "" - } - } - }, - "block_order": [ - "column1", - "column2", - "column3" - ], - "settings": { - "title": "", - "heading_size": "h1", - "image_width": "third", - "image_ratio": "adapt", - "columns_desktop": 3, - "column_alignment": "center", - "background_style": "none", - "button_label": "", - "button_link": "", - "swipe_on_mobile": false, - "color_scheme": "scheme-1", - "columns_mobile": "1", - "padding_top": 36, - "padding_bottom": 36 + "events_menu": "event-collections", + "events_cta_text": "View Events", + "events_cta_link": "", + "contact_email": "contact@trainerstravel.com", + "social_x": "", + "social_instagram": "", + "social_discord": "" } } }, - "order": [ - "image_banner", - "rich_text", - "featured_collection", - "collage", - "video", - "multicolumn" - ] + "order": ["tt_home"] } diff --git a/templates/page.sponsored-players.json b/templates/page.sponsored-players.json new file mode 100644 index 00000000000..1ff6ca43504 --- /dev/null +++ b/templates/page.sponsored-players.json @@ -0,0 +1,13 @@ +{ + "sections": { + "tt_sponsored": { + "type": "tt-sponsored", + "blocks": {}, + "block_order": [], + "settings": { + "contact_email": "contact@trainerstravel.com" + } + } + }, + "order": ["tt_sponsored"] +}