/* Public interface: soft surfaces, a single accent and motion tied to input. */
:root {
  --ink: #142820;
  --muted: #496157;
  --teal: #06684f;
  --mint: #dbede4;
  --line: #dce6df;
  --paper: #f4f7f4;
  --surface: #fff;
  --forest: #163c30;
  --corner: 1.5rem;
  --ease-out: cubic-bezier(.2,.75,.25,1);
}

.stable-hero { padding-block: clamp(2.5rem, 6vw, 5rem) 2rem; text-align: center; }
.stable-hero-copy { max-width: 56rem; margin-inline: auto; }
.stable-hero h1 {
  font-size: clamp(2.15rem, 5vw, 4.35rem);
  letter-spacing: -.035em;
  line-height: 1.08;
  text-wrap: balance;
  margin-bottom: 1.2rem;
}
.stable-hero .lead { margin-inline: auto; }
.stable-hero .hero-actions { justify-content: center; margin-block: 1.5rem 2rem; }
.stable-hero-image {
  display: block; width: 100%; height: clamp(12rem, 28vw, 25rem);
  object-fit: cover; border-radius: var(--corner);
}
.trust-list { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 2rem; margin-top: 2rem; }
.trust-list article { padding-block: 1.4rem; border-top: 1px solid var(--line); overflow-wrap: anywhere; }
.trust-list h3 { font-size: 1.45rem; }
.trust-role { color: var(--teal); font-weight: 600; }
.trust-list dt { font-weight: 650; margin-top: 1rem; }
.trust-list dd { margin: .4rem 0; color: var(--muted); }
.trust-list dd p { margin: 0; }
.service-prices { margin-bottom: 2rem; }
.service-prices article { padding-block: 1.1rem; border-bottom: 1px solid var(--line); }
.service-prices h4 { margin: 0; font-size: 1.05rem; }
.service-prices p { color: var(--muted); }
.service-prices .price-amount { font-size: 1.5rem; font-weight: 650; color: var(--ink); margin: .4rem 0; }
.price-amount span { font-size: .9rem; font-weight: 400; }
@media(max-width:740px) {
  .trust-list { grid-template-columns: 1fr; gap: .5rem; }
  .stable-hero .hero-actions { gap: 1rem; }
}

body {
  background: var(--paper);
  font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
  font-optical-sizing: auto;
  line-height: 1.58;
}
::selection { background: var(--mint); color: var(--ink); }
input, textarea { caret-color: var(--teal); }
.container { max-width: 78rem; }
.lead { max-width: 42rem; font-size: 1.06rem; line-height: 1.65; }
h1, .catalog-title { letter-spacing: -.035em; }
h2 { font-size: clamp(1.9rem, 4vw, 3.25rem); line-height: 1.07; letter-spacing: -.035em; font-weight: 650; }
.section { padding-block: clamp(3rem, 7vw, 6rem); }
.eyebrow { letter-spacing: .1em; font-size: .72rem; margin-bottom: 1rem; }

