.page-hero { padding: 72px 0 58px; }
.page-hero h1 { font-size: clamp(2.35rem, 5vw, 3.8rem); }
.page-hero p { margin-top: 14px; }

.contact-layout { display: grid; gap: 72px; grid-template-columns: .9fr 1.1fr; }
.contact-cards { display: grid; gap: 12px; margin-top: 30px; }
.contact-card { align-items: center; background: linear-gradient(135deg, rgba(255,255,255,.8), rgba(255,246,249,.58)); backdrop-filter: blur(8px); border: 1px solid rgba(181,31,104,.12); border-radius: var(--radius-small); box-shadow: var(--card-glow); display: flex; gap: 17px; padding: 18px; transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease; }
.contact-card:hover { border-color: rgba(181,31,104,.4); box-shadow: var(--shadow-small), 0 0 0 1px rgba(155,193,131,.12); transform: translateY(-3px); }
.contact-icon { align-items: center; background: linear-gradient(135deg, var(--accent-soft), rgba(237,243,235,.9)); border-radius: 50%; box-shadow: inset 0 1px 0 rgba(255,255,255,.48); color: var(--accent); display: flex; flex-shrink: 0; height: 46px; justify-content: center; width: 46px; }
.contact-icon svg { fill: none; height: 23px; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.9; width: 23px; }
.contact-card:first-child .contact-icon svg { fill: currentColor; stroke: none; }
.contact-card h3 { font-size: 1.16rem; }
.contact-card p { font-size: .88rem; margin-top: 2px; }
.visit-card { background: linear-gradient(135deg, var(--sage-soft), rgba(255,255,255,.78)); border: 1px solid rgba(105,128,99,.16); border-radius: var(--radius); box-shadow: var(--card-glow); margin-top: 26px; padding: 27px; position: relative; }
.visit-card::after { background: radial-gradient(circle, rgba(155,193,131,.24), transparent 64%); content: ""; height: 110px; opacity: .72; position: absolute; right: -38px; top: -36px; width: 110px; }
.visit-card p { font-size: .9rem; margin: 9px 0; }
.visit-card .address-text { color: var(--sage); font-weight: 600; line-height: 1.55; margin-bottom: 16px; max-width: 420px; }

.form-card { background: linear-gradient(145deg, rgba(255,255,255,.82), rgba(255,246,249,.62)); backdrop-filter: blur(10px); border: 1px solid rgba(181,31,104,.13); border-radius: var(--radius); box-shadow: var(--card-glow); padding: 36px; }
.form-card > p { font-size: .92rem; margin-top: 10px; }
form { display: grid; gap: 16px; grid-template-columns: 1fr 1fr; margin-top: 28px; }
label { display: grid; gap: 7px; }
label span { color: var(--ink); font-size: .73rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; }
input, select, textarea { background: rgba(255,255,255,.88); border: 1px solid rgba(181,31,104,.12); border-radius: 10px; box-shadow: inset 0 1px 0 rgba(255,255,255,.42); color: var(--ink); outline: none; padding: 13px; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease, transform .2s ease; width: 100%; }
input:focus, select:focus, textarea:focus { background: rgba(255,255,255,.98); border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-glow), inset 0 1px 0 rgba(255,255,255,.6); transform: translateY(-1px); }
textarea { resize: vertical; }
.wide { grid-column: 1 / -1; }
.form-success { background: var(--sage-soft); border-left: 3px solid var(--sage); border-radius: 10px; color: var(--sage); display: none; font-size: .88rem; margin-top: 18px; padding: 14px 16px; }
.form-success.show { display: block; }

.map-section { background: linear-gradient(180deg, rgba(248,223,233,.72), rgba(255,250,244,.78)); padding: 92px 0; }
.map-card { background: linear-gradient(145deg, rgba(255,255,255,.82), rgba(255,246,249,.62)); backdrop-filter: blur(10px); border: 1px solid rgba(181,31,104,.14); border-radius: var(--radius); box-shadow: var(--shadow), 0 0 0 1px rgba(255,255,255,.36); margin-top: 38px; overflow: hidden; padding: 14px; position: relative; }
.map-card::before { background: linear-gradient(90deg, var(--accent), #d55b98, #9bc183); content: ""; height: 4px; left: 26px; position: absolute; right: 26px; top: 0; }
.map-frame { background: var(--cream); border: 1px solid rgba(181,31,104,.1); border-radius: 18px; box-shadow: inset 0 0 0 1px rgba(255,255,255,.5); min-height: 360px; overflow: hidden; position: relative; }
.map-frame iframe { border: 0; display: block; height: 100%; inset: 0; position: absolute; width: 100%; }
.map-caption { align-items: center; display: flex; gap: 18px; justify-content: space-between; padding: 18px 10px 4px; }
.map-caption span { color: var(--ink); display: grid; font-family: var(--display); font-size: 1.45rem; font-weight: 700; line-height: 1.2; }
.map-caption small { color: var(--muted); font-family: var(--body); font-size: .82rem; font-weight: 500; line-height: 1.45; margin-top: 5px; max-width: 720px; }

@media (max-width: 800px) { .contact-layout { gap: 45px; grid-template-columns: 1fr; } }
@media (max-width: 520px) { .page-hero { padding: 58px 0 48px; } .form-card { padding: 26px 18px; } form { grid-template-columns: 1fr; } .wide { grid-column: auto; } .map-frame { min-height: 300px; } .map-caption { align-items: flex-start; flex-direction: column; gap: 8px; } }
