:root{--bg:#f7f8fa;--surface:#fff;--text:#1a2230;--muted:#5b6675;--primary:#2f5d8a;--primaryText:#fff;--accent:#e0a458;--border:#e4e8ee;--radius:8px;--maxw:960px;--section:48px;--gap:18px;--hFont:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--bFont:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--hWeight:700}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--bFont);line-height:1.6}
h1,h2,h3,h4{font-family:var(--hFont);font-weight:var(--hWeight);color:var(--text);line-height:1.15;margin:0 0 .4em}
.tp-nav{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px clamp(16px,4vw,40px);background:var(--wb-navbg,var(--surface));border-bottom:1px solid var(--border)}
.tp-brand{font-family:var(--hFont);font-weight:700;font-size:18px;color:var(--wb-navfg,var(--primary));text-decoration:none}
.tp-nav-links{display:flex;gap:20px;align-items:center}.tp-nav-links a,.tp-nav-links>span,.tp-nav-toggle{color:var(--wb-navfg,var(--muted));font-size:14.5px;text-decoration:none;opacity:.92}.tp-nav-links a:hover,.tp-nav-toggle:hover{color:var(--wb-navfg,var(--text));opacity:1}.tp-nav-links a.active{color:var(--wb-navfg,var(--primary));opacity:1;font-weight:600}
.tp-nav-group{position:relative}.tp-nav-toggle{cursor:default}.tp-nav-group>a::after,.tp-nav-toggle::after{content:"▾";font-size:.7em;margin-left:4px;opacity:.7}.tp-subnav{position:absolute;top:100%;left:0;display:none;flex-direction:column;min-width:190px;padding:8px 0;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 14px 34px -18px rgba(0,0,0,.5);z-index:60}.tp-nav-group:hover .tp-subnav,.tp-nav-group:focus-within .tp-subnav{display:flex}.tp-subnav a{padding:8px 16px;font-size:14px}.tp-subnav a:hover{background:color-mix(in srgb,var(--primary) 10%,transparent)}

.tp-with-sidebar{display:flex;min-height:100vh}.tp-nav-left,.tp-nav-right{flex-direction:column;align-items:flex-start;gap:22px;width:210px;flex:0 0 210px;border-bottom:none;padding:28px 22px}
.tp-nav-left{border-right:1px solid var(--border)}.tp-nav-right{border-left:1px solid var(--border)}.tp-nav-left .tp-nav-links,.tp-nav-right .tp-nav-links{flex-direction:column;gap:12px}
.tp-nav-float{position:sticky;top:12px;z-index:50;width:min(calc(100% - 24px),var(--maxw));margin:12px auto;border:1px solid color-mix(in srgb,var(--border) 55%,transparent);border-radius:999px;background:var(--wb-navbg,color-mix(in srgb,var(--surface) 82%,transparent));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 10px 30px rgba(0,0,0,.10);padding:10px 24px}
.tp-nav-overlay{position:fixed;top:0;left:0;right:0;z-index:50;background:var(--wb-navbg,transparent);border-bottom:1px solid transparent;padding:18px clamp(16px,4vw,44px);transition:background .25s ease,box-shadow .25s ease,padding .25s ease}
.tp-nav-overlay .tp-brand{color:var(--wb-navfg,#fff)}.tp-nav-overlay .tp-nav-links a{color:var(--wb-navfg,rgba(255,255,255,.92))}.tp-nav-overlay .tp-nav-links a:hover,.tp-nav-overlay .tp-nav-links a.active{color:var(--wb-navfg,#fff)}.tp-nav-overlay .tp-langs a{color:var(--wb-navfg,#fff);border-color:rgba(255,255,255,.5)}
body.tp-scrolled .tp-nav-overlay{background:var(--wb-navbg,color-mix(in srgb,var(--surface) 92%,transparent));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 6px 22px rgba(0,0,0,.10);padding-top:12px;padding-bottom:12px}
body.tp-scrolled .tp-nav-overlay .tp-brand{color:var(--wb-navfg,var(--primary))}body.tp-scrolled .tp-nav-overlay .tp-nav-links a{color:var(--wb-navfg,var(--muted))}body.tp-scrolled .tp-nav-overlay .tp-nav-links a:hover,body.tp-scrolled .tp-nav-overlay .tp-nav-links a.active{color:var(--wb-navfg,var(--primary))}body.tp-scrolled .tp-nav-overlay .tp-langs a{color:var(--wb-navfg,var(--muted));border-color:var(--border)}
.tp-lay-overlay main>.tp-anchor:first-child .tp-hero{padding-top:clamp(96px,14vh,150px)}
.tp-lay-overlay .tp-hero:not(.tp-hero-bg){background:linear-gradient(160deg,var(--text),color-mix(in srgb,var(--text) 50%,var(--primary)))}
.tp-lay-overlay .tp-hero:not(.tp-hero-bg) h1,.tp-lay-overlay .tp-hero:not(.tp-hero-bg) .tp-lead,.tp-lay-overlay .tp-hero:not(.tp-hero-bg) .tp-kicker{color:#fff}.tp-lay-overlay .tp-hero:not(.tp-hero-bg) .tp-lead{opacity:.9}
.tp-content{max-width:var(--maxw);margin:0 auto;padding:var(--section) clamp(16px,4vw,40px)}.tp-content>.tp-anchor,.tp-content>.tp-float-wrap{margin-bottom:var(--section)}.tp-content>.tp-anchor:last-child,.tp-content>.tp-float-wrap:last-child{margin-bottom:0}.tp-with-sidebar .tp-content{flex:1;min-width:0}
.tp-kicker{text-transform:uppercase;letter-spacing:.1em;font-size:13px;color:var(--accent);font-weight:600;margin:0 0 14px}
.tp-hero{position:relative;border-radius:var(--radius);overflow:hidden;padding:clamp(44px,7vw,96px) clamp(24px,5vw,56px)}
.tp-hero:not(.tp-hero-bg){background:var(--bg)}
.tp-hero h1{font-size:clamp(34px,6vw,60px);letter-spacing:-.01em;max-width:18ch}.tp-lead{font-size:clamp(17px,1.4vw,20px);color:var(--muted);max-width:60ch;margin:18px 0 0}
.tp-hero-bg{background-size:cover;background-position:center;padding:clamp(56px,9vw,120px) clamp(24px,4vw,48px)}
.tp-hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;border:0}
.tp-hero-bg::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.28),rgba(0,0,0,.6));z-index:1}
.tp-hero-inner{position:relative;z-index:1}.tp-hero-bg .tp-hero-inner h1,.tp-hero-bg .tp-hero-inner .tp-lead,.tp-hero-bg .tp-hero-inner .tp-kicker{color:#fff}.tp-hero-bg .tp-hero-inner .tp-lead{opacity:.92}
.tp-imagetext{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:clamp(16px,3vw,36px);align-items:center}.tp-it-img{width:100%;height:100%;max-height:360px;object-fit:cover;border-radius:var(--radius);display:block}.tp-it-body .tp-btn{margin-top:14px}
@media(max-width:640px){.tp-imagetext{grid-template-columns:1fr}}
.tp-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:var(--gap)}.tp-gal-img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius);display:block;transition:transform .3s ease,box-shadow .3s ease}.tp-gal-img:hover{transform:scale(1.03);box-shadow:0 14px 30px -18px rgba(0,0,0,.4)}
.tp-imgshape-sharp .tp-it-img,.tp-imgshape-sharp .tp-gal-img{border-radius:0}.tp-imgshape-circle .tp-it-img,.tp-imgshape-circle .tp-gal-img{border-radius:50%;aspect-ratio:1/1}
.tp-ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}.tp-btn{display:inline-flex;align-items:center;padding:12px 24px;border-radius:var(--radius);font-weight:600;font-size:15px;border:none;cursor:pointer;text-decoration:none;transition:transform .15s ease,box-shadow .15s ease,background .15s ease,border-color .15s ease,color .15s ease}
.tp-btn-primary{background:var(--primary);color:var(--primaryText);box-shadow:0 6px 18px -8px color-mix(in srgb,var(--primary) 70%,transparent)}.tp-btn-primary:hover{transform:translateY(-1px);box-shadow:0 10px 24px -8px color-mix(in srgb,var(--primary) 75%,transparent)}
.tp-btn-ghost{border:1px solid var(--border);color:var(--text);background:none}.tp-btn-ghost:hover{border-color:var(--primary);color:var(--primary)}
.tp-btn-c-primary{--btn-c:var(--primary);--btn-cText:var(--primaryText)}.tp-btn-c-accent{--btn-c:var(--accent);--btn-cText:#fff}.tp-btn-c-neutral{--btn-c:var(--text);--btn-cText:var(--surface)}
.tp-btn-solid{background:var(--btn-c);color:var(--btn-cText)}.tp-btn-solid:hover{transform:translateY(-1px);box-shadow:0 10px 24px -8px color-mix(in srgb,var(--btn-c) 75%,transparent)}
.tp-btn-outline{background:none;color:var(--btn-c);border:1px solid var(--btn-c)}.tp-btn-outline:hover{background:color-mix(in srgb,var(--btn-c) 10%,transparent)}
.tp-btn-soft{background:color-mix(in srgb,var(--btn-c) 14%,transparent);color:var(--btn-c);border:none}.tp-btn-soft:hover{background:color-mix(in srgb,var(--btn-c) 22%,transparent)}
.tp-btn-custom:hover{transform:translateY(-1px);filter:brightness(1.05)}
.tp-hero-bg .tp-btn-ghost,.tp-hero-bg .tp-btn-outline{color:#fff;border-color:rgba(255,255,255,.85)}.tp-hero-bg .tp-btn-ghost:hover,.tp-hero-bg .tp-btn-outline:hover{background:rgba(255,255,255,.15);border-color:#fff;color:#fff}.tp-hero-bg .tp-btn-soft{background:rgba(255,255,255,.2);color:#fff}.tp-hero-bg .tp-btn-soft:hover{background:rgba(255,255,255,.28)}
.tp-section h2{font-size:clamp(22px,3vw,30px)}.tp-intro{color:var(--muted);font-size:16px;max-width:62ch;margin:0 0 var(--gap)}.tp-body{font-size:16px}.tp-body p{margin:0 0 .8em}.tp-body ul{margin:0 0 .8em;padding-left:20px}
.tp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--gap)}.tp-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px 20px;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.tp-card:hover{transform:translateY(-2px);box-shadow:0 12px 28px -16px rgba(0,0,0,.35);border-color:color-mix(in srgb,var(--primary) 40%,var(--border))}.tp-card h3{font-size:18px;margin-bottom:8px}.tp-card p{margin:0;color:var(--muted);font-size:14.5px}.tp-card-media{padding-top:0;overflow:hidden}.tp-card-img{width:calc(100% + 40px);margin:-1px -20px 16px;aspect-ratio:16/10;object-fit:cover;display:block}
.tp-pricelist{display:flex;flex-direction:column}.tp-price-row{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--border)}.tp-price{color:var(--primary);font-weight:700;white-space:nowrap}.tp-muted{color:var(--muted)}
.tp-contact p{margin:2px 0}.tp-map-embed{width:100%;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border)}.tp-map-embed iframe{width:100%;height:min(60vw,420px);border:0;display:block}
.tp-faq-list{display:flex;flex-direction:column;gap:10px}.tp-faq-item{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden}.tp-faq-item summary{cursor:pointer;padding:14px 16px;font-weight:600;list-style:none}.tp-faq-item summary::-webkit-details-marker{display:none}.tp-faq-item summary::after{content:"+";float:right;color:var(--primary);font-weight:700}.tp-faq-item[open] summary::after{content:"−"}.tp-faq-answer{padding:0 16px 14px}
.tp-tm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--gap)}.tp-tm-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:28px 24px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px}.tp-tm-quote{font-family:var(--hFont);font-style:italic;font-size:clamp(1.1rem,2.2vw,1.4rem);line-height:1.45;margin:0;color:var(--text)}.tp-tm-quote p{margin:0}.tp-stars{color:#fbbf24;letter-spacing:3px;font-size:1.15rem}.tp-stars-empty{color:var(--border)}.tp-tm-meta{display:flex;align-items:center;gap:10px;margin:0}.tp-tm-img{width:48px;height:48px;border-radius:50%;object-fit:cover}.tp-tm-who{display:flex;flex-direction:column;text-align:left}.tp-tm-author{font-weight:700}.tp-tm-role{font-size:13px;color:var(--muted)}
.tp-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--gap);text-align:center}.tp-stat-value{font-family:var(--hFont);font-size:clamp(1.8rem,4vw,2.6rem);font-weight:700;color:var(--primary);line-height:1.1}.tp-stat-label{color:var(--muted);margin-top:4px}
.tp-ctabanner .tp-ctabanner-inner{background:var(--primary);color:var(--primary-text,#fff);border-radius:var(--radius);padding:clamp(24px,4vw,44px);text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px}.tp-ctabanner h2{color:inherit;margin:0}.tp-ctabanner .tp-ctas{margin-top:6px}
.tp-anchor-id{display:block;position:relative;top:-80px;visibility:hidden;height:0}.tp-form{display:flex;flex-direction:column;gap:10px;max-width:440px}.tp-input{height:42px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.tp-input-tall{height:96px}.tp-field{display:flex;flex-direction:column;gap:4px}.tp-field-label{font-size:13px;font-weight:600;color:var(--text)}input.tp-input,textarea.tp-input{padding:10px 12px;font-family:inherit;font-size:14px;width:100%;box-sizing:border-box;color:var(--text);background:var(--surface);height:auto}textarea.tp-input{resize:vertical;min-height:96px}.tp-wf-status{font-size:13px;margin:2px 0 0}.tp-wf-ok{color:#16a34a}.tp-wf-err{color:#dc2626}.tp-form .tp-btn{align-self:flex-start;margin-top:4px}
.tp-booking .tp-bk-root{margin-top:14px}
.tp-bk-msg{color:var(--muted);padding:10px 0}
.tp-bk-services{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.tp-bk-party-label{font-weight:600;margin:0 0 12px}.tp-bk-party{display:flex;flex-wrap:wrap;gap:10px}.tp-bk-party-btn{min-width:52px;padding:14px 0;font-size:17px;font-weight:600;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:border-color .15s,transform .15s,box-shadow .15s;color:var(--text)}.tp-bk-party-btn:hover{border-color:var(--primary);color:var(--primary);transform:translateY(-1px)}.tp-bk-party-hint{color:var(--muted);font-size:13.5px;margin:14px 0 0}
.tp-bk-svc{display:flex;flex-direction:column;gap:4px;text-align:left;padding:16px 18px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:border-color .15s,transform .15s,box-shadow .15s}
.tp-bk-svc:hover{border-color:var(--primary);transform:translateY(-1px);box-shadow:0 8px 20px -14px color-mix(in srgb,var(--primary) 60%,transparent)}
.tp-bk-svc-name{font-weight:600;color:var(--text)}.tp-bk-svc-meta{font-size:13.5px;color:var(--muted)}
.tp-bk-svc-txt{display:flex;flex-direction:column;gap:4px}.tp-bk-svc-hasimg{padding:0;overflow:hidden;gap:0}.tp-bk-svc-img{width:100%;height:130px;object-fit:cover;display:block}.tp-bk-svc-hasimg .tp-bk-svc-txt{padding:12px 16px 14px}
.tp-bk-back{background:none;border:none;color:var(--primary);cursor:pointer;font-size:14px;padding:0;margin:0 0 14px;font-weight:600}
.tp-bk-sched{display:flex;gap:28px;align-items:flex-start;border:1px solid var(--border);border-radius:var(--radius);padding:20px;background:var(--surface)}
.tp-bk-cal{flex:0 0 300px;max-width:300px}
.tp-bk-cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;font-weight:600;text-transform:capitalize}
.tp-bk-nav{width:34px;height:34px;border:1px solid var(--border);background:var(--bg);border-radius:8px;cursor:pointer;font-size:17px;color:var(--text);line-height:1}
.tp-bk-nav:hover:not([disabled]){border-color:var(--primary);color:var(--primary)}.tp-bk-nav[disabled]{opacity:.35;cursor:default}
.tp-bk-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.tp-bk-wd{text-align:center;font-size:11.5px;color:var(--muted);font-weight:600;padding-bottom:4px}
.tp-bk-cal-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:14px;border:none;background:none;border-radius:8px;color:var(--muted)}
span.tp-bk-cal-day{opacity:.4}
button.tp-bk-cal-day.avail{color:var(--text);cursor:pointer;font-weight:600;background:color-mix(in srgb,var(--primary) 9%,transparent);position:relative}
button.tp-bk-cal-day.avail:hover{background:color-mix(in srgb,var(--primary) 18%,transparent)}
button.tp-bk-cal-day.sel{background:var(--primary);color:var(--primaryText)}
.tp-bk-tz{font-size:12px;color:var(--muted);margin:12px 0 0;text-align:center}
.tp-bk-timecol{flex:1;min-width:0}
.tp-bk-selday{font-weight:600;margin:0 0 12px;text-transform:capitalize;font-size:15px}
.tp-bk-grp{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin:14px 0 8px}.tp-bk-grp:first-of-type{margin-top:0}
.tp-bk-times{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:8px}
.tp-bk-time{padding:11px 6px;background:var(--bg);border:1px solid var(--border);border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;color:var(--text);transition:border-color .12s,background .12s,color .12s}
.tp-bk-time:hover{border-color:var(--primary);color:var(--primary);background:color-mix(in srgb,var(--primary) 8%,transparent)}
.tp-bk-next{margin-top:12px;padding:10px 16px;border:1px solid var(--primary);color:var(--primary);background:none;border-radius:8px;cursor:pointer;font-weight:600;font-size:14px}
.tp-bk-quick-h{font-weight:700;font-size:16px;margin:0 0 12px}
.tp-bk-quick-filters{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:14px}
.tp-bk-quick-f{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--muted);font-weight:600}
.tp-bk-quick-f select{padding:9px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-size:14px;font-weight:400;min-width:150px}
.tp-bk-quick-slots{display:flex;flex-direction:column;gap:8px}
.tp-bk-quick-slot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;text-align:left;color:var(--text);transition:border-color .12s,transform .12s,box-shadow .12s}
.tp-bk-quick-slot:hover{border-color:var(--primary);transform:translateY(-1px);box-shadow:0 8px 20px -14px color-mix(in srgb,var(--primary) 60%,transparent)}
.tp-bk-quick-day{font-weight:600;text-transform:capitalize}
.tp-bk-quick-time{font-weight:700;color:var(--primary);white-space:nowrap}
.tp-bk-quick-more{margin-top:14px;background:none;border:none;color:var(--primary);cursor:pointer;font-size:14px;font-weight:600;padding:0}
@keyframes tpbksk{0%,100%{opacity:.5}50%{opacity:.9}}
.tp-bk-sk-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.tp-bk-sk-cell{aspect-ratio:1;border-radius:8px;background:color-mix(in srgb,var(--muted) 22%,transparent);animation:tpbksk 1.1s ease-in-out infinite}
.tp-bk-sk-time{height:40px;border-radius:8px;background:color-mix(in srgb,var(--muted) 22%,transparent);animation:tpbksk 1.1s ease-in-out infinite}
.tp-bk-sk-svc{height:66px;border-radius:var(--radius);background:color-mix(in srgb,var(--muted) 20%,transparent);animation:tpbksk 1.1s ease-in-out infinite}
.tp-bk-form{max-width:none;margin-top:6px}
.tp-bk-chosen{background:color-mix(in srgb,var(--primary) 8%,transparent);border-radius:var(--radius);padding:12px 14px;font-size:14.5px;margin:0 0 14px}
.tp-bk-terms{display:flex;gap:8px;align-items:flex-start;font-size:13.5px;color:var(--muted);line-height:1.4}
.tp-bk-done{text-align:center;padding:24px 16px}.tp-bk-done h3{color:var(--primary);margin:8px 0}
.tp-bk-done-ic{width:52px;height:52px;border-radius:50%;background:var(--primary);color:var(--primaryText);display:flex;align-items:center;justify-content:center;font-size:26px;margin:0 auto 6px}
@media(max-width:560px){.tp-bk-sched{flex-direction:column;gap:20px;padding:16px}.tp-bk-cal{flex-basis:auto;max-width:none;width:100%}.tp-bk-sk-grid{max-width:300px}}
/* Yleinen kelluva lohko (style.floating): asettuu ankkurilohkon PÄÄLLE .tp-float-wrap-kääreessä absoluuttisesti, valittuun kohtaan ja kokoon. Ilman kääreparia jää pelkäksi kohoavaksi kortiksi. */
.tp-float-wrap{position:relative}
/* Full-bleed hero -ankkuri: kääre venyy 100vw:hen (hero täyttää sen), jolloin
   kelluvan "oikea/vasen" kohdistuu heron todelliseen reunaan eikä kapeaan
   sisältösarakkeeseen. Hero itse (margin-left:calc(50%-50vw)) resolvoituu tässä
   0-marginaaliksi ja täyttää kääreen. */
.tp-float-wrap-bleed{width:100vw;margin-left:calc(50% - 50vw)}
@media(max-width:767px){.tp-float-wrap-bleed>.tp-floating{margin:16px clamp(16px,4vw,20px) 0}}
.tp-floating{--fcard:var(--surface);background:var(--fcard);border:1px solid var(--border);box-shadow:0 24px 60px -24px rgba(0,0,0,.45);padding:clamp(20px,3vw,32px)}
.tp-float-wrap>.tp-floating{position:absolute;z-index:3;margin:0}
.tp-fl-left{left:clamp(16px,4vw,40px)}
.tp-fl-right{right:clamp(16px,4vw,40px)}
.tp-fl-center{left:0;right:0;margin-inline:auto}
.tp-fv-top{top:clamp(16px,4vw,40px);transform:translateY(var(--fy,0px))}
.tp-fv-bottom{bottom:clamp(16px,4vw,40px);transform:translateY(var(--fy,0px))}
.tp-fv-center{top:50%;transform:translateY(calc(-50% + var(--fy,0px)))}
.tp-fw-narrow{width:min(340px,88%)}
.tp-fw-medium{width:min(440px,90%)}
.tp-fw-wide{width:min(560px,92%)}
/* Kelluvan taustaväri (--fcard) + tekstiväri. */
.tp-fbg-surface{--fcard:var(--surface)}
.tp-fbg-primary{--fcard:var(--primary);color:var(--primaryText)}
.tp-fbg-accent{--fcard:var(--accent);color:#fff}
.tp-fbg-dark{--fcard:var(--text);color:var(--surface)}
.tp-fbg-light{--fcard:color-mix(in srgb,var(--surface) 86%,var(--text))}
/* Läpinäkyvyys (solid = ei luokkaa → base background:var(--fcard)). */
.tp-fop-90{background:color-mix(in srgb,var(--fcard) 90%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.tp-fop-75{background:color-mix(in srgb,var(--fcard) 75%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.tp-fop-60{background:color-mix(in srgb,var(--fcard) 60%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.tp-fop-40{background:color-mix(in srgb,var(--fcard) 40%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.tp-fop-25{background:color-mix(in srgb,var(--fcard) 25%,transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}
.tp-fop-10{background:color-mix(in srgb,var(--fcard) 10%,transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}
/* Kulmat. */
.tp-frad-rounded{border-radius:calc(var(--radius) + 4px)}
.tp-frad-sharp{border-radius:0}
.tp-frad-pill{border-radius:26px}
@media(max-width:767px){.tp-float-wrap>.tp-floating{position:static;width:auto;transform:none;margin:16px 0 0}}
/* Verkkokaupan tuoteruudukko + ostoskori/kassa (WIDGET_SHOP_SCRIPT hydratoi julkaistulla sivulla). */
.tp-shop-grid{display:grid;gap:var(--gap);margin-top:14px;grid-template-columns:repeat(3,minmax(0,1fr))}
.tp-shop-cols-1{grid-template-columns:1fr}.tp-shop-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.tp-shop-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.tp-shop-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:900px){.tp-shop-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.tp-shop-grid{grid-template-columns:1fr}}
.tp-shop-msg{color:var(--muted);padding:10px 0;grid-column:1/-1}
/* Kategoriavalikko (top/left) + haku. Värit tulevat data-navbg/navfg → inline. */
.tp-shop-layout{display:block}
.tp-shop-catnav{margin:14px 0 4px;border-radius:12px;padding:2px}
.tp-shop-cat-top .tp-shop-catnav{padding:12px 14px;background:color-mix(in srgb,var(--surface) 100%,transparent);border:1px solid var(--border)}
.tp-shop-cat-left .tp-shop-layout{display:flex;gap:clamp(16px,3vw,32px);align-items:flex-start}
.tp-shop-cat-left .tp-shop-catnav{flex:0 0 208px;width:208px;position:sticky;top:16px;padding:14px;background:color-mix(in srgb,var(--surface) 100%,transparent);border:1px solid var(--border)}
.tp-shop-cat-left .tp-shop-grid{flex:1;min-width:0;margin-top:0}
.tp-cat-search{margin-bottom:12px}
.tp-cat-searchinput{width:100%;box-sizing:border-box;padding:9px 12px;border:1px solid color-mix(in srgb,currentColor 30%,transparent);border-radius:10px;background:color-mix(in srgb,currentColor 6%,transparent);color:inherit;font:inherit;font-size:14px}
.tp-cat-list{display:flex;flex-wrap:wrap;gap:6px}
.tp-cat-item,.tp-cat-sub{font:inherit;font-size:14px;cursor:pointer;border:1px solid color-mix(in srgb,currentColor 32%,transparent);background:transparent;color:inherit;padding:7px 13px;border-radius:999px;line-height:1;white-space:nowrap;transition:background .12s,color .12s,border-color .12s}
.tp-cat-item:hover,.tp-cat-sub:hover{border-color:currentColor}
.tp-cat-item.on,.tp-cat-sub.on{background:var(--primary);color:var(--primaryText,#fff);border-color:transparent}
.tp-cat-haskids::after{content:"▾";font-size:.75em;margin-left:5px;opacity:.7}
.tp-cat-group{position:relative}
.tp-shop-cat-top .tp-cat-subs{position:absolute;top:100%;left:0;z-index:40;display:none;flex-direction:column;min-width:150px;margin-top:6px;padding:6px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 14px 34px -18px rgba(0,0,0,.5)}
.tp-shop-cat-top .tp-cat-group:hover .tp-cat-subs,.tp-shop-cat-top .tp-cat-group.on .tp-cat-subs{display:flex}
.tp-shop-cat-top .tp-cat-subs .tp-cat-sub{color:var(--text)}
.tp-shop-cat-left .tp-cat-list{flex-direction:column;align-items:stretch;gap:5px}
.tp-shop-cat-left .tp-cat-item{text-align:left;border-radius:9px}
.tp-shop-cat-left .tp-cat-subs{display:none;flex-direction:column;gap:4px;margin:2px 0 6px 12px}
.tp-shop-cat-left .tp-cat-group.on .tp-cat-subs{display:flex}
.tp-shop-cat-left .tp-cat-sub{text-align:left;font-size:13px;padding:5px 11px;border-radius:8px}
@media(max-width:700px){.tp-shop-cat-left .tp-shop-layout{flex-direction:column}.tp-shop-cat-left .tp-shop-catnav{position:static;width:100%;flex-basis:auto}.tp-shop-cat-left .tp-cat-list{flex-direction:row;flex-wrap:wrap}.tp-shop-cat-left .tp-cat-subs{margin-left:0}}
/* Tuote-popup (modaali): klikkaa korttia → koko tuote + täysi kuvaus. */
.tp-shop-card-view{cursor:pointer}
.tp-pmodal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px}
.tp-pmodal[hidden]{display:none}
.tp-pmodal-back{position:absolute;inset:0;background:rgba(0,0,0,.55);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
.tp-pmodal-card{position:relative;z-index:1;display:flex;flex-direction:row;max-width:820px;width:100%;max-height:88vh;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:0 30px 80px -30px rgba(0,0,0,.6)}
.tp-pmodal-x{position:absolute;top:10px;right:12px;z-index:2;border:none;background:rgba(0,0,0,.4);color:#fff;width:34px;height:34px;border-radius:999px;font-size:20px;line-height:1;cursor:pointer}
.tp-pmodal-media{position:relative;flex:1 1 46%;min-width:0;background:color-mix(in srgb,var(--muted) 10%,transparent);display:flex;align-items:center;justify-content:center}
.tp-pmodal-media img{width:100%;height:100%;max-height:88vh;object-fit:cover;display:block}
.tp-pmodal-ic{font-size:80px}
.tp-pmodal-media .tp-shop-badge{top:12px;left:12px}
.tp-pmodal-body{flex:1 1 54%;min-width:0;padding:26px 30px;overflow-y:auto;display:flex;flex-direction:column;gap:10px}
.tp-pmodal-cat{font-size:12.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.tp-pmodal-name{margin:0;font-size:24px}
.tp-pmodal-price{font-size:20px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.tp-pmodal-desc{margin:2px 0 0;color:var(--text);line-height:1.6}
.tp-pmodal-body .tp-pmodal-add{margin-top:auto;align-self:flex-start;padding:12px 24px}
body.tp-pmodal-open{overflow:hidden}
@media(max-width:640px){.tp-pmodal-card{flex-direction:column;max-height:92vh}.tp-pmodal-media{flex-basis:auto;max-height:38vh}.tp-pmodal-media img{max-height:38vh}}
.tp-shop-card{position:relative;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}
.tp-shop-badge{position:absolute;top:10px;left:10px;z-index:2;background:var(--accent,#e11d48);color:#fff;font-weight:700;font-size:12.5px;line-height:1;padding:5px 8px;border-radius:999px;box-shadow:0 4px 12px -4px rgba(0,0,0,.4)}
/* Alennus tyylikkäästi: EI yliviivattua hintalappua. Vanha hinta pieni & haalea
   ("norm."-etiketti), alennettu hinta iso korostusvärillä; -%-merkki on kortin
   kulmassa (tp-shop-badge). */
.tp-shop-price-old{color:var(--muted);font-weight:500;font-size:.82em;opacity:.85}
.tp-shop-price-old::before{content:"norm. "}
.tp-shop-price-sale{color:var(--accent,var(--primary));font-weight:800;font-size:1.12em}
.tp-shop-card:hover{transform:translateY(-2px);box-shadow:0 14px 30px -18px rgba(0,0,0,.4);border-color:color-mix(in srgb,var(--primary) 40%,var(--border))}
.tp-shop-card-img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}
.tp-shop-card-noimg{width:100%;aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;font-size:38px;background:color-mix(in srgb,var(--muted) 12%,transparent)}
.tp-shop-card-noimg-img{padding:0}
.tp-shop-card-noimg-img img{width:100%;height:100%;object-fit:cover;display:block}
.tp-shop-card-body{display:flex;flex-direction:column;gap:6px;padding:14px 16px 16px;flex:1}
.tp-shop-card-name{font-size:16px;margin:0}
.tp-shop-card-desc{margin:0;color:var(--muted);font-size:13.5px;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* Jalka: hinta OMALLA rivillä, "Lisää koriin" -painike OMALLA rivillä (mahtuu
   kapeaankin kelluvaan korttiin). */
.tp-shop-card-foot{display:flex;flex-direction:column;align-items:stretch;gap:10px;margin-top:auto;padding-top:10px}
.tp-shop-card-price{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-weight:700;color:var(--primary);line-height:1.15}
.tp-shop-sold{align-self:flex-start;font-size:13px;color:var(--muted);font-weight:600}
.tp-shop-add{width:100%;padding:10px 16px;font-size:14px}
/* Nostowidget (Suosituimmat/Suosittelemme) yhdessä sarakkeessa = kompakti
   vaakarivi (pikkukuva + nimi + hinta + nappi). Sopii kelluvaksi heron päälle
   ilman että kolme tuotetta venyttää widgetin liian korkeaksi. */
.tp-shop-featured .tp-shop-cols-1{gap:10px}
.tp-shop-featured .tp-shop-cols-1 .tp-shop-card{flex-direction:row;align-items:stretch}
.tp-shop-featured .tp-shop-cols-1 .tp-shop-card-img,.tp-shop-featured .tp-shop-cols-1 .tp-shop-card-noimg{width:92px;min-width:92px;aspect-ratio:1;height:auto}
.tp-shop-featured .tp-shop-cols-1 .tp-shop-card-body{padding:9px 12px;gap:3px}
.tp-shop-featured .tp-shop-cols-1 .tp-shop-card-desc{display:none}
.tp-shop-featured .tp-shop-cols-1 .tp-shop-card-name{font-size:14.5px}
.tp-shop-featured .tp-shop-cols-1 .tp-shop-card-foot{flex-direction:row;align-items:center;justify-content:space-between;gap:8px;padding-top:4px}
.tp-shop-featured .tp-shop-cols-1 .tp-shop-add{width:auto;padding:7px 12px;font-size:13px}
.tp-shop-featured .tp-shop-cols-1 .tp-shop-badge{top:6px;left:6px;font-size:11px;padding:3px 6px}
@media(max-width:560px){.tp-shop-featured .tp-shop-cols-1 .tp-shop-card-img,.tp-shop-featured .tp-shop-cols-1 .tp-shop-card-noimg{width:76px;min-width:76px}}
@keyframes tpshsk{0%,100%{opacity:.5}50%{opacity:.9}}
.tp-shop-sk{aspect-ratio:4/3;border-radius:var(--radius);background:color-mix(in srgb,var(--muted) 20%,transparent);animation:tpshsk 1.1s ease-in-out infinite}
/* Kelluva korinappula */
.tp-cart-fab{position:fixed;right:20px;bottom:20px;z-index:2147482000;display:flex;align-items:center;gap:8px;padding:12px 16px;border:none;border-radius:999px;background:var(--primary);color:var(--primaryText);cursor:pointer;box-shadow:0 12px 30px -10px color-mix(in srgb,var(--primary) 70%,transparent);font-family:inherit;font-weight:700;font-size:15px}
.tp-cart-fab-ic{font-size:18px;line-height:1}
.tp-cart-fab-count{min-width:20px;height:20px;padding:0 5px;display:none;align-items:center;justify-content:center;border-radius:999px;background:var(--surface);color:var(--text);font-size:12px;font-weight:700}
/* Vetolaatikko + tausta */
.tp-cart-back{position:fixed;inset:0;z-index:2147482500;background:rgba(0,0,0,.4);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
.tp-cart-back[hidden]{display:none}
.tp-cart{position:fixed;top:0;right:0;bottom:0;z-index:2147483000;width:min(400px,100vw);display:flex;flex-direction:column;background:var(--bg);color:var(--text);box-shadow:-20px 0 60px -20px rgba(0,0,0,.5);font-family:var(--bFont)}
.tp-cart[hidden]{display:none}
.tp-cart-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 18px;border-bottom:1px solid var(--border);font-size:16px}
.tp-cart-head strong{flex:1;text-align:center;font-family:var(--hFont)}
.tp-cart-x{background:none;border:none;font-size:24px;line-height:1;color:var(--muted);cursor:pointer;padding:0;width:28px}
.tp-cart-x:hover{color:var(--text)}
.tp-cart-backbtn{background:none;border:none;color:var(--primary);cursor:pointer;font-size:14px;font-weight:600;padding:0}
.tp-cart-empty{padding:28px 18px;color:var(--muted)}
.tp-cart-items{flex:1;overflow-y:auto;padding:12px 18px;display:flex;flex-direction:column;gap:12px}
.tp-cart-item{display:flex;align-items:center;gap:12px}
.tp-cart-item-img{width:56px;height:56px;border-radius:10px;object-fit:cover;flex:0 0 56px}
.tp-cart-item-noimg{display:flex;align-items:center;justify-content:center;font-size:22px;background:color-mix(in srgb,var(--muted) 14%,transparent)}
.tp-cart-item-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.tp-cart-item-name{font-weight:600;font-size:14.5px}
.tp-cart-item-price{color:var(--muted);font-size:13.5px}
.tp-cart-qty{display:flex;align-items:center;gap:8px}
.tp-cart-qty button{width:28px;height:28px;border:1px solid var(--border);background:var(--surface);border-radius:8px;cursor:pointer;font-size:16px;line-height:1;color:var(--text)}
.tp-cart-qty button:hover{border-color:var(--primary);color:var(--primary)}
.tp-cart-qty button:disabled{opacity:.4;cursor:not-allowed;border-color:var(--border);color:var(--muted)}
.tp-cart-item-stock{display:block;font-size:12px;color:var(--accent,#c0392b);margin-top:3px}
.tp-cart-qn{min-width:20px;text-align:center;font-weight:600}
.tp-cart-foot{border-top:1px solid var(--border);padding:16px 18px;display:flex;flex-direction:column;gap:12px}
.tp-cart-total{display:flex;align-items:center;justify-content:space-between;font-size:16px;padding-top:8px;border-top:1px solid var(--border)}
.tp-cart-method{display:flex;flex-direction:column;gap:6px;padding-bottom:6px}
.tp-cart-pay{display:flex;flex-direction:column;gap:6px;margin:2px 0 4px}
.tp-cart-payopt{display:flex;align-items:center;gap:8px;font-size:14px;cursor:pointer}
.tp-cart-method label{display:flex;align-items:center;gap:8px;font-size:14px;cursor:pointer}
.tp-cart-checkout{width:100%;justify-content:center}
.tp-cart-summary{padding:16px 18px;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:8px}
.tp-cart-sumrow{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:14px;color:var(--muted)}
.tp-cart-sumtotal{color:var(--text);font-size:15.5px;padding-top:8px;border-top:1px solid var(--border);margin-top:2px}
.tp-cart-form{max-width:none;padding:16px 18px;overflow-y:auto}
.tp-cart-form .tp-btn{align-self:stretch;justify-content:center;margin-top:8px}
.tp-cart-note{color:var(--muted);font-size:12.5px;margin:8px 0 0;text-align:center}
.tp-cart-done{padding:32px 20px;text-align:center}
.tp-cart-done p{color:var(--muted);margin:8px 0 0}
.tp-cart-done-ic{width:52px;height:52px;border-radius:50%;background:var(--primary);color:var(--primaryText);display:flex;align-items:center;justify-content:center;font-size:26px;margin:0 auto}
/* Full-bleed hero: murtautuu ulos keskitetystä max-width-containerista koko ruudun leveyteen; sisältö pysyy luettavan levyisenä. */
.tp-hero-fullbleed{width:100vw;margin-left:calc(50% - 50vw);border-radius:0}
.tp-hero-fullbleed .tp-hero-inner{max-width:var(--maxw);margin-left:auto;margin-right:auto}
.tp-footer{background:var(--surface);border-top:1px solid var(--border);padding:var(--section) clamp(16px,4vw,40px);display:flex;flex-wrap:wrap;gap:40px}.tp-footer h4{font-size:14px;margin-bottom:8px}.tp-footer p{margin:0;color:var(--muted);font-size:14px;white-space:pre-line}
.tp-foot-links{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:6px}.tp-foot-links a{color:var(--muted);font-size:14px;text-decoration:none}.tp-foot-links a:hover{color:var(--text)}
.tp-foot-social{display:flex;gap:14px;flex-wrap:wrap}.tp-foot-social a{color:var(--muted);font-size:13px;text-decoration:none;text-transform:capitalize}.tp-foot-social a:hover{color:var(--primary)}
.tp-foot-copy{color:var(--muted);font-size:13px;width:100%}
.tp-footer-centered{flex-direction:column;align-items:center;text-align:center;gap:16px}.tp-footer-centered .tp-foot-cols{display:flex;flex-wrap:wrap;gap:40px;justify-content:center}.tp-foot-tagline{font-size:18px;color:var(--text);max-width:640px}
.tp-footer-custom{display:block}.tp-footer-custom ul{margin:0;padding-left:18px}.tp-footer-custom a{color:var(--primary);text-decoration:none}.tp-footer-custom a:hover{text-decoration:underline}
.tp-langs{display:flex;gap:8px;align-items:center}.tp-langs a{font-size:12.5px;font-weight:600;color:var(--muted);text-decoration:none;padding:3px 8px;border:1px solid var(--border);border-radius:999px}.tp-langs a.active{color:var(--primaryText);background:var(--primary);border-color:var(--primary)}
.tp-logo{max-height:36px;width:auto;display:block}
.tp-hero-logo{max-height:clamp(150px,20vw,300px);width:auto;max-width:100%;display:block;margin:0 0 28px}.tp-hero-bg .tp-hero-logo{filter:brightness(0) invert(1)}.tp-hero-centered .tp-hero-inner{display:flex;flex-direction:column;align-items:center;text-align:center}.tp-hero-centered .tp-hero-logo{margin:0 auto 28px}.tp-hero-centered h1{max-width:22ch}.tp-hero-centered .tp-lead{margin-left:auto;margin-right:auto}.tp-hero-centered .tp-ctas{justify-content:center}.tp-anchor{scroll-margin-top:90px}html{scroll-behavior:smooth}
/* Hero-sisällön tasaus (align) + palstotus (contentWidth): sisältö toiselle
   laidalle, jotta toiselle jää tilaa esim. kelluvalle widgetille. */
.tp-hero-al-left .tp-hero-inner{display:flex;flex-direction:column;align-items:flex-start;text-align:left;margin-left:0;margin-right:auto}
.tp-hero-al-left .tp-hero-inner .tp-ctas{justify-content:flex-start}
.tp-hero-al-left .tp-hero-logo{margin:0 0 28px}
.tp-hero-al-center .tp-hero-inner{display:flex;flex-direction:column;align-items:center;text-align:center;margin-left:auto;margin-right:auto}
.tp-hero-al-center .tp-hero-inner .tp-ctas{justify-content:center}
.tp-hero-al-center .tp-hero-logo{margin:0 auto 28px}
.tp-hero-al-right .tp-hero-inner{display:flex;flex-direction:column;align-items:flex-end;text-align:right;margin-left:auto;margin-right:0}
.tp-hero-al-right .tp-hero-inner .tp-ctas{justify-content:flex-end}
.tp-hero-al-right .tp-hero-logo{margin:0 0 28px auto}
.tp-hero-cw-narrow .tp-hero-inner{max-width:min(44%,460px)}
.tp-hero-cw-half .tp-hero-inner{max-width:min(52%,600px)}
.tp-hero-cw-wide .tp-hero-inner{max-width:82%}
@media(max-width:820px){.tp-hero-cw-narrow .tp-hero-inner,.tp-hero-cw-half .tp-hero-inner,.tp-hero-cw-wide .tp-hero-inner{max-width:100%}}
/* Kiillotus: hienovarainen hero-liike (Ken Burns), micro-interaktiot, focus-tila */
@keyframes tp-kenburns{0%{background-position:48% 42%}100%{background-position:52% 58%}}
.tp-hero-bg{animation:tp-kenburns 26s ease-in-out infinite alternate}
.tp-imagetext .tp-it-img{transition:transform .5s ease}.tp-imagetext:hover .tp-it-img{transform:scale(1.03)}
.tp-sv-card,.tp-price-card,.tp-tm-card,.tp-stat{transition:transform .18s ease,box-shadow .18s ease}
.tp-sv-card:hover,.tp-price-card:hover,.tp-tm-card:hover{transform:translateY(-3px);box-shadow:0 12px 30px -12px rgba(0,0,0,.22)}
.tp-btn{transition:transform .15s ease,box-shadow .18s ease,background .15s ease,opacity .15s ease}
a,button{transition:color .15s ease}
:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:2px}
@media(prefers-reduced-motion:reduce){.tp-hero-bg{animation:none}.tp-imagetext .tp-it-img,.tp-sv-card,.tp-price-card,.tp-tm-card,.tp-stat,.tp-btn{transition:none}}