:root {
  --bg: #171920;
  --panel: #272C39;
  --card: #272C39;
  --text: rgb(157, 164, 183);
  --text2: rgb(152, 158, 173);
  --line: rgba(255,255,255,.10);
  --blue: #2770cc;
  --blueTrack: #191b21;
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  min-height: 100%;
  background: var(--bg);
  color: var(--text);
  font-family: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Arial, sans-serif;
}

body { overflow-x: hidden; }

.app { padding: 14px 8px 70px; }

.top-project {
  min-height: 130px;
  background: var(--panel);
  border-radius: 38px;
  padding: 26px 42px;
  margin-bottom: 20px;
  /* box-shadow: 0 0.1rem 0.5rem 0.1rem rgb(0 0 0 / 55%); */
  background: #242834;
}

.top-row {
  display: flex;
  align-items: center;
  gap: 28px;
  width: 100%;
}

.bottom-row {
  display: flex;
  align-items: center;
  gap: 28px;
  width: 100%;
  margin-top: 18px;
}

.project-title {
  flex: 0 0 260px;
  width: 260px;
  outline: none;
  font-size: 25px;
  line-height: 1.1;
  letter-spacing: .12em;
  font-weight: 800;
  text-transform: uppercase;
  white-space: nowrap;
}

.project-title:empty::before {
  content: "PROJECT";
  color: var(--text2);
}

.top-progress-wrap {
  flex: 1 1 auto;
  min-width: 260px;
}

.top-progress-row {
  display: flex;
  align-items: center;
  gap: 28px;
  width: 100%;
}

.progress-line {
  width: 100%;
  height: 12px;
  border-radius: 999px;
  background: var(--blueTrack);
  overflow: hidden;
}

.progress-fill {
  height: 100%;
  width: var(--value, 0%);
  background: var(--blue);
}

.percent {
  flex: 0 0 74px;
  text-align: right;
  font-size: 25px;
  font-weight: 800;
}

.project-url {
  flex: 0 0 340px;
  width: 340px;
  margin-top: 0;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--line);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  color: var(--text2);
  font-size: 17px;
  font-weight: 800;
}

.project-url-prefix { white-space: nowrap; }

.project-url-edit {
  min-width: 80px;
  outline: none;
  color: var(--text2);
}

.project-url-ok {
  margin-left: 12px;
  height: 26px;
  min-width: 38px;
  border: 0;
  border-radius: 9px;
  background: #242834;
  color: var(--text);
  font-size: 12px;
  font-weight: 900;
  cursor: pointer;
}

.scroll-track {
  flex: 0 0 48%;
  margin-left: auto;
  width: 48%;
  min-width: 220px;
  height: 24px;
  border-radius: 999px;
  background: #191b21;
  position: relative;
  cursor: pointer;
  overflow: hidden;
  touch-action: none;
  user-select: none;
}

.scroll-thumb {
  position: absolute;
  left: 0;
  top: 3px;
  width: 76px;
  height: 18px;
  border-radius: 999px;
  background: rgb(59 93 137);
  transform: translateX(0);
  pointer-events: none;
  margin: 0 3px;
}

.columns {
  display: flex;
  gap: 40px;
  overflow-x: auto;
  padding: 0 34px 30px;
  scroll-behavior: auto;
}

.columns::-webkit-scrollbar { height: 0; }

.column {
  width: 900px;
  min-width: 900px;
  max-width: 900px;
  flex: 0 0 900px;
}

.section-metrics {
  min-height: 95px;
  padding: 18px 22px;
  border-radius: 22px;
  background: var(--panel);
  display: block;
  cursor: pointer;
  margin-bottom: 14px;
  /* box-shadow: 0 0.1rem 0.5rem 0.1rem rgb(0 0 0 / 55%); */
  background: #242834;
  /* border: 0.45rem solid #272c39cc; */
}

.metric-empty {
  color: var(--text2);
  font-size: 15px;
  font-weight: 700;
}

.metric-list {
  display: grid;
  gap: 13px;
}

.metric-item {
  display: grid;
  grid-template-columns: minmax(120px, auto) minmax(0, 1fr) auto;
  gap: 18px;
  align-items: center;
}

.metric-name {
  font-size: 17px;
  font-weight: 900;
  color: var(--text);
  text-transform: uppercase;
}

.metric-percent {
  min-width: 54px;
  text-align: right;
  font-size: 17px;
  font-weight: 900;
  color: var(--text);
}

.column-content {
  min-height: 520px;
  outline: none;
  font-size: 18px;
  line-height: 1.85;
  color: var(--text);
}

.column-content p,
.column-content div { margin: 0 0 .9em; }

.column-content img {
  display: block;
  width: 100%;
  height: auto;
  margin: 20px 0 24px;
  border-radius: 4px;
  opacity: .82;
}

.add-column {
  min-height: 95px;
  border-radius: 22px;
  background: var(--panel);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 54px;
  font-weight: 600;
  color: #5d6271;
  cursor: pointer;
  width: 100%;
}

.section-page {
  max-width: 1580px;
  margin: 0 auto;
  padding: 0 8px 70px;
}

.section-topbar {
  min-height: 112px;
  border-radius: 42px;
  background: var(--panel);
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 10px 16px;
  margin-bottom: 26px;
  margin-top: 12px;
}

.back-btn {
  width: 93px;
  height: 84px;
  border-radius: 34px;
  border: none;
  background: #171920;
  color: #474f62;
  font-size: 54px;
  line-height: 1;
  cursor: pointer;
}

.section-title {
  outline: none;
  color: #838a9b;
  font-size: 22px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  min-width: 160px;
}

.section-title:empty::before {
  content: "РАЗДЕЛ";
  color: var(--text2);
}

.tabs {
  display: flex;
  justify-content: center;
  gap: 12px;
  margin: 0 0 34px;
}

.tab {
  min-width: 170px;
  height: 48px;
  border-radius: 15px;
  border: 2px solid transparent;
  background: var(--panel);
  color: rgb(130 138 158);
  font-size: 17px;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  outline: none;
  cursor: pointer;
  text-transform: uppercase;
  padding: 0 18px;
}

.tab.active {
  background: #0c0d11;
  color: #171717;
  cursor: text;
  color: #545966;
}

.tab.add-tab {
  border-color: #272c39;
  background: transparent;
  color: rgb(73 79 95);
  font-size: 37px;
  font-weight: 500;
  cursor: pointer;
  border: 3px solid #272c39;
}

.task-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
  max-width: 1400px;
  margin: 0 auto;
}

.task-main {
  min-height: 160px;
  border-radius: 12px;
  background: var(--card);
  padding: 26px 24px;
  outline: none;
  color: var(--text);
  font-size: 17px;
  font-weight: 800;
  overflow: hidden;
}

.task-main img {
  width: calc(100% + 48px);
  height: calc(100% + 52px);
  min-height: 160px;
  object-fit: cover;
  display: block;
  margin: -26px -24px;
  max-width: none;
  opacity: .78;
}

.task-foot {
  margin-top: 6px;
  min-height: 66px;
  border-radius: 12px;
  background: var(--card);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 24px;
  color: rgb(142 150 169);
  font-size: 17px;
  font-weight: 800;
}

.status {
  cursor: pointer;
  user-select: none;
}

.divider {
  grid-column: 1 / -1;
  height: 1px;
  background: var(--line);
  margin: 28px 0 18px;
}

.done-title {
  grid-column: 1 / -1;
  text-align: center;
  color: rgb(154 160 176);
  font-size: 17px;
  font-weight: 700;
  text-transform: uppercase;
  margin-bottom: 18px;
  letter-spacing: .04em;
}

.add-task {
  min-height: 160px;
  border-radius: 12px;
  background: var(--card);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text2);
  font-size: 34px;
  cursor: pointer;
}

.create-screen {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 24px;
}

.create-box {
  width: min(720px, 100%);
  background: var(--panel);
  border-radius: 34px;
  padding: 34px;
  display: grid;
  gap: 16px;
}

.create-box h1 {
  margin: 0 0 8px;
  font-size: 28px;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.create-box input {
  height: 58px;
  border: none;
  outline: none;
  border-radius: 18px;
  background: #16181b;
  color: var(--text);
  padding: 0 18px;
  font-size: 18px;
  font-weight: 700;
}

.create-box button {
  height: 58px;
  border: none;
  border-radius: 18px;
  background: #2d4f86;
  color: #dfe8ff;
  font-size: 17px;
  font-weight: 900;
  cursor: pointer;
}

.message {
  color: #bc6060;
  font-weight: 700;
  min-height: 22px;
}

.drop-over {
  outline: 2px dashed rgba(255,255,255,.22);
  outline-offset: -8px;
}

.task-context-file { display: none; }

.ctx {
  position: fixed;
  z-index: 1000;
  background: rgb(36 40 52 / 67%);
  backdrop-filter: blur(18px) saturate(1.18);
  -webkit-backdrop-filter: blur(18px) saturate(1.18);
  border: 1px solid rgb(36 40 52 / 45%);
  border-radius: 22px;
  padding: 10px;
  min-width: 260px;
  box-shadow: 0 0px 15px rgba(0,0,0,.55),
    inset 0 1px 0 rgba(255,255,255,.08);
  overflow: hidden;
}

.ctx::before {
  content: "";
  display: block;
  height: 4px;
  width: 54px;
  border-radius: 999px;
  background: rgb(0 0 0 / 29%);
  margin: 2px auto 10px;
}

.ctx button,
.ctx label {
  position: relative;
  min-height: 44px;
  border-radius: 14px;
  padding: 10px 12px;
  margin: 4px 0;
  background: rgb(0 0 0 / 35%);
  border: none;
  color: rgba(242,243,245,.82);
  font-size: 14px;
  letter-spacing: .01em;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 10px;
  width: 100%;
  font-weight: 600;
  font-family: inherit;
  cursor: pointer;
  text-align: left;
  transition: all 0.18s linear;
}

.ctx button + button,
.ctx label + label,
.ctx button + label,
.ctx label + button {
  margin-top: 7px;
}

.ctx input[type="color"] {
  width: 34px;
  height: 28px;
  border-radius: 18px;
  overflow: hidden;
  background: transparent;
  border: none;
  margin-left: auto;
}

.error-box {
  margin: 20px;
  padding: 20px;
  border-radius: 20px;
  background: rgba(100,20,20,.35);
  color: #ffd8d8;
  font-family: monospace;
  white-space: pre-wrap;
}

@media (hover:hover) and (pointer:fine) {
  .add-column,
  .add-task,
  .tab,
  .section-metrics,
  .task-foot,
  .status,
  .back-btn,
  .project-url-ok,
  .ctx button,
  .ctx label,
  .scroll-track {
    transition: all 0.18s linear;
  }

  .add-column:hover,
  .add-task:hover,
  .section-metrics:hover,
  .task-foot:hover,
  .project-url-ok:hover,
  .ctx button:hover,
  .ctx label:hover {
    filter: brightness(1.18);
  }


  .back-btn:hover{
    background: #13141a;
  }

  .tab:hover {
    filter: brightness(1.18);
    transform: translateY(-1px);
  }

  .ctx button:hover,
  .ctx label:hover {
    background: rgb(0 0 0 / 62%);
    border-color: rgba(255,255,255,.12);
    transform: translateX(3px);
    filter: none;
  }
}

@media (max-width: 900px) {
  .top-row,
  .bottom-row {
    flex-direction: column;
    align-items: stretch;
    gap: 16px;
  }

  .project-title,
  .project-url {
    width: 100%;
    flex: none;
  }

  .top-progress-row {
    gap: 16px;
  }

  .percent {
    flex: 0 0 58px;
    font-size: 24px;
  }

  .scroll-track {
    display: none;
  }

  .columns {
    gap: 18px;
    padding: 0 14px 26px;
  }

  .column {
    width: 88vw;
    min-width: 88vw;
    max-width: 88vw;
    flex-basis: 88vw;
  }

  .section-metrics {
    display: block;
  }

  .metric-list {
    display: grid;
    gap: 16px;
  }

  .metric-item {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px;
  }

  .metric-name {
    grid-column: 1 / -1;
    font-size: 22px;
    line-height: 1.14;
  }

  .metric-item .progress-line {
    grid-column: 1 / 2;
  }

  .metric-percent {
    grid-column: 2 / 3;
    align-self: center;
    font-size: 22px;
    min-width: 52px;
  }

  .task-grid {
    grid-template-columns: 1fr;
  }

  .tabs {
    overflow-x: auto;
    justify-content: flex-start;
    padding: 0 8px;
  }

  .tab {
    min-width: 140px;
  }

  .ctx button:hover,
  .ctx label:hover {
    transform: none;
  }
}


/* Update: Nunito + FontAwesome + interaction fixes */
button,
input,
[contenteditable="true"] {
  font-family: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Arial, sans-serif;
}

.project-title {
  flex: 0 0 auto;
  width: auto;
  min-width: 260px;
  max-width: none;
  overflow: visible;
}

.top-progress-wrap {
  flex: 1 1 auto;
  min-width: 180px;
}

.project-url-ok,
.back-btn,
.add-column,
.add-task,
.tab.add-tab,
.create-box button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.project-url-ok i {
  font-size: 12px;
  line-height: 1;
}

.back-btn i {
  font-size: 25px;
  line-height: 1;
}

.add-column i,
.add-task i {
  font-size: 32px;
  line-height: 1;
}

.tab.add-tab {
  line-height: 1;
}

.tab.add-tab i {
  font-size: 25px;
  line-height: 1;
}

.create-box button {
  gap: 10px;
}

.task-foot {
  cursor: pointer;
}

.status {
  pointer-events: none;
}

.ctx button i,
.ctx label i {
  width: 18px;
  min-width: 18px;
  text-align: center;
  opacity: .82;
}

.ctx button span,
.ctx label span {
  flex: 1 1 auto;
}

@media (hover:hover) and (pointer:fine) {
  .tab.active:hover {
    transform: none;
    filter: none;
    /* background: #11131a; */
    /* color: #686f86; */
  }

  .tab:not(.active):hover {
    cursor: pointer;
  }
}

@media (max-width: 900px) {
  .project-title {
    width: 100%;
    min-width: 0;
    white-space: normal;
  }

  .top-progress-wrap {
    min-width: 0;
  }
}


/* image drag reorder inside column-content */
.column-content img {
  cursor: grab;
}

.column-content img:active {
  cursor: grabbing;
}

.column-content img.dragging-image {
  opacity: .38;
  filter: brightness(1.25);
}

.column-content.drop-over {
  outline: 2px dashed rgba(157, 164, 183, .32);
  outline-offset: 8px;
}


/* image context menu delete */
.column-content img {
  user-select: none;
}

.column-content img:hover {
  filter: brightness(1.08);
}


/* Fix: allow typing under the last image in column-content */
.column-content {
  padding-bottom: 140px;
}

.column-content .edit-tail {
  min-height: 34px;
  margin: 0;
}

.column-content .edit-tail:empty::before {
  content: "\\00a0";
}




/* Fullscreen image preview */
.image-preview-overlay {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 34px;
  background: rgba(8, 9, 12, .82);
  backdrop-filter: blur(18px) saturate(1.12);
  -webkit-backdrop-filter: blur(18px) saturate(1.12);
}

.image-preview-box {
  position: relative;
  width: calc(100vw - 68px);
  height: calc(100vh - 68px);
  display: flex;
  align-items: center;
  justify-content: center;
}

.image-preview-img {
  display: block;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  border-radius: 16px;
  box-shadow: 0 18px 80px rgba(0,0,0,.62);
}

.image-preview-close {
  position: absolute;
  top: 0;
  right: 0;
  width: 46px;
  height: 46px;
  border: 0;
  border-radius: 16px;
  background: rgb(36 40 52 / 82%);
  color: rgb(157,164,183);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  transition: all .18s linear;
  z-index: 2;
}

.image-preview-close i {
  font-size: 20px;
  line-height: 1;
}

.column-content img {
  cursor: zoom-in;
}

.column-content img.dragging-image {
  cursor: grabbing;
}

@media (hover:hover) and (pointer:fine) {
  .image-preview-close:hover {
    background: rgb(0 0 0 / 62%);
    filter: brightness(1.18);
  }
}

@media (max-width: 900px) {
  .image-preview-overlay {
    padding: 12px;
  }

  .image-preview-box {
    width: calc(100vw - 24px);
    height: calc(100vh - 24px);
  }

  .image-preview-img {
    border-radius: 12px;
  }

  .image-preview-close {
    top: 8px;
    right: 8px;
  }
}


/* Fix: no blue selection/tap highlight on images/buttons + custom image reorder */
html,
body,
button,
.tab,
.add-column,
.add-task,
.back-btn,
.project-url-ok,
.task-foot,
.ctx,
.ctx button,
.ctx label,
.column-content img {
  -webkit-tap-highlight-color: transparent;
}

button,
.tab,
.add-column,
.add-task,
.back-btn,
.project-url-ok,
.task-foot,
.ctx button,
.ctx label,
.column-content img {
  -webkit-user-select: none;
  user-select: none;
}

.column-content img {
  -webkit-user-drag: none;
  user-drag: none;
  cursor: zoom-in;
}

.column-content img.dragging-image {
  opacity: .38;
  filter: brightness(1.25);
  cursor: grabbing;
}

body.image-reorder-active,
body.image-reorder-active * {
  cursor: grabbing !important;
  -webkit-user-select: none !important;
  user-select: none !important;
}


/* v2 image drag cursor fix */
.column-content img {
  cursor: pointer !important;
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-user-drag: none !important;
}

.column-content img.dragging-image {
  cursor: grabbing !important;
  opacity: .38;
  filter: brightness(1.25);
}

body.image-reorder-active,
body.image-reorder-active * {
  cursor: grabbing !important;
  -webkit-user-select: none !important;
  user-select: none !important;
}


/* v3 image drag hover + preview close */
.image-preview-img {
  box-shadow: none !important;
}

.column-content img {
  cursor: pointer !important;
}

.column-content img.dragging-image {
  cursor: grabbing !important;
}

body.image-reorder-active,
body.image-reorder-active * {
  cursor: grabbing !important;
}



/* Mobile: hide metric names, keep only progress bars + percents */
@media (max-width: 900px) {
  .section-metrics .metric-item {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px;
    align-items: center;
  }

  .section-metrics .metric-name {
    display: none !important;
  }

  .section-metrics .metric-item .progress-line {
    grid-column: 1 / 2;
  }

  .section-metrics .metric-percent {
    grid-column: 2 / 3;
    align-self: center;
  }
}


/* Mobile: restore tab names; only section-metrics names are hidden */
@media (max-width: 900px) {
  .tabs .tab:not(.add-tab) {
    min-width: 140px;
    width: auto;
    padding: 0 18px;
    font-size: 17px;
    overflow: visible;
  }

  .tabs .tab:not(.add-tab)::before {
    content: none !important;
    display: none !important;
  }

  .tabs .tab.add-tab {
    min-width: 52px;
    width: 52px;
    padding: 0;
  }
}


/* Mobile: hide ugly horizontal scrollbar under tabs, keep swipe scrolling */
@media (max-width: 900px) {
  .tabs {
    scrollbar-width: none;
    -ms-overflow-style: none;
  }

  .tabs::-webkit-scrollbar {
    display: none;
    width: 0;
    height: 0;
  }
}


/* Video support */
.video-card {
  position: relative;
  width: 100%;
  margin: 20px 0 24px;
  border-radius: 12px;
  overflow: hidden;
  background: #0c0d11;
  cursor: pointer;
  user-select: none;
  -webkit-user-select: none;
}

.video-poster-wrap {
  position: relative;
  width: 100%;
  min-height: 240px;
  background: #0c0d11;
}

.video-poster {
  display: block;
  width: 100%;
  height: auto;
  min-height: 240px;
  object-fit: cover;
  opacity: .82;
}

.video-poster-empty {
  min-height: 260px;
  background:
    radial-gradient(circle at 50% 42%, rgba(39,112,204,.18), transparent 28%),
    #0c0d11;
}

.video-play-icon {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: #6fb0ff;
  font-size: 56px;
  text-shadow: 0 0 18px rgba(39,112,204,.55);
  pointer-events: none;
}

.media-upload {
  width: 100%;
  margin: 20px 0 24px;
  border-radius: 16px;
  background: #242834;
  padding: 22px;
  user-select: none;
  -webkit-user-select: none;
}

.media-upload-title {
  display: flex;
  align-items: center;
  gap: 12px;
  color: rgb(157,164,183);
  font-weight: 800;
  margin-bottom: 12px;
}

.media-upload-text {
  color: rgb(152,158,173);
  font-size: 14px;
  font-weight: 700;
  margin-bottom: 12px;
}

.media-upload-line {
  height: 10px;
  border-radius: 999px;
  background: #191b21;
  overflow: hidden;
  margin-bottom: 14px;
}

.media-upload-fill {
  height: 100%;
  width: 0%;
  background: #2770cc;
  border-radius: 999px;
}

.media-upload-cancel {
  height: 36px;
  border: 0;
  border-radius: 12px;
  background: rgb(0 0 0 / 35%);
  color: rgb(157,164,183);
  font-weight: 800;
  cursor: pointer;
}

.video-preview-overlay {
  position: fixed;
  inset: 0;
  z-index: 2100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 34px;
  background: rgba(8, 9, 12, .84);
  backdrop-filter: blur(18px) saturate(1.12);
  -webkit-backdrop-filter: blur(18px) saturate(1.12);
}

.video-preview-box {
  position: relative;
  width: calc(100vw - 68px);
  height: calc(100vh - 68px);
  display: flex;
  align-items: center;
  justify-content: center;
  background: #0c0d11;
  border-radius: 18px;
  overflow: hidden;
}

.video-preview-video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: #0c0d11;
}

