@font-face {
  font-family: 'Clicker Script Local';
  src: url('./assets/fonts/ClickerScript-Regular.woff2') format('woff2');
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: 'Cormorant Infant Local';
  src: url('./assets/fonts/CormorantInfant-Variable.woff2') format('woff2');
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
}

body[data-visual-theme='field-journal'] {
  --field-font-script: 'Clicker Script Local', cursive;
  --field-font-antiqua: 'Cormorant Infant Local', 'Newsreader', serif;
  --world-font-heading: var(--field-font-antiqua);
  --world-font-navigation: 'DM Sans', system-ui, sans-serif;
  --field-molecule-vine: url('./assets/field-journal/molecule-vine.svg');
  --field-pressed-sprig: url('./assets/field-journal/pressed-sprig.svg');
  --field-dot-pattern: url('./assets/field-journal/field-dots.svg');
  --field-check-ok-art: url('./assets/field-journal/check-oak-leaf.svg');
  --field-check-warn-art: url('./assets/field-journal/check-maple-leaf.svg');
  --field-check-bad-art: url('./assets/field-journal/check-barren-tree.svg');
  --ui-control-radius: 6px;
}

/* Archival field-photo mounts. Palette choices recolor the stock and edge while
   the pressed sprig remains a quiet naturalist signature below the image opening. */
body[data-visual-theme='field-journal'] .board-object[data-kind='image'] {
  --image-frame-stock: #f8f1e3;
  --image-frame-edge: #7c6a4f;
  --image-frame-side: 10px;
  --image-frame-bottom: 34px;
  --image-frame-primary-art: var(--field-pressed-sprig);
  --image-frame-secondary-art: none;
}
body[data-visual-theme='field-journal'][data-field-season='summer'] .board-object[data-kind='image'] {
  --image-frame-stock: #f8f1e3; --image-frame-edge: #7c6a4f;
}
body[data-visual-theme='field-journal'][data-field-season='spring'] .board-object[data-kind='image'] {
  --image-frame-stock: #faf3df; --image-frame-edge: #648052;
}
body[data-visual-theme='field-journal'][data-field-season='autumn'] .board-object[data-kind='image'] {
  --image-frame-stock: #efe0c5; --image-frame-edge: #8b6422;
}
body[data-visual-theme='field-journal'][data-field-season='winter'] .board-object[data-kind='image'] {
  --image-frame-stock: #edf0e4; --image-frame-edge: #397b80;
}
body[data-visual-theme='field-journal'] .board-object[data-kind='image'][data-image-frame='frame'] > .object-body {
  border-color: var(--image-frame-edge);
  box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--image-frame-stock) 72%, #fff), 0 3px 8px rgb(47 70 56 / .12);
}
body[data-visual-theme='field-journal'] .board-object[data-kind='image'][data-image-frame='polaroid'] > .object-body {
  border-color: color-mix(in srgb, var(--image-frame-edge) 52%, transparent);
  box-shadow: 0 4px 10px rgb(47 70 56 / .16);
}
body[data-visual-theme='field-journal'] .board-object[data-kind='image']::after {
  width: 21px; height: 25px; opacity: .86; transform: rotate(7deg);
}

