/* ==========================================================================
   CANVAS — projects screen + infinite canvas studio
   ========================================================================== */

html, body {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  font-family: var(--font-ui, 'Geist', 'Inter', sans-serif);
  color: var(--text);
}

.canvas-app {
  position: relative;
  overflow: hidden;
}

/* The studio owns every gesture; the projects screen scrolls normally */
body.is-studio {
  user-select: none;
  -webkit-user-select: none;
  touch-action: none;
  overscroll-behavior: none;
}

.hidden {
  display: none !important;
}

/* ==========================================================================
   Projects screen
   ========================================================================== */
.zc-projects {
  position: fixed;
  inset: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  timeline-scope: --zui-hero;
}

.zc-projects-inner {
  max-width: 1080px;
  margin: 0 auto;
  padding: 18px 20px 64px;
  box-sizing: border-box;
}

.zc-projects-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 26px;
}

.zc-projects-nav .nav-back-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  text-decoration: none;
  font-size: 13px;
}

.zc-projects-nav .nav-back-link svg {
  width: 15px;
  height: 15px;
}

.zc-projects-nav-right {
  display: flex;
  align-items: center;
  gap: 10px;
}

.zc-admin-pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px;
  border-radius: var(--r-pill);
  background: var(--positive-bg);
  color: var(--positive);
  font-size: 12px;
  font-weight: 600;
}

.zc-admin-pill svg {
  width: 13px;
  height: 13px;
}

.zc-banner {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 16px;
  margin-bottom: 14px;
  border-radius: var(--r-lg);
  border: 1px solid var(--border);
  background: var(--glass);
  -webkit-backdrop-filter: var(--blur);
  backdrop-filter: var(--blur);
  box-shadow: var(--glass-hi), var(--shadow-1);
  animation: zuiRise 0.45s var(--ease-out) both;
}

.zc-banner > svg {
  flex: none;
  width: 22px;
  height: 22px;
  color: var(--accent);
}

.zc-banner-text {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 13px;
  color: var(--text-3);
}

.zc-banner-text strong {
  color: var(--text);
  font-weight: 600;
}

.zc-projects-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: 8px;
}

.zc-projects-tools {
  display: flex;
  align-items: center;
  gap: 8px;
}

.zc-search {
  position: relative;
  display: flex;
  align-items: center;
}

.zc-search svg {
  position: absolute;
  left: 10px;
  width: 15px;
  height: 15px;
  color: var(--text-4);
  pointer-events: none;
}

.zc-search input {
  width: 200px;
  height: 34px;
  padding: 0 12px 0 32px;
  font-size: 13px;
  box-sizing: border-box;
}

.zc-new-project-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 34px;
  padding: 0 14px;
}

.zc-new-project-btn svg {
  width: 15px;
  height: 15px;
}

.zc-project-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
  gap: 14px;
}

.zc-project-card {
  position: relative;
  display: flex;
  flex-direction: column;
  padding: 0;
  text-align: left;
  font: inherit;
  color: inherit;
  border-radius: var(--r-lg);
  border: 1px solid var(--border);
  background-color: var(--fill);
  box-shadow: var(--glass-hi);
  overflow: hidden;
  cursor: pointer;
  transition: transform var(--t-slow) var(--ease-spring), box-shadow var(--t-med), border-color var(--t-fast);
}

.zc-project-card:hover {
  transform: translateY(-3px);
  border-color: var(--border-strong);
  box-shadow: var(--glass-hi), var(--shadow-2);
}

.zc-project-card:active {
  transform: scale(0.985);
}

.zc-project-thumb {
  position: relative;
  aspect-ratio: 16 / 10;
  background: var(--surface-2, var(--fill-2));
  border-bottom: 1px solid var(--border);
  overflow: hidden;
}

.zc-project-thumb img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.zc-thumb-art {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: hsl(var(--h) 70% 62%);
  background:
    radial-gradient(60% 80% at 20% 20%, hsl(var(--h) 80% 65% / 0.28), transparent 70%),
    radial-gradient(60% 80% at 85% 90%, hsl(calc(var(--h) + 60) 80% 65% / 0.22), transparent 70%),
    repeating-radial-gradient(circle at 0 0, transparent 0 13px, hsl(var(--h) 40% 50% / 0.08) 13px 14px);
}

.zc-thumb-art svg {
  width: 30px;
  height: 30px;
  opacity: 0.85;
}

.zc-project-card.is-new .zc-project-thumb {
  display: grid;
  place-items: center;
  background: transparent;
  border-bottom-style: dashed;
}

.zc-project-card.is-new {
  border-style: dashed;
  background-color: transparent;
}

.zc-new-plus {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border-radius: 14px;
  background: var(--accent-soft);
  color: var(--accent);
  transition: transform var(--t-slow) var(--ease-spring);
}

.zc-project-card.is-new:hover .zc-new-plus {
  transform: scale(1.08) rotate(90deg);
}

.zc-new-plus svg {
  width: 24px;
  height: 24px;
}

.zc-project-body {
  padding: 12px 14px 14px;
  min-width: 0;
}

