/** Shopify CDN: Minification failed

Line 43:0 Unexpected "<"
Line 48:12 Unexpected "{"
Line 48:24 Expected ":"
Line 48:27 Unexpected "{"
Line 48:28 Expected identifier but found "%"
Line 48:50 Cannot use type selector "ndash" directly after nesting selector "&"
Line 48:58 Unexpected "{"
Line 48:72 Expected ":"
Line 48:88 Unexpected "{"
Line 48:89 Expected identifier but found "%"
... and 238 more hidden warnings

**/
/*
CUSTOM SHOPIFY THEME STARTER
Theme: Sexton Campaign Store

Create a Shopify theme folder with this structure:

layout/theme.liquid
sections/header.liquid
sections/hero-campaign.liquid
sections/featured-categories.liquid
sections/campaign-values.liquid
sections/featured-products.liquid
sections/footer.liquid
templates/index.json
templates/product.json
sections/main-product.liquid
assets/theme.css
config/settings_schema.json

Paste each file below into the matching Shopify theme file.
*/


/* =====================================================
   FILE: layout/theme.liquid
===================================================== */

<!doctype html>
<html lang="{{ request.locale.iso_code }}">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>{{ page_title }}{% if current_tags %} &ndash; {{ current_tags | join: ', ' }}{% endif %}{% if current_page != 1 %} &ndash; Page {{ current_page }}{% endif %}{% unless page_title contains shop.name %} &ndash; {{ shop.name }}{% endunless %}</title>
    {{ content_for_header }}
    {{ 'theme.css' | asset_url | stylesheet_tag }}
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@600;700;800;900&family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
  </head>

  <body>
    {% sections 'header-group' %}
    <main id="MainContent" role="main">
      {{ content_for_layout }}
    </main>
    {% sections 'footer-group' %}
  </body>
</html>


/* =====================================================
   FILE: sections/header.liquid
===================================================== */

<header class="site-header">
  <div class="page-width header-inner">
    <a href="{{ routes.root_url }}" class="brand-link">
      {% if settings.logo != blank %}
        <img src="{{ settings.logo | image_url: width: 260 }}" alt="{{ shop.name }}" class="site-logo">
      {% else %}
        <span class="brand-text">{{ shop.name }}</span>
      {% endif %}
    </a>

    <nav class="main-nav" aria-label="Main navigation">
      {% for link in linklists.main-menu.links %}
        <a href="{{ link.url }}">{{ link.title }}</a>
      {% endfor %}
    </nav>

    <a href="{{ routes.cart_url }}" class="cart-link">Cart / {{ cart.item_count }}</a>
  </div>
</header>

{% schema %}
{
  "name": "Header",
  "settings": []
}
{% endschema %}


/* =====================================================
   FILE: sections/hero-campaign.liquid
===================================================== */

<section class="hero-campaign{% if section.settings.hero_image != blank %} hero-with-image{% endif %}">
  {% if section.settings.hero_image != blank %}
    <div class="hero-bg" style="background-image:url('{{ section.settings.hero_image | image_url: width: 2200 }}')"></div>
  {% endif %}

  <div class="hero-overlay"></div>

  <div class="page-width hero-content">
    <p class="eyebrow">Official Campaign Store</p>
    <h1>{{ section.settings.heading }}</h1>
    <p class="hero-subtitle">{{ section.settings.subheading }}</p>

    <div class="hero-buttons">
      <a href="{{ section.settings.primary_link }}" class="btn btn-red">{{ section.settings.primary_label }}</a>
      <a href="{{ section.settings.secondary_link }}" class="btn btn-outline">{{ section.settings.secondary_label }}</a>
    </div>
  </div>
</section>

