/* ZeroAdmin Redmine Theme
 * Light-mode by default; dark-mode follows OS via prefers-color-scheme.
 */

@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&family=IBM+Plex+Mono:wght@400;500;600&display=swap');
@import url("/assets/application-6dc0ec44.css");

/* ================================================================
   DESIGN TOKENS — LIGHT (default)
   ================================================================ */
:root {
  --za-bg:              #EDF1F4;
  --za-surface:         #FFFFFF;
  --za-surface-2:       #F5F8FA;
  --za-surface-3:       #E7EDF2;
  --za-border:          #DCE3E9;
  --za-border-strong:   #C7D0D8;
  --za-text:            #2A2F34;
  --za-text-muted:      #697079;
  --za-blue:            #1F8FCB;
  --za-blue-bright:     #6CC0E4;
  --za-blue-soft:       rgba(31, 143, 203, 0.10);
  --za-on-blue:         #FFFFFF;
  --za-accent:          #6CC0E4;

  --za-hdr-bg:          #FFFFFF;
  --za-hdr-bg2:         #F5F8FA;
  --za-hdr-border:      #DCE3E9;
  --za-hdr-text:        #3A424A;
  --za-hdr-text-strong: #1B2024;
  --za-hdr-muted:       #7A828A;
  --za-hdr-divider:     #E0E6EB;
  --za-hdr-input-bg:    #FFFFFF;
  --za-hdr-input-bdr:   #C7D0D8;

  --za-shadow:          0 1px 2px rgba(20,30,40,.06), 0 2px 10px rgba(20,30,40,.05);
  --za-radius:          8px;

  --fonts-main: 'IBM Plex Sans', system-ui, -apple-system, sans-serif;
  --fonts-mono: 'IBM Plex Mono', Consolas, 'Liberation Mono', monospace;
}

/* ================================================================
   DARK MODE TOKENS — follows OS prefers-color-scheme
   ================================================================ */
@media (prefers-color-scheme: dark) {
  :root {
    --za-bg:              #15181B;
    --za-surface:         #1E2226;
    --za-surface-2:       #23282D;
    --za-surface-3:       #2A3036;
    --za-border:          #31373E;
    --za-border-strong:   #3C434B;
    --za-text:            #E6EAED;
    --za-text-muted:      #98A2AB;
    --za-blue:            #6CC0E4;
    --za-blue-bright:     #6CC0E4;
    --za-blue-soft:       rgba(108, 192, 228, 0.14);
    --za-on-blue:         #0E2A35;

    --za-hdr-bg:          #23272B;
    --za-hdr-bg2:         #1B1E22;
    --za-hdr-border:      #0E1012;
    --za-hdr-text:        #C9CFD5;
    --za-hdr-text-strong: #FFFFFF;
    --za-hdr-muted:       #868D94;
    --za-hdr-divider:     rgba(255,255,255,.13);
    --za-hdr-input-bg:    rgba(255,255,255,.07);
    --za-hdr-input-bdr:   rgba(255,255,255,.13);

    --za-shadow:          0 1px 2px rgba(0,0,0,.45), 0 6px 18px rgba(0,0,0,.40);
  }

  #header::before {
    background-image: url("/themes/zeroadmin/images/logo-dark.png");
  }
}

/* ================================================================
   BASE
   ================================================================ */
html, body {
  font-family: var(--fonts-main);
  background: var(--za-bg);
  color: var(--za-text);
}

pre, code, kbd, samp,
td.id, th.id, .id a,
td.tracker { font-family: var(--fonts-mono); }

::selection { background: rgba(108, 192, 228, .32); }

a               { color: var(--za-blue); }
a:hover         { color: #1677a8; text-decoration: underline; }
#content h1, #content h2, #content h3,
#content h4, #content h5, #content h6,
h2, h3          { color: var(--za-text); }
h4              { border-bottom-color: var(--za-border); color: var(--za-text); }

/* ================================================================
   TOP UTILITY BAR  (#top-menu)
   DOM order: #account | #loggedas | ul(nav links)
   Base CSS uses floats; we use flex with order to keep nav left, user info right.
   ================================================================ */
#top-menu {
  background:    var(--za-hdr-bg2);
  border-bottom: 1px solid var(--za-hdr-border);
  color:         var(--za-hdr-text);
  font-size:     12.5px;
  height:        34px;
  padding:       0 22px;
  box-sizing:    border-box;
  display:       flex;
  align-items:   center;
}

