/* Lanseeraussivuston yhteinen typografia ja vuorovaikutus. */
:root {
  --link-hover:#954a5e;
  --link-underline-width:2px;
  --link-underline-offset:.25rem;
  --launch-h1:clamp(2.5rem,4.6vw,4.8rem);
  --launch-h2:clamp(1.8rem,3.2vw,2.6rem);
  --launch-h3:clamp(1.4rem,1.8vw,1.7rem);
}
.hero,.footer,.statement,.closing,.launch-service-selection,.about-values { --link-hover:#e3a5ad; }
.launch-service-selection .service-card,.launch-service-selection .service-condition { --link-hover:#954a5e; }
.page-intro { padding-block:clamp(2.75rem,4.5vw,4rem); }
.page-intro p:last-child { margin-bottom:0; }
main h1,.hero h1 { font:500 var(--launch-h1)/1.2 var(--font-sans); letter-spacing:-.035em; }
main h2,.contact-form h2,.service-detail-main h2,.boundary-note h2 { font:500 var(--launch-h2)/1.2 var(--font-sans); letter-spacing:-.035em; }
main h3,.path-list h3,.professional-points h3,.direct-contact h3,.urgent-note h3,
.launch-service-selection .service-card h3 {
  font:600 var(--launch-h3)/1.3 var(--font-sans); letter-spacing:-.025em;
}
.actions { gap:1rem; }
.hero .button-outline-light { background:transparent; color:#fff; border-color:#fff; }
.hero .button-outline-light:hover { background:#fff; color:var(--plum); }
.button { transition:background-color .16s ease,color .16s ease; }
a:not(.brand):not(.button):not(.nav-cta),.service-area-details summary {
  font-family:var(--font-sans); font-size:1.1rem; font-weight:600;
  text-decoration-thickness:var(--link-underline-width); text-underline-offset:var(--link-underline-offset);
}
/* Navigation and standalone actions have no permanent underline. */
main a:not(.button):not(.person-email-button),
.site-header nav a:not(.nav-cta),.site-header nav a[aria-current]:not(.nav-cta),
.footer a:not(.brand),.footer-grid a[href^="mailto:"],.footer-grid a[href^="tel:"],
.service-area-details summary { text-decoration-line:none; }
main a:not(.button):not(.text-link):not(.person-email-button):not(.line-list a):not(.card-link):not(.blog-card):hover,
main a:not(.button):not(.text-link):not(.person-email-button):not(.line-list a):not(.card-link):not(.blog-card):focus-visible,
.site-header nav a:not(.nav-cta):hover,.site-header nav a:not(.nav-cta):focus-visible,
.footer a:not(.brand):hover,.footer a:not(.brand):focus-visible,
.service-area-details summary:hover,.service-area-details summary:focus-visible {
  text-decoration-line:underline; text-decoration-color:var(--link-hover);
}
/* Links within prose remain recognizable before hovering. */
main p a:not(.text-link):not(.button):not(.person-email-button),
main .privacy-acknowledgement label a {
  text-decoration-line:underline; text-decoration-color:currentColor;
}
main p a:not(.text-link):not(.button):not(.person-email-button):hover,
main p a:not(.text-link):not(.button):not(.person-email-button):focus-visible,
main .privacy-acknowledgement label a:hover,main .privacy-acknowledgement label a:focus-visible {
  text-decoration-color:var(--link-hover);
}
.text-link,.text-link.light,.launch-service-selection .service-more .text-link {
  border-bottom:var(--link-underline-width) solid transparent; padding-bottom:var(--link-underline-offset); text-decoration:none;
  transition:border-color .16s ease;
}
.text-link:hover,.text-link:focus-visible,.text-link.light:hover,.text-link.light:focus-visible,
.launch-service-selection .service-more .text-link:hover,.launch-service-selection .service-more .text-link:focus-visible {
  border-bottom-color:var(--link-hover); text-decoration:none;
}
.site-header nav a[aria-current]:not(.nav-cta) { background:var(--tint); box-shadow:inset 0 -3px var(--rose); }
.line-list strong,.line-list a:hover strong,.line-list a:focus-visible strong {
  font:600 clamp(1.25rem,1.7vw,1.4rem)/1.4 var(--font-sans); text-decoration:none;
}
.line-list a > span:first-child { font-size:clamp(1.15rem,1.5vw,1.25rem); font-weight:500; }
.line-list a { padding-block:1.4rem; }
.line-list a:hover strong,.line-list a:focus-visible strong {
  color:var(--ink); text-decoration-line:underline; text-decoration-color:var(--link-hover);
  text-decoration-thickness:var(--link-underline-width); text-underline-offset:var(--link-underline-offset);
}
.service-area-details summary:focus-visible { outline:3px solid var(--link-hover); outline-offset:3px; }
.service-area-details summary::after,.service-area-details[open] summary::after { content:none; }
.service-audience::before { content:none; }
.launch-service-selection { background:var(--plum); }
.launch-service-selection .section-head h2 { color:#fff; }
.launch-service-selection .section-head .eyebrow { color:#e7bec5; }
.launch-service-selection .service-cards { position:relative; gap:1.5rem; margin-top:2.5rem; align-items:stretch; grid-auto-rows:1fr; }
.launch-service-selection .service-cards.card-heights-ready { align-items:start; grid-auto-rows:auto; }
.launch-service-selection .service-card { position:relative; min-height:var(--service-card-closed-height,0px); border:0; background:var(--cream); color:var(--ink); padding:clamp(1.5rem,3vw,2.25rem); border-radius:.3rem; scroll-margin-top:1.5rem; }
.service-card-measure { position:absolute; top:0; left:0; visibility:hidden; pointer-events:none; contain:layout style; }
.launch-service-selection .service-card h3 { margin-bottom:.85rem; }
.launch-service-selection .service-kicker { font-size:1.05rem; font-weight:600; letter-spacing:0; text-transform:none; margin:0 0 1.2rem; color:var(--rose); }
.launch-service-selection .service-outcome { border:0; border-left:3px solid var(--rose); padding:.3rem 0 .3rem 1rem; margin-top:auto; color:var(--ink); }
.launch-service-selection .service-condition { background:var(--cream); color:var(--ink); border-radius:.3rem; }
.launch-service-selection .service-more { margin-bottom:0; }
.launch-service-selection .service-more .text-link { color:#fff; }
.service-card .card-link { display:inline-flex; gap:.45rem; align-items:center; margin-top:1.4rem; padding:0 0 var(--link-underline-offset); align-self:flex-start; border-bottom:var(--link-underline-width) solid transparent; }
.service-card .card-link::after { content:''; position:absolute; inset:0; border-radius:.3rem; }
.launch-service-selection .service-card:hover .card-link,.launch-service-selection .service-card .card-link:focus-visible { border-bottom-color:var(--link-hover); text-decoration:none; }
.service-card:has(.card-link:focus-visible) { outline:3px solid #b65567; outline-offset:4px; }
.service-card .card-link:focus-visible { outline:none; }
.about-values { background:var(--plum); color:#f6edf4; }
.about-values h2,.about-values .values h3 { color:#fff; }
.about-values .eyebrow { color:#e7bec5; }
.about-values .values > div { border-top-color:#967c98; }
.about-values .values p:last-child { margin-bottom:0; }

.professional-lead { max-width:850px; }
.professional-colleague { max-width:850px; margin-top:2.5rem; }
.professional-colleague h3 { color:var(--plum); }
.professional-colleague .form-help { margin-top:1rem; }
.contact-form { border-top:4px solid var(--plum); background:var(--tint); }
.contact-form h2 { color:var(--plum); margin-bottom:.25rem; }
.contact-form .contact-method-option { display:flex; align-items:center; gap:.65rem; min-height:44px; }
.contact-form .contact-method-option input[type=checkbox] { flex:0 0 1.25rem; width:1.25rem; height:1.25rem; min-height:1.25rem; margin:0; padding:0; accent-color:var(--plum); }
.contact-form .conditional-contact-field:not([hidden]) { display:grid; gap:.4rem; }
.contact-form .conditional-contact-field[hidden] { display:none; }
.contact-form fieldset[aria-describedby="contact-method-help"] { margin-bottom:0; }
.contact-form #contact-help { margin:0; }
.person-email-button span { font-weight:600; }
.social-slots .social-slot img { filter:none; }
@media(max-width:760px) {
  .page-intro { padding-block:2.5rem; }
  .actions { align-items:stretch; }
  .actions .button { flex:1 1 180px; }
}
@media(prefers-reduced-motion:reduce) { .button,.text-link { transition:none; } }

.service-detail-without-aside { display:block; }
.service-detail-without-aside .service-detail-main { max-width:none; }

/* Palvelukuvaukset avautuvat kortin sisällä muuttamatta korttien järjestystä. */
.launch-service-disclosure { margin-top:1.4rem; }
.launch-service-disclosure summary { cursor:pointer; list-style:none; display:flex; align-items:center; gap:.55rem; width:fit-content; font:600 1.1rem/1.5 var(--font-sans); border-bottom:var(--link-underline-width) solid transparent; padding-bottom:var(--link-underline-offset); }
.launch-service-disclosure summary::-webkit-details-marker { display:none; }
.launch-service-disclosure summary:hover,.launch-service-disclosure summary:focus-visible { border-bottom-color:var(--link-hover); }
.launch-service-disclosure summary:focus-visible { outline:3px solid var(--link-hover); outline-offset:4px; }
.disclosure-service-name { position:absolute; width:1px; height:1px; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.disclosure-less { display:none; }
.launch-service-disclosure[open] .disclosure-more { display:none; }
.launch-service-disclosure[open] .disclosure-less { display:inline; }
.disclosure-arrow { display:inline-block; flex:0 0 auto; width:.45rem; height:.45rem; border-right:2px solid currentColor; border-bottom:2px solid currentColor; transform:translateY(-.12rem) rotate(45deg); }
.launch-service-disclosure[open] .disclosure-arrow { transform:translateY(.12rem) rotate(225deg); }
.launch-service-detail { border-top:1px solid var(--line); margin-top:1.5rem; padding-top:1.5rem; display:grid; grid-template-columns:minmax(0,1fr); gap:1.8rem; }
.launch-service-detail h4 { font:600 1.25rem/1.4 var(--font-sans); margin:0 0 .8rem; }
.launch-service-detail p + h4 { margin-top:1.8rem; }
.launch-service-detail p:last-child { margin-bottom:0; }
.launch-service-detail ul { padding-left:1.3rem; margin:0; }
.launch-service-detail li { margin-bottom:.7rem; }
@media(max-width:760px) { .launch-service-detail { grid-template-columns:1fr; } }

/* Shared metrics override more specific rules in the base stylesheet.
   Inline links wrap line by line; standalone actions keep one continuous line. */
a:not(.brand):not(.button):not(.nav-cta),
a:not(.brand):not(.button):not(.nav-cta) strong,
.launch-service-disclosure summary,.service-area-details summary {
  text-decoration-thickness:var(--link-underline-width) !important;
  text-underline-offset:var(--link-underline-offset) !important;
  text-decoration-style:solid;
  text-decoration-skip-ink:none;
}

/* The open question remains highlighted until its answer is closed. */
.faq-item > summary:hover,
.faq-item > summary:focus-visible,
.faq-item[open] > summary { color:var(--link-hover); }
.faq-item > summary {
  display:flex; align-items:center; justify-content:space-between; gap:1.25rem;
  padding:1rem 0; font:600 clamp(1.2rem,1.55vw,1.5rem)/1.4 var(--font-sans);
}
.faq-item > summary::after,.faq-item[open] > summary::after { content:none; }
.faq-item > summary:focus-visible { outline-color:var(--link-hover); }
.faq-item[open] .disclosure-arrow { transform:translateY(.12rem) rotate(225deg); }

.service-area-details summary { gap:.55rem; list-style:none; }
.service-area-details summary::-webkit-details-marker { display:none; }
.service-area-details[open] .disclosure-arrow { transform:translateY(.12rem) rotate(225deg); }

/* Match the service disclosure's continuous hover line, including its arrow. */
.service-area-details summary {
  border-bottom:var(--link-underline-width) solid transparent;
  padding-bottom:var(--link-underline-offset);
  text-decoration:none;
}
.service-area-details summary:hover,.service-area-details summary:focus-visible {
  border-bottom-color:var(--link-hover);
  text-decoration:none;
}

/* The services introduction sits on plum, so it needs light body text. */
.launch-service-selection .section-head .lead { color:#f6edf4; max-width:760px; margin-top:1rem; }

.blog-preview { background:var(--tint); }
.blog-preview-grid { display:grid; grid-template-columns:.9fr 1.1fr; gap:clamp(2rem,5vw,5rem); align-items:center; }
.blog-preview-grid h2 { max-width:14ch; }
.blog-card { display:flex; flex-direction:column; gap:1rem; padding:clamp(1.5rem,3vw,2.5rem); background:var(--cream); border-left:4px solid var(--rose); color:var(--ink); text-decoration:none; transition:background-color .16s ease; }
.blog-card:hover,.blog-card:focus-visible { background:#fff; }
.blog-card strong { color:var(--plum); font-size:clamp(1.45rem,2vw,1.8rem); line-height:1.3; }
.blog-card-label { color:var(--rose); font-size:.92rem; font-weight:700; }
.blog-card b { width:fit-content; display:inline-flex; gap:.5rem; border-bottom:var(--link-underline-width) solid transparent; padding-bottom:var(--link-underline-offset); color:var(--plum); }
.blog-card:hover b,.blog-card:focus-visible b { border-bottom-color:var(--link-hover); }
.blog-list { max-width:900px; }
.article { padding-block:clamp(2.5rem,6vw,5rem); }
.article .article-meta { margin-top:2.5rem; }
.article-body { margin-top:2.5rem; }
.article-note { margin-top:2rem; padding:1rem 1.25rem; background:var(--tint); color:var(--muted); font-size:.95rem; }
@media(max-width:760px) { .blog-preview-grid { grid-template-columns:1fr; } }

/* Keyboard focus stays visible against the dark sections. */
:is(.hero,.footer,.statement,.closing,.about-values) :is(a,button,input,select,summary):focus-visible,
.launch-service-selection .service-more a:focus-visible { outline-color:#e3a5ad; }

.form-delivery-note { border-left:3px solid var(--rose); padding:1rem 1.2rem; margin:.75rem 0; background:var(--cream); }
.form-delivery-note p { margin:0; }
.form-delivery-note strong { display:block; margin-bottom:.5rem; }
.contact-form button:disabled { opacity:.6; cursor:not-allowed; }

/* Keep the reserved social slots out of view until their profile links exist. */
.footer-grid > div:has(.social-slots):not(:has(.social-slots a)) { display:none; }
.footer-grid:has(.social-slots):not(:has(.social-slots a)) { grid-template-columns:1.55fr .9fr 1.2fr; }
@media(max-width:760px) {
  .footer-grid:has(.social-slots):not(:has(.social-slots a)) { grid-template-columns:1fr; }
}

.contact-form .privacy-acknowledgement { display:grid; gap:.3rem; }
.contact-form .privacy-acknowledgement .form-help { margin:0 0 0 2.05rem; }


/* Etusivun palveluhaitarit seuraavat sivuston väljää, viivoilla rytmitettyä ilmettä. */
.home-service-list { margin-top:3rem; border-top:1px solid var(--line); }
.home-service-list .home-service-item { display:block; margin:0; border-bottom:1px solid var(--line); }
.home-service-list .home-service-item > summary {
  display:grid; grid-template-columns:4.5rem minmax(0,1fr) 2rem; align-items:center;
  column-gap:2.4rem; min-height:140px; padding:1.7rem 1.2rem 1.7rem 0;
  list-style:none; cursor:pointer;
}
.home-service-list .home-service-item > summary::marker { content:none; font-size:0; }
.home-service-list .home-service-item > summary::-webkit-details-marker { display:none; }
.home-service-list .home-service-item > summary:focus-visible { outline:3px solid var(--rose); outline-offset:-3px; }
.home-service-list .home-service-number { color:var(--plum); font-size:1.25rem; font-weight:500; }
.home-service-list .home-service-item > summary strong { display:block; font:600 clamp(1.25rem,1.7vw,1.4rem)/1.4 var(--font-sans); }
.home-service-list .home-service-item > summary:hover strong,
.home-service-list .home-service-item > summary:focus-visible strong { text-decoration:underline; text-decoration-color:var(--rose); text-underline-offset:.25rem; }
.home-service-list .home-service-arrow { justify-self:end; color:var(--plum); font-size:1.15rem; line-height:1; transition:transform .16s ease; }
.home-service-list .home-service-item[open] > summary .home-service-arrow { transform:rotate(90deg); }
.home-service-list .home-service-collapse { display:none; }
.home-service-list .home-service-item[open] > summary .home-service-expand { display:none; }
.home-service-list .home-service-item[open] > summary .home-service-collapse { display:inline; }
.home-service-panel { max-width:980px; margin:0 2rem 2rem 6.9rem; padding:0; }
.home-service-panel .service-kicker { margin:0 0 .65rem; color:var(--rose); font-size:1rem; font-weight:700; letter-spacing:.08em; }
.home-service-panel > p:not(.service-kicker) { margin:0 0 1.15rem; }
.home-service-detail { border-top:1px solid var(--line); margin-top:1.3rem; padding-top:1.2rem; }
.home-service-detail h3 { margin:0 0 .65rem; font:600 1.15rem/1.4 var(--font-sans); letter-spacing:0; }
.home-service-detail p { margin:0; }
.home-service-detail ul { margin:0; padding-left:1.2rem; }
.home-service-detail li { margin:0 0 .5rem; }
.home-service-detail li:last-child { margin-bottom:0; }
@media(max-width:760px) {
  .home-service-list { margin-top:1.7rem; }
  .home-service-list .home-service-item > summary { grid-template-columns:2.5rem minmax(0,1fr) 1.6rem; column-gap:.75rem; min-height:108px; padding:1.05rem .25rem 1.05rem 0; }
  .home-service-list .home-service-number { font-size:1rem; }
  .home-service-list .home-service-item > summary strong { font-size:1.1rem; line-height:1.35; }
  .home-service-panel { margin:0 .25rem 1.6rem 3.25rem; }
}
