/* ==========================================================
   CLOTHINGCO — SHARED STYLESHEET
   Aesthetic: Editorial fashion — charcoal, cream, terracotta
   Fonts: Cormorant Garamond (display) + DM Sans (body)

   HOW TO READ THIS FILE:
   CSS is made up of RULES. Each rule looks like this:

       selector {
         property: value;
       }

   - selector  = WHICH element(s) to style (e.g. h1, .card, #logo)
   - property  = WHAT to change (e.g. color, font-size, margin)
   - value     = HOW to change it (e.g. red, 1.5rem, 20px)

   Comments in CSS use  /* like this * /
   They are ignored by the browser — they are just notes for humans.
========================================================== */


/* ==========================================================
   SECTION 1: CSS VARIABLES (Custom Properties)
   Variables let you store values and reuse them anywhere.
   Define once → use everywhere → change in one place!

   Syntax:  --variable-name: value;
   Usage:   color: var(--variable-name);

   All variables are placed inside :root {}
   :root = the very top of the HTML document (the <html> tag).
   Putting variables here makes them available to the WHOLE page.
========================================================== */
:root {
  --ink:       #1a1a1a;   /* Very dark charcoal — used for main text */
  --cream:     #f9f5f0;   /* Off-white/warm cream — used for page background */
  --white:     #ffffff;   /* Pure white */
  --accent:    #c0623a;   /* Terracotta orange — main brand color */
  --accent-lt: #e8956e;   /* Lighter terracotta — used for hover states */
  --muted:     #7a7068;   /* Medium grey-brown — used for subtle/secondary text */
  --border:    #e4ddd6;   /* Light warm grey — used for dividing lines */
  --dark-bg:   #181510;   /* Very dark brown-black — used for dark sections */
  --nav-bg:    #111111;   /* Near-black — used for the navigation bar */
  --shadow:    0 6px 32px rgba(0,0,0,0.09);
  /*
    --shadow stores a box-shadow value to reuse on cards.
    box-shadow: x-offset y-offset blur-radius color;
    0         = no horizontal shift
    6px       = 6px downward shift (shadow appears below)
    32px      = how blurry/spread the shadow is
    rgba(0,0,0,0.09) = black at 9% opacity (very subtle)
  */
}


/* ==========================================================
   SECTION 2: RESET
   Browsers have DEFAULT styles (margins, padding, bullet points).
   A CSS Reset removes these defaults so we start with a clean slate.
   This prevents browsers from looking different from each other.
========================================================== */

*, *::before, *::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
/*
  * = the UNIVERSAL selector — applies to EVERY element on the page.
  *::before and *::after = also applies to pseudo-elements.

  margin: 0       → remove all default outer spacing
  padding: 0      → remove all default inner spacing
  box-sizing: border-box →
    By default, padding and border ADD to an element's width.
    border-box changes this: padding and border are INCLUDED in the width.
    Example: a 200px wide box with 20px padding stays 200px total.
    Without border-box, it would become 240px. Much easier to work with!
*/

html {
  scroll-behavior: smooth;
}
/*
  scroll-behavior: smooth → when clicking anchor links (like #section),
  the page scrolls smoothly instead of jumping instantly.
*/

body {
  font-family: "DM Sans", sans-serif;
  background: var(--cream);
  color: var(--ink);
}
/*
  body = applies to the whole visible page.
  font-family: "DM Sans", sans-serif →
    Use DM Sans (our Google Font). If it fails to load,
    use any generic sans-serif font as a fallback.
  background: var(--cream) → warm off-white page background.
  color: var(--ink) → default text color for everything.
*/

img {
  max-width: 100%;
  height: auto;
  display: block;
}
/*
  max-width: 100% → images never overflow their container.
  height: auto    → height scales proportionally (no stretching).
  display: block  → removes the small gap below images that appears
                    when they are inline (the default for <img>).
*/

a {
  text-decoration: none;
  color: inherit;
}
/*
  All <a> links by default have:
  - an underline (text-decoration: underline)
  - blue color
  We remove both here. Each section can re-add styles as needed.
  color: inherit → link uses whatever color its parent has.
*/

ul {
  list-style: none;
}
/*
  Removes the default bullet points (•) from all <ul> lists.
  We style lists our own way throughout the page.
*/


/* ==========================================================
   SECTION 3: TYPOGRAPHY HELPERS
   Reusable classes for common text styles.
   Add class="display" or class="eyebrow" to any HTML element
   to apply these styles.
========================================================== */

.display {
  font-family: "Cormorant Garamond", serif;
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: -0.02em;
}
/*
  .display = the big elegant serif font style for large headings.
  font-family: "Cormorant Garamond", serif →
    Use our fancy imported font. "serif" is the fallback.
  font-weight: 700 → bold.
  line-height: 1.1 → lines are 110% of the font size apart (tight).
  letter-spacing: -0.02em → slightly SQUEEZE letters together.
    Negative values bring letters closer. Positive spreads them apart.
    -0.02em = 2% of the font size, pulled inward.
    Large headings look better slightly squeezed.
*/

.eyebrow {
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--accent);
}
/*
  .eyebrow = the small spaced-out label that appears ABOVE a heading.
  Named because it sits above like an eyebrow above an eye.
  font-size: 0.7rem → 70% of 16px = ~11px. Small label size.
  font-weight: 600 → semi-bold.
  letter-spacing: 0.22em → wide spacing between letters (spaced-out look).
  text-transform: uppercase → ALL CAPS automatically.
  color: var(--accent) → terracotta brand color.
*/


