/* v14 kierros 11 · F2 + kierros 12 · A: kerrosnäkymä (split-layout, 2.5D-huone, galleria, hissipaneeli, ovinappi).
   Rajapinta: window.ecostaFloor (js/floor.js). Juuri .fl rakennetaan JS:llä; fragmentit floors/<slug>.html. */
@font-face{font-family:"GT Super Display";src:url(../fonts/gt-super-display-light.woff2?v=14) format("woff2");font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:"GT Super Display";src:url(../fonts/gt-super-display-light-italic.woff2?v=14) format("woff2");font-weight:300;font-style:italic;font-display:swap}
@font-face{font-family:"Neue Montreal";src:url(../fonts/pp-neue-montreal-var.woff2) format("woff2");font-weight:200 800;font-style:normal;font-display:swap}

.fl{
  --fl-paper:#f3f0ea; --fl-ink:#111; --fl-ink-2:#57544f; --fl-ink-3:#6a6660; --fl-line:rgba(17,17,17,.14);
  --fl-room-bg:#cfc8bc; --fl-accent:#1d4ed8; --fl-accent-h:#1a44bf;
  --fl-serif:"GT Super Display",Georgia,"Times New Roman",serif;
  --fl-sans:"Neue Montreal",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --fl-out:cubic-bezier(.16,1,.3,1); --fl-io:cubic-bezier(.65,0,.35,1);
  --fl-rw:50%; --fl-pl:clamp(2rem,6.5vw,7.5rem); --fl-pr:clamp(1.5rem,3.5vw,3.5rem); --fl-bar:5.5rem; --fl-ui:clamp(1.25rem,2.6vw,2.5rem);
  position:fixed;inset:0;z-index:40;display:grid;grid-template-columns:var(--fl-rw) minmax(0,1fr);
  background:transparent;color:var(--fl-ink);font-family:var(--fl-sans);font-size:1rem;line-height:1.5;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;visibility:hidden;
}
.fl[hidden]{display:none}
.fl.is-on{visibility:visible}
@media (min-width:1100px){.fl{--fl-rw:48%}}
:where(.fl) *,:where(.fl) *::before,:where(.fl) *::after{box-sizing:border-box}
:where(.fl) :where(h1,h2,h3,h4,p,ul,ol,dl,dd,figure,blockquote){margin:0;padding:0}
:where(.fl) :where(ul,ol){list-style:none}
:where(.fl) a{color:inherit;text-decoration:none}
:where(.fl) button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
:where(.fl) img{display:block;max-width:100%;height:auto}
.fl :focus-visible{outline:2px solid var(--fl-accent);outline-offset:3px;border-radius:4px}
.fl .sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.fl .cap{font-size:.6875rem;line-height:1.3;letter-spacing:.14em;text-transform:uppercase;font-weight:500}

/* ---------- huone (vasen) ---------- */
.fl_room{position:relative;overflow:hidden;height:100%;background:transparent;isolation:isolate;transition:background-color .6s ease}
.fl.is-in .fl_room{background:var(--fl-room-bg)}
.fl.is-out .fl_room{background:transparent}
.fl_roomx{position:absolute;inset:0;transform-origin:50% 50%;will-change:transform,opacity;background:var(--fl-room-bg)}
.fl_roomx.no-tr{transition:none!important}
.fl_lq,.fl_img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover}
.fl_lq{filter:blur(22px);transform:scale(1.12);opacity:0;transition:opacity .6s ease}
.fl_lq.is-on{opacity:1}
.fl_img{display:none;inset:auto;left:0;top:0;width:auto;height:auto;transform-origin:0 0;opacity:0;transition:opacity .6s ease}
.fl.is-nogl .fl_img{display:block}
.fl_img.is-on{opacity:1}
.fl_gl{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:0;transition:opacity .7s ease}
.fl_gl.is-on{opacity:1}
.fl_hot{position:absolute;inset:0;width:100%;height:100%;overflow:visible;z-index:2;transition:opacity .4s ease}
.fl_hot.is-off{opacity:0;pointer-events:none}
.fl_hot polygon{fill:rgba(255,255,255,0);stroke:rgba(255,255,255,0);stroke-width:1.5;stroke-linejoin:round;pointer-events:all;cursor:pointer;transition:stroke .35s ease,fill .35s ease}
.fl_hot polygon.is-hl{stroke:rgba(255,255,255,.95);fill:rgba(255,255,255,.07)}
html:not(.fine) .fl_hot polygon{stroke:rgba(255,255,255,.6)}
/* varjostus vain valkoisen tekstin ja maitolasinappien kohdalle (logo ja ulos-nappi vasen ylä, hissi oikea reuna,
   gallerian ohjain vasen ala): pehmeät liukuvärit, ei laatikoita */
.fl_shade{position:absolute;inset:0;z-index:3;pointer-events:none;background:
  radial-gradient(ellipse 460px 280px at 0 0,rgba(10,9,8,.58),rgba(10,9,8,.32) 46%,rgba(10,9,8,0) 100%),
  radial-gradient(ellipse 400px 340px at 100% 100%,rgba(10,9,8,.66),rgba(10,9,8,.34) 50%,rgba(10,9,8,0) 100%)}
.fl.has-gal .fl_shade{background:
  radial-gradient(ellipse 460px 280px at 0 0,rgba(10,9,8,.58),rgba(10,9,8,.32) 46%,rgba(10,9,8,0) 100%),
  radial-gradient(ellipse 400px 340px at 100% 100%,rgba(10,9,8,.66),rgba(10,9,8,.34) 50%,rgba(10,9,8,0) 100%),
  radial-gradient(ellipse 680px 360px at 0 100%,rgba(10,9,8,.62),rgba(10,9,8,.34) 46%,rgba(10,9,8,0) 100%)}
.fl_logo{position:absolute;left:var(--fl-ui);top:1.75rem;z-index:6;color:#fff;font-size:1.4375rem;font-weight:600;letter-spacing:-.045em;line-height:1;display:inline-flex;align-items:flex-end;gap:.18rem;text-shadow:0 1px 16px rgba(0,0,0,.35)}
.fl_logo i{width:.32rem;height:.32rem;border-radius:50%;background:#4f7cf0;margin-bottom:.16rem}

/* maitolasi: yhteinen pinta huoneen päällä oleville napeille. Valkoisen lasikerroksen alla savunsävy, jotta valkoinen
   teksti ja nuolet erottuvat vaaleista huonekuvista (kontrasti). Yksi väri (valkoinen .22 savupohjan päällä), jotta hover-täyttö valkoiseksi liukuu pehmeästi. */
.fl_glass{background-color:rgba(100,99,98,.56);-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%);border:1px solid rgba(255,255,255,.45)!important;color:#fff;box-shadow:0 12px 32px -14px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.18);transition:background-color .35s var(--fl-out),color .35s var(--fl-out),border-color .35s var(--fl-out),transform .45s var(--fl-out),box-shadow .45s var(--fl-out)}
.fl_glass svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 1px 3px rgba(0,0,0,.3));transition:transform .45s var(--fl-out),filter .35s ease}

