/*! Totalmed – Lab Journey styles (generated by src/build.py from the prototype – edit the build, not this file) */
.tm-lj{--ring-a:var(--accent);--ring-b:var(--primary);--tm-ctx-f:blur(3.5px) saturate(.6) contrast(.62) brightness(1.16);--tm-ctx-fj:blur(3px) saturate(.8) contrast(.8) brightness(1.06);display:block;width:100%;max-width:none}
:root[data-brx-theme="dark"] .tm-lj{--ring-b:var(--ink);--tm-ctx-f:blur(3.5px) saturate(.6) contrast(.7) brightness(.8);--tm-ctx-fj:blur(3px) saturate(.8) contrast(.8) brightness(.88)}
.tm-lj .tm-lj-sprite{position:absolute;width:0;height:0;overflow:hidden}
.tm-lj .stage :is(h1,h2,h3,p){margin:0}
.tm-lj .bricks-button .ico{width:18px;height:18px}
.tm-lj .p-link[hidden],.tm-lj .more-cat[hidden]{display:none}
.tm-lj .zone-list .tm-chip{display:inline-flex;align-items:center;min-height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-weight:600;text-decoration:none}
.tm-lj .ico{width:20px;height:20px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tm-lj .mark{flex:none;display:block}
.tm-lj .curtain{position:fixed;inset:0;z-index:110;background:var(--bg);display:grid;place-items:center;opacity:0;visibility:hidden;transition:opacity .32s ease,visibility .32s}
.tm-lj .curtain.on{opacity:1;visibility:visible}
.tm-lj .curtain .mark{width:52px;height:52px;animation:tm-lj-spin 1.2s linear infinite}
.tm-lj .progress{position:fixed;left:0;right:0;top:calc(env(safe-area-inset-top,0px) + var(--header-h));height:2px;z-index:58;background:var(--accent);transform-origin:left;transform:scaleX(0);opacity:0;transition:opacity .3s}
.tm-lj .progress.on{opacity:1}
.tm-lj{position:relative;height:calc(100vh + 9 * 92vh);height:calc(100svh + 9 * 92svh)}
.tm-lj .stage{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;background:
  radial-gradient(110% 90% at 50% 62%,var(--stage-1) 0%,var(--stage-2) 100%)}
.tm-lj #tm-lj-ctx{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:0;pointer-events:none;filter:var(--tm-ctx-f);transition:filter .8s}
.tm-lj .stage.journeying #tm-lj-ctx{filter:var(--tm-ctx-fj)}
.tm-lj #tm-lj-lab{position:absolute;inset:0;width:100%;height:100%;display:block;outline:none;z-index:0;cursor:grab}
.tm-lj .stage.dragging #tm-lj-lab{cursor:grabbing}
.tm-lj .drag-hint{position:absolute;left:50%;top:calc(var(--header-h) + 18px);transform:translate(-50%,-6px);display:flex;align-items:center;gap:8px;padding:8px 14px 8px 10px;border-radius:999px;background:color-mix(in srgb,var(--surface) 78%,transparent);-webkit-backdrop-filter:blur(12px) saturate(1.4);backdrop-filter:blur(12px) saturate(1.4);border:1px solid color-mix(in srgb,var(--ink) 9%,transparent);color:var(--ink);font-size:var(--text-s);font-weight:600;box-shadow:var(--shadow-l);opacity:0;pointer-events:none;transition:opacity .4s,transform .4s;z-index:5;white-space:nowrap}
.tm-lj .drag-hint.on{opacity:1;transform:translate(-50%,0)}
.tm-lj .drag-hint svg{width:20px;height:20px;color:var(--accent);flex:none}
.tm-lj .stage::before{content:"";position:absolute;inset:0 0 auto 0;height:46%;z-index:1;pointer-events:none;background:linear-gradient(180deg,var(--stage-2) 0%,color-mix(in srgb,var(--stage-2) 85%,transparent) 50%,transparent 100%);transition:opacity .5s}
.tm-lj .stage::after{content:"";position:absolute;inset:auto 0 0 0;height:22%;z-index:1;pointer-events:none;background:linear-gradient(0deg,var(--bg) 0%,color-mix(in srgb,var(--bg) 60%,transparent) 45%,transparent 100%);transition:opacity .5s}
.tm-lj .stage.journeying::before,.tm-lj .stage.journeying::after{opacity:0}
.tm-lj .layer{position:absolute;inset:0;pointer-events:none;z-index:3}
.tm-lj .hero-copy{position:absolute;left:50%;transform:translateX(-50%);top:calc(env(safe-area-inset-top,0px) + var(--header-h) + clamp(48px,11vh,120px));width:min(720px,calc(100% - 2 * var(--gutter)));display:grid;justify-items:center;text-align:center;gap:14px;z-index:5;transition:opacity .4s,transform .4s,visibility .4s}
.tm-lj .hero-copy.off{opacity:0;transform:translate(-50%,-12px);visibility:hidden}
.tm-lj .eyebrow{display:inline-flex;align-items:center;gap:10px;font-size:var(--text-s);font-weight:600;color:var(--accent-ink);letter-spacing:.01em}
.tm-lj .eyebrow .mark{width:20px;height:20px}
.tm-lj .hero-copy h1{font-size:var(--text-3xl)}
.tm-lj .hero-copy .lead{font-size:var(--text-l);color:var(--muted);max-width:54ch}
.tm-lj .hero-copy .cta{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:4px}
.tm-lj .scroll-hint{position:absolute;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 16px);transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;font-size:var(--text-s);font-weight:500;color:var(--muted);z-index:4;transition:opacity .3s}
.tm-lj .scroll-hint.off{opacity:0}
.tm-lj .scroll-hint i{width:20px;height:32px;border:2px solid currentColor;border-radius:12px;position:relative}
.tm-lj .scroll-hint i::after{content:"";position:absolute;left:50%;top:6px;width:3px;height:7px;margin-left:-1.5px;border-radius:2px;background:var(--accent);animation:tm-lj-wheel 1.6s ease-in-out infinite}
@keyframes tm-lj-wheel{0%{transform:translateY(0);opacity:1}70%{transform:translateY(9px);opacity:0}100%{opacity:0}}

