*,*::before,*::after{box-sizing:border-box}
body{margin:0;font-family:var(--font-body);color:var(--color-text);background:var(--color-background);font-size:max(16px,var(--font-size-body,1rem));line-height:max(1.4,var(--font-leading-body,var(--font-lineHeight,1.5)));font-weight:var(--font-weight,400);letter-spacing:var(--font-letterSpacing,0);overflow-wrap:break-word}
/* Line height comes from measured tokens when the site was imported (E192) and falls back to
   the theme default otherwise, so an unmeasured site keeps exactly the old 1.2 / 1.5. */
h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:var(--font-headingWeight,bold);line-height:var(--font-leading-heading,1.2);margin:0 0 var(--space-sm)}
h1{font-size:var(--font-size-display,var(--font-size-h1,2.25rem));line-height:var(--font-leading-display,var(--font-leading-h1,var(--font-leading-heading,1.2)));letter-spacing:var(--font-tracking-display);overflow-wrap:var(--font-wrap-display)}h2{font-size:var(--font-size-h2,1.6rem);line-height:var(--font-leading-h2,var(--font-leading-heading,1.2))}h3{font-size:var(--font-size-h3,1.2rem);line-height:var(--font-leading-h3,var(--font-leading-heading,1.2))}h4{font-size:var(--font-size-h4,1.05rem);line-height:var(--font-leading-h4,var(--font-leading-heading,1.2))}h5{font-size:1rem}h6{font-size:.9rem}
p{margin:0 0 var(--space-sm)}
a{color:var(--section-link,var(--link-color,var(--color-primary)));text-decoration:var(--link-decoration,underline);text-underline-offset:.2em}
/* An explicit section colour pair owns its links; unschemed sections keep the site's custom link colour. */
:where(.section[data-color-scheme]){--section-link:var(--scheme-link)}
img{max-width:100%;height:auto;display:block;border-radius:var(--image-radius,var(--radius-md))}
.section{padding:var(--space-section,var(--space-lg)) var(--space-md);margin-bottom:var(--space-sectionGap,0)}
.section__inner{max-width:var(--size-contentMaxWidth);margin:0 auto}
/* Own anchors ("Näytä tarkat asetukset"): a section's is an empty marker at its top. */
.cms-anchor{display:block;width:0;height:0;overflow:hidden}
.cms-anchor,.block[id]{scroll-margin-top:5rem}
/* Section background video (E148) and its reduced-motion still (E162). Both
   get their box from the per-section rule compile() emits for the child
   .section__video. A visitor who asked for less motion sees the poster image
   instead of the moving video, and no video at all without a poster. */
.section__video--still{display:none;border-radius:0}
@media (prefers-reduced-motion:reduce){video.section__video{display:none}.section__video--still{display:block}}
/* Pause/Play of the background video (WCAG 2.2.2): over the section's lower corner, hidden for
   less motion (the still shows) and without JavaScript (x-cloak). */
.section__video-toggle{position:absolute;right:var(--space-sm,.75rem);bottom:var(--space-sm,.75rem);z-index:2;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:1px solid rgb(255 255 255 / .6);border-radius:999px;background:rgb(0 0 0 / .55);color:#fff;cursor:pointer}
.section__video-toggle:focus-visible{outline:3px solid #fff;outline-offset:2px}
.section__video-icon{display:block;width:12px;height:14px;border-left:4px solid currentColor;border-right:4px solid currentColor;box-sizing:border-box}
.section__video-icon--play{width:0;height:0;border-left:13px solid currentColor;border-right:0;border-top:8px solid transparent;border-bottom:8px solid transparent;margin-left:3px}
@media (prefers-reduced-motion:reduce){.section__video-toggle{display:none}}
/* Light text over a background video (the dark and accent schemes): the video and its still are
   dimmed so the text keeps its contrast whatever the frame. */
.section:is([data-color-scheme="dark"],[data-color-scheme="accent"])>.section__video{filter:brightness(.45)}
/* Two dark (or accent) sections in a row read as one band: no page-coloured gap between them. */
.section[data-color-scheme="dark"]:has(+.section[data-color-scheme="dark"]),.section[data-color-scheme="accent"]:has(+.section[data-color-scheme="accent"]){margin-bottom:0}
.section[data-color-scheme="light"]{--scheme-bg:var(--scheme-light-background,var(--color-background));--scheme-fg:var(--scheme-light-text,var(--color-text));--scheme-link:var(--scheme-light-primary,var(--color-primary));--scheme-muted:var(--scheme-light-muted,var(--color-muted));--scheme-border:var(--scheme-light-border,var(--color-border));--scheme-surface:var(--scheme-light-surface,var(--color-surface));background:var(--scheme-bg);color:var(--scheme-fg)}
.section[data-color-scheme="dark"]{--scheme-bg:var(--scheme-dark-background,var(--color-text));--scheme-fg:var(--scheme-dark-text,var(--color-background));--scheme-link:var(--scheme-dark-primary,var(--color-background));--scheme-muted:var(--scheme-dark-muted,color-mix(in srgb,var(--color-background) 75%,transparent));--scheme-border:var(--scheme-dark-border,color-mix(in srgb,var(--color-background) 25%,transparent));--scheme-surface:var(--scheme-dark-surface,color-mix(in srgb,var(--color-background) 12%,var(--color-text)));background:var(--scheme-bg);color:var(--scheme-fg)}
.section[data-color-scheme="accent"]{--scheme-bg:var(--scheme-accent-background,var(--color-primary));--scheme-fg:var(--scheme-accent-text,var(--color-onPrimary,#fff));--scheme-link:var(--scheme-accent-primary,var(--color-onPrimary,#fff));--scheme-muted:var(--scheme-accent-muted,color-mix(in srgb,var(--color-onPrimary,#fff) 80%,transparent));--scheme-border:var(--scheme-accent-border,color-mix(in srgb,var(--color-onPrimary,#fff) 30%,transparent));--scheme-surface:var(--scheme-accent-surface,color-mix(in srgb,var(--color-onPrimary,#fff) 15%,var(--color-primary)));background:var(--scheme-bg);color:var(--scheme-fg)}
.section[data-color-scheme="muted"]{--scheme-bg:var(--scheme-muted-background,var(--color-surface));--scheme-fg:var(--scheme-muted-text,var(--color-text));--scheme-link:var(--scheme-muted-primary,var(--color-primary));--scheme-muted:var(--scheme-muted-muted,var(--color-muted));--scheme-border:var(--scheme-muted-border,var(--color-border));--scheme-surface:var(--scheme-muted-surface,var(--color-background));background:var(--scheme-bg);color:var(--scheme-fg)}
/* An accent section inverts the site button; the variants have rules of their own (theme.css repeats this list). */
.section[data-color-scheme="accent"] .button:not(:where(.button--link,.button--secondary,.button--outline,.button--ghost)){background:var(--scheme-fg);color:var(--scheme-bg)}
.hero--center{text-align:center}
.hero--end{text-align:right}
.hero__subheading{font-size:1.15rem;opacity:.9}
.hero__badge{display:inline-flex;align-items:center;width:fit-content;max-width:100%;margin:0;padding:.35rem .9rem;border-radius:999px;font-size:.875rem;font-weight:600;line-height:1.3;color:var(--scheme-link,var(--color-primary));background:color-mix(in srgb,var(--scheme-link,var(--color-primary)) 10%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--scheme-link,var(--color-primary)) 28%,transparent)}
.hero__heading-accent{color:var(--scheme-link,var(--color-primary))}
.hero__image{width:100%;margin-bottom:var(--space-md);border-radius:var(--image-radius,var(--radius-md))}
/* Full content width: do not pair aspect-ratio with max-height (browsers
   shrink width to satisfy both). Cap tall viewports via object-fit crop only
   when a future height lock is needed. */
.hero--overlay{position:relative;width:100%;aspect-ratio:2/1;min-height:12rem;display:grid;align-items:end;justify-items:stretch;overflow:hidden;border-radius:var(--radius-md)}
.hero--overlay .hero__media{position:absolute;inset:0;z-index:0}
.hero--overlay .hero__image{width:100%;height:100%;object-fit:cover;margin:0;border-radius:0}
.hero--focus-top .hero__image{object-position:50% 20%}
.hero--focus-bottom .hero__image{object-position:50% 80%}
.hero--overlay .hero__content{position:relative;z-index:1;justify-self:start;margin:var(--space-lg);padding:10px 20px;max-width:min(36rem,92%);color:#fff;background:rgba(0,0,0,.55)}
.hero--overlay.hero--center .hero__content{justify-self:center;text-align:center}
.hero--overlay.hero--end .hero__content{justify-self:end;text-align:right}
.hero--overlay .hero__heading{margin:0 0 1px;padding:10px 15px;display:block;width:fit-content;max-width:100%;font-size:var(--font-size-display,1.75rem);font-weight:var(--font-headingWeight,600);line-height:var(--font-leading-display,1.1);letter-spacing:var(--font-tracking-display,.01em);overflow-wrap:var(--font-wrap-display,break-word)}
.hero--overlay .hero__subheading{margin:0;padding:0 5px;font-size:1rem;line-height:1.3;opacity:1}
.hero--overlay .hero__content .button{box-shadow:0 1px 2px rgba(0,0,0,.2);margin-top:var(--space-sm)}
.hero--overlay .hero__content .button:focus-visible{box-shadow:var(--focus-ring-shadow,0 0 0 3px #1b1f24),0 1px 2px rgba(0,0,0,.2)}
.hero__actions{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-sm)}.hero__actions .button{margin-top:0}
.hero--center .hero__actions{justify-content:center}.hero--end .hero__actions{justify-content:flex-end}
.hero.hero--overlay:is(.hero--light,.hero--dark) .hero__media::after{content:"";position:absolute;inset:0}
.hero.hero--overlay.hero--light .hero__media::after{background:rgba(255,255,255,.45)}
.hero.hero--overlay.hero--dark .hero__media::after{background:rgba(0,0,0,.45)}
.hero.hero--overlay:is(.hero--light,.hero--dark){align-items:center}
.hero.hero--overlay:is(.hero--light,.hero--dark) .hero__content{justify-self:center;margin:var(--space-lg) auto;padding:0 var(--space-md);max-width:min(60rem,92%);background:none}
.hero.hero--overlay:is(.hero--light,.hero--dark) .hero__heading{display:block;margin:0 0 var(--space-sm);padding:0;background:none;text-transform:none;letter-spacing:var(--font-tracking-display,normal);font-size:var(--font-size-display,clamp(2rem,4.6vw,4.2rem));font-weight:700;line-height:var(--font-leading-display,1.1);overflow-wrap:var(--font-wrap-display,break-word)}
.hero.hero--overlay:is(.hero--light,.hero--dark) .hero__subheading{display:block;padding:0;background:none;font-size:1.15rem}
.hero.hero--overlay.hero--light :is(.hero__content,.hero__heading,.hero__subheading){color:var(--color-text)}
.hero.hero--overlay.hero--dark :is(.hero__content,.hero__heading,.hero__subheading){color:#fff}
/* Fixed heights: the editor preview frame grows with its page, so vh would grow with it. */
.hero--h-medium{min-height:28rem}.hero--h-tall{min-height:40rem}.hero--h-xl{min-height:56rem}
.hero.hero--overlay:is(.hero--h-medium,.hero--h-tall,.hero--h-xl){aspect-ratio:auto}
.hero:is(.hero--h-medium,.hero--h-tall,.hero--h-xl):not(.hero--overlay){display:flex;flex-direction:column;justify-content:center;align-items:flex-start}
.hero--center:is(.hero--h-medium,.hero--h-tall,.hero--h-xl):not(.hero--overlay){align-items:center}
.hero--end:is(.hero--h-medium,.hero--h-tall,.hero--h-xl):not(.hero--overlay){align-items:flex-end}
@media (max-width:639.98px){.hero.hero--overlay{aspect-ratio:auto;min-height:20rem}}
/* "Kuvan päällä" card (docs/sivupohjat/LUOTTOKORTTI_2026-11-09.md, rivi 8): an app-style note in
   the picture's lower start corner, across its lower edge on a phone. The figure holds the picture
   and the card in one grid cell; it takes the picture's place in every design. */
.hero__figure{display:grid;margin:0 0 var(--space-md)}
.hero__figure .hero__image,.section.section--hero[data-design] .hero:not(.hero--overlay) .hero__figure .hero__image{grid-area:1/1}
.hero .hero__figure>.hero__image,.section.section--hero[data-design] .hero:not(.hero--overlay) .hero__figure>.hero__image{margin-bottom:0}
.hero__note{grid-area:1/1;align-self:end;justify-self:start;position:relative;z-index:1;display:grid;gap:.1rem;max-width:min(18rem,calc(100% - 1.5rem));margin:clamp(.75rem,2.5vw,1.5rem);padding:.75rem 1rem;text-align:start;color:var(--color-text,#111);background:color-mix(in srgb,var(--color-background,#fff) 94%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:1rem;box-shadow:0 12px 32px -12px rgba(0,0,0,.45)}
.hero__note p{margin:0}
.hero__note-title{font-size:.875rem;line-height:1.3;color:color-mix(in srgb,var(--color-text,#111) 78%,var(--color-background,#fff))}
.hero__note-value{font-size:1.35rem;font-weight:700;line-height:1.2;font-variant-numeric:tabular-nums}
.hero__note-text{font-size:.9rem;line-height:1.35;font-variant-numeric:tabular-nums}
@media (max-width:639.98px){.hero__note{justify-self:stretch;max-width:none;margin:.6rem}}
.section.section--hero[data-design] .hero:not(.hero--overlay) .hero__figure{margin-bottom:0}
.section.section--hero:is([data-design="gradient"],[data-design="spotlight"],[data-design="editorial"]) .hero:not(.hero--overlay)>.hero__figure{order:10;width:100%}
.section.section--hero[data-design="gradient"] .hero:not(.hero--overlay)>.hero__figure{max-width:58rem}
.section.section--hero[data-design="spotlight"] .hero:not(.hero--overlay)>.hero__figure{max-width:62rem}
@media (min-width:960px){.section.section--hero[data-design="split"] .hero:not(.hero--overlay)>.hero__figure{grid-column:2;grid-row:1/-1}.section.section--hero[data-design="splitReverse"] .hero:not(.hero--overlay)>.hero__figure{grid-column:1;grid-row:1/-1}.section.section--hero[data-design="editorial"] .hero:not(.hero--overlay)>.hero__figure{grid-column:1/-1;grid-row:3}}
/* The card and tasks designs lay the picture behind the whole hero: the card then sits in the
   open picture area above the text (card) or above the heading (tasks). */
.section.section--hero:is([data-design="card"],[data-design="tasks"]) .hero:not(.hero--overlay)>.hero__figure{display:contents}
.section.section--hero:is([data-design="card"],[data-design="tasks"]) .hero:not(.hero--overlay) .hero__figure .hero__image{grid-area:auto}
.section.section--hero[data-design="card"] .hero:not(.hero--overlay) .hero__note{grid-area:auto;grid-column:1;grid-row:1;margin-inline:0}
.section.section--hero[data-design="tasks"] .hero:not(.hero--overlay) .hero__note{align-self:center;margin:0 0 var(--space-sm)}
/* Text over the picture: the card goes to the upper end corner, away from the caption. */
.hero--overlay .hero__figure{position:absolute;inset:0;display:block;margin:0}
.hero--overlay .hero__note{position:absolute;top:0;inset-inline-end:0}
.button{display:inline-block;padding:var(--button-paddingY,15px) var(--button-paddingX,30px);border:1px solid var(--button-border,transparent);border-radius:var(--button-radius,var(--radius-md));background:var(--button-bg,var(--color-primary));color:var(--button-fg,var(--color-onPrimary,#fff));text-decoration:none;font-size:var(--button-fontSize,.8125rem);font-weight:var(--button-weight,400);line-height:var(--font-leading-button,1.2)}
/* Button variants are defined here only, with two classes: the theme stylesheet (theme-base theme.css)
   loads after this one and resets .button with one class, which must not undo a variant (E246). */
.button.button--lg{padding:calc(var(--button-paddingY,15px)*1.35) calc(var(--button-paddingX,30px)*1.35);font-size:1.125rem;font-weight:700;line-height:1.2}
.button.button--sm{padding:calc(var(--button-paddingY,15px)*.6) calc(var(--button-paddingX,30px)*.6);font-size:.75rem;line-height:1.2}
.container--boxed{border:1px solid #e1e1e1;background:#fff;border-radius:0;width:100%;padding:20px 30px;box-sizing:border-box}
.container--boxed .richtext,.container--boxed .richtext p{font-size:max(16px,1rem);line-height:1.65;text-align:left}
.container--boxed .richtext p{margin:0}
.button.button--secondary{background:var(--color-secondary,#1f2937);color:var(--color-onSecondary,#fff)}
.button--link{background:none;color:var(--color-primary);padding-left:0;padding-right:0}
:where(.section[data-color-scheme]) .button--link{background:none;color:var(--scheme-link)}
/* Per-button style (E242): outline and ghost paint with the link colour of the section, so they
   read on light, dark and accent schemes alike; a button without the setting keeps the site style.
   Mixing in 15 % of the section text colour keeps the brand hue but lifts the text to 4.5:1
   where the brand colour alone falls just short on a muted section (E246: three templates, 4.26–4.44). */
.button.button--outline{background:transparent;color:var(--scheme-link,var(--color-primary));color:color-mix(in srgb,var(--scheme-link,var(--color-primary)) 85%,var(--scheme-fg,var(--color-text,#111)));border-color:currentColor}
.button.button--ghost{background:transparent;color:var(--scheme-link,var(--color-primary));color:color-mix(in srgb,var(--scheme-link,var(--color-primary)) 85%,var(--scheme-fg,var(--color-text,#111)));border-color:transparent}
.button.button--outline:hover,.button.button--ghost:hover{background:color-mix(in srgb,currentColor 10%,transparent)}
/* A dark section paints the site text colour, and the default secondary colour is a dark slate: the
   button's box stood apart from it by 1.0-1.25:1 on 55 templates (E252). Below 3:1 tokensToCss sets
   --scheme-dark-secondary-* (scheme-secondary.ts) and the button is outlined in the section text colour,
   as on an accent section; a secondary colour that stands out keeps its fill. A style variant keeps its own look. */
[data-color-scheme="dark"] .button.button--secondary:not(:where(.button--outline,.button--ghost)){background:var(--scheme-dark-secondary-bg,var(--color-secondary,#1f2937));color:var(--scheme-dark-secondary-fg,var(--color-onSecondary,#fff));border-color:var(--scheme-dark-secondary-border,var(--button-border,transparent))}
[data-color-scheme="dark"] .button.button--secondary:not(:where(.button--outline,.button--ghost)):hover{background:var(--scheme-dark-secondary-hover,var(--color-secondary,#1f2937))}
/* The brand button keeps its colour on a dark section unless the colour all but vanishes there:
   below 1.5:1 against the section tokensToCss sets --scheme-dark-primary-* (scheme-secondary.ts, E253)
   and the button is filled with the section text colour, label in the section colour, as on an accent
   section. Unset, the variables fall back to the site button. A variant keeps its own look. */
[data-color-scheme="dark"] .button:not(:where(.button--link,.button--secondary,.button--outline,.button--ghost)){background:var(--scheme-dark-primary-bg,var(--button-bg,var(--color-primary,#0055ff)));color:var(--scheme-dark-primary-fg,var(--button-fg,var(--color-onPrimary,#fff)));border-color:var(--scheme-dark-primary-border,var(--button-border,transparent))}
/* On an accent section the site button is filled with the section text colour, and a filled
   secondary could match the section itself (secondary and primary are the same navy in some
   templates); there it is outlined in the section text colour instead, so it stays second. */
[data-color-scheme="accent"] .button.button--secondary{background:transparent;color:var(--scheme-fg);border-color:currentColor}
[data-color-scheme="accent"] .button.button--secondary:hover{background:color-mix(in srgb,currentColor 10%,transparent)}
/* Per-button colour ("Väri", registry BUTTON_TONES): a site colour with its own label colour. It wins
   over the section-scheme rules above (three classes), since the owner chose it for this button; a
   filled style paints the box, outline, ghost and link the text, lifted toward 4.5:1 like E246. */
.button.button--tone{--tone-bg:var(--color-primary,#0055ff);--tone-fg:var(--color-onPrimary,#fff)}
.button.button--tone-secondary{--tone-bg:var(--color-secondary,#1f2937);--tone-fg:var(--color-onSecondary,#fff)}
.button.button--tone-accent{--tone-bg:var(--color-accent,var(--color-primary,#0055ff));--tone-fg:var(--color-onAccent,#fff)}
.button.button--tone-dark{--tone-bg:var(--color-text,#111);--tone-fg:var(--color-background,#fff)}
.button.button--tone-light{--tone-bg:var(--color-background,#fff);--tone-fg:var(--color-text,#111)}
.button.button--tone.button--tone:not(:where(.button--outline,.button--ghost,.button--link)){background:var(--tone-bg);color:var(--tone-fg);border-color:var(--tone-bg)}
.button.button--tone.button--tone-light:not(:where(.button--outline,.button--ghost,.button--link)){border-color:color-mix(in srgb,var(--tone-fg) 30%,transparent)}
.button.button--tone.button--tone:where(.button--outline,.button--ghost,.button--link){color:var(--tone-bg);color:color-mix(in srgb,var(--tone-bg) 85%,var(--scheme-fg,var(--color-text,#111)))}
.button.button--tone.button--tone-light:where(.button--outline,.button--ghost,.button--link){color:var(--tone-bg)}
/* Per-button corners ("Kulmat"); unset, the site's button shape (--button-radius). */
.button.button--r-square{border-radius:0}
.button.button--r-rounded{border-radius:.5rem}
.button.button--r-pill{border-radius:999px}
.button.button--icon-end .cms-icon{margin-right:0;margin-left:.35em}
.button:is(:disabled,[aria-disabled="true"]){opacity:.55;cursor:not-allowed}
.heading--center,.text--center{text-align:center}
/* Running text keeps a readable measure, at most about 80 characters a line (docs/laatu U6), also in a
   wide card or a one-column layout area; centred text stays centred. */
.text,.richtext>p,.richtext>ul,.richtext>ol,.alert__body p,.vaalikone__intro{max-width:60ch}
/* A long word or a pasted address (a source link written out in full) breaks onto the next line instead of
   widening the page sideways on a phone. */
:where(.text,.richtext){overflow-wrap:break-word}
.text--center,.text--end{margin-inline:auto}.text--end{margin-inline-end:0}
.section--text:not([data-design])>.section__inner>.richtext{max-width:62ch}
.heading--end,.text--end{text-align:right}
.resource-list{list-style:none;padding:0;margin:0;display:grid;gap:var(--space-sm);grid-template-columns:repeat(auto-fill,minmax(12rem,1fr))}
.resource-list__item{padding:var(--space-sm) var(--space-md);background:var(--color-surface);border-radius:var(--radius-sm)}
.resource-list__price{color:var(--color-muted);margin-left:var(--space-xs)}
.resource-list__item>a{display:inline-flex;align-items:center;min-height:44px;min-width:44px}
.image--full{margin:0;width:100%;max-width:none;display:block}
.image--full img{width:100%;height:auto;display:block}
.image--content{margin:0}
figcaption{color:var(--scheme-muted,var(--color-muted));font-size:.9rem}
.divider{border:0;border-top:1px solid var(--color-muted)}
.block--container{border-radius:var(--radius-md)}
[data-editor-hint]{display:none}
.opening-hours{display:grid;gap:0;margin:0;max-width:24rem}
.opening-hours__row{display:flex;justify-content:space-between;gap:1rem;padding:.4rem 0;border-bottom:1px solid color-mix(in srgb,currentColor 18%,transparent)}
.opening-hours__row dt{font-weight:600}.opening-hours__row dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
.opening-hours__row--closed dd{opacity:.75}
.opening-hours-section{display:grid;gap:var(--space-md)}
@media (min-width:720px){.opening-hours-section:has(.opening-hours-section__note){grid-template-columns:minmax(0,24rem) minmax(0,1fr);gap:var(--space-xl,2.5rem)}}
.appt-services__intro{margin-bottom:var(--space-md)}
.appt-services--menu .av,.appt-services--compact .av{max-width:none;padding-top:0}
.appt-services--menu .av__list{gap:0}
.appt-services--menu .av__card{border:0;border-bottom:1px dotted color-mix(in srgb,currentColor 40%,transparent);border-radius:0;background:transparent;color:inherit;padding:.8rem 0}
.appt-services--menu .av__photo,.appt-services--compact .av__photo{display:none}
.appt-services--menu .av__price{color:var(--color-text,inherit);font-size:1.05rem}
.appt-services--menu .av .button,.appt-services--compact .av .button{min-height:2.75rem;padding:.35rem .9rem}
.appt-services--menu .av__variants li{border-top-style:dotted}
@media (min-width:960px){.appt-services--menu .av__list{grid-template-columns:1fr 1fr;column-gap:var(--space-xl,2.5rem)}}
.appt-services--compact .av__list{gap:.35rem}
.appt-services--compact .av__card{padding:.5rem .8rem}
.appt-services--compact .av__card-main > p{display:none}
.embed{position:relative;width:100%;aspect-ratio:16/9;background:var(--color-surface)}
.embed--4-3{aspect-ratio:4/3}.embed--1-1{aspect-ratio:1/1}.embed--3-4{aspect-ratio:3/4}
.embed--tall{aspect-ratio:auto;min-height:min(70vh,42rem);height:min(70vh,42rem)}
.embed--fixed{aspect-ratio:auto;height:var(--embed-height,720px);max-height:none}
.embed--fixed[data-consent-embed]:not([data-consent-on]){height:auto;min-height:15rem}
.ext-booking{max-width:60rem;margin:0 auto}.ext-booking__cta{margin:var(--space-md) 0}.ext-booking__button{min-height:44px}.ext-booking__frame{margin-top:var(--space-md)}
.embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.embed iframe[hidden],.embed__gate[hidden],.embed__gate-settings[hidden]{display:none}
.embed[data-consent-embed]:not([data-consent-on]){display:flex;min-height:15rem;border:1px solid var(--color-border,currentColor);border-radius:var(--radius-md)}
.embed__gate{margin:auto;padding:var(--space-md);max-width:34rem;text-align:center;color:var(--color-text)}
.embed__gate-text{margin:0 0 var(--space-sm)}.embed__gate-actions{margin:0;display:flex;flex-wrap:wrap;gap:var(--space-sm);justify-content:center;align-items:center}
.embed__gate-settings{background:none;border:0;padding:.5rem;font:inherit;color:inherit;text-decoration:underline;cursor:pointer;min-height:44px}
.osm-map{position:relative;overflow:hidden;border-radius:var(--radius-md,8px);border:1px solid var(--scheme-border,var(--color-border,#d5d9e0))}
.osm-map{width:100%;aspect-ratio:4/3}.osm-map--16-9{aspect-ratio:16/9}.osm-map--1-1{aspect-ratio:1/1}.osm-map--3-4{aspect-ratio:3/4}.osm-map--tall{aspect-ratio:auto;height:min(70vh,42rem)}
@media (max-width:599px){.osm-map--16-9{aspect-ratio:4/3}}
.osm-map__canvas,.osm-map .osm-map__canvas.maplibregl-map{position:absolute;inset:0;width:100%;height:100%}
.osm-map__static{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;padding:var(--space-md,1rem);text-align:center}
.osm-map__static p{margin:0;max-width:36ch}
.osm-map__static a{display:inline-flex;align-items:center;min-height:44px;padding:0 .5rem}
.osm-map.is-live .osm-map__static{display:none}
.osm-map__address{font-weight:600}
.osm-map__caption{margin:.5rem 0 0;max-width:60ch;display:flex;flex-wrap:wrap;gap:.25rem 1rem;align-items:center}
.osm-map__route{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;padding:0 .25rem}
.osm-map .maplibregl-canvas:focus-visible{outline:3px solid var(--scheme-link,var(--color-primary,#0b57d0));outline-offset:-3px}
.osm-map .maplibregl-ctrl-group button{width:44px;height:44px}
.osm-map .maplibregl-popup-close-button{width:44px;height:44px;font-size:1.25rem}
.osm-map .maplibregl-ctrl-attrib{background:rgba(255,255,255,.92);color:#1f2933}
.osm-map .maplibregl-ctrl-attrib a{display:inline-flex;align-items:center;min-height:44px;padding:0 .5rem;color:#1f2933}
.osm-marker{width:44px;height:44px;display:flex;align-items:flex-end;justify-content:center;padding:0;border:0;background:none;cursor:pointer;color:var(--color-primary,#0b57d0)}
.osm-marker svg{display:block;width:28px;height:38px;filter:drop-shadow(0 1px 1px rgba(0,0,0,.35))}
.osm-marker[aria-pressed="true"] svg{transform:scale(1.25);transform-origin:50% 100%}
.osm-marker:focus-visible{outline:3px solid var(--scheme-link,var(--color-primary,#0b57d0));outline-offset:2px}
.portal-links{display:flex;flex-wrap:wrap;gap:var(--space-sm,.75rem);margin:var(--space-md,1rem) 0 0;padding:0;list-style:none}
.portal-links__link{min-height:44px;display:inline-flex;align-items:center}
.moment-form{display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,11rem),1fr));align-items:end;padding:1rem;border:1px solid var(--color-border,#d5d9e0);border-radius:var(--radius-md,8px);background:var(--color-surface,transparent)}
.moment-field{display:grid;gap:.3rem;font-weight:600;font-size:.95rem}
.moment-field input,.moment-field select{min-height:44px;width:100%;padding:.4rem .6rem;border:1px solid var(--color-border,#b8bec8);border-radius:var(--radius-sm,6px);background:var(--color-background,#fff);color:var(--color-text,inherit);font:inherit;font-weight:400}
.moment-form .button{min-height:44px}
.moment-note{margin:.75rem 0 0;color:var(--color-muted,#555);font-size:.95rem}
.moment-results{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr));margin:1.25rem 0 0;padding:0;list-style:none}
.moment-card{display:grid;gap:.4rem;align-content:start;padding:0 0 1rem;border:1px solid var(--color-border,#d5d9e0);border-radius:var(--radius-md,8px);overflow:hidden;background:var(--color-surface,#fff)}
.moment-card>*:not(img){margin:0 1rem}
.moment-card img{display:block;width:100%;aspect-ratio:3/2;object-fit:cover}
.moment-card .button{justify-self:start;min-height:44px}
.moment-card--off{opacity:.75}
.moment-reading{max-width:40rem}
.moment-reading__book{display:flex;gap:1rem;align-items:center;margin:0 0 1rem}
.moment-reading__book img{width:4.5rem;height:auto;border-radius:4px}
.moment-reading__text{max-width:54ch;font-size:1.075rem;line-height:1.75}
.moment-reading__text h3{margin:1.5rem 0 .5rem}
.moment-reading__text p{margin:0 0 1em}
.moment-reading__more{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;margin-top:1.25rem}
.moment-reading__label{display:inline-block;margin:0 0 .75rem;padding:.15rem .5rem;border-radius:999px;background:var(--color-surface,#f3f3f3);font-size:.85rem}
.moment-reading audio{width:100%;max-width:28rem}
.cookie-policy__scroll{overflow-x:auto;margin:0 0 var(--space-md)}
.cookie-policy__table{width:100%;border-collapse:collapse;font-size:.95rem}
.cookie-policy__table th,.cookie-policy__table td{text-align:left;vertical-align:top;padding:var(--space-xs) var(--space-sm);border-bottom:1px solid var(--color-border,currentColor)}
.cookie-policy__table thead th{white-space:nowrap}
.cookie-policy__cookies{margin:0;padding:0;list-style:none}.cookie-policy__cookies code{word-break:break-all}
.cookie-policy__category{margin-top:var(--space-lg)}
@media (max-width:40rem){.cookie-policy__table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.cookie-policy__table,.cookie-policy__table tbody,.cookie-policy__table tr,.cookie-policy__table th,.cookie-policy__table td{display:block}.cookie-policy__table tr{padding:var(--space-sm) 0;border-bottom:1px solid var(--color-border,currentColor)}.cookie-policy__table tbody th,.cookie-policy__table td{padding:2px 0;border:0}.cookie-policy__table tbody tr:nth-child(even)>*{background:transparent}.cookie-policy__table td[data-label]::before{content:attr(data-label) ": ";font-weight:600}}
.site-footer__consent{margin:0}.site-footer__consent-button{display:inline-flex;align-items:center;background:none;border:0;padding:0;min-height:44px;font:inherit;color:inherit;text-decoration:underline;cursor:pointer}
.video{margin:0}.video__player{width:100%;height:auto;display:block;background:#000}
.gallery{margin:0}.gallery__grid{display:grid;gap:var(--space-sm);grid-template-columns:repeat(auto-fill,minmax(10rem,1fr))}.gallery .image{width:100%;height:100%;object-fit:cover}
.accordion{border-top:1px solid color-mix(in srgb,var(--color-muted) 35%,transparent)}
.accordion__item{border-bottom:1px solid color-mix(in srgb,var(--color-muted) 35%,transparent);padding:0}
.accordion__trigger{cursor:pointer;list-style:none;display:flex;width:100%;align-items:center;justify-content:space-between;gap:var(--space-sm);min-height:2.75rem;padding:var(--space-sm) 0;font-weight:600}
.accordion__trigger::-webkit-details-marker{display:none}
.accordion__panel{padding:0 0 var(--space-md)}
.tabs__list{display:flex;flex-wrap:wrap;gap:var(--space-xs);border-bottom:1px solid color-mix(in srgb,var(--color-muted) 35%,transparent);margin-bottom:var(--space-md)}
.tabs__tab{appearance:none;border:0;background:transparent;color:inherit;padding:var(--space-sm) var(--space-md);min-height:2.75rem;cursor:pointer;font-weight:600;border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs__tab[aria-selected='true']{border-bottom-color:var(--color-primary)}
.tabs__panel{padding:var(--space-sm) 0}
.tabs__today{margin:0 0 var(--space-xs);font-weight:600}
.tabs--today .tabs__today-title{margin:0 0 var(--space-xs)}
.tabs--cards{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:var(--space-lg,2rem);align-items:start}
.tabs--cards .tabs__list{grid-column:1;flex-direction:column;flex-wrap:nowrap;gap:.6rem;border-bottom:0;margin-bottom:0}
.tabs--cards .tabs__tab{display:flex;align-items:center;gap:.9rem;width:100%;margin:0;padding:.9rem 1.1rem;min-height:4.25rem;text-align:start;border:1px solid var(--color-border,#e5e7eb);border-radius:1rem;background:var(--color-background,#fff);transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease}
.tabs--cards .tabs__tab:hover{border-color:color-mix(in srgb,var(--color-primary) 45%,transparent);background:color-mix(in srgb,var(--color-primary) 5%,var(--color-background,#fff))}
.tabs--cards .tabs__tab[aria-selected='true']{border-color:color-mix(in srgb,var(--color-primary) 60%,#fff);background:linear-gradient(120deg,var(--color-primary),color-mix(in srgb,var(--color-primary) 62%,#0b1a4a));color:var(--color-onPrimary,#fff);box-shadow:0 14px 30px -18px color-mix(in srgb,var(--color-primary) 70%,transparent)}
.tabs--cards .tabs__icon{flex:none;display:grid;place-items:center;width:2.4rem;height:2.4rem;border-radius:.7rem;background:color-mix(in srgb,var(--color-primary) 6%,var(--color-background,#fff));color:var(--color-primary);line-height:0}
.tabs--cards .tabs__icon svg{width:1.25rem;height:1.25rem}
.tabs--cards .tabs__tab[aria-selected='true'] .tabs__icon{background:color-mix(in srgb,#fff 18%,transparent);color:inherit}
.tabs--cards .tabs__title{flex:1;min-width:0;font-size:1.0625rem}
.tabs--cards .tabs__tag{flex:none;font-size:max(12px,.8rem);font-weight:600;letter-spacing:var(--font-label-tracking,.01em);text-transform:var(--font-label-transform,none);font-family:var(--font-label-family,inherit);opacity:.75}
.tabs--cards .tabs__panel{grid-column:2;grid-row:1;padding:var(--space-lg,2rem);border:1px solid var(--color-border,#e5e7eb);border-radius:1.25rem;background:var(--color-background,#fff);box-shadow:0 24px 50px -30px rgba(8,10,16,.25)}
@media (max-width:767px){.tabs--cards{grid-template-columns:minmax(0,1fr)}.tabs--cards .tabs__panel{grid-column:1;grid-row:auto}}
@media (prefers-reduced-motion:reduce){.tabs--cards .tabs__tab{transition:none}}
.tabs__panel--media{display:grid;gap:var(--space-md,1.5rem);align-items:center}
.tabs__media img{display:block;width:100%;height:auto;border-radius:var(--radius-md,12px)}
@media (min-width:768px){.tabs__panel--media{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.tabs__panel--media .tabs__media{order:2}}
.tabs--pills .tabs__list{justify-content:center;width:fit-content;max-width:100%;margin-inline:auto;margin-bottom:var(--space-md);padding:.3rem;gap:.25rem;border:0;border-radius:999px;background:color-mix(in srgb,var(--color-muted) 12%,transparent);flex-wrap:nowrap;overflow-x:auto}
.tabs--pills .tabs__tab{margin:0;padding:.5rem 1.25rem;border:0;border-radius:999px;white-space:nowrap;transition:background-color .15s ease,box-shadow .15s ease}
.tabs--pills .tabs__tab[aria-selected='true']{background:var(--color-background,#fff);color:var(--color-text,#111);box-shadow:0 1px 4px rgb(0 0 0/.15)}
@media (prefers-reduced-motion:reduce){.tabs--pills .tabs__tab{transition:none}}
/* "Välilehden kuva: Koko osion taustana" (docs/sivupohjat/LUOTTOKORTTI_2026-11-09.md): the active
   tab's picture fills the box behind the tabs under a dark veil, the text white on it (≥ 4.5:1 on a
   white picture). The picture and text fade in when x-show reveals a panel (an animation restarts
   when display:none lifts); none with less motion. Without JavaScript the first panel shows. */
.tabs--bg{position:relative;isolation:isolate;min-height:clamp(24rem,50vw,38rem);padding:clamp(1.25rem,4vw,3rem);border-radius:var(--radius-lg,1.25rem);overflow:hidden;background:#0b0f19;color:#fff}
.tabs--bg .tabs__list{position:relative;z-index:1;border-bottom-color:rgba(255,255,255,.35)}
.tabs--bg:not(.tabs--cards,.tabs--pills) .tabs__tab[aria-selected='true']{border-bottom-color:currentColor}
.tabs--bg .tabs__tab:focus-visible{outline:2px solid #fff;outline-offset:2px}
.tabs--bg.tabs--pills .tabs__list{background:rgba(255,255,255,.16)}
.tabs--bg.tabs--cards .tabs__tab:not([aria-selected='true']){background:rgba(0,0,0,.35);border-color:rgba(255,255,255,.3);color:#fff}
.tabs--bg .tabs__panel{max-width:42rem;background:none;border:0;box-shadow:none;color:inherit}
.tabs--bg .tabs__panel--media{display:block}
.tabs--bg .tabs__panel :is(h2,h3,h4,p,li,a:not(.button)){color:inherit}
.tabs--bg .tabs__media{position:absolute;inset:0;z-index:-1;animation:tabs-bg-in .5s ease both}
.tabs--bg .tabs__media img{display:block;width:100%;height:100%;object-fit:cover;border-radius:0}
.tabs--bg .tabs__media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.6),rgba(0,0,0,.72))}
/* Wide screens: the text keeps to the left third over a darker edge, so it never sits on the picture's subject (LUOTTOKORTTI_2026-11-09.md). */
@media (min-width:768px){.tabs--bg .tabs__panel{max-width:min(30rem,46%)}.tabs--bg .tabs__media::after{background:linear-gradient(90deg,rgba(0,0,0,.88) 0,rgba(0,0,0,.78) 38%,rgba(0,0,0,.3) 70%,rgba(0,0,0,.15) 100%)}}
.tabs--bg .tabs__body{animation:tabs-bg-in .5s ease both}
@keyframes tabs-bg-in{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.tabs--bg :is(.tabs__media,.tabs__body){animation:none}}
.motion-off .tabs--bg :is(.tabs__media,.tabs__body){animation:none}
.form-placeholder{padding:var(--space-md);border:1px dashed var(--color-muted);border-radius:var(--radius-md);color:var(--color-muted);text-align:center}
.event{display:grid;gap:var(--space-md);grid-template-columns:minmax(0,1fr);align-items:start}
@media (min-width:640px){.event{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}.event:not(:has(.event__media)){grid-template-columns:1fr}}
.event__media{border-radius:var(--radius-md);overflow:hidden;background:var(--color-surface)}
.event__when{font-size:.95rem;color:var(--color-muted);margin:0 0 var(--space-xs)}
.event__location{margin:0 0 var(--space-sm);font-weight:600}
.event__cta{margin:var(--space-md) 0 0}
.site-header__inner,.site-footer__inner{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-md)}
.site-header__brand{display:inline-flex;align-items:center;text-decoration:none;color:inherit;font-weight:700}
.site-header__logo{height:auto}
.menu{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--space-sm)}
.menu--level-1{flex-direction:column;gap:var(--space-xs)}
.menu__item{position:relative}
.menu__link,.menu__toggle{color:inherit;text-decoration:none;padding:var(--space-xs) var(--space-sm);display:inline-flex;align-items:center;gap:.35em;background:none;border:0;font:inherit;cursor:pointer}
.menu__link[aria-current],.menu__toggle[aria-expanded='true']{font-weight:700}
/* Measured per-item look from an imported header bar (E148): pill, coloured label, separator, gap. */
.menu__item--styled{margin-inline-end:var(--menu-item-gap-after,0)}
.menu__item--styled{display:flex;align-items:center}
.menu__item--styled>.menu__link,.menu__item--styled>.menu__toggle{background:var(--menu-item-bg,none);border-radius:var(--menu-item-radius,0);color:var(--menu-item-fg,inherit);font-weight:var(--menu-item-weight,inherit)}
.menu__item--pill>.menu__link,.menu__item--pill>.menu__toggle{height:var(--menu-item-height,auto);padding:0 var(--menu-item-pad-x,var(--space-sm));justify-content:center}
.menu__item--separated{display:flex;align-items:center}
.menu__item--separated::before{content:var(--menu-item-separator,'|');opacity:.5;display:inline-flex;justify-content:center;min-width:var(--menu-item-separator-space,var(--space-md))}
.menu__chevron{display:inline-block;width:.5em;height:.5em;border:solid currentColor;border-width:0 2px 2px 0;transform:rotate(45deg);flex:0 0 auto}
.menu__toggle[aria-expanded='true'] .menu__chevron{transform:rotate(225deg)}
.menu__submenu{display:none;position:absolute;left:0;top:100%;min-width:12rem;background:var(--color-background);padding:var(--space-sm);border-radius:var(--radius-sm);box-shadow:0 4px 16px rgba(0,0,0,.12);z-index:10}
.menu__submenu--open,.no-js .menu__item:focus-within>.menu__submenu{display:block}
.navigation--vertical .menu{flex-direction:column}
.locale-switcher__list{list-style:none;margin:0;padding:0;display:flex;gap:var(--space-sm)}
.locale-switcher__link{color:inherit}
.site-footer__inner{align-items:flex-start;justify-content:flex-start;text-align:start}
.site-footer__links{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--space-sm)}
.site-footer__social{display:flex;gap:var(--space-sm)}
.site-footer__copyright{display:block;text-align:start}
.site-header__mobile{display:none;margin-left:auto}
.site-mobile-nav{position:relative}
.site-header__toggle{display:flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;padding:0;border:1px solid color-mix(in srgb,var(--color-muted) 35%,transparent);border-radius:var(--radius-sm);background:transparent;color:inherit;cursor:pointer;position:relative;z-index:70;transform:none!important;box-shadow:none!important;transition:background-color .15s ease,border-color .15s ease,color .15s ease}
.site-header__toggle:hover,.site-header__toggle:active,.site-header__toggle:focus-visible{transform:none!important;box-shadow:none!important}
.site-header__toggle-bars{display:block;position:relative;width:1.15rem;height:14px}
.site-header__toggle-bars span{display:block;position:absolute;left:0;width:100%;height:2px;background:currentColor;border-radius:1px;transform-origin:center;transition:transform .2s ease,opacity .2s ease,top .2s ease}
.site-header__toggle-bars span:nth-child(1){top:0}
.site-header__toggle-bars span:nth-child(2){top:6px}
.site-header__toggle-bars span:nth-child(3){top:12px}
.site-header__toggle[aria-expanded=true] .site-header__toggle-bars span:nth-child(1){top:6px;transform:rotate(45deg)}
.site-header__toggle[aria-expanded=true] .site-header__toggle-bars span:nth-child(2){opacity:0}
.site-header__toggle[aria-expanded=true] .site-header__toggle-bars span:nth-child(3){top:6px;transform:rotate(-45deg)}
.site-nav-drawer{display:flex;flex-direction:column;position:fixed;inset-block:0;inset-inline-start:auto;inset-inline-end:0;z-index:60;width:min(22rem,88vw);background:var(--color-background);border-inline-start:1px solid color-mix(in srgb,var(--color-muted) 35%,transparent);border-inline-end:0;box-shadow:0 8px 32px rgba(0,0,0,.18);overflow-y:auto;overscroll-behavior:contain}
.site-nav-drawer--animating{transition:transform .28s ease;will-change:transform}
.site-nav-drawer--from-end{transform:translateX(100%)}
.site-nav-drawer--at-rest{transform:translateX(0)}
@media (prefers-reduced-motion:reduce){.site-header__toggle-bars span,.site-nav-drawer--animating{transition:none}}
.site-nav-drawer__inner{flex:1;padding:var(--space-lg) var(--space-md)}
.site-nav-drawer__close{display:none}
.site-nav-drawer__backdrop{position:fixed;inset:0;z-index:55;border:0;padding:0;margin:0;background:rgba(0,0,0,.45);cursor:pointer}
html.site-nav-locked,html.site-nav-locked body{overflow:hidden}
.site-mobile-nav--dropdown .site-nav-drawer{position:absolute;inset:auto;top:100%;inset-inline:0;width:auto;max-height:calc(100dvh - 100%);border-inline-end:0;border-bottom:1px solid color-mix(in srgb,var(--color-muted) 35%,transparent);box-shadow:0 2px 8px rgba(0,0,0,.1)}
.site-mobile-nav--dropdown .site-nav-drawer__inner{padding-top:var(--space-md)}
.site-mobile-nav--dropdown .site-nav-drawer__close,.site-mobile-nav--dropdown .site-nav-drawer__backdrop{display:none}
.no-js .site-header__toggle,.no-js .site-nav-drawer__close,.no-js .site-nav-drawer__backdrop{display:none}
.no-js .site-nav-drawer{position:static;width:100%;border:0;box-shadow:none}
.no-js .site-nav-drawer__inner{padding-top:var(--space-md)}
.site-nav--mobile .menu,.site-nav--mobile .locale-switcher__list{display:grid;gap:var(--space-sm)}
.site-nav--mobile .menu__submenu{position:static;width:100%;box-shadow:none;border:0;padding-left:var(--space-md)}
@media (max-width:959px){.site-header__mobile{display:block}.site-nav--desktop,.locale-switcher--desktop{display:none}}
.social-links{display:flex;flex-wrap:wrap;gap:var(--space-sm);align-items:center}
.social-links__item{display:inline-flex;align-items:center;min-height:44px;color:inherit;text-decoration:none;font-weight:600;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);background:var(--color-surface)}
.alert{display:flex;gap:.75rem;align-items:flex-start;padding:1rem 1.25rem;border-radius:var(--radius-md,8px);border:1px solid color-mix(in srgb,var(--alert-color) 35%,transparent);background:color-mix(in srgb,var(--alert-color) 10%,var(--color-background,#fff));color:var(--color-text)}
.alert--info{--alert-color:var(--color-info,var(--color-primary,#2563eb))}.alert--success{--alert-color:var(--color-success,#15803d)}.alert--warning{--alert-color:var(--color-warning,#b45309)}.alert--error{--alert-color:#b91c1c}
.alert__icon{flex:none;color:var(--alert-color);line-height:0;margin-top:.15rem}.alert__icon svg{width:1.25rem;height:1.25rem}
.alert__title{display:block;margin-bottom:.15rem}.alert__text{margin:0}
/* A badge stays on one line while it fits; a long one wraps instead of widening a phone page (21.10.2026). */
.badge{display:inline-flex;align-items:center;padding:.2em .7em;border-radius:999px;font-size:.8125rem;font-weight:600;line-height:1.4;border:1px solid transparent;max-width:100%;text-wrap:balance}
.badge--primary{background:var(--color-primary);color:var(--color-onPrimary,#fff)}.badge--secondary{background:var(--color-secondary);color:var(--color-onSecondary,#fff)}.badge--accent{background:var(--color-accent);color:#fff}.badge--neutral{background:var(--color-text);color:var(--color-background,#fff)}.badge--outline{border-color:currentColor;color:var(--color-primary)}.badge--success{background:var(--color-success,#15803d);color:var(--color-onSuccess,#fff)}.badge--warning{background:var(--color-warning,#b45309);color:var(--color-onWarning,#fff)}.badge--info{background:var(--color-info,var(--color-primary));color:var(--color-onInfo,var(--color-onPrimary,#fff))}.badge--danger{background:var(--color-danger,#b3261e);color:var(--color-onDanger,#fff)}
.progress__head{display:flex;justify-content:space-between;gap:1rem;margin-bottom:.4rem;font-weight:600}.progress__value{font-variant-numeric:tabular-nums}
.progress__track{height:.75rem;border-radius:999px;background:var(--color-border,#e5e7eb);overflow:hidden}.progress__fill{display:block;height:100%;border-radius:inherit;background:var(--color-primary)}
.progress--circle{display:grid;justify-items:center;gap:.5rem;text-align:center}
.progress__ring{width:8rem;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:radial-gradient(closest-side,var(--color-background,#fff) 78%,transparent 79%),conic-gradient(var(--color-primary) calc(var(--progress)*1%),var(--color-border,#e5e7eb) 0)}
.progress__ring .progress__value{font-size:1.25rem;font-weight:700}.progress--circle .progress__label{margin:0;font-weight:600}
.stat__label{margin:0;color:var(--color-muted);font-size:.9rem}.stat__value{margin:.1rem 0;font-family:var(--font-heading,inherit);font-size:2.5rem;font-weight:700;line-height:1.1}.stat__desc{margin:0;color:var(--color-muted);font-size:.9rem}
.steps{list-style:none;margin:0;padding:0;display:grid;gap:1rem}
.steps--horizontal{grid-auto-flow:column;grid-auto-columns:1fr}
.steps__item{display:flex;gap:.75rem;align-items:flex-start;position:relative}
.steps--horizontal .steps__item{flex-direction:column;align-items:center;text-align:center}
.steps--horizontal .steps__item:not(:last-child)::after{content:"";position:absolute;top:1.25rem;left:calc(50% + 1.5rem);right:calc(-50% + 1.5rem);height:2px;background:var(--color-border,#e5e7eb)}
.steps--vertical .steps__item:not(:last-child)::after{content:"";position:absolute;left:1.25rem;top:2.75rem;bottom:-1rem;width:2px;background:var(--color-border,#e5e7eb)}
.steps__number{flex:none;width:2.5rem;height:2.5rem;border-radius:50%;display:grid;place-items:center;background:var(--color-primary);color:var(--color-onPrimary,#fff);font-weight:700}
.steps__title{display:block}.steps__desc{display:block;color:var(--color-muted);font-size:.9rem}
@media (max-width:639px){.steps--horizontal{grid-auto-flow:row}.steps--horizontal .steps__item{flex-direction:row;text-align:start}.steps--horizontal .steps__item:not(:last-child)::after{display:none}}
.timeline{list-style:none;margin:0;padding:0 0 0 1.5rem;border-left:2px solid var(--color-border,#e5e7eb);display:grid;gap:1.5rem}
.timeline__item{position:relative}
.timeline__item::before{content:"";position:absolute;left:calc(-1.5rem - 7px);top:.3rem;width:12px;height:12px;border-radius:50%;background:var(--color-primary);box-shadow:0 0 0 3px var(--color-background,#fff)}
.timeline__time{display:block;color:var(--color-primary);font-weight:700;font-size:.9rem}.timeline__title{display:block}.timeline__title a{display:inline-block;padding:.75rem 0;margin:-.75rem 0}.timeline__text{margin:.2rem 0 0;color:var(--color-muted)}
.image--circle{border-radius:50%!important;aspect-ratio:1;object-fit:cover}.image--rounded{border-radius:1.5rem!important}.image--hexagon{border-radius:0!important;aspect-ratio:1;object-fit:cover;clip-path:polygon(25% 3%,75% 3%,100% 50%,75% 97%,25% 97%,0 50%)}
.mockup{border:1px solid var(--color-border,#d1d5db);border-radius:.75rem;overflow:hidden;background:var(--color-surface,#f3f4f6);box-shadow:0 10px 30px rgba(0,0,0,.08)}
.mockup__bar{display:flex;gap:.4rem;padding:.6rem .8rem;background:var(--color-surface,#f3f4f6);border-bottom:1px solid var(--color-border,#d1d5db)}
.mockup__bar span{width:.7rem;height:.7rem;border-radius:50%;background:#d1d5db}
.mockup--window .mockup__bar span:nth-child(1){background:#ef4444}.mockup--window .mockup__bar span:nth-child(2){background:#f59e0b}.mockup--window .mockup__bar span:nth-child(3){background:#22c55e}
.mockup__screen{line-height:0}.mockup__screen img{border-radius:0!important;width:100%}
.mockup--phone{max-width:20rem;margin-inline:auto;padding:.75rem;border:0;border-radius:2.5rem;background:#111827}
.mockup--phone .mockup__screen{border-radius:1.9rem;overflow:hidden}
/* A video in a device frame (video-frame.ts): the poster fills the screen; the Play/Pause button
   (WCAG 2.2.2) is the hero background video's, and stays for less motion so the video can be
   started by hand. Without JavaScript the native controls stay and the button is hidden. */
.mockup--none{border:0;border-radius:0;background:none;box-shadow:none}
.video--framed .mockup__screen{position:relative}.video--framed .video__player{background:#000;width:100%;height:auto}
.video__toggle{position:absolute;right:.75rem;bottom:.75rem;z-index:2;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:1px solid rgb(255 255 255 / .6);border-radius:999px;background:rgb(0 0 0 / .55);color:#fff;cursor:pointer}
.video__toggle:focus-visible{outline:3px solid #fff;outline-offset:2px;box-shadow:0 0 0 6px #111827}
.video__toggle-icon{display:block;width:12px;height:14px;border-left:4px solid currentColor;border-right:4px solid currentColor;box-sizing:border-box}
.video__toggle-icon--play{width:0;height:0;border-left:13px solid currentColor;border-right:0;border-top:8px solid transparent;border-bottom:8px solid transparent;margin-left:3px}
/* App store links (app-badges.ts): one height for all (Google: the same size as the others),
   a quarter of it as clear space (Apple, Google), never under Apple's 40 px; the owner's
   official artwork is shown as it is, never cropped, recoloured or animated. */
.app-badges{--app-badge-h:48px;list-style:none;margin:var(--space-sm,.75rem) 0 0;padding:0;display:flex;flex-wrap:wrap;gap:calc(var(--app-badge-h) / 4);align-items:center}
.app-badges--small{--app-badge-h:40px}.app-badges--stack{flex-direction:column;align-items:flex-start}
.app-badges--center{justify-content:center}.app-badges--stack.app-badges--center{align-items:center}
.app-badges--end{justify-content:flex-end}.app-badges--stack.app-badges--end{align-items:flex-end}
.app-badges li{margin:0;padding:0}
.app-badge{display:inline-flex;align-items:center;gap:.5rem;height:var(--app-badge-h);text-decoration:none}
.app-badge__image{display:block;height:100%;width:auto;max-width:none;border-radius:0!important;box-shadow:none!important;filter:none!important;transform:none!important}
.app-badge--text{padding:0 1rem;border:2px solid currentColor;border-radius:.5rem;color:inherit;font-weight:600;line-height:1.2}
.app-badge--text:hover{background:color-mix(in srgb,currentColor 10%,transparent)}
.app-badge:focus-visible{outline:3px solid var(--color-primary,#2563eb);outline-offset:3px}
.app-badge__icon{display:inline-flex;width:1.25rem;height:1.25rem}.app-badge__icon svg{width:100%;height:100%}
/* Download QR code beside the badges (app-badges.ts). */
.app-download{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm,.75rem) var(--space-lg,1.5rem);margin-top:var(--space-sm,.75rem)}
.app-download>.app-badges{margin:0}.app-download--center{justify-content:center}.app-download--end{justify-content:flex-end}
.app-download__qr{margin:0;display:grid;justify-items:center;gap:.35rem}
.app-download__qr-link{display:block;line-height:0}.app-download__qr .qr__svg{display:block;width:7.5rem;height:auto;background:#fff}
.app-download__qr-link:focus-visible{outline:3px solid var(--color-primary,#2563eb);outline-offset:3px}
.app-download__caption{color:inherit;font-size:.875rem;font-weight:600;text-align:center}
@media (max-width:767px){.app-download--qr-wide .app-download__qr{display:none}}
/* A framed picture or video in a feature row keeps its own shape (a phone screen is tall). */
.feature-row__media .mockup .feature-row__image{aspect-ratio:auto;height:auto}.feature-row__media .mockup--phone{max-width:18rem}
.hero__apps,.cta__apps{margin-top:var(--space-sm,.75rem)}.hero--center .app-badges{justify-content:center}.cta--center .app-badges{justify-content:center}
.hero--center .app-download,.cta--center .app-download{justify-content:center}
/* Button group (E234): buttons joined into one control; only the outer corners are
   round and a hairline parts the segments. A column on a phone, so no label is cut. */
.button-group-wrap{display:flex}.button-group-wrap--center{justify-content:center}.button-group-wrap--end{justify-content:flex-end}
.button-group{--button-group-outline:var(--scheme-link,var(--color-primary));display:inline-flex;max-width:100%;border-radius:var(--button-radius,var(--radius-md));overflow:hidden;--button-group-line:color-mix(in srgb,currentColor 35%,transparent)}
.button-group>.button-group__item{flex:0 1 auto;display:inline-flex;align-items:center;justify-content:center;min-height:44px;margin:0;border-radius:0;text-align:center;transform:none;box-shadow:none}
.button-group>.button-group__item+.button-group__item{border-left:1px solid var(--button-group-line)}
.button-group--secondary>.button-group__item{background:var(--color-secondary);color:var(--color-onSecondary,#fff)}
.button-group--outline{border:1px solid var(--button-group-outline)}
.button-group--outline>.button-group__item{background:transparent;color:var(--button-group-outline);border-color:transparent}
.button-group--outline>.button-group__item+.button-group__item{border-left-color:var(--button-group-outline)}
.button-group--outline>.button-group__item:hover{background:color-mix(in srgb,var(--button-group-outline) 10%,transparent)}
.button-group>.button-group__item:focus-visible{outline:2px solid var(--color-text);outline-offset:-4px}
@media (max-width:639px){.button-group-wrap{display:block}.button-group{display:flex;flex-direction:column}.button-group>.button-group__item+.button-group__item{border-left:0;border-top:1px solid var(--button-group-line)}.button-group--outline>.button-group__item+.button-group__item{border-top-color:var(--button-group-outline)}}
/* List group (E233): rows with hairlines between them; a row with an address is a
   link over the whole row, at least 44px high. */
.list-group{list-style:none;margin:0;padding:0;border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md);overflow:hidden}
.list-group__item+.list-group__item{border-top:1px solid var(--scheme-border,var(--color-border))}
.list-group__row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);min-height:44px;padding:.7rem 1rem;color:inherit;text-decoration:none}
.list-group__label{min-width:0;overflow-wrap:anywhere}
.list-group__note{flex:none;margin-left:auto;color:var(--scheme-muted,var(--color-muted));font-size:.9rem}
.list-group__row--link::after{content:"›";content:"›" / "";flex:none;color:var(--scheme-muted,var(--color-muted));font-size:1.25rem;line-height:1}
.list-group__row--link:hover{background:color-mix(in srgb,var(--color-primary) 8%,transparent)}
.list-group__row--link:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}
/* Overlap ("Päällekkäin"): stacked grid layers, never free positioning. A phone keeps the stack
   in reading order; from 960 px the first two blocks share one row of 12 columns and overlap.
   Text in front sits on a solid panel in the section's own colour (contrast as the palette);
   text behind an image stops before the overlap, so no word is ever covered. */
@media (min-width:960px){
.section.section--grid .section__blocks.layers{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:0;row-gap:var(--space-lg);align-items:center;--layers-a:9;--layers-b:6;--layers-share-a:.375;--layers-share-b:.429}
.section.section--grid .section__blocks.layers.layers--small{--layers-a:8;--layers-b:7;--layers-share-a:.143;--layers-share-b:.167}
.section.section--grid .section__blocks.layers.layers--large{--layers-a:10;--layers-b:5;--layers-share-a:.556;--layers-share-b:.625}
.section.section--grid .section__blocks.layers.layers--align-start{align-items:start}
.section.section--grid .section__blocks.layers.layers--align-end{align-items:end}
.section.section--grid .section__blocks.layers>*{grid-row:1;min-width:0}
.section.section--grid .section__blocks.layers>:nth-child(1){grid-column:1/var(--layers-a)}
.section.section--grid .section__blocks.layers>:nth-child(2){grid-column:var(--layers-b)/-1}
.section.section--grid .section__blocks.layers>:nth-child(n+3){grid-row:auto;grid-column:1/-1}
.section.section--grid .section__blocks.layers.layers--front-first>:nth-child(1),.section.section--grid .section__blocks.layers.layers--front-second>:nth-child(2){position:relative;z-index:1}
.section.section--grid .section__blocks.layers.layers--front-first>:nth-child(1):not(.block--image),.section.section--grid .section__blocks.layers.layers--front-second>:nth-child(2):not(.block--image){background:var(--scheme-bg,var(--color-bg));color:var(--scheme-fg,var(--color-text));padding:clamp(1rem,2.5vw,2.5rem)}
.section.section--grid .section__blocks.layers.layers--front-second>:nth-child(1):not(.block--image){padding-inline-end:calc(var(--layers-share-a)*100% + var(--space-md))}
.section.section--grid .section__blocks.layers.layers--front-first>:nth-child(2):not(.block--image){padding-inline-start:calc(var(--layers-share-b)*100% + var(--space-md))}
.section.section--grid .section__blocks.layers .block--image img{width:100%;height:auto}
}
/* Typographic index: big underlined links that wrap like words; each stays one tap target. */
.list-group--index{display:flex;flex-wrap:wrap;gap:.05em .45em;border:0;border-radius:0;overflow:visible;font-family:var(--font-heading);font-size:clamp(1.75rem,1rem + 3.6vw,4.25rem);line-height:1.08;letter-spacing:-.02em}
.list-group--index .list-group__item+.list-group__item{border-top:0}
.list-group--index .list-group__row{display:inline-flex;align-items:baseline;gap:.3em;min-height:44px;padding:0}
.list-group--index .list-group__row--link{text-decoration:underline;text-decoration-thickness:.06em;text-underline-offset:.12em}
.list-group--index .list-group__row--link::after{content:none}
.list-group--index .list-group__row--link:hover{background:none;text-decoration-thickness:.12em}
.list-group--index .list-group__row--link:focus-visible{outline-offset:4px}
.list-group--index .list-group__note{margin-left:0;font-family:var(--font-body,inherit);font-size:max(.875rem,.28em);letter-spacing:0}
/* Avatar group (E232): round pictures that overlap by a quarter, the ring in the
   colour of the surface behind them so each face stays apart, then "+N" and a text. */
.avatar-group{--avatar-size:3rem;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .85rem}
.avatar-group--sm{--avatar-size:2.25rem}.avatar-group--lg{--avatar-size:4rem}
.avatar-group--center{justify-content:center}.avatar-group--end{justify-content:flex-end}
.avatar-group__faces{display:flex;align-items:center;padding-left:calc(var(--avatar-size)*.28)}
.avatar-group__face,.avatar-group__more{flex:none;box-sizing:border-box;width:var(--avatar-size);height:var(--avatar-size);margin-left:calc(var(--avatar-size)*-.28);border-radius:50%;border:2px solid var(--scheme-bg,var(--color-background,#fff))}
.avatar-group__face{object-fit:cover;background:var(--color-surface)}
.avatar-group__more{display:grid;place-items:center;padding:0 .2em;background:var(--scheme-surface,var(--color-surface));color:var(--scheme-fg,var(--color-text));font-size:calc(var(--avatar-size)*.3);font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;min-width:var(--avatar-size);width:auto;border-radius:999px}
.avatar-group__text{margin:0;font-size:.95rem;color:var(--scheme-muted,var(--color-muted))}
/* Masonry gallery (E231): CSS columns, no script. Pictures keep their own height and
   fill each column from top to bottom, which is also the reading order. Two columns
   on a phone, the chosen number from the md breakpoint up. The selector outweighs the
   grid rule compile() emits for the same element. */
figure.gallery.gallery--masonry>.gallery__grid{display:block;column-count:min(2,var(--gallery-columns,3));column-gap:var(--space-sm)}
.gallery--masonry .gallery__grid>.block{break-inside:avoid;margin:0 0 var(--space-sm)}
.gallery.gallery--masonry .image{height:auto}
@media (min-width:960px){figure.gallery.gallery--masonry>.gallery__grid{column-count:var(--gallery-columns,3)}}
/* Before–after image (E229). Side by side until the script marks it live, so both
   pictures show without JavaScript; live, the "before" picture lies on top and is
   clipped at --before-after. The range input is invisible but focusable: it serves
   the keyboard and screen readers, and its focus ring is drawn on the knob. */
.before-after{margin:0;--before-after-ratio:16/9}
.before-after--4-3{--before-after-ratio:4/3}.before-after--1-1{--before-after-ratio:1}.before-after--3-4{--before-after-ratio:3/4}
.before-after__stage{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm)}
.before-after__pane{position:relative;aspect-ratio:var(--before-after-ratio);overflow:hidden;border-radius:var(--image-radius,var(--radius-md));background:var(--color-surface)}
.before-after__image{width:100%;height:100%;object-fit:cover;border-radius:0}
.before-after__tag{position:absolute;top:.75rem;left:.75rem;padding:.2em .7em;border-radius:999px;background:rgba(17,24,39,.72);color:#fff;font-size:.8125rem;font-weight:600;line-height:1.4}
.before-after__range,.before-after__handle{display:none}
@media (max-width:639px){.before-after__stage{grid-template-columns:1fr}}
.before-after__caption{margin-top:var(--space-xs);color:var(--scheme-muted,var(--color-muted));font-size:.9rem}
.before-after.is-live .before-after__stage{display:block;aspect-ratio:var(--before-after-ratio);overflow:hidden;border-radius:var(--image-radius,var(--radius-md));cursor:ew-resize;touch-action:pan-y;user-select:none;-webkit-user-select:none}
.before-after.is-live .before-after__pane{position:absolute;inset:0;aspect-ratio:auto;border-radius:0}
.before-after.is-live .before-after__pane--before{z-index:1;clip-path:inset(0 calc(100% - var(--before-after)) 0 0)}
.before-after.is-live .before-after__pane--after .before-after__tag{left:auto;right:.75rem}
.before-after.is-live .before-after__image{pointer-events:none;-webkit-user-drag:none}
.before-after.is-live .before-after__range{display:block;position:absolute;inset:0;z-index:3;width:100%;height:100%;margin:0;opacity:0;pointer-events:none}
.before-after.is-live .before-after__handle{display:block;position:absolute;z-index:2;top:0;bottom:0;left:var(--before-after);width:2px;margin-left:-1px;background:#fff;box-shadow:0 0 0 1px rgba(17,24,39,.25);pointer-events:none}
.before-after__knob{position:absolute;top:50%;left:50%;width:2.75rem;height:2.75rem;margin:-1.375rem 0 0 -1.375rem;border-radius:50%;display:grid;place-items:center;background:#fff;color:var(--color-text,#111827);box-shadow:0 2px 10px rgba(17,24,39,.35)}
.before-after__range:focus-visible~.before-after__handle .before-after__knob{outline:3px solid var(--color-primary);outline-offset:3px}
/* Heading with a rotating word (E230). Only the word that shows (.is-active) takes
   room; the others lie on top of it, so without the script the box is exactly the
   first word. The sentence for screen readers is visually hidden, the animated copy
   is aria-hidden. No script or reduced motion: the first word, still. */
.text-rotate{position:relative}
.text-rotate__sentence{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.text-rotate__words{display:inline-grid;position:relative;text-align:start;overflow-x:clip;transition:width .35s ease}
.text-rotate__words--accent{color:var(--color-primary)}
.text-rotate__word{position:absolute;top:0;left:0;white-space:nowrap;opacity:0;transform:translateY(.4em);transition:opacity .35s ease,transform .35s ease}
.text-rotate__word.is-active{position:relative;opacity:1;transform:none}
.text-rotate__word.is-leaving{transform:translateY(-.4em)}
@media (prefers-reduced-motion:reduce){.text-rotate__words,.text-rotate__word{transition:none}}
.countdown{margin:var(--space-md) 0}
.countdown__grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-sm);text-align:center}
.countdown__unit strong{display:block;font-size:1.75rem;line-height:1.1}
.countdown__unit small{color:var(--scheme-muted,var(--color-muted));font-size:.85rem}
.countdown__done{font-weight:600;margin:0}
.dynamic-number{margin:0;font-size:1.25rem}
.dynamic-number__value{font-size:1.5em;margin:0 var(--space-xs)}
.floating-cta{position:fixed;right:var(--space-md);bottom:var(--space-md);z-index:40}
.floating-cta__btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-sm) var(--space-md);border-radius:999px;background:var(--color-primary);color:#fff;text-decoration:none;font-weight:700;box-shadow:0 4px 20px rgba(0,0,0,.18)}
@media (max-width:639px){.floating-cta--hide-phone{display:none}}
.site-popup{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:var(--space-md)}
.site-popup__backdrop{position:absolute;inset:0;background:rgba(0,0,0,.45)}
.site-popup__panel{position:relative;z-index:1;max-width:28rem;width:100%;padding:var(--space-lg);background:var(--color-background);border-radius:var(--radius-md);box-shadow:0 8px 32px rgba(0,0,0,.2)}
.site-popup__close{position:absolute;top:var(--space-sm);right:var(--space-sm);border:0;background:transparent;font-size:1.5rem;line-height:1;cursor:pointer;color:inherit}
.site-popup__title{margin:0 0 var(--space-sm)}
.site-popup__body{margin-bottom:var(--space-md)}
.site-popup__cta{margin:var(--space-md) 0 0}
.event-archive{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-sm)}
.event-archive__link{display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-md);padding:var(--space-sm) var(--space-md);background:var(--color-surface);border-radius:var(--radius-sm);text-decoration:none;color:inherit}
.event-archive__title{font-weight:600;flex:1 1 12rem}
.event-archive__date,.event-archive__location{color:var(--color-muted);font-size:.95rem}
.icon-boxes{display:contents}
.icon-box{padding:var(--space-md);background:var(--color-surface);border-radius:var(--radius-md);text-align:center}
.icon-box__icon{display:flex;justify-content:center;margin-bottom:var(--space-sm);color:var(--color-primary)}
.icon-box__icon .cms-icon{margin:0}
.icon-box__title{margin:0 0 var(--space-xs);font-size:1.1rem}
.icon-box__body{color:var(--color-muted);font-size:.95rem}
.icon-box__link{margin:var(--space-sm) 0 0;font-size:.9rem}
.icon-box__link a{display:inline-block;padding:.8rem 0;margin:-.8rem 0}
.pricing{display:contents}
.pricing__intro{margin-bottom:var(--space-md);max-width:40rem}
.pricing-plan{padding:var(--space-lg);background:var(--color-surface);border-radius:var(--card-radius,var(--radius-md));border:var(--card-border,0) solid var(--color-border);box-shadow:var(--card-shadow,var(--shadow-card,none));display:flex;flex-direction:column;gap:var(--space-sm)}
.pricing-plan--featured{background:var(--color-primary);color:var(--color-onPrimary,#fff);box-shadow:0 8px 24px rgba(0,0,0,.12)}
.pricing-plan--featured a{color:inherit}
.pricing-plan--featured .button{background:var(--color-onPrimary,#fff);color:var(--color-primary)}
.pricing-plan__name{margin:0;font-size:1.1rem}
.pricing-plan__price{margin:0;font-size:2rem;font-weight:700;line-height:1.1}
.pricing-plan__period{font-size:1rem;font-weight:500;opacity:.85}
.pricing-plan__features{flex:1;margin:0;font-size:.95rem}
.pricing-plan__cta{margin:var(--space-sm) 0 0}
.pricing-plan__badge{order:-1;align-self:flex-start;margin:0;padding:.25rem .8rem;border:2px solid var(--color-primary);border-radius:999px;background:var(--color-onPrimary,#fff);color:var(--color-primary);font-size:.875rem;font-weight:700;line-height:1.3;text-align:center}
@media (min-width:48rem){.section:not([data-design="rows"]) .pricing:has(.pricing-plan__badge){padding-top:1rem;row-gap:max(var(--space-md),2rem)}.pricing-plan--featured{position:relative}.pricing-plan__badge{position:absolute;top:0;left:50%;transform:translate(-50%,-50%);width:max-content;max-width:calc(100% - 2rem)}}
.blog-archive{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-sm)}
.blog-archive__link{display:block;padding:var(--space-sm) var(--space-md);background:var(--color-surface);border-radius:var(--radius-sm);text-decoration:none;color:inherit}
.blog-archive__title{display:block;font-weight:600;margin-bottom:var(--space-xs)}
.blog-archive__pinned{display:inline-block;align-self:flex-start;width:fit-content;margin-bottom:var(--space-xs);padding:.1rem .5rem;border-radius:var(--radius-sm);background:var(--color-primary);color:var(--color-onPrimary,#fff);font-size:.8rem;font-weight:600}
.blog-archive__date{display:block;color:var(--color-muted);font-size:.9rem;margin-bottom:var(--space-xs)}
/* The excerpt keeps the running-text measure (60ch, about 75 characters) also in a full-width
   list row or the featured list's first card, which spans the whole row (2.11.2026). */
.blog-archive__excerpt{margin:0;max-width:60ch;color:var(--color-muted);font-size:.95rem}
.social-feed__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm);list-style:none;margin:0;padding:0}
@media (min-width:768px){.social-feed__grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.social-feed__item{margin:0;aspect-ratio:1;overflow:hidden;border-radius:var(--radius-sm);background:var(--color-surface)}
.social-feed__item img,.social-feed .image{width:100%;height:100%;object-fit:cover;display:block}
.social-feed__placeholder{display:flex;align-items:center;justify-content:center;height:100%;color:var(--color-muted);font-size:.9rem;padding:var(--space-sm);text-align:center}
.social-feed__profile{margin:var(--space-md) 0 0;text-align:center}
.team-archive{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-md);grid-template-columns:repeat(auto-fill,minmax(10rem,1fr))}
.team-archive__link,.team-archive__card{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-md);background:var(--color-surface);border-radius:var(--radius-md);text-decoration:none;color:inherit;height:100%}
.team-archive__photo{width:5rem;height:5rem;border-radius:50%;object-fit:cover;margin-bottom:var(--space-sm);background:var(--color-background)}
.team-archive__name{font-weight:600}
.team-archive__role{color:var(--color-muted);font-size:.9rem;margin-top:var(--space-xs)}
/* A full-width gallery's heading stays in the content column, off the screen edges. */
.gallery__heading--inset{max-width:var(--size-contentMaxWidth);margin-inline:auto;padding-inline:clamp(16px,5vw,24px);box-sizing:border-box}
:is([data-color-scheme=muted],[data-color-scheme=dark],[data-color-scheme=accent])>.section__inner>.gallery__heading--inset{padding-top:var(--space-md,16px)}
.gallery--slider .gallery__grid{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:var(--space-md);padding-bottom:var(--space-sm)}
.gallery--slider .gallery__grid>.block{flex:0 0 min(85%,18rem);scroll-snap-align:start}
/* Gallery "Diaesitys" (slideshow): one picture at a time in the kuvaselain's track
   (library-blocks/image-browser.ts); the selector outweighs the grid rule compile() emits. */
figure.gallery.gallery--slideshow .gallery__grid{display:flex;gap:0;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;width:100%;aspect-ratio:3 / 2;max-height:85vh}
figure.gallery.gallery--slideshow .gallery__grid>.block{flex:0 0 100%;min-width:0;height:100%;scroll-snap-align:start;scroll-snap-stop:always}
figure.gallery.gallery--slideshow .gallery__grid>.block[hidden]{display:none}
figure.gallery.gallery--slideshow .image-figure{height:100%;display:flex;flex-direction:column}
figure.gallery.gallery--slideshow .image-figure>img,figure.gallery.gallery--slideshow .image-figure>picture>img,figure.gallery.gallery--slideshow .image-figure>a{flex:1 1 auto;min-height:0}
.gallery__browser{border-radius:var(--radius-md,8px)}
.image-figure{margin:0}
.image-figure__caption{margin:.4rem 0 0;font-size:.9rem;color:var(--scheme-muted,var(--color-muted))}
/* E167 card rail: horizontal scroll with native CSS scroll snap, no JS needed.
   Shares the snap behaviour with the gallery slider above; only the card width
   differs (n per view from --rail-n instead of a fixed peek width). */
.cardrail{position:relative}
.cardrail__track,.gallery--slider .gallery__grid{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
.cardrail__track{--rail-n:var(--rail-n-base,1);overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;scroll-snap-type:x mandatory;padding-bottom:var(--space-sm)}
.cardrail__track>.block{flex:0 0 calc(100% / var(--rail-n));box-sizing:border-box;padding-right:var(--rail-gap,var(--space-md));min-width:0;scroll-snap-align:start}
.cardrail__track:focus-visible{outline:2px solid var(--color-primary,currentColor);outline-offset:2px}
@media (min-width:640px){.cardrail__track{--rail-n:var(--rail-n-sm,var(--rail-n-base,1))}}
@media (min-width:960px){.cardrail__track{--rail-n:var(--rail-n-md,var(--rail-n-sm,var(--rail-n-base,1)))}}
@media (prefers-reduced-motion:no-preference){.cardrail__track{scroll-behavior:smooth}}
.cardrail__nav{display:flex;gap:.5rem;justify-content:flex-end;margin-top:var(--space-sm)}
.cardrail__button{display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;min-width:44px;min-height:44px;padding:0;border:1px solid var(--color-border,rgb(0 0 0 / 0.2));border-radius:999px;background:var(--color-surface,#fff);color:inherit;font-size:1.5rem;line-height:1;cursor:pointer}
.cardrail__button:hover,.cardrail__button:focus-visible{background:var(--color-background,#f2f2f2)}
.cardrail__button:focus-visible{outline:2px solid var(--color-primary,currentColor);outline-offset:2px}
.cardrail__button:is([aria-disabled="true"],:disabled){opacity:.4;cursor:default}
.carousel{position:relative;z-index:0;width:100%}
.carousel__viewport{position:relative;height:var(--carousel-height,800px);overflow:hidden;background:#111}
.carousel__slide{position:absolute;inset:0;display:grid;align-items:center;justify-items:center}
.carousel__media{position:absolute;inset:0;z-index:0}
.carousel__image{width:100%;height:100%;object-fit:cover;display:block}
.carousel__content{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;padding:12px 28px;color:#fff;background:#111;background:rgb(0 0 0 / 0.82);text-decoration:none;max-width:min(40rem,92%)}
.carousel__heading{margin:0;font-size:clamp(1.5rem,3vw,2.25rem);font-weight:600;letter-spacing:.04em;line-height:1.1}
.carousel__content:has(.carousel__text,.carousel__button){flex-direction:column;gap:.75rem;text-align:center}
.carousel__text{font-size:clamp(1rem,1.6vw,1.25rem);line-height:1.45;max-width:36rem}
.carousel__button{pointer-events:none}
.carousel--start .carousel__slide{justify-items:start}
.carousel--start .carousel__content{margin-left:var(--space-lg)}
.carousel--end .carousel__slide{justify-items:end}
.carousel--end .carousel__content{margin-right:var(--space-lg)}
.carousel__nav{position:absolute;top:50%;z-index:2;transform:translateY(-50%);width:2.75rem;height:2.75rem;border:0;border-radius:999px;background:rgba(0,0,0,.45);color:#fff;font-size:1.75rem;line-height:1;cursor:pointer}
.carousel__nav:hover,.carousel__nav:focus-visible{background:rgba(0,0,0,.7);outline:2px solid #fff;outline-offset:2px}
.carousel__nav--prev{left:1rem}
.carousel__nav--next{right:1rem}
.carousel__dots{position:absolute;left:0;right:0;bottom:calc(1rem - 6px);z-index:2;display:flex;justify-content:center;gap:0}
.carousel__dot{display:grid;place-items:center;width:24px;height:24px;border:0;border-radius:999px;padding:0;background:transparent;cursor:pointer}
.carousel__dot::before{content:"";width:12px;height:12px;border-radius:999px;background:rgba(255,255,255,.45)}
.carousel__dot[aria-current="true"]::before{background:#fff}
.carousel__dot:focus-visible{outline:2px solid #fff;outline-offset:0}
.carousel__rotation{position:absolute;left:1rem;bottom:.5rem;z-index:3;display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:0;border-radius:999px;background:rgba(0,0,0,.6);color:#fff;cursor:pointer}
.carousel__rotation:hover,.carousel__rotation:focus-visible{background:rgba(0,0,0,.85);outline:2px solid #fff;outline-offset:2px}
.carousel__rotation .cms-icon{margin:0}.carousel__rotation svg{width:20px;height:20px}
.carousel__rotation[x-cloak],.carousel__rotation [x-cloak]{display:none}
@media (max-width:767px){.carousel__viewport{height:var(--carousel-height-mobile,450px)}.carousel__nav{width:2.25rem;height:2.25rem;font-size:1.4rem}.carousel__nav--prev{left:.5rem}.carousel__nav--next{right:.5rem}}
@media (prefers-reduced-motion:reduce){.carousel__slide{transition:none!important}}
/* Tables (E185). Imported price lists, opening hours and spec tables arrive
   inside rich text (the sanitizer allows table markup), so the styles sit on
   the bare elements. The .table-wrap box around every rich-text table comes
   from the sanitize filter: a wide table scrolls inside its own box instead of
   making the page body scroll sideways on a phone. Restrained by design: one
   hairline rule per row and a faint zebra, no heavy grid, no capslock head. */
.table-wrap{max-width:100%;overflow-x:auto;margin:0 0 var(--space-md)}
.table-wrap:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}
table{width:100%;border-collapse:collapse;font-size:.95rem}
caption{caption-side:top;text-align:left;color:var(--scheme-muted,var(--color-muted));font-size:.9rem;padding-bottom:var(--space-xs)}
th,td{padding:var(--space-xs) var(--space-sm);border-bottom:1px solid var(--scheme-border,var(--color-border));text-align:left;vertical-align:top}
thead th{font-weight:600;border-bottom-width:2px}
tbody tr:nth-child(even) th,tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--scheme-surface,var(--color-surface)) 55%,transparent)}
tbody tr:last-child th,tbody tr:last-child td{border-bottom:0}
tfoot th,tfoot td{font-weight:600;border-top:1px solid var(--scheme-border,var(--color-border))}
/* Data table: the bare table styles above apply; here are the scroll box, the sort
   buttons and the phone layout where each row is a card. */
.data-table{margin:0 0 var(--space-md)}
.data-table__scroll{max-width:100%;overflow-x:auto}
.data-table__scroll:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}
.data-table:not(.data-table--striped) tbody tr:nth-child(even)>*{background:transparent}
.data-table tbody th{font-weight:600}
.data-table .data-table__th--sort{padding:0}
.data-table__sort{appearance:none;margin:0;padding:0;border:0;border-radius:0;background:none;color:inherit;font:inherit;line-height:inherit;text-align:inherit;box-shadow:none;transform:none;transition:none;cursor:pointer;display:flex;align-items:center;justify-content:flex-start;gap:.4em;width:100%;min-height:44px;padding:var(--space-xs) var(--space-sm);font-weight:600}
.data-table__sort:hover{transform:none;box-shadow:none;color:var(--scheme-link,var(--color-primary))}
.data-table__sort:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}
.data-table__sort:disabled{cursor:default;color:inherit}
.data-table__arrow::before{content:"↕";opacity:.45}
.data-table__sort:disabled .data-table__arrow{display:none}
[aria-sort="ascending"] .data-table__arrow::before{content:"↑";opacity:1}
[aria-sort="descending"] .data-table__arrow::before{content:"↓";opacity:1}
@media (max-width:639px){.data-table--stack .data-table__scroll{overflow:visible}.data-table--stack thead{display:none}.data-table--stack table,.data-table--stack tbody,.data-table--stack tr,.data-table--stack tbody th,.data-table--stack td{display:block}.data-table--stack caption{display:block;padding-bottom:var(--space-sm)}.data-table--stack tr{margin:0 0 var(--space-sm);padding:var(--space-xs) var(--space-sm);border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md);background:var(--scheme-bg,var(--color-background))}.data-table.data-table--stack tbody tr>*{display:flex;justify-content:space-between;gap:var(--space-md);padding:var(--space-xs) 0;background:transparent;text-align:right;overflow-wrap:anywhere}.data-table.data-table--stack tbody tr>*:last-child{border-bottom:0}.data-table.data-table--stack tbody tr>th{justify-content:flex-start;text-align:left;font-size:1.05rem}.data-table--stack td::before{content:attr(data-label);flex:none;max-width:45%;font-weight:600;text-align:left}.data-table--stack td[data-label=""]::before{content:none}.data-table--stack.data-table--striped tbody tr:nth-child(even){background:var(--scheme-surface,var(--color-surface))}}
/* Chart: thin marks, hairline grid, text in text colours; the data colour is only on
   the marks. */
:root{--chart-1:#2a78d6;--chart-2:#eb6834;--chart-3:#1baf7a;--chart-4:#eda100;--chart-5:#e87ba4;--chart-6:#008300}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--chart-1:#3987e5;--chart-2:#d95926;--chart-3:#199e70;--chart-4:#c98500;--chart-5:#d55181;--chart-6:#008300}}
:root[data-theme="dark"],.section[data-color-scheme="dark"]{--chart-1:#3987e5;--chart-2:#d95926;--chart-3:#199e70;--chart-4:#c98500;--chart-5:#d55181;--chart-6:#008300}
.chart{--chart-ink:var(--scheme-link,var(--color-primary));--chart-surface:var(--scheme-bg,var(--color-background));--chart-rule:var(--scheme-border,var(--color-border));--chart-quiet:var(--scheme-muted,var(--color-muted));margin:0 0 var(--space-md)}
.chart>.chart__title{margin:0 0 var(--space-sm);color:var(--scheme-fg,var(--color-text));text-align:start;font-family:var(--font-heading);font-weight:var(--font-headingWeight,bold);font-size:var(--font-size-h4,1.05rem)}
.chart__note{margin:var(--space-sm) 0 0;color:var(--chart-quiet);font-size:.9rem}
.chart__value{font-variant-numeric:tabular-nums;white-space:nowrap}
.chart__bars,.chart__legend{list-style:none;margin:0;padding:0}
.chart__row{display:grid;grid-template-columns:minmax(5rem,30%) minmax(0,1fr) auto;align-items:center;gap:var(--space-sm);padding:.3rem 0}
.chart__row .chart__name{overflow-wrap:anywhere}
.chart__track{display:block;border-left:1px solid var(--chart-rule);padding:.25rem 0}
.chart__bar{display:block;height:.75rem;min-width:2px;border-radius:0 4px 4px 0;background:var(--chart-ink)}
.chart__frame{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.4rem var(--space-sm);padding-right:.5rem}
.chart__y{display:flex;flex-direction:column;justify-content:space-between;align-items:flex-end;color:var(--chart-quiet);font-size:.8rem;line-height:1;font-variant-numeric:tabular-nums}
.chart__y span:first-child{transform:translateY(-50%)}.chart__y span:last-child{transform:translateY(50%)}
.chart__plot{display:block;width:100%;height:12rem;overflow:visible}
.chart__plot path,.chart__plot polyline{fill:none;vector-effect:non-scaling-stroke}
.chart__grid{stroke:var(--chart-rule);stroke-width:1}
.chart__line{stroke:var(--chart-ink);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.chart__dot{stroke:var(--chart-ink);stroke-width:9;stroke-linecap:round}
.chart__halo{stroke:var(--chart-surface);stroke-width:13;stroke-linecap:round}
.chart__point:hover .chart__dot{stroke-width:12}
.chart__x{grid-column:2;display:flex;justify-content:space-between;color:var(--chart-quiet);font-size:.8rem;line-height:1.3}
.chart__x>span{display:flex;justify-content:center;width:0;white-space:nowrap}
.chart__x>span:first-child{justify-content:flex-start}.chart__x>span:last-child{justify-content:flex-end}
.chart__x--sparse>span:not(:first-child):not(:last-child){display:none}
.chart__data{margin-top:var(--space-sm);font-size:.9rem}
.chart__data summary{display:inline-flex;align-items:center;min-height:44px;cursor:pointer;color:var(--scheme-link,var(--color-primary))}
.chart__data summary:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}
.chart__data table{width:auto;min-width:min(100%,16rem)}
.chart__donut{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-md) var(--space-lg)}
.chart__ringbox{position:relative;flex:none;width:min(100%,13rem);margin-inline:auto}
svg.chart__ring{display:block;width:100%;height:auto}
.chart__slice{fill:none;stroke-width:5.5}
.chart__slice--1,.chart__swatch--1{--chart-c:var(--chart-1)}.chart__slice--2,.chart__swatch--2{--chart-c:var(--chart-2)}.chart__slice--3,.chart__swatch--3{--chart-c:var(--chart-3)}.chart__slice--4,.chart__swatch--4{--chart-c:var(--chart-4)}.chart__slice--5,.chart__swatch--5{--chart-c:var(--chart-5)}.chart__slice--6,.chart__swatch--6{--chart-c:var(--chart-6)}.chart__slice--other,.chart__swatch--other{--chart-c:var(--chart-quiet)}
.chart__slice{stroke:var(--chart-c)}
.chart__total{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;margin:0;text-align:center;line-height:1.2}
.chart__total strong{font-size:1.35rem;font-variant-numeric:tabular-nums}.chart__total span{color:var(--chart-quiet);font-size:.85rem}
.chart__legend{flex:1 1 14rem;min-width:0}
.chart__key{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;gap:var(--space-sm);padding:.35rem 0;border-bottom:1px solid var(--chart-rule)}
.chart__key:last-child{border-bottom:0}
.chart__swatch{align-self:center;width:.75rem;height:.75rem;border-radius:2px;background:var(--chart-c)}
.chart__share{color:var(--chart-quiet);margin-left:.4em}
@media (max-width:639px){.chart__row{grid-template-columns:minmax(0,1fr) auto;gap:0 var(--space-sm)}.chart__row .chart__name{grid-column:1/-1}.chart__x--dense>span:not(:first-child):not(:last-child){display:none}.chart__plot{height:10rem}}
@media (forced-colors:active){.chart__bar{background:CanvasText}.chart__line,.chart__dot{stroke:CanvasText}.chart__slice{stroke:CanvasText}.chart__swatch{border:1px solid CanvasText}}
/* Rating: stars as text, the lit row cut to the score. */
:root{--rating-color:#b7791f}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--rating-color:#f0b429}}
:root[data-theme="dark"],.section[data-color-scheme="dark"]{--rating-color:#f0b429}
.stars{position:relative;display:inline-block;flex:none;line-height:1;white-space:nowrap;font-family:system-ui,sans-serif;color:color-mix(in srgb,currentColor 25%,transparent)}
.stars__on{position:absolute;inset:0 auto 0 0;overflow:hidden;color:var(--rating-color)}
.rating{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .6rem}
.rating--center{justify-content:center;text-align:center}.rating--end{justify-content:flex-end;text-align:end}
.rating .stars{font-size:1.5rem}.rating--sm .stars{font-size:1.1rem}.rating--lg .stars{font-size:min(2.25rem,7.5vw)}
.rating__value{font-weight:700;font-variant-numeric:tabular-nums}.rating--lg .rating__value{font-size:1.35rem}
.rating__label{color:var(--scheme-muted,var(--color-muted))}
@media (forced-colors:active){.stars{color:GrayText}.stars__on{color:CanvasText}}
/* Reviews: a score line and cards that fill the row, one column on a phone. */
.reviews__heading{margin:0 0 var(--space-xs)}
.reviews__summary{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .9rem;margin:0 0 var(--space-md)}
.reviews__summary .stars{font-size:1.4rem}
.reviews__score{font-variant-numeric:tabular-nums}
.reviews__meta{color:var(--scheme-muted,var(--color-muted))}
.reviews__notice{margin:0 0 var(--space-sm);color:var(--scheme-muted,var(--color-muted));font-size:.9rem}
.reviews__list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr));gap:var(--space-md);list-style:none;margin:0;padding:0}
.reviews__item{min-width:0;padding:var(--space-md);border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md));background:var(--scheme-surface,var(--color-surface))}
.reviews__who{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-sm)}
.reviews__avatar,.reviews__photo{flex:none;width:2.5rem;height:2.5rem;border-radius:50%}
.reviews__avatar{display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--scheme-link,var(--color-primary)) 16%,transparent);font-weight:700}
.reviews__photo{object-fit:cover}
.reviews__id{display:flex;flex-direction:column;min-width:0;line-height:1.3;overflow-wrap:anywhere}
a.reviews__name{font-weight:700}
.reviews__date{color:var(--scheme-muted,var(--color-muted));font-size:.85rem}
.reviews__item .stars{font-size:1.1rem}
.reviews__text{margin:var(--space-xs) 0 0;overflow-wrap:anywhere}
.reviews__translated{color:var(--scheme-muted,var(--color-muted));font-size:.85rem}
.reviews__source{margin:var(--space-xs) 0 0;font-size:.85rem}
.reviews__more{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin:var(--space-md) 0 0}
/* Google's logo rules: 16-19 px high, clear space 10 px left, right and top and 5 px below,
   the Gray variant on a light surface and the White one on a dark surface. */
.reviews__attribution{display:flex;margin:0 0 var(--space-sm);padding:10px 10px 5px;margin-inline-start:-10px;line-height:0}
.reviews__logo{display:block;width:auto;height:18px;color:#5e5e5e}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .reviews__logo{color:#fff}}
:root[data-theme="dark"] .reviews__logo,.section[data-color-scheme="dark"] .reviews__logo{color:#fff}
/* Floating contact button: fixed to a bottom corner; the section itself takes no room. */
.section.section--contactButton{padding:0!important;margin:0!important;min-height:0}
.contact-fab{--contact-edge:max(var(--space-md,16px),env(safe-area-inset-bottom));position:fixed;z-index:40;bottom:var(--contact-edge);left:max(var(--space-md,16px),env(safe-area-inset-left))}
.contact-fab--right{left:auto;right:max(var(--space-md,16px),env(safe-area-inset-right))}
body:has(.floating-cta) .contact-fab--right{bottom:calc(var(--contact-edge) + 4.5rem)}
.contact-fab__btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-width:3.5rem;min-height:3.5rem;padding:0 1.25rem;border-radius:999px;background:var(--color-primary);color:var(--color-onPrimary,#fff);font-weight:700;line-height:1.2;text-decoration:none;box-shadow:0 4px 20px rgba(0,0,0,.2);cursor:pointer;list-style:none}
.contact-fab__btn::-webkit-details-marker{display:none}
.contact-fab__btn:focus-visible{outline:3px solid var(--color-text);outline-offset:2px;box-shadow:0 0 0 2px var(--color-background)}
.contact-fab svg{flex:none;width:1.5rem;height:1.5rem}.contact-fab .cms-icon{margin:0}
.contact-fab__sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.contact-fab__list{position:absolute;bottom:calc(100% + .5rem);left:0;width:max-content;min-width:13rem;max-width:calc(100vw - 2rem);margin:0;padding:.35rem;list-style:none;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-background);color:var(--color-text);box-shadow:0 8px 30px rgba(0,0,0,.18)}
.contact-fab--right .contact-fab__list{left:auto;right:0}
.contact-fab__link{display:flex;align-items:center;gap:.6rem;min-height:44px;padding:.4rem .7rem;border-radius:var(--radius-sm);color:inherit;text-decoration:none;overflow-wrap:anywhere}
.contact-fab__link:hover{background:color-mix(in srgb,var(--color-primary) 10%,transparent)}
.contact-fab__link:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}
@media (max-width:639px){.contact-fab__btn{padding:0}.contact-fab__label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}}
@media print{.contact-fab{display:none}}
/* Social feed: square tiles, linked tiles show focus, optional one-row strip. */
.social-feed__handle{margin:0 0 var(--space-sm);font-weight:600}
.social-feed__grid>.block{min-width:0;aspect-ratio:1;overflow:hidden;border-radius:var(--radius-sm);background:var(--scheme-surface,var(--color-surface))}
.social-feed__grid>.block>a,.social-feed__grid picture{display:block;height:100%}
.social-feed__grid>.block .image{border-radius:0}
.social-feed__grid a:hover img{opacity:.85}
.social-feed__grid a:focus-visible{outline:3px solid var(--color-primary);outline-offset:-3px}
.section .social-feed.social-feed--strip .social-feed__grid{display:flex;overflow-x:auto;scroll-snap-type:x proximity;padding-bottom:var(--space-xs)}
.section .social-feed.social-feed--strip .social-feed__grid>*{flex:0 0 min(70%,15rem);scroll-snap-align:start}
.section .social-feed.social-feed--strip .social-feed__grid:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}
/* Chips: pills that wrap; a linked chip is at least 32px high and shows focus. */
.chips{--chip-color:var(--scheme-link,var(--color-primary));display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-sm);list-style:none;margin:0;padding:0}
.chips--center{justify-content:center}.chips--end{justify-content:flex-end}
.chips__item{display:flex;min-width:0;margin:0}
.chip{display:inline-flex;align-items:center;min-height:2rem;max-width:100%;padding:.2em .9em;border:1px solid transparent;border-radius:999px;font-size:.9375rem;line-height:1.3;overflow-wrap:anywhere;text-decoration:none;color:inherit}
.chips--sm .chip{min-height:1.5rem;padding:.1em .7em;font-size:.8125rem}
.chips--soft .chip{background:color-mix(in srgb,var(--chip-color) 12%,transparent)}
.chips--outline .chip{border-color:color-mix(in srgb,currentColor 45%,transparent)}
.chips--solid .chip{background:var(--color-primary);color:var(--color-onPrimary,#fff)}
.chip--link:hover{border-color:currentColor}
.chips--soft .chip--link:hover{background:color-mix(in srgb,var(--chip-color) 22%,transparent)}
.chip--link:focus-visible{outline:2px solid var(--scheme-fg,var(--color-text));outline-offset:2px}
@media (forced-colors:active){.chip{border-color:CanvasText}}
/* Dropdown button: the list hangs under the button and never leaves the screen. */
.dropdown-wrap{display:flex}.dropdown-wrap--center{justify-content:center}.dropdown-wrap--end{justify-content:flex-end}
.dropdown{position:relative;display:inline-block;max-width:100%}
.dropdown__button{display:inline-flex;align-items:center;gap:.5rem;min-height:44px;cursor:pointer;list-style:none;user-select:none}
.dropdown__button::-webkit-details-marker{display:none}
.dropdown--secondary>.dropdown__button{background:var(--color-secondary);color:var(--color-onSecondary,#fff)}
.dropdown--outline>.dropdown__button{background:transparent;color:var(--scheme-link,var(--color-primary));border-color:currentColor}
.dropdown__button:focus-visible{outline:2px solid var(--scheme-fg,var(--color-text));outline-offset:2px}
.dropdown__chevron{flex:none}.dropdown[open] .dropdown__chevron{transform:rotate(180deg)}
.dropdown__list{position:absolute;z-index:30;top:calc(100% + .35rem);left:0;width:max-content;min-width:100%;max-width:min(20rem,calc(100vw - 2rem));margin:0;padding:.35rem;list-style:none;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-background);color:var(--color-text);box-shadow:0 8px 30px rgba(0,0,0,.16)}
.dropdown-wrap--end .dropdown__list{left:auto;right:0}
.dropdown__link{display:flex;align-items:center;min-height:44px;padding:.4rem .8rem;border-radius:var(--radius-sm);color:inherit;text-decoration:none;overflow-wrap:anywhere}
.dropdown__link:hover{background:color-mix(in srgb,var(--color-primary) 10%,transparent)}
.dropdown__link:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}
@media (max-width:639px){.dropdown-wrap{display:block}.dropdown{display:block}.dropdown__button{display:flex;justify-content:space-between;width:100%}.dropdown__list{position:static;width:auto;max-width:none;margin-top:.35rem;box-shadow:none}}
/* Code block: fixed-width text on the surface colour; the bar holds the title and
   the copy button. */
.code{margin:0 0 var(--space-md);border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md);background:var(--scheme-surface,var(--color-surface));color:var(--scheme-fg,var(--color-text));overflow:hidden}
.code__bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);min-height:44px;padding:0 var(--space-xs) 0 var(--space-md);border-bottom:1px solid var(--scheme-border,var(--color-border));font-size:.875rem}
.code__title{min-width:0;overflow-wrap:anywhere;font-weight:600}
.code__copy{appearance:none;margin:0;padding:0;border:0;border-radius:0;background:none;color:inherit;font:inherit;line-height:inherit;text-align:inherit;box-shadow:none;transform:none;transition:none;cursor:pointer;display:inline-flex;align-items:center;min-height:36px;margin-left:auto;padding:0 .75rem;border-radius:var(--radius-sm);font-size:.875rem;font-weight:600;color:var(--scheme-link,var(--color-primary))}
.code__copy:hover{transform:none;box-shadow:none;background:color-mix(in srgb,var(--color-primary) 10%,transparent)}
.code__copy:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}
.code__status{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.code__pre{margin:0;padding:var(--space-md);overflow-x:auto;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;font-size:.875rem;line-height:1.6;tab-size:2;white-space:pre}
.code__pre code{font:inherit;background:none;padding:0}
.code--wrap .code__pre{white-space:pre-wrap;overflow-wrap:anywhere}
.code__pre:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}
/* Dark mode switch: a labelled track with a thumb; the state is aria-checked. */
.theme-toggle-wrap{display:flex}.theme-toggle-wrap--center{justify-content:center}.theme-toggle-wrap--end{justify-content:flex-end}
.theme-toggle{appearance:none;margin:0;padding:0;border:0;border-radius:0;background:none;color:inherit;font:inherit;line-height:inherit;text-align:inherit;box-shadow:none;transform:none;transition:none;cursor:pointer;display:inline-flex;align-items:center;gap:.6rem;min-height:44px;padding:0 .25rem;border-radius:var(--radius-sm)}
.theme-toggle:hover{transform:none;box-shadow:none}
.theme-toggle:disabled{cursor:default;opacity:.6}
.theme-toggle:focus-visible{outline:2px solid var(--scheme-fg,var(--color-text));outline-offset:2px}
.theme-toggle__icon{flex:none}
.theme-toggle__track{flex:none;position:relative;width:2.75rem;height:1.5rem;border:2px solid currentColor;border-radius:999px;opacity:.75}
.theme-toggle__thumb{position:absolute;top:2px;left:2px;width:1rem;height:1rem;border-radius:50%;background:currentColor}
.theme-toggle[aria-checked="true"] .theme-toggle__track{background:var(--scheme-link,var(--color-primary));border-color:var(--scheme-link,var(--color-primary));opacity:1}
.theme-toggle[aria-checked="true"] .theme-toggle__thumb{left:calc(100% - 1rem - 2px);background:var(--color-onPrimary,#fff)}
@media (prefers-reduced-motion:no-preference){.theme-toggle__thumb{transition:left .15s ease}}
@media (forced-colors:active){.theme-toggle[aria-checked="true"] .theme-toggle__track{background:Highlight;border-color:Highlight}.theme-toggle[aria-checked="true"] .theme-toggle__thumb{background:HighlightText}}
/* Info tip: without the script the explanation is a quiet line under the text and
   the button is not shown; live, it is a bubble above the text, or a line under it on
   a phone. The bubble is placed from the paragraph's start edge and is never wider
   than the paragraph, so it cannot leave the screen; its ::after bridges the gap to
   the button so the pointer can travel onto the bubble. */
.infotip{position:relative;margin:0 0 var(--space-sm)}
.infotip__btn{appearance:none;margin:0;padding:0;border:0;border-radius:0;background:none;color:inherit;font:inherit;line-height:inherit;text-align:inherit;box-shadow:none;transform:none;transition:none;cursor:pointer;display:none;position:relative;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-left:.35rem;border:1.5px solid currentColor;border-radius:50%;font-size:.875rem;font-weight:700;font-style:italic;font-family:Georgia,"Times New Roman",serif;line-height:1;vertical-align:middle}
.infotip__btn::after{content:"";position:absolute;inset:-10px}
.infotip__btn:hover{transform:none;box-shadow:none;color:var(--scheme-link,var(--color-primary))}
.infotip__btn:focus-visible{outline:2px solid var(--scheme-fg,var(--color-text));outline-offset:2px}
.infotip__bubble{display:block;margin-top:.25rem;color:var(--scheme-muted,var(--color-muted));font-size:.9rem}
.infotip.is-live .infotip__btn{display:inline-flex}
.infotip.is-live .infotip__bubble{display:none}
.infotip.is-live.is-open .infotip__bubble{display:block}
@media (min-width:640px){.infotip.is-live .infotip__bubble{position:absolute;z-index:30;bottom:calc(100% + .4rem);left:0;width:max-content;max-width:min(20rem,100%);margin:0;padding:.6rem .8rem;border-radius:var(--radius-md);background:var(--color-text);color:var(--color-background);font-size:.875rem;line-height:1.45;box-shadow:0 6px 20px rgba(0,0,0,.2)}.infotip.is-live .infotip__bubble::after{content:"";position:absolute;left:0;right:0;top:100%;height:.5rem}}
/* Chat bubbles: the first speaker at the start edge, the others at the end edge. */
.chat{display:flex;flex-direction:column;gap:var(--space-sm);list-style:none;margin:0 0 var(--space-md);padding:0}
.chat__msg{display:flex;flex-direction:column;align-items:flex-start;max-width:min(85%,34rem)}
.chat__msg--end{align-self:flex-end;align-items:flex-end}
.chat__who{margin:0 .75rem .15rem;color:var(--scheme-muted,var(--color-muted));font-size:.8125rem}
.chat__bubble{margin:0;padding:.6rem .9rem;border-radius:1.1rem;border-end-start-radius:.3rem;background:var(--scheme-surface,var(--color-surface));border:1px solid var(--scheme-border,var(--color-border));overflow-wrap:anywhere}
.chat__msg--end .chat__bubble{border-radius:1.1rem;border-end-end-radius:.3rem;background:var(--color-primary);border-color:var(--color-primary);color:var(--color-onPrimary,#fff)}
@media (forced-colors:active){.chat__bubble{border:1px solid CanvasText}}
/* Table of contents: a quiet list with a rule at its start edge; the current
   section's link is marked. A heading it points to stops below a fixed header. */
.toc{margin:0 0 var(--space-md);padding:var(--space-sm) var(--space-md);border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md)}
.toc__title{margin:0 0 var(--space-xs);font-family:var(--font-heading);font-weight:var(--font-headingWeight,bold)}
.toc__list{list-style:none;margin:0;padding:0}
.toc__item--h3{padding-left:var(--space-md)}
.toc__link{display:flex;align-items:center;min-height:2.25rem;padding:.2rem .6rem;border-left:3px solid transparent;color:inherit;text-decoration:none;overflow-wrap:anywhere}
.toc__link:hover{text-decoration:underline}
.toc__link[aria-current]{border-left-color:var(--scheme-link,var(--color-primary));font-weight:700}
.toc__link:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}
.toc__empty{margin:0;color:var(--scheme-muted,var(--color-muted));font-size:.9rem}
[id^="otsikko-"]{scroll-margin-top:5rem}
@media (min-width:960px){.block:has(>.toc--sticky){position:sticky;top:5rem;align-self:start}}
@media (pointer:coarse){.toc__link{min-height:44px}}
/* Back-to-top button: fixed to a bottom corner, above the other floating buttons of
   that corner; the section itself takes no room. */
.section.section--scrollTop{padding:0!important;margin:0!important;min-height:0}
.scroll-top{--scroll-top-lift:0rem;position:fixed;z-index:39;bottom:calc(max(var(--space-md,16px),env(safe-area-inset-bottom)) + var(--scroll-top-lift));right:max(var(--space-md,16px),env(safe-area-inset-right));display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;border:1px solid var(--color-border);border-radius:50%;background:var(--color-background);color:var(--color-text);box-shadow:0 4px 16px rgba(0,0,0,.16)}
.scroll-top--left{right:auto;left:max(var(--space-md,16px),env(safe-area-inset-left))}
body:has(.floating-cta) .scroll-top--right,body:has(.contact-fab--right) .scroll-top--right,body:has(.contact-fab--left) .scroll-top--left{--scroll-top-lift:4.5rem}
body:has(.floating-cta):has(.contact-fab--right) .scroll-top--right{--scroll-top-lift:9rem}
.scroll-top:hover{border-color:var(--color-primary);color:var(--color-primary)}
.scroll-top:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px}
.scroll-top.is-live{visibility:hidden;opacity:0}
.scroll-top.is-live.is-shown{visibility:visible;opacity:1}
@media (prefers-reduced-motion:no-preference){.scroll-top.is-live{transition:opacity .2s ease,visibility .2s}}
@media print{.scroll-top{display:none}}
/* Share buttons: a row of pill links that wraps; at least 44 px tall to tap. */
.share-buttons{display:flex;flex-direction:column;gap:var(--space-xs);margin:0 0 var(--space-md)}
.share-buttons--center{align-items:center;text-align:center}
.share-buttons--end{align-items:flex-end;text-align:end}
.share-buttons__label{margin:0;font-weight:600}
.share-buttons__list{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin:0;padding:0;list-style:none}
.share-buttons--center .share-buttons__list{justify-content:center}
.share-buttons--end .share-buttons__list{justify-content:flex-end}
.share-buttons__list>li[hidden]{display:none}
.share-buttons__link{appearance:none;margin:0;padding:0;border:0;border-radius:0;background:none;color:inherit;font:inherit;line-height:inherit;text-align:inherit;box-shadow:none;transform:none;transition:none;cursor:pointer;display:inline-flex;align-items:center;gap:.4rem;min-height:44px;padding:0 .9rem;border:1px solid var(--scheme-border,var(--color-border));border-radius:999px;background:var(--scheme-surface,var(--color-surface));color:var(--scheme-fg,var(--color-text));font-size:.9rem;font-weight:600;text-decoration:none}
.share-buttons__link svg{width:18px;height:18px;flex:none}
.share-buttons__link:hover{transform:none;box-shadow:none;border-color:var(--color-primary);color:var(--scheme-link,var(--color-primary))}
.share-buttons__link:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}
.share-buttons__sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
/* Download list: rows with a file icon, the name, a note and "Lataa"; 44 px to tap. */
.downloads{margin:0 0 var(--space-md)}
.downloads__title{margin:0 0 var(--space-sm);font-size:1.1rem}
.downloads__list{list-style:none;margin:0;padding:0;border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md);overflow:hidden}
.downloads__item+.downloads__item{border-top:1px solid var(--scheme-border,var(--color-border))}
.downloads__row{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem var(--space-sm);min-height:44px;padding:.7rem 1rem;color:inherit;text-decoration:none}
.downloads__icon{display:inline-flex;flex:none;color:var(--scheme-link,var(--color-primary))}
.downloads__icon svg{width:20px;height:20px}
.downloads__name{flex:1 1 12rem;min-width:0;overflow-wrap:anywhere;font-weight:600}
.downloads__note{color:var(--scheme-muted,var(--color-muted));font-size:.9rem}
.downloads__action{margin-left:auto;font-size:.9rem;font-weight:600;color:var(--scheme-link,var(--color-primary))}
a.downloads__row:hover{background:color-mix(in srgb,var(--color-primary) 8%,transparent)}
a.downloads__row:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}
/* Audio player: the browser's own controls full width, a plain link under them. */
.audio-sample{margin:0 0 var(--space-md);padding:var(--space-sm) var(--space-md);border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md);display:grid;gap:.5rem}
.audio-sample__title{font-weight:600}
.audio-sample__player{width:100%;min-height:44px}
.audio-sample__link{justify-self:start;display:inline-flex;align-items:center;min-height:44px;font-size:.9rem;color:var(--scheme-link,var(--color-primary))}
.audio-sample__caption,.audio-sample__missing{margin:0;color:var(--scheme-muted,var(--color-muted));font-size:.9rem}
/* Vaalikone: statement list (no script, editor), one-question form and result list. */
.vaalikone{display:grid;gap:var(--space-md);max-width:46rem;margin-inline:auto}
.vaalikone [x-cloak]{display:none!important}
.vaalikone__heading{max-width:46rem;margin-inline:auto}
.vaalikone__intro{max-width:min(46rem,60ch);margin-inline:auto}
.vaalikone__intro{margin-block:0 var(--space-md);color:var(--scheme-muted,var(--color-muted))}
.vaalikone p{margin:0}
.vaalikone__nojs{display:none}.no-js .vaalikone__nojs{display:block;margin-bottom:var(--space-sm)}
.vaalikone__static-title{font-weight:700;margin-bottom:var(--space-sm)!important}
.vaalikone__list,.vaalikone__compare{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-sm)}
.vaalikone__item,.vaalikone__row{display:grid;gap:.35rem;padding:var(--space-sm) var(--space-md);border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md);background:var(--scheme-surface,var(--color-surface))}
.vaalikone__statement{font-weight:600;overflow-wrap:anywhere}
.vaalikone__answer,.vaalikone__pair{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem 1.25rem}
.vaalikone__badge{padding:.05rem .55rem;border-radius:999px;font-size:.85em;font-weight:600;background:color-mix(in srgb,var(--color-primary) 14%,transparent)}
.vaalikone__why{white-space:pre-line;color:var(--scheme-muted,var(--color-muted))}.vaalikone__why strong{color:var(--scheme-fg,var(--color-text))}
.vaalikone__form{display:grid;gap:var(--space-md);padding:var(--space-md);border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md);background:var(--scheme-surface,var(--color-surface))}
.vaalikone__bar,.vaalikone__meter{height:.4rem;border-radius:999px;background:color-mix(in srgb,currentColor 12%,transparent);overflow:hidden}
.vaalikone__meter{height:.75rem}
.vaalikone__bar span,.vaalikone__meter span{display:block;height:100%;background:var(--color-primary)}
@media (prefers-reduced-motion:no-preference){.vaalikone__bar span{transition:width .2s ease}}
.vaalikone__fieldset{display:grid;gap:var(--space-sm);min-width:0;margin:0;padding:0;border:0}
.vaalikone__legend{float:left;width:100%;padding:0;margin-bottom:var(--space-xs);font-family:var(--font-heading,inherit);font-size:clamp(1.2rem,4.2vw,1.6rem);font-weight:700;line-height:1.3;overflow-wrap:anywhere}
.vaalikone__legend+*{clear:both}
.vaalikone__legend:focus:not(:focus-visible){outline:0}
.vaalikone__count{display:block;margin-bottom:.35rem;font-family:var(--font-body,inherit);font-size:.95rem;font-weight:600;color:var(--scheme-muted,var(--color-muted));font-variant-numeric:tabular-nums}
.vaalikone__important{display:inline-flex;align-items:center;gap:.5rem;justify-self:start;min-height:44px;font-weight:600;cursor:pointer}
.vaalikone__important input{width:1.25rem;height:1.25rem;margin:0;accent-color:var(--color-primary)}
.vaalikone__choices{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm)}
.vaalikone__choice{position:relative;display:flex;align-items:center;justify-content:center;min-height:56px;padding:.5rem 1rem;border:2px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md);background:var(--scheme-bg,var(--color-background));font-size:1.1rem;font-weight:700;cursor:pointer}
.vaalikone__choice input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.vaalikone__choice--skip{grid-column:1/-1;min-height:48px;font-size:1rem;font-weight:600;border-style:dashed}
.vaalikone__choice:hover{border-color:var(--color-primary)}
.vaalikone__choice:has(input:checked){border-color:var(--color-primary);background:var(--color-primary);color:var(--color-onPrimary,#fff)}
.vaalikone__choice:has(input:focus-visible){outline:3px solid var(--color-primary);outline-offset:2px}
.vaalikone__hint,.vaalikone__privacy{font-size:.9rem;color:var(--scheme-muted,var(--color-muted))}
.vaalikone__nav,.vaalikone__cta{display:flex;flex-wrap:wrap;gap:var(--space-sm)}
.vaalikone__nav{justify-content:space-between}
.vaalikone__nav .button,.vaalikone__cta .button{min-height:44px}
.vaalikone__nav .button:disabled{opacity:.4;cursor:not-allowed;transform:none;box-shadow:none}
.vaalikone__result{display:grid;gap:var(--space-sm)}
.vaalikone__result-title{margin:0}.vaalikone__result-title:focus:not(:focus-visible){outline:0}
.vaalikone__score{font-size:clamp(1.25rem,4.4vw,1.6rem);font-weight:700}
.vaalikone__rule summary{display:flex;align-items:center;min-height:44px;font-weight:600;cursor:pointer}
.vaalikone__rule p{color:var(--scheme-muted,var(--color-muted))}
.vaalikone__compare{margin-top:var(--space-sm)}
.vaalikone__row{border-left-width:6px}
.vaalikone__row--agree{border-left-color:var(--color-primary)}
.vaalikone__row--disagree{border-left-color:color-mix(in srgb,var(--scheme-fg,var(--color-text)) 75%,transparent)}
.vaalikone__row--skip,.vaalikone__row--none{border-left-style:dashed}
.vaalikone__mark{font-weight:700}
.vaalikone__row--agree .vaalikone__mark::before{content:"✓ "}
.vaalikone__row--disagree .vaalikone__mark::before{content:"✗ "}
.vaalikone__row--skip .vaalikone__mark,.vaalikone__row--none .vaalikone__mark{color:var(--scheme-muted,var(--color-muted));font-weight:600}
.vaalikone__edit{appearance:none;margin:0;padding:0;border:0;border-radius:0;background:none;color:inherit;font:inherit;line-height:inherit;text-align:inherit;box-shadow:none;transform:none;transition:none;cursor:pointer;justify-self:start;min-height:44px;color:var(--scheme-link,var(--color-primary));text-decoration:underline;font-weight:600}
.vaalikone__edit:hover{transform:none;box-shadow:none}
.vaalikone__edit:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}
.vaalikone__msg:empty{display:none}
.vaalikone__sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media (min-width:640px){.vaalikone__choices{grid-template-columns:1fr 1fr 1fr}.vaalikone__choice--skip{grid-column:auto;min-height:56px}}
@media (forced-colors:active){.vaalikone__choice:has(input:checked){background:Highlight;color:HighlightText;border-color:Highlight}.vaalikone__bar span,.vaalikone__meter span{background:Highlight}}
.pricing-period{display:none;margin:0 0 var(--space-md);padding:0;border:0;min-width:0}
.pricing-period__legend{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.pricing-period__option{position:relative;display:inline-flex;align-items:center;gap:.4rem;min-height:44px;padding:.35rem 1rem;border:1px solid var(--color-border,#c5ccd6);background:var(--color-background,#fff);color:var(--color-text,#111);cursor:pointer;font-weight:600}
.pricing-period__option:first-of-type{border-radius:999px 0 0 999px}
.pricing-period__option:last-of-type{border-radius:0 999px 999px 0;margin-left:-1px}
.pricing-period__input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
.pricing-period__option:has(.pricing-period__input:checked){background:var(--color-primary);border-color:var(--color-primary);color:var(--color-onPrimary,#fff)}
.pricing-period__option:has(.pricing-period__input:focus-visible){outline:3px solid var(--color-focus,#1a56db);outline-offset:2px;box-shadow:var(--focus-ring-shadow,none);z-index:1}
.pricing-period__save{display:inline-block;padding:.05rem .45rem;border-radius:999px;background:color-mix(in srgb,var(--color-success,#1b7f3b) 14%,#fff);color:var(--color-success-text,#14532d);font-size:.8rem;font-weight:700}
.pricing-plan__price--yearly{display:none}
.pricing-periods .pricing-plan__price--yearly{display:block}
.pricing-plan__note{display:block;font-size:.9rem;font-weight:500;opacity:.85}
/* White text at 85 % on the featured plan's colour fell under 4.5:1 (axe, 25.10.2026). */
.pricing-plan--featured .pricing-plan__period,.pricing-plan--featured .pricing-plan__note{opacity:1}
/* The same on an accent section (axe, 7.11.2026: the period of a bordered plan). */
.section[data-color-scheme="accent"] :is(.pricing-plan__period,.pricing-plan__note){opacity:1}
.pricing__vat{margin:var(--space-md) 0 0;font-size:.9rem;color:var(--scheme-muted,var(--color-muted));text-align:center}
@supports selector(:has(*)){.pricing-period{display:flex;justify-content:center}
.pricing-periods:has(.pricing-period__input[value="yearly"]:checked) .pricing-plan__price--monthly{display:none}
.pricing-periods:has(.pricing-period__input[value="monthly"]:checked) .pricing-plan__price--yearly{display:none}}
.locations__heading{margin:0 0 var(--space-sm)}
.locations__intro{max-width:60ch;margin:0 0 var(--space-md);color:var(--scheme-muted,var(--color-muted))}
.locations__body{display:grid;gap:var(--space-lg);align-items:start}
@media (min-width:960px){.locations--map .locations__body{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr)}.locations--sticky .locations__map{position:sticky;top:var(--space-md)}}
.locations__list{margin:0;padding:0;list-style:none}
.locations__list>.block{min-width:0}
.location{padding:var(--space-md);border:1px solid var(--scheme-border,var(--color-border,#d5d9e0));border-radius:var(--radius-md,8px);background:var(--scheme-surface,var(--color-surface,transparent))}
.location__name{margin:0 0 .35rem;font-size:1.15rem}
.location__address,.location__phone{margin:0 0 .35rem}
.location__hours{margin:0 0 .35rem}
.location__hours p{margin:0}
.location__label{font-weight:600}
.location__actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin:var(--space-sm) 0 0}
.location__route,.location__show{display:inline-flex;align-items:center;min-height:44px;min-width:44px;color:var(--scheme-link,var(--color-primary));text-decoration:underline;text-underline-offset:.15em}
.location__show{appearance:none;margin:0;padding:0 .25rem;border:0;background:none;font:inherit;cursor:pointer;display:none;box-shadow:none;transform:none}
.locations--map.is-live .location__show{display:inline-flex}
.location__show[aria-pressed="true"]{font-weight:700;text-decoration-thickness:2px}
.location__show:hover{transform:none;box-shadow:none}
.location__route:focus-visible,.location__show:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:2px}
.locations__status{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.locations__map .embed,.locations__map .osm-map{margin:0}
.locations__tools{display:grid;gap:var(--space-sm);margin:0 0 var(--space-md)}
.no-js .locations__tools{display:none}
.locations__search{display:grid;gap:.35rem;max-width:32rem}
.locations__search-label{font-weight:600}
.locations__search-input{min-height:48px;padding:0 1rem;border:1px solid var(--scheme-border,var(--color-border,#c5cad3));border-radius:var(--radius-sm,6px);background:var(--color-background,#fff);color:var(--color-text,#111);font:inherit;font-size:max(1rem,16px)}
.locations__search-input:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:2px}
.locations__near{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem}
.locations__near-button.button{min-height:44px;margin:0}
.locations__near-note{flex:1 1 16rem;margin:0;font-size:.9rem;color:var(--scheme-muted,var(--color-muted))}
.locations__found{margin:0;font-weight:600}
.locations__found:empty{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.locations__list>[hidden]{display:none}
.location__distance{margin:.35rem 0 0;font-weight:600}
.location__distance:empty{display:none}
.hotspots__heading{margin:0 0 var(--space-sm)}
.hotspots__intro{max-width:60ch;margin:0 0 var(--space-md);color:var(--scheme-muted,var(--color-muted))}
.hotspots__stage{position:relative;max-width:100%}
.hotspots__image{display:block;width:100%;height:auto;border-radius:var(--radius-image,var(--radius-md,8px))}
.hotspots__placeholder{aspect-ratio:16/9;border-radius:var(--radius-md,8px);background:var(--scheme-surface,var(--color-surface,#eef1f5))}
/* The compiler makes the root block list position:relative (.s-<id> .hotspots__markers); the
   points layer must lie over the picture instead. */
.hotspots__markers{position:absolute!important;inset:0;margin:0;padding:0;pointer-events:none}
.hotspots__markers>.hotspot{position:absolute;width:0;height:0;pointer-events:auto}
.hotspot__btn{appearance:none;margin:0;padding:0;border:0;border-radius:0;background:none;color:inherit;font:inherit;line-height:inherit;text-align:inherit;box-shadow:none;transform:none;transition:none;cursor:pointer;position:absolute;left:-1.125rem;top:-1.125rem;display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:50%;background:var(--color-primary);color:var(--color-onPrimary,#fff);font-weight:700;font-size:.95rem;box-shadow:0 0 0 3px #fff,0 2px 8px rgba(0,0,0,.35)}
.hotspot__btn:hover{transform:none;box-shadow:none;background:var(--color-primary);filter:brightness(1.1)}
.hotspot__btn:disabled{opacity:1;cursor:default}
.hotspot__btn:focus-visible{outline:3px solid var(--color-focus,#1a56db);outline-offset:3px}
.hotspot__btn[aria-expanded="true"]{box-shadow:0 0 0 3px #fff,0 0 0 6px var(--color-primary),0 2px 8px rgba(0,0,0,.35)}
.hotspot__panel{position:absolute;z-index:20;top:1.6rem;left:0;transform:translateX(-50%);width:min(18rem,80vw);padding:.75rem .9rem;border-radius:var(--radius-md,8px);background:var(--color-background,#fff);color:var(--color-text,#111);box-shadow:0 8px 28px rgba(0,0,0,.25);text-align:left}
.hotspot--right .hotspot__panel{transform:translateX(-1.125rem)}
.hotspot--left .hotspot__panel{transform:translateX(calc(-100% + 1.125rem))}
.hotspot--up .hotspot__panel{top:auto;bottom:1.6rem}
.hotspot__panel[hidden]{display:none}
.hotspot__title{margin:0 0 .25rem;font-weight:700}
.hotspot__body,.hotspot__link{margin:0 0 .35rem;font-size:.95rem}
.hotspot__link a{color:var(--color-primary);text-decoration:underline}
.hotspot__close{appearance:none;margin:0;padding:0;border:0;border-radius:0;background:none;color:inherit;font:inherit;line-height:inherit;text-align:inherit;box-shadow:none;transform:none;transition:none;cursor:pointer;display:inline-flex;align-items:center;min-height:24px;margin-top:.15rem;font-size:.9rem;text-decoration:underline;color:var(--color-text,#111)}
.hotspot__close:hover{transform:none;box-shadow:none}
.hotspot__close:focus-visible{outline:2px solid var(--color-focus,#1a56db);outline-offset:2px}
.hotspots__list{margin:var(--space-md) 0 0;padding-left:1.5rem;display:grid;gap:.6rem}
.hotspots__item{padding-left:.25rem}
.hotspots__item:focus{outline:2px solid var(--color-focus,#1a56db);outline-offset:4px}
.hotspots__item-name{display:block;font-weight:700}
.hotspots__item-body{display:block}
.hotspots__item-link{color:var(--scheme-link,var(--color-primary));text-decoration:underline}
@media (min-width:40.0625rem){.hotspots.is-live:not(.hotspots--list) .hotspots__list{display:none}}
@media (max-width:40rem){.hotspot__panel{display:none!important}.hotspot__btn{width:1.75rem;height:1.75rem;left:-.875rem;top:-.875rem;font-size:.85rem}}
.qr{display:inline-grid;justify-items:center;gap:.5rem;max-width:100%;margin:0}
.qr__svg{display:block;width:12rem;max-width:100%;height:auto;background:#fff}
.qr--sm .qr__svg{width:8rem}
.qr--lg .qr__svg{width:18rem}
.qr__caption{display:grid;gap:.15rem;text-align:center}
.qr__label{font-weight:600}
.qr__url{font-size:.9rem;overflow-wrap:anywhere;color:var(--scheme-muted,var(--color-muted))}
.qr__downloads{display:flex;flex-wrap:wrap;justify-content:center;gap:.25rem 1rem;margin:0}
.qr__download{appearance:none;display:inline-flex;align-items:center;min-height:44px;margin:0;padding:0 .25rem;border:0;background:none;font:inherit;color:var(--scheme-link,var(--color-primary));text-decoration:underline;text-underline-offset:.15em;cursor:pointer;box-shadow:none;transform:none}
.qr__download:hover{transform:none;box-shadow:none}
.qr__download:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:2px}
.qr__png{display:none}
.qr.is-live .qr__png{display:inline-flex}
.qr__hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.qr__empty{padding:var(--space-md);border:1px dashed var(--color-border,#c5ccd6);border-radius:var(--radius-md,8px);color:var(--color-muted);font-size:.9rem}
@media print{.qr__downloads{display:none}}
/* Flip card: without the script both sides are shown in reading order and there is no
   button; live, the sides sit on top of each other in one grid cell and the button turns
   the card. The card is as tall as its taller side, so the page does not jump. */
.flip-card{display:grid;grid-template-rows:1fr auto;align-content:start;gap:var(--space-sm);height:100%}
.flip-card__inner{display:grid;gap:var(--space-sm)}
.flip-card__face{display:grid;align-content:start;gap:.5rem;padding:var(--space-md);border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md);background:var(--scheme-surface,var(--color-surface,var(--color-background)));color:inherit}
.flip-card__face--back{background:var(--scheme-surface,var(--color-surface,var(--color-background)));border-style:dashed}
.flip-card__title{margin:0;font-size:1.2rem}
.flip-card__text{margin:0}
.flip-card__link{margin:0}
.flip-card__image{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius-sm)}
.flip-card__toggle{appearance:none;margin:0;padding:0;border:0;border-radius:0;background:none;color:inherit;font:inherit;line-height:inherit;text-align:inherit;box-shadow:none;transform:none;transition:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;justify-self:start;align-self:start;min-height:44px;padding:.5rem 1rem;border:1.5px solid currentColor;border-radius:var(--radius-sm);font-weight:600}
.flip-card__toggle:hover{transform:none;box-shadow:none;color:var(--scheme-link,var(--color-primary))}
.flip-card__toggle:focus-visible{outline:2px solid var(--scheme-fg,var(--color-text));outline-offset:2px}
.flip-card__toggle[x-cloak]{display:none}
.flip-card__vh{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.flip-card.is-live .flip-card__inner{display:grid;grid-template-areas:"face";perspective:1200px}
/* The turn is animated only after the visitor has turned the card once, so the page does
   not show a half-turned card while the script starts. */
.flip-card.is-live .flip-card__face{grid-area:face;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.flip-card.is-live.has-turned .flip-card__face{transition:transform .5s ease,visibility 0s linear .25s}
.flip-card.is-live .flip-card__face--back{transform:rotateY(180deg);visibility:hidden;border-style:solid}
.flip-card.is-live.is-flipped .flip-card__face--front{transform:rotateY(-180deg);visibility:hidden}
.flip-card.is-live.is-flipped .flip-card__face--back{transform:none;visibility:visible}
@media (prefers-reduced-motion:reduce){.flip-card.is-live .flip-card__face,.flip-card.is-live.has-turned .flip-card__face{transition:none;transform:none!important}}
.motion-off .flip-card.is-live .flip-card__face,.motion-off .flip-card.is-live.has-turned .flip-card__face{transition:none;transform:none!important}
@media print{.flip-card__face{visibility:visible!important;transform:none!important}.flip-card.is-live .flip-card__inner{grid-template-areas:none}.flip-card.is-live .flip-card__face{grid-area:auto}.flip-card__toggle{display:none}}
/* Scrolling text: a still, wrapping row until the script marks it live; then two
   identical tracks slide left, each by its own width, so the loop has no seam. */
.text-marquee{--marquee-duration:30s;--marquee-gap:var(--space-lg)}
.text-marquee--slow{--marquee-duration:50s}.text-marquee--fast{--marquee-duration:16s}
.text-marquee__viewport{display:flex;overflow:hidden}
.text-marquee__track{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-xs) var(--marquee-gap);margin:0;padding:0;list-style:none}
.text-marquee__item{font-family:var(--font-heading);font-size:1.25rem;font-weight:700;white-space:nowrap}
.text-marquee--large .text-marquee__item{font-size:clamp(1.6rem,5vw,3rem)}
.text-marquee__item::before{content:"";display:inline-block;width:.4em;height:.4em;margin-right:var(--marquee-gap);border-radius:50%;background:currentColor;opacity:.4;vertical-align:middle}
.text-marquee__track--copy{display:none}
.text-marquee.is-live .text-marquee__viewport{-webkit-mask-image:linear-gradient(to right,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(to right,transparent,#000 6%,#000 94%,transparent)}
.text-marquee.is-live .text-marquee__track{flex:none;flex-wrap:nowrap;justify-content:space-around;min-width:100%;padding-right:var(--marquee-gap);animation:text-marquee var(--marquee-duration) linear infinite}
.text-marquee.is-live .text-marquee__track--copy{display:flex}
.text-marquee__viewport:hover .text-marquee__track,.text-marquee__viewport:focus-within .text-marquee__track,.text-marquee.is-paused .text-marquee__track{animation-play-state:paused}
@keyframes text-marquee{to{transform:translateX(-100%)}}
.text-marquee__pause{display:none;align-items:center;justify-content:center;width:44px;height:44px;margin:var(--space-sm) auto 0;padding:0;border:1px solid var(--scheme-border,var(--color-border));border-radius:50%;background:transparent;color:var(--scheme-muted,var(--color-muted));cursor:pointer}
.text-marquee.is-live .text-marquee__pause{display:flex}
.text-marquee__pause .cms-icon{margin:0}
.text-marquee__pause:hover{color:var(--scheme-fg,var(--color-text))}
.text-marquee__pause:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:2px}
.text-marquee__pause[x-cloak],.text-marquee__pause [x-cloak]{display:none!important}
@media (prefers-reduced-motion:reduce){.text-marquee.is-live .text-marquee__viewport{-webkit-mask-image:none;mask-image:none}.text-marquee.is-live .text-marquee__track{animation:none;flex:1 1 auto;flex-wrap:wrap;justify-content:center;min-width:0;padding-right:0}.text-marquee.is-live .text-marquee__track--copy,.text-marquee.is-live .text-marquee__pause{display:none!important}}
.motion-off .text-marquee.is-live .text-marquee__viewport{-webkit-mask-image:none;mask-image:none}
.motion-off .text-marquee.is-live .text-marquee__track{animation:none;flex:1 1 auto;flex-wrap:wrap;justify-content:center;min-width:0;padding-right:0}
.motion-off .text-marquee.is-live .text-marquee__track--copy,.motion-off .text-marquee.is-live .text-marquee__pause{display:none!important}
/* Lottie animation: the stage keeps a square shape until the player knows the file's
   own size, so the page does not jump; the pause button sits in its corner. */
.lottie{position:relative;width:100%;margin-inline:auto}
.lottie__stage{display:grid;place-items:center;width:100%;min-height:3rem}
.lottie[data-lottie] .lottie__stage{aspect-ratio:var(--lottie-ratio,1)}
.lottie__stage>svg{display:block;width:100%!important;height:100%!important}
.lottie__poster{display:block;width:100%;height:100%;object-fit:contain;border-radius:0}
.lottie.is-ready .lottie__poster,.lottie.is-ready .lottie__note{display:none}
.lottie__note{margin:0;padding:var(--space-sm);text-align:center;color:var(--scheme-muted,var(--color-muted))}
.lottie[data-lottie]:not(.is-ready) .lottie__note{position:absolute;inset:0;display:grid;place-items:center}
.lottie__note--missing{border:1px dashed var(--scheme-border,var(--color-border));border-radius:var(--radius-md)}
.lottie__toggle{position:absolute;right:.25rem;bottom:.25rem;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin:0;padding:0;border:1px solid var(--scheme-border,var(--color-border));border-radius:50%;background:var(--color-background);color:var(--color-text);box-shadow:none;transform:none;cursor:pointer}
.lottie__toggle[hidden]{display:none}
.lottie__toggle:hover{transform:none;box-shadow:none;color:var(--color-primary)}
.lottie__toggle:focus-visible{outline:2px solid var(--color-text);outline-offset:2px}
.lottie__icon--play,.lottie.is-playing .lottie__icon--pause{display:block}
.lottie__icon--pause,.lottie.is-playing .lottie__icon--play{display:none}
/* 360° tour: the box keeps 2:1 before anything loads (no layout shift) and at most 60 % of
   the screen's height on a phone; the poster is a plain picture until the tour starts. */
.pano{display:grid;gap:var(--space-sm,.75rem)}
.pano__heading,.pano__intro,.pano__caption{margin:0}
.pano__caption,.pano__intro{color:var(--scheme-muted,var(--color-muted))}
.pano__stage{position:relative;width:100%;aspect-ratio:2/1;max-height:60vh;max-height:60svh;overflow:hidden;border-radius:var(--radius-md,8px);background:var(--scheme-border,var(--color-border,#e3e6ec))}
@media (max-width:40rem){.pano__stage{aspect-ratio:4/3}}
.pano__poster,.pano__viewer,.pano__frame{position:absolute;inset:0;width:100%;height:100%;border:0}
.pano__poster{object-fit:cover;border-radius:0}
.pano__viewer[hidden],.pano__frame[hidden]{display:none}
.pano__viewer:focus-visible{outline:3px solid var(--color-primary,#2456c8);outline-offset:-3px}
.pano__start-wrap{position:absolute;inset:0;display:grid;place-items:center;background:linear-gradient(transparent 40%,rgb(0 0 0 / .35))}
.pano__start-wrap[hidden],.pano__tools[hidden],.pano__message[hidden],.pano__keys[hidden]{display:none}
.pano__start{display:inline-flex;align-items:center;gap:.5rem;min-height:48px;padding-inline:1.25rem;box-shadow:0 2px 12px rgb(0 0 0 / .3)}
.pano__icon{flex:none}
.pano__tools{position:absolute;right:.5rem;top:.5rem;display:flex;gap:.25rem;z-index:2}
.pano__tool{display:inline-flex;align-items:center;justify-content:center;min-width:44px;height:44px;margin:0;padding:0 .6rem;border:1px solid rgb(255 255 255 / .6);border-radius:var(--radius-sm,6px);background:rgb(0 0 0 / .62);color:#fff;font:inherit;font-size:1.25rem;line-height:1;box-shadow:none;transform:none;cursor:pointer}
.pano__tool:hover{transform:none;box-shadow:none;background:rgb(0 0 0 / .8);color:#fff}
.pano__tool:focus-visible{outline:3px solid #fff;outline-offset:1px}
.pano__tool--close{font-size:1rem}
.pano__message{position:absolute;inset:auto 0 0 0;padding:var(--space-sm,.75rem);background:rgb(0 0 0 / .72);color:#fff}
.pano__message p{margin:0}
.pano__message a{color:#fff}
.pano__message-actions{margin-top:.5rem!important;display:flex;flex-wrap:wrap;gap:.75rem;align-items:center}
.pano__scenes{display:flex;flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none}
.pano__scenes .block{display:contents}
.pano__scene{min-height:44px;padding:.4rem .9rem;border:1px solid var(--scheme-border,var(--color-border));border-radius:999px;background:var(--color-background);color:var(--color-text);font:inherit;box-shadow:none;transform:none;cursor:pointer}
.pano__scene:hover{transform:none;box-shadow:none;color:var(--color-primary)}
.pano__scene[aria-pressed="true"]{border-color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary)}
.pano__scene:focus-visible{outline:2px solid var(--color-text);outline-offset:2px}
.pano__status{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.pano__gate{position:absolute;inset:0;display:grid;place-items:end stretch}
.pano__gate-box{position:relative;padding:var(--space-sm,.75rem) var(--space-md,1rem);background:rgb(0 0 0 / .72);color:#fff}
.pano__gate-box p{margin:0}
.pano__gate-box a,.pano__gate-box .embed__gate-settings{color:#fff}
.pano__gate-actions{margin-top:.5rem!important}
.pano__stage:fullscreen{max-height:none;aspect-ratio:auto;border-radius:0}
.pano__noscript,.pano__missing{margin:0}
.pano--empty .embed-empty{display:grid;place-items:center;aspect-ratio:2/1;border:1px dashed var(--scheme-border,var(--color-border));border-radius:var(--radius-md,8px)}
/* Pannellum's own controls are replaced by the buttons above (real buttons with names). */
.pano .pnlm-controls-container,.pano .pnlm-about-msg{display:none!important}
.pano .pnlm-container{background:#222}
/* 3D model: a square box until the visitor asks for the model; the poster fills it. */
.model3d{display:grid;gap:var(--space-xs,.5rem);margin:0}
.model3d__stage{position:relative;width:100%;aspect-ratio:1;max-height:70vh;overflow:hidden;border-radius:var(--radius-md,8px);background:var(--scheme-border,var(--color-border,#e3e6ec))}
.model3d__poster,.model3d__placeholder,.model3d__stage model-viewer{position:absolute;inset:0;width:100%;height:100%}
.model3d__poster{object-fit:contain;border-radius:0;background:var(--color-background)}
.model3d__start-wrap{position:absolute;inset:auto 0 0 0;display:flex;justify-content:center;padding:var(--space-sm,.75rem)}
.model3d__start-wrap[hidden],.model3d__close[hidden],.model3d__message[hidden]{display:none}
.model3d__start{min-height:48px}
.model3d__close{position:absolute;right:.5rem;top:.5rem;z-index:2;min-height:44px;padding:0 .8rem;border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-sm,6px);background:var(--color-background);color:var(--color-text);font:inherit;box-shadow:none;transform:none;cursor:pointer}
.model3d__close:hover{transform:none;box-shadow:none}
.model3d__message{position:absolute;inset:auto 0 0 0;margin:0;padding:var(--space-sm,.75rem);background:rgb(0 0 0 / .72);color:#fff}
.model3d__file,.model3d__caption{margin:0}
.model3d__caption{color:var(--scheme-muted,var(--color-muted))}
.model3d__stage model-viewer:focus-visible{outline:3px solid var(--color-primary,#2456c8);outline-offset:-3px}
.model3d__status{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
/* Scroll reveal: subtle and short; hidden only after the script has said it can show it. */
.reveal-ready [data-reveal].is-revealed{transition:opacity .6s ease-out,transform .6s ease-out}
.reveal-ready [data-reveal]:not(.is-revealed){opacity:0}
.reveal-ready [data-reveal="slide"]:not(.is-revealed){transform:translateY(1.5rem)}
.reveal-ready [data-reveal]:not(.is-revealed):focus-within{opacity:1;transform:none}
.reveal-ready [data-reveal="stagger"]:not(.is-revealed) :is(.section__blocks>.block,.icon-boxes>*,.gallery__grid>.block,.project-archive>li,.blog-archive>li,.team-archive>li,.event-archive>li){opacity:0;transform:translateY(1rem)}
.reveal-ready [data-reveal="stagger"].is-revealed :is(.section__blocks>.block,.icon-boxes>*,.gallery__grid>.block,.project-archive>li,.blog-archive>li,.team-archive>li,.event-archive>li){transition:opacity .5s ease-out,transform .5s ease-out}
.reveal-ready [data-reveal="stagger"].is-revealed :is(.section__blocks>.block,.icon-boxes>*,.gallery__grid>.block,.project-archive>li,.blog-archive>li,.team-archive>li,.event-archive>li):nth-child(2){transition-delay:0.08s}
.reveal-ready [data-reveal="stagger"].is-revealed :is(.section__blocks>.block,.icon-boxes>*,.gallery__grid>.block,.project-archive>li,.blog-archive>li,.team-archive>li,.event-archive>li):nth-child(3){transition-delay:0.16s}
.reveal-ready [data-reveal="stagger"].is-revealed :is(.section__blocks>.block,.icon-boxes>*,.gallery__grid>.block,.project-archive>li,.blog-archive>li,.team-archive>li,.event-archive>li):nth-child(4){transition-delay:0.24s}
.reveal-ready [data-reveal="stagger"].is-revealed :is(.section__blocks>.block,.icon-boxes>*,.gallery__grid>.block,.project-archive>li,.blog-archive>li,.team-archive>li,.event-archive>li):nth-child(5){transition-delay:0.32s}
.reveal-ready [data-reveal="stagger"].is-revealed :is(.section__blocks>.block,.icon-boxes>*,.gallery__grid>.block,.project-archive>li,.blog-archive>li,.team-archive>li,.event-archive>li):nth-child(6){transition-delay:0.4s}
.reveal-ready [data-reveal="stagger"].is-revealed :is(.section__blocks>.block,.icon-boxes>*,.gallery__grid>.block,.project-archive>li,.blog-archive>li,.team-archive>li,.event-archive>li):nth-child(7){transition-delay:0.48s}
.reveal-ready [data-reveal="stagger"].is-revealed :is(.section__blocks>.block,.icon-boxes>*,.gallery__grid>.block,.project-archive>li,.blog-archive>li,.team-archive>li,.event-archive>li):nth-child(8){transition-delay:0.56s}
.reveal-ready [data-reveal="stagger"].is-revealed :is(.section__blocks>.block,.icon-boxes>*,.gallery__grid>.block,.project-archive>li,.blog-archive>li,.team-archive>li,.event-archive>li):nth-child(n+9){transition-delay:0.64s}
.reveal-ready [data-reveal="stagger"] :is(.section__blocks>.block,.icon-boxes>*,.gallery__grid>.block,.project-archive>li,.blog-archive>li,.team-archive>li,.event-archive>li):focus-within{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal-ready [data-reveal],.reveal-ready [data-reveal="stagger"] :is(.section__blocks>.block,.icon-boxes>*,.gallery__grid>.block,.project-archive>li,.blog-archive>li,.team-archive>li,.event-archive>li){opacity:1!important;transform:none!important;transition:none!important}}
@media print{[data-reveal],[data-reveal="stagger"] :is(.section__blocks>.block,.icon-boxes>*,.gallery__grid>.block,.project-archive>li,.blog-archive>li,.team-archive>li,.event-archive>li){opacity:1!important;transform:none!important}}
/* The site's "no motion" switch. */
.motion-off [data-reveal]{opacity:1!important;transform:none!important;transition:none!important}
.motion-off [data-reveal="stagger"] :is(.section__blocks>.block,.icon-boxes>*,.gallery__grid>.block,.project-archive>li,.blog-archive>li,.team-archive>li,.event-archive>li){opacity:1!important;transform:none!important;transition:none!important}
.motion-off .block{animation:none!important}
.motion-off video.section__video{display:none}
.motion-off .section__video--still{display:block}
.motion-off .logo-cloud__viewport{-webkit-mask-image:none;mask-image:none}
.motion-off .logo-cloud--marquee .logo-cloud__track{animation:none;flex:1 1 auto;min-width:0;flex-wrap:wrap!important;justify-content:center!important;row-gap:var(--space-md)}
.motion-off .logo-cloud--marquee .logo-cloud__track>.block{flex:none}
.motion-off .logo-cloud__track--copy,.motion-off .logo-cloud__pause{display:none!important}
/* Kuvaselain (library-blocks/image-browser.ts). */
.img-browser{position:relative;display:block;width:100%;overflow:hidden;border-radius:inherit}
.img-browser__track{display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;aspect-ratio:var(--img-browser-ratio,3 / 2);border-radius:inherit}
.img-browser__slide{flex:0 0 100%;min-width:0;scroll-snap-align:start;scroll-snap-stop:always;display:block;height:100%}
.img-browser__slide>a{display:block;height:100%}
.img-browser__slide img{display:block;width:100%;height:100%;max-width:none;object-fit:cover}
.img-browser__track:focus-visible{outline:3px solid var(--color-focus,var(--color-primary,#1d4ed8));outline-offset:-3px}
/* The buttons and the count replace the scroll bar; without JavaScript (.no-js) it stays as the cue. */
html:not(.no-js) .img-browser__track{scrollbar-width:none}
html:not(.no-js) .img-browser__track::-webkit-scrollbar{display:none}
.img-browser [x-cloak]{display:none!important}
.img-browser__nav{position:absolute;top:50%;z-index:2;display:grid;place-items:center;width:44px;height:44px;margin:0;padding:0;transform:translateY(-50%);border:2px solid #fff;border-radius:999px;background:rgba(17,24,39,0.72);color:#fff;font:inherit;font-size:1.6rem;line-height:1;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.35);transition:background-color .15s,box-shadow .15s}
.img-browser__nav--prev{left:.5rem}
.img-browser__nav--next{right:.5rem}
.img-browser__nav:hover{background:rgba(17,24,39,0.9);transform:translateY(-50%)}
.img-browser__nav:focus-visible{outline:3px solid #fff;outline-offset:2px;box-shadow:0 0 0 5px rgba(17,24,39,.9)}
/* A desktop at rest: shown but subdued (still 3:1); full strength on hover and focus. */
@media (hover:hover) and (pointer:fine){.img-browser:not(:hover):not(:focus-within) .img-browser__nav{background:rgba(17,24,39,0.64);box-shadow:none}}
@media (prefers-reduced-motion:reduce){.img-browser__nav{transition:none}}
.img-browser__count{position:absolute;right:.5rem;bottom:.5rem;z-index:2;padding:.15rem .55rem;border-radius:999px;background:rgba(17,24,39,.78);color:#fff;font-size:.8rem;font-weight:600;line-height:1.5;font-variant-numeric:tabular-nums;pointer-events:none}
.img-browser__live{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media (prefers-reduced-motion:no-preference){.img-browser__track{scroll-behavior:smooth}}
.motion-off .img-browser__track{scroll-behavior:auto}
@media print{.img-browser__track{overflow:visible;flex-wrap:wrap;aspect-ratio:auto}.img-browser__slide{flex-basis:50%}.img-browser__nav,.img-browser__count{display:none!important}}
/* Kuva suurena (library-blocks/lightbox.ts). */
a.lightbox-link{display:block;height:100%;cursor:zoom-in;color:inherit;border-radius:inherit}
a.lightbox-link:focus-visible{outline:3px solid var(--color-focus,var(--color-primary,#1d4ed8));outline-offset:2px}
.img-browser__slide>a.lightbox-link:focus-visible{outline-offset:-3px}
dialog.lightbox{width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#0c0c0c;color:#fff;overflow:hidden}
dialog.lightbox::backdrop{background:rgba(0,0,0,.7)}
.lightbox__figure{margin:0;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.6rem;padding:4rem 1rem 3rem;box-sizing:border-box}
.lightbox__image{display:block;width:auto;height:auto;max-width:100%;max-height:calc(100dvh - 8.5rem);object-fit:contain}
.lightbox__image[hidden]{display:none}
.lightbox__caption{font-size:.95rem;line-height:1.4;text-align:center;max-width:60ch;color:#f3f4f6}
.lightbox__caption:empty{display:none}
.lightbox__close,.lightbox__nav{position:absolute;z-index:1;display:grid;place-items:center;width:48px;height:48px;margin:0;padding:0;border:2px solid #fff;border-radius:999px;background:rgba(17,24,39,.72);color:#fff;font:inherit;font-size:1.75rem;line-height:1;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.35)}
.lightbox__close{top:.75rem;right:.75rem}
.lightbox__nav{top:calc(50% - 24px)}
/* A theme's own button motion (a lift on hover) never moves the viewer's buttons. */
dialog.lightbox button,dialog.lightbox button:is(:hover,:active,:focus-visible){transform:none}
.lightbox__nav--prev{left:.75rem}
.lightbox__nav--next{right:.75rem}
.lightbox__nav[hidden]{display:none}
.lightbox__close:hover,.lightbox__nav:hover{background:rgba(17,24,39,.9)}
.lightbox__close:focus-visible,.lightbox__nav:focus-visible{outline:3px solid #fff;outline-offset:2px;box-shadow:0 0 0 5px rgba(17,24,39,.9)}
.lightbox__count{position:absolute;left:0;right:0;bottom:.9rem;margin:0;text-align:center;font-size:.9rem;color:#e5e7eb;font-variant-numeric:tabular-nums}
.lightbox__live{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
html.lightbox-open,html:has(dialog.lightbox[open]){overflow:hidden}
/* Shaped section edges (section-shapes.ts). */
[data-edge-top],[data-edge-bottom]{--edge-h:clamp(18px,4vw,56px);--edge-ht:0px;--edge-hb:0px;--edge-t:linear-gradient(#000 0 0);--edge-b:linear-gradient(#000 0 0);position:relative;z-index:2;-webkit-mask:var(--edge-t) top/100% calc(var(--edge-ht) + 1px) no-repeat,linear-gradient(#000 0 0) 0 var(--edge-ht)/100% calc(100% - var(--edge-ht) - var(--edge-hb)) no-repeat,var(--edge-b) bottom/100% calc(var(--edge-hb) + 1px) no-repeat;mask:var(--edge-t) top/100% calc(var(--edge-ht) + 1px) no-repeat,linear-gradient(#000 0 0) 0 var(--edge-ht)/100% calc(100% - var(--edge-ht) - var(--edge-hb)) no-repeat,var(--edge-b) bottom/100% calc(var(--edge-hb) + 1px) no-repeat}
[data-edge-size="s"]{--edge-h:clamp(12px,2.5vw,28px)}[data-edge-size="m"]{--edge-h:clamp(18px,4vw,56px)}[data-edge-size="l"]{--edge-h:clamp(28px,7vw,104px)}
[data-edge-top]{--edge-ht:var(--edge-h);margin-top:calc(-1 * var(--edge-h));border-top:var(--edge-h) solid transparent;background-origin:border-box}
[data-edge-bottom]{--edge-hb:var(--edge-h)}
[data-edge-bottom]+.section{margin-top:calc(-1 * var(--edge-h-prev,clamp(18px,4vw,56px)));border-top:var(--edge-h-prev,clamp(18px,4vw,56px)) solid transparent;background-origin:border-box}
[data-edge-bottom][data-edge-size="s"]+.section{--edge-h-prev:clamp(12px,2.5vw,28px)}[data-edge-bottom][data-edge-size="m"]+.section{--edge-h-prev:clamp(18px,4vw,56px)}[data-edge-bottom][data-edge-size="l"]+.section{--edge-h-prev:clamp(28px,7vw,104px)}
.section:has(+[data-edge-top]){border-bottom:var(--edge-h-next,clamp(18px,4vw,56px)) solid transparent;background-origin:border-box}
.section:has(+[data-edge-top][data-edge-size="s"]){--edge-h-next:clamp(12px,2.5vw,28px)}.section:has(+[data-edge-top][data-edge-size="m"]){--edge-h-next:clamp(18px,4vw,56px)}.section:has(+[data-edge-top][data-edge-size="l"]){--edge-h-next:clamp(28px,7vw,104px)}
[data-edge-top="wave"]{--edge-t:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20100%2010%27%20preserveAspectRatio%3D%27none%27%3E%3Cpath%20transform%3D%27matrix(1%200%200%20-1%200%2010)%27%20d%3D%27M0%200H100V5Q75%2010%2050%205T0%205Z%27%2F%3E%3C%2Fsvg%3E")}[data-edge-bottom="wave"]{--edge-b:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20100%2010%27%20preserveAspectRatio%3D%27none%27%3E%3Cpath%20d%3D%27M0%200H100V5Q75%2010%2050%205T0%205Z%27%2F%3E%3C%2Fsvg%3E")}
[data-edge-top="slant"]{--edge-t:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20100%2010%27%20preserveAspectRatio%3D%27none%27%3E%3Cpath%20transform%3D%27matrix(1%200%200%20-1%200%2010)%27%20d%3D%27M0%200H100L0%2010Z%27%2F%3E%3C%2Fsvg%3E")}[data-edge-bottom="slant"]{--edge-b:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20100%2010%27%20preserveAspectRatio%3D%27none%27%3E%3Cpath%20d%3D%27M0%200H100L0%2010Z%27%2F%3E%3C%2Fsvg%3E")}
[data-edge-top="curve"]{--edge-t:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20100%2010%27%20preserveAspectRatio%3D%27none%27%3E%3Cpath%20transform%3D%27matrix(1%200%200%20-1%200%2010)%27%20d%3D%27M0%200H100Q50%2020%200%200Z%27%2F%3E%3C%2Fsvg%3E")}[data-edge-bottom="curve"]{--edge-b:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20100%2010%27%20preserveAspectRatio%3D%27none%27%3E%3Cpath%20d%3D%27M0%200H100Q50%2020%200%200Z%27%2F%3E%3C%2Fsvg%3E")}
[data-edge-top="peak"]{--edge-t:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20100%2010%27%20preserveAspectRatio%3D%27none%27%3E%3Cpath%20transform%3D%27matrix(1%200%200%20-1%200%2010)%27%20d%3D%27M0%200H100L50%2010Z%27%2F%3E%3C%2Fsvg%3E")}[data-edge-bottom="peak"]{--edge-b:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20100%2010%27%20preserveAspectRatio%3D%27none%27%3E%3Cpath%20d%3D%27M0%200H100L50%2010Z%27%2F%3E%3C%2Fsvg%3E")}
[data-edge-top="zigzag"]{--edge-t:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20100%2010%27%20preserveAspectRatio%3D%27none%27%3E%3Cpath%20transform%3D%27matrix(1%200%200%20-1%200%2010)%27%20d%3D%27M0%200H100L95%2010L90%200L85%2010L80%200L75%2010L70%200L65%2010L60%200L55%2010L50%200L45%2010L40%200L35%2010L30%200L25%2010L20%200L15%2010L10%200L5%2010L0%200Z%27%2F%3E%3C%2Fsvg%3E")}[data-edge-bottom="zigzag"]{--edge-b:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%20100%2010%27%20preserveAspectRatio%3D%27none%27%3E%3Cpath%20d%3D%27M0%200H100L95%2010L90%200L85%2010L80%200L75%2010L70%200L65%2010L60%200L55%2010L50%200L45%2010L40%200L35%2010L30%200L25%2010L20%200L15%2010L10%200L5%2010L0%200Z%27%2F%3E%3C%2Fsvg%3E")}
@media print{[data-edge-top],[data-edge-bottom]{-webkit-mask:none;mask:none}}
/* Background image depth on scroll (section-shapes.ts): browsers with scroll-driven animations only. */
@keyframes lt-parallax{from{background-position-y:15%}to{background-position-y:85%}}
@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){[data-parallax]{animation:lt-parallax linear both;animation-timeline:view()}}}
.motion-off [data-parallax]{animation:none!important}
/* Picture effects under the pointer (image-hover.ts). */
.img-hover{display:block;overflow:hidden;border-radius:inherit}
.img-hover-all .gallery__grid>.block{overflow:hidden}
.img-hover img,.img-hover-all .gallery__grid img{transition:transform .45s ease,filter .35s ease}
@media (hover:hover){.img-hover--zoom:is(:hover,:focus-within) img,.img-hover-all.img-hover--zoom .gallery__grid>.block:is(:hover,:focus-within) img,.img-hover--tilt:is(:hover,:focus-within) img,.img-hover-all.img-hover--tilt .gallery__grid>.block:is(:hover,:focus-within) img{transform:scale(1.06)}
.img-hover--tilt,.img-hover-all.img-hover--tilt .gallery__grid>.block{overflow:visible;perspective:900px}
.img-hover--tilt:is(:hover,:focus-within) img,.img-hover-all.img-hover--tilt .gallery__grid>.block:is(:hover,:focus-within) img{transform:rotateX(6deg) rotateY(-10deg) translateY(-6px);filter:drop-shadow(0 18px 24px rgb(0 0 0/.18))}
.img-hover--color img,.img-hover-all.img-hover--color .gallery__grid img{filter:grayscale(1)}
.img-hover--color:is(:hover,:focus-within) img,.img-hover-all.img-hover--color .gallery__grid>.block:is(:hover,:focus-within) img{filter:none}}
@media (prefers-reduced-motion:reduce){.img-hover img,.img-hover-all .gallery__grid img{transition:none}.img-hover--zoom:is(:hover,:focus-within) img,.img-hover-all.img-hover--zoom .gallery__grid>.block:is(:hover,:focus-within) img,.img-hover--tilt:is(:hover,:focus-within) img,.img-hover-all.img-hover--tilt .gallery__grid>.block:is(:hover,:focus-within) img{transform:none}}
.motion-off .img-hover img,.motion-off .img-hover-all .gallery__grid img{transition:none}
.motion-off :is(.img-hover--zoom:is(:hover,:focus-within) img,.img-hover-all.img-hover--zoom .gallery__grid>.block:is(:hover,:focus-within) img,.img-hover--tilt:is(:hover,:focus-within) img,.img-hover-all.img-hover--tilt .gallery__grid>.block:is(:hover,:focus-within) img){transform:none}
/* Gallery topic buttons (image-hover.ts). */
.gallery-filter__bar{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 var(--space-md)}
.gallery-filter__button{display:inline-flex;align-items:center;min-height:44px;padding:.4rem 1rem;border:1px solid var(--scheme-border,var(--color-border,#c5ccd6));border-radius:999px;background:transparent;color:inherit;font:inherit;font-size:.95rem;line-height:1.2;cursor:pointer;box-shadow:none;transform:none}
.gallery-filter__button:hover{background:var(--scheme-surface,var(--color-surface,#f4f5f7));transform:none;box-shadow:none}
.gallery-filter__button[aria-pressed="true"]{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-onPrimary,#fff)}
.gallery-filter__button:focus-visible{outline:2px solid var(--color-focus,var(--color-primary));outline-offset:2px}
.gallery-filter__status{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.gallery__grid>.block[hidden]{display:none!important}
/* Video in a dialog (video-popup.ts). */
.video--popup{position:relative}
.video__launch{position:relative;display:block;aspect-ratio:16/9;overflow:hidden;border-radius:var(--radius-image,var(--radius-md,8px));background:#1d232b;color:#fff;text-decoration:none}
.video__poster{display:block;width:100%;height:100%;object-fit:cover}
.video__poster--empty{background:linear-gradient(135deg,#2a323d,#11161c)}
.video__play{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;background:linear-gradient(rgb(0 0 0 / .05),rgb(0 0 0 / .45));font-weight:700;font-size:1.05rem;text-shadow:0 1px 3px rgb(0 0 0 / .6)}
/* The words sit on a dark chip of their own (28.10.2026): white on 60 % black reads on any poster. */
.video__play-label{padding:.25em .75em;border-radius:999px;background:rgb(0 0 0 / .6)}
.video__play-icon{display:grid;place-items:center;width:4.5rem;height:4.5rem;border-radius:50%;background:var(--color-primary);color:var(--color-onPrimary,#fff);box-shadow:0 6px 24px rgb(0 0 0 / .35);transition:transform .2s ease}
.video__play-icon::before{content:"";width:0;height:0;margin-left:.3rem;border-style:solid;border-width:.8rem 0 .8rem 1.3rem;border-color:transparent transparent transparent currentColor}
.video__launch:hover .video__play-icon,.video__launch:focus-visible .video__play-icon{transform:scale(1.08)}
.video__launch:focus-visible{outline:3px solid var(--color-focus,var(--color-primary));outline-offset:3px}
@media (prefers-reduced-motion:reduce){.video__play-icon{transition:none}.video__launch:hover .video__play-icon,.video__launch:focus-visible .video__play-icon{transform:none}}
.video--popup figcaption{margin-top:.5rem}
dialog.video__dialog{width:min(100vw - 2rem,1100px);max-width:none;padding:0;border:0;background:#000;color:#fff;overflow:visible}
dialog.video__dialog::backdrop{background:rgb(0 0 0 / .8)}
.video__dialog .video__player{max-height:calc(100dvh - 6rem)}
.video__close{position:absolute;top:-3rem;right:0;display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:rgb(255 255 255 / .15);color:#fff;font-size:1.8rem;line-height:1;cursor:pointer;box-shadow:none;transform:none}
.video__close:hover{background:rgb(255 255 255 / .3);transform:none;box-shadow:none}
.video__close:focus-visible{outline:2px solid #fff;outline-offset:2px}
/* Size guide on the product page (size-guide.ts). */
.size-guide{margin:.75rem 0;border:1px solid var(--ks-line,var(--color-border,#d5d9e0));border-radius:var(--radius-md,8px)}
.size-guide__summary{display:flex;align-items:center;gap:.5rem;min-height:44px;padding:.5rem .9rem;font-weight:600;cursor:pointer;list-style:none}
.size-guide__summary::-webkit-details-marker{display:none}
.size-guide__summary::before{content:"";flex:none;width:1.4rem;height:.9rem;border:2px solid currentColor;border-radius:2px;background:repeating-linear-gradient(90deg,currentColor 0 2px,transparent 2px 6px) bottom/100% 40% no-repeat}
.size-guide__summary::after{content:"";margin-left:auto;width:.55rem;height:.55rem;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px)}
.size-guide[open]>.size-guide__summary::after{transform:rotate(-135deg) translateY(-2px)}
.size-guide__summary:focus-visible{outline:2px solid var(--color-focus,var(--color-primary));outline-offset:2px;border-radius:var(--radius-md,8px)}
.size-guide__body{padding:0 .9rem .9rem}
.size-guide__scroll{overflow-x:auto}
.size-guide__scroll:focus-visible{outline:2px solid var(--color-focus,var(--color-primary));outline-offset:2px}
.size-guide__table{width:100%;border-collapse:collapse;font-size:.95rem;font-variant-numeric:tabular-nums}
.size-guide__table th,.size-guide__table td{padding:.45rem .6rem;border-bottom:1px solid var(--ks-line,var(--color-border,#d5d9e0));text-align:left;white-space:nowrap}
.size-guide__table thead th{font-size:.85rem}
.size-guide__note{margin:.6rem 0 0;font-size:.9rem;color:var(--color-muted,inherit)}
.contact-topics__heading{margin:0 0 var(--space-sm)}
.contact-topics__intro{max-width:60ch;margin:0 0 var(--space-md);color:var(--scheme-muted,var(--color-muted))}
.contact-topics__list{margin:0;padding:0;list-style:none}
.contact-topics__list>.block{min-width:0}
.contact-topic{height:100%;padding:var(--space-md);border:1px solid var(--scheme-border,var(--color-border,#d5d9e0));border-radius:var(--card-radius,var(--radius-md,8px));background:var(--scheme-surface,var(--color-surface,transparent))}
.contact-topic__topic{margin:0 0 .4rem;font-size:1.15rem;line-height:1.25}
.contact-topic__note{margin:0 0 .6rem;color:var(--scheme-muted,var(--color-muted))}
.contact-topic__who{display:flex;flex-direction:column;margin:0 0 .6rem}
.contact-topic__name{font-weight:600}
.contact-topic__role{color:var(--scheme-muted,var(--color-muted));font-size:.9375rem}
.contact-topic__routes{display:grid;gap:.35rem;margin:0}
.contact-topic__route{display:grid;grid-template-columns:minmax(6.5rem,auto) minmax(0,1fr);gap:.75rem;align-items:baseline}
.contact-topic__route dt{font-weight:600}
/* A long address in a narrow card breaks before its @ (the <wbr>), and only if the name itself
   is still too long, anywhere in it: never mid-word in other text (6.11.2026). The span keeps the
   address one flex item, so its accessible name has no space at the @. */
.contact-topic__email{overflow-wrap:anywhere}
.contact-topic__route dd{margin:0;min-width:0;overflow-wrap:anywhere}
.contact-topic__route a{display:inline-flex;align-items:center;min-height:44px;color:var(--scheme-link,var(--color-primary));text-decoration:underline;text-underline-offset:.15em}
.contact-topic__route a:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:2px}
.contact-topic__form{margin:var(--space-sm) 0 0}
.contact-topic__form .button{min-height:44px}
@media (max-width:399.98px){.contact-topic__route{grid-template-columns:minmax(0,1fr);gap:0}}
.contact-topic--disclosure{padding:0}
.contact-topic__summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:44px;padding:.85rem var(--space-md);cursor:pointer;font-weight:600;font-size:1.1rem;list-style:none}
.contact-topic__summary::-webkit-details-marker{display:none}
.contact-topic__summary::after{content:"";flex:none;width:.55rem;height:.55rem;margin-right:.25rem;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-25%) rotate(45deg);transition:transform .2s ease}
.contact-topic--disclosure[open]>.contact-topic__summary::after{transform:translateY(15%) rotate(-135deg)}
.contact-topic__summary:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:2px;border-radius:inherit}
.contact-topic__body{padding:0 var(--space-md) var(--space-md)}
@media (prefers-reduced-motion:reduce){.contact-topic__summary::after{transition:none}}
.load-more{display:flex;flex-direction:column;align-items:center;gap:.5rem;margin:var(--space-lg) 0 0}
.load-more[hidden]{display:none}
[data-load-more-list]>[hidden]{display:none!important}
.load-more__button{min-height:44px;min-width:12rem}
.load-more__button[aria-busy="true"]{cursor:progress;opacity:.75}
.load-more__status{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.load-more__restart{display:inline-flex;align-items:center;min-height:44px;color:var(--scheme-link,var(--color-primary))}
.load-more__status.is-error{position:static;width:auto;height:auto;margin:0;overflow:visible;clip-path:none;white-space:normal;color:var(--scheme-fg,var(--color-text))}
[data-load-more-list]>[data-load-more-new]:focus{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:4px}
[data-load-more-list]>[data-load-more-new]:focus:not(:focus-visible){outline:none}
.listen{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;box-sizing:content-box;max-width:var(--size-contentMaxWidth);margin:var(--space-sm) auto;padding:0 var(--space-md)}
.listen[hidden]{display:none}
.listen__button{appearance:none;margin:0;padding:0;border:0;border-radius:0;background:none;color:inherit;font:inherit;line-height:inherit;text-align:inherit;box-shadow:none;transform:none;transition:none;cursor:pointer;display:inline-flex;align-items:center;gap:.45rem;min-height:44px;padding:.4rem .95rem;border:1px solid var(--scheme-border,var(--color-border,#d5d9e0));border-radius:999px;background:var(--scheme-bg,var(--color-background));color:var(--scheme-fg,var(--color-text));font-weight:600}
.listen__button:hover{transform:none;box-shadow:none;border-color:var(--scheme-link,var(--color-primary))}
.listen__button:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:2px}
.listen__button[hidden]{display:none}
.listen__button svg{flex:none;width:1.15rem;height:1.15rem}
.listen__status{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
::highlight(listen-sentence){background-color:color-mix(in srgb,var(--color-primary) 22%,transparent);color:inherit}
@media print{.listen{display:none}}
.section-nav{font-size:.9375rem;line-height:1.4}
.section-nav__list{margin:0;padding:0;list-style:none}
.section-nav__list .section-nav__list{margin:0 0 .25rem;padding-left:.85rem;border-left:1px solid var(--scheme-border,var(--color-border,#d5d9e0))}
.section-nav__link,.section-nav__text,.section-nav__root{display:flex;align-items:center;min-height:44px;padding:.35rem .5rem;border-radius:var(--radius-sm,4px);color:inherit;text-decoration:none;overflow-wrap:anywhere}
.section-nav__root{font-weight:600}
.section-nav__link:hover,.section-nav__root:is(a):hover{text-decoration:underline;text-underline-offset:.15em}
.section-nav__link:focus-visible,.section-nav__root:focus-visible,.section-nav__summary:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:2px}
.section-nav [aria-current="page"]{font-weight:600;color:var(--scheme-link,var(--color-primary));box-shadow:inset 3px 0 0 currentColor}
.section-nav [aria-current="true"]{font-weight:600}
.section-nav__heading{margin:0 0 .25rem;padding:0 .5rem;color:var(--scheme-muted,var(--color-muted));font-size:.875rem}
.section-nav__disclosure{border:1px solid var(--scheme-border,var(--color-border,#d5d9e0));border-radius:var(--radius-md,8px)}
.section-nav__summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:44px;padding:.5rem .85rem;cursor:pointer;font-weight:600;list-style:none}
.section-nav__summary::-webkit-details-marker{display:none}
.section-nav__summary::after{content:"";flex:none;width:.5rem;height:.5rem;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-25%) rotate(45deg)}
.section-nav__disclosure[open]>.section-nav__summary::after{transform:translateY(15%) rotate(-135deg)}
.section-nav__body{padding:0 .5rem .5rem}
.section-nav__panel{display:none}
@media (min-width:960px){.section-nav__disclosure{display:none}.section-nav__panel{display:block}}
.list-empty{padding:var(--space-md) 0;color:var(--scheme-muted,var(--color-muted))}
.list-empty__text{margin:0;max-width:60ch}
.list-empty__more{margin:.25rem 0 0}
.list-empty__link{display:inline-flex;align-items:center;min-height:44px;color:var(--scheme-link,var(--color-primary));text-decoration:underline;text-underline-offset:.15em}
.list-empty__link:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:2px}
.list-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-xs) var(--space-md);margin-bottom:var(--space-sm)}
.list-head>h2{margin:0}
.list-all{margin:var(--space-md) 0 0}
.list-all--heading{margin:0}
.list-all__link{display:inline-flex;align-items:center;min-height:44px;font-weight:600}
.list-all__link::after{content:"\2192";content:"\2192"/"";display:inline-block;margin-inline-start:.4em}
.list-filter__list{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin:0 0 var(--space-md);padding:0;list-style:none}
.list-filter__link{display:inline-flex;align-items:center;min-height:44px;padding:0 .9rem;border:1px solid var(--scheme-border,var(--color-border,#d5d9e0));border-radius:999px;color:inherit;text-decoration:none}
.list-filter__link:hover{border-color:var(--scheme-link,var(--color-primary))}
.list-filter__link[aria-current=true]{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-onPrimary,#fff);font-weight:600}
.list-filter__empty{color:var(--scheme-muted,var(--color-muted))}
.blog-archive__category,.event-archive__category{display:block;color:var(--scheme-link,var(--color-primary));font-size:.85rem;font-weight:600;margin-bottom:var(--space-xs)}
.event-archive__category{flex-basis:100%;margin:0}
.list-all .visually-hidden,.list-head .visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
img.img-ratio{width:100%;height:auto;object-fit:cover}
img.img-ratio--1-1{aspect-ratio:1/1}
img.img-ratio--4-3{aspect-ratio:4/3}
img.img-ratio--3-2{aspect-ratio:3/2}
img.img-ratio--16-9{aspect-ratio:16/9}
img.img-ratio--21-9{aspect-ratio:21/9}
.section-foot{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-sm);margin:var(--space-lg) 0 0}
.section-foot.is-start{justify-content:flex-start}
.grid-section__head{max-width:44rem;margin:0 auto var(--space-lg);text-align:center}
.grid-section__heading{margin:0}
.grid-section__intro{margin-top:var(--space-sm);color:var(--scheme-muted,var(--color-muted))}
.grid-section__intro>:last-child{margin-bottom:0}
.grid-section__head>.grid-section__intro>:is(p,ul,ol){margin-inline:auto}
.grid-section__head>.grid-section__intro>p{text-align:inherit}
:is(.grid-section__head,.testimonials__head,.team__head,.stats__head).is-start{margin-inline:0;text-align:start}
.is-start>:is(.grid-section__intro,.testimonials__intro,.team__intro,.stats__intro)>:is(p,ul,ol){margin-inline:0}
/* Quiz: one question at a time on every width; the stage and result appear with the script. */
.quiz{max-width:44rem;margin:0 auto}
.quiz [hidden]{display:none!important}
.quiz__lead{font-size:1.1em}
.quiz__startbar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem}
.quiz__private{color:var(--scheme-muted,var(--color-muted));font-size:.875em}
.quiz__stage,.quiz__result{padding:clamp(1rem,4vw,1.75rem);border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md);background:var(--scheme-surface,var(--color-surface))}
.quiz__bar{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.25rem 1rem;font-size:.9em}
.quiz__bar p{margin:0}
.quiz__meter{height:6px;margin:.5rem 0 1.25rem;border-radius:999px;background:color-mix(in srgb,var(--scheme-fg,var(--color-text)) 12%,transparent);overflow:hidden}
.quiz__meter span{display:block;height:100%;width:0;background:var(--scheme-link,var(--color-primary));transition:width .2s}
.quiz__q{margin:0;padding:0;border:0;min-width:0}
.quiz__question{display:block;padding:0;margin:0 0 1rem;font-family:var(--font-heading);font-size:1.25em;font-weight:var(--font-headingWeight,bold);line-height:1.3}
.quiz__question:focus{outline:none}.quiz__question:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:4px}
.quiz__qimg{display:block;max-width:100%;height:auto;max-height:16rem;margin:0 0 1rem;border-radius:var(--radius-md);object-fit:cover}
.quiz__hint{color:var(--scheme-muted,var(--color-muted));font-size:.9em}
.quiz__options{display:grid;gap:.6rem}
.quiz__opt{display:flex;align-items:center;gap:.75rem;min-height:48px;padding:.65rem .9rem;border:2px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md);background:var(--scheme-bg,var(--color-background));cursor:pointer;overflow-wrap:anywhere}
.quiz__opt:hover{border-color:var(--scheme-link,var(--color-primary))}
.quiz__opt input{flex:none;width:1.25rem;height:1.25rem;margin:0;accent-color:var(--scheme-link,var(--color-primary))}
.quiz__opt:has(input:checked){border-color:var(--scheme-link,var(--color-primary));background:color-mix(in srgb,var(--scheme-link,var(--color-primary)) 10%,var(--scheme-bg,var(--color-background)))}
.quiz__opt:has(input:focus-visible){outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:2px}
.quiz__opt:has(input:disabled){cursor:default}
.quiz__opt--right{border-color:#15803d!important}.quiz__opt--wrong{border-color:#b91c1c!important}
.quiz__opttext{flex:1}
.quiz__optimg{flex:none;width:4rem;height:4rem;border-radius:var(--radius-sm);object-fit:cover}
.quiz__feedback{margin-top:1rem;padding:.75rem 1rem;border-left:4px solid var(--scheme-link,var(--color-primary));background:var(--scheme-bg,var(--color-background));border-radius:var(--radius-sm)}
.quiz__feedback p{margin:0}.quiz__feedback p+p{margin-top:.35rem}
.quiz__verdict{font-weight:bold}
.quiz__nav{display:flex;justify-content:space-between;gap:.75rem;margin-top:1.25rem}
.quiz__nav .button{min-height:44px}
.quiz__nav [data-quiz-next]{margin-left:auto}
.quiz__result-title{margin-top:0}
.quiz__result-title:focus{outline:none}
.quiz__outimg{display:block;width:100%;max-height:14rem;object-fit:cover;border-radius:var(--radius-md);margin-bottom:1rem}
.quiz__outcome+.quiz__outcome{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--scheme-border,var(--color-border))}
.quiz__review{margin:1rem 0}.quiz__review summary{cursor:pointer;font-weight:bold;min-height:44px;display:flex;align-items:center}
.quiz__review-list{padding-left:1.25rem}.quiz__review-list li{margin-bottom:.75rem}.quiz__review-list p{margin:.15rem 0}
.quiz__actions{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin:1rem 0 0}
.quiz__link{appearance:none;margin:0;padding:.25rem 0;border:0;background:none;box-shadow:none;transform:none;color:var(--scheme-link,var(--color-primary));font:inherit;text-decoration:underline;cursor:pointer;min-height:44px}
.quiz__link:hover{transform:none;box-shadow:none;background:none}
.quiz__live{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media (max-width:639px){.quiz__nav .button{flex:1}}
/* Calculator (Laskuri) */
.calc{display:grid;gap:var(--space-sm);max-width:64rem}
.calc__title{margin:0}
.calc__intro{margin:0;color:var(--scheme-muted,var(--color-muted))}
.calc__body{display:grid;gap:var(--space-md);align-items:start}
@media (min-width:768px){.calc__body{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}}
.calc__controls{display:grid;gap:var(--space-sm);min-width:0}
.calc__field{display:grid;gap:.35rem;min-width:0;margin:0;padding:0;border:0}
.calc__label{font-weight:600;padding:0}
.calc__label-row{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-sm)}
.calc__value{font-variant-numeric:tabular-nums;font-weight:600}
.calc__hint{margin:0;font-size:.875rem;color:var(--scheme-muted,var(--color-muted))}
.calc__number{display:flex;align-items:center;gap:.5rem}
.calc .calc__field .calc__input,.calc .calc__field .calc__select{box-sizing:border-box;min-height:44px;width:100%;max-width:20rem;margin:0;padding:.5rem .75rem;border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md);background:var(--scheme-bg,var(--color-background));color:inherit;font:inherit}
.calc .calc__field .calc__input{max-width:10rem;font-variant-numeric:tabular-nums}
.calc__unit{color:var(--scheme-muted,var(--color-muted))}
.calc .calc__field .calc__range{box-sizing:border-box;width:100%;min-height:44px;margin:0;padding:0;border:0;background:none;accent-color:var(--color-primary)}
.calc__choice-list{display:flex;flex-wrap:wrap;gap:var(--space-xs)}
.calc .calc__choice,.calc .calc__check{display:inline-flex;font-weight:400;align-items:center;gap:.5rem;min-height:44px;padding:.35rem .9rem;border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md);background:var(--scheme-bg,var(--color-background));cursor:pointer}
.calc__field--check{justify-items:start}
.calc__choice input,.calc__check input{width:1.15rem;height:1.15rem;margin:0;accent-color:var(--color-primary)}
.calc__choice:has(input:checked){border-color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary)}
.calc__choice:has(input:focus-visible),.calc__check:has(input:focus-visible){outline:2px solid var(--color-primary);outline-offset:2px}
.calc__input:focus-visible,.calc__select:focus-visible,.calc__range:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}
.calc__result{display:grid;gap:var(--space-sm);padding:var(--space-md);border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md);background:var(--scheme-surface,var(--color-surface));min-width:0}
.calc__outputs{display:grid;gap:var(--space-xs);margin:0}
.calc__output{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem var(--space-sm)}
.calc__output dt{margin:0}
.calc__output dd{margin:0;font-weight:600;font-variant-numeric:tabular-nums;text-align:right}
.calc__output--main{display:grid;gap:.15rem;padding-bottom:var(--space-sm,.75rem);border-bottom:1px solid var(--scheme-border,var(--color-border))}
.calc__output--main dd{font-size:clamp(1.6rem,5vw,2.2rem);line-height:1.15;text-align:left;color:var(--scheme-heading,inherit)}
.calc__vat,.calc__disclaimer,.calc__example{margin:0;font-size:.875rem;color:var(--scheme-muted,var(--color-muted))}
.calc__error{margin:0;font-weight:600}
.calc__cta{justify-self:start;margin-top:var(--space-xs)}
.calc__live{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.calc__problem{padding:var(--space-sm) var(--space-md);border:1px dashed var(--scheme-border,var(--color-border));border-radius:var(--radius-md)}
.calc__problem p,.calc__problem ul{margin:0}
.calc__problem ul{padding-left:1.2em}
/* Date checklist (Muistilista) */
.dcl{display:grid;gap:var(--space-md);max-width:48rem}
.dcl__title,.dcl__phase-title{margin:0}
.dcl__intro,.dcl__disclaimer,.dcl__saved,.dcl__chosen{margin:0}
.dcl__saved,.dcl__disclaimer,.dcl__meta{font-size:.875rem;color:var(--scheme-muted,var(--color-muted))}
.dcl__setup{display:grid;gap:var(--space-sm);padding:var(--space-md);border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md)}
.dcl__setup[hidden],.dcl__bar[hidden],.dcl__phase[hidden],.dcl__task[hidden],.dcl__chosen[hidden],.dcl__timing[hidden]{display:none}
.dcl__field{display:grid;gap:.35rem;min-width:0;margin:0;padding:0;border:0}
.dcl__label{font-weight:600;padding:0}
.dcl .dcl__date{box-sizing:border-box;min-height:44px;width:100%;max-width:20rem;margin:0}
.dcl__choices{display:flex;flex-wrap:wrap;gap:var(--space-xs)}
.dcl .dcl__choice{display:inline-flex;font-weight:400;align-items:center;gap:.5rem;min-height:44px;padding:.35rem .9rem;border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md)}
.dcl__choice input{width:1.15rem;height:1.15rem;margin:0;accent-color:var(--color-primary)}
.dcl__choice:has(input:checked){border-color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary)}
.dcl__choice:has(input:focus-visible),.dcl__check:has(input:focus-visible){outline:2px solid var(--color-primary);outline-offset:2px}
.dcl__bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-xs) var(--space-sm)}
.dcl__progress{margin:0;font-weight:600;font-variant-numeric:tabular-nums}
.dcl__actions{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin:0}
.dcl__chosen{font-weight:600}
.dcl__phase{display:grid;gap:var(--space-xs)}
.dcl__tasks{display:grid;gap:var(--space-xs);margin:0;padding:0;list-style:none}
.dcl__tasks:empty{display:none}
.dcl__task{display:grid;gap:.25rem;margin:0;padding:var(--space-sm);border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md)}
.dcl .dcl__check{display:flex;align-items:flex-start;gap:.6rem;min-height:44px;margin:0;padding:.6rem 0 .2rem;font-weight:600;cursor:pointer}
.dcl .dcl__box{flex:none;width:1.25rem;height:1.25rem;margin:.05rem 0 0;accent-color:var(--color-primary)}
.dcl__task--done .dcl__title{text-decoration:line-through;font-weight:400}
.dcl__task--done .dcl__body{display:none}
.dcl__body{display:grid;gap:.35rem;padding-left:1.85rem;min-width:0}
.dcl__timing,.dcl__link,.dcl__meta{margin:0;overflow-wrap:anywhere}
.dcl__timing{font-variant-numeric:tabular-nums}
.dcl__task--late .dcl__timing{font-weight:600}
.dcl__details>:first-child{margin-top:0}
.dcl__details>:last-child{margin-bottom:0}
.dcl-start{display:grid;gap:var(--space-xs)}
.dcl-start__form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-sm)}
.dcl-start__form[hidden],.dcl-start__error[hidden]{display:none}
.dcl-start__form .dcl__field{flex:0 1 18rem}
.dcl-start .dcl-start__date{box-sizing:border-box;min-height:44px;width:100%;margin:0}
.dcl-start .dcl-start__button{min-height:44px;margin:0}
.dcl-start__error{flex:1 0 100%;margin:0;font-weight:600}
.dcl-start__link{margin:0}
.dcl-start__link a{display:inline-block;padding:.6rem 0}
.dcl__live{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media print{
body:has([data-dcl]) .site-header,body:has([data-dcl]) .site-footer,.dcl__setup,.dcl__actions{display:none!important}
.dcl__task{break-inside:avoid}
.dcl__task--done .dcl__body{display:grid}
.dcl__box{print-color-adjust:exact;-webkit-print-color-adjust:exact}
.dcl__link a[href^="http"]::after,.dcl__meta a[href^="http"]::after{content:" (" attr(href) ")"}
}
/* Document builder (Asiakirjarakentaja) */
.dob{display:grid;gap:var(--space-md);max-width:48rem}
.dob__title,.dob__intro,.dob__disclaimer,.dob__notice{margin:0}
.dob__disclaimer,.dob__help,.dob__small{font-size:.875rem;color:var(--scheme-muted,var(--color-muted))}
.dob__app{display:grid;gap:var(--space-md);min-width:0}
.dob__app:empty{display:none}
.dob__panel{display:grid;gap:var(--space-sm);padding:var(--space-md);border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md);min-width:0}
.dob__progress{margin:0;font-weight:600;font-variant-numeric:tabular-nums}
.dob__step-title,.dob__sub,.dob__help,.dob__small,.dob__error{margin:0}
.dob__fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm)}
.dob__field{display:grid;gap:.35rem;min-width:0;grid-column:1/-1;margin:0;padding:0;border:0;align-content:start}
.dob__field--half{grid-column:auto}
.dob__label{font-weight:600;padding:0}
.dob .dob__input{box-sizing:border-box;width:100%;min-height:44px;margin:0}
.dob textarea.dob__input{min-height:7rem}
.dob__input[aria-invalid=true]{border-color:var(--color-danger,currentColor);box-shadow:inset 0 0 0 1px var(--color-danger,currentColor)}
.dob__error{font-weight:600;color:var(--color-danger,inherit)}
.dob__error:empty{display:none}
.dob__choices{display:flex;flex-wrap:wrap;gap:var(--space-xs)}
.dob .dob__choice{display:inline-flex;font-weight:400;align-items:center;gap:.5rem;min-height:44px;padding:.35rem .9rem;border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md)}
.dob__choice input{width:1.15rem;height:1.15rem;margin:0;accent-color:var(--color-primary)}
.dob__choice:has(input:checked){border-color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary)}
.dob__choice:has(input:focus-visible){outline:2px solid var(--color-primary);outline-offset:2px}
.dob__row{display:grid;gap:var(--space-sm);padding:var(--space-sm);border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md);min-width:0;margin:0}
.dob__row legend{font-weight:600;padding:0 .35rem}
.dob__actions{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin:0;align-items:center}
.dob__actions--end{justify-content:space-between}
.dob .dob__button{min-height:44px;margin:0}
.dob__file{position:relative;display:inline-flex}
.dob__file input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%}
.dob__file:has(input:focus-visible){outline:2px solid var(--color-primary);outline-offset:2px}
.dob__warning{display:grid;gap:.35rem;margin:0;padding:var(--space-sm);border:2px solid var(--color-primary);border-radius:var(--radius-md)}
.dob__warning p{margin:0}
.dob__warning-title{font-weight:600}
.dob__message{margin:0;font-weight:600}
.dob__message:empty{display:none}
.dob__paper{position:relative;overflow:hidden;display:grid;gap:.6rem;padding:clamp(1rem,4vw,2.5rem);background:#fff;color:#1a1a1a;border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-md);user-select:none;-webkit-user-select:none;overflow-wrap:anywhere}
.dob__paper p{margin:0;color:inherit;white-space:pre-line}
.dob__watermark{position:absolute;inset:0;display:grid;align-content:space-around;justify-items:center;overflow:hidden;pointer-events:none;color:#1a1a1a;opacity:.13;font-size:clamp(2rem,9vw,4rem);font-weight:700;letter-spacing:.08em}
.dob__watermark span{transform:rotate(-28deg);white-space:nowrap}
.doc-title{font-size:1.5rem;font-weight:700}
.doc-subtitle{font-size:1.125rem}
.doc-heading{font-size:1.0625rem;font-weight:700;margin-top:.75rem!important}
.doc-clause-heading{font-weight:700;margin-top:.5rem!important}
.doc-signature{display:grid;gap:.15rem;margin-top:1.5rem!important;padding-top:.35rem;border-top:1px solid #1a1a1a;max-width:22rem}
.doc-signature-label{font-size:.8125rem}
.doc-signature-role{font-weight:600}
.doc-note{margin-top:1rem!important;padding-top:.6rem;border-top:1px solid #999;font-size:.9375rem}
@media (max-width:40rem){.dob__fields{grid-template-columns:minmax(0,1fr)}.dob__field--half{grid-column:1/-1}}
@media print{.dob__paper,.dob__app{display:none!important}}
/* Ilmoitukset (web push) */
.pushn{display:grid;gap:var(--space-sm);max-width:44rem}
.pushn--card{padding:clamp(1.25rem,5vw,2.5rem);background:var(--scheme-surface,var(--color-surface));border:var(--card-border,1px) solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md))}
.pushn--compact{gap:var(--space-xs)}
.pushn[hidden]{display:none}
.pushn__title{margin:0}
.pushn__body{margin:0;max-width:65ch;color:var(--scheme-muted,var(--color-muted))}
.pushn__controls{display:flex;flex-wrap:wrap;gap:var(--space-xs);align-items:center}
.pushn .pushn__button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:44px;min-width:44px;padding:.5rem 1.1rem;border:1px solid var(--color-primary);border-radius:var(--button-radius,var(--radius-md));background:var(--color-primary);color:var(--color-onPrimary,#fff);font:inherit;font-weight:600;cursor:pointer;text-align:start}
.pushn .pushn__button[hidden]{display:none}
.pushn .pushn__button--quiet{background:transparent;color:var(--color-primary);border-color:var(--scheme-border,var(--color-border))}
.pushn .pushn__button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}
.pushn .pushn__button[aria-busy=true]{opacity:.7;cursor:progress}
.pushn--compact .pushn__button{min-height:44px;padding:.4rem .9rem;font-weight:500}
.pushn__icon{flex:none}
.pushn__status{margin:0;font-weight:500}
.pushn__status:empty{display:none}
.pushn__alt{margin:0}
.pushn__alt[hidden]{display:none}
.pushn__note{margin:0;max-width:65ch;font-size:.875rem;color:var(--scheme-muted,var(--color-muted))}
.pushn--compact .pushn__note{font-size:.8125rem}

.calc__warning{margin:0;font-weight:700;font-size:1.05rem}
.calc__credit{margin:0;padding-top:var(--space-xs);border-top:1px solid var(--scheme-border,var(--color-border));font-size:1rem;line-height:1.5;color:inherit}
/* Korttipino (card-stack.ts): the cards sit on top of each other in the middle of the box and
   move with transform and opacity only, so a step costs no layout. Rounded cards (default): five
   in sight, scale 1 / .86 / .72 and opacity 1 / .82 / .64 from the middle out (the outer text
   still 4.5:1, axe), the rest hidden (opacity 0) until they come in. The box is a size container: beside a split hero's text it
   stretches to the hero's height and the cards spread out to fill it (--cs-move, at most 1.3 steps). */
.card-stack{--cs-step:5.5rem;--cs-h:4.75rem;--cs-min:calc(2 * var(--cs-span,1.8) * var(--cs-step) + var(--cs-h) + 1.5rem);position:relative;box-sizing:border-box;container-type:size;width:min(30rem,100%);height:var(--cs-min);margin-inline:auto;color:var(--scheme-fg,var(--color-text))}
.card-stack__list{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
/* Relative and full height: the section's block container (rootSelector) makes it relative anyway. */
.card-stack__cards{position:relative;height:100%}
.card-stack__card{--cs-move:min(calc(1.3 * var(--cs-step)),max(var(--cs-step),calc((100cqh - var(--cs-h) - 1.5rem) / (2 * var(--cs-span,1.8)))));position:absolute;left:50%;top:50%;box-sizing:border-box;display:flex;align-items:center;gap:1rem;width:100%;height:var(--cs-h);margin:0;padding:0 1.5rem 0 1.25rem;border-radius:16px;text-align:start;transform:translate(-50%,calc(-50% + var(--y,0) * var(--cs-move))) scale(calc(1 - var(--a,0) * .14));opacity:min(calc(1 - var(--a,0) * .18),max(0,calc((2.5 - var(--a,0)) * 100)));z-index:calc(10 - var(--a,0));transition:transform var(--cs-dur,.7s) cubic-bezier(.4,0,.2,1),opacity var(--cs-dur,.7s) ease,background-color var(--cs-dur,.7s) ease}
.card-stack__card.is-mid{opacity:1}
.card-stack__card.is-wrap{opacity:0}
.card-stack__card.is-jump{transition:none}
.card-stack__icon{flex:none;display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem}
.card-stack__icon .cms-icon{margin:0}.card-stack .card-stack__icon svg{width:2rem;height:2rem}
.card-stack__text{flex:1;min-width:0;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;font-size:1.5rem;font-weight:600;line-height:1.15;overflow-wrap:anywhere;hyphens:auto}
.card-stack--glass .card-stack__card{background:color-mix(in srgb,var(--scheme-fg,var(--color-text)) 10%,transparent);border:1px solid color-mix(in srgb,var(--scheme-fg,var(--color-text)) 24%,transparent);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%);box-shadow:0 12px 32px -16px rgb(0 0 0 / .45)}
.card-stack--glass .card-stack__card.is-mid{background:color-mix(in srgb,var(--scheme-fg,var(--color-text)) 17%,transparent);border-color:color-mix(in srgb,var(--scheme-fg,var(--color-text)) 40%,transparent)}
.card-stack--plain .card-stack__card{background:var(--scheme-surface,var(--color-surface));border:1px solid var(--scheme-border,var(--color-border));box-shadow:0 8px 24px -16px color-mix(in srgb,var(--scheme-fg,var(--color-text)) 50%,transparent)}
.card-stack__badge{position:absolute;top:-.45rem;right:-.45rem;display:none;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border-radius:999px;background:var(--color-success,#15803d);color:#fff;opacity:0;transform:scale(.5);transition:opacity var(--cs-dur,.7s) ease,transform var(--cs-dur,.7s) ease;box-shadow:0 0 0 2px var(--scheme-bg,var(--color-background))}
.card-stack--check .card-stack__badge{display:inline-flex}
.card-stack__card.is-mid .card-stack__badge{opacity:1;transform:none}
.card-stack__badge .cms-icon{margin:0}.card-stack__badge svg{width:1rem;height:1rem;stroke-width:3}
/* Pause/Play: a quiet icon in the corner, the whole 44 px a target, a clear ring on focus. */
.card-stack__toggle{position:absolute;right:0;bottom:0;z-index:20;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:0;border-radius:999px;background:transparent;color:color-mix(in srgb,var(--scheme-fg,var(--color-text)) 75%,transparent);cursor:pointer;transition:color .2s ease,background-color .2s ease}
.card-stack__toggle:hover{color:var(--scheme-fg,var(--color-text));background:color-mix(in srgb,var(--scheme-fg,var(--color-text)) 10%,transparent)}
.card-stack__toggle:focus-visible{color:var(--scheme-fg,var(--color-text));outline:3px solid var(--scheme-fg,var(--color-text));outline-offset:2px}
.card-stack__toggle .cms-icon{margin:0}.card-stack__toggle svg{width:16px;height:16px}
.card-stack__toggle[x-cloak],.card-stack__toggle [x-cloak]{display:none}
/* "Pilleri": the first look, every card in sight and smaller toward the edges. */
.card-stack--pill{--cs-step:3.75rem;--cs-h:3.5rem;width:min(24rem,100%)}
.card-stack--pill .card-stack__card{--cs-move:var(--cs-step);gap:.75rem;padding:0 1.25rem 0 .55rem;border-radius:999px;transform:translate(-50%,calc(-50% + var(--y,0) * var(--cs-step))) scale(max(.5,calc(1 - var(--a,0) * .22)));opacity:max(.35,calc(.9 - var(--a,0) * .15))}
.card-stack--pill .card-stack__card.is-mid{opacity:1}
.card-stack--pill .card-stack__card.is-wrap{opacity:0}
.card-stack--pill .card-stack__icon{width:2.4rem;height:2.4rem;border-radius:999px;background:color-mix(in srgb,var(--scheme-fg,var(--color-text)) 14%,transparent)}
.card-stack--pill .card-stack__icon svg{width:1.25rem;height:1.25rem}
.card-stack--pill .card-stack__text{display:block;font-size:1.05rem;line-height:1.2;white-space:nowrap;text-overflow:ellipsis;overflow-wrap:normal}
.card-stack--pill .card-stack__badge{top:-.3rem;right:-.3rem;width:1.65rem;height:1.65rem}
.card-stack--pill .card-stack__badge svg{width:.95rem;height:.95rem}
@media (max-width:639px){.card-stack{--cs-step:4.6rem;--cs-h:4rem}.card-stack__card{gap:.75rem;padding:0 1.1rem 0 1rem}.card-stack__text{font-size:1.2rem}.card-stack__icon{width:1.75rem;height:1.75rem}.card-stack .card-stack__icon svg{width:1.6rem;height:1.6rem}.card-stack--pill{--cs-step:3.2rem;--cs-h:3rem}.card-stack--pill .card-stack__card{padding:0 1.25rem 0 .55rem}.card-stack--pill .card-stack__text{font-size:.95rem}.card-stack--pill .card-stack__icon{width:2.1rem;height:2.1rem}.card-stack--pill .card-stack__icon svg{width:1.25rem;height:1.25rem}}
@media (prefers-reduced-motion:reduce){.card-stack__card,.card-stack__badge{transition:none}.card-stack__toggle{display:none}}
.card-stack-section{display:grid;gap:var(--space-md,1.5rem);justify-items:center;text-align:center}
.card-stack-section__heading,.card-stack-section__intro{margin:0;max-width:40rem}
.hero__visual{width:min(30rem,100%);margin-bottom:var(--space-md)}
.hero__visual.card-stack--pill{width:min(24rem,100%)}
/* Esittelykaruselli (showcase.ts): the list is a flex row inside a box that scrolls sideways
   (scroll snap); a card is (box - two peeks - gaps) / n wide, measured in the box's own width
   (container units), so the cards in full and the edges come out the same without JavaScript. */
.showcase{--sc-n:1;--sc-gap:clamp(1rem,2.2vw,2rem);--sc-peek:clamp(1.25rem,7vw,7rem);--sc-ratio:3/4;position:relative}
.showcase--4x5{--sc-ratio:4/5}.showcase--1x1{--sc-ratio:1/1}.showcase--4x3{--sc-ratio:4/3}
.showcase__head{max-width:44rem;margin:0 auto var(--space-lg,2rem);padding-inline:var(--site-gutter,1rem);text-align:center}
.showcase__heading{margin:0 0 .5rem}
.showcase__intro{margin:0;font-size:1.125rem;opacity:.85}
.showcase__frame{position:relative}
.showcase__viewport{container-type:inline-size;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-padding-inline:var(--sc-peek);overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.showcase__viewport:focus-visible{outline:2px solid var(--color-primary,currentColor);outline-offset:2px}
.showcase--fade .showcase__viewport{-webkit-mask-image:linear-gradient(90deg,rgb(0 0 0/.35),#000 var(--sc-peek),#000 calc(100% - var(--sc-peek)),rgb(0 0 0/.35));mask-image:linear-gradient(90deg,rgb(0 0 0/.35),#000 var(--sc-peek),#000 calc(100% - var(--sc-peek)),rgb(0 0 0/.35))}
.showcase__frame.is-ready .showcase__viewport{scrollbar-width:none}
.showcase__frame.is-ready .showcase__viewport::-webkit-scrollbar{display:none}
.showcase__track{display:flex;width:max-content;margin:0;padding:.75rem var(--sc-peek) 1.25rem;list-style:none}
.showcase__item{flex:0 0 calc((100cqw - 2 * var(--sc-peek) - (var(--sc-n) - 1) * var(--sc-gap)) / var(--sc-n));min-width:0;margin:0;padding:0;scroll-snap-align:start}
/* The gap is the cards' margin: the section's block container sets the list's own gap to 0. */
.showcase__track>.showcase__item+.showcase__item{margin-inline-start:var(--sc-gap)}
.showcase__card{position:relative;display:flex;flex-direction:column;height:100%;text-align:center}
.showcase__media{position:relative;overflow:hidden;aspect-ratio:var(--sc-ratio);border:1px solid var(--color-border,rgb(0 0 0/.12));border-radius:var(--radius-md,12px);background:var(--color-surface,#f4f4f5);box-shadow:0 10px 30px -18px rgb(0 0 0/.45)}
.showcase__media-link{display:block;height:100%}
.showcase__media picture{display:contents}
.showcase__image,.showcase__blank{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}
.showcase__title{margin:.9rem 0 0;font-size:1.0625rem;line-height:1.3}
.showcase__text{margin:.25rem 0 0;font-size:.95rem;opacity:.85}
.showcase__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem;margin-top:.75rem}
.showcase__action{min-height:44px}
.showcase__empty{margin:1rem var(--site-gutter,1rem)}
/* Pointing and focus: the card lifts, its picture gets a ring, and (hover look) the buttons come
   over the picture. Touch screens have no hover, so there the buttons stay under the name. */
@media (hover:hover) and (pointer:fine){
.showcase__card:is(:hover,:focus-within) .showcase__media{border-color:var(--color-primary,currentColor);box-shadow:0 0 0 2px var(--color-primary,currentColor),0 18px 40px -18px rgb(0 0 0/.5)}
.showcase--actions-hover .showcase__actions{position:absolute;top:0;left:0;right:0;aspect-ratio:var(--sc-ratio);flex-direction:column;align-items:center;justify-content:center;margin:0;padding:1rem;border-radius:var(--radius-md,12px);background:rgb(15 23 42/.55);opacity:0;pointer-events:none}
.showcase--actions-hover .showcase__card:is(:hover,:focus-within) .showcase__actions{opacity:1;pointer-events:auto}
.showcase--actions-hover .showcase__action{min-width:min(14rem,80%)}
.showcase--actions-hover .showcase__action.button--secondary{background:#fff;color:#111827;border-color:#fff}
}
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
.showcase__media,.showcase--actions-hover .showcase__actions{transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease}
.showcase__card:is(:hover,:focus-within) .showcase__media{transform:translateY(-4px)}
.showcase--actions-hover .showcase__card:is(:hover,:focus-within) .showcase__actions{transform:translateY(-4px)}
}
@media (prefers-reduced-motion:no-preference){.showcase__viewport{scroll-behavior:smooth}}
/* Previous / next: round, over the edges at the pictures' middle, 48 px. */
.showcase__nav{position:absolute;top:calc(.75rem + (100cqw - 2 * var(--sc-peek)) / var(--sc-n) / 2);z-index:2;display:inline-flex;align-items:center;justify-content:center;width:3rem;height:3rem;padding:0;border:1px solid var(--color-border,rgb(0 0 0/.15));border-radius:999px;background:var(--color-surface,#fff);color:var(--color-text,#111827);font-size:1.75rem;line-height:1;box-shadow:0 6px 18px -8px rgb(0 0 0/.45);cursor:pointer;transform:translateY(-50%)}
.showcase__frame{container-type:inline-size}
.showcase__nav--prev{left:max(.25rem,calc(var(--sc-peek) / 2 - 1.5rem))}
.showcase__nav--next{right:max(.25rem,calc(var(--sc-peek) / 2 - 1.5rem))}
.showcase__nav:hover{background:var(--color-background,#f4f4f5)}
.showcase__nav:focus-visible{outline:3px solid var(--color-primary,currentColor);outline-offset:2px}
.showcase__nav[aria-disabled="true"]{opacity:.35;cursor:default}
.showcase__nav[x-cloak]{display:none}
@media (min-width:640px){.showcase{--sc-n:2}}
@media (min-width:960px){.showcase{--sc-n:var(--sc-n-md,3)}}
@media (max-width:639px){.showcase{--sc-peek:2.25rem;--sc-gap:.75rem}.showcase__nav{width:2.75rem;height:2.75rem}}
/* Haku pääkuvassa (hero-search.ts). */
.hero__actions--search{flex-direction:column;align-items:stretch;width:100%;max-width:38rem}
.hero--center .hero__actions--search{margin-inline:auto}.hero--end .hero__actions--search{margin-inline-start:auto}
.hero__buttons{display:flex;flex-wrap:wrap;gap:var(--space-sm)}
.hero--center .hero__buttons{justify-content:center}.hero--end .hero__buttons{justify-content:flex-end}
.hero-search{display:flex;gap:.5rem;width:100%;margin:0}
.hero-search__label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.hero-search__input{flex:1 1 auto;min-width:0;min-height:48px;padding:0 1rem;border:1px solid var(--scheme-border,var(--color-border,#c5cad3));border-radius:var(--radius-sm,6px);background:var(--color-background,#fff);color:var(--color-text,#111);font:inherit;font-size:max(1rem,16px)}
.hero-search__input:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:2px}
.hero-search__button.button{flex:none;min-height:48px;margin:0}
.hero-search__popular{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .75rem;text-align:start}
.hero--center .hero-search__popular{justify-content:center}.hero--end .hero-search__popular{justify-content:flex-end}
.hero-search__popular-heading{margin:0;font-weight:600}
.hero-search__suggestions{display:flex;flex-wrap:wrap;gap:.25rem .75rem;margin:0;padding:0;list-style:none}
.hero-search__suggestion{display:inline-flex;align-items:center;min-height:44px;color:inherit;text-decoration:underline;text-underline-offset:.15em}
.hero-search__suggestion:focus-visible{outline:2px solid currentColor;outline-offset:2px}
/* Archive pagination (E185): plain links with a query parameter, no JS.
   44px hit target (WCAG 2.5.5/2.5.8); the current page is a link with
   aria-current="page", never a disabled button. */
.pagination{margin:var(--space-md) 0 0}
.pagination__list{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs);margin:0;padding:0;list-style:none}
.pagination__link{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:0 var(--space-xs);border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-sm);background:var(--scheme-surface,var(--color-surface));color:inherit;text-decoration:none;font-size:.95rem;line-height:1}
.pagination__link:hover{border-color:var(--color-primary)}
.pagination__link:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}
.pagination__link[aria-current="page"]{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-onPrimary,#fff);font-weight:600}
.pagination__link--prev,.pagination__link--next{padding:0 var(--space-sm)}
.pagination__ellipsis{display:inline-flex;align-items:center;justify-content:center;min-width:2rem;min-height:44px;color:var(--scheme-muted,var(--color-muted))}
.cms-icon{display:inline-flex;vertical-align:middle;margin-right:.25em}
.cms-icon svg{width:1.25em;height:1.25em;display:block}
.button .cms-icon,.heading .cms-icon{margin-right:.35em}
/* Entrance animations (E184). Played from the page load itself, so a block is
   never left at the from-state; the reduced-motion reset is here once instead
   of being repeated in every compiled block rule. */
@keyframes lt-fade{from{opacity:0}to{opacity:1}}
@keyframes lt-fade-up{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@keyframes lt-fade-down{from{opacity:0;transform:translateY(-24px)}to{opacity:1;transform:none}}
@keyframes lt-fade-left{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}
@keyframes lt-fade-right{from{opacity:0;transform:translateX(-24px)}to{opacity:1;transform:none}}
@keyframes lt-zoom-in{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:none}}
@keyframes lt-zoom-out{from{opacity:0;transform:scale(1.08)}to{opacity:1;transform:none}}
@keyframes lt-slide-up{from{opacity:0;transform:translateY(64px)}to{opacity:1;transform:none}}
@keyframes lt-blur-in{from{opacity:0;filter:blur(12px)}to{opacity:1;filter:none}}
@keyframes lt-flip-up{from{opacity:0;transform:perspective(800px) rotateX(40deg)}to{opacity:1;transform:none}}
@keyframes lt-pop{0%{opacity:0;transform:scale(.6)}70%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.block{animation:none!important}}
/* Scroll effects: the timeline is set per block inside @supports (compile.ts). */
@keyframes lt-scroll-fade-in{from{opacity:0}to{opacity:1}}
@keyframes lt-scroll-fade-out{from{opacity:1}to{opacity:0}}
@keyframes lt-scroll-zoom-in{from{opacity:.4;transform:scale(.85)}to{opacity:1;transform:none}}
@keyframes lt-scroll-zoom-out{from{transform:scale(1.15)}to{transform:none}}
@keyframes lt-scroll-rise{from{opacity:.2;transform:translateY(80px)}to{opacity:1;transform:none}}
@keyframes lt-scroll-parallax{from{transform:translateY(48px)}to{transform:translateY(-48px)}}
/* Attention effects for buttons: a few repeats only, the from- and to-state are the block itself. */
@keyframes lt-pulse{0%,100%{transform:none}50%{transform:scale(1.06)}}
@keyframes lt-wiggle{0%,100%{transform:none}20%{transform:rotate(-4deg)}40%{transform:rotate(4deg)}60%{transform:rotate(-2deg)}80%{transform:rotate(2deg)}}
@keyframes lt-bounce{0%,100%{transform:none}30%{transform:translateY(-10px)}50%{transform:none}70%{transform:translateY(-4px)}}
/* "When it comes into view": waits only after the script has marked what is on screen. */
.anim-ready .lt-reveal:not(.is-inview),.anim-ready .lt-wait:not(.is-inview){animation:none}
.anim-ready .lt-reveal:not(.is-inview){opacity:0}
.anim-ready .lt-reveal:not(.is-inview):focus-within{opacity:1}
.lt-instant{animation:none!important}
@media (prefers-reduced-motion:reduce){.lt-reveal{opacity:1!important}}
@media print{.block{animation:none!important}.lt-reveal{opacity:1!important}}
.motion-off .lt-reveal{opacity:1!important}
/* A whole section's own animation (style.animation, class lt-anim): the same resets. */
@media (prefers-reduced-motion:reduce){.lt-anim{animation:none!important}}
@media print{.lt-anim{animation:none!important}}
/* Less motion everywhere (docs/sivupohjat/LUOTTOKORTTI_2026-11-09.md): the per-component resets
   above and in library-blocks/ left 25-36 elements a page still moving under reduced motion
   (buttons, the menu, cards, hover effects, tabs). One central rule cuts every transition to 0s
   (the value the components' own reduced-motion rules give, so it never undoes them; nothing on
   a site waits for transitionend, and Alpine x-transition reads the duration) and every
   animation to .01ms with one round, so its end state is still reached and animationend fires. Delays go to zero so nothing waits hidden; smooth scrolling jumps. Only on a site
   with the setting "Vähemmän liikettä kävijän toiveesta" (motionReduceRespect, class
   motion-calm on the root): on for new sites, off for the sites made before it (drizzle/1340),
   which render as they did. */
@media (prefers-reduced-motion:reduce){.motion-calm,.motion-calm *,.motion-calm *::before,.motion-calm *::after{transition-duration:0s!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-delay:0s!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}
.motion-calm.motion-off,.motion-calm.motion-off *,.motion-calm.motion-off *::before,.motion-calm.motion-off *::after{transition-duration:0s!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-delay:0s!important;animation-iteration-count:1!important;scroll-behavior:auto!important}
/* Logo cloud. --logo-height sizes every logo to the same optical height. */
.logo-cloud{--logo-height:2.5rem;--logo-gap:var(--space-lg)}
.logo-cloud__heading{margin:0 0 var(--space-md);text-align:center;font-family:var(--font-body);font-size:1rem;font-weight:600;color:var(--scheme-muted,var(--color-muted))}
.logo-cloud--grid .logo-cloud__track{align-items:center}
.logo-cloud__track>.block{min-width:0}
.logo-item{display:flex;align-items:center;justify-content:center;min-height:44px;color:inherit;text-decoration:none}
.logo-item__image{height:var(--logo-height);width:auto;max-width:100%;object-fit:contain;border-radius:0}
.logo-item__name{font-family:var(--font-heading);font-size:1.15rem;font-weight:700;text-align:center;text-wrap:balance;overflow-wrap:break-word;color:var(--scheme-muted,var(--color-muted))}
a.logo-item:hover .logo-item__name{color:var(--scheme-fg,var(--color-text))}
a.logo-item:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:4px;border-radius:var(--radius-sm)}
.logo-cloud--mono .logo-item__image{filter:grayscale(1);opacity:.7;transition:filter .2s ease,opacity .2s ease}
.logo-cloud--mono a.logo-item:hover .logo-item__image,.logo-cloud--mono a.logo-item:focus-visible .logo-item__image{filter:none;opacity:1}
/* Ticker: two identical tracks side by side, each sliding left by its own width. */
.logo-cloud__viewport{display:flex;overflow:hidden;-webkit-mask-image:linear-gradient(to right,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(to right,transparent,#000 8%,#000 92%,transparent)}
.logo-cloud--marquee .logo-cloud__track{flex:none;min-width:100%;animation:logo-marquee var(--logo-duration,40s) linear infinite}
.logo-cloud--marquee .logo-cloud__track>.block{flex:1 0 auto;padding:0 calc(var(--logo-gap)/2)}
.logo-cloud--slow{--logo-duration:70s}.logo-cloud--fast{--logo-duration:22s}
.logo-cloud__viewport:hover .logo-cloud__track,.logo-cloud__viewport:focus-within .logo-cloud__track,.logo-cloud.is-paused .logo-cloud__track{animation-play-state:paused}
@keyframes logo-marquee{to{transform:translateX(-100%)}}
.logo-cloud__pause{display:flex;align-items:center;justify-content:center;width:44px;height:44px;margin:var(--space-sm) auto 0;padding:0;border:1px solid var(--scheme-border,var(--color-border));border-radius:50%;background:transparent;color:var(--scheme-muted,var(--color-muted));cursor:pointer}
.logo-cloud__pause .cms-icon{margin:0}
.logo-cloud__pause:hover{color:var(--scheme-fg,var(--color-text))}
.logo-cloud__pause:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:2px}
.logo-cloud__pause[x-cloak],.logo-cloud__pause [x-cloak]{display:none}
@media (prefers-reduced-motion:reduce){.logo-cloud--mono .logo-item__image{transition:none}.logo-cloud__viewport{-webkit-mask-image:none;mask-image:none}.logo-cloud--marquee .logo-cloud__track{animation:none;flex:1 1 auto;min-width:0;flex-wrap:wrap!important;justify-content:center!important;row-gap:var(--space-md)}.logo-cloud--marquee .logo-cloud__track>.block{flex:none}.logo-cloud__track--copy,.logo-cloud__pause{display:none!important}}
/* Buttons of the call to action and the 404 section: a 44 px target and a focus ring
   that is visible on every band colour. */
.action-button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;text-align:center}
.button.action-button--second{background:transparent;color:inherit;border-color:currentColor}
.action-button:focus-visible{outline:2px solid var(--scheme-fg,var(--color-text));outline-offset:3px}
.cta{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);text-align:center}
.cta__text{max-width:44rem}
.cta__heading{margin:0}
.cta__body{margin:var(--space-sm) 0 0;font-size:1.1rem;color:var(--scheme-muted,var(--color-muted))}
.cta__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-sm)}
.cta--card,.cta--accent{padding:clamp(1.5rem,5vw,3.5rem);border-radius:var(--card-radius,var(--radius-md))}
.cta--card{background:var(--scheme-surface,var(--color-surface));border:var(--card-border,0) solid var(--scheme-border,var(--color-border))}
.cta--accent{background:var(--color-primary);color:var(--color-onPrimary,#fff)}
.cta--accent .cta__body{color:inherit;opacity:.9}
.cta--accent .action-button:not(.action-button--second){background:var(--color-onPrimary,#fff);color:var(--color-primary)}
.cta--accent .action-button:focus-visible{outline-color:var(--color-onPrimary,#fff)}
@media (min-width:768px){.cta--split{flex-direction:row;justify-content:space-between;text-align:start}.cta--split .cta__actions{flex:none;justify-content:flex-end}}
@media (max-width:479px){.cta__actions{flex-direction:column;align-self:stretch}}
/* Bento grid. The tile is a flex child of the grid cell so that it fills a cell that
   spans two rows; the spans apply from the tablet width up, a phone has one column. */
.bento__intro{max-width:40rem;margin-bottom:var(--space-md);color:var(--scheme-muted,var(--color-muted))}
.bento{grid-auto-flow:dense}
.bento>.block{display:flex;min-width:0}
.bento-item{position:relative;flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden;background:var(--scheme-surface,var(--color-surface));color:var(--scheme-fg,var(--color-text));border:var(--card-border,0) solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md))}
.bento-item__media{flex:1 1 9rem;min-height:9rem;overflow:hidden}
.bento-item__image{width:100%;height:100%;object-fit:cover;border-radius:0}
.bento-item__content{padding:1.25rem}
.bento-item__icon{display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;margin-bottom:var(--space-sm);border-radius:var(--radius-md);background:color-mix(in srgb,var(--color-primary) 12%,transparent);color:var(--scheme-link,var(--color-primary))}
.bento-item__icon .cms-icon{margin:0}
.bento-item__title{margin:0 0 var(--space-xs);font-size:var(--font-size-h3,1.2rem)}
.bento-item__body{font-size:.95rem;color:var(--scheme-muted,var(--color-muted))}
.bento-item__body>:last-child{margin-bottom:0}
.bento-item__body a{position:relative;z-index:1}
/* The title link covers the whole tile, so the tile has one tab stop and one name. */
.bento-item__link{color:inherit;text-decoration:none}
.bento-item__link::after{content:"";position:absolute;inset:0}
.bento-item__link:focus-visible{outline:none;box-shadow:none}
.bento-item--linked:has(.bento-item__link:focus-visible){outline:3px solid var(--scheme-link,var(--color-primary));outline-offset:2px}
.bento-item--linked:hover .bento-item__title{text-decoration:underline;text-underline-offset:.2em}
.bento-item--accent{background:var(--color-primary);color:var(--color-onPrimary,#fff)}
.bento-item--dark{background:var(--color-secondary,#0c1520);color:var(--color-onSecondary,#fff)}
.bento-item--mint{background:#c9f1e4;color:#0c1520}.bento-item--sky{background:#d8e6ff;color:#0c1520}.bento-item--sun{background:#ffe3a3;color:#0c1520}
:is(.bento-item--dark,.bento-item--mint,.bento-item--sky,.bento-item--sun) .bento-item__body{color:inherit;opacity:.88}
:is(.bento-item--dark,.bento-item--mint,.bento-item--sky,.bento-item--sun) .bento-item__body a{color:inherit}
:is(.bento-item--dark,.bento-item--mint,.bento-item--sky,.bento-item--sun) .bento-item__icon{background:color-mix(in srgb,currentColor 12%,transparent);color:inherit}
:is(.bento-item--dark,.bento-item--mint,.bento-item--sky,.bento-item--sun).bento-item--linked:has(.bento-item__link:focus-visible){outline-color:var(--scheme-fg,var(--color-text))}
.bento-item--accent .bento-item__body{color:inherit;opacity:.9}
.bento-item--accent .bento-item__body a{color:inherit}
.bento-item--accent .bento-item__icon{background:color-mix(in srgb,var(--color-onPrimary,#fff) 18%,transparent);color:inherit}
.bento-item--accent.bento-item--linked:has(.bento-item__link:focus-visible){outline-color:var(--scheme-fg,var(--color-text))}
/* Cover: the photo fills the tile and the text sits on a dark veil, so it is white
   whatever the palette. */
.bento-item--cover{justify-content:flex-end;min-height:16rem;color:#fff}
.bento-item--cover .bento-item__media{position:absolute;inset:0}
.bento-item--cover .bento-item__content{position:relative;padding-top:4rem;background:linear-gradient(to top,rgba(0,0,0,.82),rgba(0,0,0,.55) 55%,rgba(0,0,0,0))}
.bento-item--cover .bento-item__body{color:inherit}
.bento-item--cover .bento-item__body a{color:inherit}
.bento-item--cover .bento-item__icon{background:rgba(255,255,255,.2);color:inherit}
@media (min-width:640px){.bento{grid-auto-rows:minmax(13rem,auto)}.bento>.block:has(>.bento-item--wide),.bento>.block:has(>.bento-item--large){grid-column:span 2}.bento>.block:has(>.bento-item--tall),.bento>.block:has(>.bento-item--large){grid-row:span 2}}
/* Announcement bar: edge to edge, no section padding, so a dismissed bar leaves no gap. */
.section.section--announcement{padding:0;margin-bottom:0}
.section--announcement>.section__inner{max-width:none}
.announcement{display:flex;align-items:center;gap:var(--space-sm);min-height:44px;padding:.5rem var(--space-md);font-size:.95rem;line-height:1.4}
.announcement__text{flex:1;min-width:0;margin:0;text-align:center;overflow-wrap:anywhere}
.announcement__link{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:.2em}
.announcement--accent{background:var(--color-primary);color:var(--color-onPrimary,#fff)}
.announcement--dark{background:var(--color-text);color:var(--color-background)}
.announcement--subtle{background:var(--color-surface);color:var(--color-text);border-bottom:1px solid var(--color-border)}
.announcement__close{flex:none;display:flex;align-items:center;justify-content:center;width:44px;height:44px;margin:-.5rem calc(var(--space-sm)*-1) -.5rem 0;padding:0;border:0;border-radius:var(--radius-sm);background:transparent;color:inherit;cursor:pointer}
.announcement__close .cms-icon{margin:0}
.announcement__link:focus-visible{outline:2px solid currentColor;outline-offset:2px;border-radius:2px}
.announcement__close:focus-visible{outline:2px solid currentColor;outline-offset:-4px}
.announcement__close[x-cloak]{display:none}
/* More than one announcement (marketing.ts ANNOUNCEMENT_MULTI). */
.announcement__list{flex:1;min-width:0;margin:0;padding:0;list-style:none;display:grid;gap:.25rem}
.announcement__item[hidden]{display:none}
.announcement__nav,.announcement__pause{flex:none;display:flex;align-items:center;justify-content:center;width:44px;height:44px;margin:-.5rem 0;padding:0;border:0;border-radius:var(--radius-sm);background:transparent;color:inherit;font:inherit;font-size:1.4rem;line-height:1;cursor:pointer;box-shadow:none;transform:none}
.announcement__pause-icon{width:10px;height:12px;border-left:3px solid currentColor;border-right:3px solid currentColor}
.announcement__pause-icon.is-paused{width:0;height:0;border-style:solid;border-width:6px 0 6px 10px;border-color:transparent transparent transparent currentColor}
.announcement__nav:hover,.announcement__pause:hover{background:rgb(127 127 127 / .18);transform:none;box-shadow:none}
.announcement__nav:focus-visible,.announcement__pause:focus-visible{outline:2px solid currentColor;outline-offset:-4px}
.announcement__nav[x-cloak],.announcement__pause[x-cloak]{display:none}
/* Feature rows: stacked on a phone, two equal columns from 768 px. The order property moves the
   image to the right; the markup keeps image-then-text on every row. */
.feature-rows__heading,.feature-rows__intro.richtext{text-align:center}
/* The intro stays centred under its heading inside a boxed container too (LUOTTOKORTTI_2026-11-09.md). */
.feature-rows .feature-rows__intro.richtext p{text-align:center}
.feature-rows__intro{max-width:40rem;margin:0 auto var(--space-lg);color:var(--scheme-muted,var(--color-muted))}
.feature-rows__heading:last-of-type{margin-bottom:var(--space-lg)}
.feature-rows__heading:has(+.feature-rows__intro){margin-bottom:var(--space-sm)}
.feature-row{display:grid;gap:var(--space-md);align-items:center}
.feature-row__image{width:100%;aspect-ratio:4/3;object-fit:cover}
.feature-row__eyebrow{margin:0 0 var(--space-xs);font-size:.9rem;font-weight:var(--font-label-weight,700);letter-spacing:var(--font-label-tracking,.01em);text-transform:var(--font-label-transform,none);font-family:var(--font-label-family,inherit);color:var(--scheme-link,var(--color-primary))}
.feature-row__title{margin:0 0 var(--space-sm);font-size:var(--font-size-h2,1.6rem);line-height:var(--font-leading-h2,var(--font-leading-heading,1.2))}
.feature-row__body{color:var(--scheme-muted,var(--color-muted))}
.feature-row__body>:last-child{margin-bottom:0}
.feature-row__more{margin:var(--space-sm) 0 0}
.feature-row__link{display:inline-flex;align-items:center;gap:.35em;min-height:44px;font-weight:600;text-decoration:none}
.feature-row__link .cms-icon{margin:0}
.feature-row__link:hover{text-decoration:underline;text-underline-offset:.2em}
.feature-row__link:focus-visible{outline:2px solid currentColor;outline-offset:2px;border-radius:var(--radius-sm)}
@media (min-width:768px){.feature-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,5vw,4.5rem)}.feature-row--text{grid-template-columns:minmax(0,44rem)}.feature-rows--right .feature-row__media,.feature-rows--alternate>.block:nth-child(even) .feature-row__media{order:2}}
/* Feature rows around a picture (layout: 'around', LUOTTOKORTTI_2026-11-09.md): on a phone
   the picture first and the rows below; from 768 px three columns, rows 1–2 on the left,
   3–4 on the right, the picture between them. The rows' container steps aside
   (display:contents) so its blocks are cells of the outer grid; a fifth row and later
   ones run across the width below. */
.feature-around{display:grid;gap:var(--space-lg)}
.feature-around__media{justify-self:center;width:100%;max-width:22rem}
.feature-around__image{width:100%;height:auto;object-fit:contain}
.feature-rows--around .feature-row__media{display:none}
.feature-rows--around .feature-row{grid-template-columns:minmax(0,1fr)}
.feature-rows--around .feature-row__title{font-size:var(--font-size-h3,1.25rem)}
@media (min-width:768px){.feature-around{grid-template-columns:minmax(0,1fr) minmax(0,20rem) minmax(0,1fr);grid-auto-flow:row dense;align-items:center;column-gap:clamp(1.5rem,4vw,3.5rem);row-gap:var(--space-xl,3rem)}.section .feature-around>.feature-rows.feature-rows--around{display:contents}.feature-around__media{grid-column:2;grid-row:1/span 2}.feature-rows--around>.block:nth-child(-n+2){grid-column:1}.feature-rows--around>.block:nth-child(1),.feature-rows--around>.block:nth-child(3){grid-row:1}.feature-rows--around>.block:nth-child(2),.feature-rows--around>.block:nth-child(4){grid-row:2}.feature-rows--around>.block:nth-child(3),.feature-rows--around>.block:nth-child(4){grid-column:3}.feature-rows--around>.block:nth-child(n+5){grid-column:1/-1}.feature-rows--around>.block:nth-child(-n+2) :is(.feature-row,.feature-row__body,.feature-row__eyebrow,.feature-row__body p){text-align:end}.feature-around--no-image{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.feature-around--no-image .feature-rows--around>.block:nth-child(3),.feature-around--no-image .feature-rows--around>.block:nth-child(4){grid-column:2}}
/* Comparison table: scrolls sideways inside its own box; the feature names stay put.
   The box is positioned so the visually hidden yes/no texts scroll with it and never
   widen the page. */
.comparison__intro{max-width:40rem;margin-bottom:var(--space-md);color:var(--scheme-muted,var(--color-muted))}
.comparison{position:relative;overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md))}
.comparison:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:2px}
.comparison__table{width:100%;border-collapse:separate;border-spacing:0;font-size:.95rem}
.comparison__table th,.comparison__table td{padding:.75rem 1rem;border-bottom:1px solid var(--scheme-border,var(--color-border));text-align:center;vertical-align:middle}
.comparison__table tbody tr:last-child>*{border-bottom:0}
.comparison__table thead th{min-width:7rem;font-family:var(--font-heading);font-size:1rem}
.comparison__table th[scope="row"],.comparison__corner{position:sticky;left:0;z-index:1;min-width:9rem;max-width:55vw;text-align:start;font-weight:500;overflow-wrap:break-word;hyphens:auto;background:var(--scheme-bg,var(--color-background))}
.comparison__group th{text-align:start;font-size:.85rem;font-weight:700;letter-spacing:.01em;color:var(--scheme-muted,var(--color-muted));background:var(--scheme-surface,var(--color-surface))}
.comparison__table .comparison__hi.comparison__hi{background:color-mix(in srgb,var(--color-primary) 10%,transparent)}
.comparison__table thead .comparison__hi{color:color-mix(in srgb,var(--scheme-link,var(--color-primary)) 78%,var(--scheme-fg,var(--color-text)))}
.comparison__group-label{position:sticky;left:1rem;display:inline-block}
.comparison__mark{display:inline-flex;vertical-align:middle}
.comparison__mark .cms-icon{margin:0}
.comparison__mark--yes{color:var(--scheme-link,var(--color-primary))}
.comparison__mark--no{color:var(--scheme-muted,var(--color-muted))}
.comparison-pick{display:none}@media (max-width:47.99rem){.comparison-pick{display:flex;gap:.25rem;width:fit-content;max-width:100%;margin-bottom:var(--space-sm);padding:.25rem;overflow-x:auto;border-radius:999px;background:var(--scheme-surface,var(--color-surface))}.comparison-pick__input{position:absolute;width:1px;height:1px;opacity:0}.comparison-pick__label{display:inline-flex;align-items:center;min-height:44px;padding:.5rem 1.1rem;border-radius:999px;font-weight:600;white-space:nowrap;cursor:pointer}.comparison-pick__input:checked+.comparison-pick__label{background:var(--scheme-bg,var(--color-background));color:var(--scheme-fg,var(--color-text));box-shadow:0 1px 3px rgb(0 0 0/.14)}.comparison-pick__input:focus-visible+.comparison-pick__label{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:2px}.comparison--pick{overflow:visible}.comparison--pick .comparison__table thead :is(th,td){position:sticky;top:var(--site-header-h,0px);z-index:2;background:var(--scheme-bg,var(--color-background))}.comparison--pick .comparison__table th[scope="row"]{max-width:none;width:55%}.comparison-pick:has(.comparison-pick__input:nth-of-type(1):checked)+.comparison--pick tr>:not(:first-child):not(:nth-child(2)){display:none}.comparison-pick:has(.comparison-pick__input:nth-of-type(2):checked)+.comparison--pick tr>:not(:first-child):not(:nth-child(3)){display:none}.comparison-pick:has(.comparison-pick__input:nth-of-type(3):checked)+.comparison--pick tr>:not(:first-child):not(:nth-child(4)){display:none}.comparison-pick:has(.comparison-pick__input:nth-of-type(4):checked)+.comparison--pick tr>:not(:first-child):not(:nth-child(5)){display:none}.comparison-pick:has(.comparison-pick__input:nth-of-type(5):checked)+.comparison--pick tr>:not(:first-child):not(:nth-child(6)){display:none}.comparison-pick:has(.comparison-pick__input:nth-of-type(6):checked)+.comparison--pick tr>:not(:first-child):not(:nth-child(7)){display:none}.comparison-pick:has(.comparison-pick__input:nth-of-type(7):checked)+.comparison--pick tr>:not(:first-child):not(:nth-child(8)){display:none}.comparison-pick:has(.comparison-pick__input:nth-of-type(8):checked)+.comparison--pick tr>:not(:first-child):not(:nth-child(9)){display:none}}
/* Row hints (a feature name ending in "(( hint ))"): a details element, so the ⓘ button
   opens and closes without a script and says whether it is open. The hint opens under
   the name, inside the sticky row header. */
.comparison__tip{display:inline}
.comparison__tip-btn{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;margin:-.25rem 0 -.25rem .15rem;vertical-align:middle;border-radius:50%;list-style:none;cursor:pointer;color:var(--scheme-muted,var(--color-muted))}
.comparison__tip-btn::-webkit-details-marker{display:none}
.comparison__tip-btn::marker{content:""}
.comparison__tip-icon{display:inline-flex;align-items:center;justify-content:center;width:1.1rem;height:1.1rem;border:1.5px solid currentColor;border-radius:50%;font-family:Georgia,serif;font-size:.75rem;font-style:italic;font-weight:700;line-height:1}
.comparison__tip-btn:hover,.comparison__tip[open]>.comparison__tip-btn{color:var(--scheme-link,var(--color-primary))}
.comparison__tip-btn:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:1px}
.comparison__tip-text{display:block;margin-top:.35rem;font-size:.85rem;font-weight:400;line-height:1.45;color:var(--scheme-muted,var(--color-muted))}
/* Groups that fold up (collapsible): the subheading is the button. */
.comparison__group-btn{display:inline-flex;align-items:center;gap:.4rem;min-height:2.75rem;margin:-.75rem 0;padding:0;border:0;background:transparent;color:inherit;font:inherit;letter-spacing:inherit;text-align:start;cursor:pointer;box-shadow:none;transform:none}
.comparison__group-btn:hover{background:transparent;color:var(--scheme-fg,var(--color-text));transform:none;box-shadow:none}
.comparison__group-btn:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:2px;border-radius:var(--radius-sm)}
.comparison__group-icon{display:inline-flex;transition:transform .2s ease}
.comparison__group-icon .cms-icon{margin:0}
.comparison__group-icon[x-cloak]{display:none}
.comparison__group-btn.is-shut .comparison__group-icon{transform:rotate(-90deg)}
@media (prefers-reduced-motion:reduce){.comparison__group-icon{transition:none}}
.motion-off .comparison__group-icon{transition:none}
/* Header row that stays in view (stickyHeader) on a wide screen. A scroll box would
   hold a sticky header in place, so the box gives up its scrolling (is-fit, set by the
   script) only while the table fits its width; a wider table keeps scrolling sideways. */
@media (min-width:48rem){.comparison--sticky.is-fit{overflow:visible}.comparison--sticky.is-fit .comparison__table thead :is(th,td){position:sticky;top:var(--site-header-h,0px);z-index:2;background:var(--scheme-bg,var(--color-background))}.comparison--sticky.is-fit .comparison__corner{z-index:3}.comparison--sticky.is-fit .comparison__table thead>tr>:first-child{border-top-left-radius:var(--card-radius,var(--radius-md))}.comparison--sticky.is-fit .comparison__table thead>tr>:last-child{border-top-right-radius:var(--card-radius,var(--radius-md))}}
.comparison__sr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
/* Page not found. */
.not-found{display:flex;flex-direction:column;align-items:center;max-width:40rem;margin:0 auto;text-align:center}
.not-found__code{margin:0 0 var(--space-sm);font-family:var(--font-heading);font-size:clamp(4rem,18vw,8rem);font-weight:700;line-height:1;letter-spacing:-.02em;color:var(--scheme-link,var(--color-primary))}
.not-found__heading{margin:0 0 var(--space-sm)}
.not-found__body{margin:0;font-size:1.1rem;color:var(--scheme-muted,var(--color-muted))}
.not-found__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-sm);margin-top:var(--space-lg)}
.not-found__links{align-self:stretch;margin-top:var(--space-xl,3rem);text-align:start}
.not-found__links-heading{margin:0 0 var(--space-sm);font-size:1rem;font-family:var(--font-body);font-weight:600;color:var(--scheme-muted,var(--color-muted))}
@media (max-width:479px){.not-found__actions{flex-direction:column;align-self:stretch}}
/* Newsletter signup: text and form side by side from 768 px, stacked below. */
.newsletter{display:grid;gap:var(--space-md);align-items:center}
.newsletter--card{padding:clamp(1.25rem,5vw,3rem);background:var(--scheme-surface,var(--color-surface));border:var(--card-border,0) solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md))}
.newsletter__heading{margin:0}
.newsletter__body{margin:var(--space-sm) 0 0;color:var(--scheme-muted,var(--color-muted))}
.newsletter__form{min-width:0}
.newsletter__note{margin:var(--space-sm) 0 0;font-size:.85rem;color:var(--scheme-muted,var(--color-muted))}
.newsletter--center{justify-items:center;text-align:center}
.newsletter--center .newsletter__text{max-width:40rem}
.newsletter--center .newsletter__form{width:100%;max-width:28rem;text-align:start}
.newsletter--center .newsletter__note{text-align:center}
@media (min-width:768px){.newsletter--split{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(1.5rem,5vw,4rem)}}

.os-poll{display:grid;gap:var(--space-sm);max-width:40rem}
.os-poll__fieldset{display:grid;gap:.4rem;margin:0;padding:0;border:0;min-width:0}
.os-poll__question{margin:0 0 .4rem;padding:0;font-family:var(--font-heading);font-size:1.25rem;font-weight:700}
.os-poll__hint,.os-poll__note,.os-poll__meta{margin:0;color:var(--scheme-muted,var(--color-muted));font-size:.95rem}
.os-poll__option{display:flex;align-items:center;gap:.6rem;min-height:44px;padding:.35rem .75rem;border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--radius-sm);cursor:pointer}
.os-poll__option input{width:1.15rem;height:1.15rem;margin:0;flex:none;accent-color:var(--color-primary)}
.os-poll__option:has(input:checked){border-color:var(--color-primary)}
.os-poll__option:has(input:focus-visible){outline:2px solid var(--scheme-fg,var(--color-text));outline-offset:2px}
.os-poll__actions{margin:0}
.os-poll__submit{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 1.25rem;border:0;border-radius:var(--radius-sm);background:var(--color-primary);color:var(--color-onPrimary,#fff);font:inherit;font-weight:600;cursor:pointer}
.os-poll__submit:disabled{opacity:.6;cursor:default}
.os-poll__submit:focus-visible{outline:2px solid var(--scheme-fg,var(--color-text));outline-offset:2px}
.os-poll__results{display:grid;gap:.75rem;margin:0;padding:0;list-style:none}
.os-poll__result{display:grid;gap:.25rem}
.os-poll__row{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.os-poll__share{font-weight:700;font-variant-numeric:tabular-nums}
.os-poll__bar{display:block;height:.6rem;border-radius:999px;background:var(--scheme-border,var(--color-border));overflow:hidden}
.os-poll__bar>span{display:block;height:100%;background:var(--color-primary);border-radius:inherit}
.os-poll__notice{margin:0;padding:.6rem .8rem;border-radius:var(--radius-sm);background:var(--scheme-surface,var(--color-surface,#f4f6fa))}
.os-poll__hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.os-status{display:grid;gap:var(--space-sm,.75rem);justify-items:start;max-width:52rem}
.os-status__state{margin:0;font-size:clamp(1.2rem,1rem + 1vw,1.6rem);line-height:1.3}
.os-status__dot{display:inline-block;vertical-align:.05em;margin-right:.55rem;width:.85rem;height:.85rem;border-radius:50%;background:var(--color-success,#15803d);box-shadow:0 0 0 .25rem color-mix(in srgb,var(--color-success,#15803d) 22%,transparent)}
.os-status__state[data-status-state="closed"] .os-status__dot{background:var(--color-danger,#b3261e);box-shadow:0 0 0 .25rem color-mix(in srgb,var(--color-danger,#b3261e) 22%,transparent)}
.os-status__state[data-status-state="oncall"] .os-status__dot{background:var(--color-warning,#b45309);box-shadow:0 0 0 .25rem color-mix(in srgb,var(--color-warning,#b45309) 22%,transparent)}
.os-status__detail{font-weight:400}
.os-status__note,.os-status__response,.os-status__oncall,.os-status__share-note,.os-status__share-msg,.os-status__updated{margin:0}
.os-status__response{font-weight:600}
.os-status__share-msg:empty{display:none}
.os-status__updated{font-size:.875rem;color:var(--scheme-muted,var(--color-muted,#555))}
.os-status__actions{display:flex;flex-wrap:wrap;gap:.75rem;width:100%}
.os-status__actions .button{display:inline-flex;flex-wrap:wrap;align-items:center;justify-content:center;column-gap:.4em;min-height:3.25rem;text-align:center}
.os-status__call{font-size:1.25rem}
.os-status__number{font-variant-numeric:tabular-nums;white-space:nowrap}
.os-status__week{width:100%;max-width:24rem}
.os-status__week summary{cursor:pointer;padding:.7rem 0;font-weight:600}
.os-status__upcoming-title{margin:.75rem 0 .25rem;font-weight:600}
.os-status__upcoming{margin:0;padding-left:1.1rem}
@media (max-width:599px){.os-status__actions .button{flex:1 1 100%}}
.grant-sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.grant-rounds__list{display:grid;gap:var(--space-md,1rem);grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr));margin:0;padding:0;list-style:none}
.grant-round{display:grid;align-content:start;gap:.5rem;padding:var(--space-md,1.25rem);border:1px solid var(--scheme-border,var(--color-border,#d4d4d4));border-radius:var(--radius-md,.5rem);background:var(--scheme-surface,var(--color-surface,transparent))}
.grant-round p,.grant-round h3{margin:0}
.grant-round__state{font-size:.95rem;display:flex;align-items:center;gap:.5rem}
.grant-round__dot{flex:none;width:.75rem;height:.75rem;border-radius:50%;background:var(--color-success,#15803d);box-shadow:0 0 0 .22rem color-mix(in srgb,var(--color-success,#15803d) 22%,transparent)}
.grant-round--upcoming .grant-round__dot{background:var(--color-warning,#b45309);box-shadow:0 0 0 .22rem color-mix(in srgb,var(--color-warning,#b45309) 22%,transparent)}
.grant-round--closed .grant-round__dot{background:var(--scheme-muted,var(--color-muted,#6b6b6b));box-shadow:none}
.grant-round__title{font-size:clamp(1.15rem,1rem + .6vw,1.4rem);line-height:1.25;overflow-wrap:anywhere}
.grant-round__tag{justify-self:start;padding:.1rem .6rem;border-radius:999px;font-size:.85rem;background:color-mix(in srgb,currentColor 9%,transparent)}
.grant-round__period{font-weight:600}
.grant-round__left{font-weight:600}
.grant-round__note,.grant-round--closed .grant-round__dates{color:var(--scheme-muted,var(--color-muted,#555));font-size:.95rem}
.grant-round__text{max-width:60ch}
.grant-round__actions{margin-top:.25rem!important}
.grant-round__actions .button{display:inline-flex;align-items:center;justify-content:center;min-height:2.75rem}
.grant-rounds__more{margin:var(--space-md,1rem) 0 0}
.grants__filters[hidden],.grants__none[hidden],.grants__year[hidden]{display:none}
.grants__filters{display:flex;flex-wrap:wrap;gap:.75rem 1rem;margin:0 0 .5rem}
.grants__filter{display:grid;gap:.25rem;font-weight:600;font-size:.95rem}
.grants__filter select{min-height:2.75rem;min-width:10rem;max-width:100%;font:inherit;font-weight:400;padding:.4rem .6rem}
.grants__count{margin:0 0 .5rem;font-size:.95rem}
.grants__count:empty{display:none}
.grants__years ul{display:flex;flex-wrap:wrap;gap:.25rem .5rem;margin:0 0 var(--space-md,1rem);padding:0;list-style:none}
.grants__years a{display:inline-flex;align-items:center;min-height:2.75rem;min-width:2.75rem;padding:0 .5rem}
.grants__year{margin:0 0 var(--space-lg,2rem)}
.grants__year h3{margin:0 0 .25rem}
.grants__total{margin:0 0 .75rem;color:var(--scheme-muted,var(--color-muted,#555))}
.grants__scroll{overflow-x:auto}
.grants__table{width:100%;border-collapse:collapse}
.grants__table th,.grants__table td{padding:.6rem .5rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--scheme-border,var(--color-border,#d4d4d4))}
.grants__table thead th{font-size:.9rem}
.grants__table tbody th{font-weight:600}
.grants__table .grants__num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.grants__hidden{font-weight:400;font-style:italic;color:var(--scheme-muted,var(--color-muted,#555))}
.grants__privacy,.grants__none,.grants__empty{color:var(--scheme-muted,var(--color-muted,#555));font-size:.95rem}
@media (max-width:599px){.grants__table thead{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.grants__table,.grants__table tbody,.grants__table tr,.grants__table th,.grants__table td{display:block}.grants__table tr{padding:.6rem 0;border-bottom:1px solid var(--scheme-border,var(--color-border,#d4d4d4))}.grants__table th,.grants__table td{border:0;padding:.1rem .5rem}.grants__table td[data-label]::before{content:attr(data-label) ": ";font-weight:600}.grants__table .grants__num{text-align:left}.grants__filter{flex:1 1 100%}.grants__filter select{width:100%}}
.project-details{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,10rem),1fr));gap:var(--space-md);margin:0;padding:var(--space-md) 0;border-block:1px solid var(--scheme-border,var(--color-border))}
.project-details__item{min-width:0}
.project-details dt{margin:0 0 .25rem;font-size:max(12px,.8125rem);font-weight:600;letter-spacing:var(--font-label-tracking,.04em);text-transform:var(--font-label-transform,none);font-family:var(--font-label-family,inherit);color:var(--scheme-muted,var(--color-muted))}
.project-details dd{margin:0;font-size:1rem;overflow-wrap:anywhere}
.project-details__link{margin:var(--space-md) 0 0}
.project-details__link a{display:inline-flex;align-items:center;min-height:44px}
.project-archive{list-style:none;margin:0;padding:0}
.project-archive--cards{display:grid;gap:var(--space-lg);grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr))}
.project-archive__link{color:inherit;text-decoration:none}
.project-archive--cards .project-archive__link{display:grid;grid-template-columns:minmax(0,1fr) auto;align-content:start;column-gap:var(--space-sm);row-gap:.35rem;height:100%}
.project-archive--cards .project-archive__image,.project-archive--cards .project-archive__name,.project-archive--cards .project-archive__excerpt{grid-column:1/-1}
.project-archive--cards .project-archive__year{grid-column:2;text-align:end}
.project-archive--cards .project-archive__image{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--image-radius,var(--radius-md));background:var(--color-surface);margin-bottom:.35rem}
.project-archive__name{font-family:var(--font-heading);font-weight:var(--font-headingWeight,700);font-size:1.2rem;line-height:1.25}
.project-archive__link:hover .project-archive__name,.project-archive__link:focus-visible .project-archive__name{text-decoration:underline;text-underline-offset:.2em}
.project-archive__type,.project-archive__year{font-size:max(12px,.875rem);color:var(--scheme-muted,var(--color-muted))}
.project-archive__excerpt{font-size:.95rem}
.project-archive--list{border-top:1px solid var(--scheme-border,var(--color-border))}
.project-archive--list .project-archive__item{border-bottom:1px solid var(--scheme-border,var(--color-border))}
.project-archive--list .project-archive__link{display:grid;grid-template-columns:4.5rem minmax(0,1fr);grid-template-areas:"img name" "img meta";column-gap:var(--space-md);align-items:center;min-height:4rem;padding:.75rem 0}
.project-archive--list .project-archive__link:not(:has(.project-archive__image)){grid-template-columns:minmax(0,1fr);grid-template-areas:"name" "meta"}
.project-archive--list .project-archive__image{grid-area:img;width:4.5rem;height:3.4rem;object-fit:cover;border-radius:var(--radius-sm)}
.project-archive--list .project-archive__name{grid-area:name;font-size:1.15rem}
.project-archive--list .project-archive__type,.project-archive--list .project-archive__year{grid-area:meta}
.project-archive--list .project-archive__type+.project-archive__year{margin-left:auto}
.project-archive--list .project-archive__type+.project-archive__year::before{content:none}
@media (max-width:599.98px){.project-archive--list .project-archive__link{grid-template-areas:"img name" "img meta"}.project-archive--list .project-archive__type{grid-area:meta}.project-archive--list .project-archive__year{grid-area:auto;grid-column:2;justify-self:start}}
@media (min-width:600px){.project-archive--list .project-archive__link{grid-template-columns:5.5rem minmax(0,2fr) minmax(0,1.2fr) 4rem;grid-template-areas:"img name type year"}.project-archive--list .project-archive__link:not(:has(.project-archive__image)){grid-template-columns:minmax(0,2fr) minmax(0,1.2fr) 4rem;grid-template-areas:"name type year"}.project-archive--list .project-archive__image{width:5.5rem;height:4rem}.project-archive--list .project-archive__type{grid-area:type}.project-archive--list .project-archive__year{grid-area:year;text-align:end;margin:0}.project-archive--list .project-archive__name{font-size:clamp(1.15rem,1rem + .6vw,1.6rem)}}
.project-archive__empty{color:var(--scheme-muted,var(--color-muted))}
.project-next{border-top:1px solid var(--scheme-border,var(--color-border));padding-top:var(--space-lg)}
.project-next__link{display:grid;gap:.35rem;color:inherit;text-decoration:none;min-height:44px}
.project-next__label{font-size:max(12px,.875rem);font-weight:600;letter-spacing:var(--font-label-tracking,.04em);text-transform:var(--font-label-transform,none);color:var(--scheme-muted,var(--color-muted))}
.project-next__title{font-family:var(--font-heading);font-weight:var(--font-headingWeight,700);font-size:clamp(1.6rem,1.1rem + 2.4vw,3.25rem);line-height:1.08;overflow-wrap:anywhere}
.project-next__link:hover .project-next__title,.project-next__link:focus-visible .project-next__title{text-decoration:underline;text-underline-offset:.15em}
.project-next__type{color:var(--scheme-muted,var(--color-muted))}
.project-next__image{width:100%;max-height:28rem;aspect-ratio:16/9;object-fit:cover;border-radius:var(--image-radius,var(--radius-md));margin-top:var(--space-sm)}
.project-next__all{margin:var(--space-md) 0 0}
.project-next__all a{display:inline-flex;align-items:center;min-height:44px}
.trust-badges__heading{margin:0 0 var(--space-sm);text-align:center}
.trust-badges__intro{max-width:60ch;margin:0 auto var(--space-md);text-align:center;color:var(--scheme-muted,var(--color-muted))}
.trust-badges__list{margin:0;padding:0;list-style:none}
.trust-badges__list>.block{min-width:0}
@media (max-width:40rem){.trust-badges--row .trust-badges__list>.block{flex:1 1 100%}}
.trust-badge{display:flex;align-items:center;gap:var(--space-sm);height:100%;padding:.6rem .9rem;border:1px solid var(--scheme-border,var(--color-border,#d5d9e0));border-radius:var(--radius-md,8px);background:var(--scheme-surface,var(--color-surface,transparent));color:inherit}
.trust-badges--cards .trust-badge{padding:var(--space-md)}
.trust-badge__icon{display:inline-flex;flex:none;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:50%;background:color-mix(in srgb,var(--scheme-link,var(--color-primary)) 12%,transparent);color:var(--scheme-link,var(--color-primary))}
.trust-badge__icon .cms-icon{margin:0}
.trust-badge__image{flex:none;width:auto;max-width:6rem;height:2.75rem;object-fit:contain}
.trust-badges--cards .trust-badge__image{height:3.5rem}
.trust-badge__text{display:grid;gap:.1rem;min-width:0}
.trust-badge__name{font-weight:600;line-height:1.3;overflow-wrap:anywhere}
.trust-badge__detail{font-size:.9375rem;color:var(--scheme-muted,var(--color-muted))}
.trust-badge__verify{display:inline-flex;align-items:center;min-height:24px;font-size:.9375rem;color:var(--scheme-link,var(--color-primary));text-decoration:underline;text-underline-offset:.15em}
.trust-badge__verify:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:2px}
.trust-badge__hidden{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
/*! Section designs: layouts adapted from MIT-licensed libraries (HyperUI, Meraki UI,
   Tailblocks, shadcn/ui, Start Bootstrap, daisyUI, Mamba UI, Sailboat UI, Pines UI).
   Notices: THIRD_PARTY_NOTICES.md in the Omasivusto source. */
/* The main heading of a designed card section reads as a section title. */
.section[data-design]:not(.section--text):not(.section--hero)>.section__inner>h2{font-size:clamp(1.7rem,3.2vw,2.5rem);line-height:1.15;letter-spacing:-.015em}
/* Hero designs. Every one keeps the heading, subheading, buttons and image of the
   stacked hero; only their arrangement and size change. */
.section.section--hero[data-design="split"] .hero:not(.hero--overlay),.section.section--hero[data-design="splitReverse"] .hero:not(.hero--overlay){display:grid;gap:var(--space-md);align-items:center;text-align:start}
:is(.section.section--hero[data-design="split"] .hero:not(.hero--overlay),.section.section--hero[data-design="splitReverse"] .hero:not(.hero--overlay),.section.section--hero[data-design="editorial"] .hero:not(.hero--overlay),.section.section--hero[data-design="gradient"] .hero:not(.hero--overlay),.section.section--hero[data-design="spotlight"] .hero:not(.hero--overlay),.section.section--hero[data-design="card"] .hero:not(.hero--overlay)) .hero__heading{margin:0;font-size:var(--font-size-display,clamp(2.1rem,4.6vw,3.9rem));line-height:var(--font-leading-display,1.06);letter-spacing:var(--font-tracking-display,-.02em);overflow-wrap:var(--font-wrap-display,break-word)}
:is(.section.section--hero[data-design="split"] .hero:not(.hero--overlay),.section.section--hero[data-design="splitReverse"] .hero:not(.hero--overlay),.section.section--hero[data-design="editorial"] .hero:not(.hero--overlay),.section.section--hero[data-design="gradient"] .hero:not(.hero--overlay),.section.section--hero[data-design="spotlight"] .hero:not(.hero--overlay),.section.section--hero[data-design="card"] .hero:not(.hero--overlay)) .hero__subheading{margin:0;max-width:36rem;font-size:clamp(1.05rem,1.5vw,1.25rem);line-height:1.55;color:var(--scheme-muted,var(--color-muted));opacity:1}
:is(.section.section--hero[data-design="split"] .hero:not(.hero--overlay),.section.section--hero[data-design="splitReverse"] .hero:not(.hero--overlay),.section.section--hero[data-design="editorial"] .hero:not(.hero--overlay),.section.section--hero[data-design="gradient"] .hero:not(.hero--overlay),.section.section--hero[data-design="spotlight"] .hero:not(.hero--overlay),.section.section--hero[data-design="card"] .hero:not(.hero--overlay))>:is(.hero__actions,.button){margin-top:var(--space-sm)}
:is(.section.section--hero[data-design="split"] .hero:not(.hero--overlay),.section.section--hero[data-design="splitReverse"] .hero:not(.hero--overlay),.section.section--hero[data-design="gradient"] .hero:not(.hero--overlay),.section.section--hero[data-design="spotlight"] .hero:not(.hero--overlay),.section.section--hero[data-design="card"] .hero:not(.hero--overlay)) .button{min-height:44px}
.section.section--hero[data-design="split"] .hero:not(.hero--overlay) .hero__image,.section.section--hero[data-design="splitReverse"] .hero:not(.hero--overlay) .hero__image{width:100%;margin:0 0 var(--space-sm);aspect-ratio:4/3;object-fit:cover;border-radius:var(--card-radius,var(--radius-md));box-shadow:var(--design-shadow,0 1px 2px color-mix(in srgb,var(--color-text) 8%,transparent),0 18px 40px -22px color-mix(in srgb,var(--color-text) 38%,transparent))}
@media (min-width:960px){
.section.section--hero[data-design="split"] .hero:not(.hero--overlay),.section.section--hero[data-design="splitReverse"] .hero:not(.hero--overlay){grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);grid-template-rows:1fr auto auto auto 1fr;column-gap:clamp(2rem,5vw,5rem);row-gap:var(--space-md)}
.section.section--hero[data-design="split"] .hero:not(.hero--overlay)>*{grid-column:1}
.section.section--hero[data-design="split"] .hero:not(.hero--overlay) .hero__image{grid-column:2;grid-row:1/-1;margin:0;aspect-ratio:5/4}
.section.section--hero[data-design="split"] .hero:not(.hero--overlay) .hero__visual{grid-column:2;grid-row:1/-1;margin:0}
:is(.section.section--hero[data-design="split"] .hero:not(.hero--overlay),.section.section--hero[data-design="splitReverse"] .hero:not(.hero--overlay)) .hero__visual.card-stack:not(.card-stack--pill){align-self:stretch;height:auto;min-height:var(--cs-min)}
.section.section--hero[data-design="splitReverse"] .hero:not(.hero--overlay){grid-template-columns:minmax(0,1fr) minmax(0,1.05fr)}
.section.section--hero[data-design="splitReverse"] .hero:not(.hero--overlay)>*{grid-column:2}
.section.section--hero[data-design="splitReverse"] .hero:not(.hero--overlay) .hero__image{grid-column:1;grid-row:1/-1;margin:0;aspect-ratio:5/4}
.section.section--hero[data-design="splitReverse"] .hero:not(.hero--overlay) .hero__visual{grid-column:1;grid-row:1/-1;margin:0}
:is(.section.section--hero[data-design="split"] .hero:not(.hero--overlay),.section.section--hero[data-design="splitReverse"] .hero:not(.hero--overlay)) .hero__heading{grid-row:2}
:is(.section.section--hero[data-design="split"] .hero:not(.hero--overlay),.section.section--hero[data-design="splitReverse"] .hero:not(.hero--overlay)) .hero__subheading{grid-row:3}
:is(.section.section--hero[data-design="split"] .hero:not(.hero--overlay),.section.section--hero[data-design="splitReverse"] .hero:not(.hero--overlay))>:is(.hero__actions,.button){grid-row:4;align-self:start;justify-self:start}
:is(.section.section--hero[data-design="split"] .hero:not(.hero--overlay),.section.section--hero[data-design="splitReverse"] .hero:not(.hero--overlay)):not(:has(.hero__image,.hero__visual)){grid-template-columns:minmax(0,1fr)}
}
/* "Kuva puhelimella: painikkeiden jälkeen" (mobileImage last): stacked, the picture comes after
   the buttons (the img sits in a display:contents picture); side by side it has its own column
   and row, so the order does not move it. */
:is(.section.section--hero[data-design="split"] .hero:not(.hero--overlay),.section.section--hero[data-design="splitReverse"] .hero:not(.hero--overlay)).hero--img-last :is(.hero__image,.hero__visual,.hero__figure){order:1;margin:0}
.section.section--hero[data-design="gradient"] .hero:not(.hero--overlay){display:flex;flex-direction:column;align-items:center;gap:var(--space-md);padding:clamp(2.5rem,8vw,6rem) clamp(1.25rem,5vw,4rem) clamp(2rem,5vw,4rem);text-align:center;border-radius:calc(var(--card-radius,var(--radius-md))*1.5);overflow:hidden;background:radial-gradient(120% 90% at 0% 0%,color-mix(in srgb,var(--color-primary) 24%,transparent),transparent 60%),radial-gradient(90% 80% at 100% 100%,color-mix(in srgb,var(--color-secondary,var(--color-primary)) 18%,transparent),transparent 60%),var(--scheme-surface,var(--color-surface))}
.section.section--hero[data-design="gradient"] .hero:not(.hero--overlay) .hero__heading{max-width:18ch;font-size:var(--font-size-display,clamp(2.3rem,5.4vw,4.4rem));line-height:var(--font-leading-display,1.04)}
.section.section--hero[data-design="gradient"] .hero:not(.hero--overlay) .hero__subheading{max-width:40rem;color:color-mix(in srgb,var(--scheme-muted,var(--color-muted)) 55%,var(--scheme-fg,var(--color-text)))}
.section.section--hero[data-design="gradient"] .hero:not(.hero--overlay) .hero__actions{justify-content:center}
.section.section--hero[data-design="gradient"] .hero:not(.hero--overlay) .hero__image{order:10;width:100%;max-width:58rem;margin:var(--space-lg) 0 0;aspect-ratio:16/9;object-fit:cover;border-radius:var(--card-radius,var(--radius-md));box-shadow:var(--design-shadow,0 1px 2px color-mix(in srgb,var(--color-text) 8%,transparent),0 18px 40px -22px color-mix(in srgb,var(--color-text) 38%,transparent))}
.section.section--hero[data-design="editorial"] .hero:not(.hero--overlay){display:grid;gap:var(--space-md);padding-top:var(--space-lg);text-align:start;border-top:3px solid var(--scheme-fg,var(--color-text))}
.section.section--hero[data-design="editorial"] .hero:not(.hero--overlay) .hero__heading{max-width:13ch;font-size:var(--font-size-display,clamp(2.6rem,7.2vw,6.2rem));line-height:var(--font-leading-display,.98);letter-spacing:var(--font-tracking-display,-.035em)}
.section.section--hero[data-design="editorial"] .hero:not(.hero--overlay)>:is(.hero__actions,.button){justify-self:start}
.section.section--hero[data-design="editorial"] .hero:not(.hero--overlay) .hero__image{order:10;width:100%;margin:var(--space-sm) 0 0;aspect-ratio:16/9;object-fit:cover;border-radius:var(--image-radius,var(--radius-md))}
@media (min-width:960px){
.section.section--hero[data-design="editorial"] .hero:not(.hero--overlay){grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);column-gap:clamp(2rem,5vw,5rem);align-items:end}
.section.section--hero[data-design="editorial"] .hero:not(.hero--overlay) .hero__heading{grid-column:1;grid-row:1/span 2}
.section.section--hero[data-design="editorial"] .hero:not(.hero--overlay) .hero__subheading{grid-column:2;grid-row:1;align-self:end}
.section.section--hero[data-design="editorial"] .hero:not(.hero--overlay)>:is(.hero__actions,.button){grid-column:2;grid-row:2;align-self:start;justify-self:start}
.section.section--hero[data-design="editorial"] .hero:not(.hero--overlay) .hero__image{grid-column:1/-1;grid-row:3;aspect-ratio:21/9;margin-top:var(--space-lg)}
}
/* Card: the photo fills the hero and the text sits on a card in the section's own colours.
   The card is the hero's ::before, placed in the grid cells of the text. A lone button keeps its
   own colours (the text colour on a primary button failed the contrast audit, bikeshop 1.11.2026). */
.section.section--hero[data-design="card"] .hero:not(.hero--overlay){position:relative;isolation:isolate;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(10rem,1fr) auto auto auto;min-height:clamp(30rem,58vw,44rem);padding:clamp(.75rem,3vw,2.5rem);text-align:start;border-radius:calc(var(--card-radius,var(--radius-md))*1.25);overflow:hidden;background:var(--scheme-surface,var(--color-surface))}
.section.section--hero[data-design="card"] .hero:not(.hero--overlay)::before{content:"";grid-column:1;grid-row:2/5;background:var(--scheme-bg,var(--color-background));border-radius:var(--card-radius,var(--radius-md));box-shadow:var(--design-shadow,0 1px 2px color-mix(in srgb,var(--color-text) 8%,transparent),0 18px 40px -22px color-mix(in srgb,var(--color-text) 38%,transparent))}
.section.section--hero[data-design="card"] .hero:not(.hero--overlay) .hero__image{position:absolute;inset:0;z-index:-1;width:100%;height:100%;margin:0;object-fit:cover;border-radius:0}
.section.section--hero[data-design="card"] .hero:not(.hero--overlay)>:not(.hero__image,.button){grid-column:1;padding-inline:clamp(1.25rem,3vw,2.25rem);color:var(--scheme-fg,var(--color-text))}
.section.section--hero[data-design="card"] .hero:not(.hero--overlay) .hero__heading{grid-row:2;padding-top:clamp(1.25rem,3vw,2.25rem);font-size:var(--font-size-display,clamp(1.9rem,3.6vw,3rem))}
.section.section--hero[data-design="card"] .hero:not(.hero--overlay) .hero__subheading{grid-row:3;padding-top:var(--space-sm)}
.section.section--hero[data-design="card"] .hero:not(.hero--overlay)>.button{grid-column:1}
.section.section--hero[data-design="card"] .hero:not(.hero--overlay)>:is(.hero__actions,.button){grid-row:4;justify-self:start;margin:var(--space-md) clamp(1.25rem,3vw,2.25rem) clamp(1.25rem,3vw,2.25rem)}
.section.section--hero[data-design="card"] .hero:not(.hero--overlay)>.button{padding-inline:var(--button-paddingX,30px)}
.section.section--hero[data-design="card"] .hero:not(.hero--overlay) .hero__actions{padding-inline:0}
@media (min-width:960px){.section.section--hero[data-design="card"] .hero:not(.hero--overlay){grid-template-columns:minmax(0,34rem) minmax(0,1fr)}}
.section.section--hero[data-design="spotlight"] .hero:not(.hero--overlay){display:flex;flex-direction:column;align-items:center;gap:var(--space-md);text-align:center}
.section.section--hero[data-design="spotlight"] .hero:not(.hero--overlay) .hero__heading{max-width:20ch}
.section.section--hero[data-design="spotlight"] .hero:not(.hero--overlay) .hero__actions{justify-content:center}
.section.section--hero[data-design="spotlight"] .hero:not(.hero--overlay) .hero__image{order:10;width:100%;max-width:62rem;margin:var(--space-lg) 0 0;aspect-ratio:16/9;object-fit:cover;border-radius:var(--card-radius,var(--radius-md));box-shadow:0 0 0 .6rem color-mix(in srgb,var(--color-primary) 14%,transparent),var(--design-shadow,0 1px 2px color-mix(in srgb,var(--color-text) 8%,transparent),0 18px 40px -22px color-mix(in srgb,var(--color-text) 38%,transparent))}
.section--hero .hero-tasks{display:block;margin-top:var(--space-lg)}
.section--hero .hero-tasks__grid:empty{display:none}
.section--hero .hero-tasks .icon-box{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;column-gap:.85rem;row-gap:.1rem;height:100%;min-height:4.25rem;margin:0;padding:.85rem 1rem;text-align:start;background:var(--scheme-bg,var(--color-background));color:var(--scheme-fg,var(--color-text));border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md));box-shadow:var(--design-shadow,0 1px 2px color-mix(in srgb,var(--color-text) 8%,transparent),0 18px 40px -22px color-mix(in srgb,var(--color-text) 38%,transparent));transition:border-color .15s ease}
.section--hero .hero-tasks .icon-box:hover{border-color:var(--scheme-link,var(--color-primary))}
.section--hero .hero-tasks .icon-box:has(.icon-box__link a:focus-visible){outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:2px}
.section--hero .hero-tasks .icon-box__icon{grid-column:1;grid-row:1/span 2;display:flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;margin:0;border-radius:var(--radius-md);background:color-mix(in srgb,var(--color-primary) 12%,transparent);color:var(--scheme-link,var(--color-primary))}
.section--hero .hero-tasks .icon-box:has(.icon-box__link) .icon-box__title{display:none}
.section--hero .hero-tasks :is(.icon-box__title,.icon-box__link){grid-column:2;grid-row:1;margin:0;font-size:1.05rem;line-height:1.25;-webkit-hyphens:auto;hyphens:auto;overflow-wrap:anywhere}
.section--hero .hero-tasks .icon-box__link a{font-weight:700;color:inherit;text-decoration:none}
.section--hero .hero-tasks .icon-box__link a:focus-visible{outline:none;box-shadow:none}
.section--hero .hero-tasks .icon-box__link a::after{content:"";position:absolute;inset:0;border-radius:inherit}
.section--hero .hero-tasks .icon-box__body{grid-column:2;grid-row:2;margin:0;font-size:.875rem;line-height:1.4;color:var(--scheme-muted,var(--color-muted))}
.section--hero .hero-tasks .icon-box__body p{margin:0}
.section--hero .hero-tasks .icon-box__body:empty,.section--hero .hero-tasks .icon-box__body:has(>p:only-child:empty){display:none}
.section--hero .hero-tasks .icon-box:has(.icon-box__link)::after{content:"";grid-column:3;grid-row:1/span 2;width:.55rem;height:.55rem;margin-right:.2rem;border-top:2px solid var(--scheme-link,var(--color-primary));border-right:2px solid var(--scheme-link,var(--color-primary));transform:rotate(45deg)}
@media (prefers-reduced-motion:reduce){.section--hero .hero-tasks .icon-box{transition:none}}
/* "Pääkuva ja tehtäväkortit": the picture fills a band behind the heading, under a veil of the
   text colour, and the cards rise over the band's lower edge (pohjantahti, keravanenergia,
   akseli in analyysi-b2c.md K5). Without a picture the band is the section's surface. */
.section.section--hero[data-design="tasks"] .hero:not(.hero--overlay){position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);min-height:clamp(16rem,36vw,26rem);padding:clamp(2.25rem,6vw,4.5rem) clamp(1.25rem,5vw,4rem) clamp(3.5rem,8vw,6.5rem);text-align:center;border-radius:calc(var(--card-radius,var(--radius-md))*1.25);overflow:hidden;background:var(--scheme-surface,var(--color-surface))}
.section.section--hero[data-design="tasks"] .hero:not(.hero--overlay) .hero__image{position:absolute;inset:0;z-index:-2;width:100%;height:100%;margin:0;object-fit:cover;border-radius:0}
.section.section--hero[data-design="tasks"] .hero:not(.hero--overlay):has(.hero__image)::before{content:"";position:absolute;inset:0;z-index:-1;background:color-mix(in srgb,var(--color-text) 62%,transparent)}
.section.section--hero[data-design="tasks"] .hero:not(.hero--overlay):has(.hero__image) :is(.hero__heading,.hero__subheading){color:var(--color-background)}
.section.section--hero[data-design="tasks"] .hero:not(.hero--overlay) .hero__heading{max-width:20ch;margin:0;font-size:var(--font-size-display,clamp(2rem,4.6vw,3.6rem));line-height:var(--font-leading-display,1.08)}
.section.section--hero[data-design="tasks"] .hero:not(.hero--overlay) .hero__subheading{max-width:40rem;margin:0;font-size:clamp(1.05rem,1.5vw,1.25rem);line-height:1.5;opacity:1}
.section.section--hero[data-design="tasks"] .hero:not(.hero--overlay) .hero__actions{justify-content:center}
.section.section--hero[data-design="tasks"] .hero:not(.hero--overlay)+.hero-tasks{position:relative;z-index:1;margin:calc(-1*clamp(2rem,5vw,4rem)) clamp(.5rem,3vw,2.5rem) 0}
/* Icon boxes. */
.section.section--iconBoxes[data-design="cards"] .icon-box{height:100%;padding:clamp(1.25rem,2.5vw,2rem);text-align:start;background:var(--scheme-bg,var(--color-background));border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md));box-shadow:var(--design-shadow,0 1px 2px color-mix(in srgb,var(--color-text) 8%,transparent),0 18px 40px -22px color-mix(in srgb,var(--color-text) 38%,transparent))}
:is(.section.section--iconBoxes[data-design="cards"],.section.section--iconBoxes[data-design="circles"]) .icon-box__icon{display:flex;align-items:center;justify-content:center;width:3rem;height:3rem;margin:0 0 var(--space-md);border-radius:var(--radius-md);background:color-mix(in srgb,var(--color-primary) 12%,transparent);color:var(--scheme-link,var(--color-primary))}
.section.section--iconBoxes[data-design="cards"] .icon-box__title,.section.section--iconBoxes[data-design="minimal"] .icon-box__title,.section.section--iconBoxes[data-design="numbered"] .icon-box__title,.section.section--iconBoxes[data-design="split"] .icon-box__title{font-size:1.15rem}
.section.section--iconBoxes[data-design="minimal"] .icon-box,.section.section--iconBoxes[data-design="split"] .icon-box{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:var(--space-md);padding:0;text-align:start;background:none;border-radius:0}
:is(.section.section--iconBoxes[data-design="minimal"],.section.section--iconBoxes[data-design="split"]) .icon-box__icon{grid-row:1/span 3;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;margin:0;border-radius:50%;background:var(--color-primary);color:var(--color-onPrimary)}
:is(.section.section--iconBoxes[data-design="minimal"],.section.section--iconBoxes[data-design="split"]) :is(.icon-box__title,.icon-box__body,.icon-box__link){grid-column:2}
.section.section--iconBoxes[data-design="numbered"] .icon-boxes{counter-reset:icon-box}
.section.section--iconBoxes[data-design="numbered"] .icon-box{counter-increment:icon-box;padding:var(--space-md) 0 0;text-align:start;background:none;border-top:2px solid var(--scheme-fg,var(--color-text));border-radius:0}
.section.section--iconBoxes[data-design="numbered"] .icon-box__icon{display:none}
.section.section--iconBoxes[data-design="numbered"] .icon-box::before{content:counter(icon-box,decimal-leading-zero);display:block;margin-bottom:var(--space-sm);font-family:var(--font-heading);font-size:2.4rem;font-weight:700;line-height:1;color:var(--scheme-link,var(--color-primary))}
.section.section--iconBoxes[data-design="circles"] .icon-box{background:none;padding:var(--space-sm)}
.section.section--iconBoxes[data-design="circles"] .icon-box__icon{width:4.5rem;height:4.5rem;margin:0 auto var(--space-md);border-radius:50%;box-shadow:0 0 0 .5rem color-mix(in srgb,var(--color-primary) 6%,transparent)}
.section.section--iconBoxes[data-design="circles"] .icon-box__icon .cms-icon{width:1.75rem;height:1.75rem}
/* "Pikalinkit": compact cards in a row under the hero, the whole card is the link. Two per
   row on a phone, the section's columns from 960 px. The link takes the title's place, so the
   name is read once; a card without a link keeps its title. */
.section.section--iconBoxes[data-design="links"] .icon-box{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;column-gap:.75rem;row-gap:.15rem;height:100%;min-height:4rem;padding:.85rem 1rem;text-align:start;background:var(--scheme-bg,var(--color-background));border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md));transition:border-color .15s ease}
.section.section--iconBoxes[data-design="links"] .icon-box:hover{border-color:var(--scheme-link,var(--color-primary))}
.section.section--iconBoxes[data-design="links"] .icon-box:has(.icon-box__link a:focus-visible){outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:2px}
.section.section--iconBoxes[data-design="links"] .icon-box__icon{grid-row:1/span 2;display:flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;margin:0;border-radius:var(--radius-md);background:color-mix(in srgb,var(--color-primary) 12%,transparent);color:var(--scheme-link,var(--color-primary))}
.section.section--iconBoxes[data-design="links"] .icon-box:has(.icon-box__link) .icon-box__title{display:none}
.section.section--iconBoxes[data-design="links"] .icon-box__title,.section.section--iconBoxes[data-design="links"] .icon-box__link{grid-column:2;grid-row:1;margin:0;font-size:1.05rem;line-height:1.25}
.section.section--iconBoxes[data-design="links"] .icon-box__link a{font-weight:700;color:inherit;text-decoration:none}
.section.section--iconBoxes[data-design="links"] .icon-box__link a:focus-visible{outline:none;box-shadow:none}
.section.section--iconBoxes[data-design="links"] .icon-box__link a::after{content:"";position:absolute;inset:0;border-radius:inherit}
.section.section--iconBoxes[data-design="links"] .icon-box__body{grid-column:2;grid-row:2;margin:0;font-size:.875rem;color:var(--scheme-muted,var(--color-muted))}
.section.section--iconBoxes[data-design="links"] .icon-box__body p{margin:0}
@media (max-width:959.98px){.section.section--iconBoxes[data-design="links"] .icon-boxes{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Two per row on a phone (the designers' 2x2, PUUTTEET_SUUNNITTELIJAT_2026-10-28.md). Beside
   the icon a card of 165 px left the text 80 px, and long Finnish words such as
   "Muuttoilmoitus" or "Kalastusluvat" ran over the card's edge (taloyhtio audit 1.11.2026).
   Under 560 px the icon goes above the text, so the text gets the card's whole width; a word
   that still does not fit is hyphenated by the page's language, broken as a last resort.
   One per row only under 360 px. */
.section.section--iconBoxes[data-design="links"] .icon-box__link,.section.section--iconBoxes[data-design="links"] .icon-box__title,.section.section--iconBoxes[data-design="links"] .icon-box__body{-webkit-hyphens:auto;hyphens:auto;overflow-wrap:anywhere}
@media (max-width:559.98px){
.section.section--iconBoxes[data-design="links"] .icon-box{grid-template-columns:minmax(0,1fr);align-items:start;align-content:start;row-gap:.2rem;padding:.75rem}
.section.section--iconBoxes[data-design="links"] .icon-box__icon{grid-row:1;width:2.25rem;height:2.25rem;margin-bottom:.35rem}
.section.section--iconBoxes[data-design="links"] .icon-box__title,.section.section--iconBoxes[data-design="links"] .icon-box__link,.section.section--iconBoxes[data-design="links"] .icon-box__body{grid-column:1}
.section.section--iconBoxes[data-design="links"] .icon-box__title,.section.section--iconBoxes[data-design="links"] .icon-box__link{grid-row:2;font-size:1rem}
.section.section--iconBoxes[data-design="links"] .icon-box__body{grid-row:3;font-size:.8125rem}
}
@media (max-width:359.98px){.section.section--iconBoxes[data-design="links"] .icon-boxes{grid-template-columns:minmax(0,1fr)}}
@media (prefers-reduced-motion:reduce){.section.section--iconBoxes[data-design="links"] .icon-box{transition:none}}
/* Compact list: a small icon beside a short name, two columns on a phone (a venue's equipment). */
.section.section--iconBoxes[data-design="compact"] .icon-boxes{row-gap:.5rem}
.section.section--iconBoxes[data-design="compact"] .icon-box{display:flex;align-items:center;gap:.6rem;padding:0;text-align:start;background:none}
.section.section--iconBoxes[data-design="compact"] .icon-box__icon{display:flex;flex:none;margin:0;color:var(--scheme-link,var(--color-primary))}
.section.section--iconBoxes[data-design="compact"] .icon-box__icon .cms-icon{width:1.35rem;height:1.35rem}
.section.section--iconBoxes[data-design="compact"] .icon-box__title{margin:0;font-size:1rem;font-weight:400;overflow-wrap:anywhere}
.section.section--iconBoxes[data-design="compact"] .icon-box__body{margin:0 0 0 .4rem;color:var(--scheme-muted,var(--color-muted));font-size:.9rem}
.section.section--iconBoxes[data-design="compact"] .icon-box__body:empty{display:none}
@media (max-width:639.98px){.section.section--iconBoxes[data-design="compact"] .icon-boxes{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:960px){
.section.section--iconBoxes[data-design="split"]>.section__inner:has(>h2){display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);column-gap:clamp(2rem,5vw,5rem);align-items:start}
.section.section--iconBoxes[data-design="split"]>.section__inner>h2{font-size:clamp(1.8rem,3vw,2.6rem);line-height:1.1}
.section.section--iconBoxes[data-design="split"] .icon-boxes{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:var(--space-lg)}
}
/* Pricing designs. */
:is(.section.section--pricing[data-design="cards"],.section.section--pricing[data-design="bordered"],.section.section--pricing[data-design="rows"],.section.section--pricing[data-design="gradient"]) .pricing__intro{color:var(--scheme-muted,var(--color-muted))}
:is(.section.section--pricing[data-design="cards"],.section.section--pricing[data-design="bordered"],.section.section--pricing[data-design="gradient"]) .pricing-plan__price{font-size:clamp(2.2rem,3.4vw,2.9rem);letter-spacing:-.02em}
:is(.section.section--pricing[data-design="cards"],.section.section--pricing[data-design="bordered"],.section.section--pricing[data-design="rows"],.section.section--pricing[data-design="gradient"]) .pricing-plan__features ul{list-style:none;margin:0;padding:0;display:grid;gap:.55em}
:is(.section.section--pricing[data-design="cards"],.section.section--pricing[data-design="bordered"],.section.section--pricing[data-design="rows"],.section.section--pricing[data-design="gradient"]) .pricing-plan__features li{position:relative;padding-left:1.7em}
:is(.section.section--pricing[data-design="cards"],.section.section--pricing[data-design="bordered"],.section.section--pricing[data-design="rows"],.section.section--pricing[data-design="gradient"]) .pricing-plan__features li::before{content:"";position:absolute;left:.2em;top:.38em;width:.8em;height:.45em;border-left:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);color:var(--scheme-link,var(--color-primary))}
:is(.section.section--pricing[data-design="cards"],.section.section--pricing[data-design="bordered"],.section.section--pricing[data-design="rows"],.section.section--pricing[data-design="gradient"]) .pricing-plan .button{display:flex;align-items:center;justify-content:center;min-height:44px}
.section.section--pricing[data-design="cards"] .pricing-plan{padding:clamp(1.5rem,3vw,2.25rem);background:var(--scheme-bg,var(--color-background));color:inherit;border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md));box-shadow:var(--design-shadow,0 1px 2px color-mix(in srgb,var(--color-text) 8%,transparent),0 18px 40px -22px color-mix(in srgb,var(--color-text) 38%,transparent))}
.section.section--pricing[data-design="cards"] .pricing-plan--featured{border:2px solid var(--color-primary);box-shadow:0 24px 48px -24px color-mix(in srgb,var(--color-primary) 55%,transparent)}
:is(.section.section--pricing[data-design="cards"],.section.section--pricing[data-design="bordered"],.section.section--pricing[data-design="rows"]) .pricing-plan--featured .button{background:var(--color-primary);color:var(--color-onPrimary)}
:is(.section.section--pricing[data-design="cards"],.section.section--pricing[data-design="bordered"],.section.section--pricing[data-design="rows"]) .pricing-plan--featured .pricing-plan__name{color:color-mix(in srgb,var(--scheme-link,var(--color-primary)) 78%,var(--scheme-fg,var(--color-text)))}
/* The badge of a highlighted plan (base-css.ts) on a light plan; on the rows it stays above the name. */
:is(.section.section--pricing[data-design="cards"],.section.section--pricing[data-design="bordered"],.section.section--pricing[data-design="rows"]) .pricing-plan__badge{background:var(--color-primary);color:var(--color-onPrimary)}
.section.section--pricing[data-design="rows"] .pricing-plan__badge{position:static;transform:none}
:is(.section.section--pricing[data-design="cards"],.section.section--pricing[data-design="bordered"],.section.section--pricing[data-design="rows"])[data-color-scheme="accent"] .pricing-plan__badge{background:var(--color-onPrimary);color:var(--color-primary)}
/* The highlighted plan's button on an accent section is inverted like its badge: primary on the
   primary background barely showed (owner 7.11.2026). */
:is(.section.section--pricing[data-design="cards"],.section.section--pricing[data-design="bordered"],.section.section--pricing[data-design="rows"])[data-color-scheme="accent"] .pricing-plan--featured .button{background:var(--color-onPrimary);color:var(--color-primary)}
.section.section--pricing[data-design="bordered"] .pricing-plan{padding:clamp(1.5rem,3vw,2rem);background:transparent;color:inherit;border:1px solid var(--scheme-border,var(--color-border));border-top:4px solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md));box-shadow:none}
.section.section--pricing[data-design="bordered"] .pricing-plan--featured{border-top-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 5%,transparent)}
.section.section--pricing[data-design="rows"] .pricing{grid-template-columns:minmax(0,1fr);row-gap:0}
.section.section--pricing[data-design="rows"] .pricing-plan{gap:var(--space-xs);padding:var(--space-md) 0;background:none;color:inherit;border:0;border-bottom:1px solid var(--scheme-border,var(--color-border));border-radius:0;box-shadow:none}
.section.section--pricing[data-design="rows"] .pricing>.block:first-child .pricing-plan{border-top:1px solid var(--scheme-border,var(--color-border))}
.section.section--pricing[data-design="rows"] .pricing-plan__price{font-size:1.6rem}
.section.section--pricing[data-design="rows"] .pricing-plan--featured{padding-left:var(--space-md);border-left:4px solid var(--color-primary);background:color-mix(in srgb,var(--color-primary) 5%,transparent)}
@media (min-width:960px){
.section.section--pricing[data-design="rows"] .pricing-plan{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.7fr) minmax(7rem,auto) minmax(11rem,auto);column-gap:var(--space-lg);align-items:center}
.section.section--pricing[data-design="rows"] .pricing-plan__name{grid-column:1;grid-row:1}
.section.section--pricing[data-design="rows"] .pricing-plan__features{grid-column:2;grid-row:1}
.section.section--pricing[data-design="rows"] .pricing-plan__features ul{grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));column-gap:var(--space-md)}
.section.section--pricing[data-design="rows"] .pricing-plan__price{grid-column:3;grid-row:1;text-align:end}
.section.section--pricing[data-design="rows"] .pricing-plan__cta{grid-column:4;grid-row:1;margin:0}
.section.section--pricing[data-design="rows"] .pricing-plan__badge{grid-column:1;grid-row:1;align-self:end}
.section.section--pricing[data-design="rows"] .pricing-plan--featured>.pricing-plan__name{grid-row:2;align-self:start}
.section.section--pricing[data-design="rows"] .pricing-plan--featured>:is(.pricing-plan__features,.pricing-plan__price,.pricing-plan__cta){grid-row:1/span 2}
}
.section.section--pricing[data-design="gradient"] .pricing-plan{padding:clamp(1.5rem,3vw,2.25rem);background:transparent;color:inherit;border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md));box-shadow:none}
.section.section--pricing[data-design="gradient"] .pricing-plan--featured{border-color:transparent;background:linear-gradient(150deg,var(--color-primary),color-mix(in srgb,var(--color-primary) 62%,var(--color-text)));color:var(--color-onPrimary);box-shadow:0 24px 48px -24px color-mix(in srgb,var(--color-primary) 60%,transparent)}
.section.section--pricing[data-design="gradient"] .pricing-plan--featured li::before{color:inherit}
.section.section--pricing[data-design="gradient"] .pricing-plan--featured .button{background:var(--color-onPrimary);color:var(--color-primary)}
/* Accordion (FAQ) designs. */
:is(.section.section--accordion[data-design="cards"],.section.section--accordion[data-design="split"],.section.section--accordion[data-design="boxed"],.section.section--accordion:not([data-design])) .accordion__trigger::after{content:"";flex:none;width:.55rem;height:.55rem;margin-right:.25rem;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-25%) rotate(45deg);transition:transform .2s ease}
:is(.section.section--accordion[data-design="cards"],.section.section--accordion[data-design="split"],.section.section--accordion[data-design="boxed"],.section.section--accordion:not([data-design])) .accordion__item[open]>.accordion__trigger::after{transform:translateY(15%) rotate(-135deg)}
:is(.section.section--accordion[data-design="cards"],.section.section--accordion[data-design="split"],.section.section--accordion[data-design="minimal"],.section.section--accordion[data-design="boxed"]) .accordion__trigger{min-height:44px}
:is(.section.section--accordion[data-design="cards"],.section.section--accordion[data-design="split"],.section.section--accordion[data-design="minimal"],.section.section--accordion[data-design="boxed"]) .accordion__trigger:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:2px;border-radius:var(--radius-sm)}
:is(.section.section--accordion[data-design="cards"],.section.section--accordion[data-design="split"],.section.section--accordion[data-design="minimal"],.section.section--accordion[data-design="boxed"]) .accordion__panel{color:var(--scheme-muted,var(--color-muted))}
.section.section--accordion[data-design="cards"] .accordion{display:grid;gap:var(--space-sm);border:0}
.section.section--accordion[data-design="cards"] .accordion__item{padding:0 var(--space-md);background:var(--scheme-bg,var(--color-background));border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md));box-shadow:0 1px 2px color-mix(in srgb,var(--color-text) 6%,transparent)}
.section.section--accordion[data-design="cards"] .accordion__item[open]{border-color:color-mix(in srgb,var(--color-primary) 45%,transparent)}
.section.section--accordion[data-design="cards"] .accordion__trigger{padding:var(--space-md) 0}
.section.section--accordion[data-design="cards"]>.section__inner>h2{text-align:center;margin-bottom:var(--space-lg)}
.section.section--accordion[data-design="cards"]>.section__inner{max-width:min(var(--size-contentMaxWidth),48rem)}
@media (min-width:960px){
.section.section--accordion[data-design="split"]>.section__inner:has(>h2){display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.8fr);column-gap:clamp(2rem,5vw,5rem);align-items:start}
.section.section--accordion[data-design="split"]>.section__inner>h2{position:sticky;top:var(--space-lg);font-size:clamp(1.8rem,3vw,2.6rem);line-height:1.1}
}
.section.section--accordion[data-design="split"] .accordion{border-top:1px solid var(--scheme-border,var(--color-border))}
.section.section--accordion[data-design="split"] .accordion__item{border-bottom:1px solid var(--scheme-border,var(--color-border))}
.section.section--accordion[data-design="split"] .accordion__trigger{padding:var(--space-md) 0;font-size:1.05rem}
.section.section--accordion[data-design="minimal"] .accordion{border:0}
.section.section--accordion[data-design="minimal"] .accordion__item{border-bottom:1px solid var(--scheme-border,var(--color-border))}
.section.section--accordion[data-design="minimal"] .accordion__trigger{padding:var(--space-md) 0;font-family:var(--font-heading);font-size:clamp(1.1rem,1.8vw,1.35rem)}
.section.section--accordion[data-design="minimal"] .accordion__trigger::after{content:"+" / "";flex:none;display:grid;place-items:center;width:2rem;height:2rem;border-radius:50%;background:color-mix(in srgb,var(--color-primary) 12%,transparent);color:var(--scheme-link,var(--color-primary));font-size:1.25rem;line-height:1}
.section.section--accordion[data-design="minimal"] .accordion__item[open]>.accordion__trigger::after{content:"−" / ""}
.section.section--accordion[data-design="boxed"] .accordion{border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md));overflow:hidden;background:var(--scheme-bg,var(--color-background))}
.section.section--accordion[data-design="boxed"] .accordion__item{padding:0 var(--space-md);border-bottom:1px solid var(--scheme-border,var(--color-border))}
.section.section--accordion[data-design="boxed"] .accordion>.block:last-child .accordion__item{border-bottom:0}
.section.section--accordion[data-design="boxed"] .accordion__item[open]{background:var(--scheme-surface,var(--color-surface))}
.section.section--accordion[data-design="boxed"] .accordion__trigger{padding:var(--space-md) 0}
/* Call to action designs. They override the section's variant (plain, card, accent). */
:is(.section.section--cta[data-design="gradient"],.section.section--cta[data-design="bold"],.section.section--cta[data-design="outline"]) .cta__heading{font-size:clamp(1.8rem,3.6vw,3rem);line-height:1.1;letter-spacing:-.015em}
.section.section--cta[data-design="gradient"] .cta{padding:clamp(2rem,6vw,4.5rem);border-radius:calc(var(--card-radius,var(--radius-md))*1.25);background:radial-gradient(80% 120% at 100% 0%,color-mix(in srgb,var(--color-onPrimary) 16%,transparent),transparent 60%),linear-gradient(135deg,var(--color-primary),color-mix(in srgb,var(--color-primary) 60%,var(--color-text)));color:var(--color-onPrimary)}
.section.section--cta[data-design="gradient"] .cta__body{color:inherit;opacity:.92}
.section.section--cta[data-design="gradient"] .action-button:not(.action-button--second){background:var(--color-onPrimary);color:var(--color-primary)}
.section.section--cta[data-design="gradient"] .action-button:focus-visible{outline-color:var(--color-onPrimary)}
.section.section--cta[data-design="bold"] .cta{align-items:flex-start;padding:var(--space-lg) 0 0;text-align:start;background:none;color:inherit;border:0;border-top:4px solid var(--color-primary);border-radius:0}
.section.section--cta[data-design="bold"] .cta__heading{max-width:18ch;font-size:clamp(2rem,5vw,3.8rem);line-height:1.02}
.section.section--cta[data-design="bold"] .cta__actions{justify-content:flex-start}
.section.section--cta[data-design="bold"] .action-button:not(.action-button--second){background:var(--color-primary);color:var(--color-onPrimary)}
@media (min-width:960px){.section.section--cta[data-design="bold"] .cta{flex-direction:row;align-items:flex-end;justify-content:space-between;gap:var(--space-xl)}.section.section--cta[data-design="bold"] .cta__actions{flex:none}}
.section.section--cta[data-design="outline"] .cta{padding:clamp(1.75rem,5vw,3.5rem);background:color-mix(in srgb,var(--color-primary) 5%,transparent);color:inherit;border:2px dashed color-mix(in srgb,var(--color-primary) 45%,transparent);border-radius:var(--card-radius,var(--radius-md))}
.section.section--cta[data-design="outline"] .cta__body{color:var(--scheme-muted,var(--color-muted));opacity:1}
.section.section--cta[data-design="outline"] .action-button:not(.action-button--second){background:var(--color-primary);color:var(--color-onPrimary)}
/* Logo cloud designs (grid display). */
.section.section--logoCloud[data-design="tiles"] .logo-cloud--grid .logo-item{min-height:5.5rem;padding:var(--space-md);background:var(--scheme-surface,var(--color-surface));border-radius:var(--card-radius,var(--radius-md))}
.section.section--logoCloud[data-design="divided"] .logo-cloud--grid .logo-cloud__track{row-gap:0;column-gap:0;border-top:1px solid var(--scheme-border,var(--color-border));border-left:1px solid var(--scheme-border,var(--color-border))}
.section.section--logoCloud[data-design="divided"] .logo-cloud--grid .logo-cloud__track>.block{border-right:1px solid var(--scheme-border,var(--color-border));border-bottom:1px solid var(--scheme-border,var(--color-border))}
.section.section--logoCloud[data-design="divided"] .logo-cloud--grid .logo-item{min-height:6rem;padding:var(--space-md)}
.section.section--logoCloud[data-design="inline"] .logo-cloud__heading{margin:0 0 var(--space-md);text-align:start;font-family:var(--font-heading);font-size:clamp(1.3rem,2.2vw,1.7rem);color:var(--scheme-fg,var(--color-text))}
@media (min-width:960px){.section.section--logoCloud[data-design="inline"]>.section__inner:has(>.logo-cloud__heading){display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2.2fr);column-gap:var(--space-xl);align-items:center}.section.section--logoCloud[data-design="inline"] .logo-cloud__heading{margin:0}}
/* Gallery designs (grid layout). */
.section.section--gallery[data-design="rounded"] .gallery:not(.gallery--slider):not(.gallery--masonry) .gallery__grid{gap:var(--space-md)}
.section.section--gallery[data-design="rounded"] .gallery:not(.gallery--slider):not(.gallery--masonry) .image{aspect-ratio:4/3;border-radius:calc(var(--card-radius,var(--radius-md))*1.25)}
.section.section--gallery[data-design="mosaic"] .gallery:not(.gallery--slider):not(.gallery--masonry) .image{aspect-ratio:1/1;border-radius:var(--image-radius,var(--radius-md))}
@media (min-width:960px){.section.section--gallery[data-design="mosaic"] .gallery:not(.gallery--slider):not(.gallery--masonry) .gallery__grid>.block:first-child{grid-column:span 2;grid-row:span 2}.section.section--gallery[data-design="mosaic"] .gallery:not(.gallery--slider):not(.gallery--masonry) .gallery__grid>.block:first-child .image{aspect-ratio:auto;height:100%}}
.section.section--gallery[data-design="framed"] .gallery:not(.gallery--slider):not(.gallery--masonry) .gallery__grid{gap:var(--space-md)}
.section.section--gallery[data-design="framed"] .gallery:not(.gallery--slider):not(.gallery--masonry) .gallery__grid>.block{padding:.6rem .6rem 1.4rem;background:var(--scheme-bg,var(--color-background));border:1px solid var(--scheme-border,var(--color-border));box-shadow:var(--design-shadow,0 1px 2px color-mix(in srgb,var(--color-text) 8%,transparent),0 18px 40px -22px color-mix(in srgb,var(--color-text) 38%,transparent))}
.section.section--gallery[data-design="framed"] .gallery:not(.gallery--slider):not(.gallery--masonry) .image{aspect-ratio:4/3;border-radius:0}
@media (min-width:960px){.section.section--gallery[data-design="framed"] .gallery:not(.gallery--slider):not(.gallery--masonry) .gallery__grid>.block:nth-child(3n+1){rotate:-1deg}.section.section--gallery[data-design="framed"] .gallery:not(.gallery--slider):not(.gallery--masonry) .gallery__grid>.block:nth-child(3n+3){rotate:1deg}}
@media (prefers-reduced-motion:reduce){.section.section--gallery[data-design="framed"] .gallery:not(.gallery--slider):not(.gallery--masonry) .gallery__grid>.block{rotate:none}}
/* Blog list designs. */
.section[data-design] .blog-archive__link:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:3px;border-radius:var(--card-radius,var(--radius-md))}
.section.section--blogArchive[data-design="cards"] .blog-archive,.section.section--blogArchive[data-design="featured"] .blog-archive{grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr));gap:var(--space-md)}
:is(.section.section--blogArchive[data-design="cards"],.section.section--blogArchive[data-design="featured"]) .blog-archive__item{display:flex}
:is(.section.section--blogArchive[data-design="cards"],.section.section--blogArchive[data-design="featured"]) .blog-archive__link{flex:1;display:flex;flex-direction:column;gap:var(--space-sm);padding:clamp(1.25rem,2.5vw,1.75rem);background:var(--scheme-bg,var(--color-background));border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md));box-shadow:var(--design-shadow,0 1px 2px color-mix(in srgb,var(--color-text) 8%,transparent),0 18px 40px -22px color-mix(in srgb,var(--color-text) 38%,transparent))}
:is(.section.section--blogArchive[data-design="cards"],.section.section--blogArchive[data-design="featured"]) .blog-archive__date{order:-1;margin:0;color:var(--scheme-link,var(--color-primary));font-weight:600;font-size:.85rem}
:is(.section.section--blogArchive[data-design="cards"],.section.section--blogArchive[data-design="featured"]) .blog-archive__title{margin:0;font-family:var(--font-heading);font-size:1.25rem;line-height:1.25}
:is(.section.section--blogArchive[data-design="cards"],.section.section--blogArchive[data-design="featured"]) .blog-archive__excerpt{flex:1}
:is(.section.section--blogArchive[data-design="cards"],.section.section--blogArchive[data-design="featured"]) .blog-archive__link::after{content:"→" / "";align-self:flex-start;color:var(--scheme-link,var(--color-primary));font-weight:700}
@media (min-width:960px){.section.section--blogArchive[data-design="featured"] .blog-archive__item:first-child{grid-column:1/-1}.section.section--blogArchive[data-design="featured"] .blog-archive__item:first-child .blog-archive__link{padding:clamp(1.75rem,4vw,3rem);background:color-mix(in srgb,var(--color-primary) 7%,transparent);border-color:color-mix(in srgb,var(--color-primary) 25%,transparent)}.section.section--blogArchive[data-design="featured"] .blog-archive__item:first-child .blog-archive__title{font-size:clamp(1.6rem,2.6vw,2.2rem)}}
.section.section--blogArchive[data-design="list"] .blog-archive{gap:0;border-top:1px solid var(--scheme-border,var(--color-border))}
.section.section--blogArchive[data-design="list"] .blog-archive__item{border-bottom:1px solid var(--scheme-border,var(--color-border))}
.section.section--blogArchive[data-design="list"] .blog-archive__link{display:grid;gap:var(--space-xs);padding:var(--space-md) 0;background:none;border-radius:0}
.section.section--blogArchive[data-design="list"] .blog-archive__title{font-family:var(--font-heading);font-size:1.2rem;margin:0}
@media (min-width:960px){.section.section--blogArchive[data-design="list"] .blog-archive__link{grid-template-columns:10rem minmax(0,1fr);column-gap:var(--space-lg)}.section.section--blogArchive[data-design="list"] .blog-archive__date{grid-column:1;grid-row:1/span 2;margin:0;padding-top:.2rem}.section.section--blogArchive[data-design="list"] :is(.blog-archive__title,.blog-archive__excerpt){grid-column:2}}
.section.section--blogArchive[data-design="minimal"] .blog-archive{gap:var(--space-md)}
.section.section--blogArchive[data-design="minimal"] .blog-archive__link{padding:0;background:none;border-radius:0}
.section.section--blogArchive[data-design="minimal"] .blog-archive__title{display:inline;font-family:var(--font-heading);font-size:clamp(1.2rem,2vw,1.5rem);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--color-primary) 40%,transparent);text-decoration-thickness:2px;text-underline-offset:.25em}
.section.section--blogArchive[data-design="minimal"] .blog-archive__title::after{content:" →" / ""}
.section.section--blogArchive[data-design="minimal"] .blog-archive__date{margin:var(--space-xs) 0 0}
/* Kuvakortit (photo, liiga-tyyli 1.11.2026): a large photo, the bold title centred under it, the
   date above the title and the excerpt below. The hover effects (cardHover) are the news cards
   of big club and league sites: "zoom" scales the photo inside its frame, "reveal" gives the
   photo's height to the text so the excerpt shows (the card keeps its size, so nothing around
   it moves). Both also on keyboard focus; a touch screen shows the revealed card, and nothing
   moves for a visitor who asked for less motion. */
.section.section--blogArchive[data-design="photo"] .blog-archive{grid-template-columns:repeat(auto-fill,minmax(min(100%,16rem),1fr));gap:var(--space-md)}
.section.section--blogArchive[data-design="photo"] .blog-archive__item{display:flex;min-width:0}
.section.section--blogArchive[data-design="photo"] .blog-archive__link{flex:1;display:flex;flex-direction:column;padding:0;overflow:hidden;background:var(--scheme-bg,var(--color-background));border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md));box-shadow:var(--design-shadow,0 1px 2px color-mix(in srgb,var(--color-text) 8%,transparent),0 18px 40px -22px color-mix(in srgb,var(--color-text) 38%,transparent));text-align:center}
.section.section--blogArchive[data-design="photo"] .blog-archive__media{display:block;flex:none;aspect-ratio:4/3;overflow:hidden;background:var(--scheme-surface,var(--color-surface))}
.section.section--blogArchive[data-design="photo"] .blog-archive__image{display:block;width:100%;height:100%;object-fit:cover;border-radius:0}
.section.section--blogArchive[data-design="photo"] .blog-archive__date{order:1;margin:var(--space-md) var(--space-md) 0;color:var(--scheme-muted,var(--color-muted));font-size:.8rem;font-weight:600;letter-spacing:.04em}
.section.section--blogArchive[data-design="photo"] .blog-archive__title{order:2;margin:.35rem var(--space-md) var(--space-sm);font-family:var(--font-heading);font-weight:800;font-size:clamp(1.15rem,1.6vw,1.35rem);line-height:1.2}
.section.section--blogArchive[data-design="photo"] .blog-archive__excerpt{order:3;margin:0 var(--space-md) var(--space-md);color:var(--scheme-muted,var(--color-muted));font-size:.95rem;line-height:1.5}
:is(.section.section--blogArchive[data-design="photo"] .blog-archive--hover-reveal,.section.section--blogArchive[data-design="photo"] .blog-archive--hover-zoomReveal) .blog-archive__link{aspect-ratio:3/4}
:is(.section.section--blogArchive[data-design="photo"] .blog-archive--hover-reveal,.section.section--blogArchive[data-design="photo"] .blog-archive--hover-zoomReveal) .blog-archive__media{aspect-ratio:auto;flex:0 0 46%}
:is(.section.section--blogArchive[data-design="photo"] .blog-archive--hover-reveal,.section.section--blogArchive[data-design="photo"] .blog-archive--hover-zoomReveal) .blog-archive__title{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
:is(.section.section--blogArchive[data-design="photo"] .blog-archive--hover-reveal,.section.section--blogArchive[data-design="photo"] .blog-archive--hover-zoomReveal) .blog-archive__excerpt{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
@media (hover:hover){:is(.section.section--blogArchive[data-design="photo"] .blog-archive--hover-reveal,.section.section--blogArchive[data-design="photo"] .blog-archive--hover-zoomReveal) .blog-archive__media{flex-basis:68%}:is(.section.section--blogArchive[data-design="photo"] .blog-archive--hover-reveal,.section.section--blogArchive[data-design="photo"] .blog-archive--hover-zoomReveal) .blog-archive__excerpt{opacity:0}:is(.section.section--blogArchive[data-design="photo"] .blog-archive--hover-reveal,.section.section--blogArchive[data-design="photo"] .blog-archive--hover-zoomReveal) .blog-archive__item:is(:hover,:focus-within) .blog-archive__media{flex-basis:46%}:is(.section.section--blogArchive[data-design="photo"] .blog-archive--hover-reveal,.section.section--blogArchive[data-design="photo"] .blog-archive--hover-zoomReveal) .blog-archive__item:is(:hover,:focus-within) .blog-archive__excerpt{opacity:1}}
@media (hover:hover) and (prefers-reduced-motion:no-preference){:is(.section.section--blogArchive[data-design="photo"] .blog-archive--hover-reveal,.section.section--blogArchive[data-design="photo"] .blog-archive--hover-zoomReveal) .blog-archive__media{transition:flex-basis .28s ease}:is(.section.section--blogArchive[data-design="photo"] .blog-archive--hover-reveal,.section.section--blogArchive[data-design="photo"] .blog-archive--hover-zoomReveal) .blog-archive__excerpt{transition:opacity .28s ease}:is(.section.section--blogArchive[data-design="photo"] .blog-archive--hover-zoom,.section.section--blogArchive[data-design="photo"] .blog-archive--hover-zoomReveal) .blog-archive__image{transition:transform .3s ease}:is(.section.section--blogArchive[data-design="photo"] .blog-archive--hover-zoom,.section.section--blogArchive[data-design="photo"] .blog-archive--hover-zoomReveal) .blog-archive__item:is(:hover,:focus-within) .blog-archive__image{transform:scale(1.06)}}
/* The news row (layout "rail"): one row that scrolls sideways, the next card peeking in. */
.blog-rail__track{--rail-n-base:1.15;--rail-n-sm:2.2;--rail-n-md:3.25;padding:4px 4px var(--space-sm);scroll-padding-inline:4px}
.section.section--blogArchive .blog-archive.blog-archive--rail{display:flex;gap:var(--space-md)}
.blog-archive--rail>.blog-archive__item{flex:0 0 calc((100% - var(--space-md) * (var(--rail-n) - 1)) / var(--rail-n));min-width:0;scroll-snap-align:start}
/* Event list designs. */
.section[data-design] .event-archive__link:focus-visible{outline:2px solid var(--scheme-link,var(--color-primary));outline-offset:3px;border-radius:var(--card-radius,var(--radius-md))}
.section.section--eventArchive[data-design="cards"] .event-archive{grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:var(--space-md)}
.section.section--eventArchive[data-design="cards"] .event-archive__item{display:flex}
.section.section--eventArchive[data-design="cards"] .event-archive__link{flex:1;flex-direction:column;flex-wrap:nowrap;gap:var(--space-xs);padding:clamp(1.25rem,2.5vw,1.75rem);background:var(--scheme-bg,var(--color-background));border:1px solid var(--scheme-border,var(--color-border));border-top:4px solid var(--color-primary);border-radius:var(--card-radius,var(--radius-md));box-shadow:var(--design-shadow,0 1px 2px color-mix(in srgb,var(--color-text) 8%,transparent),0 18px 40px -22px color-mix(in srgb,var(--color-text) 38%,transparent))}
.section.section--eventArchive[data-design="cards"] .event-archive__date{order:-1;font-family:var(--font-heading);font-size:1.6rem;font-weight:700;color:var(--scheme-fg,var(--color-text))}
.section.section--eventArchive[data-design="cards"] .event-archive__title{flex:none;font-size:1.1rem}
.section.section--eventArchive[data-design="dateBadge"] .event-archive{gap:var(--space-sm)}
.section.section--eventArchive[data-design="dateBadge"] .event-archive__link{display:grid;grid-template-columns:minmax(4.5rem,8rem) minmax(0,1fr);column-gap:var(--space-md);align-items:center;padding:var(--space-sm);background:var(--scheme-bg,var(--color-background));border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md))}
.section.section--eventArchive[data-design="dateBadge"] .event-archive__date{grid-column:1;grid-row:1/span 2;display:grid;place-items:center;min-height:4.5rem;padding:.5rem;border-radius:var(--radius-md);background:var(--color-primary);color:var(--color-onPrimary);font-family:var(--font-heading);font-size:1rem;font-weight:700;line-height:1.2;text-align:center;overflow-wrap:anywhere}
.section.section--eventArchive[data-design="dateBadge"] .event-archive__title{grid-column:2;align-self:end;font-size:1.1rem}
.section.section--eventArchive[data-design="dateBadge"] .event-archive__location{grid-column:2;align-self:start}
.section.section--eventArchive[data-design="timeline"] .event-archive{position:relative;gap:0;padding-left:1.75rem}
.section.section--eventArchive[data-design="timeline"] .event-archive::before{content:"";position:absolute;left:.45rem;top:.5rem;bottom:.5rem;width:2px;background:var(--scheme-border,var(--color-border))}
.section.section--eventArchive[data-design="timeline"] .event-archive__item{position:relative;padding-bottom:var(--space-md)}
.section.section--eventArchive[data-design="timeline"] .event-archive__item::before{content:"";position:absolute;left:-1.75rem;top:1rem;width:1rem;height:1rem;border-radius:50%;background:var(--color-primary);box-shadow:0 0 0 4px var(--scheme-bg,var(--color-background))}
.section.section--eventArchive[data-design="timeline"] .event-archive__link{flex-direction:column;flex-wrap:nowrap;gap:.15rem;padding:var(--space-sm) var(--space-md);background:none}
.section.section--eventArchive[data-design="timeline"] .event-archive__date{order:-1;color:var(--scheme-link,var(--color-primary));font-weight:700}
.section.section--eventArchive[data-design="timeline"] .event-archive__title{flex:none;font-family:var(--font-heading);font-size:1.2rem}
/* Newsletter designs. The form keeps the page's own colours so its fields stay readable. */
.section.section--newsletter[data-design="gradient"] .newsletter{padding:clamp(1.75rem,5vw,3.5rem);border:0;border-radius:calc(var(--card-radius,var(--radius-md))*1.25);background:linear-gradient(135deg,var(--color-primary),color-mix(in srgb,var(--color-primary) 60%,var(--color-text)));color:var(--color-onPrimary)}
.section.section--newsletter[data-design="gradient"] .newsletter__body{color:inherit;opacity:.9}
.section.section--newsletter[data-design="gradient"] .newsletter__form{padding:var(--space-md);border-radius:var(--card-radius,var(--radius-md));background:var(--color-background);color:var(--color-text)}
.section.section--newsletter[data-design="gradient"] .newsletter__note{color:var(--color-muted)}
.section.section--newsletter[data-design="inline"] .newsletter{padding:var(--space-lg) 0;background:none;border:0;border-top:1px solid var(--scheme-border,var(--color-border));border-bottom:1px solid var(--scheme-border,var(--color-border));border-radius:0}
.section.section--newsletter[data-design="inline"] .newsletter__heading{font-size:clamp(1.4rem,2.4vw,1.9rem)}
.section.section--newsletter[data-design="bordered"] .newsletter{padding:clamp(1.5rem,4vw,3rem);background:color-mix(in srgb,var(--color-primary) 4%,transparent);border:2px solid var(--color-primary);border-radius:var(--card-radius,var(--radius-md))}
@media (min-width:960px){:is(.section.section--newsletter[data-design="gradient"],.section.section--newsletter[data-design="inline"],.section.section--newsletter[data-design="bordered"]) .newsletter--split{grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:var(--space-xl)}}
/* Feature row designs. */
.section[data-design] .feature-row__eyebrow{text-transform:var(--font-label-transform,none);letter-spacing:var(--font-label-tracking,.01em)}
.section.section--featureRows[data-design="cards"] .feature-row{padding:clamp(1rem,3vw,2rem);background:var(--scheme-surface,var(--color-surface));border-radius:calc(var(--card-radius,var(--radius-md))*1.25)}
.section.section--featureRows[data-design="cards"] .feature-row__image{border-radius:var(--card-radius,var(--radius-md))}
.section.section--featureRows[data-design="offset"] .feature-row__media{position:relative;isolation:isolate;padding:0 1rem 1rem 0}
.section.section--featureRows[data-design="offset"] .feature-row__media::before{content:"";position:absolute;inset:1rem 0 0 1rem;z-index:-1;border-radius:var(--card-radius,var(--radius-md));background:color-mix(in srgb,var(--color-primary) 18%,transparent)}
.section.section--featureRows[data-design="offset"] .feature-row__image{border-radius:var(--card-radius,var(--radius-md));box-shadow:var(--design-shadow,0 1px 2px color-mix(in srgb,var(--color-text) 8%,transparent),0 18px 40px -22px color-mix(in srgb,var(--color-text) 38%,transparent))}
.section.section--featureRows[data-design="numbered"] .feature-rows{counter-reset:feature-row}
.section.section--featureRows[data-design="numbered"] .feature-row{counter-increment:feature-row}
.section.section--featureRows[data-design="numbered"] .feature-row__content::before{content:counter(feature-row,decimal-leading-zero);display:block;margin-bottom:var(--space-sm);font-family:var(--font-heading);font-size:clamp(2.5rem,5vw,4rem);font-weight:700;line-height:1;color:color-mix(in srgb,var(--color-primary) 55%,transparent)}
.section.section--featureRows[data-design="numbered"] .feature-row__image{border-radius:var(--card-radius,var(--radius-md))}
/* Text section designs. */
.section.section--text[data-design="lead"]>.section__inner{max-width:min(var(--size-contentMaxWidth),50rem);text-align:center}
.section.section--text[data-design="lead"]>.section__inner>h2{font-size:clamp(1.9rem,4vw,3rem);line-height:1.1;letter-spacing:-.015em}
.section.section--text[data-design="lead"] .richtext{max-width:58ch;margin-inline:auto;font-size:clamp(1.1rem,1.8vw,1.4rem);line-height:1.6;color:var(--scheme-muted,var(--color-muted))}
.section.section--text[data-design="columns"] .richtext{max-width:min(62ch,36em)}
@media (min-width:960px){.section.section--text[data-design="columns"] .richtext{max-width:none;columns:2;column-gap:clamp(2rem,5vw,4rem)}.section.section--text[data-design="columns"] .richtext>*{break-inside:avoid}.section.section--text[data-design="columns"] .richtext>:is(h2,h3,h4){break-after:avoid}}
.section.section--text[data-design="columns"]>.section__inner>h2{font-size:clamp(1.8rem,3.4vw,2.6rem);margin-bottom:var(--space-md)}
.section.section--text[data-design="quote"]>.section__inner{display:flex;flex-direction:column;align-items:center;max-width:min(var(--size-contentMaxWidth),54rem);text-align:center}
.section.section--text[data-design="quote"]>.section__inner::before{content:"“" / "";font-family:var(--font-heading);font-size:5rem;line-height:.8;color:var(--scheme-link,var(--color-primary))}
.section.section--text[data-design="quote"] .richtext{order:1;font-family:var(--font-heading);font-size:clamp(1.4rem,2.8vw,2.2rem);line-height:1.35}
.section.section--text[data-design="quote"]>.section__inner>h2{order:2;margin:var(--space-md) 0 0;font-family:var(--font-body);font-size:1rem;font-weight:600;color:var(--scheme-muted,var(--color-muted))}
@media (min-width:960px){.section.section--text[data-design="sidebar"]>.section__inner:has(>h2){display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);column-gap:clamp(2rem,5vw,5rem);align-items:start}}
.section.section--text[data-design="sidebar"]>.section__inner>h2{font-size:clamp(1.8rem,3vw,2.5rem);line-height:1.1}
.section.section--text[data-design="sidebar"] .richtext{font-size:1.1rem;max-width:62ch}
/* Layout area designs: restyle the cards (container blocks) in the area. */
.section.section--grid[data-design="cards"] .section__blocks>.block--container>.container{height:100%;border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md));box-shadow:var(--design-shadow,0 1px 2px color-mix(in srgb,var(--color-text) 8%,transparent),0 18px 40px -22px color-mix(in srgb,var(--color-text) 38%,transparent));overflow:hidden}
.section.section--grid[data-design="outlined"] .section__blocks>.block--container>.container{height:100%;border:2px solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md));box-shadow:none}
/* Picture cards (Saliverkko 10.11.2026), the look of the collection card (collections/render.ts
   .cl-card): thin border, no shadow, the card's first picture to its edges at 3:2. */
.section.section--grid[data-design="media"] .section__blocks>.block--container>.container{height:100%;border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md));box-shadow:none;overflow:hidden}
.section.section--grid[data-design="media"] .section__blocks>.block--container>.container:has(>.block--image:first-child){padding:0 0 var(--space-md,16px)}
.section.section--grid[data-design="media"] .section__blocks>.block--container>.container:has(>.block--image:first-child)>:not(:first-child){padding-inline:var(--space-md,16px)}
.section.section--grid[data-design="media"] .section__blocks>.block--container>.container>.block--image:first-child img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;border-radius:0}
/* A card that sets no padding of its own keeps its text off its edge (24.10.2026); zero
   specificity, so a card's own padding (K.card: 24 px) wins. */
:where(.section.section--grid[data-design="cards"] .section__blocks>.block--container>.container,.section.section--grid[data-design="outlined"] .section__blocks>.block--container>.container,.section.section--grid[data-design="media"] .section__blocks>.block--container>.container){padding:var(--space-md,16px)}
.section.section--grid[data-design="outlined"] .section__blocks>.block--container:hover>.container,.section.section--grid[data-design="outlined"] .section__blocks>.block--container:focus-within>.container{border-color:var(--color-primary)}
/* Form section designs. */
.section.section--form[data-design="card"]>.section__inner{max-width:min(var(--size-contentMaxWidth),44rem);padding:clamp(1.5rem,4vw,3rem);background:var(--scheme-bg,var(--color-background));border:1px solid var(--scheme-border,var(--color-border));border-radius:calc(var(--card-radius,var(--radius-md))*1.25);box-shadow:var(--design-shadow,0 1px 2px color-mix(in srgb,var(--color-text) 8%,transparent),0 18px 40px -22px color-mix(in srgb,var(--color-text) 38%,transparent))}
.section.section--form[data-design="card"]>.section__inner>h2{text-align:center}
.section.section--form[data-design="card"]>.section__inner>.richtext{text-align:center;color:var(--scheme-muted,var(--color-muted))}
@media (min-width:960px){.section.section--form[data-design="split"]>.section__inner{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);grid-auto-rows:min-content;column-gap:clamp(2rem,5vw,5rem)}.section.section--form[data-design="split"]>.section__inner>:not(.form-embed){grid-column:1}.section.section--form[data-design="split"] .form-embed{grid-column:2;grid-row:1/span 3;padding:clamp(1.25rem,3vw,2rem);background:var(--scheme-surface,var(--color-surface));border-radius:var(--card-radius,var(--radius-md))}}
.section.section--form[data-design="split"]>.section__inner>h2{font-size:clamp(1.8rem,3vw,2.6rem);line-height:1.1}
.section.section--form[data-design="split"]>.section__inner>.richtext{color:var(--scheme-muted,var(--color-muted))}
/* Testimonials. */
.testimonials__head{max-width:44rem;margin:0 auto var(--space-lg);text-align:center}
.testimonials__heading{margin:0;font-size:clamp(1.7rem,3.2vw,2.5rem);line-height:1.15}
.testimonials__intro{margin-top:var(--space-sm);color:var(--scheme-muted,var(--color-muted))}
.testimonials__intro>:last-child{margin-bottom:0}
.testimonials__head>.testimonials__intro>:is(p,ul,ol){margin-inline:auto}
.testimonials__head>.testimonials__intro>p{text-align:inherit}
.testimonials>.block{display:flex;min-width:0}
.testimonials>.block>*{flex:1}
.testimonial{display:flex;flex-direction:column;gap:var(--space-md);margin:0;padding:clamp(1.25rem,2.5vw,1.75rem);background:var(--scheme-bg,var(--color-background));color:var(--scheme-fg,var(--color-text));border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md));box-shadow:var(--design-shadow,0 1px 2px color-mix(in srgb,var(--color-text) 8%,transparent),0 18px 40px -22px color-mix(in srgb,var(--color-text) 38%,transparent))}
.testimonial__rating{display:flex;align-items:center;gap:.5rem;margin:0}
/* Stars are drawn (28.10.2026): a lit star is filled, an unlit one an outline in the muted text
   colour, so the two differ by shape and both have 3:1 (WCAG 1.4.11); the score is text beside them. */
.testimonial__stars{display:inline-flex;gap:.15em;color:var(--scheme-muted,var(--color-muted))}
.testimonial__star{display:block;width:1.1em;height:1.1em;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linejoin:round}
.testimonial__star.is-on{color:var(--scheme-link,var(--color-primary));fill:currentColor}
.testimonial__score{font-size:.85rem;color:var(--scheme-muted,var(--color-muted))}
.testimonial__quote{flex:1;margin:0;padding:0;border:0;font-size:1.05rem;line-height:1.6}
.testimonial__quote p{margin:0}
.testimonial .testimonial__author{display:flex;align-items:center;gap:.75rem;margin:0;padding:0;color:inherit;font-size:1rem;text-align:start}
.testimonial__avatar,.testimonial__initial{flex:none;width:3rem;height:3rem;border-radius:50%;object-fit:cover}
.testimonial__initial{display:grid;place-items:center;background:color-mix(in srgb,var(--color-primary) 14%,transparent);color:var(--scheme-link,var(--color-primary));font-family:var(--font-heading);font-weight:700;font-size:1.2rem}
.testimonial__who{display:flex;flex-direction:column;min-width:0}
.testimonial__name{font-weight:700}
.testimonial__role{font-size:.9rem;color:var(--scheme-muted,var(--color-muted))}
.section.section--testimonials[data-design="quote"] .testimonials{grid-template-columns:minmax(0,1fr)}
.section.section--testimonials[data-design="quote"] .testimonial{align-items:center;max-width:52rem;margin:0 auto;padding:clamp(1rem,3vw,2rem) 0;text-align:center;background:none;border:0;box-shadow:none}
.section.section--testimonials[data-design="quote"] .testimonial__quote{font-family:var(--font-heading);font-size:clamp(1.4rem,3vw,2.3rem);line-height:1.3;letter-spacing:-.01em}
.section.section--testimonials[data-design="quote"] .testimonial__quote::before{content:"“" / "";display:block;font-size:4rem;line-height:.7;color:var(--scheme-link,var(--color-primary))}
.section.section--testimonials[data-design="quote"] .testimonial .testimonial__author{flex-direction:column;gap:.5rem;text-align:center}
.section.section--testimonials[data-design="quote"] .testimonial__who{align-items:center}
.section.section--testimonials[data-design="carousel"] .testimonials.cardrail__track{display:flex;gap:0;grid-template-columns:none}
.section.section--testimonials[data-design="carousel"] .testimonials.cardrail__track>.block{display:flex}
.section.section--testimonials[data-design="wall"] .testimonials{display:block;columns:1;column-gap:var(--space-md)}
@media (min-width:640px){.section.section--testimonials[data-design="wall"] .testimonials{columns:2}}
@media (min-width:960px){.section.section--testimonials[data-design="wall"] .testimonials{columns:3}}
.section.section--testimonials[data-design="wall"] .testimonials>.block{display:block;break-inside:avoid;margin-bottom:var(--space-md)}
.section.section--testimonials[data-design="wall"] .testimonials>.block:nth-child(3n+2) .testimonial{background:color-mix(in srgb,var(--color-primary) 7%,transparent);border-color:color-mix(in srgb,var(--color-primary) 25%,transparent)}
.section.section--testimonials[data-design="minimal"] .testimonial{padding:var(--space-md) 0 0;background:none;border:0;border-top:2px solid var(--scheme-fg,var(--color-text));border-radius:0;box-shadow:none}
.section.section--testimonials[data-design="minimal"] .testimonial__quote{font-family:var(--font-heading);font-size:1.2rem}
.section.section--testimonials[data-design="accent"] .testimonial{background:var(--color-primary);color:var(--color-onPrimary);border-color:transparent}
.section.section--testimonials[data-design="accent"] :is(.testimonial__role,.testimonial__score){color:inherit}
.section.section--testimonials[data-design="accent"] .testimonial__star{color:color-mix(in srgb,var(--color-onPrimary) 80%,transparent)}
.section.section--testimonials[data-design="accent"] .testimonial__star.is-on{color:var(--color-onPrimary)}
.section.section--testimonials[data-design="accent"] .testimonial__initial{background:color-mix(in srgb,var(--color-onPrimary) 20%,transparent);color:inherit}
/* Team. */
.team__head{max-width:44rem;margin:0 auto var(--space-lg);text-align:center}
.team__heading{margin:0;font-size:clamp(1.7rem,3.2vw,2.5rem);line-height:1.15}
.team__intro{margin-top:var(--space-sm);color:var(--scheme-muted,var(--color-muted))}
.team__intro>:last-child{margin-bottom:0}
.team__head>.team__intro>:is(p,ul,ol){margin-inline:auto}
.team__head>.team__intro>p{text-align:inherit}
.team>.block{display:flex;min-width:0}
.team>.block>*{flex:1}
.team-member{display:flex;flex-direction:column;overflow:hidden;background:var(--scheme-bg,var(--color-background));color:var(--scheme-fg,var(--color-text));border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md))}
.team-member__photo{display:grid;place-items:center;aspect-ratio:4/5;overflow:hidden;background:var(--scheme-surface,var(--color-surface))}
.team-member__image{width:100%;height:100%;object-fit:cover;border-radius:0}
.team-member__initial{font-family:var(--font-heading);font-size:3rem;font-weight:700;color:var(--scheme-link,var(--color-primary))}
.team-member__body{display:flex;flex-direction:column;gap:.25rem;padding:var(--space-md)}
.team-member__name{margin:0;font-size:1.15rem}
.team-member__role{margin:0;color:var(--scheme-link,var(--color-primary));font-weight:600;font-size:.95rem}
.team-member__bio{margin:.35rem 0 0;color:var(--scheme-muted,var(--color-muted));font-size:.95rem}
.team-member__contact{margin:.35rem 0 0;font-size:.95rem}
.team-member__contact a{display:inline-flex;align-items:center;min-height:44px;overflow-wrap:anywhere}
.team-member__languages{margin:.35rem 0 0;font-size:.95rem}
.team-member__label{font-weight:600}
.team-member__specialities{margin:.35rem 0 0;font-size:.95rem}
.team-member__tags{display:flex;flex-wrap:wrap;gap:.35rem;margin:.35rem 0 0;padding:0;list-style:none}
.team-member__tags li{padding:.15rem .6rem;border-radius:999px;background:color-mix(in srgb,var(--color-primary) 12%,transparent);font-size:.875rem}
.team-member__book{margin:auto 0 0;padding-top:var(--space-sm)}
.team-member__book .button{min-height:44px}
.section.section--team[data-design="circles"] .team-member{align-items:center;padding:var(--space-md) var(--space-sm) 0;text-align:center;background:none;border:0}
.section.section--team[data-design="circles"] .team-member__photo{width:min(10rem,70%);aspect-ratio:1;border-radius:50%;box-shadow:0 0 0 .4rem color-mix(in srgb,var(--color-primary) 12%,transparent)}
.section.section--team[data-design="circles"] .team-member__body{align-items:center}
.section.section--team[data-design="list"] .team-member{flex-direction:row;align-items:flex-start;gap:var(--space-md);padding:var(--space-md);background:var(--scheme-bg,var(--color-background))}
.section.section--team[data-design="list"] .team-member__photo{flex:none;width:5.5rem;aspect-ratio:1;border-radius:50%}
.section.section--team[data-design="list"] .team-member__initial{font-size:2rem}
.section.section--team[data-design="list"] .team-member__body{min-width:0;padding:0}
.section.section--team[data-design="list"] .team-member__name{overflow-wrap:break-word;hyphens:auto}
.section.section--team[data-design="overlay"] .team-member{position:relative;isolation:isolate;justify-content:flex-end;min-height:22rem;border:0;color:var(--color-background)}
.section.section--team[data-design="overlay"] .team-member__photo{position:absolute;inset:0;z-index:-1;aspect-ratio:auto}
.section.section--team[data-design="overlay"] .team-member__body{padding:4rem var(--space-md) var(--space-md);background:linear-gradient(to top,color-mix(in srgb,var(--color-text) 88%,transparent),color-mix(in srgb,var(--color-text) 55%,transparent) 60%,transparent)}
.section.section--team[data-design="overlay"] :is(.team-member__role,.team-member__bio,.team-member__contact a){color:inherit}
.section.section--team[data-design="overlay"] .team-member__bio{opacity:.88}
/* Stats. The figure comes first, its label under it. */
.stats__head{max-width:44rem;margin:0 auto var(--space-lg);text-align:center}
.stats__heading{margin:0;font-size:clamp(1.7rem,3.2vw,2.5rem);line-height:1.15}
.stats__intro{margin-top:var(--space-sm);color:var(--scheme-muted,var(--color-muted))}
.stats__intro>:last-child{margin-bottom:0}
.stats__head>.stats__intro>:is(p,ul,ol){margin-inline:auto}
.stats__head>.stats__intro>p{text-align:inherit}
.stats>.block{display:flex;min-width:0}
.stats>.block>*{flex:1}
.stats .stat{display:flex;flex-direction:column;gap:.15rem;min-width:0;text-align:center}
.stats .stat__value{order:-1;margin:0;font-size:clamp(2.2rem,4vw,3.2rem);letter-spacing:-.02em;color:var(--scheme-link,var(--color-primary))}
.stats .stat__label{margin:0;font-weight:600;font-size:1rem;color:var(--scheme-fg,var(--color-text));hyphens:auto}
/* English words are short and its hyphenation splits them badly ("currency ex-change"); badges stay on one line (LUOTTOKORTTI_2026-11-09.md). */
:lang(en) .stats .stat__label{hyphens:manual}
.pricing-plan__badge{white-space:nowrap}
.stats .stat__desc{color:var(--scheme-muted,var(--color-muted))}
.section.section--stats[data-design="cards"] .stat{padding:clamp(1.25rem,2.5vw,1.75rem);background:var(--scheme-bg,var(--color-background));border:1px solid var(--scheme-border,var(--color-border));border-radius:var(--card-radius,var(--radius-md));box-shadow:var(--design-shadow,0 1px 2px color-mix(in srgb,var(--color-text) 8%,transparent),0 18px 40px -22px color-mix(in srgb,var(--color-text) 38%,transparent))}
.section.section--stats[data-design="dividers"] .stats{row-gap:var(--space-lg)}
.section.section--stats[data-design="dividers"] .stat{text-align:start;padding-left:var(--space-md);border-left:3px solid var(--color-primary)}
.section.section--stats[data-design="dividers"] .stat__value{color:var(--scheme-fg,var(--color-text))}
.section.section--stats[data-design="band"]>.section__inner{padding:clamp(1.75rem,5vw,3.5rem);border-radius:calc(var(--card-radius,var(--radius-md))*1.25);background:linear-gradient(135deg,var(--color-primary),color-mix(in srgb,var(--color-primary) 62%,var(--color-text)));color:var(--color-onPrimary)}
.section.section--stats[data-design="band"] :is(.stat__value,.stat__label,.stats__heading){color:inherit}
.section.section--stats[data-design="band"] :is(.stat__desc,.stats__intro){color:inherit;opacity:.85}
/* Korostus osoitettaessa (library-blocks/card-highlight.ts). */
.section[data-card-highlight]{--ch-lift:-4px;--ch-nudge:4px;--ch-ring:var(--scheme-link,var(--color-primary));--ch-tint:color-mix(in srgb,var(--ch-ring) 7%,transparent);--ch-shadow:0 0 0 1px color-mix(in srgb,var(--scheme-fg,var(--color-text)) 10%,transparent),0 18px 36px -18px rgb(0 0 0/.45)}
.section[data-card-highlight]:is([data-color-scheme="dark"],[data-color-scheme="accent"]){--ch-shadow:0 0 0 1px color-mix(in srgb,var(--scheme-fg,#fff) 45%,transparent),0 18px 36px -14px rgb(0 0 0/.7)}
.section[data-card-highlight="lift"] .section__blocks>.block--container>.container,.section[data-card-highlight="lift"]:not([data-design="links"]) .icon-box,.section[data-card-highlight="lift"] .team-member,.section[data-card-highlight="lift"]:not([data-design="minimal"]) .testimonial,.section[data-card-highlight="lift"][data-design="cards"] .stats .stat,.section[data-card-highlight="lift"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link,.section[data-card-highlight="lift"]:not([data-design="timeline"]) .event-archive__link,.section[data-card-highlight="lift"] .project-archive--cards .project-archive__link,.section[data-card-highlight="lift"]:not([data-design="rows"]) .pricing-plan,.section[data-card-highlight="border"] .section__blocks>.block--container>.container,.section[data-card-highlight="border"]:not([data-design="links"]) .icon-box,.section[data-card-highlight="border"] .team-member,.section[data-card-highlight="border"]:not([data-design="minimal"]) .testimonial,.section[data-card-highlight="border"][data-design="cards"] .stats .stat,.section[data-card-highlight="border"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link,.section[data-card-highlight="border"]:not([data-design="timeline"]) .event-archive__link,.section[data-card-highlight="border"] .project-archive--cards .project-archive__link,.section[data-card-highlight="border"]:not([data-design="rows"]) .pricing-plan,.section[data-card-highlight="liftBorder"] .section__blocks>.block--container>.container,.section[data-card-highlight="liftBorder"]:not([data-design="links"]) .icon-box,.section[data-card-highlight="liftBorder"] .team-member,.section[data-card-highlight="liftBorder"]:not([data-design="minimal"]) .testimonial,.section[data-card-highlight="liftBorder"][data-design="cards"] .stats .stat,.section[data-card-highlight="liftBorder"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link,.section[data-card-highlight="liftBorder"]:not([data-design="timeline"]) .event-archive__link,.section[data-card-highlight="liftBorder"] .project-archive--cards .project-archive__link,.section[data-card-highlight="liftBorder"]:not([data-design="rows"]) .pricing-plan{transition:transform .2s ease,box-shadow .2s ease}
@media (hover:hover){.section[data-card-highlight="lift"] .section__blocks>.block--container>.container:hover,.section[data-card-highlight="lift"]:not([data-design="links"]) .icon-box:hover,.section[data-card-highlight="lift"] .team-member:hover,.section[data-card-highlight="lift"]:not([data-design="minimal"]) .testimonial:hover,.section[data-card-highlight="lift"][data-design="cards"] .stats .stat:hover,.section[data-card-highlight="lift"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:hover,.section[data-card-highlight="lift"]:not([data-design="timeline"]) .event-archive__link:hover,.section[data-card-highlight="lift"] .project-archive--cards .project-archive__link:hover,.section[data-card-highlight="lift"]:not([data-design="rows"]) .pricing-plan:hover{transform:translateY(var(--ch-lift));box-shadow:var(--ch-shadow)}}
.section[data-card-highlight="lift"] .section__blocks>.block--container>.container:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="lift"]:not([data-design="links"]) .icon-box:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="lift"] .team-member:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="lift"]:not([data-design="minimal"]) .testimonial:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="lift"][data-design="cards"] .stats .stat:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="lift"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="lift"]:not([data-design="timeline"]) .event-archive__link:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="lift"] .project-archive--cards .project-archive__link:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="lift"]:not([data-design="rows"]) .pricing-plan:is(:focus-visible,:has(:focus-visible)){transform:translateY(var(--ch-lift));box-shadow:var(--ch-shadow)}
@media (hover:hover){.section[data-card-highlight="border"] .section__blocks>.block--container>.container:hover,.section[data-card-highlight="border"]:not([data-design="links"]) .icon-box:hover,.section[data-card-highlight="border"] .team-member:hover,.section[data-card-highlight="border"]:not([data-design="minimal"]) .testimonial:hover,.section[data-card-highlight="border"][data-design="cards"] .stats .stat:hover,.section[data-card-highlight="border"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:hover,.section[data-card-highlight="border"]:not([data-design="timeline"]) .event-archive__link:hover,.section[data-card-highlight="border"] .project-archive--cards .project-archive__link:hover,.section[data-card-highlight="border"]:not([data-design="rows"]) .pricing-plan:hover{box-shadow:0 0 0 2px var(--ch-ring),inset 0 0 0 100vmax var(--ch-tint)}}
.section[data-card-highlight="border"] .section__blocks>.block--container>.container:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="border"]:not([data-design="links"]) .icon-box:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="border"] .team-member:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="border"]:not([data-design="minimal"]) .testimonial:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="border"][data-design="cards"] .stats .stat:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="border"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="border"]:not([data-design="timeline"]) .event-archive__link:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="border"] .project-archive--cards .project-archive__link:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="border"]:not([data-design="rows"]) .pricing-plan:is(:focus-visible,:has(:focus-visible)){box-shadow:0 0 0 2px var(--ch-ring),inset 0 0 0 100vmax var(--ch-tint)}
@media (hover:hover){.section[data-card-highlight="liftBorder"] .section__blocks>.block--container>.container:hover,.section[data-card-highlight="liftBorder"]:not([data-design="links"]) .icon-box:hover,.section[data-card-highlight="liftBorder"] .team-member:hover,.section[data-card-highlight="liftBorder"]:not([data-design="minimal"]) .testimonial:hover,.section[data-card-highlight="liftBorder"][data-design="cards"] .stats .stat:hover,.section[data-card-highlight="liftBorder"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:hover,.section[data-card-highlight="liftBorder"]:not([data-design="timeline"]) .event-archive__link:hover,.section[data-card-highlight="liftBorder"] .project-archive--cards .project-archive__link:hover,.section[data-card-highlight="liftBorder"]:not([data-design="rows"]) .pricing-plan:hover{transform:translateY(var(--ch-lift));box-shadow:0 0 0 2px var(--ch-ring),inset 0 0 0 100vmax var(--ch-tint),var(--ch-shadow)}}
.section[data-card-highlight="liftBorder"] .section__blocks>.block--container>.container:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="liftBorder"]:not([data-design="links"]) .icon-box:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="liftBorder"] .team-member:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="liftBorder"]:not([data-design="minimal"]) .testimonial:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="liftBorder"][data-design="cards"] .stats .stat:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="liftBorder"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="liftBorder"]:not([data-design="timeline"]) .event-archive__link:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="liftBorder"] .project-archive--cards .project-archive__link:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="liftBorder"]:not([data-design="rows"]) .pricing-plan:is(:focus-visible,:has(:focus-visible)){transform:translateY(var(--ch-lift));box-shadow:0 0 0 2px var(--ch-ring),inset 0 0 0 100vmax var(--ch-tint),var(--ch-shadow)}
.section[data-card-highlight="lift"] .section__blocks>.block--container>.container:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="lift"]:not([data-design="links"]) .icon-box:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="lift"] .team-member:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="lift"]:not([data-design="minimal"]) .testimonial:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="lift"][data-design="cards"] .stats .stat:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="lift"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="lift"]:not([data-design="timeline"]) .event-archive__link:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="lift"] .project-archive--cards .project-archive__link:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="lift"]:not([data-design="rows"]) .pricing-plan:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="border"] .section__blocks>.block--container>.container:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="border"]:not([data-design="links"]) .icon-box:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="border"] .team-member:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="border"]:not([data-design="minimal"]) .testimonial:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="border"][data-design="cards"] .stats .stat:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="border"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="border"]:not([data-design="timeline"]) .event-archive__link:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="border"] .project-archive--cards .project-archive__link:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="border"]:not([data-design="rows"]) .pricing-plan:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="liftBorder"] .section__blocks>.block--container>.container:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="liftBorder"]:not([data-design="links"]) .icon-box:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="liftBorder"] .team-member:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="liftBorder"]:not([data-design="minimal"]) .testimonial:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="liftBorder"][data-design="cards"] .stats .stat:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="liftBorder"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="liftBorder"]:not([data-design="timeline"]) .event-archive__link:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="liftBorder"] .project-archive--cards .project-archive__link:is(:focus-visible,:has(:focus-visible)),.section[data-card-highlight="liftBorder"]:not([data-design="rows"]) .pricing-plan:is(:focus-visible,:has(:focus-visible)){outline:2px solid var(--ch-ring);outline-offset:3px}
.section[data-card-highlight="lift"] .section__blocks>.block--container>.container .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="links"]) .icon-box .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"] .team-member .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="minimal"]) .testimonial .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"][data-design="cards"] .stats .stat .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="timeline"]) .event-archive__link .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"] .project-archive--cards .project-archive__link .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="rows"]) .pricing-plan .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"] .section__blocks>.block--container>.container .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="links"]) .icon-box .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"] .team-member .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="minimal"]) .testimonial .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"][data-design="cards"] .stats .stat .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="timeline"]) .event-archive__link .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"] .project-archive--cards .project-archive__link .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="rows"]) .pricing-plan .button--link:not(:has(.cms-icon))::after{content:"→" / "";display:inline-block}
.section[data-card-highlight="lift"] .section__blocks>.block--container>.container .button--link:not(:has(.cms-icon)),.section[data-card-highlight="lift"]:not([data-design="links"]) .icon-box .button--link:not(:has(.cms-icon)),.section[data-card-highlight="lift"] .team-member .button--link:not(:has(.cms-icon)),.section[data-card-highlight="lift"]:not([data-design="minimal"]) .testimonial .button--link:not(:has(.cms-icon)),.section[data-card-highlight="lift"][data-design="cards"] .stats .stat .button--link:not(:has(.cms-icon)),.section[data-card-highlight="lift"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link .button--link:not(:has(.cms-icon)),.section[data-card-highlight="lift"]:not([data-design="timeline"]) .event-archive__link .button--link:not(:has(.cms-icon)),.section[data-card-highlight="lift"] .project-archive--cards .project-archive__link .button--link:not(:has(.cms-icon)),.section[data-card-highlight="lift"]:not([data-design="rows"]) .pricing-plan .button--link:not(:has(.cms-icon)),.section[data-card-highlight="liftBorder"] .section__blocks>.block--container>.container .button--link:not(:has(.cms-icon)),.section[data-card-highlight="liftBorder"]:not([data-design="links"]) .icon-box .button--link:not(:has(.cms-icon)),.section[data-card-highlight="liftBorder"] .team-member .button--link:not(:has(.cms-icon)),.section[data-card-highlight="liftBorder"]:not([data-design="minimal"]) .testimonial .button--link:not(:has(.cms-icon)),.section[data-card-highlight="liftBorder"][data-design="cards"] .stats .stat .button--link:not(:has(.cms-icon)),.section[data-card-highlight="liftBorder"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link .button--link:not(:has(.cms-icon)),.section[data-card-highlight="liftBorder"]:not([data-design="timeline"]) .event-archive__link .button--link:not(:has(.cms-icon)),.section[data-card-highlight="liftBorder"] .project-archive--cards .project-archive__link .button--link:not(:has(.cms-icon)),.section[data-card-highlight="liftBorder"]:not([data-design="rows"]) .pricing-plan .button--link:not(:has(.cms-icon)){text-decoration:none}
.section[data-card-highlight="lift"] .section__blocks>.block--container>.container .button--link:not(:has(.cms-icon))>span,.section[data-card-highlight="lift"]:not([data-design="links"]) .icon-box .button--link:not(:has(.cms-icon))>span,.section[data-card-highlight="lift"] .team-member .button--link:not(:has(.cms-icon))>span,.section[data-card-highlight="lift"]:not([data-design="minimal"]) .testimonial .button--link:not(:has(.cms-icon))>span,.section[data-card-highlight="lift"][data-design="cards"] .stats .stat .button--link:not(:has(.cms-icon))>span,.section[data-card-highlight="lift"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link .button--link:not(:has(.cms-icon))>span,.section[data-card-highlight="lift"]:not([data-design="timeline"]) .event-archive__link .button--link:not(:has(.cms-icon))>span,.section[data-card-highlight="lift"] .project-archive--cards .project-archive__link .button--link:not(:has(.cms-icon))>span,.section[data-card-highlight="lift"]:not([data-design="rows"]) .pricing-plan .button--link:not(:has(.cms-icon))>span,.section[data-card-highlight="liftBorder"] .section__blocks>.block--container>.container .button--link:not(:has(.cms-icon))>span,.section[data-card-highlight="liftBorder"]:not([data-design="links"]) .icon-box .button--link:not(:has(.cms-icon))>span,.section[data-card-highlight="liftBorder"] .team-member .button--link:not(:has(.cms-icon))>span,.section[data-card-highlight="liftBorder"]:not([data-design="minimal"]) .testimonial .button--link:not(:has(.cms-icon))>span,.section[data-card-highlight="liftBorder"][data-design="cards"] .stats .stat .button--link:not(:has(.cms-icon))>span,.section[data-card-highlight="liftBorder"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link .button--link:not(:has(.cms-icon))>span,.section[data-card-highlight="liftBorder"]:not([data-design="timeline"]) .event-archive__link .button--link:not(:has(.cms-icon))>span,.section[data-card-highlight="liftBorder"] .project-archive--cards .project-archive__link .button--link:not(:has(.cms-icon))>span,.section[data-card-highlight="liftBorder"]:not([data-design="rows"]) .pricing-plan .button--link:not(:has(.cms-icon))>span{text-decoration:underline}
.section[data-card-highlight="lift"] .section__blocks>.block--container>.container .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"] .section__blocks>.block--container>.container .button--icon-end .cms-icon,.section[data-card-highlight="lift"] .section__blocks>.block--container>.container.blog-archive__link::after,.section[data-card-highlight="lift"]:not([data-design="links"]) .icon-box .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="links"]) .icon-box .button--icon-end .cms-icon,.section[data-card-highlight="lift"]:not([data-design="links"]) .icon-box.blog-archive__link::after,.section[data-card-highlight="lift"] .team-member .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"] .team-member .button--icon-end .cms-icon,.section[data-card-highlight="lift"] .team-member.blog-archive__link::after,.section[data-card-highlight="lift"]:not([data-design="minimal"]) .testimonial .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="minimal"]) .testimonial .button--icon-end .cms-icon,.section[data-card-highlight="lift"]:not([data-design="minimal"]) .testimonial.blog-archive__link::after,.section[data-card-highlight="lift"][data-design="cards"] .stats .stat .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"][data-design="cards"] .stats .stat .button--icon-end .cms-icon,.section[data-card-highlight="lift"][data-design="cards"] .stats .stat.blog-archive__link::after,.section[data-card-highlight="lift"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link .button--icon-end .cms-icon,.section[data-card-highlight="lift"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link.blog-archive__link::after,.section[data-card-highlight="lift"]:not([data-design="timeline"]) .event-archive__link .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="timeline"]) .event-archive__link .button--icon-end .cms-icon,.section[data-card-highlight="lift"]:not([data-design="timeline"]) .event-archive__link.blog-archive__link::after,.section[data-card-highlight="lift"] .project-archive--cards .project-archive__link .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"] .project-archive--cards .project-archive__link .button--icon-end .cms-icon,.section[data-card-highlight="lift"] .project-archive--cards .project-archive__link.blog-archive__link::after,.section[data-card-highlight="lift"]:not([data-design="rows"]) .pricing-plan .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="rows"]) .pricing-plan .button--icon-end .cms-icon,.section[data-card-highlight="lift"]:not([data-design="rows"]) .pricing-plan.blog-archive__link::after,.section[data-card-highlight="liftBorder"] .section__blocks>.block--container>.container .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"] .section__blocks>.block--container>.container .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"] .section__blocks>.block--container>.container.blog-archive__link::after,.section[data-card-highlight="liftBorder"]:not([data-design="links"]) .icon-box .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="links"]) .icon-box .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"]:not([data-design="links"]) .icon-box.blog-archive__link::after,.section[data-card-highlight="liftBorder"] .team-member .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"] .team-member .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"] .team-member.blog-archive__link::after,.section[data-card-highlight="liftBorder"]:not([data-design="minimal"]) .testimonial .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="minimal"]) .testimonial .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"]:not([data-design="minimal"]) .testimonial.blog-archive__link::after,.section[data-card-highlight="liftBorder"][data-design="cards"] .stats .stat .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"][data-design="cards"] .stats .stat .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"][data-design="cards"] .stats .stat.blog-archive__link::after,.section[data-card-highlight="liftBorder"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link.blog-archive__link::after,.section[data-card-highlight="liftBorder"]:not([data-design="timeline"]) .event-archive__link .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="timeline"]) .event-archive__link .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"]:not([data-design="timeline"]) .event-archive__link.blog-archive__link::after,.section[data-card-highlight="liftBorder"] .project-archive--cards .project-archive__link .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"] .project-archive--cards .project-archive__link .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"] .project-archive--cards .project-archive__link.blog-archive__link::after,.section[data-card-highlight="liftBorder"]:not([data-design="rows"]) .pricing-plan .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="rows"]) .pricing-plan .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"]:not([data-design="rows"]) .pricing-plan.blog-archive__link::after{transition:transform .2s ease}
@media (hover:hover){.section[data-card-highlight="lift"] .section__blocks>.block--container>.container:hover .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"] .section__blocks>.block--container>.container:hover .button--icon-end .cms-icon,.section[data-card-highlight="lift"] .section__blocks>.block--container>.container:hover.blog-archive__link::after,.section[data-card-highlight="lift"]:not([data-design="links"]) .icon-box:hover .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="links"]) .icon-box:hover .button--icon-end .cms-icon,.section[data-card-highlight="lift"]:not([data-design="links"]) .icon-box:hover.blog-archive__link::after,.section[data-card-highlight="lift"] .team-member:hover .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"] .team-member:hover .button--icon-end .cms-icon,.section[data-card-highlight="lift"] .team-member:hover.blog-archive__link::after,.section[data-card-highlight="lift"]:not([data-design="minimal"]) .testimonial:hover .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="minimal"]) .testimonial:hover .button--icon-end .cms-icon,.section[data-card-highlight="lift"]:not([data-design="minimal"]) .testimonial:hover.blog-archive__link::after,.section[data-card-highlight="lift"][data-design="cards"] .stats .stat:hover .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"][data-design="cards"] .stats .stat:hover .button--icon-end .cms-icon,.section[data-card-highlight="lift"][data-design="cards"] .stats .stat:hover.blog-archive__link::after,.section[data-card-highlight="lift"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:hover .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:hover .button--icon-end .cms-icon,.section[data-card-highlight="lift"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:hover.blog-archive__link::after,.section[data-card-highlight="lift"]:not([data-design="timeline"]) .event-archive__link:hover .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="timeline"]) .event-archive__link:hover .button--icon-end .cms-icon,.section[data-card-highlight="lift"]:not([data-design="timeline"]) .event-archive__link:hover.blog-archive__link::after,.section[data-card-highlight="lift"] .project-archive--cards .project-archive__link:hover .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"] .project-archive--cards .project-archive__link:hover .button--icon-end .cms-icon,.section[data-card-highlight="lift"] .project-archive--cards .project-archive__link:hover.blog-archive__link::after,.section[data-card-highlight="lift"]:not([data-design="rows"]) .pricing-plan:hover .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="rows"]) .pricing-plan:hover .button--icon-end .cms-icon,.section[data-card-highlight="lift"]:not([data-design="rows"]) .pricing-plan:hover.blog-archive__link::after,.section[data-card-highlight="liftBorder"] .section__blocks>.block--container>.container:hover .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"] .section__blocks>.block--container>.container:hover .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"] .section__blocks>.block--container>.container:hover.blog-archive__link::after,.section[data-card-highlight="liftBorder"]:not([data-design="links"]) .icon-box:hover .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="links"]) .icon-box:hover .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"]:not([data-design="links"]) .icon-box:hover.blog-archive__link::after,.section[data-card-highlight="liftBorder"] .team-member:hover .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"] .team-member:hover .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"] .team-member:hover.blog-archive__link::after,.section[data-card-highlight="liftBorder"]:not([data-design="minimal"]) .testimonial:hover .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="minimal"]) .testimonial:hover .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"]:not([data-design="minimal"]) .testimonial:hover.blog-archive__link::after,.section[data-card-highlight="liftBorder"][data-design="cards"] .stats .stat:hover .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"][data-design="cards"] .stats .stat:hover .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"][data-design="cards"] .stats .stat:hover.blog-archive__link::after,.section[data-card-highlight="liftBorder"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:hover .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:hover .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:hover.blog-archive__link::after,.section[data-card-highlight="liftBorder"]:not([data-design="timeline"]) .event-archive__link:hover .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="timeline"]) .event-archive__link:hover .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"]:not([data-design="timeline"]) .event-archive__link:hover.blog-archive__link::after,.section[data-card-highlight="liftBorder"] .project-archive--cards .project-archive__link:hover .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"] .project-archive--cards .project-archive__link:hover .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"] .project-archive--cards .project-archive__link:hover.blog-archive__link::after,.section[data-card-highlight="liftBorder"]:not([data-design="rows"]) .pricing-plan:hover .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="rows"]) .pricing-plan:hover .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"]:not([data-design="rows"]) .pricing-plan:hover.blog-archive__link::after{transform:translateX(var(--ch-nudge))}}
.section[data-card-highlight="lift"] .section__blocks>.block--container>.container:is(:focus-visible,:has(:focus-visible)) .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"] .section__blocks>.block--container>.container:is(:focus-visible,:has(:focus-visible)) .button--icon-end .cms-icon,.section[data-card-highlight="lift"] .section__blocks>.block--container>.container:is(:focus-visible,:has(:focus-visible)).blog-archive__link::after,.section[data-card-highlight="lift"]:not([data-design="links"]) .icon-box:is(:focus-visible,:has(:focus-visible)) .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="links"]) .icon-box:is(:focus-visible,:has(:focus-visible)) .button--icon-end .cms-icon,.section[data-card-highlight="lift"]:not([data-design="links"]) .icon-box:is(:focus-visible,:has(:focus-visible)).blog-archive__link::after,.section[data-card-highlight="lift"] .team-member:is(:focus-visible,:has(:focus-visible)) .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"] .team-member:is(:focus-visible,:has(:focus-visible)) .button--icon-end .cms-icon,.section[data-card-highlight="lift"] .team-member:is(:focus-visible,:has(:focus-visible)).blog-archive__link::after,.section[data-card-highlight="lift"]:not([data-design="minimal"]) .testimonial:is(:focus-visible,:has(:focus-visible)) .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="minimal"]) .testimonial:is(:focus-visible,:has(:focus-visible)) .button--icon-end .cms-icon,.section[data-card-highlight="lift"]:not([data-design="minimal"]) .testimonial:is(:focus-visible,:has(:focus-visible)).blog-archive__link::after,.section[data-card-highlight="lift"][data-design="cards"] .stats .stat:is(:focus-visible,:has(:focus-visible)) .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"][data-design="cards"] .stats .stat:is(:focus-visible,:has(:focus-visible)) .button--icon-end .cms-icon,.section[data-card-highlight="lift"][data-design="cards"] .stats .stat:is(:focus-visible,:has(:focus-visible)).blog-archive__link::after,.section[data-card-highlight="lift"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:is(:focus-visible,:has(:focus-visible)) .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:is(:focus-visible,:has(:focus-visible)) .button--icon-end .cms-icon,.section[data-card-highlight="lift"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:is(:focus-visible,:has(:focus-visible)).blog-archive__link::after,.section[data-card-highlight="lift"]:not([data-design="timeline"]) .event-archive__link:is(:focus-visible,:has(:focus-visible)) .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="timeline"]) .event-archive__link:is(:focus-visible,:has(:focus-visible)) .button--icon-end .cms-icon,.section[data-card-highlight="lift"]:not([data-design="timeline"]) .event-archive__link:is(:focus-visible,:has(:focus-visible)).blog-archive__link::after,.section[data-card-highlight="lift"] .project-archive--cards .project-archive__link:is(:focus-visible,:has(:focus-visible)) .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"] .project-archive--cards .project-archive__link:is(:focus-visible,:has(:focus-visible)) .button--icon-end .cms-icon,.section[data-card-highlight="lift"] .project-archive--cards .project-archive__link:is(:focus-visible,:has(:focus-visible)).blog-archive__link::after,.section[data-card-highlight="lift"]:not([data-design="rows"]) .pricing-plan:is(:focus-visible,:has(:focus-visible)) .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="lift"]:not([data-design="rows"]) .pricing-plan:is(:focus-visible,:has(:focus-visible)) .button--icon-end .cms-icon,.section[data-card-highlight="lift"]:not([data-design="rows"]) .pricing-plan:is(:focus-visible,:has(:focus-visible)).blog-archive__link::after,.section[data-card-highlight="liftBorder"] .section__blocks>.block--container>.container:is(:focus-visible,:has(:focus-visible)) .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"] .section__blocks>.block--container>.container:is(:focus-visible,:has(:focus-visible)) .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"] .section__blocks>.block--container>.container:is(:focus-visible,:has(:focus-visible)).blog-archive__link::after,.section[data-card-highlight="liftBorder"]:not([data-design="links"]) .icon-box:is(:focus-visible,:has(:focus-visible)) .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="links"]) .icon-box:is(:focus-visible,:has(:focus-visible)) .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"]:not([data-design="links"]) .icon-box:is(:focus-visible,:has(:focus-visible)).blog-archive__link::after,.section[data-card-highlight="liftBorder"] .team-member:is(:focus-visible,:has(:focus-visible)) .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"] .team-member:is(:focus-visible,:has(:focus-visible)) .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"] .team-member:is(:focus-visible,:has(:focus-visible)).blog-archive__link::after,.section[data-card-highlight="liftBorder"]:not([data-design="minimal"]) .testimonial:is(:focus-visible,:has(:focus-visible)) .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="minimal"]) .testimonial:is(:focus-visible,:has(:focus-visible)) .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"]:not([data-design="minimal"]) .testimonial:is(:focus-visible,:has(:focus-visible)).blog-archive__link::after,.section[data-card-highlight="liftBorder"][data-design="cards"] .stats .stat:is(:focus-visible,:has(:focus-visible)) .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"][data-design="cards"] .stats .stat:is(:focus-visible,:has(:focus-visible)) .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"][data-design="cards"] .stats .stat:is(:focus-visible,:has(:focus-visible)).blog-archive__link::after,.section[data-card-highlight="liftBorder"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:is(:focus-visible,:has(:focus-visible)) .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:is(:focus-visible,:has(:focus-visible)) .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"]:not([data-design="list"],[data-design="minimal"]) .blog-archive__link:is(:focus-visible,:has(:focus-visible)).blog-archive__link::after,.section[data-card-highlight="liftBorder"]:not([data-design="timeline"]) .event-archive__link:is(:focus-visible,:has(:focus-visible)) .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="timeline"]) .event-archive__link:is(:focus-visible,:has(:focus-visible)) .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"]:not([data-design="timeline"]) .event-archive__link:is(:focus-visible,:has(:focus-visible)).blog-archive__link::after,.section[data-card-highlight="liftBorder"] .project-archive--cards .project-archive__link:is(:focus-visible,:has(:focus-visible)) .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"] .project-archive--cards .project-archive__link:is(:focus-visible,:has(:focus-visible)) .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"] .project-archive--cards .project-archive__link:is(:focus-visible,:has(:focus-visible)).blog-archive__link::after,.section[data-card-highlight="liftBorder"]:not([data-design="rows"]) .pricing-plan:is(:focus-visible,:has(:focus-visible)) .button--link:not(:has(.cms-icon))::after,.section[data-card-highlight="liftBorder"]:not([data-design="rows"]) .pricing-plan:is(:focus-visible,:has(:focus-visible)) .button--icon-end .cms-icon,.section[data-card-highlight="liftBorder"]:not([data-design="rows"]) .pricing-plan:is(:focus-visible,:has(:focus-visible)).blog-archive__link::after{transform:translateX(var(--ch-nudge))}
.section[data-card-highlight] .section__blocks>.block--container>.container:has(>.block--button>a[href]):not(:has(.block--container,.block--button~.block--button,a[href]:not(.block--button>a),button,input,select,textarea,iframe,summary,[tabindex])),.section[data-card-highlight]:not([data-design="links"]) .icon-box:has(.icon-box__link a[href]):not(:has(.icon-box__body a)),.section[data-card-highlight]:not([data-design="rows"]) .pricing-plan:has(.pricing-plan__cta a[href]):not(:has(.pricing-plan__features a)){position:relative;cursor:pointer}
.section[data-card-highlight] .section__blocks>.block--container>.container:has(>.block--button>a[href]):not(:has(.block--container,.block--button~.block--button,a[href]:not(.block--button>a),button,input,select,textarea,iframe,summary,[tabindex]))>.block--button{position:static}
/* A filter or transform on the link (the theme's button hover) would shrink the cover to it, and
   its hover shadow would frame the link whenever the card is under the pointer. */
.section[data-card-highlight] .section__blocks>.block--container>.container:has(>.block--button>a[href]):not(:has(.block--container,.block--button~.block--button,a[href]:not(.block--button>a),button,input,select,textarea,iframe,summary,[tabindex]))>.block--button>a,.section[data-card-highlight]:not([data-design="links"]) .icon-box:has(.icon-box__link a[href]):not(:has(.icon-box__body a)) .icon-box__link a,.section[data-card-highlight]:not([data-design="rows"]) .pricing-plan:has(.pricing-plan__cta a[href]):not(:has(.pricing-plan__features a)) .pricing-plan__cta a{filter:none;transform:none;box-shadow:none}
.section[data-card-highlight] .section__blocks>.block--container>.container:has(>.block--button>a[href]):not(:has(.block--container,.block--button~.block--button,a[href]:not(.block--button>a),button,input,select,textarea,iframe,summary,[tabindex]))>.block--button>a::before,.section[data-card-highlight]:not([data-design="links"]) .icon-box:has(.icon-box__link a[href]):not(:has(.icon-box__body a)) .icon-box__link a::before,.section[data-card-highlight]:not([data-design="rows"]) .pricing-plan:has(.pricing-plan__cta a[href]):not(:has(.pricing-plan__features a)) .pricing-plan__cta a::before{content:var(--ch-overlay,"");position:absolute;inset:0;z-index:1;border-radius:inherit}
.section[data-card-highlight] .section__blocks>.block--container>.container:has(>.block--button>a[href]):not(:has(.block--container,.block--button~.block--button,a[href]:not(.block--button>a),button,input,select,textarea,iframe,summary,[tabindex]))>.block--button>a:focus-visible,.section[data-card-highlight]:not([data-design="links"]) .icon-box:has(.icon-box__link a[href]):not(:has(.icon-box__body a)) .icon-box__link a:focus-visible,.section[data-card-highlight]:not([data-design="rows"]) .pricing-plan:has(.pricing-plan__cta a[href]):not(:has(.pricing-plan__features a)) .pricing-plan__cta a:focus-visible{outline:none}
@media (prefers-reduced-motion:reduce){.section[data-card-highlight]{--ch-lift:0px;--ch-nudge:0px}}
.motion-off .section[data-card-highlight]{--ch-lift:0px;--ch-nudge:0px}