/* Shared contact type scale: body and values16px, labels and supporting text
   14px, and one size/family for the two main section headings. The page title
   retains its existing hierarchy. Scoped to Contacts; global navigation and
   footer typography remain unchanged. */
.pg-contact { --ct-body:16px; --ct-label:14px; --ct-heading:clamp(28px,2.4vw,34px); }
/* The approved European atlas becomes a seamless banner. Equal SVG scaling
   preserves the country proportions; the red routes are shared with About. */
.ct-banner { overflow:hidden; background:var(--paper); border-bottom:1px solid var(--rule); }
.ct-banner__grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.15fr); align-items:center; gap:28px; padding-block:22px 28px; }
.ct-intro__copy { min-width:0; position:relative; z-index:1; }
.ct-banner__map { min-width:0; pointer-events:none; }
.ct-banner .illustrated-map { width:100%; height:360px; margin:0; }
.ct-banner .illustrated-map__art { overflow:visible; }
.ct-banner .drawn-label { font-size:24px; stroke-width:3px; }
.ct-banner .drawn-label tspan { font-size:18px; }
.pg-contact .ct-workspace { padding-block:clamp(32px,4vw,56px) 48px; }
.ct-workspace__grid { display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); grid-template-areas:"direct form"; gap:clamp(40px,6vw,80px); align-items:start; }
.ct-intro__title { max-width:12ch; margin:14px 0 0; font-size:clamp(44px,4.5vw,66px); line-height:1.03; letter-spacing:-.025em; }
.ct-intro__lead { max-width:43ch; margin-top:20px; font-size:var(--ct-body); color:var(--fg-2); line-height:1.6; }
.ct-intro__links { display:flex; flex-wrap:wrap; gap:4px 24px; margin-top:18px; }
.ct-intro__links a { display:inline-flex; align-items:center; gap:8px; min-height:44px; font-size:var(--ct-label); color:var(--fg-2); }
.ct-intro__links a:hover { color:var(--accent-text); }
.ct-intro__links .icon { width:17px; height:17px; color:var(--accent-text); flex:none; }
.ct-direct { grid-area:direct; min-width:0; scroll-margin-top:100px; }
.ct-direct .ct-company { margin-top:30px; padding-top:24px; border-top:1px solid var(--rule); }
.pg-contact .ct-card { padding:0; border:0; border-radius:0; background:none; box-shadow:none; overflow:visible; }
.pg-contact .ct-card + .ct-card { margin-top:28px; }
.pg-contact .ct-card::before,.pg-contact .ct-card::after,
.pg-contact .ct-form::before,.pg-contact .ct-form::after,
.pg-contact .ct-route::before,.pg-contact .ct-route::after { display:none; }
.ct-card__heading { display:flex; align-items:center; gap:9px; }
.pg-contact .ct-card__title { margin:0; font:500 var(--ct-label)/1.4 var(--font-sans); color:var(--fg-3); }
.pg-contact .ct-card__ico { width:19px; height:19px; flex:none; border:0; background:none; border-radius:0; }
.pg-contact .ct-card__ico .icon { width:18px; height:18px; }
.pg-contact .ct-card__rows { margin-top:10px; gap:5px; }
.pg-contact .ct-row { display:grid; grid-template-columns:minmax(0,1fr) 40px; gap:0 6px; min-height:42px; padding:0; border:0; }
.pg-contact .ct-row__k { grid-column:1; min-width:0; font:400 var(--ct-label)/1.4 var(--font-sans); text-transform:none; letter-spacing:0; color:var(--fg-3); }
.pg-contact .ct-row__v { grid-column:1; font:500 var(--ct-body)/1.5 var(--font-sans); letter-spacing:0; overflow-wrap:anywhere; min-width:0; width:fit-content; }
.pg-contact .ct-card--email .ct-row + .ct-row .ct-row__v { color:var(--fg-2); }
.pg-contact .ct-card--phone .ct-card__rows { grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.pg-contact .ct-card--phone .ct-row__v { grid-row:2; }
.pg-contact .ct-copy { width:40px; height:40px; border-radius:50%; border-color:transparent; background:transparent; grid-column:2; grid-row:1 / 3; margin:0; align-self:center; }
.pg-contact .ct-copy:hover { background:var(--bg-raised); border-color:var(--rule); }
.pg-contact a.ct-row__v { min-height:42px; display:inline-flex; align-items:center; }
.pg-contact .ct-row__v:focus-visible,.pg-contact .ct-copy:focus-visible,
.ct-intro__links a:focus-visible,.ct-logistics>summary:focus-visible { outline:2px solid var(--accent-text); outline-offset:4px; border-radius:4px; }

.pg-contact .ct-form { grid-area:form; min-width:0; border:0; border-left:1px solid var(--rule); border-radius:0; background:none; box-shadow:none; padding:0 0 0 clamp(28px,4vw,58px); gap:17px; overflow:visible; scroll-margin-top:100px; }
.pg-contact .ct-form__title { font:600 var(--ct-heading)/1.2 var(--font-card); margin:0 0 5px; }
.pg-contact .f2-idx { display:none; }
.pg-contact .ct-form .f2-box { display:flex; flex-direction:column; gap:7px; }
.pg-contact .ct-workspace .ct-form .f2-box .f2-label { position:static; order:-1; font:500 var(--ct-label)/1.4 var(--font-sans); transform:none; letter-spacing:0; color:var(--fg-2); pointer-events:auto; }
.pg-contact .ct-form .f2-box input,.pg-contact .ct-form .f2-box textarea { padding:12px 36px 12px 13px; min-height:48px; font-size:var(--ct-body); background:var(--bg-raised); border:1px solid var(--rule); border-radius:6px; }
.pg-contact .ct-form .f2-box input:focus,.pg-contact .ct-form .f2-box textarea:focus { border-color:var(--accent-text); outline:1px solid var(--accent-text); outline-offset:0; }
.pg-contact .ct-form .field.is-invalid .f2-box input,.pg-contact .ct-form .field.is-invalid .f2-box textarea { border-color:var(--red); }
.pg-contact .ct-form .f2-box textarea { min-height:118px; height:118px; overflow-y:auto; resize:vertical; }
.pg-contact .ct-form .f2-line { display:none; }
.pg-contact .ct-form .f2-ok { top:auto; bottom:15px; right:12px; }
.pg-contact .ct-form__note,.pg-contact .f2-attach__note { font-size:var(--ct-label); line-height:1.5; max-width:none; margin:0; }
.pg-contact .f2-attach__zone { padding:13px; flex-wrap:wrap; gap:8px 10px; border-radius:6px; }
.pg-contact .f2-attach__fmts { flex-basis:100%; padding-left:34px; white-space:normal; font-size:var(--ct-label); }
.pg-contact .f2-attach__label { font:500 var(--ct-body)/1.5 var(--font-sans); }
.pg-contact .f2-attach__hint { font-size:var(--ct-label); }
.pg-contact .ct-form__submit { min-height:48px; padding:12px 24px; font-size:16px; }
.pg-contact .ct-form__foot { margin:0; }
.pg-contact .ct-form__sent:empty { display:none; }
.pg-contact .ct-form__sent,.pg-contact .field__err,.pg-contact .ct-copy__flag { font-size:var(--ct-label); }
.pg-contact .ct-copy__flag { letter-spacing:0; }

.ct-company { min-width:0; }
.ct-company__heading { display:flex; align-items:center; gap:9px; margin:0 0 14px; font:500 var(--ct-label)/1.4 var(--font-sans); color:var(--fg-3); }
.ct-company__heading>.icon { width:21px; height:21px; flex:none; color:var(--accent-text); }
.ct-company__body { padding:0; }
.pg-contact .ct-company .ct-row { grid-template-columns:62px minmax(0,1fr) 40px; align-items:center; gap:8px; max-width:360px; }
.pg-contact .ct-company .ct-row__v { grid-column:2; font:500 var(--ct-body)/1.5 var(--font-sans); }
.pg-contact .ct-company .ct-copy { grid-column:3; grid-row:1; }
.pg-contact .ct-company .ct-card__legal { font:500 var(--ct-body)/1.5 var(--font-sans); margin-bottom:12px; }
.ct-logistics>summary { display:flex; align-items:center; gap:10px; min-height:54px; cursor:pointer; list-style:none; font-size:var(--ct-body); font-weight:500; color:var(--fg-2); }
.ct-logistics>summary::-webkit-details-marker { display:none; }
.ct-logistics>summary>.icon { width:18px; height:18px; flex:none; margin-left:auto; transition:transform .2s; }
.ct-logistics[open]>summary>.icon { transform:rotate(180deg); }
.pg-contact .map-sec { padding-block:40px 50px; border-top:1px solid var(--rule); }
.ct-location { display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); gap:clamp(36px,6vw,90px); align-items:start; }
.ct-location__info { min-width:0; }
#contact-map-title { scroll-margin-top:110px; }
.ct-location__info>.h3 { font:600 var(--ct-heading)/1.2 var(--font-card); margin:0; }
.ct-location__name { font:500 var(--ct-body)/1.5 var(--font-sans); margin:18px 0 8px; }
.ct-location address { font-style:normal; line-height:1.6; color:var(--fg-2); font-size:var(--ct-body); }
.ct-location__coords { display:flex; align-items:center; gap:10px; margin-top:8px; width:fit-content; color:var(--fg-3); }
.ct-location__coords .small { font-size:var(--ct-label); }
.ct-location__link { margin-top:8px; min-height:44px; white-space:normal; }
.ct-logistics { margin-top:22px; border-top:1px solid var(--rule); }
.ct-logistics>summary { padding-block:8px; }
.pg-contact .ct-route { padding:4px 0 0; border:0; border-radius:0; box-shadow:none; background:none; }
.pg-contact .ct-dist { margin-top:10px; gap:9px; }
.pg-contact .ct-dist__head { margin-top:10px; font-size:var(--ct-label); }
.pg-contact .ct-dist__city,.pg-contact .ct-dist__sub { font-size:var(--ct-label); }
.pg-contact .ct-dist__row { grid-template-columns:minmax(0,1fr) minmax(0,.65fr) 70px; gap:8px; }
.pg-contact .ct-dist__val { font-size:var(--ct-label); }
.pg-contact .ct-route__note { margin-top:16px; font-size:var(--ct-label); }
.pg-contact .ct-dist__track { height:3px; }
.pg-contact .map--contact { height:360px; margin:0; border:1px solid var(--rule); border-radius:16px; background:var(--bg-sunk); }
.ct-map-placeholder { height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:24px; gap:12px; text-align:center; background:radial-gradient(ellipse at 50% 22%,color-mix(in srgb,var(--fg-3) 8%,transparent),transparent 70%); }
.ct-map-placeholder>p { max-width:360px; color:var(--fg-3); font-size:var(--ct-label); }
.ct-map-placeholder>strong { font-size:var(--ct-body); }
.pg-contact .ct-location .btn { font-size:var(--ct-body); }
.ct-map-placeholder__pin { color:var(--accent-text); display:grid; place-items:center; width:58px; height:58px; border:1px solid var(--rule); border-radius:50%; }
.ct-map-placeholder__pin .icon { width:26px; height:26px; }
.ct-map-placeholder [data-map-load] { min-height:44px; }
.map--contact[data-map-auto]:not(.is-failed) [data-map-load] { display:none; }
.ct-map-status:empty { display:none; }
.ct-map-status { color:var(--accent-text); }
.map--contact.is-live .ct-map-placeholder { visibility:hidden; }
.map--contact .map__frame { filter:none; color-scheme:light; opacity:0; transition:opacity .2s ease; }
.map--contact.is-live .map__frame,.map--contact .map__frame--fallback { opacity:1; }
.no-js .map--contact .ct-map-placeholder { display:none; }
.no-js .ct-map-placeholder [data-map-load] { display:none; }
.ct-form__trap { position:absolute; left:-10000px; width:1px; height:1px; overflow:hidden; }
.ct-form__upload-error { color:var(--accent-text); }
.ct-form[aria-busy="true"] .ct-form__submit { cursor:wait; opacity:.7; }


