/* Loader Virtual Tour 360° — versi AMGA: lensa kompas navy + emas, progres dalam derajat */
.tour360-overlay .tour360-loading.tl{
  --tl-navy:#071c3a; --tl-gold:#d4a94c; --tl-gold-soft:#f0ddb0; --tl-orange:#ff6b00;
  display:block; padding:0; color:#fff; font-size:inherit; pointer-events:auto;
  background:
    radial-gradient(circle at 50% 42%, #123a73 0%, #0b2545 38%, #071c3a 70%, #040f22 100%);
  clip-path:circle(150% at 50% 50%);
  transition:clip-path .95s cubic-bezier(.7,0,.2,1);
  font-family:var(--font-display,'Sora','Segoe UI',sans-serif);
}
.tl-grid{position:absolute;inset:-20%;opacity:.5;
  background:
    repeating-linear-gradient(0deg,rgba(255,255,255,.06) 0 1px,transparent 1px 56px),
    repeating-linear-gradient(90deg,rgba(255,255,255,.06) 0 1px,transparent 1px 56px);
  transform:perspective(600px) rotateX(58deg) translateY(30%);
  mask-image:linear-gradient(#000 30%,transparent 85%);-webkit-mask-image:linear-gradient(#000 30%,transparent 85%);
  animation:tl-grid 6s linear infinite}
@keyframes tl-grid{to{background-position:0 56px,56px 0}}
.tl-core{position:absolute;left:50%;top:44%;width:min(62vw,300px);aspect-ratio:1;transform:translate(-50%,-50%)}
.tl-core svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.tl-ticks{animation:tl-spin 24s linear infinite;transform-origin:50% 50%}
.tl-ticks-r{animation-duration:40s;animation-direction:reverse;transform-origin:50% 50%}
@keyframes tl-spin{to{transform:rotate(360deg)}}
.tl-arc{transition:stroke-dashoffset .25s linear;filter:drop-shadow(0 0 8px rgba(255,107,0,.7))}
.tl-logo{position:absolute;left:50%;top:50%;width:46%;aspect-ratio:1;transform:translate(-50%,-50%);
  border-radius:50%;background:#fff;padding:7%;box-shadow:0 0 0 5px rgba(212,169,76,.35),0 14px 40px rgba(0,0,0,.45);
  animation:tl-breathe 2.6s ease-in-out infinite}
.tl-logo img{width:100%;height:100%;object-fit:contain;display:block}
@keyframes tl-breathe{50%{transform:translate(-50%,-50%) scale(1.045)}}
.tl-deg{position:absolute;left:0;right:0;top:calc(44% + min(31vw,150px) + 26px);text-align:center}
.tl-deg b{font-size:clamp(2.6rem,11vw,3.6rem);font-weight:800;letter-spacing:-.02em;color:#fff;font-variant-numeric:tabular-nums}
.tl-deg sup{font-size:.5em;color:var(--tl-gold);margin-left:2px;vertical-align:top;position:relative;top:.25em}
.tl-status{margin-top:4px;min-height:1.4em;color:var(--tl-gold-soft);font-size:.95rem;font-weight:500;font-family:var(--font-body,'Inter',sans-serif)}
.tl-school{margin-top:6px;color:rgba(255,255,255,.55);font-size:.78rem;font-family:var(--font-body,'Inter',sans-serif)}
.tl-compass{position:absolute;left:0;right:0;bottom:calc(34px + env(safe-area-inset-bottom,0px));height:46px;overflow:hidden;
  mask-image:linear-gradient(90deg,transparent,#000 22%,#000 78%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 22%,#000 78%,transparent)}
.tl-compass::after{content:"";position:absolute;left:50%;top:0;height:20px;width:3px;margin-left:-1.5px;background:var(--tl-orange);border-radius:2px;box-shadow:0 0 10px var(--tl-orange)}
.tl-strip{display:flex;width:max-content;animation:tl-slide 14s linear infinite}
.tl-strip span{width:72px;height:46px;flex:none;text-align:center;padding-top:22px;font-size:.78rem;font-weight:700;color:var(--tl-gold);
  background:repeating-linear-gradient(90deg,rgba(255,255,255,.35) 0 1px,transparent 1px 18px) top/72px 12px no-repeat}
.tl-strip span.m{color:rgba(255,255,255,.35)}
@keyframes tl-slide{to{transform:translateX(-50%)}}
/* keluar: lensa menutup ke tengah, panorama terbuka */
.tour360-overlay .tour360-loading.tl.tl-out{clip-path:circle(0% at 50% 44%);pointer-events:none}
.tl-out .tl-logo{transform:translate(-50%,-50%) scale(1.5);opacity:0;transition:transform .8s,opacity .5s}
.tl-out .tl-deg,.tl-out .tl-compass{opacity:0;transition:opacity .3s}
/* error */
.tl.tl-err .tl-arc{stroke:#ff6b6b;filter:none}.tl.tl-err .tl-ticks,.tl.tl-err .tl-ticks-r,.tl.tl-err .tl-strip,.tl.tl-err .tl-logo{animation-play-state:paused}
.tl.tl-err .tl-status{color:#ffb4b4;padding:0 24px}
@media (prefers-reduced-motion:reduce){.tl *,.tl{animation:none!important;transition-duration:.01s!important}}