.video-preview-close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 46px;
  height: 46px;
  border: 0;
  border-radius: 16px;
  background: rgb(36 40 52 / 82%);
  color: rgb(157,164,183);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  transition: all .18s linear;
  z-index: 3;
}

.video-center-play {
  position: absolute;
  inset: 0;
  margin: auto;
  width: 92px;
  height: 92px;
  border: 0;
  border-radius: 32px;
  background: transparent;
  color: #6fb0ff;
  font-size: 62px;
  cursor: pointer;
  display: grid;
  place-items: center;
  z-index: 2;
  text-shadow: 0 0 18px rgba(39,112,204,.55);
}

.video-center-play.is-playing {
  opacity: 0;
  pointer-events: none;
}

.video-controls {
  position: absolute;
  left: 28px;
  right: 28px;
  bottom: 22px;
  z-index: 3;
}

.video-progress {
  width: 100%;
  accent-color: #2770cc;
  cursor: pointer;
}

.video-controls-row {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-top: 8px;
}

.video-controls-row button {
  border: 0;
  background: transparent;
  color: #6fb0ff;
  font-size: 17px;
  cursor: pointer;
  width: 34px;
  height: 34px;
  display: inline-grid;
  place-items: center;
  border-radius: 10px;
}

.video-repeat-btn.active {
  background: rgb(39 112 204 / 28%);
}

.video-volume {
  width: 90px;
  accent-color: #2770cc;
}

.video-time {
  margin-left: auto;
  color: white;
  font-weight: 800;
  font-size: 14px;
  text-shadow: 0 1px 10px rgba(0,0,0,.6);
}

.video-frame-btn {
  width: auto !important;
  padding: 0 12px;
  gap: 8px;
  background: rgb(39 112 204 / 28%) !important;
  color: #d7e8ff !important;
  font-weight: 900;
}

@media (hover:hover) and (pointer:fine) {
  .video-card:hover,
  .media-upload-cancel:hover,
  .video-controls-row button:hover,
  .video-preview-close:hover {
    filter: brightness(1.18);
  }
}

@media (max-width: 900px) {
  .video-preview-overlay {
    padding: 12px;
  }

  .video-preview-box {
    width: calc(100vw - 24px);
    height: calc(100vh - 24px);
    border-radius: 14px;
  }

  .video-controls {
    left: 14px;
    right: 14px;
    bottom: 14px;
  }

  .video-center-play {
    width: 76px;
    height: 76px;
    font-size: 48px;
  }

  .video-volume {
    width: 58px;
  }

  .video-time {
    font-size: 12px;
  }
}


/* Video modal layout fix */
.video-preview-overlay {
  position: fixed;
  inset: 0;
  z-index: 2100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 34px;
  background: rgba(8, 9, 12, .84);
  backdrop-filter: blur(18px) saturate(1.12);
  -webkit-backdrop-filter: blur(18px) saturate(1.12);
}

.video-preview-box {
  position: relative;
  width: min(1180px, calc(100vw - 68px));
  height: min(840px, calc(100vh - 68px));
  background: #333949;
  border-radius: 24px;
  overflow: hidden;
  display: grid;
  grid-template-rows: minmax(0, 1fr) 148px;
}

.video-preview-stage {
  position: relative;
  background: #000;
  margin: 16px 16px 0;
  overflow: hidden;
}

.video-preview-video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: #000;
}

.video-center-play {
  position: absolute;
  inset: 0;
  margin: auto;
  width: 92px;
  height: 92px;
  border: 0;
  border-radius: 32px;
  background: transparent;
  color: #6fb0ff;
  font-size: 62px;
  cursor: pointer;
  display: grid;
  place-items: center;
  z-index: 2;
  text-shadow: 0 0 18px rgba(39,112,204,.55);
}

.video-center-play.is-playing {
  opacity: 0;
  pointer-events: none;
}

.video-controls-panel {
  padding: 18px 24px 20px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 12px;
}

.video-progress {
  width: 100%;
  accent-color: #2770cc;
  cursor: pointer;
}

.video-controls-row {
  display: flex;
  align-items: center;
  gap: 14px;
}

.video-controls-row button {
  border: 0;
  background: transparent;
  color: #6fb0ff;
  font-size: 17px;
  cursor: pointer;
  width: 34px;
  height: 34px;
  display: inline-grid;
  place-items: center;
  border-radius: 10px;
}

.video-repeat-btn.active {
  background: rgb(39 112 204 / 28%);
}

.video-volume {
  width: 110px;
  accent-color: #2770cc;
}

.video-time {
  margin-left: auto;
  color: white;
  font-weight: 800;
  font-size: 14px;
}

.video-frame-btn {
  width: auto !important;
  padding: 0 12px;
  gap: 8px;
  background: rgb(39 112 204 / 28%) !important;
  color: #d7e8ff !important;
  font-weight: 900;
}

@media (hover:hover) and (pointer:fine) {
  .video-controls-row button:hover {
    filter: brightness(1.18);
  }
}

@media (max-width: 900px) {
  .video-preview-overlay {
    padding: 12px;
  }

  .video-preview-box {
    width: calc(100vw - 24px);
    height: calc(100vh - 24px);
    border-radius: 18px;
    grid-template-rows: minmax(0, 1fr) 126px;
  }

  .video-preview-stage {
    margin: 12px 12px 0;
  }

  .video-controls-panel {
    padding: 14px 14px 16px;
    gap: 10px;
  }

  .video-center-play {
    width: 76px;
    height: 76px;
    font-size: 48px;
  }

  .video-controls-row {
    gap: 10px;
    flex-wrap: nowrap;
  }

  .video-volume {
    width: 62px;
  }

  .video-time {
    font-size: 12px;
  }

  .video-frame-btn span {
    display: none;
  }
}


/* Video frame picker mode */
.video-frame-range {
  width: 100%;
  accent-color: #2770cc;
  cursor: pointer;
}

.video-frame-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.video-frame-time {
  color: rgb(157,164,183);
  font-size: 15px;
  font-weight: 900;
}

.video-frame-save {
  height: 42px;
  min-width: 150px;
  border: 0;
  border-radius: 14px;
  background: #2770cc;
  color: #d7e8ff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  font-weight: 900;
  cursor: pointer;
  transition: all .18s linear;
}

.video-frame-save i {
  font-size: 15px;
}

@media (hover:hover) and (pointer:fine) {
  .video-frame-save:hover {
    filter: brightness(1.14);
  }
}

@media (max-width: 900px) {
  .video-frame-save {
    min-width: 120px;
  }
}


/* Video poster fallback */
.video-poster-empty::after {
  content: "Видео";
  position: absolute;
  left: 22px;
  bottom: 18px;
  color: rgb(152,158,173);
  font-size: 14px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}


/* Video card should look like a normal inserted photo/card in column */
.column-content .video-card {
  display: block;
  width: 100%;
  margin: 20px 0 24px;
  padding: 0 !important;
  border-radius: 4px !important;
  overflow: hidden;
  background: transparent !important;
}

.column-content .video-poster-wrap {
  display: block;
  width: 100%;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  background: transparent !important;
  border-radius: 4px !important;
  overflow: hidden;
}

.column-content .video-poster {
  display: block;
  width: 100%;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  object-fit: contain !important;
  margin: 0 !important;
  padding: 0 !important;
  border-radius: 4px !important;
  opacity: .82;
  background: transparent !important;
}

.column-content .video-poster-empty {
  min-height: 260px !important;
  background: #0c0d11 !important;
}

.column-content .video-card::before,
.column-content .video-card::after,
.column-content .video-poster-wrap::before,
.column-content .video-poster-wrap::after {
  display: none !important;
  content: none !important;
}

/* Video preview close button */
.video-preview-close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 46px;
  height: 46px;
  border: 0;
  border-radius: 16px;
  background: rgb(36 40 52 / 82%);
  color: rgb(157,164,183);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  transition: all .18s linear;
  z-index: 5;
}

.video-preview-close i {
  font-size: 20px;
  line-height: 1;
}

@media (hover:hover) and (pointer:fine) {
  .video-preview-close:hover {
    background: rgb(0 0 0 / 62%);
    filter: brightness(1.18);
  }
}

@media (max-width: 900px) {
  .video-preview-close {
    top: 8px;
    right: 8px;
  }
}


/* Fix: do not add paragraph/div margins to video internal layout */
.column-content .video-card,
.column-content .video-card div,
.column-content .video-poster-wrap,
.column-content .video-play-icon {
  margin: 0 !important;
}

.column-content p {
  margin: 0 0 .9em;
}

/* Video close button belongs to overlay, not video box */
.video-preview-overlay > .video-preview-close {
  position: fixed !important;
  top: 34px !important;
  right: 34px !important;
  width: 52px;
  height: 52px;
  border: 0;
  border-radius: 18px;
  background: rgb(36 40 52 / 82%);
  color: rgb(157,164,183);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  transition: all .18s linear;
  z-index: 2200;
}

.video-preview-box .video-preview-close {
  display: none !important;
}

/* Custom video progress similar to columnScrollTrack */
.video-progress,
.video-frame-range {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  height: 24px;
  border-radius: 999px;
  background: #191b21;
  outline: none;
  cursor: pointer;
  overflow: hidden;
  accent-color: transparent;
}

.video-progress::-webkit-slider-runnable-track,
.video-frame-range::-webkit-slider-runnable-track {
  height: 24px;
  border-radius: 999px;
  background: linear-gradient(
    to right,
    #2770cc 0%,
    #2770cc calc(var(--video-progress, 0) * 1%),
    #191b21 calc(var(--video-progress, 0) * 1%),
    #191b21 100%
  );
}

.video-progress::-webkit-slider-thumb,
.video-frame-range::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 76px;
  height: 18px;
  margin-top: 3px;
  border: 0;
  border-radius: 999px;
  background: rgb(59 93 137);
  box-shadow: none;
}

.video-progress::-moz-range-track,
.video-frame-range::-moz-range-track {
  height: 24px;
  border-radius: 999px;
  background: #191b21;
}

