/* Shared structural layer for Loomkind showcase builds. Each brand styles its own look. */
*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0}img{display:block;max-width:100%;height:auto}button{font:inherit;color:inherit;cursor:pointer}a{color:inherit}
[hidden]{display:none!important}.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px;top:8px;z-index:999;padding:8px 14px;background:#000;color:#fff}.skip:focus{left:8px}
.w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.08em;margin-bottom:-.08em}.w>span{display:inline-block}
.js [data-split] .w>span{transform:translateY(105%);transition:transform 1s cubic-bezier(.19,1,.22,1)}.js [data-split].is-in .w>span{transform:none}
.js [data-rv]{opacity:0;transform:translateY(28px);transition:opacity 1s cubic-bezier(.19,1,.22,1),transform 1s cubic-bezier(.19,1,.22,1)}.js [data-rv].is-in{opacity:1;transform:none}
.js [data-rv="fade"]{transform:none}/* clip reveal: clip the child, never the observed element, so IntersectionObserver always sees it */
.js [data-rv="clip"]{opacity:1;transform:none}.js [data-rv="clip"]>*{clip-path:inset(100% 0 0 0);transition:clip-path 1.4s cubic-bezier(.77,0,.18,1)}.js [data-rv="clip"].is-in>*{clip-path:inset(0)}
.js [data-rv="scale"]{transform:scale(.94)}
.media{overflow:hidden;position:relative}.media>img{width:100%;height:100%;object-fit:cover;will-change:transform}
/* showcase strip: in-flow, top of page, never overlaps content */
.lk-strip{position:relative;z-index:70;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 16px;min-height:32px;padding:6px 14px;background:#0e0c1a;color:#e9e7f2;font:500 12px/1.3 ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;letter-spacing:.01em;text-align:center}
.lk-strip b{font-weight:700;color:#fff}.lk-strip a{color:#fff;font-weight:600;text-underline-offset:3px}.lk-strip a:hover{color:#c9bfff}
@media (max-width:420px){.lk-strip .lk-x{display:none}}
/* booking structure */
[data-book] .dates{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(64px,1fr);gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:6px}
[data-book] .date{scroll-snap-align:start;display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 4px}
[data-book] .date:disabled,[data-book] .slot:disabled{opacity:.35;cursor:not-allowed;text-decoration:line-through}
[data-book] .times{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;margin-top:14px}
.js [data-book] .times .slot{opacity:0;transform:translateY(6px);transition:opacity .4s,transform .4s}.js [data-book] .times.is-in .slot{opacity:1;transform:none}
.js [data-book] .times.is-in .slot:disabled{opacity:.35}
[data-book] [data-step]{animation:none}.js [data-book] [data-step].is-in{animation:stepin .6s cubic-bezier(.19,1,.22,1)}
@keyframes stepin{from{opacity:0;transform:translateX(18px)}to{opacity:1;transform:none}}
/* chat structure */
[data-chat]{position:fixed;right:18px;bottom:18px;z-index:90}
[data-chat-panel]{position:absolute;right:0;bottom:72px;width:min(360px,calc(100vw - 36px));max-height:min(560px,calc(100vh - 120px));display:flex;flex-direction:column;overflow:hidden;transform-origin:bottom right;animation:chatin .45s cubic-bezier(.19,1,.22,1)}
@keyframes chatin{from{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:none}}
[data-chat-log]{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:16px;min-height:220px}
.msg{max-width:84%;padding:10px 13px;line-height:1.4;font-size:14px;animation:msgin .35s cubic-bezier(.19,1,.22,1)}.msg.me{align-self:flex-end}
@keyframes msgin{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.typing{display:flex;gap:4px;align-items:center}.typing i{width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.4;animation:dot 1s infinite}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}
@keyframes dot{50%{opacity:1;transform:translateY(-2px)}}
[data-chat-q]{display:flex;flex-wrap:wrap;gap:6px;padding:0 16px 10px}[data-chat] form{display:flex;gap:8px;padding:10px 12px 12px}[data-chat] form input{flex:1;min-width:0}
[data-chat]{bottom:calc(18px + env(safe-area-inset-bottom,0px));transition:opacity .4s,transform .4s,visibility 0s}[data-chat].fab-wait{opacity:0;visibility:hidden;transform:translateY(16px);pointer-events:none;transition:opacity .4s,transform .4s,visibility 0s .4s}
@media (max-width:560px){[data-chat]{bottom:calc(16px + env(safe-area-inset-bottom,0px));right:12px}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.js [data-rv],.js [data-split] .w>span{opacity:1!important;transform:none!important;clip-path:none!important}.js [data-rv="clip"]>*{clip-path:none!important}}
.lk-strip a{display:inline-flex;align-items:center;min-height:24px;padding:2px 6px;margin:-2px -6px}
@media (max-width:359px){.lk-strip{font-size:11px;gap:2px 10px;padding:4px 10px;min-height:28px}}
