/* THSM Motion — site-wide layer. Works on top of any theme; everything is scoped to .thsm-* classes
   that the script adds, so if the script never runs the page looks exactly like the theme. */
:root{
  --thsm-brand:#0A52B4;--thsm-sky:#1496FB;--thsm-spark:#FFB547;--thsm-navy:#0B1B3A;
  --thsm-ease:cubic-bezier(.22,1,.36,1);
}

/* ---------- Page transition curtain ---------- */
.thsm-curtain{position:fixed;inset:0;z-index:2147483600;pointer-events:none;background:var(--thsm-navy);
  visibility:hidden;display:flex;align-items:center;justify-content:center}
.thsm-curtain.is-in{pointer-events:auto;visibility:visible}
.thsm-curtain__mark{font:800 clamp(28px,5vw,56px)/1 "Bricolage Grotesque",system-ui,sans-serif;letter-spacing:-.03em;color:#fff;opacity:0}
.thsm-curtain__mark b{font-weight:800}.thsm-curtain__mark span{font-weight:500;opacity:.8}
.thsm-curtain__mark i{display:inline-block;width:.32em;height:.32em;border-radius:50%;background:var(--thsm-spark);margin-left:.12em;vertical-align:.05em}
.thsm-curtain::before{content:"";position:absolute;left:0;right:0;top:0;height:6px;background:var(--thsm-sky);transform-origin:left;transform:scaleX(var(--thsm-load,0))}

/* Arrival: the head script adds .thsm-arrive before the page paints, so the curtain is already
   covering the screen when the new page appears; the script then lifts it. CSS fallback lifts it anyway. */
html.thsm-arrive::after{content:"THSM Tech";position:fixed;inset:0;z-index:2147483600;background:var(--thsm-navy);color:#fff;
  display:flex;align-items:center;justify-content:center;font:800 clamp(28px,5vw,56px)/1 "Bricolage Grotesque",system-ui,sans-serif;letter-spacing:-.03em;
  transition:transform .75s var(--thsm-ease),color .2s;animation:thsm-lift .75s var(--thsm-ease) 2.4s forwards}
html.thsm-arrive.thsm-arrived::after{transform:translateY(-100%);color:transparent}
@keyframes thsm-lift{to{transform:translateY(-100%);color:transparent}}

/* First load (no curtain): hide the page for a beat so nothing flashes before it animates in. */
html.thsm-preload body{opacity:0;animation:thsm-show .01s linear 1.6s forwards}
@keyframes thsm-show{to{opacity:1}}

/* ---------- Scroll progress ---------- */
.thsm-progress{position:fixed;left:0;right:0;top:0;height:3px;z-index:2147483000;pointer-events:none;
  background:linear-gradient(90deg,var(--thsm-sky),var(--thsm-brand) 70%,var(--thsm-spark));transform-origin:0 50%;transform:scaleX(0)}
.admin-bar .thsm-progress{top:32px}
@media (max-width:782px){.admin-bar .thsm-progress{top:46px}}

/* ---------- Header ---------- */
.thsm-hdr{transition:box-shadow .3s var(--thsm-ease),background-color .3s,backdrop-filter .3s,transform .45s var(--thsm-ease)!important}
.thsm-hdr.thsm-hdr--scrolled{box-shadow:0 10px 30px -18px rgba(11,27,58,.45)}
.thsm-hdr.thsm-hdr--hidden{transform:translateY(-110%)!important}
.thsm-hdr a{transition:color .2s,opacity .2s}

/* ---------- Reveals ---------- */
.thsm-h{opacity:0}
.thsm-w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.12em;margin-bottom:-.12em;padding-right:.02em}
.thsm-wi{display:inline-block;will-change:transform}
.thsm-img{will-change:clip-path,transform}

/* ---------- Cards: spotlight + tilt ---------- */
.thsm-card{transform-style:preserve-3d;will-change:transform}
.thsm-card--pos{position:relative}
.thsm-glow{position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:1;opacity:0;transition:opacity .35s;
  background:radial-gradient(260px circle at var(--mx,50%) var(--my,50%),rgba(20,150,251,.16),transparent 65%)}
.thsm-card:hover .thsm-glow{opacity:1}
.thsm-card{transition:box-shadow .35s var(--thsm-ease)}
.thsm-card:hover{box-shadow:0 24px 50px -28px rgba(11,27,58,.45)}