/* ==========================================================
   SECTION 4: PAGE WRAPPER
   A centered container that limits content width.
   Prevents text from stretching across a huge 4K monitor.
========================================================== */

.page-wrap {
  max-width: 1120px;
  width: 95%;
  margin: 0 auto;
}
/*
  max-width: 1120px → content never gets wider than 1120px.
  width: 95%        → on small screens, use 95% of screen width
                       (5% breathing room on each side).
  margin: 0 auto    → 0 top/bottom margin, auto left/right.
    "auto" on left and right = browser splits remaining space equally,
    which CENTERS the box horizontally on the page.
*/


/* ==========================================================
   SECTION 5: HEADER
   The top bar with logo and search box.
========================================================== */

.main-header {
  background: var(--white);
  border-bottom: 1px solid var(--border);
  position: sticky;
  top: 0;
  z-index: 200;
}
/*
  background: var(--white) → white header bar.
  border-bottom: 1px solid var(--border) →
    A thin line at the BOTTOM of the header separating it from the page.
    Shorthand: thickness, style (solid/dashed/dotted), color.
  position: sticky →
    The header scrolls with the page UNTIL it hits the top,
    then it STICKS to the top and stays visible as you scroll.
    This is what makes it a "sticky header".
  top: 0 → stick exactly at the top edge (0px from top).
  z-index: 200 →
    z-index controls which elements appear IN FRONT of others.
    Higher number = in front. 200 ensures the header stays
    on top of everything else on the page.
*/

.header-inner {
  max-width: 1120px;
  width: 95%;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 0;
  gap: 20px;
  flex-wrap: wrap;
}
/*
  max-width / width / margin → same centering trick as .page-wrap.
  display: flex → turns this into a flexbox container.
    Children (logo and search) line up SIDE BY SIDE.
  align-items: center → vertically center the logo and search box.
  justify-content: space-between →
    Push items to opposite ends: logo goes LEFT, search goes RIGHT.
  padding: 20px 0 → 20px top/bottom padding, 0 left/right.
  gap: 20px → 20px of space between logo and search box.
  flex-wrap: wrap →
    If items don't fit on one line (e.g. small screen),
    they wrap onto the next line instead of overflowing.
*/

.logo-text {
  font-family: "Cormorant Garamond", serif;
  font-size: 1.75rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--ink);
}
/*
  font-size: 1.75rem → 1.75 × 16px = 28px. A large, prominent logo.
  letter-spacing: 0.04em → slight spacing between letters. Elegant look.
*/

.logo-text span {
  color: var(--accent);
}
/*
  The "Co." part of the logo is wrapped in <span>.
  This rule makes just that part terracotta colored.
  The rest of the logo stays --ink (dark charcoal).
*/

.search-holder form {
  display: flex;
  border: 1.5px solid var(--border);
  border-radius: 4px;
  overflow: hidden;
  transition: border-color .2s;
}
/*
  display: flex → input and button sit side by side.
  border: 1.5px solid var(--border) → light border around the search box.
  border-radius: 4px → slightly rounded corners.
  overflow: hidden →
    Without this, the button's rounded corners would poke outside the form.
    hidden clips anything that goes beyond the box edges.
  transition: border-color .2s →
    When the border color changes (on focus), it animates over 0.2 seconds.
*/

.search-holder form:focus-within {
  border-color: var(--accent);
}
/*
  :focus-within = applies when ANY child inside this form has focus.
  So when the user clicks inside the search input, the WHOLE form border
  turns terracotta. Nice subtle feedback!
*/

.search-holder input {
  border: none;
  outline: none;
  padding: 9px 14px;
  font-family: "DM Sans", sans-serif;
  font-size: 0.875rem;
  background: transparent;
  width: 210px;
  color: var(--ink);
}
/*
  border: none   → remove input's default border (the form has the border).
  outline: none  → remove the blue glow browsers add on focus.
  padding: 9px 14px → top/bottom 9px, left/right 14px. Comfortable spacing.
  background: transparent → the input has no background color of its own.
  width: 210px → fixed width for the text input area.
*/

.search-holder button {
  background: var(--ink);
  color: var(--white);
  border: none;
  padding: 9px 18px;
  font-family: "DM Sans", sans-serif;
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background .25s;
}
/*
  background: var(--ink) → dark button background.
  color: var(--white)    → white text on the button.
  border: none           → remove default button border.
  cursor: pointer        → shows a hand cursor on hover (signals clickable).
  transition: background .25s → smooth color change on hover.
*/

.search-holder button:hover {
  background: var(--accent);
}
/*
  When user hovers the Search button, background changes to terracotta.
  The transition above makes this change smooth (0.25 seconds).
*/


/* ==========================================================
   SECTION 6: NAVIGATION MENU
   The dark bar with page links below the header.
========================================================== */

.main-menu {
  background: var(--nav-bg);
  border-bottom: 2px solid var(--accent);
}
/*
  background: var(--nav-bg) → near-black bar.
  border-bottom: 2px solid var(--accent) →
    A 2px terracotta line at the bottom of the nav. Decorative accent.
*/

.nav-inner {
  max-width: 1120px;
  width: 95%;
  margin: 0 auto;
  display: flex;
  align-items: center;
}
/* Centers the nav content and aligns items vertically. */