{% schema %}
{
  "name": "Campaign Hero",
  "settings": [
    { "type": "image_picker", "id": "hero_image", "label": "Hero background image" },
    { "type": "text", "id": "heading", "label": "Heading", "default": "Experience. Integrity. Results." },
    { "type": "textarea", "id": "subheading", "label": "Subheading", "default": "Shop official Daniel Sexton campaign merchandise and proudly support professional leadership for Lee County." },
    { "type": "text", "id": "primary_label", "label": "Primary button label", "default": "Shop Merchandise" },
    { "type": "url", "id": "primary_link", "label": "Primary button link" },
    { "type": "text", "id": "secondary_label", "label": "Secondary button label", "default": "Donate" },
    { "type": "url", "id": "secondary_link", "label": "Secondary button link" }
  ],
  "presets": [
    { "name": "Campaign Hero" }
  ]
}
{% endschema %}


/* =====================================================
   FILE: sections/featured-categories.liquid
===================================================== */

<section class="section categories-section">
  <div class="page-width">
    <div class="section-heading center">
      <p class="eyebrow red">Shop the Campaign</p>
      <h2>{{ section.settings.heading }}</h2>
    </div>

    <div class="category-grid">
      {% for block in section.blocks %}
        <a class="category-card" href="{{ block.settings.link }}" {{ block.shopify_attributes }}>
          {% if block.settings.image != blank %}
            <img src="{{ block.settings.image | image_url: width: 700 }}" alt="{{ block.settings.title }}">
          {% endif %}
          <div class="category-card-content">
            <h3>{{ block.settings.title }}</h3>
            <p>{{ block.settings.text }}</p>
          </div>
        </a>
      {% endfor %}
    </div>
  </div>
</section>

{% schema %}
{
  "name": "Featured Categories",
  "settings": [
    { "type": "text", "id": "heading", "label": "Heading", "default": "Official Campaign Merchandise" }
  ],
  "blocks": [
    {
      "type": "category",
      "name": "Category",
      "settings": [
        { "type": "image_picker", "id": "image", "label": "Image" },
        { "type": "text", "id": "title", "label": "Title", "default": "Campaign Apparel" },
        { "type": "textarea", "id": "text", "label": "Text", "default": "Premium shirts, hats, and supporter gear." },
        { "type": "url", "id": "link", "label": "Link" }
      ]
    }
  ],
  "presets": [
    {
      "name": "Featured Categories",
      "blocks": [
        { "type": "category" },
        { "type": "category" },
        { "type": "category" }
      ]
    }
  ]
}
{% endschema %}


/* =====================================================
   FILE: sections/campaign-values.liquid
===================================================== */

<section class="values-section">
  <div class="page-width values-inner">
    <div class="value-card">
      <span>01</span>
      <h3>Integrity</h3>
      <p>Professional leadership with accountability and trust.</p>
    </div>
    <div class="value-card">
      <span>02</span>
      <h3>Experience</h3>
      <p>Public-safety service rooted in dedication to Lee County.</p>
    </div>
    <div class="value-card">
      <span>03</span>
      <h3>Results</h3>
      <p>No promises. No buzzwords. Less talk. More results.</p>
    </div>
  </div>
</section>

{% schema %}
{
  "name": "Campaign Values",
  "settings": [],
  "presets": [
    { "name": "Campaign Values" }
  ]
}
{% endschema %}


/* =====================================================
   FILE: sections/featured-products.liquid
===================================================== */

<section class="section products-section">
  <div class="page-width">
    <div class="section-heading center">
      <p class="eyebrow red">Limited Run</p>
      <h2>{{ section.settings.heading }}</h2>
    </div>

    {% assign collection = collections[section.settings.collection] %}

    {% if collection.products.size > 0 %}
      <div class="product-grid">
        {% for product in collection.products limit: section.settings.product_limit %}
          <a href="{{ product.url }}" class="product-card">
            {% if product.featured_image %}
              <img src="{{ product.featured_image | image_url: width: 700 }}" alt="{{ product.title }}">
            {% endif %}
            <div class="product-info">
              <h3>{{ product.title }}</h3>
              <p>{{ product.price | money }}</p>
            </div>
          </a>
        {% endfor %}
      </div>
    {% else %}
      <p class="center muted">Choose a collection in this section’s settings.</p>
    {% endif %}
  </div>
