/* —— Thème Forge (atelier lore, papier + notes rouges) —— */
html[data-theme="forge"] {
  color-scheme: light;
  --bg: #f0ece8;
  --bg-sidebar: #e6dedc;
  --ink: #1f1c18;
  --muted: #6f6464;
  --accent: #7a3838;
  --border: #d8cbcb;
  --bar: #7a3838;
  --danger: #9a3030;
  --surface: #faf6f4;
  --mix: #faf6f4;
  --wash: rgba(122, 56, 56, 0.05);
  --on-accent: #faf6f4;
  --chart-grid: #d8cbcb;
  --accent-soft: #ead6d6;
  --add: #2f6b45;
  --forge-rail: #ddd2d0;
  --forge-inset: #f6f0ee;
  --forge-shadow: rgba(122, 56, 56, 0.07);
}

html[data-theme="forge"] .forge-body,
html[data-theme="forge"] .forge-app,
html[data-theme="forge"] .forge-chrome,
html[data-theme="forge"] .forge-rail,
html[data-theme="forge"] .forge-main,
html[data-theme="forge"] .capture-side,
html[data-theme="forge"] .dispatch-inner {
  transition: background-color 0.35s ease, color 0.35s ease, border-color 0.35s ease;
}

.forge-body,
.forge-app {
  height: 100dvh;
  overflow: hidden;
  background: var(--bg);
}

.forge-chrome {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  padding: 0.55rem 1rem;
  border-bottom: 1px solid var(--border);
  background: color-mix(in srgb, var(--surface) 50%, var(--bg));
  box-shadow: 0 1px 0 color-mix(in srgb, var(--ink) 4%, transparent);
  font-family: var(--sans);
  min-height: 3.25rem;
  overflow: hidden;
}

.forge-chrome .btn-menu {
  flex-shrink: 0;
  align-self: center;
  min-width: 44px;
  min-height: 44px;
}

.forge-space-nav {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.2rem;
  flex-shrink: 0;
  max-width: 0;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
  transition: max-width 0.28s ease, opacity 0.22s ease;
}

.forge-chrome.is-nav-open .forge-space-nav {
  max-width: 28rem;
  opacity: 1;
  pointer-events: auto;
}

.forge-chrome .space-btn {
  appearance: none;
  text-decoration: none;
  font-family: var(--sans);
  font-size: 0.68rem;
  padding: 0.3rem 0.45rem;
  border-radius: 0.35rem;
  border: 1px solid var(--border);
  background: var(--surface, #fff);
  color: var(--muted);
  cursor: pointer;
  white-space: nowrap;
  flex-shrink: 0;
}

.forge-chrome .space-btn.active {
  background: var(--accent);
  color: var(--on-accent);
  border-color: var(--accent);
}

.forge-chrome .space-btn:hover:not(.active) {
  color: var(--ink);
  border-color: color-mix(in srgb, var(--accent) 35%, var(--border));
}

.forge-chrome .book-home {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 0.5rem;
  padding: 0;
  border: none;
  min-width: 0;
  text-decoration: none;
  color: inherit;
}
.forge-chrome .book-home[hidden] {
  display: none;
}
.forge-chrome .book-home-icon {
  width: 1.85rem;
  height: 1.85rem;
  border-radius: 50%;
  flex-shrink: 0;
  display: block;
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--ink) 16%, transparent);
}
.forge-chrome .book-home-current {
  font-family: var(--serif);
  font-size: 1.05rem;
  font-weight: 500;
  line-height: 1.2;
  min-width: 0;
}

.forge-kicker {
  margin: 0;
  font-size: 0.68rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
}

.forge-title {
  margin: 0;
  font-family: var(--serif);
  font-weight: 500;
  font-size: 1.05rem;
}

.forge-title-wrap { flex: 1; min-width: 0; }

.forge-analysis-status {
  font-size: 0.72rem;
  color: var(--muted);
  max-width: 14rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: right;
}

.forge-analysis-status.is-wait,
.forge-analysis-status.is-running {
  color: var(--accent);
}

.forge-analysis-status.is-running {
  animation: forge-analysis-pulse 1.35s ease-in-out infinite;
}

