/**
* SENTYAL Blueprint — Contact
*
* Supports query params ?subject=X and ?artist=X to pre-fill the form,
* since every CTA across the deployed site uses these. The form posts
* to /contact/submit (handler queued — until then, the form falls back
* to a mailto: link the user can send from their own email client).
*/
// Read subject/artist params for pre-fill (sanitize for output)
$qs_subject = isset($_GET['subject']) ? trim($_GET['subject']) : '';
$qs_artist = isset($_GET['artist']) ? trim($_GET['artist']) : '';
// Map subject slugs to readable subject lines
$subject_map = [
'visit-bainbridge' => 'Visit — Bainbridge Island',
'visit-park-city' => 'Visit — Park City',
'material-mediations' => 'Material Mediations exhibition',
'past-exhibition-archive' => 'Past exhibition archive request',
'collection-search' => 'Collection — looking for something specific',
'bespoke-viewing-room' => 'Bespoke Viewing Room request',
'art-visualizer-request' => 'Art Visualizer placement request',
];
$pretty_subject = $subject_map[$qs_subject] ?? ucwords(str_replace('-', ' ', $qs_subject));
// Build pre-filled subject line
$prefill_subject = '';
if ($qs_artist) {
$artist_pretty = ucwords(str_replace('-', ' ', $qs_artist));
$prefill_subject = "Inquiry about {$artist_pretty}";
} elseif ($pretty_subject) {
$prefill_subject = $pretty_subject;
}
$page_title = 'Contact — Write to JG Art Gallery';
$page_description = 'Write to JG Art Gallery. Inquire about a work, schedule a visit on Bainbridge Island or in Park City, request a bespoke Viewing Room, or open a provenance research file. We respond personally, usually same business day.';
require_once __DIR__ . '/../_shared/config.php'; $canonical_url = jg_canonical('/contact/');
$body_class = 'page-contact';
// === URL templatization =====
$canon_contact = jg_canonical('/contact/');
$canon_root = jg_canonical('/');
// === End URL templatization =====
$extra_head = <<
.cn-hero { background: var(--b); color: var(--w); padding: 120px 32px 80px; }
.cn-hero__inner { max-width: 920px; margin: 0 auto; }
.cn-hero .eyebrow { color: var(--o); }
.cn-hero .h1 { color: var(--w); margin: 16px 0 32px; }
.cn-hero .lede { color: rgba(255,255,255,0.78); }
.cn-form-wrap {
display: grid; grid-template-columns: 1.6fr 1fr; gap: 64px;
max-width: 1200px; margin: 0 auto;
}
.cn-form {
background: var(--w); border: 1px solid var(--bd);
padding: 48px 40px;
}
.cn-form__head { margin-bottom: 32px; }
.cn-form__tag {
font-family: var(--f-ui); font-size: 11px; font-weight: 700;
letter-spacing: 0.22em; text-transform: uppercase;
color: var(--o); margin-bottom: 14px;
}
.cn-form__h {
font-family: var(--f-ed); font-style: italic; font-weight: 400;
font-size: clamp(28px, 4vw, 38px); line-height: 1.1;
color: var(--b); margin: 0;
}
.cn-form__field { margin-bottom: 24px; }
.cn-form__field label {
display: block; font-family: var(--f-ui); font-size: 11px;
font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase;
color: var(--m); margin-bottom: 8px;
}
.cn-form__field input,
.cn-form__field textarea {
width: 100%; padding: 12px 14px;
font-family: var(--f-ui); font-size: 15px; line-height: 1.5; color: var(--b);
background: var(--bg); border: 1px solid var(--bd);
transition: border-color .15s;
box-sizing: border-box;
}
.cn-form__field input:focus,
.cn-form__field textarea:focus {
outline: none; border-color: var(--o);
}
.cn-form__field textarea { resize: vertical; min-height: 160px; }
.cn-form__row {
display: grid; grid-template-columns: 1fr 1fr; gap: 18px;
}
.cn-form__submit {
margin-top: 8px;
display: flex; gap: 12px; flex-wrap: wrap; align-items: center;
}
.cn-form__note {
font-family: var(--f-ui); font-size: 12px; line-height: 1.5; color: var(--m);
margin-top: 18px;
}
.cn-form__fallback {
margin-top: 24px; padding-top: 24px;
border-top: 1px solid var(--bd);
}
.cn-form__fallback h4 {
font-family: var(--f-ui); font-size: 11px; font-weight: 700;
letter-spacing: 0.18em; text-transform: uppercase;
color: var(--m); margin: 0 0 10px;
}
.cn-form__fallback p {
font-size: 14px; line-height: 1.6; color: var(--m); margin: 0;
}
.cn-side {
display: flex; flex-direction: column; gap: 28px;
}
.cn-channel {
background: var(--bg); border: 1px solid var(--bd); padding: 28px 24px;
}
.cn-channel__tag {
font-family: var(--f-ui); font-size: 11px; font-weight: 700;
letter-spacing: 0.22em; text-transform: uppercase;
color: var(--o); margin-bottom: 12px;
}
.cn-channel h3 {
font-family: var(--f-ed); font-style: italic; font-weight: 400;
font-size: 22px; line-height: 1.2; color: var(--b); margin: 0 0 12px;
}
.cn-channel p {
font-size: 14px; line-height: 1.6; color: var(--m); margin: 0 0 14px;
}
.cn-channel a.btn { font-size: 11px; padding: 10px 18px; }
.cn-promise { background: var(--bg); padding: 80px 0; border-top: 1px solid var(--bd); }
.cn-promise__inner { max-width: 880px; margin: 0 auto; padding: 0 32px; }
.cn-promise__h {
font-family: var(--f-ed); font-style: italic; font-weight: 400;
font-size: clamp(28px, 4vw, 40px); line-height: 1.15;
color: var(--b); margin: 0 0 20px;
}
.cn-promise p {
font-family: var(--f-ed); font-style: italic; font-size: 18px;
line-height: 1.65; color: var(--m); margin: 0 0 18px;
}
@media (max-width: 900px) {
.cn-form-wrap { grid-template-columns: 1fr; gap: 32px; }
.cn-form { padding: 36px 28px; }
.cn-form__row { grid-template-columns: 1fr; }
}
@media (max-width: 768px) { .cn-hero { padding: 80px 20px 64px; } }
HTML;
ob_start();
?>
Contact Every inquiry, every hold, every acquisition is answered by the gallery — not a chatbot, not a queue. Tell us what you are thinking about, what you would like to see, or what you would like to know. We respond personally, usually same business day. If your mail client opens forms awkwardly, write to the gallery at info@jgartgallery.com with whatever you would have put here. Same person reads it. Same response time. The gallery is small enough that the person who reads your message is the person who answers it. Inquiries that arrive during business hours usually get a reply the same day. Inquiries that arrive at midnight on a Sunday get a reply Monday morning. We do not run a contact-form auto-responder, and your inquiry does not enter a queue ahead of someone else's. If your question has a deadline — a specific work you are deciding on, an installation date, a flight you are about to book — say so in your message. We will move it to the front and respond accordingly.Write to the gallery.
Send the gallery a note.
Prefer email directly
A note about how we respond.