.main-menu > .nav-inner > ul {
  display: flex;
}
/*
  > means DIRECT CHILD only (not grandchildren).
  .main-menu > .nav-inner > ul = the <ul> directly inside .nav-inner.
  display: flex → menu items sit side by side in a row.
*/

.main-menu > .nav-inner > ul > li {
  position: relative;
}
/*
  position: relative on each <li> so the dropdown (.drop)
  can be positioned RELATIVE to its parent list item.
  Without this, the dropdown would position itself relative to the page.
*/

.main-menu ul li a {
  display: block;
  color: #b0a89e;
  padding: 13px 20px;
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  transition: color .2s, background .2s;
}
/*
  display: block → makes the entire padding area clickable, not just the text.
  color: #b0a89e → muted warm grey (dim on dark background).
  padding: 13px 20px → comfortable click area.
  transition: color .2s, background .2s → both color AND background
    animate smoothly on hover. You can list multiple properties!
*/

.main-menu ul li a:hover,
.main-menu ul li a.active {
  color: var(--white);
  background: var(--accent);
}
/*
  Two selectors separated by a comma = same styles applied to both.
  :hover → when mouse is over the link.
  .active → the current page link (has class="active" in HTML).
  Both get: white text + terracotta background.
*/

/* ---- DROPDOWN MENU ---- */
.drop {
  position: absolute;
  top: 100%;
  left: 0;
  background: #1e1e1e;
  min-width: 190px;
  display: none;
  flex-direction: column;
  border-top: 2px solid var(--accent);
  box-shadow: 0 12px 30px rgba(0,0,0,0.3);
  z-index: 199;
}
/*
  position: absolute → dropdown floats ABOVE the normal page flow.
    It doesn't push other content down.
  top: 100% → start RIGHT BELOW the parent <li> (100% of parent height).
  left: 0   → align to the left edge of the parent <li>.
  background: #1e1e1e → very dark grey dropdown background.
  min-width: 190px → dropdown is at least 190px wide.
  display: none → HIDDEN by default. Only shown on hover (see below).
  flex-direction: column → dropdown items stack vertically.
  border-top: 2px solid var(--accent) → terracotta top border.
  box-shadow → deep shadow to make it appear floating above the page.
  z-index: 199 → just below the header (200) but above page content.
*/

.main-menu ul li:hover .drop {
  display: flex;
}
/*
  When the user hovers over a <li>, show its .drop dropdown.
  display: flex → overrides display: none, making it visible.
  flex-direction: column (set above) → items stack vertically.
*/

.drop li a {
  padding: 11px 18px;
  font-size: 0.78rem;
  color: #8a8078;
  border-bottom: 1px solid #2a2a2a;
  letter-spacing: 0.05em;
}
/* Dropdown link styles: smaller, muted, with dividing lines between items. */

.drop li:last-child a {
  border-bottom: none;
}
/*
  :last-child = targets only the LAST <li> in the dropdown.
  We remove the border on the last item so there's no trailing line.
*/

.drop li a:hover {
  color: var(--white);
  background: var(--accent);
}
/* Hover on dropdown links: white text + terracotta background. */


/* ==========================================================
   SECTION 7: PAGE HERO BANNER
   The large dark banner at the top of inner pages
   (Services, Products, About, Contact).
========================================================== */

.page-hero {
  background: var(--dark-bg);
  padding: 80px 0 65px;
  position: relative;
  overflow: hidden;
  text-align: center;
}
/*
  background: var(--dark-bg) → very dark background.
  padding: 80px 0 65px →
    Three values: top=80px, left/right=0, bottom=65px.
    Asymmetric padding gives the banner a natural visual weight.
  position: relative → needed for the ::before glow overlay.
  overflow: hidden → clips the glow so it doesn't spill outside.
  text-align: center → centers all text inside.
*/

.page-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 65% 50%, rgba(192,98,58,.2) 0%, transparent 60%);
}
/*
  ::before = a fake element inserted BEFORE the hero content.
  We use it to add a decorative glowing effect.
  content: "" → required for pseudo-elements to display.
  position: absolute → covers the whole hero area.
  inset: 0 → shorthand for top:0, right:0, bottom:0, left:0.
  radial-gradient → a circular glow:
    ellipse at 65% 50% = center of glow is 65% from left, 50% from top.
    rgba(192,98,58,.2) = terracotta at 20% opacity.
    transparent → fades out by 60%.
*/

.page-hero .page-wrap {
  position: relative;
}
/*
  The ::before pseudo-element is positioned absolute and covers the hero.
  We need the content (.page-wrap) to appear ON TOP of it.
  position: relative makes it stack above the absolute ::before layer.
*/

.page-hero .eyebrow {
  display: inline-block;
  margin-bottom: 14px;
}
/*
  display: inline-block → allows margin-bottom to work on a <span>.
    (inline elements ignore top/bottom margins.)
  margin-bottom: 14px → space between eyebrow label and the h1.
*/

.page-hero h1 {
  font-family: "Cormorant Garamond", serif;
  font-size: clamp(2.5rem, 6vw, 4.5rem);
  font-weight: 700;
  color: var(--white);
  margin-bottom: 14px;
}
/*
  clamp(2.5rem, 6vw, 4.5rem):
    - Min: 2.5rem (40px) — never smaller than this (on phones)
    - Preferred: 6vw — grows with screen width (6% of screen width)
    - Max: 4.5rem (72px) — never bigger than this (on huge screens)
  This is RESPONSIVE font sizing — one rule works everywhere!
*/

