/* olk-fx3.css - batch 4 illustrations (original inline SVG) + motion. Pairs with olk-fx3.js. Reduced motion -> static end states. */
.olkx-art{pointer-events:none}
.olkx-art svg{display:block;overflow:visible}
/* ---------- line art ---------- */
.olkx-la{position:absolute;z-index:0;width:min(var(--sz,120px),26vw);color:var(--k-accent);opacity:var(--op,.55)}
.olkx-la svg{width:100%;height:auto}
.olkx-pos-tl{top:var(--dy,5%);left:var(--dx,3%)}
.olkx-pos-tr{top:var(--dy,5%);right:var(--dx,3%)}
.olkx-pos-bl{bottom:var(--dy,5%);left:var(--dx,3%)}
.olkx-pos-br{bottom:var(--dy,5%);right:var(--dx,3%)}
.olkx-pos-ml{top:50%;left:var(--dx,2%);translate:0 -50%}
.olkx-pos-mr{top:50%;right:var(--dx,2%);translate:0 -50%}
.olkx-la [data-draw],.olkx-ul [data-draw],.olkx-mapcard [data-draw],.olkx-tick [data-draw]{transition:stroke-dashoffset 1.8s cubic-bezier(.45,.05,.3,1)}
.olkx-la [data-draw]:nth-child(2){transition-delay:.18s}.olkx-la [data-draw]:nth-child(3){transition-delay:.34s}.olkx-la [data-draw]:nth-child(4){transition-delay:.5s}.olkx-la [data-draw]:nth-child(5){transition-delay:.64s}.olkx-la [data-draw]:nth-child(n+6){transition-delay:.78s}
.olkx-in [data-draw],.olkx-in.olkx-la [data-draw]{stroke-dashoffset:0!important}
.olkx-fill{fill:currentColor;stroke:none}.olkx-t{fill:currentColor;stroke:none;font:700 10px/1 var(--k-body,sans-serif)}
.olkx-beam{fill:currentColor;stroke:none;opacity:0;transform-origin:60px 34px}
.olkx-in .olkx-beam{animation:olkx-beam 7s ease-in-out 1.6s infinite}
@keyframes olkx-beam{0%,100%{opacity:0;transform:rotate(-8deg)}30%{opacity:.18}50%{opacity:.26;transform:rotate(18deg)}70%{opacity:.12}}
.olkx-neon{color:var(--k-accent);filter:drop-shadow(0 0 2px currentColor) drop-shadow(0 0 10px currentColor)}
.olkx-neon.olkx-in{animation:olkx-flick 5.5s linear 2s infinite}
@keyframes olkx-flick{0%,19%,21%,23%,55%,57%,100%{opacity:var(--op,.8)}20%,22%,56%{opacity:calc(var(--op,.8) * .35)}}
/* ---------- heading underlines ---------- */
.olkx-ul-host{isolation:isolate}
.olkx-ul{position:absolute;left:-4%;width:108%;bottom:-.34em;color:var(--k-accent);z-index:-1}
.olkx-ul svg{width:100%;height:auto}
.olkx-ul-circle{left:-12%;width:124%;bottom:auto;top:50%;translate:0 -50%}
.olkx-ul-neon{bottom:-.2em;filter:drop-shadow(0 0 3px currentColor) drop-shadow(0 0 9px currentColor)}
.olkx-ul-deco{bottom:-.5em}
.olkx-ul [data-draw]{transition-duration:1.1s}.olkx-ul [data-draw]:nth-child(2){transition-delay:.35s}
/* ---------- per-template icon treatments (amenities + distances icons) ---------- */
html[data-olkx-icons] :is(.olk-amen,.olk-dist)[data-v] :is(.olk-am-ic,.olk-dt-ic){transition:transform .3s}
html[data-olkx-icons=deco] :is(.olk-amen,.olk-dist)[data-v] :is(.olk-am-ic,.olk-dt-ic){width:38px;height:38px;border-radius:0;background:transparent;color:var(--k-accent-ink);border:1px solid var(--k-accent);outline:1px solid color-mix(in srgb,var(--k-accent) 55%,transparent);outline-offset:3px;rotate:45deg}
html[data-olkx-icons=deco] :is(.olk-amen,.olk-dist)[data-v] :is(.olk-am-ic,.olk-dt-ic) svg{rotate:-45deg;stroke-width:1.3;width:18px;height:18px}
html[data-olkx-icons=sticker] :is(.olk-amen,.olk-dist)[data-v] :is(.olk-am-ic,.olk-dt-ic){width:40px;height:40px;border-radius:50%;background:#fff;color:var(--k-accent-ink);border:3px solid #fff;box-shadow:0 2px 0 rgba(0,0,0,.12),0 6px 14px -6px rgba(0,0,0,.35);rotate:-7deg}
html[data-olkx-icons=sticker] :is(.olk-am,.olk-dt):nth-child(even) :is(.olk-am-ic,.olk-dt-ic){rotate:6deg}
html[data-olkx-icons=neon] :is(.olk-amen,.olk-dist)[data-v] :is(.olk-am-ic,.olk-dt-ic){background:transparent;color:var(--k-accent);border:1.5px solid var(--k-accent);border-radius:12px;box-shadow:0 0 10px -2px var(--k-accent),inset 0 0 8px -3px var(--k-accent);filter:drop-shadow(0 0 3px var(--k-accent))}
html[data-olkx-icons=rope] :is(.olk-amen,.olk-dist)[data-v] :is(.olk-am-ic,.olk-dt-ic){width:40px;height:40px;border-radius:50%;background:transparent;color:var(--k-accent-ink);border:2.5px dotted var(--k-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--k-accent) 14%,transparent)}
html[data-olkx-icons=blob] :is(.olk-amen,.olk-dist)[data-v] :is(.olk-am-ic,.olk-dt-ic){width:42px;height:40px;border-radius:42% 58% 63% 37%/41% 44% 56% 59%;background:color-mix(in srgb,var(--k-accent) 24%,transparent);color:var(--k-accent-ink)}
html[data-olkx-icons=blob] :is(.olk-am,.olk-dt):nth-child(3n+2) :is(.olk-am-ic,.olk-dt-ic){border-radius:63% 37% 54% 46%/55% 48% 52% 45%}
html[data-olkx-icons=blob] :is(.olk-am,.olk-dt):nth-child(3n) :is(.olk-am-ic,.olk-dt-ic){border-radius:38% 62% 45% 55%/60% 38% 62% 40%}
html[data-olkx-icons=rough] :is(.olk-amen,.olk-dist)[data-v] :is(.olk-am-ic,.olk-dt-ic){background:transparent;color:var(--k-accent-ink);border:2px solid currentColor;border-radius:255px 15px 225px 15px/15px 225px 15px 255px}
html[data-olkx-icons=rough] :is(.olk-am-ic,.olk-dt-ic) svg,html[data-olkx-icons=marker] :is(.olk-am-ic,.olk-dt-ic) svg,html[data-olkx-icons=offset] :is(.olk-am-ic,.olk-dt-ic) svg{filter:url(#olkx-rough);stroke-width:2.1}
html[data-olkx-icons=tile] :is(.olk-amen,.olk-dist)[data-v] :is(.olk-am-ic,.olk-dt-ic){width:42px;height:42px;border-radius:4px;color:#1d4f8c;background:radial-gradient(circle,#fff 52%,transparent 54%),conic-gradient(from 45deg,#215a9c 0 25%,#f7f3ea 0 50%,#215a9c 0 75%,#f7f3ea 0);background-size:100% 100%,14px 14px;box-shadow:inset 0 0 0 2px #215a9c}
html[data-olkx-icons=offset] :is(.olk-amen,.olk-dist)[data-v] :is(.olk-am-ic,.olk-dt-ic){background:var(--k-bg,#fff);color:var(--k-text);border:2px solid currentColor;border-radius:6px;box-shadow:4px 4px 0 var(--k-accent)}
html[data-olkx-icons=stamp] :is(.olk-amen,.olk-dist)[data-v] :is(.olk-am-ic,.olk-dt-ic){width:42px;height:42px;border-radius:50%;background:transparent;color:var(--k-accent-ink);border:2px solid currentColor;box-shadow:inset 0 0 0 3px var(--k-bg,#fff),inset 0 0 0 4px currentColor;rotate:-8deg}
html[data-olkx-icons=stamp] :is(.olk-am-ic,.olk-dt-ic) svg{filter:url(#olkx-ink)}
html[data-olkx-icons=marker] :is(.olk-amen,.olk-dist)[data-v] :is(.olk-am-ic,.olk-dt-ic){background:linear-gradient(100deg,transparent 8%,color-mix(in srgb,var(--k-accent) 70%,transparent) 10% 88%,transparent 90%) 50% 60%/100% 62% no-repeat;color:var(--k-text);border-radius:0}
html[data-olkx-icons] :is(.olk-am,.olk-dt):hover :is(.olk-am-ic,.olk-dt-ic){transform:scale(1.08) rotate(-4deg)}
/* ---------- stickers ---------- */
.olkx-sticker{position:absolute;z-index:3;width:min(var(--sz,130px),30vw);rotate:var(--rot,-8deg)}
.olkx-sticker svg{width:100%;height:auto}
.olkx-sk-badge svg{transform:rotate(var(--spin,0deg))}
.olkx-bd-bg{fill:var(--k-accent)}.olkx-bd-t{fill:var(--k-on-accent,#fff);font:700 12.5px/1 var(--k-body,sans-serif);letter-spacing:.14em;text-transform:uppercase}.olkx-bd-ic{color:var(--k-on-accent,#fff)}
.olkx-st-bg{fill:#ffd23f;stroke:#1a1a1a;stroke-width:2}.olkx-st-t{fill:#1a1a1a;font:800 13px/1 var(--k-body,sans-serif);text-transform:uppercase;letter-spacing:.04em}
.olkx-stamp-svg{color:var(--k-accent-ink,var(--k-accent));opacity:.86}.olkx-stamp-g{stroke:currentColor;fill:none}.olkx-stamp-t,.olkx-stamp-c{fill:currentColor;stroke:none;font:700 11px/1 var(--k-body,sans-serif);letter-spacing:.2em;text-transform:uppercase}.olkx-stamp-c{font-size:15px;letter-spacing:.06em}
.olkx-sticker{opacity:0;scale:.6}
.olkx-sticker.olkx-in{opacity:1;scale:1;transition:opacity .4s,scale .6s cubic-bezier(.3,1.6,.5,1)}
.olkx-sk-stamp.olkx-in{animation:olkx-stamp .5s cubic-bezier(.2,.9,.3,1.2) both}
@keyframes olkx-stamp{0%{opacity:0;scale:1.9}60%{opacity:1;scale:.94}100%{opacity:1;scale:1}}
/* ---------- section edges ---------- */
.olkx-edge{position:absolute;left:0;right:0;top:0;translate:0 -50%;z-index:4;overflow:hidden;color:var(--k-accent)}
.olkx-rope{height:34px;display:flex;align-items:center}
.olkx-rope .olkx-rope-svg{width:max(100%,1200px);height:18px;flex:0 0 auto}
.olkx-knot{position:absolute;left:50%;top:0;width:34px;height:34px;margin-left:-17px;border-radius:50%;background:var(--k-bg,#fff);padding:4px;box-shadow:0 0 0 2px currentColor}
.olkx-knot svg{width:100%;height:100%}
.olkx-tiles{height:22px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 44 44'%3E%3Crect width='44' height='44' fill='%23f7f3ea'/%3E%3Cg fill='none' stroke='%23215a9c' stroke-width='2'%3E%3Cpath d='M22 3c4 7 4 12 0 19-4-7-4-12 0-19zM22 41c4-7 4-12 0-19-4 7-4 12 0 19zM3 22c7-4 12-4 19 0-7 4-12 4-19 0zM41 22c-7-4-12-4-19 0 7 4 12 4 19 0z'/%3E%3Cpath d='M0 6a6 6 0 0 0 6-6M38 0a6 6 0 0 0 6 6M44 38a6 6 0 0 0-6 6M6 44a6 6 0 0 0-6-6'/%3E%3C/g%3E%3C/svg%3E") 0 0/22px 22px repeat-x;box-shadow:0 1px 0 #215a9c,0 -1px 0 #215a9c}
.olkx-dots{position:absolute;z-index:0;width:min(var(--sz,220px),46vw);aspect-ratio:1;background:radial-gradient(circle,var(--k-accent) 32%,transparent 35%) 0 0/13px 13px;-webkit-mask-image:radial-gradient(circle,#000 20%,transparent 70%);mask-image:radial-gradient(circle,#000 20%,transparent 70%);opacity:0;scale:.7}
.olkx-dots.olkx-in{opacity:.55;scale:1;transition:opacity .8s,scale 1.2s cubic-bezier(.2,.8,.2,1)}
/* ---------- paper-cut hero landscape ---------- */
.olkx-paperhero{position:absolute;left:0;right:0;bottom:0;height:clamp(70px,15vw,200px);z-index:1}
.olkx-ph-svg{width:100%;height:100%}
.olkx-ph-sun{fill:color-mix(in srgb,var(--k-accent) 80%,#fff)}
.olkx-ph-l1{fill:color-mix(in srgb,var(--k-accent) 45%,var(--k-bg,#fff))}
.olkx-ph-l2{fill:color-mix(in srgb,var(--k-accent) 70%,var(--k-bg,#fff))}
.olkx-ph-l3{fill:color-mix(in srgb,var(--k-accent) 30%,var(--k-text,#333))}
.olkx-ph-l4{fill:var(--k-bg,#fff)}
.olkx-ph-l1,.olkx-ph-l2,.olkx-ph-l3{animation:olkx-sway 9s ease-in-out infinite alternate}
.olkx-ph-l2{animation-duration:12s;animation-delay:-3s}.olkx-ph-l3{animation-duration:7s;animation-delay:-5s}
@keyframes olkx-sway{from{transform:translateX(-14px)}to{transform:translateX(14px)}}
/* ---------- hand-drawn map card ---------- */
.olkx-mapcard{margin:0 0 22px;max-width:440px;color:var(--k-text)}
.olkx-mc-svg{width:100%;height:auto;display:block}
.olkx-mc-paper{fill:color-mix(in srgb,var(--k-accent) 7%,var(--k-bg,#fff));stroke:color-mix(in srgb,currentColor 30%,transparent);stroke-width:1.5;stroke-dasharray:6 4}
.olkx-mc-coast{fill:none;stroke:var(--k-accent);stroke-width:3;stroke-linecap:round}
.olkx-mc-sea path{fill:none;stroke:var(--k-accent);stroke-width:1.6;opacity:.6}
.olkx-mc-route{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;opacity:.75}
.olkx-mc-home path{fill:var(--k-accent);stroke:currentColor;stroke-width:1.5}
.olkx-mc-hl{fill:currentColor;font:700 11px/1 var(--k-body,sans-serif)}
.olkx-mc-spot circle{fill:var(--k-bg,#fff);stroke:var(--k-accent);stroke-width:2.5}
.olkx-mc-spot text{fill:currentColor;font:600 11px/1 var(--k-body,sans-serif)}
.olkx-mc-spot{opacity:0;transition:opacity .5s calc(.9s + var(--i) * .25s)}
.olkx-mapcard.olkx-in .olkx-mc-spot{opacity:1}
.olkx-mc-compass{color:var(--k-accent);opacity:.7}
.olkx-mapcard figcaption{margin-top:6px;font-size:12px;font-style:italic;opacity:.7}
/* ---------- signature / footprints ---------- */
.olkx-sign{margin:clamp(34px,5vw,60px) auto 0;text-align:center;color:var(--k-accent-ink,var(--k-accent))}
.olkx-sign-t{margin:0;font:italic 400 clamp(24px,3vw,36px)/1.2 "Segoe Print","Bradley Hand","Marker Felt",var(--k-head),cursive}
.olkx-sign-svg{width:min(420px,86%);height:auto;margin:6px auto 0;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round}
.olkx-feet{position:absolute;top:8%;bottom:6%;right:clamp(8px,3vw,40px);width:34px;z-index:0;color:var(--k-accent)}
.olkx-foot{position:absolute;top:var(--y);left:0;width:14px;opacity:0;rotate:-10deg;transition:opacity .4s}
.olkx-foot.r{left:16px;rotate:12deg}
.olkx-foot svg{width:100%;height:auto;fill:currentColor}
.olkx-foot.on{opacity:.5}
/* ---------- ring gallery (31): spinning 3D photo ring, all sizes. Photos orbit with depth (smaller/darker/raised at the back)
   but always face the viewer: flat, never rotated. Card 351px wide on desktop (+30% vs the original 270px), 52vw on phones. ---------- */
.olkx-ring{position:relative;margin:10px auto clamp(24px,4vw,40px);padding-block:clamp(8px,2vw,20px);overflow:hidden;overflow:clip;display:grid;justify-items:center;gap:18px}
.olkx-ring-on #gal-grid{display:none!important}
.olkx-ring-stage{--rw:max(150px,min(351px,52vw,calc((100svh - 230px) / 1.32)));position:relative;width:100%;height:calc(var(--rw) * 1.32);touch-action:pan-y;cursor:grab;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
.olkx-ring.is-drag .olkx-ring-stage{cursor:grabbing}
.olkx-ring-it{position:absolute;left:50%;bottom:0;width:var(--rw);height:calc(var(--rw) * 1.3);margin-left:calc(var(--rw) * -.5);padding:0;border:0;border-radius:18px;overflow:hidden;background:#111;cursor:zoom-in;transform-origin:50% 100%;box-shadow:0 30px 60px -30px rgba(0,0,0,.6);outline:1px solid color-mix(in srgb,var(--k-accent) 50%,transparent)}
.olkx-ring-it img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none;-webkit-user-drag:none}
.olkx-ring-it:focus-visible{outline:3px solid var(--k-ring,var(--k-accent));outline-offset:4px}
.olkx-ring-ui{display:flex;align-items:center;gap:14px;font:600 13px/1 var(--k-body);letter-spacing:.12em}
.olkx-ring-ui button{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--k-accent);background:transparent;color:inherit;font-size:18px;cursor:pointer}
.olkx-ring-ui button:hover,.olkx-ring-ui button:focus-visible{background:var(--k-accent);color:var(--k-on-accent,#000)}
/* ---------- grid zoom band ---------- */
.olkx-gz{position:relative;height:280svh}
.olkx-gz-pin{position:sticky;top:0;height:100svh;overflow:hidden;background:var(--k-dark,#111)}
.olkx-gz-grid{position:absolute;inset:0}
.olkx-gz-c{position:absolute;left:50%;top:50%;width:31vw;height:31svh;margin:-15.5svh 0 0 -15.5vw;overflow:hidden;border-radius:calc(14px * (1 - var(--gz,0)));
  transform:translate3d(calc(var(--gx) * (32vw + var(--gz,0) * 60vw)),calc(var(--gy) * (32svh + var(--gz,0) * 60svh)),0) scale(calc(1 + var(--gz,0) * .6));opacity:calc(1 - var(--gz,0) * .6)}
.olkx-gz-c img{width:100%;height:100%;object-fit:cover;display:block}
.olkx-gz-mid{z-index:2;opacity:1;transform:scale(calc(1 + var(--gz,0) * 2.32))}
.olkx-gz-cap{position:absolute;left:0;right:0;bottom:calc(9svh + var(--mbar-h,0px));z-index:3;margin:0;text-align:center;color:#fff;font:600 clamp(26px,4.4vw,60px)/1.05 var(--k-head);text-shadow:0 4px 30px rgba(0,0,0,.5);opacity:clamp(0,calc(var(--gz,0) * 3 - 2),1)}
/* ---------- image trail ---------- */
.olkx-trail{position:absolute;inset:0;z-index:0;overflow:hidden}
.olkx-tr{position:absolute;width:150px;aspect-ratio:3/4;object-fit:cover;border-radius:10px;box-shadow:0 18px 40px -18px rgba(0,0,0,.55);transform:translate(-50%,-50%) rotate(var(--r));animation:olkx-tr 1.1s cubic-bezier(.2,.8,.2,1) forwards}
@keyframes olkx-tr{0%{opacity:0;scale:.4}15%{opacity:1;scale:1}70%{opacity:1}100%{opacity:0;scale:.85;translate:0 30px}}
/* ---------- scramble headings ---------- */
.olkx-scr-ov{position:absolute;inset:0;visibility:hidden;pointer-events:none;font:inherit;letter-spacing:inherit;text-align:inherit;color:var(--k-accent);white-space:inherit;overflow:hidden}
.olkx-scr-run{color:transparent!important}
.olkx-scr-run *:not(.olkx-scr-ov){color:transparent!important;-webkit-text-fill-color:transparent}
.olkx-scr-run .olkx-scr-ov{visibility:visible;-webkit-text-fill-color:currentColor}
/* ---------- photo cube (33): spinning 3D cube, 4 flat photos on the side faces; bigger on desktop (416px), 226px at 390 ---------- */
.olkx-cube{display:grid;justify-items:center;gap:18px;margin:0 auto clamp(24px,4vw,40px);padding-block:clamp(12px,3vw,34px);overflow-x:clip}
.olkx-cube-scene{--cz:min(208px,29vw);width:calc(var(--cz) * 2);aspect-ratio:1;perspective:calc(var(--cz) * 7);touch-action:pan-y;cursor:grab;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
.olkx-cube.is-drag .olkx-cube-scene{cursor:grabbing}
.olkx-cube-rot{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .9s cubic-bezier(.25,.8,.25,1)}
.olkx-cube.is-drag .olkx-cube-rot{transition:none}
.olkx-cube-f{position:absolute;inset:0;padding:0;border:0;overflow:hidden;background:#111;cursor:zoom-in;transform:rotateY(calc(var(--f) * 90deg)) translateZ(var(--cz));-webkit-backface-visibility:hidden;backface-visibility:hidden;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--k-accent) 60%,transparent)}
.olkx-cube-f img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none;-webkit-user-drag:none}
@media (prefers-reduced-motion:reduce){.olkx-cube-scene{perspective:none;cursor:default}.olkx-cube-rot{transform:none!important;transform-style:flat}.olkx-cube-f{transform:none;visibility:hidden}.olkx-cube-f.is-cur{visibility:visible}}
.olkx-cube-ui{display:flex;align-items:center;gap:14px;font:600 13px/1 var(--k-body);letter-spacing:.12em}
.olkx-cube-ui button{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--k-accent);background:transparent;color:inherit;font-size:18px;cursor:pointer}
.olkx-cube-ui button:hover,.olkx-cube-ui button:focus-visible{background:var(--k-accent);color:var(--k-on-accent,#000)}
/* ---------- sail band ---------- */
.olkx-sail{position:relative;width:100%;aspect-ratio:1200/160;min-height:84px;max-height:170px;color:var(--k-accent);overflow:hidden}
.olkx-sail-svg{position:absolute;inset:0;width:100%;height:100%}
.olkx-sail-sea{fill:none;stroke:currentColor;stroke-width:2;opacity:.35}
.olkx-sail-route{fill:none;stroke:currentColor;stroke-width:1.5;stroke-dasharray:3 9;opacity:.45}
.olkx-sail-wake{fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round}
.olkx-boat{color:var(--k-text)}
/* ---------- chat reviews ---------- */
.olkx-typing{display:none}
.olk-rev[data-v=chat] .olk-rc{transition:opacity .35s,transform .45s cubic-bezier(.2,.8,.2,1)}
.olk-rev[data-v=chat] .olk-rc.olkx-wait{opacity:0;transform:translateY(14px) scale(.96)}
.olk-rev[data-v=chat] .olk-rc.olkx-wait > :not(.olkx-typing){visibility:hidden}
.olk-rev[data-v=chat] .olk-rc.olkx-typing-on{opacity:1;transform:none}
.olk-rev[data-v=chat] .olkx-typing-on .olkx-typing{display:flex;position:absolute;left:18px;top:18px;gap:5px}
.olkx-typing i{width:8px;height:8px;border-radius:50%;background:currentColor;opacity:.5;animation:olkx-dot 1s infinite}
.olkx-typing i:nth-child(2){animation-delay:.15s}.olkx-typing i:nth-child(3){animation-delay:.3s}
@keyframes olkx-dot{0%,60%,100%{transform:none;opacity:.35}30%{transform:translateY(-5px);opacity:.9}}
/* ---------- horizon band (wavy text + sun arc) ---------- */
.olkx-horizon{position:relative;height:clamp(150px,19vw,250px);overflow:hidden;background:linear-gradient(180deg,color-mix(in srgb,var(--k-accent) calc(6% + var(--hz,.5) * 26%),var(--k-bg,#fff)),var(--k-bg,#fff) 92%)}
.olkx-hz-svg{position:absolute;inset:0;width:100%;height:100%}
.olkx-hz-arc{fill:none;stroke:color-mix(in srgb,var(--k-accent) 45%,transparent);stroke-width:1.5;stroke-dasharray:2 8}
.olkx-hz-sun circle{fill:color-mix(in srgb,var(--k-accent) 75%,#ffcf5a)}
.olkx-hz-rays path{stroke:color-mix(in srgb,var(--k-accent) 75%,#ffcf5a);stroke-width:4;stroke-linecap:round}
.olkx-hz-line{fill:none;stroke:color-mix(in srgb,var(--k-text,#333) 18%,transparent);stroke-width:1.5}
.olkx-hz-t{fill:var(--k-text,#333);font:600 30px/1 var(--k-head);letter-spacing:.06em}
/* ---------- scatter / checklist / spine / glitch / bignum / halftone ---------- */
.olkx-scatter .gal-item{will-change:transform}
.olk-amen[data-v=checklist] .olkx-tick [data-draw]{transition:stroke-dashoffset .55s ease-out calc(var(--i,0) * .11s + .1s)}
.olk-amen[data-v=checklist] .olkx-tick .olkx-tick-v{transition-delay:calc(var(--i,0) * .11s + .45s)}
.olkx-spine-l{position:absolute;top:0;bottom:0;left:50%;width:4px;margin-left:-2px;z-index:1;border-radius:4px;background:color-mix(in srgb,var(--k-accent) 18%,transparent)}
.olkx-spine-l i{position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,var(--k-accent),color-mix(in srgb,var(--k-accent) 55%,#e0a84a));transform-origin:50% 0;transform:scaleY(0)}
.olkx-spine .tl-node{transition:transform .4s cubic-bezier(.3,1.5,.5,1),box-shadow .4s}
.olkx-spine .tl-item.olkx-lit .tl-node{scale:1.12;box-shadow:0 0 0 7px color-mix(in srgb,var(--k-accent) 22%,transparent),0 4px 14px rgba(0,0,0,.2)}
.olkx-gl img{transition:filter .25s}
.olkx-gl:hover img,.olkx-gl:focus-visible img,.olkx-gl.olkx-gl-on img{filter:drop-shadow(-5px 0 0 rgba(255,0,90,.75)) drop-shadow(5px 0 0 rgba(0,225,255,.75)) saturate(1.2)}
.olkx-gl.olkx-gl-on img{transition:none}
.olkx-gl:hover img,.olkx-gl:focus-visible img{animation:olkx-jit .32s steps(2) 2}
.olkx-gl.olkx-in img{animation:olkx-jit .36s steps(3) 1}
@keyframes olkx-jit{0%{translate:0 0;clip-path:inset(0)}33%{translate:-3px 1px;clip-path:inset(12% 0 40% 0)}66%{translate:3px -1px;clip-path:inset(55% 0 8% 0)}100%{translate:0 0;clip-path:inset(0)}}
.olkx-bn{position:absolute;top:0;bottom:0;right:clamp(4px,2vw,30px);z-index:0}
.olkx-bn-n{position:sticky;top:16svh;display:block;font:900 clamp(84px,15vw,230px)/.9 var(--k-head);color:transparent;-webkit-text-stroke:2px color-mix(in srgb,var(--k-accent) 70%,transparent);opacity:0;translate:0 40px;transition:opacity .8s,translate 1s cubic-bezier(.2,.8,.2,1)}
.olkx-bn.olkx-in .olkx-bn-n{opacity:.5;translate:0 0}
.olkx-ht{-webkit-mask-image:radial-gradient(circle at 50% 50%,#000 calc((1 - var(--ht,0)) * 100%),transparent calc((1 - var(--ht,0)) * 100% + 1%));mask-image:radial-gradient(circle at 50% 50%,#000 calc((1 - var(--ht,0)) * 100%),transparent calc((1 - var(--ht,0)) * 100% + 1%));-webkit-mask-size:11px 11px;mask-size:11px 11px}
/* ---------- reduced motion: everything static, end states ---------- */
@media (prefers-reduced-motion:reduce){
  .olkx-art,.olkx-art *,.olkx-sticker,.olkx-dots,.olkx-mapcard *,.olkx-bn-n,.olk-rev[data-v=chat] .olk-rc,.olkx-gl img,.olkx-cube-rot,.olkx-cube-f,.olkx-cube-f img{animation:none!important;transition:none!important}
  [data-draw]{stroke-dashoffset:0!important}
  .olkx-sticker,.olkx-dots,.olkx-bn-n{opacity:1;scale:1;translate:none}
  .olkx-dots{opacity:.55}.olkx-bn-n{opacity:.5}
  .olkx-mc-spot{opacity:1}
  .olkx-ht{-webkit-mask-image:none;mask-image:none}
  .olkx-beam{opacity:.15}
  .olk-rev[data-v=chat] .olk-rc.olkx-wait{opacity:1;transform:none}.olk-rev[data-v=chat] .olk-rc.olkx-wait > *{visibility:visible}
}
@media print{.olkx-art,.olkx-ring,.olkx-gz,.olkx-cube,.olkx-sail,.olkx-horizon{display:none!important}.olkx-ring-on #gal-grid{display:grid!important}}
@media (max-width:700px){.olkx-sticker.olkx-pos-tr,.olkx-sticker.olkx-pos-tl{top:-34px;width:min(var(--sz,130px),78px)}.olkx-sticker.olkx-pos-tr{right:8px}.olkx-sticker.olkx-pos-tl{left:8px}.olkx-la{width:min(var(--sz,120px),20vw)}}
