/*
 * Obsidian Canvas — inline SVG styling.
 * Color tokens follow JSON Canvas spec preset 1-6 (red/orange/yellow/green/cyan/purple).
 * Override --canvas-color-* at :root in a future dark-mode sheet.
 */

:root {
  --canvas-bg: #fafafa;
  --canvas-border: #d8d8d8;
  --canvas-node-bg: #fff;
  --canvas-node-fg: #222;
  --canvas-node-shadow: 0 1px 2px rgb(0 0 0 / 0.08);
  --canvas-edge-color: #999;
  --canvas-group-bg: rgb(0 0 0 / 0.03);
  --canvas-unpublished-fg: #999;
  --canvas-color-1: #e74c3c;
  --canvas-color-2: #f39c12;
  --canvas-color-3: #f1c40f;
  --canvas-color-4: #2ecc71;
  --canvas-color-5: #3498db;
  --canvas-color-6: #9b59b6;
}

.canvas-embed {
  position: relative;
  display: block;
  width: fit-content;
  max-width: 100%;
  margin: 1.5em auto;
  padding: 6px;
  background: var(--canvas-bg);
  border: 1px solid var(--canvas-border);
  border-radius: 8px;
  overflow: hidden;
  cursor: zoom-in;
  transition: box-shadow 0.15s ease;
}

.canvas-embed:hover,
.canvas-embed:focus-visible {
  box-shadow: 0 0 0 2px var(--canvas-color-5);
  outline: none;
}

.canvas-embed__expand {
  position: absolute;
  right: 10px;
  bottom: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  padding: 0;
  font-size: 13px;
  line-height: 1;
  color: #555;
  background: rgb(255 255 255 / 0.9);
  border: 1px solid var(--canvas-border);
  border-radius: 5px;
  cursor: zoom-in;
  pointer-events: none;
}

.canvas-embed--error {
  padding: 1em;
  color: #c00;
  background: #fee;
}

.canvas-svg {
  display: block;
  max-width: 100%;
  height: auto;
}

.canvas-node__bg {
  fill: var(--canvas-node-bg);
  stroke: var(--canvas-border);
  stroke-width: 1;
  filter: drop-shadow(0 1px 1px rgb(0 0 0 / 0.08));
}

.canvas-node[data-color='1'] .canvas-node__bg {
  stroke: var(--canvas-color-1);
  fill: color-mix(in srgb, var(--canvas-color-1) 14%, var(--canvas-node-bg));
}
.canvas-node[data-color='2'] .canvas-node__bg {
  stroke: var(--canvas-color-2);
  fill: color-mix(in srgb, var(--canvas-color-2) 14%, var(--canvas-node-bg));
}
.canvas-node[data-color='3'] .canvas-node__bg {
  stroke: var(--canvas-color-3);
  fill: color-mix(in srgb, var(--canvas-color-3) 14%, var(--canvas-node-bg));
}
.canvas-node[data-color='4'] .canvas-node__bg {
  stroke: var(--canvas-color-4);
  fill: color-mix(in srgb, var(--canvas-color-4) 14%, var(--canvas-node-bg));
}
.canvas-node[data-color='5'] .canvas-node__bg {
  stroke: var(--canvas-color-5);
  fill: color-mix(in srgb, var(--canvas-color-5) 14%, var(--canvas-node-bg));
}
.canvas-node[data-color='6'] .canvas-node__bg {
  stroke: var(--canvas-color-6);
  fill: color-mix(in srgb, var(--canvas-color-6) 14%, var(--canvas-node-bg));
}
.canvas-node[data-color='custom'] .canvas-node__bg {
  stroke: var(--canvas-node-accent, var(--canvas-border));
  fill: color-mix(
    in srgb,
    var(--canvas-node-accent, var(--canvas-border)) 14%,
    var(--canvas-node-bg)
  );
}

.canvas-node__body {
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  padding: 6px 10px;
  overflow: hidden;
  font-size: 13px;
  line-height: 1.35;
  color: var(--canvas-node-fg);
}

.canvas-node__body > :first-child {
  margin-top: 0;
}

.canvas-node__body > :last-child {
  margin-bottom: 0;
}

/*
 * Reset theme typography that bleeds into the foreignObject.
 * pages/post.css sets `.content p { font-size: 20px; line-height: 30px }` and
 * similar rules for headings; without explicit overrides those win the cascade
 * (same specificity, but .content p is also a single class+element selector).
 */
.canvas-node__body p,
.canvas-node__body ul,
.canvas-node__body ol,
.canvas-node__body li,
.canvas-node__body blockquote {
  margin: 0;
  padding: 0;
  font-size: inherit;
  line-height: inherit;
  font-family: inherit;
  color: inherit;
}

.canvas-node__body ul,
.canvas-node__body ol {
  padding-left: 1.2em;
}

.canvas-node__body code {
  display: inline;
  padding: 0 3px;
  font-size: 0.92em;
  line-height: inherit;
  background: rgb(0 0 0 / 0.06);
  border-radius: 3px;
}