.page-hero p {
  color: #8a8078;
  font-size: 0.98rem;
  max-width: 440px;
  margin: 0 auto;
  line-height: 1.75;
}
/*
  max-width: 440px → paragraph doesn't stretch too wide (hard to read).
  margin: 0 auto   → centers the paragraph horizontally.
  line-height: 1.75 → 175% of font size between lines. Comfortable reading.
*/


/* ==========================================================
   SECTION 8: SECTION HEADER
   The centered heading block used at the top of content sections.
========================================================== */

.section-head {
  text-align: center;
  margin-bottom: 52px;
}
/* Centers content and adds 52px space below before the content starts. */

.section-head h2 {
  font-family: "Cormorant Garamond", serif;
  font-size: clamp(1.8rem, 3.5vw, 2.8rem);
  font-weight: 700;
  color: var(--ink);
  margin-bottom: 10px;
}
/* Responsive heading: grows between 1.8rem and 2.8rem based on screen width. */

.section-head p {
  color: var(--muted);
  font-size: 0.93rem;
}
/* Muted subtitle text below the heading. */

.section-head .divider {
  width: 48px;
  height: 2px;
  background: var(--accent);
  margin: 14px auto 0;
}
/*
  A short decorative terracotta line under the section heading.
  width: 48px    → only 48px wide (short accent bar).
  height: 2px    → very thin.
  background: var(--accent) → terracotta color.
  margin: 14px auto 0 →
    14px from top (space above divider),
    auto left/right (centers the bar),
    0 bottom.
*/


/* ==========================================================
   SECTION 9: HERO SLIDER (Home page only)
========================================================== */

.hero-slider {
  overflow: hidden;
}
/*
  overflow: hidden → hides any parts of the slider that go outside
  the container during transitions. Prevents horizontal scrollbars.
*/

.hero-slider img {
  width: 100%;
}
/* Slider images stretch to fill the full width of the container. */

.lSAction > a {
  background-color: rgba(192,98,58,.85) !important;
}
/*
  .lSAction > a = the arrow buttons on the LightSlider plugin.
  We override their default color with our terracotta.
  !important → forces this style to win over the plugin's own CSS.
  Use !important sparingly — only when overriding third-party styles.
  rgba(192,98,58,.85) = terracotta at 85% opacity.
*/


/* ==========================================================
   SECTION 10: CONTENT + SIDEBAR (Home page)
   A two-column layout: wide main content on left,
   narrow dark sidebar on right.
========================================================== */

.content-holder {
  display: flex;
  gap: 0;
  border-top: 1px solid var(--border);
}
/*
  display: flex → main content and sidebar sit SIDE BY SIDE.
  gap: 0 → no gap between them (the sidebar has its own border).
  border-top → a thin line separating this section from the slider.
*/

.content {
  flex: 3;
  padding: 50px 40px;
  background: var(--white);
}
/*
  flex: 3 → this is a FLEX GROW shorthand.
    The content takes up 3 "parts" of the available space.
    The sidebar has flex: 1 (one part).
    So total = 4 parts. Content = 3/4 width, sidebar = 1/4 width.
  padding: 50px 40px → 50px top/bottom, 40px left/right. Breathing room.
*/

.content h1 {
  font-family: "Cormorant Garamond", serif;
  font-size: 2.4rem;
  font-weight: 700;
  margin-bottom: 8px;
  color: var(--ink);
}

.content h2 {
  font-family: "Cormorant Garamond", serif;
  font-size: 1.3rem;
  font-weight: 400;
  color: var(--accent);
  margin-bottom: 24px;
}
/*
  font-weight: 400 → normal weight (not bold). The h2 here is a subtitle,
  so it's intentionally lighter than the h1 above it.
*/

.content p {
  color: var(--muted);
  line-height: 1.8;
  margin-bottom: 14px;
  font-size: 0.95rem;
}
/* Body text: muted color, comfortable line height (1.8), small-ish size. */

.sidebar {
  flex: 1;
  padding: 50px 28px;
  background: var(--ink);
  border-left: 1px solid #2a2a2a;
}
/*
  flex: 1 → sidebar takes 1/4 of the total width (content takes 3/4).
  background: var(--ink) → dark charcoal sidebar background.
  border-left → a thin dark line separating sidebar from main content.
*/

.sidebar .widget h3 {
  font-family: "Cormorant Garamond", serif;
  font-size: 1.1rem;
  color: var(--white);
  margin-bottom: 18px;
  padding-bottom: 10px;
  border-bottom: 1px solid #2a2a2a;
}
/*
  The widget title in the sidebar.
  padding-bottom + border-bottom → a line UNDER the title (inside the box).
  Note: margin is OUTSIDE the element, padding is INSIDE.
*/

.sidebar .widget ul li {
  margin-bottom: 10px;
}
/* 10px of space between each social media link. */

.sidebar .widget ul li a {
  color: #8a8078;
  font-size: 0.85rem;
  letter-spacing: 0.04em;
  transition: color .2s;
}
/* Muted link color that transitions smoothly on hover. */

.sidebar .widget ul li a:hover {
  color: var(--accent);
}
/* On hover, link turns terracotta. */


/* ==========================================================
   SECTION 11: SERVICES GRID
   Three-column card layout for the services section.
========================================================== */

.services-section {
  padding: 72px 0;
  background: var(--cream);
}
/* Top-level section: 72px padding top and bottom, cream background. */

