/* A precise point, a gently trailing ring and a real image loupe. */
.art-cursor{position:fixed;inset:0;z-index:120;pointer-events:none;opacity:0;transition:opacity .18s ease;contain:layout style;--art-size:34px;--art-stretch:1;--art-squash:1;--art-angle:0rad}
.art-cursor.is-visible{opacity:1}
.art-cursor__point{position:absolute;left:0;top:0;width:5px;height:5px;border-radius:50%;background:#f5eee1;mix-blend-mode:difference;will-change:transform;transition:opacity .2s}
.art-cursor__ring{position:absolute;left:0;top:0;width:var(--art-size);height:var(--art-size);will-change:transform;pointer-events:none}
.art-cursor__shell{position:absolute;inset:0;border:1px solid #d8c3a2b8;border-radius:50%;box-shadow:0 0 0 1px #12201518;transform:rotate(var(--art-angle)) scale(var(--art-stretch),var(--art-squash));transition:background .25s,border-color .25s,box-shadow .25s;will-change:transform}
.art-cursor__lens{position:absolute;inset:0;border-radius:50%;background-repeat:no-repeat;opacity:0;transition:opacity .22s;box-shadow:inset 0 0 22px #14201218;overflow:hidden}
.art-cursor__lens:after{content:'';position:absolute;inset:0;border-radius:inherit;background:linear-gradient(135deg,#fff7e51c,transparent 45%,#0b170e1a)}
.art-cursor__content{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#f4eee2;gap:3px;opacity:0;transition:opacity .18s;font-family:Manrope,Arial,sans-serif;text-align:center;text-shadow:0 1px 5px #0003}
.art-cursor__icon{font-size:23px;line-height:1;font-weight:400}
.art-cursor__label{font-size:6px;line-height:1.3;letter-spacing:.15em;font-weight:400}
.art-cursor__trail{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.art-cursor__trail path{fill:none;stroke:#c5ac835e;stroke-width:.75;stroke-linecap:round}
.art-cursor.is-action .art-cursor__shell{background:#19271ac2;border-color:#d7c4a7aa;backdrop-filter:blur(5px);box-shadow:0 5px 24px #0610061c}
.art-cursor.is-action .art-cursor__content{opacity:1}
.art-cursor.is-action .art-cursor__point,.art-cursor.is-lens .art-cursor__point{opacity:0}
.art-cursor.is-lens .art-cursor__lens{opacity:1}
.art-cursor.is-lens .art-cursor__shell{border-color:#f0e1c3d9;box-shadow:0 0 0 5px #efdfbd12,0 10px 40px #0b1d0e30}
.art-cursor.is-lens .art-cursor__content{opacity:1;justify-content:flex-end;padding-bottom:12px}
.art-cursor.is-lens .art-cursor__icon{display:none}
.art-cursor.is-lens .art-cursor__label{font-size:6px;background:#132113a1;border:1px solid #eee4cb40;border-radius:20px;padding:4px 7px;letter-spacing:.18em}
.art-cursor.is-pressed .art-cursor__shell{border-color:#fff4dc}
@media(hover:hover) and (pointer:fine){
 html.has-art-cursor,html.has-art-cursor body,html.has-art-cursor body *{cursor:none!important}
 html.has-art-cursor input,html.has-art-cursor textarea,html.has-art-cursor [contenteditable=true],html.has-art-cursor [contenteditable=""]{cursor:text!important}
 html.has-art-cursor select,html.has-art-cursor option,html.has-art-cursor button:disabled{cursor:auto!important}
 /* Native dialogs live in the top layer: do not hide a pointer behind them. */
 html.has-art-cursor:has(dialog[open]),html.has-art-cursor:has(dialog[open]) body,html.has-art-cursor:has(dialog[open]) body *{cursor:auto!important}
 html.has-art-cursor:has(dialog[open]) a,html.has-art-cursor:has(dialog[open]) button{cursor:pointer!important}
 html.has-art-cursor:has(dialog[open]) input,html.has-art-cursor:has(dialog[open]) textarea{cursor:text!important}
 html:has(dialog[open]) .art-cursor{display:none}
}
@media(prefers-reduced-motion:reduce),(hover:none),(pointer:coarse){.art-cursor{display:none!important}}
