.tp { overflow-x: hidden; }
.tp-catalog__title-link { color: inherit; text-decoration: none; }
.tp-catalog__title-link:hover { color: var(--color-primary); text-decoration: underline; }
.tp-detail { max-width: 850px; margin-bottom: 36px; }
.tp-detail__description { white-space: pre-line; }
.tp-intro__grid { display: grid; grid-template-columns: minmax(0,1.5fr) minmax(0,1fr); gap: 40px; align-items: center; }
.tp-fig { margin: 0; }
.tp-photo { display: block; overflow: hidden; }
.tp-photo img { display: block; width: 100%; transition: transform .45s ease; }
.tp-fig .tp-photo { border-radius: var(--radius); border: 1px solid var(--color-border); }
.tp-fig img { height: auto; }
.tp-fig figcaption { margin-top: 8px; font-size: .78rem; color: var(--color-gray); }
.tp-step { margin-top: 36px; }
.tp-step h3 { display: flex; align-items: center; gap: 12px; font-size: 1.15rem; margin-bottom: 14px; }
.tp-step h3 span { display: inline-flex; width: 28px; height: 28px; align-items: center; justify-content: center; background: var(--color-dark); color: #fff; font-size: .85rem; border-radius: 50%; flex: none; }
.tp-note { font-size: .85rem; color: var(--color-gray); }
.tp-rooms { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 12px; }
.tp-room { display: flex; flex-direction: column; text-align: left; padding: 0 0 14px; background: #fff; border: 1px solid var(--color-border); border-bottom: 3px solid var(--color-border); border-radius: var(--radius); cursor: pointer; font-family: var(--font-main); color: var(--color-text); overflow: hidden; transition: border-color var(--transition), transform var(--transition); }
.tp-room .tp-photo { width: 100%; height: 130px; margin-bottom: 12px; flex: none; }
.tp-room img { height: 100%; object-fit: cover; }
.tp-room[data-room="Кухня"] img { object-position: center 48%; }
.tp-room[data-room="Другое помещение"] img { object-position: center 65%; }
@media (hover: hover) and (pointer: fine) {
  .tp-photo:hover img, .tp-room:hover .tp-photo img { transform: scale(1.1); }
}
.tp-photo.is-touch-zoom img, .tp-room:focus-visible .tp-photo img { transform: scale(1.1); }
.tp-room strong { padding: 0 14px; font-family: var(--font-head); font-size: 1.02rem; color: var(--color-dark); }
.tp-room small { padding: 0 14px; font-size: .78rem; color: var(--color-gray); line-height: 1.4; margin-top: 4px; }
.tp-room:hover { border-bottom-color: var(--color-gray); }
.tp-room[aria-pressed="true"], .tp-brand[aria-pressed="true"] { border-color: var(--color-primary); }
.tp-room[aria-pressed="true"] { border-bottom-color: var(--color-primary); box-shadow: 0 0 0 1px var(--color-primary); }
.tp-brands { display: flex; flex-wrap: wrap; gap: 10px; }
.tp-brand { padding: 11px 20px; background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius); font-family: var(--font-head); letter-spacing: .03em; cursor: pointer; color: var(--color-dark); transition: background var(--transition), color var(--transition), border-color var(--transition); }
.tp-brand[aria-pressed="true"] { background: var(--color-dark); color: #fff; border-color: var(--color-dark); }
.tp-room:focus-visible, .tp-brand:focus-visible, .tp-summary .btn:focus-visible { outline: 3px solid var(--color-dark); outline-offset: 2px; }
.tp-summary { background: #fff; border: 1px solid var(--color-border); border-left: 4px solid var(--color-primary); padding: 22px 24px; border-radius: var(--radius); }
.tp-summary__text { margin-bottom: 16px; }
.tp-summary__actions { display: flex; flex-wrap: wrap; gap: 10px; }
.tp-guide { display: grid; grid-template-columns: 1.2fr 1fr 1fr; gap: 0; border-top: 2px solid var(--color-dark); }
.tp-guide article { padding: 22px 24px 22px 0; border-bottom: 1px solid var(--color-border); }
.tp-guide article + article { padding-left: 24px; border-left: 1px solid var(--color-border); }
.tp-guide p { color: var(--color-gray); margin: 0; font-size: .92rem; }
.tp-flow { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.6fr); gap: 40px; }
.tp-flow ol { margin: 0; padding: 0; list-style: none; counter-reset: s; }
.tp-flow li { counter-increment: s; position: relative; padding: 0 0 18px 52px; }
.tp-flow li::before { content: counter(s); position: absolute; left: 0; top: -4px; font: 700 1.9rem var(--font-head); color: var(--color-primary); }
.tp-note--end { margin-top: 24px; max-width: 640px; }
.tp-catalog { background: #f6f4f0; }
.tp-catalog__views { display: inline-flex; border: 1px solid var(--color-border); border-radius: var(--radius); overflow: hidden; background: #fff; margin: 28px 0 16px; }
.tp-catalog__view { padding: 11px 22px; border: 0; background: #fff; font-family: var(--font-head); letter-spacing: .03em; color: var(--color-dark); cursor: pointer; transition: background var(--transition), color var(--transition); }
.tp-catalog__view + .tp-catalog__view { border-left: 1px solid var(--color-border); }
.tp-catalog__view.is-active, .tp-catalog__view[aria-pressed="true"] { background: var(--color-dark); color: #fff; }
.tp-catalog__filters { display: grid; grid-template-columns: minmax(0,2fr) repeat(3, minmax(0,1fr)); gap: 12px; }
.tp-catalog__field label { display: block; margin-bottom: 4px; font-size: .78rem; color: var(--color-gray); }
.tp-catalog__field .form-control { width: 100%; }
.tp-catalog__count { margin: 20px 0 12px; font-size: .85rem; color: var(--color-gray); }
.tp-catalog__results { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 14px; }
.tp-catalog__card, .tp-catalog__results > article { display: flex; flex-direction: column; gap: 8px; padding: 20px; background: #fff; border: 1px solid var(--color-border); border-top: 3px solid var(--color-dark); border-radius: var(--radius); min-width: 0; overflow-wrap: anywhere; }
.tp-catalog__results h3 { font-size: 1.05rem; margin: 0; color: var(--color-dark); }
.tp-catalog__results dl { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: 4px 12px; font-size: .85rem; }
.tp-catalog__results dt { color: var(--color-gray); font-weight: 400; }
.tp-catalog__results dd { margin: 0; }
.tp-catalog__badge { align-self: flex-start; padding: 3px 10px; border: 1px solid var(--color-border); border-radius: var(--radius); font-family: var(--font-head); font-size: .75rem; letter-spacing: .05em; text-transform: uppercase; color: var(--color-dark); }
.tp-catalog__results .btn { margin-top: auto; }
.tp-catalog__results .tp-catalog__source { font-size: .85rem; }
.tp-catalog__results .tp-catalog__description { margin: 0; font-size: .88rem; color: var(--color-gray); line-height: 1.5; }
.tp-catalog__field { min-width: 0; }
.tp-catalog__more [hidden] { display: none !important; }
/* Keep the shared request form inside its panel on this page. */
.tp ~ .global-request .global-request__fields { grid-template-columns: repeat(2,minmax(0,1fr)); }
.tp ~ .global-request .global-request__task, .tp ~ .global-request .global-request__fields > .btn { grid-column: 1 / -1; }
.tp ~ .global-request .global-request__fields > .btn { width: 100%; white-space: normal; }
.tp ~ .global-request .form-control, .tp ~ .global-request .form-group { min-width: 0; }
.tp-catalog__results a:focus-visible, .tp-catalog__results button:focus-visible, .tp-catalog__view:focus-visible, #tp-catalog-more:focus-visible { outline: 3px solid var(--color-dark); outline-offset: 2px; }
.tp-catalog__more { margin-top: 20px; text-align: center; }
.tp-catalog__status { margin-top: 12px; font-size: .9rem; color: var(--color-gray); }
.tp-catalog__status:empty { display: none; }
@media (max-width: 991px) {
  .tp-catalog__filters { grid-template-columns: repeat(3, minmax(0,1fr)); }
  .tp-catalog__field--search { grid-column: 1 / -1; }
  .tp-catalog__results { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 575px) {
  .tp ~ .global-request .global-request__fields { grid-template-columns: minmax(0,1fr); }
  .tp-catalog__filters, .tp-catalog__results { grid-template-columns: minmax(0,1fr); }
  .tp-catalog__views { display: flex; }
  .tp-catalog__view { flex: 1; }
}
@media (max-width: 991px) {
  .tp-rooms { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .tp-intro__grid, .tp-flow { grid-template-columns: minmax(0,1fr); gap: 24px; }
}
@media (max-width: 767px) {
  .tp-guide { grid-template-columns: minmax(0,1fr); }
  .tp-guide article + article { padding-left: 0; border-left: 0; }
  .tp-room .tp-photo { height: 100px; }
  .tp-summary__actions .btn { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .tp *, .tp *::before, .tp *::after { transition: none !important; }
  .tp-photo img { transform: none !important; }
}