@media(max-width:1100px) {
 .ct-workspace__grid { gap:28px 36px; }
 .pg-contact .ct-form { padding-left:28px; }
 .pg-contact .ct-card--phone .ct-card__rows { grid-template-columns:minmax(0,1fr); gap:10px; }
 .ct-location { gap:30px; }
}
@media(max-width:850px) {
 .ct-banner__grid { grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:12px; }
 .ct-banner .illustrated-map { height:310px; }
 .ct-workspace__grid { grid-template-columns:minmax(0,1fr); grid-template-areas:"direct" "form"; gap:28px; }
 .ct-intro__title { max-width:18ch; font-size:clamp(38px,5vw,50px); }
 .ct-intro__lead { max-width:58ch; margin-top:16px; font-size:16px; }
 .ct-intro__links { margin-top:12px; }
 .pg-contact .ct-workspace { padding-block:28px 36px; }
 .pg-contact .ct-form { border-left:0; border-top:1px solid var(--rule); padding:26px 0 0; }
 .ct-direct { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px 28px; }
 .ct-direct .ct-company { grid-column:1 / -1; margin-top:0; padding-top:20px; }
 .ct-direct .ct-company__body { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:4px 20px; }
 .ct-direct .ct-company .ct-card__legal { grid-column:1 / -1; margin-bottom:8px; }
 .pg-contact .ct-company .ct-row { grid-template-columns:auto minmax(0,1fr) 32px; gap:4px; }
 .pg-contact .ct-company .ct-copy { width:32px; height:40px; }
 .pg-contact .ct-card + .ct-card { margin-top:0; }
}
@media(max-width:760px) {
 .ct-location { grid-template-columns:minmax(0,1fr); gap:28px; }
 .ct-direct .ct-company__body { grid-template-columns:minmax(0,1fr); }
 .pg-contact .ct-company .ct-row { grid-template-columns:62px minmax(0,1fr) 40px; max-width:360px; }
 .pg-contact .map-sec { padding-block:30px 36px; }
 .pg-contact .map--contact { height:300px; border-radius:8px; }
 .ct-location__name { margin-top:14px; }
 .pg-contact .ct-company .ct-row { max-width:none; }
}
@media(max-width:540px) {
 .ct-banner__grid { grid-template-columns:minmax(0,1fr); padding-block:26px 8px; gap:0; }
 .ct-banner .illustrated-map { height:265px; }
 .ct-intro__title { max-width:13ch; font-size:clamp(42px,10vw,54px); }
 .ct-intro__links { column-gap:20px; }
 .ct-direct { grid-template-columns:minmax(0,1fr); gap:24px; }
 .pg-contact .ct-card--phone .ct-card__rows { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
 .pg-contact .ct-card--phone .ct-row { grid-template-columns:minmax(0,1fr); }
 .pg-contact .ct-card--phone .ct-copy { grid-column:1; grid-row:3; justify-self:start; }
 .pg-contact .ct-card--phone .ct-copy__flag { right:auto; left:calc(100% + 8px); }
 .pg-contact .ct-card--phone .ct-row:last-child .ct-copy__flag { left:auto; right:calc(100% + 8px); }
 .pg-contact .ct-form .f2-field--half { grid-column:1 / -1; }
 .pg-contact .ct-form__submit { width:100%; justify-content:center; }
 .ct-map-placeholder { padding:20px; gap:10px; }
}
.page-hidden .ct-banner .drawn-trail,.page-hidden .ct-banner .drawn-origin-pulse { animation-play-state:paused; }
@media(prefers-reduced-motion:reduce) {
 .map--contact .map__frame,.ct-logistics>summary>.icon { transition:none; }
}