/* station panel */
.tm-lj .panel{position:absolute;left:var(--gutter);bottom:clamp(20px,6vh,64px);width:min(410px,calc(100% - 2 * var(--gutter)));background:var(--surface);border-radius:var(--border-max);box-shadow:var(--shadow-l);padding:22px 22px 16px;display:grid;gap:12px;z-index:6;opacity:0;visibility:hidden;transform:translateY(14px);transition:opacity .4s,transform .4s,visibility .4s}
.tm-lj .panel.on{opacity:1;visibility:visible;transform:none}
.tm-lj .panel .idx{display:flex;align-items:center;gap:10px;font-size:var(--text-s);font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}
.tm-lj .panel .idx .room{color:var(--accent-ink)}
.tm-lj .panel .idx .bar-mini{flex:1;height:3px;background:var(--surface-2);border-radius:3px;overflow:hidden}
.tm-lj .panel .idx .bar-mini i{display:block;height:100%;background:var(--accent);width:0;transition:width .5s}
.tm-lj .panel h2{font-size:var(--text-2xl)}
.tm-lj .panel p{color:var(--muted)}
.tm-lj .chips-row{display:flex;flex-wrap:wrap;gap:8px}
.tm-lj .pchip{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px 0 8px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font-size:var(--text-s);font-weight:550;cursor:pointer;color:var(--ink);text-align:left}
.tm-lj .pchip:hover{border-color:var(--accent)}
.tm-lj .pchip .plus{width:20px;height:20px;border-radius:50%;background:var(--accent);color:var(--on-accent);display:grid;place-items:center;flex:none}
.tm-lj .pchip .plus svg{width:12px;height:12px;stroke-width:2.4}