.zc-project-name {
  font-size: 14.5px;
  font-weight: 640;
  letter-spacing: -0.015em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.zc-project-meta {
  margin-top: 3px;
  font-size: 12px;
  color: var(--text-3);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Sits on the thumbnail's corner so it never collides with the card text */
.zc-lock-chip {
  position: absolute;
  top: 10px;
  right: 10px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 8px;
  border-radius: var(--r-pill);
  font-size: 11px;
  font-weight: 600;
  color: var(--text-2);
  background: var(--glass-strong);
  -webkit-backdrop-filter: var(--blur);
  backdrop-filter: var(--blur);
  border: 1px solid var(--glass-border);
  box-shadow: var(--shadow-1);
}

.zc-lock-chip.is-open {
  color: var(--positive);
}

.zc-lock-chip svg {
  width: 12px;
  height: 12px;
}

/* Trash button on a card's thumbnail: shows on hover / focus, always on touch screens */
.zc-card-delete {
  position: absolute;
  top: 10px;
  left: 10px;
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  padding: 0;
  border-radius: 9px;
  border: 1px solid var(--glass-border);
  background: var(--glass-strong);
  -webkit-backdrop-filter: var(--blur);
  backdrop-filter: var(--blur);
  color: var(--text-2);
  box-shadow: var(--shadow-1);
  cursor: pointer;
  opacity: 0;
  transition: opacity var(--t-fast), color var(--t-fast), background var(--t-fast);
}

.zc-card-delete svg {
  width: 15px;
  height: 15px;
}

.zc-project-card:hover .zc-card-delete,
.zc-project-card:focus-within .zc-card-delete {
  opacity: 1;
}

.zc-card-delete:hover {
  color: #fff;
  background: var(--negative);
  border-color: transparent;
}

@media (hover: none) {
  .zc-card-delete {
    opacity: 1;
  }
}

.zc-project-card.is-skeleton {
  min-height: 210px;
  cursor: default;
  background: linear-gradient(100deg, var(--fill) 30%, var(--fill-2) 50%, var(--fill) 70%);
  background-size: 300% 100%;
  animation: zuiShimmer 1.4s linear infinite;
}

.zc-project-card.is-skeleton:hover {
  transform: none;
  box-shadow: var(--glass-hi);
}

.zc-projects-message {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px;
  border-radius: var(--r-lg);
  border: 1px solid var(--border);
  font-size: 13px;
  color: var(--text-3);
}

.zc-projects-message strong {
  color: var(--text);
}

.zc-projects-message > svg {
  flex: none;
  width: 20px;
  height: 20px;
  color: var(--text-3);
}

.zc-projects-message > div {
  flex: 1;
}

.zc-projects-message.is-soft {
  border-style: dashed;
}

/* ==========================================================================
   Studio
   ========================================================================== */
.zc-studio {
  position: fixed;
  inset: 0;
}

.zc-header {
  position: fixed;
  top: 12px;
  left: 14px;
  right: 14px;
  height: 52px;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 0 10px;
  border-radius: var(--r-lg, 16px);
  background: var(--glass-strong);
  -webkit-backdrop-filter: var(--blur);
  backdrop-filter: var(--blur);
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-hi), var(--shadow-2);
}

.zc-header-left,
.zc-header-center,
.zc-header-right {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.zc-header-left {
  flex: 1 1 0;
}

.zc-header-right {
  flex: 1 1 0;
  justify-content: flex-end;
}

.zc-brand {
  display: flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
  padding-left: 8px;
  border-left: 1px solid var(--border);
}

.zc-board-title {
  min-width: 60px;
  max-width: 200px;
  width: 16ch;
  height: 30px;
  padding: 0 8px !important;
  font-size: 13.5px !important;
  font-weight: 640;
  background: transparent !important;
  border: 1px solid transparent !important;
  border-radius: var(--r-sm) !important;
  color: var(--text);
  text-overflow: ellipsis;
}

.zc-board-title:hover {
  background: var(--fill) !important;
}

.zc-board-title:focus {
  background: var(--surface) !important;
  border-color: var(--accent) !important;
}

.zc-board-chip {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  max-width: 150px;
  height: 26px;
  padding: 0 6px 0 9px;
  border-radius: var(--r-pill);
  border: 1px solid var(--border);
  background: var(--fill);
  color: var(--text-2);
  font: inherit;
  font-size: 12px;
  font-weight: 560;
  cursor: pointer;
  white-space: nowrap;
}

.zc-board-chip span {
  overflow: hidden;
  text-overflow: ellipsis;
}

.zc-board-chip:hover {
  color: var(--text);
  background: var(--fill-2);
}

.zc-board-chip svg {
  flex: none;
  width: 14px;
  height: 14px;
}

.zc-save-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-left: 6px;
  font-size: 11.5px;
  font-weight: 560;
  color: var(--text-3);
  white-space: nowrap;
}

.zc-save-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--positive);
  transition: background var(--t-med);
}

.zc-save-chip[data-state="unsaved"] .zc-save-dot { background: var(--text-4); }
.zc-save-chip[data-state="saving"] .zc-save-dot { background: var(--accent); animation: zcPulse 0.9s ease-in-out infinite; }
.zc-save-chip[data-state="offline"] .zc-save-dot { background: var(--warning); }
.zc-save-chip[data-state="error"] .zc-save-dot { background: var(--negative); }
.zc-save-chip[data-state="error"] { color: var(--negative); }

/* Modes */
.zc-modes-nav {
  display: flex;
  align-items: center;
  gap: 2px;
  padding: 3px;
  background: var(--fill);
  border-radius: var(--r-pill);
  border: 1px solid var(--border);
}

.zc-mode-btn {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border: none;
  background: transparent;
  color: var(--text-3);
  font: inherit;
  font-size: 12.5px;
  font-weight: 600;
  border-radius: var(--r-pill);
  cursor: pointer;
  transition: background var(--t-fast), color var(--t-fast), box-shadow var(--t-med);
}

.zc-mode-btn svg {
  width: 14px;
  height: 14px;
}

.zc-mode-btn:hover {
  color: var(--text);
}

