@import url("/assets/application-c183e617.css");
@import url("/assets/themes/SMTwin/harbor-blue-6498a8d3.css");
@import url("/assets/themes/SMTwin/fonts-388cf16a.css");

/* SMTwin Harbor · Redmine 7 · 21st.dev Harbor Blue palette.
   Native Redmine markup, menus, forms and plugin assets remain authoritative. */
:root {
  --fonts-main: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --color-top-menu-background: #101f3c;
  --color-header-background: #ffffff;
  --color-current-marker: var(--primary);
  --sm-canvas: #f3f6fb;
  --sm-text: #24334b;
  --sm-line: #dce3ef;
  --sm-shadow: 0 2px 4px #142a4b04, 0 12px 28px #142a4b06;
  --sm-nav-width: 214px;
}
html { background: var(--sm-canvas); }
body { color: var(--sm-text); font-size: 13px; line-height: 1.55; background: var(--sm-canvas); -webkit-font-smoothing: antialiased; }
body, input, button, select, textarea { font-family: var(--fonts-main); }
#wrapper { background: var(--sm-canvas); overflow: visible; }
* { scrollbar-color: #b7c6dc transparent; scrollbar-width: thin; }
::selection { background: #dce6f9; color: #133674; }
a, a:link, a:visited { color: var(--primary); text-decoration: none; }
a:hover { color: #102f6b; text-decoration: underline; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible,
textarea:focus-visible, [tabindex]:not([tabindex="-1"]):focus-visible { outline: 3px solid #3866b8; outline-offset: 3px; }
h1, h2, h3, h4, h5, h6 { color: var(--foreground); font-family: var(--fonts-main); }
#content > h2, #content > .contextual + h2 { font-size: 24px; font-weight: 700; letter-spacing: -.65px; margin-bottom: 22px; padding-bottom: 0; }
#content h3 { color: var(--foreground); font-size: 15px; font-weight: 650; }
.subtitle, .author, .other-formats, p.breadcrumb, .nodata { color: #53647d; }
.sm-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.sm-skip { position: fixed; top: 8px; left: 12px; transform: translateY(-150%); z-index: 11000; background: white; color: var(--primary); border-radius: 8px; padding: 10px 16px; box-shadow: var(--sm-shadow); }
.sm-skip:focus { transform: translateY(0); }

/* Global navigation and project context */
nav#top-menu { min-height: 38px; padding: 0 24px; font-size: 11px; letter-spacing: .05px; background: #101f3c; }
.top-menu__links a, .top-menu__links a:link, .top-menu__links a:visited { color: #dce6f9; padding: 10px 11px; }
.top-menu__links a:hover { background: #ffffff12; color: white; }
.top-menu__links a.selected { background: #ffffff12; color: #fff; }
#account .dropdown-trigger { min-height: 30px; border-radius: 7px; }
#account .dropdown-content { border: 1px solid var(--border); border-radius: 10px; box-shadow: 0 12px 32px #10234824; color: var(--foreground); }
#account .dropdown-content a { color: var(--sm-text); }
#header { box-sizing: border-box; background: white; color: var(--foreground); min-height: 88px; padding: 23px 26px; border-bottom: 1px solid var(--sm-line); }
#header h1 { padding: 0; margin: 1px 0; font-size: 23px; font-weight: 720; line-height: 1.4; letter-spacing: -.7px; color: #112b54; max-width: 48%; }
#header h1 a { color: #112b54; }
#header h1 .breadcrumbs { font-size: 12px; letter-spacing: 0; font-weight: 500; color: #52647e; }
#header a, #header a:link, #header a:visited { color: var(--primary); }
#quick-search { margin: 3px 0 0; display: flex; align-items: center; gap: 12px; }
#quick-search form { display: flex; align-items: center; gap: 8px; }
#quick-search label { color: #52647e; font-size: 11px; font-weight: 550; }
#quick-search input#q { box-sizing: border-box; width: 190px; height: 36px; border: 1px solid #b6c4d8; border-radius: 7px; background: #f8fafd; color: var(--foreground); padding: 7px 30px 7px 11px; }
.sm-search-wrap { position: relative; }
.sm-search-key { position: absolute; right: 7px; top: 8px; color: #52647e; font-size: 10px; font-family: inherit; border: 1px solid #d3dce9; border-radius: 3px; padding: 0 4px; pointer-events: none; }
#project-jump .drdn-trigger { border: 1px solid #b6c4d8; border-radius: 7px; min-width: 170px; background: white; color: var(--sm-text); padding: 8px 12px; height: auto; min-height: 36px; line-height: 18px; box-sizing: border-box; }
.drdn-content { color: var(--sm-text); border: 1px solid var(--border); border-radius: 8px; box-shadow: 0 10px 30px #152e521c; }
.drdn-content a:hover { background: var(--secondary); }

#main-menu:not(:has(li)) { display: none !important; }

/* Project navigation: same native links in a persistent rail. */
@media screen and (min-width: 900px) {
  /* Core tab scrolling adds inline bottom padding for horizontal menus. */
  #header { padding-bottom: 18px !important; }
  body:has(#main-menu > ul > li) #header { min-height: 88px; }
  #main-menu.tabs { position: fixed; inset: 144px auto 20px 18px; width: var(--sm-nav-width); height: auto; padding: 0; margin: 0; background: white; border: 1px solid var(--sm-line); border-radius: 12px; box-shadow: var(--sm-shadow); z-index: 30; overflow: visible; display: flex; flex-direction: column; }
  .sm-nav-heading { order: -1; display: flex; align-items: center; justify-content: space-between; padding: 16px 14px 12px; color: #61718a; font-size: 9px; font-weight: 750; letter-spacing: 1.3px; }
  .sm-nav-toggle { display: grid; place-items: center; height: 26px; width: 26px; min-height: 26px; padding: 0; border: 0; background: transparent; color: #52647e; border-radius: 5px; cursor: pointer; }
  .sm-nav-toggle:hover { background: var(--muted); color: var(--primary); }
  .sm-nav-toggle svg { width: 16px; height: 16px; }
  #main-menu > ul { display: flex; flex-direction: column; align-items: stretch; gap: 3px; box-sizing: border-box; width: 100%; height: auto !important; max-height: none; min-height: 0; overflow: auto; padding: 0 9px 12px; white-space: normal; }
  #main-menu > ul > li { display: block; float: none; margin: 0; padding: 0; width: 100%; white-space: normal; }
  #main-menu > ul > li > a { display: flex; align-items: center; gap: 10px; box-sizing: border-box; width: 100%; min-height: 36px; padding: 8px 10px; color: #455670; font-size: 12px; font-weight: 500; line-height: 1.35; border: 0; border-radius: 6px; box-shadow: none; white-space: normal; }
  #main-menu > ul > li > a:hover { background: #f1f5fb; color: var(--primary); text-decoration: none; }
  #main-menu > ul > li > a.selected { background: var(--secondary); color: #153b82; box-shadow: inset 3px 0 0 var(--primary); font-weight: 650; }
  #main-menu > ul > li > a#new-object { border: 1px solid #c2d3ee; color: var(--primary); background: #f5f8ff; margin: 0 0 9px; }
  #main-menu > ul > li > a > svg, .sm-nav-icon { width: 17px; height: 17px; flex: 0 0 17px; color: currentColor; }
  #main-menu .tabs-buttons { display: none !important; }
  #main-menu .menu-children { position: static; width: auto; box-shadow: none; border: 0; border-left: 1px solid #c6d5ea; margin: 4px 0 6px 17px; padding: 2px 0 2px 8px; background: #fff; }
  #main-menu .menu-children li a { color: #455670; font-size: 11px; border-radius: 5px; padding: 7px; white-space: normal; }
  body:has(#main-menu > ul > li) #main { margin-left: calc(var(--sm-nav-width) + 36px); padding-left: 0; }
  body:has(#main-menu > ul > li) #footer { margin-left: calc(var(--sm-nav-width) + 36px); }
  body.sm-nav-compact { --sm-nav-width: 62px; }
  body.sm-nav-compact .sm-nav-heading { justify-content: center; padding: 13px 5px; }
  body.sm-nav-compact .sm-nav-heading > span, body.sm-nav-compact .sm-nav-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  body.sm-nav-compact #main-menu > ul { padding-inline: 7px; }
  body.sm-nav-compact #main-menu > ul > li > a { justify-content: center; padding: 10px 8px; }
  body.sm-nav-compact #main-menu .menu-children { margin-left: 0; padding-left: 0; }
  body.sm-nav-compact #main-menu .menu-children a { font-size: 10px; overflow-wrap: anywhere; }
}

/* Workspace surfaces and readable information density */
#main { padding: 18px 22px 0; gap: 18px; background: transparent; }
#content { box-sizing: border-box; min-width: 0; padding: 25px 28px; background: white; border: 1px solid var(--sm-line); border-radius: 12px; box-shadow: var(--sm-shadow); }
#sidebar { box-sizing: border-box; background: #f7f9fd; border-left: 0; width: 224px; padding: 4px 0 0 14px; color: #52647e; font-size: 12px; }
#sidebar h3 { font-size: 10px; text-transform: uppercase; letter-spacing: .9px; color: #52647e; border: 0; margin: 19px 0 10px; }
#sidebar h3:first-child { margin-top: 0; }
#sidebar ul { padding-left: 0; }
#sidebar a { color: #344f79; }
#sidebar p { line-height: 1.7; }
#sidebar-switch-panel { background: #f7f9fd; }
#sidebar-switch-button { color: #52647e; }
#footer { padding: 24px 18px; color: #5d6d83; font-size: 10px; background: transparent; border: 0; line-height: 1.8; }
#footer a { color: #365885; text-decoration: underline; text-underline-offset: 2px; }
.contextual { font-size: 11px; color: #52647e; line-height: 2; }
.contextual a { margin-left: 10px; }
.contextual a.icon { padding-top: 3px; padding-bottom: 3px; }
.box { box-sizing: border-box; background: #f8fafd; border: 1px solid #dce3ef; border-radius: 8px; padding: 16px; color: var(--sm-text); margin-bottom: 18px; }
.box h3 { margin-bottom: 12px; }
.splitcontent { gap: 20px; }
div.issue { background: #f7f9fe; border: 1px solid #d6e1f1; border-radius: 9px; padding: 22px; margin-bottom: 22px; }
div.issue .subject h3 { font-size: 21px; letter-spacing: -.45px; color: #142f57; line-height: 1.45; }
div.issue .author { font-size: 11px; }
div.issue .description { border-top: 1px solid #dce3ef; padding-top: 14px; }
div.issue .attributes { margin: 16px 0; font-size: 12px; }
div.issue .attribute .label { color: #52647e; font-weight: 550; }
.journal { border: 1px solid #dce3ef; border-radius: 8px; padding: 16px 18px; margin: 16px 0; }
.journal h4 { border: none; font-size: 11px; color: #52647e; }
.journal .wiki { font-size: 13px; }
.nodata, .warning { border: 1px solid #e0d1a5; border-radius: 7px; background: #fffbee; color: #6b501a; padding: 12px 15px; }
.flash { border-radius: 7px; padding: 12px 16px; font-size: 12px; }
.flash.notice { background: #edf9f2; border: 1px solid #b8ddc7; color: #21633e; }
.flash.error, #errorExplanation { background: #fff3f3; border: 1px solid #eebdbd; border-radius: 7px; color: #9d2828; }

/* Tables, native tabs, pagination and plugin lists */
.autoscroll { margin-bottom: 16px; border: 1px solid var(--sm-line); border-radius: 8px; overflow-x: auto; }
table.list { border: 0; border-collapse: separate; border-spacing: 0; margin-bottom: 0; color: var(--sm-text); }
table.list th { background: #f1f5fb; color: #455670; border: 0; border-bottom: 1px solid #d9e2ef; padding: 11px 9px; font-size: 10px; font-weight: 650; letter-spacing: .15px; }
table.list th a { color: #3d5477; }
table.list td { padding: 10px 9px; border: 0; border-bottom: 1px solid #e8edf5; font-size: 12px; }
table.list tbody tr:last-child td { border-bottom: 0; }
table.list tbody tr:nth-child(odd), table.list tbody tr.odd { background: #fff; }
table.list tbody tr:nth-child(even), table.list tbody tr.even { background: #fafcff; }
table.list tbody tr:hover { background: #f0f5fe; }
table.list tr.context-menu-selection td { background: #dce6f9; color: #183d80; }
table.issues td.subject { font-weight: 550; }
table.issues td.id { color: #61718a; font-variant-numeric: tabular-nums; }
table.issues tr.closed td.subject a { color: #61718a; }
table.list td.priority, table.list td.status { font-size: 11px; }
table.list td.buttons { white-space: nowrap; }
table.progress { border-radius: 4px; overflow: hidden; border-color: #d6e0ee; }
table.progress td { padding: 0 !important; border: 0 !important; height: 6px; }
table.progress td.closed { background: #b6caec; }
table.progress td.done { background: #3866b8; }
table.progress td.todo { background: #e7edf6; }
div.tabs:not(#main-menu) { margin-bottom: 18px; }
div.tabs:not(#main-menu) ul { border-bottom: 1px solid #dce3ef; }
div.tabs:not(#main-menu) ul li a { background: transparent; color: #52647e; border: 0; border-bottom: 2px solid transparent; border-radius: 0; padding: 9px 13px; font-size: 12px; }
div.tabs:not(#main-menu) ul li a.selected { background: white; color: var(--primary); border: 0; border-bottom: 2px solid var(--primary); }
span.pagination { font-size: 11px; }
.pagination ul.pages li { border: 1px solid #d3ddea; border-radius: 5px; margin-right: 4px; }
.pagination ul.pages li.current { background: var(--primary); color: white; border-color: var(--primary); }
.pagination ul.pages li a { padding: 5px 9px; }

/* Form controls: the same rhythm across core and plugins. */
input, select, textarea { box-sizing: border-box; color: var(--foreground); background-color: #fff; border: 1px solid #aebed3; border-radius: 5px; font-size: 12px; padding: 7px 9px; }
input[type="text"], input[type="password"], input[type="email"], input[type="number"], input[type="date"], select { min-height: 33px; }
input[type="checkbox"], input[type="radio"] { accent-color: var(--primary); min-height: 0; margin-right: 5px; }
input[type="file"] { max-width: 100%; }
textarea { line-height: 1.65; padding: 10px 12px; }
input::placeholder, textarea::placeholder { color: #61718a; }
input:focus, select:focus, textarea:focus { border-color: var(--primary); background: white; }
input:disabled, select:disabled, textarea:disabled { color: #61718a; background: #f0f3f8; cursor: not-allowed; }
input[type="submit"], input[type="button"], button:not(.tab-left):not(.tab-right):not([class*="jstb_"]):not(.sm-nav-toggle) { border: 1px solid #bdcbdd; border-radius: 6px; background: white; color: #334e77; font-weight: 550; min-height: 32px; padding: 6px 12px; cursor: pointer; box-shadow: 0 1px 2px #142a4b05; }
input[type="submit"], button[type="submit"] { background: var(--primary) !important; border-color: var(--primary) !important; color: white !important; }
input[type="submit"]:hover, button[type="submit"]:hover { background: #123779 !important; }
input[type="button"]:hover, button:not([class*="jstb_"]):hover { border-color: #8ea7cb; }
button:disabled, input[type="submit"]:disabled { opacity: .55; cursor: not-allowed; }
.tabular label { color: #455670; font-size: 12px; font-weight: 550; }
.tabular p { margin-bottom: 13px; }
.tabular input, .tabular select { max-width: 100%; }
.tabular textarea { width: 100%; }
fieldset { border: 1px solid var(--sm-line); border-radius: 7px; padding: 13px 16px; margin-bottom: 16px; min-width: 0; }
fieldset.collapsible { border-left: 0; border-right: 0; border-bottom: 0; border-radius: 0; padding: 10px 0; }
fieldset legend { color: #455670; font-weight: 650; font-size: 11px; padding: 0 6px; }
fieldset#filters table td { padding-top: 5px; padding-bottom: 5px; }
.jstElements { background: #f1f5fb; border-radius: 6px 6px 0 0; padding: 5px; border: 1px solid #c2cfdf; }
.jstElements button { border: 0 !important; min-height: 24px !important; width: 26px; height: 26px; border-radius: 4px; padding: 0 !important; background-color: transparent !important; box-shadow: none !important; }
.jstElements button:hover { background-color: #dce6f9 !important; }
.jstElements button { opacity: 1; }
.jstEditor textarea { border-radius: 0 0 6px 6px; }
.select2-container, .select2-selection { max-width: 100%; }
.select2-container--default .select2-selection--single, .select2-container--default .select2-selection--multiple { min-height: 33px; border-color: #aebed3; border-radius: 5px; }
.select2-dropdown { border-color: #aebed3; box-shadow: var(--sm-shadow); }
ul.ui-menu { border: 1px solid #bdcbdd; border-radius: 7px; box-shadow: var(--sm-shadow); font-family: var(--fonts-main); }
.ui-widget { font-family: var(--fonts-main); font-size: 12px; }
.ui-dialog { border-radius: 10px; border-color: #c9d6e8; box-shadow: 0 18px 70px #10234830; }
.ui-dialog .ui-dialog-titlebar { border: 0; background: #edf3fc; color: #183d80; padding: 12px 15px; }

/* Wiki, projects and plugin surfaces */
.wiki { font-size: 13px; line-height: 1.85; overflow-wrap: anywhere; }
.wiki h1, .wiki h2, .wiki h3 { letter-spacing: -.3px; margin-top: 22px; }
.wiki h1:first-child, .wiki h2:first-child { margin-top: 0; }
.wiki h2 { font-size: 20px; padding-bottom: 8px; border-bottom: 1px solid #e1e8f2; }
.wiki blockquote { border-left: 3px solid #8eaddc; background: #f3f7fd; color: #455670; padding: 10px 18px; margin: 18px 0; }
.wiki pre { background: #f4f7fc; border: 1px solid #dce3ef; border-radius: 6px; padding: 15px; overflow: auto; }
.wiki code { background: #edf2fa; color: #244d88; border-radius: 3px; padding: 2px 4px; }
.wiki pre code { padding: 0; }
.wiki table { max-width: 100%; }
.wiki table th { background: #edf3fc; }
.wiki table td, .wiki table th { padding: 9px 14px; border-color: #dce3ef; }
ul.projects { padding-left: 0; }
ul.projects li.root { border-bottom: 1px solid #e1e8f2; padding: 16px 0; margin: 0; }
ul.projects li.root:last-child { border-bottom: 0; }
ul.projects .root > .name { font-size: 16px; font-weight: 650; color: #183d80; }
ul.projects ul { margin-top: 10px; padding-left: 22px; }
.project .description { color: #52647e; }
.tag-label-color { border-radius: 4px; }
#issue_tags .tag-label-color { font-size: 11px; }
ul#checklist_items, #checklist_items { padding: 0; list-style: none; }
.checklist-item { border-bottom: 1px solid #e1e8f2; padding: 7px 0; }
#kanban-board { font-family: var(--fonts-main); }
#kanban-board input, #kanban-board button { font-family: inherit; }
#gantt_area .task { border-radius: 3px; }
#dmsf_tree, .dmsf_list { font-size: 12px; }
#admin-menu a { padding-top: 9px; padding-bottom: 9px; border-radius: 5px; }
#admin-menu a.selected { background: var(--secondary); color: var(--primary); }
#context-menu ul { border: 1px solid #c9d6e8; border-radius: 7px; box-shadow: 0 12px 32px #10234824; padding: 5px; }
#context-menu a { border-radius: 4px; }
#context-menu li:hover { background: #edf3fc; }

/* A focused sign-in screen, using the existing Redmine form. */
.controller-account.action-login #main { display: block; margin-left: 0; padding: 0 24px; }
.controller-account.action-login #content { background: transparent; border: 0; box-shadow: none; padding: 0; }
.controller-account.action-login #sidebar { display: none; }
.sm-auth-layout { max-width: 1000px; margin: 64px auto 48px; display: grid; grid-template-columns: 1.1fr 1fr; min-height: 480px; background: white; border: 1px solid #d4deed; border-radius: 16px; overflow: hidden; box-shadow: 0 12px 50px #183d800c; }
.sm-auth-brand { padding: 48px; background: #163770; color: #e2ebfc; display: flex; flex-direction: column; justify-content: space-between; position: relative; }
.sm-auth-wordmark { color: white; font-size: 17px; font-weight: 700; letter-spacing: -.5px; display: flex; align-items: center; gap: 11px; }
.sm-brand-symbol { width: 31px; height: 31px; color: #8bd5ea; }
.sm-auth-brand h2 { color: white; padding: 0; font-size: 35px; font-weight: 650; letter-spacing: -1.2px; line-height: 1.22; margin: 40px 0 20px; max-width: 340px; }
.sm-auth-brand p { color: #d3e1f8; font-size: 13px; line-height: 1.9; margin: 0; max-width: 320px; }
.sm-auth-caption { color: #adc5ed; font-size: 10px; letter-spacing: .5px; margin-top: 40px; border-top: 1px solid #ffffff24; padding-top: 20px; }
#login-form { box-sizing: border-box; width: 100%; margin: 0; padding: 48px 44px; border: 0; background: white; color: var(--sm-text); border-radius: 0; box-shadow: none; }
.sm-auth-title { margin-bottom: 28px; }
.sm-auth-title h1 { font-size: 24px; letter-spacing: -.6px; margin-bottom: 7px; padding: 0; color: #142f57; }
.sm-auth-title p { font-size: 12px; color: #52647e; margin: 0; }
#login-form label { display: block; font-size: 11px; font-weight: 600; color: #455670; margin: 0 0 8px; }
#login-form input#username, #login-form input#password { box-sizing: border-box; width: 100%; height: 43px; padding: 10px 12px; margin: 0 0 20px; border: 1px solid #aebed3; border-radius: 6px; background: #fcfdff; font-size: 14px; color: #142f57; }
#login-form label[for="autologin"] { margin: 0 0 23px; font-weight: 400; display: flex; align-items: center; gap: 4px; }
#login-form input#autologin { width: 15px; height: 15px; margin: 0 3px 0 0; }
#login-form .lost_password { font-size: 10px; color: var(--primary); font-weight: 500; }
#login-form input#login-submit { width: 100%; min-height: 43px; border-radius: 6px; font-size: 12px; font-weight: 650; }
.controller-account.action-login .flash { max-width: 968px; margin: 20px auto 0; }
.controller-account.action-login #footer { margin-left: 0; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation: none !important; transition: none !important; }
}
@media print {
  #main-menu, .sm-nav-heading, .sm-skip, #quick-search, #top-menu { display: none !important; }
  body:has(#main-menu > ul > li) #main, body:has(#main-menu > ul > li) #footer { margin-left: 0; }
  #content { border: 0; box-shadow: none; padding: 0; }
  body, #wrapper, #main { background: white; }
}

/* Metadata and inline links must remain legible against their surfaces. */
#content .other-formats, #content .pagination .items, #content .wiki-update-info, #content em.info { color: #52647d; }
#content .other-formats a, #content .author a, #content .wiki-update-info a, #content em.info a { text-decoration: underline; text-underline-offset: 2px; }

#content #app .kanban-item__updated-at { color: #52647d; }
table.issues { min-width: 800px; }
table.issues td.subject { min-width: 220px; }