.utility-bar { background: #e8efe9; color: var(--muted); font-size: .75rem; }
.utility-bar a { color: var(--teal); }
.header {
  background: rgba(249,252,249,.88);
  border-bottom: 0;
  box-shadow: 0 8px 20px rgba(20,40,32,.05);
  -webkit-backdrop-filter: blur(18px) saturate(145%);
  backdrop-filter: blur(18px) saturate(145%);
}
.header-inner { height: 4.5rem; }
.header nav a { padding-block: .65rem; }
.header nav a[aria-current="page"] { color: var(--teal); text-decoration: underline; text-underline-offset: .35rem; }
.button, .header .button {
  border-radius: 100px;
  min-height: 44px;
  padding: .65rem 1.2rem;
  justify-content: center;
  gap: .6rem;
  background: var(--teal);
  box-shadow: none;
  transition: background-color .18s, transform .25s var(--ease-out);
}
.button:hover { background: #04523d; transform: none; }
.button:active, .slider-arrow:active, .slider-pause:active, .menu-toggle:active {
  transform: scale(.96);
  transition-duration: .09s;
}
.text-link { color: var(--teal); }
.text-link:hover { text-decoration: underline; text-underline-offset: .25em; }

.service-slider {
  background: #e9f0ea;
  border: 0;
  padding-bottom: 1rem;
}
.slider-stage > .hero-slide {
  grid-template-columns: minmax(0,1fr);
  grid-template-rows: subgrid;
  grid-row: 1 / span 2;
  padding-block: clamp(2rem, 4.4vw, 4.1rem) 0;
  gap: 1.55rem;
  min-height: 0;
  text-align: center;
  transition: opacity .36s var(--ease-out), visibility 0s;
}
.slider-stage > .hero-slide[hidden] { transition-delay: 0s,.36s; }
.hero-slide .eyebrow { justify-content: center; color: var(--teal); margin-bottom: .75rem; }
.hero-slide :is(h1,h2) {
  max-width: 17ch;
  margin: 0 auto .8rem;
  font-size: clamp(2rem, 5.4vw, 4.6rem);
  font-weight: 680;
  line-height: 1.015;
  letter-spacing: -.045em;
  text-wrap: balance;
}
.hero-slide :is(h1,h2) br { display: none; }
.hero-slide .lead { margin: 0 auto; font-size: clamp(.93rem, 1.45vw, 1.13rem); color: var(--muted); }
.hero-slide .hero-actions { justify-content: center; gap: .8rem 1.2rem; margin: 1.1rem 0 0; }
.slider-image {
  height: clamp(12rem, 28vw, 25rem);
  border-radius: var(--corner);
  aspect-ratio: auto;
  box-shadow: none;
  background: var(--forest);
  touch-action: pan-y pinch-zoom;
}
.slider-image img { object-position: center; user-select: none; -webkit-user-drag: none; }
@media (pointer: fine) {
  .slider-image { cursor: grab; }
  .slider-image:active { cursor: grabbing; }
}
.slider-controls { padding-block: .75rem 0; gap: .5rem; }
.slider-dot { width: 25px; height: 42px; }
.slider-dot::after { width: 8px; height: 8px; border-radius: 12px; margin: auto; background: #80968a; }
.slider-dot[aria-pressed=true]::after { width: 21px; background: var(--teal); }
.slider-arrow, .slider-pause {
  width: 44px;
  height: 44px;
  background: #f8fbf8;
  border-color: transparent;
  transition: background-color .18s, transform .25s var(--ease-out);
}
.slider-count { font-family: inherit; font-size: .78rem; font-variant-numeric: tabular-nums; white-space: nowrap; }

.expertise { background: var(--paper); }
.expertise b { color: var(--ink); }
.section-heading { margin-bottom: 1.8rem; }
.section-heading > p { font-size: .95rem; }
.expanded-services { gap: 1rem; }
.expanded-services .service {
  border-color: transparent;
  border-radius: var(--corner);
  padding: 1.35rem;
  box-shadow: none;
  transition: border-color .18s, box-shadow .22s;
}
.expanded-services .service:hover, .expanded-services .service:focus-within {
  transform: none;
  border-color: #a8c2b3;
  box-shadow: 0 7px 24px rgba(20,40,32,.07);
}
.expanded-services .service-visual { margin: -.65rem -.65rem 1.15rem; border-radius: .95rem; }
.expanded-services .service :is(h2,h3) { font-size: 1.35rem; letter-spacing: -.025em; }
.expanded-services .service > p:not(.service-category) { font-size: .9rem; line-height: 1.55; }
.expanded-services .card-foot { min-height: 44px; color: var(--teal); font-size: .86rem; }
.approach, .contact-section, .about-cta { background: var(--forest); }
.approach .steps li { border-color: #4c7262; }
.approach .muted, .approach .steps p, .contact-section p, .about-cta p { color: #d6e9dd; }
.contact-section h2 span { color: #ace3c9; }
.contact-section .button, .about-cta .button { background: #b7ead0; color: #123426; }
.contact-section .button:hover, .about-cta .button:hover { background: #d2f1de; }
.task-grid > a { border-top: 1px solid #a8c2b3; }
.cooperation-band, .site-footer { background: #e8efe9; }
.cooperation-grid article, .ready-solutions, .about-cta, .estimate-banner { border-radius: var(--corner); }
.cooperation-grid .featured-format { border-top-width: 1px; padding-top: 30px; }
.ready-solutions { background: var(--mint); }
.faqs summary { padding-block: .22rem; }
.faqs p { font-size: .94rem; }

.catalog-main > .catalog-title, .about-intro .catalog-title, .service-intro .catalog-title {
  font-size: clamp(2rem, 5vw, 4rem);
  line-height: 1.05;
  letter-spacing: -.037em;
}
.catalog-main > .lead { font-size: 1.08rem; }
.catalog-filters, .catalog-card, .catalog-empty, .catalog-download,
.auth-card, .account-profile, .purchase-card, .about-principles, .service-brief, .not-found-art {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--corner);
}
.catalog-filters, .auth-card { padding: clamp(1.15rem, 3vw, 2.4rem); }
.catalog-card, .catalog-empty, .catalog-download, .account-profile, .purchase-card {
  min-width: 0;
  overflow-wrap: anywhere;
}
.catalog-title br { display: none; }
.about-image, .service-intro img { border-radius: var(--corner); }
.auth-card h1 { font-size: clamp(1.9rem, 4vw, 2.6rem); letter-spacing: -.03em; }
.auth-card > p, .purchase-card p { font-size: .96rem; }
.account-form :is(input:not([type=checkbox]),select),
.catalog-filters :is(input,select), .contact-dialog :is(input:not([type=checkbox]),textarea,select) {
  min-height: 44px;
  border: 1px solid #a8bcb0;
  border-radius: .7rem;
  color: var(--ink);
  background: #f8fbf8;
  font-size: 1rem;
}
.account-form :is(input,select):focus-visible, .catalog-filters :is(input,select):focus-visible,
.contact-dialog :is(input,select,textarea):focus-visible { outline: 2px solid var(--teal); outline-offset: 2px; }
.contact-dialog {
  background: #f8fbf8;
  border-radius: var(--corner);
  opacity: 0;
  transform: translateY(.45rem) scale(.985);
  transition: opacity .22s, transform .3s var(--ease-out), display .3s allow-discrete, overlay .3s allow-discrete;
}
.contact-dialog[open] { opacity: 1; transform: none; }
@starting-style { .contact-dialog[open] { opacity: 0; transform: translateY(.45rem) scale(.985); } }
.contact-dialog::backdrop { background: rgba(13,33,25,.54); }
.contact-dialog h2 { font-size: clamp(1.5rem, 4vw, 2rem); }
.legal-document h1 { font-size: clamp(2rem, 5vw, 3.25rem); }

@media (max-width: 740px) {
  .header-inner { height: 4rem; }
  .header nav { background: var(--surface); max-height: calc(100dvh - 4rem); }
  .header nav a { padding-block: .78rem; }
  .slider-stage > .hero-slide { gap: 1.15rem; }
  .slider-image { height: clamp(10.5rem, 49vw, 17rem); border-radius: 1.1rem; }
  .slider-controls { flex-wrap: wrap; }
  .slider-dots { gap: .2rem; }
  .slider-dot { width: 21px; }
  .slider-dot[aria-pressed=true]::after { width: 17px; }
  .slider-navigation .slider-count { font-size: .73rem; }
  .catalog-filters label { min-width: 0; }
  .cooperation-grid .featured-format { padding-top: 25px; }
}
@media (prefers-reduced-transparency: reduce), (prefers-contrast: more) {
  .header { background: var(--surface); backdrop-filter: none; border-bottom: 1px solid var(--ink); }
  .contact-dialog::backdrop { backdrop-filter: none; }
}
@media (prefers-reduced-motion: reduce) {
  .contact-dialog, .button:active, .slider-arrow:active, .slider-pause:active, .menu-toggle:active { transform: none; }
}

/* Focused service articles inherit the established site palette and controls. */
.service-topics { margin-block: 3.5rem; }
.service-topic-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); column-gap: 2.5rem; }
.service-topic-list a { display: grid; gap: .65rem; padding-block: 1.4rem; border-bottom: 1px solid var(--line); text-decoration: none; }
.service-topic-list a>span:first-child { font-size: 1.15rem; font-weight: 650; color: var(--teal); }
.topic-summary { font-size: .95rem; line-height: 1.65; color: var(--muted); }
.service-reading-layout { display: grid; grid-template-columns: minmax(0,72ch) minmax(12rem,1fr); gap: clamp(2rem,6vw,5rem); align-items: start; margin-block: 3rem; }
.service-article { min-width: 0; overflow-wrap: anywhere; }
.service-article section { scroll-margin-top: 7rem; }
.service-article h2 { font-size: clamp(1.5rem,3vw,2rem); line-height: 1.2; margin: 2.8rem 0 1.2rem; text-wrap: balance; }
.service-article section:first-child h2 { margin-top: 0; }
.service-article p { font-size: 1.05rem; line-height: 1.8; margin: 0 0 1.2rem; color: var(--muted); }
.service-reading-nav { position: sticky; top: 7rem; padding-left: 1.5rem; border-left: 1px solid var(--line); }
.service-reading-nav h2 { font-size: 1rem; margin-bottom: 1rem; }
.service-reading-nav nav { display: grid; gap: .8rem; }
.service-reading-nav a { font-size: .92rem; line-height: 1.5; color: var(--teal); text-decoration: none; }
.service-budget { border-top: 1px solid var(--line); margin-top: 2.5rem; padding-top: .2rem; }
.service-budget-values { display: flex; flex-wrap: wrap; gap: 1.2rem 3rem; margin-block: 1.5rem; }
.service-budget-values dt { color: var(--muted); font-size: .9rem; }
.service-budget-values dd { margin: .4rem 0 0; font-size: 1.3rem; font-weight: 650; }
.service-case dd { margin-inline-start: 0; }
.service-case dt { font-weight: 650; margin-top: 1.1rem; }
.service-topic-list a:hover span:first-child,.service-reading-nav a:hover { text-decoration: underline; text-underline-offset: .2em; }
@media (max-width: 900px) { .service-reading-layout { grid-template-columns: minmax(0,1fr); } .service-reading-nav { grid-row: 1; position: static; padding: 0 0 1.5rem; border-left: 0; border-bottom: 1px solid var(--line); } }
@media (max-width: 740px) { .service-topic-list { grid-template-columns: minmax(0,1fr); } .focused-service-intro .button { white-space: normal; text-align: center; } .service-article p { font-size: 1rem; } }

/* Highlight the MAX contact action across header, footer and request dialog. */
a.max-contact-button,.utility-bar a.max-contact-button {
  display:inline-flex; align-items:center; justify-content:center;
  min-height:32px; padding:6px 12px; border-radius:999px;
  background:#5033b4; color:#fff; font-size:12px; font-weight:700;
  line-height:1.3; text-decoration:none; white-space:nowrap;
}
a.max-contact-button:hover,.utility-bar a.max-contact-button:hover { background:#3e258f; color:#fff; }
a.max-contact-button:focus-visible { outline:3px solid #5033b4; outline-offset:4px; }
.utility-contacts,.footer-contacts { align-items:center; }
.contact-dialog .max-contact-button { margin:6px 0 6px 6px; }
@media(max-width:740px) { .utility-bar a.max-contact-button { min-height:32px; padding:6px 12px; font-size:12px; } }

/* Compact price rows on the homepage. */
#estimate .service-prices { margin-bottom:1rem; }
#estimate .service-prices>h3 { font-size:1.2rem; margin:0 0 .5rem; }
#estimate .service-prices>p { font-size:.85rem; line-height:1.6; margin:.65rem 0; }
#estimate .service-prices article { display:flex; align-items:baseline; justify-content:space-between; gap:1rem; padding:.75rem 0; flex-wrap:wrap; }
#estimate .service-prices h4 { flex:1 1 12rem; font-size:.95rem; line-height:1.45; }
#estimate .service-prices h4 a:hover { color:var(--teal); }
#estimate .service-prices .price-amount { flex:0 0 auto; font-size:1.05rem; line-height:1.45; margin:0; white-space:nowrap; }
#estimate .estimate-method { margin:1.2rem 0 1.5rem; }
#estimate .estimate-method summary { cursor:pointer; color:var(--teal); font-size:.9rem; font-weight:600; padding:.3rem 0; }
#estimate .estimate-method summary:focus-visible { outline:2px solid var(--teal); outline-offset:4px; }
#estimate .estimate-method .estimate-list { margin-top:1rem; }
@media(max-width:740px) { #estimate .service-prices h4 { flex-basis:55%; font-size:.85rem; } #estimate .service-prices .price-amount { font-size:.95rem; } #estimate .service-prices article { gap:.5rem; } }

.analytics-choice { position:fixed; z-index:80; bottom:1rem; left:1rem; right:1rem; margin-inline:auto; max-width:55rem; padding:1rem 1.25rem; border:1px solid var(--line); border-radius:1rem; background:#f8fbf8; color:var(--ink); }
.analytics-choice[hidden] { display:none; }
.analytics-choice p { font-size:.9rem; line-height:1.55; margin:0 0 .75rem; }
.analytics-choice>div { display:flex; flex-wrap:wrap; gap:.6rem 1rem; align-items:center; }
.analytics-choice a { color:var(--teal); text-decoration:underline; }
.analytics-decline,.analytics-settings button { border:0; background:transparent; color:var(--teal); text-decoration:underline; text-underline-offset:.2em; cursor:pointer; font:inherit; font-size:.85rem; padding:.65rem 0; }
.analytics-settings { padding-block:.5rem; }
.analytics-choice button:focus-visible,.analytics-settings button:focus-visible { outline:2px solid var(--teal); outline-offset:3px; }

.review-list { margin:2rem 0; max-width:75ch; }
.review-card { padding:1.5rem 0; border-top:1px solid var(--line); overflow-wrap:anywhere; }
.review-heading { display:flex; justify-content:space-between; align-items:baseline; gap:1rem; }
.review-heading h3 { margin:0; font-size:1.1rem; }
.review-heading span { color:var(--teal); font-weight:650; white-space:nowrap; }
.review-card time { display:block; font-size:.85rem; color:var(--muted); margin:.4rem 0 1rem; }
.review-card p,.review-hint { line-height:1.7; color:var(--muted); }
.review-notice { padding:1rem; background:#e8efe9; border-radius:.75rem; }
.review-hint { font-size:.9rem; margin-top:1rem; }