.canvas-node__body h1,
.canvas-node__body h2,
.canvas-node__body h3,
.canvas-node__body h4,
.canvas-node__body h5,
.canvas-node__body h6,
.canvas-node__heading {
  margin: 0 0 0.2em;
  padding: 0;
  font-size: 1.05em;
  line-height: 1.3;
  /* canvas-processor demotes node-title <hN> to <div class="canvas-node__heading">
     so the TOC ignores them; restore the bold weight the <hN> got for free. */
  font-weight: 700;
  font-family: inherit;
  color: inherit;
}

.canvas-node__body--placeholder {
  color: var(--canvas-unpublished-fg);
}

.canvas-node__link {
  display: inline-block;
  color: inherit;
  text-decoration: none;
}

.canvas-node--file .canvas-node__link,
.canvas-node--link .canvas-node__link {
  color: var(--canvas-color-5);
}

.canvas-node__link--unpublished {
  color: var(--canvas-unpublished-fg);
  cursor: not-allowed;
  text-decoration: line-through;
}

.canvas-group__bg {
  fill: var(--canvas-group-bg);
  stroke: var(--canvas-border);
  stroke-dasharray: 4 4;
}

.canvas-group__label {
  font-size: 14px;
  font-weight: 600;
  fill: var(--canvas-node-fg);
}

.canvas-edge {
  stroke: var(--canvas-edge-color);
  stroke-width: 1.5;
  fill: none;
}

.canvas-edge-group[data-color='1'] .canvas-edge {
  stroke: var(--canvas-color-1);
}
.canvas-edge-group[data-color='2'] .canvas-edge {
  stroke: var(--canvas-color-2);
}
.canvas-edge-group[data-color='3'] .canvas-edge {
  stroke: var(--canvas-color-3);
}
.canvas-edge-group[data-color='4'] .canvas-edge {
  stroke: var(--canvas-color-4);
}
.canvas-edge-group[data-color='5'] .canvas-edge {
  stroke: var(--canvas-color-5);
}
.canvas-edge-group[data-color='6'] .canvas-edge {
  stroke: var(--canvas-color-6);
}

.canvas-edge__label {
  font-size: 11px;
  fill: var(--canvas-node-fg);
}

.canvas-svg marker path {
  fill: var(--canvas-edge-color);
}

/* -- Fullscreen viewer modal ------------------------------------------ */

body.canvas-modal-open {
  overflow: hidden;
}

.canvas-modal {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
}

.canvas-modal__overlay {
  position: absolute;
  inset: 0;
  background: rgb(0 0 0 / 0.75);
  cursor: zoom-out;
}

.canvas-modal__inner {
  position: relative;
  width: 80vw;
  height: 80vh;
  background: var(--canvas-bg);
  border-radius: 12px;
  box-shadow: 0 12px 48px rgb(0 0 0 / 0.5);
  overflow: hidden;
}

.canvas-modal__viewport {
  width: 100%;
  height: 100%;
  overflow: hidden;
}

.canvas-modal__svg {
  width: 100%;
  height: 100%;
  max-height: none;
  user-select: none;
}

.canvas-modal__svg .canvas-node {
  cursor: move;
}

.canvas-modal__svg .canvas-node.is-dragging .canvas-node__bg,
.canvas-modal__svg .canvas-node.is-dragging .canvas-group__bg {
  stroke-width: 2;
  filter: drop-shadow(0 3px 4px rgb(0 0 0 / 0.18));
}

.canvas-modal__hint {
  position: absolute;
  top: 14px;
  left: 14px;
  padding: 6px 10px;
  font-size: 12px;
  color: #555;
  background: rgb(255 255 255 / 0.92);
  border: 1px solid var(--canvas-border);
  border-radius: 999px;
  box-shadow: 0 1px 4px rgb(0 0 0 / 0.1);
  pointer-events: none;
  z-index: 2;
  animation: canvas-hint-fade 4s 1.5s forwards;
}

.canvas-modal__close {
  position: absolute;
  top: 12px;
  right: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  font-size: 22px;
  line-height: 1;
  color: #444;
  background: rgb(255 255 255 / 0.9);
  border: 1px solid var(--canvas-border);
  border-radius: 50%;
  cursor: pointer;
  z-index: 2;
}

.canvas-modal__close:hover {
  background: #fff;
}

.canvas-modal__controls {
  position: absolute;
  bottom: 16px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 6px;
  padding: 6px;
  background: rgb(255 255 255 / 0.95);
  border: 1px solid var(--canvas-border);
  border-radius: 999px;
  box-shadow: 0 2px 8px rgb(0 0 0 / 0.15);
  z-index: 2;
}

.canvas-modal__btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  font-size: 18px;
  line-height: 1;
  color: #333;
  background: transparent;
  border: none;
  border-radius: 50%;
  cursor: pointer;
}

.canvas-modal__btn:hover {
  background: rgb(0 0 0 / 0.06);
}

.canvas-modal__btn--wide {
  width: auto;
  padding: 0 10px;
  margin-left: 2px;
  font-size: 12px;
  border-left: 1px solid var(--canvas-border);
  border-radius: 0 999px 999px 0;
}

@keyframes canvas-hint-fade {
  to {
    opacity: 0;
  }
}