/* rail */
.tm-lj .rail{position:absolute;right:calc(var(--gutter) - 6px);top:50%;transform:translateY(-50%);display:grid;gap:2px;z-index:6}
.tm-lj .rail button{display:flex;align-items:center;justify-content:flex-end;gap:10px;height:28px;border:0;background:none;cursor:pointer;padding:0 6px;color:var(--ink);font-size:12px;font-weight:600}
.tm-lj .rail button span{opacity:0;transform:translateX(6px);transition:opacity .2s,transform .2s;white-space:nowrap;background:var(--surface);padding:4px 9px;border-radius:999px;box-shadow:var(--shadow-s)}
.tm-lj .rail button:hover span,.tm-lj .rail button:focus-visible span,.tm-lj .rail button[aria-current="step"] span{opacity:1;transform:none}
.tm-lj .rail button[aria-current="step"] span{background:var(--ink);color:var(--bg)}
.tm-lj .rail button i{width:10px;height:10px;border-radius:50%;border:2px solid color-mix(in srgb,var(--ink) 45%,transparent);background:var(--surface);transition:all .3s}
.tm-lj .rail button[aria-current="step"] i{border-color:var(--accent);background:var(--accent);transform:scale(1.25)}

/* hotspots + pins */
.tm-lj .hs{position:absolute;left:0;top:0;width:44px;height:44px;margin:-22px 0 0 -22px;border:0;padding:0;background:none;cursor:pointer;opacity:0;visibility:hidden;transition:opacity .35s,visibility .35s;pointer-events:auto;will-change:transform}
.tm-lj .hs.on{opacity:1;visibility:visible}
.tm-lj .hs .halo{position:absolute;inset:8px;border-radius:50%;border:2px solid var(--accent);animation:tm-lj-halo 2.4s ease-out infinite}
.tm-lj .hs .tip{position:absolute;left:44px;top:50%;transform:translate(-4px,-50%);white-space:nowrap;background:color-mix(in srgb,var(--surface) 80%,transparent);-webkit-backdrop-filter:blur(12px) saturate(1.5);backdrop-filter:blur(12px) saturate(1.5);border:1px solid color-mix(in srgb,var(--ink) 10%,transparent);box-shadow:var(--shadow-l);color:var(--ink);font-size:var(--text-s);font-weight:700;padding:6px 11px;border-radius:9px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}
.tm-lj .hs:hover .tip,.tm-lj .hs:focus-visible .tip{opacity:1;transform:translate(0,-50%)}
.tm-lj .hs.flip .tip{left:auto;right:44px}
@keyframes tm-lj-halo{0%{transform:scale(.8);opacity:.9}100%{transform:scale(1.7);opacity:0}}
@keyframes tm-lj-spin{to{transform:rotate(360deg)}}
.tm-lj .pin{position:absolute;left:0;top:0;display:flex;align-items:center;gap:8px;padding:5px 13px 5px 5px;background:color-mix(in srgb,var(--surface) 76%,transparent);-webkit-backdrop-filter:blur(12px) saturate(1.5);backdrop-filter:blur(12px) saturate(1.5);color:var(--ink);border-radius:999px;box-shadow:0 0 0 1px color-mix(in srgb,var(--ink) 9%,transparent),var(--shadow-l);font-weight:700;font-size:var(--text-s);border:0;cursor:pointer;white-space:nowrap;pointer-events:auto;opacity:0;visibility:hidden;transition:opacity .35s,visibility .35s;will-change:transform}
.tm-lj .pin.on{opacity:1;visibility:visible}
.tm-lj .pin .n{width:24px;height:24px;border-radius:50%;background:var(--primary);color:var(--on-primary);box-shadow:0 0 0 2px var(--surface),0 0 0 3.5px var(--accent);display:grid;place-items:center;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}
.tm-lj .pin .c{font-weight:600;color:var(--muted)}
.tm-lj .pin:hover{background:var(--surface);box-shadow:0 0 0 2px var(--accent),var(--shadow-l)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.tm-lj .pin,.tm-lj .hs .tip,.tm-lj .drag-hint{background:var(--surface)}}

