/* S3 explorer upload chrome (#940): active drop overlay. The progress bar moved
   to the lantern-ui <.progress> component; its old track/fill CSS was removed. */
.lantern .lt-upload-item-meta {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  flex: 1;
  min-width: 0;
}
.lantern .lt-upload-item-row {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  width: 100%;
}
.lantern .lt-success {
  border-radius: var(--lt-radius-sm);
  background: color-mix(in srgb, var(--lt-success) 12%, transparent);
  color: var(--lt-success);
  padding: 0.5rem 0.75rem;
  font-size: var(--lt-text-sm);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
}
.lantern > .lt-success {
  flex: none;
  border-radius: 0;
  border-bottom: 1px solid color-mix(in oklch, var(--lt-success) 30%, var(--lt-border));
}
.lantern .lt-banner-body {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
}
.lantern .lt-uploader-panel {
  margin-bottom: 0.75rem;
}
.lantern .lt-drop-zone {
  position: relative;
  min-height: 8rem;
  flex: 1;
}
.lantern .lt-drop-zone.phx-drop-target-active {
  outline: 2px dashed var(--lt-accent);
  outline-offset: -0.35rem;
  border-radius: var(--lt-radius-sm);
  background: color-mix(in oklch, var(--lt-accent) 8%, var(--lt-bg));
}
.lantern .lt-drop-zone.phx-drop-target-active::after {
  content: "Drop to upload";
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  z-index: 2;
  font-size: var(--lt-text-sm);
  font-weight: 600;
  color: var(--lt-accent);
  background: color-mix(in oklch, var(--lt-bg) 55%, transparent);
}
/* Standalone Uploader dropzone + file rows (LanternS3.Uploader). Host-side;
   --lt-* only so it tracks the lantern theme bridge above. */
