@import url("daynight-legacy.c9fa7ceb1dbd.css?v=service-ink-final-20261024-r2");
/* Final paint contract. Existing module geometry, type and artwork stay local. */
:root {
  color-scheme: dark;
  --ny-bg: #0b171d; --ny-surface: #14272e; --ny-raised: #1c333b;
  --ny-text: #f8fbfc; --ny-muted: #d5e2e7; --ny-subtle: #c5d6de;
  --ny-line: rgba(173,209,223,.24); --ny-accent: #c8e791;
  --ny-accent-ink: #1e2a10; --ny-focus: #91d2dd; --ny-link: #91d2dd;
  --ny-icon: var(--ny-link);
  --ny-action-bg: #c8e791; --ny-action-ink: #1e2a10;
  --ny-warning: #edb98e; --ny-danger: #efb0a7; --ny-success: #c8e791;
  --ny-info: #91d2dd; --ny-gold: #d5b87b;
  --ny-field: #0f1a20; --ny-selected: #23362b;
  --ny-line-strong: rgba(173,209,223,.38);
  --ny-hover: rgba(145,210,221,.08); --ny-disabled: #40515a;
  --ny-success-wash: #23362b; --ny-info-wash: #17313a;
  --ny-warning-wash: #342b23; --ny-danger-wash: #392723;
  --ny-checker-a: #202f36; --ny-checker-b: #293a42;
  --ny-canvas-grid: #09141b66; --ny-canvas-edge: #829da7;
  --ny-canvas-cursor: #ffffff; --ny-canvas-select: #ecf8ef;
  --ny-chart-grid: #526971; --ny-chart-ink: #a7bac2;
  --ny-chart-cyan: #49cddd; --ny-chart-lime: #c1e787;
  --ny-chart-purple: #c0a1f3; --ny-chart-orange: #efb97c;
  /* Compatibility aliases connect old modules to the same paired palette. */
  --graphite-950: var(--ny-bg); --graphite-900: var(--ny-field);
  --graphite-800: var(--ny-surface); --graphite-700: var(--ny-raised);
  --paper-0: var(--ny-bg); --paper-1: var(--ny-field);
  --paper-2: var(--ny-surface); --paper-3: var(--ny-raised);
  --ink-0: var(--ny-text); --ink-1: var(--ny-muted); --ink-2: var(--ny-subtle);
  --line: var(--ny-line); --line-dark: var(--ny-line); --line-strong: var(--ny-line);
  --accent: var(--ny-accent); --accent-strong: var(--ny-action-bg);
  --accent-ink: var(--ny-accent-ink); --accent-dim: color-mix(in srgb,var(--ny-accent) 12%,transparent);
  --focus: var(--ny-focus); --cyan: var(--ny-link); --lime: var(--ny-accent);
  --danger: var(--ny-danger); --ok: var(--ny-success); --champagne: var(--ny-gold);
  --craft-gold: var(--ny-gold);
  --ny-workspace-surface: rgb(20 39 46 / .94);
  --ny-workspace-chrome: rgb(29 53 61 / .72);
  --ny-workspace-line: rgb(210 238 239 / .14);
  --ny-workspace-shadow: 0 18px 48px #020b1426, inset 0 1px #f1ffff12;
}
html[data-theme="light"] {
  color-scheme: light;
  --ny-bg: #edf4f3; --ny-surface: #fbfefd; --ny-raised: #e8f1ef;
  --ny-text: #2b5868; --ny-muted: #466370; --ny-subtle: #4b6672;
  --ny-line: rgba(38,83,88,.13); --ny-accent: #17614f;
  --ny-accent-ink: #ffffff; --ny-focus: #217b85; --ny-link: #227186;
  --ny-icon: #287f94;
  --ny-action-bg: #185e50; --ny-action-ink: #ffffff;
  --ny-warning: #805119; --ny-danger: #a03636; --ny-success: #216249;
  --ny-info: #246d7b; --ny-gold: #795b27;
  --ny-field: #ffffff; --ny-selected: #d6eee4;
  --ny-line-strong: rgba(38,83,88,.25);
  --ny-hover: rgba(43,124,111,.065); --ny-disabled: #d8e4e1;
  --ny-success-wash: #e0f0e7; --ny-info-wash: #e2f0f4;
  --ny-warning-wash: #f6ecd9; --ny-danger-wash: #fae9e7;
  /* Separate reading paper, tool rails and suspended glass. */
  --ny-folio: #ffffff; --ny-rail: #e8f1ef; --ny-tool: #edf5f3;
  --ny-glass: rgba(255,255,255,.56); --chrome: rgba(255,255,255,.56);
  --ny-dim: var(--ny-subtle); --ny-cyan: var(--ny-link);
  --control-surface: var(--ny-field); --control-text: var(--ny-text);
  --control-border: var(--ny-line-strong); --ny-shadow: 0 14px 32px #335d6814,0 1px 3px #335d680a;
  --shadow: var(--ny-shadow); --line-strong: var(--ny-line-strong);
  --danger-dim: var(--ny-danger-wash);
  --ny-glass-fill: rgba(250,253,255,.26); --ny-glass-edge: rgba(65,95,112,.22);
  --ny-liquid-body: rgb(255 255 255); --ny-liquid-tint: rgb(255 255 255 / .08);
  --ny-liquid-edge: rgba(255,255,255,.78); --ny-liquid-ink: var(--ny-text);
  --ny-liquid-shadow: 0 8px 24px #28535e20,0 1px 2px #28535e14;
  --ny-workspace-surface: rgb(255 255 255 / .86);
  --ny-workspace-chrome: rgb(248 255 253 / .55);
  --ny-workspace-line: rgb(255 255 255 / .88);
  --ny-workspace-shadow: 0 18px 48px #285d6c12,0 1px 3px #285d6c0a,inset 0 1px #ffffff;
  --ny-checker-a: #dce4df; --ny-checker-b: #f5f8f3;
  --ny-canvas-grid: #29463866; --ny-canvas-edge: #4a675e;
  --ny-canvas-cursor: #15382f; --ny-canvas-select: #15382f;
  --ny-chart-grid: #9aa9a1; --ny-chart-ink: #53646c;
  --ny-chart-cyan: #247483; --ny-chart-lime: #557b2d;
  --ny-chart-purple: #7651a7; --ny-chart-orange: #956025;
}

