:root { --logo-h: 60px; --logo-h-m: 40px; --logo-maxw: 280px; --head-h: 88px; --radius: 2px; --radius-lg: 3px; --sec-y: clamp(42px, 6vw, 76px); --t-h1: clamp(26px, 2.5vw, 38px); --t-h2: clamp(23px, 2.5vw, 30px); }
.panel-header { position: sticky; top: 0; z-index: 50; background: var(--c-bg); border-bottom: 1px solid var(--c-line); }
.panel-header-in { display: flex; align-items: center; gap: 24px; min-height: var(--head-h); }
.panel-header .logo { flex-shrink: 1; min-width: 0; }
.panel-menu { margin-left: auto; }
.panel-header-actions { display: flex; align-items: center; gap: 14px; flex-shrink: 0; }
.panel-header .menu > ul > li > a { position: relative; isolation: isolate; height: var(--head-h); padding: 0 12px; }
.panel-header .menu > ul > li > a::before { content: ''; position: absolute; inset: 0; z-index: -1; background: var(--c-primary-soft); transform: scaleY(0); transform-origin: bottom; transition: transform .22s ease; }
.panel-header .menu > ul > li:hover > a::before, .panel-header .menu > ul > li:focus-within > a::before, .panel-header .menu > ul > li.on > a::before { transform: scaleY(1); }
.panel-mobile-quote, .panel-header .burger { display: none; }
.panel-nojs { display: flex; flex-wrap: wrap; gap: 18px; padding-top: 12px; padding-bottom: 12px; }
.panel-hero { background: var(--c-primary); color: var(--c-primary-ink); }
.t-panel .panel-carousel .slides { height: auto; }
.t-panel .panel-carousel .slide { position: relative; inset: auto; display: grid; grid-template-columns: 40% 60%; min-height: 380px; opacity: 1; visibility: visible; transition: none; }
.t-panel .panel-carousel .slide + .slide { border-top: 1px solid var(--c-line); }
.panel-hero-copy { padding: clamp(24px, 4vw, 56px); align-self: center; }
.panel-hero-title { font-family: var(--f-head); font-size: var(--t-h1); font-weight: 700; line-height: 1.3; margin-bottom: 20px; }
.panel-hero-badge { font-size: 13px; margin-bottom: 14px; }
.panel-hero-sub { margin-bottom: 24px; max-width: 640px; line-height: 1.75; }
.panel-hero-copy .panel-hero-sub { font-size: 15px; }
.panel-hero-number { font-size: 18px; letter-spacing: .12em; border-top: 1px solid rgba(255,255,255,.35); margin: 26px 0 0; padding-top: 12px; }
.panel-carousel picture { display: block; width: 100%; height: 100%; overflow: hidden; }
.t-panel .panel-carousel .slide img { height: 100%; object-fit: cover; animation: none; }
.t-panel .panel-carousel .slide[data-has-text="1"] { grid-template-columns: 1fr; }
.js .t-panel .panel-carousel .slides { display: flex; height: clamp(380px, 36vw, 540px); transition: transform .28s ease; }
.js .t-panel .panel-carousel .slide { flex: 0 0 100%; min-width: 0; height: 100%; min-height: 0; }
.js .t-panel .panel-carousel .slide + .slide { border: 0; }
.panel-carousel-controls { display: none; }
.js .panel-carousel-controls { display: flex; justify-content: center; align-items: center; gap: 14px; padding: 10px; background: var(--c-bg); color: var(--c-ink); }
.panel-carousel-controls .car-arrow { position: static; width: 36px; height: 36px; transform: none; opacity: 1; background: var(--c-surface); color: var(--c-primary); border-radius: 2px; }
.panel-carousel-controls .car-dots { position: static; display: flex; width: auto; gap: 8px; transform: none; }
.panel-carousel-controls .car-dots button { width: 9px; height: 9px; background: var(--c-line); border: 0; border-radius: 0; transition: background .2s; }
.panel-carousel-controls .car-dots button[aria-current="true"] { background: var(--c-primary); }
.panel-hero-empty { display: grid; grid-template-columns: 3fr 2fr; align-items: center; gap: 60px; padding-top: 60px; padding-bottom: 60px; }
.panel-hero-empty h1 { font-size: var(--t-h1); }
.panel-hero-index { border-left: 1px solid rgba(255,255,255,.35); padding-left: 36px; }
.panel-hero-index > span { display: block; font-size: 32px; margin-bottom: 12px; }
.panel-hero-index a { display: flex; justify-content: space-between; padding: 12px 0; border-bottom: 1px solid rgba(255,255,255,.35); }
.panel-hero-index a:hover { color: var(--c-primary-ink); text-decoration: underline; }
.panel-home-block:nth-of-type(even), .panel-contact { background: var(--c-surface); }
.panel-section-head { justify-content: flex-start; align-items: center; text-align: left; gap: 18px; margin-bottom: 30px; }
.panel-section-number { align-self: flex-start; color: var(--c-primary); font-size: 28px; font-weight: 700; line-height: 1.2; }
.panel-section-rule { height: 1px; background: var(--c-line); flex: 1; min-width: 24px; }
.panel-section-head .sec-link { margin-left: auto; }
.panel-story-grid { display: grid; grid-template-columns: 44% 1fr; align-items: center; gap: clamp(24px, 5vw, 60px); }
.panel-story-grid.is-reversed { grid-template-columns: 1fr 44%; }
.panel-story-grid.is-reversed .panel-story-media { order: 2; }
.panel-story-media { border-left: 4px solid var(--c-primary); padding-left: 10px; }
.panel-story-media img, .panel-story-media .ph { width: 100%; aspect-ratio: 4/3; object-fit: cover; }
.panel-story-copy h3 { font-size: 23px; margin-bottom: 18px; }
.panel-story-list li { display: flex; gap: 18px; padding: 18px 0; border-bottom: 1px solid var(--c-line); }
.panel-story-list li:first-child { padding-top: 0; }
.panel-item-number { color: var(--c-primary); font-weight: 700; }
.panel-story-list h3 { font-size: 18px; }
.panel-story-list p { color: var(--c-muted); margin: 0; font-size: 15px; }
.t-panel .pcard, .t-panel .cat-card { box-shadow: none; transition: transform .22s; }
.t-panel .pcard:hover, .t-panel .cat-card:hover { transform: translateY(-3px); border-color: var(--c-line); }
.t-panel .pcard-img img, .t-panel .cat-img img { transition: none; }
.t-panel .pcard:hover .pcard-img img, .t-panel .cat-card:hover img { transform: none; }
.t-panel .contact-form { background: var(--c-bg); border: 1px solid var(--c-line); padding: 28px; }
@media (min-width: 861px) and (max-width: 1100px) { .panel-header-in { gap: 12px; } .panel-header .menu > ul > li > a { padding: 0 8px; font-size: 14px; } .panel-header-actions { gap: 8px; } :root { --logo-maxw: 210px; } }
@media (max-width: 860px) {
  :root { --head-h: 68px; --logo-maxw: 210px; }
  .panel-header-in { gap: 10px; min-height: 68px; }
  .panel-menu { display: none; }
  .panel-header-actions { margin-left: auto; gap: 4px; }
  .panel-header-actions > .langs { display: none; }
  .panel-header .burger, .panel-mobile-quote { display: inline-flex; align-items: center; }
  .panel-mobile-quote { white-space: nowrap; font-size: 13px; padding: 10px 6px; color: var(--c-primary); }
  .t-panel .panel-carousel .slide { grid-template-columns: 1fr; grid-template-rows: auto 300px; }
  .t-panel .panel-carousel .slide[data-has-text="1"] { grid-template-rows: 1fr; }
  .js .t-panel .panel-carousel .slides { height: auto; align-items: flex-start; }
  .js .t-panel .panel-carousel .slide { height: auto; grid-template-rows: auto auto; }
  .js .t-panel .panel-carousel picture { aspect-ratio: 4/3; height: auto; }
  .panel-hero-copy { padding: 22px var(--gutter); }
  .panel-hero-title { font-size: 26px; margin-bottom: 12px; }
  .panel-hero-sub { margin-bottom: 16px; }
  .panel-hero-number { margin-top: 16px; padding-top: 8px; font-size: 14px; }
  .panel-hero-empty { grid-template-columns: 1fr; gap: 28px; padding-top: 36px; padding-bottom: 36px; }
  .panel-hero-index { border-left: 0; border-top: 1px solid rgba(255,255,255,.35); padding: 20px 0 0; }
  .panel-hero-index > span { font-size: 24px; }
  .panel-section-head { flex-direction: row; flex-wrap: wrap; gap: 12px; }
  .panel-section-rule { display: none; }
  .panel-section-head .sec-link { width: 100%; margin-left: 0; }
  .panel-story-grid, .panel-story-grid.is-reversed { grid-template-columns: 1fr; gap: 24px; }
  .panel-story-grid.is-reversed .panel-story-media { order: 0; }
  .t-panel .contact-form { padding: 18px; }
}
@media (max-width: 480px) { :root { --logo-maxw: 140px; }  }
@media (prefers-reduced-motion: reduce) {
  .t-panel *, .t-panel *::before, .t-panel *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}