/* ---------- Buttons: shine + ripple ---------- */
.thsm-btn{position:relative;overflow:hidden;isolation:isolate}
.thsm-btn::after{content:"";position:absolute;top:0;bottom:0;left:-60%;width:45%;z-index:1;pointer-events:none;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.35),transparent);transform:skewX(-20deg);transition:left .7s var(--thsm-ease)}
.thsm-btn:hover::after{left:120%}
.thsm-ripple{position:absolute;border-radius:50%;pointer-events:none;background:currentColor;opacity:.25;transform:scale(0);z-index:0}

/* ---------- Content links ---------- */
.thsm-link{background-image:linear-gradient(currentColor,currentColor);background-size:0 1.5px;background-position:0 100%;background-repeat:no-repeat;transition:background-size .35s var(--thsm-ease)}
.thsm-link:hover{background-size:100% 1.5px}

/* ---------- Forms ---------- */
.thsm-field{transition:box-shadow .25s var(--thsm-ease),border-color .25s}
.thsm-field:focus{box-shadow:0 0 0 4px rgba(20,150,251,.18)}

/* ---------- Cursor ---------- */
.thsm-cursor,.thsm-cursor-dot{position:fixed;left:0;top:0;pointer-events:none;z-index:2147483500;border-radius:50%;mix-blend-mode:difference}
.thsm-cursor{width:38px;height:38px;margin:-19px 0 0 -19px;border:1.5px solid #fff;transition:width .3s var(--thsm-ease),height .3s var(--thsm-ease),margin .3s var(--thsm-ease),background-color .3s,opacity .3s}
.thsm-cursor-dot{width:6px;height:6px;margin:-3px 0 0 -3px;background:#fff}
.thsm-cursor.is-link{width:64px;height:64px;margin:-32px 0 0 -32px;background:#fff}
.thsm-cursor.is-text{width:4px;height:30px;margin:-15px 0 0 -2px;border-radius:2px}
.thsm-cursor.is-down{width:28px;height:28px;margin:-14px 0 0 -14px}
.thsm-cursor.is-gone,.thsm-cursor-dot.is-gone{opacity:0}

/* ---------- Motion toggle ---------- */
.thsm-toggle{position:fixed;left:16px;bottom:16px;z-index:2147483400;display:inline-flex;align-items:center;gap:8px;
  padding:8px 12px;border-radius:999px;border:1px solid rgba(11,27,58,.14);background:rgba(255,255,255,.92);color:#0B1B3A;
  font:600 12px/1 "JetBrains Mono",ui-monospace,monospace;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;
  box-shadow:0 8px 24px -14px rgba(11,27,58,.5);backdrop-filter:blur(8px);opacity:.75;transition:opacity .2s,transform .2s}
.thsm-toggle:hover{opacity:1;transform:translateY(-2px)}
.thsm-toggle:focus-visible{outline:3px solid var(--thsm-brand);outline-offset:2px;opacity:1}
.thsm-toggle i{width:8px;height:8px;border-radius:50%;background:var(--thsm-sky);box-shadow:0 0 0 3px rgba(20,150,251,.2)}
.thsm-toggle[aria-pressed="false"] i{background:#9aa6b8;box-shadow:none}
@media (max-width:768px){.thsm-toggle{left:12px;bottom:12px;padding:10px;opacity:.6}.thsm-toggle span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}}

/* Lenis */
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}

@media (prefers-reduced-motion:reduce){
  html.thsm-preload body{opacity:1;animation:none}
  html.thsm-arrive::after{display:none}
}
@media print{.thsm-progress,.thsm-toggle,.thsm-cursor,.thsm-cursor-dot,.thsm-curtain{display:none!important}.thsm-h{opacity:1!important}}

/* The THSM Studio theme resets the header to relative positioning. */
.wp-theme-thsm-studio .site-header.thsm-hdr{position:sticky!important;top:0;z-index:1000}
.admin-bar.wp-theme-thsm-studio .site-header.thsm-hdr{top:32px}
.thsm-site-layer .footer-bottom .motion-toggle{display:none}
@media(max-width:782px){.admin-bar.wp-theme-thsm-studio .site-header.thsm-hdr{top:46px}}
@media(max-width:600px){.admin-bar.wp-theme-thsm-studio .site-header.thsm-hdr{top:0}}
/* Keep the visitor control clear of the academy's existing consent button. */
body:has(#thsm-analytics-settings:not([hidden])) .thsm-toggle{bottom:76px;z-index:9997}