.zc-mode-btn.is-active {
  background: var(--surface);
  color: var(--text);
  box-shadow: 0 1px 2px rgba(15, 18, 32, 0.08), 0 2px 8px -2px rgba(15, 18, 32, 0.15);
}

[data-theme="dark"] .zc-mode-btn.is-active {
  background: var(--surface-3, #212538);
}

.zc-icon-btn {
  flex: none;
  width: 34px;
  height: 34px;
  border-radius: var(--r-sm, 8px);
  background: transparent;
  border: 1px solid transparent;
  color: var(--text-2);
  display: grid;
  place-items: center;
  cursor: pointer;
  transition: background var(--t-fast), color var(--t-fast);
}

.zc-icon-btn svg {
  width: 17px;
  height: 17px;
}

.zc-icon-btn:hover:not(:disabled) {
  background: var(--fill);
  border-color: var(--border);
  color: var(--text);
}

.zc-icon-btn:disabled {
  opacity: 0.32;
  cursor: not-allowed;
}

.zc-icon-btn.is-danger:hover:not(:disabled) {
  color: var(--negative);
  background: var(--negative-bg);
}

.zc-history-group {
  display: flex;
  align-items: center;
  gap: 1px;
  padding: 2px;
  background: var(--fill);
  border-radius: var(--r-sm);
  border: 1px solid var(--border);
}

.zc-history-group .zc-icon-btn {
  width: 30px;
  height: 30px;
}

.zc-templates-btn,
.zc-export-btn {
  display: flex;
  align-items: center;
  gap: 6px;
  height: 34px;
  padding: 0 12px;
  white-space: nowrap;
}

.zc-templates-btn svg,
.zc-export-btn svg {
  width: 15px;
  height: 15px;
}

/* Popover menus */
.zc-dropdown-wrap {
  position: relative;
}

.zc-menu-popover {
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  width: 220px;
  background: var(--glass-strong);
  -webkit-backdrop-filter: var(--blur);
  backdrop-filter: var(--blur);
  border-radius: var(--r-md, 12px);
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-hi), var(--shadow-3);
  padding: 6px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  z-index: 1010;
  animation: popIn 160ms var(--ease-out);
}

.zc-menu-title {
  font-size: 10.5px;
  font-weight: 650;
  text-transform: uppercase;
  color: var(--text-4);
  padding: 6px 8px 4px;
  letter-spacing: 0.06em;
}

.zc-menu-sep {
  height: 1px;
  margin: 4px 2px;
  background: var(--border);
}

.zc-menu-item,
.zc-menu-toggle {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 8px 10px;
  border: none;
  background: transparent;
  color: var(--text-2);
  font: inherit;
  font-size: 13px;
  font-weight: 500;
  border-radius: var(--r-xs);
  cursor: pointer;
  text-align: left;
}

.zc-menu-item svg {
  width: 15px;
  height: 15px;
}

.zc-menu-item:hover,
.zc-menu-toggle:hover {
  background: var(--fill);
  color: var(--text);
}

.zc-menu-item.is-active {
  background: var(--accent-soft);
  color: var(--accent-text);
  font-weight: 600;
}

.zc-menu-item.is-danger {
  color: var(--negative);
}

.zc-menu-item.is-danger:hover {
  background: var(--negative-bg);
}

.zc-menu-toggle input {
  margin: 0;
}

.zc-dot-preview {
  width: 13px;
  height: 13px;
  border-radius: 50%;
  border: 1.5px solid rgba(0, 0, 0, 0.15);
}

