/* ═══════════════════════════════════════════════════════════════════════
  Specoborona — Corporate Light Redmine Theme
   ═══════════════════════════════════════════════════════════════════════
   Auto-generated by build.mjs on 2026-04-30T16:07:39.651Z
  Re-run:  node theme/specoborona/build.mjs
   ═══════════════════════════════════════════════════════════════════════ */

/* ── 1. Load original Redmine styles ── */
@import url("/assets/application-33e739e5.css");

/* ── 2. Google Fonts ── */
/* ===== inlined: specoborona-fonts.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
   Specoborona — Google Fonts
   Generated by build.mjs
   ═══════════════════════════════════════════════════════════════════════ */

@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap');


/* ── 3. CSS Custom Properties (variables) ── */
/* ===== inlined: specoborona-variables.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
   Specoborona — CSS Variables
   Generated by build.mjs on 2026-04-30T16:07:39.626Z
   ═══════════════════════════════════════════════════════════════════════ */

:root {
  /* ── Backgrounds ── */
  --cp-bg-deep:      #eef2f8;
  --cp-bg-dark:      #f5f7fb;
  --cp-bg-panel:     #ffffff;
  --cp-bg-surface:   #e8eef8;
  --cp-bg-hover:     #dde7f6;
  --cp-bg-active:    #d2def3;

  /* ── Borders ── */
  --cp-border-dark:  #b9c7de;
  --cp-border:       #9cb0cf;
  --cp-border-light: #7f97bf;

  /* ── Text ── */
  --cp-text-muted:   #697b9b;
  --cp-text:         #33425d;
  --cp-text-bright:  #23314a;
  --cp-text-white:   #ffffff;

  /* ── Primary: Brand Blue ── */
  --cp-cyan:         #2f3f93;
  --cp-cyan-dim:     #4458ad;
  --cp-cyan-glow:    rgba(47, 63, 147, 0.12);

  /* ── Secondary: Deep Navy ── */
  --cp-magenta:      #22356f;
  --cp-magenta-dim:  #314886;
  --cp-magenta-glow: rgba(34, 53, 111, 0.12);

  /* ── Accent: Steel Blue ── */
  --cp-yellow:       #5c75b8;
  --cp-yellow-dim:   #4d64a0;

  /* ── Status: Green ── */
  --cp-green:        #3f8f67;
  --cp-green-dim:    #327252;

  /* ── Status: Red ── */
  --cp-red:          #c05656;
  --cp-red-dim:      #a64545;

  /* ── Extra ── */
  --cp-orange:       #bf8d45;
  --cp-blue:         #3c5fb3;

  /* ── Fonts ── */
  --cp-font-main:    "Montserrat", "Noto Sans", sans-serif;
  --cp-font-mono:    "IBM Plex Mono", "JetBrains Mono", monospace;

  /* ── Effects ── */
  --cp-glow-cyan:    0 0 0 3px rgba(47, 63, 147, 0.10);
  --cp-glow-magenta: 0 0 0 3px rgba(34, 53, 111, 0.10);
  --cp-glow-yellow:  0 0 0 3px rgba(92, 117, 184, 0.10);
}


/* ── 4. Base & Typography ── */
/* ===== inlined: specoborona-base.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
   Specoborona — Base & Typography
   Generated by build.mjs
   ═══════════════════════════════════════════════════════════════════════ */

html {
  scrollbar-color: var(--cp-border-light) var(--cp-bg-deep);
  background: var(--cp-bg-deep);
}

body {
  font-family: var(--cp-font-main) !important;
  color: var(--cp-text);
  background: var(--cp-bg-deep);
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

::selection {
  background: var(--cp-cyan);
  color: var(--cp-text-white);
}

/* ── Headings ── */
h1, h2, h3, h4, h5, h6,
#content h1, #content h2, #content h3, #content h4, #content h5, #content h6 {
  color: var(--cp-text-bright) !important;
  font-family: var(--cp-font-main);
  letter-spacing: 0.01em;
  font-weight: 600;
}

.wiki h1 { color: var(--cp-cyan) !important; }
.wiki h2 { color: var(--cp-text-bright) !important; }
.wiki h3 { color: var(--cp-text-bright) !important; }

/* ── Links ── */
a, a:link, a:visited {
  color: var(--cp-cyan) !important;
  text-decoration: none;
  transition: color 0.2s ease, border-color 0.2s ease;
}
a:hover, a:active {
  color: var(--cp-magenta) !important;
  text-decoration: none;
}

a.issue.closed, a.issue.closed:link, a.issue.closed:visited {
  color: var(--cp-text-muted) !important;
  text-decoration: line-through;
}

/* ── Paragraphs & text ── */
p, li, td, th, span, div, label {
  color: var(--cp-text);
}
small, .text-sm {
  color: var(--cp-text-muted);
}

/* ── Code / Pre ── */
pre, code, .code, kbd, samp, tt {
  font-family: var(--cp-font-mono) !important;
  background: var(--cp-bg-surface);
  color: var(--cp-magenta);
  border: 1px solid var(--cp-border-dark);
  border-radius: 6px;
}
pre {
  padding: 12px;
  overflow-x: auto;
}
code {
  padding: 2px 5px;
}

/* ── HR ── */
hr {
  border: none;
  border-top: 1px solid var(--cp-border);
}

#main,
#content,
.box,
fieldset,
.splitcontentleft,
.splitcontentright {
  border-radius: 8px;
}


/* ── 5. Layout (header, menus, sidebar, footer) ── */
/* ===== inlined: specoborona-layout.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
   Specoborona — Layout (header, menus, sidebar, footer)
   Generated by build.mjs
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Wrapper ── */
#wrapper {
  background: var(--cp-bg-deep);
}

/* ── Top menu bar ── */
#top-menu {
  background: var(--cp-cyan) !important;
  border-bottom: none;
  box-shadow: none;
  color: var(--cp-text-white);
  font-family: var(--cp-font-main);
  letter-spacing: 0.02em;
  text-transform: none;
  font-size: 0.82em;
}
#top-menu a {
  color: var(--cp-text-white) !important;
  font-weight: 500;
  transition: opacity 0.2s ease;
}
#top-menu a:hover {
  color: var(--cp-text-white) !important;
  opacity: 0.78;
}
#top-menu #loggedas {
  color: rgba(255, 255, 255, 0.8) !important;
}

/* ── Header ── */
#header {
  background: linear-gradient(180deg, #ffffff 0%, #f6f8fc 100%) !important;
  border-bottom: 1px solid var(--cp-border-dark);
  box-shadow: 0 8px 24px rgba(34, 53, 111, 0.06);
}
#header a { color: var(--cp-cyan) !important; }
#header h1 {
  color: var(--cp-cyan) !important;
  font-family: var(--cp-font-main);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  display: flex;
  align-items: center;
  gap: 12px;
  font-weight: 700;
}
#header h1::before {
  content: '';
  display: inline-block;
  width: 42px;
  height: 42px;
  min-width: 42px;
  background: url("/assets/themes/specoborona/logo-square-31681334.png") no-repeat center / contain;
}
#header h1 .breadcrumbs {
  color: var(--cp-text-muted) !important;
}

/* ── Quick search ── */
#quick-search #q {
  background: var(--cp-bg-panel);
  border: 1px solid var(--cp-border);
  color: var(--cp-text);
  border-radius: 20px;
  transition: border-color 0.2s, box-shadow 0.2s;
}
#quick-search #q:focus {
  border-color: var(--cp-cyan);
  box-shadow: var(--cp-glow-cyan);
  outline: none;
}

/* ── Main menu ── */
#main-menu {
  background: #ffffff;
  border-bottom: 1px solid var(--cp-border-dark);
}
#main-menu ul {
  background: transparent;
}
#main-menu li a {
  color: var(--cp-text) !important;
  background: transparent !important;
  border: none;
  border-bottom: 3px solid transparent;
  text-transform: none;
  font-family: var(--cp-font-main);
  font-weight: 600;
  letter-spacing: 0.01em;
  font-size: 0.92em;
  transition: all 0.2s ease;
  padding: 10px 14px;
}
#main-menu li a:hover {
  color: var(--cp-cyan) !important;
  background: transparent !important;
  border-bottom: 2px solid var(--cp-cyan);
}
#main-menu li a.selected,
#main-menu li a.selected:hover {
  color: var(--cp-cyan) !important;
  background: transparent !important;
  border-bottom: 2px solid var(--cp-cyan);
  font-weight: 600;
}
#main-menu li a.new-object {
  background-color: var(--cp-cyan) !important;
  color: var(--cp-text-white) !important;
  border-radius: 20px;
  border-bottom-color: transparent !important;
}
#main-menu li a.new-object:hover {
  background-color: var(--cp-magenta) !important;
  box-shadow: var(--cp-glow-magenta);
}
#main-menu .menu-children {
  background: var(--cp-bg-panel);
  border: 1px solid var(--cp-border);
  box-shadow: 0 12px 32px rgba(34, 53, 111, 0.10);
  border-radius: 10px;
}
#main-menu .menu-children li a {
  color: var(--cp-text) !important;
  background: var(--cp-bg-panel) !important;
  border-bottom: none;
  text-transform: none;
}
#main-menu .menu-children li a:hover {
  color: var(--cp-cyan) !important;
  background: var(--cp-bg-hover) !important;
  border-bottom: none;
}

/* ── Content area ── */
#content {
  background-color: var(--cp-bg-dark) !important;
  color: var(--cp-text);
}

/* ── Main ── */
#main {
  background: var(--cp-bg-dark);
  padding: 16px;
}

/* ── Sidebar ── */
#sidebar {
  background: var(--cp-bg-panel) !important;
  border-left: 1px solid var(--cp-border-dark) !important;
  color: var(--cp-text);
  border-radius: 10px;
  box-shadow: 0 10px 24px rgba(34, 53, 111, 0.05);
}
#sidebar h3 {
  color: var(--cp-cyan) !important;
  text-transform: none;
  letter-spacing: 0.01em;
  font-size: 0.95rem;
  border-bottom: 1px solid var(--cp-border-dark);
  padding-bottom: 6px;
}
#sidebar hr {
  background: var(--cp-border-dark) !important;
}
#sidebar a { color: var(--cp-text) !important; }
#sidebar a:hover { color: var(--cp-cyan) !important; }

/* ── Admin menu ── */
#admin-menu a {
  color: var(--cp-text) !important;
}
#admin-menu a:hover,
#admin-menu a.selected {
  color: var(--cp-cyan) !important;
}

/* ── Footer ── */
#footer {
  background: #ffffff !important;
  border-top: 1px solid var(--cp-border-dark) !important;
  color: var(--cp-text-muted) !important;
  text-align: center;
  padding: 12px 10px !important;
}
#footer::before {
  content: 'Specoborona  ·  ';
  color: var(--cp-cyan);
  font-family: var(--cp-font-main);
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
#footer a {
  color: var(--cp-text-muted) !important;
}
#footer a:hover {
  color: var(--cp-cyan) !important;
}


/* ── 6. Auto-generated color overrides per source file ── */
/* ===== inlined: specoborona-colors-application.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
  Specoborona — Auto-generated color overrides for application.css
   Source: _source.css → 333 rules remapped
   Generated by build.mjs on 2026-04-30T16:07:39.637Z
   ═══════════════════════════════════════════════════════════════════════ */