.services-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 26px;
}
/*
  display: grid → CSS Grid layout (different from Flexbox).
    Grid is best for two-dimensional layouts (rows AND columns).
    Flexbox is best for one-dimensional (row OR column).

  grid-template-columns: repeat(3, 1fr) →
    Create 3 equal-width columns.
    repeat(3, 1fr) is shorthand for: 1fr 1fr 1fr
    fr = "fraction unit" — divides available space equally.
    1fr 1fr 1fr = three columns, each taking 1/3 of the space.

  gap: 26px → 26px space between all rows and columns.
*/

.service-card {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 34px 28px;
  position: relative;
  overflow: hidden;
  transition: transform .3s, box-shadow .3s;
}
/*
  background + border → white card with a light border.
  border-radius: 6px → gently rounded corners.
  padding: 34px 28px → comfortable inner spacing.
  position: relative → needed for the ::after bottom bar pseudo-element.
  overflow: hidden → clips the ::after bar when it's scaled to 0.
  transition: transform .3s, box-shadow .3s →
    When the card moves up on hover, the movement and shadow
    both animate over 0.3 seconds.
*/

.service-card::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--accent), var(--accent-lt));
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .35s ease;
}
/*
  ::after = a fake element inserted AFTER the card's content.
  We use it to create the terracotta underline that reveals on hover.

  position: absolute; bottom:0; left:0; right:0 →
    Stick this bar to the BOTTOM of the card, full width.
  height: 3px → just a thin colored bar.
  background: linear-gradient(90deg, ...) →
    Horizontal gradient (90deg = left to right).
    Goes from terracotta to lighter terracotta.
  transform: scaleX(0) →
    Start with the bar INVISIBLE (scaled to 0 width).
    transform: scaleX(1) would be full width.
  transform-origin: left →
    The scale animation grows FROM the left side.
    Without this, it would grow from the center.
  transition → animates the transform over 0.35 seconds.
*/

.service-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--shadow);
}
/*
  On hover:
  transform: translateY(-5px) → move the card UP 5 pixels.
    translateY = move vertically. Negative = upward.
  box-shadow: var(--shadow) → add the subtle shadow (from our variable).
  Together: card lifts up with a shadow — like it's being picked up.
*/

.service-card:hover::after {
  transform: scaleX(1);
}
/*
  When the card is hovered, reveal the terracotta bar by
  scaling it from 0 to full width (scaleX(1)).
  The transition above makes it animate smoothly left to right.
*/

.service-icon {
  width: 48px;
  height: 48px;
  border-radius: 10px;
  background: linear-gradient(135deg, var(--accent), var(--accent-lt));
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.3rem;
  margin-bottom: 18px;
  transition: transform .3s;
}
/*
  A square box for the emoji icon.
  width + height → 48×48px box.
  border-radius: 10px → nicely rounded corners.
  background: linear-gradient → diagonal terracotta gradient.
  display: flex + align + justify → centers the emoji inside the box.
  font-size: 1.3rem → controls emoji size.
  margin-bottom → space between icon and the heading below it.
*/

.service-card:hover .service-icon {
  transform: scale(1.1) rotate(-4deg);
}
/*
  On hover, the icon:
  scale(1.1)   → grows 10% bigger.
  rotate(-4deg) → tilts slightly counterclockwise.
  Both transforms apply together. Playful micro-animation!
*/

.service-card h3 {
  font-family: "Cormorant Garamond", serif;
  font-size: 1.2rem;
  font-weight: 700;
  margin-bottom: 10px;
  color: var(--ink);
}

.service-card p {
  font-size: 0.88rem;
  color: var(--muted);
  line-height: 1.75;
  margin-bottom: 20px;
}

.read-more {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: gap .2s;
}
/*
  display: inline-flex → the text and arrow sit side by side inline.
  align-items: center → vertically aligns text and arrow.
  gap: 6px → space between text and arrow.
  transition: gap .2s → the gap animates on hover (see below).
*/

.read-more::after {
  content: "→";
}
/*
  ::after inserts a right arrow AFTER the "Learn More" text.
  No need to add → in the HTML — CSS handles it automatically!
*/

.service-card:hover .read-more {
  gap: 10px;
}
/*
  On hover, the gap between "Learn More" and "→" grows from 6px to 10px.
  Looks like the arrow is sliding away from the text. Subtle and elegant.
*/


/* ==========================================================
   SECTION 12: PRODUCTS GRID
   Three-column card layout for the products page.
========================================================== */

.products-section {
  padding: 72px 0;
  background: var(--cream);
}

.products-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 26px;
}
/* Same 3-column grid as services. */

.product-card {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 6px;
  overflow: hidden;
  transition: transform .3s, box-shadow .3s;
}
/*
  overflow: hidden → clips the image zoom effect (scale) on hover
    so it doesn't go outside the card boundaries.
*/

.product-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--shadow);
}
/* Same lift effect as service cards. */

.product-img {
  overflow: hidden;
  aspect-ratio: 4/3;
  background: #eee;
}
/*
  overflow: hidden → hides the image when it zooms (scale) on hover.
  aspect-ratio: 4/3 → the image area is always 4 wide : 3 tall.
    Like a standard photo ratio. Keeps all cards the same height.
  background: #eee → grey placeholder if the image fails to load.
*/

.product-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .5s ease;
}
/*
  width: 100%; height: 100% → image fills its container completely.
  object-fit: cover →
    If the image proportions don't match the container,
    it CROPS (like zooming in) rather than squishing/stretching.
    Think of it like fitting a photo into a picture frame.
  transition: transform .5s ease → zoom animation is slower (0.5s)
    for a smooth, luxurious feel.
*/

