/* Fixaline brand A facelift (pen/fixaline-a-ui-ux-20261112.pen), 13.11.2026 */
/* Content pages: about, contact, contact information, store, news, privacy. */

/* ---------- Shared: page head and cyan accent bar ---------- */
.a-page-head { padding-top: 72px; padding-bottom: 56px; background: var(--a-ink, #000); }
.a-page-head__title,
.pg-privacy > h1.h,
.reach__title,
.people__title { position: relative; padding-top: 0; padding-bottom: 24px; font-size: clamp(34px, 4vw, 48px); }
.a-page-head__title::after,
.pg-privacy > h1.h::after,
.reach__title::after,
.people__title::after,
main:has(.pg-about) h2.h:not(.t-orange)::after,
main:has(.pg-store) h2.h::after {
  content: ""; position: absolute; left: 0; bottom: 0; width: 56px; height: 3px; background: var(--a-cyan, #00A0E2);
}
.reach__title::before, .people__title::before { content: none; }
.people__title { font-size: clamp(28px, 3vw, 36px); }

/* Sharp, outlined secondary buttons on content pages (orange stays for Send only) */
main:has(.pg-about) .btn,
main:has(.pg-store) .btn:not(.btn--send) {
  background: transparent; border: 1px solid var(--a-text, #fff); border-radius: 0; color: var(--a-text, #fff);
}
main:has(.pg-about) .btn:hover,
main:has(.pg-store) .btn:not(.btn--send):hover { border-color: var(--a-cyan, #00A0E2); color: var(--a-cyan, #00A0E2); }
.btn--send { border-radius: 0; color: var(--a-ink, #000); }
.btn--send:focus-visible, main .btn:focus-visible { outline: 2px solid var(--a-cyan, #00A0E2); outline-offset: 2px; }

/* ---------- Video heroes (about, store, news) ---------- */
.pg-about.has-bg h1.h, .pg-store.has-bg h1.h, .pg-news.has-bg h1.h { font-size: clamp(34px, 5vw, 56px); letter-spacing: -.02em; }
.pg-news.has-bg h1.h { font-size: clamp(36px, 6vw, 72px); }

/* ---------- About ---------- */
main:has(.pg-about) > .sec:nth-of-type(even):not(.has-bg) { background-color: var(--a-surface, #17181A); }
main:has(.pg-about) h2.h { position: relative; padding-bottom: 22px; color: var(--a-text, #fff); font-size: clamp(26px, 2.6vw, 34px); }
main:has(.pg-about) h2.h.a-center::after { left: 50%; transform: translateX(-50%); }
main:has(.pg-about) .prose p { color: var(--a-muted, #A3A6AD); }
main:has(.pg-about) .prose ul { list-style: none; margin: 0; padding: 0; }
main:has(.pg-about) .prose li { position: relative; padding-left: 26px; margin: 6px 0; }
main:has(.pg-about) .prose li::before { content: ""; position: absolute; left: 0; top: .78em; width: 12px; height: 2px; background: var(--a-cyan, #00A0E2); }
/* "Why choose" blocks become surface cards */
main:has(.pg-about) .row > .col:has(> h2.t-orange) { padding: 28px; background: var(--a-surface-2, #202124); }
main:has(.pg-about) .sec.row:has(> .row > .col > h2.t-orange) { flex-direction: column; gap: 16px; }
main:has(.pg-about) .row:has(> .col > h2.t-orange) { gap: 16px; align-items: stretch; }
main:has(.pg-about) .row:has(> .col > h2.t-orange) > .col { flex: 1 1 0; min-width: 0; }
main:has(.pg-about) h2.h.t-orange { padding-bottom: 0; color: var(--a-text, #fff); font-size: 20px; line-height: 1.3; }

/* ---------- Contact: phone numbers + form on top ---------- */
.a-contact {
  display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 8fr); gap: 24px 40px; align-items: start;
  padding: 72px max(var(--gutter, 24px), calc((100% - 1180px) / 2)); background: var(--a-bg, #0B0B0C);
}
.a-contact > .sec { padding: 0; overflow: visible; background: none; min-height: 0; }
.a-contact .contact__cards { grid-template-columns: 1fr; gap: 16px; }
.contact__card { background: var(--a-surface, #17181A); padding: 24px 28px; }
.contact__icon { stroke: var(--a-cyan, #00A0E2); }
.contact__label { color: var(--a-text, #fff); font: 600 18px/1.3 var(--head, Inter, sans-serif); }
.contact__value { font-size: clamp(18px, 1.6vw, 22px); }
.contact__value:hover, .contact__dir:hover { color: var(--a-cyan, #00A0E2); }
.contact__address { color: var(--a-muted, #A3A6AD); font-family: var(--body, Roboto, sans-serif); font-weight: 400; font-size: 16px; }
.contact__dir { color: var(--a-cyan, #00A0E2); }
.contact__copy { border-radius: 0; border-color: var(--a-line, #2B2C30); }
.contact__copy:hover, .contact__copy.is-done { border-color: var(--a-cyan, #00A0E2); color: var(--a-cyan, #00A0E2); }

.contact-form { gap: 20px; }
.a-contact .contact-form { padding: 32px; background: var(--a-surface, #17181A); }
.contact-form > h2.h { font-size: clamp(22px, 2vw, 26px); }
.contact-form .form { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.contact-form .field--wide { grid-column: 1 / -1; }
.contact-form .field label { font: 500 14px var(--head, Inter, sans-serif); color: var(--a-text, #fff); }
.contact-form .field input, .contact-form .field textarea {
  background: var(--a-ink, #000); border: 1px solid var(--a-field, #73767D); border-radius: 0; padding: 12px 14px;
}
.contact-form .field input:focus, .contact-form .field textarea:focus {
  outline: 2px solid var(--a-cyan, #00A0E2); outline-offset: 0; border: 1px solid var(--a-cyan, #00A0E2);
}
.contact-form .btn--send { min-width: 0; padding: 0 28px; }

/* ---------- Contact information ---------- */
.reach { border-bottom: 0; }
.reach__icon, .reach__row-icon, .person__icon { stroke: var(--a-cyan, #00A0E2); }
.reach__big:hover, .reach__links a:hover, .reach__dir:hover { color: var(--a-cyan, #00A0E2); }
.reach__label, .reach__muted { color: var(--a-muted, #A3A6AD); }
.reach__store { background: var(--a-surface, #17181A); border-radius: 0; }
.reach__links a, .reach__dir { text-decoration-color: var(--a-cyan, #00A0E2); }
.reach__store .open { border-radius: 0; border-color: var(--a-line, #2B2C30); }
.reach__store .open.is-open .open__dot { background: var(--a-cyan, #00A0E2); }
.people { background: var(--a-surface, #17181A); }
.person { background: transparent; border-radius: 0; }
.person__img { aspect-ratio: 1 / 1; object-position: center 20%; }
.person__body { padding: 18px 20px 20px; gap: 4px; }
.person__name { font-size: 20px; }
.person__role { color: var(--a-cyan, #00A0E2); font-size: 15px; }
.person__links { border-top-color: var(--a-line, #2B2C30); }
.person__links a:hover { color: var(--a-cyan, #00A0E2); }

/* ---------- Merged contact page: reach, form, people, visit (Olli 13.11.2026) ---------- */
.a-reach .reach__big { color: var(--a-text, #fff); }
.a-reach-form { gap: 20px; padding-top: 0; padding-bottom: 72px; }
.a-reach-form .form { width: 100%; max-width: 880px; padding: 32px; background: var(--a-surface, #17181A); }
.a-reach-form .form-note { width: 100%; max-width: 880px; }
.a-visit { align-items: center; gap: 48px; }
.a-visit__text { flex: 0 0 min(320px, 100%); display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
.a-visit .map { flex: 1 1 0; min-width: 0; margin: 0; }

/* ---------- Store ---------- */
.pg-store ~ .sec .gallery__item, .gallery__item { background: var(--a-surface, #17181A); }
.gallery__item:focus-visible { outline-color: var(--a-cyan, #00A0E2); }
main:has(.pg-store) h2.h { position: relative; padding-bottom: 22px; }
main:has(.pg-store) .prose p { color: var(--a-muted, #A3A6AD); }

/* ---------- Map placeholder ---------- */
main:has(.pg-contact) .map .embed, main:has(.pg-store) .map .embed, main:has(.pg-about) .map .embed {
  border: 1px solid var(--a-line, #2B2C30); background-color: var(--a-ink, #000);
}
main:has(.pg-contact) .map .embed::before, main:has(.pg-store) .map .embed::before, main:has(.pg-about) .map .embed::before {
  background-color: var(--a-cyan, #00A0E2);
}

/* Compact contact cards in the left column: icon beside the text */
.a-contact .contact__card { display: grid; grid-template-columns: 26px minmax(0, 1fr); column-gap: 14px; row-gap: 2px; align-items: center; }
.a-contact .contact__icon { width: 24px; height: 24px; margin: 0; }
.a-contact .contact__card > :not(.contact__icon) { grid-column: 2; justify-self: start; }
.a-contact .contact__copy { margin-top: 6px; }

/* ---------- Privacy policy ---------- */
.pg-privacy { padding-top: 72px; padding-bottom: 88px; }
.pg-privacy .prose { max-width: 760px; color: var(--a-muted, #A3A6AD); }
.pg-privacy .prose h2 { color: var(--a-text, #fff); font: 600 22px/1.3 var(--head, Inter, sans-serif); margin: 36px 0 10px; }
.pg-privacy .prose a { color: var(--a-cyan, #00A0E2); }
.pg-privacy .prose strong { color: var(--a-text, #fff); }

/* ---------- Responsive ---------- */
@media (max-width: 900px) {
  .a-contact { grid-template-columns: minmax(0, 1fr); padding-top: 40px; padding-bottom: 48px; }
  .person { flex-direction: row; }
  .person__img { aspect-ratio: auto; }
}
@media (max-width: 600px) {
  .a-page-head { padding-top: 40px; padding-bottom: 32px; }
  .a-contact .contact-form { padding: 20px; }
  .a-reach-form { padding-bottom: 48px; }
  .a-reach-form .form { padding: 20px; }
  .a-visit { flex-direction: column; align-items: stretch; gap: 20px; }
  .a-visit__text { flex-basis: auto; }
  .contact-form .form { grid-template-columns: minmax(0, 1fr); }
  .contact__card { padding: 16px 18px; }
  main:has(.pg-about) .row > .col:has(> h2.t-orange) { padding: 20px; }
  .pg-privacy { padding-top: 40px; padding-bottom: 56px; }
}

/* ---------- Map preview: local OSM still, Google Maps loads on click (site.js) ---------- */
.map .embed--map { position: relative; isolation: isolate; overflow: hidden; height: 320px; flex-direction: row; align-items: flex-end; gap: 0; padding: 16px; color: #fff; }
.map .embed--map .embed__map { position: absolute; inset: 0; z-index: -1; width: 100%; height: 100%; max-width: none; object-fit: cover; }
.map .embed--map::before { flex: 0 0 auto; width: 44px; height: 44px; border-radius: 0; background-size: 22px; }
.map .embed--map .embed__label { display: inline-flex; align-items: center; min-height: 44px; padding: 0 14px; background: rgba(11, 11, 12, .88); color: #fff; font-size: 15px; }
.map .embed--map:hover, .map .embed--map:focus-visible { text-decoration: none; }
.map .embed--map:hover .embed__label, .map .embed--map:focus-visible .embed__label { text-decoration: underline; text-underline-offset: 3px; }
.map .embed--map:hover::before, .map .embed--map:focus-visible::before { transform: none; }
.map__credit { margin: 6px 0 0; color: var(--a-muted, #A3A6AD); font-size: 12px; line-height: 1.4; text-align: right; }
.map__credit a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.map__credit a:hover { color: var(--a-text, #fff); }
@media (max-width: 640px) {
  .map .embed--map { height: 240px; padding: 12px; }
}

/* ---------- Mobile pass to pen EN / <page> · 390 (T5.2.4, 13.11.2026) ---------- */

/* The two range lists on About are one list to the reader: no section gap between them. */
main:has(.pg-about) .col:has(> .prose > ul) { gap: 0; }
main:has(.pg-about) .prose li { margin: 0; padding-top: 4px; padding-bottom: 4px; }
main:has(.pg-about) .prose li::before { top: calc(4px + .78em); }

/* Form fields: 16 px text so iOS does not zoom, visible error state, jump targets clear the sticky header. */
.contact-form .field input, .contact-form .field textarea { min-height: 48px; font-size: 16px; line-height: 1.4; scroll-margin-top: 120px; }
.contact-form .field textarea { min-height: 132px; resize: vertical; }
.contact-form .field input:user-invalid, .contact-form .field textarea:user-invalid { border-color: var(--a-error, #FF6B6B); }
.contact-form .field:has(:user-invalid) label { color: var(--a-error, #FF6B6B); }
#contact-form { scroll-margin-top: 88px; }
.contact-form .form-note { color: var(--a-text, #fff); }

/* Tap areas of at least 44 px */
.contact__copy { min-height: 44px; }
.person__links a { min-height: 44px; }
.person__alt { display: inline-flex; align-items: center; min-height: 44px; }

/* Contact persons, phone to small tablet: pen shows photo-on-top cards two abreast. Below 560 px the
   second address (name@sukitustukku.com) no longer fits a half-width card, so the card turns sideways. */
@media (min-width: 560px) and (max-width: 900px) {
  .people__list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .person { flex-direction: column; }
  .person__img { flex: none; width: 100%; min-height: 0; aspect-ratio: 4 / 5; align-self: auto; }
  .person__body { padding: 16px 16px 18px; }
}
@media (min-width: 768px) and (max-width: 900px) {
  .person__img { aspect-ratio: 1 / 1; }
}
@media (max-width: 559px) {
  .people__list { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .person__img { flex-basis: 112px; width: 112px; }
  .person__links { margin-top: 4px; }
}
@media (max-width: 400px) {
  .person__img { flex-basis: 96px; width: 96px; }
  .person__body { padding: 14px 12px 14px 16px; }
}

@media (max-width: 767px) {
  /* Video heroes (about, store, news) read like the pen page head: title bottom left, cyan bar.
     Without the video (reduced motion, slow start) the band is a plain dark page head, not an empty box. */
  .pg-about.has-bg, .pg-store.has-bg, .pg-news.has-bg {
    min-height: 220px; justify-content: flex-end; align-items: flex-start; padding-top: 56px; padding-bottom: 32px;
  }
  .pg-about.has-bg h1.h, .pg-store.has-bg h1.h, .pg-news.has-bg h1.h {
    position: relative; padding-bottom: 20px; text-align: left; font-size: clamp(30px, 8.6vw, 40px); line-height: 1.12;
  }
  .pg-about.has-bg h1.h::after, .pg-store.has-bg h1.h::after, .pg-news.has-bg h1.h::after {
    content: ""; position: absolute; left: 0; bottom: 0; width: 56px; height: 3px; background: var(--a-cyan, #00A0E2);
  }

  /* About: left-aligned headings like the pen, no fixed Elementor heights, cards close to their heading */
  main:has(.pg-about) > .sec:not(.has-bg) { min-height: 0; }
  main:has(.pg-about) .h.a-center, main:has(.pg-about) .prose.a-center { text-align: left; }
  main:has(.pg-about) h2.h.a-center::after { left: 0; transform: none; }
  main:has(.pg-about) .sec.row:has(> .row > .col > h2.t-orange) { padding-top: 20px; }
  main:has(.pg-about) h2.h.t-orange a { display: inline-flex; align-items: center; min-height: 44px; }
  main:has(.pg-about) .row > .col:has(> h2.t-orange) { gap: 8px; }
  main:has(.pg-about) .prose h2 {
    position: relative; margin: 8px 0 0; padding-bottom: 20px; color: var(--a-text, #fff);
    font: 700 clamp(24px, 6.8vw, 30px)/1.2 var(--head, Inter, sans-serif); letter-spacing: -.015em;
  }
  main:has(.pg-about) .prose h2::after { content: ""; position: absolute; left: 0; bottom: 0; width: 56px; height: 3px; background: var(--a-cyan, #00A0E2); }

  /* Store and contact: section titles at one size, gallery and map follow their text without double padding */
  main:has(.pg-store) h2.h, .contact-form > h2.h { font-size: clamp(24px, 6.8vw, 30px); }
  main:has(.pg-store) .sec:has(> .gallery) { padding-top: 0; }
  main:has(.pg-store) .a-contact + .sec:has(> .map) { padding-top: 0; }
  .a-contact { padding-top: 32px; padding-bottom: 48px; }
  .a-contact .contact__value { font-size: 20px; }
  .reach__store-title { font-size: 24px; }

  /* "Come to visit" on the contact page: a section with its own title, address in body text */
  .a-visit { gap: 16px; }
  .a-visit .contact__label { position: relative; padding-bottom: 20px; margin-bottom: 8px; font-size: clamp(24px, 6.8vw, 30px); }
  .a-visit .contact__label::after { content: ""; position: absolute; left: 0; bottom: 0; width: 56px; height: 3px; background: var(--a-cyan, #00A0E2); }
  .a-visit .contact__address { color: var(--a-text, #fff); font-size: 17px; line-height: 1.5; }
  .a-visit .map { margin-top: 8px; }
  .map__credit a { display: inline-flex; align-items: center; min-height: 44px; }
  .map__credit { margin-top: 0; }

  /* News list (rendered when the news collection has entries): surface cards like the pen */
  .news-list ul { gap: 12px; }
  .news-list li { padding: 20px; background: var(--a-surface, #17181A); }
  .news-list h2.h { font-size: 20px; line-height: 1.3; }
  .news-list h2.h a { display: block; padding: 10px 0; margin: -10px 0; }
  .news-list p { margin: 8px 0 0; color: var(--a-muted, #A3A6AD); }

  /* Privacy: readable long text */
  .pg-privacy .prose { font-size: 16px; line-height: 1.65; }
  .pg-privacy .prose h2 { font-size: 20px; margin: 32px 0 8px; }
  .pg-privacy .prose ul { padding-left: 20px; }
  .pg-privacy .prose li { margin: 6px 0; }
  .pg-privacy .prose li::marker { color: var(--a-cyan, #00A0E2); }
}