body {
  color: var(--cp-border);
}

#content h1, h2, h3, h4, h5, h6 {
  color: var(--cp-border-light);
}

h4 {
  border-bottom: 1px solid var(--cp-bg-hover);
}

.wiki h6 {
  color: var(--cp-text-muted);
}

#wrapper {
  background: var(--cp-text-white);
}

#top-menu {
  background: var(--cp-cyan-dim);
  color: var(--cp-bg-dark);
}

#top-menu a {
  color: var(--cp-bg-dark);
}

#top-menu #loggedas {
  color: var(--cp-bg-dark);
}

#header {
  background: linear-gradient(180deg, var(--cp-cyan) 30%, var(--cp-cyan-dim));
  color: var(--cp-bg-dark);
}

#header a {
  color: var(--cp-bg-dark);
}

#quick-search #q {
  border: 1px solid var(--cp-bg-hover);
}

#main-menu li a {
  color: var(--cp-bg-dark);
}

#main-menu li a:hover {
  background: var(--cp-cyan);
  color: var(--cp-bg-dark);
}

#main-menu li a.selected, #main-menu li a.selected:hover {
  background: var(--cp-bg-dark);
  color: var(--cp-border-light);
}

#main-menu li a.new-object {
  background-color: var(--cp-cyan);
}

#main-menu .menu-children {
  background-color: var(--cp-bg-dark);
  border-right: 1px solid var(--cp-cyan);
  border-bottom: 1px solid var(--cp-cyan);
  border-left: 1px solid var(--cp-cyan);
}

#main-menu .menu-children li a {
  color: var(--cp-border-light);
  background-color: var(--cp-bg-dark);
}

#main-menu .menu-children li a:hover {
  color: var(--cp-bg-dark);
  background-color: var(--cp-cyan);
}

#sidebar {
  background: var(--cp-bg-dark);
  border-left: 1px solid var(--cp-bg-hover);
}

#sidebar h3 {
  color: var(--cp-border-light);
}

#sidebar hr {
  background: var(--cp-bg-hover);
}

#sidebar-switch-button svg {
  stroke: var(--cp-border-light);
}

#sidebar-switch-button:hover {
  background-color: var(--cp-bg-panel);
}

#content {
  background-color: var(--cp-bg-dark);
}

#footer {
  border-top: 1px solid var(--cp-bg-hover);
  color: var(--cp-text);
  background: var(--cp-bg-dark);
}

#login-form {
  border: 1px solid var(--cp-border);
  background-color: var(--cp-bg-panel);
}

div.modal {
  background: var(--cp-bg-dark);
}

.decoration-red, a.decoration-red {
  color: var(--cp-var(--cp-red)-dim) !important;
}

a, a:link, a:visited {
  color: var(--cp-cyan-dim);
}

a:hover, a:active {
  color: var(--cp-var(--cp-red)-dim);
}

a.issue.closed, a.issue.closed:link, a.issue.closed:visited {
  color: var(--cp-text-muted);
}

a.project.closed, a.project.closed:link, a.project.closed:visited {
  color: var(--cp-text-muted);
}

a.user.locked, a.user.locked:link, a.user.locked:visited {
  color: var(--cp-text-muted);
}

a.user.user-mention {
  background-color: var(--cp-bg-surface);
}

#sidebar a.selected {
  background-color: var(--cp-cyan);
  color: var(--cp-bg-dark);
}

#sidebar a.selected svg.icon-svg {
  stroke: var(--cp-bg-dark) !important;
}

a#toggle-completed-versions {
  color: var(--cp-text-muted);
}

a#toggle-completed-versions svg, a#toggle-completed-versions:hover svg {
  stroke: var(--cp-text-muted);
}

.drdn-content {
  background-color: var(--cp-bg-dark);
  border: 1px solid var(--cp-bg-hover);
  color: var(--cp-border-light);
}

.drdn-content .autocomplete:focus {
  border-color: var(--cp-cyan);
}

div + .drdn-items {
  border-top: 1px solid var(--cp-bg-hover);
}

.drdn-items>* {
  border: 1px solid var(--cp-bg-dark);
}

.drdn-items>*:focus {
  border: 1px dotted var(--cp-border);
}

.drdn-items>span {
  color: var(--cp-text-muted);
}

.contextual .drdn-items > a:hover, .journal-actions .drdn-items > a:hover {
  color: var(--cp-cyan-dim);
  border: 1px solid var(--cp-cyan);
  background-color: var(--cp-bg-panel);
}

#project-jump .drdn-trigger {
  border: 1px solid var(--cp-bg-hover);
  color: var(--cp-border-light);
  background: var(--cp-bg-dark) url("/assets/chevron-down-f08c7c57.svg") no-repeat 98% 50%;
}

#project-jump .drdn-items>* {
  color: var(--cp-border-light) !important;
}

#project-jump .drdn-items>a:hover {
  background-color: var(--cp-cyan);
  color: var(--cp-bg-dark) !important;
}

table.list, .table-list {
  border-top: 1px solid var(--cp-bg-hover);
  border-bottom: 1px solid var(--cp-bg-hover);
}

table.list th, .table-list-header {
  background-color: var(--cp-bg-panel);
  border-bottom: 2px solid var(--cp-bg-hover);
}

table.list td {
  border-top: 1px solid var(--cp-bg-hover);
}

table.list tr.overdue:not(.context-menu-selection) td.due_date {
  color: var(--cp-var(--cp-red)-dim);
}

tr.project.closed, tr.project.archived {
  color: var(--cp-text);
}

tr.project.closed a, tr.project.archived a {
  color: var(--cp-text);
}

table.issues td.block_column {
  color: var(--cp-border-light);
}

table.issue-report tr.total, table.issue-report-detailed tr.total {
  border-top: 2px solid var(--cp-bg-hover);
}

tr.changeset td.revision_graph {
  background-color: var(--cp-bg-dark);
}

tr.version.closed, tr.version.closed a {
  color: var(--cp-text-muted);
}

tr.user.locked, tr.user.registered {
  color: var(--cp-text);
}

tr.user.locked a, tr.user.registered a {
  color: var(--cp-text);
}

table.permissions td.role {
  color: var(--cp-text-muted);
}

tr.group td {
  border-bottom: 2px solid var(--cp-bg-hover);
  background-color: var(--cp-bg-dark);
}

tr.group span.totals {
  color: var(--cp-text);
}

tr.group span.totals .value {
  color: var(--cp-border-light);
}

tr.group a.toggle-all {
  color: var(--cp-text);
}

table.list:not(.odd-even) tbody tr:nth-child(odd), .odd, #issue-changesets div.changeset:nth-child(odd) {
  background-color: var(--cp-bg-dark);
}

table.list:not(.odd-even) tbody tr:nth-child(even), .even, #issue-changesets div.changeset:nth-child(even) {
  background-color: var(--cp-bg-dark);
}

table.list:not(.odd-even) tbody tr:nth-child(odd):hover, .odd:hover, #issue-changesets div.changeset:nth-child(odd):hover,
table.list:not(.odd-even) tbody tr:nth-child(even):hover, .even:hover, #issue-changesets div.changeset:nth-child(even):hover {
  background-color: var(--cp-bg-dark);
}

input:disabled, select:disabled, textarea:disabled {
  background-color: var(--cp-bg-surface);
}

.highlight {
  background-color: var(--cp-bg-panel);
}

.highlight.token-1 {
  background-color: var(--cp-border);
}

.highlight.token-2 {
  background-color: var(--cp-bg-hover);
}

.highlight.token-3 {
  background-color: var(--cp-cyan);
}

.box {
  background-color: var(--cp-bg-dark);
  color: var(--cp-border);
  border: 1px solid var(--cp-bg-hover);
  box-shadow: 0 1px 2px rgba(0,240,255,0.05);
}

div.square {
  border: 1px solid var(--cp-text-muted);
}

input, select, textarea, button {
  color: var(--cp-border);
  background-color: var(--cp-bg-dark);
  border: 1px solid var(--cp-bg-hover);
}

select {
  background-color: var(--cp-bg-dark);
}

input[type="submit"], button[type="submit"] {
  background-color: var(--cp-bg-dark);
}

input[type="submit"]:hover, button[type="submit"]:hover {
  background-color: var(--cp-bg-surface);
}

input[type="text"]:focus, input[type="text"]:active,
input[type="password"]:focus, input[type="password"]:active,
input[type="date"]:focus, input[type="date"]:active,
input[type="number"]:focus, input[type="number"]:active,
select:focus, select:active,
textarea:focus, textarea:active {
  border: 1px solid var(--cp-cyan);
}

select[multiple=multiple] {
  background: var(--cp-bg-dark);
}

fieldset {
  border: 1px solid var(--cp-bg-hover);
}

legend {
  color: var(--cp-border);
}

hr {
  background: var(--cp-bg-hover);
}

blockquote {
  border-left: 3px solid var(--cp-bg-surface);
}

abbr, span.field-description[title] {
  border-bottom: 1px dotted var(--cp-text);
}

div.issue {
  background: var(--cp-bg-dark);
  border: 1px solid var(--cp-bg-hover);
  box-shadow: 0 1px 2px rgba(0,240,255,0.05);
}

div.issue div.subject p {
  color: var(--cp-text-muted);
}

div.issue .next-prev-links {
  color: var(--cp-text-muted);
}

div.issue.overdue .due-date .value {
  color: var(--cp-var(--cp-red)-dim);
}

div#sticky-issue-header {
  background-color: var(--cp-text-white);
  border-bottom: 1px solid var(--cp-bg-hover);
  box-shadow: 0 2px 6px rgba(0,240,255,0.09);
}

div#issue-changesets {
  background: var(--cp-bg-dark);
}

div#issue-changesets div.changeset {
  border-bottom: 1px solid var(--cp-bg-surface);
}

div#activity dt.me .time {
  border-bottom: 1px solid var(--cp-text-muted);
}

div#activity dt .time {
  color: var(--cp-border-light);
}

div#activity dd span.description, #search-results dd span.description {
  color: var(--cp-border-light);
}

div#activity h3 {
  background-color: var(--cp-bg-dark);
}

div#activity dt {
  border-top: 1px solid var(--cp-bg-surface);
}

div#version-summary {
  background-color: var(--cp-bg-dark);
}

table#time-report tbody tr.subtotal {
  color: var(--cp-border-light);
}

table#time-report tbody tr.subtotal td.hours {
  color: var(--cp-text);
}

table#time-report tbody tr.total {
  background-color: var(--cp-bg-panel);
  border-top: 2px solid var(--cp-bg-hover);
}

div.wiki a:target + h1, div.wiki a:target + h2, div.wiki a:target + h3, div.wiki a:target + h4, div.wiki a:target + h5, div.wiki a:target + h6 {
  background-color: var(--cp-bg-surface);
}

.wiki-update-info {
  color: var(--cp-border-light);
}

ul.projects li.root div.archived, ul.projects li.child div.archived {
  color: var(--cp-text);
}

#projects-index li.root ul.projects {
  border-left: 3px solid var(--cp-bg-surface);
}

#projects-index ul.projects li.root {
  border: 1px solid var(--cp-bg-hover);
  box-shadow: 0 1px 2px rgba(0,240,255,0.05);
}

ul.properties {
  color: var(--cp-border-light);
}