.video-progress::-moz-range-progress,
.video-frame-range::-moz-range-progress {
  height: 24px;
  border-radius: 999px;
  background: #2770cc;
}

.video-progress::-moz-range-thumb,
.video-frame-range::-moz-range-thumb {
  width: 76px;
  height: 18px;
  border: 0;
  border-radius: 999px;
  background: rgb(59 93 137);
}

@media (hover:hover) and (pointer:fine) {
  .video-preview-overlay > .video-preview-close:hover {
    background: rgb(0 0 0 / 62%);
    filter: brightness(1.18);
  }

  .video-progress:hover::-webkit-slider-thumb,
  .video-frame-range:hover::-webkit-slider-thumb {
    filter: brightness(1.15);
  }
}

@media (max-width: 900px) {
  .video-preview-overlay > .video-preview-close {
    top: 18px !important;
    right: 18px !important;
    width: 46px;
    height: 46px;
  }

  .video-progress,
  .video-frame-range {
    height: 22px;
  }

  .video-progress::-webkit-slider-runnable-track,
  .video-frame-range::-webkit-slider-runnable-track {
    height: 22px;
  }

  .video-progress::-webkit-slider-thumb,
  .video-frame-range::-webkit-slider-thumb {
    width: 62px;
    height: 16px;
    margin-top: 3px;
  }
}


/* Fix: video-card must align with normal images in column */
.column-content .video-card {
  display: block !important;
  width: 100% !important;
  margin: 20px 0 24px !important;
  padding: 0 !important;
  border-radius: 4px !important;
  overflow: hidden !important;
  background: transparent !important;
  line-height: 0 !important;
}

.column-content .video-card .video-poster-wrap,
.column-content .video-card .video-poster-wrap div,
.column-content .video-card .video-play-icon {
  margin: 0 !important;
}

.column-content .video-card .video-poster {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  object-fit: contain !important;
  margin: 0 !important;
  padding: 0 !important;
  border-radius: 4px !important;
}

.column-content .video-card + img,
.column-content img + .video-card {
  margin-top: 20px !important;
}


/* Video player color variables */
.video-preview-overlay {
  --video-ui-bg: #333949;
  --video-stage-bg: #000000;
  --video-track: #191b21;
  --video-fill: #2770cc;
  --video-thumb: #2770cc;
  --video-icon: #6fb0ff;
  --video-text: #ffffff;
  --video-button-hover: rgb(39 112 204 / 22%);
}

/* Video player controls: simpler progress, no columnScrollThumb-style pill */
.video-controls-panel .video-progress {
  -webkit-appearance: none !important;
  appearance: none !important;
  width: 100% !important;
  height: 18px !important;
  border-radius: 999px !important;
  background: var(--video-track) !important;
  outline: none !important;
  cursor: pointer !important;
  overflow: hidden !important;
}

.video-controls-panel .video-progress::-webkit-slider-runnable-track {
  height: 18px !important;
  border-radius: 999px !important;
  background: linear-gradient(
    to right,
    var(--video-fill) 0%,
    var(--video-fill) calc(var(--video-progress, 0) * 1%),
    var(--video-track) calc(var(--video-progress, 0) * 1%),
    var(--video-track) 100%
  ) !important;
}

