/* fonts served from this site (Lora, Onest; SIL Open Font License), no request to Google */
@font-face{font-family:'Lora';font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/lora-cyrillic-ext.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F}
@font-face{font-family:'Lora';font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/lora-cyrillic.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'Lora';font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/lora-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Lora';font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/lora-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Onest';font-style:normal;font-weight:400 600;font-display:swap;src:url(/assets/fonts/onest-cyrillic-ext.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F}
@font-face{font-family:'Onest';font-style:normal;font-weight:400 600;font-display:swap;src:url(/assets/fonts/onest-cyrillic.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'Onest';font-style:normal;font-weight:400 600;font-display:swap;src:url(/assets/fonts/onest-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Onest';font-style:normal;font-weight:400 600;font-display:swap;src:url(/assets/fonts/onest-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
/* JK Beauty Lab design tokens. docs/DESIGN.md explains each one. */
:root{
/* colour: blush page, cream panels, plum ink, one gold accent */
--blush:#F5E6E1;--cream:#FDF8F5;--rose:#EBD2CB;--ink:#2E1F26;--mauve:#8A4F58;--gold:#B08D57;
--on-ink-muted:#E9D9D4;--on-ink-fill:rgba(253,248,245,.08);--cream-veil:rgba(253,248,245,.7);
--line:rgba(46,31,38,.18);--track:rgba(46,31,38,.06);--zone-off:#E4C6BE;--line-soft:rgba(46,31,38,.14);--line-strong:rgba(46,31,38,.4);--gold-soft:rgba(176,141,87,.55);
/* type: Lora for headings, prices and the wordmark, Onest for everything else */
--font-display:'Lora',Georgia,serif;--font-body:'Onest',system-ui,sans-serif;
--fs-s:16px;--fs-m:17px;--fs-l:19px;--fs-xl:24px;--fs-2xl:28px;--fs-h2:clamp(32px,4.4cqw,54px);--fs-display:clamp(50px,8cqw,104px);
/* space: 4 px steps up to 16, then doubling */
--gutter:24px;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--s-9:96px;
/* shape: soft 12 px corners for panels and photos, round ends for buttons and chips, the arch for the hero photo */
--r:12px;--r-pill:999px;--r-arch:999px 999px 12px 12px;
}
body{margin:0;background:var(--blush)}
@media (max-width:420px){:root{--gutter:20px}}
/* every section: one width, one gutter, one vertical rhythm (64 px on phones, 96 px from 768 px) */
.jk-wrap{max-width:1208px;margin:0 auto;padding-inline:var(--gutter);box-sizing:border-box}
.jk-sec{padding-block:var(--s-8)}
@media (min-width:768px){.jk-sec{padding-block:var(--s-9)}}
button{font-family:inherit}
button:focus-visible,a:focus-visible{outline:2px solid var(--mauve);outline-offset:3px}
.zone{transition:fill .3s ease,stroke .3s ease}
.hit{position:absolute;background:transparent;border:0;padding:0;margin:0;cursor:pointer;border-radius:10px}
.hit:hover{background:rgba(176,141,87,.22)}
@keyframes jk-grow{from{transform:scaleY(.04);opacity:.15}to{transform:scaleY(1);opacity:1}}
@media (prefers-reduced-motion:no-preference){
@supports (animation-timeline:view()){
.strand{transform-origin:28px 56px;animation:jk-grow linear both;animation-timeline:view();animation-range:entry 5% entry 80%}
}
}
@container (max-width: 720px){.ph{display:flex;gap:20px;align-items:flex-start;flex-basis:100%}.ph-d{flex:0 0 96px}.ph-t{flex:1;min-width:0}.ph-t h3{margin-top:30px!important}}
@keyframes jk-pulse{from{opacity:.6;transform:scale(.5)}to{opacity:0;transform:scale(1.6)}}
@media (prefers-reduced-motion:no-preference){.pulse{transform-box:fill-box;transform-origin:center;animation:jk-pulse 2.4s ease-out infinite}}
@media (prefers-reduced-motion:reduce){.zone{transition:none}}
.jk-bar,.jk-bar-space{display:none}
@media (max-width:767px){
.jk-bar{display:block;position:fixed;left:0;right:0;bottom:0;z-index:20;padding:0 max(12px,env(safe-area-inset-right)) calc(12px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));pointer-events:none;font-family:var(--font-body);line-height:1.5;color:var(--ink)}
.jk-bar-space{display:block;height:96px;background:var(--blush)}
}
/* buttons: one dark primary per area, outlined secondary, light primary on ink */
.jk-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);box-sizing:border-box;min-height:52px;padding:0 var(--s-5);border:1px solid var(--ink);border-radius:var(--r-pill);font-family:var(--font-body);font-size:var(--fs-m);font-weight:600;line-height:1.2;text-align:center;text-decoration:none;white-space:nowrap}
.jk-btn--primary{background:var(--ink);color:var(--cream)}
.jk-btn--secondary{background:transparent;color:var(--ink)}
.jk-btn--light{background:var(--cream);color:var(--ink);border-color:var(--cream)}
.jk-btn:hover{filter:brightness(1.15)}
.jk-btn--secondary:hover{background:var(--cream);filter:none}
@media (max-width:420px){.jk-hero-cta>a{flex:1 1 100%}.jk-offer{display:flex;width:100%}}
/* hero: copy left, photo right; everything on the 8 px grid */
.jk-hero{max-width:1208px;margin:0 auto;padding:var(--s-6) var(--gutter) var(--s-8);box-sizing:border-box;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-7) var(--s-8)}
.jk-hero-copy{flex:1 1 440px;min-width:0}
.jk-hero-cta{margin-top:var(--s-4);display:flex;flex-wrap:wrap;gap:var(--s-3)}
/* first-visit offer: a soft pill above the buttons, the percentage in a rose disc */
/* first-visit offer: a coupon, not a button. Rose fill, dashed edge, the percentage stamped in ink */
.jk-offer{display:inline-flex;align-items:center;gap:var(--s-3);max-width:100%;box-sizing:border-box;margin-top:var(--s-6);padding:var(--s-2) var(--s-5) var(--s-2) var(--s-2);background:var(--rose);border:1px dashed var(--mauve);border-radius:var(--r);color:var(--ink);text-decoration:none;font-size:var(--fs-s);line-height:1.3}
.jk-offer:hover{border-style:solid}
.jk-offer-pct{flex:0 0 auto;position:relative;display:flex;align-items:center;justify-content:center;width:64px;height:64px;border-radius:50%;background:var(--ink);color:var(--cream);font-family:var(--font-display);font-size:var(--fs-xl);white-space:nowrap;transform:rotate(-8deg)}
.jk-offer-pct small{display:block;font-family:var(--font-body);font-size:var(--fs-s);line-height:1;margin-bottom:2px}
.jk-offer-pct:has(small){flex-direction:column;width:76px;height:76px;line-height:1}
/* crossed-out reference price beside the first-visit price; smaller and mauve so the paid price stays the main number */
.jk-was{margin-right:var(--s-2);font-size:var(--fs-l);color:var(--mauve);text-decoration-thickness:1px}
.jk-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.jk-offer-pct::after{content:"";position:absolute;inset:4px;border:1px dashed var(--gold);border-radius:50%}
.jk-offer-tag{font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.jk-offer-text{display:flex;flex-direction:column;min-width:0;font-weight:500}
.jk-offer-more{color:var(--ink);font-weight:400;text-decoration:underline;text-decoration-color:var(--ink);text-decoration-thickness:1px;text-underline-offset:4px}
/* four facts under the photo: two by two, one row of four from 960 px */
.jk-facts{flex:1 1 100%;list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-3)}
@media (min-width:960px){.jk-facts{grid-template-columns:repeat(4,minmax(0,1fr))}}
.jk-fact{display:flex;flex-direction:column;gap:var(--s-3);padding:var(--s-4);background:var(--cream-veil);border-radius:var(--r);font-size:var(--fs-s);font-weight:500;line-height:1.35;hyphens:manual;overflow-wrap:break-word}
.jk-fact svg{color:var(--gold)}
/* the address fact links to the location block; the whole card is the tap target */
.jk-fact{position:relative}
.jk-fact-link{color:var(--ink);text-decoration:underline;text-decoration-color:var(--gold);text-decoration-thickness:1px;text-underline-offset:6px}
.jk-fact-link::after{content:"";position:absolute;inset:0;border-radius:var(--r)}
/* hero art: rose arch behind, gold arch outline, the photo, a round detail photo, the price disc */
.jk-hero-art{position:relative;flex:1 1 360px;min-width:0;max-width:540px;margin:0 auto}
.jk-hero-rose{position:absolute;top:14%;left:-16px;right:22%;bottom:-16px;background:var(--rose);border-radius:var(--r-arch)}
@media (min-width:960px){.jk-hero-rose{left:calc(-1 * var(--s-7));bottom:calc(-1 * var(--s-6))}}
.jk-hero-outline{position:absolute;top:-14px;left:14px;right:-14px;bottom:14px;border:1px solid var(--gold);border-radius:var(--r-arch)}
.jk-hero-photo{position:relative;display:block;width:100%;height:auto;aspect-ratio:4/5;max-height:640px;object-fit:cover;object-position:50% 25%;border-radius:var(--r-arch);background:var(--rose)}
.jk-hero-disc{position:absolute;left:-12px;bottom:9%;margin:0;width:136px;height:136px;box-sizing:border-box;border-radius:50%;background:var(--cream);border:1px solid var(--gold);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;line-height:1.2;color:var(--mauve);font-size:var(--fs-s)}
.jk-hero-disc strong{font-family:var(--font-display);font-weight:400;font-size:var(--fs-xl);color:var(--ink);white-space:nowrap}
@media (max-width:420px){.jk-hero-disc{width:120px;height:120px}}
/* the one moment of motion: the gold arch draws itself upward once on load */
@keyframes jk-draw{from{clip-path:inset(100% 0 0 0)}to{clip-path:inset(0 0 0 0)}}
@media (prefers-reduced-motion:no-preference){.jk-hero-outline{animation:jk-draw 1.4s cubic-bezier(.2,.7,.2,1) .2s both}}
/* segmented control, iOS style: a soft track, the chosen part raised in cream */
.jk-seg{display:flex;width:100%;box-sizing:border-box;padding:3px;gap:2px;background:var(--track);border-radius:var(--r-pill)}
.jk-seg--inline{display:inline-flex;width:auto}
.jk-seg button{flex:1 1 0;min-height:44px;padding:0 var(--s-4);border:0;border-radius:var(--r-pill);background:transparent;color:var(--ink);font-family:var(--font-body);font-size:var(--fs-s);font-weight:600;white-space:nowrap;cursor:pointer;transition:background-color .2s,box-shadow .2s}
.jk-seg button[aria-pressed="true"]{background:var(--cream);box-shadow:0 1px 3px rgba(46,31,38,.14),0 0 0 .5px rgba(46,31,38,.08)}
.jk-seg--sm button{padding:0 var(--s-3);font-weight:500}
@media (prefers-reduced-motion:reduce){.jk-seg button{transition:none}}
/* body map: a calm card, the view switch on top, a tap hint and a two-item legend below */
.jk-map{flex:0 0 auto;width:280px;max-width:100%;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;padding:var(--s-4) var(--s-4) var(--s-5);background:var(--blush);border-radius:var(--r)}
.jk-map>.jk-seg{max-width:240px}
.jk-map-figure{max-width:200px;margin-top:var(--s-5)}
.jk-map-hint{display:flex;align-items:center;gap:var(--s-2);margin:var(--s-5) 0 0;font-size:var(--fs-s);font-weight:500}
.jk-map-hint svg{color:var(--gold)}
.jk-map-legend{display:flex;gap:var(--s-4);margin:var(--s-2) 0 0;padding:0;list-style:none;font-size:var(--fs-s);color:var(--mauve)}
.jk-map-legend li{display:flex;align-items:center;gap:6px}
.jk-dot{width:12px;height:12px;box-sizing:border-box;border-radius:50%}
.jk-dot--on{background:var(--gold)}
.jk-dot--off{background:var(--zone-off);border:1px dashed var(--mauve)}
.jk-map-pulse{position:absolute;left:50%;top:42%;width:44px;height:44px;margin:-22px 0 0 -22px;box-sizing:border-box;border:2px solid var(--gold);border-radius:50%;pointer-events:none;opacity:0}
@keyframes jk-tap{0%{transform:scale(.4);opacity:.9}100%{transform:scale(1.6);opacity:0}}
@media (prefers-reduced-motion:no-preference){.jk-map-pulse{animation:jk-tap 1.6s ease-out .8s 3}}
@media (max-width:640px){.jk-map{width:100%}}
/* round icon button: WhatsApp in the capsule and the header */
.jk-round{flex:0 0 48px;width:48px;height:48px;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--cream);border:1px solid var(--line-soft);color:var(--ink);text-decoration:none}
.jk-round:hover{border-color:var(--gold)}
/* phone: a floating frosted capsule, the one place with a shadow because it floats over content */
.jk-capsule,.jk-sheet{pointer-events:auto;max-width:480px;margin:0 auto;box-sizing:border-box}
.jk-capsule{display:flex;align-items:center;gap:var(--s-2);padding:6px;border-radius:var(--r-pill);background:var(--cream);border:1px solid var(--line-soft);box-shadow:0 8px 28px rgba(46,31,38,.16)}
@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.jk-capsule{background:rgba(253,248,245,.72);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}
.jk-capsule-sum{flex:1 1 auto;min-width:0;min-height:48px;padding:0 var(--s-2);background:none;border:0;text-align:left;font-family:var(--font-body);font-size:var(--fs-s);line-height:1.2;color:var(--ink);overflow:hidden;cursor:pointer}
.jk-capsule-book{flex:0 0 auto;min-height:48px;gap:var(--s-2);padding:0 var(--s-4)}
.jk-capsule-book--wide{flex:1 1 auto;padding:0 var(--s-5)}
.jk-capsule-sum{padding:0 var(--s-1)}
.jk-sheet{max-height:55vh;overflow:auto;margin-bottom:var(--s-2);padding:var(--s-5) var(--s-4) var(--s-2);background:var(--cream);border:1px solid var(--line-soft);border-radius:var(--r);box-shadow:0 8px 28px rgba(46,31,38,.16)}
@keyframes jk-rise{from{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:no-preference){.jk-capsule{animation:jk-rise .35s cubic-bezier(.2,.7,.2,1) both}}
/* header: static on phones; from 768 px it stays at the top, frosted, with booking once the hero is passed */
.jk-head-inner{max-width:1208px;margin:0 auto;padding:var(--s-4) var(--gutter);box-sizing:border-box;position:relative;display:flex;align-items:center;justify-content:space-between;gap:var(--s-4)}
.jk-head-inner::after{content:"";position:absolute;left:var(--gutter);right:var(--gutter);bottom:0;height:1px;background:var(--gold-soft)}
.jk-wordmark{display:flex;align-items:center;min-height:44px;font-family:var(--font-display);font-size:var(--fs-xl);color:var(--ink);text-decoration:none;white-space:nowrap}
@media (max-width:420px){.jk-wordmark{font-size:var(--fs-l)}.jk-head-inner{gap:var(--s-3)}}
.jk-sections,.jk-head-actions{display:none}
.jk-head-inner>nav:not(.jk-sections){margin-left:auto}
.jk-sections a{display:inline-flex;align-items:center;min-height:44px;padding:0 var(--s-3);color:var(--ink);text-decoration:none}
.jk-sections a:hover{text-decoration:underline;text-decoration-color:var(--gold);text-underline-offset:6px}
.jk-head-book{min-height:44px;padding:0 var(--s-5);font-size:var(--fs-s)}
.jk-head-actions .jk-round{flex-basis:44px;width:44px;height:44px}
@media (min-width:768px){
html{scroll-padding-top:88px}
.jk-head{position:sticky;top:0;z-index:30;background:var(--blush)}
@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.jk-head{background:rgba(245,230,225,.78);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}
.jk-head.is-scrolled{box-shadow:0 1px 0 var(--line)}
.jk-head.is-scrolled .jk-head-actions{display:flex;align-items:center;gap:var(--s-2)}
.jk-head-inner{padding-block:var(--s-3)}
}
@media (min-width:1024px){.jk-sections{display:flex;margin-left:auto}.jk-head-inner nav[aria-label]:not(.jk-sections){margin-left:var(--s-4)}}
/* Kombis: rows of one price list, not cards */
.jk-kombi{margin-top:var(--s-6);background:var(--cream);border:1px solid var(--gold);border-radius:var(--r)}
.jk-kombi-row{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-3) var(--s-5);align-items:center;padding:var(--s-5)}
.jk-kombi-row+.jk-kombi-row{border-top:1px solid var(--line-soft)}
.jk-kombi-row .jk-btn{min-height:48px}
@media (min-width:560px){.jk-kombi-row{grid-template-columns:minmax(0,1fr) auto}.jk-kombi-name{grid-column:1/-1}}
@media (min-width:960px){.jk-kombi-row{grid-template-columns:minmax(0,1fr) 260px auto}.jk-kombi-name{grid-column:auto}}
/* laser section: photo and copy side by side from 768 px; two facts in two columns */
.jk-device{background:var(--cream)}
.jk-tech{display:grid;gap:var(--s-5);grid-template-areas:"title" "media" "copy"}
.jk-tech-title{grid-area:title}
.jk-tech-media{grid-area:media}
.jk-tech-copy{grid-area:copy}
@media (min-width:768px){.jk-tech{grid-template-columns:5fr 7fr;grid-template-areas:"media title" "media copy";grid-template-rows:auto 1fr;column-gap:var(--s-8);row-gap:var(--s-6);align-items:start}}
/* the device: on phones a compact ID card (photo beside its label), from 768 px a framed photo with the label under it */
.jk-tech-media{margin:0;display:grid;grid-template-columns:120px minmax(0,1fr);align-items:center;gap:var(--s-4);padding-right:var(--s-4);background:var(--blush);border-radius:var(--r);overflow:hidden}
.jk-tech-media img{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;object-position:50% 55%;background:var(--rose)}
.jk-tech-media figcaption{display:flex;flex-direction:column;gap:var(--s-1)}
.jk-tech-model{font-family:var(--font-display);font-size:var(--fs-xl);line-height:1.1}
.jk-tech-maker{font-size:var(--fs-s);color:var(--mauve);line-height:1.35}
@media (min-width:768px){.jk-tech-media{grid-template-columns:minmax(0,1fr);gap:var(--s-4);padding:0;background:none;border-radius:0;overflow:visible;max-width:340px}.jk-tech-media img{border-radius:var(--r)}}
.jk-tech-facts{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-3)}
@media (min-width:560px){.jk-tech-facts{grid-template-columns:repeat(2,minmax(0,1fr))}}
.jk-tech-facts li{display:flex;flex-direction:column;gap:var(--s-1);padding:var(--s-4);background:var(--blush);border-radius:var(--r);font-size:var(--fs-s);line-height:1.4}
.jk-tech-facts svg{color:var(--gold);margin-bottom:var(--s-2)}
.jk-tech-k{font-weight:600;color:var(--ink)}
.jk-tech-v{color:var(--ink)}
/* reviews: heading with the Google Maps rating pill, then three cards; on phones a swipe row with the next card peeking in */
.jk-reviews-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--s-4) var(--s-6)}
.jk-rating{display:inline-flex;align-items:center;gap:var(--s-2);min-height:44px;padding:0 var(--s-4);background:var(--cream-veil);border:1px solid var(--line-soft);border-radius:var(--r-pill);color:var(--ink);font-size:var(--fs-s);text-decoration:none}
.jk-rating:hover{border-color:var(--gold)}
.jk-rating>svg:first-child{color:var(--gold)}
.jk-rating-score{font-family:var(--font-display);font-size:var(--fs-xl);line-height:1;font-variant-numeric:lining-nums}
.jk-reviews{list-style:none;margin:var(--s-6) 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-3)}
.jk-reviews:focus-visible{outline:2px solid var(--mauve);outline-offset:3px}
.jk-review{display:flex;flex-direction:column;gap:var(--s-4);padding:var(--s-5);background:var(--cream-veil);border-radius:var(--r)}
.jk-review-who{display:flex;align-items:center;gap:var(--s-3)}
.jk-review-avatar{flex:0 0 44px;width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--rose);font-family:var(--font-display);font-size:var(--fs-xl);line-height:1}
.jk-review-name{margin:0;font-weight:600;line-height:1.3}
.jk-review-stars{display:block;margin-top:var(--s-1);color:var(--gold)}
.jk-review-text{margin:0;flex:1 1 auto}
@media (max-width:767px){
.jk-review{padding:var(--s-5) var(--s-4)}
.jk-reviews{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:82%;overflow-x:auto;scroll-snap-type:x mandatory;margin-inline:calc(-1 * var(--gutter));padding-inline:var(--gutter);scroll-padding-inline:var(--gutter);scrollbar-width:none}
.jk-reviews::-webkit-scrollbar{display:none}
.jk-review{scroll-snap-align:start}
}
/* location under the reviews: one cream panel, address left, the map flush on the right (below on phones) */
.jk-find{margin-top:var(--s-7);display:grid;background:var(--cream);border-radius:var(--r);overflow:hidden}
.jk-find-copy{padding:var(--s-5)}
.jk-place-map{position:relative;height:240px;overflow:hidden;background:var(--rose)}
@media (max-width:420px){.jk-find-copy{padding-inline:var(--s-4)}}
@media (min-width:768px){.jk-find{grid-template-columns:5fr 7fr}.jk-find-copy{padding:var(--s-6)}.jk-place-map{height:auto;min-height:320px}}
/* location: gold pin beside the address, route and call as outlined buttons with icons */
.jk-place{display:flex;align-items:flex-start;gap:var(--s-3);margin-top:var(--s-4)}
.jk-place-pin{flex:0 0 auto;color:var(--gold);padding-top:4px}
.jk-place-actions{display:flex;flex-wrap:wrap;gap:var(--s-3);margin-top:var(--s-5)}
@media (max-width:420px){.jk-place-actions .jk-btn{flex:1 1 0;padding:0 var(--s-3)}}