table.transitions td.enabled {
  background: var(--cp-bg-surface);
}

table.fields_permissions td.readonly {
  background: var(--cp-bg-surface);
}

table.fields_permissions td.required {
  background: var(--cp-var(--cp-red));
}

span.pagination {
  color: var(--cp-text-muted);
}

.pagination ul.pages li {
  border: 1px solid var(--cp-bg-surface);
}

.pagination ul.pages li.current {
  color: var(--cp-text-white);
  background-color: var(--cp-cyan);
  border-color: var(--cp-cyan);
}

.pagination ul.pages li.page:hover {
  background-color: var(--cp-bg-surface);
}

.pagination ul.pages li.page a:hover,
.pagination ul.pages li.page a:active {
  color: var(--cp-cyan-dim);
}

.tabular label.error {
  color: var(--cp-var(--cp-red)-dim);
}

.tabular label.error + *:not(#issue_description_and_toolbar), .tabular label.error + span#issue_description_and_toolbar div.jstBlock {
  border: 1px solid var(--cp-var(--cp-red)-dim);
}

span.required {
  color: var(--cp-var(--cp-red)-dim);
}

.check_box_group {
  background: var(--cp-bg-dark);
  border: 1px solid var(--cp-text);
}

.attachments_fields input.filename, #existing-attachments .filename {
  color: var(--cp-border-light);
}

.existing-attachment.deleted .filename {
  color: var(--cp-text-muted) !important;
}

div.attachments span.author {
  color: var(--cp-text-muted);
}

div.thumbnail {
  background: var(--cp-bg-dark);
  border: 2px solid var(--cp-bg-surface);
}

p.other-formats {
  color: var(--cp-border-light);
}

em.info {
  color: var(--cp-text-muted);
}

input.autocomplete {
  background: var(--cp-bg-dark) url("/assets/search-0bd54309.svg") no-repeat 2px 50%;
}

div.flash.error, #errorExplanation {
  background-color: var(--cp-bg-panel);
  border-color: var(--cp-var(--cp-red));
  color: var(--cp-var(--cp-red)-dim);
}

div.flash.error:not(:has(svg)), #errorExplanation:not(:has(svg)) {
  background: url("/assets/exclamation-be65640f.png") 8px 50% no-repeat var(--cp-bg-panel);
}

div.flash.error svg.icon-svg, #errorExplanation svg.icon-svg {
  stroke: var(--cp-var(--cp-red)-dim);
}

div.flash.notice {
  background-color: var(--cp-bg-panel);
  border-color: var(--cp-border);
  color: var(--cp-var(--cp-green)-dim);
}

div.flash.notice:not(:has(svg)) {
  background: url("/assets/true-e804d786.png") 8px 50% no-repeat var(--cp-bg-panel);
}

div.flash.notice svg.icon-svg {
  stroke: var(--cp-var(--cp-green)-dim);
}

div.flash.warning, .conflict {
  background-color: var(--cp-bg-panel);
  border-color: var(--cp-bg-hover);
  color: var(--cp-var(--cp-orange));
}

div.flash.warning:not(:has(svg)), .conflict:not(:has(svg)) {
  background: url("/assets/warning-699c1e00.png") 8px 5px no-repeat var(--cp-bg-panel);
}

div.flash.warning svg.icon-svg, .conflict svg.icon-svg {
  stroke: var(--cp-var(--cp-orange));
}

.nodata, .warning {
  background-color: var(--cp-bg-panel);
  border-color: var(--cp-bg-hover);
  color: var(--cp-var(--cp-orange));
}

.markdown-alert-tip {
  border-color: var(--cp-var(--cp-green));
}

.markdown-alert-tip .markdown-alert-title {
  color: var(--cp-var(--cp-green));
}

.markdown-alert-tip .markdown-alert-title svg {
  stroke: var(--cp-var(--cp-green));
}

.markdown-alert-important {
  border-color: var(--cp-magenta);
}

.markdown-alert-important .markdown-alert-title {
  color: var(--cp-magenta-dim);
}

.markdown-alert-important .markdown-alert-title svg {
  stroke: var(--cp-magenta-dim);
}

.markdown-alert-caution {
  border-color: var(--cp-var(--cp-orange));
}

.markdown-alert-caution .markdown-alert-title {
  color: var(--cp-var(--cp-orange));
}

.markdown-alert-caution .markdown-alert-title svg {
  stroke: var(--cp-var(--cp-orange));
}

.markdown-alert-warning {
  border-color: var(--cp-var(--cp-orange));
}

.markdown-alert-warning .markdown-alert-title {
  color: var(--cp-var(--cp-orange));
}

.markdown-alert-warning .markdown-alert-title svg {
  stroke: var(--cp-var(--cp-orange));
}

.markdown-alert-note {
  border-color: var(--cp-cyan);
}

.markdown-alert-note .markdown-alert-title {
  color: var(--cp-cyan-dim);
}

.markdown-alert-note .markdown-alert-title svg {
  stroke: var(--cp-cyan-dim);
}

#ajax-indicator {
  background-color: var(--cp-bg-panel);
  border: 1px solid var(--cp-border);
}

ul.cal {
  border: 1px solid var(--cp-bg-hover);
  box-shadow: 0 1px 2px rgba(0,240,255,0.05);
}

.cal .calhead {
  background-color: var(--cp-bg-panel);
}

.cal .week-number {
  background-color: var(--cp-bg-panel);
}

.cal .calbody {
  border: 1px solid var(--cp-bg-hover);
  box-shadow: 0 1px 2px rgba(0,240,255,0.05);
}

.cal .calbody.this-month {
  background-color: var(--cp-bg-dark);
}

.cal .calbody.other-month {
  background-color: var(--cp-bg-dark);
}

.cal .calbody.other-month p.day-num {
  color: var(--cp-border);
}

.cal .calbody.today {
  background: var(--cp-bg-dark);
}

.cal .calbody.nwday:not(.other-month) {
  background-color: var(--cp-bg-panel);
}

.tooltip:hover {
  color: var(--cp-bg-deep);
}

.tooltip span.tip a {
  color: var(--cp-cyan-dim) !important;
}

div.tooltip:hover span.tip {
  border: 1px solid var(--cp-border-light);
  background-color: var(--cp-bg-dark);
  color: var(--cp-border);
  box-shadow: 0 1px 2px rgba(0,240,255,0.05);
}

table.progress td.closed {
  background: var(--cp-bg-hover) none repeat scroll 0%;
}

table.progress td.done {
  background: var(--cp-bg-surface) none repeat scroll 0%;
}

table.progress td.todo {
  background: var(--cp-bg-panel) none repeat scroll 0%;
}

p.progress-info {
  color: var(--cp-border-light);
}

#content .tabs ul {
  border-bottom: 1px solid var(--cp-bg-hover);
}

#content .tabs ul li a {
  border: 1px solid var(--cp-bg-hover);
  border-bottom: 1px solid var(--cp-bg-hover);
  color: var(--cp-text-muted);
}

#content .tabs ul li a:hover {
  color: var(--cp-border-light);
}

#content .tabs ul li a.selected {
  background-color: var(--cp-bg-dark);
  border: 1px solid var(--cp-bg-hover);
  border-bottom: 1px solid var(--cp-bg-dark);
  color: var(--cp-border);
  box-shadow: 0 1px 2px rgba(0,240,255,0.1);
}

#content .tabs ul li a.selected:hover {
  background-color: var(--cp-bg-dark);
}

div.tabs-buttons {
  background: var(--cp-text-white);
  border-bottom: 1px solid var(--cp-border);
}

button.tab-left, button.tab-right {
  border: 1px solid var(--cp-bg-hover);
  border-bottom: 1px solid var(--cp-border);
}

button.tab-left:hover, button.tab-right:hover {
  background-color: var(--cp-bg-panel);
}

button.tab-left svg.icon-svg, button.tab-right svg.icon-svg {
  stroke: var(--cp-text-muted);
}

button.tab-left:not(:has(svg)) {
  background: var(--cp-bg-panel) url("/assets/arrow_left-49e4d0f5.png") no-repeat 50% 50%;
}

button.tab-right:not(:has(svg)) {
  background: var(--cp-bg-panel) url("/assets/arrow_right-e6b20439.png") no-repeat 50% 50%;
}

button.tab-left.disabled, button.tab-right.disabled {
  background-color: var(--cp-bg-hover);
}

.diff_out {
  background: var(--cp-bg-hover);
}

.diff_out span {
  background: var(--cp-border);
}

.diff_in {
  background: var(--cp-bg-surface);
}

.diff_in span {
  background: var(--cp-bg-hover);
}

.text-diff {
  background-color: var(--cp-bg-dark);
  color: var(--cp-border);
  border: 1px solid var(--cp-bg-surface);
}

div.wiki table, div.wiki td, div.wiki th {
  border: 1px solid var(--cp-border);
}

div.wiki a.new {
  color: var(--cp-var(--cp-red)-dim);
}

div.wiki pre {
  background-color: var(--cp-bg-dark);
  border: 1px solid var(--cp-bg-surface);
}

div.wiki *:not(pre)>code, div.wiki>code {
  background: rgba(0,240,255,0.08);
}

div.pre-wrapper a.copy-pre-content-link {
  background: var(--cp-bg-dark);
  border: 1px solid var(--cp-bg-hover);
}

div.wiki ul.toc {
  background-color: var(--cp-bg-dark);
  border: 1px solid var(--cp-bg-surface);
}

div.wiki ul.toc>li:first-child {
  color: var(--cp-border-light);
}

div.wiki ul.toc a {
  color: var(--cp-border-light);
}

div.wiki ul.toc a:hover {
  color: var(--cp-var(--cp-red)-dim);
}

a.wiki-anchor:hover {
  color: var(--cp-text) !important;
}

h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor, h4:hover a.wiki-anchor, h5:hover a.wiki-anchor, h6:hover a.wiki-anchor {
  color: var(--cp-bg-surface);
}

.block-receiver {
  border: 1px dashed var(--cp-bg-dark);
}

.dragging .block-receiver {
  border: 1px dashed var(--cp-border-light);
}

.mypage-box {
  border: 1px solid var(--cp-bg-hover);
  color: var(--cp-border);
  box-shadow: 0 1px 2px rgba(0,240,255,0.05);
}

.gantt_hdr {
  border-top: 1px solid var(--cp-border);
  border-bottom: 1px solid var(--cp-border);
  border-left: 1px solid var(--cp-border);
}

#gantt_area .gantt_hdr {
  border-right: 1px solid var(--cp-border);
}

.gantt_subjects_container:not(.draw_selected_columns) .gantt_hdr,
.last_gantt_selected_column .gantt_hdr {
  border-right: 1px solid var(--cp-border);
}

.gantt_hdr.nwday {
  background-color: var(--cp-bg-panel);
  color: var(--cp-text-muted);
}

.gantt_subjects div.issue-subject:hover {
  background-color: var(--cp-bg-dark);
}

.task {
  color: var(--cp-text-muted);
}

.task_late {
  background: var(--cp-var(--cp-red)) url("/assets/task_late-bb4543c4.png");
  border: 1px solid var(--cp-var(--cp-red));
}

.task_done {
  background: var(--cp-var(--cp-green)) url("/assets/task_done-caf95463.png");
  border: 1px solid var(--cp-var(--cp-green));
}