.video-controls-panel .video-progress::-webkit-slider-thumb {
  -webkit-appearance: none !important;
  appearance: none !important;
  width: 0 !important;
  height: 0 !important;
  margin: 0 !important;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

.video-controls-panel .video-progress::-moz-range-track {
  height: 18px !important;
  border-radius: 999px !important;
  background: var(--video-track) !important;
}

.video-controls-panel .video-progress::-moz-range-progress {
  height: 18px !important;
  border-radius: 999px !important;
  background: var(--video-fill) !important;
}

.video-controls-panel .video-progress::-moz-range-thumb {
  width: 0 !important;
  height: 0 !important;
  border: 0 !important;
  background: transparent !important;
}

/* Volume slider: same style, 2x thinner */
.video-controls-panel .video-volume {
  -webkit-appearance: none !important;
  appearance: none !important;
  width: 110px !important;
  height: 9px !important;
  border-radius: 999px !important;
  background: var(--video-track) !important;
  outline: none !important;
  cursor: pointer !important;
  overflow: hidden !important;
}

.video-controls-panel .video-volume::-webkit-slider-runnable-track {
  height: 9px !important;
  border-radius: 999px !important;
  background: linear-gradient(
    to right,
    var(--video-fill) 0%,
    var(--video-fill) calc(var(--video-volume, 100) * 1%),
    var(--video-track) calc(var(--video-volume, 100) * 1%),
    var(--video-track) 100%
  ) !important;
}

.video-controls-panel .video-volume::-webkit-slider-thumb {
  -webkit-appearance: none !important;
  appearance: none !important;
  width: 14px !important;
  height: 14px !important;
  margin-top: -2.5px !important;
  border: 0 !important;
  border-radius: 999px !important;
  background: var(--video-thumb) !important;
  box-shadow: none !important;
}

.video-controls-panel .video-volume::-moz-range-track {
  height: 9px !important;
  border-radius: 999px !important;
  background: var(--video-track) !important;
}

.video-controls-panel .video-volume::-moz-range-progress {
  height: 9px !important;
  border-radius: 999px !important;
  background: var(--video-fill) !important;
}

.video-controls-panel .video-volume::-moz-range-thumb {
  width: 14px !important;
  height: 14px !important;
  border: 0 !important;
  border-radius: 999px !important;
  background: var(--video-thumb) !important;
}

/* Easy color targets */
.video-player-button,
.video-controls-row button {
  color: var(--video-icon) !important;
}

.video-time {
  color: var(--video-text) !important;
}

.video-preview-box {
  background: #000000 !important;
  box-shadow: 0 0px 15px rgb(70 87 141), 0 0px 77px 2px rgb(27 35 62 / 43%);
}

.video-preview-stage,
.video-preview-video {
  background: var(--video-stage-bg) !important;
}

@media (hover:hover) and (pointer:fine) {
  .video-controls-row button:hover {
    background: var(--video-button-hover) !important;
  }
}

@media (max-width: 900px) {
  .video-controls-panel .video-progress {
    height: 16px !important;
  }

  .video-controls-panel .video-progress::-webkit-slider-runnable-track {
    height: 16px !important;
  }

  .video-controls-panel .video-volume {
    width: 62px !important;
    height: 8px !important;
  }

  .video-controls-panel .video-volume::-webkit-slider-runnable-track {
    height: 8px !important;
  }

  .video-controls-panel .video-volume::-webkit-slider-thumb {
    width: 13px !important;
    height: 13px !important;
    margin-top: -2.5px !important;
  }
}


/* Fix frame-picker slider: no large thumb */
.video-controls-panel .video-frame-range {
  -webkit-appearance: none !important;
  appearance: none !important;
  width: 100% !important;
  height: 18px !important;
  border-radius: 999px !important;
  background: var(--video-track) !important;
  outline: none !important;
  cursor: pointer !important;
  overflow: hidden !important;
}

.video-controls-panel .video-frame-range::-webkit-slider-runnable-track {
  height: 18px !important;
  border-radius: 999px !important;
  background: linear-gradient(
    to right,
    var(--video-fill) 0%,
    var(--video-fill) calc(var(--video-progress, 0) * 1%),
    var(--video-track) calc(var(--video-progress, 0) * 1%),
    var(--video-track) 100%
  ) !important;
}

.video-controls-panel .video-frame-range::-webkit-slider-thumb {
  -webkit-appearance: none !important;
  appearance: none !important;
  width: 0 !important;
  height: 0 !important;
  margin: 0 !important;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

.video-controls-panel .video-frame-range::-moz-range-track {
  height: 18px !important;
  border-radius: 999px !important;
  background: var(--video-track) !important;
}

.video-controls-panel .video-frame-range::-moz-range-progress {
  height: 18px !important;
  border-radius: 999px !important;
  background: var(--video-fill) !important;
}

.video-controls-panel .video-frame-range::-moz-range-thumb {
  width: 0 !important;
  height: 0 !important;
  border: 0 !important;
  background: transparent !important;
}

/* Fix volume slider: visible dark track + moving fill */
.video-controls-panel .video-volume {
  -webkit-appearance: none !important;
  appearance: none !important;
  width: 110px !important;
  height: 10px !important;
  border-radius: 999px !important;
  background: linear-gradient(
    to right,
    var(--video-fill) 0%,
    var(--video-fill) calc(var(--video-volume, 100) * 1%),
    var(--video-track) calc(var(--video-volume, 100) * 1%),
    var(--video-track) 100%
  ) !important;
  outline: none !important;
  cursor: pointer !important;
  overflow: visible !important;
}

.video-controls-panel .video-volume::-webkit-slider-runnable-track {
  height: 10px !important;
  border-radius: 999px !important;
  background: transparent !important;
}

.video-controls-panel .video-volume::-webkit-slider-thumb {
  -webkit-appearance: none !important;
  appearance: none !important;
  width: 14px !important;
  height: 14px !important;
  margin-top: -2px !important;
  border: 0 !important;
  border-radius: 999px !important;
  background: var(--video-thumb) !important;
  box-shadow: none !important;
}

.video-controls-panel .video-volume::-moz-range-track {
  height: 10px !important;
  border-radius: 999px !important;
  background: var(--video-track) !important;
}

.video-controls-panel .video-volume::-moz-range-progress {
  height: 10px !important;
  border-radius: 999px !important;
  background: var(--video-fill) !important;
}

.video-controls-panel .video-volume::-moz-range-thumb {
  width: 14px !important;
  height: 14px !important;
  border: 0 !important;
  border-radius: 999px !important;
  background: var(--video-thumb) !important;
}

@media (max-width: 900px) {
  .video-controls-panel .video-frame-range {
    height: 16px !important;
  }

  .video-controls-panel .video-frame-range::-webkit-slider-runnable-track {
    height: 16px !important;
  }

  .video-controls-panel .video-volume {
    width: 62px !important;
    height: 8px !important;
  }

  .video-controls-panel .video-volume::-webkit-slider-runnable-track {
    height: 8px !important;
  }

  .video-controls-panel .video-volume::-webkit-slider-thumb {
    width: 13px !important;
    height: 13px !important;
    margin-top: -2.5px !important;
  }
}


/* Video behaves like image inside column */
.column-content .video-card {
  cursor: pointer !important;
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-user-drag: none !important;
}

.column-content .video-card.dragging-video {
  opacity: .38;
  filter: brightness(1.25);
  cursor: grabbing !important;
}

.column-content .video-card .video-poster,
.column-content .video-card .video-poster-wrap,
.column-content .video-card .video-play-icon {
  pointer-events: none;
}

.column-content .video-card + .edit-tail,
.column-content img + .edit-tail {
  min-height: 48px;
}


/* Editable text slots between images/videos */
.column-content .edit-slot,
.column-content .edit-tail {
  min-height: 38px;
  margin: 0 !important;
  line-height: 1.85;
  outline: none;
  cursor: text;
}

.column-content .edit-slot:empty::before,
.column-content .edit-tail:empty::before {
  content: "\00a0";
}

.column-content img + .edit-slot,
.column-content .video-card + .edit-slot {
  min-height: 42px;
}


/* Drag/drop restore after edit slots */
.column-content .edit-slot,
.column-content .edit-tail {
  position: relative;
  z-index: 0;
  user-select: text;
  -webkit-user-select: text;
  -webkit-tap-highlight-color: transparent;
}

.column-content.drop-over {
  outline: 2px dashed rgba(157, 164, 183, .32);
  outline-offset: 8px;
}

/* Media stays above the typing slots for pointer drag */
.column-content img,
.column-content .video-card {
  position: relative;
  z-index: 1;
}


/* Fix after recursion bug: ensure media receives drag pointer */
.column-content img,
.column-content .video-card {
  pointer-events: auto !important;
  position: relative;
  z-index: 2;
}

.column-content .video-card .video-poster,
.column-content .video-card .video-poster-wrap,
.column-content .video-card .video-play-icon {
  pointer-events: none !important;
}

.column-content .edit-slot,
.column-content .edit-tail {
  position: relative;
  z-index: 1;
}


/* Cross-column media drag safety */
.column-content img.dragging-image,
.column-content .video-card.dragging-video {
  pointer-events: none !important;
}

body.image-reorder-active .column-content {
  outline-offset: 8px;
}


/* Media library button near columnScroll */
.media-library-btn {
  flex: 0 0 58px;
  width: 58px;
  height: 42px;
  border: 0;
  border-radius: 16px;
  background: #242834;
  color: rgb(157,164,183);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all .18s linear;
}

.media-library-btn i {
  font-size: 18px;
  line-height: 1;
}

@media (hover:hover) and (pointer:fine) {
  .media-library-btn:hover {
    filter: brightness(1.15);
    transform: translateY(-1px);
  }
}

/* Media library modal */
.media-library-overlay {
  position: fixed;
  inset: 0;
  z-index: 2300;
  background: rgba(8, 9, 12, .84);
  backdrop-filter: blur(18px) saturate(1.12);
  -webkit-backdrop-filter: blur(18px) saturate(1.12);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 34px;
}

.media-library-close {
  position: fixed;
  top: 34px;
  right: 34px;
  width: 52px;
  height: 52px;
  border: 0;
  border-radius: 18px;
  background: rgb(36 40 52 / 82%);
  color: rgb(157,164,183);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  transition: all .18s linear;
  z-index: 2310;
}

.media-library-box {
  width: min(1280px, calc(100vw - 68px));
  max-height: calc(100vh - 68px);
  background: #242834;
  border-radius: 28px;
  padding: 28px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.media-library-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.media-library-title {
  color: rgb(157,164,183);
  font-size: 26px;
  line-height: 1;
  font-weight: 900;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.media-library-count {
  color: rgb(152,158,173);
  font-size: 18px;
  font-weight: 900;
}

.media-library-grid {
  overflow: auto;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 18px;
  padding-right: 6px;
}

.media-library-item {
  position: relative;
  background: #171920;
  border-radius: 18px;
  overflow: hidden;
  cursor: pointer;
  transition: all .18s linear;
}

.media-library-preview {
  width: 100%;
  aspect-ratio: 16 / 9;
  background: #0c0d11;
  overflow: hidden;
}

.media-library-preview img,
.media-library-video-thumb img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.media-library-video-thumb {
  position: relative;
  width: 100%;
  height: 100%;
  display: grid;
  place-items: center;
  background: #0c0d11;
}

.media-library-video-thumb i {
  position: absolute;
  color: #4c5367 !important;
  font-size: 42px;
}

.media-library-meta {
  padding: 14px 48px 14px 16px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.media-library-meta span {
  color: rgb(157,164,183);
  font-size: 15px;
  font-weight: 900;
}

.media-library-meta small {
  color: rgb(152,158,173);
  font-size: 13px;
  font-weight: 700;
}

.media-library-delete {
  position: absolute;
  right: 10px;
  bottom: 10px;
  width: 36px;
  height: 36px;
  border: 0;
  border-radius: 12px;
  background: rgb(0 0 0 / 42%);
  color: rgb(157,164,183);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all .18s linear;
}

.media-library-empty {
  grid-column: 1 / -1;
  min-height: 180px;
  display: grid;
  place-items: center;
  color: rgb(152,158,173);
  font-size: 18px;
  font-weight: 800;
}

@media (hover:hover) and (pointer:fine) {
  .media-library-close:hover,
  .media-library-delete:hover {
    background: rgb(0 0 0 / 62%);
    filter: brightness(1.18);
  }

  .media-library-item:hover {
    filter: brightness(1.12);
    transform: translateY(-2px);
  }
}

@media (max-width: 900px) {
  .media-library-btn {
    display: none;
  }

  .media-library-overlay {
    padding: 12px;
  }

  .media-library-close {
    top: 18px;
    right: 18px;
    width: 46px;
    height: 46px;
  }

  .media-library-box {
    width: calc(100vw - 24px);
    max-height: calc(100vh - 24px);
    border-radius: 22px;
    padding: 22px;
  }

  .media-library-title {
    font-size: 20px;
  }

  .media-library-grid {
    grid-template-columns: 1fr;
  }
}


/* Media library button fix */
.bottom-row {
  gap: 14px;
}

.media-library-btn {
  flex: 0 0 58px;
  width: 58px;
  height: 42px;
  border: 0;
  border-radius: 16px;
  background: #242834;
  color: rgb(157,164,183);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all .18s linear;
}

.media-library-btn i {
  font-size: 18px;
  line-height: 1;
}

/* Slots before/after media: cursor can be placed around videos like around photos */
.column-content .edit-slot,
.column-content .edit-tail {
  min-height: 26px;
  margin: 0 !important;
  line-height: 1.65;
  cursor: text;
  outline: none;
}

.column-content .edit-slot:focus,
.column-content .edit-tail:focus {
  outline: none;
}

.column-content .edit-slot:empty::before,
.column-content .edit-tail:empty::before {
  content: "\00a0";
}

@media (hover:hover) and (pointer:fine) {
  .media-library-btn:hover {
    filter: brightness(1.15);
    transform: translateY(-1px);
  }
}

@media (max-width: 900px) {
  .media-library-btn {
    display: none;
  }
}


/* Video left/top text caret zone */
.column-content .video-card {
  position: relative;
}

.column-content .video-card::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 74px;
  height: 90px;
  z-index: 3;
  pointer-events: none;
}

.column-content .video-card:has(.video-poster-wrap)::before {
  cursor: text;
}


/* Strong video caret fix */
.column-content .edit-slot,
.column-content .edit-tail {
  display: block;
  width: 100%;
  min-height: 32px;
  cursor: text !important;
  caret-color: rgb(157,164,183);
}

.column-content .edit-slot[contenteditable="true"],
.column-content .edit-tail[contenteditable="true"] {
  -webkit-user-select: text !important;
  user-select: text !important;
}

.column-content .video-card {
  cursor: pointer !important;
}

.column-content .video-card::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 90px;
  height: 100%;
  z-index: 5;
  pointer-events: none;
}


/* Video arrow caret fix: let caret land beside video like with images */
.column-content .video-card {
  display: inline-block !important;
  width: 100% !important;
  vertical-align: top !important;
}

.column-content .video-side-slot {
  display: block;
  min-height: 0 !important;
  height: 0 !important;
  line-height: 1.2 !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: visible !important;
  caret-color: rgb(157,164,183);
}

.column-content .video-side-slot:focus {
  outline: none !important;
}

/* The caret line appears at the left edge of the video instead of creating a big empty row */
.column-content .video-side-before {
  transform: translateY(1px);
}

.column-content .video-side-after {
  transform: translateY(-1px);
}


/* Native video card: now an IMG, so caret behaves like photo */
.column-content img.video-card,
.column-content img[data-video-src] {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  margin: 20px 0 24px !important;
  border-radius: 4px !important;
  opacity: .82;
  cursor: pointer !important;
  object-fit: contain !important;
  -webkit-user-drag: none !important;
  user-select: none !important;
  -webkit-user-select: none !important;
}

.column-content img.video-card.dragging-video,
.column-content img[data-video-src].dragging-video {
  opacity: .38 !important;
  filter: brightness(1.25);
  cursor: grabbing !important;
}

/* remove old div-video layout if legacy remains */
.column-content div.video-card {
  display: contents !important;
}

/* During drag native video/image should not block target detection */
.column-content img.video-card.dragging-video {
  pointer-events: none !important;
}


/* Spellcheck toggle button */
.spellcheck-toggle-btn {
  flex: 0 0 58px;
  width: 58px;
  height: 42px;
  border: 0;
  border-radius: 16px;
  background: #242834;
  color: rgb(157,164,183);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all .18s linear;
}

.spellcheck-toggle-btn i {
  font-size: 18px;
  line-height: 1;
}

.spellcheck-toggle-btn.is-off {
  color: #454957;
  background: #191b21;
}

@media (hover:hover) and (pointer:fine) {
  .spellcheck-toggle-btn:hover {
    filter: brightness(1.15);
    transform: translateY(-1px);
  }
}

@media (max-width: 900px) {
  .spellcheck-toggle-btn {
    display: none;
  }
}


/* Selection rules: allow selecting only real text in columns and tasks */
html,
body,
.app,
.top-project,
.section-page,
.section-topbar,
.tabs,
.tab,
.add-tab,
.columns,
.column,
.section-metrics,
.add-column,
.ctx,
.ctx *,
.media-library-overlay,
.media-library-overlay *,
.video-preview-overlay,
.video-preview-overlay *,
.image-preview-overlay,
.image-preview-overlay *,
button,
i,
img,
.video-card,
.media-upload,
.progress-line,
.scroll-track,
.scroll-thumb {
  -webkit-user-select: none;
  user-select: none;
}

/* Column text must stay selectable/editable */
.column-content,
.column-content p,
.column-content div:not(.video-card):not(.video-poster-wrap):not(.video-play-icon):not(.media-upload):not(.media-upload *),
.column-content span,
.column-content br,
.column-content .edit-slot,
.column-content .edit-tail {
  -webkit-user-select: text !important;
  user-select: text !important;
}

/* But media inside columns must not be selectable */
.column-content img,
.column-content video,
.column-content .video-card,
.column-content .media-upload,
.column-content .media-upload *,
.column-content .video-poster-wrap,
.column-content .video-play-icon {
  -webkit-user-select: none !important;
  user-select: none !important;
}

/* Task text must stay selectable/editable */
.task-card,
.task-card .task-title,
.task-card .task-text,
.task-card .task-body,
.task-card [contenteditable="true"],
.task-foot,
.task-foot *,
.done-title {
  -webkit-user-select: text !important;
  user-select: text !important;
}

/* But task controls/images must not be selectable */
.task-card img,
.task-card video,
.task-card button,
.task-card i,
.task-card .task-image,
.task-card .task-controls,
.task-card .task-actions {
  -webkit-user-select: none !important;
  user-select: none !important;
}

/* Keep inputs/editable fields usable where text is actually edited */
[contenteditable="true"],
input[type="text"],
textarea {
  -webkit-user-select: text !important;
  user-select: text !important;
}


/* Fix: previews opened from media library must be above media library */
.image-preview-overlay {
  z-index: 2400 !important;
}

.image-preview-close {
  z-index: 2410 !important;
}

.video-preview-overlay {
  z-index: 2400 !important;
}

.video-preview-overlay > .video-preview-close,
.video-preview-close {
  z-index: 2410 !important;
}

/* Top tool buttons near columnScrollTrack */
.top-tool-buttons {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  flex: 0 0 auto;
}

/* Media button and spellcheck button same dark inactive style */
.media-library-btn,
.spellcheck-toggle-btn {
  color: #454957 !important;
  background: #191b21 !important;
}

.media-library-btn.is-open,
.spellcheck-toggle-btn:not(.is-off) {
  color: rgb(157,164,183) !important;
}

@media (max-width: 900px) {
  .top-tool-buttons {
    display: none !important;
  }
}


/* Buttons are to the right of columnScrollTrack */
.bottom-row .top-tool-buttons {
  order: 3;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  flex: 0 0 auto;
}

.bottom-row #columnScrollTrack {
  order: 2;
}

/* Reduce browser scroll jumps while editing contenteditable */
html,
body,
.column-content,
.columns,
.section-page {
  overflow-anchor: none;
}

/* Keep media/spellcheck buttons dark */
.media-library-btn,
.spellcheck-toggle-btn {
  color: #454957 !important;
  background: #191b21 !important;
}


/* Task description block between task-main and task-foot */
.task-description {
  min-height: 34px;
  margin: 10px 0 8px;
  padding: 10px 12px;
  border-radius: 12px;
  background: rgb(0 0 0 / 18%);
  color: rgb(152,158,173);
  font-size: 15px;
  font-weight: 650;
  line-height: 1.45;
  outline: none;
  overflow-wrap: anywhere;
}

.task-description:empty::before {
  content: "Описание";
  color: #454957;
}

.task-video-card {
  cursor: pointer;
}

.media-library-size {
  margin-top: 8px;
  color: #454957;
  font-size: 14px;
  font-weight: 900;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.media-library-copy {
  position: absolute;
  right: 52px;
  bottom: 10px;
  width: 36px;
  height: 36px;
  border: 0;
  border-radius: 12px;
  background: rgb(0 0 0 / 42%);
  color: rgb(157,164,183);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all .18s linear;
}

@media (hover:hover) and (pointer:fine) {
  .media-library-copy:hover {
    background: rgb(0 0 0 / 62%);
    filter: brightness(1.18);
  }
}


/* Restore earlier media library design: preview on top, meta below */
.media-library-overlay {
  z-index: 2300 !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 34px !important;
}

.media-library-box {
  width: min(1280px, calc(100vw - 68px)) !important;
  max-height: calc(100vh - 68px) !important;
  background: #242834 !important;
  border-radius: 28px !important;
  padding: 28px !important;
  overflow: hidden !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 24px !important;
}

.media-library-head {
  display: flex !important;
  align-items: flex-start !important;
  justify-content: space-between !important;
  gap: 16px !important;
}

.media-library-title {
  color: rgb(157,164,183) !important;
  font-size: 26px !important;
  line-height: 1 !important;
  font-weight: 900 !important;
  letter-spacing: .1em !important;
  text-transform: uppercase !important;
}

.media-library-size {
  margin-top: 10px !important;
  color: #5d6271 !important;
  font-size: 13px !important;
  font-weight: 900 !important;
  letter-spacing: .05em !important;
  text-transform: uppercase !important;
}

.media-library-count {
  color: rgb(157,164,183) !important;
  font-size: 18px !important;
  font-weight: 900 !important;
}

.media-library-grid {
  overflow: auto !important;
  display: grid !important;
  grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)) !important;
  gap: 18px !important;
  padding-right: 6px !important;
}

.media-library-item {
  position: relative !important;
  background: #171920 !important;
  border-radius: 12px !important;
  overflow: hidden !important;
  cursor: pointer !important;
  transition: all .18s linear !important;
  min-height: 232px !important;
}

.media-library-preview {
  width: 100% !important;
  height: 164px !important;
  aspect-ratio: auto !important;
  background: #0c0d11 !important;
  overflow: hidden !important;
}

.media-library-preview img,
.media-library-video-thumb img {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
}

.media-library-video-thumb {
  position: relative !important;
  width: 100% !important;
  height: 100% !important;
  display: grid !important;
  place-items: center !important;
  background: #0c0d11 !important;
}

.media-library-video-thumb i {
  position: absolute !important;
  color: #4c5367 !important;
  font-size: 56px !important;
}

.media-library-meta {
  padding: 14px 86px 14px 16px !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 6px !important;
  min-height: 68px !important;
}

.media-library-meta span {
  color: rgb(157,164,183) !important;
  font-size: 15px !important;
  font-weight: 900 !important;
}

.media-library-meta small {
  color: rgb(152,158,173) !important;
  font-size: 13px !important;
  font-weight: 800 !important;
}

.media-library-copy,
.media-library-delete {
  position: absolute !important;
  bottom: 14px !important;
  width: 36px !important;
  height: 36px !important;
  border: 0 !important;
  border-radius: 12px !important;
  background: rgb(0 0 0 / 42%) !important;
  color: rgb(157,164,183) !important;
  cursor: pointer !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  transition: all .18s linear !important;
}

.media-library-copy { right: 54px !important; }
.media-library-delete { right: 12px !important; }

.image-preview-overlay,
.video-preview-overlay {
  z-index: 2400 !important;
}

/* Task description block between task-main and task-foot */
.task-description {
  min-height: 34px;
  margin: 10px 0 8px;
  padding: 10px 12px;
  border-radius: 12px;
  background: rgb(0 0 0 / 18%);
  color: rgb(152,158,173);
  font-size: 15px;
  font-weight: 650;
  line-height: 1.45;
  outline: none;
  overflow-wrap: anywhere;
}

.task-description:empty::before {
  content: "Описание";
  color: #454957;
}

.task-main .task-image,
.task-main img.task-image {
  cursor: pointer;
}

@media (hover:hover) and (pointer:fine) {
  .media-library-copy:hover,
  .media-library-delete:hover {
    background: rgb(0 0 0 / 62%) !important;
    filter: brightness(1.18) !important;
  }

  .media-library-item:hover {
    filter: brightness(1.08) !important;
    transform: translateY(-1px) !important;
  }
}

@media (max-width: 900px) {
  .media-library-box {
    width: calc(100vw - 24px) !important;
    max-height: calc(100vh - 24px) !important;
    border-radius: 22px !important;
    padding: 22px !important;
  }

  .media-library-grid {
    grid-template-columns: 1fr !important;
  }
}





/* FASTLOOK_REAL_MEDIA_LIBRARY_4COLS_FIX */
.media-library-overlay {
  align-items: flex-start !important;
  justify-content: center !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  padding: 96px 34px 70px !important;
}

.media-library-box {
  width: 1230px !important;
  max-width: calc(100vw - 68px) !important;
  max-height: none !important;
  height: auto !important;
  overflow: visible !important;
  background: #242834 !important;
  border-radius: 28px !important;
  padding: 28px !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 22px !important;
}

.media-library-head {
  display: flex !important;
  align-items: flex-start !important;
  justify-content: space-between !important;
  gap: 18px !important;
  margin: 0 !important;
}

.media-library-title {
  font-size: 25px !important;
  line-height: 1 !important;
  font-weight: 900 !important;
  letter-spacing: .12em !important;
  color: rgb(157,164,183) !important;
  text-transform: uppercase !important;
}

.media-library-size {
  margin-top: 10px !important;
  color: #5d6271 !important;
  font-size: 13px !important;
  font-weight: 900 !important;
  letter-spacing: .05em !important;
  text-transform: uppercase !important;
}

.media-library-count {
  padding-top: 2px !important;
  color: rgb(157,164,183) !important;
  font-size: 18px !important;
  font-weight: 900 !important;
}

.media-library-grid {
  overflow: visible !important;
  max-height: none !important;
  height: auto !important;
  padding: 0 !important;
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 18px !important;
}

.media-library-item {
  position: relative !important;
  min-height: 0 !important;
  background: #171920 !important;
  border-radius: 12px !important;
  overflow: hidden !important;
  cursor: pointer !important;
  transition: all .18s linear !important;
}

.media-library-preview {
  width: 100% !important;
  height: 128px !important;
  aspect-ratio: auto !important;
  background: #0c0d11 !important;
  overflow: hidden !important;
}

.media-library-preview img,
.media-library-video-thumb img {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
}

.media-library-video-thumb {
  position: relative !important;
  width: 100% !important;
  height: 100% !important;
  display: grid !important;
  place-items: center !important;
  background: #0c0d11 !important;
}

.media-library-video-thumb i {
  position: absolute !important;
  color: #4c5367 !important;
  font-size: 46px !important;
}

.media-library-meta {
  min-height: 64px !important;
  padding: 12px 86px 12px 16px !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: center !important;
  gap: 5px !important;
  background: #171920 !important;
}

.media-library-meta span {
  color: rgb(157,164,183) !important;
  font-size: 14px !important;
  line-height: 1.12 !important;
  font-weight: 900 !important;
}

.media-library-meta small {
  color: rgb(152,158,173) !important;
  font-size: 12px !important;
  line-height: 1.15 !important;
  font-weight: 800 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

.media-library-copy,
.media-library-delete {
  position: absolute !important;
  bottom: 14px !important;
  width: 34px !important;
  height: 34px !important;
  border: 0 !important;
  border-radius: 12px !important;
  background: rgb(0 0 0 / 42%) !important;
  color: rgb(157,164,183) !important;
  cursor: pointer !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  transition: all .18s linear !important;
}

.media-library-copy {
  right: 52px !important;
}

.media-library-delete {
  right: 12px !important;
}

.media-library-copy i,
.media-library-delete i {
  font-size: 14px !important;
  line-height: 1 !important;
}

.media-library-close {
  position: fixed !important;
  top: 34px !important;
  right: 34px !important;
  z-index: 2310 !important;
}

.media-library-empty {
  grid-column: 1 / -1 !important;
  min-height: 160px !important;
  display: grid !important;
  place-items: center !important;
  color: rgb(152,158,173) !important;
  font-size: 18px !important;
  font-weight: 800 !important;
}

.image-preview-overlay,
.video-preview-overlay {
  z-index: 2400 !important;
}

@media (hover:hover) and (pointer:fine) {
  .media-library-item:hover {
    filter: brightness(1.08) !important;
    transform: translateY(-1px) !important;
  }

  .media-library-copy:hover,
  .media-library-delete:hover {
    background: rgb(0 0 0 / 62%) !important;
    filter: brightness(1.18) !important;
  }
}

@media (max-width: 1320px) {
  .media-library-box {
    width: 980px !important;
  }

  .media-library-grid {
    grid-template-columns: repeat(3, 1fr) !important;
  }
}

@media (max-width: 900px) {
  .media-library-overlay {
    padding: 78px 12px 28px !important;
  }

  .media-library-box {
    width: calc(100vw - 24px) !important;
    max-width: calc(100vw - 24px) !important;
    border-radius: 22px !important;
    padding: 22px !important;
  }

  .media-library-grid {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 14px !important;
  }

  .media-library-preview {
    height: 116px !important;
  }

  .media-library-title {
    font-size: 20px !important;
  }
}

@media (max-width: 560px) {
  .media-library-grid {
    grid-template-columns: 1fr !important;
  }
}


/* FASTLOOK_MEDIA_LIBRARY_PINTEREST_MASONRY */
/* Pinterest-like media library: full images, no crop, masonry columns */
.media-library-box {
  width: 1230px !important;
  max-width: calc(100vw - 68px) !important;
  max-height: none !important;
  height: auto !important;
  overflow: visible !important;
}

.media-library-grid {
  display: block !important;
  columns: 4 260px !important;
  column-gap: 18px !important;
  overflow: visible !important;
  max-height: none !important;
  height: auto !important;
  padding: 0 !important;
}

.media-library-item {
  display: inline-block !important;
  width: 100% !important;
  margin: 0 0 18px !important;
  break-inside: avoid !important;
  -webkit-column-break-inside: avoid !important;
  page-break-inside: avoid !important;
  min-height: 0 !important;
  background: #171920 !important;
  border-radius: 12px !important;
  overflow: hidden !important;
}

.media-library-preview {
  width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  aspect-ratio: auto !important;
  background: #0c0d11 !important;
  overflow: hidden !important;
}

.media-library-preview img,
.media-library-video-thumb img {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  max-height: none !important;
  object-fit: contain !important;
  object-position: center !important;
}

.media-library-video-thumb {
  position: relative !important;
  width: 100% !important;
  height: auto !important;
  min-height: 140px !important;
  display: block !important;
  background: #0c0d11 !important;
}

.media-library-video-thumb:has(img) {
  min-height: 0 !important;
}

.media-library-video-thumb i {
  position: absolute !important;
  right: 14px !important;
  top: 14px !important;
  color: #4c5367 !important;
  font-size: 34px !important;
  z-index: 2 !important;
}

.media-library-meta {
  min-height: 64px !important;
  padding: 12px 86px 12px 16px !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: center !important;
  gap: 5px !important;
  background: #171920 !important;
}

.media-library-copy,
.media-library-delete {
  bottom: 14px !important;
}

@media (max-width: 1320px) {
  .media-library-box {
    width: 980px !important;
  }

  .media-library-grid {
    columns: 3 260px !important;
  }
}

@media (max-width: 900px) {
  .media-library-grid {
    columns: 2 220px !important;
    column-gap: 14px !important;
  }

  .media-library-item {
    margin-bottom: 14px !important;
  }
}

@media (max-width: 560px) {
  .media-library-grid {
    columns: 1 !important;
  }
}


/* FASTLOOK_MEDIA_LIBRARY_SINGLE_DARK_SCROLL */
/* One scrollbar only: lock page scroll, keep media overlay scroll dark */
body.media-library-open {
  overflow: hidden !important;
}

.media-library-overlay {
  overflow-y: auto !important;
  overflow-x: hidden !important;
  scrollbar-width: thin !important;
  scrollbar-color: #454957 #0c0d11 !important;
}

.media-library-overlay::-webkit-scrollbar {
  width: 12px !important;
}

.media-library-overlay::-webkit-scrollbar-track {
  background: #0c0d11 !important;
  border-radius: 999px !important;
}

.media-library-overlay::-webkit-scrollbar-thumb {
  background: #454957 !important;
  border-radius: 999px !important;
  border: 3px solid #0c0d11 !important;
}

.media-library-overlay::-webkit-scrollbar-thumb:hover {
  background: #5d6271 !important;
}

/* Dark browser scrollbar too, for the rest of the site */
html {
  scrollbar-width: thin;
  scrollbar-color: #454957 #0c0d11;
}

html::-webkit-scrollbar,
body::-webkit-scrollbar {
  width: 12px;
}

html::-webkit-scrollbar-track,
body::-webkit-scrollbar-track {
  background: #0c0d11;
}

html::-webkit-scrollbar-thumb,
body::-webkit-scrollbar-thumb {
  background: #454957;
  border-radius: 999px;
  border: 3px solid #0c0d11;
}


/* FASTLOOK_VIDEO_PAUSE_RESUME_FIX */
.video-center-play {
  pointer-events: auto;
}

.video-center-play.is-playing {
  pointer-events: none;
}


/* FASTLOOK_VIDEO_SEEK_ZERO_FIX */


/* FASTLOOK_VIDEO_PROGRESS_FILL_OPACITY */
/* Blue seek line: 40% opacity normally, 100% on hover. Dark track stays unchanged. */
.video-preview-overlay {
  --video-fill-visible: rgb(39 112 204 / 40%);
  --video-fill-visible-hover: rgb(39 112 204 / 100%);
}

.video-controls-panel .video-progress,
.video-controls-panel .video-frame-range {
  --video-current-fill: var(--video-fill-visible);
}

.video-controls-panel .video-progress:hover,
.video-controls-panel .video-frame-range:hover {
  --video-current-fill: var(--video-fill-visible-hover);
}

.video-controls-panel .video-progress::-webkit-slider-runnable-track {
  background: linear-gradient(
    to right,
    var(--video-current-fill) 0%,
    var(--video-current-fill) calc(var(--video-progress, 0) * 1%),
    var(--video-track) calc(var(--video-progress, 0) * 1%),
    var(--video-track) 100%
  ) !important;
}

.video-controls-panel .video-frame-range::-webkit-slider-runnable-track {
  background: linear-gradient(
    to right,
    var(--video-current-fill) 0%,
    var(--video-current-fill) calc(var(--video-progress, 0) * 1%),
    var(--video-track) calc(var(--video-progress, 0) * 1%),
    var(--video-track) 100%
  ) !important;
}

.video-controls-panel .video-progress::-moz-range-progress,
.video-controls-panel .video-frame-range::-moz-range-progress {
  background: var(--video-fill-visible) !important;
}

.video-controls-panel .video-progress:hover::-moz-range-progress,
.video-controls-panel .video-frame-range:hover::-moz-range-progress {
  background: var(--video-fill-visible-hover) !important;
}


/* FASTLOOK_VIDEO_PROGRESS_SMOOTH_HOVER */
/* Requested fill color + smooth hover behavior */
.video-preview-overlay {
  --video-current-fill: rgb(47 77 116 / 63%);
  --video-current-fill-hover: rgb(47 77 116 / 100%);
}

.video-controls-panel .video-progress,
.video-controls-panel .video-frame-range {
  --video-current-fill-active: var(--video-current-fill);
  transition: all 0.18s linear !important;
}

.video-controls-panel .video-progress:hover,
.video-controls-panel .video-frame-range:hover {
  --video-current-fill-active: var(--video-current-fill-hover);
  transition: all 0.18s linear !important;
}

.video-controls-panel .video-progress::-webkit-slider-runnable-track,
.video-controls-panel .video-frame-range::-webkit-slider-runnable-track {
  transition: all 0.18s linear !important;
  background: linear-gradient(
    to right,
    var(--video-current-fill-active) 0%,
    var(--video-current-fill-active) calc(var(--video-progress, 0) * 1%),
    var(--video-track) calc(var(--video-progress, 0) * 1%),
    var(--video-track) 100%
  ) !important;
}

.video-controls-panel .video-progress::-moz-range-progress,
.video-controls-panel .video-frame-range::-moz-range-progress {
  transition: all 0.18s linear !important;
  background: var(--video-current-fill-active) !important;
}

.video-controls-panel .video-progress:hover::-moz-range-progress,
.video-controls-panel .video-frame-range:hover::-moz-range-progress {
  background: var(--video-current-fill-hover) !important;
}


/* FASTLOOK_MEDIA_DEDUPE_LIBRARY_FIX */


/* FASTLOOK_MEDIA_OPACITY_RESTORED */
/* Default media visibility: 100%. No global opacity .82 for columns/tasks. */
.column-content img:not(.has-custom-opacity),
.column-content img.video-card:not(.has-custom-opacity),
.column-content img[data-video-src]:not(.has-custom-opacity),
.task-main img:not(.has-custom-opacity),
.task-image:not(.has-custom-opacity),
.video-poster:not(.has-custom-opacity) {
  opacity: 1 !important;
}

.column-content img.has-custom-opacity,
.column-content img.video-card.has-custom-opacity,
.column-content img[data-video-src].has-custom-opacity,
.task-main img.has-custom-opacity,
.task-image.has-custom-opacity,
.video-poster.has-custom-opacity {
  opacity: var(--media-opacity, 1) !important;
}

/* Context opacity slider */
.ctx .ctx-opacity {
  display: grid !important;
  grid-template-columns: 18px minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
  min-height: 62px;
  cursor: default;
}

.ctx .ctx-opacity b {
  color: rgba(242,243,245,.72);
  font-size: 13px;
  font-weight: 900;
}

.ctx .ctx-opacity input[type="range"] {
  grid-column: 1 / -1;
  width: 100%;
  height: 18px;
  margin: 2px 0 0;
  accent-color: #2f4d74;
  cursor: pointer;
}


/* FASTLOOK_TASK_OPACITY_MENU_FIX */


/* FASTLOOK_COLUMN_TOP_TITLE_SYNC */
:root {
  --column-top-title-size: 22px;
  --column-top-title-color: rgb(157,164,183);
  --column-top-title-weight: 800;
  --column-top-title-letter-spacing: .06em;
  --column-top-title-margin-top: 16px;
  --column-top-title-margin-bottom: 22px;
  --column-top-title-transform: uppercase;
}

.column-top-title {
  width: 100%;
  margin: var(--column-top-title-margin-top) 0 var(--column-top-title-margin-bottom);
  color: var(--column-top-title-color);
  font-size: var(--column-top-title-size);
  font-weight: var(--column-top-title-weight);
  letter-spacing: var(--column-top-title-letter-spacing);
  line-height: 1.15;
  text-align: center;
  text-transform: var(--column-top-title-transform);
  outline: none;
  cursor: text;
  user-select: text !important;
  -webkit-user-select: text !important;
}

.column-top-title:empty::before {
  content: "НАЗВАНИЕ";
  color: #454957;
}

@media (max-width: 900px) {
  .column-top-title {
    font-size: calc(var(--column-top-title-size) - 2px);
    margin-top: 14px;
    margin-bottom: 18px;
  }
}


/* FASTLOOK_TEXT_SELECTION_COLUMNS_TASKS_FIX */
/* Default: UI/media must not be accidentally selected */
html,
body,
.app,
.top-project,
.section-page,
.section-topbar,
.tabs,
.tab,
.add-tab,
.columns,
.column,
.section-metrics,
.add-column,
.ctx,
.ctx *,
.media-library-overlay,
.media-library-overlay *,
.video-preview-overlay,
.video-preview-overlay *,
.image-preview-overlay,
.image-preview-overlay *,
button,
i,
img,
video,
.video-card,
.task-image,
.media-upload,
.progress-line,
.scroll-track,
.scroll-thumb {
  -webkit-user-select: none !important;
  user-select: none !important;
}

/* Allow text selection only in columns */
.column-content,
.column-content p,
.column-content div:not(.video-card):not(.media-upload):not(.media-upload *),
.column-content span,
.column-content br,
.column-content .edit-slot,
.column-content .edit-tail,
.column-top-title {
  -webkit-user-select: text !important;
  user-select: text !important;
}

/* Allow text selection only in tasks */
.task-card,
.task-main,
.task-main:not(:has(.task-image)),
.task-description,
.task-description *,
.task-foot,
.task-foot *,
.done-title,
[data-task],
[data-task-description],
[contenteditable="true"],
input[type="text"],
textarea {
  -webkit-user-select: text !important;
  user-select: text !important;
}

/* But images/videos inside columns and tasks must never be selected */
.column-content img,
.column-content video,
.column-content .video-card,
.column-content [data-video-src],
.column-content .media-upload,
.column-content .media-upload *,
.task-card img,
.task-card video,
.task-card .task-image,
.task-card .task-video-card,
.task-card button,
.task-card i {
  -webkit-user-select: none !important;
  user-select: none !important;
}

/* Keep touch/browser highlight off for media and buttons */
img,
video,
button,
.video-card,
.task-image {
  -webkit-touch-callout: none;
  -webkit-tap-highlight-color: transparent;
}


/* FASTLOOK_IMAGE_LEFT_CARET_ALL_FIX */
/* Photos now get the same left-side caret behavior as video cards */
.column-content .image-side-slot {
  display: block;
  min-height: 0 !important;
  height: 0 !important;
  line-height: 1.2 !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: visible !important;
  caret-color: rgb(157,164,183);
}

.column-content .image-side-slot:focus {
  outline: none !important;
}

.column-content .image-side-before {
  transform: translateY(1px);
}

.column-content .image-side-after {
  transform: translateY(-1px);
}


/* FASTLOOK_IMAGE_CARET_DEEP_FIX_TITLE_VARS */
:root {
  --column-top-title-size: 19px;
  --column-top-title-color: rgb(157, 164, 183);
  --column-top-title-weight: 700;
  --column-top-title-letter-spacing: .06em;
  --column-top-title-margin-top: 25px;
  --column-top-title-margin-bottom: 20px;
}

/* Photos use the same zero-height caret slots as videos */
.column-content .image-side-slot {
  display: block;
  min-height: 0 !important;
  height: 0 !important;
  line-height: 1.2 !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: visible !important;
  caret-color: rgb(157,164,183);
}

.column-content .image-side-slot:focus {
  outline: none !important;
}

.column-content .image-side-before {
  transform: translateY(1px);
}

.column-content .image-side-after {
  transform: translateY(-1px);
}


/* FASTLOOK_ARROW_SKIP_MEDIA_FIX */
/* Arrow navigation should skip over image/video instead of getting stuck before it. */


/* FASTLOOK_COLUMN_NORMALIZE_VARIANT1 */
:root {
  --column-top-title-size: 19px;
  --column-top-title-color: rgb(157, 164, 183);
  --column-top-title-weight: 700;
  --column-top-title-letter-spacing: .06em;
  --column-top-title-margin-top: 25px;
  --column-top-title-margin-bottom: 20px;
}


/* FASTLOOK_SAFE_NORMALIZE_SELECTION_FIX */
/* The editor must not rebuild DOM while typing/clicking; text selection is allowed only in text zones. */

/* Default: interface/media not selectable */
.app,
.top-project,
.section-page,
.section-topbar,
.tabs,
.tab,
.add-tab,
.columns,
.column,
.section-metrics,
.add-column,
.ctx,
.ctx *,
.media-library-overlay,
.media-library-overlay *,
.video-preview-overlay,
.video-preview-overlay *,
.image-preview-overlay,
.image-preview-overlay *,
button,
i,
img,
video,
.video-card,
.task-image,
.media-upload,
.progress-line,
.scroll-track,
.scroll-thumb {
  -webkit-user-select: none !important;
  user-select: none !important;
}

/* Column text must be selectable */
.column-content,
.column-content *,
.column-top-title {
  -webkit-user-select: text !important;
  user-select: text !important;
}

/* Task text must be selectable */
.task-card,
.task-card *,
.task-main,
.task-description,
.task-description *,
[data-task],
[data-task-description],
[contenteditable="true"],
input,
textarea {
  -webkit-user-select: text !important;
  user-select: text !important;
}

/* Media inside text zones must NOT be selectable */
.column-content img,
.column-content video,
.column-content .video-card,
.column-content [data-video-src],
.column-content .media-upload,
.column-content .media-upload *,
.task-card img,
.task-card video,
.task-card .task-image,
.task-card .task-video-card,
.task-card button,
.task-card i {
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-user-drag: none;
  -webkit-touch-callout: none;
  -webkit-tap-highlight-color: transparent;
}

/* Keep requested column title variables */
:root {
  --column-top-title-size: 19px;
  --column-top-title-color: rgb(157, 164, 183);
  --column-top-title-weight: 700;
  --column-top-title-letter-spacing: .06em;
  --column-top-title-margin-top: 25px;
  --column-top-title-margin-bottom: 20px;
}


/* FASTLOOK_IMAGE_CARDS_LIKE_VIDEO */
.column-content img.image-card {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  margin: 20px 0 24px !important;
  border-radius: 4px !important;
  cursor: pointer !important;
  object-fit: contain !important;
  -webkit-user-drag: none !important;
  -webkit-user-select: none !important;
  user-select: none !important;
  pointer-events: auto !important;
  position: relative;
  z-index: 2;
}

.column-content img.image-card.dragging-image {
  opacity: .38 !important;
  filter: brightness(1.25);
  cursor: grabbing !important;
  pointer-events: none !important;
}

.column-content .image-side-slot {
  display: block;
  min-height: 0 !important;
  height: 0 !important;
  line-height: 1.2 !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: visible !important;
  caret-color: rgb(157,164,183);
}

.column-content .image-side-slot:focus {
  outline: none !important;
}

.column-content .image-side-before {
  transform: translateY(1px);
}

.column-content .image-side-after {
  transform: translateY(-1px);
}

/* Text selection final override */
.column-content,
.column-content .edit-slot,
.column-content .edit-tail,
.column-content p,
.column-content div:not(.media-upload),
.column-content span,
.column-top-title,
.task-main,
.task-description,
.task-description *,
[data-task],
[data-task-description],
[contenteditable="true"] {
  -webkit-user-select: text !important;
  user-select: text !important;
}

.column-content img,
.column-content img.image-card,
.column-content img.video-card,
.column-content [data-video-src],
.task-image {
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-user-drag: none !important;
}

/* Keep requested column title variables */
:root {
  --column-top-title-size: 19px;
  --column-top-title-color: rgb(157, 164, 183);
  --column-top-title-weight: 700;
  --column-top-title-letter-spacing: .06em;
  --column-top-title-margin-top: 25px;
  --column-top-title-margin-bottom: 20px;
}


/* FASTLOOK_MEDIA_PARAGRAPH_GAPS_NO_BACKSPACE_DELETE */
/* Instead of zero-height hidden side slots, media now has real editable paragraph gaps. */
.column-content .media-gap-slot,
.column-content .image-side-slot,
.column-content .video-side-slot {
  display: block !important;
  min-height: 38px !important;
  height: auto !important;
  line-height: 1.85 !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: visible !important;
  caret-color: rgb(157,164,183) !important;
  cursor: text !important;
  user-select: text !important;
  -webkit-user-select: text !important;
  transform: none !important;
}

.column-content .media-gap-slot:focus,
.column-content .image-side-slot:focus,
.column-content .video-side-slot:focus {
  outline: none !important;
}

/* Media itself remains normal, not selectable, and is deleted only through right menu. */
.column-content img.image-card,
.column-content img.video-card,
.column-content img[data-video-src] {
  user-select: none !important;
  -webkit-user-select: none !important;
  -webkit-user-drag: none !important;
}

/* Keep media spacing predictable; the editable gap is the paragraph-sized click zone. */
.column-content img.image-card,
.column-content img.video-card,
.column-content img[data-video-src] {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

/* Restore text selection in actual text zones. */
.column-content,
.column-content .edit-slot,
.column-content .edit-tail,
.column-content .media-gap-slot,
.column-content p,
.column-content div:not(.media-upload),
.column-content span,
.column-top-title,
.task-main,
.task-description,
.task-description *,
[data-task],
[data-task-description],
[contenteditable="true"] {
  -webkit-user-select: text !important;
  user-select: text !important;
}

/* But not media/buttons. */
.column-content img,
.column-content video,
.task-image,
button,
i {
  -webkit-user-select: none !important;
  user-select: none !important;
}

/* If a floating video play icon exists, let layout resync more often by not blocking pointer/selection. */


/* Keep requested column title variables */
:root {
  --column-top-title-size: 19px;
  --column-top-title-color: rgb(157, 164, 183);
  --column-top-title-weight: 700;
  --column-top-title-letter-spacing: .06em;
  --column-top-title-margin-top: 25px;
  --column-top-title-margin-bottom: 20px;
}


/* FASTLOOK_ARROW_RESPECT_TEXT_AND_SELECTION */
/* Arrow keys: JS only jumps over media from EMPTY media-gap slots. Text slots are handled by browser. */

/* Text must be selectable inside columns and tasks */
.column-content,
.column-content *,
.column-content .edit-slot,
.column-content .edit-tail,
.column-content .media-gap-slot,
.column-content p,
.column-content div,
.column-content span,
.column-top-title,
.task-card,
.task-card *,
.task-main,
.task-description,
.task-description *,
[data-task],
[data-task-description],
[contenteditable="true"],
input,
textarea {
  -webkit-user-select: text !important;
  user-select: text !important;
}

/* Media and controls must not be selectable */
.column-content img,
.column-content video,
.column-content .image-card,
.column-content .video-card,
.column-content [data-video-src],
.column-content .media-upload,
.column-content .media-upload *,
.task-card img,
.task-card video,
.task-card .task-image,
.task-card .task-video-card,
.task-card button,
.task-card i,
button,
i,
.video-corner-play-floating,
.media-library-overlay,
.media-library-overlay *,
.video-preview-overlay,
.video-preview-overlay *,
.image-preview-overlay,
.image-preview-overlay * {
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-user-drag: none !important;
}

/* Keep editable media gaps selectable/clickable even if surrounded by non-selectable media */
.column-content .media-gap-slot,
.column-content .image-side-slot,
.column-content .video-side-slot {
  -webkit-user-select: text !important;
  user-select: text !important;
  cursor: text !important;
}

/* Keep requested column title variables */
:root {
  --column-top-title-size: 19px;
  --column-top-title-color: rgb(157, 164, 183);
  --column-top-title-weight: 700;
  --column-top-title-letter-spacing: .06em;
  --column-top-title-margin-top: 25px;
  --column-top-title-margin-bottom: 20px;
}


/* FASTLOOK_TEXT_BLOCKS_SELECTION_VIDEO_ICON_FIX */
/* Text selection: final strongest override */
.column-content,
.column-content *,
.column-content .edit-slot,
.column-content .edit-tail,
.column-content .media-gap-slot,
.column-content p,
.column-content div,
.column-content span,
.column-top-title,
.task-card,
.task-card *,
.task-main,
.task-description,
.task-description *,
[data-task],
[data-task-description],
[contenteditable="true"],
input,
textarea {
  -webkit-user-select: text !important;
  user-select: text !important;
}

/* Media/UI not selectable */
.column-content img,
.column-content video,
.column-content .image-card,
.column-content .video-card,
.column-content [data-video-src],
.column-content .media-upload,
.column-content .media-upload *,
.task-card img,
.task-card video,
.task-card .task-image,
.task-card .task-video-card,
.task-card button,
.task-card i,
button,
i,
.media-library-overlay,
.media-library-overlay *,
.video-preview-overlay,
.video-preview-overlay *,
.image-preview-overlay,
.image-preview-overlay * {
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-user-drag: none !important;
}

/* Ordinary paragraph-sized editable zones around media */
.column-content .media-gap-slot,
.column-content .image-side-slot,
.column-content .video-side-slot {
  min-height: 38px !important;
  height: auto !important;
  line-height: 1.85 !important;
  margin: 0 !important;
  padding: 0 !important;
  transform: none !important;
  cursor: text !important;
  -webkit-user-select: text !important;
  user-select: text !important;
}

/* Keep requested column title variables */
:root {
  --column-top-title-size: 19px;
  --column-top-title-color: rgb(157, 164, 183);
  --column-top-title-weight: 700;
  --column-top-title-letter-spacing: .06em;
  --column-top-title-margin-top: 25px;
  --column-top-title-margin-bottom: 20px;
}


/* FASTLOOK_TEXT_WRAP_SPACES_FIX */
/* Text inside column/task editable blocks should behave like normal editable text:
   - typed spaces are preserved
   - long words/numbers can break at the edge instead of dragging the whole word to next line
   - next typed character can continue on the next line naturally
*/
.column-content,
.column-content .edit-slot,
.column-content .edit-tail,
.column-content .media-gap-slot,
.column-content p,
.column-content div:not(.media-upload),
.column-content span,
.task-main,
.task-description,
.task-description *,
[data-task],
[data-task-description],
[contenteditable="true"] {
  white-space: pre-wrap !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
}

/* Media/buttons should not inherit text wrapping behavior */
.column-content img,
.column-content video,
.column-content .image-card,
.column-content .video-card,
.column-content [data-video-src],
.task-image,
button,
i {
  white-space: normal !important;
  overflow-wrap: normal !important;
  word-break: normal !important;
}

/* Keep text selectable */
.column-content,
.column-content *,
.task-main,
.task-description,
.task-description *,
[contenteditable="true"] {
  -webkit-user-select: text !important;
  user-select: text !important;
}

/* But media is not selectable */
.column-content img,
.column-content video,
.task-image,
button,
i {
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-user-drag: none !important;
}

/* Keep requested column title variables */
:root {
  --column-top-title-size: 19px;
  --column-top-title-color: rgb(157, 164, 183);
  --column-top-title-weight: 700;
  --column-top-title-letter-spacing: .06em;
  --column-top-title-margin-top: 25px;
  --column-top-title-margin-bottom: 20px;
}


/* FASTLOOK_SINGLE_TEXT_GAP_BELOW_MEDIA */
/* Simpler model: media has only ONE text layer below it. No top/before text layer. */
.column-content .video-side-before,
.column-content .image-side-before {
  display: none !important;
}

.column-content .media-gap-slot,
.column-content .media-after-slot,
.column-content .edit-slot,
.column-content .edit-tail {
  min-height: 38px !important;
  height: auto !important;
  line-height: 1.85 !important;
  margin: 0 !important;
  padding: 0 !important;
  transform: none !important;
  white-space: pre-wrap !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
  cursor: text !important;
  -webkit-user-select: text !important;
  user-select: text !important;
}

/* Text selection in editable text areas */
.column-content,
.column-content *,
.column-top-title,
.task-card,
.task-card *,
.task-main,
.task-description,
.task-description *,
[contenteditable="true"],
input,
textarea {
  -webkit-user-select: text !important;
  user-select: text !important;
}

/* Media/UI stays non-selectable */
.column-content img,
.column-content video,
.column-content .image-card,
.column-content .video-card,
.column-content [data-video-src],
.task-image,
button,
i,
.media-library-overlay,
.media-library-overlay *,
.video-preview-overlay,
.video-preview-overlay *,
.image-preview-overlay,
.image-preview-overlay * {
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-user-drag: none !important;
}

/* Media spacing is controlled by the single text gap below it */
.column-content img.image-card,
.column-content img.video-card,
.column-content img[data-video-src],
.column-content img {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

/* Keep requested column title variables */
:root {
  --column-top-title-size: 19px;
  --column-top-title-color: rgb(157, 164, 183);
  --column-top-title-weight: 700;
  --column-top-title-letter-spacing: .06em;
  --column-top-title-margin-top: 25px;
  --column-top-title-margin-bottom: 20px;
}


/* FASTLOOK_SINGLE_P_TEXT_BLOCK_FIX */
/* One normal paragraph block below media. No new edit-slot per space/line. */
.column-content p.media-text-block,
.column-content .media-text-block {
  display: block !important;
  min-height: 38px !important;
  height: auto !important;
  line-height: 1.85 !important;
  margin: 0 !important;
  padding: 0 !important;
  transform: none !important;
  white-space: pre-wrap !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
  cursor: text !important;
  -webkit-user-select: text !important;
  user-select: text !important;
  outline: none !important;
}

/* Old before zones are not used anymore */
.column-content .video-side-before,
.column-content .image-side-before {
  display: none !important;
}

/* Text selection */
.column-content,
.column-content p,
.column-content p *,
.column-content .media-text-block,
.column-content .media-text-block *,
.column-top-title,
.task-main,
.task-description,
.task-description *,
[contenteditable="true"],
input,
textarea {
  -webkit-user-select: text !important;
  user-select: text !important;
}

/* Media/UI not selectable */
.column-content img,
.column-content video,
.column-content .image-card,
.column-content .video-card,
.column-content [data-video-src],
.task-image,
button,
i {
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-user-drag: none !important;
}

/* Keep requested column title variables */
:root {
  --column-top-title-size: 19px;
  --column-top-title-color: rgb(157, 164, 183);
  --column-top-title-weight: 700;
  --column-top-title-letter-spacing: .06em;
  --column-top-title-margin-top: 25px;
  --column-top-title-margin-bottom: 20px;
}


/* FASTLOOK_SIMPLE_MEDIA_P_EDITOR */
/*
Simple model:
  img.image-card / img.video-card
  p.media-text-block below it
No before slots, no side slots, no edit-slot per line/space.
*/
.column-content .edit-slot:not(.media-text-block),
.column-content .edit-tail,
.column-content .media-gap-slot:not(.media-text-block),
.column-content .image-side-slot,
.column-content .video-side-slot,
.column-content .video-side-before,
.column-content .image-side-before,
.column-content .video-side-after,
.column-content .image-side-after {
  display: none !important;
}

.column-content p.media-text-block {
  display: block !important;
  min-height: 38px !important;
  height: auto !important;
  line-height: 1.85 !important;
  margin: 0 !important;
  padding: 0 !important;
  outline: none !important;
  white-space: pre-wrap !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
  cursor: text !important;
  -webkit-user-select: text !important;
  user-select: text !important;
}

.column-content img.image-card,
.column-content img.video-card,
.column-content img[data-video-src],
.column-content img {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  margin: 0 !important;
  user-select: none !important;
  -webkit-user-select: none !important;
  -webkit-user-drag: none !important;
  cursor: pointer !important;
}

.column-content,
.column-content p.media-text-block,
.column-content p.media-text-block *,
.column-top-title,
.task-main,
.task-description,
.task-description *,
[contenteditable="true"],
input,
textarea {
  -webkit-user-select: text !important;
  user-select: text !important;
}

.column-content img,
.column-content video,
.task-image,
button,
i,
.media-library-overlay,
.media-library-overlay *,
.video-preview-overlay,
.video-preview-overlay *,
.image-preview-overlay,
.image-preview-overlay * {
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-user-drag: none !important;
}

:root {
  --column-top-title-size: 19px;
  --column-top-title-color: rgb(157, 164, 183);
  --column-top-title-weight: 700;
  --column-top-title-letter-spacing: .06em;
  --column-top-title-margin-top: 25px;
  --column-top-title-margin-bottom: 20px;
}


/* FASTLOOK_SIMPLE_P_NO_NESTED_CONTENTEDITABLE */
/*
Fix: .column-content is the only contenteditable editor.
p.media-text-block is a normal paragraph inside it.
No nested contenteditable => space/selection behave like task-main.
*/
.column-content p.media-text-block {
  display: block !important;
  min-height: 38px !important;
  height: auto !important;
  line-height: 1.85 !important;
  margin: 0 !important;
  padding: 0 !important;
  outline: none !important;
  white-space: pre-wrap !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
  cursor: text !important;
  -webkit-user-select: text !important;
  user-select: text !important;
}

.column-content p.media-text-block[contenteditable] {
  -webkit-user-modify: read-write-plaintext-only;
}

.column-content,
.column-content p,
.column-content p *,
.column-content p.media-text-block,
.column-content p.media-text-block *,
.column-top-title,
.task-main,
.task-description,
.task-description *,
[contenteditable="true"],
input,
textarea {
  -webkit-user-select: text !important;
  user-select: text !important;
}

.column-content img,
.column-content video,
.task-image,
button,
i {
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-user-drag: none !important;
}

:root {
  --column-top-title-size: 19px;
  --column-top-title-color: rgb(157, 164, 183);
  --column-top-title-weight: 700;
  --column-top-title-letter-spacing: .06em;
  --column-top-title-margin-top: 25px;
  --column-top-title-margin-bottom: 20px;
}


/* FASTLOOK_COLUMN_PLAIN_MEDIA_TEXT_CLEAN */
/*
Final simple column editor:
  media image/video
  one normal <p class="media-text-block"> below it
No edit-slot/side-slot/media-gap system.
*/
.column-content .edit-slot:not(.media-text-block),
.column-content .edit-tail,
.column-content .media-gap-slot:not(.media-text-block),
.column-content .media-after-slot:not(.media-text-block),
.column-content .image-side-slot,
.column-content .video-side-slot,
.column-content .image-side-before,
.column-content .video-side-before,
.column-content .image-side-after,
.column-content .video-side-after {
  display: none !important;
}

.column-content p.media-text-block {
  display: block !important;
  min-height: 38px !important;
  line-height: 1.85 !important;
  margin: 0 !important;
  padding: 0 !important;
  outline: none !important;
  white-space: pre-wrap !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
  cursor: text !important;
  -webkit-user-select: text !important;
  user-select: text !important;
}

.column-content,
.column-content p,
.column-content p *,
.column-content div,
.column-content span,
.column-top-title,
.task-main,
.task-description,
.task-description *,
[contenteditable="true"],
input,
textarea {
  -webkit-user-select: text !important;
  user-select: text !important;
}

.column-content img,
.column-content video,
.column-content .image-card,
.column-content .video-card,
.column-content [data-video-src],
.task-image,
button,
i,
.media-library-overlay,
.media-library-overlay *,
.video-preview-overlay,
.video-preview-overlay *,
.image-preview-overlay,
.image-preview-overlay * {
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-user-drag: none !important;
}

.column-content img.image-card,
.column-content img.video-card,
.column-content img[data-video-src],
.column-content > img {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  margin: 0 !important;
  cursor: pointer !important;
}

.column-content img:not(.has-custom-opacity),
.task-image:not(.has-custom-opacity) {
  opacity: 1 !important;
}

:root {
  --column-top-title-size: 19px;
  --column-top-title-color: rgb(157, 164, 183);
  --column-top-title-weight: 700;
  --column-top-title-letter-spacing: .06em;
  --column-top-title-margin-top: 25px;
  --column-top-title-margin-bottom: 20px;
}


/* FASTLOOK_PLAIN_TEXT_AFTER_MEDIA_NO_MEDIA_BLOCKS */
/*
There is no special media-text-block anymore.
After media there is just normal editable text in .column-content,
the same way old normal text worked.
*/

/* Kill old service slot system visually */
.column-content .edit-slot,
.column-content .edit-tail,
.column-content .media-gap-slot,
.column-content .media-after-slot,
.column-content .media-text-block,
.column-content .image-side-slot,
.column-content .video-side-slot,
.column-content .image-side-before,
.column-content .video-side-before,
.column-content .image-side-after,
.column-content .video-side-after {
  display: block !important;
  min-height: 0 !important;
  height: auto !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* Normal text in column */
.column-content,
.column-content div,
.column-content p,
.column-content span,
.column-content br,
.column-top-title {
  white-space: pre-wrap !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
  -webkit-user-select: text !important;
  user-select: text !important;
}

/* Media */
.column-content img.image-card,
.column-content img.video-card,
.column-content img[data-video-src],
.column-content > img {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  margin: 0 !important;
  cursor: pointer !important;
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-user-drag: none !important;
}

/* Media/UI not selectable */
.column-content img,
.column-content video,
.task-image,
button,
i,
.media-library-overlay,
.media-library-overlay *,
.video-preview-overlay,
.video-preview-overlay *,
.image-preview-overlay,
.image-preview-overlay * {
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-user-drag: none !important;
}

/* Text selectable */
.task-main,
.task-description,
.task-description *,
[contenteditable="true"],
input,
textarea {
  -webkit-user-select: text !important;
  user-select: text !important;
}

.column-content img:not(.has-custom-opacity),
.task-image:not(.has-custom-opacity) {
  opacity: 1 !important;
}

:root {
  --column-top-title-size: 19px;
  --column-top-title-color: rgb(157, 164, 183);
  --column-top-title-weight: 700;
  --column-top-title-letter-spacing: .06em;
  --column-top-title-margin-top: 25px;
  --column-top-title-margin-bottom: 20px;
}


/* FASTLOOK_MIGRATE_PLAIN_COLUMN_CONTENT */
/*
Real migration:
Old saved HTML is rebuilt into only:
  <p>text</p>
  <img class="image-card">
  <p><br></p>
  <img class="video-card" data-video-src="...">
  <p><br></p>
No media-text-block/edit-slot/media-gap/side-slot classes are used.
*/

/* Hide any legacy node if browser still shows it before migration */
.column-content .edit-slot,
.column-content .edit-tail,
.column-content .media-gap-slot,
.column-content .media-after-slot,
.column-content .media-text-block,
.column-content .image-side-slot,
.column-content .video-side-slot,
.column-content .image-side-before,
.column-content .video-side-before,
.column-content .image-side-after,
.column-content .video-side-after {
  display: block !important;
}

/* Normal text */
.column-content,
.column-content p,
.column-content div,
.column-content span,
.column-top-title {
  white-space: pre-wrap !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
  -webkit-user-select: text !important;
  user-select: text !important;
}

.column-content p {
  margin: 0 0 .9em !important;
  min-height: 1.85em;
  line-height: 1.85;
}

/* Media */
.column-content > img.image-card,
.column-content > img.video-card,
.column-content > img[data-video-src] {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  margin: 0 !important;
  cursor: pointer !important;
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-user-drag: none !important;
}

.column-content img:not(.has-custom-opacity),
.task-image:not(.has-custom-opacity) {
  opacity: 1 !important;
}

.column-content img,
.column-content video,
.task-image,
button,
i,
.media-library-overlay,
.media-library-overlay *,
.video-preview-overlay,
.video-preview-overlay *,
.image-preview-overlay,
.image-preview-overlay * {
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-user-drag: none !important;
}

.task-main,
.task-description,
.task-description *,
[contenteditable="true"],
input,
textarea {
  -webkit-user-select: text !important;
  user-select: text !important;
}

:root {
  --column-top-title-size: 19px;
  --column-top-title-color: rgb(157, 164, 183);
  --column-top-title-weight: 700;
  --column-top-title-letter-spacing: .06em;
  --column-top-title-margin-top: 25px;
  --column-top-title-margin-bottom: 20px;
}


/* FASTLOOK_DRAGGED_COLUMN_IMAGE_REFERENCE_FIX */


/* FASTLOOK_COLUMN_ENTER_BR_TEXT_BLOCK */
/*
Enter inside .column-content inserts <br>, not new <p>.
Text after media should be one div.column-text-block with <br> lines.
*/
.column-content p {
  margin: 0 !important;
}

.column-content .column-text-block,
.column-content div.column-text-block {
  display: block !important;
  min-height: 1.85em !important;
  line-height: 1.85 !important;
  margin: 0 0 .9em !important;
  padding: 0 !important;
  white-space: pre-wrap !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
  -webkit-user-select: text !important;
  user-select: text !important;
}

.column-content,
.column-content div,
.column-content span,
.column-content br,
.column-top-title {
  -webkit-user-select: text !important;
  user-select: text !important;
}

.column-content img,
.column-content video,
.column-content .image-card,
.column-content .video-card,
.column-content [data-video-src] {
  -webkit-user-select: none !important;
  user-select: none !important;
  -webkit-user-drag: none !important;
}

:root {
  --column-top-title-size: 19px;
  --column-top-title-color: rgb(157, 164, 183);
  --column-top-title-weight: 700;
  --column-top-title-letter-spacing: .06em;
  --column-top-title-margin-top: 25px;
  --column-top-title-margin-bottom: 20px;
}


/* Change only these values. JS reads these exact variables from this layer. */









/* FASTLOOK_VIDEO_ICON_CSS_WRAPPER */
/*
No JS overlay. The icon is normal HTML inside .video-card-wrap:
<span class="video-card-wrap">
  <img class="video-card">
  <i class="fa-solid fa-play video-card-play"></i>
</span>

Move it only here:
*/
.video-card-wrap {
  --video-play-top: 25px;
  --video-play-right: 15px;
  --video-play-size: 30px;
  --video-play-color: #454957;

  position: relative !important;
  display: block !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  line-height: 0 !important;
  user-select: none !important;
  -webkit-user-select: none !important;
}

.video-card-wrap .video-card {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  margin: 0 !important;
  cursor: pointer !important;
  user-select: none !important;
  -webkit-user-select: none !important;
  -webkit-user-drag: none !important;
}

.video-card-wrap .video-card-play {
  position: absolute !important;
  top: var(--video-play-top) !important;
  right: var(--video-play-right) !important;
  z-index: 2 !important;
  color: var(--video-play-color) !important;
  font-size: var(--video-play-size) !important;
  line-height: 1 !important;
  pointer-events: none !important;
  text-shadow: none !important;
  filter: none !important;
  background: transparent !important;
}

/* Kill old JS overlay if old DOM remains from cache */
.column-video-overlays,
.video-corner-play-floating {
  display: none !important;
}


/* FASTLOOK_CONTEXT_MENU_REBIND_AFTER_DELETE_FIX */
.video-card-wrap {
  --video-play-top: 25px;
  --video-play-right: 30px;
  --video-play-size: 30px;
  --video-play-color: #454957;
}


/* FASTLOOK_TASK_IMAGE_FRAME_PERF_FIX */
/*
Task media must fill task-main edge-to-edge.
The visible top/bottom bars were caused by .task-main padding/min-height/background
combined with later generic img rules.
*/
.task-main:has(> img.task-image) {
  padding: 0 !important;
  min-height: 0 !important;
  height: auto !important;
  line-height: 0 !important;
  background: transparent !important;
  overflow: hidden !important;
  border-radius: 12px !important;
}

.task-main > img.task-image,
.task-main > img.task-video-card {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  object-fit: contain !important;
  opacity: var(--media-opacity, 1) !important;
  border-radius: 0 !important;
  vertical-align: top !important;
}

/* If old browser fails :has(), this still removes inherited whitespace around media */
.task-main img.task-image {
  display: block !important;
  margin: 0 !important;
  padding: 0 !important;
  vertical-align: top !important;
}

/* Reduce avoidable paint/GPU work from old accumulated hover/filter/transition rules. */
.media-library-item,
.column-content img,
.task-image,
.video-card-wrap,
.video-card-wrap .video-card {
  transition: none !important;
  filter: none;
}

/* Keep requested video icon position */
.video-card-wrap {
  --video-play-top: 25px;
  --video-play-right: 30px;
  --video-play-size: 30px;
  --video-play-color: #454957;
}


/* FASTLOOK_LOCAL_EDIT_MODE_VIEW_PAN */
.top-tool-buttons {
  display: flex;
  align-items: center;
  gap: 10px;
}

.edit-mode-toggle-btn {
  flex: 0 0 58px;
  width: 58px;
  height: 42px;
  border: 0;
  border-radius: 16px;
  background: #191b21;
  color: #454957;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  font-size: 18px;
}

.edit-mode-toggle-btn.is-on {
  color: rgb(157, 164, 183);
  background: #242834;
}

.edit-mode-toggle-btn.is-off {
  color: #454957;
  background: #191b21;
}

body.edit-mode-off [contenteditable="true"] {
  caret-color: transparent !important;
}

body.edit-mode-off .column-content,
body.edit-mode-off .column-top-title,
body.edit-mode-off .project-title,
body.edit-mode-off .project-url-edit,
body.edit-mode-off .section-title,
body.edit-mode-off .tab,
body.edit-mode-off .task-main,
body.edit-mode-off .task-description {
  cursor: default !important;
}

body.edit-mode-off img,
body.edit-mode-off .video-card-wrap,
body.edit-mode-off .task-image {
  cursor: pointer !important;
}

body.edit-mode-off #addColumnBtn,
body.edit-mode-off #addTaskBtn,
body.edit-mode-off #addTabBtn,
body.edit-mode-off .project-url-ok,
body.edit-mode-off [data-toggle-status],
body.edit-mode-off .media-library-delete,
body.edit-mode-off .media-library-copy {
  pointer-events: none !important;
  opacity: .45;
}

body.view-pan-active,
body.view-pan-active * {
  cursor: grab !important;
  user-select: none !important;
}


/* FASTLOOK_COLUMNS_ZOOM_SLIDER */
.bottom-row {
  gap: 16px;
}

.columns-zoom-control {
  flex: 0 0 auto;
  height: 42px;
  padding: 0 12px;
  border-radius: 16px;
  background: #191b21;
  display: inline-flex;
  align-items: center;
  gap: 9px;
  color: #454957;
  user-select: none;
}

.columns-zoom-control i {
  font-size: 13px;
  color: #454957;
}

.columns-zoom-slider {
  width: 124px;
  height: 4px;
  accent-color: rgb(47 77 116 / 63%);
  cursor: pointer;
}

.columns-zoom-value {
  min-width: 42px;
  text-align: right;
  font-size: 13px;
  font-weight: 800;
  color: rgb(157, 164, 183);
  letter-spacing: .03em;
}

.columns {
  --columns-zoom: 1;
}

.columns .column {
  transform: scale(var(--columns-zoom));
  transform-origin: top left;
  margin-right: calc(900px * (var(--columns-zoom) - 1));
  margin-bottom: calc(40px * (var(--columns-zoom) - 1));
}

body.edit-mode-off .columns-zoom-control,
body.edit-mode-off .columns-zoom-slider {
  pointer-events: auto !important;
  opacity: 1 !important;
}


/* FASTLOOK_ZOOM_SLIDER_LIKE_SCROLLTRACK */
.scroll-and-zoom {
  flex: 1 1 auto;
  min-width: 220px;
  display: flex;
  align-items: center;
  gap: 14px;
}

.scroll-and-zoom .scroll-track {
  flex: 1 1 auto;
  min-width: 160px;
}

/* Same dark track style as columnScrollTrack, but shorter */
.columns-zoom-track {
  flex: 0 0 154px;
  height: 24px;
  display: flex;
  align-items: center;
  background: transparent !important;
}

.columns-zoom-slider {
  --zoom-fill: 78.57%;
  width: 154px !important;
  height: 8px !important;
  padding: 0 !important;
  margin: 0 !important;
  appearance: none !important;
  -webkit-appearance: none !important;
  background: linear-gradient(
    to right,
    rgb(59 93 137) 0%,
    rgb(59 93 137) var(--zoom-fill),
    #191b21 var(--zoom-fill),
    #191b21 100%
  ) !important;
  border: 0 !important;
  border-radius: 999px !important;
  outline: none !important;
  cursor: pointer !important;
}

/* Chrome / Edge */
.columns-zoom-slider::-webkit-slider-runnable-track {
  height: 8px !important;
  background: transparent !important;
  border: 0 !important;
  border-radius: 999px !important;
}

.columns-zoom-slider::-webkit-slider-thumb {
  -webkit-appearance: none !important;
  appearance: none !important;
  width: 22px !important;
  height: 18px !important;
  margin-top: -5px !important;
  border: 0 !important;
  border-radius: 999px !important;
  background: rgb(59 93 137) !important;
  box-shadow: none !important;
}

/* Firefox */
.columns-zoom-slider::-moz-range-track {
  height: 8px !important;
  background: #191b21 !important;
  border: 0 !important;
  border-radius: 999px !important;
}

.columns-zoom-slider::-moz-range-progress {
  height: 8px !important;
  background: rgb(59 93 137) !important;
  border-radius: 999px !important;
}

.columns-zoom-slider::-moz-range-thumb {
  width: 22px !important;
  height: 18px !important;
  border: 0 !important;
  border-radius: 999px !important;
  background: rgb(59 93 137) !important;
  box-shadow: none !important;
}

/* Remove previous zoom control design */
.columns-zoom-control,
.columns-zoom-control i,
.columns-zoom-value {
  display: none !important;
}

/* In view mode zoom slider remains usable */
body.edit-mode-off .scroll-and-zoom,
body.edit-mode-off .columns-zoom-track,
body.edit-mode-off .columns-zoom-slider {
  pointer-events: auto !important;
  opacity: 1 !important;
}


/* FASTLOOK_ZOOM_SLIDER_MIN10 */
/* Zoom slider range is now 10% ... 115%, design remains like columnScrollTrack. */
.columns-zoom-slider {
  --zoom-fill: 85.71%;
}


/* FASTLOOK_EDIT_MODE_ALLOW_SECTION_METRICS */
/*
View mode should block normal content editing,
but section-metrics/task-management area stays usable.
*/
body.edit-mode-off .section-metrics,
body.edit-mode-off [data-section-menu],
body.edit-mode-off .column-top-title,
body.edit-mode-off .section-title,
body.edit-mode-off .tabs,
body.edit-mode-off .tab,
body.edit-mode-off .add-tab,
body.edit-mode-off #addTabBtn,
body.edit-mode-off [data-toggle-status],
body.edit-mode-off .task-foot {
  pointer-events: auto !important;
  opacity: 1 !important;
  cursor: pointer !important;
}

body.edit-mode-off [data-column-title],
body.edit-mode-off .section-title,
body.edit-mode-off .tab.active {
  caret-color: rgb(157, 164, 183) !important;
  cursor: text !important;
  -webkit-user-select: text !important;
  user-select: text !important;
}

body.edit-mode-off #addColumnBtn,
body.edit-mode-off #addTaskBtn {
  pointer-events: none !important;
  opacity: .45 !important;
}


/* FASTLOOK_EDIT_BUTTON_NO_SECTION_JUMP */
/*
Edit mode button is local only:
- it does not render/open section
- it does not affect section-metrics
- it only locks/unlocks editable column content/media on the current page
*/
#editModeToggleBtn {
  pointer-events: auto !important;
  position: relative;
  z-index: 30;
}

body.edit-mode-off .section-metrics,
body.edit-mode-off [data-section-menu],
body.edit-mode-off .column-top-title {
  pointer-events: auto !important;
  opacity: 1 !important;
}


/* FASTLOOK_EDIT_BUTTON_CLICK_FIX */
#editModeToggleBtn {
  pointer-events: auto !important;
}


/* FASTLOOK_EDIT_MODE_ALLOW_ALL_TASK_ACTIONS */
/*
View mode only locks column content/media editing.
Tasks and section-metrics stay fully usable in every mode.
*/
body.edit-mode-off .task-grid,
body.edit-mode-off .task-card,
body.edit-mode-off .task-main,
body.edit-mode-off .task-description,
body.edit-mode-off .task-foot,
body.edit-mode-off .task-image,
body.edit-mode-off .add-task,
body.edit-mode-off #addTaskBtn,
body.edit-mode-off [data-task],
body.edit-mode-off [data-task-description],
body.edit-mode-off [data-toggle-status],
body.edit-mode-off .section-metrics,
body.edit-mode-off [data-section-menu],
body.edit-mode-off .column-top-title,
body.edit-mode-off .section-title,
body.edit-mode-off .tabs,
body.edit-mode-off .tab,
body.edit-mode-off .add-tab,
body.edit-mode-off #addTabBtn {
  pointer-events: auto !important;
  opacity: 1 !important;
}

body.edit-mode-off [data-task]:not(:has(.task-image)),
body.edit-mode-off [data-task-description],
body.edit-mode-off [data-column-title],
body.edit-mode-off .section-title,
body.edit-mode-off .tab.active {
  caret-color: rgb(157, 164, 183) !important;
  cursor: text !important;
  -webkit-user-select: text !important;
  user-select: text !important;
}

body.edit-mode-off .task-image,
body.edit-mode-off .task-main:has(.task-image),
body.edit-mode-off .task-foot,
body.edit-mode-off .add-task,
body.edit-mode-off #addTaskBtn,
body.edit-mode-off .add-tab,
body.edit-mode-off #addTabBtn {
  cursor: pointer !important;
}