.product-card:hover .product-img img {
  transform: scale(1.06);
}
/*
  On hover, the image grows 6% larger (scale 1.06).
  Because overflow: hidden is on .product-img,
  the growth stays clipped inside the box. Elegant zoom effect!
*/

.product-body {
  padding: 22px;
}
/* Inner padding for the text area below the image. */

.product-body h3 {
  font-family: "Cormorant Garamond", serif;
  font-size: 1.15rem;
  font-weight: 700;
  margin-bottom: 8px;
  color: var(--ink);
}

.product-body p {
  font-size: 0.87rem;
  color: var(--muted);
  line-height: 1.7;
  margin-bottom: 16px;
}


/* ==========================================================
   SECTION 13: ABOUT PAGE
   Two-column layout: text on left, image on right.
========================================================== */

.about-section {
  padding: 72px 0;
  background: var(--cream);
}

.about-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 60px;
  align-items: start;
}
/*
  grid-template-columns: 1fr 1fr → two equal columns.
  gap: 60px → wide gap gives the layout a spacious editorial feel.
  align-items: start → columns align to the TOP edge (not stretched).
    Without this, the shorter column would stretch to match the taller one.
*/

.about-text h1 {
  font-family: "Cormorant Garamond", serif;
  font-size: clamp(2rem, 4vw, 3.2rem);
  font-weight: 700;
  color: var(--ink);
  margin-bottom: 6px;
}

.about-text .subtitle {
  font-family: "Cormorant Garamond", serif;
  font-size: 1.2rem;
  color: var(--accent);
  margin-bottom: 28px;
  font-style: italic;
}
/* font-style: italic → slanted text. Classic book-like style. */

.about-text p {
  color: var(--muted);
  line-height: 1.85;
  margin-bottom: 16px;
  font-size: 0.95rem;
}

.about-stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin-top: 36px;
}
/* A 2×2 grid of stat boxes below the about text. */

.stat-box {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 22px;
  text-align: center;
}

.stat-box .num {
  font-family: "Cormorant Garamond", serif;
  font-size: 2.4rem;
  font-weight: 700;
  color: var(--accent);
  display: block;
}
/*
  display: block → makes the number take a full line (like a <p>).
  The label below it automatically goes to the next line.
*/

.stat-box .label {
  font-size: 0.78rem;
  color: var(--muted);
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.about-visual {
  position: relative;
}
/* Wrapper for the right-side image. position: relative for potential overlays. */

.about-img-main {
  width: 100%;
  aspect-ratio: 3/4;
  background: linear-gradient(135deg, var(--dark-bg) 0%, #2a1f15 100%);
  border-radius: 6px;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}
/*
  aspect-ratio: 3/4 → portrait orientation (taller than wide).
  The gradient is a fallback if no image is provided.
*/

.about-img-main img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.about-img-placeholder {
  color: #3a3028;
  font-family: "Cormorant Garamond", serif;
  font-size: 5rem;
  font-weight: 700;
  line-height: 1;
  text-align: center;
}
/* Placeholder text shown inside the image box if no real image exists. */

.about-values {
  margin-top: 48px;
}

.about-values h2 {
  font-family: "Cormorant Garamond", serif;
  font-size: 1.9rem;
  font-weight: 700;
  color: var(--ink);
  margin-bottom: 24px;
}

.values-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
/* Stacks value items vertically with 16px gaps between them. */

.value-item {
  display: flex;
  gap: 16px;
  align-items: flex-start;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 18px 20px;
}
/*
  display: flex → icon and text sit SIDE BY SIDE.
  align-items: flex-start → icon aligns to the TOP of the text
    (not vertically centered, which looks wrong with multi-line text).
*/

.value-icon {
  font-size: 1.4rem;
  flex-shrink: 0;
}
/*
  flex-shrink: 0 → prevents the icon from getting squished
    when the text next to it is long. The icon keeps its size.
*/

.value-item h4 {
  font-family: "Cormorant Garamond", serif;
  font-size: 1rem;
  font-weight: 700;
  margin-bottom: 4px;
  color: var(--ink);
}

.value-item p {
  font-size: 0.85rem;
  color: var(--muted);
  line-height: 1.65;
}


/* ==========================================================
   SECTION 14: CONTACT PAGE
   Two-column layout: form on left, info on right.
========================================================== */

.contact-section {
  padding: 72px 0;
}

.contact-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 50px;
  align-items: start;
}
/* Same two-column approach as the about page. */

.contact-form-wrap h2 {
  font-family: "Cormorant Garamond", serif;
  font-size: 2rem;
  font-weight: 700;
  color: var(--ink);
  margin-bottom: 6px;
}

.contact-form-wrap .sub {
  color: var(--muted);
  font-size: 0.9rem;
  margin-bottom: 28px;
}

.c-form {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
/* Form fields stack vertically with 14px gaps between them. */

.c-form label {
  display: flex;
  flex-direction: column;
  gap: 5px;
}
/*
  Each <label> wraps a text label + an input field.
  flex-direction: column → text label sits ABOVE the input.
  gap: 5px → small space between label text and the input.
*/

.c-form label span {
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted);
}
/* The label text above each input field. Small, uppercase, muted. */

.c-form input,
.c-form textarea {
  border: 1.5px solid var(--border);
  border-radius: 4px;
  padding: 11px 14px;
  font-family: "DM Sans", sans-serif;
  font-size: 0.9rem;
  color: var(--ink);
  background: var(--white);
  outline: none;
  transition: border-color .2s;
}
/*
  Both inputs and textareas get the same base style.
  The comma (,) between selectors means "apply to both".
  outline: none → removes the default browser focus ring.
    We replace it with our own border color change below.
*/

.c-form input:focus,
.c-form textarea:focus {
  border-color: var(--accent);
}
/*
  :focus = applies when the user clicks into the field.
  Border turns terracotta to show which field is active.
*/

.c-form textarea {
  resize: vertical;
  min-height: 130px;
}
/*
  resize: vertical → users can drag to make the textarea TALLER,
    but NOT wider. Prevents layout-breaking horizontal resizing.
  min-height: 130px → textarea starts at a comfortable size.
*/

.btn-send {
  background: var(--ink);
  color: var(--white);
  border: none;
  padding: 13px 30px;
  font-family: "DM Sans", sans-serif;
  font-weight: 600;
  font-size: 0.83rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  cursor: pointer;
  border-radius: 4px;
  transition: background .25s, transform .2s;
  align-self: flex-start;
}
/*
  align-self: flex-start → button only as wide as its content.
    Without this, it would stretch to fill the full column width
    because the parent (.c-form) is a flex container.
*/

.btn-send:hover {
  background: var(--accent);
  transform: translateY(-1px);
}
/* Button lifts 1px and turns terracotta on hover. */

.contact-info h2 {
  font-family: "Cormorant Garamond", serif;
  font-size: 2rem;
  font-weight: 700;
  color: var(--ink);
  margin-bottom: 28px;
}

.info-blocks {
  display: flex;
  flex-direction: column;
  gap: 20px;
  margin-bottom: 36px;
}

.info-block {
  display: flex;
  gap: 16px;
  align-items: flex-start;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 18px 20px;
}

.info-icon {
  width: 40px;
  height: 40px;
  border-radius: 8px;
  background: linear-gradient(135deg, var(--accent), var(--accent-lt));
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
  flex-shrink: 0;
}
/* Icon box for contact info (phone, email, address). Same pattern as service icons. */

.info-block h4 {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 4px;
}

.info-block p,
.info-block a {
  font-size: 0.92rem;
  color: var(--ink);
  transition: color .2s;
}

.info-block a:hover {
  color: var(--accent);
}

.hours-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.88rem;
}
/*
  border-collapse: collapse →
    By default, HTML table cells have separate borders with gaps.
    collapse merges them into single shared borders. Much cleaner.
*/

