/* Amrita Studio · the viewfinder cursor (js/cursor.js)
   The native cursor is hidden only while html.has-cursor is set. The script adds it once its own cursor is
   drawn at a real pointer position, so if the script never runs, the system cursor simply stays.
   Text fields keep the native caret; [data-cursor="none"] hands an area back to the system cursor.
   White strokes on a very soft dark shadow read on the light and the dark greys; no blend modes. */
html.has-cursor, html.has-cursor * { cursor: none !important; }
html.has-cursor :is(input:not([type]), input[type="text"], input[type="search"], input[type="email"], input[type="url"],
  input[type="tel"], input[type="password"], input[type="number"], textarea,
  [contenteditable]:not([contenteditable="false"]), [contenteditable]:not([contenteditable="false"]) *) { cursor: text !important; }
html.has-cursor :is([data-cursor="none"], [data-cursor="none"] *) { cursor: auto !important; }

.cz {
  position: fixed; inset: 0; z-index: 2147483647; pointer-events: none;
  overflow: hidden; contain: strict;
  opacity: 0; transition: opacity .2s ease;
}
.cz.is-on { opacity: 1; }
.cz.is-instant { transition: none; }
.cz > * { position: absolute; left: 0; top: 0; display: block; pointer-events: none; will-change: transform; }

/* the dot: exactly at the pointer */
.cz__d {
  width: 5px; height: 5px; margin: -2.5px 0 0 -2.5px; border-radius: 50%;
  background: #f4f6fa;
  box-shadow: 0 0 0 1px rgba(34, 37, 46, .52), 0 1px 4px rgba(34, 37, 46, .3);
  transition: opacity .16s ease;
}

/* the four brackets, the crosshair and the I-beam frame */
.cz__c, .cz__x, .cz__i {
  overflow: visible; fill: none; stroke: #fff; stroke-linecap: butt; stroke-linejoin: miter;
  filter: drop-shadow(0 0 .7px rgba(30, 33, 42, .72)) drop-shadow(0 1px 3px rgba(30, 33, 42, .24));
}
.cz__c { width: 16px; height: 16px; margin: -8px 0 0 -8px; stroke-width: 1.25; transition: opacity .16s ease; }
.cz__x { width: 16px; height: 16px; margin: -8px 0 0 -8px; stroke-width: 1; opacity: 0; transition: opacity .18s ease; }
.cz__i { width: 16px; height: 32px; margin: -16px 0 0 -8px; stroke-width: 1.25; opacity: 0; transition: opacity .16s ease; }

/* the label beside the lower-right bracket */
.cz__l {
  font: 500 11px/12px "IBM Plex Mono", ui-monospace, Menlo, Consolas, monospace;
  letter-spacing: .12em; text-transform: uppercase; white-space: pre; color: #fff;
  /* a tight dark outline plus a soft shadow: legible on the light sky and stone as on the dark panels */
  text-shadow: 1px 0 0 rgba(30, 33, 42, .78), -1px 0 0 rgba(30, 33, 42, .78), 0 1px 0 rgba(30, 33, 42, .78), 0 -1px 0 rgba(30, 33, 42, .78), 0 0 6px rgba(30, 33, 42, .5);
  opacity: 0; transition: opacity .14s ease;
}
.cz__l > [hidden] { display: none; }

/* nectar specks (opacity is driven per frame) */
.cz__s {
  width: 4px; height: 4px; margin: -2px 0 0 -2px; border-radius: 50%; opacity: 0;
  background: #f4f6fa; box-shadow: 0 0 0 .75px rgba(34, 37, 46, .38), 0 0 3px rgba(34, 37, 46, .22);
}

/* modes */
.cz[data-mode="frame"] .cz__d, .cz[data-mode="text"] .cz__d, .cz[data-mode="text"] .cz__c { opacity: 0; }
.cz[data-mode="canvas"] .cz__x, .cz[data-mode="text"] .cz__i { opacity: 1; }
.cz.has-label .cz__l { opacity: 1; }
.cz.has-label[data-mode="canvas"] .cz__l { opacity: .8; }

@media print { .cz { display: none !important; } }