/* scroll reveal: pure CSS, only where scroll timelines exist, never when motion is reduced. Content is visible without it */
@keyframes jk-reveal{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){
.jk-sec h2,.jk-fact,.jk-kombi-row,.jk-map,.ph,.jk-tech-media,.jk-tech-facts li,#booking-widget,.jk-reviews,.jk-place,.jk-place-actions,.jk-place-map{animation:jk-reveal linear both;animation-timeline:view();animation-range:entry 0% entry 55%}
}}
/* pressed state: a small, quick give under the finger */
.jk-btn,.jk-round,.jk-offer,#planner [role="group"] button{transition:transform .12s ease}
.jk-seg button{transition:background-color .2s,box-shadow .2s,transform .12s ease}
.jk-btn:active,.jk-round:active,.jk-seg button:active,.jk-offer:active,#planner [role="group"] button:active{transform:scale(.97)}
@media (prefers-reduced-motion:reduce){.jk-btn:active,.jk-round:active,.jk-seg button:active,.jk-offer:active,#planner [role="group"] button:active{transform:none}}
/* offer countdown: real end date from prices.json, digits do not jump */
.jk-offer-cd{display:inline-flex;align-items:center;gap:6px;margin:2px 0;font-weight:500;font-variant-numeric:tabular-nums;color:var(--mauve)}
.jk-cd{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin:var(--s-3) 0 0;font-size:var(--fs-s);color:var(--mauve)}
.jk-cd svg{flex:0 0 auto}
.jk-cd-time{font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink)}
/* offer popup: a sheet from the bottom on phones, a floating card from 768 px */
.jk-promo-backdrop{position:fixed;inset:0;z-index:40;background:rgba(46,31,38,.32)}
.jk-promo{position:fixed;z-index:41;left:0;right:0;bottom:0;margin:0 auto;max-width:480px;max-height:88vh;overflow:auto;box-sizing:border-box;padding:var(--s-6) var(--s-5) calc(var(--s-5) + env(safe-area-inset-bottom));background:var(--cream);border-radius:var(--r) var(--r) 0 0;box-shadow:0 -8px 32px rgba(46,31,38,.2);outline:none;font-family:var(--font-body);color:var(--ink);line-height:1.5}
@media (min-width:768px){.jk-promo{bottom:var(--s-6);border-radius:var(--r);box-shadow:0 12px 40px rgba(46,31,38,.24)}}
@media (prefers-reduced-motion:no-preference){.jk-promo{animation:jk-rise .35s cubic-bezier(.2,.7,.2,1) both}}
.jk-promo-close{position:absolute;top:var(--s-2);right:var(--s-2);width:44px;height:44px;display:flex;align-items:center;justify-content:center;padding:0;border:0;border-radius:50%;background:none;color:var(--ink);cursor:pointer}
.jk-promo-tag{margin:0;font-size:var(--fs-s);color:var(--mauve)}
.jk-promo-title{margin:var(--s-2) 0 0;padding-right:var(--s-6);font-family:var(--font-display);font-weight:400;font-size:var(--fs-2xl);line-height:1.15}
.jk-promo-seg{margin-top:var(--s-5)}
.jk-promo-list{display:flex;flex-direction:column;gap:var(--s-2);margin:var(--s-4) 0 0}
.jk-promo-kombi{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:var(--s-1) var(--s-3);width:100%;min-height:64px;box-sizing:border-box;padding:var(--s-3) var(--s-4);background:transparent;border:1px solid var(--line-soft);border-radius:var(--r);color:var(--ink);font-family:inherit;font-size:var(--fs-m);text-align:left;cursor:pointer;transition:transform .12s ease}
.jk-promo-kombi[aria-pressed="true"]{background:var(--blush);border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold)}
.jk-promo-kombi:active{transform:scale(.98)}
@media (prefers-reduced-motion:reduce){.jk-promo-kombi{transition:none}.jk-promo-kombi:active{transform:none}}
.jk-promo-dot{grid-row:1 / span 2;width:20px;height:20px;box-sizing:border-box;border:1px solid var(--line-strong);border-radius:50%}
.jk-promo-kombi[aria-pressed="true"] .jk-promo-dot{border:6px solid var(--ink)}
.jk-promo-kname{grid-column:2;min-width:0;font-weight:500;line-height:1.3}
.jk-promo-kprice{grid-column:2;font-family:var(--font-display);font-size:var(--fs-xl);line-height:1.2;white-space:nowrap}
.jk-promo-kprice .jk-was{margin-right:var(--s-1);font-size:var(--fs-s)}
.jk-promo-cta{display:flex;flex-direction:column;gap:var(--s-2);margin-top:var(--s-5)}
.jk-promo-cta .jk-btn{width:100%}
/* legal pages (Datenschutz): plain reading column on the same tokens */
.jk-legal-page{background:var(--blush);color:var(--ink);font-family:var(--font-body);font-size:var(--fs-m);line-height:1.6;min-height:100vh}
.jk-legal-back{display:inline-flex;align-items:center;min-height:44px;color:var(--ink);text-decoration:underline;text-decoration-color:var(--gold);text-decoration-thickness:1px;text-underline-offset:6px}
.jk-legal{max-width:72ch;padding-block:var(--s-7) var(--s-8)}
.jk-legal h1{margin:0;font-family:var(--font-display);font-weight:400;font-size:var(--fs-h2);line-height:1.1;letter-spacing:-.01em}
.jk-legal-date{margin:var(--s-3) 0 0;font-size:var(--fs-s);color:var(--mauve)}
.jk-legal h2{margin:var(--s-7) 0 0;font-family:var(--font-display);font-weight:400;font-size:var(--fs-xl);line-height:1.2}
.jk-legal p{margin:var(--s-3) 0 0}
.jk-legal ul{margin:var(--s-3) 0 0;padding-left:1.2em}
.jk-legal li+li{margin-top:var(--s-2)}
.jk-legal a{color:var(--ink);text-decoration-color:var(--gold);text-decoration-thickness:1px;text-underline-offset:4px;overflow-wrap:anywhere}
.jk-legal-foot{border-top:1px solid var(--line)}
.jk-legal-foot .jk-wrap{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--s-2) var(--s-5);padding-block:var(--s-5) var(--s-6);font-size:var(--fs-s)}
.jk-legal-foot p{margin:0;color:var(--mauve)}
.jk-legal-foot a{display:inline-flex;align-items:center;min-height:44px;color:var(--ink)}
