:root{
  --kp-blue:#005588;
  --kp-blue-dark:#00416c;
  --kp-blue-nav:#0077aa;
  --kp-blue-nav-light:#0088bf;
  --kp-bg:#dfe8ee;
  --kp-panel:#ffffff;
  --kp-panel-soft:#f5f8fa;
  --kp-soft:#e8f2f6;
  --kp-text:#003366;
  --kp-muted:#385b70;
  --kp-border:#bfd0d9;
  --kp-dark-border:#1c3b4d;
  --kp-shadow:0 2px 8px rgba(0,0,0,.10);
  --kp-radius:10px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  min-height:100vh;
  font-family:Arial,Helvetica,sans-serif;
  background:var(--kp-bg);
  color:var(--kp-text);
  font-size:18px;
}
a{color:var(--kp-blue-nav)}
img{max-width:100%}

.site-header{
  width:100%;
  background:var(--kp-blue-dark);
  color:#fff;
  text-align:center;
  padding:14px 14px 16px;
  border-top:2px solid #7d4513;
}
.site-header__inner,
.site-nav__inner,
main,
.footer-inner{width:min(1140px,calc(100vw - 32px));margin:0 auto}
.site-logo{
  display:inline-block;
  color:#fff;
  text-decoration:none;
}
.site-logo__text{
  display:block;
  font-size:clamp(2.35rem,5.1vw,3.45rem);
  font-weight:900;
  line-height:1.04;
  letter-spacing:-.03em;
  text-shadow:0 2px 0 rgba(0,0,0,.15);
}
.site-tagline{
  margin:8px 0 0;
  color:#ebf8ff;
  font-size:1.18rem;
  font-weight:700;
}
.site-nav{
  position:sticky;
  top:0;
  z-index:20;
  width:100%;
  background:var(--kp-blue-nav);
  box-shadow:0 2px 5px rgba(0,0,0,.12);
}
.site-nav__inner{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  padding:10px 8px;
  white-space:nowrap;
  overflow-x:auto;
}
.site-nav a{
  display:inline-block;
  color:#fff;
  padding:7px 12px;
  text-decoration:none;
  font-weight:700;
  font-size:1.12rem;
  border-radius:6px;
}
.site-nav a:hover,.site-nav a.active{background:#eaf6fb;color:var(--kp-blue)}

main{margin:28px auto 52px}
main.narrow,.narrow{width:min(840px,calc(100vw - 32px))}

.hero,.page-hero,.feature-card,.route-card,.status-grid article,.panel,.split-section,.mobile-section,.notice-panel,.info-band,.ok,.error{
  background:var(--kp-panel);
  border:1px solid var(--kp-border);
  border-radius:var(--kp-radius);
  box-shadow:var(--kp-shadow);
}
.hero,.page-hero,.status-grid,.feature-grid,.route-grid,.gallery,.gallery-admin,.mobile-section,.split-section,.notice-panel,.info-band,.panel,.ok,.error{
  width:min(1080px,100%);
  margin-left:auto;
  margin-right:auto;
}
.hero,.page-hero{padding:30px;margin-bottom:20px}
.hero{
  display:grid;
  grid-template-columns:minmax(0,1fr) 330px;
  gap:30px;
  align-items:center;
}
.hero__content{max-width:760px}
.hero-preview{
  background:var(--kp-panel-soft);
  border:1px solid var(--kp-border);
  border-radius:var(--kp-radius);
  padding:12px;
  text-align:center;
}
.hero-preview a{display:block;position:relative}
.hero-preview img{
  display:block;
  width:100%;
  height:220px;
  object-fit:cover;
  object-position:top center;
  border-radius:6px;
  border:1px solid var(--kp-border);
  background:#fff;
}
.hero-preview span{display:block;margin-top:10px;font-weight:800;color:var(--kp-blue-dark);font-size:1rem}
.eyebrow{
  display:inline-block;
  margin:0 0 12px;
  padding:6px 11px;
  background:#eef7fb;
  color:var(--kp-blue-dark);
  border:1px solid var(--kp-border);
  border-radius:6px;
  font-size:1rem;
  font-weight:800;
}
h1,h2,h3{color:var(--kp-text);line-height:1.13}
h1{margin:0 0 14px;font-size:clamp(2.8rem,5.7vw,4.15rem);letter-spacing:-.04em}
h2{margin:0 0 12px;font-size:clamp(2rem,3.5vw,2.95rem);letter-spacing:-.025em}
h3{margin:0 0 10px;font-size:1.36rem}
p{line-height:1.58}
.lead{font-size:1.22rem;font-weight:700;margin:0 0 14px;color:#113e5a}
.hero p:not(.eyebrow),.page-hero p:not(.eyebrow),.split-section p,.mobile-text p:not(.eyebrow),.panel p,.feature-card p,.route-card em,.status-grid span,.gallery figcaption,.phone-gallery figcaption,.section-heading p:not(.eyebrow){color:var(--kp-muted)}
.hero-actions,.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}
.button,button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:44px;
  background:var(--kp-blue-nav);
  color:#fff!important;
  padding:10px 18px;
  border:0;
  border-radius:6px;
  text-decoration:none;
  font-weight:800;
  font:inherit;
  cursor:pointer;
}
.button:hover,button:hover{background:#005f88}
.button.secondary{background:#fff;color:var(--kp-blue)!important;border:1px solid var(--kp-border)}
.button.light{background:#fff;color:var(--kp-blue)!important;white-space:nowrap}

.status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:0 auto 30px}
.status-grid article{padding:20px;background:#fff}
.status-grid strong{display:block;font-size:1.2rem;margin-bottom:6px;color:var(--kp-blue-dark)}

.section-heading{text-align:center;max-width:860px;margin:40px auto 18px}
.section-heading.compact{margin-top:34px}
.feature-grid,.route-grid{display:grid;gap:16px}
.feature-grid{grid-template-columns:repeat(3,minmax(0,1fr));margin:0 auto 24px}
.short-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.feature-card{padding:22px;background:#fff}
.icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;margin-bottom:14px;border-radius:8px;background:var(--kp-soft);font-size:1.5rem;border:1px solid var(--kp-border)}
.route-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin:28px auto}
.route-card{display:grid;grid-template-rows:auto auto 1fr;gap:8px;text-decoration:none;color:var(--kp-text);background:#fff;overflow:hidden;transition:transform .15s ease,box-shadow .15s ease}
.route-card:hover{transform:translateY(-2px);box-shadow:0 6px 15px rgba(0,0,0,.16)}
.route-card img{display:block;width:100%;height:160px;object-fit:cover;object-position:top center;background:#e8eef2;border-bottom:1px solid var(--kp-border)}
.route-card .route-body{padding:16px}
.route-card span{display:inline-block;margin-bottom:8px;padding:5px 9px;border-radius:5px;background:var(--kp-soft);color:var(--kp-blue);font-weight:900;font-size:.92rem}
.route-card strong{display:block;font-size:1.16rem;line-height:1.25;color:var(--kp-text)}
.route-card em{display:block;margin-top:8px;font-style:normal;line-height:1.45;font-size:1rem}

.split-section{display:grid;grid-template-columns:minmax(0,1fr) minmax(290px,.82fr);gap:24px;padding:24px;margin:24px auto 18px;align-items:start}
.soft-list{background:#f9fbfc;border:1px solid var(--kp-border);border-radius:var(--kp-radius);padding:18px}
.soft-list ul,.panel ul{margin:0;padding-left:22px;line-height:1.65;color:var(--kp-muted)}
.notice-panel{padding:22px;margin:24px auto;background:#fff8d9;border-color:#d0bf71}
.notice-panel p{margin:0;color:#5f5524}
.info-band{display:flex;gap:18px;align-items:center;justify-content:space-between;padding:24px;background:var(--kp-blue);color:#fff;border-color:var(--kp-blue-dark);margin-top:28px}
.info-band h2{color:#fff}.info-band p{margin:0;color:#e8f6fb;max-width:800px}
.panel{padding:24px;margin:18px auto;background:#fff}
form.panel{max-width:none}
label{display:grid;gap:6px;font-weight:800;margin:14px 0;color:var(--kp-text)}
input,select,textarea{width:100%;padding:12px;border:1px solid var(--kp-border);border-radius:6px;background:#fff;color:var(--kp-text);font:inherit}
textarea{resize:vertical}
small{display:block;margin:4px 0 12px;color:var(--kp-muted)}
.ok,.error{padding:18px;margin:18px auto;background:#fff}.ok{border-color:#57966d;background:#e8f8ee}.error{border-color:#aa6b6b;background:#fff0f0}

.gallery{display:grid;gap:16px;margin:18px auto 30px}
.gallery-web,.gallery-admin{grid-template-columns:repeat(3,minmax(0,1fr));justify-content:center}
.gallery figure,.phone-gallery figure{margin:0;background:#fff;border:1px solid var(--kp-border);border-radius:var(--kp-radius);box-shadow:var(--kp-shadow);overflow:hidden}
.gallery a,.phone-gallery a{display:block;position:relative;background:#eef4f8;text-decoration:none}
.gallery a::after,.phone-gallery a::after,.hero-preview a::after{
  content:'Avaa kuva';position:absolute;right:8px;bottom:8px;background:rgba(0,51,102,.86);color:#fff;padding:4px 8px;border-radius:5px;font-size:.78rem;font-weight:900;opacity:0;transition:opacity .15s ease
}
.gallery a:hover::after,.phone-gallery a:hover::after,.hero-preview a:hover::after{opacity:1}
.gallery img{display:block;width:100%;height:175px;object-fit:cover;object-position:top center;transition:transform .15s ease;background:#fff}
.gallery figure:hover img,.phone-gallery figure:hover img,.hero-preview a:hover img{transform:scale(1.015)}
.gallery figcaption,.phone-gallery figcaption{padding:11px 12px;font-size:.95rem;line-height:1.42}
.mobile-section{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:24px;padding:24px;margin:24px auto 30px;align-items:center}
.mobile-section.standalone{margin-top:0}
.phone-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:start}
.phone-gallery img{display:block;width:100%;height:270px;object-fit:cover;object-position:top center;background:#f4f8fa}

footer{background:var(--kp-blue-dark);color:#fff;text-align:center;padding:18px;margin-top:42px}
.footer-inner{display:flex;gap:8px;align-items:center;justify-content:center;flex-wrap:wrap;color:#dff4fb}
.footer-inner strong{color:#fff}
.honeypot{position:absolute;left:-9999px;opacity:0;height:1px;width:1px;overflow:hidden}
.kp-lightbox{position:fixed;inset:0;display:none;align-items:center;justify-content:center;z-index:1000;background:rgba(0,22,38,.86);padding:20px}
.kp-lightbox.is-open{display:flex}
.kp-lightbox__dialog{position:relative;width:min(1120px,100%);max-height:96vh;background:#fff;border-radius:10px;border:1px solid #b9cbd4;box-shadow:0 20px 50px rgba(0,0,0,.45);overflow:hidden;display:grid;grid-template-rows:1fr auto}
.kp-lightbox__img-wrap{display:flex;align-items:center;justify-content:center;background:#082a3e;min-height:180px;overflow:auto}
.kp-lightbox__img{display:block;max-width:100%;max-height:82vh;width:auto;height:auto}
.kp-lightbox__caption{padding:12px 52px 12px 14px;color:var(--kp-text);font-weight:800;background:#fff}
.kp-lightbox__close{position:absolute;right:10px;bottom:8px;min-height:36px;padding:6px 11px;border-radius:6px;background:var(--kp-blue-nav);color:#fff;font-size:1.1rem;line-height:1}

@media(max-width:1000px){
  .hero{grid-template-columns:1fr}
  .hero-preview{max-width:460px}
  .feature-grid,.short-grid,.status-grid,.gallery-web,.gallery-admin{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mobile-section,.split-section,.info-band{grid-template-columns:1fr;flex-direction:column;align-items:flex-start}
}
@media(max-width:760px){
  body{font-size:16px}
  .site-header{padding:16px 10px 14px}
  .site-logo__text{font-size:2.35rem}
  .site-tagline{font-size:1rem}
  .site-nav__inner{justify-content:flex-start}
  .site-nav a{font-size:1rem;padding:8px 10px}
  main,.site-header__inner,.site-nav__inner,.footer-inner{width:min(100vw - 20px,1140px)}
  main{margin-top:18px}
  .hero,.page-hero,.split-section,.mobile-section,.info-band,.panel{padding:18px}
  h1{font-size:2.45rem}h2{font-size:1.9rem}
  .feature-grid,.short-grid,.status-grid,.route-grid,.gallery-web,.gallery-admin,.phone-gallery{grid-template-columns:1fr}
  .gallery img{height:170px}
  .phone-gallery{max-width:340px;margin-left:auto;margin-right:auto}
}
@media(max-width:430px){
  .site-logo__text{font-size:2.05rem}
  h1{font-size:2.05rem}
  .hero-preview img,.gallery img,.phone-gallery img,.route-card img{height:auto}
}
