/* Hubbard Clothing Co. v2 — gold cursor: an instant dot + the logo's own "H" (logo gold) that follows on a spring
   and stretches, upright, along the direction of travel (original code).
   Active only when js/orb.js adds html.has-orb (fine pointer + hover, after the first mouse move). */
:root{--logo-gold:#BA892E;--orb:44px;--orb-w:36px;--orb-dot:6px}
.cur{position:fixed;left:0;top:0;z-index:2147483000;pointer-events:none;width:0;height:0;display:none;contain:layout style}
html.has-orb .cur{display:block}
.cur[popover]{inset:auto;left:0;top:0;margin:0;padding:0;border:0;background:none;overflow:visible;width:0;height:0;color:inherit}
/* the follower: .cur-m = spring position, .cur-b = upright stretch along travel (matrix), .cur-o = state size */
.cur-m,.cur-b,.cur-d{position:absolute;left:0;top:0;width:0;height:0;will-change:transform}
.cur-o{position:absolute;left:calc(var(--orb-w) / -2);top:calc(var(--orb) / -2);width:var(--orb-w);height:var(--orb);
  --s:1;--p:1;transform:scale(calc(var(--s) * var(--p)));transition:transform .5s cubic-bezier(.22,1,.36,1),opacity .3s ease}
.cur-h{display:block;width:100%;height:100%;overflow:visible}
.cur-h path{fill:var(--logo-gold);fill-opacity:1;stroke:var(--logo-gold);stroke-opacity:0;stroke-width:1.6px;vector-effect:non-scaling-stroke;
  stroke-linejoin:round;transition:fill-opacity .3s ease,stroke-opacity .3s ease}      /* solid, opaque logo gold; no glow, no blend */
/* the dot: tracks the real mouse with no lag */
.cur-d i{position:absolute;left:calc(var(--orb-dot) / -2);top:calc(var(--orb-dot) / -2);width:var(--orb-dot);height:var(--orb-dot);border-radius:50%;
  background:var(--logo-gold);transition:opacity .2s ease,transform .3s cubic-bezier(.22,1,.36,1)}
.cur-l{position:absolute;left:0;top:calc(var(--orb) / 2 + 9px);transform:translate(-50%,-4px) scale(.85);opacity:0;white-space:nowrap;
  font:600 .6rem/1 "Source Sans 3",system-ui,sans-serif;letter-spacing:.2em;text-transform:uppercase;color:#1E1A12;
  background:var(--logo-gold);border-radius:999px;padding:.5em .75em .5em .95em;
  transition:opacity .3s ease,transform .5s cubic-bezier(.22,1,.36,1)}
/* states (the solid H + dot stay the default; these are the extras) */
.cur.is-link .cur-o{--s:1.22}
.cur.is-link .cur-h path{fill-opacity:.1;stroke-opacity:1}                    /* outlined, slightly enlarged H; the dot stays visible */
.cur.is-link .cur-d i{transform:scale(1.15)}
.cur.is-label .cur-o,.cur.is-drag .cur-o{--s:1.12}
.cur.is-label .cur-l,.cur.is-drag .cur-l{opacity:1;transform:translate(-50%,0)}     /* Book / View / Drag pill below the H */
.cur.is-label .cur-d i,.cur.is-drag .cur-d i{opacity:0}
.cur.is-down .cur-o{--p:.8}
.cur.is-down .cur-h path{fill-opacity:.1;stroke-opacity:1}                    /* press: the H shrinks and hollows out */
.cur.is-drag.is-down .cur-o{--p:.88}
.cur.is-hidden .cur-o,.cur.is-out .cur-o{--p:.2;opacity:0}
.cur.is-hidden .cur-l,.cur.is-out .cur-l,.cur.is-hidden .cur-d i,.cur.is-out .cur-d i{opacity:0}
.cur.is-pulse .cur-o{animation:cur-pulse .5s cubic-bezier(.22,1,.36,1)}
@keyframes cur-pulse{0%{transform:scale(calc(var(--s) * .78))}55%{transform:scale(calc(var(--s) * 1.12))}100%{transform:scale(var(--s))}}
/* hide the native cursor only while the orb is live; keep it on text fields and embeds */
html.has-orb,html.has-orb *{cursor:none!important}
html.has-orb :is(input,textarea,select,iframe,[contenteditable],video){cursor:auto!important}
html.has-orb :is(input:not([type=checkbox]):not([type=radio]):not([type=submit]):not([type=button]),textarea){cursor:text!important}
@media (prefers-reduced-motion:reduce){.cur-o,.cur-l,.cur-d i{transition:opacity .2s ease}.cur.is-pulse .cur-o{animation:none}}
@media (hover:none),(pointer:coarse){.cur{display:none!important}html.has-orb,html.has-orb *{cursor:auto!important}}