/* Still blocked in view mode */
body.edit-mode-off #addColumnBtn,
body.edit-mode-off .column-content img,
body.edit-mode-off .column-content .video-card-wrap,
body.edit-mode-off .column-content .image-card,
body.edit-mode-off .column-content .video-card {
  pointer-events: none !important;
}


/* FASTLOOK_ZOOM_NO_EXTRA_SCROLL */
/*
Fix: transform: scale() caused visual overflow and created an extra scrollbar when zoom > 100%.
Now columns use CSS zoom, so layout size follows the scale and only the existing column scroll remains.
*/
.columns {
  --columns-zoom: 1;
  overflow-x: auto !important;
  overflow-y: hidden !important;
  contain: layout paint;
}

/* Cancel previous transform zoom rules */
.columns .column {
  transform: none !important;
  transform-origin: initial !important;
  margin-right: 0 !important;
  margin-bottom: 0 !important;
  zoom: var(--columns-zoom);
}

/* Prevent page-level extra horizontal scrollbar */
html,
body {
  overflow-x: hidden !important;
}

/* Keep the zoom slider itself usable in view mode */
body.edit-mode-off .scroll-and-zoom,
body.edit-mode-off .columns-zoom-track,
body.edit-mode-off .columns-zoom-slider {
  pointer-events: auto !important;
  opacity: 1 !important;
}