.hours-table td {
  padding: 8px 0;
  color: var(--muted);
  border-bottom: 1px solid var(--border);
}

.hours-table td:last-child {
  text-align: right;
  color: var(--ink);
  font-weight: 500;
}
/*
  :last-child = the SECOND <td> in each row (the time, e.g. "9am–6pm").
  text-align: right → aligns times to the right edge.
  color: var(--ink) → darker than the day name (muted) for emphasis.
*/

.hours-table tr:last-child td {
  border-bottom: none;
}
/* Remove the bottom border on the last row. */

.gmap {
  margin-top: 28px;
  border-radius: 6px;
  overflow: hidden;
  border: 1px solid var(--border);
  height: 260px;
}
/* Container for the Google Maps iframe. Fixed height of 260px. */

.gmap iframe {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}
/*
  width: 100%; height: 100% → map fills the container.
  border: 0 → removes the default iframe border.
  display: block → removes the small gap below iframes.
*/


/* ==========================================================
   SECTION 15: CTA STRIP
   The dark "Ready for a Fitting?" call-to-action section.
========================================================== */

.cta-strip {
  background: var(--dark-bg);
  padding: 64px 0;
  text-align: center;
  position: relative;
  overflow: hidden;
}
/* Dark full-width section with centered text and overflow hidden for the glow. */

.cta-strip::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 50% 50%, rgba(192,98,58,.18) 0%, transparent 65%);
}
/*
  Same glow overlay technique as .page-hero::before.
  ellipse at 50% 50% = glow is centered in the section.
  rgba(...,.18) = very subtle 18% opacity glow.
*/

.cta-strip .page-wrap {
  position: relative;
}
/* Makes text appear above the ::before glow layer. */

.cta-strip h2 {
  font-family: "Cormorant Garamond", serif;
  font-size: clamp(1.8rem, 3.5vw, 2.8rem);
  font-weight: 700;
  color: var(--white);
  margin-bottom: 12px;
}

.cta-strip p {
  color: #8a8078;
  font-size: 0.95rem;
  margin-bottom: 30px;
}

.cta-btn {
  display: inline-block;
  background: var(--accent);
  color: var(--white);
  padding: 14px 38px;
  border-radius: 4px;
  font-weight: 700;
  font-size: 0.82rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  transition: background .25s, transform .2s;
}
/*
  display: inline-block → <a> tags are inline by default.
    inline-block lets padding work properly and allows transform.
  padding: 14px 38px → tall and wide button. Prominent and clickable.
*/

.cta-btn:hover {
  background: var(--accent-lt);
  transform: translateY(-2px);
}
/* Button lifts up 2px and lightens on hover. */


/* ==========================================================
   SECTION 16: FOOTER
   The dark bottom section with four columns of links.
========================================================== */