.task_todo {
  background: var(--cp-text) url("/assets/task_todo-330cc333.png");
  border: 1px solid var(--cp-text);
}

.task_todo.parent {
  background: var(--cp-text-muted);
  border: 1px solid var(--cp-text-muted);
}

.version.task_late {
  background: var(--cp-var(--cp-red)) url("/assets/milestone_late-f98359b1.png");
  border: 1px solid var(--cp-var(--cp-red));
}

.version.task_done {
  background: var(--cp-var(--cp-green)) url("/assets/milestone_done-caf95463.png");
  border: 1px solid var(--cp-var(--cp-green));
}

.version.task_todo {
  background: var(--cp-bg-dark) url("/assets/milestone_todo-59996a4e.png");
  border: 1px solid var(--cp-bg-dark);
}

.project.task_late {
  background: var(--cp-var(--cp-red)) url("/assets/milestone_late-f98359b1.png");
  border: 1px solid var(--cp-var(--cp-red));
}

.project.task_done {
  background: var(--cp-var(--cp-green)) url("/assets/milestone_done-caf95463.png");
  border: 1px solid var(--cp-var(--cp-green));
}

.project.task_todo {
  background: var(--cp-bg-dark) url("/assets/milestone_todo-59996a4e.png");
  border: 1px solid var(--cp-bg-dark);
}

.version-behind-schedule a, .issue-behind-schedule a {
  color: var(--cp-var(--cp-orange));
}

.version-overdue a, .issue-overdue a, .project-overdue a {
  color: var(--cp-var(--cp-red)-dim);
}

.journals h4.journal-header {
  background-color: var(--cp-bg-dark);
}

.journals h4.journal-header .update-info {
  color: var(--cp-border-light);
}

.journals div:target h4.journal-header {
  background-color: var(--cp-bg-surface);
}

.journals .private-notes {
  border-left: 2px solid var(--cp-var(--cp-red)-dim);
}

.journals .journal-meta .journal-link {
  color: var(--cp-border-light);
}

.journals .journal-details, ul.revision-info {
  color: var(--cp-text-muted);
}

.journals .journal-details a, ul.revision-info a {
  color: var(--cp-cyan);
}

.journals .journal-details a:hover, ul.revision-info a:hover {
  color: var(--cp-var(--cp-red)-dim);
}

.badge-private {
  background: var(--cp-var(--cp-red)-dim);
  color: var(--cp-bg-dark);
  border: 1px solid var(--cp-var(--cp-red)-dim);
}

.badge-count {
  color: var(--cp-bg-dark);
  background: var(--cp-cyan);
}

.badge-status-open {
  color: var(--cp-cyan-dim);
  border: 1px solid var(--cp-cyan-dim);
}

.badge-status-locked {
  color: var(--cp-border-light);
  border: 1px solid var(--cp-border-light);
}

.badge-status-closed {
  color: var(--cp-var(--cp-green)-dim);
  border: 1px solid var(--cp-var(--cp-green)-dim);
}

.badge-issues-count {
  background: var(--cp-bg-panel);
}

.ui-tooltip {
  background: var(--cp-bg-deep);
  color: var(--cp-bg-dark);
}

a.icon .icon-svg,
a.icon-only .icon-svg,
span.icon-actions .icon-svg {
  stroke: var(--cp-cyan-dim);
}

a.icon:hover .icon-svg,
a.icon-only:hover .icon-svg,
span.icon-actions:hover .icon-svg {
  stroke: var(--cp-var(--cp-red)-dim);
}

a.icon .icon-svg-filled,
a.icon-only .icon-svg-filled {
  fill: var(--cp-cyan-dim);
}

a.icon:hover .icon-svg-filled, a.icon-only:hover .icon-svg-filled {
  fill: var(--cp-var(--cp-red)-dim);
}

svg.icon-ok {
  stroke: var(--cp-var(--cp-green));
}

.icon-error svg.icon-svg {
  stroke: var(--cp-var(--cp-red)-dim);
}

.icon-warning svg.icon-svg {
  stroke: var(--cp-border);
}

svg.icon-svg {
  stroke: var(--cp-border);
}

svg.icon-svg-filled {
  fill: var(--cp-border);
}

span.icon-checked:has(:not(a svg.icon-svg)) svg.icon-svg {
  stroke: var(--cp-var(--cp-green));
}

tr.ui-sortable-helper {
  border: 1px solid var(--cp-bg-surface);
}

div.avatar-with-child > .avatar:nth-child(2) {
  border: 2px solid var(--cp-text-bright);
}

div.avatar-with-child > .avatar:nth-child(2).group-avatar {
  background-color: var(--cp-bg-dark);
}

.sample-data {
  border: 1px solid var(--cp-bg-hover);
  background-color: var(--cp-bg-dark);
}

.sample-data td {
  border: 1px solid var(--cp-bg-hover);
}

#progress-label {
  color: var(--cp-border-light);
  text-shadow: 1px 1px 0 var(--cp-bg-dark);
}

.avatar-color-0 {
  background-color: var(--cp-var(--cp-red)-dim);
  color: var(--cp-bg-dark);
}

.avatar-color-1 {
  background-color: var(--cp-var(--cp-orange));
  color: var(--cp-bg-dark);
}

.avatar-color-2 {
  background-color: var(--cp-bg-hover);
  color: var(--cp-bg-deep);
}

.avatar-color-3 {
  background-color: var(--cp-var(--cp-green));
  color: var(--cp-bg-dark);
}

.avatar-color-4 {
  background-color: var(--cp-cyan);
  color: var(--cp-bg-dark);
}

.avatar-color-5 {
  background-color: var(--cp-cyan);
  color: var(--cp-bg-dark);
}

.avatar-color-6 {
  background-color: var(--cp-magenta);
  color: var(--cp-bg-dark);
}

.avatar-color-7 {
  background-color: var(--cp-magenta);
  color: var(--cp-bg-dark);
}

.reaction-button.readonly .icon-svg {
  stroke: var(--cp-text-muted);
}

.reaction-button.readonly .icon-label {
  color: var(--cp-text-muted);
}

.ui-autocomplete, .ui-menu {
  border: 1px solid var(--cp-bg-hover);
}

.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active {
  border-color: var(--cp-cyan);
  background: var(--cp-cyan);
}

.ui-widget-overlay {
  background: var(--cp-bg-deep);
}

.tribute-container ul {
  background-color: var(--cp-bg-dark);
  border: 1px solid var(--cp-bg-hover);
}

.tribute-container li.highlight {
  background-color: var(--cp-cyan);
  color: var(--cp-bg-dark);
}

.syntaxhl .hll {
  background-color: var(--cp-bg-dark);
}

.syntaxhl {
  background: var(--cp-bg-dark);
}

.syntaxhl .c {
  color: var(--cp-text-muted);
}

.syntaxhl .err {
  color: var(--cp-var(--cp-red)-dim);
  background-color: var(--cp-border);
}

.syntaxhl .k {
  color: var(--cp-var(--cp-green)-dim);
}

.syntaxhl .o {
  color: var(--cp-border);
}

.syntaxhl .ch {
  color: var(--cp-text-muted);
}

.syntaxhl .cm {
  color: var(--cp-text-muted);
}

.syntaxhl .cp {
  color: var(--cp-cyan);
}

.syntaxhl .cpf {
  color: var(--cp-text-muted);
}

.syntaxhl .c1 {
  color: var(--cp-text-muted);
}

.syntaxhl .cs {
  color: var(--cp-var(--cp-red)-dim);
}

.syntaxhl .gd {
  color: var(--cp-var(--cp-red)-dim);
}

.syntaxhl .gr {
  color: var(--cp-var(--cp-red)-dim);
}

.syntaxhl .gh {
  color: var(--cp-bg-active);
}

.syntaxhl .gi {
  color: var(--cp-var(--cp-green)-dim);
}

.syntaxhl .go {
  color: var(--cp-text-muted);
}

.syntaxhl .gp {
  color: var(--cp-var(--cp-orange));
}

.syntaxhl .gu {
  color: var(--cp-magenta-dim);
}

.syntaxhl .gt {
  color: var(--cp-cyan-dim);
}

.syntaxhl .kc {
  color: var(--cp-var(--cp-green)-dim);
}

.syntaxhl .kd {
  color: var(--cp-var(--cp-green)-dim);
}

.syntaxhl .kn {
  color: var(--cp-var(--cp-green)-dim);
}

.syntaxhl .kp {
  color: var(--cp-bg-active);
}

.syntaxhl .kr {
  color: var(--cp-var(--cp-green)-dim);
}

.syntaxhl .kt {
  color: var(--cp-cyan-dim);
}

.syntaxhl .m {
  color: var(--cp-magenta-dim);
}

.syntaxhl .s {
  background-color: var(--cp-bg-panel);
}

.syntaxhl .na {
  color: var(--cp-bg-active);
}

.syntaxhl .nb {
  color: var(--cp-var(--cp-green)-dim);
}

.syntaxhl .nc {
  color: var(--cp-magenta-dim);
}

.syntaxhl .no {
  color: var(--cp-bg-active);
}

.syntaxhl .nd {
  color: var(--cp-border-light);
}

.syntaxhl .ni {
  color: var(--cp-var(--cp-red)-dim);
}

.syntaxhl .ne {
  color: var(--cp-var(--cp-red)-dim);
}

.syntaxhl .nf {
  color: var(--cp-cyan-dim);
}

.syntaxhl .nl {
  color: var(--cp-var(--cp-yellow));
}

.syntaxhl .nn {
  color: var(--cp-cyan);
}

.syntaxhl .nt {
  color: var(--cp-var(--cp-green)-dim);
}

.syntaxhl .nv {
  color: var(--cp-var(--cp-orange));
}

.syntaxhl .ow {
  color: var(--cp-bg-deep);
}

.syntaxhl .w {
  color: var(--cp-border);
}

.syntaxhl .mb {
  color: var(--cp-magenta-dim);
}

.syntaxhl .mf {
  color: var(--cp-magenta-dim);
}

.syntaxhl .mh {
  color: var(--cp-cyan-dim);
}

.syntaxhl .mi {
  color: var(--cp-bg-active);
}

.syntaxhl .mo {
  color: var(--cp-bg-active);
}

.syntaxhl .sa {
  background-color: var(--cp-bg-panel);
}

.syntaxhl .sb {
  background-color: var(--cp-bg-panel);
}

.syntaxhl .sc {
  color: var(--cp-cyan-dim);
}

.syntaxhl .dl {
  background-color: var(--cp-bg-panel);
}

.syntaxhl .sd {
  color: var(--cp-var(--cp-red)-dim);
}

.syntaxhl .s2 {
  background-color: var(--cp-bg-panel);
}

.syntaxhl .se {
  color: var(--cp-border-light);
  background-color: var(--cp-bg-panel);
}

.syntaxhl .sh {
  background-color: var(--cp-bg-panel);
}

.syntaxhl .si {
  background-color: var(--cp-bg-panel);
}

.syntaxhl .sx {
  color: var(--cp-var(--cp-red)-dim);
  background-color: var(--cp-bg-panel);
}

.syntaxhl .sr {
  color: var(--cp-bg-deep);
  background-color: var(--cp-bg-dark);
}

.syntaxhl .s1 {
  background-color: var(--cp-bg-panel);
}

.syntaxhl .ss {
  color: var(--cp-var(--cp-orange));
}