/* FASTLOOK_MEDIA_OPACITY_ALWAYS_RESPECTED */
/* Custom opacity must win in columns/tasks and in edit/view modes. */
.column-content img.has-custom-opacity,
.column-content img[data-opacity],
.column-content .video-card-wrap.has-custom-opacity,
.column-content .video-card-wrap[data-opacity],
.task-main img.task-image.has-custom-opacity,
.task-main img.task-image[data-opacity],
.task-image.has-custom-opacity,
.task-image[data-opacity],
.task-video-card.has-custom-opacity,
.task-video-card[data-opacity],
body.edit-mode-off .column-content img.has-custom-opacity,
body.edit-mode-off .column-content img[data-opacity],
body.edit-mode-off .column-content .video-card-wrap.has-custom-opacity,
body.edit-mode-off .column-content .video-card-wrap[data-opacity],
body.edit-mode-off .task-main img.task-image.has-custom-opacity,
body.edit-mode-off .task-main img.task-image[data-opacity],
body.edit-mode-off .task-image.has-custom-opacity,
body.edit-mode-off .task-image[data-opacity],
body.edit-mode-on .column-content img.has-custom-opacity,
body.edit-mode-on .column-content img[data-opacity],
body.edit-mode-on .column-content .video-card-wrap.has-custom-opacity,
body.edit-mode-on .column-content .video-card-wrap[data-opacity],
body.edit-mode-on .task-main img.task-image.has-custom-opacity,
body.edit-mode-on .task-main img.task-image[data-opacity],
body.edit-mode-on .task-image.has-custom-opacity,
body.edit-mode-on .task-image[data-opacity] {
  opacity: var(--media-opacity, 1) !important;
}

