/*
V7-HEADER
File:     contact.css
Path:     /assets/css/contact/contact.css
Version:  v7.4.0
Issued:   2026-03-18
Author:   Buktika Webdesk (Binka)
Purpose:  Contact page token consumer. PIL-12 v1.0.0 + DOC-02 + DOC-03 §16 + ai.md HARD RULES.
          page-bg:#f5f3ef | page-primary:teal-deep #2f5c68 | page-secondary:mama-amber #f5b014 | page-depth:stem-olive #464820
ChangeLog:
  v7.3.0 (2026-06-13): MamaDEX contact card and CTA aligned to Colour Map v3.15.0.
    CHANGED - Mamadex border and CTA gradient from mama-earth brown to mama-violet.
  v7.2.0 (2026-03-18): border-left-width: 4px added to .contact-card and .office-card.
                border-left-color overrides were present but invisible — left side was
                same 1.5px as all other borders. 4px width makes the accent left border
                render correctly per canonical card pattern (faq.css / edutower.css).
  v7.1.0 (2026-03-18): global.css v3.16.0 compliance — section heading border-bottom.
    V1 REMOVED: padding-bottom: 0.75rem from .sdx-card-section h2 — owned by global.css.
    V2 REMOVED: border-bottom: 2px solid var(--page-primary) from .sdx-card-section h2 —
                global.css v3.16.0 now owns this canonically.
    V3 REMOVED: [data-theme="dark"] border-bottom-color: rgba(from var(--page-primary) r g b / 0.30) —
                global.css v3.16.0 owns dark mode rule at 0.40 opacity. Per-page override
                redundant AND used wrong opacity (0.30 vs canonical 0.40).
    FLAG: --page-bg: #f5f3ef is a bare hex. No current token maps to this value — held for owner.
    FLAG: .btn-form-primary:hover uses brightness(0.88) — should be 1.08 per ai.md. Held for owner.
  v7.0.0 (2026-03-18): Full rebuild. 21 violations resolved. See contact.html v5.0.0 changelog.
    C2: vignette 0.18->0.20 per PIL-12 §3. C3+C4: hero-wrap/hero non-canonical properties removed.
    C5: .hero .intro forbidden overrides removed per DOC-02 §3.3.3. C6: gap 1.5rem->1rem per §3.3.5.
    C7: btn-hero-primary flat fill -> gradient + inset ring per PIL-12 §5.1 + DOC-03 §4.1.
    C8+C11+C12 HARD: bare hex on hover -> filter:brightness(). C9: contact-section geometry removed.
    C10: card border 1px var(--border) -> 1.5px solid var(--page-primary) per PIL-12 §6.
    C13 HARD: callout boxes -> rgba(120,113,108,0.08) + 1px solid var(--border) per DOC-03 §16.
    C14: 9 responsive px breakpoints removed. C15: duplicate dark rule + var(--surface-alt) removed.
  v6.2.0 (2026-03-06): Previous compliance pass.
*/

/* 0) depends on: global.css, themes.css, partials/footer.css
      header.css lifted by includes.js, MUST NOT be linked in <head> */

/* 1) Page variable binding */
.page-contact {
  --page-bg:           #f5f3ef;
  --page-primary:      var(--sdx-color-teal-deep);
  --page-secondary:    var(--sdx-color-mama-amber);
  --page-depth:        var(--sdx-color-stem-olive);
  --page-dark-base:    var(--sdx-color-livingtower-dark-base);
  --page-dark-surface: var(--sdx-color-livingtower-dark-surface);
  --hero-image:         url('/assets/images/contact/contact-hero.webp');
  --hero-vignette-from: rgba(47, 92, 104, 0.20);
  --hero-vignette-to:   rgba(47, 92, 104, 0);
  background: var(--page-bg);
  color: var(--fg);
}

/* 2) Base surfaces */
.page-contact .container { max-width: 1200px; margin: 0 auto; padding: 3rem 2rem; }