.syntaxhl .bp {
  color: var(--cp-var(--cp-green)-dim);
}

.syntaxhl .fm {
  color: var(--cp-cyan-dim);
}

.syntaxhl .vc {
  color: var(--cp-cyan-dim);
}

.syntaxhl .vg {
  color: var(--cp-var(--cp-orange));
}

.syntaxhl .vi {
  color: var(--cp-cyan-dim);
}

.syntaxhl .vm {
  color: var(--cp-var(--cp-orange));
}

.syntaxhl .il {
  color: var(--cp-bg-active);
}

.filecontent.wiki {
  border: 1px solid var(--cp-bg-hover);
  box-shadow: 0 1px 2px rgba(0,240,255,0.05);
}

th[role=columnheader]:not(.no-sort):after {
  border-color: var(--cp-border) transparent;
}

/* MISSING (skipped): specoborona-colors-responsive.css */
/* ===== inlined: specoborona-colors-context_menu.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
  Specoborona — Auto-generated color overrides for _context_menu.css
   Source: _source_context_menu.css → 12 rules remapped
   Generated by build.mjs on 2026-04-30T16:07:39.639Z
   ═══════════════════════════════════════════════════════════════════════ */

#context-menu ul {
  border: 1px solid var(--cp-bg-hover);
  background: var(--cp-text-white);
}

#context-menu li {
  border: 1px solid var(--cp-text-white);
}

#context-menu a.disabled, #context-menu a.disabled:hover {
  color: var(--cp-text);
}

#context-menu li:hover {
  border: 1px solid var(--cp-cyan);
  background-color: var(--cp-bg-panel);
}

#context-menu a:hover {
  color: var(--cp-cyan-dim);
}

.context-menu-selection {
  background-color: var(--cp-cyan) !important;
  color: var(--cp-bg-dark) !important;
}

.context-menu-selection a, .context-menu-selection a:hover {
  color: var(--cp-bg-dark) !important;
}

.context-menu-selection:hover {
  background-color: var(--cp-cyan) !important;
  color: var(--cp-bg-dark)  !important;
}

.context-menu-selection svg.icon-svg {
  stroke: var(--cp-bg-dark) !important;
}

div#gantt_area .context-menu-selection {
  background-color: var(--cp-text-muted) !important;
}

div#gantt_area .context-menu-selection:hover {
  background-color: var(--cp-text-muted) !important;
}

div#gantt_area .context-menu-selection a {
  color: var(--cp-cyan-dim) !important;
}

/* ===== inlined: specoborona-colors-scm.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
  Specoborona — Auto-generated color overrides for _scm.css
   Source: _source_scm.css → 30 rules remapped
   Generated by build.mjs on 2026-04-30T16:07:39.641Z
   ═══════════════════════════════════════════════════════════════════════ */

li.change.change-A svg.icon-svg {
  fill: var(--cp-var(--cp-green));
  stroke: var(--cp-bg-dark);
}

li.change.change-M svg.icon-svg {
  fill: var(--cp-var(--cp-orange));
  stroke: var(--cp-bg-dark);
}

li.change.change-C svg.icon-svg {
  fill: var(--cp-cyan);
  stroke: var(--cp-bg-dark);
}

li.change.change-R svg.icon-svg {
  fill: var(--cp-magenta-dim);
  stroke: var(--cp-bg-dark);
}

li.change.change-D svg.icon-svg {
  fill: var(--cp-var(--cp-red)-dim);
  stroke: var(--cp-bg-dark);
}

li.change .copied-from {
  color: var(--cp-text-muted);
}

table.filecontent {
  border: 1px solid var(--cp-bg-surface);
  background-color: var(--cp-bg-dark);
}

table.filecontent th {
  border: 1px solid var(--cp-bg-surface);
  background-color: var(--cp-bg-panel);
}

table.filecontent th.filename {
  background-color: var(--cp-bg-surface);
}

table.filecontent tr.spacing td {
  background: var(--cp-bg-panel);
}

table.filecontent th.line-num {
  border: 1px solid var(--cp-bg-surface);
  color: var(--cp-text-muted);
}

table.filecontent tr:target th.line-num {
  background-color: var(--cp-bg-surface);
  color: var(--cp-border-light);
}

table.filecontent tr:target td.line-code {
  background-color: var(--cp-bg-surface);
}

table.annotate tr.bloc-0 td.line-code {
  border-left-color: var(--cp-bg-dark);
}

table.annotate tr.bloc-1 td.line-code {
  border-left-color: var(--cp-bg-hover);
}

table.annotate tr.bloc-2 td.line-code {
  border-left-color: var(--cp-bg-panel);
}

table.annotate tr.bloc-3 td.line-code {
  border-left-color: var(--cp-bg-surface);
}

table.annotate tr.bloc-4 td.line-code {
  border-left-color: var(--cp-bg-panel);
}

table.annotate tr.bloc-5 td.line-code {
  border-left-color: var(--cp-bg-hover);
}

table.annotate tr.bloc-6 td.line-code {
  border-left-color: var(--cp-bg-hover);
}

table.annotate tr.bloc-7 td.line-code {
  border-left-color: var(--cp-bg-surface);
}

table.annotate tr.bloc-8 td.line-code {
  border-left-color: var(--cp-bg-surface);
}

table.annotate tr.bloc-9 td.line-code {
  border-left-color: var(--cp-magenta);
}

table.annotate tr.bloc-10 td.line-code {
  border-left-color: var(--cp-bg-hover);
}

table.annotate tr.bloc-11 td.line-code {
  border-left-color: var(--cp-bg-surface);
}

table.annotate tr.bloc-change {
  border-top: 1px solid var(--cp-bg-surface);
}

table.annotate td.line-code {
  background-color: var(--cp-bg-dark);
  border-left: 6px solid var(--cp-bg-hover);
}

div.action_M {
  background: var(--cp-bg-surface);
}

div.action_D {
  background: var(--cp-var(--cp-red));
}

div.action_A {
  background: var(--cp-bg-surface);
}

/* ===== inlined: specoborona-colors-jstoolbar.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
  Specoborona — Auto-generated color overrides for _jstoolbar.css
   Source: _source_jstoolbar.css → 7 rules remapped
   Generated by build.mjs on 2026-04-30T16:07:39.641Z
   ═══════════════════════════════════════════════════════════════════════ */

.wiki-preview {
  background-color: var(--cp-bg-dark);
  border: 1px solid var(--cp-border);
}

.wiki-preview p.empty-preview {
  color: var(--cp-text-muted);
}

.jstElements button {
  border-color: var(--cp-bg-surface);
  background-color: var(--cp-bg-dark);
}

.jstElements button:hover {
  border-color: var(--cp-border);
  background-color: var(--cp-bg-surface);
}

.table-generator td {
  border: 2px solid var(--cp-bg-hover);
  background-color: var(--cp-text-white);
}

.table-generator td.selected-cell, .table-generator td:hover {
  background-color: var(--cp-cyan);
}

.jstb_pre::before {
  color: var(--cp-border);
}

/* ===== inlined: specoborona-colors-wiki_syntax.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
  Specoborona — Auto-generated color overrides for _wiki_syntax.css
   Source: _source_wiki_syntax.css → 16 rules remapped
   Generated by build.mjs on 2026-04-30T16:07:39.642Z
   ═══════════════════════════════════════════════════════════════════════ */

h1 {
  color: var(--cp-border);
}

body {
  color: var(--cp-border);
}

table th img {
  border: 1px solid var(--cp-border);
}

table th .syntax-pre {
  border: 1px solid var(--cp-border);
}

table th .syntax-pre:before {
  color: var(--cp-border-light);
}

table td {
  background-color: var(--cp-bg-panel);
}

table.sample th, table.sample td {
  border: solid 1px var(--cp-border);
}

a, a:link, a:visited {
  color: var(--cp-cyan-dim);
}

a:hover, a:active {
  color: var(--cp-var(--cp-red)-dim);
}

.syntaxhl .mi {
  color: var(--cp-bg-active);
}

.syntaxhl .nf {
  color: var(--cp-cyan-dim);
}

.syntaxhl .k {
  color: var(--cp-var(--cp-green)-dim);
}

.syntaxhl .nb {
  color: var(--cp-var(--cp-green)-dim);
}

.syntaxhl .s1 {
  background-color: var(--cp-bg-panel);
}

.markdown-alert-note {
  border-color: var(--cp-cyan);
}

.markdown-alert-note .markdown-alert-title {
  color: var(--cp-cyan-dim);
}

/* ===== inlined: specoborona-colors-tribute.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
  Specoborona — Auto-generated color overrides for _tribute-5.1.3.css
   Source: _source_tribute-5.1.3.css → 2 rules remapped
   Generated by build.mjs on 2026-04-30T16:07:39.642Z
   ═══════════════════════════════════════════════════════════════════════ */

.tribute-container ul {
  background: var(--cp-bg-panel);
}

.tribute-container li.highlight {
  background: var(--cp-bg-surface);
}

/* ===== inlined: specoborona-colors-rtl.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
  Specoborona — Auto-generated color overrides for _rtl.css
   Source: _source_rtl.css → 10 rules remapped
   Generated by build.mjs on 2026-04-30T16:07:39.643Z
   ═══════════════════════════════════════════════════════════════════════ */

#sidebar {
  border-right: 1px solid var(--cp-bg-hover);
}

#content {
  border-right: 0 solid var(--cp-bg-surface);
  border-left: 1px solid var(--cp-bg-surface);
}

blockquote {
  border-left: 0px solid var(--cp-bg-surface);
  border-right: 3px solid var(--cp-bg-surface);
}

div.journal.private-notes {
  border-left: 0px solid var(--cp-var(--cp-red)-dim);
  border-right: 2px solid var(--cp-var(--cp-red)-dim);
}

#projects-index ul.projects ul.projects {
  border-left: 0px solid var(--cp-bg-surface);
  border-right: 3px solid var(--cp-bg-surface);
}

input.autocomplete {
  background: var(--cp-bg-dark) url("/assets/search-0bd54309.svg") no-repeat right 2px top 50%;
}

div.flash.error:not(:has(svg)), #errorExplanation:not(:has(svg)) {
  background: url("/assets/exclamation-be65640f.png") right 8px top 50% no-repeat var(--cp-bg-panel);
}

div.flash.notice:not(:has(svg)) {
  background: url("/assets/true-e804d786.png") right 8px top 5px no-repeat var(--cp-bg-panel);
}

div.flash.warning:not(:has(svg)), .conflict {
  background: url("/assets/warning-699c1e00.png") right 8px top 5px no-repeat var(--cp-bg-panel);
}

.gantt_hdr {
  border-right: 0px solid var(--cp-border);
  border-left: 1px solid var(--cp-border);
}


/* ── 7. Tables & Lists ── */
/* ===== inlined: specoborona-tables.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
  Specoborona — Tables & Lists
   Generated by build.mjs
   ═══════════════════════════════════════════════════════════════════════ */

