/* Kuopio palette from the supplied guide. Licensed brand fonts were not supplied;
   Corbel is the documented fallback. Isolated from the original 98.css portal. */
:root{--ink:#250e62;--forest:#275d38;--lime:#ceff8c;--blue:#a7c6ed;--pink:#e6bedd;--paper:#fff;--max:1280px}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--paper);color:#171717;font-family:Corbel,Arial,sans-serif;font-size:18px;line-height:1.6}a{color:inherit;text-underline-offset:5px}a:hover{text-decoration-thickness:2px}a:focus-visible{outline:3px solid #8031a7;outline-offset:6px}img{max-width:100%;display:block}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:Corbel,'Arial',sans-serif;font-weight:700;line-height:1.06;letter-spacing:-.045em}h1{font-size:clamp(56px,6.3vw,92px)}h2{font-size:clamp(36px,3.6vw,52px)}h3{font-size:30px}p+p{margin-top:20px}.wrap{max-width:var(--max);margin:auto;width:calc(100% - 96px)}.skip{position:absolute;left:16px;top:-100px;background:white;padding:12px;z-index:20}.skip:focus{top:16px}.disclaimer{background:var(--ink);color:white;font-size:12px;letter-spacing:.04em;padding:8px 0}.disclaimer .wrap{display:flex;justify-content:space-between}.disclaimer span{opacity:.8}.masthead{display:flex;justify-content:space-between;align-items:center;padding:30px 0}.wordmark{font-size:44px;line-height:1;font-weight:800;letter-spacing:-3px;text-decoration:none}.wordmark span{display:block;font-size:15px;letter-spacing:.04em;font-weight:400;margin-top:7px}.header-side{text-align:right;font-size:14px}.header-side p{color:#555;margin-bottom:10px}.header-side a{margin-left:24px}.main-nav{display:flex;justify-content:space-between;border-top:1px solid #ddd;gap:24px}.main-nav a{font-weight:700;font-size:17px;padding:18px 0;text-decoration:none;border-bottom:3px solid transparent;display:flex;gap:24px;align-items:center}.main-nav a:hover,.main-nav a[aria-current]{border-bottom-color:var(--forest)}.main-nav span{font-size:20px}header{border-bottom:1px solid #ddd}.hero{max-width:1600px;margin:auto;display:grid;grid-template-columns:48% 52%;background:var(--lime);position:relative;overflow:hidden;min-height:600px}.hero-copy{padding:66px 28px 52px max(48px,calc((100vw - 1280px)/2));z-index:1}.eyebrow{font-size:12px;letter-spacing:.15em;font-weight:700;margin-bottom:24px}.hero h1{color:var(--forest);margin-bottom:28px}.hero h1 em{font-style:normal}.lead{font-size:23px;line-height:1.45}.hero .lead{font-size:21px}.button{display:inline-flex;align-items:center;gap:30px;justify-content:space-between;padding:16px 24px;background:var(--ink);color:white;text-decoration:none;font-weight:700;font-size:16px;line-height:1.5;margin-top:28px}.button:hover{background:var(--forest)}.button span{font-size:22px}.hero-note{font-size:12px;margin-top:22px}.hero-photo{position:relative;border-radius:40% 0 0 0;overflow:hidden;min-height:600px}.hero-photo img{width:100%;height:100%;object-fit:cover;object-position:45% center}.hero-photo figcaption{position:absolute;bottom:22px;left:28px;right:28px;background:white;padding:9px 14px;display:flex;justify-content:space-between;font-size:10px;letter-spacing:.12em}.flower{position:absolute;bottom:34px;left:43%;font-size:135px;color:var(--ink);line-height:1;transform:rotate(15deg)}.section{padding-top:88px;padding-bottom:88px}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:32px;margin-bottom:34px}.section-heading .eyebrow{margin-bottom:16px}.section-heading>p{font-size:17px;color:#505050}.path-grid,.news-grid,.info-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.path-card{position:relative;min-height:315px;padding:32px;text-decoration:none;transition:transform .18s ease}.path-card:hover{transform:translateY(-5px)}.green{background:var(--lime)}.blue{background:var(--blue)}.pink{background:var(--pink)}.card-number{display:block;font-size:11px;font-weight:700;letter-spacing:.13em;margin-bottom:40px}.path-card h3{font-size:32px;letter-spacing:-.04em;margin-bottom:16px}.path-card p{font-size:16px;line-height:1.5;padding-bottom:38px}.circle-arrow{position:absolute;bottom:24px;right:28px;border:1px solid currentColor;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-size:24px}.sauna-banner{background:var(--forest);color:white;overflow:hidden}.sauna-inner{position:relative;display:grid;grid-template-columns:1.2fr 1fr;gap:80px;padding-top:68px;padding-bottom:68px}.sauna-inner h2{font-size:68px}.sauna-inner>div{position:relative;z-index:1}.sauna-inner>div:nth-child(2){padding-top:38px}.light{background:var(--lime);color:var(--ink)}.light:hover{background:white;color:var(--forest)}.small{font-size:14px;line-height:1.6}.sauna-inner .small{margin-top:16px}.steam{position:absolute;right:-40px;top:-50px;font-size:340px;color:#ffffff0d;line-height:1}.text-link{font-size:16px;font-weight:bold}.section-caption{font-size:15px;color:#555;margin-top:-12px;margin-bottom:32px}.news-card{border-top:1px solid #222;padding-top:22px;display:flex;flex-direction:column;align-items:start}.meta{font-size:12px;letter-spacing:.035em;margin-bottom:20px}.meta span{padding-left:12px;color:var(--forest)}.news-card h3{font-size:28px;line-height:1.18;margin-bottom:32px}.news-card h3 a{text-decoration:none}.news-card h3 a:hover{text-decoration:underline}.arrow-link{font-size:15px;font-weight:bold;margin-top:auto;text-decoration:none}.arrow-link span{margin-left:24px}.local-section{padding:54px;background:#f3f4ed;display:grid;grid-template-columns:1.3fr 1fr;gap:80px;margin-bottom:88px}.local-section h2{margin-bottom:24px}.local-section p:not(.eyebrow){font-size:18px;margin-bottom:24px}.local-mark{border-radius:50% 50% 0 0;background:var(--blue);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px;text-align:center}.local-mark strong{font-size:76px;letter-spacing:-.06em;line-height:1.2}.local-mark span{font-size:15px}.local-mark .asterisk{font-size:90px;color:var(--ink);line-height:1.1;margin-top:12px}footer{background:var(--ink);color:white;padding-top:58px}.footer-grid{display:grid;grid-template-columns:1fr .8fr 1.2fr;gap:56px;padding-bottom:50px}.footer-brand{font-size:38px;letter-spacing:-.04em;font-weight:bold;text-decoration:none}.footer-grid p{font-size:15px;margin-top:12px;color:#ede7fa}.footer-grid h2{font-size:19px;letter-spacing:0;margin-bottom:20px}.footer-grid>div>a:not(.footer-brand){font-size:15px;display:block;margin-top:10px}.footer-bottom{display:flex;justify-content:space-between;border-top:1px solid #ffffff40;padding:22px 0;font-size:12px}.breadcrumb{font-size:13px;padding-top:20px;padding-bottom:20px;display:flex;gap:14px}.page-intro{padding:58px 0 64px}.page-intro h1{margin-bottom:26px;color:var(--ink)}.page-intro p:not(.eyebrow)+p{font-size:15px}.info-grid article{border-top:1px solid #aaa;padding-top:24px}.info-grid .card-number{margin-bottom:24px}.info-grid h3{margin-bottom:20px}.info-grid p{font-size:17px;margin-bottom:20px}.monologue{background:var(--forest);color:white;padding:80px 0}.reading{max-width:800px}.monologue h2{font-size:58px;margin-bottom:24px}.parody-label{font-size:14px;opacity:.9}blockquote{margin:36px 0 0;font-size:24px;line-height:1.7}.manual-grid{display:grid;grid-template-columns:1.4fr .7fr;gap:90px;align-items:center}.manual-grid h2{margin-bottom:20px}.manual-grid .lead{margin-bottom:24px}.manual-grid p:not(.eyebrow){margin-top:18px}.manual-cover{background:#f3f4ed;padding:24px}.manual-cover img{height:auto;box-shadow:0 3px 12px #0002}.download{display:block;font-size:15px;margin-top:18px}.product-grid{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center}.product-photo{background:#f6eb61;padding:60px 32px 24px;position:relative}.product-photo img{mix-blend-mode:multiply;width:100%;height:auto}.product-photo figcaption{font-size:12px;margin-top:24px}.product-label{font-size:12px;font-weight:bold;letter-spacing:.08em}.product-copy h2{font-size:54px;margin-bottom:28px}.product-copy .lead{margin-bottom:24px}.product-copy p{font-size:18px}.product-copy p.small{font-size:14px}.product-facts{display:flex;justify-content:space-between;gap:18px;padding:24px 0;margin:28px 0;border-top:1px solid #ccc;border-bottom:1px solid #ccc}.product-facts span{font-size:13px}.product-facts strong{display:block;font-size:20px}.service-strip{padding:44px;background:var(--pink);margin-bottom:80px;display:flex;align-items:center;gap:40px}.service-strip h2{font-size:36px;margin-bottom:20px}.service-strip .button{flex-shrink:0}.news-story{padding:0 0 56px;margin-bottom:56px;border-bottom:1px solid #ccc;scroll-margin-top:32px}.news-story h2{font-size:42px;margin-bottom:28px}.news-story p{margin-bottom:28px}
@media(min-width:1600px){.hero-copy{padding-left:160px}}
@media(max-width:1000px){.wrap{width:calc(100% - 48px)}.hero-copy{padding:48px 24px}.hero{min-height:550px}.hero-photo{min-height:550px}.hero h1{font-size:64px}.flower{left:41%;font-size:100px}.main-nav{gap:16px}.main-nav a{font-size:14px;gap:10px}.path-card{padding:24px}.path-card h3{font-size:26px}.sauna-inner{gap:32px}.sauna-inner h2{font-size:54px}.local-section{gap:32px;padding:32px}.footer-grid{gap:24px}.product-grid,.manual-grid{gap:32px}.product-copy h2{font-size:42px}.service-strip{display:block}}
@media(max-width:680px){.wrap{width:calc(100% - 40px)}.disclaimer .wrap{display:block;font-size:10px}.disclaimer span{display:block}.masthead{padding:24px 0}.wordmark{font-size:36px}.header-side p{display:none}.header-side a{display:block;font-size:12px;margin:6px 0}.main-nav{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.main-nav a{padding:12px 0;line-height:1.35;justify-content:space-between;font-size:14px}.hero{display:flex;flex-direction:column}.hero-copy{padding:42px 20px}.hero h1{font-size:64px}.hero-photo{height:310px;min-height:0;border-radius:100px 0 0 0}.hero-photo img{object-position:center 55%}.flower{left:auto;right:20px;bottom:268px;font-size:100px}.hero-note{margin-top:18px}.section{padding-top:56px;padding-bottom:56px}.section-heading{display:block}.section-heading>p,.section-heading>.text-link{display:block;margin-top:20px}.path-grid,.news-grid,.info-grid{grid-template-columns:1fr}.path-card{min-height:255px;padding:28px}.path-card h3{font-size:32px}.card-number{margin-bottom:26px}.sauna-inner{grid-template-columns:1fr;gap:12px;padding-top:48px;padding-bottom:48px}.sauna-inner h2{font-size:52px}.sauna-inner>div:nth-child(2){padding-top:8px}.news-card{padding-bottom:12px}.local-section{grid-template-columns:1fr;padding:28px;gap:32px;margin-bottom:56px}.local-mark{min-height:270px}.footer-grid{grid-template-columns:1fr;gap:34px}.footer-bottom{display:block}.footer-bottom span{display:block;margin-bottom:8px}.page-intro{padding:42px 0}.page-intro h1{font-size:48px;overflow-wrap:anywhere}.lead{font-size:21px}.monologue{padding:52px 0}.monologue h2{font-size:44px}blockquote{font-size:21px}.manual-grid,.product-grid{grid-template-columns:1fr}.manual-cover{max-width:330px;margin:auto}.product-copy h2{font-size:44px}.product-photo{padding-top:28px}.product-facts{gap:12px}.product-facts strong{font-size:18px}.service-strip{padding:28px}.news-story h2{font-size:34px}.button{gap:16px}.breadcrumb{font-size:12px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.path-card{transition:none}.path-card:hover{transform:none}}

/* Municipal layout: utility strip, horizontal navigation, equal split hero,
   contiguous audience tiles and a separate row of everyday services. */
.utility-bar {
  min-height: 48px;
  padding: 8px 3%;
  background: var(--ink);
  color: white;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 24px;
  font-size: 13px;
}
.satire-note { font-size: 11px; }
.utility-bar nav { display: flex; align-items: center; gap: 24px; }
.utility-bar a { font-weight: 700; text-decoration: none; }
.utility-bar a:hover { text-decoration: underline; }
.language-current {
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: #f6eb61;
  color: var(--ink);
  font-weight: 700;
}
.city-header {
  display: flex;
  align-items: center;
  padding: 32px 2%;
  min-height: 140px;
  border: 0;
  gap: 36px;
}
.city-wordmark {
  font-family: Arial, sans-serif;
  font-size: 46px;
  font-weight: 400;
  line-height: 1;
  letter-spacing: -.06em;
  text-decoration: none;
  color: #000;
  flex-shrink: 0;
}
.city-nav { display: flex; align-items: stretch; max-width: 1320px; flex: 1; }
.city-nav a {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 1;
  padding: 12px 22px;
  border-right: 1px solid #ededed;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.35;
  text-align: center;
  color: var(--ink);
  text-decoration: none;
}
.city-nav a:hover, .city-nav a[aria-current] { text-decoration: underline; text-underline-offset: 7px; }
.city-hero { display: grid; grid-template-columns: 1fr 1fr; background: #f6eb61; }
.city-hero-copy { display: flex; align-items: center; justify-content: center; padding: 60px 10%; }
.city-hero h1 {
  font-size: clamp(30px, 2.6vw, 52px);
  line-height: 1.25;
  letter-spacing: -.025em;
  color: var(--ink);
  max-width: 700px;
}
.city-hero > img { width: 100%; height: clamp(330px, 20vw, 510px); object-fit: cover; object-position: center 48%; }
.home-caption { text-align: right; padding: 16px 3%; font-size: 12px; color: var(--ink); }
.home-caption span { margin-left: 12px; }
.audience-section, .quick-services { width: calc(100% - 96px); max-width: 1368px; margin: auto; }
.audience-section { padding-top: 44px; padding-bottom: 80px; }
.audience-grid { display: grid; grid-template-columns: repeat(5, 1fr); }
.audience-card {
  position: relative;
  display: flex;
  flex-direction: column;
  padding: 24px 24px 48px;
  text-decoration: none;
  color: #000;
}
.audience-card.resident, .audience-card.guide { background: #d9c2e5; }
.audience-card.services { background: #f6eb61; }
.audience-card.sauna { background: #f5bcdf; }
.audience-card.care { background: #baf0e9; }
.audience-card img {
  width: 100%;
  height: auto;
  aspect-ratio: 1;
  object-fit: cover;
  mask: url('assets/kuopio-organic-mask.svg') center / contain no-repeat;
}
.audience-card.services img { object-fit: contain; background: white; }
.audience-card.sauna img { object-position: center 35%; }
.audience-card.care img { background: #d5d5d5; }
.audience-card.guide img { object-position: right; }
.audience-card h2 { margin-top: 24px; font-size: clamp(20px, 1.6vw, 28px); text-align: center; letter-spacing: -.02em; line-height: 1.25; }
.audience-card:hover h2 { text-decoration: underline; text-underline-offset: 5px; }
.tile-arrow { position: absolute; bottom: 16px; right: 20px; width: 20px; height: 20px; color: var(--ink); }
.quick-services { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; padding: 0 8px 32px; }
.quick-services a { background: #efefef; color: var(--ink); padding: 24px 18px; text-align: center; font-weight: 700; text-decoration: none; line-height: 1.35; }
.quick-services a:hover { background: #e3e3e3; text-decoration: underline; }
.quick-services span { margin-left: 10px; }
.city-home .section { max-width: 1368px; }
.city-home .section-heading .eyebrow { display: none; }
.city-home .section-heading h2 { color: var(--ink); }
.city-home .news-card { border-top: 0; background: #f3f3f3; padding: 28px; }
.city-home .news-card h3 { color: var(--ink); }
.city-home .sauna-banner { margin-bottom: 88px; }
::selection { background: #f6eb61; color: var(--ink); }
@media (min-width: 1900px) {
  .city-header { min-height: 145px; }
  .city-hero-copy { padding-left: max(10%, calc((100vw - 1870px) / 2)); justify-content: flex-start; }
  .audience-section { padding-top: 44px; padding-bottom: 96px; }
}
@media (max-width: 1100px) {
  .city-header { gap: 20px; padding: 24px; }
  .city-wordmark { font-size: 34px; }
  .city-nav a { font-size: 15px; padding: 10px 12px; }
  .audience-card { padding: 16px 14px 44px; }
  .utility-bar nav { gap: 16px; }
  .satire-note { max-width: 260px; }
}
@media (max-width: 680px) {
  .utility-bar { padding: 10px 20px; display: block; }
  .satire-note { display: block; max-width: none; font-size: 10px; margin-bottom: 10px; }
  .utility-bar nav { justify-content: space-between; gap: 10px; font-size: 10px; }
  .language-current { width: 28px; height: 28px; }
  .city-header { display: block; padding: 24px 20px 12px; }
  .city-wordmark { display: inline-block; font-size: 38px; margin-bottom: 24px; }
  .city-nav { display: grid; grid-template-columns: repeat(3, 1fr); }
  .city-nav a { padding: 12px 8px; font-size: 13px; }
  .city-hero { grid-template-columns: 1fr; }
  .city-hero-copy { padding: 42px 24px; justify-content: flex-start; min-height: 210px; }
  .city-hero h1 { font-size: 34px; }
  .city-hero > img { height: 250px; }
  .home-caption { text-align: left; padding: 16px 20px; }
  .home-caption span { display: block; margin-left: 0; }
  .audience-section, .quick-services { width: calc(100% - 40px); }
  .audience-section { padding-top: 20px; padding-bottom: 40px; }
  .audience-grid { grid-template-columns: repeat(2, 1fr); }
  .audience-card { padding: 18px 16px 46px; }
  .audience-card h2 { font-size: 21px; margin-top: 16px; }
  .quick-services { grid-template-columns: repeat(2, 1fr); padding: 0; gap: 12px; }
  .quick-services a { font-size: 15px; padding: 20px 12px; }
  .city-home .sauna-banner { margin-bottom: 56px; }
}

/* User-supplied wordmark, displayed intact at its original aspect ratio. */
.city-wordmark { display: block; width: 160px; line-height: 0; }
.city-wordmark img { display: block; width: 100%; height: auto; }
@media (min-width: 681px) and (max-width: 1100px) { .city-wordmark { width: 145px; } }
@media (max-width: 680px) { .city-wordmark { width: 150px; margin-bottom: 12px; } }