/* Nav links (Home / My page / Projects / Help) — left side */
#top-menu > ul {
  order:       0;
  display:     flex;
  align-items: center;
  gap:         20px;    /* spacing between li flex items */
  margin: 0; padding: 0;
}

#top-menu li {
  float:      none;
  display:    flex;
  align-items: center;
  list-style: none;
  margin:     0; padding: 0;
}

#top-menu a {
  color:       var(--za-hdr-text);
  font-weight: 500;
  margin-right: 0;      /* gap on ul handles spacing */
  text-decoration: none;
  white-space: nowrap;
}
#top-menu a:hover                { color: var(--za-hdr-text-strong); text-decoration: none; }
#top-menu a.projects             { color: var(--za-blue); font-weight: 600; }
#top-menu a.administration       { color: var(--za-hdr-text); }
#top-menu a.home,
#top-menu a.my-page,
#top-menu a.projects,
#top-menu a.administration,
#top-menu a.help                 { background-image: none; padding-left: 0; }

/* "Logged in as X" — right side, before account actions; margin-left:auto pushes it right */
#top-menu #loggedas {
  order:        1;
  float:        none;
  margin-left:  auto;
  margin-right: 16px;
  color:        var(--za-hdr-muted);
  font-size:    12px;
  white-space:  nowrap;
}
#top-menu #loggedas a { color: var(--za-hdr-text); font-weight: 600; margin-right: 0; }

/* Sign in / Register / My account / Sign out — far right */
#account {
  order:       2;
  float:       none;
  margin-left: auto;    /* always push to the far right */
}
#account ul {
  display:     flex;
  align-items: center;
  gap:         16px;
  margin: 0; padding: 0;
}
/* When logged in, #loggedas pushes itself right and #account follows */
#top-menu #loggedas ~ #account,
#top-menu #loggedas + #account { margin-left: 0; }

/* ================================================================
   PROJECT BANNER  (#header)
   Design: white bar — [logo] [project name] [search right-aligned]
   #main-menu is position:absolute inside here (pinned to bottom)
   ================================================================ */
#header {
  background:    var(--za-hdr-bg);
  border-bottom: 1px solid var(--za-hdr-border);
  color:         var(--za-hdr-text-strong);
  margin:        0;
  padding:       0 22px;
  position:      relative;
  min-height:    auto;
  display:       flex;
  flex-direction: row;
  align-items:   center;
  gap:           16px;
  /* make room for the 44px tab bar pinned absolutely at bottom */
  padding-bottom: 44px;
  padding-top:   16px;
}

/* Logo — first flex item via ::before */
#header::before {
  content:         '';
  display:         block;
  flex:            none;
  order:           0;
  width:           165px;
  height:          51px;
  background:      url("/themes/zeroadmin/images/logo.png") no-repeat left center;
  background-size: auto 51px;
}

/* Thin vertical divider between logo and h1 */
#header .logo-divider-hack,
#header::after {
  display: none;
}

/* Project / site title — hidden on the home page (logo already identifies the app).
   On a project page the breadcrumb identifier is useful so we show it small. */
#header h1 {
  flex:          1;
  order:         1;
  font-size:     0;       /* hides "Redmine" / app title text while keeping flex space */
  margin:        0;
  padding:       0;
  overflow:      hidden;
}

/* Inside a project, show the project identifier in mono below the logo */
#header h1 .breadcrumbs {
  display:     block;
  font-size:   11px;
  font-weight: 500;
  color:       var(--za-hdr-muted);
  font-family: var(--fonts-mono);
  line-height: 1;
}

/* Project name (first line of h1 when in a project) */
#header h1 a {
  display:       block;
  font-size:     17px;
  font-weight:   600;
  color:         var(--za-hdr-text-strong);
  text-decoration: none;
  line-height:   1.2;
  white-space:   nowrap;
  overflow:      hidden;
  text-overflow: ellipsis;
}
#header h1 a:hover { color: var(--za-blue); }