/* Default is full opacity only if user did NOT set opacity. */
.column-content img:not(.has-custom-opacity):not([data-opacity]),
.column-content .video-card-wrap:not(.has-custom-opacity):not([data-opacity]),
.task-main img.task-image:not(.has-custom-opacity):not([data-opacity]),
.task-image:not(.has-custom-opacity):not([data-opacity]),
.task-video-card:not(.has-custom-opacity):not([data-opacity]) {
  opacity: 1 !important;
}


/* FASTLOOK_VIEW_MODE_TASK_DROP_OPACITY_FIX */
/*
View mode blocks column editing only.
Task media upload/drop and task context opacity slider stay active.
*/
body.edit-mode-off .task-grid,
body.edit-mode-off .task-card,
body.edit-mode-off .task-main,
body.edit-mode-off .task-description,
body.edit-mode-off .task-foot,
body.edit-mode-off .task-image,
body.edit-mode-off .add-task,
body.edit-mode-off #addTaskBtn,
body.edit-mode-off [data-task],
body.edit-mode-off [data-task-description],
body.edit-mode-off [data-toggle-status],
body.edit-mode-off .ctx,
body.edit-mode-off .ctx *,
body.edit-mode-off .ctx-opacity,
body.edit-mode-off .ctx-opacity * {
  pointer-events: auto !important;
  opacity: 1 !important;
}