.zc-dot-preview.studio { background: #eef0f6; }
.zc-dot-preview.blueprint { background: #0c2340; border-color: #38bdf8; }
.zc-dot-preview.cyber { background: #0a0b12; border-color: #ec4899; }
.zc-dot-preview.parchment { background: #f4ece1; border-color: #b45309; }

/* ---------- Canvas viewport & atmospheres ---------- */
.zc-canvas-viewport {
  position: absolute;
  inset: 0;
  overflow: hidden;
  background-color: var(--bg);
  transition: background-color 300ms ease;
}

.zc-canvas-viewport.ambience-blueprint { background-color: #0b1c34; }
.zc-canvas-viewport.ambience-cyber { background-color: #080910; }
.zc-canvas-viewport.ambience-parchment { background-color: #f7f1e5; }

#canvas-main,
#canvas-fx {
  position: absolute;
  top: 0;
  left: 0;
  display: block;
}

#canvas-fx {
  pointer-events: none;
}

.zc-canvas-viewport.is-grabbing #canvas-main {
  cursor: grabbing !important;
}

/* ---------- Tool dock ---------- */
.zc-dock-wrap {
  position: fixed;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1000;
  max-width: calc(100vw - 24px);
}

.zc-dock-bar {
  display: flex;
  align-items: center;
  gap: 3px;
  padding: 6px 8px;
  border-radius: var(--r-xl, 22px);
  background: var(--glass-strong);
  -webkit-backdrop-filter: var(--blur);
  backdrop-filter: var(--blur);
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-hi), 0 12px 36px -8px rgba(15, 18, 32, 0.25);
}

[data-theme="dark"] .zc-dock-bar {
  box-shadow: var(--glass-hi), 0 12px 40px -6px rgba(0, 0, 0, 0.55);
}

.zc-dock-sep {
  flex: none;
  width: 1px;
  height: 24px;
  background: var(--border);
  margin: 0 3px;
}

.zc-tool-btn {
  position: relative;
  flex: none;
  width: 40px;
  height: 40px;
  border-radius: 13px;
  background: transparent;
  border: none;
  color: var(--text-2);
  display: grid;
  place-items: center;
  cursor: pointer;
  transition: background var(--t-fast), color var(--t-fast), transform var(--t-slow) var(--ease-spring);
}

.zc-tool-btn svg {
  width: 19px;
  height: 19px;
}

.zc-tool-btn:hover {
  background: var(--fill-2);
  color: var(--text);
}

.zc-tool-btn:active {
  transform: scale(0.92);
}

.zc-tool-btn.is-active {
  background: var(--accent);
  color: #ffffff;
  box-shadow: 0 6px 16px -6px var(--accent);
}

.zc-key-hint {
  position: absolute;
  bottom: 2px;
  right: 4px;
  font-family: var(--font-num, monospace);
  font-size: 8.5px;
  font-weight: 700;
  opacity: 0.5;
}

.zc-tool-popover-anchor {
  position: relative;
}

.zc-shape-palette,
.zc-stickers-palette {
  position: absolute;
  bottom: calc(100% + 14px);
  left: 50%;
  transform: translateX(-50%);
  background: var(--glass-strong);
  -webkit-backdrop-filter: var(--blur);
  backdrop-filter: var(--blur);
  border-radius: var(--r-lg, 16px);
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-hi), var(--shadow-3);
  padding: 8px;
  z-index: 1020;
  animation: popUp 180ms var(--ease-out);
}

.zc-shape-palette {
  display: grid;
  grid-template-columns: repeat(4, 38px);
  gap: 6px;
}

.zc-shape-choice {
  width: 38px;
  height: 38px;
  border-radius: var(--r-sm);
  background: var(--fill);
  border: 1px solid transparent;
  color: var(--text-2);
  display: grid;
  place-items: center;
  cursor: pointer;
  transition: background var(--t-fast), color var(--t-fast);
}

.zc-shape-choice svg {
  width: 18px;
  height: 18px;
}

.zc-shape-choice:hover {
  background: var(--accent-soft);
  color: var(--accent);
}

.zc-shape-choice.is-active {
  background: var(--accent);
  color: #fff;
}

.zc-stickers-grid {
  display: grid;
  grid-template-columns: repeat(4, 42px);
  gap: 6px;
}

.zc-sticker-item {
  width: 42px;
  height: 42px;
  font-size: 24px;
  display: grid;
  place-items: center;
  border-radius: var(--r-sm);
  border: none;
  background: var(--fill);
  cursor: pointer;
  transition: transform var(--t-slow) var(--ease-spring), background var(--t-fast);
}

.zc-sticker-item:hover {
  background: var(--accent-soft);
  transform: scale(1.15);
}

/* ---------- Contextual toolbar ---------- */
.zc-context-bar {
  position: absolute;
  z-index: 900;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0;
  max-width: calc(100vw - 24px);
  padding: 5px 6px;
  border-radius: var(--r-lg, 14px);
  background: var(--glass-strong);
  -webkit-backdrop-filter: var(--blur);
  backdrop-filter: var(--blur);
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-hi), 0 10px 30px -8px rgba(15, 18, 32, 0.28);
  animation: floatUp 150ms var(--ease-out);
}

.zc-ctx-section {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 0 6px;
}

.zc-ctx-section:not(.hidden) ~ .zc-ctx-section:not(.hidden) {
  border-left: 1px solid var(--border);
}

.zc-color-swatches {
  display: flex;
  align-items: center;
  gap: 4px;
}

.zc-color-dot {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--c);
  border: 2px solid var(--surface);
  box-shadow: 0 0 0 1px var(--border-strong);
  cursor: pointer;
  padding: 0;
  transition: transform var(--t-slow) var(--ease-spring);
}

