.spol-contacts,
.spol-directory-wrap,
.spol-organization {
    --spol-card-radius: 12px;
    --spol-card-border: rgba(0,0,0,.12);
    --spol-rule: rgba(0,0,0,.10);
    --spol-muted: #555b63;
    --spol-soft: #f5f7f8;
    --spol-link: currentColor;
    width: 100%;
}

.spol-contact-group + .spol-contact-group { margin-top: 3rem; }
.spol-group-title { margin: 0 0 1.25rem !important; font-size: clamp(1.45rem, 2.2vw, 2rem); line-height: 1.2; }
.spol-contact-grid { display:grid; grid-template-columns:1fr; gap:1.5rem; align-items:start; }
.spol-contact-card { overflow:hidden; border:1px solid var(--spol-card-border); border-radius:var(--spol-card-radius); background:#fff; box-shadow:0 3px 14px rgba(0,0,0,.04); }
.spol-contact-media { aspect-ratio:16 / 10; background:#f1f3f4; overflow:hidden; }
.spol-contact-photo { width:100%; height:100%; display:block; object-fit:cover; object-position:50% 30%; }
.spol-contact-placeholder { width:100%; height:100%; display:flex; align-items:center; justify-content:center; font-size:clamp(2.2rem,7vw,4rem); font-weight:700; color:#6b7280; }
.spol-contact-body { padding:1.3rem 1.4rem 1.5rem; font-weight:400; }
.spol-contact-identity { margin:0 0 1.15rem; }
.spol-contact-card .spol-contact-name { margin:0 !important; padding:0 !important; font-size:1.45rem; line-height:1.18; font-weight:750; }
.spol-contact-card .spol-contact-role { margin:.18rem 0 0 !important; padding:0 !important; color:var(--spol-muted); font-size:1.01rem; line-height:1.35; font-weight:500; }

.spol-contact-direct { display:flex; flex-direction:column; gap:.62rem; margin:0 0 1rem; }
.spol-contact-field { display:grid; grid-template-columns:1.15rem minmax(0,1fr); gap:.55rem; align-items:start; margin:0; font-weight:400; }
.spol-contact-icon { width:1rem; height:1rem; margin-top:.22rem; color:var(--spol-muted); flex:none; }
.spol-contact-field > div { min-width:0; }
.spol-contact-label { display:block; margin:0 0 .1rem; font-weight:700; line-height:1.35; }
.spol-contact-value { display:block; font-weight:400; line-height:1.5; }
.spol-contact-value a,
.spol-contact-direct a,
.spol-directory a { font-weight:400 !important; overflow-wrap:anywhere; text-underline-offset:.12em; }

.spol-contact-info-row,
.spol-contact-info-block { margin:.95rem 0; font-weight:400; }
.spol-contact-info-row .spol-contact-label { display:inline; margin-right:.28rem; }
.spol-contact-info-row .spol-contact-value { display:inline; }
.spol-contact-info-block .spol-contact-label { margin-bottom:.18rem; }
.spol-contact-responsibilities .spol-contact-value { line-height:1.55; }

.spol-contact-language-list { display:flex; flex-wrap:wrap; gap:.35rem; margin-top:.28rem; }
.spol-language-badge { display:inline-flex; align-items:center; gap:.28rem; min-height:1.72rem; padding:.18rem .46rem; border:1px solid var(--spol-card-border); border-radius:999px; background:var(--spol-soft); font-size:.79rem; line-height:1; font-weight:650; white-space:nowrap; }
.spol-language-flag { font-size:.95rem; line-height:1; }
.spol-language-code { letter-spacing:.02em; }

.spol-contact-bio { margin-top:1.15rem; padding-top:1rem; border-top:1px solid var(--spol-rule); color:var(--spol-muted); font-style:italic; font-weight:400; line-height:1.58; }
.spol-contact-bio p { margin-top:0; }
.spol-contact-bio p:last-child { margin-bottom:0; }
.spol-contact-links { display:flex; flex-wrap:wrap; gap:.55rem; margin-top:1.15rem; padding-top:1rem; border-top:1px solid var(--spol-rule); }
.spol-social-link {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:2.35rem;
    height:2.35rem;
    box-sizing:border-box;
    border:1px solid var(--spol-card-border);
    border-radius:999px;
    background:#fff;
    color:inherit;
    text-decoration:none !important;
    font-weight:400 !important;
    line-height:1;
}
.spol-social-link svg { width:1.18rem; height:1.18rem; display:block; }
.spol-social-link:hover { background:var(--spol-soft); border-color:rgba(0,0,0,.22); }
.spol-social-link:focus-visible { outline:2px solid currentColor; outline-offset:2px; }
.spol-sr-only {
    position:absolute !important;
    width:1px !important;
    height:1px !important;
    padding:0 !important;
    margin:-1px !important;
    overflow:hidden !important;
    clip:rect(0,0,0,0) !important;
    white-space:nowrap !important;
    border:0 !important;
}
.spol-contact-address,
.spol-directory-address { margin:0; font-style:normal; font-weight:400; line-height:1.5; }

/* Tiivis henkilöluettelo */
.spol-directory-wrap { overflow-x:auto; }
.spol-directory { width:100%; border-collapse:collapse; border-spacing:0; font-size:.98rem; }
.spol-directory th,
.spol-directory td { padding:.78rem .8rem; border-bottom:1px solid var(--spol-rule); text-align:left; vertical-align:top; font-weight:400; }
.spol-directory th { background:var(--spol-soft); font-weight:700; line-height:1.3; }
.spol-directory tbody tr:hover { background:rgba(0,0,0,.018); }
.spol-directory-name { font-weight:700; }
.spol-directory .spol-contact-language-list { margin-top:0; }
.spol-directory td .spol-language-badge { margin:0 .22rem .22rem 0; }

@media (min-width:720px) {
    .spol-columns-2 .spol-contact-grid,
    .spol-columns-3 .spol-contact-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (min-width:1160px) {
    .spol-columns-3 .spol-contact-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
}

@media (max-width:700px) {
    .spol-directory-wrap { overflow:visible; }
    .spol-directory,
    .spol-directory tbody,
    .spol-directory tr,
    .spol-directory td { display:block; width:100%; box-sizing:border-box; }
    .spol-directory thead { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
    .spol-directory tbody { display:grid; gap:.8rem; }
    .spol-directory tr { border:1px solid var(--spol-card-border); border-radius:10px; padding:.25rem .8rem; background:#fff; }
    .spol-directory td { display:grid; grid-template-columns:minmax(6.8rem, 34%) minmax(0,1fr); gap:.7rem; padding:.55rem 0; border-bottom:1px solid var(--spol-rule); }
    .spol-directory td:last-child { border-bottom:0; }
    .spol-directory td::before { content:attr(data-label); font-weight:700; color:var(--spol-muted); }
}

@media (prefers-reduced-motion:no-preference) {
    .spol-contact-card { transition:transform .16s ease, box-shadow .16s ease; }
    .spol-contact-card:hover { transform:translateY(-2px); box-shadow:0 6px 22px rgba(0,0,0,.065); }
}

/* Liiton master-yhteystietokortti */
.spol-organization { box-sizing:border-box; }
.spol-organization-header { margin:0 0 1.55rem; }
.spol-organization .spol-organization-name {
    margin:0 !important;
    padding:0 !important;
    font-size:clamp(1.7rem,2.8vw,2.35rem);
    line-height:1.15;
    font-weight:760;
}
.spol-organization-alt-names { margin-top:.4rem; color:var(--spol-muted); line-height:1.45; font-weight:400; }
.spol-organization-grid { display:grid; grid-template-columns:1fr; gap:1rem; align-items:start; }
.spol-organization-column { display:grid; gap:1rem; min-width:0; }
.spol-org-panel {
    padding:1.15rem 1.2rem;
    border:1px solid var(--spol-card-border);
    border-radius:var(--spol-card-radius);
    background:#fff;
    box-shadow:0 2px 10px rgba(0,0,0,.025);
}
.spol-org-panel > h3,
.spol-org-people-group > h3 {
    margin:0 0 .8rem !important;
    padding:0 !important;
    font-size:1.08rem;
    line-height:1.3;
    font-weight:730;
}
.spol-org-panel dl { margin:0; }
.spol-org-panel dl > div { display:grid; grid-template-columns:minmax(8.5rem, 38%) minmax(0,1fr); gap:.7rem; padding:.42rem 0; border-bottom:1px solid var(--spol-rule); }
.spol-org-panel dl > div:last-child { border-bottom:0; }
.spol-org-panel dt { font-weight:700; color:var(--spol-muted); }
.spol-org-panel dd { margin:0; font-weight:400; overflow-wrap:anywhere; }
.spol-org-panel a { font-weight:400 !important; overflow-wrap:anywhere; }

/* Postiosoite: organisaation nimi erottuu, muu osoite pysyy rauhallisena normaalipainoisena. */
.spol-organization .spol-org-address address {
    margin:0;
    font-style:normal;
    font-weight:400 !important;
    line-height:1.58;
}
.spol-org-address-organization { font-weight:720; }
.spol-org-address-co,
.spol-org-address-line { font-weight:400; }

/* Yhteyshenkilöt: listamainen hakemistotyyli yhden suuren henkilökortin sijaan. */
.spol-org-contact-directory {
    list-style:none !important;
    margin:0 !important;
    padding:0 !important;
}
/* Teemat voivat lisätä listamerkin joko ::marker- tai ::before-säännöllä.
   Nollataan molemmat vain Yhteyshenkilöt-hakemistosta. */
.spol-org-contact-directory > li {
    list-style:none !important;
}
.spol-org-contact-directory > li::marker {
    content:'' !important;
    font-size:0 !important;
}
.spol-org-contact-directory > li::before {
    content:none !important;
    display:none !important;
}
.spol-org-named-contact {
    margin:0 !important;
    padding:.78rem 0;
    border-top:1px solid var(--spol-rule);
}
.spol-org-named-contact:first-child { padding-top:0; border-top:0; }
.spol-org-named-contact:last-child { padding-bottom:0; }
.spol-org-person-name { font-weight:720; line-height:1.35; }
.spol-org-person-role { color:var(--spol-muted); font-weight:400; line-height:1.4; }
.spol-org-named-contact .spol-org-person-primary .spol-org-person-name,
.spol-org-named-contact .spol-org-person-primary .spol-org-person-role { display:inline; }
.spol-org-named-contact .spol-org-person-primary .spol-org-person-role::before { content:' — '; color:var(--spol-muted); }
.spol-org-person-contact { display:flex; flex-wrap:wrap; gap:.28rem 1rem; margin-top:.34rem; font-size:.95rem; line-height:1.45; }
.spol-org-person-contact a { font-weight:400 !important; overflow-wrap:anywhere; }
.spol-org-contact-meta { margin-top:.42rem; color:var(--spol-muted); font-size:.93rem; line-height:1.48; }
.spol-org-contact-meta address { display:inline; margin:0 0 0 .25rem; font-style:normal; font-weight:400 !important; }
.spol-org-detail-label { font-weight:650; color:var(--spol-text); }

/* Liiton yhteystietosivulla palvelukielet ovat tukitietoa, eivät visuaalisia painikkeita. */
.spol-organization .spol-contact-language-list {
    display:inline-flex;
    flex-wrap:wrap;
    gap:0;
    margin:0 0 0 .28rem;
    vertical-align:baseline;
}
.spol-organization .spol-language-badge {
    min-height:0;
    padding:0;
    border:0;
    border-radius:0;
    background:transparent;
    font-size:.82rem;
    line-height:1.35;
    font-weight:500;
}
.spol-organization .spol-language-badge + .spol-language-badge::before {
    content:'·';
    margin:0 .42rem;
    color:var(--spol-muted);
}
.spol-organization .spol-language-flag { font-size:.9rem; }
.spol-organization .spol-language-code { letter-spacing:.015em; }

/* Liiton toimijat: tiivis raidallinen hakemistoluettelo. */
.spol-org-people { margin-top:2rem; padding-top:1.4rem; border-top:1px solid var(--spol-rule); }
.spol-organization .spol-org-people-title { margin:0 0 1rem !important; padding:0 !important; font-size:clamp(1.45rem,2.2vw,1.9rem); line-height:1.2; font-weight:750; }
.spol-org-people-group + .spol-org-people-group { margin-top:1.15rem; }
.spol-organization .spol-org-people-group > h3 { margin:0 0 .55rem !important; }
.spol-org-people-list {
    list-style:none;
    margin:0 !important;
    padding:0 !important;
    display:grid;
    grid-template-columns:1fr;
    gap:0;
    overflow:hidden;
    border:1px solid var(--spol-card-border);
    border-radius:10px;
    background:#fff;
}
.spol-org-person-row {
    margin:0 !important;
    padding:.6rem .75rem;
    border-bottom:1px solid var(--spol-rule);
    display:grid;
    gap:.2rem;
    min-width:0;
    background:#fff;
}
.spol-org-person-row:nth-child(odd) { background:var(--spol-soft); }
.spol-org-person-row:last-child { border-bottom-color:transparent; }
.spol-org-person-primary { min-width:0; line-height:1.4; }
.spol-org-person-row .spol-org-person-primary .spol-org-person-name,
.spol-org-person-row .spol-org-person-primary .spol-org-person-role { display:inline; }
.spol-org-person-row .spol-org-person-primary .spol-org-person-name { font-weight:700; }
.spol-org-person-row .spol-org-person-primary .spol-org-person-role { color:var(--spol-muted); font-weight:400; }
.spol-org-person-row .spol-org-person-primary .spol-org-person-role::before { content:' — '; color:var(--spol-muted); }
.spol-org-person-row .spol-org-person-contact { margin-top:0; line-height:1.4; }
.spol-organization-board-link { margin:1.35rem 0 0 !important; font-weight:600; }
.spol-organization-board-link a { font-weight:650 !important; text-underline-offset:.15em; }

@media (min-width:820px) {
    .spol-organization-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.25rem; }
}

@media (max-width:560px) {
    .spol-org-panel dl > div { grid-template-columns:1fr; gap:.12rem; }
    .spol-org-panel dt { font-size:.92rem; }
    .spol-org-named-contact .spol-org-person-primary .spol-org-person-name,
    .spol-org-named-contact .spol-org-person-primary .spol-org-person-role,
    .spol-org-person-row .spol-org-person-primary .spol-org-person-name,
    .spol-org-person-row .spol-org-person-primary .spol-org-person-role { display:block; }
    .spol-org-named-contact .spol-org-person-primary .spol-org-person-role::before,
    .spol-org-person-row .spol-org-person-primary .spol-org-person-role::before { content:''; }
    .spol-org-contact-meta address { display:block; margin:.12rem 0 0; }
    .spol-organization .spol-contact-language-list { display:flex; margin:.14rem 0 0; }
}

