/* Mikey's 3D lab layer. Everything is scoped to html.lab-on; without it the page is the normal site. */
html.lab-pre #main{opacity:0}
html.lab-on{background:#e6edf6}
html.lab-on body{background:transparent!important}
html.lab-on .lab-gone{display:none!important}
html.lab-on #lab3d{position:fixed;left:0;top:0;width:100%;height:100vh;height:100lvh;z-index:0;display:block;touch-action:pan-y pinch-zoom;outline:0;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
html.lab-on{overscroll-behavior-y:none;-webkit-text-size-adjust:100%}
html.lab-on.lab-gl-lost #lab3d{visibility:hidden}
html.lab-on #main{position:relative;z-index:1;background:transparent!important;opacity:1}
html.lab-on footer,html.lab-on .stripe{position:relative;z-index:1}
html.lab-on:not(.lab-ready) #lab-ui{opacity:0}
html.lab-on #lab-ui{transition:opacity .6s ease}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}
.lenis.lenis-stopped{overflow:hidden}
/* sections / glass panels */
.lab-sec,html.lab-on main>section.lab-sec,html.lab-on section.lab-sec.lab-sec.lab-sec{background:none!important;background-color:transparent!important;border:0;box-shadow:none;min-height:100vh;min-height:100svh;display:flex;align-items:center;box-sizing:border-box;padding:96px max(28px,5vw,env(safe-area-inset-right)) 72px max(28px,5vw,env(safe-area-inset-left));pointer-events:none}
.lab-sec[data-side=l]{justify-content:flex-start}.lab-sec[data-side=r]{justify-content:flex-end}
.lab-panel{pointer-events:auto;width:min(580px,100%);box-sizing:border-box;background:rgba(255,255,255,.92);-webkit-backdrop-filter:blur(14px) saturate(1.2);backdrop-filter:blur(14px) saturate(1.2);border:1px solid rgba(30,58,95,.12);border-radius:22px;padding:28px 30px;box-shadow:0 24px 70px rgba(30,58,95,.2);color:#1f2937;text-align:left}
.lab-panel.wide{width:min(680px,100%)}
.lab-panel .lab-eyebrow{margin:0 0 6px;font-size:.78rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#0284c7}
.lab-panel h2{margin:0 0 10px;font-size:clamp(1.5rem,2.6vw,2rem);line-height:1.15;color:#1e3a5f}
.lab-panel .sub,.lab-panel .lab-note{color:#4b5563;font-size:.95rem;margin:0 0 14px}
.lab-panel .lab-note{font-size:.82rem;margin-top:12px}
.lab-panel section,.lab-panel .hero.home{background:none!important;padding:0!important;margin:16px 0 0!important;border:0;box-shadow:none;text-align:left;overflow:visible}
.lab-panel .hero.home{margin:0!important}
.lab-panel>section:first-of-type{margin-top:0!important}
.lab-panel .wrap{max-width:none!important;padding:0!important;margin:0!important;width:auto!important}
.lab-panel .hero3d{display:block!important}
.lab-panel .h3txt{max-width:none!important;text-align:left!important}
.lab-panel .hero.home h1{font-size:clamp(1.7rem,3.4vw,2.6rem);line-height:1.12;margin:0 0 12px;color:#1e3a5f!important;text-align:left}
.lab-panel .hero.home h1 span{color:#0284c7!important}
.lab-panel .hero.home .lead{color:#374151!important;font-size:1.05rem;margin:0 0 16px;text-align:left}
.lab-panel .btns{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-start!important}
.lab-panel [class*=band] .eyebrow{color:#0284c7}
.lab-panel [class$=in],.lab-panel [class*=band-in],.lab-panel .shtsis-card,.lab-panel .fxcard{display:block!important;background:rgba(241,245,249,.7)!important;border:1px solid rgba(30,58,95,.1)!important;border-radius:16px;padding:16px!important;box-shadow:none!important}
.lab-panel [class*=band] h2,.lab-panel .fxcard h2,.lab-panel .shtsis h2{font-size:1.25rem;color:#1e3a5f!important;margin:2px 0 6px}
.lab-panel [class*=band] p,.lab-panel .fxcard p,.lab-panel .shtsis p{color:#374151!important;font-size:.95rem}
.lab-panel [class*=band] .btn,.lab-panel [class*=-btns],.lab-panel .shtsis-btns{margin-top:10px}
.lab-panel .shtsis-logo{max-width:150px;height:auto;margin-bottom:8px}
.lab-panel .pq-steps{display:grid;gap:10px;list-style:none;margin:10px 0;padding:0}
.lab-panel .pq-step{padding:12px 14px;border-radius:14px;background:rgba(241,245,249,.8);border:1px solid rgba(30,58,95,.1);text-align:left}
.lab-panel .pq-step h3{margin:2px 0;font-size:1rem}.lab-panel .pq-step p{margin:0;font-size:.9rem}
.lab-panel .pq-how h2,.lab-panel .pq-how .sub{margin-top:0}
.lab-panel .meet{display:block!important;box-shadow:none;background:transparent;border:0;padding:0!important}
.lab-panel .meetpic{width:110px!important;height:110px!important}
.lab-panel #revs{display:block}
.lab-panel .grid{display:grid;gap:10px;grid-template-columns:1fr}
.lab-panel .card{box-shadow:none}
.lab-panel .hoursline{font-size:.92rem;color:#374151}
/* price chips / lists */
.lab-prices{list-style:none;margin:0 0 12px;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.lab-prices li{background:#f1f5f9;border:1px solid rgba(30,58,95,.1);border-radius:12px;padding:9px 12px;font-size:.9rem;line-height:1.25}
.lab-prices b{display:block;font-weight:700;color:#1f2937}.lab-prices span{color:#0369a1;font-weight:800}
.lab-links{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 0;padding:0;list-style:none}
.lab-links a,.lab-classic{display:inline-block;padding:8px 14px;border-radius:999px;border:1px solid rgba(30,58,95,.25);background:#fff;color:#1e3a5f;font-weight:700;font-size:.9rem;text-decoration:none;cursor:pointer;font-family:inherit}
.lab-links a.pri{background:#1e3a5f;color:#fff;border-color:#1e3a5f}
.lab-shopgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 12px}
.lab-card{display:block;text-decoration:none;color:#1f2937;background:#fff;border:1px solid rgba(30,58,95,.12);border-radius:12px;padding:6px;text-align:center;font-size:.76rem;line-height:1.2}
.lab-card img{width:100%;height:auto;aspect-ratio:1;object-fit:contain;border-radius:8px;background:#f8fafc;display:block}
.lab-card b{display:block;margin-top:4px;font-weight:700}.lab-card span{color:#0369a1;font-weight:800}
.lab-acc{font-size:.88rem;color:#374151;margin:0 0 6px}
.lab-contact{list-style:none;margin:0 0 8px;padding:0;display:grid;gap:6px;font-size:1.02rem}
.lab-contact a{color:#1e3a5f;font-weight:700}
.lab-hint{margin:14px 0 0;font-size:.82rem;color:#64748b}
.lab-classic{margin-top:10px;font-size:.8rem;padding:6px 12px}
/* HUD */
.lab-dots{position:fixed;right:14px;top:50%;transform:translateY(-50%);z-index:4;display:flex;flex-direction:column;gap:6px;pointer-events:none}
.lab-dots a{pointer-events:auto;position:relative;display:block;width:14px;height:14px;border-radius:50%;background:rgba(30,58,95,.35);border:2px solid #fff;text-indent:-9999px;overflow:visible;transition:background .2s}
.lab-dots a.on{background:#0284c7}
.lab-dots a::after{content:attr(data-l);position:absolute;right:24px;top:50%;transform:translateY(-50%);white-space:nowrap;text-indent:0;background:#1e3a5f;color:#fff;padding:3px 10px;border-radius:999px;font:700 .75rem system-ui,sans-serif;opacity:0;pointer-events:none;transition:opacity .15s}
.lab-dots a:hover::after,.lab-dots a:focus-visible::after,.lab-dots a.on::after{opacity:1}
.lab-dots a:not(.on):not(:hover):not(:focus-visible)::after{opacity:0}
.lab-tip{position:fixed;left:0;top:0;z-index:6;pointer-events:none;background:#1e3a5f;color:#fff;padding:6px 12px;border-radius:999px;font:700 .82rem system-ui,sans-serif;transform:translate(16px,16px);opacity:0;transition:opacity .15s;white-space:nowrap}
.lab-try{position:fixed;right:12px;top:84px;z-index:6;border:1px solid rgba(30,58,95,.3);background:#fff;color:#1e3a5f;font:700 .85rem system-ui,sans-serif;padding:8px 14px;border-radius:999px;cursor:pointer;box-shadow:0 6px 20px rgba(30,58,95,.15)}
/* ---------- phones (portrait) ---------- */
html.lab-on .lab-open{display:none}
@media(max-width:760px){
 html.lab-on .lab-sec,html.lab-on section.lab-sec.lab-sec.lab-sec{padding:calc(44vh) max(12px,env(safe-area-inset-right)) calc(132px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));padding-top:44svh;align-items:flex-start;justify-content:center!important}
 .lab-panel,.lab-panel.wide{padding:18px 16px;border-radius:18px;width:100%;max-width:520px}
 .lab-dots{display:none}
 .lab-prices{grid-template-columns:1fr}
 .lab-shopgrid{grid-template-columns:repeat(3,1fr)}
 .lab-panel .hero.home h1{font-size:1.55rem}
 .lab-panel h2{font-size:1.4rem}
 .lab-panel .pq-steps{grid-template-columns:1fr}
}
@media(max-width:760px) and (max-height:700px){html.lab-on .lab-sec,html.lab-on section.lab-sec.lab-sec.lab-sec{padding-top:36svh}}
@media(max-width:360px){.lab-panel,.lab-panel.wide{padding:14px 12px}.lab-shopgrid{grid-template-columns:repeat(2,1fr)}.lab-panel .hero.home h1{font-size:1.4rem}}

/* ---------- phones in landscape: panel on one side, the scene stays visible on the other ---------- */
@media(orientation:landscape) and (max-height:520px) and (pointer:coarse){
 html.lab-on .lab-sec,html.lab-on section.lab-sec.lab-sec.lab-sec{padding:72px max(16px,env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));min-height:100svh;align-items:flex-start}
 .lab-panel,.lab-panel.wide{width:min(46vw,460px);padding:16px}
 .lab-prices{grid-template-columns:1fr 1fr}
 .lab-shopgrid{grid-template-columns:repeat(3,1fr)}
 .lab-dots{display:flex;right:max(8px,env(safe-area-inset-right))}
 .lab-panel .hero.home h1{font-size:1.45rem}
}

/* ---------- touch: 44px targets, tap feedback, cheaper compositing ---------- */
@media(pointer:coarse){
 html.lab-on a,html.lab-on button,html.lab-on [role=button]{-webkit-tap-highlight-color:rgba(2,132,199,.28)}
 .lab-panel a.btn,.lab-panel .btn,.lab-panel button,.lab-panel .lab-links a,.lab-panel .lab-classic,.lab-panel [class*=-btns] a,.lab-panel input:not([type=checkbox]):not([type=radio]),.lab-panel select{min-height:44px;box-sizing:border-box}
 .lab-links a,.lab-classic{display:inline-flex;align-items:center;justify-content:center;padding:10px 16px}
 .lab-contact li{min-height:44px;display:flex;align-items:center}
 .lab-contact a{display:inline-flex;align-items:center;min-height:44px}
 .lab-card{min-height:44px}
 .lab-panel summary{min-height:44px;display:flex;align-items:center;box-sizing:border-box}
 .lab-panel p a,.lab-panel .hoursline a{display:inline-block;padding:12px 3px;margin:-12px 0}
 .lab-panel input,.lab-panel select,.lab-panel textarea{font-size:16px}   /* stops iOS zooming into fields */
 .lab-panel .pq-step,.lab-panel .lab-card,.lab-panel .card{touch-action:manipulation}
 html.lab-on .lab-open{display:inline-flex;align-items:center;position:fixed;left:50%;top:calc(72px + env(safe-area-inset-top));transform:translateX(-50%);z-index:5;min-height:44px;padding:0 18px;border-radius:999px;background:#1e3a5f;color:#fff;font:700 .9rem system-ui,sans-serif;text-decoration:none;box-shadow:0 8px 24px rgba(30,58,95,.3);pointer-events:auto;white-space:nowrap;max-width:calc(100vw - 24px);overflow:hidden;text-overflow:ellipsis}
}
@media(orientation:landscape) and (max-height:520px){html.lab-on .lab-open{top:calc(80px + env(safe-area-inset-top));left:auto;right:max(12px,env(safe-area-inset-right));transform:none}}
html.lab-on.lab-lite .lab-panel{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(255,255,255,.96);box-shadow:0 10px 30px rgba(30,58,95,.18)}
html.lab-on .lab-open{transition:opacity .2s}
html.lab-on .lab-open.away{opacity:0;pointer-events:none!important}
html.lab-on.lab-lite .lab-tip{display:none}
.lab-rip{position:fixed;z-index:7;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;border:2px solid rgba(2,132,199,.7);background:rgba(2,132,199,.18);pointer-events:none;animation:labrip .6s ease-out forwards}
.lab-rip.hit{border-color:#16a34a;background:rgba(22,163,74,.2)}
@keyframes labrip{to{transform:scale(5);opacity:0}}
@media(prefers-reduced-motion:reduce){.lab-rip{animation:none;opacity:0}}
html.lab-on .frpsticky{padding-bottom:calc(8px + env(safe-area-inset-bottom))}
html.lab-on header{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}

/* readable light-glass overrides for the originally dark bands */
html.lab-on body .lab-panel section.aiband,html.lab-on body .lab-panel section.rcband,html.lab-on body .lab-panel section.mmband,html.lab-on body .lab-panel .mmband{background:none!important;background-image:none!important;border:0!important;padding:0!important}
html.lab-on body .lab-panel :is(.aiband,.rcband,.mmband) :is(h2,h3){color:#1e3a5f!important;-webkit-text-fill-color:#1e3a5f!important}
html.lab-on body .lab-panel :is(.aiband,.rcband,.mmband) :is(p,.mm-lead,.mm-lead b,.mm-note,li){color:#374151!important;-webkit-text-fill-color:#374151!important}
html.lab-on body .lab-panel :is(.aiband,.rcband,.mmband) .eyebrow{color:#0284c7!important;-webkit-text-fill-color:#0284c7!important}
html.lab-on body .lab-panel :is(.aiband,.rcband) .btn{background:#0369a1!important;color:#fff!important;-webkit-text-fill-color:#fff!important;border-color:#0369a1!important}
html.lab-on body .lab-panel :is(.aiband,.rcband) .btn:is(.ghost,.alt,.btn-o,.btn-outline){background:#fff!important;color:#0369a1!important;-webkit-text-fill-color:#0369a1!important}
html.lab-on body .lab-panel .mmband a.mm-demo{color:#4f46e5!important;-webkit-text-fill-color:#4f46e5!important}
html.lab-on body .lab-panel :is(.aiband,.rcband,.mmband) :is(.aiin,.rcin,.mmin){color:#374151!important;background:rgba(241,245,249,.7)!important;border:1px solid rgba(30,58,95,.1)!important}
html.lab-on #lab-ui{pointer-events:none}
html.lab-on #main{pointer-events:none}html.lab-on #main>*:not(.lab-sec):not(#lab-ui){pointer-events:auto}

/* dark mode: html-level invert would break the fixed canvas, so invert the pieces instead */
html[data-theme=dark].lab-on{filter:none!important;background:#0b1220!important}
html[data-theme=dark].lab-on #lab3d,html[data-theme=dark].lab-on .lab-panel,html[data-theme=dark].lab-on header,html[data-theme=dark].lab-on footer,html[data-theme=dark].lab-on .lab-dots,html[data-theme=dark].lab-on .lab-tip{filter:invert(.92) hue-rotate(180deg)}
html[data-theme=dark].lab-on .lab-panel img{filter:invert(1) hue-rotate(180deg)}
