/* ==========================================================================
   IDEAL PAINTING TAMPA BAY — Design System + Styles
   Palette taken from the logo (deep navy + brushed gold).
   Sections: 1 Tokens · 2 Base · 3 Layout · 4 Buttons · 5 Header · 6 Hero
             7 Trust · 8 Cards/Services · 9 Sections · 10 Form · 11 Footer · 12 Utilities
   ========================================================================== */

/* 1. TOKENS ------------------------------------------------------------- */
:root {
  /* Color */
  --navy: #0b2236;
  --navy-2: #133552;
  --gold: #c49947;
  --gold-light: #dbb461;
  --gold-dark: #85651f;      /* gold for text on light backgrounds (AA) */
  --cream: #f6f3ec;
  --white: #ffffff;
  --ink: #17232e;
  --muted: #55626e;
  --line: #e4dfd3;
  --error: #b3261e;
  --ok: #1f6b3a;

  /* Typography */
  --font-body: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-head: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;
  --fs-body: 1.0625rem;                       /* 17px */
  --fs-small: 0.9rem;
  --fs-h1: clamp(2.1rem, 6.2vw + 0.4rem, 3.9rem);
  --fs-h2: clamp(1.7rem, 3.6vw + 0.6rem, 2.6rem);
  --fs-h3: 1.25rem;

  /* Spacing (4px base) */
  --s1: .25rem; --s2: .5rem; --s3: .75rem; --s4: 1rem; --s5: 1.5rem;
  --s6: 2rem; --s7: 3rem; --s8: 4.5rem; --s9: 6.5rem;
  --section-y: clamp(2.75rem, 5.5vw, 4.5rem);
  --gutter: clamp(1.1rem, 4vw, 2rem);
  --maxw: 1180px;

  /* Shape */
  --r-sm: 6px; --r: 10px; --r-lg: 16px;
  --shadow-sm: 0 1px 2px rgba(11,34,54,.08);
  --shadow: 0 8px 24px rgba(11,34,54,.10);
  --shadow-lg: 0 18px 44px rgba(11,34,54,.16);

  --header-h: 84px;
}