/* Sun offers day from night; moon offers night from day, present before JS. */
[data-site-theme-label], [data-theme-label] { display: inline-flex; align-items: center; justify-content: center; }
.workspace-page [data-site-theme] > [data-site-theme-label] { display: inline-flex; }
:is(.ny-theme-icon,.ny-theme-sun,.ny-theme-moon) { width: 19px; height: 19px; fill: none; stroke: currentColor; stroke-width: 1.65; stroke-linecap: round; stroke-linejoin: round; }
.ny-theme-moon { display: none; }
html[data-theme="light"] .ny-theme-sun { display: none; }
html[data-theme="light"] .ny-theme-moon { display: block; }
[data-site-theme], [data-theme-toggle] { color: var(--ny-text); }

/* Native controls and reusable actions. Exclude document colour pickers. */
html[data-theme="light"] :is(.primary-button,.blog-button,.ny-btn.primary,.btn-accent,.wh-submit,.writer-save-publish) {
  background: var(--ny-action-bg); color: var(--ny-action-ink); border-color: var(--ny-action-bg);
}
html[data-theme="light"] :is(.community-stage,.help-dialog) .primary-button { color: var(--ny-action-ink); }
html[data-theme="light"] :is(.journal-workbench,.journal-tool-dialog,.blog-form,.ra-shell,.steward-shell,.rwx,.inbox-sheet,.computer-shell,.health-shell)
  :is(input:not([type="color"]):not([type="checkbox"]):not([type="radio"]):not([type="range"]),textarea,select) {
  background-color: var(--ny-field); color: var(--ny-text); border-color: var(--ny-line); color-scheme: light;
}
html[data-theme="light"] :is(.journal-workbench,.journal-tool-dialog,.blog-form,.ra-shell,.steward-shell,.rwx,.inbox-sheet,.computer-shell,.health-shell)
  :is(input,textarea)::placeholder { color: var(--ny-muted); opacity: 1; }