body[data-visual-theme='field-journal'] .course-card-sheet {
  color: var(--field-deep-lake);
  border-color: color-mix(in oklab, var(--field-fern) 48%, var(--field-cedar-beige));
  border-radius: 6px;
  background:
    linear-gradient(90deg, transparent 0 18px, color-mix(in oklab, var(--field-terracotta) 34%, transparent) 18px 19px, transparent 19px),
    repeating-linear-gradient(transparent 0 36px, color-mix(in oklab, var(--field-eucalyptus) 20%, transparent) 36px 37px),
    linear-gradient(145deg, color-mix(in oklab, var(--field-petal-cream) 94%, #fff), color-mix(in oklab, var(--field-parchment) 34%, #fff));
  box-shadow: inset 0 0 18px rgb(111 127 74 / .06), 0 4px 10px rgb(47 70 56 / .13);
  font-family: var(--field-font-antiqua);
}
body[data-visual-theme='field-journal'] .course-card-sheet::after {
  content: ''; position: absolute; right: 6px; bottom: 5px; width: 26px; height: 32px;
  pointer-events: none; opacity: .72; transform: rotate(6deg);
  background: var(--field-pressed-sprig) center / contain no-repeat;
}
body[data-visual-theme='field-journal'] .course-card-eyebrow,
body[data-visual-theme='field-journal'] .course-card-label { color: color-mix(in oklab, var(--field-forest) 80%, var(--field-lake)); }
body[data-visual-theme='field-journal'] .course-card-input {
  color: var(--field-deep-lake); border-bottom-color: color-mix(in oklab, var(--field-eucalyptus) 42%, transparent);
  font-family: var(--field-font-antiqua);
}
body[data-visual-theme='field-journal'][data-field-season='spring'] .course-card-sheet { --field-parchment: #e8d7b8; }
body[data-visual-theme='field-journal'][data-field-season='autumn'] .course-card-sheet { --field-parchment: #d7bd91; }
body[data-visual-theme='field-journal'][data-field-season='winter'] .course-card-sheet { --field-parchment: #d8dfd8; }

/* The preview must explain the theme before it is selected. */
.field-journal-preview-paper {
  color: #22424f;
  border-color: #bda589;
  background:
    linear-gradient(90deg, transparent 0 15px, rgb(174 88 75 / .34) 15px 16px, transparent 16px),
    repeating-linear-gradient(transparent 0 10px, rgb(103 132 128 / .25) 10px 11px),
    #feeee1;
}
.field-preview-sprig {
  position: absolute;
  right: -2px;
  bottom: -5px;
  width: 30px;
  height: 37px;
  background: url('./assets/field-journal/pressed-sprig.svg') center / contain no-repeat;
  transform: rotate(9deg);
}
.field-journal-preview-palette {
  background: linear-gradient(90deg, #3d5035 0 20%, #6f7f4a 20% 40%, #b18a43 40% 60%, #457893 60% 80%, #f8f1e3 80%);
}

/* Daylight Field Journal --------------------------------------------------- */
body[data-visual-theme='field-journal'] {
  --field-lichen: #9f9e8a;
  --field-soft-sage: #bbbba3;
  --field-flax: #deddc9;
  --field-cedar-beige: #bda589;
  --field-oat: #ddc0a0;
  --field-petal-cream: #feeee1;
  --field-dusty-rose: #cfa6a0;
  --field-pressed-pink: #f2d1cc;
  --field-eucalyptus: #678480;
  --field-mist-blue: #86aab8;
  --field-lake: #457893;
  --field-deep-lake: #22424f;
  --field-cedar: #bf9f86;
  --field-terracotta: #ae584b;
  --field-petal-blush: #f3dbd7;
  --field-taupe: #baaf9d;
  --field-mineral: #bec3bd;
  --field-mushroom: #b9adad;
  --field-clay: #d5b6a2;
  --field-parchment: #e4d3c1;
  --field-fern: #6f7f4a;
  --field-moss: #82925a;
  --field-forest: #2f4638;
  --field-gold: #b18a43;
  --paper: var(--field-petal-cream);
  --depth: var(--field-deep-lake);
  --accent-ui: var(--field-forest);
  --accent: var(--accent-ui);
  --pen: var(--pen-user);
  --tone-mix: 89%;
  --shade: 34 66 79;
  --ink: var(--field-deep-lake);
  --muted: #526e70;
  --line: #c9c2ad;
  --panel: #f7efdf;
  --panel-2: #eee4d0;
  --canvas: #e8e1cd;
  --desk: #d7cfb8;
  --sheet: var(--field-petal-cream);
  --on-pen: #fffdf7;
  --flag-ok: var(--field-fern);
  --flag-bad: var(--field-terracotta);
  --flag-warn: var(--field-gold);
  --focus: var(--accent-ui);
  color-scheme: light;
  color: var(--field-deep-lake);
}

body[data-visual-theme='field-journal'][data-field-season='summer'] {
  --field-soft-sage: #bbbba3;
  --field-oat: #ddc0a0;
  --field-mist-blue: #86aab8;
  --field-clay: #d5b6a2;
  --field-pressed-pink: #f2d1cc;
  --field-fern: #6f7f4a;
  --field-gold: #b18a43;
  --field-lake: #457893;
  --field-terracotta: #ae584b;
  --field-dusty-rose: #cfa6a0;
}

body[data-visual-theme='field-journal'][data-field-season='spring'] {
  --field-soft-sage: #c5d7ad;
  --field-oat: #ead39a;
  --field-mist-blue: #afd7dc;
  --field-clay: #dfb59d;
  --field-pressed-pink: #e9b8c6;
  --field-fern: #648052;
  --field-gold: #89651f;
  --field-lake: #3f7d88;
  --field-terracotta: #9e6045;
  --field-dusty-rose: #92506a;
}

body[data-visual-theme='field-journal'][data-field-season='autumn'] {
  --field-soft-sage: #b4b18a;
  --field-oat: #dfbf7b;
  --field-mist-blue: #9aaba6;
  --field-clay: #d09b7a;
  --field-pressed-pink: #caa0a0;
  --field-fern: #6f7040;
  --field-gold: #8b6422;
  --field-lake: #4f706c;
  --field-terracotta: #914936;
  --field-dusty-rose: #82525c;
}

body[data-visual-theme='field-journal'][data-field-season='winter'] {
  --field-soft-sage: #c1cbb4;
  --field-oat: #dec99e;
  --field-mist-blue: #a7d2cf;
  --field-clay: #cba98f;
  --field-pressed-pink: #e0bcc0;
  --field-fern: #66785c;
  --field-gold: #866725;
  --field-lake: #397b80;
  --field-terracotta: #80513e;
  --field-dusty-rose: #8d5965;
}

body[data-visual-theme='field-journal'] .brand > span:last-child {
  color: var(--field-forest);
  font-family: var(--field-font-script);
  font-size: 1.34em;
  font-weight: 400;
  letter-spacing: .1px;
}
body[data-visual-theme='field-journal'] .brand sup {
  color: var(--field-deep-lake);
  font-family: 'DM Sans', sans-serif;
  font-size: .36em;
  font-weight: 700;
}
body[data-visual-theme='field-journal'] .brand-mark {
  position: relative;
  border-color: #9f8a6e;
  border-radius: 9px;
  background: #f8efd9;
  box-shadow: inset 0 0 0 2px rgb(255 255 255 / .58), 0 2px 5px rgb(47 70 56 / .14);
}
body[data-visual-theme='field-journal'] .brand-mark .chemistry-mark { display: block; }
body[data-visual-theme='field-journal'] .chemistry-mark .mark-vine { display: block; }
body[data-visual-theme='field-journal'] .chemistry-mark .mark-oxygen { display: block; fill: #ae584b; stroke: #22424f; }
body[data-visual-theme='field-journal'] .chemistry-mark .mark-oxygen-heart { display: none; }
body[data-visual-theme='field-journal'] .chemistry-mark .mark-bond { stroke: #22424f; stroke-width: 5; }
body[data-visual-theme='field-journal'] .chemistry-mark .mark-bond-highlight { stroke: #b18a43; stroke-width: 1.6; }
body[data-visual-theme='field-journal'] .chemistry-mark .mark-carbon { fill: #2f4638; stroke: #22424f; stroke-width: 2; }
body[data-visual-theme='field-journal'] .chemistry-mark .mark-calcium { fill: #deddc9; stroke: #22424f; stroke-width: 2; }
body[data-visual-theme='field-journal'] .brand-mark::after {
  content: '−1';
  position: absolute;
  z-index: 1;
  top: 2px;
  right: 2px;
  color: var(--field-deep-lake);
  font: 700 5.8px/1 'DM Sans', sans-serif;
}
body[data-visual-theme='field-journal'] .ruled-writing-layer { font-family: var(--field-font-antiqua); }

body[data-visual-theme='field-journal'] .text-box-editor,
body[data-visual-theme='field-journal'] .guided-content,
body[data-visual-theme='field-journal'] .workspace-tab-label {
  font-family: var(--field-font-antiqua);
}
body[data-visual-theme='field-journal'] .text-box-editor {
  color: var(--field-deep-lake);
  font-size: 1.06em;
  font-weight: 500;
}

body[data-visual-theme='field-journal'] .toolbar {
  position: relative;
  border-bottom: 3px solid #9b7a5e;
  box-shadow: 0 3px 12px rgb(47 70 56 / .11);
}
body[data-visual-theme='field-journal'] .toolbar::after {
  display: none;
  content: none;
}
body[data-visual-theme='field-journal'] .document-meta input {
  color: var(--field-deep-lake);
  border-radius: 7px;
}
body[data-visual-theme='field-journal'] .document-meta input:is(:hover, :focus) {
  border-color: var(--field-cedar-beige);
  background: #f7eedb;
}
body[data-visual-theme='field-journal'] .save-state { color: #455b51; }
body[data-visual-theme='field-journal'] #workspace-tags::placeholder { color: #455b51; }

body[data-visual-theme='field-journal'] .graph-pane {
  background-color: #f3ecdc;
  background-image: linear-gradient(180deg, #f8f1e3, #eee6d5 58%, #f5eddd);
  box-shadow: inset 1px 0 #b8a98f;
}
body[data-visual-theme='field-journal'] .workspace-pane::before {
  content: none;
  background-image: none;
}
body[data-visual-theme='field-journal'] .divider { background: #b9ad93; }
body[data-visual-theme='field-journal'] .divider span { background: var(--field-eucalyptus); }
body[data-visual-theme='field-journal'] .divider:is(:hover, .dragging) { background: var(--accent); }

body[data-visual-theme='field-journal'] .workspace-toolbar {
  position: relative;
  z-index: 70;
  border-bottom-color: #baa98c;
  box-shadow: 0 4px 12px rgb(47 70 56 / .07);
}

body[data-visual-theme='field-journal'] :is(.tool-button, .icon-button, .chip, .add-line, .graph-button, .secondary-button, .segment, .text-format-toolbar button) {
  color: #36565a;
  border-color: #bcb39f;
  border-radius: 7px;
  background-color: #faf3e5;
  box-shadow: 0 1px 0 rgb(255 255 255 / .62);
}
body[data-visual-theme='field-journal'] :is(.tool-button, .icon-button, .chip, .add-line, .graph-button, .secondary-button, .segment, .text-format-toolbar button):hover {
  color: var(--field-forest);
  border-color: var(--field-moss);
  background-color: #edf0dc;
  box-shadow: 0 2px 5px rgb(47 70 56 / .10);
  transform: translateY(-1px);
}
body[data-visual-theme='field-journal'] :is(.chip, .segment).active,
body[data-visual-theme='field-journal'] :is(.tool-button, .icon-button, .chip)[aria-pressed='true'],
body[data-visual-theme='field-journal'] .right-pane-tab:is(.active, [aria-selected='true']) {
  color: var(--field-deep-lake);
  border-color: var(--accent);
  background-color: color-mix(in oklab, var(--accent) 32%, #fffdf7);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / .19), 0 2px 5px rgb(47 70 56 / .16);
}
body[data-visual-theme='field-journal'] :is(button, input, select, textarea, [tabindex]):focus-visible {
  outline: 3px solid color-mix(in oklab, var(--focus) 38%, transparent);
  outline-offset: 2px;
}
body[data-visual-theme='field-journal'] :is(button, input, select, textarea):disabled {
  color: #716e62;
  border-color: #cbc3b2;
  background: #e5dece;
  box-shadow: none;
  opacity: 1;
  cursor: not-allowed;
  transform: none;
}

body[data-visual-theme='field-journal'] .notebook-tabs { border-bottom-color: #bba98a; }
body[data-visual-theme='field-journal'] .workspace-tab {
  color: #52665f;
  border-radius: 8px 8px 0 0;
}
body[data-visual-theme='field-journal'] .workspace-tab:hover { color: var(--field-forest); background: #eef0df; }
body[data-visual-theme='field-journal'] .workspace-tab.active {
  color: var(--field-forest);
  border-color: #a79072;
  background: #f8efdc;
  box-shadow: inset 0 3px var(--accent);
}
body[data-visual-theme='field-journal'] .workspace-tab.active::before {
  margin-right: 3px;
  color: var(--accent);
  content: '❧';
  font-size: 12px;
}
body[data-visual-theme='field-journal'] .tab-close:hover { color: #823c34; background: #f1d7cf; }

body[data-visual-theme='field-journal'] :is(.pane-bar, .right-pane-tabs) {
  border-color: #c3b69e;
  background-color: #f7eedb;
}
body[data-visual-theme='field-journal'] .right-pane-tabs {
  border-radius: 8px;
  box-shadow: 0 2px 6px rgb(47 70 56 / .07);
}
body[data-visual-theme='field-journal'] .right-pane-tab { color: #5b6e66; border-radius: 5px; }
body[data-visual-theme='field-journal'] .right-pane-tab:hover { color: var(--field-forest); background: #e8ead5; }

body[data-visual-theme='field-journal'] :is(.tool-library, .command-palette, .formula-guides, .modal) {
  color: var(--field-deep-lake);
  border-color: #aa987a;
  border-radius: 11px;
  background-color: #f8f0df;
  background-image: linear-gradient(145deg, #fbf5e9, #efe5d1);
  box-shadow: 0 18px 48px rgb(34 66 79 / .20), inset 0 0 0 1px rgb(255 255 255 / .55);
}
body[data-visual-theme='field-journal'] .modal::backdrop { background: rgb(34 66 79 / .28); backdrop-filter: blur(3px); }
body[data-visual-theme='field-journal'] :is(.modal-header, .modal-footer) { border-color: #c6b99f; }
body[data-visual-theme='field-journal'] .modal-header h2 {
  color: var(--field-forest);
  font-size: 30px;
  font-weight: 400;
}
body[data-visual-theme='field-journal']:not([data-readability='high']) .modal-header h2 {
  font-family: var(--field-font-script);
}

body[data-visual-theme='field-journal'] :is(input, select, textarea) {
  color: var(--field-deep-lake);
  border-color: #bcae94;
  border-radius: 7px;
  background-color: #fff8eb;
}
body[data-visual-theme='field-journal'] :is(input, select, textarea):hover { border-color: var(--field-eucalyptus); }
body[data-visual-theme='field-journal'] :is(input, select, textarea):focus {
  border-color: var(--focus);
  box-shadow: 0 0 0 3px color-mix(in oklab, var(--focus) 18%, transparent);
}
body[data-visual-theme='field-journal'] input[type='checkbox'],
body[data-visual-theme='field-journal'] input[type='range'] { accent-color: var(--accent); }

body[data-visual-theme='field-journal'] .theme-preview-container.active {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px color-mix(in oklab, var(--accent) 20%, transparent);
}
body[data-visual-theme='field-journal'] .field-journal-preview-paper {
  border-color: #998064;
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / .48);
}

@media (prefers-reduced-motion: reduce) {
  body[data-visual-theme='field-journal'] :is(button, .workspace-tab) { transition: none; }
}

/* Board interaction and scientific contrast; surface paint is defined once below. */
body[data-visual-theme='field-journal'] .board-object { z-index: 2; }
body[data-visual-theme='field-journal'] .board-resize-handle {
  background: url("assets/handles/field-journal.svg") center / contain no-repeat;
  box-shadow: none;
}
body[data-visual-theme='field-journal'][data-paper='chalkboard'] .note-editor :is(math-field, code) { color: #f4eedc; }
body[data-visual-theme='field-journal'][data-paper='chalkboard'] :is(.geo-label, .lewis-symbol, .lewis-dot, .lewis-bracket-charge, .skeletal-atom-label, .orbital-name, .mo-label, .mo-axis-label) { fill: #f4eedc; color: #f4eedc; }
body[data-visual-theme='field-journal'][data-paper='chalkboard'] :is(.lewis-bond, .lewis-bracket, .skeletal-bond-line, .mo-spin, .mo-axis) { stroke: #f4eedc; }
body[data-visual-theme='field-journal'][data-paper='chalkboard'] .skeletal-wedge { fill: #f4eedc; }

/* Nocturnal field station -------------------------------------------------- */
body[data-visual-theme='field-journal'][data-theme='dark'] {
  --paper: #1b302c;
  --depth: #f0ead9;
  --tone-mix: 86%;
  --shade: 5 18 15;
  --ink: #f0ead9;
  --muted: #b9c7ba;
  --line: #52685d;
  --panel: #1f342e;
  --panel-2: #263d35;
  --canvas: #132923;
  --desk: #142720;
  --sheet: #263830;
  --on-pen: #fffdf4;
  --flag-ok: #b8c98b;
  --flag-bad: #df8f7f;
  --flag-warn: #d5b96f;
  --accent-ui: #9cac7e;
  --focus: var(--accent-ui);
  color-scheme: dark;
  color: #f0ead9;
}
body[data-visual-theme='field-journal'][data-theme='dark'] .toolbar {
  border-bottom-color: #8a704f;
  box-shadow: 0 4px 15px rgb(0 0 0 / .34);
}
body[data-visual-theme='field-journal'][data-theme='dark'] .brand > span:last-child { color: #dce6c2; }
body[data-visual-theme='field-journal'][data-theme='dark'] .brand sup { color: #bdd8dd; }
body[data-visual-theme='field-journal'][data-theme='dark'] .brand-mark {
  border-color: #8e7656;
  background-color: #203b32;
  box-shadow: inset 0 0 0 2px rgb(240 234 217 / .08), 0 2px 7px rgb(0 0 0 / .35);
}
body[data-visual-theme='field-journal'][data-theme='dark'] .brand-mark::after { color: #bdd8dd; }
body[data-visual-theme='field-journal'][data-theme='dark'] .document-meta input { color: #e8e6d5; }
body[data-visual-theme='field-journal'][data-theme='dark'] .document-meta input:is(:hover, :focus) { background: #223a32; }
body[data-visual-theme='field-journal'][data-theme='dark'] .save-state { color: #b8c6b5; }
body[data-visual-theme='field-journal'][data-theme='dark'] #workspace-tags::placeholder { color: #b8c6b5; }
body[data-visual-theme='field-journal'][data-theme='dark'] .graph-pane {
  background-color: #1b302a;
  background-image: radial-gradient(ellipse at 50% 0, rgb(177 138 67 / .06), transparent 35%), linear-gradient(#1e352e, #172b25);
  box-shadow: inset 1px 0 #506558;
}
body[data-visual-theme='field-journal'][data-theme='dark'] .workspace-toolbar,
body[data-visual-theme='field-journal'][data-theme='dark'] :is(.pane-bar, .right-pane-tabs) {
  color: #e9ead9;
  border-color: #50665a;
  background-color: #1d342d;
  background-image: linear-gradient(90deg, #213930, #1a3029);
}
body[data-visual-theme='field-journal'][data-theme='dark'] :is(.tool-button, .icon-button, .chip, .add-line, .graph-button, .secondary-button, .segment, .text-format-toolbar button) {
  color: #d8ddca;
  border-color: #5c7164;
  background-color: #243d35;
  box-shadow: 0 1px 0 rgb(240 234 217 / .06);
}
body[data-visual-theme='field-journal'][data-theme='dark'] :is(.tool-button, .icon-button, .chip, .add-line, .graph-button, .secondary-button, .segment, .text-format-toolbar button):hover {
  color: #fffdf4;
  border-color: #9cac7e;
  background-color: #304b40;
}
body[data-visual-theme='field-journal'][data-theme='dark'] :is(.chip, .segment).active,
body[data-visual-theme='field-journal'][data-theme='dark'] :is(.tool-button, .icon-button, .chip)[aria-pressed='true'],
body[data-visual-theme='field-journal'][data-theme='dark'] .right-pane-tab:is(.active, [aria-selected='true']) {
  color: #13251f;
  border-color: var(--accent);
  background-color: color-mix(in oklab, var(--accent) 34%, #e8ead9);
}
body[data-visual-theme='field-journal'][data-theme='dark'] .workspace-tab { color: #b9c6b7; }
body[data-visual-theme='field-journal'][data-theme='dark'] .right-pane-tab:not(.active) { color: #d8ddca; }
body[data-visual-theme='field-journal'][data-theme='dark'] .right-pane-tab:not(.active):hover { color: #fffdf4; background-color: #304b40; }
body[data-visual-theme='field-journal'] .calc-mini { color: #29463d; background-color: #faf3e5; }
body[data-visual-theme='field-journal'] .calc-mini.active { color: #20372f; background-color: #dce5ce; }
body[data-visual-theme='field-journal'][data-theme='dark'] .calc-mini { color: #eee9d8; background-color: #243d35; }
body[data-visual-theme='field-journal'][data-theme='dark'] .calc-mini.active { color: #20372f; background-color: #dce5ce; }
body[data-visual-theme='field-journal'][data-theme='dark'] .workspace-tab:hover { color: #f0ead9; background: #263e35; }
body[data-visual-theme='field-journal'][data-theme='dark'] .workspace-tab.active {
  color: #edf0db;
  border-color: #6e7f68;
  background: #20372f;
  box-shadow: inset 0 3px var(--accent);
}
body[data-visual-theme='field-journal'][data-theme='dark'] .workspace-tab.active::before { color: var(--accent); }
body[data-visual-theme='field-journal'][data-theme='dark'] :is(.tool-library, .command-palette, .formula-guides, .modal) {
  color: #ece8d8;
  border-color: #687762;
  background-color: #20362e;
  background-image: linear-gradient(145deg, #263f35, #1b3029);
  box-shadow: 0 19px 52px rgb(0 0 0 / .46), inset 0 0 0 1px rgb(240 234 217 / .07);
}
body[data-visual-theme='field-journal'][data-theme='dark'] :is(.modal-header, .modal-footer) { border-color: #52665a; }
body[data-visual-theme='field-journal'][data-theme='dark'] .modal-header h2 { color: #dce6c2; }
body[data-visual-theme='field-journal'][data-theme='dark'] :is(input, select, textarea) {
  color: #f0ead9;
  border-color: #617568;
  background-color: #1a3029;
}
body[data-visual-theme='field-journal'][data-theme='dark'] :is(input, select, textarea):hover { border-color: #9cac7e; }
body[data-visual-theme='field-journal'][data-theme='dark'] :is(input, select, textarea):focus { border-color: #8db7c3; box-shadow: 0 0 0 3px rgb(141 183 195 / .15); }
body[data-visual-theme='field-journal'][data-theme='dark'] :is(button, input, select, textarea):disabled {
  color: #9da99b;
  border-color: #485b50;
  background: #20342d;
}
body[data-visual-theme='field-journal'][data-theme='dark'] .note-editor { color: #f0ead9; border-color: #596554; }
body[data-visual-theme='field-journal'][data-theme='dark'] .text-box-editor { color: #f2eddb; }
/* Drawing tray ------------------------------------------------------------ */
body[data-visual-theme='field-journal'] .ink-bar {
  color: var(--field-deep-lake);
  border: 1px solid #9e8c70;
  border-radius: 10px;
  background-color: #f8efdd;
  background-image: linear-gradient(135deg, #fbf4e7, #eee3cf);
  box-shadow: 0 9px 27px rgb(34 66 79 / .19), inset 0 0 0 1px rgb(255 255 255 / .52);
}
body[data-visual-theme='field-journal'] .ink-swatch {
  border-color: rgb(34 66 79 / .24);
  box-shadow: inset 0 0 0 1px rgb(255 255 255 / .62), 0 2px 4px rgb(34 66 79 / .10);
}
body[data-visual-theme='field-journal'] .ink-swatch.active {
  border-color: var(--field-deep-lake);
  box-shadow: 0 0 0 2px #f8efdd inset, 0 0 0 2px var(--accent);
}
body[data-visual-theme='field-journal'] .ink-rainbow {
  background: conic-gradient(from 205deg, var(--field-fern), var(--field-gold), var(--field-lake), var(--field-terracotta), var(--field-dusty-rose), var(--field-fern));
}
body[data-visual-theme='field-journal'] :is(.ink-custom, .ink-width, .ink-tool) {
  color: var(--field-deep-lake);
  border-color: #b7a78d;
  background: #fff7e9;
}
body[data-visual-theme='field-journal'] .ink-tool:is(.active, [aria-pressed='true']) {
  color: var(--field-deep-lake);
  border-color: var(--accent);
  background: color-mix(in oklab, var(--accent) 32%, #fffdf7);
}
body[data-visual-theme='field-journal'] .ink-sep { background: #bfae92; }
body[data-visual-theme='field-journal'][data-theme='dark'] .ink-bar {
  color: #f0ead9;
  border-color: #6f7d68;
  background-color: #21382f;
  background-image: linear-gradient(135deg, #294238, #1c312a);
  box-shadow: 0 10px 30px rgb(0 0 0 / .45), inset 0 0 0 1px rgb(240 234 217 / .07);
}
body[data-visual-theme='field-journal'][data-theme='dark'] :is(.ink-custom, .ink-width, .ink-tool) {
  color: #ede8d7;
  border-color: #5f7467;
  background: #1b3029;
}

/* Naturalist checker language -------------------------------------------- */
body[data-visual-theme='field-journal'] :is(.check-badge, .chem-verdict) { font-size: 0; }
body[data-visual-theme='field-journal'] :is(
  #note-editor [data-chalk-check='ok'],
  .check-badge.check-ok,
  .chem-verdict[data-verdict='ok']
) {
  --field-feedback-art: var(--field-check-ok-art);
  --field-feedback-color: var(--flag-ok);
}
body[data-visual-theme='field-journal'] :is(
  #note-editor [data-chalk-check='bad'],
  .check-badge.check-bad,
  .chem-verdict[data-verdict='bad']
) {
  --field-feedback-art: var(--field-check-bad-art);
  --field-feedback-color: var(--flag-bad);
}
body[data-visual-theme='field-journal'] :is(
  #note-editor [data-chalk-check='narrowed'],
  .check-badge.check-narrowed
) {
  --field-feedback-art: var(--field-check-warn-art);
  --field-feedback-color: var(--flag-warn);
}
body[data-visual-theme='field-journal'] :is(
  #note-editor [data-chalk-check='unknown'],
  .check-badge.check-unknown,
  .chem-verdict[data-verdict='?']
) {
  --field-feedback-art: var(--field-check-warn-art);
  --field-feedback-color: var(--field-lake);
}
body[data-visual-theme='field-journal'] :is(
  #note-editor [data-chalk-check='ok'],
  #note-editor [data-chalk-check='bad'],
  #note-editor [data-chalk-check='narrowed'],
  #note-editor [data-chalk-check='unknown'],
  .check-badge.check-ok,
  .check-badge.check-bad,
  .check-badge.check-narrowed,
  .check-badge.check-unknown,
  .chem-verdict[data-verdict='ok'],
  .chem-verdict[data-verdict='bad'],
  .chem-verdict[data-verdict='?']
)::after {
  display: inline-block;
  width: 19px;
  height: 19px;
  margin-left: .28em;
  content: '';
  vertical-align: -.22em;
  background-color: var(--field-feedback-color);
  -webkit-mask: var(--field-feedback-art) center / contain no-repeat;
  mask: var(--field-feedback-art) center / contain no-repeat;
}
body[data-visual-theme='field-journal'][data-theme='dark'] :is(
  #note-editor [data-chalk-check='unknown'],
  .check-badge.check-unknown,
  .chem-verdict[data-verdict='?']
) { --field-feedback-color: #8db7c3; }

/* Learning tools: natural categories around unchanged scientific marks. */
body[data-visual-theme='field-journal'] :is(.lewis-palette, .skeletal-palette, .geo-palette, .chem-palette) {
  color: var(--field-deep-lake);
  border: 1px solid #a9977a;
  border-radius: 8px;
  background-color: #f8efdd;
  background-image: none;
  box-shadow: 0 5px 13px rgb(34 66 79 / .12);
}
body[data-visual-theme='field-journal'] :is(.lewis-palette, .skeletal-palette, .geo-palette, .chem-palette) button {
  color: #36565a;
  border-color: #b9aa90;
  border-radius: 6px;
  background: #fff7e9;
}
body[data-visual-theme='field-journal'] :is(.lewis-palette, .skeletal-palette, .geo-palette, .chem-palette) button:is(:hover, :focus-visible, .active, [aria-pressed='true']) {
  color: var(--field-deep-lake);
  border-color: var(--accent);
  background: color-mix(in oklab, var(--accent) 32%, #fffdf7);
}
body[data-visual-theme='field-journal'] .dimensional-toolbar {
  padding: 7px 9px;
  color: var(--field-deep-lake);
  border: 1px solid #aaa48e;
  border-radius: 8px;
  background-color: var(--field-flax);
}
body[data-visual-theme='field-journal'] .dimensional-given { background-color: var(--field-petal-cream); }
body[data-visual-theme='field-journal'] .dimensional-factor-group:nth-child(4n + 1 of .dimensional-factor-group) .dimensional-factor { background-color: var(--field-parchment); }
body[data-visual-theme='field-journal'] .dimensional-factor-group:nth-child(4n + 2 of .dimensional-factor-group) .dimensional-factor { background-color: var(--field-pressed-pink); }
body[data-visual-theme='field-journal'] .dimensional-factor-group:nth-child(4n + 3 of .dimensional-factor-group) .dimensional-factor { background-color: var(--field-flax); }
body[data-visual-theme='field-journal'] .dimensional-factor-group:nth-child(4n of .dimensional-factor-group) .dimensional-factor { background-color: #d9e6e4; }
body[data-visual-theme='field-journal'] :is(.dimensional-factor, .dimensional-given) {
  color: var(--field-deep-lake);
  border-radius: 7px;
  box-shadow: inset 0 0 0 1px rgb(34 66 79 / .13);
}
body[data-visual-theme='field-journal'] .dimensional-separator { background: #a88c6f; }
body[data-visual-theme='field-journal'] .dimensional-numerator { border-bottom-color: var(--accent); }
body[data-visual-theme='field-journal'] .dimensional-board :is(.dimensional-target, .dimensional-value, .dimensional-units, button) {
  color: var(--field-deep-lake);
  border-color: #b4a58d;
  background: #fff7e9;
}
body[data-visual-theme='field-journal'][data-paper='chalkboard'] .dimensional-board :is(.dimensional-target, .dimensional-units) {
  color: var(--field-deep-lake);
}
body[data-visual-theme='field-journal'] .dimensional-board button:disabled {
  color: #716e62;
  opacity: 1;
  background: #e4dccb;
}
body[data-visual-theme='field-journal']:not([data-theme='dark']) .dimensional-board
  :is(.dimensional-target-label, .dimensional-exact-label, .dimensional-feedback:not([data-verdict])) {
  color: var(--field-deep-lake);
}

body[data-visual-theme='field-journal'] .graph-curve { stroke-width: 2.45; filter: drop-shadow(0 0 .4px #f8efdd); }
body[data-visual-theme='field-journal'] .graph-curve-0 { stroke: var(--field-fern); }
body[data-visual-theme='field-journal'] .graph-curve-1 { stroke: var(--field-lake); }
body[data-visual-theme='field-journal'] .graph-curve-2 { stroke: var(--field-terracotta); }
body[data-visual-theme='field-journal'] .graph-curve-3 { stroke: var(--field-gold); }
body[data-visual-theme='field-journal'] :is(.graph-vector-head-0, .graph-vector-head-1, .graph-vector-head-2, .graph-vector-head-3) { stroke: var(--field-deep-lake); stroke-width: .35px; paint-order: stroke fill; }
body[data-visual-theme='field-journal'] .graph-vector-head-0 { fill: var(--field-fern); }
body[data-visual-theme='field-journal'] .graph-vector-head-1 { fill: var(--field-lake); }
body[data-visual-theme='field-journal'] .graph-vector-head-2 { fill: var(--field-terracotta); }
body[data-visual-theme='field-journal'] .graph-vector-head-3 { fill: var(--field-gold); }

body[data-visual-theme='field-journal'] .board-table th {
  color: var(--field-deep-lake);
  border-color: #aaa48e;
  background-color: var(--field-flax);
}
body[data-visual-theme='field-journal'] .board-table td { color: var(--field-deep-lake); border-color: #b9ad99; }
body[data-visual-theme='field-journal'] .board-table tbody tr:nth-child(odd) td { background-color: var(--field-pressed-pink); }
body[data-visual-theme='field-journal'] .board-table tbody tr:nth-child(even) td { background-color: #d9e6e4; }

body[data-visual-theme='field-journal'] :is(.calc-row math-field, .key, .formula-item, .formula-section, .formula-guides, .chem-reference-group) {
  color: var(--field-deep-lake);
  border-color: #bdb098;
  background-color: #fff7e9;
}
body[data-visual-theme='field-journal'] .calc-row.is-active { border-color: var(--field-fern); background-color: #e8ead7; }
body[data-visual-theme='field-journal'] #calculator-keypad .key { color: #29463d; background-color: #fff7e9; transition: transform .09s ease; }
body[data-visual-theme='field-journal'] #calculator-keypad :is(.key-function, .key-utility) { background-color: #edf0e3; }
body[data-visual-theme='field-journal'] #calculator-keypad .key-operator { background-color: #dce5ce; }
body[data-visual-theme='field-journal'] #calculator-keypad .key-equals { color: #fff7e9; border-color: #29463d; background-color: #29463d; }
body[data-visual-theme='field-journal'] #calculator-keypad .key:hover { background-color: #dce5ce; }
body[data-visual-theme='field-journal'] #calculator-keypad .key-equals:hover { background-color: #1e352d; }
body[data-visual-theme='field-journal'] .formula-section:nth-of-type(5n + 1) > summary { background-color: #e6e6d2; }
body[data-visual-theme='field-journal'] .formula-section:nth-of-type(5n + 2) > summary { background-color: #e4d3c1; }
body[data-visual-theme='field-journal'] .formula-section:nth-of-type(5n + 3) > summary { background-color: #d9e6e4; }
body[data-visual-theme='field-journal'] .formula-section:nth-of-type(5n + 4) > summary { background-color: #f2d1cc; }
body[data-visual-theme='field-journal'] .formula-section:nth-of-type(5n) > summary { background-color: #ddc0a0; }
/* These paper labels retain light fills in both modes, so their ink must
   remain dark too. Include counts and disclosure arrows in the same pair. */
body[data-visual-theme='field-journal'] .formula-section > summary,
body[data-visual-theme='field-journal'] .formula-section > summary small,
body[data-visual-theme='field-journal'] .formula-section > summary::before { color: #293c32; }

body[data-visual-theme='field-journal'] :is(.ptable-cell, .ptable-key-chip).cat-am { background: var(--field-clay); }
body[data-visual-theme='field-journal'] :is(.ptable-cell, .ptable-key-chip).cat-ae { background: var(--field-oat); }
body[data-visual-theme='field-journal'] :is(.ptable-cell, .ptable-key-chip).cat-tm { background: #d9e6e4; }
body[data-visual-theme='field-journal'] :is(.ptable-cell, .ptable-key-chip).cat-pm { background: #dfe6d1; }
body[data-visual-theme='field-journal'] :is(.ptable-cell, .ptable-key-chip).cat-md { background: var(--field-pressed-pink); }
body[data-visual-theme='field-journal'] :is(.ptable-cell, .ptable-key-chip).cat-nm { background: var(--field-parchment); }
body[data-visual-theme='field-journal'] :is(.ptable-cell, .ptable-key-chip).cat-hl { background: #e3c2bd; }
body[data-visual-theme='field-journal'] :is(.ptable-cell, .ptable-key-chip).cat-ng { background: #d4e3e8; }
body[data-visual-theme='field-journal'] :is(.ptable-cell, .ptable-key-chip).cat-ln { background: #e9d9ba; }
body[data-visual-theme='field-journal'] :is(.ptable-cell, .ptable-key-chip).cat-an { background: #d9d2cf; }

body[data-visual-theme='field-journal'] :is(.text-box-editor, .ruled-writing-layer) > ul > li::marker { color: var(--field-fern); content: '❧  '; font-size: 1em; }
body[data-visual-theme='field-journal'] :is(.text-box-editor, .ruled-writing-layer) ul ul > li::marker { color: var(--field-lake); content: '•  '; font-size: .78em; }

body[data-visual-theme='field-journal'][data-theme='dark'] :is(.lewis-palette, .skeletal-palette, .geo-palette, .chem-palette) {
  color: #eee9d8;
  border-color: #687866;
  background-color: #21382f;
}
body[data-visual-theme='field-journal'][data-theme='dark'] :is(.lewis-palette, .skeletal-palette, .geo-palette, .chem-palette) button,
body[data-visual-theme='field-journal'][data-theme='dark'] .dimensional-board :is(.dimensional-target, .dimensional-value, .dimensional-units, button) {
  color: #ece8d7;
  border-color: #607465;
  background: #1b3029;
}
body[data-visual-theme='field-journal'][data-theme='dark'] .dimensional-toolbar { color: #efe9d8; border-color: #687866; background: #34493d; }
body[data-visual-theme='field-journal'][data-theme='dark'] .dimensional-given { color: #efe9d8; background-color: #263d34; }
body[data-visual-theme='field-journal'][data-theme='dark'] .dimensional-factor-group:nth-child(4n + 1 of .dimensional-factor-group) .dimensional-factor { background-color: #3e493b; }
body[data-visual-theme='field-journal'][data-theme='dark'] .dimensional-factor-group:nth-child(4n + 2 of .dimensional-factor-group) .dimensional-factor { background-color: #4b3d39; }
body[data-visual-theme='field-journal'][data-theme='dark'] .dimensional-factor-group:nth-child(4n + 3 of .dimensional-factor-group) .dimensional-factor { background-color: #34453f; }
body[data-visual-theme='field-journal'][data-theme='dark'] .dimensional-factor-group:nth-child(4n of .dimensional-factor-group) .dimensional-factor { background-color: #29454a; }
body[data-visual-theme='field-journal'][data-theme='dark'] :is(.dimensional-factor, .dimensional-given) { color: #efe9d8; }
body[data-visual-theme='field-journal'][data-theme='dark'] .board-table th { color: #eef0dc; border-color: #687866; background-color: #3d4a3d; }
body[data-visual-theme='field-journal'][data-theme='dark'] .board-table td { color: #eee9d8; border-color: #566b5d; }
body[data-visual-theme='field-journal'][data-theme='dark'] .board-table tbody tr:nth-child(odd) td { background-color: #493b38; }
body[data-visual-theme='field-journal'][data-theme='dark'] .board-table tbody tr:nth-child(even) td { background-color: #294348; }
body[data-visual-theme='field-journal'][data-theme='dark'] :is(.calc-row math-field, .key, .formula-item, .formula-section, .formula-guides, .chem-reference-group) { color: #eee9d8; border-color: #5a6d61; background-color: #21382f; }
body[data-visual-theme='field-journal'][data-theme='dark'] .calc-row.is-active { border-color: #b8c98b; background-color: #2e493e; }
body[data-visual-theme='field-journal'][data-theme='dark'] #calculator-keypad .key { color: #eee9d8; background-color: #21382f; }
body[data-visual-theme='field-journal'][data-theme='dark'] #calculator-keypad :is(.key-function, .key-utility) { background-color: #294239; }
body[data-visual-theme='field-journal'][data-theme='dark'] #calculator-keypad .key-operator { background-color: #395345; }
body[data-visual-theme='field-journal'][data-theme='dark'] #calculator-keypad .key-equals { color: #20372f; border-color: #dce5ce; background-color: #dce5ce; }
body[data-visual-theme='field-journal'][data-theme='dark'] #calculator-keypad .key:hover { background-color: #395345; }
body[data-visual-theme='field-journal'][data-theme='dark'] #calculator-keypad .key-equals:hover { background-color: #f0f1df; }

/* Touch target sizing is independent of seasonal decoration. */
@media (max-width: 820px), (hover: none) and (pointer: coarse) {
  body[data-visual-theme='field-journal'] :is(.tool-library-close, .sheet-close, .file-menu-button) { min-width: 44px; min-height: 44px; }
}

@media (prefers-reduced-motion: reduce) {
  body[data-visual-theme='field-journal'] *,
  body[data-visual-theme='field-journal'] *::before,
  body[data-visual-theme='field-journal'] *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
  }
}

/* Eight Worlds — seasonal materials and lantern lighting -------------------
   Geometry, layers, authored joins, material-grain, and exterior plant placement
   are owned by world-frame.css. This file supplies Field Journal art and colors;
   it does not create a second board, frame, atmospheric box, or specimen plaque. */
body[data-visual-theme='field-journal'] {
  --field-authored-art-opacity: 1;
  --field-board-layer: 0;
  --field-surface-layer: 1;
  --field-atmosphere-layer: 2;
  --field-lattice-layer: 4;
  --field-focal-layer: 5;
  --world-focal: none;
  --world-paper-grain: url('./assets/sketch-worlds/paper-grain.png');
  --world-chalk-grain: url('./assets/sketch-worlds/chalk-grain.png');
  --world-rule: var(--field-rule-light);
  --world-surface: var(--field-paper-base);
  --field-writing-ink: var(--field-deep-lake);
  --field-margin-ink: color-mix(in srgb, var(--field-terracotta) 55%, transparent);
  --field-margin-x: 62px;
}

body[data-visual-theme='field-journal'][data-field-season='spring'] {
  --world-rail-top: url('./assets/sketch-worlds/spring/rail-top.svg');
  --world-rail-right: url('./assets/sketch-worlds/spring/rail-right.svg');
  --world-rail-bottom: url('./assets/sketch-worlds/spring/rail-bottom.svg');
  --world-rail-left: url('./assets/sketch-worlds/spring/rail-left.svg');
  --world-corner-tl: url('./assets/sketch-worlds/spring/corner-tl.svg');
  --world-corner-tr: url('./assets/sketch-worlds/spring/corner-tr.svg');
  --world-corner-br: url('./assets/sketch-worlds/spring/corner-br.svg');
  --world-corner-bl: url('./assets/sketch-worlds/spring/corner-bl.svg');
  --world-accent-a: url('./assets/sketch-worlds/spring/accent-a.png');
  --world-accent-b: url('./assets/sketch-worlds/spring/accent-b.png');
  --world-accent-c: url('./assets/sketch-worlds/spring/accent-c.png');
  --field-season-mark: url('./assets/field-journal/pressed-sprig.svg');
  --field-lantern-art: url('./assets/sketch-worlds/spring/focal.png');
  --field-lantern-image-ratio: calc(547 / 285);
  --field-lantern-hook-x: calc(129 / 285);
  --field-lantern-hook-y: calc(18 / 285);
  --field-lantern-glow: 247 207 126;
  --field-reflected-light: 176 202 161;
  --field-shell: #d6e4c4;
  --field-toolbar-surface: #f8eedb;
  --field-toolbar-end: #eaf2dd;
  --field-pane: #e8efda;
  --field-dark-shell: #213a2e;
  --field-dark-toolbar: #2b4737;
  --field-dark-workspace: #162e24;
  --field-dark-pane: #294034;
  --field-chalk-surface-light: #415b4c;
  --field-chalk-surface-dark: #2c4638;
  --field-dark-paper: #283d31;
  --field-rule-light: #779478;
  --field-rule-dark: #9db795;
}
body[data-visual-theme='field-journal'][data-field-season='summer'] {
  --world-rail-top: url('./assets/sketch-worlds/summer/rail-top.svg');
  --world-rail-right: url('./assets/sketch-worlds/summer/rail-right.svg');
  --world-rail-bottom: url('./assets/sketch-worlds/summer/rail-bottom.svg');
  --world-rail-left: url('./assets/sketch-worlds/summer/rail-left.svg');
  --world-corner-tl: url('./assets/sketch-worlds/summer/corner-tl.svg');
  --world-corner-tr: url('./assets/sketch-worlds/summer/corner-tr.svg');
  --world-corner-br: url('./assets/sketch-worlds/summer/corner-br.svg');
  --world-corner-bl: url('./assets/sketch-worlds/summer/corner-bl.svg');
  --world-accent-a: url('./assets/sketch-worlds/summer/accent-a.png');
  --world-accent-b: url('./assets/sketch-worlds/summer/accent-b.png');
  --world-accent-c: url('./assets/sketch-worlds/summer/accent-c.png');
  --field-season-mark: url('./assets/field-journal/check-oak-leaf.svg');
  --field-lantern-art: url('./assets/sketch-worlds/summer/focal.png');
  --field-lantern-image-ratio: calc(578 / 342);
  --field-lantern-hook-x: calc(149 / 342);
  --field-lantern-hook-y: calc(20 / 342);
  --field-lantern-glow: 249 190 100;
  --field-reflected-light: 179 195 132;
  --field-shell: #d4d9bd;
  --field-toolbar-surface: #f8edda;
  --field-toolbar-end: #edf0dc;
  --field-pane: #ebe5d1;
  --field-dark-shell: #1d3a31;
  --field-dark-toolbar: #29453a;
  --field-dark-workspace: #153027;
  --field-dark-pane: #253e34;
  --field-chalk-surface-light: #40574c;
  --field-chalk-surface-dark: #2d473c;
  --field-dark-paper: #293d32;
  --field-rule-light: #8d956e;
  --field-rule-dark: #b0bf8b;
}
body[data-visual-theme='field-journal'][data-field-season='autumn'] {
  --world-rail-top: url('./assets/sketch-worlds/autumn/rail-top.svg');
  --world-rail-right: url('./assets/sketch-worlds/autumn/rail-right.svg');
  --world-rail-bottom: url('./assets/sketch-worlds/autumn/rail-bottom.svg');
  --world-rail-left: url('./assets/sketch-worlds/autumn/rail-left.svg');
  --world-corner-tl: url('./assets/sketch-worlds/autumn/corner-tl.svg');
  --world-corner-tr: url('./assets/sketch-worlds/autumn/corner-tr.svg');
  --world-corner-br: url('./assets/sketch-worlds/autumn/corner-br.svg');
  --world-corner-bl: url('./assets/sketch-worlds/autumn/corner-bl.svg');
  --world-accent-a: url('./assets/sketch-worlds/autumn/accent-a.png');
  --world-accent-b: url('./assets/sketch-worlds/autumn/accent-b.png');
  --world-accent-c: url('./assets/sketch-worlds/autumn/accent-c.png');
  --field-season-mark: url('./assets/field-journal/check-maple-leaf.svg');
  --field-lantern-art: url('./assets/sketch-worlds/autumn/focal.png');
  --field-lantern-image-ratio: calc(513 / 279);
  --field-lantern-hook-x: calc(111 / 279);
  --field-lantern-hook-y: calc(16 / 279);
  --field-lantern-glow: 255 177 84;
  --field-reflected-light: 203 140 85;
  --field-shell: #d7c19d;
  --field-toolbar-surface: #f3e0c5;
  --field-toolbar-end: #ead6b7;
  --field-pane: #e7d4b8;
  --field-dark-shell: #3c2f23;
  --field-dark-toolbar: #4a3829;
  --field-dark-workspace: #2c2219;
  --field-dark-pane: #3a2e23;
  --field-chalk-surface-light: #465649;
  --field-chalk-surface-dark: #344439;
  --field-dark-paper: #343c2d;
  --field-rule-light: #a58b63;
  --field-rule-dark: #c8ab73;
}
body[data-visual-theme='field-journal'][data-field-season='winter'] {
  --world-rail-top: url('./assets/sketch-worlds/winter/rail-top.svg');
  --world-rail-right: url('./assets/sketch-worlds/winter/rail-right.svg');
  --world-rail-bottom: url('./assets/sketch-worlds/winter/rail-bottom.svg');
  --world-rail-left: url('./assets/sketch-worlds/winter/rail-left.svg');
  --world-corner-tl: url('./assets/sketch-worlds/winter/corner-tl.svg');
  --world-corner-tr: url('./assets/sketch-worlds/winter/corner-tr.svg');
  --world-corner-br: url('./assets/sketch-worlds/winter/corner-br.svg');
  --world-corner-bl: url('./assets/sketch-worlds/winter/corner-bl.svg');
  --world-accent-a: url('./assets/sketch-worlds/winter/accent-a.png');
  --world-accent-b: url('./assets/sketch-worlds/winter/accent-b.png');
  --world-accent-c: url('./assets/sketch-worlds/winter/accent-c.png');
  --field-season-mark: url('./assets/field-journal/check-barren-tree.svg');
  --field-lantern-art: url('./assets/sketch-worlds/winter/focal.png');
  --field-lantern-image-ratio: calc(578 / 301);
  --field-lantern-hook-x: calc(133 / 301);
  --field-lantern-hook-y: calc(20 / 301);
  --field-lantern-glow: 246 211 151;
  --field-reflected-light: 169 211 213;
  --field-shell: #cedcdb;
  --field-toolbar-surface: #edf3ef;
  --field-toolbar-end: #e2ece8;
  --field-pane: #e5ece8;
  --field-dark-shell: #21363a;
  --field-dark-toolbar: #2b4347;
  --field-dark-workspace: #172a2e;
  --field-dark-pane: #273f43;
  --field-chalk-surface-light: #405554;
  --field-chalk-surface-dark: #2a403d;
  --field-dark-paper: #263b3b;
  --field-rule-light: #8aa4a2;
  --field-rule-dark: #a4c2c1;
}

/* The UI keeps its established palette; the desk is a quiet material field. */
body[data-visual-theme='field-journal'] {
  background: var(--field-shell);
}
body[data-visual-theme='field-journal'] .app-shell { background: var(--field-shell); }
body[data-visual-theme='field-journal'] .toolbar,
body[data-visual-theme='field-journal'] .workspace-toolbar {
  background-color: var(--field-toolbar-surface);
  background-image: linear-gradient(90deg, var(--field-toolbar-surface), var(--field-toolbar-end));
}
body[data-visual-theme='field-journal'] .workspace-pane {
  background: var(--field-workspace);
}
body[data-visual-theme='field-journal'] .editor-scroll {
  overflow-x: hidden;
  background-color: var(--field-workspace);
  background-image: var(--world-paper-grain);
  background-position: 0 0;
}
body[data-visual-theme='field-journal'][data-theme='dark'] {
  --world-rule: var(--field-rule-dark);
  --field-writing-ink: #f0ead9;
  --field-margin-ink: rgb(219 183 111 / .55);
  background: var(--field-dark-shell);
}
body[data-visual-theme='field-journal'][data-theme='dark'] .app-shell { background: var(--field-dark-shell); }
body[data-visual-theme='field-journal'][data-theme='dark'] .toolbar,
body[data-visual-theme='field-journal'][data-theme='dark'] .workspace-toolbar {
  background-color: var(--field-dark-toolbar);
  background-image: linear-gradient(90deg, var(--field-dark-toolbar), var(--field-dark-pane));
}
body[data-visual-theme='field-journal'][data-theme='dark'] .workspace-pane { background: var(--field-dark-workspace); }
body[data-visual-theme='field-journal'][data-theme='dark'] .editor-scroll {
  background-color: var(--field-dark-workspace);
  background-image: var(--world-chalk-grain);
  background-position: 0 0;
}

/* One definition per surface, including complete background-layer resets.
   The shared grain layer supplies non-directional fibers on every paper. */
body[data-visual-theme='field-journal'] .note-editor {
  color: var(--field-writing-ink);
  background-color: var(--world-surface);
  background-origin: border-box;
}
body[data-visual-theme='field-journal'][data-paper='blank'] {
  --world-surface: var(--field-paper-base);
}
body[data-visual-theme='field-journal'][data-paper='blank'] .note-editor {
  background-image: none;
  background-position: 0 0;
  background-size: auto;
  background-repeat: no-repeat;
}
body[data-visual-theme='field-journal'][data-paper='ruled'] {
  --world-surface: var(--field-paper-ruled);
}
body[data-visual-theme='field-journal'][data-paper='ruled'] .note-editor {
  --ruled-line-step: 32px;
  --ruled-writing-margin: 72px;
  --ruled-baseline-offset: 10px;
  --ruled-safe-right: 44px;
  background-image:
    linear-gradient(90deg, transparent 0 var(--field-margin-x), var(--field-margin-ink) var(--field-margin-x) calc(var(--field-margin-x) + 1px), transparent calc(var(--field-margin-x) + 1px)),
    repeating-linear-gradient(180deg, transparent 0 31px, color-mix(in srgb, var(--world-rule) 55%, transparent) 31px 32px);
  /* Full-width rules retain the former content-box vertical phase (26px). */
  background-origin: border-box, border-box;
  background-position: 0 0, 0 26px;
  background-size: 100% 100%, 100% 32px;
  background-repeat: no-repeat, repeat-y;
}
body[data-visual-theme='field-journal'][data-paper='ruled'] .board-decoration::before {
  position: absolute;
  top: 20px;
  bottom: 20px;
  left: 47px;
  width: 12px;
  content: '';
  pointer-events: none;
  background-image: radial-gradient(ellipse 2px 3px at center, color-mix(in srgb, var(--field-gold) 65%, transparent) 0 1.5px, transparent 2px);
  background-position: center top;
  background-size: 12px 32px;
  background-repeat: repeat-y;
}
body[data-visual-theme='field-journal'][data-paper='dots'] {
  --world-surface: var(--field-paper-dots);
}
body[data-visual-theme='field-journal'][data-paper='dots'] .note-editor {
  background-image: var(--field-dot-pattern), radial-gradient(circle at center, color-mix(in srgb, var(--world-rule) 76%, transparent) 0 1.25px, transparent 1.6px);
  background-position: 0 0, 0 0;
  background-size: 116px 116px, 29px 29px;
  background-repeat: repeat, repeat;
}
body[data-visual-theme='field-journal'][data-paper='grid'] {
  --world-surface: var(--field-paper-grid);
}
body[data-visual-theme='field-journal'][data-paper='grid'] .note-editor {
  background-image:
    linear-gradient(180deg, color-mix(in srgb, var(--world-rule) 32%, transparent) 0 1px, transparent 1px),
    linear-gradient(90deg, color-mix(in srgb, var(--world-rule) 32%, transparent) 0 1px, transparent 1px),
    linear-gradient(180deg, color-mix(in srgb, var(--world-rule) 50%, transparent) 0 1px, transparent 1px),
    linear-gradient(90deg, color-mix(in srgb, var(--world-rule) 50%, transparent) 0 1px, transparent 1px);
  background-position: 0 0, 0 0, 0 0, 0 0;
  background-repeat: repeat, repeat, repeat, repeat;
}
body[data-visual-theme='field-journal'][data-paper='chalkboard'] {
  --world-surface: var(--field-chalk-surface-light);
}
body[data-visual-theme='field-journal'][data-theme='dark'][data-paper='chalkboard'] {
  --world-surface: var(--field-chalk-surface-dark);
}
body[data-visual-theme='field-journal'][data-paper='chalkboard'] .note-editor {
  color: #f4eedc;
  background-image: none;
  background-position: 0 0;
  background-size: auto;
  background-repeat: no-repeat;
}

/* Hang the actual hook crown on the lattice's continuous outer timber (13/48
   of a rail inward). The approved PNGs have different contain-fit padding, so
   their measured hook coordinates, not their box centers, share one mount row.
   Coordinates are normalized to image WIDTH, including the vertical offset. */
body[data-visual-theme='field-journal'] .theme-frame-companion { display: none; }
body[data-visual-theme='field-journal'][data-theme='dark'] .theme-frame-companion {
  --field-lantern-width: 54px;
  --field-lantern-height: 112px;
  --field-lantern-mount-y: 148px;
  --field-lantern-hook-top: calc((var(--field-lantern-height) - var(--field-lantern-width) * var(--field-lantern-image-ratio)) / 2 + var(--field-lantern-width) * var(--field-lantern-hook-y));
  --field-lantern-edge-offset: calc(var(--world-frame-size) * 13 / 48 - var(--field-lantern-width) * (1 - var(--field-lantern-hook-x)));
  z-index: var(--field-focal-layer);
  display: block;
  top: calc(var(--field-lantern-mount-y) - var(--field-lantern-hook-top));
  width: var(--field-lantern-width);
  height: var(--field-lantern-height);
  opacity: 1;
  background-image: var(--field-lantern-art);
  background-position: center;
  background-size: contain;
  background-repeat: no-repeat;
  filter: drop-shadow(3px 5px 3px rgb(0 0 0 / .38));
}
body[data-visual-theme='field-journal'][data-theme='dark'] .theme-frame-companion-left {
  left: var(--field-lantern-edge-offset);
  /* Opposite three-quarter view: broad glass inward, seasonal ribbon outward.
     Counter the shadow's X before reflection to retain the existing light. */
  transform: scaleX(-1);
  filter: drop-shadow(-3px 5px 3px rgb(0 0 0 / .38));
}
body[data-visual-theme='field-journal'][data-theme='dark'] .theme-frame-companion-right {
  right: var(--field-lantern-edge-offset);
  transform: none;
}
body[data-visual-theme='field-journal'][data-theme='dark'] .theme-lantern-pin {
  position: absolute;
  top: var(--field-lantern-hook-top);
  left: calc(var(--field-lantern-width) * var(--field-lantern-hook-x));
  width: calc(var(--field-lantern-width) * .07);
  height: calc(var(--field-lantern-width) * .07);
  box-sizing: border-box;
  border: .5px solid #66543b;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 25%, #e2cca0 0 20%, #9b8050 45%, #584b36 100%);
  box-shadow: 0 .75px .5px rgb(0 0 0 / .3);
  transform: translate(-50%, -50%);
  pointer-events: none;
}
body[data-visual-theme='field-journal'][data-theme='dark'] .theme-frame-companion::before {
  position: absolute;
  z-index: -1;
  inset: 20px 0 8px;
  content: '';
  border-radius: 50%;
  pointer-events: none;
  background:
    radial-gradient(ellipse at 50% 52%, rgb(var(--field-lantern-glow) / .38), rgb(var(--field-lantern-glow) / .15) 32%, transparent 68%);
  /* Paint-only falloff cannot enlarge the notebook's scrollable width. */
  box-shadow: 0 0 34px 22px rgb(var(--field-lantern-glow) / .17);
  filter: blur(7px);
}
body[data-visual-theme='field-journal'][data-theme='dark'] .theme-frame-companion::after {
  position: absolute;
  z-index: -1;
  inset: auto 0 -12px;
  height: 21px;
  content: '';
  pointer-events: none;
  background: radial-gradient(ellipse at center, rgb(0 0 0 / .4), transparent 68%);
}
body[data-visual-theme='field-journal'][data-theme='dark'] .note-editor {
  box-shadow:
    inset 28px 0 38px -34px rgb(var(--field-lantern-glow) / .42),
    inset -28px 0 38px -34px rgb(var(--field-reflected-light) / .23);
}
body[data-visual-theme='field-journal'] .editor-hint { display: none; }

/* The base sheet changes its vertical padding once the board container narrows.
   Rules remain border-to-border but keep the same phase as each text baseline. */
@container world-desk (max-width: 700px) {
  body[data-visual-theme='field-journal'][data-paper='ruled'] .note-editor {
    background-position: 0 0, 0 18px;
  }
}

@media (max-width: 600px) {
  body[data-visual-theme='field-journal'] { --field-margin-x: 44px; }
  body[data-visual-theme='field-journal'][data-paper='ruled'] .note-editor {
    --ruled-writing-margin: 38px;
    --ruled-safe-right: 22px;
    background-position: 0 0, 0 18px;
  }
  body[data-visual-theme='field-journal'][data-paper='ruled'] .board-decoration::before {
    top: 20px;
    bottom: 20px;
    left: 29px;
    /* One mark per 4 rules (32px x 4), not one on every rule. */
    background-size: 12px 128px;
  }
  body[data-visual-theme='field-journal'][data-theme='dark'] .theme-frame-companion {
    --field-lantern-width: 28px;
    --field-lantern-height: 66px;
    --field-lantern-mount-y: 96px;
  }
  body[data-visual-theme='field-journal'][data-theme='dark'] .theme-frame-companion::before {
    inset: 14px 0 5px;
    box-shadow: 0 0 24px 13px rgb(var(--field-lantern-glow) / .17);
  }
  body[data-visual-theme='field-journal'][data-theme='dark'] .note-editor {
    box-shadow: inset 26px 0 34px -30px rgb(var(--field-lantern-glow) / .38);
  }
}

/* One night light event; approved artwork and mounting stay stationary. */
@media screen and (prefers-reduced-motion: no-preference) and (forced-colors: none) {
  @keyframes field-lantern-breathe {
    0%, 100% { opacity: .96; }
    17%, 53%, 82% { opacity: 1; }
    24%, 61% { opacity: .98; }
  }
  body[data-visual-theme='field-journal'][data-theme='dark']:not([data-readability='high']) .theme-frame-companion::before {
    animation: field-lantern-breathe 3.7s ease-in-out infinite;
  }
}