.lantern .lt-dropzone-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  padding: 2.5rem 1.5rem;
  border: 1.5px dashed var(--lt-border);
  border-radius: var(--lt-radius);
  background: var(--lt-bg);
  text-align: center;
  min-height: 12rem;
  box-sizing: border-box;
}
.lantern .lt-dropzone-cloud {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3.25rem;
  height: 3.25rem;
  border: 1.5px dashed var(--lt-border);
  border-radius: 999px;
  color: var(--lt-fg-muted);
}
.lantern .lt-dropzone-cloud .lt-icon {
  width: 1.5rem;
  height: 1.5rem;
}
.lantern .lt-dropzone-title {
  margin: 0;
  color: var(--lt-fg);
  font-weight: 500;
  font-size: 0.95rem;
}
.lantern .lt-dropzone-hint {
  margin: 0;
  color: var(--lt-fg-muted);
  font-size: var(--lt-text-sm);
  max-width: 28rem;
  line-height: 1.4;
}
.lantern .lt-dropzone-browse {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-top: 0.35rem;
  padding: 0.45rem 1rem;
  border: 1px solid var(--lt-border);
  border-radius: var(--lt-radius-sm);
  background: var(--lt-bg);
  color: var(--lt-fg);
  font-size: var(--lt-text-sm);
  font-weight: 500;
  cursor: pointer;
  line-height: 1.2;
}
.lantern .lt-dropzone-browse:hover {
  background: var(--lt-bg-subtle);
  border-color: var(--lt-accent);
}
.lantern .lt-uploader-list {
  list-style: none;
  margin: 1rem 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.lantern .lt-uploader-row {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.75rem 1rem;
  border: 1px solid var(--lt-border);
  border-radius: var(--lt-radius);
  background: var(--lt-bg-subtle);
  min-width: 0;
}
.lantern .lt-uploader-file {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  flex: none;
  width: 2.25rem;
  height: 2.5rem;
  color: var(--lt-fg-muted);
}
.lantern .lt-uploader-badge {
  position: absolute;
  bottom: -0.1rem;
  left: 50%;
  transform: translateX(-50%);
  padding: 0.05rem 0.3rem;
  border-radius: 0.2rem;
  background: var(--lt-accent);
  color: var(--lt-bg);
  font-size: 0.55rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  line-height: 1.2;
  white-space: nowrap;
}
.lantern .lt-uploader-meta {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  flex: 1;
  min-width: 0;
}
.lantern .lt-uploader-name {
  color: var(--lt-fg);
  font-weight: 500;
  font-size: 0.875rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.lantern .lt-uploader-bytes {
  color: var(--lt-fg-muted);
  font-size: var(--lt-text-sm);
}
.lantern .lt-uploader-meta .lui-progress {
  margin-top: 0.2rem;
}
.lantern .lt-uploader-status {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  flex: none;
  font-size: var(--lt-text-sm);
  font-weight: 500;
  white-space: nowrap;
}
.lantern .lt-uploader-status--uploading {
  color: var(--lt-fg-muted);
}
.lantern .lt-uploader-status--done {
  color: var(--lt-success);
}
.lantern .lt-uploader-clearall {
  display: flex;
  justify-content: flex-end;
  margin-top: 0.5rem;
}
.lantern .lt-uploader-clearall .lt-linkbtn {
  background: transparent;
  border: 0;
  padding: 0.25rem 0.15rem;
  color: var(--lt-fg-muted);
  font-size: var(--lt-text-sm);
  font-weight: 500;
  cursor: pointer;
}
.lantern .lt-uploader-clearall .lt-linkbtn:hover {
  color: var(--lt-fg);
  text-decoration: underline;
}

.lantern .lt-empty-bleed {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 12rem;
  padding: 2rem 1rem;
}
.lantern .lt-spin {
  animation: lt-spin 0.8s linear infinite;
}
@keyframes lt-spin {
  to { transform: rotate(360deg); }
}

/* ── Icons (bundled) ──────────────────────────────────────────────────────
   The subset of Heroicons (MIT — https://github.com/tailwindlabs/heroicons)
   lantern-s3 renders as `hero-*` spans, emitted exactly like the Tailwind
   heroicons plugin (mask-image + currentColor) so no host Tailwind build is
   required. Hosts that DO run the plugin get byte-identical rules. */

.hero-x-mark {
  --hero-x-mark: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22currentColor%22%20aria-hidden%3D%22true%22%20data-slot%3D%22icon%22%3E%3Cpath%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20d%3D%22M6%2018%2018%206M6%206l12%2012%22%2F%3E%3C%2Fsvg%3E");
  -webkit-mask: var(--hero-x-mark) no-repeat;
  mask: var(--hero-x-mark) no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  background-color: currentColor;
  vertical-align: middle;
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
}

.hero-archive-box {
  --hero-archive-box: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22currentColor%22%20aria-hidden%3D%22true%22%20data-slot%3D%22icon%22%3E%3Cpath%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20d%3D%22m20.25%207.5-.625%2010.632a2.25%202.25%200%200%201-2.247%202.118H6.622a2.25%202.25%200%200%201-2.247-2.118L3.75%207.5M10%2011.25h4M3.375%207.5h17.25c.621%200%201.125-.504%201.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621%200-1.125.504-1.125%201.125v1.5c0%20.621.504%201.125%201.125%201.125Z%22%2F%3E%3C%2Fsvg%3E");
  -webkit-mask: var(--hero-archive-box) no-repeat;
  mask: var(--hero-archive-box) no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  background-color: currentColor;
  vertical-align: middle;
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
}

.hero-document {
  --hero-document: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22currentColor%22%20aria-hidden%3D%22true%22%20data-slot%3D%22icon%22%3E%3Cpath%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20d%3D%22M19.5%2014.25v-2.625a3.375%203.375%200%200%200-3.375-3.375h-1.5A1.125%201.125%200%200%201%2013.5%207.125v-1.5a3.375%203.375%200%200%200-3.375-3.375H8.25m2.25%200H5.625c-.621%200-1.125.504-1.125%201.125v17.25c0%20.621.504%201.125%201.125%201.125h12.75c.621%200%201.125-.504%201.125-1.125V11.25a9%209%200%200%200-9-9Z%22%2F%3E%3C%2Fsvg%3E");
  -webkit-mask: var(--hero-document) no-repeat;
  mask: var(--hero-document) no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  background-color: currentColor;
  vertical-align: middle;
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
}

.hero-trash {
  --hero-trash: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22currentColor%22%20aria-hidden%3D%22true%22%20data-slot%3D%22icon%22%3E%3Cpath%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20d%3D%22m14.74%209-.346%209m-4.788%200L9.26%209m9.968-3.21c.342.052.682.107%201.022.166m-1.022-.165L18.16%2019.673a2.25%202.25%200%200%201-2.244%202.077H8.084a2.25%202.25%200%200%201-2.244-2.077L4.772%205.79m14.456%200a48.108%2048.108%200%200%200-3.478-.397m-12%20.562c.34-.059.68-.114%201.022-.165m0%200a48.11%2048.11%200%200%201%203.478-.397m7.5%200v-.916c0-1.18-.91-2.164-2.09-2.201a51.964%2051.964%200%200%200-3.32%200c-1.18.037-2.09%201.022-2.09%202.201v.916m7.5%200a48.667%2048.667%200%200%200-7.5%200%22%2F%3E%3C%2Fsvg%3E");
  -webkit-mask: var(--hero-trash) no-repeat;
  mask: var(--hero-trash) no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  background-color: currentColor;
  vertical-align: middle;
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
}

.hero-folder {
  --hero-folder: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22currentColor%22%20aria-hidden%3D%22true%22%20data-slot%3D%22icon%22%3E%3Cpath%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20d%3D%22M2.25%2012.75V12A2.25%202.25%200%200%201%204.5%209.75h15A2.25%202.25%200%200%201%2021.75%2012v.75m-8.69-6.44-2.12-2.12a1.5%201.5%200%200%200-1.061-.44H4.5A2.25%202.25%200%200%200%202.25%206v12a2.25%202.25%200%200%200%202.25%202.25h15A2.25%202.25%200%200%200%2021.75%2018V9a2.25%202.25%200%200%200-2.25-2.25h-5.379a1.5%201.5%200%200%201-1.06-.44Z%22%2F%3E%3C%2Fsvg%3E");
  -webkit-mask: var(--hero-folder) no-repeat;
  mask: var(--hero-folder) no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  background-color: currentColor;
  vertical-align: middle;
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
}

.hero-arrows-right-left {
  --hero-arrows-right-left: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22currentColor%22%20aria-hidden%3D%22true%22%20data-slot%3D%22icon%22%3E%3Cpath%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20d%3D%22M7.5%2021%203%2016.5m0%200L7.5%2012M3%2016.5h13.5m0-13.5L21%207.5m0%200L16.5%2012M21%207.5H7.5%22%2F%3E%3C%2Fsvg%3E");
  -webkit-mask: var(--hero-arrows-right-left) no-repeat;
  mask: var(--hero-arrows-right-left) no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  background-color: currentColor;
  vertical-align: middle;
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
}

.hero-arrow-up-tray {
  --hero-arrow-up-tray: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22currentColor%22%20aria-hidden%3D%22true%22%20data-slot%3D%22icon%22%3E%3Cpath%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20d%3D%22M3%2016.5v2.25A2.25%202.25%200%200%200%205.25%2021h13.5A2.25%202.25%200%200%200%2021%2018.75V16.5m-13.5-9L12%203m0%200%204.5%204.5M12%203v13.5%22%2F%3E%3C%2Fsvg%3E");
  -webkit-mask: var(--hero-arrow-up-tray) no-repeat;
  mask: var(--hero-arrow-up-tray) no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  background-color: currentColor;
  vertical-align: middle;
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
}

.hero-arrow-down-tray {
  --hero-arrow-down-tray: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22currentColor%22%20aria-hidden%3D%22true%22%20data-slot%3D%22icon%22%3E%3Cpath%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20d%3D%22M3%2016.5v2.25A2.25%202.25%200%200%200%205.25%2021h13.5A2.25%202.25%200%200%200%2021%2018.75V16.5M16.5%2012%2012%2016.5m0%200L7.5%2012m4.5%204.5V3%22%2F%3E%3C%2Fsvg%3E");
  -webkit-mask: var(--hero-arrow-down-tray) no-repeat;
  mask: var(--hero-arrow-down-tray) no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  background-color: currentColor;
  vertical-align: middle;
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
}

.hero-pencil-square {
  --hero-pencil-square: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22currentColor%22%20aria-hidden%3D%22true%22%20data-slot%3D%22icon%22%3E%3Cpath%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20d%3D%22m16.862%204.487%201.687-1.688a1.875%201.875%200%201%201%202.652%202.652L10.582%2016.07a4.5%204.5%200%200%201-1.897%201.13L6%2018l.8-2.685a4.5%204.5%200%200%201%201.13-1.897l8.932-8.931Zm0%200L19.5%207.125M18%2014v4.75A2.25%202.25%200%200%201%2015.75%2021H5.25A2.25%202.25%200%200%201%203%2018.75V8.25A2.25%202.25%200%200%201%205.25%206H10%22%2F%3E%3C%2Fsvg%3E");
  -webkit-mask: var(--hero-pencil-square) no-repeat;
  mask: var(--hero-pencil-square) no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  background-color: currentColor;
  vertical-align: middle;
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
}

.hero-folder-plus {
  --hero-folder-plus: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22currentColor%22%20aria-hidden%3D%22true%22%20data-slot%3D%22icon%22%3E%3Cpath%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20d%3D%22M12%2010.5v6m3-3H9m4.06-7.19-2.12-2.12a1.5%201.5%200%200%200-1.061-.44H4.5A2.25%202.25%200%200%200%202.25%206v12a2.25%202.25%200%200%200%202.25%202.25h15A2.25%202.25%200%200%200%2021.75%2018V9a2.25%202.25%200%200%200-2.25-2.25h-5.379a1.5%201.5%200%200%201-1.06-.44Z%22%2F%3E%3C%2Fsvg%3E");
  -webkit-mask: var(--hero-folder-plus) no-repeat;
  mask: var(--hero-folder-plus) no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  background-color: currentColor;
  vertical-align: middle;
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
}

.hero-ellipsis-vertical {
  --hero-ellipsis-vertical: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22currentColor%22%20aria-hidden%3D%22true%22%20data-slot%3D%22icon%22%3E%3Cpath%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20d%3D%22M12%206.75a.75.75%200%201%201%200-1.5.75.75%200%200%201%200%201.5ZM12%2012.75a.75.75%200%201%201%200-1.5.75.75%200%200%201%200%201.5ZM12%2018.75a.75.75%200%201%201%200-1.5.75.75%200%200%201%200%201.5Z%22%2F%3E%3C%2Fsvg%3E");
  -webkit-mask: var(--hero-ellipsis-vertical) no-repeat;
  mask: var(--hero-ellipsis-vertical) no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  background-color: currentColor;
  vertical-align: middle;
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
}

.hero-cloud-arrow-up {
  --hero-cloud-arrow-up: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22currentColor%22%20aria-hidden%3D%22true%22%20data-slot%3D%22icon%22%3E%3Cpath%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20d%3D%22M12%2016.5V9.75m0%200%203%203m-3-3-3%203M6.75%2019.5a4.5%204.5%200%200%201-1.41-8.775%205.25%205.25%200%200%201%2010.233-2.33%203%203%200%200%201%203.758%203.848A3.752%203.752%200%200%201%2018%2019.5H6.75Z%22%2F%3E%3C%2Fsvg%3E");
  -webkit-mask: var(--hero-cloud-arrow-up) no-repeat;
  mask: var(--hero-cloud-arrow-up) no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  background-color: currentColor;
  vertical-align: middle;
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
}

.hero-chevron-right {
  --hero-chevron-right: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22currentColor%22%20aria-hidden%3D%22true%22%20data-slot%3D%22icon%22%3E%3Cpath%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20d%3D%22m8.25%204.5%207.5%207.5-7.5%207.5%22%2F%3E%3C%2Fsvg%3E");
  -webkit-mask: var(--hero-chevron-right) no-repeat;
  mask: var(--hero-chevron-right) no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  background-color: currentColor;
  vertical-align: middle;
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
}

.hero-chevron-left {
  --hero-chevron-left: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22currentColor%22%20aria-hidden%3D%22true%22%20data-slot%3D%22icon%22%3E%3Cpath%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20d%3D%22M15.75%2019.5%208.25%2012l7.5-7.5%22%2F%3E%3C%2Fsvg%3E");
  -webkit-mask: var(--hero-chevron-left) no-repeat;
  mask: var(--hero-chevron-left) no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  background-color: currentColor;
  vertical-align: middle;
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
}

.hero-check-circle {
  --hero-check-circle: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22currentColor%22%20aria-hidden%3D%22true%22%20data-slot%3D%22icon%22%3E%3Cpath%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20d%3D%22M9%2012.75%2011.25%2015%2015%209.75M21%2012a9%209%200%201%201-18%200%209%209%200%200%201%2018%200Z%22%2F%3E%3C%2Fsvg%3E");
  -webkit-mask: var(--hero-check-circle) no-repeat;
  mask: var(--hero-check-circle) no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  background-color: currentColor;
  vertical-align: middle;
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
}

.hero-arrow-path {
  --hero-arrow-path: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22currentColor%22%20aria-hidden%3D%22true%22%20data-slot%3D%22icon%22%3E%3Cpath%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20d%3D%22M16.023%209.348h4.992v-.001M2.985%2019.644v-4.992m0%200h4.992m-4.993%200%203.181%203.183a8.25%208.25%200%200%200%2013.803-3.7M4.031%209.865a8.25%208.25%200%200%201%2013.803-3.7l3.181%203.182m0-4.991v4.99%22%2F%3E%3C%2Fsvg%3E");
  -webkit-mask: var(--hero-arrow-path) no-repeat;
  mask: var(--hero-arrow-path) no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  background-color: currentColor;
  vertical-align: middle;
  display: inline-block;
  width: 1.5rem;
  height: 1.5rem;
}

/* ── Scoped upload sheet ──────────────────────────────────────────────────
   The upload sheet slides over the EXPLORER, not the whole page: the host
   wrapper is positioned and the lui-sheet (normally fixed/viewport) is
   re-anchored to it. The panel is capped to the component's width and the
   host gets a floor so a short table still leaves the sheet usable. */
.lt-upload-sheet-host { position: relative; }
.lt-upload-sheet-host:has(.lt-upload-sheet) { min-height: 26rem; }
.lt-upload-sheet.lui-sheet { position: absolute; z-index: 30; }
.lt-upload-sheet .lui-sheet-panel { width: min(26rem, 100%); }