/* 3) Hero */
.page-contact .hero-wrap {
  background-image: var(--hero-image);
  background-size: cover;
  background-position: center;
  min-height: var(--hero-min);
}
.page-contact .hero-wrap::before {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(to top, var(--hero-vignette-from) 0%, var(--hero-vignette-to) 32%);
}
.page-contact .hero {
  display: flex; align-items: center; justify-content: center;
  min-height: var(--hero-min); padding: 6rem 2rem;
}
.page-contact .hero-content { max-width: 52rem; margin: 0 auto; text-align: center; }
.page-contact .headline     { font-size: clamp(2.5rem, 5vw, 4rem); margin: 0 0 1.5rem; color: #ffffff; }
.page-contact .tagline      { color: var(--page-secondary); }
.page-contact .hero .intro  { max-width: 700px; margin: 0 auto; color: #ffffff; }
.page-contact .hero-actions { display: flex; gap: 1rem; flex-wrap: wrap; justify-content: center; align-items: center; margin-top: 2.5rem; }

.page-contact .btn-hero-primary,
.page-contact .btn-hero-secondary {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 0.875rem 1.75rem; font-family: var(--text-font); font-size: 1rem; font-weight: 600;
  text-decoration: none; border-radius: 6px; min-height: 3rem; cursor: pointer;
  transition: filter 0.28s ease, box-shadow 0.28s ease;
}
body.page-contact .btn-hero-primary {
  background: linear-gradient(135deg, var(--page-primary) 0%, var(--page-depth) 100%);
  color: #ffffff;
  box-shadow: inset 0 0 0 2px rgba(255,255,255,0.80), 0 4px 14px rgba(47,92,104,0.40);
}
body.page-contact .btn-hero-primary:hover {
  filter: brightness(1.08);
  box-shadow: inset 0 0 0 2px rgba(255,255,255,0.80), 0 8px 24px rgba(47,92,104,0.50);
}
body.page-contact .btn-hero-secondary {
  background: rgba(255,255,255,0.18); backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px); color: #ffffff;
  border: 1.5px solid rgba(255,255,255,0.60); box-shadow: 0 2px 12px rgba(0,0,0,0.15);
}

/* 4) Typography */
.page-contact .sdx-card-section h2 {
  font-family: var(--headline-font); font-size: clamp(1.75rem, 3vw, 2rem);
  font-weight: 700; color: var(--fg); margin: 0 0 1.5rem;
  /* border-bottom + padding-bottom owned by global.css v3.16.0 — var(--page-primary). MUST NOT override. */
}

/* 5) Sections: none -- .sdx-card-section in global.css handles all section surfaces */

/* 6) Cards: PIL-12 §6 */
.page-contact .contact-card,
.page-contact .office-card {
  display: flex; flex-direction: column; padding: 2rem; background: var(--card);
  border-radius: 0.75rem; border: 1.5px solid var(--page-primary);
  border-left-width: 4px;
  box-shadow: var(--card-shadow); transition: transform 0.30s ease, box-shadow 0.30s ease;
}
.page-contact .contact-card:hover,
.page-contact .office-card:hover  { transform: translateY(-3px); box-shadow: var(--card-shadow-hover); }
.page-contact .contact-card-general   { border-left-color: var(--sdx-color-stone); }
.page-contact .contact-card-farmers   { border-left-color: var(--sdx-color-green-deep); }
.page-contact .contact-card-mamadex   { border-left-color: var(--sdx-color-mama-violet); }
.page-contact .contact-card-viridians { border-left-color: var(--sdx-color-purple-deep); }
.page-contact .contact-card-reporters   { border-left-color: var(--sdx-color-mama-amber); }
.page-contact .contact-card-edutower  { border-left-color: var(--sdx-color-teal-deep); }
.page-contact .contact-card-top,
.page-contact .office-top     { display: flex; align-items: center; gap: 1rem; margin-bottom: 0.75rem; }
.page-contact .contact-icon   { width: 4.6875rem; height: 4.6875rem; flex-shrink: 0; }
.page-contact .office-icon    { width: 2rem; height: 2rem; flex-shrink: 0; }
.page-contact .contact-card h3,
.page-contact .office-card h3 { font-size: 1.125rem; font-weight: 600; color: var(--fg); margin: 0; line-height: 1.3; }
.page-contact .contact-card p,
.page-contact .office-card p  { font-size: var(--body); line-height: 1.7; color: var(--muted); margin: 0 0 1.5rem; flex: 1; }
.page-contact .contact-link   { margin: 0; }
.page-contact .contact-link a {
  color: var(--page-primary); font-weight: 600; text-decoration: none; word-break: break-word;
  border-bottom: 1px solid rgba(from var(--page-primary) r g b / 0.30); transition: filter 0.28s ease;
}
.page-contact .contact-link a:hover { filter: brightness(0.85); }
.page-contact .contact-grid { display: grid; grid-template-columns: 1fr; gap: 1.5rem; margin-top: 2rem; }
.page-contact .office-grid  { display: grid; grid-template-columns: 1fr; gap: 1.5rem; margin-top: 2rem; }

/* 7) Buttons and CTAs */
.page-contact .sdx-btn-primary {
  background: linear-gradient(135deg, var(--page-primary) 0%, var(--page-depth) 100%);
  color: #ffffff; box-shadow: 0 4px 14px rgba(47,92,104,0.25);
}
.page-contact .contact-cta {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 0.875rem 1.75rem; font-family: var(--text-font); font-size: 1rem; font-weight: 600;
  text-decoration: none; border-radius: 0.375rem; min-height: 3rem; cursor: pointer;
  color: #ffffff; transition: filter 0.28s ease;
}
.page-contact .contact-cta-farmers   { background: linear-gradient(135deg, var(--sdx-color-green-deep) 0%, var(--sdx-color-stem-olive) 100%); }
.page-contact .contact-cta-mamadex   { background: linear-gradient(135deg, var(--sdx-color-mama-violet) 0%, var(--sdx-color-mama-depth) 100%); }
.page-contact .contact-cta-viridians { background: linear-gradient(145deg, var(--sdx-color-purple-deep) 0%, var(--sdx-color-teal-deep) 100%); }
.page-contact .contact-cta-reporters   { background: linear-gradient(145deg, var(--sdx-color-mama-amber) 0%, var(--sdx-color-coral) 100%); }
.page-contact .contact-cta-edutower  { background: linear-gradient(135deg, var(--sdx-color-teal-deep) 0%, var(--sdx-color-stem-olive) 100%); }
.page-contact .contact-cta:hover     { filter: brightness(1.08); }

/* 8) Form */
.page-contact .form-card {
  background: var(--card); border: 1.5px solid var(--page-primary);
  border-radius: 0.75rem; padding: 2rem; max-width: 720px;
  margin: 1.5rem auto 0; box-shadow: var(--card-shadow);
}
.page-contact .form-intro        { font-size: 1rem; line-height: 1.6; color: var(--muted); margin: 0 0 1.5rem; }
.page-contact .contact-form      { display: flex; flex-direction: column; gap: 1.5rem; }
.page-contact .form-row          { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
.page-contact .form-field        { display: flex; flex-direction: column; gap: 0.375rem; }
.page-contact .form-field-header { display: flex; justify-content: space-between; align-items: baseline; }
.page-contact .form-field label  { font-size: var(--body); font-weight: 500; color: var(--fg); }
.page-contact .form-optional     { font-size: 0.8125rem; font-weight: 400; color: var(--muted); }
.page-contact .form-field input,
.page-contact .form-field select,
.page-contact .form-field textarea {
  padding: 0.875rem 1rem; font-size: 1rem; font-family: var(--text-font);
  color: var(--fg); background: var(--bg); border: 1px solid var(--border);
  border-radius: 0.375rem; transition: border-color 0.30s ease, box-shadow 0.30s ease;
}
.page-contact .form-field input:focus,
.page-contact .form-field select:focus,
.page-contact .form-field textarea:focus {
  outline: none; border-color: var(--page-primary);
  box-shadow: 0 0 0 3px rgba(from var(--page-primary) r g b / 0.12);
}
.page-contact .form-field textarea { resize: vertical; min-height: 9rem; }
.page-contact .form-counter        { font-size: 0.8125rem; color: var(--muted); }
.page-contact .counter-warn        { color: var(--sdx-color-mama-amber); }
.page-contact .counter-limit       { color: var(--sdx-color-coral); font-weight: 600; }
.page-contact .field-error         { border-color: var(--sdx-color-coral) !important; }
.page-contact .field-error-msg     { font-size: var(--body); color: var(--sdx-color-coral); margin: 0; }
.page-contact .form-general-error,
.page-contact .form-note {
  padding: 1.25rem; background: rgba(120,113,108,0.08); border: 1px solid var(--border);
  border-radius: 0.5rem; margin: 0; line-height: 1.5;
}
.page-contact .form-general-error { font-size: var(--body); color: var(--sdx-color-coral); }
.page-contact .form-note          { font-size: var(--body); color: var(--muted); }
.page-contact .form-actions       { display: flex; gap: 1rem; flex-wrap: wrap; margin-top: 0.5rem; }
.page-contact .btn-form-primary {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 0.875rem 2rem; font-family: var(--text-font); font-size: 1rem; font-weight: 600;
  border-radius: 0.375rem; border: none; cursor: pointer; min-height: 3rem;
  background: linear-gradient(135deg, var(--page-primary) 0%, var(--page-depth) 100%);
  color: #ffffff; box-shadow: 0 2px 8px rgba(47,92,104,0.25);
  transition: filter 0.28s ease, box-shadow 0.28s ease;
}
.page-contact .btn-form-primary:hover    { filter: brightness(0.88); box-shadow: 0 4px 12px rgba(47,92,104,0.40); }
.page-contact .btn-form-primary:disabled { opacity: 0.65; cursor: not-allowed; filter: none; }
.page-contact .form-direct      { font-size: var(--body); color: var(--muted); margin: 0; text-align: center; }
.page-contact .form-direct-link {
  color: var(--page-primary); text-decoration: none;
  border-bottom: 1px solid rgba(from var(--page-primary) r g b / 0.30); transition: filter 0.28s ease;
}
.page-contact .form-direct-link:hover { filter: brightness(0.85); }
.page-contact .form-honeypot { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.page-contact .form-success       { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 2.5rem 1.5rem; gap: 1rem; }
.page-contact .form-success-icon  { width: 3.5rem; height: 3.5rem; border-radius: 50%; background: rgba(from var(--page-primary) r g b / 0.10); color: var(--page-primary); font-size: 1.5rem; display: flex; align-items: center; justify-content: center; font-weight: 700; }
.page-contact .form-success-title { font-family: var(--headline-font); font-size: 1.5rem; font-weight: 700; color: var(--fg); margin: 0; }
.page-contact .form-success-body  { font-size: 1rem; line-height: 1.6; color: var(--muted); max-width: 480px; margin: 0; }

/* 9) Media queries */
@media (max-width: 480px) {
  .page-contact .hero { padding: 3rem 1.25rem; }
  .page-contact .hero-actions { flex-direction: column; width: 100%; }
  .page-contact .btn-hero-primary, .page-contact .btn-hero-secondary { width: 100%; justify-content: center; }
}
@media (min-width: 640px)  { .page-contact .form-row { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 768px)  { .page-contact .contact-grid { grid-template-columns: repeat(2, 1fr); } .page-contact .office-grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1024px) { .page-contact .contact-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 768px)  { .page-contact .container { padding: 2rem 1.5rem; } }
@media (max-width: 640px)  { .page-contact .form-card { padding: 1.5rem; } .page-contact .contact-card, .page-contact .office-card { padding: 1.75rem; } .page-contact .form-actions { flex-direction: column; } .page-contact .btn-form-primary { width: 100%; } }
@media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } }

/* 10) Dark mode: [data-theme="dark"] ONLY. @media prefers-color-scheme MUST NOT appear. PIL-12 §8. */
[data-theme="dark"] .page-contact                       { background: var(--page-dark-base); color: var(--sdx-color-ui-dark-text); }
/* border-bottom-color on .sdx-card-section h2 owned by global.css v3.16.0 — rgba(from var(--page-primary) r g b / 0.40). */
[data-theme="dark"] .page-contact .contact-card,
[data-theme="dark"] .page-contact .office-card,
[data-theme="dark"] .page-contact .form-card             { background: var(--card); }
[data-theme="dark"] .page-contact .form-direct-link      { color: var(--sdx-color-moon-glow); }
[data-theme="dark"] .page-contact .form-general-error,
[data-theme="dark"] .page-contact .form-note             { background: rgba(245,176,20,0.07); border-color: rgba(245,176,20,0.18); }