.zc-color-dot.is-ink {
  background: linear-gradient(135deg, #0f1220 0 50%, #eef0f6 50% 100%);
}

.zc-color-dot:hover {
  transform: scale(1.18);
}

.zc-color-dot.is-active {
  box-shadow: 0 0 0 2px var(--accent);
}

.zc-color-custom {
  position: relative;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 1px dashed var(--border-strong);
  display: grid;
  place-items: center;
  cursor: pointer;
}

.zc-color-custom input[type="color"] {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  cursor: pointer;
}

.zc-color-custom svg {
  width: 12px;
  height: 12px;
  color: var(--text-3);
}

.zc-btn-group {
  display: flex;
  align-items: center;
  gap: 1px;
  background: var(--fill);
  border-radius: var(--r-sm);
  padding: 2px;
  border: 1px solid var(--border);
}

.zc-ctx-btn {
  height: 26px;
  min-width: 28px;
  padding: 0 7px;
  border-radius: 6px;
  border: none;
  background: transparent;
  color: var(--text-2);
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
}

.zc-ctx-btn:hover {
  color: var(--text);
  background: var(--fill-2);
}

.zc-ctx-btn.is-active {
  background: var(--surface);
  color: var(--accent);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
}

.zc-ctx-btn.is-danger:hover {
  background: var(--negative-bg);
  color: var(--negative);
}

.zc-ctx-btn svg {
  width: 15px;
  height: 15px;
}

.zc-ctx-wide {
  padding: 0 9px;
  white-space: nowrap;
}

.zc-fill-ico {
  width: 13px;
  height: 13px;
  border-radius: 3px;
  border: 1.5px solid currentColor;
}

.zc-fill-ico.tint { background: color-mix(in srgb, currentColor 25%, transparent); }
.zc-fill-ico.solid { background: currentColor; }
.zc-fill-ico.none { background: linear-gradient(to top right, transparent 45%, currentColor 45% 55%, transparent 55%); }

.zc-line-ico {
  width: 16px;
  height: var(--w);
  border-radius: 4px;
  background: currentColor;
}

.zc-dash-ico {
  width: 18px;
  height: 2px;
}

.zc-dash-ico.solid { background: currentColor; }
.zc-dash-ico.dashed { background: repeating-linear-gradient(90deg, currentColor 0 5px, transparent 5px 8px); }

.zc-opacity {
  display: flex;
  align-items: center;
  gap: 5px;
  color: var(--text-3);
}

.zc-opacity svg {
  width: 14px;
  height: 14px;
}

.zc-opacity input {
  width: 68px;
}

.font-sans { font-family: var(--font-ui); }
.font-hand { font-family: 'Kalam', cursive; font-weight: 700; }
.font-mono { font-family: var(--font-num); }

/* ---------- Inline text editor (overlays the element being edited) ---------- */
.zc-inline-editor {
  position: absolute;
  z-index: 950;
  margin: 0;
  box-sizing: border-box;
  border: none !important;
  outline: 1.5px dashed color-mix(in srgb, var(--accent) 70%, transparent);
  outline-offset: 4px;
  background: transparent;
  box-shadow: none !important;
  resize: none;
  overflow: hidden;
  white-space: pre-wrap;
  overflow-wrap: break-word;
  transform-origin: center;
  caret-color: var(--accent);
  user-select: text;
  -webkit-user-select: text;
}

.zc-inline-editor:focus {
  background: transparent !important;
  box-shadow: none !important;
}

/* ---------- Flowchart ports & mind-map pills ---------- */
.zc-flowchart-ports {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 850;
}

.zc-port {
  position: absolute;
  width: 22px;
  height: 22px;
  margin: 0;
  padding: 0;
  border-radius: 50%;
  background: var(--accent);
  color: #fff;
  border: 2px solid var(--surface);
  font: 700 14px/1 var(--font-ui);
  display: grid;
  place-items: center;
  cursor: pointer;
  pointer-events: auto;
  touch-action: none;
  transform: translate(-50%, -50%);
  box-shadow: 0 2px 8px rgba(204, 74, 18, 0.45);
  opacity: 0.85;
  transition: transform var(--t-slow) var(--ease-spring), opacity var(--t-fast);
}

.zc-port:hover {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1.25);
}

.zc-mindmap-actions {
  position: absolute;
  display: flex;
  align-items: center;
  gap: 6px;
  z-index: 850;
  transform: translateX(-50%);
}

.zc-quick-pill {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 5px 10px;
  border-radius: var(--r-pill);
  background: var(--glass-strong);
  -webkit-backdrop-filter: var(--blur);
  backdrop-filter: var(--blur);
  border: 1px solid var(--glass-border);
  color: var(--text);
  font: inherit;
  font-size: 11.5px;
  font-weight: 600;
  box-shadow: var(--shadow-1);
  cursor: pointer;
  white-space: nowrap;
  transition: background var(--t-fast), color var(--t-fast), transform var(--t-slow) var(--ease-spring);
}

.zc-quick-pill:hover {
  background: var(--accent);
  color: #fff;
  border-color: var(--accent);
  transform: translateY(-2px);
}

.zc-quick-pill svg {
  width: 13px;
  height: 13px;
}

/* ---------- Empty board ---------- */
.zc-empty {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  pointer-events: none;
  z-index: 800;
}

.zc-empty-card {
  pointer-events: auto;
  max-width: min(560px, calc(100vw - 32px));
  padding: 22px 22px 18px;
  text-align: center;
  border-radius: var(--r-xl);
  background: var(--glass);
  -webkit-backdrop-filter: var(--blur);
  backdrop-filter: var(--blur);
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-hi), var(--shadow-2);
  animation: zuiRise 0.45s var(--ease-out) both;
}

.zc-empty-title {
  font-size: 17px;
  font-weight: 650;
  letter-spacing: -0.02em;
}

.zc-empty-sub {
  margin: 6px 0 16px;
  font-size: 13px;
  line-height: 1.45;
  color: var(--text-3);
}

.zc-empty-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
}

.zc-empty-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  width: 92px;
  padding: 12px 6px 10px;
  border-radius: var(--r-md);
  border: 1px solid var(--border);
  background: var(--fill);
  color: var(--text-2);
  font: inherit;
  font-size: 12px;
  font-weight: 560;
  cursor: pointer;
  transition: transform var(--t-slow) var(--ease-spring), background var(--t-fast), color var(--t-fast), border-color var(--t-fast);
}

.zc-empty-btn svg {
  width: 20px;
  height: 20px;
  color: var(--accent);
}

.zc-empty-btn:hover {
  transform: translateY(-2px);
  color: var(--text);
  background: var(--accent-soft);
  border-color: color-mix(in srgb, var(--accent) 40%, transparent);
}

.zc-drop-hint {
  position: absolute;
  inset: 14px;
  z-index: 960;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  border: 2px dashed var(--accent);
  border-radius: var(--r-xl);
  background: color-mix(in srgb, var(--accent) 8%, transparent);
  color: var(--accent-text);
  font-size: 15px;
  font-weight: 600;
  pointer-events: none;
}

.zc-drop-hint svg {
  width: 24px;
  height: 24px;
}

/* ---------- Bottom HUD ---------- */
.zc-bottom-hud {
  position: fixed;
  bottom: 20px;
  left: 20px;
  right: 20px;
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  pointer-events: none;
  z-index: 950;
}