table.list, .table-list {
  border-collapse: collapse;
}
table.list th, .table-list-header {
  background: var(--cp-bg-surface) !important;
  color: var(--cp-cyan) !important;
  border-bottom: 2px solid var(--cp-cyan) !important;
  text-transform: uppercase;
  font-family: var(--cp-font-main);
  font-size: 0.8em;
  letter-spacing: 0.05em;
  padding: 6px 10px;
}
table.list td {
  border-top: 1px solid var(--cp-border-dark) !important;
  color: var(--cp-text);
  padding: 5px 10px;
}
table.list tr:hover td {
  background: var(--cp-bg-hover) !important;
}
table.list tr.odd {
  background: transparent;
}
table.list tr.even {
  background: rgba(0, 240, 255, 0.02);
}
tr.issue { color: var(--cp-text); }
tr.issue.priority-highest, tr.issue.priority-5 {
  color: var(--cp-red) !important;
}
tr.issue.priority-high, tr.issue.priority-4 {
  color: var(--cp-orange) !important;
}
tr.issue.overdue td.due_date {
  color: var(--cp-red) !important;
}
tr.project.closed, tr.project.archived,
tr.project.closed a, tr.project.archived a {
  color: var(--cp-text-muted) !important;
}

table.issue-report tr.total {
  border-top: 2px solid var(--cp-cyan) !important;
  font-weight: bold;
  color: var(--cp-text-bright);
}

/* ── Sortable ── */
table.list th a {
  color: var(--cp-cyan) !important;
}
table.list th.sort-asc a,
table.list th.sort-desc a {
  color: var(--cp-magenta) !important;
}

/* ── Tabular form ── */
.tabular p { border-bottom-color: var(--cp-border-dark); }
.tabular label { color: var(--cp-text-muted); }

/* ── Pagination ── */
p.pagination {
  color: var(--cp-text-muted);
}
.pagination a {
  color: var(--cp-cyan) !important;
  border: 1px solid var(--cp-border);
  border-radius: 3px;
  padding: 2px 8px;
  transition: all 0.2s;
}
.pagination a:hover {
  background: var(--cp-bg-hover);
  border-color: var(--cp-cyan);
  box-shadow: var(--cp-glow-cyan);
}
.pagination .current {
  background: var(--cp-cyan) !important;
  color: var(--cp-bg-deep) !important;
  border: 1px solid var(--cp-cyan);
  border-radius: 3px;
  padding: 2px 8px;
  font-weight: bold;
}


/* ── 8. Forms & Inputs ── */
/* ===== inlined: specoborona-forms.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
  Specoborona — Forms & Inputs
   Generated by build.mjs
   ═══════════════════════════════════════════════════════════════════════ */

input, select, textarea {
  background: var(--cp-bg-surface) !important;
  border: 1px solid var(--cp-border) !important;
  color: var(--cp-text) !important;
  font-family: var(--cp-font-main);
  border-radius: 3px;
  transition: border-color 0.2s, box-shadow 0.2s;
}

input:focus, select:focus, textarea:focus {
  border-color: var(--cp-cyan) !important;
  box-shadow: var(--cp-glow-cyan) !important;
  outline: none;
}

input[type="submit"], input[type="button"], button,
.button, input.button {
  background: var(--cp-bg-surface) !important;
  color: var(--cp-cyan) !important;
  border: 1px solid var(--cp-cyan) !important;
  font-family: var(--cp-font-main);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-weight: 600;
  padding: 6px 16px;
  cursor: pointer;
  transition: all 0.2s ease;
  border-radius: 3px;
}

input[type="submit"]:hover, input[type="button"]:hover, button:hover,
.button:hover, input.button:hover {
  background: var(--cp-cyan) !important;
  color: var(--cp-bg-deep) !important;
  box-shadow: var(--cp-glow-cyan) !important;
  text-shadow: none;
}

/* Action / danger buttons */
a.icon-del, a.delete,
input[type="submit"].btn-danger {
  color: var(--cp-red) !important;
  border-color: var(--cp-red) !important;
}
a.icon-del:hover, a.delete:hover,
input[type="submit"].btn-danger:hover {
  background: var(--cp-red) !important;
  color: var(--cp-text-white) !important;
  box-shadow: 0 0 8px rgba(255, 60, 60, 0.4);
}

/* Fieldset & legend */
fieldset {
  border: 1px solid var(--cp-border) !important;
  border-radius: 4px;
  background: var(--cp-bg-panel);
}
legend {
  color: var(--cp-cyan) !important;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-size: 0.9em;
}

/* Checkboxes visual hint */
input[type="checkbox"]:checked {
  accent-color: var(--cp-cyan);
}
input[type="radio"]:checked {
  accent-color: var(--cp-cyan);
}

/* Disabled */
input:disabled, select:disabled, textarea:disabled {
  background: var(--cp-bg-deep) !important;
  color: var(--cp-text-muted) !important;
  border-color: var(--cp-border-dark) !important;
  opacity: 0.6;
}

/* Placeholder */
::placeholder {
  color: var(--cp-text-muted) !important;
  opacity: 0.7;
}


/* ── 9. Flash messages & Notifications ── */
/* ===== inlined: specoborona-flash.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
  Specoborona — Flash Messages & Notifications
   Generated by build.mjs
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Flash messages ── */
#flash_notice, .flash.notice {
  background: var(--cp-bg-surface) !important;
  border: 1px solid var(--cp-green) !important;
  border-left: 4px solid var(--cp-green) !important;
  color: var(--cp-green) !important;
  box-shadow: 0 0 12px rgba(0, 255, 159, 0.1);
}
#flash_warning, .flash.warning {
  background: var(--cp-bg-surface) !important;
  border: 1px solid var(--cp-yellow) !important;
  border-left: 4px solid var(--cp-yellow) !important;
  color: var(--cp-yellow) !important;
  box-shadow: 0 0 12px rgba(252, 238, 9, 0.08);
}
#flash_error, .flash.error {
  background: var(--cp-bg-surface) !important;
  border: 1px solid var(--cp-red) !important;
  border-left: 4px solid var(--cp-red) !important;
  color: var(--cp-red) !important;
  box-shadow: 0 0 12px rgba(255, 60, 60, 0.1);
}

/* ── Validation errors ── */
#errorExplanation {
  background: var(--cp-bg-surface) !important;
  border: 2px solid var(--cp-red) !important;
  color: var(--cp-red);
}
#errorExplanation h2 {
  color: var(--cp-red) !important;
}
#errorExplanation p, #errorExplanation li {
  color: var(--cp-text);
}

/* ── Nodata ── */
p.nodata, .nodata {
  color: var(--cp-text-muted);
}

/* ── Warning / info boxes ── */
.box {
  background: var(--cp-bg-surface);
  border: 1px solid var(--cp-border);
  color: var(--cp-text);
  border-radius: 3px;
  padding: 10px;
}

/* ── Tooltip ── */
.tooltip .tip {
  background: var(--cp-bg-panel) !important;
  border: 1px solid var(--cp-cyan) !important;
  color: var(--cp-text) !important;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.6), var(--cp-glow-cyan) !important;
  border-radius: 4px;
}


/* ── 10. Progress, Statuses, Calendar ── */
/* ===== inlined: specoborona-status.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
  Specoborona — Progress bars, statuses, priorities, calendars
   Generated by build.mjs
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Progress bar ── */
table.progress {
  border: 1px solid var(--cp-border);
  border-radius: 3px;
  overflow: hidden;
  background: var(--cp-bg-surface);
}
table.progress td.closed {
  background: var(--cp-cyan) !important;
  box-shadow: inset 0 0 8px rgba(0, 240, 255, 0.3);
}
table.progress td.done {
  background: var(--cp-green-dim) !important;
}
table.progress td.open {
  background: var(--cp-bg-surface);
}
p.percent {
  color: var(--cp-text-muted);
  font-family: var(--cp-font-mono);
}

/* ── Version ── */
.version-overview .version {
  border-bottom: 1px solid var(--cp-border-dark);
}

/* ── Calendar ── */
table.cal {
  border: 1px solid var(--cp-border);
}
table.cal th {
  background: var(--cp-bg-surface) !important;
  color: var(--cp-cyan) !important;
  border: 1px solid var(--cp-border-dark);
}
table.cal td {
  border: 1px solid var(--cp-border-dark);
  background: var(--cp-bg-dark);
}
table.cal td.today {
  background: var(--cp-bg-hover) !important;
  border: 1px solid var(--cp-cyan) !important;
}
table.cal td.even {
  background: var(--cp-bg-panel);
}

/* ── Gantt ── */
.gantt_hdr {
  background: var(--cp-bg-surface);
  border-color: var(--cp-border-dark) !important;
  color: var(--cp-text-muted);
}
.gantt_selected_column {
  background: var(--cp-bg-hover);
}
.task {
  border-color: var(--cp-cyan);
}

/* ── Issue badges ── */
.badge {
  background: var(--cp-cyan);
  color: var(--cp-bg-deep);
  font-weight: bold;
  border-radius: 3px;
}

/* ── MyPage blocks ── */
.mypage-box {
  border: 1px solid var(--cp-border);
  background: var(--cp-bg-panel);
}
.mypage-box .handle {
  background: var(--cp-bg-surface);
}

/* ── User mention ── */
a.user.user-mention {
  background-color: var(--cp-bg-surface) !important;
  border: 1px solid var(--cp-cyan-dim) !important;
  color: var(--cp-cyan) !important;
  border-radius: 3px;
  padding: 1px 4px;
}
a.user.user-mention:hover {
  background-color: var(--cp-bg-hover) !important;
  box-shadow: var(--cp-glow-cyan);
}


/* ── 11. Context Menu ── */
/* ===== inlined: specoborona-context-menu.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
  Specoborona — Context Menu
   Generated by build.mjs
   ═══════════════════════════════════════════════════════════════════════ */

#context-menu {
  background: var(--cp-bg-panel) !important;
  border: 1px solid var(--cp-cyan) !important;
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.7), var(--cp-glow-cyan) !important;
  border-radius: 4px;
  overflow: hidden;
}
#context-menu li a {
  color: var(--cp-text) !important;
  padding: 4px 16px;
  transition: all 0.15s;
}
#context-menu li a:hover,
#context-menu li a.focus {
  background: var(--cp-bg-hover) !important;
  color: var(--cp-cyan) !important;
}
#context-menu li.folder a {
  font-weight: 600;
  color: var(--cp-text-bright) !important;
}
#context-menu .separator {
  border-top: 1px solid var(--cp-border-dark) !important;
}


/* ── 12. SCM / Repository ── */
/* ===== inlined: specoborona-scm.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
  Specoborona — SCM / Repository viewer
   Generated by build.mjs
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Diff ── */
.diff_out {
  background: rgba(255, 60, 60, 0.08) !important;
}
.diff_in {
  background: rgba(0, 255, 159, 0.08) !important;
}
.diff_out span {
  background: rgba(255, 60, 60, 0.2);
}
.diff_in span {
  background: rgba(0, 255, 159, 0.2);
}

/* ── Syntax highlight table ── */
table.filecontent {
  border: 1px solid var(--cp-border);
  background: var(--cp-bg-dark);
}
table.filecontent th {
  background: var(--cp-bg-surface);
  border: 1px solid var(--cp-border-dark);
  color: var(--cp-text-muted);
}
table.filecontent td {
  background: var(--cp-bg-dark);
  color: var(--cp-text);
}
table.filecontent th.line-num {
  color: var(--cp-text-muted);
  background: var(--cp-bg-panel);
  border-right: 1px solid var(--cp-border);
}