.tm-lj .outro{position:absolute;left:50%;top:52%;transform:translate(-50%,-46%) scale(.98);width:min(640px,calc(100% - 2 * var(--gutter)));background:color-mix(in srgb,var(--surface) 62%,transparent);-webkit-backdrop-filter:blur(16px) saturate(1.3);backdrop-filter:blur(16px) saturate(1.3);border:1px solid color-mix(in srgb,var(--surface) 70%,transparent);border-radius:20px;box-shadow:var(--shadow-l);padding:clamp(24px,4vw,44px);display:grid;gap:14px;text-align:center;justify-items:center;opacity:0;visibility:hidden;transition:opacity .45s,transform .45s,visibility .45s;z-index:6}
.tm-lj .outro.on{opacity:1;visibility:visible;transform:translate(-50%,-50%)}
.tm-lj .outro .mark{width:40px;height:40px}
.tm-lj .outro h2{font-size:clamp(26px,3vw,38px)}
.tm-lj .outro p{color:color-mix(in srgb,var(--ink) 78%,var(--muted));font-size:var(--text-l);font-weight:600;line-height:1.5;max-width:46ch}
.tm-lj .outro .cta{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:8px}
.tm-lj .loader{position:absolute;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 70px);transform:translateX(-50%);display:flex;align-items:center;gap:10px;background:var(--surface);padding:8px 14px 8px 10px;border-radius:999px;box-shadow:var(--shadow-s);font-size:var(--text-s);font-weight:600;color:var(--muted);z-index:7;transition:opacity .4s}
.tm-lj .loader .mark{width:20px;height:20px;animation:tm-lj-spin 1.2s linear infinite}
.tm-lj .loader.done{opacity:0;visibility:hidden}
.tm-lj .zone-list{display:none}