.zc-zoom-hud {
  pointer-events: auto;
  display: flex;
  align-items: center;
  gap: 1px;
  padding: 3px;
  border-radius: var(--r-md);
  background: var(--glass-strong);
  -webkit-backdrop-filter: var(--blur);
  backdrop-filter: var(--blur);
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-hi), var(--shadow-1);
}

.zc-zoom-hud .zc-icon-btn {
  width: 30px;
  height: 30px;
}

.zc-zoom-val-btn {
  background: transparent;
  border: none;
  font-family: var(--font-num);
  font-size: 12px;
  font-weight: 650;
  color: var(--text-2);
  padding: 4px 6px;
  cursor: pointer;
  min-width: 48px;
  text-align: center;
  border-radius: 6px;
}

.zc-zoom-val-btn:hover {
  color: var(--text);
  background: var(--fill);
}

.zc-minimap-card {
  pointer-events: auto;
  width: 180px;
  border-radius: var(--r-md);
  background: var(--glass-strong);
  -webkit-backdrop-filter: var(--blur);
  backdrop-filter: var(--blur);
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-hi), var(--shadow-1);
  overflow: hidden;
}

.zc-minimap-canvas-box {
  position: relative;
  width: 100%;
  height: 112px;
  cursor: pointer;
  touch-action: none;
}

#canvas-minimap {
  width: 100%;
  height: 100%;
  display: block;
}

.zc-minimap-viewport {
  position: absolute;
  border: 1.5px solid var(--accent);
  background: color-mix(in srgb, var(--accent) 10%, transparent);
  border-radius: 3px;
  pointer-events: none;
}

/* ---------- Presentation ---------- */
body.is-presenting .zc-header,
body.is-presenting .zc-dock-wrap,
body.is-presenting .zc-zoom-hud {
  display: none;
}

.zc-present-hud {
  position: fixed;
  bottom: 26px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1100;
  animation: slideUp 220ms var(--ease-out);
}

.zc-present-bar {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px;
  border-radius: var(--r-pill);
  background: rgba(15, 18, 32, 0.86);
  -webkit-backdrop-filter: blur(24px);
  backdrop-filter: blur(24px);
  border: 1px solid rgba(255, 255, 255, 0.12);
  color: #fff;
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.4);
  opacity: 0.55;
  transition: opacity var(--t-med);
}

.zc-present-bar:hover {
  opacity: 1;
}

.zc-present-btn {
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  border: none;
  background: rgba(255, 255, 255, 0.08);
  color: #fff;
  cursor: pointer;
  transition: background var(--t-fast);
}

.zc-present-btn:hover {
  background: rgba(255, 255, 255, 0.18);
}

.zc-present-btn.is-active {
  background: #ff3b6b;
}

.zc-present-btn.is-exit:hover {
  background: #e5484d;
}

.zc-present-btn svg {
  width: 18px;
  height: 18px;
}

.zc-present-info {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 130px;
  max-width: 260px;
  padding: 0 6px;
}

.zc-slide-num {
  font-family: var(--font-num);
  font-size: 10.5px;
  font-weight: 700;
  color: #94a3b8;
}

.zc-slide-title {
  max-width: 100%;
  font-size: 13px;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.zc-present-sep {
  width: 1px;
  height: 22px;
  margin: 0 2px;
  background: rgba(255, 255, 255, 0.15);
}

/* ---------- Loading overlay ---------- */
.zc-loading {
  position: fixed;
  inset: 0;
  z-index: 3000;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  background: color-mix(in srgb, var(--bg) 70%, transparent);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  font-size: 13px;
  font-weight: 560;
  color: var(--text-2);
  animation: fadeIn 200ms ease;
}

.zc-spinner {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  border: 3px solid var(--accent-soft);
  border-top-color: var(--accent);
  animation: zcSpin 0.8s linear infinite;
}

/* ==========================================================================
   Modals
   ========================================================================== */
.modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
}

.zc-modal-card {
  width: 100%;
  max-width: 620px;
  max-height: calc(100vh - 32px);
  overflow-y: auto;
  margin: 0;
  padding: 24px;
  box-sizing: border-box;
  border-radius: var(--r-xl, 22px);
  border: 1px solid var(--glass-border);
  background: var(--glass-strong);
  -webkit-backdrop-filter: var(--blur);
  backdrop-filter: var(--blur);
  box-shadow: var(--glass-hi), var(--shadow-3);
  animation: zuiPop var(--t-slow) var(--ease-spring) both;
}

.zc-modal-narrow {
  max-width: 420px;
}

.modal-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  margin-bottom: 18px;
}

.modal-title-wrap {
  display: flex;
  align-items: flex-start;
  gap: 12px;
}

.zc-modal-icon {
  flex: none;
  width: 22px;
  height: 22px;
  color: var(--accent);
  margin-top: 2px;
}

.modal-title {
  font-size: 18px;
  font-weight: 650;
  margin: 0 0 4px;
  color: var(--text);
}

.modal-subtitle {
  font-size: 13px;
  line-height: 1.45;
  color: var(--text-3);
  margin: 0;
}

.modal-close-btn {
  display: grid;
  place-items: center;
  background: transparent;
  border: none;
  cursor: pointer;
  color: var(--text-3);
  padding: 4px;
  border-radius: var(--r-xs);
}

.modal-close-btn svg {
  width: 18px;
  height: 18px;
}

.modal-close-btn:hover {
  background: var(--fill);
  color: var(--text);
}

.zc-center {
  text-align: center;
}

.zc-lock-hero {
  display: grid;
  place-items: center;
  width: 54px;
  height: 54px;
  margin: 2px auto 14px;
  border-radius: 16px;
  color: var(--accent);
  background: var(--accent-soft);
}