/* Search — last flex item (right-aligned) */
#quick-search {
  float:  none;
  order:  2;
  flex:   none;
  display: flex;
  align-items: center;
  gap:    6px;
}

/* Hide the "Search:" label text */
#quick-search label { display: none; }

#quick-search #q {
  background:    var(--za-hdr-input-bg);
  border:        1px solid var(--za-hdr-input-bdr);
  border-radius: var(--za-radius);
  height:        34px;
  padding:       0 12px;
  color:         var(--za-hdr-text);
  font-size:     13px;
  font-family:   var(--fonts-main);
  width:         190px;
  box-sizing:    border-box;
}

#quick-search #q:focus {
  outline:      none;
  border-color: var(--za-blue);
  box-shadow:   0 0 0 3px var(--za-blue-soft);
}

#quick-search #project-jump {
  height:        34px;
  border:        1px solid var(--za-hdr-input-bdr);
  border-radius: var(--za-radius);
  background:    var(--za-hdr-input-bg);
  color:         var(--za-hdr-text);
  font-size:     13px;
  font-family:   var(--fonts-main);
  padding:       0 8px;
}

/* ================================================================
   NAVIGATION TABS  (#main-menu)
   Absolute-positioned at bottom:0 of #header — styled as tab row
   ================================================================ */
#main-menu {
  position:   absolute;
  bottom:     0;
  left:       0;
  width:      100%;
  margin:     0;
  background: var(--za-hdr-bg);
  border-top: 1px solid var(--za-hdr-border);
  box-sizing: border-box;
  height:     44px;
  overflow-x: auto;
}

#main-menu ul {
  display:    flex;
  align-items: stretch;
  height:     44px;
  padding:    0 8px;
  margin:     0;
  width:      auto;
  white-space: nowrap;
}

#main-menu li {
  float:      none;
  display:    inline-flex;
  align-items: stretch;
  margin:     0; padding: 0;
}

#main-menu li a {
  display:        flex;
  align-items:    center;
  padding:        0 16px;
  height:         44px;
  font-size:      13.5px;
  font-weight:    500;
  color:          var(--za-hdr-muted);
  text-decoration: none;
  border-radius:  0;
  border-bottom:  2px solid transparent;
  border-top:     none;
  white-space:    nowrap;
  background:     transparent;
  box-sizing:     border-box;
  margin-top:     -1px;               /* overlap the border-top of the menu */
}

#main-menu li a:hover {
  color:      var(--za-hdr-text-strong);
  background: transparent;
}

#main-menu li a.selected,
#main-menu li a.selected:hover {
  color:        var(--za-blue-bright);
  font-weight:  600;
  background:   transparent;
  border-bottom: 2px solid var(--za-blue-bright);
}

#main-menu li a.new-object {
  background: transparent;
  color:      var(--za-blue);
}

/* Drop-down children */
#main-menu .menu-children {
  display:       none;
  position:      absolute;
  top:           44px;
  background:    var(--za-surface);
  border:        1px solid var(--za-border);
  border-radius: 0 0 var(--za-radius) var(--za-radius);
  box-shadow:    var(--za-shadow);
  z-index:       45;
  min-width:     160px;
}

#main-menu li:hover ul.menu-children,
#main-menu li ul.menu-children.visible { display: block; }

#main-menu .menu-children li {
  float:   none;
  clear:   both;
  width:   100%;
  display: block;
}

#main-menu .menu-children li a {
  color:       var(--za-text);
  background:  transparent;
  border:      none;
  height:      auto;
  padding:     9px 16px;
  font-size:   13px;
  font-weight: 400;
}

#main-menu .menu-children li a:hover {
  color:      var(--za-blue);
  background: var(--za-surface-2);
}

#main-menu .tabs-buttons {
  background: transparent;
  border-bottom-color: transparent;
}

/* ================================================================
   WRAPPER / MAIN LAYOUT
   ================================================================ */
#wrapper { background: var(--za-bg); }

#main {
  flex-grow:   2;
  display:     flex;
  flex-direction: row-reverse;
  background:  var(--za-bg);
  padding:     20px 20px 40px;
  box-sizing:  border-box;
  gap:         20px;
}