.footer-widgets {
  background: #141210;
  padding: 64px 0 0;
}
/*
  Very dark warm black background.
  padding: 64px 0 0 → 64px top, 0 left/right, 0 bottom.
  Bottom padding is 0 because the footer-bar below provides its own space.
*/

.footer-grid {
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr 1fr;
  gap: 40px;
  padding-bottom: 50px;
  border-bottom: 1px solid #232018;
}
/*
  grid-template-columns: 1.6fr 1fr 1fr 1fr →
    Four columns. The first (brand info) is 1.6× wider than the others.
    Total = 1.6 + 1 + 1 + 1 = 4.6 parts.
    Column 1 = 1.6/4.6 ≈ 35% width. Columns 2–4 = ~22% each.
  border-bottom → a thin dark line separating columns from the copyright bar.
*/

.footer-brand {
  font-family: "Cormorant Garamond", serif;
  font-size: 1.6rem;
  font-weight: 700;
  color: var(--white);
  margin-bottom: 12px;
  letter-spacing: 0.04em;
}

.footer-brand span {
  color: var(--accent);
}
/* "Co." part of footer logo gets terracotta color. */

.footer-widget address,
.footer-widget .fw-desc {
  color: #5a524a;
  font-size: 0.86rem;
  line-height: 1.7;
  font-style: normal;
}
/*
  <address> has italic style by default. font-style: normal resets it.
  color: #5a524a = dark muted warm grey. Low contrast on dark bg (subtle).
*/

.fw-title {
  font-family: "Cormorant Garamond", serif;
  font-size: 1rem;
  font-weight: 700;
  color: var(--white);
  margin-bottom: 18px;
  letter-spacing: 0.02em;
}
/* The heading of each footer column. */

.footer-widget ul li {
  margin-bottom: 9px;
}

.footer-widget ul li a {
  color: #5a524a;
  font-size: 0.85rem;
  transition: color .2s;
}

.footer-widget ul li a:hover {
  color: var(--accent);
}
/* Footer links turn terracotta on hover. */

.footer-bar {
  background: #0c0a08;
  padding: 18px 0;
  text-align: center;
}
/* The very bottom copyright bar. Slightly darker than the footer above. */

.footer-bar p {
  color: #3a3028;
  font-size: 0.8rem;
  letter-spacing: 0.04em;
}
/* Very dark, subtle copyright text. Not meant to draw attention. */


/* ==========================================================
   SECTION 17: RESPONSIVE STYLES (Media Queries)

   WHAT ARE MEDIA QUERIES?
   Media queries let you apply DIFFERENT CSS rules depending on
   the screen size. This is how websites look good on both
   phones AND desktops.

   Syntax:
   @media (max-width: 960px) {
     .selector { new styles for small screens }
   }

   max-width: 960px = "apply ONLY when screen is 960px wide or LESS"
   min-width: 960px = "apply ONLY when screen is 960px wide or MORE"

   We typically write "mobile-first" (min-width) OR "desktop-first" (max-width).
   This file uses desktop-first: default styles are for desktop,
   then we override for smaller screens with max-width breakpoints.

   BREAKPOINTS USED HERE:
   960px = tablet and below (e.g. iPad)
   640px = phone and below
========================================================== */

/* ---- TABLET (screens 960px wide or smaller) ---- */
@media (max-width: 960px) {

  .services-grid,
  .products-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  /*
    On tablet: switch from 3 columns to 2 columns.
    Cards don't get too squished.
  */

  .footer-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  /*
    Footer: switch from 4 columns to 2×2 grid.
    More readable on medium screens.
  */

  .about-grid {
    grid-template-columns: 1fr;
  }
  /*
    About page: switch from 2 columns to 1 column (full width).
    Text and image stack vertically.
  */

  .about-visual {
    display: none;
  }
  /*
    On tablet, hide the image column entirely.
    Keeps the about page clean without a cramped image.
  */

  .contact-grid {
    grid-template-columns: 1fr;
  }
  /*
    Contact page: form and info stack vertically.
  */
}

/* ---- MOBILE (screens 640px wide or smaller) ---- */
@media (max-width: 640px) {

  .header-inner {
    flex-direction: column;
    align-items: flex-start;
  }
  /*
    Header: logo and search stack vertically.
    Logo on top, search below. Aligns to left edge.
  */

  .search-holder input {
    width: 160px;
  }
  /*
    Make the search input slightly narrower on small screens.
    (Default was 210px — might overflow on phones.)
  */

  .main-menu > .nav-inner > ul {
    flex-wrap: wrap;
  }
  /*
    Nav links wrap to a second line if they don't fit.
    Better than overflowing off screen.
  */

  .services-grid,
  .products-grid {
    grid-template-columns: 1fr;
  }
  /*
    Phone: 1 full-width column. Cards stack one by one.
  */

  .footer-grid {
    grid-template-columns: 1fr;
  }
  /*
    Footer: all 4 columns stack into one column.
  */

  .about-stats {
    grid-template-columns: 1fr 1fr;
  }
  /*
    Stats boxes stay 2-per-row even on phones.
    They're small enough to fit side by side.
  */

  .content-holder {
    flex-direction: column;
  }
  /*
    Main content + sidebar: stack vertically on phone.
    Sidebar goes below the main content.
  */

  .sidebar {
    border-left: none;
    border-top: 1px solid #2a2a2a;
  }
  /*
    When stacked vertically, the sidebar no longer needs a left border.
    We add a top border instead to visually separate it from the content above.
  */
}