.zc-lock-hero svg {
  width: 26px;
  height: 26px;
}

.zc-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-top: 14px;
}

.zc-field label {
  font-size: 12.5px;
  font-weight: 560;
  color: var(--text-2);
}

.zc-input {
  width: 100%;
  height: 40px;
  padding: 0 12px;
  font-size: 14px;
  box-sizing: border-box;
}

.zc-check {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 12px;
  font-size: 13px;
  color: var(--text-2);
  cursor: pointer;
}

.zc-check input {
  margin: 0;
}

.zc-form-error {
  margin: 12px 0 0;
  padding: 8px 10px;
  border-radius: var(--r-sm);
  background: var(--negative-bg);
  color: var(--negative);
  font-size: 12.5px;
  font-weight: 560;
}

.zc-modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 20px;
}

.zc-modal-actions .btn {
  min-width: 96px;
  height: 38px;
}

.zc-confirm-body {
  margin-top: 6px;
}

.btn.btn-danger {
  background: var(--negative) !important;
  border-color: transparent !important;
  color: #fff !important;
}

.zc-shake {
  animation: zuiShake 0.4s var(--ease-out);
}

/* Templates */
.zc-templates-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
  gap: 12px;
}

.zc-tpl-card {
  padding: 12px;
  text-align: left;
  font: inherit;
  color: inherit;
  border-radius: var(--r-md);
  background: var(--fill);
  border: 1px solid var(--border);
  cursor: pointer;
  transition: transform var(--t-slow) var(--ease-spring), background var(--t-fast), border-color var(--t-fast), box-shadow var(--t-med);
}

.zc-tpl-card:hover {
  background: var(--accent-soft);
  border-color: color-mix(in srgb, var(--accent) 45%, transparent);
  transform: translateY(-3px);
  box-shadow: var(--shadow-2);
}

.zc-tpl-preview {
  height: 80px;
  border-radius: var(--r-sm);
  background: var(--surface);
  border: 1px solid var(--border);
  display: grid;
  place-items: center;
  margin-bottom: 10px;
  position: relative;
  overflow: hidden;
}

.tpl-brainstorm {
  grid-template-columns: 1fr 1fr;
  gap: 6px;
  padding: 8px;
  box-sizing: border-box;
}

.tpl-postit {
  width: 100%;
  height: 100%;
  border-radius: 4px;
}