/* ================================================================
   CONTENT AREA
   ================================================================ */
#content {
  flex-grow:    1;
  background:   var(--za-surface);
  border:       1px solid var(--za-border);
  border-radius: var(--za-radius);
  box-shadow:   var(--za-shadow);
  padding:      22px 24px;
  overflow-x:   auto;
  margin:       0;
}

/* ================================================================
   SIDEBAR
   ================================================================ */
#sidebar {
  background:   var(--za-surface);
  border:       1px solid var(--za-border);
  border-radius: var(--za-radius);
  box-shadow:   var(--za-shadow);
  font-size:    13px;
  padding:      18px 20px;
  align-self:   flex-start;
  flex-shrink:  0;
}

#sidebar h3 {
  font-size:      11px;
  font-weight:    700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color:          var(--za-text-muted);
  margin-top:     14px;
}
#sidebar h3:first-child { margin-top: 0; }
#sidebar hr { background: var(--za-border); height: 1px; border: 0; }

#sidebar a              { color: var(--za-text); font-weight: 400; }
#sidebar a:hover        { color: var(--za-blue); text-decoration: none; }
#sidebar a.selected     { background: var(--za-blue-soft); color: var(--za-blue); border-radius: 4px; padding: 2px 5px; }
#sidebar a.selected:hover { text-decoration: none; }
#sidebar a.selected svg.icon-svg { stroke: var(--za-blue) !important; }
#sidebar .query.default { font-weight: 600; }

/* ================================================================
   FOOTER
   ================================================================ */
#footer {
  background:    var(--za-surface-2);
  border-top:    1px solid var(--za-border);
  color:         var(--za-text-muted);
  font-size:     12px;
  padding:       10px 22px;
  text-align:    center;
}
#footer a       { color: var(--za-text-muted); font-weight: 400; }
#footer a:hover { color: var(--za-blue); }

/* ================================================================
   LOGIN FORM
   ================================================================ */
#login-form {
  margin:        5em auto 2em;
  width:         400px;
  background:    var(--za-surface);
  border:        1px solid var(--za-border);
  border-radius: calc(var(--za-radius) + 4px);
  box-shadow:    var(--za-shadow);
  padding:       36px 38px;
}

#login-form h3 {
  font-size:   19px;
  font-weight: 600;
  color:       var(--za-text);
  text-align:  left;
  margin-bottom: 4px;
}

#login-form label {
  font-size:   12.5px;
  font-weight: 600;
  color:       var(--za-text);
}
#login-form label[for=autologin] { font-weight: 400; }

#login-form input[type=text],
#login-form input[type=password] {
  background:   var(--za-surface-2);
  border-color: var(--za-border-strong);
  height:       40px;
  font-size:    14px;
}

#login-form input[type=submit] {
  background:   var(--za-blue);
  color:        var(--za-on-blue);
  border:       none;
  height:       42px;
  font-size:    14px;
  font-weight:  600;
  border-radius: var(--za-radius);
  cursor:       pointer;
}
#login-form input[type=submit]:hover { filter: brightness(1.06); }

#login-form a.lost_password { color: var(--za-blue); font-weight: 400; }

/* ================================================================
   FORM ELEMENTS (global)
   ================================================================ */
input[type="text"], input[type="password"], input[type="email"],
input[type="number"], input[type="date"], input[type="url"],
input[type="search"], select, textarea {
  background:    var(--za-surface-2);
  border:        1px solid var(--za-border-strong);
  border-radius: var(--za-radius);
  color:         var(--za-text);
  font-family:   var(--fonts-main);
}

input[type="text"]:focus, input[type="password"]:focus,
input[type="email"]:focus, input[type="number"]:focus,
input[type="date"]:focus, input[type="url"]:focus,
input[type="search"]:focus, select:focus, textarea:focus {
  border-color: var(--za-blue);
  box-shadow:   0 0 0 3px var(--za-blue-soft);
  outline:      none;
}

input:disabled, select:disabled, textarea:disabled {
  background: var(--za-surface-3);
  color:      var(--za-text-muted);
}