.forge-analysis-status.is-done {
  color: var(--forge-ok, #3d6b5a);
  animation: forge-analysis-done 1.1s ease;
}

.forge-analysis-status.is-fail {
  color: var(--forge-danger, #8a3d3d);
}

.forge-status {
  font-size: 0.72rem;
  color: var(--muted);
  min-width: 4.5rem;
  text-align: right;
}

@keyframes forge-analysis-pulse {
  0%, 100% { opacity: 0.55; }
  50% { opacity: 1; }
}

@keyframes forge-analysis-done {
  0% { background: color-mix(in srgb, var(--forge-ok, #3d6b5a) 28%, transparent); }
  100% { background: transparent; }
}

@keyframes forge-analysis-bar {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(320%); }
}

@keyframes forge-analyze-spin {
  to { transform: rotate(360deg); }
}

.btn.is-analyzing {
  pointer-events: none;
  border-color: color-mix(in srgb, var(--accent) 55%, var(--border));
  background: color-mix(in srgb, var(--accent) 10%, var(--bg));
  color: var(--accent);
}

.btn-analyze-spinner {
  display: inline-block;
  width: 0.82em;
  height: 0.82em;
  margin-right: 0.38em;
  border: 1.5px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  vertical-align: -0.12em;
  animation: forge-analyze-spin 0.72s linear infinite;
}

.btn-analyze-label {
  vertical-align: middle;
}

.triage-analyze.is-analyzing {
  font-weight: 500;
}

.btn.is-analyze-done {
  animation: forge-analysis-done 1.1s ease;
  border-color: color-mix(in srgb, var(--forge-ok, #3d6b5a) 55%, var(--border));
  color: var(--forge-ok, #3d6b5a);
}

.forge-layout {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  height: calc(100dvh - 3.25rem);
}

.forge-rail {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.35rem;
  padding: 0.75rem 0.45rem;
  border-right: 1px solid color-mix(in srgb, var(--border) 75%, var(--accent) 25%);
  background: var(--forge-rail, color-mix(in srgb, var(--bg-sidebar) 40%, var(--bg)));
}

.forge-rail .rail-btn[data-view="capture"] { --tab-accent: var(--accent); }
.forge-rail .rail-btn[data-view="file"] { --tab-accent: #b8a82a; }
.forge-rail .rail-btn[data-view="triage"] { --tab-accent: #3d6b5a; }
.forge-rail .rail-btn[data-view="fiches"] { --tab-accent: #b8367a; }
.forge-rail .rail-btn[data-view="trame"] { --tab-accent: #8c5a32; }
.forge-rail .rail-btn[data-view="liens"] { --tab-accent: #5a4a7a; }
.forge-rail .rail-btn[data-view="recherche"] { --tab-accent: #666666; }

.forge-rail .rail-btn {
  position: relative;
  border: none;
  background: transparent;
  width: 2.35rem;
  height: 2.35rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 0.35rem;
  cursor: pointer;
  color: color-mix(in srgb, var(--tab-accent, var(--muted)) 38%, var(--muted));
  padding: 0;
  box-shadow: inset 0 -2px 0 transparent;
  transition: color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease;
}

.forge-rail .rail-btn svg {
  width: 1.2rem;
  height: 1.2rem;
  display: block;
}

.forge-rail .rail-btn:hover {
  background: color-mix(in srgb, var(--tab-accent, var(--border)) 10%, transparent);
  color: var(--tab-accent, var(--ink));
}

.forge-rail .rail-btn.active {
  background: color-mix(in srgb, var(--tab-accent, var(--accent)) 12%, transparent);
  color: var(--tab-accent, var(--accent));
  box-shadow: inset 0 -2px 0 var(--tab-accent, var(--accent));
}

.rail-badge {
  position: absolute;
  top: 0.1rem;
  right: 0.05rem;
  min-width: 0.95rem;
  height: 0.95rem;
  padding: 0 0.2rem;
  border-radius: 999px;
  background: var(--ink);
  color: var(--bg);
  font-size: 0.58rem;
  font-family: var(--sans);
  line-height: 0.95rem;
  text-align: center;
}

.forge-rail .rail-btn.active .rail-badge {
  background: var(--tab-accent, var(--accent));
  color: var(--on-accent, #fff);
}

.forge-main {
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.forge-pane {
  flex: 1;
  min-height: 0;
  overflow: auto;
  display: none;
  flex-direction: column;
}

.forge-pane.active { display: flex; }
.forge-pane[hidden] { display: none !important; }

#pane-capture,
#pane-file,
#pane-fiches,
#pane-liens,
#pane-trame {
  overflow: hidden;
}

.forge-placeholder {
  margin: auto;
  font-family: var(--sans);
  font-size: 0.9rem;
  letter-spacing: 0.06em;
}

.forge-toast {
  position: fixed;
  bottom: 1.2rem;
  left: 50%;
  transform: translateX(-50%);
  background: var(--ink);
  color: var(--bg);
  font-family: var(--sans);
  font-size: 0.8rem;
  padding: 0.45rem 0.8rem;
  border-radius: 999px;
  z-index: 40;
  max-width: min(28rem, calc(100vw - 2rem));
  text-align: center;
}

/* Capture */
.capture-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 16rem;
  grid-template-rows: minmax(0, 1fr);
  flex: 1;
  min-height: 0;
  height: 100%;
}

.capture-editor {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  padding: 1.1rem clamp(1rem, 3vw, 2.5rem) 1rem;
  min-width: 0;
  min-height: 0;
  height: 100%;
  position: relative;
}

.capture-head {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  flex-shrink: 0;
}

.capture-head-tools {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  flex-shrink: 0;
  min-width: 0;
}

.capture-title {
  flex: 1;
  min-width: 0;
  border: 0;
  border-bottom: 1px solid var(--border);
  background: transparent;
  color: var(--ink);
  font-family: var(--serif);
  font-size: 1.25rem;
  padding: 0.35rem 0;
}

.capture-actions {
  display: flex;
  align-items: center;
  gap: 0.2rem;
  flex-shrink: 0;
}

.capture-actions .icon-btn {
  min-width: 2.25rem;
  min-height: 2.25rem;
  padding: 0.35rem;
  border: 1px solid color-mix(in srgb, var(--border) 85%, transparent);
  border-radius: 0.35rem;
}

.capture-actions .icon-btn:hover {
  border-color: var(--border);
  background: color-mix(in srgb, var(--surface) 80%, var(--border));
}

.capture-actions .icon-btn.capture-action-save {
  background: var(--accent);
  color: var(--on-accent);
  border-color: var(--accent);
}

.capture-actions .icon-btn.capture-action-save:hover {
  background: color-mix(in srgb, var(--accent) 88%, var(--ink));
  border-color: color-mix(in srgb, var(--accent) 88%, var(--ink));
}

.capture-actions .icon-btn.capture-action-delete:hover {
  color: var(--danger);
  border-color: color-mix(in srgb, var(--danger) 45%, var(--border));
  background: color-mix(in srgb, var(--danger) 8%, transparent);
}

.capture-actions .icon-btn.is-analyzing {
  pointer-events: none;
  border-color: color-mix(in srgb, var(--accent) 55%, var(--border));
  color: var(--accent);
}

.capture-actions .icon-btn.is-analyze-done {
  border-color: color-mix(in srgb, var(--forge-ok, #3d6b5a) 55%, var(--border));
  color: var(--forge-ok, #3d6b5a);
}

.capture-actions .icon-btn .btn-analyze-spinner {
  margin: 0;
}

.capture-export-mount .export-menu-toggle.icon-btn {
  min-width: 2.25rem;
  min-height: 2.25rem;
  padding: 0.35rem;
}

.capture-body-wrap {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 10rem;
  flex: 1 1 auto;
}

.capture-body-wrap .tag-field {
  flex: 1;
  min-height: 0;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--border) 70%, var(--accent) 30%);
  border-radius: 0.5rem;
  background: var(--forge-inset, var(--surface, #fff));
  box-shadow: inset 0 1px 2px var(--forge-shadow, rgba(0, 0, 0, 0.04));
}

.capture-body-wrap .tag-field textarea {
  flex: 1;
  min-height: 0;
  height: 100%;
  width: 100%;
  border: 0;
  background: transparent;
  resize: none;
  overflow: auto;
  font-family: var(--serif);
  font-size: 1rem;
  line-height: 1.55;
  padding: 0.85rem 1rem;
}

.reformat-panel {
  margin-top: 0.65rem;
  padding: 0.75rem 0.85rem;
  border: 1px solid var(--border);
  border-radius: 0.5rem;
  background: var(--forge-inset, var(--surface, #fff));
}

.reformat-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.35rem;
}

.reformat-scope {
  font-family: var(--sans, sans-serif);
  font-size: 0.82rem;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--muted, #666);
}

.reformat-engine {
  font-family: var(--sans, sans-serif);
  font-size: 0.78rem;
  color: var(--muted, #666);
}

.reformat-hint {
  margin: 0 0 0.5rem;
  font-size: 0.88rem;
}

.reformat-preview {
  margin: 0 0 0.45rem;
  font-family: var(--sans, sans-serif);
  font-size: 0.82rem;
}

.reformat-proposal {
  margin: 0 0 0.65rem;
  padding: 0.55rem 0.75rem;
  border-left: 2px solid var(--accent);
  font-family: var(--serif);
  font-size: 0.95rem;
  line-height: 1.5;
  white-space: pre-wrap;
}

.reformat-suggestions h3 {
  margin: 0 0 0.35rem;
  font-family: var(--sans, sans-serif);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--muted, #666);
}

.reformat-suggestion-row {
  display: flex;
  align-items: flex-start;
  gap: 0.45rem;
  margin: 0.25rem 0;
  font-size: 0.92rem;
  line-height: 1.45;
  cursor: pointer;
}

.reformat-suggestion-row input {
  margin-top: 0.2rem;
  flex-shrink: 0;
}

.reformat-decide {
  display: flex;
  gap: 0.35rem;
  margin-top: 0.65rem;
}

.capture-meta {
  --meta-peek: 2.8rem;
  --meta-expand: min(40vh, 18rem);
  --meta-fade: 1.1rem;
  flex: 0 0 auto;
  min-height: 0;
  min-width: 0;
  position: relative;
  display: flex;
  flex-direction: column;
  padding: 0.55rem 0 0.15rem;
  border-top: 1px solid var(--border);
  font-family: var(--sans);
  font-size: 0.82rem;
  z-index: 5;
}

.capture-meta[hidden] { display: none; }

.capture-meta-clip {
  position: relative;
  flex: 1 1 auto;
  min-height: 0;
}

.capture-meta-body {
  display: grid;
  grid-template-columns: minmax(9rem, 0.7fr) minmax(14rem, 1.3fr);
  align-content: start;
  gap: 0.75rem 1.25rem;
  min-width: 0;
}

.capture-meta.is-clipped .capture-meta-clip {
  max-height: var(--meta-peek);
  overflow: hidden;
}

.capture-meta.is-clipped .capture-meta-body {
  overflow: hidden;
  -webkit-mask-image: linear-gradient(
    to bottom,
    #000 0,
    #000 calc(100% - var(--meta-fade)),
    transparent 100%
  );
  mask-image: linear-gradient(
    to bottom,
    #000 0,
    #000 calc(100% - var(--meta-fade)),
    transparent 100%
  );
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
}

.capture-meta.is-clipped:not(.is-open) .capture-meta-clip::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: var(--meta-fade);
  pointer-events: none;
  background: linear-gradient(
    to bottom,
    transparent,
    color-mix(in srgb, var(--forge-inset, var(--bg)) 35%, var(--bg))
  );
}

.capture-meta.is-clipped.is-open .capture-meta-clip {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 12;
  max-height: var(--meta-expand);
  overflow-y: auto;
  padding: 0.55rem clamp(1rem, 3vw, 2.5rem) 0.85rem;
  border-top: 1px solid var(--border);
  background: color-mix(in srgb, var(--surface) 92%, var(--bg));
  box-shadow: 0 -6px 20px color-mix(in srgb, var(--ink) 10%, transparent);
}

.capture-meta.is-clipped.is-open .capture-meta-body {
  overflow: visible;
  -webkit-mask-image: none;
  mask-image: none;
}

.capture-meta.is-clipped.is-open .capture-meta-clip::after {
  display: none;
}

@media (hover: hover) and (pointer: fine) {
  .capture-meta.is-clipped:not(.is-open):hover .capture-meta-clip {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 12;
    max-height: var(--meta-expand);
    overflow-y: auto;
    padding: 0.55rem clamp(1rem, 3vw, 2.5rem) 0.85rem;
    border-top: 1px solid var(--border);
    background: color-mix(in srgb, var(--surface) 92%, var(--bg));
    box-shadow: 0 -6px 20px color-mix(in srgb, var(--ink) 10%, transparent);
  }

  .capture-meta.is-clipped:not(.is-open):hover .capture-meta-body {
    overflow: visible;
    -webkit-mask-image: none;
    mask-image: none;
  }

  .capture-meta.is-clipped:not(.is-open):hover .capture-meta-clip::after {
    display: none;
  }
}

@media (prefers-reduced-motion: no-preference) {
  .capture-meta.is-clipped .capture-meta-clip {
    transition: max-height 0.28s ease;
  }
}

.capture-col {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  min-width: 0;
}

.capture-col[hidden] {
  display: none;
}

.capture-meta-body:has(.capture-col[hidden]) {
  grid-template-columns: 1fr;
}

.capture-group-toggle {
  display: flex;
  align-items: center;
  gap: 0.28rem;
  width: 100%;
  margin: 0 0 0.4rem;
  padding: 0.08rem 0.12rem;
  border: 0;
  border-radius: 0.2rem;
  background: transparent;
  font: inherit;
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 500;
  text-align: left;
  cursor: pointer;
}

.capture-group-toggle:hover,
.capture-group-toggle:focus-visible {
  color: var(--ink);
  background: color-mix(in srgb, var(--accent) 6%, transparent);
  outline: none;
}

.capture-group-chevron {
  flex-shrink: 0;
  color: var(--muted);
  transition: transform 0.2s ease;
}

.capture-group.is-collapsed .capture-group-chevron {
  transform: rotate(-90deg);
}

.capture-group-title {
  flex: 1;
  min-width: 0;
}

.capture-group-count {
  flex-shrink: 0;
  font-variant-numeric: tabular-nums;
  opacity: 0.72;
}

.capture-group.is-collapsed .capture-group-body {
  display: none;
}

.capture-scene-stack {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.capture-nested {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  margin: 0.05rem 0 0.15rem;
  padding-left: 0.65rem;
  border-left: 1px solid var(--border);
}

.imp-when {
  flex-shrink: 0;
  font-size: 0.58rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--when, var(--type, var(--muted)));
  border: 1px solid color-mix(in srgb, var(--when, var(--type, var(--border))) 45%, var(--border));
  border-radius: 0.18rem;
  padding: 0.06rem 0.28rem;
  line-height: 1.2;
}

.capture-links,
.capture-implications {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  margin: 0;
}

.capture-links .meta-chip,
.capture-implications .meta-chip {
  width: 100%;
}

.capture-side {
  border-left: 1px solid color-mix(in srgb, var(--border) 75%, var(--accent) 25%);
  min-height: 0;
  height: 100%;
  overflow: auto;
  padding: 0.85rem 0.65rem 1.5rem;
  background: color-mix(in srgb, var(--bg-sidebar) 55%, var(--bg));
  font-family: var(--sans);
}

.capture-side-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.65rem;
  flex-wrap: wrap;
}

.capture-side-head h2 {
  margin: 0;
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 500;
}

.capture-note-list {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}

.capture-note-row {
  display: flex;
  align-items: stretch;
  gap: 0.15rem;
}

.capture-note-row .capture-note-item {
  flex: 1;
  min-width: 0;
}

.capture-note-del {
  flex: 0 0 auto;
  width: 1.75rem;
  align-self: center;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1.5px solid transparent;
  background: transparent;
  color: var(--muted);
  font-size: 1.15rem;
  line-height: 1;
  border-radius: 50%;
  cursor: pointer;
}

.capture-note-del:hover {
  color: var(--danger);
  background: rgba(138, 47, 47, 0.08);
}

.capture-note-item {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-width: 0;
  width: 100%;
  text-align: left;
  border: 1px solid color-mix(in srgb, var(--border) 85%, transparent);
  border-radius: 0.35rem;
  background: transparent;
  padding: 0.4rem 0.45rem;
  cursor: pointer;
  color: var(--ink);
  font: inherit;
}

.capture-note-item:hover {
  border-color: var(--border);
  background: color-mix(in srgb, var(--surface) 80%, transparent);
}

.capture-note-item.active {
  border-color: var(--accent);
  background: color-mix(in srgb, var(--accent) 8%, transparent);
}

.capture-note-item strong {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.capture-note-item .note-preview {
  font-size: 0.72rem;
  color: var(--muted);
  margin-top: 0.15rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.capture-badges {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.5rem;
  flex-shrink: 0;
  min-height: 0;
}

.capture-badges[hidden] {
  display: none;
}

.capture-head-tools .capture-cast {
  display: flex;
  align-items: center;
  flex: 0 1 auto;
  min-width: 0;
  max-width: min(14rem, 42vw);
}

.capture-cast {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.35rem;
  flex-shrink: 0;
  min-height: 0;
}

.capture-cast-row {
  display: flex;
  align-items: center;
  gap: 0.15rem;
  min-width: 0;
  position: relative;
}

.capture-cast-icons {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.35rem;
  max-height: 1.65rem;
  overflow: hidden;
}

.capture-head-tools .capture-cast-icons {
  max-width: none;
}

.capture-cast-row.is-cast-compact .capture-cast-icons {
  display: none !important;
}

.capture-cast-row.is-cast-compact.is-cast-expanded .capture-cast-icons {
  display: flex !important;
  max-height: none;
  max-width: none;
}

.capture-cast-row.is-cast-compact.is-cast-expanded .note-cast-overflow {
  display: none !important;
}

@media (hover: hover) and (pointer: fine) {
  .capture-cast-row.is-cast-compact:hover .capture-cast-icons {
    display: flex !important;
    max-height: none;
    max-width: none;
  }

  .capture-cast-row.is-cast-compact:hover .note-cast-overflow {
    display: none !important;
  }
}

.capture-cast[hidden] {
  display: none;
}

.capture-ref-tags {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.3rem;
  min-width: 0;
}

.capture-ref-tags[hidden] {
  display: none;
}

.capture-cast-icon,
.note-cast-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: 1px solid color-mix(in srgb, var(--cast, var(--border)) 55%, var(--border));
  border-radius: 50%;
  background: color-mix(in srgb, var(--cast, var(--accent)) 10%, var(--surface, #fff));
  cursor: pointer;
  flex-shrink: 0;
}

.capture-cast-icon {
  width: 1.65rem;
  height: 1.65rem;
}

.note-cast-icon {
  width: 1.15rem;
  height: 1.15rem;
}

.capture-cast-icon:hover,
.capture-cast-icon:focus-visible,
.note-cast-icon:hover,
.note-cast-icon:focus-visible {
  border-color: var(--cast, var(--accent));
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--cast, var(--accent)) 22%, transparent);
}

.capture-cast-icon .cast-icon {
  width: 1.05rem;
  height: 1.05rem;
  display: block;
}

.note-cast-icon .cast-icon,
.note-cast-pop-item .cast-icon {
  width: 0.78rem;
  height: 0.78rem;
  display: block;
}

.capture-note-item.has-aside::before,
.capture-note-item.has-cast::before {
  content: "";
  position: absolute;
  top: -1px;
  bottom: -1px;
  left: -1px;
  width: 3px;
  border-radius: 0.35rem 0 0 0.35rem;
  background: var(--note-cast-ticks, transparent);
  pointer-events: none;
}

.capture-note-item.has-aside,
.capture-note-item.has-cast {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas:
    "title aside"
    "preview aside";
  align-items: start;
  column-gap: 0.35rem;
  padding-left: 0.55rem;
}

.capture-note-item.has-aside strong,
.capture-note-item.has-cast strong {
  grid-area: title;
}

.capture-note-item.has-aside .note-preview,
.capture-note-item.has-cast .note-preview {
  grid-area: preview;
}

.capture-note-item.has-aside .note-aside-row,
.capture-note-item.has-cast .note-cast-row {
  grid-area: aside;
}

.note-aside-row {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: flex-start;
  gap: 0.2rem;
  align-self: stretch;
  margin: 0;
  width: auto;
  max-width: 5.5rem;
  min-width: 0;
}

.capture-note-item.has-aside .note-cast-row,
.capture-note-item.has-cast .note-cast-row {
  align-self: stretch;
  margin: 0;
  width: auto;
  max-width: 5.5rem;
  flex-direction: row;
  align-items: center;
  justify-content: flex-end;
}

.note-ref-tags {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.12rem;
  width: 100%;
  min-width: 0;
}

.note-ref-tag,
.capture-ref-tag {
  display: block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  padding: 0.08rem 0.38rem;
  border: 1px solid color-mix(in srgb, var(--tag, var(--border)) 35%, var(--border));
  border-radius: 999px;
  background: color-mix(in srgb, var(--tag, var(--muted)) 10%, var(--surface, #fff));
  color: color-mix(in srgb, var(--tag, var(--muted)) 48%, var(--muted));
  font: inherit;
  font-size: 0.58rem;
  line-height: 1.25;
  letter-spacing: 0.01em;
  cursor: pointer;
  text-align: right;
}

.note-ref-tag[data-unresolved],
.capture-ref-tag[data-unresolved] {
  opacity: 0.72;
  border-style: dashed;
}

.note-ref-tag:hover,
.note-ref-tag:focus-visible,
.capture-ref-tag:hover,
.capture-ref-tag:focus-visible {
  border-color: color-mix(in srgb, var(--tag, var(--accent)) 55%, var(--border));
  background: color-mix(in srgb, var(--tag, var(--accent)) 16%, var(--surface, #fff));
  color: color-mix(in srgb, var(--tag, var(--ink)) 62%, var(--muted));
}

.note-ref-tag-more {
  display: block;
  font-size: 0.56rem;
  color: var(--muted);
  text-align: right;
  padding-right: 0.1rem;
}

.note-cast-row {
  display: flex;
  align-items: center;
  gap: 0.15rem;
  margin: 0;
  min-width: 0;
  position: relative;
}

.note-cast-icons {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-end;
  gap: 0.12rem;
  max-height: 1.25rem;
  max-width: 100%;
  overflow: hidden;
}

.note-cast-icons[hidden] {
  display: none !important;
}

.note-cast-overflow {
  position: relative;
  flex: 0 0 auto;
}

.note-cast-overflow[hidden] {
  display: none !important;
}

.note-cast-overflow-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.15rem;
  height: 1.15rem;
  padding: 0 0.3rem;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface, #fff);
  color: var(--muted);
  font: inherit;
  font-size: 0.62rem;
  line-height: 1;
  cursor: pointer;
}

.note-cast-overflow-btn:hover,
.note-cast-overflow-btn:focus-visible,
.note-cast-overflow-btn[aria-expanded="true"] {
  border-color: var(--accent);
  color: var(--ink);
}

.note-cast-overflow-mark {
  width: 0.45rem;
  height: 0.45rem;
  border-radius: 50%;
  background: var(--accent);
  opacity: 0.55;
}

.note-cast-pop {
  position: absolute;
  z-index: 12;
  top: calc(100% + 0.25rem);
  right: 0;
  min-width: 9rem;
  max-width: 14rem;
  padding: 0.3rem;
  border: 1px solid var(--border);
  border-radius: 0.4rem;
  background: var(--surface, #fff);
  box-shadow: 0 8px 24px var(--forge-shadow, rgba(0, 0, 0, 0.12));
}

.note-cast-pop[hidden] {
  display: none;
}

.note-cast-pop-item {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  width: 100%;
  padding: 0.35rem 0.4rem;
  border: 0;
  border-radius: 0.3rem;
  background: transparent;
  color: var(--ink);
  font: inherit;
  font-size: 0.78rem;
  text-align: left;
  cursor: pointer;
}

.note-cast-pop-item:hover,
.note-cast-pop-item:focus-visible {
  background: color-mix(in srgb, var(--cast, var(--accent)) 12%, var(--surface, #fff));
}

.note-cast-row.is-cast-compact .note-cast-icons {
  display: none !important;
}

.note-cast-row.is-cast-compact {
  max-width: none;
}

.meta-chip {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.3rem 0.4rem;
  width: auto;
  max-width: 100%;
  border: 1px solid var(--border);
  border-left: 3px solid var(--type, var(--imp, var(--border)));
  border-radius: 0.35rem;
  padding: 0.35rem 0.5rem;
  background: var(--surface, #fff);
  box-shadow: 0 1px 0 var(--forge-shadow, transparent);
  cursor: pointer;
  font: inherit;
  color: var(--ink);
  text-align: left;
  transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
}

.meta-chip:hover,
.meta-chip:focus-visible {
  border-color: var(--type, var(--imp, var(--accent)));
  background: color-mix(in srgb, var(--type, var(--imp, var(--accent))) 14%, var(--surface, #fff));
  box-shadow: 0 1px 3px color-mix(in srgb, var(--type, var(--imp, var(--accent))) 22%, var(--forge-shadow, transparent));
}

.imp-kind {
  flex-shrink: 0;
  font-size: 0.62rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--kind, var(--imp, var(--muted)));
}

.imp-type {
  flex-shrink: 0;
  font-size: 0.58rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--type, var(--muted));
  border: 1px solid color-mix(in srgb, var(--type, var(--border)) 45%, var(--border));
  border-radius: 0.18rem;
  padding: 0.08rem 0.28rem;
  line-height: 1.2;
}

.imp-entities {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.2rem;
  flex-shrink: 0;
  align-items: center;
}

.imp-entity {
  display: inline-block;
  padding: 0.04rem 0.38rem;
  border-radius: 0.2rem;
  background: color-mix(in srgb, var(--type, var(--imp, var(--accent))) 18%, var(--surface, #fff));
  color: var(--ink);
  font-weight: 600;
  line-height: 1.4;
}

.imp-desc {
  flex: 1 1 auto;
  min-width: 0;
  color: var(--muted);
  border-left: 1px solid color-mix(in srgb, var(--border) 75%, var(--type, var(--imp, var(--border))));
  padding-left: 0.45rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Triage — inbox + inspect */
#pane-triage {
  overflow: hidden;
}

.triage-layout {
  display: grid;
  grid-template-columns: minmax(16rem, 22rem) minmax(0, 1fr);
  flex: 1;
  height: 100%;
  min-height: 0;
}

.triage-inbox {
  display: flex;
  flex-direction: column;
  min-height: 0;
  border-right: 1px solid var(--border);
  background: color-mix(in srgb, var(--bg-sidebar) 40%, var(--bg));
}

.triage-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem;
  padding: 0.7rem 0.85rem;
  border-bottom: 1px solid var(--border);
  font-family: var(--sans);
}

.triage-analyze {
  margin-left: auto;
}

.triage-progress {
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  gap: 0;
  border-bottom: 1px solid var(--border);
  font-family: var(--sans);
  font-size: 0.72rem;
  color: var(--accent);
  background: color-mix(in srgb, var(--accent) 5%, var(--bg));
}

.triage-progress-meter {
  height: 4px;
  overflow: hidden;
  background: color-mix(in srgb, var(--accent) 10%, var(--border));
}

.triage-progress-meter-fill {
  display: block;
  width: 36%;
  height: 100%;
  background: var(--accent);
  transform: translateX(-100%);
}

.triage-progress.is-wait .triage-progress-meter-fill {
  opacity: 0.72;
  animation: forge-analysis-bar 1.85s ease-in-out infinite;
}

.triage-progress.is-running .triage-progress-meter-fill {
  animation: forge-analysis-bar 1.05s ease-in-out infinite;
}

.triage-progress-row {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  padding: 0.45rem 0.85rem 0.55rem;
}

.triage-progress-label {
  flex: 1;
  min-width: 0;
  display: block;
  line-height: 1.35;
}

.triage-progress-cancel {
  flex-shrink: 0;
  margin-left: auto;
}

.triage-progress.is-done .triage-progress-meter-fill {
  width: 100%;
  transform: none;
  animation: none;
  background: var(--forge-ok, #3d6b5a);
}

.triage-progress.is-done {
  color: var(--forge-ok, #3d6b5a);
  animation: forge-analysis-done 1.1s ease;
}

.triage-report {
  padding: 0.7rem 0.85rem 0.85rem;
  border-bottom: 1px solid var(--border);
  font-family: var(--sans);
  background: color-mix(in srgb, var(--surface) 70%, var(--bg));
}

.triage-report-summary {
  margin: 0 0 0.35rem;
  font-size: 0.82rem;
  line-height: 1.45;
}

.triage-report-stats {
  margin: 0 0 0.65rem;
  font-size: 0.72rem;
  letter-spacing: 0.04em;
  color: var(--muted);
}

.triage-report-cols {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.55rem;
}

.triage-report-col h3 {
  margin: 0 0 0.35rem;
  font-size: 0.68rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-weight: 600;
}

.triage-report-col.is-sure h3 { color: var(--add); }
.triage-report-col.is-review h3 { color: #a0562c; }
.triage-report-col.is-manual h3 { color: var(--muted); }
.triage-report-col.is-merged h3 { color: var(--muted); }

.triage-report-col p {
  margin: 0;
  font-size: 0.75rem;
}

.triage-report-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.1rem;
  width: 100%;
  margin: 0 0 0.3rem;
  padding: 0.3rem 0.35rem;
  border: 0;
  border-left: 2px solid var(--border);
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.triage-report-col.is-sure .triage-report-item { border-left-color: var(--add); }
.triage-report-col.is-review .triage-report-item { border-left-color: #a0562c; }
.triage-report-col.is-manual .triage-report-item { border-left-color: var(--muted); }
.triage-report-col.is-merged .triage-report-item { border-left-color: var(--hairline); }
.triage-report-live {
  margin: 0 0 0.65rem;
  font-size: 0.82rem;
}

.triage-report-item:disabled {
  cursor: default;
  opacity: 0.7;
}

.triage-report-label {
  font-size: 0.78rem;
  font-weight: 500;
}

.triage-report-action {
  font-size: 0.62rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--muted);
}

.triage-report.is-teaser {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.45rem;
}

.triage-report.is-teaser .triage-report-summary {
  margin: 0;
}

.triage-report.is-teaser .triage-report-stats {
  margin: 0;
}

/* Popup validation triage — overlay compact au-dessus de Forge */
.triage-decision-modal {
  z-index: 80;
}

.triage-decision-card {
  width: min(52rem, calc(100vw - 2rem));
  max-height: min(40rem, calc(100dvh - 2rem));
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.triage-decision-modal-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.75rem 1rem 0.55rem;
  border-bottom: 1px solid var(--border);
}

.triage-decision-confirm {
  padding: 0.45rem 1rem 0.55rem;
  border-bottom: 1px solid var(--border);
  background: color-mix(in srgb, var(--surface) 55%, var(--bg));
}

.triage-decision-confirm[hidden] {
  display: none;
}

.triage-decision-confirm-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin-top: 0.45rem;
}

.triage-decision-body {
  display: grid;
  grid-template-columns: minmax(18rem, 24rem) minmax(0, 1fr);
  flex: 1;
  min-height: 0;
  overflow: hidden;
}

.triage-decision-list {
  overflow: auto;
  padding: 0.65rem 0.75rem 1rem;
  border-right: 1px solid var(--border);
  min-height: 0;
}

.triage-decision-detail {
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
  background: color-mix(in srgb, var(--surface) 45%, var(--bg));
}

.triage-sheet-group {
  margin: 0 0 1rem;
}

.triage-sheet-group-title {
  margin: 0 0 0.45rem;
  font-size: 0.78rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--muted);
}

.triage-detail-scroll {
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding: 0.85rem 1rem 1rem;
}

.triage-detail-head {
  display: flex;
  align-items: flex-start;
  gap: 0.55rem;
  margin-bottom: 0.65rem;
}

.triage-detail-back {
  flex: 0 0 auto;
  display: none;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  margin-top: 0.1rem;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--bg);
  color: inherit;
  cursor: pointer;
}

.triage-detail-head-copy {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  min-width: 0;
}

.triage-detail-kind {
  margin: 0 0 0.15rem;
  font-size: 0.68rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--imp, var(--muted));
}

.triage-detail-sheet {
  margin: 0;
  font-size: 0.68rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
}

.triage-detail-title {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.05rem;
  font-weight: 500;
  line-height: 1.25;
}

.triage-detail-lead {
  margin: 0 0 0.85rem;
  font-size: 0.88rem;
  line-height: 1.45;
  color: var(--muted);
}

.triage-detail-block {
  margin: 0 0 1rem;
}

.triage-detail-block-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.45rem;
}

.triage-detail-block-title {
  margin: 0;
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--muted);
}

.triage-write-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.triage-write-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1.2fr);
  gap: 0.35rem 0.5rem;
  align-items: baseline;
  padding: 0.45rem 0;
  border-bottom: 1px solid var(--border);
  font-size: 0.88rem;
  line-height: 1.4;
}

.triage-write-row:last-child {
  border-bottom: 0;
}

.triage-write-target {
  color: var(--muted);
  font-size: 0.82rem;
}

.triage-write-arrow {
  color: var(--muted);
  font-size: 0.82rem;
}

.triage-write-text {
  min-width: 0;
}

.triage-source-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.triage-source-row {
  padding: 0.45rem 0 0.45rem 0.55rem;
  border-bottom: 1px solid var(--border);
  border-left: 2px solid var(--imp, var(--border));
}

.triage-source-row:last-child {
  border-bottom: 0;
}

.triage-source-title {
  margin: 0 0 0.2rem;
  font-size: 0.88rem;
  font-weight: 500;
}

.triage-source-evidence,
.triage-source-reason {
  margin: 0;
  font-size: 0.82rem;
  line-height: 1.4;
  color: var(--muted);
}

.triage-detail-warns {
  margin: 0;
  padding-left: 1rem;
  font-size: 0.84rem;
  color: var(--muted);
}

.triage-detail-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  padding: 0.65rem 1rem 0.85rem;
  border-top: 1px solid var(--border);
  background: var(--bg);
}

.triage-detail-empty,
.triage-detail-skip {
  margin: 0;
  font-size: 0.88rem;
}

.triage-preview-units {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.35rem;
}

.triage-preview-unit {
  display: block;
}

.triage-preview-unit-main {
  display: grid;
  gap: 0.2rem;
  width: 100%;
  text-align: left;
  border: 1px solid var(--border);
  border-left: 3px solid var(--imp, var(--accent));
  border-radius: 0.35rem;
  padding: 0.45rem 0.55rem 0.45rem 0.65rem;
  background: var(--bg);
  color: inherit;
  font: inherit;
  cursor: pointer;
}

.triage-preview-unit-main:hover,
.triage-preview-unit-main:focus-visible {
  border-color: color-mix(in srgb, var(--imp, var(--accent)) 42%, var(--border));
  border-left-color: var(--imp, var(--accent));
  background: color-mix(in srgb, var(--imp, var(--accent)) 8%, var(--bg));
}

.triage-preview-unit-meta,
.triage-write-unit-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.3rem 0.45rem;
}

.triage-preview-unit-kind,
.triage-write-unit-kind {
  font-size: 0.68rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--imp, var(--muted));
}

.triage-preview-unit-heading,
.triage-write-unit-heading {
  font-size: 0.82rem;
  color: var(--muted);
}

.triage-preview-unit-action,
.triage-write-unit-action {
  font-size: 0.66rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 0.06rem 0.32rem;
  border-radius: 0.2rem;
  border: 1px solid var(--border);
}

.triage-preview-unit-action.is-add,
.triage-write-unit-action.is-add {
  border-color: color-mix(in srgb, var(--add) 45%, var(--border));
  color: var(--add);
  background: color-mix(in srgb, var(--add) 10%, transparent);
}

.triage-preview-unit-action.is-update,
.triage-write-unit-action.is-update {
  border-color: color-mix(in srgb, var(--accent) 45%, var(--border));
  color: var(--accent);
  background: color-mix(in srgb, var(--accent) 8%, transparent);
}

.triage-preview-unit-text {
  font-size: 0.86rem;
  line-height: 1.4;
}

.triage-preview-edit,
.triage-desk-member-edit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  min-height: 2rem;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 0.35rem;
  background: transparent;
  color: inherit;
  cursor: pointer;
}

.triage-preview-edit svg,
.triage-desk-member-edit svg,
.triage-preview-edit-btn svg {
  width: 0.95rem;
  height: 0.95rem;
}

.triage-preview-edit-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}

.triage-desk-member-row {
  list-style: none;
}

.triage-desk-member-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.45rem;
}

.triage-review-block {
  border-left: 3px solid var(--imp, var(--accent));
  padding-left: 0.75rem;
}

.triage-review-notes,
.triage-edit-hints {
  margin: 0.35rem 0 0;
  padding-left: 1rem;
  font-size: 0.84rem;
  line-height: 1.45;
}

.triage-edit-hints {
  color: var(--muted);
}

.triage-write-editor {
  display: grid;
  gap: 0.65rem;
}

.triage-write-edit-row {
  display: grid;
  gap: 0.45rem;
  padding: 0.55rem 0.65rem;
  border: 1px solid var(--border);
  border-radius: 0.35rem;
  background: var(--bg);
}

.triage-write-edit-label {
  display: grid;
  gap: 0.2rem;
}

.triage-write-edit-kicker {
  font-size: 0.72rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}

.triage-write-edit-heading,
.triage-write-edit-text {
  width: 100%;
  font: inherit;
  color: inherit;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: 0.25rem;
  padding: 0.35rem 0.45rem;
}

.triage-relation-block {
  display: grid;
  gap: 0.45rem;
}

.triage-relation-entities {
  margin: 0;
  font-size: 0.88rem;
}

.triage-relation-target {
  display: grid;
  gap: 0.25rem;
}

.triage-relation-target-label {
  font-size: 0.78rem;
  color: var(--muted);
}

.triage-relation-target-select {
  font: inherit;
  color: inherit;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 0.25rem;
  padding: 0.35rem 0.45rem;
}

.triage-relation-target-fixed {
  margin: 0;
  font-size: 0.84rem;
  color: var(--muted);
}

.triage-member-list,
.triage-desk-member-list {
  list-style: none;
  margin: 0.45rem 0 0;
  padding: 0;
  display: grid;
  gap: 0.45rem;
}

.triage-member-row,
.triage-desk-member {
  display: grid;
  width: 100%;
  text-align: left;
  border: 0;
  border-left: 3px solid var(--imp, var(--accent));
  padding: 0.45rem 0.55rem 0.45rem 0.65rem;
  background: transparent;
  color: inherit;
  font: inherit;
  cursor: pointer;
}

.triage-member-row.is-active,
.triage-desk-member.is-active {
  background: color-mix(in srgb, var(--imp, var(--accent)) 12%, var(--surface));
}

.triage-member-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
}

.triage-member-title,
.triage-desk-member-title {
  margin: 0;
  font-size: 0.86rem;
}

.triage-desk-member-status {
  font-size: 0.68rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  flex-shrink: 0;
}

.triage-desk-member-status.is-ready {
  color: var(--accent);
}

.triage-desk-member-status.is-hold {
  color: var(--muted);
}

.triage-desk-member-writes {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  margin-top: 0.2rem;
  line-height: 1.35;
}

.triage-desk-member-writes .triage-write-unit-meta + .triage-write-unit-meta {
  padding-top: 0.15rem;
  border-top: 1px solid color-mix(in srgb, var(--border) 80%, transparent);
}

.triage-member-status {
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.triage-member-status.is-ready {
  color: var(--accent);
}

.triage-member-status.is-hold {
  color: var(--muted);
}

.triage-member-evidence,
.triage-member-reason,
.triage-member-writes,
.triage-desk-member-evidence {
  margin: 0.25rem 0 0;
  font-size: 0.8rem;
  color: var(--muted);
  line-height: 1.4;
}

.triage-member-warns {
  margin: 0.25rem 0 0;
  padding-left: 1rem;
  font-size: 0.78rem;
  color: var(--muted);
}

.triage-desk-item-wrap {
  display: grid;
  gap: 0.25rem;
}

.triage-desk-item-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0.25rem;
  align-items: stretch;
}

.triage-desk-item-actions {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  align-self: center;
  gap: 0.15rem;
  padding: 0 0.1rem;
}

.triage-desk-item-actions .triage-icon-btn {
  width: 2rem;
  height: 2rem;
}

.triage-desk-write:hover {
  color: var(--add);
  border-color: color-mix(in srgb, var(--add) 45%, var(--border));
  background: color-mix(in srgb, var(--add) 10%, transparent);
}

.triage-desk-edit:hover {
  color: var(--accent);
  border-color: color-mix(in srgb, var(--accent) 45%, var(--border));
  background: color-mix(in srgb, var(--accent) 8%, transparent);
}

.triage-desk-refuse:hover {
  color: var(--danger, #8a2f2f);
  border-color: color-mix(in srgb, var(--danger, #8a2f2f) 45%, var(--border));
  background: color-mix(in srgb, var(--danger, #8a2f2f) 10%, transparent);
}

.triage-desk-expand {
  justify-self: start;
  margin-left: 0.35rem;
}

.triage-desk-inspect-wrap {
  margin-top: 0.35rem;
}

.triage-desk-inspect {
  margin-top: 0.45rem;
  padding-top: 0.65rem;
  border-top: 1px solid var(--border);
}

.triage-desk-inspect .triage-inspect-scroll {
  padding: 0;
  overflow: visible;
}

.triage-desk-inspect .triage-quote {
  margin-bottom: 0.65rem;
}

@media (max-width: 768px) {
  .triage-decision-card {
    width: min(52rem, calc(100vw - 1rem));
    max-height: min(40rem, calc(100dvh - 1rem));
  }

  .triage-decision-body {
    grid-template-columns: 1fr;
  }

  .triage-decision-detail {
    display: none;
  }

  .triage-decision-modal.is-detail .triage-decision-list {
    display: none;
  }

  .triage-decision-modal.is-detail .triage-decision-detail {
    display: flex;
  }

  .triage-decision-modal.is-detail .triage-detail-back {
    display: inline-flex;
  }
}

.triage-desk-item.is-applied {
  border-left-color: var(--add);
  background: color-mix(in srgb, var(--add) 14%, var(--bg));
  opacity: 0.78;
  cursor: default;
}

.triage-desk-item-cert.is-applied {
  color: var(--add);
}

.triage-report-done {
  margin: 0.35rem 0 0;
  font-size: 0.88rem;
}

.triage-decision-modal.is-busy .triage-decision-card {
  cursor: wait;
}

.triage-decision-kicker {
  margin: 0 0 0.15rem;
  font-size: 0.68rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
}

.triage-decision-title {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.15rem;
  font-weight: 500;
  line-height: 1.2;
}

.triage-decision-banner {
  padding: 0.55rem 0.85rem;
  border-bottom: 1px solid var(--border);
  background: color-mix(in srgb, var(--surface) 50%, var(--bg));
}

.triage-decision-banner[hidden] {
  display: none;
}

.triage-decision-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem 0.65rem;
  padding: 0.45rem 0.85rem 0.55rem;
  border-bottom: 1px solid var(--border);
}

.triage-decision-actions[hidden] {
  display: none;
}

.triage-decision-actions .triage-apply-prompt {
  flex: 1 1 100%;
  margin: 0;
}

.triage-decision-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin-top: 0.45rem;
}

.triage-decision-chip {
  display: inline-block;
  padding: 0.15rem 0.45rem;
  border: 1px solid var(--border);
  border-radius: 999px;
  font-size: 0.72rem;
  color: var(--muted);
  background: color-mix(in srgb, var(--surface) 80%, var(--bg));
}

.triage-decision-rec {
  margin: 0 0 0.3rem;
  font-size: 0.92rem;
  line-height: 1.45;
}

.triage-decision-risk,
.triage-decision-summary {
  margin: 0 0 0.2rem;
  font-size: 0.8rem;
  line-height: 1.4;
  color: var(--muted);
}

.triage-desk-col {
  margin: 0 0 1.15rem;
}

.triage-desk-col h3 {
  display: flex;
  align-items: baseline;
  gap: 0.45rem;
  margin: 0 0 0.2rem;
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-weight: 600;
}

.triage-desk-col h3 span {
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  color: var(--muted);
}

.triage-desk-col.is-sure h3 { color: var(--add); }
.triage-desk-col.is-review h3 { color: #a0562c; }
.triage-desk-col.is-manual h3 { color: var(--muted); }
.triage-desk-col.is-merged h3 { color: var(--muted); }

.triage-desk-col-hint {
  margin: 0 0 0.45rem;
  font-size: 0.72rem;
  color: var(--muted);
  line-height: 1.35;
}

.triage-desk-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.2rem;
  width: 100%;
  min-width: 0;
  margin: 0;
  padding: 0.55rem 0.65rem;
  border: 1px solid var(--border);
  border-left-width: 3px;
  border-left-color: var(--imp, var(--border));
  background: color-mix(in srgb, var(--surface) 80%, var(--bg));
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.triage-desk-col.is-sure .triage-desk-item { border-left-color: var(--add); }
.triage-desk-col.is-review .triage-desk-item { border-left-color: #a0562c; }
.triage-desk-col.is-manual .triage-desk-item { border-left-color: var(--muted); }
.triage-desk-col.is-merged .triage-desk-item { border-left-color: var(--hairline); }

.triage-desk-item:hover:not(:disabled),
.triage-desk-item:focus-visible:not(:disabled) {
  background: color-mix(in srgb, var(--imp, var(--accent)) 10%, var(--surface));
  border-color: color-mix(in srgb, var(--imp, var(--accent)) 42%, var(--border));
  border-left-color: var(--imp, var(--accent));
}

.triage-desk-item.is-active:not(.is-applied) {
  background: color-mix(in srgb, var(--imp, var(--accent)) 12%, var(--surface));
  border-color: color-mix(in srgb, var(--imp, var(--accent)) 50%, var(--border));
  border-left-color: var(--imp, var(--accent));
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--imp, var(--accent)) 35%, transparent);
}

.triage-desk-item:disabled {
  cursor: default;
  opacity: 0.62;
}

.triage-desk-item-title {
  font-size: 0.92rem;
  font-weight: 500;
  line-height: 1.3;
}

.triage-desk-item-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.45rem;
  width: 100%;
}

.triage-desk-item-cert {
  flex: 0 0 auto;
  font-size: 0.6rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  white-space: nowrap;
}

.triage-desk-item-cert.is-sure { color: var(--add); }
.triage-desk-item-cert.is-review { color: #a0562c; }
.triage-desk-item-cert.is-manual { color: var(--muted); }

.triage-desk-item-impact {
  font-size: 0.8rem;
  line-height: 1.35;
  color: var(--text);
}

.triage-desk-item-warn {
  font-size: 0.72rem;
  line-height: 1.35;
  color: #a0562c;
}

.triage-desk-item-tag {
  font-size: 0.62rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
}

.triage-desk-item-reason {
  font-size: 0.8rem;
  line-height: 1.4;
  color: var(--muted);
}

.triage-desk-impact-lead {
  margin: 0.35rem 0 0;
  font-size: 0.88rem;
  line-height: 1.45;
  color: var(--muted);
}

.triage-desk-proof,
.triage-desk-reason,
.triage-translation {
  margin: 0 0 0.85rem;
}

.triage-desk-proof-title,
.triage-desk-reason-title,
.triage-translation-title {
  margin: 0 0 0.35rem;
  font-size: 0.68rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 600;
}

.triage-trans-list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.triage-trans-row {
  margin: 0 0 0.55rem;
  padding: 0.5rem 0.55rem;
  border: 1px solid var(--border);
  background: color-mix(in srgb, var(--surface) 70%, var(--bg));
}

.triage-trans-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.55rem;
  margin: 0 0 0.25rem;
  font-size: 0.72rem;
  color: var(--muted);
}

.triage-trans-after {
  margin: 0;
  font-size: 0.88rem;
  line-height: 1.45;
}

.triage-actions-dock.is-desk {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  padding: 0.65rem 0.85rem calc(0.65rem + env(safe-area-inset-bottom, 0px));
}

.triage-actions-dock.is-desk .triage-apply-full {
  flex: 1 1 100%;
}

.triage-cert {
  margin-left: auto;
  font-size: 0.62rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  padding: 0.1rem 0.35rem;
  border-radius: 0.25rem;
  border: 1px solid var(--border);
  color: var(--muted);
}

.triage-cert.is-sure {
  border-color: color-mix(in srgb, var(--add) 45%, var(--border));
  background: color-mix(in srgb, var(--add) 14%, transparent);
  color: var(--add);
}

.triage-cert.is-review {
  border-color: color-mix(in srgb, #a0562c 45%, var(--border));
  background: color-mix(in srgb, #a0562c 14%, transparent);
  color: #a0562c;
}

.triage-cert.is-manual {
  border-color: color-mix(in srgb, var(--muted) 55%, var(--border));
  background: color-mix(in srgb, var(--muted) 10%, transparent);
  color: var(--muted);
}

.triage-freshness {
  padding: 0.45rem 0.85rem;
  border-bottom: 1px solid var(--border);
  font-family: var(--sans);
  font-size: 0.72rem;
}

.triage-freshness.is-ok {
  color: var(--muted);
}

.triage-freshness.is-stale {
  background: color-mix(in srgb, var(--accent) 6%, var(--bg));
}

.triage-freshness-btn {
  appearance: none;
  border: 0;
  background: none;
  padding: 0;
  font: inherit;
  color: var(--accent);
  cursor: pointer;
  text-align: left;
}

.triage-freshness-btn:hover {
  text-decoration: underline;
}

.triage-apply-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem 0.65rem;
  padding: 0.35rem 0 0.65rem;
}

.triage-apply-prompt {
  margin: 0;
  flex: 1 1 100%;
  font-size: 0.72rem;
}

.triage-apply-all {
  margin-left: auto;
}

.triage-kind .triage-cert {
  margin-left: 0.5rem;
  vertical-align: middle;
}

@media (max-width: 1100px) {
  .triage-report-cols {
    grid-template-columns: 1fr;
  }
}

.filter-chip {
  appearance: none;
  font: inherit;
  font-size: 0.72rem;
  padding: 0.25rem 0.55rem;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: var(--surface, #fff);
  color: var(--muted);
  cursor: pointer;
  box-shadow: inset 0 -1px 0 transparent;
  transition: color 0.15s ease, background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
}

.filter-chip:hover {
  color: var(--tab-accent, var(--ink));
  border-color: color-mix(in srgb, var(--tab-accent, var(--border)) 35%, var(--border));
}

.filter-chip.active {
  color: var(--tab-accent, var(--accent));
  border-color: color-mix(in srgb, var(--tab-accent, var(--accent)) 45%, var(--border));
  background: color-mix(in srgb, var(--tab-accent, var(--accent)) 10%, var(--surface, #fff));
  box-shadow: inset 0 -1.5px 0 var(--tab-accent, var(--accent));
}

.triage-list {
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding: 0.75rem 0.85rem 1.5rem;
  font-family: var(--sans);
}

.triage-empty {
  margin: 1.25rem 0.15rem;
}

/* Carnet — todo list + editor (capture layout) */
.carnet-layout.capture-layout {
  flex: 1;
  min-height: 0;
  height: 100%;
}

.carnet-editor {
  min-width: 0;
  overflow: auto;
}

.carnet-empty-editor {
  margin: auto;
  padding: 2rem 1rem;
  text-align: center;
  font-family: var(--sans);
}

.carnet-side {
  display: flex;
  flex-direction: column;
  min-height: 0;
}

.carnet-quick-add {
  padding: 0 0.55rem 0.45rem;
  border-bottom: 1px solid var(--border);
}

.carnet-quick-input {
  width: 100%;
  font: inherit;
  font-size: 0.82rem;
  padding: 0.4rem 0.5rem;
  border: 1px solid var(--border);
  border-radius: 0.25rem;
  background: var(--surface, #fff);
  color: var(--ink);
}

.carnet-list {
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding: 0.45rem 0.45rem 0.85rem;
  font-family: var(--sans);
}

.carnet-empty {
  margin: 0.85rem 0.35rem;
  font-size: 0.82rem;
}

.carnet-section + .carnet-section {
  margin-top: 0.75rem;
}

.carnet-section-title {
  margin: 0 0 0.35rem;
  font-size: 0.66rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 500;
}

.carnet-section-toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  margin: 0 0 0.35rem;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  cursor: pointer;
  text-align: left;
}

.carnet-section-count {
  font-size: 0.68rem;
  color: var(--muted);
}

.carnet-section-done .carnet-section-list {
  display: none;
}

.carnet-section-done.is-open .carnet-section-list {
  display: block;
}

.carnet-section-done .carnet-item-row {
  opacity: 0.72;
}

.carnet-item-row {
  display: flex;
  align-items: flex-start;
  gap: 0.35rem;
  margin-bottom: 0.15rem;
}

.carnet-item-row.active .carnet-item-btn {
  background: color-mix(in srgb, var(--tag, var(--accent)) 10%, transparent);
}

.carnet-check {
  flex-shrink: 0;
  width: 1.65rem;
  height: 1.65rem;
  margin-top: 0.2rem;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--tag, var(--muted));
  cursor: pointer;
}

.carnet-check svg {
  width: 1rem;
  height: 1rem;
  display: block;
  margin: auto;
}

.carnet-check.is-doing {
  color: var(--accent);
}

.carnet-check.is-done {
  color: var(--ink);
}

.carnet-item-btn {
  flex: 1;
  min-width: 0;
  text-align: left;
  border: 0;
  box-shadow: inset 3px 0 0 var(--tag, var(--border));
}

.carnet-item-btn strong {
  display: block;
  font-family: var(--serif);
  font-size: 0.9rem;
  line-height: 1.35;
}

.carnet-item-kind {
  display: inline-block;
  font-size: 0.62rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--tag, var(--muted));
  margin-bottom: 0.1rem;
}

.carnet-item-links,
.carnet-item-orphan {
  display: block;
  font-size: 0.66rem;
  margin-top: 0.12rem;
}

.carnet-head {
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 0.5rem 0.75rem;
}

.carnet-head-main {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.carnet-title {
  color: var(--tag, var(--ink));
  border-bottom-color: color-mix(in srgb, var(--tag, var(--border)) 55%, var(--border));
}

.carnet-kind-icons {
  display: flex;
  align-items: center;
  gap: 0.25rem;
}

.carnet-kind-btn {
  color: var(--tag, var(--muted));
  border: 1.5px solid color-mix(in srgb, var(--tag, var(--border)) 40%, transparent);
  border-radius: 0.35rem;
  background: color-mix(in srgb, var(--tag, var(--accent)) 6%, transparent);
}

.carnet-kind-btn svg {
  width: 1rem;
  height: 1rem;
}

.carnet-kind-btn.is-active {
  color: var(--tag, var(--accent));
  border-color: var(--tag, var(--accent));
  background: color-mix(in srgb, var(--tag, var(--accent)) 14%, transparent);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--tag, var(--accent)) 18%, transparent);
}

.carnet-head-actions {
  flex-shrink: 0;
  align-items: center;
  gap: 0.25rem;
}

.carnet-head-links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.25rem;
  max-width: 14rem;
}

.carnet-head-link {
  border: 0;
  cursor: pointer;
  font: inherit;
  font-size: 0.72rem;
  padding: 0.12rem 0.35rem;
  border-radius: 0.15rem;
  background: color-mix(in srgb, var(--tag, var(--accent)) 16%, transparent);
  color: var(--tag, var(--accent));
}

.carnet-head-link:hover {
  background: color-mix(in srgb, var(--tag, var(--accent)) 24%, transparent);
}

.carnet-link-wrap {
  position: relative;
}

.carnet-link-btn {
  position: relative;
  color: var(--muted);
}

.carnet-link-count {
  position: absolute;
  top: 0.05rem;
  right: 0.05rem;
  font-family: var(--sans);
  font-size: 0.58rem;
  font-weight: 600;
  line-height: 1;
  color: var(--ink);
}

.carnet-note-btn {
  color: var(--tag, #6b4c9a);
}

.carnet-body-wrap.capture-body-wrap {
  border: 1px solid color-mix(in srgb, var(--tag, var(--border)) 35%, var(--border));
  border-radius: 0.5rem;
  background: var(--forge-inset, var(--surface, #fff));
  box-shadow: inset 0 1px 2px var(--forge-shadow, rgba(0, 0, 0, 0.04));
}

.carnet-body-wrap .capture-body {
  flex: 1;
  min-height: 10rem;
  width: 100%;
  border: 0;
  background: transparent;
  resize: vertical;
  font-family: var(--serif);
  font-size: 1rem;
  line-height: 1.55;
  padding: 0.85rem 1rem;
  color: var(--ink);
}

.carnet-link-pop {
  position: absolute;
  top: calc(100% + 0.35rem);
  right: 0;
  z-index: 12;
  width: min(18rem, 72vw);
  padding: 0.55rem 0.6rem 0.65rem;
  border: 1px solid var(--border);
  border-radius: 0.35rem;
  background: var(--surface, #fff);
  box-shadow: 0 4px 18px color-mix(in srgb, var(--ink) 12%, transparent);
  font-family: var(--sans);
}

.carnet-link-pop[hidden] {
  display: none;
}

.carnet-pop-links {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  margin-bottom: 0.45rem;
  max-height: 8rem;
  overflow: auto;
}

.carnet-pop-empty {
  margin: 0 0 0.35rem;
  font-size: 0.78rem;
}

.carnet-pop-link {
  display: flex;
  align-items: center;
  gap: 0.15rem;
}

.carnet-pop-link-open {
  flex: 1;
  min-width: 0;
  border: 0;
  cursor: pointer;
  font: inherit;
  font-size: 0.76rem;
  text-align: left;
  padding: 0.2rem 0.35rem;
  border-radius: 0.15rem;
  background: color-mix(in srgb, var(--tag, var(--accent)) 16%, transparent);
  color: var(--tag, var(--accent));
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.carnet-pop-link-remove {
  flex-shrink: 0;
  border: 0;
  background: transparent;
  color: var(--muted);
  font-size: 0.95rem;
  line-height: 1;
  padding: 0.15rem 0.3rem;
  cursor: pointer;
}

.carnet-link-q {
  width: 100%;
  font: inherit;
  font-size: 0.8rem;
  padding: 0.35rem 0.45rem;
  border: 1px solid var(--border);
  border-radius: 0.25rem;
  background: var(--surface, #fff);
}

.carnet-link-hits {
  margin-top: 0.35rem;
  max-height: 10rem;
  overflow: auto;
  border: 1px solid var(--border);
  border-radius: 0.25rem;
  background: var(--surface, #fff);
}

.carnet-link-hit {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.05rem;
  width: 100%;
  padding: 0.4rem 0.5rem;
  border: 0;
  border-bottom: 1px solid var(--border);
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.carnet-link-hit:last-child {
  border-bottom: 0;
}

.carnet-link-hit:hover {
  background: color-mix(in srgb, var(--accent) 6%, transparent);
}

.carnet-link-hit-kind {
  font-size: 0.6rem;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--muted);
}

.carnet-link-hit-title {
  font-size: 0.8rem;
}

.triage-group + .triage-group {
  margin-top: 1.15rem;
}

.triage-group-title {
  margin: 0 0 0.4rem;
  font-size: 0.68rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--imp, var(--muted));
  font-weight: 500;
}

.triage-row {
  display: flex;
  align-items: stretch;
  gap: 0.25rem;
  margin-bottom: 0.3rem;
}

.triage-row .triage-card {
  flex: 1;
  min-width: 0;
  margin-bottom: 0;
}

.triage-row-actions {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.2rem;
  flex-shrink: 0;
}

.triage-row-actions .triage-icon-btn {
  width: 2rem;
  height: 2rem;
}

.triage-card {
  display: block;
  width: 100%;
  border: 1px solid transparent;
  border-left: 2px solid var(--imp, var(--border));
  border-radius: 0.3rem;
  padding: 0.5rem 0.6rem;
  margin-bottom: 0.3rem;
  background: transparent;
  cursor: pointer;
  text-align: left;
  color: inherit;
  font: inherit;
}

.triage-card:hover {
  background: color-mix(in srgb, var(--surface) 80%, transparent);
}

.triage-card.focused {
  background: var(--surface, #fff);
  border-color: var(--border);
  border-left-color: var(--imp, var(--accent));
}

.triage-target {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.3rem;
  font-weight: 500;
  font-size: 0.86rem;
}

.triage-evidence {
  font-size: 0.75rem;
  color: var(--muted);
  line-height: 1.4;
  margin-top: 0.15rem;
}

.triage-inspect {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  padding: 0;
  font-family: var(--sans);
}

.triage-inspect-scroll {
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding: 1.35rem 1.6rem 1rem;
}

.triage-actions-dock {
  flex-shrink: 0;
  margin-top: auto;
  padding: 0.55rem 1.6rem 0.85rem;
  border-top: 1px solid var(--border);
  background: color-mix(in srgb, var(--bg) 92%, var(--surface, #fff));
}

.triage-inspect-verdicts {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.55rem;
}

.triage-apply-full {
  width: 100%;
}

.triage-inspect-scroll .triage-suggest {
  margin: 0 0 0.65rem;
  color: var(--muted);
  border-color: transparent;
}

.triage-inspect-empty {
  margin: auto;
}

.triage-inspect-head {
  margin-bottom: 0.85rem;
}

.triage-inspect-head h2 {
  margin: 0.15rem 0 0;
  font-family: var(--serif);
  font-weight: 500;
  font-size: 1.45rem;
}

.triage-kind {
  margin: 0;
  font-size: 0.68rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--imp, var(--muted));
}

.triage-quote {
  margin: 0 0 1rem;
  padding: 0 0 0 0.85rem;
  border-left: 2px solid var(--border);
  font-family: var(--serif);
  font-size: 1.02rem;
  line-height: 1.5;
  white-space: pre-wrap;
}

.triage-comment {
  margin: -0.35rem 0 1rem;
  font-size: 0.8rem;
  color: var(--muted);
}

.triage-dest {
  display: flex;
  flex-direction: column;
  gap: 0.7rem;
  max-width: 40rem;
}

.sheet-form-meta {
  display: grid;
  grid-template-columns: minmax(8rem, 1fr) minmax(10rem, 1.4fr) auto;
  gap: 0.55rem 0.7rem;
  margin-bottom: 0.75rem;
  align-items: end;
}

.sheet-form-color-field input[type="color"] {
  width: 2.1rem;
  height: 2.1rem;
  padding: 0.1rem;
  border: 1px solid var(--border);
  border-radius: 0.35rem;
  background: var(--surface, #fff);
  cursor: pointer;
}

.sheet-form-color-field input[type="color"]::-webkit-color-swatch-wrapper {
  padding: 0.1rem;
}

.sheet-form-color-field input[type="color"]::-webkit-color-swatch {
  border: none;
  border-radius: 0.2rem;
}

.sheet-form-sections {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}

.sheet-form-sections .sec-card.has-body {
  border-left-color: var(--border);
}

.sheet-form-sections .sec-card.is-focus,
.sheet-form-sections .sec-card.is-proposed,
.sheet-form-sections .sec-card.is-pending-add,
.sheet-form-sections .sec-card.is-pending-edit {
  border-left-color: var(--add);
  background: color-mix(in srgb, var(--add) 8%, var(--surface, #fff));
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--add) 24%, transparent);
}

.sheet-form-sections .sec-card.is-pending-edit {
  border-left-width: 3px;
}

.sheet-form-sections .sec-status {
  flex-shrink: 0;
  color: var(--muted);
}

.sheet-form-sections .sec-status.has-existing {
  color: color-mix(in srgb, var(--ink) 72%, var(--muted));
}

.sheet-form-put.is-update {
  border-color: color-mix(in srgb, var(--accent) 45%, var(--border));
  color: var(--accent);
}

.sheet-form-put.is-add {
  border-color: color-mix(in srgb, var(--add) 45%, var(--border));
  color: var(--add);
}

.sheet-form-existing,
.sheet-form-existing-edit {
  margin: 0 0 0.45rem;
  font-family: var(--serif);
  font-size: 0.92rem;
  line-height: 1.45;
  white-space: pre-wrap;
  color: var(--ink);
}

.sheet-form-existing-edit {
  display: block;
  width: 100%;
  min-height: 3.2rem;
  resize: vertical;
  letter-spacing: 0;
  text-transform: none;
  padding: 0.4rem 0.45rem;
  border: 1px solid color-mix(in srgb, var(--border) 70%, transparent);
  border-radius: 0.3rem;
  background: var(--surface, #fff);
}

.sheet-form-existing-edit::placeholder {
  color: var(--muted);
  font-family: var(--sans);
  font-size: 0.78rem;
}

.sheet-form-existing.is-empty {
  color: var(--muted);
  font-family: var(--sans);
  font-size: 0.78rem;
}

.sheet-form-add-label {
  display: flex;
  flex-direction: column;
  gap: 0.28rem;
  font-size: 0.68rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: color-mix(in srgb, var(--add) 72%, var(--muted));
}

.sheet-form-add,
.sheet-form-body {
  width: 100%;
  min-height: 4.5rem;
  resize: vertical;
  font-family: var(--serif);
  font-size: 0.92rem;
  letter-spacing: 0;
  text-transform: none;
  line-height: 1.45;
  padding: 0.45rem 0.5rem;
  border: 1px solid var(--border);
  border-radius: 0.35rem;
  background: var(--surface, #fff);
  color: var(--ink);
}

.sheet-form-add {
  min-height: 3.2rem;
  color: var(--add);
  border-color: color-mix(in srgb, var(--add) 28%, var(--border));
  background: color-mix(in srgb, var(--add) 6%, var(--surface, #fff));
}

.sheet-form-add::placeholder {
  color: color-mix(in srgb, var(--add) 55%, var(--muted));
}

.sheet-form-add-hint {
  margin: 0.28rem 0 0;
  font-size: 0.72rem;
  line-height: 1.35;
  color: var(--muted);
}

.sheet-form-icon-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.85rem;
  height: 1.85rem;
  padding: 0;
  border: none;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  border-radius: 0.3rem;
  flex-shrink: 0;
}

.sheet-form-icon-btn svg {
  width: 0.95rem;
  height: 0.95rem;
  display: block;
}

.sheet-form-icon-btn:hover,
.sheet-form-icon-btn:focus-visible {
  color: var(--ink);
  background: color-mix(in srgb, var(--accent) 8%, transparent);
  outline: none;
}

.sheet-form-put {
  flex-shrink: 0;
}

.scene-form {
  gap: 0.75rem;
}

.scene-anchor {
  display: grid;
  grid-template-columns: 1fr 5.5rem;
  gap: 0.55rem 0.7rem;
}

.forge-sheets-dock {
  display: none;
  flex: 0 0 auto;
  align-items: center;
  justify-content: flex-end;
  gap: 0.65rem;
  margin: 0;
  padding: 0.55rem 0.75rem 0.7rem;
  border-top: 1px solid var(--border);
  background: color-mix(in srgb, var(--bg) 92%, var(--surface, #fff));
  box-shadow: 0 -8px 16px color-mix(in srgb, var(--ink) 8%, transparent);
}

.forge-sheets-detail.is-dirty .forge-sheets-dock {
  display: flex;
}

#sheets-save-status.is-error {
  color: var(--beta-danger, #a33);
}

.triage-when.forge-when {
  margin: 0.35rem 0 0.55rem;
}

.triage-hint {
  margin: 0;
  font-size: 0.82rem;
  color: var(--muted);
}

.triage-field {
  display: flex;
  flex-direction: column;
  gap: 0.28rem;
  font-size: 0.68rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}

.triage-field input,
.triage-field select,
.triage-field textarea {
  font: inherit;
  font-size: 0.88rem;
  letter-spacing: 0;
  text-transform: none;
  color: var(--ink);
  border: 1px solid var(--border);
  border-radius: 0.3rem;
  padding: 0.4rem 0.5rem;
  background: var(--surface, #fff);
}

.triage-field textarea {
  min-height: 7.5rem;
  resize: vertical;
  line-height: 1.45;
  font-family: var(--serif);
}

.triage-actions-target {
  margin: 0 0 0.45rem;
  font-size: 0.72rem;
  letter-spacing: 0.04em;
  color: var(--muted);
}

.triage-icon-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.35rem;
  height: 2.35rem;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 0.4rem;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
}

.triage-icon-btn svg {
  width: 1.1rem;
  height: 1.1rem;
  display: block;
}

.triage-icon-btn:hover {
  color: var(--ink);
  border-color: color-mix(in srgb, var(--ink) 25%, var(--border));
}

@keyframes triage-icon-confirm-pop {
  0% {
    box-shadow: 0 0 0 0 color-mix(in srgb, var(--danger, #8a2f2f) 0%, transparent);
  }
  55% {
    box-shadow: 0 0 0 8px color-mix(in srgb, var(--danger, #8a2f2f) 22%, transparent);
  }
  100% {
    box-shadow: 0 0 0 0 transparent;
  }
}

.triage-icon-btn.is-confirm {
  color: var(--danger, #8a2f2f);
  border-color: var(--danger, #8a2f2f);
  background: color-mix(in srgb, var(--danger, #8a2f2f) 10%, transparent);
  animation: triage-icon-confirm-pop 260ms ease-out;
}

.badge-partial {
  font-size: 0.62rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  padding: 0.12rem 0.35rem;
  border-radius: 0.25rem;
  background: color-mix(in srgb, #a0562c 18%, transparent);
  color: #a0562c;
}

.tag-brace {
  opacity: 0.55;
  color: var(--muted);
}

mark.tag-theme {
  background: color-mix(in srgb, var(--accent) 12%, transparent);
  color: var(--accent);
  border-radius: 0.12em;
}

@media (max-width: 900px) {
  .capture-layout {
    grid-template-columns: 1fr;
    grid-template-rows: minmax(0, 1fr) auto;
  }
  .capture-side {
    border-left: 0;
    border-top: 1px solid var(--border);
    max-height: 28vh;
    height: auto;
  }
  .capture-meta {
    --meta-peek: 2.6rem;
    --meta-expand: min(34vh, 16rem);
  }
  .capture-meta-body {
    grid-template-columns: 1fr;
  }
  .triage-layout {
    grid-template-columns: 1fr;
    grid-template-rows: minmax(12rem, 38%) minmax(0, 1fr);
  }
  .triage-inbox {
    border-right: 0;
    border-bottom: 1px solid var(--border);
  }
}

/* Forge sheets */
.forge-sheets-layout {
  display: grid;
  grid-template-columns: minmax(12rem, 18rem) minmax(0, 1fr);
  flex: 1;
  min-height: 0;
  height: 100%;
  overflow: hidden;
}

.forge-sheets-main {
  overflow: auto;
  min-width: 0;
}

.forge-sheets-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem;
  padding: 0.75rem 1rem;
  border-bottom: 1px solid var(--border);
  font-family: var(--sans);
}

.forge-sheets-q {
  flex: 1;
  min-width: 8rem;
  font: inherit;
  font-size: 0.82rem;
  border: 1px solid var(--border);
  border-radius: 0.35rem;
  padding: 0.35rem 0.55rem;
  background: var(--surface, #fff);
}

.forge-sheets-groups {
  padding: 0.75rem 1rem 1.5rem;
  font-family: var(--sans);
}

.forge-sheets-group + .forge-sheets-group {
  margin-top: 1.25rem;
}

.forge-sheets-group-title {
  margin: 0 0 0.45rem;
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--tab-accent, var(--muted));
  font-weight: 500;
  box-shadow: inset 0 -1px 0 color-mix(in srgb, var(--tab-accent, transparent) 55%, transparent);
}

.forge-sheets-cards {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.forge-sheets-card {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  width: 100%;
  text-align: left;
  border: 1px solid var(--border);
  border-left: 3px solid var(--sheet-color, var(--border));
  border-radius: 0.4rem;
  background: var(--surface, #fff);
  box-shadow: 0 1px 0 var(--forge-shadow, transparent);
  padding: 0.5rem 0.6rem;
  cursor: pointer;
  font: inherit;
  color: var(--ink);
}

.forge-sheets-card:hover {
  border-color: color-mix(in srgb, var(--sheet-color, var(--accent)) 55%, var(--border));
  border-left-color: var(--sheet-color, var(--accent));
}
.forge-sheets-card.active {
  border-color: color-mix(in srgb, var(--sheet-color, var(--accent)) 55%, var(--border));
  border-left-color: var(--sheet-color, var(--accent));
  background: color-mix(in srgb, var(--sheet-color, var(--accent)) 8%, transparent);
}
.forge-sheets-card.is-pending { border-style: dashed; }

.forge-sheets-card-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
}

.forge-sheets-card-name {
  font-weight: 500;
  font-size: 0.88rem;
}

.forge-sheets-card-meta {
  font-size: 0.68rem;
  color: var(--muted);
}

.forge-sheets-card-bar {
  display: block;
  height: 2px;
  background: color-mix(in srgb, var(--border) 80%, transparent);
  border-radius: 1px;
  overflow: hidden;
}

.forge-sheets-card-bar span {
  display: block;
  height: 100%;
  background: var(--sheet-color, var(--accent));
}

.forge-sheets-card-stats {
  font-size: 0.68rem;
}

.forge-sheets-detail {
  display: flex;
  flex-direction: column;
  min-height: 0;
  border-left: 3px solid var(--sheet-color, var(--border));
  overflow: hidden;
  padding: 0;
  font-family: var(--sans);
  font-size: 0.82rem;
  background: color-mix(in srgb, var(--bg-sidebar) 45%, var(--bg));
}

.forge-sheets-detail-scroll {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  padding: 0.85rem 0.75rem 1.5rem;
}

.forge-sheets-detail-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
  padding-bottom: 0.45rem;
  border-bottom: 1px solid color-mix(in srgb, var(--sheet-color, var(--border)) 28%, var(--border));
}

.forge-sheets-detail-head h2 {
  margin: 0 0 0.25rem;
  font-family: var(--serif);
  font-size: 1.05rem;
  font-weight: 500;
}

.forge-sheets-detail-head .btn-ghost {
  flex: 0 0 auto;
}

.forge-when-del {
  margin-top: 0.45rem;
}

.forge-sheets-detail.is-moment {
  border-left-color: var(--sheet-color, var(--accent));
  background: color-mix(in srgb, var(--sheet-color, var(--accent)) 6%, var(--bg));
}

.forge-when {
  margin: 0.65rem 0 0.85rem;
  padding: 0.55rem 0.6rem 0.6rem;
  border: 1px solid var(--border);
  border-radius: 0.4rem;
  background: var(--surface, #fff);
}

.forge-when.is-moment,
.forge-when.is-portrait,
.forge-when.is-scene {
  border-color: color-mix(in srgb, var(--accent) 55%, var(--border));
  background: color-mix(in srgb, var(--accent) 8%, var(--surface, #fff));
}

.forge-when-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.4rem;
}

.forge-when-kicker {
  font-size: 0.68rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}

.forge-when.is-moment .forge-when-kicker,
.forge-when.is-moment .forge-when-now {
  color: var(--accent);
}

.forge-when-now {
  font-family: var(--serif);
  font-size: 0.88rem;
}

.forge-when-row {
  display: flex;
  align-items: flex-start;
  gap: 0.45rem;
  margin-top: 0.35rem;
}

.forge-when-row-label {
  flex: 0 0 5.8rem;
  margin-top: 0.2rem;
  font-size: 0.64rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
}

.forge-when-track {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  flex: 1 1 auto;
  min-width: 0;
}

.forge-when-chip {
  font: inherit;
  font-size: 0.75rem;
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 0.15rem 0.55rem;
  background: transparent;
  color: var(--ink);
  cursor: pointer;
}

.forge-when-chip.is-active {
  border-color: var(--era, var(--ink));
  background: var(--era, var(--ink));
  color: var(--bg);
}

.forge-when-chip.is-add {
  min-width: 1.6rem;
  padding-inline: 0.4rem;
  color: var(--muted);
}

.forge-when-add {
  display: inline-flex;
  align-items: center;
  min-width: 1.6rem;
}

.forge-when-add .forge-when-new {
  display: none;
}

.forge-when-add.is-open {
  flex: 1 1 10rem;
  min-width: 10rem;
}

.forge-when-add.is-open .is-add {
  display: none;
}

.forge-when-add.is-open .forge-when-new {
  display: block;
  width: 100%;
  font: inherit;
  font-size: 0.82rem;
  border: 1px solid var(--accent);
  border-radius: 999px;
  padding: 0.15rem 0.65rem;
  background: var(--surface, #fff);
  color: var(--ink);
}

.forge-when-scope {
  display: flex;
  gap: 0.3rem;
  margin-top: 0.45rem;
}

.forge-when-scope-btn {
  font: inherit;
  font-size: 0.72rem;
  border: 1px solid var(--border);
  border-radius: 0.25rem;
  padding: 0.12rem 0.45rem;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
}

.forge-when-scope-btn.is-active {
  border-color: var(--accent);
  color: var(--accent);
}

.forge-when-hint {
  margin: 0.4rem 0 0;
  font-size: 0.72rem;
}

.forge-when-diff {
  margin: 0.4rem 0 0;
  font-size: 0.72rem;
  color: var(--accent);
}

.forge-when-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 0.7rem;
  align-items: flex-end;
  margin-top: 0.45rem;
}

.forge-when-rename,
.forge-when-from,
.forge-when-marking {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  margin-top: 0;
  font-size: 0.68rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
  flex: 1 1 7.5rem;
  min-width: 0;
}

.forge-when-marking {
  flex: 2 1 16rem;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.35rem 0.5rem;
}

.forge-when-marking label {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  flex: 1 1 6.5rem;
  min-width: 0;
}

.forge-when-rename input,
.forge-when-from select,
.forge-when-marking input,
.forge-when-marking select {
  font: inherit;
  font-size: 0.82rem;
  letter-spacing: 0;
  text-transform: none;
  color: var(--ink);
  border: 1px solid var(--border);
  border-radius: 0.3rem;
  padding: 0.25rem 0.45rem;
  background: var(--surface, #fff);
}

.forge-when-chip[data-era="0"] { --era: var(--accent); }
.forge-when-chip[data-era="1"] { --era: color-mix(in srgb, var(--ink) 72%, #4a5a3a); }
.forge-when-chip[data-era="2"] { --era: color-mix(in srgb, var(--ink) 55%, #6a3a28); }
.forge-when-chip[data-era="3"] { --era: color-mix(in srgb, var(--ink) 50%, #3a4a5a); }
.forge-when-chip[data-era="4"] { --era: color-mix(in srgb, var(--accent) 55%, #3d3550); }

.forge-when-chip.is-portrait:not(.is-active) {
  border-color: var(--era, var(--accent));
  background: color-mix(in srgb, var(--era, var(--accent)) 22%, var(--surface, #fff));
  color: var(--era, var(--ink));
}

.forge-when-chip.is-scene:not(.is-active) {
  border-color: var(--era, var(--border));
  background: color-mix(in srgb, var(--era, var(--accent)) 12%, var(--surface, #fff));
}

.forge-when-chip.is-portrait.is-active,
.forge-when-chip.is-scene.is-active {
  border-color: var(--era, var(--accent));
  background: var(--era, var(--accent));
  color: var(--bg);
}

.forge-when-chip.is-first:not(.is-active) {
  font-weight: 600;
}

.forge-when-chip[draggable="true"] {
  cursor: grab;
}

.forge-when-chip.is-dragging {
  opacity: 0.4;
}

.forge-when-chip.drop-before {
  box-shadow: inset 2px 0 0 var(--era, var(--accent));
}

.forge-when-chip.drop-after {
  box-shadow: inset -2px 0 0 var(--era, var(--accent));
}

.forge-when-chip.has-marking:not(.is-active) {
  border-style: dashed;
}

.forge-sheets-detail.is-moment .sec-card.has-body:not(.is-changed) {
  border-left-color: var(--border);
}

.sec-card.is-changed {
  border-left: 2px solid var(--accent);
  background: color-mix(in srgb, var(--accent) 7%, var(--surface, #fff));
}

.sec-card.is-changed .sec-title {
  color: var(--accent);
}

.sec-card.is-changed .sheet-form-body {
  border-color: color-mix(in srgb, var(--accent) 40%, var(--border));
}

.sec-card.is-changed.is-contextuel {
  border-left-style: dashed;
}

.forge-sheets-more {
  margin-top: 1.1rem;
  border-top: 1px solid var(--border);
  padding-top: 0.55rem;
}

.forge-sheets-more summary {
  cursor: pointer;
  font-size: 0.68rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}

.forge-sheets-more[open] summary {
  margin-bottom: 0.35rem;
}

.forge-sheets-preview {
  margin: 0.75rem 0;
  font-family: var(--serif);
  font-size: 0.92rem;
  line-height: 1.5;
  color: var(--ink);
}

.forge-sheets-section {
  margin-top: 1rem;
}

.forge-sheets-section h3 {
  margin: 0 0 0.45rem;
  font-size: 0.68rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 500;
}

.forge-sheets-backlinks,
.forge-sheets-imps {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.forge-sheets-empty {
  padding: 1rem 0;
}

.forge-rev-timeline,
.forge-trame-rev-list {
  list-style: none;
  margin: 0 0 0.75rem;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}

.forge-rev-item {
  position: relative;
  padding: 0.15rem 0 0.15rem 0.7rem;
  border-left: 1px solid var(--border);
}

.forge-rev-item.is-durable {
  border-left-width: 2px;
  border-left-color: var(--accent);
}

.forge-rev-item.is-contextuel {
  border-left-style: dashed;
}

.forge-rev-moment {
  display: block;
  width: 100%;
  text-align: left;
  border: none;
  background: transparent;
  padding: 0;
  font: inherit;
  font-weight: 500;
  color: var(--ink);
  cursor: pointer;
}

.forge-rev-moment:hover {
  text-decoration: underline;
}

.forge-rev-scope,
.forge-rev-heading {
  display: inline-block;
  margin-right: 0.45rem;
  font-size: 0.68rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
}

.forge-rev-text {
  margin: 0.2rem 0 0;
  font-family: var(--serif);
  font-size: 0.88rem;
  line-height: 1.4;
}

#sheets-rev-toggle {
  margin-top: 0.45rem;
}

.forge-rev-form {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  margin-top: 0.55rem;
}

.forge-rev-field {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  font-size: 0.68rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
}

.forge-rev-field input,
.forge-rev-field select,
.forge-rev-field textarea {
  font: inherit;
  font-size: 0.82rem;
  letter-spacing: 0;
  text-transform: none;
  color: var(--ink);
  border: 1px solid var(--border);
  border-radius: 0.25rem;
  padding: 0.3rem 0.4rem;
  background: var(--surface, #fff);
}

.forge-rev-field textarea {
  resize: vertical;
  min-height: 3.5rem;
}

.forge-rev-anchor {
  display: flex;
  gap: 0.35rem;
}

.forge-rev-anchor select,
.forge-rev-anchor input {
  flex: 1;
}

.forge-trame-chip .chip-name {
  border: none;
  background: transparent;
  padding: 0;
  font: inherit;
  color: inherit;
  cursor: pointer;
}

.forge-trame-chip .chip-name:hover {
  text-decoration: underline;
}

/* Forge search */
.forge-search-wrap {
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
  font-family: var(--sans);
}

.forge-search-bar {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  padding: 0.85rem 1rem;
  border-bottom: 1px solid var(--border);
}

.forge-search-input {
  flex: 1;
  font: inherit;
  font-size: 0.95rem;
  border: 1px solid var(--border);
  border-radius: 0.4rem;
  padding: 0.45rem 0.65rem;
  background: var(--surface, #fff);
}

.forge-search-status {
  font-size: 0.72rem;
  white-space: nowrap;
}

.forge-search-results {
  flex: 1;
  overflow: auto;
  padding: 0.85rem 1rem 1.5rem;
}

.forge-search-hint {
  margin: 0;
}

.forge-search-group + .forge-search-group {
  margin-top: 1.25rem;
}

.forge-search-group-title {
  margin: 0 0 0.45rem;
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 500;
}

.forge-search-hits {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.forge-search-hit {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  width: 100%;
  text-align: left;
  border: 1px solid var(--border);
  border-radius: 0.4rem;
  background: var(--surface, #fff);
  box-shadow: 0 1px 0 var(--forge-shadow, transparent);
  padding: 0.45rem 0.6rem;
  cursor: pointer;
  font: inherit;
  color: var(--ink);
}

.forge-search-hit:hover { border-color: var(--accent); }

.forge-search-hit-title {
  font-weight: 500;
  font-size: 0.88rem;
}

.forge-search-hit-excerpt {
  font-size: 0.72rem;
}

/* Forge graph */
.forge-graph-wrap {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(16rem, 22rem);
  grid-template-rows: minmax(0, 1fr);
  flex: 1;
  min-height: 0;
  height: 100%;
  overflow: hidden;
}

.forge-graph-canvas-wrap {
  position: relative;
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  height: 100%;
  border-right: 1px solid color-mix(in srgb, var(--border) 75%, var(--accent) 25%);
  background: color-mix(in srgb, var(--forge-inset, var(--bg-sidebar)) 45%, var(--bg));
}

.forge-graph-stage {
  position: relative;
  display: flex;
  flex-direction: column;
  flex: 1;
  min-width: 0;
  min-height: 0;
}

.forge-graph-svg {
  display: block;
  width: 100%;
  flex: 1;
  min-height: 0;
  cursor: grab;
  font-family: var(--sans);
  user-select: none;
  touch-action: none;
}

.forge-graph-svg.is-panning { cursor: grabbing; }

.forge-graph-tools {
  position: absolute;
  top: 0.65rem;
  left: 0.65rem;
  z-index: 2;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.forge-graph-tool {
  width: 1.85rem;
  height: 1.85rem;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 0.3rem;
  background: var(--surface, #fff);
  color: var(--ink);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.forge-graph-tool svg {
  width: 0.95rem;
  height: 0.95rem;
  display: block;
}

.forge-graph-tool:hover { border-color: var(--accent); }

.forge-g-edge .forge-g-edge-line {
  stroke: var(--edge, color-mix(in srgb, var(--muted) 70%, var(--ink)));
  stroke-width: 1.4;
  fill: none;
}

.forge-g-edge.is-dim {
  opacity: 0.28;
}

.forge-g-edge-hit {
  stroke: transparent;
  stroke-width: 14;
  fill: none;
}

.forge-g-edge.is-active .forge-g-edge-line {
  stroke: var(--accent);
  stroke-width: 2.2;
}

.forge-g-edge.is-open line:not(.forge-g-edge-hit) {
  stroke-dasharray: 5 4;
}

.forge-g-arrow {
  pointer-events: none;
}

.forge-g-edge-label {
  fill: var(--ink);
  font-size: 11px;
  font-family: var(--sans);
  text-anchor: middle;
  pointer-events: none;
  stroke: var(--surface, #faf6f4);
  stroke-width: 4px;
  paint-order: stroke fill;
  stroke-linejoin: round;
}

.forge-g-hit {
  fill: transparent;
  stroke: none;
}

.forge-g-dot,
.forge-g-diamond,
.forge-g-rect {
  fill: var(--node, var(--accent));
  stroke: color-mix(in srgb, var(--node, var(--ink)) 55%, var(--ink));
  stroke-width: 1.6;
}

.forge-g-node-note .forge-g-dot { fill: transparent; }

.forge-g-node.is-dim {
  opacity: 0.3;
}

.forge-g-node.is-focus .forge-g-dot,
.forge-g-node.is-focus .forge-g-diamond,
.forge-g-node.is-focus .forge-g-rect {
  stroke-width: 2.2;
  filter: drop-shadow(0 0 0 color-mix(in srgb, var(--node) 40%, transparent));
}

.forge-g-node.is-pinned .forge-g-dot,
.forge-g-node.is-pinned .forge-g-diamond,
.forge-g-node.is-pinned .forge-g-rect {
  stroke-dasharray: 4 3;
}

.forge-g-node.is-open .forge-g-dot,
.forge-g-node.is-open .forge-g-diamond,
.forge-g-node.is-open .forge-g-rect { stroke-dasharray: 3 2.5; }

.forge-g-node.is-active .forge-g-dot,
.forge-g-node.is-active .forge-g-diamond,
.forge-g-node.is-active .forge-g-rect {
  stroke-width: 2.6;
  stroke: var(--ink);
}

.forge-g-label {
  fill: var(--ink);
  font-size: 12px;
  font-family: var(--sans);
  text-anchor: middle;
  pointer-events: none;
}

.forge-g-glyph {
  pointer-events: none;
  color: color-mix(in srgb, #fff 88%, var(--node, var(--ink)));
}

.forge-g-glyph-num {
  fill: color-mix(in srgb, #fff 90%, var(--node, var(--ink)));
  font-size: 11px;
  font-family: var(--sans);
  font-weight: 600;
  text-anchor: middle;
  pointer-events: none;
}

.forge-g-node,
.forge-g-edge { cursor: pointer; }

.forge-graph-legend {
  position: absolute;
  top: 0.65rem;
  right: 0.65rem;
  z-index: 2;
  display: flex;
  gap: 0.2rem;
  padding: 0.28rem 0.32rem;
  border: 1px solid var(--border);
  border-radius: 0.4rem;
  background: color-mix(in srgb, var(--surface, #fff) 92%, transparent);
}

.forge-graph-legend-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.05rem;
  min-width: 1.7rem;
  padding: 0.18rem 0.12rem 0.08rem;
  border: 0;
  background: transparent;
  color: var(--swatch, var(--ink));
  font: inherit;
  cursor: pointer;
}

.forge-graph-legend-item.is-off {
  opacity: 0.38;
}

.forge-graph-legend-item:hover { color: var(--accent); }

.forge-graph-legend-ico {
  color: var(--swatch, var(--ink));
  display: flex;
}

.forge-graph-legend-ico svg {
  width: 0.95rem;
  height: 0.95rem;
  display: block;
}

.forge-graph-legend-count {
  color: var(--muted);
  font-size: 0.58rem;
  line-height: 1;
}

.forge-graph-panel {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.forge-graph-panel-title {
  margin: 0;
  font-size: 0.65rem;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 500;
}

.forge-graph-panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.4rem;
}

.forge-graph-ico-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.28rem;
}

.forge-graph-ico {
  width: 1.9rem;
  height: 1.9rem;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 0.35rem;
  background: var(--surface, #fff);
  color: var(--muted);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.forge-graph-ico svg {
  width: 1.05rem;
  height: 1.05rem;
  display: block;
}

.forge-graph-ico:hover {
  border-color: var(--accent);
  color: var(--ink);
}

.forge-graph-ico.is-on {
  color: var(--accent);
  border-color: var(--accent);
  background: color-mix(in srgb, var(--accent) 10%, var(--surface, #fff));
}

.forge-graph-focus-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  max-height: 11rem;
  overflow: auto;
}

.forge-graph-person {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.18rem;
  width: 3.2rem;
  padding: 0.2rem 0.1rem;
  border: 0;
  background: transparent;
  color: var(--ink);
  font: inherit;
  cursor: pointer;
}

.forge-graph-person-mark {
  width: 1.85rem;
  height: 1.85rem;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: var(--surface, #fff);
  color: var(--muted);
  font-size: 0.62rem;
  letter-spacing: 0.02em;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.forge-graph-person-name {
  font-size: 0.62rem;
  line-height: 1.15;
  text-align: center;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.forge-graph-person:hover .forge-graph-person-mark,
.forge-graph-person.is-on .forge-graph-person-mark {
  border-color: var(--accent);
  color: var(--accent);
  background: color-mix(in srgb, var(--accent) 10%, var(--surface, #fff));
}

.forge-graph-reel {
  display: flex;
  align-items: center;
  gap: 0.3rem;
  flex-shrink: 0;
  z-index: 3;
  padding: 0.12rem 0.5rem 0.18rem;
  border-bottom: 1px solid var(--border);
  background: color-mix(in srgb, var(--surface, #fff) 88%, var(--bg));
}

.forge-graph-reel[hidden] { display: none; }

.forge-graph-reel-main {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}

.forge-graph-reel-label {
  margin: 0;
  padding: 0 0.15rem;
  font-size: 0.58rem;
  color: var(--muted);
  letter-spacing: 0.05em;
  text-transform: uppercase;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.2;
}

.forge-graph-reel-track {
  position: relative;
  height: 2.2rem;
  min-width: 0;
  touch-action: none;
  cursor: pointer;
}

.forge-graph-reel-rail,
.forge-graph-reel-fill {
  position: absolute;
  left: 0.5rem;
  right: 0.5rem;
  top: 50%;
  height: 1px;
  background: var(--border);
  transform: translateY(-50%);
  pointer-events: none;
}

.forge-graph-reel-fill {
  right: auto;
  width: calc(var(--reel-t, 0) * (100% - 1rem));
  height: 2px;
  background: var(--accent);
}

.forge-graph-reel-marks {
  position: absolute;
  left: 0.5rem;
  right: 0.5rem;
  top: 0;
  bottom: 0;
}

.forge-graph-reel-mark {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 1.35rem;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--muted);
  font: inherit;
  cursor: pointer;
  transform: translateX(-50%);
}

.forge-graph-reel-dot {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 0.42rem;
  height: 0.42rem;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: var(--surface, #fff);
  transform: translate(-50%, -50%);
  pointer-events: none;
}

.forge-graph-reel-num {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  font-size: 0.58rem;
  line-height: 1;
  letter-spacing: 0.01em;
  pointer-events: none;
  white-space: nowrap;
}

.forge-graph-reel-mark.is-up .forge-graph-reel-num {
  bottom: calc(50% + 0.4rem);
}

.forge-graph-reel-mark.is-down .forge-graph-reel-num {
  top: calc(50% + 0.4rem);
}

.forge-graph-reel-mark.is-all .forge-graph-reel-num {
  font-size: 0.5rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.forge-graph-reel-mark.is-on {
  color: var(--accent);
  z-index: 2;
}

.forge-graph-reel-mark.is-on .forge-graph-reel-dot {
  border-color: var(--accent);
  background: var(--accent);
}

.forge-graph-reel-mark:hover {
  color: var(--ink);
}

.forge-graph-reel-mark:hover .forge-graph-reel-dot {
  border-color: var(--accent);
}

.forge-graph-reel-step {
  width: 1.55rem;
  height: 1.55rem;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 0.3rem;
  background: var(--surface, #fff);
  color: var(--ink);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.forge-graph-reel-step svg {
  width: 0.85rem;
  height: 0.85rem;
  display: block;
}

.forge-graph-reel-step:hover { border-color: var(--accent); }

.forge-graph-neighbors {
  list-style: none;
  margin: 0.25rem 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.forge-graph-neighbors-title {
  margin: 0.5rem 0 0;
  font-size: 0.65rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
}

.forge-graph-neighbor {
  appearance: none;
  border: 0;
  background: transparent;
  padding: 0.1rem 0;
  font: inherit;
  font-size: 0.76rem;
  color: var(--accent);
  cursor: pointer;
  text-align: left;
}

.forge-graph-neighbor:hover { text-decoration: underline; }

.forge-graph-edges-fold {
  margin-top: auto;
  border-top: 1px solid var(--border);
  padding-top: 0.45rem;
}

.forge-graph-edges-fold summary {
  cursor: pointer;
  font-size: 0.72rem;
  color: var(--muted);
  user-select: none;
}

.forge-graph-edges-fold[open] summary {
  margin-bottom: 0.35rem;
}

.forge-graph-empty {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: 1rem;
  pointer-events: none;
  font-family: var(--sans);
  font-size: 0.88rem;
}

.forge-graph-empty[hidden] { display: none; }

.forge-graph-pop {
  position: absolute;
  z-index: 8;
  width: min(16.5rem, calc(100% - 1.4rem));
  padding: 0.7rem 0.75rem 0.8rem;
  border: 1px solid var(--border);
  border-radius: 0.4rem;
  background: var(--surface, #fff);
  box-shadow: 0 6px 22px color-mix(in srgb, var(--ink) 14%, transparent);
  font-family: var(--sans);
  color: var(--ink);
}

.forge-graph-pop[hidden] { display: none; }

.forge-graph-pop-close {
  position: absolute;
  top: 0.28rem;
  right: 0.28rem;
  width: 1.45rem;
  height: 1.45rem;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.forge-graph-pop-close svg {
  width: 0.85rem;
  height: 0.85rem;
  display: block;
}

.forge-graph-pop-close:hover { color: var(--ink); }

.forge-graph-pop-kicker {
  margin: 0 1.4rem 0.15rem 0;
  font-size: 0.62rem;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--muted);
}

.forge-graph-pop-title {
  margin: 0 1.4rem 0.35rem 0;
  font-size: 0.95rem;
  font-weight: 500;
  line-height: 1.25;
}

.forge-graph-pop-excerpt {
  margin: 0 0 0.55rem;
  font-size: 0.78rem;
  line-height: 1.4;
  color: var(--ink);
}

.forge-graph-pop-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  margin-top: 0.15rem;
}

.forge-graph-pop-sub {
  margin: 0.55rem 0 0.2rem;
  font-size: 0.62rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
}

.forge-graph-pop-links {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.12rem;
}

.forge-graph-pop-link {
  appearance: none;
  border: 0;
  background: transparent;
  padding: 0;
  font: inherit;
  font-size: 0.78rem;
  color: var(--accent);
  cursor: pointer;
  text-align: left;
}

.forge-graph-pop-link:hover { text-decoration: underline; }

.forge-graph-side {
  min-width: 0;
  min-height: 0;
  overflow: auto;
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  padding: 0.75rem 0.75rem 1.5rem;
  font-family: var(--sans);
  font-size: 0.78rem;
}

.forge-graph-side-title {
  margin: 0 0 0.15rem;
  font-size: 0.68rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 500;
}

.forge-graph-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
}

.forge-graph-edges {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}

.forge-graph-edge {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.18rem;
  width: 100%;
  text-align: left;
  border: 1px solid var(--border);
  border-radius: 0.35rem;
  background: var(--surface, #fff);
  box-shadow: 0 1px 0 var(--forge-shadow, transparent);
  padding: 0.5rem 0.55rem;
  cursor: pointer;
  font: inherit;
  color: var(--ink);
}

.forge-graph-edge:hover,
.forge-graph-edge.is-active {
  border-color: var(--accent);
}

.forge-graph-edge.is-active {
  background: color-mix(in srgb, var(--accent) 7%, var(--surface, #fff));
}

.forge-graph-edge-line {
  display: block;
  font-size: 0.8rem;
  line-height: 1.35;
  white-space: normal;
  overflow-wrap: break-word;
}

.forge-graph-edge-raw,
.forge-graph-edge-proof {
  display: block;
  font-size: 0.72rem;
  line-height: 1.3;
  color: var(--muted);
  white-space: normal;
  overflow-wrap: break-word;
}

.forge-graph-inspect {
  padding-top: 0.15rem;
  border-top: 1px solid var(--border);
}

.forge-graph-inspect-kicker {
  margin: 0 0 0.25rem;
  font-weight: 500;
}

.forge-graph-inspect-empty { margin: 0; }

.forge-graph-inspect-nature { margin: 0 0 0.35rem; }

.forge-graph-proof {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.4rem;
  margin-top: 0.35rem;
}

.forge-graph-excerpt-body {
  margin: 0.45rem 0 0.65rem;
  max-height: 11rem;
  overflow: auto;
  padding: 0.5rem 0.55rem;
  border: 1px solid var(--border);
  border-radius: 0.35rem;
  background: var(--forge-inset, var(--bg));
  font-family: var(--serif);
  font-size: 0.88rem;
  line-height: 1.45;
  white-space: pre-wrap;
}

.forge-graph-excerpt-body mark {
  background: color-mix(in srgb, var(--accent) 22%, transparent);
  color: inherit;
  padding: 0 0.1em;
}

@media (max-width: 900px) {
  .forge-sheets-layout,
  .forge-graph-wrap {
    grid-template-columns: 1fr;
    grid-template-rows: minmax(16rem, 1fr) minmax(12rem, 42%);
  }
  .forge-sheets-detail,
  .forge-graph-canvas-wrap {
    border-left: 0;
    border-right: 0;
    border-top: none;
    border-bottom: 1px solid var(--border);
  }
}

/* —— Forge Trame —— */
.forge-trame-layout {
  display: grid;
  grid-template-columns: minmax(18rem, 24rem) minmax(0, 1fr);
  gap: 0;
  height: 100%;
  min-height: 0;
  overflow: hidden;
}

.forge-trame-list-col {
  --loose-card-est: 4.05rem;
  --loose-peek: clamp(
    calc(var(--loose-card-est) * 1.35),
    calc(var(--loose-card-est) * 1.2 + 9vh),
    calc(var(--loose-card-est) * 3)
  );
  --loose-expand: min(42vh, 22rem);
  --loose-fade: 1.75rem;
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
  border-right: 1px solid color-mix(in srgb, var(--border) 75%, var(--accent) 25%);
  background: color-mix(in srgb, var(--bg-sidebar) 25%, var(--bg));
}

.forge-trame-list-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.65rem 0.75rem;
  border-bottom: 1px solid var(--border);
}

.forge-trame-list-head-actions {
  display: flex;
  align-items: center;
  gap: 0.35rem;
}

.forge-trame-icon-add,
.forge-trame-ch-add,
.forge-trame-new-ch {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: 0;
  border: none;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  border-radius: 0.25rem;
}

.forge-trame-icon-add,
.forge-trame-ch-add {
  width: 1.45rem;
  height: 1.45rem;
  flex: 0 0 auto;
}

.forge-trame-icon-add:hover,
.forge-trame-ch-add:hover,
.forge-trame-new-ch:hover,
.forge-trame-icon-add:focus-visible,
.forge-trame-ch-add:focus-visible,
.forge-trame-new-ch:focus-visible {
  color: var(--ink);
  background: color-mix(in srgb, var(--accent) 8%, transparent);
  outline: none;
}

.forge-trame-plus-icon {
  display: block;
}

.forge-trame-new-ch {
  gap: 0.35rem;
  width: 100%;
  margin-top: 0.35rem;
  padding: 0.35rem 0.2rem;
  font: inherit;
  font-size: 0.68rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}

.forge-trame-ch-row {
  display: flex;
  align-items: center;
  gap: 0.2rem;
  margin: 0.2rem 0 0;
}

.forge-trame-ch-row .forge-trame-ch {
  flex: 1;
  min-width: 0;
  margin: 0;
}

.forge-trame-ch-row.is-naming .forge-trame-ch {
  flex: 0 1 auto;
}

.forge-trame-scene-input {
  flex: 1;
  min-width: 0;
  font: inherit;
  font-size: 0.82rem;
  letter-spacing: 0;
  text-transform: none;
  color: var(--ink);
  border: none;
  border-bottom: 1px solid var(--accent);
  background: transparent;
  padding: 0.1rem 0;
}

.forge-trame-scene-input:focus {
  outline: none;
}

.forge-trame-ch-add {
  opacity: 0.45;
}

@media (hover: hover) and (pointer: fine) {
  .forge-trame-ch-add {
    opacity: 0;
  }

  .forge-trame-ch-row:hover .forge-trame-ch-add,
  .forge-trame-ch-row:focus-within .forge-trame-ch-add,
  .forge-trame-ch-add:focus-visible {
    opacity: 1;
  }
}

.forge-trame-list-col.is-dragging .forge-trame-ch-add {
  opacity: 0;
  pointer-events: none;
}

.forge-trame-organize {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem 0.55rem;
  padding: 0.45rem 0.75rem;
  border-bottom: 1px solid var(--border);
  font-size: 0.78rem;
}

.forge-trame-organize[hidden] {
  display: none !important;
}

.forge-trame-organize-hint {
  flex: 1 1 100%;
  margin: 0;
  color: var(--muted);
  font-size: 0.75rem;
  line-height: 1.35;
}

.forge-trame-list-col.is-organize .forge-trame-check {
  display: flex;
}

.forge-trame-list-col.is-organize .forge-trame-card {
  grid-template-columns: auto auto minmax(0, 1fr) auto;
}

.forge-trame-check {
  display: none;
  align-items: center;
  padding-top: 0.15rem;
}

.forge-trame-check input {
  margin: 0;
  accent-color: var(--accent);
}

.forge-trame-bucket {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  padding: 0.1rem 0.15rem 0.35rem;
  border-radius: 0.4rem;
}

.forge-trame-bucket.is-drop {
  outline: 1px dashed var(--accent);
  outline-offset: 2px;
  background: color-mix(in srgb, var(--accent) 7%, transparent);
}

.forge-trame-bucket.is-arrive .forge-trame-ch,
.forge-trame-bucket.is-focus .forge-trame-ch {
  color: var(--accent);
}

.forge-trame-bucket-empty {
  margin: 0;
  padding: 0.15rem 0.1rem 0.05rem;
  font-size: 0.75rem;
}

.forge-trame-ch {
  display: block;
  width: 100%;
  margin: 0.2rem 0 0;
  padding: 0.1rem 0;
  border: none;
  background: transparent;
  font: inherit;
  font-size: 0.68rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  text-align: left;
  cursor: pointer;
}

.forge-trame-ch:hover,
.forge-trame-list-col.is-organize .forge-trame-ch:hover {
  color: var(--ink);
}

.forge-trame-ch.is-loose {
  cursor: pointer;
  margin-top: 0;
}

.forge-trame-loose-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.4rem;
}

.forge-trame-loose-head .forge-trame-ch {
  width: auto;
  flex: 0 1 auto;
}

.forge-trame-loose-filters {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 0.1rem;
}

.forge-trame-filter {
  border: none;
  background: transparent;
  font: inherit;
  font-size: 0.62rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
  padding: 0.12rem 0.32rem;
  cursor: pointer;
  border-radius: 0.25rem;
  box-shadow: inset 0 -1px 0 transparent;
  transition: color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease;
}

.forge-trame-filter .n {
  margin-left: 0.2rem;
  font-variant-numeric: tabular-nums;
  opacity: 0.7;
}

.forge-trame-filter:hover,
.forge-trame-filter:focus-visible {
  color: var(--tab-accent, var(--ink));
  outline: none;
}

.forge-trame-filter.is-active {
  color: var(--tab-accent, var(--ink));
  background: color-mix(in srgb, var(--tab-accent, var(--accent)) 10%, transparent);
  box-shadow: inset 0 -1.5px 0 var(--tab-accent, var(--accent));
}

.forge-trame-loose-wrap {
  position: relative;
}

.forge-trame-loose-body {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}

.forge-trame-bucket.is-loose.is-clipped .forge-trame-loose-body {
  max-height: var(--loose-peek);
  overflow: hidden;
  transition: max-height 0.28s ease, opacity 0.2s ease, -webkit-mask-size 0.2s ease, mask-size 0.2s ease;
  -webkit-mask-image: linear-gradient(
    to bottom,
    #000 0,
    #000 calc(100% - var(--loose-fade)),
    transparent 100%
  );
  mask-image: linear-gradient(
    to bottom,
    #000 0,
    #000 calc(100% - var(--loose-fade)),
    transparent 100%
  );
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
}

.forge-trame-bucket.is-loose.is-clipped:not(.is-open) .forge-trame-loose-wrap::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: var(--loose-fade);
  pointer-events: none;
  background: linear-gradient(
    to bottom,
    transparent,
    color-mix(in srgb, var(--bg-sidebar) 25%, var(--bg))
  );
}

.forge-trame-bucket.is-loose.is-clipped.is-open .forge-trame-loose-body {
  max-height: var(--loose-expand);
  overflow-y: auto;
  -webkit-mask-image: none;
  mask-image: none;
}

.forge-trame-bucket.is-loose.is-clipped.is-open .forge-trame-loose-wrap::after {
  display: none;
}

@media (hover: hover) and (pointer: fine) {
  .forge-trame-bucket.is-loose.is-clipped:hover .forge-trame-loose-body {
    max-height: var(--loose-expand);
    overflow-y: auto;
    -webkit-mask-image: none;
    mask-image: none;
  }

  .forge-trame-bucket.is-loose.is-clipped:hover .forge-trame-loose-wrap::after {
    display: none;
  }
}

@media (max-height: 760px), (max-width: 900px) {
  .forge-trame-list-col {
    --loose-peek: clamp(
      calc(var(--loose-card-est) * 1.1),
      calc(var(--loose-card-est) * 0.85 + 7vh),
      calc(var(--loose-card-est) * 2.1)
    );
    --loose-expand: min(34vh, 16rem);
  }
}

.forge-trame-plain-scroll {
  scrollbar-width: none;
}

.forge-trame-plain-scroll::-webkit-scrollbar,
.forge-trame-plain-scroll.sb-show::-webkit-scrollbar {
  width: 0 !important;
  height: 0 !important;
  display: none;
}

.forge-trame-list-col.is-dragging .forge-trame-bucket.is-loose .forge-trame-loose-body {
  max-height: 0 !important;
  overflow: hidden;
  opacity: 0;
}

.forge-trame-list-col.is-dragging .forge-trame-bucket.is-loose .forge-trame-loose-wrap::after,
.forge-trame-list-col.is-dragging .forge-trame-bucket.is-loose .forge-trame-bucket-empty {
  display: none;
}

.forge-trame-ch.is-edit {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  cursor: default;
}

.forge-trame-ch-num {
  flex: 0 0 auto;
}

.forge-trame-ch-input {
  flex: 1;
  min-width: 0;
  font: inherit;
  font-size: 0.82rem;
  letter-spacing: 0;
  text-transform: none;
  color: var(--ink);
  border: none;
  border-bottom: 1px solid var(--accent);
  background: transparent;
  padding: 0.1rem 0;
}

.forge-trame-ch-input:focus {
  outline: none;
}

.forge-trame-row.is-act,
.forge-trame-row.is-arc {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  width: 100%;
  border: none;
  box-shadow: none;
  background: transparent;
  border-radius: 0;
  cursor: pointer;
  font: inherit;
  color: var(--ink);
  padding: 0.35rem 0.15rem;
}

.forge-trame-row.is-act {
  margin-top: 0.85rem;
  padding-top: 0.7rem;
  border-top: 1px solid var(--border);
}

.forge-trame-row.is-arc {
  margin-top: 0.45rem;
  padding-left: 0.35rem;
  border-left: 2px solid var(--ink);
}

.forge-trame-row.is-act.is-active,
.forge-trame-row.is-arc.is-active {
  background: color-mix(in srgb, var(--accent) 6%, transparent);
}

.forge-trame-div-kicker {
  font-size: 0.62rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted);
}

.forge-trame-div-label {
  font-family: var(--serif);
  font-size: 0.95rem;
}

.forge-trame-collapse {
  display: inline-flex;
  border: none;
  background: transparent;
  padding: 0;
  color: var(--muted);
  cursor: pointer;
}

.forge-trame-chevron {
  display: block;
  transition: transform 0.15s ease;
}

.forge-trame-row.is-collapsed .forge-trame-chevron {
  transform: rotate(-90deg);
}

.forge-trame-span {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.forge-trame-span-item {
  display: flex;
  justify-content: space-between;
  gap: 0.75rem;
  width: 100%;
  text-align: left;
  border: none;
  background: transparent;
  padding: 0.25rem 0;
  font: inherit;
  color: var(--ink);
  cursor: pointer;
  border-bottom: 1px solid var(--border);
}

.forge-trame-span-item:hover {
  color: var(--accent);
}

#trame-story-extras[hidden] {
  display: none !important;
}

.forge-trame-list {
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding: 0.55rem 0.65rem 0.85rem;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.forge-trame-list-empty {
  margin: 1rem 0.25rem;
}

.forge-trame-card {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 0.35rem;
  align-items: start;
  width: 100%;
  text-align: left;
  border: 1px solid var(--border);
  border-radius: 0.4rem;
  background: var(--surface, #fff);
  box-shadow: 0 1px 0 var(--forge-shadow, transparent);
  padding: 0.45rem 0.5rem;
  cursor: pointer;
  font: inherit;
  color: var(--ink);
}

.forge-trame-card:hover,
.forge-trame-card.is-active {
  border-color: color-mix(in srgb, var(--accent) 45%, var(--border));
  background: color-mix(in srgb, var(--accent) 6%, var(--surface, #fff));
}

.forge-trame-card.is-portrait .forge-trame-card-label {
  color: var(--accent);
}

.forge-trame-card.is-revelation .forge-trame-card-label {
  font-style: italic;
}

@keyframes forge-trame-arrive {
  from { background: color-mix(in srgb, var(--accent) 30%, var(--surface, #fff)); }
  to { background: var(--surface, #fff); }
}

.forge-trame-card.is-arrive {
  animation: forge-trame-arrive 0.95s ease;
}

.forge-trame-card.is-drop,
.forge-trame-row.is-drop {
  outline: 1px dashed var(--accent);
  outline-offset: -1px;
}

.forge-trame-card.drop-before,
.forge-trame-row.drop-before {
  box-shadow: 0 -2px 0 var(--accent);
}

.forge-trame-card.drop-after,
.forge-trame-row.drop-after {
  box-shadow: 0 2px 0 var(--accent);
}

.forge-trame-card.is-dragging,
.forge-trame-row.is-dragging {
  opacity: 0.45;
}

.forge-trame-handle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.15rem;
  padding-top: 0.15rem;
  color: var(--muted);
  cursor: grab;
}

.forge-trame-handle:active {
  cursor: grabbing;
}

.forge-trame-card-body {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  min-width: 0;
}

.forge-trame-card-delete {
  display: inline-flex;
  align-items: flex-start;
  justify-content: center;
  width: 1.5rem;
  height: 1.5rem;
  margin-top: 0.05rem;
  padding: 0;
  border: none;
  border-radius: 0.3rem;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  opacity: 0.45;
}

.forge-trame-card-delete:hover,
.forge-trame-card-delete:focus-visible,
.forge-trame-card-delete.is-confirm {
  opacity: 1;
}

.forge-trame-card-delete:hover,
.forge-trame-card-delete:focus-visible {
  color: var(--ink);
  background: color-mix(in srgb, var(--ink) 6%, transparent);
}

.forge-trame-card-delete.is-confirm {
  color: var(--danger, #8a2f2f);
  background: color-mix(in srgb, var(--danger, #8a2f2f) 10%, transparent);
}

@media (hover: hover) and (pointer: fine) {
  .forge-trame-card-delete {
    opacity: 0;
  }

  .forge-trame-card:hover .forge-trame-card-delete,
  .forge-trame-card:focus-within .forge-trame-card-delete,
  .forge-trame-card-delete:focus-visible,
  .forge-trame-card-delete.is-confirm {
    opacity: 1;
  }
}

.forge-trame-card-label {
  font-family: var(--serif);
  font-size: 0.95rem;
  line-height: 1.3;
}

.forge-trame-card-num {
  font-family: var(--sans);
  font-size: 0.72rem;
  letter-spacing: 0.04em;
  color: var(--muted);
  margin-right: 0.35rem;
}

.forge-trame-card-meta {
  font-size: 0.68rem;
  letter-spacing: 0.04em;
}

.forge-trame-card-shift,
.forge-trame-shift {
  font-size: 0.72rem;
  color: var(--accent);
}

.forge-trame-detail {
  display: flex;
  flex-direction: column;
  min-height: 0;
  min-width: 0;
  overflow: hidden;
  background: color-mix(in srgb, var(--bg-sidebar) 20%, var(--bg));
}

.forge-trame-empty {
  margin: auto;
  font-family: var(--sans);
}

.forge-trame-inspector {
  display: flex;
  flex-direction: column;
  min-height: 0;
  height: 100%;
}

.forge-trame-inspector[hidden],
.forge-trame-empty[hidden] {
  display: none !important;
}

.forge-trame-detail-scroll {
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding: 0.9rem 1.1rem 1.25rem;
  max-width: 38rem;
}

.forge-trame-detail-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.75rem;
}

.forge-trame-title-input {
  flex: 1;
  min-width: 0;
  font-family: var(--serif);
  font-size: 1.25rem;
  font-weight: 500;
  border: none;
  border-bottom: 1px solid transparent;
  background: transparent;
  color: var(--ink);
  padding: 0.1rem 0 0.25rem;
}

.forge-trame-title-input:focus {
  outline: none;
  border-bottom-color: var(--accent);
}

.forge-trame-id-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.55rem 0.75rem;
  margin-bottom: 0.35rem;
}

.forge-trame-field {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  margin-bottom: 0.75rem;
  font-size: 0.68rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
}

.forge-trame-field[hidden] {
  display: none !important;
}

.forge-trame-field input,
.forge-trame-field select,
.forge-trame-field textarea {
  font: inherit;
  font-size: 0.9rem;
  letter-spacing: 0;
  text-transform: none;
  color: var(--ink);
  border: 1px solid var(--border);
  border-radius: 0.35rem;
  padding: 0.4rem 0.5rem;
  background: var(--surface, #fff);
}

.forge-trame-field textarea {
  resize: vertical;
  min-height: 7rem;
  font-family: var(--serif);
  line-height: 1.45;
}

.forge-trame-label {
  font-size: 0.68rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
}

.forge-trame-section {
  margin: 0.35rem 0 1rem;
}

.forge-trame-section-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.4rem;
}

.forge-trame-section-add {
  font: inherit;
  font-size: 0.72rem;
  letter-spacing: 0.04em;
  color: var(--muted);
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
}

.forge-trame-section-add:hover,
.forge-trame-section-add:focus-visible {
  color: var(--accent);
}

.forge-trame-section-add[hidden] {
  display: none;
}

.forge-trame-entities {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}

.forge-trame-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.8rem;
  padding: 0.2rem 0.4rem;
  border: 1px solid var(--border);
  border-radius: 0.25rem;
  background: var(--surface, #fff);
}

.forge-trame-chip .chip-remove {
  border: none;
  background: transparent;
  cursor: pointer;
  color: var(--muted);
  padding: 0;
  line-height: 1;
}

.forge-trame-attachments {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.forge-trame-att {
  border: 1px solid var(--border);
  border-radius: 0.35rem;
  padding: 0.55rem 0.6rem;
  font-size: 0.85rem;
  background: var(--surface, #fff);
}

.forge-trame-att .att-head {
  margin-bottom: 0.2rem;
  font-family: var(--serif);
  line-height: 1.4;
}

.forge-trame-att .att-meta {
  font-size: 0.68rem;
  margin-bottom: 0.25rem;
}

.forge-trame-detail-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 1.75rem;
  height: 1.75rem;
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 0.25rem;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
}

.forge-trame-detail-close:hover,
.forge-trame-detail-close:focus-visible {
  color: var(--ink);
}

.forge-trame-detail-close svg {
  display: block;
}

.forge-trame-detail-delete {
  display: block;
  width: 100%;
  margin: 1.25rem 0 0.25rem;
  padding: 0.35rem 0;
  font: inherit;
  font-size: 0.82rem;
  color: var(--muted);
  background: none;
  border: none;
  text-align: left;
  cursor: pointer;
}

.forge-trame-detail-delete:hover,
.forge-trame-detail-delete:focus-visible {
  color: var(--danger);
}

.forge-trame-detail-delete[hidden] {
  display: none;
}

.forge-trame-notes {
  border-top: 1px solid var(--border);
  padding: 0.45rem 0.75rem 0.65rem;
}

.forge-trame-notes-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  font-size: 0.72rem;
  margin-bottom: 0.35rem;
}

.forge-trame-notes-strip {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  max-height: 4.5rem;
  overflow: auto;
}

.forge-trame-note-chip {
  font: inherit;
  font-size: 0.75rem;
  border: 1px solid var(--border);
  border-radius: 0.25rem;
  padding: 0.2rem 0.45rem;
  background: var(--surface, #fff);
  cursor: grab;
  max-width: 12rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.forge-trame-note-chip.is-dragging {
  opacity: 0.55;
}

.forge-modal {
  position: fixed;
  inset: 0;
  background: color-mix(in srgb, var(--ink) 28%, transparent);
  display: grid;
  place-items: center;
  z-index: 50;
  padding: 1rem;
}

.forge-modal[hidden] {
  display: none;
}

.capture-delete-lead {
  margin: 0 0 0.75rem;
  font-size: 0.92rem;
  line-height: 1.4;
}

.capture-delete-toolbar {
  display: flex;
  gap: 0.4rem;
  margin-bottom: 0.75rem;
}

.capture-delete-group {
  margin-bottom: 0.85rem;
}

.capture-delete-group h3 {
  margin: 0 0 0.4rem;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted, #6b645c);
}

.capture-delete-row {
  display: flex;
  align-items: flex-start;
  gap: 0.55rem;
  padding: 0.45rem 0.15rem;
  border-bottom: 1px solid var(--border);
  cursor: pointer;
}

.capture-delete-row:last-child {
  border-bottom: 0;
}

.capture-delete-row input {
  margin-top: 0.2rem;
}

.capture-delete-row-body {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.3rem 0.5rem;
  min-width: 0;
}

.capture-delete-kind {
  font-size: 0.72rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--imp, var(--accent));
}

.capture-delete-ai {
  font-size: 0.7rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted, #6b645c);
}

.capture-delete-foot {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 0.4rem;
}

.triage-retract-chunks {
  margin: 0.5rem 0 0;
  padding-left: 1.1rem;
  font-size: 0.9rem;
}

.forge-modal-card {
  width: min(28rem, calc(100vw - 2rem));
  max-height: min(36rem, calc(100dvh - 2rem));
  display: flex;
  flex-direction: column;
  background: var(--bg);
  border-radius: 0.85rem;
  border: 1px solid var(--border);
  box-shadow: 0 16px 40px var(--forge-shadow, rgba(0, 0, 0, 0.12));
  font-family: var(--sans);
}

.forge-modal-card.is-impact {
  width: min(36rem, calc(100vw - 2rem));
}

.sheet-peek-card {
  width: min(42rem, calc(100vw - 2rem));
  max-height: min(44rem, calc(100dvh - 2rem));
}

.sheet-peek-card.is-dirty {
  border-color: color-mix(in srgb, var(--add) 55%, var(--border));
  box-shadow:
    0 16px 40px var(--forge-shadow, rgba(0, 0, 0, 0.12)),
    0 0 0 1px color-mix(in srgb, var(--add) 24%, transparent);
}

.sheet-peek-head {
  display: flex;
  align-items: flex-start;
  gap: 0.6rem;
  min-width: 0;
  flex: 1;
}

.sheet-peek-titles {
  min-width: 0;
}

.sheet-peek-head h2 {
  margin: 0;
}

.sheet-peek-sub {
  margin: 0.2rem 0 0;
  font-size: 0.82rem;
}

.sheet-peek-open {
  flex-shrink: 0;
  margin-top: 0.05rem;
  padding: 0;
  border: none;
  background: transparent;
  cursor: pointer;
  border-radius: 0.5rem;
}

.sheet-peek-open:disabled {
  opacity: 0.45;
  cursor: default;
}

.sheet-peek-open:hover:not(:disabled) .sheet-peek-mark,
.sheet-peek-open:focus-visible:not(:disabled) .sheet-peek-mark {
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--sheet-color, var(--accent)) 38%, transparent);
  outline: none;
}

.sheet-peek-mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: 0.5rem;
  background: var(--sheet-color, var(--accent));
  color: #fff;
}

.sheet-peek-mark svg {
  width: 1.15rem;
  height: 1.15rem;
  display: block;
}

.sheet-peek-body {
  padding-top: 0.15rem;
}

.sheet-peek-foot {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 0.45rem;
  padding: 0.75rem 1rem;
  border-top: 1px solid var(--border);
}

.imp-peek-card {
  width: min(42rem, calc(100vw - 2rem));
  max-height: min(44rem, calc(100dvh - 2rem));
  display: flex;
  flex-direction: column;
}

.imp-peek-head {
  display: flex;
  align-items: flex-start;
  gap: 0.6rem;
  min-width: 0;
  flex: 1;
}

.imp-peek-titles {
  min-width: 0;
}

.imp-peek-head h2 {
  margin: 0;
}

.imp-peek-sub {
  margin: 0.2rem 0 0;
  font-size: 0.82rem;
}

.imp-peek-open {
  flex-shrink: 0;
  margin-top: 0.05rem;
  padding: 0;
  border: none;
  background: transparent;
  cursor: pointer;
  border-radius: 0.5rem;
}

.imp-peek-open:disabled {
  opacity: 0.45;
  cursor: default;
}

.imp-peek-open:hover:not(:disabled) .imp-peek-mark,
.imp-peek-open:focus-visible:not(:disabled) .imp-peek-mark {
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--imp-color, var(--accent)) 38%, transparent);
  outline: none;
}

.imp-peek-mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: 0.5rem;
  background: var(--imp-color, var(--accent));
  color: #fff;
}

.imp-peek-mark svg {
  width: 1.15rem;
  height: 1.15rem;
  display: block;
}

.imp-peek-inspect {
  flex: 1;
  min-height: 0;
  max-height: min(36rem, calc(100dvh - 8rem));
}

.sheet-form-read-body {
  margin: 0;
  font-family: var(--serif);
  font-size: 0.98rem;
  line-height: 1.55;
  white-space: pre-wrap;
}

.sheet-form-read-empty {
  margin: 0;
  font-size: 0.85rem;
}

.sheet-form-note-badge {
  font-size: 0.62rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--accent);
  border: 1px solid color-mix(in srgb, var(--accent) 35%, var(--border));
  border-radius: 999px;
  padding: 0.08rem 0.4rem;
}

.sheet-form-sections .sec-card.is-read.is-note-touch {
  border-left-color: color-mix(in srgb, var(--accent) 55%, var(--border));
}

.sheet-form-sections .sec-card.is-read.is-pending-edit {
  border-left-color: var(--add);
  border-left-width: 3px;
  background: color-mix(in srgb, var(--add) 8%, var(--surface, #fff));
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--add) 24%, transparent);
}

.sheet-form-sections .sec-card.is-read.is-pending-edit .sheet-form-body {
  color: var(--add);
  border-color: color-mix(in srgb, var(--add) 45%, var(--border));
  background: color-mix(in srgb, var(--add) 6%, var(--surface, #fff));
}

.sheet-form-sections .sec-card.is-read.is-pending-edit .sheet-form-body::placeholder {
  color: color-mix(in srgb, var(--add) 55%, var(--muted));
}

.sheet-form-rest {
  margin-top: 0.35rem;
  border-top: 1px solid var(--border);
  padding-top: 0.35rem;
}

.sheet-form-rest > summary {
  cursor: pointer;
  font-size: 0.78rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
  padding: 0.35rem 0;
  list-style: none;
}

.sheet-form-rest > summary::-webkit-details-marker {
  display: none;
}

.sheet-form-rest-count {
  font-weight: 400;
  text-transform: none;
  letter-spacing: 0;
}

.sheet-form-rest-cards {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  padding-top: 0.25rem;
}

/* Triage desk — overlay compact (gagne sur .forge-modal-card générique) */
.triage-decision-modal .triage-decision-card.forge-modal-card {
  width: min(52rem, calc(100vw - 2rem));
  max-height: min(40rem, calc(100dvh - 2rem));
}

.triage-decision-modal .triage-decision-body {
  grid-template-columns: minmax(18rem, 26rem) minmax(0, 1fr);
}

.triage-decision-modal .triage-decision-detail {
  min-width: 0;
}

.forge-modal-card header,
.forge-modal-card footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 0.5rem;
  padding: 0.75rem 1rem;
}

.forge-modal-card h2 {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.05rem;
  font-weight: 500;
}

.forge-modal-body {
  padding: 0 1rem 0.75rem;
  overflow: auto;
  min-height: 0;
}

.forge-modal-form {
  display: flex;
  flex-direction: column;
}

.forge-modal-choice {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  width: 100%;
  text-align: left;
  border: 1px solid var(--border);
  border-radius: 0.4rem;
  background: var(--surface, #fff);
  padding: 0.65rem 0.75rem;
  margin-bottom: 0.45rem;
  font: inherit;
  color: var(--ink);
  cursor: pointer;
}

.forge-modal-choice:hover {
  border-color: var(--accent);
}

.forge-modal-choice-label {
  font-size: 0.92rem;
}

.forge-modal-notes {
  display: flex;
  flex-direction: column;
}

@media (max-width: 900px) and (min-width: 769px) {
  .forge-trame-layout {
    grid-template-columns: 1fr;
    grid-template-rows: minmax(12rem, 38%) minmax(0, 1fr);
  }
  .forge-trame-list-col {
    border-right: 0;
    border-bottom: 1px solid var(--border);
  }
  .forge-trame-id-grid {
    grid-template-columns: 1fr;
  }
}

.forge-trame-back {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.15rem;
  height: 2.15rem;
  margin: 0;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 0.35rem;
  background: var(--surface, #fff);
  color: var(--muted);
  cursor: pointer;
  flex-shrink: 0;
}

.forge-trame-back svg {
  width: 1rem;
  height: 1rem;
  display: block;
}

.forge-trame-sheet-panel {
  display: flex;
  flex-direction: column;
  min-height: 0;
  background: color-mix(in srgb, var(--bg-sidebar) 20%, var(--bg));
}

.forge-trame-sheet-scroll {
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding: 0.85rem 0.85rem 0.5rem;
}

.forge-trame-sheet-head {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 0.45rem 0.55rem;
  align-items: start;
  margin-bottom: 0.75rem;
}

.forge-trame-sheet-head h2 {
  margin: 0;
  font-family: var(--serif);
  font-size: 1.15rem;
  font-weight: 500;
  line-height: 1.25;
}

.forge-trame-sheet-titles p {
  margin: 0.15rem 0 0;
  font-size: 0.75rem;
}

.forge-trame-sheet-body {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.trame-sheet-sec-title {
  margin: 0 0 0.35rem;
  font-size: 0.68rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 500;
}

.trame-sheet-sec-body {
  font-family: var(--serif);
  font-size: 0.92rem;
  line-height: 1.5;
  white-space: pre-wrap;
}

.forge-trame-sheet-foot {
  flex-shrink: 0;
  padding: 0.55rem 0.85rem max(0.75rem, env(safe-area-inset-bottom));
  border-top: 1px solid var(--border);
  background: color-mix(in srgb, var(--bg) 92%, var(--surface, #fff));
}

/* —— Mobile (téléphone) —— */
@media (max-width: 768px) {
  .forge-chrome {
    gap: 0.45rem;
    padding: 0.45rem 0.65rem;
    padding-top: max(0.45rem, env(safe-area-inset-top));
    min-height: 2.85rem;
  }

  .forge-chrome.is-nav-open .forge-space-nav {
    max-width: calc(100vw - 3.5rem);
    overflow-x: auto;
  }

  .forge-chrome .space-btn {
    font-size: 0.62rem;
    padding: 0.28rem 0.38rem;
  }

  .forge-chrome .book-home-current {
    font-size: 0.92rem;
    max-width: 6.5rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .forge-analysis-status {
    display: none;
  }

  .forge-status {
    min-width: 0;
    font-size: 0.65rem;
  }

  .forge-layout {
    grid-template-columns: 1fr;
    grid-template-rows: minmax(0, 1fr) auto;
    height: calc(100dvh - 2.85rem - env(safe-area-inset-bottom, 0px));
  }

  .forge-rail {
    flex-direction: row;
    justify-content: space-around;
    gap: 0.15rem;
    padding: 0.35rem 0.4rem;
    padding-bottom: max(0.35rem, env(safe-area-inset-bottom));
    border-right: 0;
    border-top: 1px solid color-mix(in srgb, var(--border) 75%, var(--accent) 25%);
    order: 2;
  }

  .forge-rail .rail-btn {
    width: 2.5rem;
    height: 2.5rem;
  }

  .forge-main {
    order: 1;
  }

  .capture-editor {
    padding: 0.75rem 0.85rem 0.65rem;
  }

  .capture-title {
    font-size: 1.05rem;
  }

  .capture-side {
    max-height: 22vh;
    padding: 0.55rem 0.55rem 0.85rem;
  }

  .capture-actions .btn {
    min-height: 2.25rem;
    padding-inline: 0.55rem;
  }

  .triage-toolbar {
    padding: 0.55rem 0.65rem;
  }

  .carnet-layout.capture-layout {
    grid-template-columns: 1fr;
    grid-template-rows: minmax(0, 1fr) auto;
  }

  .carnet-side {
    max-height: 28vh;
    border-top: 1px solid var(--border);
  }

  .carnet-editor {
    padding: 0.75rem 0.85rem 0.65rem;
  }

  .triage-analyze {
    margin-left: 0;
    width: 100%;
    margin-top: 0.15rem;
  }

  .triage-layout {
    grid-template-columns: 1fr;
    grid-template-rows: minmax(0, 1fr);
    position: relative;
  }

  .triage-inbox {
    min-height: 0;
    border-bottom: 0;
  }

  .triage-inspect {
    position: absolute;
    inset: 0;
    z-index: 4;
    background: var(--bg);
    transform: translateX(100%);
    transition: transform 0.22s ease;
    pointer-events: none;
  }

  .forge-app.is-panel-open .triage-inspect {
    transform: translateX(0);
    pointer-events: auto;
  }

  .triage-inspect-scroll {
    padding: 0.85rem 0.85rem 0.75rem;
  }

  .triage-inspect-head {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    grid-template-rows: auto auto;
    gap: 0.15rem 0.55rem;
    align-items: start;
  }

  .triage-inspect-back {
    grid-row: 1 / span 2;
    align-self: center;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.15rem;
    height: 2.15rem;
    margin: 0;
    padding: 0;
    border: 1px solid var(--border);
    border-radius: 0.35rem;
    background: var(--surface, #fff);
    color: var(--muted);
    cursor: pointer;
  }

  .triage-inspect-back svg {
    width: 1rem;
    height: 1rem;
    display: block;
  }

  .triage-inspect-head .triage-kind {
    grid-column: 2;
  }

  .triage-inspect-head h2 {
    grid-column: 2;
    font-size: 1.15rem;
    line-height: 1.25;
  }

  .triage-quote {
    font-size: 0.95rem;
  }

  .triage-actions-dock {
    padding: 0.5rem 0.85rem max(0.75rem, env(safe-area-inset-bottom));
  }

  .triage-row-actions .triage-icon-btn {
    width: 2.35rem;
    height: 2.35rem;
  }

  .triage-swipe-zone {
    position: relative;
    touch-action: pan-y;
    margin-bottom: 0.65rem;
    overflow: hidden;
    border-radius: 0.4rem;
  }

  .triage-swipe-hints {
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 0;
  }

  .triage-swipe-hint {
    position: absolute;
    display: flex;
    align-items: center;
    width: 0;
    overflow: hidden;
    font-size: 0.68rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    font-weight: 600;
    white-space: nowrap;
  }

  .triage-swipe-label {
    padding: 0 0.85rem;
  }

  .triage-swipe-hint.is-left {
    top: 0;
    right: 0;
    bottom: 0;
    justify-content: flex-end;
    background: var(--danger);
    color: var(--on-accent, #faf6f4);
  }

  .triage-swipe-hint.is-right {
    top: 0;
    left: 0;
    bottom: 0;
    justify-content: flex-start;
    background: var(--add);
    color: var(--on-accent, #faf6f4);
  }

  .triage-swipe-hint.is-up {
    top: 0;
    left: 0;
    right: 0;
    height: 0;
    width: 100%;
    justify-content: center;
    align-items: flex-start;
    background: var(--accent);
    color: var(--on-accent, #faf6f4);
  }

  .triage-swipe-hint.is-up .triage-swipe-label {
    padding-top: 0.55rem;
  }

  .triage-swipe-zone.is-dragging .triage-quote,
  .triage-swipe-wrap.is-dragging .triage-card {
    transition: none;
  }

  .triage-swipe-zone .triage-quote {
    position: relative;
    z-index: 1;
    margin: 0;
    background: var(--bg);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--border) 80%, transparent);
    transition: transform 0.18s ease;
    will-change: transform;
  }

  .triage-swipe-help {
    margin: 0 0 0.55rem;
    font-size: 0.72rem;
    color: var(--muted);
    line-height: 1.35;
  }

  .triage-swipe-wrap {
    position: relative;
    margin-bottom: 0.3rem;
    touch-action: pan-y;
    overflow: hidden;
    border-radius: 0.3rem;
  }

  .triage-swipe-wrap .triage-card {
    position: relative;
    z-index: 1;
    margin-bottom: 0;
    background: var(--surface, #fff);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--border) 70%, transparent);
    transition: transform 0.18s ease;
    will-change: transform;
  }

  .triage-swipe-wrap .triage-card.focused {
    background: var(--surface, #fff);
  }

  .triage-list {
    padding: 0.55rem 0.65rem 1rem;
  }

  .triage-inspect-empty {
    padding: 1rem 0.85rem;
  }

  .forge-toast {
    bottom: max(4.5rem, calc(3.5rem + env(safe-area-inset-bottom)));
    max-width: calc(100vw - 1.25rem);
    font-size: 0.78rem;
  }

  .forge-trame-layout {
    grid-template-columns: 1fr;
    grid-template-rows: minmax(0, 1fr);
    position: relative;
  }

  .forge-trame-list-col {
    min-height: 0;
    border-bottom: 0;
  }

  .forge-trame-list {
    flex: 1;
    min-height: 0;
  }

  .forge-trame-notes {
    max-height: 16vh;
    flex-shrink: 0;
  }

  .forge-app.is-trame-detail .forge-trame-notes,
  .forge-app.is-trame-sheet .forge-trame-notes {
    display: none;
  }

  .forge-trame-detail {
    position: absolute;
    inset: 0;
    z-index: 4;
    background: var(--bg);
    transform: translateX(100%);
    transition: transform 0.22s ease;
    pointer-events: none;
  }

  .forge-app.is-trame-detail .forge-trame-detail,
  .forge-app.is-trame-sheet .forge-trame-detail {
    transform: translateX(0);
    pointer-events: auto;
  }

  .forge-trame-sheet-panel {
    position: absolute;
    inset: 0;
    z-index: 6;
    transform: translateX(100%);
    transition: transform 0.22s ease;
    pointer-events: none;
  }

  .forge-app.is-trame-sheet .forge-trame-sheet-panel {
    transform: translateX(0);
    pointer-events: auto;
  }

  .forge-trame-detail-head {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 0.15rem 0.55rem;
    align-items: start;
  }

  .forge-trame-detail-back {
    grid-row: 1 / span 2;
    align-self: center;
  }

  .forge-trame-detail-close-desktop {
    display: none;
  }

  .forge-trame-title-input {
    grid-column: 2;
  }

  .forge-trame-detail-scroll {
    padding: 0.75rem 0.85rem max(0.75rem, env(safe-area-inset-bottom));
  }

  .forge-trame-id-grid {
    grid-template-columns: 1fr;
  }

  .forge-trame-empty {
    padding: 1rem 0.85rem;
  }

  .forge-trame-icon-add,
  .forge-trame-ch-add {
    width: 1.75rem;
    height: 1.75rem;
    opacity: 0.7;
  }
}

@media (min-width: 769px) {
  .triage-inspect-back,
  .triage-swipe-help,
  .forge-trame-detail-back,
  .forge-trame-sheet-panel {
    display: none !important;
  }
}