html[data-theme="light"] :is(.journal-workbench,.journal-layout) { --work-border: var(--ny-line); --work-surface: var(--ny-surface); --work-muted: var(--ny-muted); }
html[data-theme="light"] :is(.ny-cd-cell b,.ny-react-btn .count) { color: var(--ny-text); }
html[data-theme="light"] :is(.ny-cd-cell span,.ny-react-note) { color: var(--ny-muted); }
html[data-theme="light"] .resume-error { color: var(--ny-danger); }
html[data-theme="light"] .ny-react-btn.is-mine { color: var(--ny-success); border-color: var(--ny-success); background: var(--ny-selected); }
html[data-theme="light"] :is(.ac-status-warning,.ac-inline-warning,.ac-form .errorlist,.ra-error,.rwx-warning,.inbox-sheet-error) { color: var(--ny-danger); }
html[data-theme="light"] .ny-toast { background: var(--ny-surface); color: var(--ny-text); border-color: var(--ny-line); }
html[data-theme="light"] .ny-toast-body { color: var(--ny-text); }

/* Pixel/paper tools: editor chrome changes; pixel values and export never do. */
html[data-theme="light"] body:has(.px-studio) { background: var(--ny-bg); }
html[data-theme="light"] :is(.px-studio,.px-dialog) { --px-panel: var(--ny-surface); --px-edge: var(--ny-line); --px-text: var(--ny-text); --px-muted: var(--ny-muted); }
html[data-theme="light"] .px-studio .px-viewport { background: radial-gradient(ellipse at center,#e2eae3,#f0f3ed); }
html[data-theme="light"] :is(.px-preview canvas,.px-frame-list canvas) { background: repeating-conic-gradient(var(--ny-checker-a) 0% 25%,var(--ny-checker-b) 0% 50%) 0/12px 12px; }
html[data-theme="light"] .px-studio :is(.px-accent,.px-tools button[aria-pressed="true"],.px-layer-row.is-active,.px-frame-list button[aria-pressed="true"]) { color: var(--ny-text); background: var(--ny-selected); border-color: var(--ny-focus); }
html[data-theme="light"] .ny-play { --play-cyan: var(--ny-link); --play-lime: var(--ny-success); --play-line: var(--ny-line); }
html[data-theme="light"] .ny-play .ny-play-primary { color: var(--ny-action-ink); background: var(--ny-action-bg); border-color: var(--ny-action-bg); }
html[data-theme="light"] .ny-beat-grid button[aria-pressed="true"] { background: color-mix(in srgb,var(--beat-color) 20%,var(--ny-surface)); }
html[data-theme="light"] .ny-beat-grid button.is-current { box-shadow: 0 0 0 2px var(--ny-text); }

/* This guide was permanently white. Keep its green editorial language at night. */
html:not([data-theme="light"]) .health-guide { --hg-ink: #ecf3f4; --hg-green: #a6d8bf; --hg-muted: #a7bac2; --hg-line: #476259; background: var(--ny-surface); }
html:not([data-theme="light"]) .health-guide :is(.hg-note,.hg-important,.hg-step,.hg-export-card,.hg-rule,.hg-table-wrap) { background: var(--ny-field); border-color: var(--hg-line); }
html:not([data-theme="light"]) .health-guide :is(.hg-note,.hg-important,.hg-step,.hg-export-card,.hg-rule) { color: var(--hg-ink); }
html:not([data-theme="light"]) .health-guide :is(.hg-nav,.hg-formula,.hg-password,.hg-image-link,.hg-upload-path) { background: var(--ny-field); }
html:not([data-theme="light"]) .health-guide .hg-nav a:hover { background: var(--ny-raised); }
html:not([data-theme="light"]) .health-guide :is(.hg-number,.hg-upload-path span) { color: var(--ny-muted); }
html:not([data-theme="light"]) .health-guide .hg-note { color: var(--ny-warning); }

/* SVG data marks are interface content: axes change, the series remain distinct. */
html[data-theme="light"] :is(.annual-chart,.annual-chart-grid,.annual-grid,.chart-grid) { stroke: var(--ny-chart-grid); }
html[data-theme="light"] :is(.annual-chart text,.annual-chart-label,.chart-label,.annual-axis) { fill: var(--ny-chart-ink); color: var(--ny-chart-ink); }
html[data-theme="light"] .owner-dashboard { --owner-border: var(--ny-line); --owner-muted: var(--ny-muted); --owner-cyan: var(--ny-chart-cyan); --owner-lime: var(--ny-chart-lime); --owner-card: var(--ny-surface); }
html[data-theme="light"] .annual-shell :is(.chart-heading i,[data-bar]) { background: var(--ny-success); }

/* Django's native tables/filters consume their own public variable contract. */
html[data-theme="light"]:has(body .admin-wordmark) {
  --primary: #e4ebe4; --secondary: #d8e4d8; --primary-fg: #1d262b;
  --body-fg: #1d262b; --body-bg: #f2f4f1; --body-quiet-color: #53646c; --body-loud-color: #1d262b;
  --header-bg: #e4ebe4; --header-color: #1d262b; --header-link-color: #286b79; --header-branding-color: #286b79;
  --breadcrumbs-bg: #e8eee7; --breadcrumbs-fg: #53646c; --breadcrumbs-link-fg: #286b79;
  --link-fg: #286b79; --link-hover-color: #184f5b; --link-selected-fg: #4e6a16;
  --hairline-color: #c3cdc5; --border-color: #9baea1; --darkened-bg: #e8eee7; --selected-bg: #e3ecd9; --selected-row: #e3ecd9;
  --button-fg: #f4f8e8; --button-bg: #286b79; --button-hover-bg: #184f5b;
  --default-button-bg: #4e6a16; --default-button-hover-bg: #3e5610;
  --close-button-bg: #53646c; --close-button-hover-bg: #3d5059;
  --delete-button-bg: #923d31; --delete-button-hover-bg: #772d23;
  --object-tools-bg: #286b79; --object-tools-hover-bg: #184f5b;
  --message-success-bg: #e3ecd9; --message-warning-bg: #f3e9d5; --message-error-bg: #f7e5df; --error-fg: #923d31;
}

/* Download grants, recovery handoffs and old desktop previews also inherit day/night. */
:is(.download-ready-page,.download-original-page) { background: var(--ny-bg); color: var(--ny-text); }
.download-ready-card { background: var(--ny-surface); color: var(--ny-text); border-color: var(--ny-line); }
.download-ready-card :is(.download-ready-name,h1) { color: var(--ny-text); }
.download-ready-card :is(.download-ready-meta,.download-ready-note) { color: var(--ny-muted); }
.download-ready-card .eyebrow { color: var(--ny-link); }
:is(.download-ready-card,.download-original-page) .download-button { background: var(--ny-action-bg); color: var(--ny-action-ink); }
:is(.download-ready-card,.download-original-page) .download-button:hover { background: var(--ny-action-bg); }
body:has(.annual-shell):not(.workspace-page) { background: var(--ny-bg); color: var(--ny-text); }
html[data-theme="light"] body.alice-model-study { color-scheme: light; }

/* Reviewed day materials. Legacy paint above is a fallback; object roles own
   their actual surfaces here. No content image, document colour or export is
   recoloured. Poetry keeps its separately maintained paper composition. */
html[data-theme="light"]:where(:not(:has(body.poetry-page,body.poetry-body))) {
  /* A cool daylight environment carries the optical chrome. */
  scrollbar-color: #8b9a87 var(--ny-bg);
}
html[data-theme="light"] :is(.ny-header,.dock-rail,.ny-command,.ny-picker,.journal-tool-dialog,.inbox-sheet) {
  color: var(--ny-text);
}
html[data-theme="light"] :is(.ny-command,.ny-picker,.journal-tool-dialog,.inbox-sheet,.help-dialog) {
  border-color: var(--ny-line-strong); box-shadow: var(--ny-shadow);
}
html[data-theme="light"] :is(.ny-command,.ny-picker,.journal-tool-dialog,.inbox-sheet,.help-dialog)::backdrop {
  background: rgba(43,57,44,.24);
}
html[data-theme="light"] .ny-header .ny-nav-lens {
  background: rgba(66,99,79,.09); border-color: rgba(66,99,79,.2);
}
/* Older context rails keep an explicit solid fallback when glass is off.
   That fallback used #111f29 and overruled the inherited day palette. */
html[data-theme="light"] :is(.ny-glass-surface,.ny-glass-dock,.desktop-header.ny-glass-header) {
  --ny-glass-fill: rgba(255,255,255,.26); --ny-glass-edge: rgba(31,35,40,.18);
}
html[data-theme="light"]:not([data-glass="clear"]) :is(.ny-glass-surface,.ny-glass-dock,.desktop-header.ny-glass-header) {
  background: var(--ny-surface); color: var(--ny-text); border-color: var(--ny-line-strong); text-shadow: none;
}
html[data-theme="light"] .reader-toolbar.ny-glass-surface { color: var(--ny-text); text-shadow: none; }
html[data-theme="light"] .reader-toolbar.ny-glass-surface :is(.reader-pagination label,.reader-pagination>span,.reader-zoom,.reader-remember) { color: var(--ny-muted); }
html[data-theme="light"] .reader-toolbar.ny-glass-surface .reader-clear { color: var(--ny-muted) !important; }
html[data-theme="light"] .reader-stage { scrollbar-color: #8b9a87 var(--ny-tool); background: var(--ny-tool); }
html[data-theme="light"] .ny-picker-options { scrollbar-color: #8b9a87 var(--ny-field); }
html[data-theme="light"] .dock-rail.ny-liquid-surface { text-shadow: none; }
html[data-theme="light"] .dock-rail.ny-liquid-surface a:is(:hover,[aria-current],.spy-on) {
  background: var(--ny-hover); color: var(--ny-accent);
}
html[data-theme="light"] :is(.ny-command,.ny-picker):not(.ny-liquid-surface) {
  background: var(--ny-surface);
}
html[data-theme="light"] :is(.ny-command-label,.ny-command-help,.ny-command-routes a>span:last-child,.ny-picker-group) {
  color: var(--ny-subtle);
}
html[data-theme="light"] .ny-picker-filter input { background: var(--ny-field); color: var(--ny-text); border-color: var(--ny-line); }
html[data-theme="light"] .ny-picker-options button[aria-pressed="true"] {
  color: var(--ny-success); background: var(--ny-selected);
}
html[data-theme="light"] .ny-picker-options button:is(:hover,:focus-visible) { background: var(--ny-hover); }
html[data-theme="light"] main .ny-select > .ny-select-trigger {
  background: var(--ny-field); color: var(--ny-text); border-color: var(--ny-line-strong);
}
html[data-theme="light"] main .ny-select > .ny-select-trigger:is(:hover,[aria-expanded="true"]) {
  background: var(--ny-info-wash); color: var(--ny-text); border-color: var(--ny-focus);
}
/* Functional marks follow their control foreground; no faded text colour. */
html[data-theme="light"] .hx-course-search>div>.hx-home-icon { color: var(--ny-icon); }
html[data-theme="light"] main .ny-select > .ny-select-trigger svg { stroke: currentColor; opacity: 1; }

/* Form chrome is shared, while colour pickers, range tracks and document
   previews retain their own content colours. */
html[data-theme="light"] :is(main,.wh-page,.ra-shell,.journal-tool-dialog,.inbox-sheet,.ny-command,.ny-picker)
  :where(input,textarea)::placeholder { color: var(--ny-muted); opacity: 1; }
html[data-theme="light"] :is(main,.wh-page,.ra-shell,.journal-tool-dialog,.inbox-sheet)
  :where(input,select,textarea):focus-visible {
  outline-color: var(--ny-focus); border-color: var(--ny-focus);
  box-shadow: 0 0 0 3px color-mix(in srgb,var(--ny-focus) 16%,transparent);
}
html[data-theme="light"] :is(main,.wh-page,.ra-shell,.journal-tool-dialog,.inbox-sheet)
  :where(input[type="checkbox"],input[type="radio"]) { accent-color: var(--ny-action-bg); }
html[data-theme="light"] :is(main,.wh-page,.ra-shell,.journal-tool-dialog,.inbox-sheet)
  :where(input,select,textarea)[aria-invalid="true"] { border-color: var(--ny-danger); }
html[data-theme="light"] :is(.errorlist,.field-note.is-error,.journal-dialog-errors) { color: var(--ny-danger); }
html[data-theme="light"] :is(.primary-button,.blog-button,.ny-btn.primary,.btn-accent,.wh-submit,.writer-save-publish,
  .project-button,.guide-button,.catalog-submit,.search-row button,.comment-form-footer button,
  .ny-command-form button,.ra-shell button:not(.ra-secondary),.rwx-buttons button:not(.rwx-secondary),
  .intern-actions button:first-child,.faculty-search button,.faculty-write-footer button,.qr-actions .qr-primary) {
  background: var(--ny-action-bg); color: var(--ny-action-ink); border-color: var(--ny-action-bg);
}
html[data-theme="light"] :is(.primary-button,.blog-button,.project-button,.guide-button,.catalog-submit,
  .search-row button,.comment-form-footer button):hover {
  background: color-mix(in srgb,var(--ny-action-bg) 86%,#082e27); border-color: var(--ny-action-bg); color: var(--ny-action-ink);
}
/* These inherited buttons explicitly declared night ink with !important. */
html[data-theme="light"] .journal-reading .blog-button { color: var(--ny-action-ink) !important; }
html[data-theme="light"] :is(.ra-shell button.ra-secondary,.rwx-buttons .rwx-secondary,
  .inbox-sheet-delete-confirm button,.journal-tool-dialog .journal-dialog-close) {
  background: var(--ny-field); color: var(--ny-text); border-color: var(--ny-line-strong);
}
html[data-theme="light"] .inbox-sheet-delete-confirm [data-confirm-delete] {
  background: var(--ny-danger); color: #fff8f4; border-color: var(--ny-danger);
}

/* Course folio and programme cards use explicit content and rail surfaces. */
html[data-theme="light"] .course-catalog .catalog-search-box .catalog-submit {
  background: var(--ny-action-bg); color: var(--ny-action-ink); border-color: var(--ny-action-bg);
}
html[data-theme="light"] .course-catalog .catalog-search-box .catalog-submit:hover { background: color-mix(in srgb,var(--ny-action-bg) 86%,#082e27); }
html[data-theme="light"] .course-catalog .catalog-search-box .catalog-submit > span { color: var(--ny-action-ink); }
html[data-theme="light"] .pathway-shell :is(.path-directory-rail,.path-selection-bar) { background: var(--ny-rail); }
html[data-theme="light"] .pathway-shell .pathway-main { background: var(--ny-surface); }
html[data-theme="light"] .pathway-shell.pathway-redesign .path-term {
  background: var(--ny-folio); border-color: var(--ny-line);
  box-shadow: 0 3px 12px #594c3210;
}
html[data-theme="light"] .pathway-shell.pathway-redesign .path-term:hover {
  border-color: var(--ny-line-strong); box-shadow: 0 6px 18px #594c321c;
}
html[data-theme="light"] :is(.catalog-row:hover,.asset-row:hover,.path-requirement:hover,
  .scheme-programmes li:hover,.minor-requirements li:hover,.path-stream:hover,
  .notice:hover,.journal-articles .journal-article-row:hover,.journal-owned-posts .journal-article-row:hover) {
  background: var(--ny-hover);
}
html[data-theme="light"] :is(.catalog-row:hover h3 a,.catalog-row:hover .catalog-code,
  .catalog-sidebar a:hover,.catalog-scope label:hover span,.asset-row:hover .asset-read,
  .course-category-nav a:hover,.course-personal-tools a:hover,.scheme-school summary:hover,
  .scheme-programmes a:hover,.scheme-streams a:hover,.path-year-nav a:hover) { color: var(--ny-link); }

/* Editorial chrome: code has a cooler inset, the writing surface stays paper. */
html[data-theme="light"] :is(.journal-prose pre,.journal-prose code) { background: var(--ny-tool); color: var(--ny-text); }
html[data-theme="light"] :is(.reading-end,.reading-toc,.writer-preview,.journal-tool-dialog) { background: var(--ny-surface); }
html[data-theme="light"] :is(.writer-body .writer-sheet,.journal-tool-dialog .wh-sheet) { background-color: var(--ny-folio); }
html[data-theme="light"] .writer-body input.writer-title { background: transparent; color: var(--ny-text); }
html[data-theme="light"] .writer-body .writer-sheet textarea { background: transparent; color: var(--ny-text); }
html[data-theme="light"] .writer-body .writer-pane-tabs button.is-on { color: var(--ny-action-ink); }
html[data-theme="light"] .journal-status-tabs a::after {
  background: linear-gradient(90deg,transparent,var(--ny-success) 18%,var(--ny-success) 82%,transparent);
  box-shadow: none;
}
html[data-theme="light"] .journal-desk-panel .journal-status-tabs a[aria-current="page"] { background: transparent; }
html[data-theme="light"] .journal-post-state--draft { color: var(--ny-gold); border-color: var(--ny-gold); }
html[data-theme="light"] .journal-post-state--published { color: var(--ny-success); border-color: var(--ny-success); }
html[data-theme="light"] .journal-post-state::before { background: currentColor; }
html[data-theme="light"] button.journal-tool-dock {
  background: linear-gradient(135deg,var(--ny-info-wash),var(--ny-surface));
  color: var(--ny-text); border-color: var(--ny-line-strong); box-shadow: var(--ny-shadow);
}
html[data-theme="light"] button.journal-tool-dock:hover { background: var(--ny-info-wash); }
html[data-theme="light"] .journal-tool-dock-icon { color: var(--ny-success); background: var(--ny-success-wash); }

/* Identity and activity: locked steps stay readable; borders carry progress. */
html[data-theme="light"] .settings-page .settings-identity { background: var(--ny-rail); }
html[data-theme="light"] .settings-page .settings-panel { background: var(--ny-surface); }
html[data-theme="light"] .settings-page .tier-step { opacity: 1; background: var(--ny-field); box-shadow: none; }
html[data-theme="light"] .settings-page .tier-step :is(strong,p,i) { color: var(--ny-muted); }
html[data-theme="light"] .settings-page .tier-step.is-reached strong { color: var(--ny-text); }
html[data-theme="light"] .settings-page .tier-step.is-current {
  background: var(--ny-selected); border-color: var(--ny-success); box-shadow: inset 0 2px var(--ny-success);
}
html[data-theme="light"] .settings-page .tier-step.is-current :is(strong,i) { color: var(--ny-success); }
html[data-theme="light"] :is(.settings-public-preview,.inbox-sheet,.calendar-month-panel) { background: var(--ny-folio); }
html[data-theme="light"] .inbox-sheet-delete-confirm { color: var(--ny-danger); background: var(--ny-danger-wash); border-color: var(--ny-danger); }
html[data-theme="light"] .inbox-sheet-delete-confirm p { color: var(--ny-danger); }
html[data-theme="light"] .inbox-sheet-status { color: var(--ny-success); }
html[data-theme="light"] .inbox-sheet-status.is-error { color: var(--ny-danger); }

/* Administrative tools use a quiet neutral work surface. */
html[data-theme="light"] :is(.ra-panel,.rwx-list,.rwx-detail,.steward-table,.manage-workload-link) { background: var(--ny-tool); }
html[data-theme="light"] :is(.ra-shell,.steward-shell) :is(pre,.ra-original,.rwx-body) { color: var(--ny-text); }
html[data-theme="light"] :is(.rwx-error,.ra-error,.resume-error) { color: var(--ny-danger); background: var(--ny-danger-wash); }
html[data-theme="light"] :is(.rwx-hint,.ra-warning,.catalog-notice) { color: var(--ny-warning); background: var(--ny-warning-wash); }
html[data-theme="light"] :is(.st-open,.st-wait,.st-review,.st-bad,.ra-status,.reviewalice-badge) {
  background: var(--ny-field);
}
html[data-theme="light"] .ny-toast.success { border-color: var(--ny-success); }
html[data-theme="light"] .ny-toast.error { border-color: var(--ny-danger); }
html[data-theme="light"] .ny-toast.info { border-color: var(--ny-info); }

@media (prefers-contrast: more) {
  :root { --ny-line: currentColor; }
  :is(.ny-toast,.px-dialog,.inbox-sheet,.annual-window) { border-width: 2px; }
}
@media (forced-colors: active) {
  :is(.ny-toast,.px-dialog,.inbox-sheet,.annual-window) { background: Canvas; color: CanvasText; border-color: CanvasText; }
  .ny-theme-icon { color: ButtonText; forced-color-adjust: auto; }
}