/* ── Changeset ── */
.changeset-changes li.change {
  color: var(--cp-text);
}
.changeset-changes li.change .copied-from {
  color: var(--cp-text-muted);
}

/* ── Repository entry ── */
tr.entry td.filename a {
  color: var(--cp-cyan) !important;
}
tr.entry.file td.filename a {
  color: var(--cp-text) !important;
}
tr.entry td {
  border-bottom: 1px solid var(--cp-border-dark);
}
tr.entry:hover td {
  background: var(--cp-bg-hover);
}


/* ── 13. Wiki & Syntax ── */
/* ===== inlined: specoborona-wiki.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
  Specoborona — Wiki & text formatting
   Generated by build.mjs
   ═══════════════════════════════════════════════════════════════════════ */

.wiki {
  color: var(--cp-text);
}

.wiki table, div.wiki table {
  border: 1px solid var(--cp-border);
}
.wiki table th {
  background: var(--cp-bg-surface);
  color: var(--cp-cyan);
  border: 1px solid var(--cp-border-dark);
}
.wiki table td {
  border: 1px solid var(--cp-border-dark);
  color: var(--cp-text);
}
.wiki table tr:hover td {
  background: var(--cp-bg-hover);
}

.wiki blockquote {
  border-left: 3px solid var(--cp-cyan);
  background: var(--cp-bg-surface);
  color: var(--cp-text);
  padding: 8px 16px;
  margin: 1em 0;
}

.wiki mark, .wiki .highlight {
  background: rgba(252, 238, 9, 0.2);
  color: var(--cp-yellow);
}

.wiki pre {
  background: var(--cp-bg-surface);
  border: 1px solid var(--cp-border);
  color: var(--cp-text);
}

/* ── Syntax highlight ── */
.syntaxhl {
  background: var(--cp-bg-surface) !important;
  color: var(--cp-text);
}
.syntaxhl .normal {}
.syntaxhl .type { color: var(--cp-magenta); }
.syntaxhl .keyword, .syntaxhl .directive { color: var(--cp-magenta); font-weight: bold; }
.syntaxhl .string, .syntaxhl .char { color: var(--cp-green); }
.syntaxhl .comment, .syntaxhl .inline-delimiter { color: var(--cp-text-muted); font-style: italic; }
.syntaxhl .constant, .syntaxhl .integer, .syntaxhl .float, .syntaxhl .hex { color: var(--cp-orange); }
.syntaxhl .class { color: var(--cp-yellow); }
.syntaxhl .variable { color: var(--cp-cyan); }
.syntaxhl .symbol { color: var(--cp-magenta); }
.syntaxhl .tag { color: var(--cp-red); }
.syntaxhl .attribute-name { color: var(--cp-yellow); }
.syntaxhl .attribute-value { color: var(--cp-green); }

/* ── Toolbar ── */
.jstEditor {
  background: var(--cp-bg-dark);
}
.jstElements button {
  background: var(--cp-bg-surface) !important;
  border: 1px solid var(--cp-border) !important;
  color: var(--cp-text) !important;
  border-radius: 3px;
}
.jstElements button:hover {
  background: var(--cp-bg-hover) !important;
  border-color: var(--cp-cyan) !important;
  color: var(--cp-cyan) !important;
}


/* ── 14. Dropdowns & Autocomplete ── */
/* ===== inlined: specoborona-dropdowns.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
  Specoborona — Dropdowns, Autocomplete, Tribute
   Generated by build.mjs
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Dropdown menus ── */
.drdn-content {
  background: var(--cp-bg-panel) !important;
  border: 1px solid var(--cp-border) !important;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
  border-radius: 4px;
}
.drdn-items > a {
  color: var(--cp-text) !important;
}
.drdn-items > a:hover {
  background: var(--cp-bg-hover) !important;
  color: var(--cp-cyan) !important;
}
.drdn .drdn-trigger {
  color: var(--cp-text-muted) !important;
}
.drdn .drdn-trigger:hover {
  color: var(--cp-cyan) !important;
}

/* ── Project jump (#project-jump) ── */
#project-jump .drdn-content {
  background: var(--cp-bg-panel) !important;
}
#project-jump .drdn-items a {
  color: var(--cp-text) !important;
}
#project-jump .drdn-items a:hover {
  background: var(--cp-bg-hover) !important;
  color: var(--cp-cyan) !important;
}

/* ── Tribute (autocomplete) ── */
.tribute-container {
  background: var(--cp-bg-panel) !important;
  border: 1px solid var(--cp-cyan) !important;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5), var(--cp-glow-cyan);
  border-radius: 4px;
}
.tribute-container li {
  color: var(--cp-text) !important;
  padding: 4px 12px;
}
.tribute-container li.highlight,
.tribute-container li:hover {
  background: var(--cp-bg-hover) !important;
  color: var(--cp-cyan) !important;
}

/* ── Autocomplete (jQuery UI style) ── */
.ui-autocomplete {
  background: var(--cp-bg-panel) !important;
  border: 1px solid var(--cp-border) !important;
  border-radius: 4px;
}
.ui-autocomplete .ui-menu-item {
  color: var(--cp-text);
}
.ui-autocomplete .ui-menu-item.ui-state-focus,
.ui-autocomplete .ui-menu-item:hover {
  background: var(--cp-bg-hover) !important;
  color: var(--cp-cyan) !important;
}


/* ── 15. CKEditor ── */
/* ===== inlined: specoborona-ckeditor.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
  CKEditor — Specoborona Light Theme Overrides
  Works with the light editor shell and the branded theme palette
  The iframe content is styled via contents.css + editor.css in the plugin
  ═══════════════════════════════════════════════════════════════════════ */

/* ── CKEditor chrome / wrapper ── */
.cke {
  border: 1px solid var(--cp-border) !important;
  border-radius: 8px !important;
  box-shadow: 0 10px 28px rgba(34, 53, 111, 0.08) !important;
  overflow: hidden;
}

.cke_inner {
  background: var(--cp-bg-panel) !important;
}

/* ── Top toolbar area ── */
.cke_top {
  background: var(--cp-bg-panel) !important;
  background-image: none !important;
  border: none !important;
  border-bottom: 1px solid var(--cp-border-dark) !important;
  padding: 6px 8px !important;
  box-shadow: none !important;
}

/* ── Bottom bar (element path, resize handle) ── */
.cke_bottom {
  background: var(--cp-bg-dark) !important;
  background-image: none !important;
  border-top: 1px solid var(--cp-border-dark) !important;
  box-shadow: none !important;
}

/* Element path links */
.cke_path_item {
  color: var(--cp-text-muted) !important;
  text-shadow: none !important;
  opacity: 1;
}

a.cke_path_item:hover,
a.cke_path_item:focus,
a.cke_path_item:active {
  color: var(--cp-cyan) !important;
  opacity: 1;
  background: var(--cp-bg-surface) !important;
  box-shadow: none !important;
  text-shadow: none !important;
  border-radius: 4px;
}

/* ── Toolbar button groups ── */
.cke_toolgroup {
  background: var(--cp-bg-dark) !important;
  background-image: none !important;
  border: 1px solid var(--cp-border-dark) !important;
  border-radius: 6px !important;
  box-shadow: none !important;
}

/* ── Toolbar buttons (moono-dark already has light icons) ── */
a.cke_button {
  filter: none !important;
  transition: background 0.15s ease, border-color 0.15s ease;
  border-radius: 4px;
}

a.cke_button:hover,
a.cke_button:focus {
  filter: none !important;
  background: rgba(47, 63, 147, 0.08) !important;
  background-image: none !important;
  box-shadow: none !important;
}

a.cke_button.cke_button_on {
  filter: none !important;
  background: rgba(47, 63, 147, 0.12) !important;
  background-image: none !important;
  box-shadow: inset 0 0 0 1px rgba(47, 63, 147, 0.15) !important;
}

a.cke_button.cke_button_on:hover,
a.cke_button.cke_button_on:focus {
  background: rgba(47, 63, 147, 0.18) !important;
  background-image: none !important;
  box-shadow: inset 0 0 0 1px rgba(47, 63, 147, 0.2) !important;
}

a.cke_button.cke_button_disabled {
  opacity: 0.3;
}

/* Button label text */
.cke_button_label {
  color: var(--cp-text) !important;
  text-shadow: none !important;
}

/* Button arrow (color picker etc) */
.cke_button_arrow {
  border-top-color: var(--cp-text-muted) !important;
}

/* ── Toolbar separators ── */
.cke_toolbar_separator {
  background-color: rgba(35, 49, 74, 0.08) !important;
  box-shadow: none !important;
}

/* ── Combo buttons (Styles, Format, Font, Size) ── */
.cke_combo_button {
  background: var(--cp-bg-dark) !important;
  background-image: none !important;
  border: 1px solid var(--cp-border-dark) !important;
  border-radius: 6px !important;
  box-shadow: none !important;
  transition: border-color 0.15s ease, background 0.15s ease;
}

.cke_combo_off a.cke_combo_button:hover,
.cke_combo_off a.cke_combo_button:focus {
  background: var(--cp-bg-hover) !important;
  background-image: none !important;
  border-color: var(--cp-cyan) !important;
  box-shadow: 0 0 0 3px rgba(47, 63, 147, 0.10) !important;
}

.cke_combo_on a.cke_combo_button {
  background: rgba(47, 63, 147, 0.12) !important;
  background-image: none !important;
  border-color: var(--cp-cyan) !important;
  box-shadow: inset 0 0 0 1px rgba(47, 63, 147, 0.15) !important;
}

.cke_combo_text {
  color: var(--cp-text) !important;
  text-shadow: none !important;
}

.cke_combo_arrow {
  border-top-color: var(--cp-cyan) !important;
}

.cke_combo_label {
  display: none;
}

/* ── Toolbar break row ── */
.cke_toolbar_break {
  border-top: 1px solid var(--cp-border-dark);
}

/* ── Content area wrapper ── */
.cke_contents {
  border: none !important;
}

/* ── iframe — apply background to fallback ── */
.cke_wysiwyg_frame {
  background: var(--cp-bg-panel);
}

/* ── Resize handle ── */
.cke_resizer {
  border-color: transparent var(--cp-text-muted) transparent transparent !important;
  opacity: 0.4;
  transition: opacity 0.15s ease;
}

.cke_resizer:hover {
  opacity: 1;
  border-color: transparent var(--cp-cyan) transparent transparent !important;
}

/* ── Outer scrollbars (content area overflows) ── */
.cke_contents::-webkit-scrollbar,
.cke_inner::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

.cke_contents::-webkit-scrollbar-track,
.cke_inner::-webkit-scrollbar-track {
  background: var(--cp-bg-dark);
}

.cke_contents::-webkit-scrollbar-thumb,
.cke_inner::-webkit-scrollbar-thumb {
  background: var(--cp-border);
  border-radius: 8px;
}

.cke_contents::-webkit-scrollbar-thumb:hover,
.cke_inner::-webkit-scrollbar-thumb:hover {
  background: var(--cp-cyan-dim);
}

/* ── Panel frames (dropdown panels from combos) ── */
.cke_panel {
  background-color: var(--cp-bg-panel) !important;
  border: 1px solid var(--cp-border) !important;
  box-shadow: 0 16px 36px rgba(34, 53, 111, 0.12) !important;
}

.cke_panel_frame {
  background: var(--cp-bg-panel) !important;
}