</section>

{% schema %}
{
  "name": "Featured Products",
  "settings": [
    { "type": "text", "id": "heading", "label": "Heading", "default": "Featured Campaign Gear" },
    { "type": "collection", "id": "collection", "label": "Collection" },
    { "type": "range", "id": "product_limit", "label": "Products to show", "min": 2, "max": 12, "step": 1, "default": 4 }
  ],
  "presets": [
    { "name": "Featured Products" }
  ]
}
{% endschema %}


/* =====================================================
   FILE: sections/footer.liquid
===================================================== */

<footer class="site-footer">
  <div class="page-width footer-grid">
    <div>
      {% if settings.logo != blank %}
        <img src="{{ settings.logo | image_url: width: 220 }}" alt="{{ shop.name }}" class="footer-logo">
      {% else %}
        <h3>{{ shop.name }}</h3>
      {% endif %}
      <p class="footer-text">Official Daniel Sexton campaign merchandise store.</p>
    </div>

    <div>
      <h4>Shop</h4>
      {% for link in linklists.footer.links %}
        <a href="{{ link.url }}">{{ link.title }}</a>
      {% endfor %}
    </div>

    <div>
      <h4>Campaign</h4>
      <p>Serving Lee County with Purpose, Vision, Professionalism, Integrity, and Compassion.</p>
      <p class="disclaimer">{{ section.settings.disclaimer }}</p>
    </div>
  </div>
</footer>

{% schema %}
{
  "name": "Footer",
  "settings": [
    { "type": "textarea", "id": "disclaimer", "label": "Campaign disclaimer", "default": "Paid for by Sexton for Coroner." }
  ]
}
{% endschema %}


/* =====================================================
   FILE: templates/index.json
===================================================== */

{
  "sections": {
    "hero": {
      "type": "hero-campaign"
    },
    "categories": {
      "type": "featured-categories"
    },
    "values": {
      "type": "campaign-values"
    },
    "products": {
      "type": "featured-products"
    }
  },
  "order": [
    "hero",
    "categories",
    "values",
    "products"
  ]
}


/* =====================================================
   FILE: templates/product.json
===================================================== */

{
  "sections": {
    "main": {
      "type": "main-product"
    }
  },
  "order": [
    "main"
  ]
}


/* =====================================================
   FILE: sections/main-product.liquid
===================================================== */

<section class="section product-page">
  <div class="page-width product-layout">
    <div class="product-media">
      {% if product.featured_image %}
        <img src="{{ product.featured_image | image_url: width: 1000 }}" alt="{{ product.title }}">
      {% endif %}
    </div>

    <div class="product-details">
      <p class="eyebrow red">Official Campaign Gear</p>
      <h1>{{ product.title }}</h1>
      <p class="product-price">{{ product.price | money }}</p>
      <div class="product-description">{{ product.description }}</div>

      {% form 'product', product %}
        {% if product.variants.size > 1 %}
          <label for="variant-select">Choose option</label>
          <select id="variant-select" name="id">
            {% for variant in product.variants %}
              <option value="{{ variant.id }}" {% unless variant.available %}disabled{% endunless %}>
                {{ variant.title }}{% unless variant.available %} - Sold out{% endunless %}
              </option>
            {% endfor %}
          </select>
        {% else %}
          <input type="hidden" name="id" value="{{ product.selected_or_first_available_variant.id }}">
        {% endif %}

        <button type="submit" class="btn btn-red full" {% unless product.available %}disabled{% endunless %}>
          {% if product.available %}Add to Cart{% else %}Sold Out{% endif %}
        </button>
      {% endform %}

      <div class="trust-box">
        <strong>Secure checkout</strong>
        <p>Fast, safe checkout powered by Shopify.</p>
      </div>
    </div>
  </div>
</section>

{% schema %}
{
  "name": "Main Product",
  "settings": []
}
{% endschema %}