input[type="submit"], button[type="submit"] {
  background:    var(--za-blue);
  color:         var(--za-on-blue);
  border:        none;
  border-radius: var(--za-radius);
  font-family:   var(--fonts-main);
  font-weight:   600;
  cursor:        pointer;
  height:        36px;
  padding:       0 16px;
}
input[type="submit"]:hover,
button[type="submit"]:hover { filter: brightness(1.06); }

input[type="checkbox"]  { accent-color: var(--za-blue); }
input[type="radio"]     { accent-color: var(--za-blue); }

fieldset {
  border:        1px solid var(--za-border);
  border-radius: var(--za-radius);
}
fieldset.collapsible { border-width: 1px 0 0 0; }

/* ================================================================
   TABLES
   ================================================================ */
table.list, .table-list {
  background:    var(--za-surface);
  border:        1px solid var(--za-border);
  border-radius: var(--za-radius);
  box-shadow:    var(--za-shadow);
  border-collapse: separate;
  border-spacing: 0;
  overflow:      hidden;
}

table.list th, .table-list-header {
  background:    var(--za-surface-2);
  color:         var(--za-text-muted);
  font-size:     11.5px;
  font-weight:   600;
  letter-spacing: .03em;
  text-transform: uppercase;
  border-bottom: 2px solid var(--za-border);
  padding:       11px 18px;
  white-space:   nowrap;
}

table.list td {
  border-top:  1px solid var(--za-border);
  color:       var(--za-text);
  padding:     11px 18px;
  text-align:  center;
  vertical-align: middle;
}

table.list td.name, table.list td.description, table.list td.subject,
table.list td.parent-subject, table.list td.comments,
table.list td.roles, table.list td.text { text-align: left; }

table.list tbody tr:hover td { background: var(--za-surface-2); }

table.list td.id, table.list th.id {
  font-family: var(--fonts-mono);
  font-size:   12.5px;
  color:       var(--za-blue);
  font-weight: 500;
}

table.list th a { color: var(--za-text-muted); }
table.list th a:hover { color: var(--za-blue); }
table.list th.sort.asc a, table.list th.sort.desc a { color: var(--za-blue); }

/* ================================================================
   ISSUE STATUS BADGES (inline spans)
   ================================================================ */
.status-badge, span.status {
  display:        inline-flex;
  align-items:    center;
  padding:        3px 10px;
  border-radius:  999px;
  font-size:      11.5px;
  font-weight:    600;
}

/* Colour mappings for common Redmine statuses */
td .status-new     { background: rgba(140,150,160,.18); color: var(--za-text-muted); }
td .status-ip      { background: var(--za-blue-soft);   color: var(--za-blue); }
td .status-resolved{ background: rgba(34,160,90,.16);   color: #22A05A; }
td .status-closed  { background: rgba(140,150,160,.14); color: var(--za-text-muted); }

/* Priority colours */
.priority-urgent, .priority-immediate { color: #E5484D; font-weight: 600; }
.priority-high                        { color: #E08A1E; font-weight: 600; }
.priority-normal                      { color: var(--za-text); }
.priority-low                         { color: var(--za-text-muted); }

/* Closed issue link */
a.issue.closed, a.issue.closed:link,
a.issue.closed:visited { color: var(--za-text-muted); text-decoration: line-through; }

/* ================================================================
   FLASH / NOTICE / ERROR MESSAGES
   ================================================================ */
div.flash, p.flash,
#flash_notice, div.flash.notice, .flash-message.notice {
  background:    rgba(34,160,90,.10);
  border:        1px solid rgba(34,160,90,.30);
  color:         #1A7A47;
  border-radius: var(--za-radius);
  padding:       12px 16px;
  font-size:     13.5px;
  margin-bottom: 16px;
}

#flash_error, div.flash.error, .flash-message.error {
  background:    rgba(229,72,77,.10);
  border:        1px solid rgba(229,72,77,.30);
  color:         #C23B40;
  border-radius: var(--za-radius);
  padding:       12px 16px;
  font-size:     13.5px;
  margin-bottom: 16px;
}

#flash_warning, div.flash.warning, .flash-message.warning {
  background:    rgba(224,138,30,.10);
  border:        1px solid rgba(224,138,30,.30);
  color:         #9A5F10;
  border-radius: var(--za-radius);
  padding:       12px 16px;
  font-size:     13.5px;
  margin-bottom: 16px;
}

