.catalog-section{padding:64px 0;border-top:1px solid var(--line)}
.catalog-section:first-of-type{border-top:0}
.catalog-section--soft{background:#eef1f3}
.catalog-head{display:flex;justify-content:space-between;align-items:end;gap:28px;margin-bottom:28px}
.catalog-head h2{max-width:720px;margin:7px 0 0;font:700 clamp(32px,4vw,46px)/1.08 Georgia,serif;letter-spacing:-.025em}
.catalog-head p{max-width:420px;margin:0;color:var(--muted)}
.visual-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.visual-grid--standard{grid-template-columns:repeat(4,minmax(0,1fr))}
.visual-card{--focus:50% 50%;position:relative;isolation:isolate;display:flex;min-width:0;align-items:flex-end;aspect-ratio:4/3;min-height:260px;overflow:hidden;border:1px solid rgba(255,255,255,.28);background:#23364d;color:#fff;text-decoration:none;box-shadow:0 8px 24px rgba(21,27,35,.08)}
.visual-grid--standard .visual-card{aspect-ratio:3/2;min-height:205px}
.visual-card>img{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:var(--focus);transition:transform .45s ease}
.visual-card:after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(10,20,34,.06) 15%,rgba(10,20,34,.22) 48%,rgba(10,20,34,.9) 100%)}
.visual-card:hover>img{transform:scale(1.035)}
.visual-card:focus-visible{outline:3px solid #fff;outline-offset:3px}
.visual-card__content{width:100%;padding:24px}
.visual-card__kicker{display:block;margin-bottom:6px;font:700 11px ui-monospace,Consolas,monospace;text-transform:uppercase;letter-spacing:.12em;color:#dbe8ff}
.visual-card h3{margin:0 0 7px;font:700 clamp(24px,2.6vw,34px)/1.05 Georgia,serif}
.visual-grid--standard .visual-card h3{font-size:clamp(22px,2vw,28px)}
.visual-card p{margin:0;color:#e5ebf1;font-size:14px;line-height:1.5}
.tag-row{display:flex;gap:7px;flex-wrap:wrap;margin-top:14px}
.tag{padding:4px 8px;border:1px solid rgba(255,255,255,.42);background:rgba(8,20,36,.35);font-size:11px;line-height:1.2}
.service-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.service-card{display:flex;min-height:210px;flex-direction:column;padding:24px;border:1px solid var(--line);background:var(--surface,#fff);text-decoration:none;transition:border-color .2s ease,transform .2s ease}
.service-card:hover{border-color:var(--blue);transform:translateY(-2px)}
.service-card:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
.service-icon{width:46px;height:46px;margin-bottom:auto;color:var(--blue)}
.service-icon svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.service-card h3{margin:24px 0 6px;font:700 25px/1.08 Georgia,serif}
.service-card p{margin:0;color:var(--muted);font-size:14px}
.route-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:18px}
.route-grid .service-card{min-height:190px}
.catalog-note{margin-top:20px;color:var(--muted);font-size:13px}
@media(max-width:1120px){.visual-grid,.visual-grid--standard,.service-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.catalog-head{align-items:start;flex-direction:column}.visual-card,.visual-grid--standard .visual-card{min-height:0}.visual-grid:not(.visual-grid--standard) .visual-card:last-child:nth-child(odd){grid-column:1/-1;aspect-ratio:auto;min-height:240px}}
@media(max-width:900px){.route-grid{grid-template-columns:1fr}.route-grid .service-card{min-height:160px}}
@media(max-width:620px){.catalog-section{padding:46px 0}.catalog-head{gap:12px;margin-bottom:20px}.visual-grid,.visual-grid--standard,.service-grid{grid-template-columns:1fr}.visual-grid:not(.visual-grid--standard) .visual-card:last-child:nth-child(odd){grid-column:auto}.visual-card,.visual-grid--standard .visual-card,.visual-grid:not(.visual-grid--standard) .visual-card:last-child:nth-child(odd){aspect-ratio:16/9;min-height:190px}.visual-card__content{padding:20px}.visual-card h3,.visual-grid--standard .visual-card h3{font-size:26px}.visual-card p{display:none}.service-card{min-height:170px}.service-card h3{font-size:23px}}
@media(prefers-reduced-motion:reduce){.visual-card>img,.service-card{transition:none}}