/* =====================================================
   FILE: assets/theme.css
===================================================== */

:root {
  --navy: #071a33;
  --navy-2: #0b2447;
  --red: #b51f2a;
  --red-dark: #8f1720;
  --white: #ffffff;
  --gray: #eef1f5;
  --text: #182033;
  --muted: #677184;
  --gold: #c8a95b;
  --max: 1180px;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: Inter, Arial, sans-serif;
  color: var(--text);
  background: var(--white);
}

img { max-width: 100%; display: block; }

a { color: inherit; text-decoration: none; }

.page-width {
  width: min(var(--max), calc(100% - 32px));
  margin: 0 auto;
}

.site-header {
  background: rgba(7, 26, 51, .98);
  color: var(--white);
  position: sticky;
  top: 0;
  z-index: 30;
  border-bottom: 3px solid var(--red);
}

.header-inner {
  min-height: 78px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}

.site-logo { max-height: 58px; width: auto; }

.brand-text {
  font-family: Montserrat, sans-serif;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .08em;
}

.main-nav {
  display: flex;
  gap: 24px;
  align-items: center;
  font-weight: 700;
  text-transform: uppercase;
  font-size: 13px;
  letter-spacing: .06em;
}

.main-nav a:hover,
.cart-link:hover { color: var(--gold); }

.cart-link {
  font-weight: 800;
  text-transform: uppercase;
  font-size: 13px;
}

.hero-campaign {
  min-height: 720px;
  position: relative;
  display: flex;
  align-items: center;
  color: var(--white);
  background:
    linear-gradient(135deg, rgba(7,26,51,.98), rgba(11,36,71,.92)),
    repeating-linear-gradient(45deg, rgba(255,255,255,.04) 0 2px, transparent 2px 12px);
  overflow: hidden;
}

.hero-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  opacity: .42;
}

.hero-overlay {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 75% 20%, rgba(181,31,42,.32), transparent 28%),
    linear-gradient(90deg, rgba(7,26,51,.96), rgba(7,26,51,.6), rgba(7,26,51,.96));
}

.hero-content {
  position: relative;
  z-index: 2;
  max-width: 850px;
  margin-left: max(16px, calc((100vw - var(--max)) / 2));
}

.eyebrow {
  margin: 0 0 14px;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .18em;
  color: var(--gold);
  font-size: 13px;
}

.eyebrow.red { color: var(--red); }

.hero-content h1,
.section-heading h2,
.product-details h1 {
  font-family: Montserrat, sans-serif;
  font-weight: 900;
  text-transform: uppercase;
  line-height: .95;
  margin: 0;
}

.hero-content h1 {
  font-size: clamp(48px, 8vw, 104px);
  max-width: 900px;
}

.hero-subtitle {
  max-width: 650px;
  margin: 24px 0 34px;
  font-size: clamp(18px, 2vw, 24px);
  line-height: 1.5;
  color: rgba(255,255,255,.9);
}

.hero-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
}

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 52px;
  padding: 0 26px;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .08em;
  border: 2px solid transparent;
  transition: .2s ease;
}

.btn-red {
  background: var(--red);
  color: var(--white);
}

.btn-red:hover { background: var(--red-dark); transform: translateY(-2px); }

.btn-outline {
  border-color: var(--white);
  color: var(--white);
}

.btn-outline:hover { background: var(--white); color: var(--navy); }

.btn.full { width: 100%; }

.section {
  padding: 86px 0;
}

.center { text-align: center; }

.section-heading h2 {
  font-size: clamp(34px, 5vw, 62px);
  color: var(--navy);
}

.category-grid,
.product-grid,
.values-inner,
.footer-grid,
.product-layout {
  display: grid;
  gap: 24px;
}

.category-grid {
  grid-template-columns: repeat(3, 1fr);
  margin-top: 42px;
}

.category-card {
  position: relative;
  overflow: hidden;
  min-height: 340px;
  background: var(--navy);
  box-shadow: 0 18px 40px rgba(7,26,51,.16);
}