@media (max-width:720px){
  .tm-lj .hero-copy{gap:10px;top:calc(env(safe-area-inset-top,0px) + var(--header-h) + 40px)}
  .tm-lj .hero-copy .lead{font-size:14px}
  .tm-lj .hero-copy .cta .bricks-button{flex:1 1 auto;min-height:42px}
  .tm-lj .panel{left:12px;right:12px;width:auto;bottom:calc(env(safe-area-inset-bottom,0px) + 12px);padding:16px;gap:8px}
  .tm-lj .panel p{font-size:14px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .tm-lj .chips-row{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-inline:-16px;padding-inline:16px}
  .tm-lj .chips-row::-webkit-scrollbar{display:none}
  .tm-lj .pchip{flex:none}
  .tm-lj .pin{padding:3px}.tm-lj .pin .t,.tm-lj .pin .c{display:none}
  .tm-lj .hs .tip{display:none}
  .tm-lj .outro .cta .bricks-button{flex:1 1 auto}
}
.tm-lj.no-3d{height:auto}
.tm-lj.no-3d .stage{position:relative;height:auto;padding-bottom:40px}
.tm-lj.no-3d .hero-copy{position:relative;left:auto;top:auto;transform:none;margin:calc(var(--header-h) + 40px) auto 0;width:auto;max-width:720px;padding-inline:var(--gutter)}
.tm-lj.no-3d .panel,.tm-lj.no-3d .rail,.tm-lj.no-3d .scroll-hint,.tm-lj.no-3d .outro,.tm-lj.no-3d #tm-lj-lab,.tm-lj.no-3d #tm-lj-ctx,.tm-lj.no-3d .drag-hint,.tm-lj.no-3d .quote-pill{display:none}
.tm-lj.no-3d .zone-list{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:16px}
.tm-lj .pop{position:fixed;left:0;top:0;z-index:70;width:min(360px,calc(100vw - 32px));max-height:calc(100svh - 32px);overflow:auto;background:var(--surface);border-radius:var(--border-max);box-shadow:var(--shadow-l);opacity:0;visibility:hidden;transform:translateY(8px) scale(.97);transition:opacity .25s,transform .3s cubic-bezier(.2,.8,.2,1),visibility .25s}
.tm-lj .pop.open{opacity:1;visibility:visible;transform:none}
.tm-lj .pop.modal{left:50%!important;top:50%!important;width:min(760px,calc(100vw - 32px));transform:translate(-50%,-47%) scale(.97)}
.tm-lj .pop.modal.open{transform:translate(-50%,-50%)}
.tm-lj .pop.modal .pop-in{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.tm-lj .pop-in{display:grid;grid-template-columns:minmax(0,1fr)}
.tm-lj .pop .media{background:#FFFFFF;display:grid;place-items:center;aspect-ratio:4/3;padding:12px}
.tm-lj .pop.modal .media{aspect-ratio:auto;min-height:100%}
.tm-lj .pop .media img{width:100%;height:100%;max-height:300px;object-fit:contain}
.tm-lj .pop .body{padding:18px 20px 20px;display:grid;grid-template-columns:minmax(0,1fr);gap:10px;align-content:start;min-width:0}
.tm-lj .pop .cat{font-size:var(--text-s);font-weight:600;color:var(--accent-ink)}
.tm-lj .pop h3{font-size:var(--text-xl);padding-right:28px}
.tm-lj .pop .model{font-size:var(--text-s);color:var(--muted);font-variant-numeric:tabular-nums}
.tm-lj .specs{list-style:none;padding:0;margin:0;display:grid;gap:7px;font-size:14px}
.tm-lj .specs li{display:grid;grid-template-columns:8px 1fr;gap:10px;align-items:baseline}
.tm-lj .specs li::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);transform:translateY(-2px)}
.tm-lj .pop .row{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}
.tm-lj .pop .row .bricks-button{flex:1 1 140px}
.tm-lj .pop .x{position:absolute;top:8px;right:8px;width:40px;height:40px;border-radius:50%;border:0;background:var(--surface);box-shadow:var(--shadow-s);display:grid;place-items:center;cursor:pointer;color:var(--ink);z-index:2}
.tm-lj .pop .more-cat{font-size:var(--text-s);white-space:normal;text-align:left;line-height:1.4;min-height:32px}
@media (max-width:720px){
  .tm-lj .pop,.tm-lj .pop.modal{left:8px!important;right:8px;top:auto!important;bottom:calc(env(safe-area-inset-bottom,0px) + 8px);width:auto;max-height:84svh;transform:translateY(24px)}
  .tm-lj .pop.open,.tm-lj .pop.modal.open{transform:none}
  .tm-lj .pop.modal .pop-in{grid-template-columns:minmax(0,1fr)}
  .tm-lj .pop .media,.tm-lj .pop.modal .media{aspect-ratio:16/10;min-height:0}
  .tm-lj .pop .media img{max-height:200px}
}
/* the stage runs under the glass header (Bricks "sticky on scroll" keeps the header in the flow) */
#brx-content>.brxe-section:first-child>.tm-lj:first-child{margin-top:calc(-1 * var(--header-h))}
/* hotspot badge: ring, disc and plus share one SVG so they always paint together */
.tm-lj .hs .hs-g{position:absolute;inset:0;width:44px;height:44px;overflow:visible;filter:drop-shadow(0 3px 5px rgba(0,0,0,.24))}
.tm-lj .hs .hs-g .spin{fill:none;stroke-width:4;transform-origin:22px 22px;animation:tm-lj-spin 7s linear infinite}
.tm-lj .hs .hs-g .core{transform-origin:22px 22px;transition:transform .2s}
.tm-lj .hs .hs-g .disc{fill:var(--surface,#fff)}
.tm-lj .hs .hs-g .plus{fill:none;stroke:var(--ink,#13203a);stroke-width:1.9;stroke-linecap:round}
.tm-lj .hs:hover .hs-g .core,.tm-lj .hs:focus-visible .hs-g .core,.tm-lj .hs[aria-expanded="true"] .hs-g .core{transform:scale(1.15)}
/* mobile: no station rail, smaller hotspots */
@media (max-width:720px){
  .tm-lj .rail{display:none}
  .tm-lj .hs{width:34px;height:34px;margin:-17px 0 0 -17px}
  .tm-lj .hs .hs-g{width:34px;height:34px}
  .tm-lj .hs .halo{inset:6px}
  /* product popup: buttons stacked, full width */
  .tm-lj .pop .row{flex-direction:column;align-items:stretch}
  .tm-lj .pop .row .bricks-button{flex:0 0 auto;width:100%;justify-content:center}
}
/* scroll hint lives inside the hero copy, right under the buttons */
.tm-lj .hero-copy .scroll-hint{position:static;left:auto;bottom:auto;transform:none;margin-top:clamp(10px,2.4vh,24px)}
/* hero text closer to the header (the 3D plan below gets the freed space) */
.tm-lj .hero-copy{top:calc(env(safe-area-inset-top,0px) + var(--header-h) + clamp(28px,5vh,56px))}
/* phones: more air above and below the hero text */
@media (max-width:720px){
  .tm-lj .hero-copy{gap:12px;top:calc(env(safe-area-inset-top,0px) + var(--header-h) + clamp(44px,7vh,64px))}
  .tm-lj .hero-copy .scroll-hint{margin-top:10px}
}
/* zone link in the info panel: pill with count badge, arrow centred */
.tm-lj .panel .p-link{display:inline-flex;align-items:center;justify-self:start;gap:.8rem;margin-top:2px;padding:.7rem 1rem .7rem 1.4rem;border-radius:999px;background:color-mix(in srgb,var(--primary) 8%,var(--surface));color:var(--primary);font-size:var(--text-s);font-weight:600;line-height:1.2;text-decoration:none;transition:background-color .2s}
.tm-lj .panel .p-link .n{display:inline-grid;place-items:center;min-width:2.4rem;height:2.2rem;padding:0 .7rem;border-radius:999px;background:var(--primary);color:var(--on-primary);font-size:1.2rem;font-weight:700;font-variant-numeric:tabular-nums}
.tm-lj .panel .p-link .ico{display:block;width:16px;height:16px;flex:none;transition:transform .2s}
.tm-lj .panel .p-link:hover{background:color-mix(in srgb,var(--primary) 14%,var(--surface))}
.tm-lj .panel .p-link:hover .ico{transform:translateX(3px)}
:root[data-brx-theme="dark"] .tm-lj .panel .p-link{background:var(--surface-2);color:var(--ink)}
:root[data-brx-theme="dark"] .tm-lj .panel .p-link .n{background:var(--accent);color:#fff}
/* stacking above the Bricks header */
.tm-lj .curtain{z-index:100000}
.tm-lj .pop{z-index:100001}
.tm-lj .progress{z-index:1001}
@media (prefers-reduced-motion: reduce){
  .tm-lj *,.tm-lj *::before,.tm-lj *::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
/* builder preview (no WebGL inside the Bricks canvas) */
.tm-lj-builder{position:relative;min-height:520px;display:grid;place-items:center;padding:var(--space-xl) var(--gutter);background:radial-gradient(110% 90% at 50% 62%,var(--stage-1) 0%,var(--stage-2) 100%);text-align:center}
.tm-lj-builder .hero-copy{display:grid;gap:14px;justify-items:center;max-width:720px}
.tm-lj-builder .note{margin-top:var(--space-m);display:inline-flex;gap:8px;align-items:center;padding:8px 14px;border-radius:999px;background:var(--surface);box-shadow:var(--shadow-s);font-size:var(--text-s);font-weight:600;color:var(--muted)}