body.edit-mode-off .ctx input[type="range"],
body.edit-mode-off .ctx-opacity input[type="range"] {
  pointer-events: auto !important;
  cursor: pointer !important;
}

/* Keep only column media blocked in view mode */
body.edit-mode-off .column-content img,
body.edit-mode-off .column-content .video-card-wrap,
body.edit-mode-off .column-content .image-card,
body.edit-mode-off .column-content .video-card {
  pointer-events: none !important;
}

/* But task images are not column images and must stay usable */
body.edit-mode-off .task-image,
body.edit-mode-off .task-main img.task-image {
  pointer-events: auto !important;
  cursor: pointer !important;
}


/* FASTLOOK_TASK_UPLOAD_VIDEO_OPACITY_FIX */
body.edit-mode-off .task-main,
body.edit-mode-off [data-task],
body.edit-mode-off .task-card,
body.edit-mode-off .task-image,
body.edit-mode-off .ctx,
body.edit-mode-off .ctx *,
body.edit-mode-off .ctx-opacity,
body.edit-mode-off .ctx-opacity input[type="range"] {
  pointer-events: auto !important;
}

body.edit-mode-off .task-main.drop-over {
  outline: 2px solid rgb(59 93 137 / 70%);
  outline-offset: 4px;
}


/* FASTLOOK_CLICKABLE_TEXT_LINKS */
.fastlook-text-link {
  color: var(--fastlook-link-color, #4f83c7) !important;
  text-decoration: none !important;
  cursor: pointer !important;
  font-weight: 800;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.fastlook-text-link:hover {
  color: var(--fastlook-link-hover-color, #6fa0e1) !important;
  text-decoration: underline !important;
}

body.edit-mode-off .fastlook-text-link,
body.edit-mode-on .fastlook-text-link {
  pointer-events: auto !important;
}


/* FASTLOOK_VIEW_MODE_MEDIA_PREVIEW_FIX */
/*
View mode blocks editing, not viewing.
Column/task media must still receive left-click so openViewModeMedia()/task preview can work.
Right-click/context and drag/drop are still blocked by JS guards.
*/
body.edit-mode-off .column-content img,
body.edit-mode-off .column-content .image-card,
body.edit-mode-off .column-content .video-card,
body.edit-mode-off .column-content .video-card-wrap,
body.edit-mode-off .column-content [data-video-src],
body.edit-mode-off .task-image,
body.edit-mode-off .task-video-card {
  pointer-events: auto !important;
  cursor: pointer !important;
}

body.edit-mode-off .column-content img,
body.edit-mode-off .column-content .video-card-wrap,
body.edit-mode-off .task-image {
  -webkit-user-drag: none !important;
  user-select: none !important;
}


/* FASTLOOK_EDIT_MODE_PASSWORD_2377 */
.edit-password-overlay {
  position: fixed;
  inset: 0;
  z-index: 5000;
  background: rgb(10 11 15 / 62%);
  backdrop-filter: blur(18px) saturate(1.15);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 28px;
}

.edit-password-modal {
  width: min(420px, calc(100vw - 42px));
  border-radius: 30px;
  background: rgb(36 40 52 / 92%);
  border: 1px solid rgb(36 40 52 / 55%);
  box-shadow: 0 18px 70px rgb(0 0 0 / 54%);
  padding: 30px;
  position: relative;
  display: grid;
  gap: 14px;
  color: rgb(157, 164, 183);
}

.edit-password-close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 42px;
  height: 42px;
  border: 0;
  border-radius: 14px;
  background: rgb(0 0 0 / 28%);
  color: #454957;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}

.edit-password-close:hover {
  background: rgb(0 0 0 / 48%);
  color: rgb(157, 164, 183);
}

.edit-password-icon {
  width: 68px;
  height: 68px;
  border-radius: 24px;
  background: #191b21;
  color: #454957;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 26px;
}

.edit-password-title {
  margin-top: 6px;
  font-size: 24px;
  line-height: 1.1;
  font-weight: 900;
  letter-spacing: .04em;
  color: rgb(157, 164, 183);
}

.edit-password-text {
  font-size: 15px;
  line-height: 1.45;
  color: rgb(152, 158, 173);
  font-weight: 650;
}

.edit-password-input {
  height: 58px;
  border: 0;
  outline: none;
  border-radius: 18px;
  background: #191b21;
  color: rgb(157, 164, 183);
  padding: 0 18px;
  font-size: 22px;
  font-weight: 900;
  letter-spacing: .18em;
}

.edit-password-input::placeholder {
  color: #454957;
  letter-spacing: .04em;
  font-size: 16px;
  font-weight: 800;
}

.edit-password-error {
  min-height: 18px;
  color: rgb(183 86 86);
  font-size: 13px;
  font-weight: 800;
}

.edit-password-submit {
  height: 58px;
  border: 0;
  border-radius: 18px;
  background: #191b21;
  color: rgb(157, 164, 183);
  font-size: 16px;
  font-weight: 900;
  cursor: pointer;
}

.edit-password-submit:hover {
  background: #0c0d11;
}

.edit-password-modal.is-error {
  animation: editPasswordShake .18s linear 0s 2;
}

@keyframes editPasswordShake {
  0% { transform: translateX(0); }
  33% { transform: translateX(-8px); }
  66% { transform: translateX(8px); }
  100% { transform: translateX(0); }
}

body.edit-mode-off .edit-password-overlay,
body.edit-mode-off .edit-password-overlay *,
body.edit-mode-on .edit-password-overlay,
body.edit-mode-on .edit-password-overlay * {
  pointer-events: auto !important;
}


/* FASTLOOK_COLUMN_MEDIA_DRAG_EDIT_ONLY */
/*
Column media:
- edit mode ON: drag/reorder/context menu works
- edit mode OFF: left click preview only, no dragging, no context menu
Tasks are unaffected.
*/
body.edit-mode-off .column-content img,
body.edit-mode-off .column-content .image-card,
body.edit-mode-off .column-content .video-card,
body.edit-mode-off .column-content .video-card-wrap,
body.edit-mode-off .column-content [data-video-src] {
  pointer-events: auto !important;
  cursor: pointer !important;
  -webkit-user-drag: none !important;
  user-select: none !important;
}

body.edit-mode-off .column-content.drop-over {
  outline: none !important;
}