/* Takaisin ulos: iso maitolasipilleri huoneen vasemmassa yläkulmassa logon alla (sama paikka joka kerroksessa) */
.fl_out{position:absolute;left:var(--fl-ui);top:4.6rem;z-index:6;display:inline-flex;align-items:center;gap:.7rem;height:3.25rem;padding:0 1.5rem 0 1.15rem;border-radius:100px;font-size:1rem;font-weight:500;letter-spacing:-.01em;white-space:nowrap;text-shadow:0 1px 10px rgba(0,0,0,.35)}
.fl_out svg{width:1.35rem;height:1.35rem;stroke-width:1.5}
.fl_out svg .fl_out_a{transition:transform .45s var(--fl-out)}
.fl_out:hover,.fl_out:focus-visible{background:#fff;color:var(--fl-ink);border-color:#fff!important;text-shadow:none}
.fl_out:hover svg,.fl_out:focus-visible svg{filter:none}
.fl_out:hover .fl_out_a,.fl_out:focus-visible .fl_out_a{transform:translateX(3px)}
.fl .fl_out:focus-visible,.fl .fl_lift_b:focus-visible,.fl .fl_gal_b:focus-visible,.fl .fl_gal_dots button:focus-visible{outline:2px solid #fff;outline-offset:3px}

/* hissipaneeli: huoneen oikeassa reunassa alhaalla (gallerian ohjaimen kanssa samalla perusviivalla), ylös ja alas isoina pyöreinä nappeina, välissä kerrosnumero */
.fl_lift{position:absolute;right:var(--fl-ui);bottom:clamp(1.25rem,3.4vh,2.5rem);z-index:6;display:flex;flex-direction:column;align-items:flex-end;gap:.45rem;color:#fff;text-shadow:0 1px 12px rgba(0,0,0,.45),0 0 2px rgba(0,0,0,.25)}
.fl_lift_b{display:flex;align-items:center;gap:.85rem;padding:0;border-radius:2rem;text-align:right}
/* pehmeä varjo paneelin takana (tekstien kontrasti vaaleaa lattiaa vasten), ei laatikkoa */
.fl_lift::before{content:"";position:absolute;inset:-3rem -2.5rem -2.5rem -3.5rem;z-index:-1;pointer-events:none;background:radial-gradient(closest-side,rgba(10,9,8,.42),rgba(10,9,8,.2) 60%,rgba(10,9,8,0))}
.fl_lift_b[data-fl-lift="down"]{flex-direction:row-reverse}
.fl_lift_c{flex:none;display:grid;place-items:center;width:3.5rem;height:3.5rem;border-radius:50%}
.fl_lift_c svg{width:1.2rem;height:1.2rem;stroke-width:1.6}
.fl_lift_t{display:flex;flex-direction:column;align-items:flex-end;gap:.15rem;line-height:1.15}
.fl .fl_lift_t .cap{font-size:.625rem;letter-spacing:.16em;opacity:.86}
.fl_lift_t b{font-size:.875rem;font-weight:500;letter-spacing:-.005em;white-space:nowrap}
.fl_lift_b:hover .fl_lift_c,.fl_lift_b:focus-visible .fl_lift_c{background:#fff;color:var(--fl-ink);border-color:#fff!important}
.fl_lift_b:hover .fl_lift_c svg,.fl_lift_b:focus-visible .fl_lift_c svg{filter:none}
.fl_lift_b[data-fl-lift="up"]:hover .fl_lift_c svg{transform:translateY(-2px)}
.fl_lift_b[data-fl-lift="down"]:hover .fl_lift_c svg{transform:translateY(2px)}
/* kerrosnumero nappien välissä, kerroksen nimi sen vasemmalla (samassa palstassa kuin nappien tekstit) */
.fl_lift_n{display:flex;align-items:center;gap:.85rem;margin:0}
.fl_lift_num{order:2;width:3.5rem;font-family:var(--fl-serif);font-weight:300;font-size:3.25rem;line-height:1;letter-spacing:-.02em;font-variant-numeric:lining-nums tabular-nums;text-align:center}
.fl .fl_lift_nm{order:1;font-size:.625rem;letter-spacing:.16em;opacity:.9}

/* gallerian ovinappi: oviaukossa, liikkuu parallaksin mukana (sijainti JS:llä) */
.fl_door{position:absolute;left:0;top:0;z-index:5;width:0;height:0;opacity:0;visibility:hidden;transition:opacity .5s ease,visibility 0s .5s}
.fl_door.has-door:not(.is-off){opacity:1;visibility:visible;transition:opacity .6s ease .1s,visibility 0s}
.fl.is-walking .fl_door,.fl.is-pre .fl_door,.fl.is-out .fl_door,.fl.t-win .fl_door{opacity:0!important;visibility:hidden!important}
.fl_door_b{position:absolute;left:0;top:0;transform:translate(-50%,-2.125rem);display:flex;flex-direction:column;align-items:center;gap:.6rem;color:#fff;text-shadow:0 1px 12px rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.3)}
.fl_door_c{position:relative;display:grid;place-items:center;width:4.25rem;height:4.25rem;border-radius:50%}
/* pehmeä varjo napin ja nimen takana (liikkuu napin mukana), jotta valkoinen erottuu vaaleasta seinästä; ei laatikkoa */
.fl_door_b{isolation:isolate}
.fl_door_b::before{content:"";position:absolute;left:50%;top:-1.8rem;width:17rem;height:13rem;transform:translateX(-50%);z-index:-1;pointer-events:none;background:radial-gradient(closest-side,rgba(10,9,8,.52),rgba(10,9,8,.24) 55%,rgba(10,9,8,0))}
.fl_door_c svg{width:1.3rem;height:1.3rem;stroke-width:1.6}
/* hidas renkaan laajeneminen 3 s välein: vain opasiteetti ja koko, ei kirkkausvälkettä */
.fl_door_c::after{content:"";position:absolute;inset:-1px;border-radius:50%;border:1.5px solid rgba(255,255,255,.75);opacity:0;animation:flRing 3s cubic-bezier(.22,.61,.36,1) infinite;pointer-events:none}
@keyframes flRing{0%{transform:scale(1);opacity:.55}75%,100%{transform:scale(1.65);opacity:0}}
.fl_door_t{display:flex;flex-direction:column;align-items:center;gap:.2rem;line-height:1.1;white-space:nowrap}
.fl .fl_door_t .cap{font-size:.625rem;letter-spacing:.16em;opacity:.9}
.fl_door_t b{font-family:var(--fl-serif);font-weight:300;font-size:1.5rem;letter-spacing:-.01em}
.fl_door_b:hover .fl_door_c,.fl_door_b:focus-visible .fl_door_c{background:#fff;color:var(--fl-ink);border-color:#fff!important;transform:scale(1.06)}
.fl_door_b:hover .fl_door_c svg,.fl_door_b:focus-visible .fl_door_c svg{filter:none;transform:translateX(2px)}
.fl_door.is-back .fl_door_b:hover .fl_door_c svg{transform:none}
.fl_door_b:hover .fl_door_c::after{animation:none}
/* ensimmäisen käynnin vihje ovinapin yläpuolella */
.fl_dhint{position:absolute;left:0;top:0;transform:translate(-50%,calc(-2.125rem - 100% - .8rem));pointer-events:none;opacity:0;transition:opacity .6s ease}
.fl_dhint span{position:relative;display:block;padding:.55rem .95rem;border-radius:100px;background:var(--fl-paper);color:var(--fl-ink);font-size:.8125rem;font-weight:500;white-space:nowrap;box-shadow:0 10px 30px -12px rgba(0,0,0,.45)}
.fl_dhint span::after{content:"";position:absolute;left:50%;bottom:-4px;width:9px;height:9px;margin-left:-4.5px;background:var(--fl-paper);transform:rotate(45deg);border-radius:0 0 2px 0}
.fl_door.is-hint .fl_dhint{opacity:1}

/* hissin ovet: open(slug, {transition:'elevator'}), kaksi vaaleaa paneelia liukuu sivuille kuvan päältä */
.fl_doors{position:absolute;inset:0;z-index:7;pointer-events:none;display:none;overflow:hidden}
.fl.t-elev .fl_doors{display:block}
.fl_doors i{position:absolute;top:0;bottom:0;width:50.2%;background:linear-gradient(90deg,rgba(255,255,255,0) 0,rgba(255,255,255,.32) 46%,rgba(255,255,255,0) 100%),#dcd8d0;transition:transform .9s var(--fl-io) .45s}
.fl_doors i:first-child{left:0;box-shadow:inset -1px 0 0 rgba(0,0,0,.14)}
.fl_doors i:last-child{right:0;box-shadow:inset 1px 0 0 rgba(255,255,255,.55)}
.fl.t-elev.is-in .fl_doors i:first-child{transform:translateX(-101%)}
.fl.t-elev.is-in .fl_doors i:last-child{transform:translateX(101%)}
.fl.t-elev{transition:opacity .45s ease}
.fl.t-elev.is-pre{opacity:0}
.fl.t-elev .fl_roomx{transition:transform 1.3s var(--fl-out) .3s}
.fl.t-elev.is-pre .fl_roomx{transform:scale(1.05)}

/* hotspotin label: pieni paperipilleri */
.fl_hlab{position:absolute;left:0;top:0;z-index:5;pointer-events:none;display:flex;align-items:center;gap:.6rem;padding:.5rem .55rem .5rem .9rem;border-radius:100px;background:var(--fl-paper);color:var(--fl-ink);font-size:.8125rem;font-weight:500;white-space:nowrap;box-shadow:0 10px 30px -12px rgba(0,0,0,.45);opacity:0;transform:translate3d(calc(var(--hx,0px) - 50%),var(--hy,0px),0);transition:opacity .3s ease}
.fl_hlab.is-on{opacity:1}
.fl_hlab span{display:inline-flex;align-items:center;gap:.3rem;padding:.25rem .6rem;border-radius:100px;background:var(--fl-accent);color:#fff;font-size:.75rem}
.fl_hlab svg{width:.7rem;height:.7rem;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* gallerian ohjain: huoneen nimi isolla, "Huone 1 / 3", isot pyöreät maitolasinapit ja edistymispisteet */
.fl_gal{position:absolute;left:var(--fl-ui);bottom:clamp(1.25rem,3.4vh,2.5rem);z-index:6;color:#fff;text-shadow:0 1px 14px rgba(0,0,0,.45),0 0 2px rgba(0,0,0,.3);display:none}
.fl.has-gal .fl_gal{display:block}
.fl .fl_gal_k{margin:0 0 .55rem;font-variant-numeric:tabular-nums;opacity:.92}
.fl_gal_n{font-family:var(--fl-serif);font-weight:300;font-size:clamp(2.6rem,3.6vw,3.75rem);line-height:.95;letter-spacing:-.02em;margin:0 0 1.1rem}
.fl_gal_row{display:flex;align-items:center;gap:.85rem}
.fl_gal_b{width:3.5rem;height:3.5rem;border-radius:50%;display:grid;place-items:center}
.fl_gal_b svg{width:1.15rem;height:1.15rem;stroke-width:1.6}
.fl_gal_b:hover,.fl_gal_b:focus-visible{background:#fff;color:var(--fl-ink);border-color:#fff!important}
.fl_gal_b:hover svg,.fl_gal_b:focus-visible svg{filter:none}
.fl_gal_b[data-fl-room="next"]:hover svg{transform:translateX(2px)}
.fl_gal_b[data-fl-room="prev"]:hover svg{transform:translateX(-2px)}
.fl_gal_b:disabled{opacity:.38;pointer-events:none;box-shadow:none}
.fl_gal_dots{display:flex;align-items:center}
.fl_gal_dots button{display:grid;place-items:center;width:1.6rem;height:2.75rem}
.fl_gal_dots i{display:block;width:.5rem;height:.5rem;border-radius:100px;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.9),0 1px 6px rgba(0,0,0,.3);transition:width .5s var(--fl-out),background-color .4s ease}
.fl_gal_dots button[aria-current] i{width:1.25rem;background:#fff}
.fl_gal_dots button:hover i{background:rgba(255,255,255,.7)}

/* ---------- paperi (oikea) ---------- */
.fl_paper{position:relative;height:100%;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;background:var(--fl-paper);scrollbar-width:thin;scrollbar-color:rgba(17,17,17,.25) transparent;outline:0}
.fl_paper:focus,.fl_paper:focus-visible{outline:0}
.fl_bar{position:sticky;top:0;z-index:3;container:flbar / inline-size;height:var(--fl-bar);display:flex;align-items:center;padding:0 var(--fl-pr) 0 calc(var(--fl-pl) - .6rem);background:linear-gradient(180deg,var(--fl-paper) 72%,rgba(243,240,234,0))}
.fl_nav ol{display:flex;align-items:center;gap:.15rem}
.fl_nav a{display:inline-flex;align-items:center;gap:.5rem;height:2.75rem;padding:0 .6rem;font-size:.8125rem;font-weight:500;letter-spacing:.005em;color:var(--fl-ink-2);border-radius:100px;transition:color .3s ease}
.fl_nav a:hover{color:var(--fl-ink)}
.fl_nav a i{flex:none;width:.5rem;height:.5rem;border-radius:50%;box-shadow:inset 0 0 0 1px currentColor;transition:background-color .4s ease,box-shadow .4s ease}
.fl_nav a[aria-current="page"]{color:var(--fl-ink)}
.fl_nav a[aria-current="page"] i{background:var(--fl-accent);box-shadow:inset 0 0 0 1px var(--fl-accent)}
/* kapea paperi: pisteet, vain aktiivisen nimi näkyy */
@container flbar (max-width:399px){
  .fl_nav a{padding:0 .55rem;min-width:2.75rem;justify-content:center}
  .fl_nav a:not([aria-current="page"]) .fl_nav_t{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
}

.fl_pages{position:relative}
.floors{display:block}
.flp{container-type:inline-size;padding:clamp(1.5rem,5vh,4rem) var(--fl-pr) clamp(3.5rem,8vh,6rem) var(--fl-pl)}
.flp[hidden]{display:none}
.flp_eye{color:var(--fl-ink-2);margin:0 0 14px;font-variant-numeric:tabular-nums}
.flp_title{font-family:var(--fl-serif);font-weight:300;font-size:clamp(3.5rem,min(8vw,19.5cqi),9.5rem);line-height:.9;padding-top:.02em;letter-spacing:-.02em;margin:0 0 26px;margin-left:-.04em;color:var(--fl-ink)}
.flp_dot{color:var(--fl-accent)}
.flp_lead{font-size:clamp(1.35rem,1.9vw,2rem);line-height:1.2;letter-spacing:-.012em;max-width:16em;font-weight:400}
.flp_side{margin-top:20px;font-size:1rem;line-height:1.55;color:var(--fl-ink-2);max-width:34rem}
/* ≥ 1200 px: sivuteksti toisessa palstassa (truestaging/about) */
@media (min-width:1200px){
  .flp_head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:2.5rem}
  .flp_head > *{grid-column:1 / -1}
  .flp_head > .flp_side{grid-column:2;margin-top:28px;max-width:24rem}
}

/* napit (kopio v14:n tyylistä, jotta testisivu ja kerros näyttävät samalta) */
.fl .btn{position:relative;display:inline-flex;align-items:center;gap:.85rem;height:3.1rem;border-radius:100px;font-size:.9375rem;font-weight:500;letter-spacing:-.01em;white-space:nowrap;transition:transform .4s var(--fl-out),background-color .4s var(--fl-out),border-color .4s var(--fl-out),color .4s var(--fl-out)}
.fl .btn.is-main{padding:0 .75rem 0 1.5rem;background:var(--fl-accent);color:#fff;text-shadow:none}
.fl .btn.is-main:hover,.fl .btn.is-main:focus-visible{transform:translateY(-1px);background:var(--fl-accent-h)}
.fl .btn_b{position:relative;flex:none;width:1.6rem;height:1.6rem;border-radius:50%;background:rgba(255,255,255,.22);color:#fff;overflow:hidden;transition:transform .4s var(--fl-out),background-color .4s var(--fl-out),color .4s var(--fl-out)}
.fl .btn_b svg{position:absolute;inset:0;margin:auto;width:.8rem;height:.8rem;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;transition:transform .4s var(--fl-out)}
.fl .btn_b svg+svg{transform:translateY(170%)}
.fl .btn.is-main:hover .btn_b,.fl .btn.is-main:focus-visible .btn_b{background:#fff;color:var(--fl-accent);transform:translateX(4px)}
.fl .btn.is-main:hover .btn_b svg:first-child,.fl .btn.is-main:focus-visible .btn_b svg:first-child{transform:translateY(-170%)}
.fl .btn.is-main:hover .btn_b svg+svg,.fl .btn.is-main:focus-visible .btn_b svg+svg{transform:none}

/* ---------- kierros 14 (K): osiot erottuvat toisistaan ----------
   Jokainen osio alkaa tummalla hiusviivalla ja pienellä versaalilla otsakkeella (vasemmalla nimi, oikealla luku tai lisätieto),
   osion sisällä vaaleat hiusviivat. Rytmiin vaihtelua: isot numerot, kaksi palstaa leveällä, nostolainaus. */
.flp_sec{margin-top:clamp(3.5rem,8vh,5.5rem)}
.flp_sh{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding-top:14px;border-top:1px solid var(--fl-ink);margin:0 0 clamp(1.25rem,3vh,2rem)}
.flp_sh :is(h2,h3).cap{font-weight:500;color:var(--fl-ink)}
.flp_sh > span{color:var(--fl-ink-2);font-variant-numeric:tabular-nums}

/* palvelut: numeroitu lista, nimi, lause ja hinta oikealla */
.flp_list{margin:0}
.flp_list li{position:relative;padding:1.3rem 0 1.35rem;border-top:1px solid var(--fl-line)}
.flp_list li:first-child{border-top:0;padding-top:.35rem}
.flp_list :is(h3,h4){font-size:1.375rem;line-height:1.2;font-weight:400;letter-spacing:-.012em}
.flp_list p{margin-top:.4rem;font-size:.9688rem;line-height:1.55;color:var(--fl-ink-2);max-width:32rem}
.flp_n{display:block;margin-bottom:.45rem;font-size:.75rem;letter-spacing:.08em;color:var(--fl-ink-2);font-variant-numeric:tabular-nums}
.flp_list p.flp_pr{margin-top:.65rem;color:var(--fl-ink);font-size:1rem;font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap}
.flp_pr small{font-size:.8125rem;font-weight:400;color:var(--fl-ink-2);margin-right:.2rem}
@container (min-width:560px){
  .flp_list.is-num li{display:grid;grid-template-columns:2.25rem minmax(0,10.25rem) minmax(0,1fr) auto;column-gap:1.1rem;align-items:baseline}
  .flp_list.is-num .flp_n{margin:0}
  .flp_list.is-num p{margin-top:0}
  .flp_list.is-num p.flp_pr{margin-top:0;text-align:right}
}
.flp_end{margin-top:clamp(3.5rem,8vh,5.5rem)}
.flp_big{font-size:clamp(1.25rem,4.4cqi,1.625rem);line-height:1.3;letter-spacing:-.012em;max-width:22em}
.flp_end .btn{margin-top:28px}
.flp_end > .btn:first-child{margin-top:0}

/* referenssit: yksi pysyvä lista */
.flw_list{margin:0}
.flw{display:grid;grid-template-columns:clamp(7.5rem,30cqi,12.5rem) minmax(0,1fr);gap:clamp(1rem,3cqi,1.75rem);padding:1.5rem 0;border-top:1px solid var(--fl-line);align-items:start}
.flw:first-child{border-top:0;padding-top:.35rem}
.flw_m{position:relative;display:block;width:100%;aspect-ratio:16/10;border-radius:6px;overflow:hidden;background:#ddd7cd}
.flw_m img,.flw_m video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .7s var(--fl-out),opacity .45s ease}
.flw_m video{opacity:0}
.flw_m.is-play video{opacity:1}
.flw:hover .flw_m img,.flw:hover .flw_m video,.flw.is-hl .flw_m img,.flw.is-hl .flw_m video{transform:scale(1.035)}
.flw_m.is-type{display:grid;place-items:center;background:#e4dfd5;color:var(--fl-ink)}
.flw_type{font-family:var(--fl-serif);font-weight:300;font-size:clamp(1.05rem,3.4cqi,1.4rem);letter-spacing:-.01em;transition:transform .7s var(--fl-out)}
.flw:hover .flw_type{transform:scale(1.035)}
.flw_k{color:var(--fl-ink-2);font-variant-numeric:tabular-nums}
.flw_i{color:var(--fl-ink);margin-right:.85em}
.flw_t :is(h3,h4){margin-top:.5rem;font-size:1.5rem;line-height:1.15;font-weight:400;letter-spacing:-.014em;transition:color .3s ease}
.flw.is-hl :is(h3,h4){color:var(--fl-accent)}
.flw_d{margin-top:.55rem;font-size:.9375rem;line-height:1.55;color:var(--fl-ink-2);max-width:30rem}
.flw_q span{display:block;margin-top:.2rem;font-size:.8125rem;color:var(--fl-ink-3)}
.flw_a{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem 1.25rem;margin-top:.7rem}
.flw_go{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem 0;font-size:.875rem;font-weight:500;background:linear-gradient(var(--fl-accent),var(--fl-accent)) 0 100%/0 1.5px no-repeat;transition:background-size .4s var(--fl-out),color .3s ease}
.flw_go svg{width:.8rem;height:.8rem;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;transition:transform .4s var(--fl-out)}
.flw_go:hover,.flw_go:focus-visible{background-size:100% 1.5px;color:var(--fl-accent)}
.flw_go:hover svg,.flw_go:focus-visible svg{transform:translate(2px,-2px)}
/* "Huone 2": vie gallerian siihen huoneeseen; piste sininen, kun työ on näkyvässä huoneessa */
.flw_room{display:inline-flex;align-items:center;gap:.45rem;height:2.25rem;padding:0 .8rem 0 .7rem;border-radius:100px;border:1px solid var(--fl-line)!important;font-size:.8125rem;font-weight:500;color:var(--fl-ink-2);transition:border-color .3s ease,color .3s ease,background-color .3s ease}
.flw_room::before{content:"";width:.45rem;height:.45rem;border-radius:50%;box-shadow:inset 0 0 0 1px currentColor;transition:background-color .4s ease,box-shadow .4s ease}
.flw_room svg{width:.75rem;height:.75rem;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;transition:transform .4s var(--fl-out)}
.flw_room:hover,.flw_room:focus-visible{border-color:var(--fl-ink)!important;color:var(--fl-ink)}
.flw_room:hover svg{transform:translateX(2px)}
.flw.is-here .flw_room{color:var(--fl-ink)}
.flw.is-here .flw_room::before{background:var(--fl-accent);box-shadow:inset 0 0 0 1px var(--fl-accent)}

/* tulokset: isot luvut ylhäällä, sitten nostolainaus ja numeroidut palautteet */
.flp_stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:clamp(1.5rem,4vh,2.5rem) 0 clamp(2.5rem,6vh,3.75rem);border-top:1px solid var(--fl-ink);border-bottom:1px solid var(--fl-line)}
.flp_stats div{display:flex;flex-direction:column;gap:18px;padding:1.25rem 1rem 1.4rem;border-left:1px solid var(--fl-line)}
.flp_stats div:first-child{border-left:0;padding-left:0}
.flp_stats dd{order:-1;margin:0;font-family:var(--fl-serif);font-weight:300;font-size:clamp(3rem,13cqi,6.25rem);line-height:.9;letter-spacing:-.025em;font-variant-numeric:lining-nums}
.flp_stats dt{font-size:.875rem;line-height:1.3;color:var(--fl-ink-2)}
.flq{display:grid;grid-template-columns:2.75rem minmax(0,1fr);column-gap:1rem;align-items:start}
.flq > :not(.flq_n){grid-column:2}
.flq_n{grid-column:1;grid-row:1;padding-top:.55em;color:var(--fl-ink-2);font-variant-numeric:tabular-nums}
.flq blockquote p{font-family:var(--fl-serif);font-weight:300;font-size:clamp(1.4rem,4.4cqi,1.875rem);line-height:1.2;letter-spacing:-.01em;max-width:22em;text-wrap:pretty}
.flq figcaption{margin-top:18px;display:flex;flex-direction:column;gap:.2rem;font-size:.9375rem;line-height:1.3}
.flq figcaption b{font-weight:500}
.flq figcaption span{color:var(--fl-ink-2);font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;font-weight:500}
.flq figcaption::before{content:"";display:block;width:1.75rem;height:1px;background:var(--fl-ink);margin-bottom:.7rem}
.flq.is-lead{padding:.35rem 0 2.25rem}
.flq.is-lead blockquote p{font-size:clamp(1.9rem,6.6cqi,3rem);line-height:1.08;letter-spacing:-.018em;max-width:17em}
.flq.is-lead:not(:has(.flq_n)){grid-template-columns:minmax(0,1fr)}
.flq.is-lead:not(:has(.flq_n)) > *{grid-column:1}
.flq_list{border-bottom:1px solid var(--fl-line)}
.flq_list li{padding:2rem 0 2.1rem;border-top:1px solid var(--fl-line)}
@container (min-width:760px){
  .flq_list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:2.5rem}
  .flq_list .flq blockquote p{font-size:1.5rem}
}

/* hinnat: ryhmitelty hintalista, hinta oikealla */
.flpr{border-bottom:1px solid var(--fl-line)}
.flpr li{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:1.5rem;row-gap:.3rem;padding:1.2rem 0 1.25rem;border-top:1px solid var(--fl-line);align-items:end}
.flpr li:first-child{border-top:0;padding-top:.35rem}
.flpr :is(h3,h4){font-size:1.375rem;line-height:1.2;font-weight:400;letter-spacing:-.012em}
.flpr_d{grid-column:1;font-size:.9375rem;line-height:1.5;color:var(--fl-ink-2)}
.flpr_p{grid-column:2;grid-row:1 / span 2;align-self:center;display:flex;flex-direction:column;align-items:flex-end;text-align:right;font-family:var(--fl-serif);font-weight:300;font-size:clamp(1.6rem,5cqi,2.125rem);line-height:1;letter-spacing:-.015em;font-variant-numeric:lining-nums tabular-nums;white-space:nowrap}
.flpr_p small{font-family:var(--fl-sans);font-size:.6875rem;line-height:1.3;letter-spacing:.14em;text-transform:uppercase;font-weight:500;color:var(--fl-ink-2);margin-bottom:.35rem}
.flpr_v{white-space:nowrap}
.flpr_v i{font-style:normal;font-family:var(--fl-sans);font-size:.875rem;letter-spacing:0;color:var(--fl-ink-2);margin-left:.2rem}
.flp_alt{margin-top:1.4rem;font-size:.9375rem;line-height:1.5;color:var(--fl-ink-2);max-width:34rem}
.flp_alt a{display:inline-flex;align-items:center;gap:.35rem;color:var(--fl-ink);font-weight:500;background:linear-gradient(currentColor,currentColor) 0 100%/100% 1px no-repeat;padding-bottom:1px;transition:color .3s ease,background-size .4s var(--fl-out)}
.flp_alt a svg{width:.75rem;height:.75rem;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;transition:transform .4s var(--fl-out)}
.flp_alt a:hover,.flp_alt a:focus-visible{color:var(--fl-accent)}
.flp_alt a:hover svg,.flp_alt a:focus-visible svg{transform:translate(2px,-2px)}
/* Näin edetään: isot GT Super -numerot */
.flst{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.flst li{padding:.35rem 1rem .25rem;border-left:1px solid var(--fl-line)}
.flst li:first-child{border-left:0;padding-left:0}
.flst b{display:block;font-family:var(--fl-serif);font-weight:300;font-size:clamp(4.25rem,17cqi,8rem);line-height:.82;letter-spacing:-.03em;color:var(--fl-ink);font-variant-numeric:lining-nums}
.flst p{margin-top:20px;font-size:1.125rem;line-height:1.3;letter-spacing:-.01em}
.flst span{display:block;margin-top:.25rem;font-size:.875rem;color:var(--fl-ink-2);letter-spacing:0}

/* tekijät */
.flt{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem 1.25rem}
.flt img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:50% 22%;border-radius:4px;background:#ddd7cd}
.flt :is(h3,h4){margin-top:14px;padding-top:12px;border-top:1px solid var(--fl-line);font-size:1.125rem;line-height:1.25;font-weight:500;letter-spacing:-.01em}
.flt .cap{margin-top:6px;color:var(--fl-ink-2)}
@container (min-width:560px){.flt{grid-template-columns:repeat(4,minmax(0,1fr));gap:2rem 1rem}.flt :is(h3,h4){font-size:1rem}}
.flp_cl{display:flex;flex-wrap:wrap;gap:.5rem 2.25rem}
.flp_cl a{font-family:var(--fl-serif);font-weight:300;font-size:clamp(1.6rem,5.6cqi,2.4rem);line-height:1.1;letter-spacing:-.015em;padding-bottom:3px;background:linear-gradient(var(--fl-accent),var(--fl-accent)) 0 100%/0 1.5px no-repeat;transition:background-size .4s var(--fl-out),color .3s ease}
.flp_cl a:hover,.flp_cl a:focus-visible{background-size:100% 1.5px;color:var(--fl-accent)}

/* paperin alaosa: seuraava kerros */
.fl_foot{padding:0 var(--fl-pr) 3rem var(--fl-pl)}
.fl_next{display:flex;align-items:flex-end;justify-content:space-between;gap:1.5rem;padding:1.6rem 0 0;border-top:1px solid var(--fl-ink);width:100%;text-align:left}
.fl_next .cap{display:block;color:var(--fl-ink-2);margin-bottom:12px;font-variant-numeric:tabular-nums}
.fl_next b{display:block;font-family:var(--fl-serif);font-weight:300;font-size:clamp(2.25rem,3.6vw,3.25rem);line-height:1;letter-spacing:-.015em;transition:color .3s ease}
.fl_next svg{flex:none;width:2.6rem;height:2.6rem;padding:.7rem;border-radius:50%;border:1.5px solid rgba(17,17,17,.5);fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;transition:background-color .35s ease,color .35s ease,transform .4s var(--fl-out)}
.fl_next:hover b,.fl_next:focus-visible b{color:var(--fl-accent)}
.fl_next:hover svg,.fl_next:focus-visible svg{background:var(--fl-ink);color:#fff;transform:translateY(2px)}

/* ---------- lightbox ---------- */
.fl_lb{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:clamp(1rem,4vw,3rem);border:0;background:transparent;color:#f7f7f5;font-family:var(--fl-sans);display:none;place-items:center;overflow:auto}
.fl_lb[open]{display:grid}
.fl_lb::backdrop{background:rgba(12,12,12,.84);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.fl_lb_in{position:relative;width:min(1120px,100%);opacity:0;transform:translateY(14px) scale(.985);transition:opacity .45s ease,transform .6s var(--fl-out)}
.fl_lb.is-in .fl_lb_in{opacity:1;transform:none}
.fl_lb_media{position:relative;width:100%;aspect-ratio:16/10;max-height:72vh;border-radius:8px;overflow:hidden;background:#0f0f0f}
.fl_lb_media img,.fl_lb_media video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.fl_lb_play{position:absolute;left:50%;top:50%;width:4.5rem;height:4.5rem;margin:-2.25rem 0 0 -2.25rem;display:grid;place-items:center;border-radius:50%;background:rgba(15,15,15,.62);border:1.5px solid rgba(247,247,245,.7);color:#f7f7f5;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);cursor:pointer;transition:background-color .3s ease,transform .3s ease}
.fl_lb_play[hidden]{display:none}
.fl_lb_play svg{width:1.6rem;height:1.6rem;margin-left:.2rem;fill:currentColor}
.fl_lb_play:hover,.fl_lb_play:focus-visible{background:var(--fl-accent);transform:scale(1.05)}
.fl_lb_cap{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem 2rem;margin-top:1.25rem}
.fl_lb_cap h3{font-family:var(--fl-serif);font-weight:300;font-size:clamp(1.9rem,3vw,2.75rem);line-height:1;letter-spacing:-.015em}
.fl_lb_cap .cap{margin-top:.6rem;color:rgba(247,247,245,.82)}
.fl_lb_cap p.fl_lb_d{margin-top:.6rem;max-width:34rem;font-size:.9375rem;line-height:1.5;color:rgba(247,247,245,.86)}
.fl_lb_go{display:inline-flex;align-items:center;gap:.55rem;height:3rem;padding:0 1.35rem;border-radius:100px;background:#f7f7f5;color:#0f0f0f;font-size:.9375rem;font-weight:500;white-space:nowrap;transition:background-color .35s ease,color .35s ease}
.fl_lb_go svg{width:.85rem;height:.85rem;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.fl_lb_go:hover,.fl_lb_go:focus-visible{background:var(--fl-accent);color:#fff}
.fl_lb_x{position:absolute;top:-3.4rem;right:0;display:inline-flex;align-items:center;gap:.5rem;height:2.6rem;padding:0 1rem;border-radius:100px;border:1.5px solid rgba(247,247,245,.55)!important;color:#f7f7f5!important;font-size:.875rem;font-weight:500;transition:background-color .3s ease,color .3s ease}
.fl_lb_x svg{width:.8rem;height:.8rem;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}
.fl_lb_x:hover,.fl_lb_x:focus-visible{background:#f7f7f5;color:#0f0f0f!important}
.fl_lb :focus-visible{outline:2px solid #4f7cf0;outline-offset:3px}
@media (max-height:760px){.fl_lb_x{top:.75rem;right:.75rem;background:rgba(15,15,15,.55)}}
/* kierros 42: media pysyy 16:10:nä myös matalilla läppäreillä (ei sivupalkkeja), Sulje-nappi median sisälle, ettei se leikkaudu */
.fl_lb_in{width:min(1120px,100%,calc(72vh * 1.6))}
@media (min-width:900px) and (max-height:920px){.fl_lb_x{top:.75rem;right:.75rem;z-index:2;background:rgba(15,15,15,.55)}}

/* ---------- avautuminen ja sulkeutuminen ---------- */
.fl_roomx{transition:transform .9s var(--fl-out),filter .9s var(--fl-out),opacity .6s ease}
.fl_paper{transition:transform .9s var(--fl-out) .15s,opacity .6s ease .15s}
.fl_logo,.fl_gal,.fl_shade,.fl_lift{transition:opacity .6s ease .5s}
.fl .fl_out{transition:opacity .6s ease .5s,background-color .35s var(--fl-out),color .35s var(--fl-out),border-color .35s var(--fl-out)}
.fl.t-fly.is-pre .fl_roomx{transform:scale(1.12);filter:blur(8px);opacity:0}
.fl.t-fly.is-pre .fl_paper{transform:translateX(100%)}
.fl.is-pre .fl_out,.fl.is-pre .fl_logo,.fl.is-pre .fl_gal,.fl.is-pre .fl_shade,.fl.is-pre .fl_lift{opacity:0}
.fl.t-fade{transition:opacity .6s ease}
.fl.t-fade.is-pre{opacity:0}
.fl [data-fl-in]{transition:opacity .7s ease,transform .9s var(--fl-out);transition-delay:calc(.42s + var(--fi,0) * .08s)}
.fl.is-pre [data-fl-in],.fl .is-enter [data-fl-in]{opacity:0;transform:translateY(1.25rem)}
.fl.t-fade [data-fl-in]{transition-delay:calc(.1s + var(--fi,0) * .06s)}
.fl .fl_pages.is-lifting [data-fl-in]{transition-delay:calc(.06s + var(--fi,0) * .06s)}
/* sulkeutuminen */
.fl.is-out .fl_roomx{transform:scale(1.12);filter:blur(8px);opacity:0;transition:transform .85s var(--fl-io),filter .85s var(--fl-io),opacity .7s ease .1s}
.fl.is-out .fl_paper{transform:translateX(100%);transition:transform .8s var(--fl-io),opacity .6s ease}
.fl.is-out .fl_out,.fl.is-out .fl_logo,.fl.is-out .fl_gal,.fl.is-out .fl_shade,.fl.is-out .fl_lift{opacity:0;transition:opacity .35s ease}
.fl.is-out.t-fade{opacity:0}
.fl.is-out.t-fade .fl_roomx,.fl.is-out.t-fade .fl_paper{transform:none;filter:none;opacity:1}

/* hissi: kerroksesta toiseen */
.fl_roomx.is-lift{transition:transform .5s var(--fl-io),opacity .5s ease}
.fl_roomx.lift-up{transform:translateY(-3.5%);opacity:0}
.fl_roomx.lift-down{transform:translateY(3.5%);opacity:0}
.fl_pages.is-fade{opacity:0;transform:translateY(-10px);transition:opacity .4s ease,transform .45s var(--fl-io)}
.fl_pages{transition:opacity .45s ease,transform .6s var(--fl-out)}

/* galleria: siirtymän aikana hotspotit piiloon */
.fl.is-walking .fl_hot,.fl.is-walking .fl_hlab{opacity:0;pointer-events:none}

/* tornin käyttöliittymä piiloon, kun kerros on auki (F1:n elementit) */
html.fl-open{overflow:hidden}
html.fl-open :is(.nav,.rail,.totop,.scrollhint,.marklabel,.egglabel,.roomui,.wpop){opacity:0!important;visibility:hidden;pointer-events:none;transition:opacity .4s ease,visibility 0s .4s}

/* suora lataus kerrossivulle: kansi ennen kuin kerros aukeaa (ei tornin välähdystä). Varmistus: häviää 8 s jälkeen. */
html[data-floor]:not(.fl-booted)::after{content:"";position:fixed;inset:0;z-index:39;pointer-events:none;background:linear-gradient(90deg,#cfc8bc 0 50%,#f3f0ea 50%);animation:flBootFail .6s ease 8s forwards}
@media (min-width:1100px){html[data-floor]:not(.fl-booted)::after{background:linear-gradient(90deg,#cfc8bc 0 48%,#f3f0ea 48%)}}
@media (max-width:899px){html[data-floor]:not(.fl-booted)::after{background:linear-gradient(180deg,#cfc8bc 0 44svh,#f3f0ea 44svh)}}
@keyframes flBootFail{to{opacity:0;visibility:hidden}}

/* ---------- mobiili ja kapea ---------- */
@media (max-width:899px){
  .fl{display:block;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;--fl-pl:1.25rem;--fl-pr:1.25rem}
  .fl_room{position:sticky;top:-16svh;height:44svh;z-index:3}
  .fl_paper{height:auto;overflow:visible;min-height:56svh}
  .fl_bar{position:relative;height:auto;padding:1.1rem .5rem .25rem;background:none}
  .fl_nav ol{flex-wrap:wrap}
  .fl_nav a{height:2.75rem;padding:0 .55rem}
  /* huoneen päällä kompaktisti: ulos vasemmalla ja hissi oikealla ylhäällä (kiinteinä, näkyvät myös vieritettäessä) */
  .fl_logo{display:none}
  .fl_out{position:fixed;left:max(.75rem,env(safe-area-inset-left));top:max(.75rem,env(safe-area-inset-top));height:3rem;padding:0 1.1rem 0 .9rem;gap:.55rem;font-size:.9375rem}
  .fl_out svg{width:1.2rem;height:1.2rem}
  .fl_lift{position:fixed;right:max(.75rem,env(safe-area-inset-right));top:max(.75rem,env(safe-area-inset-top));bottom:auto;transform:none;flex-direction:row-reverse;gap:.25rem}
  .fl_lift::before{display:none}
  .fl_lift_b{padding:0}
  .fl_lift_t{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
  .fl_lift_c{width:3rem;height:3rem}
  .fl_lift_c svg{width:1.05rem;height:1.05rem}
  .fl_lift_n{min-width:2.6rem}
  .fl_lift_n::before,.fl_lift_n::after,.fl_lift_nm{display:none}
  .fl_lift_num{font-size:2rem;line-height:1;width:2.6rem}
  .fl_shade{background:linear-gradient(180deg,rgba(10,9,8,.42) 0,rgba(10,9,8,.14) 26%,rgba(10,9,8,0) 42%)}
  .fl.has-gal .fl_shade{background:linear-gradient(180deg,rgba(10,9,8,.42) 0,rgba(10,9,8,.14) 26%,rgba(10,9,8,0) 42%),linear-gradient(180deg,rgba(10,9,8,0) 52%,rgba(10,9,8,.62) 100%)}
  .fl_gal{left:1rem;right:1rem;bottom:.85rem;display:none}
  .fl.has-gal .fl_gal{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;column-gap:.75rem}
  .fl_gal_k{width:100%;margin:0 0 .3rem}
  .fl_gal_n{font-size:1.75rem;margin:0 0 .5rem}
  .fl_gal_row{gap:.15rem}
  .fl_gal_b{width:3rem;height:3rem}
  .fl_gal_dots button{width:1.35rem}
  .fl_door_c{width:3.5rem;height:3.5rem}
  .fl_door_b{transform:translate(-50%,-1.75rem);gap:.45rem}
  .fl_door_t b{font-size:1.2rem}
  .fl_dhint{transform:translate(-50%,calc(-1.75rem - 100% - .7rem))}
  .flp{padding:1rem 1.25rem 3rem}
  .flp_title{font-size:clamp(3rem,15vw,4.5rem);margin-bottom:20px}
  .flp_lead{font-size:1.35rem}
  .flp_list li{padding:1.1rem 0 1.15rem}
  .flp_list :is(h3,h4),.flpr :is(h3,h4){font-size:1.25rem}
  .flw_t :is(h3,h4){font-size:1.3125rem}
  .flw{grid-template-columns:6.75rem minmax(0,1fr);gap:1rem;padding:1.25rem 0}
  .flw_a{gap:.35rem 1rem}
  .flp_stats div{padding:1rem .6rem 1.1rem;gap:12px}
  .flp_stats dd{font-size:clamp(2.4rem,12.5vw,3.4rem)}
  .flp_stats dt{font-size:.8125rem}
  .flq{grid-template-columns:2rem minmax(0,1fr);column-gap:.6rem}
  .flq.is-lead blockquote p{font-size:clamp(1.65rem,7.6vw,2.1rem)}
  .flq blockquote p{font-size:1.3125rem}
  .flq_list li{padding:1.6rem 0 1.7rem}
  .flst li{padding:.25rem .6rem .2rem}
  .flst b{font-size:clamp(3.5rem,18vw,4.5rem)}
  .flst p{font-size:1rem;margin-top:14px}
  .flpr_p{font-size:1.5rem}
  .flp_sec,.flp_end{margin-top:3.25rem}
  .fl_foot{padding:0 1.25rem 2.5rem}
  .fl.t-fly.is-pre .fl_paper{transform:translateY(18%);opacity:0}
  .fl.is-out .fl_paper{transform:translateY(18%);opacity:0}
  .fl_lb{padding:3.75rem .75rem 1rem}
  .fl_lb_x{top:-3rem}
  .fl_lb_cap{margin-top:1rem}
}
@media (max-width:899px) and (max-height:500px){.fl_room{height:60svh;top:-30svh}}

/* liikkeen vähennys: lyhyet ristihäivytykset */
@media (prefers-reduced-motion:reduce){
  .fl_roomx,.fl_paper,.fl [data-fl-in],.fl_pages,.fl_lb_in{transition:opacity .4s ease!important;transform:none!important;filter:none!important}
  .fl.t-fly.is-pre .fl_roomx,.fl.is-out .fl_roomx{opacity:0}
  .fl.t-fly.is-pre .fl_paper,.fl.is-out .fl_paper{opacity:0}
  .fl_roomx.lift-up,.fl_roomx.lift-down{opacity:0}
  .flp_part.is-swap{animation:none}
  .fl_door_c::after{animation:none;opacity:0}
  .fl_glass,.fl_glass svg,.fl_door_c{transition-property:background-color,color,border-color,opacity!important;transform:none!important}
}

/* ---------- kierros 11 L: ikkunanäkymä (lennon loppu huoneeseen ja alku ulos) ----------
   .fl_win on koko ruudun kerros huoneen ja paperin alla. Lennon aikana (is-peek) näkyy vain se, rajattuna ikkunaan;
   t-win-avautumisessa paneeli jatkaa samasta rajauksesta ja paperi liukuu sen päälle. */
.fl_win{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;opacity:0;display:none;background:#cfc8bc}
.fl.is-peek .fl_win,.fl.t-win .fl_win{display:block}
.fl_win_bg{position:absolute;inset:-6%;background:center/cover no-repeat;filter:blur(26px)}
.fl_win_img{position:absolute;left:0;top:0;max-width:none!important;height:auto!important;transform-origin:0 0;will-change:transform}
.fl_paper{z-index:1}
@media (min-width:900px){.fl_room{z-index:2}}
.fl.is-peek{pointer-events:none}
.fl.is-peek .fl_room,.fl.is-peek .fl_paper{visibility:hidden}
.fl.t-win .fl_room{background:transparent!important;transition:none}
.fl.t-win .fl_roomx,.fl.t-win.is-out .fl_roomx{transform:none;filter:none;opacity:1;transition:none}
.fl_roomx.is-hold{opacity:0!important;transition:none!important}
.fl.t-win .fl_lq{opacity:0!important;transition:none}
.fl.t-win .fl_gl,.fl.t-win .fl_img{transition:none}
.fl.t-win .fl_hot,.fl.t-win .fl_hlab{opacity:0}
.fl.t-win.is-pre .fl_paper{transform:translateX(100%)}
.fl.t-win .fl_paper{transition:transform 1.05s var(--fl-out) .04s}
.fl.t-win.is-out .fl_paper{transform:translateX(100%);transition:transform .9s var(--fl-io)}
@media (max-width:899px){
  .fl.t-win.is-pre .fl_paper,.fl.t-win.is-out .fl_paper{transform:translateY(60svh);opacity:1}
}

/* kierros 13: hissipaneeliin väljemmät välit, Takaisin ulos alariville (desktop) */
@media (min-width:900px){
  .fl_lift{gap:1.35rem}
  .fl_lift_n{padding:.15rem 0}
  .fl_out{top:auto;bottom:clamp(1.25rem,3.4vh,2.5rem)}
  .fl.has-gal .fl_gal{bottom:calc(clamp(1.25rem,3.4vh,2.5rem) + 3.25rem + 1.6rem)}
}

/* kierros 13: uusi logo */
.fl_logo .brandsvg{display:block;height:1.42rem;width:auto;filter:drop-shadow(0 1px 10px rgba(0,0,0,.3))}
.fl_logo i{display:none}

/* kierros 14 (K): A.I. · Design · Development · Branding yhdellä rivillä vasemmalla, sanojen välissä ohut viiva (ei pisteitä) */
.flp_stack{margin:0 0 clamp(2.5rem,6vh,4rem);display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:.35rem .8em;font-family:var(--fl-sans);font-weight:500;text-transform:uppercase;letter-spacing:.06em;line-height:1.1;font-size:clamp(.75rem,2.9cqi,1.375rem);color:var(--fl-ink)}
@container (max-width:440px){.flp_stack{letter-spacing:.04em;gap:.35rem .55em}.flp_stack i{width:.75em}}
.flp_stack span{white-space:nowrap}
.flp_stack i{flex:none;width:1.6em;height:1px;background:currentColor;opacity:.4}
@media (max-width:899px){.flp_stack{font-size:clamp(.75rem,3.2vw,.9375rem);letter-spacing:.04em;gap:.35rem .55em}.flp_stack i{width:.75em}}

/* ---------- kierros N: päivä/yö-vaihto kerroksessa (sama nappi kuin navissa, maitolasi huoneen oikeassa yläkulmassa) ---------- */
.fl_theme{position:absolute;right:var(--fl-ui);top:1.35rem;z-index:6;width:3.25rem;height:3.25rem;border-radius:50%;display:grid;place-items:center}
.fl_theme svg{position:absolute;left:50%;top:50%;width:1.3rem;height:1.3rem;margin:-.65rem 0 0 -.65rem;stroke-width:1.4;transition:opacity .7s var(--fl-out),transform .9s var(--fl-out),filter .35s ease}
.fl_theme .ti_sun{opacity:0;transform:rotate(-60deg) scale(.55)}
html.is-night .fl_theme .ti_sun{opacity:1;transform:none}
html.is-night .fl_theme .ti_moon{opacity:0;transform:rotate(40deg) scale(.55)}
.fl_theme:hover,.fl_theme:focus-visible{background:#fff;color:var(--fl-ink);border-color:#fff!important}
.fl_theme:hover svg,.fl_theme:focus-visible svg{filter:none}
.fl .fl_theme:focus-visible{outline:2px solid #fff;outline-offset:3px}
.fl .fl_theme{transition:opacity .6s ease .5s,background-color .35s var(--fl-out),color .35s var(--fl-out),border-color .35s var(--fl-out)}
.fl.is-pre .fl_theme{opacity:0}
.fl.is-out .fl_theme{opacity:0;transition:opacity .35s ease}
.fl.t-win .fl_theme{opacity:0}
@media (max-width:899px){
  .fl_theme{position:fixed;right:auto;left:max(.75rem,env(safe-area-inset-left));top:calc(max(.75rem,env(safe-area-inset-top)) + 3.5rem);width:3rem;height:3rem}
  .fl_theme svg{width:1.2rem;height:1.2rem;margin:-.6rem 0 0 -.6rem}
}
@media (prefers-reduced-motion:reduce){.fl_theme svg{transition:opacity .3s linear!important;transform:none!important}}
/* kierros P (suorituskyky): mid/low-tasolla huonekuva tulee ja poistuu ilman sumennusta (skaala ja häivytys säilyvät) */
html:is([data-q=low],[data-q=mid]) .fl_roomx{filter:none!important}

/* ---------- kierros 15 (V): Tulokset-kerroksen asiakaspalautteet vuorottelevina nostolainauksina ----------
   Ei numeroita eikä laatikoita: iso GT Super -lainaus, sininen lainausmerkki riippuu marginaalissa,
   nimi ja yritys pienellä versaalilla hiusviivan alla. Leveällä paperilla lohkot vuorottelevat vasen/oikea,
   kapealla yksi palsta. Paperi pysyy vaaleana myös yötilassa (html.is-night vaihtaa vain huoneen). */
.flv{display:flex;flex-direction:column;gap:clamp(3.5rem,9vh,6rem);margin-top:clamp(2.25rem,5vh,3.5rem)}
.flv_i{position:relative}
.flv_f{position:relative}
.flv_m{display:block;height:.36em;margin:0 0 .9rem -.04em;font-family:var(--fl-serif);font-weight:300;font-style:normal;font-size:5rem;line-height:1;color:var(--fl-accent);user-select:none;pointer-events:none}
.flv blockquote p{font-family:var(--fl-serif);font-weight:300;font-size:clamp(1.5rem,5.3cqi,2.375rem);line-height:1.14;letter-spacing:-.014em;color:var(--fl-ink);text-wrap:pretty;max-width:19em}
.flv_i.is-lead blockquote p{font-size:clamp(1.9rem,7.4cqi,3.35rem);line-height:1.05;letter-spacing:-.022em;max-width:15em}
.flv figcaption{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .65em;margin-top:clamp(1.35rem,3vh,1.75rem);padding-top:14px;border-top:1px solid var(--fl-line);font-size:.6875rem;line-height:1.4;letter-spacing:.14em;text-transform:uppercase;font-weight:500}
.flv figcaption b{font-weight:600;color:var(--fl-ink)}
.flv figcaption i{font-style:normal;color:var(--fl-accent);letter-spacing:0}
.flv figcaption span{color:var(--fl-ink-2)}
.flv_i.is-lead figcaption{border-top-color:var(--fl-ink)}
.flv_i:not(.is-lead) blockquote p{text-wrap:balance}
/* leveä paperi: lainausmerkki riippuu tekstin vasemmalla puolella, lohkot vuorottelevat */
@container (min-width:520px){
  .flv{gap:clamp(4.5rem,11vh,7rem)}
  .flv_m{position:absolute;right:calc(100% + .12em);top:-.1em;height:auto;margin:0;font-size:clamp(5rem,15cqi,6.75rem)}
  .flv_i.is-lead .flv_m{position:static;display:block;height:.4em;margin:0 0 .45rem -.05em;font-size:clamp(8rem,28cqi,11rem)}
  .flv_i:not(.is-lead){width:min(80%,40rem)}
  .flv_i:nth-child(even){margin-left:auto}
}
/* esiintulo vierityksen tahdissa (vain tukevissa selaimissa, ilman tukea lainaukset näkyvät heti) */
@supports (animation-timeline:view()){
  @media (prefers-reduced-motion:no-preference){
    .flv_i{animation:flv-in linear both;animation-timeline:view();animation-range:entry 0% entry 70%}
    .flv_m{animation:flv-m linear both;animation-timeline:view();animation-range:entry 10% entry 90%}
  }
}
@keyframes flv-in{from{opacity:0;transform:translateY(2rem)}to{opacity:1;transform:none}}
@keyframes flv-m{from{opacity:0;transform:translateY(.5rem)}to{opacity:1;transform:none}}
@media (max-width:899px){
  .flv{gap:3.25rem;margin-top:1.75rem}
  .flv_m{font-size:4.5rem}
  .flv_i.is-lead .flv_m{font-size:7rem;height:.4em;margin-bottom:.35rem}
  .flv blockquote p{font-size:1.4375rem;line-height:1.16}
  .flv_i.is-lead blockquote p{font-size:clamp(1.7rem,7.6vw,2.125rem);line-height:1.08}
}

/* ---------- kierros 21 R (12.10.2026): näyttökoot ----------
   1. Kerrosnavi ylitti paperin leveyden 900–1199 px:llä (1024×768: viimeinen nimi "Aula" leikkautui ja paperi vieri
      vaakasuunnassa): kapealla navipalkilla vain aktiivisen kerroksen nimi, muut pisteinä (sama kuin aiemmin < 400 px). */
@container flbar (max-width:480px){
  .fl_nav a{padding:0 .55rem;min-width:2.75rem;justify-content:center}
  .fl_nav a:not([aria-current="page"]) .fl_nav_t{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
}
/* 2. Isot näytöt: paperin sisältö enintään 46rem leveä (juurifontti kasvaa v14.css:ssä hillitysti), jotta rivit ja
      hintalistan hinnat eivät levene koko 2000 px:n paperille; tyhjä tila jää paperin oikeaan laitaan */
@media (min-width:1600px){
  .flp,.fl_foot{max-width:calc(var(--fl-pl) + 46rem + var(--fl-pr))}
  .fl_bar{max-width:calc(var(--fl-pl) + 46rem + var(--fl-pr))}
}
/* 2b. Kerrosotsikko ei suhteessa isompi kuin 1440×900:lla (115 px / 900 px = 12,8 % näkymän korkeudesta); ennen
       16:9-näytöillä 14 % (1536×864: 123 px, 1280×720: 102 px). 1440×900:lla arvo täsmälleen sama kuin ennen. */
@media (min-width:900px){
  .flp_title{font-size:clamp(3.5rem,min(8vw,19.5cqi,12.8vh),9.5rem)}
}
/* 3. Puhelin: gallerian "Kävele seuraavaan huoneeseen" -vihje leikkautui huoneen oikeaan reunaan (ovi on kuvan
      oikealla kolmanneksella): kahdelle riville kapeampana */
@media (max-width:599px){
  .fl_dhint span{width:max-content;max-width:9.5rem;white-space:normal;text-align:center;line-height:1.25;padding:.5rem .8rem}
}

/* kierros 21g: X-nappi oikeaan yläkulmaan, sulkee kerroksen */
.fl_x{position:sticky;float:right;right:calc(var(--fl-pr,2.5rem) - .6rem);top:1.05rem;margin:1.05rem calc(var(--fl-pr,2.5rem) - .6rem) -3.8rem 0;z-index:8;width:2.75rem;height:2.75rem;display:grid;place-items:center;border-radius:50%;color:var(--fl-ink);background:transparent;transition:background-color .3s var(--fl-out),transform .3s var(--fl-out)}
.fl_x svg{width:1.15rem;height:1.15rem;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}
.fl_x:hover,.fl_x:focus-visible{background:rgba(15,17,21,.08);transform:rotate(90deg)}
.fl_nav{padding-right:3.4rem}
@media (max-width:899px){.fl_x{position:fixed;float:none;margin:0;right:max(.75rem,env(safe-area-inset-right));top:calc(max(.75rem,env(safe-area-inset-top)) + 3.1rem);width:2.5rem;height:2.5rem;color:#fff;background:rgba(15,15,15,.35);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.fl_x:hover{background:rgba(15,15,15,.5)}}

/* ---------- kierros 22 (Alex 12.10.2026): Palvelut-kerroksen lista ----------
   "Hakukoneoptimointi" ei mahtunut 10,25 rem:n nimisarakkeeseen ja osui kuvaukseen (väli 2 px, 1366–1920).
   Keskileveällä paperilla (560 px … 44 rem) nimi ja hinta omalla rivillään, kuvaus nimen alla; leveällä paperilla
   (≥ 44 rem, esim. 1920) nimisarake 13 rem, jolloin pisimmänkin nimen ja kuvauksen väliin jää noin 3 rem. */
@container (min-width:560px){
  .flp_list.is-num li{grid-template-columns:2.25rem minmax(0,1fr) auto;grid-template-areas:"n h pr" ". d d";column-gap:1.1rem;row-gap:.5rem}
  .flp_list.is-num .flp_n{grid-area:n}
  .flp_list.is-num :is(h3,h4){grid-area:h;min-width:0}
  .flp_list.is-num p:not(.flp_pr){grid-area:d}
  .flp_list.is-num p.flp_pr{grid-area:pr}
}
@container (min-width:44rem){
  .flp_list.is-num li{grid-template-columns:2.25rem 13rem minmax(0,1fr) auto;grid-template-areas:"n h d pr";column-gap:1.25rem;row-gap:0}
}


/* ---------- kierros R2 alasivut (12.10.2026): näyttökokokierros ----------
   1. Kirjaston myötä kerrosnavissa on 7 nimeä: 1280 px:n näytöillä (paperi 666 px) navi oli 20 px paperia leveämpi ja
      "Aula" jäi sulkuristin alle. Keskileveällä navipalkilla (481–720 px) nimien välit tiiviimmiksi; nimet näkyvät edelleen. */
@container flbar (min-width:481px) and (max-width:720px){
  .fl_nav a{padding:0 .4rem;gap:.42rem}
  .fl_nav ol{gap:0}
}
/* 2. Mobiilissa sulkuristi on kiinteänä huoneen päällä, joten navin oikea varaus (3,4 rem) on turha; se teki navista
      paperia leveämmän (vaakaylivuoto 16 px 360 px:llä, ei näkyvä mutta leikattu). */
@media (max-width:899px){.fl_nav{padding-right:0}}

/* ---------- kierros 26 (Alex 12.10.2026): Palvelut-listan nimisarake kasvaa pisimmän nimen mukaan ----------
   "Hakukoneoptimointi" osui kuvaukseen vielä isolla näytöllä (kerrosnäkymän juurikoko 22–30 px, 13 rem ei riittänyt).
   Sarake on nyt vähintään 13 rem ja levenee sisällön mukaan, kuvauksen ja nimen väliin aina vähintään 1.5 rem. */
@container (min-width:44rem){
  .flp_list.is-num li{grid-template-columns:2.25rem minmax(13rem,max-content) minmax(0,1fr) auto;column-gap:1.5rem}
  .flp_list.is-num :is(h3,h4){white-space:nowrap}
}

/* --- kierros 28: Revdot-linkki (AI-chat on oma tuotteemme, revdot.ai) ---
   Etusivun Palvelut-pysäkki: pieni tekstilinkki AI-chat-lasikortin kuvauksen perässä samalla rivillä (kierros 39; ennen
   hintarivin perässä). Kortti itse ei ole linkki.
   Palvelut-kerros: linkki AI-chat-rivin kuvauksen perässä. Rivi on kokonaan klikattava (.flp_go::after, inset 0),
   joten linkki nostetaan sen yläpuolelle (position + z-index), jotta se avaa revdot.ai:n eikä palvelusivua. */
#palvelut .sgrid .sg_d .sg_x{display:inline-flex;align-items:center;gap:.22rem;margin-left:0;white-space:nowrap;font-weight:500;letter-spacing:.01em;color:var(--gc-fg2,currentColor);background:linear-gradient(currentColor,currentColor) 0 100%/100% 1px no-repeat;padding-bottom:1px;transition:color .3s ease}
#palvelut .sgrid .sg_d .sg_x svg{width:.62rem;height:.62rem;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .4s cubic-bezier(.22,1,.36,1)}
#palvelut .sgrid .sg_d .sg_x:hover,#palvelut .sgrid .sg_d .sg_x:focus-visible{color:#1a3fb8}
html.is-night #palvelut .sgrid .sg_d .sg_x:hover,html.is-night #palvelut .sgrid .sg_d .sg_x:focus-visible{color:var(--nacc)}
#palvelut .sgrid .sg_d .sg_x:hover svg,#palvelut .sgrid .sg_d .sg_x:focus-visible svg{transform:translate(2px,-2px)}
.flp_list li .flp_x{position:relative;z-index:1;display:inline-flex;align-items:center;gap:.3rem;color:var(--fl-ink);font-weight:500;white-space:nowrap;background:linear-gradient(currentColor,currentColor) 0 100%/100% 1px no-repeat;padding-bottom:1px;transition:color .3s ease}
.flp_list li .flp_x svg{width:.7rem;height:.7rem;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform .4s var(--fl-out)}
.flp_list li .flp_x:hover,.flp_list li .flp_x:focus-visible{color:var(--fl-accent)}
.flp_list li .flp_x:hover svg,.flp_list li .flp_x:focus-visible svg{transform:translate(2px,-2px)}
/* kierros 28: AI-chat-palvelusivun ingressin sivutekstissä on Revdot-linkki; sama alleviivaus kuin leipätekstin linkeissä (.pg_prose a) */
.flp_side a{color:var(--fl-ink);background:linear-gradient(var(--fl-accent),var(--fl-accent)) 0 100%/100% 1px no-repeat;padding-bottom:1px;transition:color .25s ease,background-size .35s var(--fl-out)}
.flp_side a:hover,.flp_side a:focus-visible{color:var(--fl-accent);background-size:100% 2px}

/* ---------- kierros 31 mobiilin kerroskontrollit (Alex 12.10.2026) ----------
   Pystyruutu (< 900 px, sama ehto kuin muu mobiiliasettelu): huone ylhäällä, paperi alla.
   1. Takaisin ulos ja hissi kiinteäksi alariviksi peukalon ulottuville (safe-area huomioiden): vasemmalla ulos-pilleri,
      oikealla hissikapseli [alas · numero · ylös]. Rivi on paperin päällä, joten lasi on tummempaa savulasia
      (vaaleilla pinnoilla tumma nappi, kierros 12): valkoinen teksti saa kontrastin myös vaaleaa paperia vasten.
      Rivin takana pehmeä paperinsävyinen häivytys (ei tummaa liukuväriä), paperin alalaitaan rivin verran tilaa.
   2. Ylävasemmalle vierekkäin EN-pilleri ja päivä/yö-nappi, sulkuristi oikeaan yläkulmaan samalle keskilinjalle.
   3. Kerrosnumero hissikapselin keskellä samalla keskilinjalla kuin nuolinapit (ennen alareunassa: align-items:flex-end).
   4. Galleria: huoneen vaihto jää huoneen päälle (alarivi ei riitä 360 px:llä kolmelle ryhmälle), mutta yhdeksi
      kapseliksi [‹ pisteet ›] huoneen nimen viereen; ovinappi oviaukossa säilyy.
   5. Referenssit: työn kuva koko paperin levyinen 16:10, teksti kuvan alla (leveämmällä paperilla kaksi palstaa). */
@media (max-width:899px){
  .fl{--fl-mside:max(.75rem,env(safe-area-inset-left));--fl-mside-r:max(.75rem,env(safe-area-inset-right));
    --fl-mtop:max(.75rem,env(safe-area-inset-top));--fl-mbot:max(.75rem,env(safe-area-inset-bottom));
    --fl-mh:3rem;--fl-mbar:calc(var(--fl-mbot) + var(--fl-mh) + .75rem);
    --fl-smoke:rgba(24,23,22,.62)}
  /* alarivin savulasi */
  .fl_out,.fl_lift{background-color:var(--fl-smoke);-webkit-backdrop-filter:blur(16px) saturate(130%);backdrop-filter:blur(16px) saturate(130%);border:1px solid rgba(255,255,255,.2)!important;box-shadow:0 14px 30px -14px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.12)}
  .fl_out{top:auto;bottom:var(--fl-mbot);left:var(--fl-mside);height:var(--fl-mh);text-shadow:none}
  .fl_out:hover,.fl_out:focus-visible{background:#111;color:#fff;border-color:rgba(255,255,255,.3)!important}
  .fl_out:hover svg,.fl_out:focus-visible svg{filter:none}
  /* hissikapseli: alas, numero, ylös */
  .fl_lift{top:auto;bottom:var(--fl-mbot);right:var(--fl-mside-r);height:var(--fl-mh);align-items:center;gap:0;padding:0 .2rem;border-radius:100px;text-shadow:none}
  .fl_lift_b{height:100%;display:grid;place-items:center}
  .fl_lift .fl_lift_c{width:2.5rem;height:2.5rem;background:rgba(255,255,255,.1);border:0!important;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}
  .fl_lift .fl_lift_c svg{filter:none}
  .fl_lift_b:hover .fl_lift_c,.fl_lift_b:focus-visible .fl_lift_c{background:#fff;color:#111}
  .fl_lift_n{height:100%;min-width:0;display:grid;place-items:center;align-self:stretch}
  .fl_lift_num{display:block;width:auto;min-width:2.6rem;padding:0 .3rem;font-size:1.75rem;line-height:1;transform:translateY(var(--fl-numy,.04em))}
  .fl .fl_lift_b:focus-visible{outline:0}
  .fl .fl_lift_b:focus-visible .fl_lift_c{outline:2px solid #fff;outline-offset:2px}
  /* ylärivi: EN ja päivä/yö vierekkäin vasemmalla, sulkuristi oikealla */
  .fl_lang{top:var(--fl-mtop);left:var(--fl-mside);height:2.75rem;min-width:2.75rem;padding:0 .85rem}
  .fl_theme{top:var(--fl-mtop);left:calc(var(--fl-mside) + 2.75rem + .5rem);width:2.75rem;height:2.75rem}
  .fl_x{top:var(--fl-mtop);right:var(--fl-mside-r);width:2.75rem;height:2.75rem}
  /* paperin alalaitaan rivin verran tilaa; pehmeä paperinsävyinen häivytys rivin taakse */
  .fl_paper{padding-bottom:var(--fl-mbar)}
  .fl_room::after{content:"";position:fixed;left:0;right:0;bottom:0;z-index:5;height:calc(var(--fl-mbar) + 1.25rem);pointer-events:none;
    background:linear-gradient(180deg,rgba(243,240,234,0),rgba(243,240,234,.86) 48%,rgba(243,240,234,.94));transition:opacity .6s ease .5s}
  .fl.is-pre .fl_room::after,.fl.t-win .fl_room::after{opacity:0}
  .fl.is-out .fl_room::after{opacity:0;transition:opacity .35s ease}
  /* yläreunan varjostus kevyemmäksi (ylhäällä enää pienet napit) */
  .fl_shade{background:linear-gradient(180deg,rgba(10,9,8,.34) 0,rgba(10,9,8,.1) 18%,rgba(10,9,8,0) 30%)}
  .fl.has-gal .fl_shade{background:linear-gradient(180deg,rgba(10,9,8,.34) 0,rgba(10,9,8,.1) 18%,rgba(10,9,8,0) 30%),linear-gradient(180deg,rgba(10,9,8,0) 58%,rgba(10,9,8,.6) 100%)}
  /* galleria: nimi vasemmalla, yksi kapseli [‹ pisteet ›] oikealla */
  .fl.has-gal .fl_gal{left:var(--fl-mside);right:var(--fl-mside-r);bottom:.75rem;flex-wrap:nowrap;align-items:flex-end;column-gap:.75rem}
  .fl_gal_k{width:auto;margin:0 0 .3rem}
  .fl_gal_t{min-width:0}
  .fl_gal_n{font-size:1.5rem;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .fl_gal_row{flex:none;height:2.75rem;gap:0;padding:0 .15rem;border-radius:100px;background-color:var(--fl-smoke);-webkit-backdrop-filter:blur(16px) saturate(130%);backdrop-filter:blur(16px) saturate(130%);border:1px solid rgba(255,255,255,.22);box-shadow:0 12px 28px -14px rgba(0,0,0,.55);text-shadow:none}
  .fl_gal_row .fl_gal_b{width:2.4rem;height:2.4rem;background:transparent;border:0!important;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}
  .fl_gal_row .fl_gal_b svg{filter:none}
  .fl_gal_row .fl_gal_b:hover,.fl_gal_row .fl_gal_b:focus-visible{background:#fff;color:#111}
  .fl_gal_row .fl_gal_b:disabled{opacity:.32}
  .fl_gal_dots button{width:1.15rem;height:2.75rem}
  .fl_gal_dots i{box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.85)}
  .fl_gal_dots button[aria-current] i{width:1rem}
  /* referenssit: isot kuvat */
  .flw{grid-template-columns:minmax(0,1fr);gap:.95rem;padding:1.6rem 0 1.5rem}
  .flw_m{border-radius:8px}
  .flw_t :is(h3,h4){margin-top:.4rem;font-size:1.375rem}
  .flw_d{margin-top:.45rem}
  .flw_a{margin-top:.55rem}
  .flw_type{font-size:1.6rem}
}
@media (max-width:899px) and (max-height:500px){.fl_gal_k{display:none}}
@media (max-width:899px){
  @container (min-width:520px){
    .flw_list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:1.25rem}
    .flw:nth-child(2){border-top:0;padding-top:.35rem}
  }
}
/* kierros 31 b: EN-pilleri samankokoiseksi pyöreäksi napiksi teemanapin vasemmalle (lang.css:n mobiilisääntö voitetaan
   tarkemmalla valitsimella); sulkuristi on mobiilissa huoneen sisällä (floor.js placeX) ja häivyttyy kuten teemanappi */
@media (max-width:899px){
  .fl .fl_lang{top:var(--fl-mtop);left:var(--fl-mside);width:2.75rem;min-width:0;height:2.75rem;padding:0 0 0 .14em}
  .fl .fl_x{z-index:6;transition:opacity .6s ease .5s,background-color .3s var(--fl-out),transform .3s var(--fl-out)}
  .fl.is-pre .fl_x,.fl.t-win .fl_x{opacity:0}
  .fl.is-out .fl_x{opacity:0;transition:opacity .35s ease}
  .fl .fl_x:focus-visible{outline:2px solid #fff;outline-offset:3px}
  .flw{padding:1.4rem 0 1.3rem}
}
@media (max-width:899px){.fl{--fl-numy:.095em}} /* GT Superin numerot istuvat rivilaatikossa 1,5 px ylhäällä: mitattu 390×844 */
/* kierros 31 c: sulkuristi samaa maitolasia kuin EN- ja päivä/yö-napit, jotta ylärivi on yhtenäinen */
@media (max-width:899px){
  .fl .fl_x{background:rgba(100,99,98,.56);border:1px solid rgba(255,255,255,.45);box-shadow:0 12px 32px -14px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.18);-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%)}
  .fl .fl_x:hover{background:#fff;color:#111}
}

/* ---------- kierros 39 (Alex 15.10.2026): mobiilin gallerian huoneenvaihto noin 20 % pienemmäksi ----------
   Referenssit-kerroksen huonekapseli [‹ pisteet ›] (kierros 31: 2,75 rem) ja oviaukon pyöreä "Seuraava huone" -nappi
   (3,5 rem) olivat puhelimella liian hallitsevia huoneen päällä. Kapseli 2,25 rem, nuolinapit ja pisteet samassa suhteessa,
   ovinappi 2,8 rem (keskitys translate puolet korkeudesta, vihjekupla sen mukaan). Desktop ennallaan. */
@media (max-width:899px){
  .fl_gal_row{height:2.25rem;padding:0 .12rem}
  .fl_gal_row .fl_gal_b{width:1.95rem;height:1.95rem}
  .fl_gal_row .fl_gal_b svg{width:.92rem;height:.92rem}
  .fl_gal_dots button{width:.95rem;height:2.25rem}
  .fl_gal_dots i{width:.4rem;height:.4rem}
  .fl_gal_dots button[aria-current] i{width:.8rem}
  .fl_door_c{width:2.8rem;height:2.8rem}
  .fl_door_c svg{width:1.05rem;height:1.05rem}
  .fl_door_b{transform:translate(-50%,-1.4rem);gap:.4rem}
  .fl_door_t b{font-size:1rem}
  .fl_dhint{transform:translate(-50%,calc(-1.4rem - 100% - .6rem))}
}