/* Keep inherited image hover and reveal effects brief and restrained. */
.t-panel .ncard-img img, .t-panel .ncard-img .ph, .t-panel .cat-img img, .t-panel .cat-img .ph { transition: none; }
.t-panel .ncard:hover img, .t-panel .cat-card:hover img { transform: none; }
.t-panel [data-reveal] { opacity: 1; transform: none; transition: none; }
.t-panel .basket-fab.bump { animation: none; }

/* Homepage grids fill complete rows; sparse grids use their actual column count.
   Keep desktop and mobile rules separate so mobile can select an even count. */
@media (min-width: 861px) {
  .t-panel.pg-home .sec :is(.pgrid-4, .adv-grid, .stats-list, .trust-stats, .steps, .quicklink-grid) { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .t-panel.pg-home .sec :is(.pgrid-4, .adv-grid, .stats-list, .trust-stats, .steps, .quicklink-grid):has(> :last-child:nth-child(1)) { grid-template-columns: repeat(1, minmax(0, 1fr)); }
  .t-panel.pg-home .sec :is(.pgrid-4, .adv-grid, .stats-list, .trust-stats, .steps, .quicklink-grid):has(> :nth-child(4)):has(> :last-child:nth-child(4n + 1)) > :nth-last-child(-n + 1) { display: none; }
  .t-panel.pg-home .sec :is(.pgrid-4, .adv-grid, .stats-list, .trust-stats, .steps, .quicklink-grid):has(> :last-child:nth-child(2)) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .t-panel.pg-home .sec :is(.pgrid-4, .adv-grid, .stats-list, .trust-stats, .steps, .quicklink-grid):has(> :nth-child(4)):has(> :last-child:nth-child(4n + 2)) > :nth-last-child(-n + 2) { display: none; }
  .t-panel.pg-home .sec :is(.pgrid-4, .adv-grid, .stats-list, .trust-stats, .steps, .quicklink-grid):has(> :last-child:nth-child(3)) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .t-panel.pg-home .sec :is(.pgrid-4, .adv-grid, .stats-list, .trust-stats, .steps, .quicklink-grid):has(> :nth-child(4)):has(> :last-child:nth-child(4n + 3)) > :nth-last-child(-n + 3) { display: none; }
  .t-panel.pg-home .sec :is(.cat-grid, .ngrid, .gal-grid, .service-grid, .team-grid, .quote-grid) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .t-panel.pg-home .sec :is(.cat-grid, .ngrid, .gal-grid, .service-grid, .team-grid, .quote-grid):has(> :last-child:nth-child(1)) { grid-template-columns: repeat(1, minmax(0, 1fr)); }
  .t-panel.pg-home .sec :is(.cat-grid, .ngrid, .gal-grid, .service-grid, .team-grid, .quote-grid):has(> :nth-child(3)):has(> :last-child:nth-child(3n + 1)) > :nth-last-child(-n + 1) { display: none; }
  .t-panel.pg-home .sec :is(.cat-grid, .ngrid, .gal-grid, .service-grid, .team-grid, .quote-grid):has(> :last-child:nth-child(2)) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .t-panel.pg-home .sec :is(.cat-grid, .ngrid, .gal-grid, .service-grid, .team-grid, .quote-grid):has(> :nth-child(3)):has(> :last-child:nth-child(3n + 2)) > :nth-last-child(-n + 2) { display: none; }
  .t-panel.pg-home .sec :is(.case-grid) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .t-panel.pg-home .sec :is(.case-grid):has(> :last-child:nth-child(1)) { grid-template-columns: repeat(1, minmax(0, 1fr)); }
  .t-panel.pg-home .sec :is(.case-grid):has(> :nth-child(2)):has(> :last-child:nth-child(2n + 1)) > :nth-last-child(-n + 1) { display: none; }
}
@media (max-width: 860px) {
  .t-panel.pg-home .sec :is(.pgrid-4, .adv-grid, .stats-list, .trust-stats, .steps, .quicklink-grid, .cat-grid, .ngrid, .gal-grid, .service-grid, .team-grid, .quote-grid, .case-grid) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .t-panel.pg-home .sec :is(.pgrid-4, .adv-grid, .stats-list, .trust-stats, .steps, .quicklink-grid, .cat-grid, .ngrid, .gal-grid, .service-grid, .team-grid, .quote-grid, .case-grid):has(> :last-child:nth-child(1)) { grid-template-columns: repeat(1, minmax(0, 1fr)); }
  .t-panel.pg-home .sec :is(.pgrid-4, .adv-grid, .stats-list, .trust-stats, .steps, .quicklink-grid, .cat-grid, .ngrid, .gal-grid, .service-grid, .team-grid, .quote-grid, .case-grid):has(> :nth-child(2)):has(> :last-child:nth-child(2n + 1)) > :nth-last-child(-n + 1) { display: none; }
}