.cke_panel_grouptitle {
  background: var(--cp-bg-dark) !important;
  background-image: none !important;
  color: var(--cp-cyan) !important;
  border-color: var(--cp-border-dark) !important;
  text-shadow: none !important;
  box-shadow: none !important;
}

.cke_panel_listItem a {
  color: var(--cp-text) !important;
  border-color: transparent !important;
}

.cke_panel_listItem a:hover,
.cke_panel_listItem a:focus,
.cke_panel_listItem a:active {
  background-color: rgba(47, 63, 147, 0.08) !important;
  border-color: rgba(47, 63, 147, 0.16) !important;
  box-shadow: none !important;
}

.cke_panel_listItem.cke_selected a {
  background-color: rgba(47, 63, 147, 0.12) !important;
  border-color: rgba(47, 63, 147, 0.2) !important;
  box-shadow: none !important;
}

/* Color picker panel */
.cke_colorblock {
  background: var(--cp-bg-panel) !important;
}

a.cke_colorbox:hover,
a.cke_colorbox:focus {
  border-color: var(--cp-cyan) !important;
  background-color: var(--cp-bg-surface) !important;
}

a.cke_colorauto,
a.cke_colormore {
  color: var(--cp-text) !important;
  border-color: transparent !important;
}

a.cke_colorauto:hover,
a.cke_colormore:hover {
  background-color: rgba(47, 63, 147, 0.08) !important;
  border-color: rgba(47, 63, 147, 0.16) !important;
}

/* ── Context menu ── */
.cke_menubutton:hover,
.cke_menubutton:focus,
.cke_menubutton:active {
  background-color: rgba(0, 240, 255, 0.1) !important;
}

.cke_menubutton_icon {
  background-color: var(--cp-bg-deep) !important;
}

.cke_menubutton:hover .cke_menubutton_icon,
.cke_menubutton:focus .cke_menubutton_icon {
  background-color: var(--cp-bg-surface) !important;
}

.cke_menubutton_label {
  color: var(--cp-text-secondary) !important;
}

.cke_menuseparator {
  background-color: var(--cp-bg-surface) !important;
}

/* ── Dialog windows ── */
.cke_dialog_background_cover {
  background-color: rgba(10, 10, 18, 0.8) !important;
}

.cke_dialog_body {
  background: var(--cp-bg-panel) !important;
  border: 1px solid var(--cp-bg-surface) !important;
  color: var(--cp-text-secondary) !important;
}

.cke_dialog_title {
  background: var(--cp-bg-deep) !important;
  background-image: none !important;
  color: var(--cp-cyan) !important;
  border-bottom: 1px solid var(--cp-bg-surface) !important;
  text-shadow: none !important;
  box-shadow: none !important;
}

.cke_dialog_footer {
  background: var(--cp-bg-deep) !important;
  background-image: none !important;
  border-top: 1px solid var(--cp-bg-surface) !important;
  box-shadow: none !important;
}

.cke_dialog_contents {
  background: var(--cp-bg-panel) !important;
  color: var(--cp-text-secondary) !important;
}

.cke_dialog_tab {
  background: var(--cp-bg-surface) !important;
  background-image: none !important;
  color: var(--cp-text-muted) !important;
  border: 1px solid var(--cp-bg-surface) !important;
  box-shadow: none !important;
}

.cke_dialog_tab:hover {
  background: var(--cp-bg-hover) !important;
  color: var(--cp-text-white) !important;
}

.cke_dialog_tab_selected {
  background: var(--cp-bg-panel) !important;
  color: var(--cp-cyan) !important;
  border-bottom-color: var(--cp-bg-panel) !important;
}

/* Dialog inputs */
.cke_dialog input[type="text"],
.cke_dialog textarea,
.cke_dialog select {
  background: var(--cp-bg-dark) !important;
  color: var(--cp-text-white) !important;
  border: 1px solid var(--cp-bg-surface) !important;
  border-radius: 3px !important;
}

.cke_dialog input[type="text"]:focus,
.cke_dialog textarea:focus {
  border-color: var(--cp-cyan) !important;
  box-shadow: 0 0 4px rgba(0, 240, 255, 0.2) !important;
}

.cke_dialog label {
  color: var(--cp-text-secondary) !important;
}

/* Dialog buttons */
a.cke_dialog_ui_button {
  background: var(--cp-bg-surface) !important;
  background-image: none !important;
  color: var(--cp-text-secondary) !important;
  border: 1px solid rgba(0, 240, 255, 0.15) !important;
  border-radius: 4px !important;
  box-shadow: none !important;
  text-shadow: none !important;
}

a.cke_dialog_ui_button:hover {
  background: rgba(0, 240, 255, 0.12) !important;
  border-color: var(--cp-cyan) !important;
  color: var(--cp-text-white) !important;
}

a.cke_dialog_ui_button_ok {
  background: rgba(0, 240, 255, 0.15) !important;
  color: var(--cp-cyan) !important;
  border-color: var(--cp-cyan) !important;
}

a.cke_dialog_ui_button_ok:hover {
  background: rgba(0, 240, 255, 0.25) !important;
}

/* ── Source editor (when switching to Source mode) ── */
.cke_source {
  background-color: var(--cp-bg-dark) !important;
  color: var(--cp-green) !important;
  font-family: var(--cp-font-mono), 'Courier New', Monospace !important;
}

/* ── Notification bar ── */
.cke_notifications_area .cke_notification {
  background: var(--cp-bg-panel) !important;
  border: 1px solid var(--cp-cyan) !important;
  color: var(--cp-text-white) !important;
}

/* ── Toolbox collapser ── */
.cke_toolbox_collapser {
  background: var(--cp-bg-surface) !important;
  background-image: none !important;
  border-color: rgba(0, 240, 255, 0.1) !important;
  box-shadow: none !important;
}

.cke_toolbox_collapser .cke_arrow {
  border-bottom-color: var(--cp-cyan) !important;
}

.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow {
  border-top-color: var(--cp-cyan) !important;
  border-bottom-color: transparent !important;
}

/* ── Private notes checkbox label near CKEditor ── */
.cke + label,
.cke ~ label {
  color: var(--cp-text-secondary);
}


/* ── 16. SVG Icons ── */
/* ===== inlined: specoborona-icons.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
  Specoborona — SVG Icons recolor
   Generated by build.mjs
   ═══════════════════════════════════════════════════════════════════════ */

/* Redmine 6.x uses inline SVG icons — recolor strokes & fills */
svg.s18, svg.s16, svg.s20, svg.icon-svg {
  stroke: var(--cp-text-muted) !important;
}
a:hover svg.s18, a:hover svg.s16, a:hover svg.s20,
a:hover svg.icon-svg {
  stroke: var(--cp-cyan) !important;
}

/* Sidebar icon dim */
#sidebar a.icon-only svg {
  opacity: 0.4;
  stroke: var(--cp-text-muted) !important;
}
#sidebar a.icon-only:hover svg {
  opacity: 1;
  stroke: var(--cp-cyan) !important;
}

/* Selected tab active icon */
#main-menu li a.selected svg {
  stroke: var(--cp-cyan) !important;
}


/* ── 17. Special Effects & Polish ── */
/* ===== inlined: specoborona-effects.css ===== */
/* ═══════════════════════════════════════════════════════════════════════
   Specoborona — Special Effects & Polish
   Generated by build.mjs
   ═══════════════════════════════════════════════════════════════════════ */

#content .box,
#sidebar,
fieldset,
div.issue,
.mypage-box,
table.list,
table.filecontent {
  box-shadow: 0 10px 28px rgba(34, 53, 111, 0.05);
}

/* ── Focus ring ── */
*:focus-visible {
  outline: 2px solid var(--cp-cyan) !important;
  outline-offset: 2px;
  box-shadow: var(--cp-glow-cyan);
}

/* ── Scrollbar styling (Webkit) ── */
::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
::-webkit-scrollbar-track {
  background: var(--cp-bg-dark);
}
::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, var(--cp-cyan), var(--cp-blue));
  border-radius: 12px;
  border: 2px solid var(--cp-bg-dark);
}
::-webkit-scrollbar-thumb:hover {
  background: linear-gradient(180deg, var(--cp-magenta), var(--cp-cyan));
}
::-webkit-scrollbar-corner {
  background: var(--cp-bg-dark);
}

/* ── Loading / ajax indicator ── */
#ajax-indicator {
  background: var(--cp-bg-panel) !important;
  border: 1px solid var(--cp-cyan) !important;
  color: var(--cp-cyan) !important;
  box-shadow: 0 12px 30px rgba(34, 53, 111, 0.10);
}

/* ── Modal / dialog ── */
.ui-dialog {
  background: var(--cp-bg-panel) !important;
  border: 1px solid var(--cp-border) !important;
  box-shadow: 0 18px 48px rgba(34, 53, 111, 0.12);
}
.ui-dialog .ui-dialog-titlebar {
  background: var(--cp-bg-surface) !important;
  border-bottom: 1px solid var(--cp-border) !important;
  color: var(--cp-cyan) !important;
}
.ui-dialog .ui-dialog-content {
  background: var(--cp-bg-panel) !important;
  color: var(--cp-text) !important;
}

/* ── Selection highlight in issues list ── */
tr.context-menu-selection td {
  background: var(--cp-bg-active) !important;
  border-color: var(--cp-cyan) !important;
}

/* ── Contextual actions ── */
.contextual {
  color: var(--cp-text-muted);
}
.contextual a {
  color: var(--cp-text-muted) !important;
}
.contextual a:hover {
  color: var(--cp-cyan) !important;
}

/* ── "No data" styling ── */
.nodata {
  color: var(--cp-text-muted);
  font-style: italic;
}

/* ── Tabs ── */
.tabs ul {
  border-bottom: 1px solid var(--cp-border);
}
.tabs ul li a {
  background: var(--cp-bg-surface);
  color: var(--cp-text-muted) !important;
  border: 1px solid var(--cp-border);
  border-bottom: none;
  transition: all 0.2s;
}
.tabs ul li a:hover {
  color: var(--cp-cyan) !important;
  background: var(--cp-bg-hover);
}
.tabs ul li a.selected {
  color: var(--cp-cyan) !important;
  background: var(--cp-bg-dark);
  border-bottom: 2px solid var(--cp-cyan);
  font-weight: 600;
}

/* ── Journal / history entries ── */
.journal {
  border-bottom: 1px solid var(--cp-border-dark);
}
.journal .wiki {
  color: var(--cp-text);
}
.journal h4 {
  color: var(--cp-text-bright) !important;
}
.journal .details {
  color: var(--cp-text-muted);
}
.journal .details .old-value {
  text-decoration: line-through;
  color: var(--cp-red-dim);
}
.journal .details .new-value {
  color: var(--cp-green);
}

/* ── Attachments ── */
.attachments {
  color: var(--cp-text-muted);
}
.attachments a {
  color: var(--cp-cyan) !important;
}

/* ── Diff inline ── */
.text-diff {
  background: var(--cp-bg-dark);
}

/* ── Issue detail ── */
div.issue div.subject h3 {
  color: var(--cp-text-bright) !important;
}
div.issue .next-prev-links {
  color: var(--cp-text-muted);
}
div.issue .attributes .attribute .label {
  color: var(--cp-text-muted);
}
div.issue .attributes .attribute .value {
  color: var(--cp-text);
}