.tpl-postit.p-1 { background: #bbf7d0; }
.tpl-postit.p-2 { background: #e9d5ff; }
.tpl-postit.p-3 { background: #fef08a; }
.tpl-postit.p-4 { background: #fecaca; }

.tpl-node.core {
  width: 26px;
  height: 14px;
  border-radius: 7px;
  background: var(--accent);
}

.tpl-branch {
  position: absolute;
  width: 18px;
  height: 9px;
  border-radius: 5px;
}

.tpl-branch.b1 { top: 16px; left: 22px; background: #1fa6e8; }
.tpl-branch.b2 { bottom: 16px; right: 24px; background: #12a36b; }
.tpl-branch.b3 { top: 18px; right: 30px; background: #f59e0b; }

.tpl-flowchart {
  display: flex !important;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.tpl-flow-pill { width: 28px; height: 14px; border-radius: 7px; background: #12a36b; }
.tpl-flow-arrow { width: 16px; height: 2px; background: var(--text-3); }
.tpl-flow-diamond { width: 16px; height: 16px; transform: rotate(45deg); background: #f59e0b; }

.tpl-kanban,
.tpl-slides {
  display: flex !important;
  gap: 6px;
  padding: 8px;
  box-sizing: border-box;
}

.tpl-col {
  flex: 1;
  height: 100%;
  background: var(--fill-2);
  border-radius: 4px;
}

.tpl-slides {
  align-items: center;
}

.tpl-slide {
  flex: 1;
  aspect-ratio: 16 / 9;
  border-radius: 3px;
  border: 1.5px dashed var(--accent);
  background: var(--accent-soft);
}

.zc-tpl-title {
  font-size: 13px;
  font-weight: 650;
  margin-bottom: 3px;
}

.zc-tpl-desc {
  font-size: 11.5px;
  color: var(--text-3);
  line-height: 1.4;
}

/* Export */
.zc-export-options {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.zc-export-field {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.zc-export-field > label {
  font-size: 12.5px;
  font-weight: 560;
  color: var(--text-2);
}

.zc-export-field .zc-ctx-btn {
  height: 28px;
  padding: 0 10px;
}

.zc-export-actions-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 4px;
}

.zc-export-action-btn {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px 16px;
  text-align: left;
  border-radius: var(--r-md);
}

.zc-export-action-btn svg {
  flex: none;
  width: 22px;
  height: 22px;
}

.zc-btn-title {
  font-size: 13.5px;
  font-weight: 650;
}

.zc-btn-sub {
  font-size: 11.5px;
  opacity: 0.75;
  margin-top: 2px;
}

/* Boards */
.zc-boards-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-height: 320px;
  overflow-y: auto;
  margin-bottom: 16px;
}

.zc-board-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 8px 8px 14px;
  background: var(--fill);
  border-radius: var(--r-md);
  border: 1px solid var(--border);
  cursor: pointer;
  transition: background var(--t-fast), border-color var(--t-fast);
}

.zc-board-item:hover {
  border-color: var(--border-strong);
  background: var(--fill-2);
}

.zc-board-item.is-active {
  border-color: var(--accent);
  background: var(--accent-soft);
}

.zc-board-main {
  min-width: 0;
  flex: 1;
}

.zc-board-name {
  font-size: 13.5px;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.zc-board-rename {
  height: 30px;
  font-size: 13.5px;
}

.zc-board-meta {
  font-size: 11.5px;
  color: var(--text-3);
}

.zc-board-actions {
  display: flex;
  align-items: center;
  gap: 2px;
}

.zc-board-actions .zc-icon-btn {
  width: 30px;
  height: 30px;
}

.zc-board-actions .zc-icon-btn svg {
  width: 15px;
  height: 15px;
}

.zc-boards-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  border-top: 1px solid var(--border);
  padding-top: 14px;
}

.zc-boards-footer .btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.zc-boards-footer svg {
  width: 15px;
  height: 15px;
}

/* Shortcuts */
.zc-shortcuts-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 4px 22px;
}

.zc-sc-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 6px 0;
  border-bottom: 1px dashed var(--border);
  font-size: 12px;
  color: var(--text-3);
}

.zc-sc-action {
  font-size: 12.5px;
  color: var(--text-2);
}

kbd {
  font-family: var(--font-num);
  font-size: 11px;
  font-weight: 650;
  padding: 2px 6px;
  background: var(--fill);
  border: 1px solid var(--border);
  border-radius: 5px;
  color: var(--text-2);
  white-space: nowrap;
}

/* Toast */
.toast-banner {
  position: fixed;
  top: 78px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 2600;
  max-width: calc(100vw - 32px);
  padding: 9px 18px;
  font-size: 13px;
  text-align: center;
  pointer-events: none;
}

/* ---------- Keyframes ---------- */
@keyframes popIn {
  from { opacity: 0; transform: scale(0.94) translateY(-4px); }
  to { opacity: 1; transform: none; }
}

@keyframes popUp {
  from { opacity: 0; transform: translate(-50%, 6px) scale(0.96); }
  to { opacity: 1; transform: translate(-50%, 0); }
}

@keyframes floatUp {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: none; }
}

@keyframes slideUp {
  from { opacity: 0; transform: translate(-50%, 20px); }
  to { opacity: 1; transform: translate(-50%, 0); }
}

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes zcSpin {
  to { transform: rotate(360deg); }
}

@keyframes zcPulse {
  50% { opacity: 0.35; }
}

/* ---------- Responsive ---------- */
@media (max-width: 1180px) {
  .zc-mode-btn span,
  .zc-templates-btn span {
    display: none;
  }
  .zc-mode-btn {
    padding: 6px 10px;
  }
  .zc-templates-btn {
    width: 34px;
    padding: 0;
    justify-content: center;
  }
}

@media (max-width: 860px) {
  .zc-header {
    top: 8px;
    left: 8px;
    right: 8px;
    height: auto;
    min-height: 48px;
    flex-wrap: wrap;
    padding: 6px 8px;
    row-gap: 6px;
  }
  .zc-header-left,
  .zc-header-right {
    flex: 1 1 auto;
  }
  .zc-header-center {
    order: 3;
    flex: 1 1 100%;
    justify-content: center;
  }
  .zc-save-chip span:last-child,
  .zc-export-btn span,
  .zc-help-btn,
  .zc-templates-btn {
    display: none;
  }
  .zc-export-btn {
    width: 34px;
    padding: 0;
    justify-content: center;
  }
  .zc-board-title {
    width: 12ch;
  }
  .zc-minimap-card {
    display: none;
  }
  .toast-banner {
    top: 110px;
  }
}

@media (max-width: 640px) {
  /* Header becomes two rows: project + undo/export, then modes + view / project menus */
  .zc-header {
    justify-content: space-between;
    column-gap: 6px;
  }
  .zc-header-left,
  .zc-header-center,
  .zc-header-right {
    display: contents;
  }
  #btn-back-projects { order: 1; }
  .zc-brand { order: 2; flex: 1 1 0; min-width: 0; border-left: none; padding-left: 0; }
  .zc-history-group { order: 3; }
  .zc-export-btn { order: 4; }
  .zc-header::after {
    content: '';
    order: 5;
    flex-basis: 100%;
    height: 0;
  }
  .zc-modes-nav { order: 6; }
  .zc-view-wrap { order: 7; }
  .zc-project-wrap { order: 8; }
  .zc-header .btn-theme-toggle { order: 9; }
  .zc-board-title {
    width: 100%;
    min-width: 0;
    max-width: none;
  }
  .toast-banner {
    top: 104px;
  }
  .zc-projects-inner {
    padding: 14px 16px 48px;
  }
  .zc-projects-tools {
    width: 100%;
  }
  .zc-search {
    flex: 1;
  }
  .zc-search input {
    width: 100%;
  }
  .zc-project-grid {
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 10px;
  }
  .zc-banner {
    flex-wrap: wrap;
  }
  .zc-dock-wrap {
    bottom: 10px;
    width: max-content;
  }
  /* Two compact rows instead of a scroller, so the shape / sticker popovers aren't clipped */
  .zc-dock-bar {
    flex-wrap: wrap;
    justify-content: center;
    max-width: calc(8 * 40px + 12px);
    padding: 5px;
    gap: 2px;
  }
  .zc-dock-sep,
  .zc-key-hint {
    display: none;
  }
  .zc-tool-btn {
    width: 38px;
    height: 38px;
  }
  .zc-bottom-hud {
    bottom: 104px;
    left: 10px;
    right: 10px;
  }
  .zc-shortcuts-grid {
    grid-template-columns: 1fr;
  }
  .zc-board-chip {
    max-width: 96px;
  }
  .zc-brand {
    padding-left: 4px;
  }
}
