:root{--c:#00E0FF;--cd:#009cb2;--ac:#FF2D95;--ink:#16202b;--mut:#5a6b7b;--bg:#f6f8fb;--bg2:#eef3f8;--line:#e4eaf1;--card:#fff;
--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:72px;
--r-s:9px;--r:14px;--r-l:20px;--pill:999px;
--sh1:0 1px 2px #16202b10;--sh2:0 8px 24px #16202b16;--sh3:0 20px 48px #16202b22;
--t-display:clamp(30px,5.4vw,50px);--t-h1:clamp(25px,3.6vw,36px);--t-h2:clamp(21px,2.8vw,29px);--t-h3:18px;
--t-lead:clamp(17px,2.1vw,20px);--t-body:16.5px;--t-sm:14.5px;--w:1120px;--prose:66ch;--ease:.18s cubic-bezier(.4,0,.2,1);
--fw-h:700;--fw-b:400}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;font:var(--t-body)/1.65 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-weight:var(--fw-b);color:var(--ink);background:var(--page-bg,#fff)}
h1,h2,h3{line-height:1.14;letter-spacing:-.015em;font-weight:var(--fw-h)}
/* D-2294 — on a phone a heading's long word breaks, never overflows (a FI compound at a pack's pixel size) */
@media(max-width:760px){h1,h2,h3{overflow-wrap:anywhere}}
img{max-width:100%;height:auto}.wrap{max-width:var(--w);margin:0 auto;padding:0 var(--s5)}
/* ⛔⛔ D-1664 — an IMAGE-LED band is not bound by the PROSE measure. `--w` is measured
   from the original's text column (pons: 869px, correct for prose) and was then applied
   to everything: three cards inside it are 265px wide, where the original's own image
   rows measure 1276px. Defaults to `--w`, so a pack that never sets it is
   byte-identical; `_apply_measured_shape` sets it from the ORIGINAL's image rows. */
.wrap--wide{max-width:var(--w-wide,var(--w))}
/* D-1232 — chrome is not prose: the header/footer row may run wider than the reading measure.
   Absent --w-chrome ⇒ var(--w), byte-identical to before. */
.top>.wrap,.topbar>.wrap,.foot>.wrap{max-width:var(--w-chrome,var(--w))}
a{color:var(--link,var(--c));text-decoration:none}a:hover{text-decoration:underline}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:#fff;padding:8px;z-index:99}
.site-notice{background:var(--cd);color:#fff;font-weight:600;padding:10px 0;text-align:center}
.top{position:sticky;top:0;background:var(--top-bg,#ffffffeb);backdrop-filter:saturate(1.4) blur(8px);border-bottom:1px solid var(--line);z-index:20}
.bar{display:flex;align-items:center;gap:var(--s4);min-height:64px;flex-wrap:wrap;row-gap:var(--s2)}.brand{display:flex;align-items:center;font-weight:800;font-size:19px;letter-spacing:-.02em;color:var(--top-ink,var(--ink))}.logo{height:48px;max-height:48px;max-width:220px;object-fit:contain;width:auto}
.bar nav{margin-left:auto;display:flex;gap:var(--nav-gap,var(--s5));flex-wrap:wrap}.bar nav a,.bar nav summary.navlink{color:var(--top-ink,var(--ink));font-weight:600;font-size:14.5px;text-transform:var(--nav-case,none);letter-spacing:var(--nav-track,normal)}.bar nav a:hover,.bar nav summary.navlink:hover{color:var(--c);text-decoration:none}
/* ---- D-1189 hierarchical nav: CSS-only, no JS. D-1295: a LABEL group is a <details> —
   native toggle semantics carry touch, keyboard and aria. ---- */
.navgroup{position:relative;display:inline-flex;align-items:center}
summary.navlink{list-style:none;cursor:pointer}
summary.navlink::-webkit-details-marker{display:none}
/* ⛔⛔ D-1658 — THE PANEL'S VISIBILITY IS `.navsub`'s `display`, AND NOTHING ELSE. A closed
   <details> carries `::details-content{content-visibility:hidden}` in the UA sheet, and an
   author `display:flex` on the child CANNOT override it — content-visibility is not display.
   D-1295 predates that UA rule, so the D-1189 hover selector below went INERT under Blink
   without one line of our css changing. Measured in Chrome 152 on the pons build: with the
   details closed and the panel forced to `display:flex` it laid out at 210x377 and still
   painted nothing — `checkVisibility()` false, and a hit test inside it returned the <nav>.
   Three symptoms, this one cause: a group could only be TAPPED open (never hovered), the
   `open` a tap left behind was the ONLY thing that could show a panel so panels piled up
   over each other, and in the ≤760px drawer — where `.navsub` is `display:flex` outright —
   every grouped link was invisible, unhittable dead space (9 of pons' menus, on a phone). */
details.navgroup::details-content{content-visibility:visible}
.navsub{position:absolute;top:100%;left:0;min-width:210px;max-height:calc(100vh - 110px);overflow-y:auto;display:none;flex-direction:column;gap:0;background:var(--panel-bg,var(--bg2,#fff));border:1px solid var(--line);box-shadow:var(--sh2);padding:var(--s2) 0;z-index:30}
.navgroup:last-child>.navsub{left:auto;right:0}
/* D-1658 — the floating panel is a ≥761px thing; below it the drawer lists every child flat
   and `open` must not reach `.navsub` at all (a `[open]` selector outweighs the drawer's own
   `.navsub{display:flex}` on specificity, so it would win from anywhere). */
@media(min-width:761px){.navgroup[open]>.navsub{display:flex}}
/* D-1658 — where a pointer can hover, HOVER is the control and `open` is not: a summary
   keeps the focus a click gives it, so any rule honouring the click parks one panel over the
   next group's — which is exactly what the owner photographed. Keyboard opening is its own
   rule (an invalid `:has()` must not take the hover rule down with it) and asks for
   `:focus-visible`, which a mouse click does not set. */
@media(min-width:761px) and (hover:hover){.navgroup[open]>.navsub{display:none}
.navgroup:hover>.navsub{display:flex}}
@media(min-width:761px) and (hover:hover){.navgroup:has(:focus-visible)>.navsub{display:flex}}
.navsub a{padding:8px var(--s4);white-space:nowrap;font-weight:500;color:var(--panel-ink,var(--ink))}
.navsub a:hover{background:var(--bg)}
.navtoggle{display:none}.navcb{display:none}
/* D-1232 — the utility band + the overflow group's non-link parent */
.topbar{background:var(--bg2);border-bottom:1px solid var(--line)}
.topbar>.wrap{display:flex;justify-content:space-between;align-items:center;min-height:36px;padding-top:4px;padding-bottom:4px}
.topbar .social{display:flex;gap:var(--s3);margin:0}
.topbar .social a{color:var(--mut);display:inline-flex}.topbar .social a:hover{color:var(--c)}
.topbar .social svg{width:16px;height:16px}
.navmore{cursor:pointer}
.navmore>.navlink{color:var(--top-ink,var(--ink));font-weight:600;white-space:nowrap}
.navmore>.navlink::after{content:" ▾";font-size:11px;color:var(--mut)}
/* ⛔⛔ D-1205 — `.bar` is `flex-wrap:wrap`, so on a header with brand + 9-11 nav items + the
   language switcher, the CALL BUTTON is what gave way and it landed on a row of its own.
   Measured on a rendered fixture: bar height 160px, `.callbtn` top 112.8px — a second row
   holding one button. Above the mobile breakpoint the bar stays on ONE line and the NAV is what
   gives way (it wraps internally, which it already does), because a nav that takes two lines
   reads as a nav and a CTA on its own row reads as a mistake. */
@media(min-width:761px){.bar{flex-wrap:nowrap}.bar nav{flex:1 1 auto;min-width:0}
.callbtn{flex:0 0 auto}.calllink{flex:0 0 auto}.has-bookbtn .kit-floating-cta{display:none}}
.lang{display:flex;gap:var(--s2);font-size:13px}.lang a{color:var(--mut)}
.callbtn{display:inline-flex;align-items:center;gap:7px;background:var(--c);color:#16202b;padding:10px 16px;border-radius:var(--r-s);font-weight:700;white-space:nowrap;transition:background var(--ease)}.callbtn:hover{background:var(--cd);text-decoration:none}
/* D-1731 — ONE booking look: the header booking button and the floating pill wear the page's
   primary CTA (fill `--btn-bg` else the accent, ink `--btn-ink` else derived from that fill).
   Measured on pons: gold under WHITE in the header (2.2:1) beside pale gold under ink in the hero.
   `a.` out-ranks kit.css, which loads after this stylesheet. */
.callbtn.bookbtn,.callbtn.bookbtn:hover,a.kit-floating-cta,a.kit-floating-cta:hover{background:var(--btn-bg,var(--ac));color:var(--btn-ink,#16202b)}
.callbtn.bookbtn:hover{filter:brightness(1.03)}a.kit-floating-cta .kit-floating-cta__close{color:inherit;background:color-mix(in srgb,currentColor 16%,transparent)}
/* D-1626 — the phone as TEXT beside the booking button; both hide ≤760px (the pill and the
   .mobile-call bar carry the two doors there), the pill hides ≥761px (the sticky bar has it) */
.calllink{display:inline-flex;align-items:center;gap:6px;color:var(--top-ink,var(--ink));font-weight:600;font-size:14px;white-space:nowrap}.calllink:hover{text-decoration:underline}
.hero{background:linear-gradient(155deg,var(--c),var(--cd));background-size:cover;background-position:center;color:#fff;padding:clamp(64px,9vw,104px) 0 clamp(52px,7vw,84px)}
.hero.has-img{background-image:var(--hero-veil,linear-gradient(160deg,#00E0FFdd,#009cb2f0)),var(--hero-img)}
.hero.has-img{background-position:var(--hero-pos,center)}
/* D-1651 — the TILED hero the original uses: a small photograph repeated across the band
   instead of a large one cropped to it. `cover` on a 436px image is a blur; `repeat` is what
   the source site does, and it is why its pages have pictures where ours had none. */
.hero.has-img.hero--tile{background-repeat:no-repeat,repeat;background-size:cover,auto}
.hero{position:relative;overflow:hidden}.hero video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;pointer-events:none}
.hero iframe.hero-embed{position:absolute;inset:0;width:100%;height:100%;border:0;object-fit:cover;z-index:0;pointer-events:none}
.hero.has-video::before{content:"";position:absolute;inset:0;z-index:1;background:var(--hero-veil,linear-gradient(160deg,#00E0FFdd,#009cb2f0))}
.hero.has-video .wrap{position:relative;z-index:2}
@media (prefers-reduced-motion: reduce){.hero video{display:none}.hero iframe.hero-embed{display:none}}
.eyebrow{text-transform:uppercase;letter-spacing:.1em;font-size:12.5px;font-weight:800;color:#ffffffcc;margin:0 0 var(--s3)}
.hero h1{font-size:var(--t-display);line-height:1.08;margin:0 0 var(--s4);max-width:20ch;text-shadow:0 2px 18px #0000002e}
@media(max-width:760px){.hero h1{font-size:min(var(--t-display),10vw)}}
.lead{font-size:var(--t-lead);line-height:1.5;max-width:60ch;color:#eef4fbf2;margin:0 0 var(--s6)}
.cta{display:flex;gap:var(--s3);flex-wrap:wrap}.btn{display:inline-flex;align-items:center;gap:7px;padding:13px 24px;border-radius:var(--r-s);font-weight:700;border:2px solid transparent;transition:transform var(--ease),filter var(--ease),box-shadow var(--ease)}
.btn.primary{background:var(--btn-bg,var(--ac));color:var(--btn-ink,#16202b);box-shadow:var(--sh2)}.btn.ghost{background:#ffffff1f;color:#fff;border-color:#ffffff7a}.btn:hover{text-decoration:none;transform:translateY(-1px);filter:brightness(1.03)}
.section{padding:clamp(var(--s7),8vw,var(--s8)) 0}.section.alt{background:var(--bg)}.section h2{font-size:var(--t-h2);margin:0 0 var(--s5);letter-spacing:-.02em}.section h2,.section h3{color:var(--sub-ink,currentColor)}
/* D-1631 — a measured centred copy: the reading measure and the section headings centre */
.copy-center .prose{margin-inline:auto;text-align:var(--copy-align,center)}.copy-center .section h2{text-align:center}.prose{max-width:var(--prose);font-size:var(--t-lead);line-height:1.7;color:#28323d}.prose p{margin:0 0 var(--s4)}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--s4)}
@media(min-width:721px){.grid.n4{grid-template-columns:repeat(2,1fr)}.grid.n2{grid-template-columns:repeat(2,1fr)}.grid.n3{grid-template-columns:repeat(3,1fr)}}
section[id]{scroll-margin-top:80px}main>.section:first-child{padding-top:calc(var(--s6) + 12px)}
.ic-img{width:40px;height:40px;object-fit:contain;display:block}
.foot-logo{height:56px;max-width:240px;object-fit:contain;margin-bottom:var(--s4);opacity:.92}
.svc{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:var(--s5);box-shadow:var(--sh1);transition:transform var(--ease),box-shadow var(--ease)}.svc:hover{transform:translateY(-3px);box-shadow:var(--sh2)}.svc .ic{width:44px;height:44px;border-radius:var(--r-s);background:color-mix(in srgb,var(--c) 12%,#fff);color:var(--c);display:grid;place-items:center;margin-bottom:var(--s3)}.svc .ic svg{width:22px;height:22px}
.svc--photo{padding:0 0 var(--s5)}.svc--photo>img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;margin:0 0 var(--s4)}.svc--photo>h3,.svc--photo>p{padding:0 var(--s5)}
.svc h3{font-size:17px;margin:0 0 6px;letter-spacing:-.01em}.svc p,.pc-b p{color:var(--mut);font-size:var(--t-sm);line-height:1.6;margin:0}
.pcard{background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--sh1);transition:transform var(--ease),box-shadow var(--ease)}.pcard:hover{transform:translateY(-3px);box-shadow:var(--sh2)}.pcard img{width:100%;aspect-ratio:4/3;object-fit:cover}.pc-b{padding:var(--s4) var(--s5)}.pc-b h3{margin:0 0 6px;font-size:17px}.price{display:inline-block;margin-top:var(--s2);font-weight:800;color:var(--c)}
/* D-1664 — the TILE: the photograph is the object, the card chrome is not. Same
   markup, same words; the frame steps back and the picture takes the width it was
   given. The image keeps its 4/3 crop — a new ratio would re-crop every photograph
   on the site, which is a separate decision from how wide the row is. */
.grid--tiles{gap:clamp(var(--s4),2.5vw,var(--s6))}
.grid--tiles .pcard{background:none;border:0;box-shadow:none;border-radius:0}
.grid--tiles .pcard:hover{transform:none;box-shadow:none}
.grid--tiles .pcard img{border-radius:var(--r)}
.grid--tiles .pc-b{padding:var(--s3) 0 0}
.grid--tiles .pc-b h3{font-size:var(--t-lead)}
.two{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(var(--s5),4vw,var(--s7));align-items:start}.two img{border-radius:var(--r);box-shadow:var(--sh2);width:100%}.markbox img{width:auto;max-width:100%;max-height:300px;margin:0 auto;display:block;border-radius:0;box-shadow:none}
.ggrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:var(--s3)}.gimg{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--r);box-shadow:var(--sh1)}
.trust{padding:var(--s6) 0;border-top:1px solid var(--line)}.badges{display:flex;flex-wrap:wrap;gap:var(--s6);align-items:center;justify-content:center}.badge img{max-height:52px;transition:var(--ease)}
.contact-line{margin:0 0 var(--s3)}.cform{display:grid;gap:var(--s3);max-width:460px;margin-top:var(--s4)}.cform label{display:grid;gap:5px;font-size:14px;font-weight:600;color:var(--mut)}.cform input,.cform textarea{font:inherit;padding:12px;border:1px solid var(--line);border-radius:var(--r-s);background:#fff}.cform input:focus,.cform textarea:focus{outline:2px solid color-mix(in srgb,var(--c) 45%,#fff);border-color:var(--c)}.formnote{font-size:12px;color:var(--mut);margin:0}
.cform--wide{max-width:980px;margin-inline:auto;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));column-gap:var(--s4)}.cform--wide .cf-wide{grid-column:1/-1}.cform--wide label{align-content:end}.cform select{font:inherit;padding:12px 40px 12px 12px;border:1px solid var(--line);border-radius:var(--r-s);background:var(--card,#fff);color:var(--ink);-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2712%27 height=%278%27%3E%3Cpath d=%27M1 1l5 5 5-5%27 fill=%27none%27 stroke=%27%23888%27 stroke-width=%271.6%27/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center}.cform input:not([type=checkbox]):not([type=radio]),.cform select{height:48px;box-sizing:border-box}.cform fieldset{border:0;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:var(--s3)}.cform legend{font-size:14px;font-weight:600;color:var(--mut);margin-bottom:5px}.cf-opt{display:inline-flex!important;align-items:center;gap:6px}.cform--wide .btn{justify-self:start}
.dotlist{list-style:none;margin:0 0 var(--s4);padding:0}.dotlist li{padding:7px 0;border-bottom:1px solid var(--line)}.dotlist li:last-child{border-bottom:0}.dotlist b{font-weight:700;margin-right:.35em}
/* ⛔⛔ D-1778 — the HONEYPOT is hidden. `<div class="hp">` shipped on every contact and order form
   since D-687 with NO rule hiding it: visitors saw a field labelled «Älä täytä», and a browser that
   autofilled it had a real enquiry discarded as spam behind a thank-you page (`formintake`
   HONEYPOT). Off-screen, not `display:none` — some bots skip fields they can see are hidden. */
.hp{position:absolute!important;left:-10000px!important;top:auto!important;width:1px!important;height:1px!important;overflow:hidden!important}
.mapwrap{border-radius:var(--r-l);overflow:hidden;border:1px solid var(--line);min-height:340px;box-shadow:var(--sh1)}.mapwrap iframe{width:100%;height:100%;min-height:340px;border:0;display:block}
.formwrap{border-radius:var(--r-l);overflow:hidden;border:1px solid var(--line);min-height:520px;box-shadow:var(--sh1)}.formwrap iframe{width:100%;height:100%;min-height:520px;border:0;display:block}
.fh{display:grid;gap:clamp(var(--s6),5vw,var(--s8))}/* D-1664 */.fh--wide .fh-row{grid-template-columns:1.35fr 1fr}.fh--wide .fh-media img{aspect-ratio:16/10}.fh-row{display:grid;grid-template-columns:1fr 1fr;gap:clamp(var(--s5),4vw,var(--s7));align-items:center}.fh-rev .fh-media{order:2}.fh-media img{width:100%;border-radius:var(--r-l);box-shadow:var(--sh2);aspect-ratio:4/3;object-fit:cover}.fh-body h3{font-size:var(--t-h2);margin:0 0 var(--s3)}.fh-body p{color:var(--mut);font-size:var(--t-lead);line-height:1.6;margin:0}
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:var(--s5)}.step-n{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:var(--pill);background:var(--c);color:#16202b;font-weight:800;margin-bottom:var(--s3)}.step h3{font-size:17px;margin:0 0 6px}.step p{color:var(--mut);font-size:var(--t-sm);margin:0}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--s5);text-align:center}.stat-v{font-size:clamp(30px,5vw,46px);font-weight:800;color:var(--c);letter-spacing:-.02em;line-height:1}.stat-l{color:var(--mut);font-size:var(--t-sm);margin-top:var(--s2)}
.tgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--s4)}.tcard{margin:0;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:var(--s5);box-shadow:var(--sh1)}.tcard blockquote{margin:0 0 var(--s3);font-size:16.5px;line-height:1.6;color:#28323d}.tcard figcaption{color:var(--mut);font-size:14px;font-weight:600}.stars{color:#f5a623;letter-spacing:2px;margin-bottom:var(--s2)}
.ptier{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:var(--s6) var(--s5);box-shadow:var(--sh1)}.ptier h3{margin:0 0 var(--s2);font-size:18px}.ptier-p{font-size:clamp(26px,4vw,34px);font-weight:800;color:var(--c)}.ptier ul{list-style:none;padding:0;margin:var(--s3) 0 0}.ptier li{padding:6px 0 6px 24px;position:relative;color:var(--mut);font-size:14.5px}.ptier li:before{content:"\2713";position:absolute;left:0;color:var(--c);font-weight:800}
.faq{max-width:820px;margin:0 auto}.faq details{border:1px solid var(--line);border-radius:var(--r-s);padding:var(--s3) var(--s4);margin:var(--s2) 0;background:var(--card)}.faq summary{font-weight:700;cursor:pointer;list-style:none}.faq summary::-webkit-details-marker{display:none}.faq p{color:var(--mut);margin:var(--s3) 0 0}
.tmgrid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.tmember{text-align:center}.tm-img img{width:96px;height:96px;border-radius:var(--pill);object-fit:cover;box-shadow:var(--sh1);margin:0 auto var(--s3)}.tmember h3{font-size:16px;margin:0}.tm-role{color:var(--c);font-size:13px;font-weight:700;margin:2px 0}.tmember p{color:var(--mut);font-size:14px;margin:var(--s2) 0 0}
.cta-band{background:linear-gradient(135deg,var(--c),var(--cd));color:#fff;text-align:center;padding:clamp(var(--s7),7vw,var(--s8)) 0}.cta-band h2{font-size:var(--t-h1);margin:0 0 var(--s3)}.cta-band p{color:#ffffffe6;font-size:var(--t-lead);max-width:50ch;margin:0 auto var(--s5)}.cta-band .cta{justify-content:center}
/* ---- D-039 layout variants (structural DNA) ---- */
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(var(--s6),5vw,var(--s8));align-items:center}
.hero--split .hero-media img{width:100%;border-radius:var(--r-l);box-shadow:var(--sh3);aspect-ratio:4/3;object-fit:cover}
.hero--centered .wrap{text-align:center}.hero--centered h1{margin-inline:auto}.hero--centered .lead{margin-inline:auto}.hero--centered .cta{justify-content:center}
.hero--center{text-align:center}.hero--center h1,.hero--center .lead{margin-inline:auto}.hero--center .cta{justify-content:center}
.hero--editorial{background:var(--bg);color:var(--ink)}
.hero--editorial h1{color:var(--ink);text-shadow:none;font-size:clamp(36px,7vw,62px);max-width:16ch;letter-spacing:-.03em}
.hero--editorial .lead{color:var(--mut)}.hero--editorial .eyebrow{color:var(--c)}
.hero--editorial .btn.ghost{color:var(--c);border-color:var(--c)}
/* D-1657 — the box HUGS the picture. `width:100%` + `object-fit:contain` letterboxed every
   portrait photograph inside a full-width rounded card with a shadow, so a tall image sat
   between two wide bands that read as a layout error. Sizing by the image and capping both
   axes lets a wide photo fill the column and a tall one stand at its own width. */
.hero-ed-img{width:auto;max-width:100%;height:auto;max-height:78vh;display:block;margin:clamp(var(--s6),5vw,var(--s7)) auto 0;border-radius:var(--r-l);box-shadow:var(--sh2)}
.grid--rows{grid-template-columns:1fr;max-width:820px}.copy-center .grid--rows{margin-inline:auto}.grid--rows .svc{display:grid;grid-template-columns:44px 1fr;column-gap:var(--s4);row-gap:4px;align-items:start;align-content:start}.grid--rows .svc .ic{margin-bottom:0;grid-row:span 2}.grid--rows .svc h3,.grid--rows .svc p{grid-column:2}.grid--rows .svc--noic{grid-template-columns:1fr}.grid--rows .svc--noic h3,.grid--rows .svc--noic p{grid-column:1}
.feat-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--s4);max-width:760px}
.feat-list li{display:flex;gap:var(--s4);align-items:flex-start}
.feat-list .ic{flex:none;width:40px;height:40px;border-radius:var(--r-s);background:color-mix(in srgb,var(--c) 12%,#fff);color:var(--c);display:grid;place-items:center}
.feat-list h3{font-size:16.5px;margin:0 0 2px}.feat-list p{color:var(--mut);font-size:var(--t-sm);margin:0}
.tquotes{display:grid;gap:var(--s6)}
.tquote{margin:0;max-width:46rem;margin-inline:auto;text-align:center}
.tquote blockquote{margin:0 0 var(--s3);font-size:clamp(19px,2.5vw,25px);line-height:1.45;font-weight:600;letter-spacing:-.015em;color:var(--ink)}
.tquote figcaption{color:var(--mut);font-size:14px;font-weight:600}
.cta-band--boxed{background:transparent;color:inherit;padding:clamp(var(--s6),6vw,var(--s7)) 0}
.cta-band--boxed .wrap{background:linear-gradient(135deg,var(--c),var(--cd));color:#fff;border-radius:var(--r-l);padding:clamp(var(--s6),6vw,var(--s8)) var(--s6);box-shadow:var(--sh3)}
.ggrid--columns{display:block;columns:3 230px;column-gap:var(--s3)}
.ggrid--columns .gimg{aspect-ratio:auto;margin:0 0 var(--s3);break-inside:avoid;display:block}
@media(max-width:760px){.hero-grid{grid-template-columns:1fr}.hero--split .hero-media{order:-1}}
@media(max-width:760px){.fh-row,.fh--wide .fh-row{grid-template-columns:1fr}.fh-rev .fh-media{order:0}}
.mobile-call{display:none}.foot{background:var(--foot-bg,#0c1620);color:var(--foot-ink,#c6d2dd);padding:var(--s6) 0;font-size:14px}.foot-nav{display:flex;flex-wrap:wrap;gap:12px 18px;margin:0 0 var(--s4);padding-bottom:var(--s4);border-bottom:1px solid #ffffff14}.foot-nav a{color:var(--foot-ink,#c6d2dd);font-weight:600;font-size:14px}.foot-nav a:hover{color:var(--foot-strong,#fff)}.foot-more{display:flex;flex-wrap:wrap;gap:10px 16px;margin:0 0 var(--s4);padding-bottom:var(--s4);border-bottom:1px solid #ffffff14}.foot-more-lbl{flex:0 0 100%;color:var(--foot-strong,#fff);font-weight:700;font-size:12px;letter-spacing:.06em;text-transform:uppercase}.foot-more a{color:var(--foot-ink,#c6d2dd);font-size:13px}.foot-more a:hover{color:var(--foot-strong,#fff)}.social{display:flex;flex-wrap:wrap;gap:var(--s4);margin:0 0 var(--s4)}.social a{display:inline-flex;align-items:center;color:#c6d2dd;transition:color var(--ease)}.social a:hover{color:#fff;text-decoration:none}.foot .social a{color:var(--foot-ink,#c6d2dd)}.foot .social a:hover{color:var(--foot-strong,#fff)}.foot .demo{color:#8aa0b3;margin:6px 0 0;font-style:italic}
@media(max-width:760px){.navtoggle{display:inline-flex;align-items:center;margin-left:auto;font-size:24px;line-height:1;cursor:pointer;color:var(--top-ink,var(--ink));padding:6px 10px;border-radius:8px}.bar nav{display:none;margin:0}.navcb:checked ~ nav{display:flex;flex-direction:column;align-items:flex-start;position:absolute;top:100%;left:0;right:0;background:var(--panel-bg,var(--bg2,#fff));border-bottom:1px solid var(--line);padding:var(--s4) var(--s5);gap:var(--s4);z-index:25;box-shadow:var(--sh3);max-height:calc(100vh - 96px);overflow-y:auto}.navgroup{display:flex;flex-direction:column;align-items:flex-start;gap:var(--s3)}.navsub{position:static;display:flex;border:0;box-shadow:none;padding:0 0 0 var(--s4);min-width:0;background:none}.navsub a{padding:0;white-space:normal}.two{grid-template-columns:1fr}.mobile-call{display:inline-flex;align-items:center;gap:8px;position:fixed;left:16px;right:16px;bottom:16px;justify-content:center;background:var(--c);color:#16202b;padding:15px;border-radius:var(--r);font-weight:800;z-index:30;box-shadow:var(--sh3)}main{padding-bottom:74px}.bookbtn,.calllink{display:none}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto}}
/* pack tokens (D-498) */
:root{--band-bg:#1C0F2E;--band-btn-bg:#00E0FF;--band-btn-ink:#0B0B0F;--band-h-ink:#F4F2F8;--bg:#0B0B0F;--bg2:#2A0A4A;--btn-bg:#00E0FF;--btn-case:none;--btn-ink:#0B0B0F;--btn-r:2px;--btn-track:0.02em;--card:#1C0F2E;--copy-align:start;--ease:200ms cubic-bezier(0.22, 0.61, 0.36, 1);--feature-icons:none;--foot-bg:#2A0A4A;--foot-ink:#ABA3BD;--foot-strong:#F4F2F8;--fw-b:400;--fw-h:700;--h-case:none;--hero-bg:#0B0B0F;--hero-h:78vh;--hero-ink:#F4F2F8;--hero-mark-h:52px;--hero-veil:linear-gradient(#2A0A4A26,#0B0B0FB3);--hero-veil-still:linear-gradient(#2A0A4A33,#0B0B0FBF);--ink:#F4F2F8;--line:#3D2A5C;--link:#00E0FF;--menu-gap:16px;--menu-price-format:short;--menu-price-weight:700;--menu-rule:1px;--mut:#ABA3BD;--nav-case:uppercase;--nav-gap:32px;--nav-track:1.5px;--page-bg:#0B0B0F;--panel-bg:#1C0F2E;--panel-ink:#F4F2F8;--prose:64ch;--prose-ink:#F4F2F8;--r:4px;--r-l:8px;--r-s:2px;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:56px;--s8:96px;--sh1:0 1px 2px #00000066;--sh2:0 6px 18px #00000073;--sh3:0 0 32px #7b2eff59;--sub-ink:#FF8ACB;--t-body:17px;--t-h1:56px;--t-lead:20px;--t-sm:14px;--top-bg:#0B0B0F;--top-ink:#F4F2F8;--w:1200px;--w-chrome:1200px;--w-wide:1200px}
/* D-2345 — a pack's heading sizes fit a phone */
@media(max-width:760px){:root{--t-h1:min(56px,9vw)}}
/* D-1895 the kit follows the pack */
a.kit-floating-cta{border-radius:var(--r-s)}html [data-kit="tabs"] [role="tab"][aria-selected="true"]{border-bottom-color:var(--btn-bg)}
/* hero share (D-1181, scoped by D-1188) */
.hero.has-img.hero--tall{min-height:var(--hero-h);display:grid;align-content:center}

/* D-1684 — a light primary is an accent: the band takes the page's ground */
.cta-band:not(.has-img){background:var(--page-bg,var(--bg));color:var(--ink);border-top:1px solid var(--line)}.cta-band:not(.has-img) p{color:var(--mut)}
/* D-2329 — features: a table of label and value */
.feat-table{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:var(--s1) var(--s6);margin:0 auto;max-width:560px}
.feat-table>div{display:contents}
.feat-table dt{font-weight:700}
.feat-table dd{margin:0}
/* D-2365 — the footer in columns */
.foot--cols .foot-cols{display:flex;flex-wrap:wrap;gap:var(--s5) var(--s6)}
.foot--cols .foot-col{flex:1 1 0;min-width:min(100%,180px)}
.foot--cols .foot-col--brand{flex-grow:1.4}
.foot--cols .foot-col p{margin:0}
.foot--cols .foot-col p+p{margin-top:var(--s3)}
.foot--cols .foot-logo{display:block;height:auto;max-height:72px;max-width:min(280px,100%);margin:0 0 var(--s3)}
.foot--cols .foot-name{font-weight:700;color:var(--foot-strong,#fff)}
.foot--cols .foot-h{color:var(--foot-strong,#fff);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.foot--cols .foot-col a{color:var(--foot-ink,#c6d2dd);text-decoration:underline}
.foot--cols .foot-col a:hover{color:var(--foot-strong,#fff)}
.foot--cols .foot-social{display:flex;flex-direction:column;align-items:flex-start;gap:var(--s2);margin-top:var(--s3)}
.foot--cols .foot-social a{display:inline-flex;align-items:center;gap:6px;border:1.5px solid currentColor;border-radius:999px;padding:6px 14px;font-size:13px;font-weight:700;text-decoration:none}
.foot--cols .foot-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--s2) var(--s5);margin-top:var(--s6);padding-top:var(--s4);border-top:1px solid color-mix(in srgb,currentColor 25%,transparent);font-size:12px}
.foot--cols .foot-bar .foot-nav{margin:0;padding:0;border:0}
@media(max-width:760px){.foot--cols .foot-cols{flex-direction:column}}
/* D-2265 — the language switcher: every language, the current one marked */
.lang .cur{color:inherit;font-weight:700;text-decoration:underline;text-underline-offset:4px}

/* ⇥ D-2273 — ratings on review sites */
.rb-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:var(--s4)}.rb{display:flex;flex-direction:column;gap:var(--s2);padding:var(--s5);background:var(--card);border:1px solid var(--line);border-radius:var(--r);color:var(--ink)}.rb .rb-name{margin:0;font-size:var(--t-h3)}.rb-l1{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s1) var(--s3)}.rb-num{font-size:2.1em;font-weight:var(--fw-h);line-height:1;letter-spacing:-.02em}.rb-of{color:var(--mut);margin-left:-6px}.rb-stars{position:relative;display:inline-block;width:110px;height:22px;color:var(--rb-star,var(--ac))}.rb-stars svg{display:block;width:110px;height:22px;fill:currentColor}.rb-stars>svg{opacity:.25}.rb-fill{position:absolute;inset:0 auto 0 0;overflow:hidden}.rb-count{flex-basis:100%;color:var(--mut);font-size:var(--t-sm)}.rb-l2{display:flex;align-items:center;gap:var(--s3);font-size:var(--t-sm);color:var(--mut)}.rb-logo{display:inline-flex;flex:none;width:40px;height:40px;border-radius:50%;background:#fff;box-shadow:0 0 0 1px var(--line)}.rb-logo img{width:40px;height:40px;display:block}.rb-act{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s4);align-items:center;margin-top:auto;padding-top:var(--s2)}.rb-cta{display:inline-block;padding:8px 16px;border:1.5px solid var(--c);border-radius:var(--pill);font-weight:600;font-size:var(--t-sm)}.rb-read{font-size:var(--t-sm);text-decoration:underline}.rb--hero{display:inline-flex;margin-top:var(--s5);padding:var(--s3) var(--s4);gap:var(--s2);background:transparent;border:0;color:inherit;text-align:left}.rb--hero .rb-l1{font-size:var(--t-sm)}.rb--hero .rb-num{font-size:1.9em}.rb--hero .rb-count{flex-basis:auto;color:inherit;opacity:.9}.rb--hero .rb-l2,.rb--hero .rb-of{color:inherit;opacity:.9}.rb--hero .rb-act{padding-top:0}.rb--hero .rb-act a{color:inherit;border-color:currentColor}.rb--hero .rb-stars{color:var(--rb-star-hero,var(--rb-star,var(--ac)))}.rb--hero .rb-logo{width:36px;height:36px;background:none;box-shadow:none;border-radius:0;margin:-6px -8px -6px -4px}.rb--hero .rb-logo img{width:36px;height:36px}.rb--hero .rb-asof{margin:0;font-size:11px;line-height:1.3;opacity:.6}.hero--center .rb--hero,.hero--centered .rb--hero{align-items:center}.hero--center .rb--hero .rb-l1,.hero--centered .rb--hero .rb-l1{justify-content:center}@media(max-width:560px){.rb{padding:var(--s4)}.rb-num{font-size:1.9em}}
/* D-2267 — the brand's mark above the hero headline */
.hero-brand{display:block;height:var(--hero-mark-h,120px);width:auto;max-width:100%;object-fit:contain;margin:0 0 var(--s5)}
.hero--centered .hero-brand,.hero--center .hero-brand{margin-inline:auto}
@media(max-width:760px){.hero-brand{max-height:88px}}
/* D-1815 — a box whose only link is its heading is a link as a whole */
.svc,.pcard,.snapcard{position:relative}.card-link::after{content:"";position:absolute;inset:0;z-index:1}.card-link:focus-visible{outline:none}.card-link:focus-visible::after{outline:2px solid var(--ac);outline-offset:2px}.svc:hover .card-link,.pcard:hover .card-link,.snapcard:hover .card-link{text-decoration:underline}
/* CD-117 (D-1776) — «Tapahtuu nyt»: one large card under the home hero */
.hl-sec{padding-top:clamp(var(--s6),5vw,var(--s7))}.hl{display:grid;grid-template-columns:1fr;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--sh1)}
@media(min-width:761px){.hl.hl--img{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}}
.hl-media{display:block;min-height:220px}.hl-media img{width:100%;height:100%;aspect-ratio:4/3;object-fit:cover;display:block}.hl-b{padding:var(--s5) var(--s6);display:flex;flex-direction:column;justify-content:center;gap:var(--s3)}.hl-b h3{margin:0;font-size:clamp(20px,2.6vw,30px);line-height:1.2}.hl-b h3 a{color:inherit}.hl-date{margin:0;font-weight:700;color:var(--mut)}.hl-b p{margin:0;color:var(--mut);line-height:1.6}.hl-b .btn{align-self:flex-start}
/* D-1708 — a still picture's veil, apart from the video's */
.hero.has-img:not(.has-video){background-image:var(--hero-veil-still),var(--hero-img)}
.cta-band.has-img{background-image:var(--hero-veil-still),var(--band-img)}
/* D-1884 — the reading text's colour */
.prose{color:var(--prose-ink)}
/* D-2180 — the plain hero's own ground */
.hero:not(.has-img):not(.has-video){background:var(--hero-bg);color:var(--hero-ink,var(--ink))}
.hero:not(.has-img):not(.has-video) h1, .hero:not(.has-img):not(.has-video) .lead, .hero:not(.has-img):not(.has-video) .eyebrow{color:var(--hero-ink,var(--ink));text-shadow:none}
.hero:not(.has-img):not(.has-video) .btn.ghost{color:var(--hero-ink,var(--ink));border-color:var(--hero-ink,var(--ink));background:transparent}
/* D-2180 — versal headings */
h1,h2,h3{text-transform:var(--h-case)}
/* D-2180 — the buttons' own corner radius */
.btn,.callbtn{border-radius:var(--btn-r)}
/* D-2267 — the buttons' case */
.btn,.callbtn,a.kit-floating-cta{text-transform:var(--btn-case)}
/* D-2267 — the buttons' tracking */
.btn,.callbtn,a.kit-floating-cta{letter-spacing:var(--btn-track)}
/* D-2364 — the band's own ground */
.cta-band:not(.has-img):not(.cta-band--boxed),.cta-band--boxed:not(.has-img) .wrap{background:var(--band-bg);color:#fff;border-top:0}
.cta-band:not(.has-img):not(.cta-band--boxed) p,.cta-band--boxed:not(.has-img) .wrap p{color:#ffffffe6}
/* D-2364 — the band's heading */
.cta-band h2{color:var(--band-h-ink)}
/* D-2364 — the button on a dark band */
.cta-band .btn.primary,.ground-dark .btn.primary{background:var(--band-btn-bg);color:var(--band-btn-ink,#16202b)}
/* D-1716 — the chassis' white-based fills, on a dark canvas */
.svc .ic,.feat-list .ic{background:color-mix(in srgb,var(--c) 14%,var(--card,var(--bg)))}
.cform input,.cform textarea{background:var(--card,var(--bg));color:var(--ink)}
/* D-1765 — the kit's primary-ground components read on a light primary */
html .kit-newsletter button[type="submit"]{color:#16202b}


/* ---- custom bespoke skin ---- */
body{font-family:'Inter',system-ui,sans-serif}h1,h2,h3,.hero h1{font-family:'Space Grotesk',system-ui,sans-serif}
/* ---- self-hosted fonts ---- */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(assets/fonts/a375c31d43e653ec.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: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(assets/fonts/13755630d7d202f4.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(assets/fonts/da72a9f73897f5fb.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(assets/fonts/3b78c6fa6456eaa9.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(assets/fonts/f059b71e05ff032c.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(assets/fonts/b6db4a06c119f3ab.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: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(assets/fonts/6ab57b19c69b5042.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: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(assets/fonts/a375c31d43e653ec.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: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(assets/fonts/13755630d7d202f4.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(assets/fonts/da72a9f73897f5fb.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(assets/fonts/3b78c6fa6456eaa9.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(assets/fonts/f059b71e05ff032c.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(assets/fonts/b6db4a06c119f3ab.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: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(assets/fonts/6ab57b19c69b5042.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: 'Space Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(assets/fonts/93fffbbe1f29ebe4.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(assets/fonts/3602c85135123589.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: 'Space Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(assets/fonts/e70615aecbf93642.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;
}