/* 2. BASE --------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--header-h) + 12px); -webkit-text-size-adjust: 100%; }
body {
  margin: 0; font-family: var(--font-body); font-size: var(--fs-body); line-height: 1.6;
  color: var(--ink); background: var(--white); -webkit-font-smoothing: antialiased;
}
img, picture { display: block; max-width: 100%; height: auto; }
h1, h2, h3 { font-family: var(--font-head); font-weight: 700; line-height: 1.15; margin: 0 0 var(--s4); color: var(--navy); letter-spacing: -0.01em; }
h1 { font-size: var(--fs-h1); text-wrap: balance; }
h2 { font-size: var(--fs-h2); }
h3 { font-size: var(--fs-h3); line-height: 1.25; }
p { margin: 0 0 var(--s4); }
a { color: var(--navy); text-underline-offset: 3px; }
a:hover { color: var(--gold-dark); }
ul { margin: 0; padding: 0; list-style: none; }
:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; border-radius: 3px; }
.skip-link { position: absolute; left: -999px; top: 8px; background: var(--navy); color: #fff; padding: .6rem 1rem; border-radius: var(--r-sm); z-index: 200; }
.skip-link:focus { left: 8px; color: #fff; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } * { transition: none !important; animation: none !important; } }

/* 3. LAYOUT ------------------------------------------------------------- */
.container { width: 100%; max-width: var(--maxw); margin-inline: auto; padding-inline: var(--gutter); }
.section { padding-block: var(--section-y); }
.section--cream { background: var(--cream); }
.section--navy { background: var(--navy); color: #e8edf2; }
.section--navy h2, .section--navy h3 { color: #fff; }
.section-head { max-width: 40rem; margin-bottom: var(--s6); }
.section-head p { color: var(--muted); font-size: 1.1rem; }
.section--navy .section-head p { color: #b9c5d0; }
.eyebrow { display: block; font-size: .8rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--gold-dark); margin-bottom: var(--s3); }
.section--navy .eyebrow, .hero .eyebrow { color: var(--gold-light); }

/* 4. BUTTONS ------------------------------------------------------------ */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  min-height: 48px; padding: .75rem 1.4rem; border-radius: var(--r-sm);
  font: 700 .95rem/1.1 var(--font-body); letter-spacing: .03em; text-transform: uppercase; text-decoration: none;
  border: 2px solid transparent; cursor: pointer; transition: background .15s, color .15s, border-color .15s, transform .15s;
}
.btn:active { transform: translateY(1px); }
.btn--gold { background: var(--gold); color: var(--navy); }
.btn--gold:hover { background: var(--gold-light); color: var(--navy); }
.btn--navy { background: var(--navy); color: #fff; }
.btn--navy:hover { background: var(--navy-2); color: #fff; }
.btn--outline { border-color: currentColor; color: var(--navy); background: transparent; }
.btn--outline:hover { background: var(--navy); border-color: var(--navy); color: #fff; }
.btn--ghost-light { border-color: rgba(255,255,255,.75); color: #fff; }
.btn--ghost-light:hover { background: #fff; border-color: #fff; color: var(--navy); }
.btn--block { width: 100%; }
.btn svg { width: 18px; height: 18px; flex: none; }
.link-arrow { font-weight: 700; display: inline-block; padding: .6rem 0; color: var(--navy); text-decoration: underline; text-decoration-color: var(--gold); text-decoration-thickness: 2px; text-underline-offset: 6px; }
.link-arrow:hover { color: var(--gold-dark); }

/* 5. HEADER ------------------------------------------------------------- */
.site-header { position: sticky; top: 0; z-index: 100; background: rgba(255,255,255,.97); border-bottom: 1px solid var(--line); backdrop-filter: saturate(1.4) blur(8px); }
.site-header .container { display: flex; align-items: center; gap: var(--s5); height: var(--header-h); }
.brand { display: block; flex: none; }
.brand img { height: 68px; width: auto; }
.nav { margin-left: auto; }
.nav > ul { display: flex; gap: clamp(1rem, 2.2vw, 2rem); }
.nav a { display: inline-block; padding: .5rem .1rem; font-weight: 600; font-size: .95rem; text-decoration: none; color: var(--navy); border-bottom: 2px solid transparent; }
.nav a:hover, .nav a[aria-current="page"] { border-color: var(--gold); color: var(--navy); }
.header-cta { display: flex; gap: var(--s3); align-items: center; }
.header-cta .btn { min-height: 44px; padding: .55rem 1.1rem; font-size: .85rem; }
.menu-btn { display: none; margin-left: auto; width: 46px; height: 46px; border: 1px solid var(--line); border-radius: var(--r-sm); background: #fff; cursor: pointer; align-items: center; justify-content: center; }
.menu-btn span, .menu-btn span::before, .menu-btn span::after { display: block; width: 20px; height: 2px; background: var(--navy); position: relative; content: ""; transition: transform .2s, background .2s; }
.menu-btn span::before { position: absolute; top: -6px; }
.menu-btn span::after { position: absolute; top: 6px; }
.menu-btn[aria-expanded="true"] span { background: transparent; }
.menu-btn[aria-expanded="true"] span::before { transform: translateY(6px) rotate(45deg); }
.menu-btn[aria-expanded="true"] span::after { transform: translateY(-6px) rotate(-45deg); }
.call-icon-btn { display: none; width: 46px; height: 46px; border-radius: var(--r-sm); background: var(--navy); color: #fff; align-items: center; justify-content: center; }
.call-icon-btn svg { width: 20px; height: 20px; }

@media (max-width: 960px) {
  :root { --header-h: 68px; }
  .brand img { height: 54px; }
  .menu-btn, .call-icon-btn { display: inline-flex; }
  .call-icon-btn { margin-left: auto; }
  .menu-btn { margin-left: auto; }
  .header-cta { display: none; }
  .nav { position: absolute; left: 0; right: 0; top: 100%; background: #fff; border-bottom: 1px solid var(--line); box-shadow: var(--shadow); display: none; margin: 0; }
  .nav.is-open { display: block; }
  .nav > ul { flex-direction: column; gap: 0; padding: var(--s2) var(--gutter) var(--s4); }
  .nav a { display: block; padding: .95rem 0; border-bottom: 1px solid var(--line); font-size: 1.05rem; }
  .nav li:last-child a { border-bottom: 0; }
}

/* 6. HERO --------------------------------------------------------------- */
.hero { position: relative; color: #fff; background: var(--navy); isolation: isolate; }
.hero-media, .hero-media img { position: absolute; inset: 0; width: 100%; height: 100%; }
.hero-media { z-index: -2; }
.hero .container { position: relative; }
.hero-media img { object-fit: cover; object-position: 60% 50%; }
.hero::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(8,26,42,.84) 0%, rgba(8,26,42,.55) 50%, rgba(8,26,42,.08) 100%); }
.hero .container { padding-block: clamp(3.5rem, 10vw, 7rem) clamp(3rem, 8vw, 5.5rem); }
.hero-copy { max-width: 36rem; }
.hero h1 { color: #fff; margin-bottom: var(--s4); }
.hero-sub { font-size: 1.2rem; color: #e6ecf2; max-width: 32rem; margin-bottom: var(--s5); }
.hero-tags { display: flex; flex-wrap: wrap; gap: .4rem 1.1rem; margin-bottom: var(--s6); font-weight: 600; color: var(--gold-light); font-size: .95rem; letter-spacing: .04em; }
.hero-tags li + li::before { content: "•"; margin-right: 1.1rem; color: rgba(255,255,255,.5); }
.hero-actions { display: flex; flex-wrap: wrap; gap: var(--s3); }
.hero-area { margin: var(--s5) 0 0; font-size: var(--fs-small); color: #c9d4de; }
@media (max-width: 700px) {
  .hero::after { background: linear-gradient(180deg, rgba(8,26,42,.25) 0%, rgba(8,26,42,.7) 45%, rgba(8,26,42,.92) 100%); }
  .hero-media img { object-position: 42% 50%; }
  .hero-actions .btn { flex: 1 1 100%; }
  .hero-tags li + li::before { margin-right: .7rem; }
  .hero-tags { gap: .3rem .7rem; font-size: .88rem; }
}

/* 7. TRUST BAR ---------------------------------------------------------- */
.trust { background: var(--cream); border-bottom: 1px solid var(--line); }
.trust ul { display: grid; grid-template-columns: repeat(4, 1fr); }
.trust li { padding: 1.6rem 1.2rem; border-left: 1px solid var(--line); }
.trust li:first-child { border-left: 0; padding-left: 0; }
.trust strong { display: block; font: 700 1.15rem/1.25 var(--font-head); color: var(--navy); }
.trust span { font-size: var(--fs-small); color: var(--muted); }
@media (max-width: 800px) {
  .trust ul { grid-template-columns: 1fr 1fr; }
  .trust li { padding: 1.1rem .9rem; border-left: 0; border-top: 1px solid var(--line); }
  .trust li:nth-child(-n+2) { border-top: 0; }
  .trust li:nth-child(odd) { padding-left: 0; border-right: 1px solid var(--line); }
}

/* 8. CARDS / SERVICES --------------------------------------------------- */
.grid-services { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s5); }
.card { background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; display: flex; flex-direction: column; box-shadow: var(--shadow-sm); transition: box-shadow .2s, transform .2s; }
.card:hover { box-shadow: var(--shadow); transform: translateY(-2px); }
.card-img { aspect-ratio: 4 / 3; background: var(--cream); overflow: hidden; }
.card-img img { width: 100%; height: 100%; object-fit: cover; }
.card-body { padding: var(--s5); display: flex; flex-direction: column; flex: 1; }
.card-body p { color: var(--muted); font-size: 1rem; flex: 1; }
.card-body .link-arrow { align-self: flex-start; }
.ph { /* clearly labeled photo placeholder */
  width: 100%; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .3rem; text-align: center; padding: 1rem;
  background: repeating-linear-gradient(135deg, #efe9da, #efe9da 14px, #f6f3ec 14px, #f6f3ec 28px); color: var(--gold-dark); font-size: .8rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
}
.ph small { font-weight: 500; letter-spacing: 0; text-transform: none; color: var(--muted); }
@media (max-width: 960px) { .grid-services { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .grid-services { grid-template-columns: 1fr; } }

/* 9. SECTIONS ----------------------------------------------------------- */
/* Detail strip */
.detail-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--s4); }
.detail { margin: 0; }
.detail img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: var(--r-lg); box-shadow: var(--shadow); }
.detail figcaption { margin-top: var(--s3); font-size: var(--fs-small); color: var(--muted); }
.detail figcaption strong { display: block; color: var(--navy); font-size: 1rem; }
.cta-row { display: flex; flex-wrap: wrap; gap: var(--s3); margin-top: var(--s5); }
@media (max-width: 700px) {
  .detail-grid { grid-auto-flow: column; grid-template-columns: none; grid-auto-columns: 78%; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: var(--s3); margin-inline: calc(var(--gutter) * -1); padding-inline: var(--gutter); scrollbar-width: thin; }
  .detail { scroll-snap-align: center; }
}

/* Why */
.why { display: grid; grid-template-columns: 5fr 6fr; gap: clamp(2rem, 6vw, 5rem); align-items: center; }
.why-img img { border-radius: var(--r-lg); box-shadow: var(--shadow-lg); width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.why-list { display: grid; gap: var(--s4); margin-top: var(--s5); }
.why-list li { display: grid; grid-template-columns: 26px 1fr; gap: var(--s3); }
.why-list svg { width: 24px; height: 24px; color: var(--gold-dark); margin-top: 2px; }
.why-list h3 { margin: 0 0 .15rem; font-size: 1.1rem; font-family: var(--font-body); }
.why-list p { margin: 0; color: var(--muted); font-size: 1rem; }
@media (max-width: 860px) { .why { grid-template-columns: 1fr; } .why-img img { aspect-ratio: 4 / 3; } }

/* Recent work */
.mosaic { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s3); }
.mosaic a { display: block; overflow: hidden; border-radius: var(--r); aspect-ratio: 1 / 1; background: var(--cream); }
.mosaic a:nth-child(1), .mosaic a:nth-child(4), .mosaic a:nth-child(9) { grid-column: span 2; aspect-ratio: 2 / 1; }
.mosaic img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s; }
.mosaic a:hover img { transform: scale(1.03); }
@media (max-width: 700px) {
  .mosaic { grid-template-columns: 1fr 1fr; gap: .5rem; }
  .mosaic a:nth-child(1), .mosaic a:nth-child(4), .mosaic a:nth-child(9) { grid-column: span 2; aspect-ratio: 16 / 10; }
}

/* Reviews (hidden until real reviews are added) */
.reviews-box { border: 1px dashed var(--gold-dark); border-radius: var(--r-lg); padding: var(--s6); text-align: center; background: #fff; }
.stars { color: var(--gold); letter-spacing: .15em; font-size: 1.4rem; }

/* Process */
.steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--s4); counter-reset: step; }
.steps li { counter-increment: step; position: relative; padding-top: 3.2rem; }
.steps li::before { content: counter(step); position: absolute; top: 0; left: 0; width: 2.4rem; height: 2.4rem; display: grid; place-items: center; border-radius: 50%; background: var(--navy); color: var(--gold-light); font: 700 1.05rem var(--font-head); }
.steps li::after { content: ""; position: absolute; top: 1.2rem; left: 3rem; right: -.5rem; height: 1px; background: var(--line); }
.steps li:last-child::after { display: none; }
.steps h3 { font-size: 1.05rem; font-family: var(--font-body); margin-bottom: .3rem; }
.steps p { font-size: .95rem; color: var(--muted); margin: 0; }
@media (max-width: 860px) {
  .steps { grid-template-columns: 1fr; gap: var(--s5); }
  .steps li { padding: 0 0 0 3.6rem; min-height: 2.6rem; }
  .steps li::after { display: none; }
}

/* Areas */
.areas { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2rem, 6vw, 4rem); align-items: center; }
.chips { display: flex; flex-wrap: wrap; gap: .6rem; }
.chips a, .chips span { display: inline-block; padding: .6rem 1.1rem; border: 1px solid rgba(255,255,255,.28); border-radius: 999px; color: #fff; text-decoration: none; font-weight: 600; font-size: .98rem; }
.chips a:hover { background: var(--gold); border-color: var(--gold); color: var(--navy); }
.chips .more { border-style: dashed; color: #b9c5d0; font-weight: 500; }
@media (max-width: 860px) { .areas { grid-template-columns: 1fr; } }

/* 10. FORM -------------------------------------------------------------- */
.estimate { display: grid; grid-template-columns: 5fr 6fr; gap: clamp(2rem, 6vw, 5rem); align-items: start; }
.estimate-side p { color: var(--muted); }
.contact-lines { margin-top: var(--s5); display: grid; gap: var(--s3); font-weight: 600; }
.contact-lines a { text-decoration: none; }
.contact-lines a:hover { text-decoration: underline; }
.form-card { background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg); padding: clamp(1.25rem, 4vw, 2.25rem); box-shadow: var(--shadow); }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s4); }
.field { display: flex; flex-direction: column; gap: .35rem; }
.field--full { grid-column: 1 / -1; }
.field label { font-weight: 600; font-size: .92rem; color: var(--navy); }
.field .opt { font-weight: 400; color: var(--muted); }
.field input, .field select, .field textarea {
  width: 100%; min-height: 50px; padding: .7rem .9rem; font: inherit; font-size: 1rem; color: var(--ink);
  background: #fff; border: 1.5px solid #c9c3b3; border-radius: var(--r-sm);
}
.field textarea { min-height: 120px; resize: vertical; }
.field input[type="file"] { padding: .6rem; font-size: .92rem; }
.field input:focus, .field select:focus, .field textarea:focus { outline: 3px solid rgba(196,153,71,.55); outline-offset: 0; border-color: var(--gold-dark); }
.field [aria-invalid="true"] { border-color: var(--error); }
.field-error { color: var(--error); font-size: .85rem; min-height: 0; }
.field-hint { font-size: .82rem; color: var(--muted); }
.hp { position: absolute; left: -9999px; height: 0; overflow: hidden; }
.form-note { font-size: .82rem; color: var(--muted); margin: var(--s3) 0 0; }
.form-success { text-align: center; padding: var(--s6) var(--s3); }
.form-success h3 { font-size: 1.5rem; }
.form-success .check { width: 56px; height: 56px; margin: 0 auto var(--s4); border-radius: 50%; background: var(--ok); color: #fff; display: grid; place-items: center; }
.form-success .check svg { width: 28px; height: 28px; }
.form-error-banner { background: #fdecea; color: var(--error); border-radius: var(--r-sm); padding: .8rem 1rem; margin-bottom: var(--s4); font-size: .95rem; }
@media (max-width: 860px) { .estimate { grid-template-columns: 1fr; } }
@media (max-width: 520px) { .form-grid { grid-template-columns: 1fr; } .field input, .field select, .field textarea { font-size: 16px; } }

/* 11. FOOTER + STICKY BAR ---------------------------------------------- */
.site-footer { background: var(--navy); color: #c5d0da; padding: var(--s8) 0 var(--s6); font-size: .98rem; }
.footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1.2fr; gap: var(--s6); }
.footer-brand img { width: 150px; height: auto; border-radius: 50%; margin-bottom: var(--s4); }
.footer-brand strong { color: #fff; display: block; font-family: var(--font-head); font-size: 1.1rem; }
.site-footer h3 { font: 700 .8rem var(--font-body); letter-spacing: .14em; text-transform: uppercase; color: var(--gold-light); margin-bottom: var(--s3); }
.site-footer li { margin-bottom: .45rem; }
.site-footer a { color: #e6ecf2; text-decoration: none; }
.site-footer a:hover { color: var(--gold-light); text-decoration: underline; }
.footer-bottom { margin-top: var(--s7); padding-top: var(--s5); border-top: 1px solid rgba(255,255,255,.14); display: flex; flex-wrap: wrap; gap: var(--s3) var(--s5); justify-content: space-between; font-size: .85rem; color: #98a8b6; }
@media (max-width: 860px) { .footer-grid { grid-template-columns: 1fr 1fr; } .footer-brand { grid-column: 1 / -1; } }
@media (max-width: 480px) { .footer-grid { grid-template-columns: 1fr; } }

.sticky-bar { display: none; }
@media (max-width: 960px) {
  .sticky-bar { display: grid; grid-template-columns: 1fr 1.4fr; position: fixed; left: 0; right: 0; bottom: 0; z-index: 90; background: #fff; border-top: 1px solid var(--line); box-shadow: 0 -6px 20px rgba(11,34,54,.12); padding: .55rem .6rem calc(.55rem + env(safe-area-inset-bottom)); gap: .5rem; transform: translateY(110%); transition: transform .25s; }
  .sticky-bar.is-visible { transform: none; }
  .sticky-bar .btn { min-height: 46px; padding: .6rem .8rem; font-size: .85rem; }
  body { padding-bottom: 0; }
  .site-footer { padding-bottom: calc(var(--s6) + 70px); }
}

/* 12. UTILITIES --------------------------------------------------------- */
.text-center { text-align: center; }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
[hidden] { display: none !important; }

/* 13. PHASE 1.1 additions ---------------------------------------------- */
.text-link { font-weight: 700; font-size: .9rem; letter-spacing: .03em; text-transform: uppercase; text-decoration: none; color: var(--navy); padding: .5rem .25rem; border-bottom: 2px solid transparent; cursor: pointer; }
.text-link:hover { border-color: var(--gold); color: var(--navy); }
.contact-alt { margin: var(--s5) 0 var(--s3); font-weight: 600; color: var(--navy); }
.contact-btns { display: flex; flex-wrap: wrap; gap: var(--s3); }
.contact-phone { margin: var(--s4) 0 0; font-size: var(--fs-small); color: var(--muted); }
.pref { border: 0; padding: 0; margin: 0; min-width: 0; display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .6rem; }
.pref legend { float: left; padding: 0; margin-right: .5rem; font-weight: 600; font-size: .92rem; color: var(--navy); line-height: 44px; }
.pref label { display: inline-flex; cursor: pointer; }
.pref input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.pref span { display: inline-flex; align-items: center; min-height: 44px; padding: 0 1.2rem; border: 1.5px solid #c9c3b3; border-radius: 999px; font-weight: 600; font-size: .95rem; background: #fff; }
.pref input:checked + span { background: var(--navy); color: #fff; border-color: var(--navy); }
.pref input:focus-visible + span { outline: 3px solid var(--gold); outline-offset: 2px; }
.toast { position: fixed; left: 50%; bottom: 84px; transform: translateX(-50%); z-index: 120; width: min(92vw, 26rem); background: var(--navy); color: #fff; padding: .9rem 1.1rem; border-radius: var(--r); box-shadow: var(--shadow-lg); font-size: .95rem; }
.toast a { color: var(--gold-light); }
.toast code { background: rgba(255,255,255,.14); padding: 0 .3rem; border-radius: 3px; }
@media (min-width: 961px) { .toast { bottom: 24px; } }
.site-footer li a { display: inline-block; padding: .3rem 0; }
.card-body .link-arrow { margin-top: -.3rem; }
@media (max-width: 960px) { .nav a { min-height: 44px; } }

@media (max-width: 860px) {
  .estimate { display: flex; flex-direction: column; gap: var(--s5); }
  .estimate-side { display: contents; }
  .estimate-side > *:not(.contact-direct) { order: 1; margin-bottom: 0; }
  .form-card { order: 2; }
  .contact-direct { order: 3; }
  .contact-alt { margin-top: 0; }
}

.field.pref { flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: flex-start; }
.pref legend { float: none; width: 100%; line-height: 1.4; margin: 0 0 .1rem; padding: 0; }

/* Phase 1.2: 7 services + CTA tile */
.card--cta { grid-column: span 2; background: var(--navy); border-color: var(--navy); justify-content: center; }
.card--cta:hover { transform: none; box-shadow: var(--shadow-sm); }
.card--cta .card-body { padding: clamp(1.5rem, 4vw, 2.5rem); flex: 0 1 auto; }
.card--cta h3 { color: #fff; font-size: clamp(1.4rem, 2.4vw, 1.8rem); }
.card--cta p { color: #c5d0da; flex: 0 1 auto; }
.card--cta .cta-row { margin-top: var(--s4); }
@media (max-width: 960px) { .card--cta { grid-column: span 1; } }
@media (max-width: 600px) { .card--cta { grid-column: auto; } }
/* Before / After slider */
.ba-wrap { display: grid; grid-template-columns: 4fr 6fr; gap: clamp(1.5rem, 5vw, 4rem); align-items: center; }
.ba { position: relative; margin: 0; aspect-ratio: 4 / 3; border-radius: var(--r-lg); overflow: hidden; box-shadow: var(--shadow-lg); background: var(--navy); --pos: 50%; user-select: none; }
.ba-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ba-after { clip-path: inset(0 0 0 var(--pos)); }
.ba-handle { position: absolute; top: 0; bottom: 0; left: var(--pos); width: 3px; background: #fff; transform: translateX(-50%); box-shadow: 0 0 8px rgba(0,0,0,.35); pointer-events: none; }
.ba-handle svg { position: absolute; top: 50%; left: 50%; width: 44px; height: 44px; padding: 8px; transform: translate(-50%, -50%); background: var(--gold); color: var(--navy); border-radius: 50%; box-shadow: var(--shadow); }
.ba-tag { position: absolute; top: 12px; padding: .3rem .7rem; border-radius: 999px; background: rgba(11,34,54,.82); color: #fff; font-size: .75rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; pointer-events: none; }
.ba-tag--before { left: 12px; } .ba-tag--after { right: 12px; }
.ba-range { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: ew-resize; touch-action: pan-y; }
.ba:focus-within .ba-handle svg { outline: 3px solid #fff; outline-offset: 2px; }
.h-lg { font-size: var(--fs-h2); }
@media (max-width: 860px) { .ba-wrap { grid-template-columns: 1fr; } .ba { order: -1; } }
/* Phase 2: services dropdown */
.has-sub { position: relative; }
.sub { position: absolute; top: 100%; left: -1rem; min-width: 250px; padding: .5rem; background: #fff; border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--shadow-lg); display: none; z-index: 110; }
.has-sub:hover > .sub, .has-sub:focus-within > .sub { display: block; }
.sub a { display: block; padding: .6rem .8rem; border: 0; border-radius: var(--r-sm); font-weight: 500; }
.sub a:hover { background: var(--cream); }
@media (max-width: 960px) {
  .sub { position: static; display: block; min-width: 0; padding: 0 0 .25rem 1rem; border: 0; box-shadow: none; }
  .sub a { padding: .7rem 0; font-size: 1rem; font-weight: 500; color: var(--muted); border-bottom: 0; }
}
/* Phase 2: service pages */
.hero--page .container { padding-block: clamp(2.5rem, 7vw, 5rem) clamp(2.5rem, 7vw, 4.5rem); }
.hero--page .hero-copy { max-width: 40rem; }
.hero--page h1 { font-size: clamp(2rem, 5vw + .3rem, 3.4rem); }
.crumbs { margin: 0 0 var(--s4); font-size: .85rem; color: #c9d4de; }
.crumbs ol { display: flex; flex-wrap: wrap; gap: .25rem .5rem; margin: 0; padding: 0; list-style: none; }
.crumbs li + li::before { content: "/"; margin-right: .5rem; color: rgba(255,255,255,.4); }
.crumbs a { color: #e6ecf2; text-decoration: none; }
.crumbs a:hover { color: var(--gold-light); text-decoration: underline; }
.prose p { color: var(--ink); }
.prose p:last-child { margin-bottom: 0; }
.why--rev .why-img { order: 2; }
@media (max-width: 860px) { .why--rev .why-img { order: 0; } }
.photo-grid { display: grid; grid-template-columns: repeat(var(--cols, 3), 1fr); gap: var(--s3); margin: 0; padding: 0; list-style: none; }
.photo-grid figure { margin: 0; overflow: hidden; border-radius: var(--r); background: var(--cream); }
.photo-grid img { width: 100%; aspect-ratio: var(--ar, 4 / 5); object-fit: cover; }
@media (max-width: 700px) { .photo-grid { grid-template-columns: 1fr 1fr; gap: .5rem; } }
.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(1.5rem, 5vw, 3.5rem); }
.two-col h3 { margin-bottom: var(--s3); }
@media (max-width: 860px) { .two-col { grid-template-columns: 1fr; } }
.faq { max-width: 50rem; }
.faq details { border-bottom: 1px solid var(--line); }
.faq summary { cursor: pointer; list-style: none; padding: 1.1rem 2.2rem 1.1rem 0; font-weight: 700; color: var(--navy); position: relative; min-height: 44px; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; position: absolute; right: .25rem; top: 50%; transform: translateY(-50%); font-size: 1.5rem; font-weight: 400; color: var(--gold-dark); }
.faq details[open] summary::after { content: "–"; }
.faq details p { margin: 0 0 1.1rem; color: var(--muted); }
.cta-band { text-align: center; }
.cta-band .cta-row { justify-content: center; }
.cta-band p { max-width: 36rem; margin-inline: auto; }
.pill-links { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: var(--s4); }
.pill-links a { padding: .5rem 1rem; border: 1px solid var(--line); border-radius: 999px; text-decoration: none; font-weight: 600; font-size: .95rem; background: #fff; }
.pill-links a:hover { border-color: var(--gold); }
.note-box { border-left: 3px solid var(--gold); background: #fff; padding: var(--s4) var(--s5); border-radius: 0 var(--r) var(--r) 0; color: var(--muted); }
.grid-services--3 { grid-template-columns: repeat(3, 1fr); }
.nav a[aria-current="true"] { border-color: var(--gold); }

/* Phase 3: core pages */
.page-head { background: var(--navy); color: #e8edf2; padding-block: clamp(2.25rem, 6vw, 4rem); }
.page-head h1 { color: #fff; font-size: clamp(2rem, 5vw + .3rem, 3.2rem); margin-bottom: var(--s3); }
.page-head .hero-sub { margin: 0; max-width: 38rem; }
.page-head .eyebrow { color: var(--gold-light); }
.pillars { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s5); }
.pillar { background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg); padding: var(--s5); }
.pillar h3 { margin-bottom: var(--s2); }
.pillar p { margin: 0; color: var(--muted); }
@media (max-width: 960px) { .pillars { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .pillars { grid-template-columns: 1fr; } }
.three-up { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s5); }
.three-up h3 { font-family: var(--font-body); font-size: 1.1rem; margin-bottom: var(--s2); }
.three-up p { color: var(--muted); margin: 0; }
@media (max-width: 700px) { .three-up { grid-template-columns: 1fr; } }
.cities { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--s3); margin: 0; padding: 0; list-style: none; }
.city { background: #fff; border: 1px solid var(--line); border-radius: var(--r); padding: var(--s4) var(--s5); display: flex; flex-direction: column; gap: .15rem; scroll-margin-top: 100px; }
.city strong { font: 700 1.15rem var(--font-head); color: var(--navy); }
.city span { font-size: var(--fs-small); color: var(--muted); }
.city--more { border-style: dashed; background: transparent; }
@media (max-width: 960px) { .cities { grid-template-columns: 1fr 1fr; } }
.legal { max-width: 46rem; }
.legal h2 { font-size: 1.4rem; margin: 2rem 0 .6rem; }
.legal h2:first-child { margin-top: 0; }
.legal ul { list-style: disc; padding-left: 1.25rem; margin: 0 0 var(--s4); }
.legal li { margin-bottom: .3rem; }

/* Gallery */
.g-section { padding-block: clamp(1.75rem, 4vw, 3rem); }
.g-filters { display: flex; flex-wrap: wrap; gap: .5rem; }
.g-filter { min-height: 44px; padding: .5rem 1.05rem; border: 1.5px solid #c9c3b3; border-radius: 999px; background: #fff; color: var(--navy); font: 600 .95rem var(--font-body); cursor: pointer; }
.g-filter:hover { border-color: var(--gold-dark); }
.g-filter[aria-pressed="true"] { background: var(--navy); border-color: var(--navy); color: #fff; }
.g-num { opacity: .65; font-weight: 500; margin-left: .2rem; }
.g-status { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .25rem 1rem; margin: var(--s4) 0; font-size: var(--fs-small); color: var(--muted); }
#g-links a { margin-left: 1rem; font-weight: 700; }
.g-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--s3); margin: 0; padding: 0; list-style: none; }
.g-cell[hidden] { display: none; }
.g-item { display: block; width: 100%; padding: 0; border: 0; border-radius: var(--r); overflow: hidden; background: var(--cream); cursor: zoom-in; aspect-ratio: 1 / 1; }
.g-item img { width: 100%; height: 100%; object-fit: cover; transition: transform .35s; }
.g-item:hover img { transform: scale(1.04); }
@media (max-width: 960px) { .g-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 600px) { .g-grid { grid-template-columns: repeat(2, 1fr); gap: .5rem; } .g-filters { flex-wrap: nowrap; overflow-x: auto; margin-inline: calc(var(--gutter) * -1); padding-inline: var(--gutter); padding-bottom: .25rem; scrollbar-width: none; } .g-filter { flex: none; } }

/* Lightbox */
.lb { border: 0; padding: 0; margin: 0; width: 100vw; height: 100vh; height: 100dvh; max-width: none; max-height: none; background: rgba(6,18,30,.96); color: #fff; }
.lb::backdrop { background: rgba(6,18,30,.96); }
.lb[open] { display: grid; place-items: center; }
.lb-fig { margin: 0; width: 100%; padding: 64px 64px 16px; display: flex; flex-direction: column; align-items: center; gap: .75rem; touch-action: pan-y; }
.lb-fig img { max-width: 100%; max-height: calc(100dvh - 150px); width: auto; height: auto; object-fit: contain; border-radius: var(--r-sm); }
.lb-fig figcaption { max-width: 44rem; text-align: center; font-size: .95rem; color: #dbe3ea; }
.lb-count { display: block; margin-top: .25rem; font-size: .8rem; color: #98a8b6; }
.lb-btn { position: absolute; width: 48px; height: 48px; display: grid; place-items: center; border: 0; border-radius: 50%; background: rgba(255,255,255,.14); color: #fff; cursor: pointer; }
.lb-btn:hover { background: rgba(255,255,255,.28); }
.lb-btn svg { width: 24px; height: 24px; }
.lb-close { top: 12px; right: 12px; }
.lb-prev { left: 12px; top: 50%; transform: translateY(-50%); }
.lb-next { right: 12px; top: 50%; transform: translateY(-50%); }
.lb-btn:focus-visible { outline: 3px solid var(--gold); outline-offset: 2px; }
@media (max-width: 700px) { .lb-fig { padding: 60px 8px 16px; } .lb-prev, .lb-next { top: auto; bottom: 14px; transform: none; } .lb-prev { left: 14px; } .lb-next { right: 14px; } }

/* tap targets */
.crumbs a { display: inline-block; padding: .55rem 0; }
.contact-phone a, .footer-bottom a { display: inline-block; padding: .6rem 0; }
.crumbs li { display: flex; align-items: center; }

/* Phase 5: form states */
.form-demo { border: 2px dashed var(--error); border-radius: var(--r); padding: var(--s5); background: #fff8f7; text-align: center; }
.form-demo .demo-tag { display: inline-block; margin: 0 0 var(--s3); padding: .25rem .7rem; border-radius: 999px; background: var(--error); color: #fff; font-size: .75rem; font-weight: 800; letter-spacing: .12em; }
.form-demo h3 { color: var(--error); }
.form-unavailable { text-align: center; padding: var(--s6) var(--s3); }
.form-unavailable .cta-row { justify-content: center; }
.form-unavailable h3 { font-size: 1.35rem; }

.ts-wrap { margin-top: var(--s4); min-height: 0; }
.ts-wrap .field-error { display: block; margin-top: .25rem; }