.category-card img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  position: absolute;
  inset: 0;
  opacity: .65;
  transition: .25s ease;
}

.category-card:hover img { transform: scale(1.05); opacity: .8; }

.category-card-content {
  position: absolute;
  inset: auto 0 0;
  padding: 28px;
  color: var(--white);
  background: linear-gradient(transparent, rgba(7,26,51,.95));
}

.category-card h3,
.value-card h3,
.product-card h3 {
  font-family: Montserrat, sans-serif;
  text-transform: uppercase;
  margin: 0 0 8px;
}

.values-section {
  background: var(--navy);
  color: var(--white);
  padding: 70px 0;
  border-top: 6px solid var(--red);
  border-bottom: 6px solid var(--red);
}

.values-inner { grid-template-columns: repeat(3, 1fr); }

.value-card {
  padding: 34px;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.12);
}

.value-card span {
  color: var(--gold);
  font-family: Montserrat, sans-serif;
  font-weight: 900;
}

.value-card p { color: rgba(255,255,255,.78); line-height: 1.6; }

.products-section { background: var(--gray); }

.product-grid { grid-template-columns: repeat(4, 1fr); margin-top: 42px; }

.product-card {
  background: var(--white);
  box-shadow: 0 16px 36px rgba(7,26,51,.12);
  transition: .2s ease;
}

.product-card:hover { transform: translateY(-4px); }

.product-card img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  background: #d8dde6;
}

.product-info { padding: 20px; }
.product-info p { color: var(--red); font-weight: 900; }

.site-footer {
  background: #050f1f;
  color: var(--white);
  padding: 56px 0;
}

.footer-grid { grid-template-columns: 1.3fr .7fr 1fr; }
.footer-logo { max-height: 70px; width: auto; margin-bottom: 16px; }
.footer-text, .site-footer p, .site-footer a { color: rgba(255,255,255,.74); line-height: 1.6; }
.site-footer a { display: block; margin: 7px 0; }
.site-footer h4 { text-transform: uppercase; font-family: Montserrat, sans-serif; }
.disclaimer { font-size: 12px; border-top: 1px solid rgba(255,255,255,.15); padding-top: 14px; }

.product-layout { grid-template-columns: 1fr 1fr; align-items: start; }
.product-media img { width: 100%; background: var(--gray); }
.product-details h1 { font-size: clamp(34px, 5vw, 64px); color: var(--navy); }
.product-price { font-size: 28px; color: var(--red); font-weight: 900; }
.product-description { line-height: 1.7; color: var(--muted); margin: 22px 0; }
.product-details select {
  width: 100%;
  min-height: 52px;
  padding: 0 14px;
  margin: 8px 0 18px;
  border: 1px solid #c8d0da;
}
.trust-box { margin-top: 20px; padding: 18px; background: var(--gray); border-left: 5px solid var(--red); }
.muted { color: var(--muted); }

@media (max-width: 900px) {
  .main-nav { display: none; }
  .hero-campaign { min-height: 620px; }
  .category-grid,
  .product-grid,
  .values-inner,
  .footer-grid,
  .product-layout {
    grid-template-columns: 1fr;
  }
}


/* =====================================================
   FILE: config/settings_schema.json
===================================================== */

[
  {
    "name": "Branding",
    "settings": [
      {
        "type": "image_picker",
        "id": "logo",
        "label": "Campaign logo"
      }
    ]
  }
]


/* =====================================================
   OPTIONAL: sections/header-group.json
   Shopify may create this automatically depending on your theme setup.
===================================================== */

{
  "type": "header",
  "name": "Header group",
  "sections": {
    "header": {
      "type": "header"
    }
  },
  "order": ["header"]
}


/* =====================================================
   OPTIONAL: sections/footer-group.json
===================================================== */

{
  "type": "footer",
  "name": "Footer group",
  "sections": {
    "footer": {
      "type": "footer"
    }
  },
  "order": ["footer"]
}