div.flash ul { margin: 6px 0 0 18px; }

/* ================================================================
   CONTEXTUAL ACTIONS
   ================================================================ */
.contextual a, .contextual button {
  color:     var(--za-blue);
  font-size: 13px;
}
.contextual input, .contextual select { font-size: 0.9em; }

/* ================================================================
   PAGINATION
   ================================================================ */
.pagination {
  font-size: 13px;
  color:     var(--za-text-muted);
}
.pagination a {
  color:         var(--za-blue);
  border:        1px solid var(--za-border);
  border-radius: 4px;
  padding:       2px 8px;
  text-decoration: none;
  font-weight:   500;
}
.pagination a:hover {
  background:  var(--za-blue-soft);
  border-color: var(--za-blue);
}
.pagination span.current {
  background:   var(--za-blue);
  color:        var(--za-on-blue);
  border-radius: 4px;
  padding:      2px 8px;
  font-weight:  600;
}

/* ================================================================
   BOX / CARD
   ================================================================ */
.box {
  background:    var(--za-surface);
  border:        1px solid var(--za-border);
  border-radius: var(--za-radius);
  box-shadow:    var(--za-shadow);
  padding:       16px;
}

/* ================================================================
   JOURNAL / HISTORY
   ================================================================ */
div.journal {
  border:        1px solid var(--za-border);
  border-radius: var(--za-radius);
  background:    var(--za-surface);
  padding:       14px 18px;
  margin-bottom: 12px;
}
div.journal .wiki { color: var(--za-text); }

/* ================================================================
   DIFF / CODE BLOCKS
   ================================================================ */
.diff_in  { background: rgba(34,160,90,.12); }
.diff_out { background: rgba(229,72,77,.12); }
pre, code {
  background:    var(--za-surface-2);
  border:        1px solid var(--za-border);
  border-radius: 4px;
  color:         var(--za-text);
  font-family:   var(--fonts-mono);
  font-size:     12.5px;
}
code { padding: 1px 5px; }
pre  { padding: 12px 14px; overflow-x: auto; }

/* ================================================================
   ADMIN MENU
   ================================================================ */
#admin-menu a { color: var(--za-text); font-weight: 500; }
#admin-menu a:hover { color: var(--za-blue); text-decoration: none; }

/* ================================================================
   TABS (sub-tabs inside content, not main nav)
   ================================================================ */
div.tabs ul {
  border-bottom: 2px solid var(--za-border);
  margin-bottom: 12px;
}
div.tabs ul li a {
  color:        var(--za-text-muted);
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  padding:      6px 14px;
  font-weight:  500;
  font-size:    13.5px;
  text-decoration: none;
}
div.tabs ul li a:hover { color: var(--za-blue); }
div.tabs ul li a.selected {
  color:        var(--za-blue-bright);
  font-weight:  600;
  border-bottom: 2px solid var(--za-blue-bright);
}

/* ================================================================
   PROGRESSIVE BARS (tracker stats)
   ================================================================ */
.progress-bar {
  background:    var(--za-surface-3);
  border-radius: 999px;
  height:        8px;
  overflow:      hidden;
}
.progress-bar-done {
  background:    var(--za-blue);
  border-radius: 999px;
  height:        100%;
}

/* ================================================================
   AVATARS / USER ICONS (initials fallback)
   ================================================================ */
.gravatar {
  border-radius: 50%;
  border:        1px solid var(--za-border);
}

/* ================================================================
   MISC FIXES
   ================================================================ */
#query_form_content            { font-size: 90%; }
#sidebar-switch-button         { border-color: var(--za-border); background: var(--za-surface-2); }
#sidebar-switch-button:hover   { background: var(--za-surface-3); }

/* remove old blue gradient from modal/overlay headers */
div.modal-backdrop             { background: rgba(20,30,40,.45); }

/* Responsive: on narrow screens sidebar collapses into #main layout */
@media screen and (max-width: 1089px) {
  #main { padding: 16px 14px 40px; gap: 16px; }
}
