/* Capture theme for Zammad 7.1 desktop (beta) UI.
 *
 * Injected by nginx sub_filter, NOT installed into /opt/zammad — so a Zammad
 * upgrade cannot delete it, and it is disabled by commenting one line in the
 * vhost.
 *
 * The UI is Tailwind v4, so most of it is reachable by overriding design tokens
 * rather than fighting utility classes. Zammad ships a cyan accent ramp; Capture
 * is navy/blue (see capture.ee), so the saturated end is remapped and the light
 * end (50-500) is left alone — those are neutral surfaces and tinting them
 * discolours whole panels.
 *
 * Selectors are doubled (:root:root) and the dark-mode root is named explicitly,
 * because Zammad declares these on a `.dark` root which outranks a plain :root.
 */
:root:root,
:root.dark,
html.dark,
.dark {
  /* Accent range -> Capture blue. */
  --color-blue-550: #bfdbfe;
  --color-blue-600: #93c5fd;
  --color-blue-700: #60a5fa;
  --color-blue-800: #3b82f6;  /* primary action colour */
  --color-blue-850: #2563eb;
  --color-blue-875: #1d4ed8;
  --color-blue-900: #1e3a8a;
  --color-blue-950: #172554;

  /* Chrome: navy rather than near-black, matching the site header. */
  --background-primary: #101c3a;

  /* Softer corners throughout. */
  --radius-sm: 0.375rem;
  --radius-md: 0.5rem;
  --radius-lg: 0.75rem;
  --radius-xl: 1rem;
  --radius-2xl: 1.25rem;

  /* Zammad sets nearly all UI text at text-sm; a small bump buys readability
     without reflowing layouts the way changing --spacing would. */
  --text-sm: 0.9rem;

  /* The Capture mark, shared by the header and both loading screens. */
  --capture-mark: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNDgyIDQ1OSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjQ4MnB4IiBoZWlnaHQ9IjQ1OXB4IiBzdHlsZT0ic2hhcGUtcmVuZGVyaW5nOmdlb21ldHJpY1ByZWNpc2lvbjsgdGV4dC1yZW5kZXJpbmc6Z2VvbWV0cmljUHJlY2lzaW9uOyBpbWFnZS1yZW5kZXJpbmc6b3B0aW1pemVRdWFsaXR5OyBmaWxsLXJ1bGU6ZXZlbm9kZDsgY2xpcC1ydWxlOmV2ZW5vZGQiPjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiNmN2Y3ZjciIGQ9Ik0gMjcyLjUsNDAuNSBDIDI3NS44NzYsNDIuMDgyMyAyNzkuNTQyLDQyLjc0ODkgMjgzLjUsNDIuNUMgMzAxLjczNSw0NS45MTE2IDMxOS4wNjgsNTEuOTExNiAzMzUuNSw2MC41QyAzMzUuODIxLDYyLjA0ODEgMzM2LjgyMSw2Mi43MTQ4IDMzOC41LDYyLjVDIDM1OC41NzEsNzMuMzgwOSAzNzYuMjM4LDg3LjM4MDkgMzkxLjUsMTA0LjVDIDM5MS40MjcsMTA2LjAyNyAzOTIuMDk0LDEwNy4wMjcgMzkzLjUsMTA3LjVDIDQzMC4zNzYsMTUxLjk4NCA0NDQuMzc2LDIwMi45ODQgNDM1LjUsMjYwLjVDIDQzMy43NzcsMjYyLjc4IDQzMy4xMTEsMjY1LjQ0NyA0MzMuNSwyNjguNUMgNDE3LjMyMiwzMzMuNTE1IDM3OC4zMjIsMzc5LjAxNSAzMTYuNSw0MDVDIDI5Ny44NDEsNDEyLjMzMiAyNzguNTA4LDQxNi40OTggMjU4LjUsNDE3LjVDIDI0Mi43OSw0MTcuNzEzIDIyNy4xMjQsNDE3LjA0NiAyMTEuNSw0MTUuNUMgMjA3LjM2LDQxNS40NzEgMjAzLjM2LDQxNC44MDQgMTk5LjUsNDEzLjVDIDE5Ny40ODUsNDEyLjA3NiAxOTUuMTUyLDQxMS40MSAxOTIuNSw0MTEuNUMgMTMwLjQ1NiwzOTQuMjk0IDg2Ljk1NTgsMzU1Ljk2IDYyLDI5Ni41QyA0OC43MDUxLDI2MS42MjkgNDUuODcxNywyMjUuOTYyIDUzLjUsMTg5LjVDIDU1LjAzOTUsMTg3LjE2MiA1NS43MDYyLDE4NC40OTUgNTUuNSwxODEuNUMgNTkuODg3MSwxNjIuMzE1IDY3LjU1MzgsMTQ0LjY0OCA3OC41LDEyOC41QyA3OS45MDYzLDEyOC4wMjcgODAuNTczLDEyNy4wMjcgODAuNSwxMjUuNUMgODYuNjk2MiwxMTUuMyA5NC4wMjk1LDEwNS45NjcgMTAyLjUsOTcuNUMgMTA0LjQwNCw5Ny4yNjI0IDEwNS43MzgsOTYuMjYyNCAxMDYuNSw5NC41QyAxMjMuODA3LDc2LjU2MDYgMTQ0LjE0LDYyLjg5MzkgMTY3LjUsNTMuNUMgMTcwLjcxNiw1My42NTQ1IDE3My4zODMsNTIuNjU0NSAxNzUuNSw1MC41QyAxNzcuNjk4LDUwLjg3OTkgMTc5LjM2NSw1MC4yMTMyIDE4MC41LDQ4LjVDIDE4MC44MzMsNDguNSAxODEuMTY3LDQ4LjUgMTgxLjUsNDguNUMgMTg0LjE1Miw0OC41OTA1IDE4Ni40ODUsNDcuOTIzOCAxODguNSw0Ni41QyAxOTEuMTUyLDQ2LjU5MDUgMTkzLjQ4NSw0NS45MjM4IDE5NS41LDQ0LjVDIDIwNC41MTIsNDEuNzE2MyAyMTMuODQ2LDM5Ljg4MyAyMjMuNSwzOUMgMjM3LjE2NywzOC4zMzMzIDI1MC44MzMsMzguMzMzMyAyNjQuNSwzOUMgMjY3LjM2NSwzOS4xODI5IDI3MC4wMzEsMzkuNjgyOSAyNzIuNSw0MC41IFogTSAzNTQuNSwxNDIuNSBDIDM1My40NjMsMTQzLjkzIDM1Mi43OTYsMTQ1LjU5NyAzNTIuNSwxNDcuNUMgMzQ3LjE3MiwxNjAuMTYyIDMzOS44MzksMTcxLjQ5NiAzMzAuNSwxODEuNUMgMzI4LjI1MSwxODIuMDggMzI2LjU4NSwxODMuNDEzIDMyNS41LDE4NS41QyAzMTguNzQ4LDE5MC4yNTYgMzExLjc0OCwxOTQuNTkgMzA0LjUsMTk4LjVDIDMwMi4wMjcsMTk4LjYwNCAzMDEuMzYxLDE5OS42MDQgMzAyLjUsMjAxLjVDIDMwNC42NTcsMjAwLjk1IDMwNi42NTcsMjAwLjI4MyAzMDguNSwxOTkuNUMgMzE5LjA2NCwxOTcuNDUgMzI5LjIzMSwxOTQuMTE2IDMzOSwxODkuNUMgMzM4Ljc4MywxOTIuODQ3IDMzOC4xMTYsMTk2LjE4IDMzNywxOTkuNUMgMzMwLjgzLDIxMC44MzEgMzIzLjMzLDIyMS4xNjUgMzE0LjUsMjMwLjVDIDMxMi4yNTEsMjMxLjA4IDMxMC41ODUsMjMyLjQxMyAzMDkuNSwyMzQuNUMgMzAzLjc0OSwyMzguOTI2IDI5Ny43NDksMjQyLjkyNiAyOTEuNSwyNDYuNUMgMjg5Ljk3MywyNDYuNDI3IDI4OC45NzMsMjQ3LjA5NCAyODguNSwyNDguNUMgMjgzLjkxOSwyNTAuMTMgMjc5LjU4NiwyNTIuMTMgMjc1LjUsMjU0LjVDIDI3MS42MDUsMjU1LjQ2MiAyNjcuOTM5LDI1Ni43OTYgMjY0LjUsMjU4LjVDIDI2Mi41MTYsMjU4LjM4MyAyNjAuODUsMjU5LjA1IDI1OS41LDI2MC41QyAyNzguNzIsMjgwLjA4MiAzMDAuMDUzLDI5Ni43NDggMzIzLjUsMzEwLjVDIDMyMy45NzMsMzExLjkwNiAzMjQuOTczLDMxMi41NzMgMzI2LjUsMzEyLjVDIDMzMC4xNjQsMzE1LjMzNSAzMzQuMTY0LDMxNy42NjggMzM4LjUsMzE5LjVDIDMzOC45NzMsMzIwLjkwNiAzMzkuOTczLDMyMS41NzMgMzQxLjUsMzIxLjVDIDM0OS42NjEsMzI2LjgwNCAzNTcuOTk0LDMzMS45NyAzNjYuNSwzMzdDIDM1Ni43NywzNDUuNiAzNDUuNDM3LDM0OS4yNjYgMzMyLjUsMzQ4QyAzMTQuODk2LDMyOS4zNjcgMjkzLjIyOSwzMTkuMDMzIDI2Ny41LDMxN0MgMjQzLjA2NSwzMTUuNzczIDIxOS43MzIsMzEwLjYwNiAxOTcuNSwzMDEuNUMgMTkxLjE2NywyOTcgMTg0LjgzMywyOTIuNSAxNzguNSwyODhDIDE2NC44MjUsMjc0LjE2MyAxNTMuOTkyLDI1OC4zMyAxNDYsMjQwLjVDIDE0MS41NzUsMjI2LjU1MiAxMzUuMjQyLDIxMy41NTIgMTI3LDIwMS41QyAxMTguNjMyLDE5Mi4yMzUgMTA4LjQ2NSwxODUuOTAyIDk2LjUsMTgyLjVDIDk2LjgzMzMsMTgxLjgzMyA5Ny4xNjY3LDE4MS4xNjcgOTcuNSwxODAuNUMgMTEyLjE0NCwxNzcuMzI2IDEyNS40NzcsMTcxLjE2IDEzNy41LDE2MkMgMTUxLjcxNiwxNTQuMTA0IDE2Ni4wNDksMTUzLjYwNCAxODAuNSwxNjAuNUMgMTgwLjk3MywxNjEuOTA2IDE4MS45NzMsMTYyLjU3MyAxODMuNSwxNjIuNUMgMTg2Ljc3MSwxNjUuMjY4IDE4OS45MzgsMTY4LjI2OCAxOTMsMTcxLjVDIDE5OC4xMzcsMTc4LjkzNyAyMDMuNjM3LDE4Ni4xMDQgMjA5LjUsMTkzQyAyMDQuMjI1LDE5OC4zODggMjAxLjIyNSwyMDQuODg4IDIwMC41LDIxMi41QyAxOTkuMjAzLDIxNC42OTMgMTk5LjIwMywyMTcuMDI3IDIwMC41LDIxOS41QyAyMDEuMjk4LDIxOS4wNDMgMjAxLjYzMSwyMTguMzc2IDIwMS41LDIxNy41QyAyMTEuMTU4LDIwMS42NyAyMjMuNDkxLDE4OC4xNyAyMzguNSwxNzdDIDI2Ni4wNDcsMTU4LjgwNyAyOTQuMzgxLDE0MS44MDcgMzIzLjUsMTI2QyAzMzMuNzUzLDExOS4yOTEgMzQzLjkyLDExMi40NTcgMzU0LDEwNS41QyAzNTYuNDQ2LDExMS4wNjQgMzU3LjYxMywxMTYuODk3IDM1Ny41LDEyM0MgMzU2LjgxOSwxMjkuNTQ0IDM1NS44MTksMTM2LjA0NCAzNTQuNSwxNDIuNSBaIj48L3BhdGg+PC9nPjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiM4NTg2ODUiIGQ9Ik0gMjcyLjUsNDAuNSBDIDI3Ni40MjUsNDAuNDI5OSAyODAuMDkxLDQxLjA5NjYgMjgzLjUsNDIuNUMgMjc5LjU0Miw0Mi43NDg5IDI3NS44NzYsNDIuMDgyMyAyNzIuNSw0MC41IFoiPjwvcGF0aD48L2c+PGc+PHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iIzk0OTU5NiIgZD0iTSAxOTUuNSw0NC41IEMgMTkzLjQ4NSw0NS45MjM4IDE5MS4xNTIsNDYuNTkwNSAxODguNSw0Ni41QyAxOTAuNTE1LDQ1LjA3NjIgMTkyLjg0OCw0NC40MDk1IDE5NS41LDQ0LjUgWiI+PC9wYXRoPjwvZz48Zz48cGF0aCBzdHlsZT0ib3BhY2l0eToxIiBmaWxsPSIjOGQ4ZThlIiBkPSJNIDE4OC41LDQ2LjUgQyAxODYuNDg1LDQ3LjkyMzggMTg0LjE1Miw0OC41OTA1IDE4MS41LDQ4LjVDIDE4My41MTUsNDcuMDc2MiAxODUuODQ4LDQ2LjQwOTUgMTg4LjUsNDYuNSBaIj48L3BhdGg+PC9nPjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiM3Nzc1NzciIGQ9Ik0gMTgwLjUsNDguNSBDIDE3OS4zNjUsNTAuMjEzMiAxNzcuNjk4LDUwLjg3OTkgMTc1LjUsNTAuNUMgMTc2LjkzLDQ5LjQ2MjUgMTc4LjU5Nyw0OC43OTU5IDE4MC41LDQ4LjUgWiI+PC9wYXRoPjwvZz48Zz48cGF0aCBzdHlsZT0ib3BhY2l0eToxIiBmaWxsPSIjOWQ5ZDllIiBkPSJNIDE3NS41LDUwLjUgQyAxNzMuMzgzLDUyLjY1NDUgMTcwLjcxNiw1My42NTQ1IDE2Ny41LDUzLjVDIDE2OS45MzYsNTIuMTI5IDE3Mi42MDMsNTEuMTI5IDE3NS41LDUwLjUgWiI+PC9wYXRoPjwvZz48Zz48cGF0aCBzdHlsZT0ib3BhY2l0eToxIiBmaWxsPSIjN2Q3ZTdjIiBkPSJNIDMzNS41LDYwLjUgQyAzMzYuNzEsNjAuOTMyMSAzMzcuNzEsNjEuNTk4NyAzMzguNSw2Mi41QyAzMzYuODIxLDYyLjcxNDggMzM1LjgyMSw2Mi4wNDgxIDMzNS41LDYwLjUgWiI+PC9wYXRoPjwvZz48Zz48cGF0aCBzdHlsZT0ib3BhY2l0eToxIiBmaWxsPSIjN2Y3ZTgwIiBkPSJNIDEwNi41LDk0LjUgQyAxMDUuNzM4LDk2LjI2MjQgMTA0LjQwNCw5Ny4yNjI0IDEwMi41LDk3LjVDIDEwMy4yNjIsOTUuNzM3NiAxMDQuNTk2LDk0LjczNzYgMTA2LjUsOTQuNSBaIj48L3BhdGg+PC9nPjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiM3Yjc5NzgiIGQ9Ik0gMzkxLjUsMTA0LjUgQyAzOTIuOTA2LDEwNC45NzMgMzkzLjU3MywxMDUuOTczIDM5My41LDEwNy41QyAzOTIuMDk0LDEwNy4wMjcgMzkxLjQyNywxMDYuMDI3IDM5MS41LDEwNC41IFoiPjwvcGF0aD48L2c+PGc+PHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iIzc3NzY3NyIgZD0iTSA4MC41LDEyNS41IEMgODAuNTczLDEyNy4wMjcgNzkuOTA2MywxMjguMDI3IDc4LjUsMTI4LjVDIDc4LjQyNywxMjYuOTczIDc5LjA5MzcsMTI1Ljk3MyA4MC41LDEyNS41IFoiPjwvcGF0aD48L2c+PGc+PHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iIzdmN2U4MSIgZD0iTSAzNTQuNSwxNDIuNSBDIDM1NC44OCwxNDQuNjk4IDM1NC4yMTMsMTQ2LjM2NSAzNTIuNSwxNDcuNUMgMzUyLjc5NiwxNDUuNTk3IDM1My40NjMsMTQzLjkzIDM1NC41LDE0Mi41IFoiPjwvcGF0aD48L2c+PGc+PHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iIzc5Nzk3OSIgZD0iTSAxODAuNSwxNjAuNSBDIDE4Mi4wMjcsMTYwLjQyNyAxODMuMDI3LDE2MS4wOTQgMTgzLjUsMTYyLjVDIDE4MS45NzMsMTYyLjU3MyAxODAuOTczLDE2MS45MDYgMTgwLjUsMTYwLjUgWiI+PC9wYXRoPjwvZz48Zz48cGF0aCBzdHlsZT0ib3BhY2l0eToxIiBmaWxsPSIjZThlOGU4IiBkPSJNIDEzOS41LDE3Ny41IEMgMTQ5LjgxOCwxNzcuMzIyIDE1Mi4xNTEsMTgxLjQ4OSAxNDYuNSwxOTBDIDEzOC4wMTUsMTkyLjAyMSAxMzQuODQ4LDE4OC44NTUgMTM3LDE4MC41QyAxMzcuNjk4LDE3OS4zMDkgMTM4LjUzMSwxNzguMzA5IDEzOS41LDE3Ny41IFoiPjwvcGF0aD48L2c+PGc+PHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iIzU0NTU1MyIgZD0iTSA5Ny41LDE4MC41IEMgOTcuMTY2NywxODEuMTY3IDk2LjgzMzMsMTgxLjgzMyA5Ni41LDE4Mi41QyA5NS4zMjUsMTgyLjcxOSA5NC4zMjUsMTgyLjM4NiA5My41LDE4MS41QyA5NC42ODg4LDE4MC41NzEgOTYuMDIyMiwxODAuMjM4IDk3LjUsMTgwLjUgWiI+PC9wYXRoPjwvZz48Zz48cGF0aCBzdHlsZT0ib3BhY2l0eToxIiBmaWxsPSIjYTNhMWE0IiBkPSJNIDMzMC41LDE4MS41IEMgMzI5LjQxNSwxODMuNTg3IDMyNy43NDksMTg0LjkyIDMyNS41LDE4NS41QyAzMjYuNTg1LDE4My40MTMgMzI4LjI1MSwxODIuMDggMzMwLjUsMTgxLjUgWiI+PC9wYXRoPjwvZz48Zz48cGF0aCBzdHlsZT0ib3BhY2l0eToxIiBmaWxsPSIjODI4MTgzIiBkPSJNIDU1LjUsMTgxLjUgQyA1NS43MDYyLDE4NC40OTUgNTUuMDM5NSwxODcuMTYyIDUzLjUsMTg5LjVDIDUzLjU2NTEsMTg2LjU3MiA1NC4yMzE4LDE4My45MDUgNTUuNSwxODEuNSBaIj48L3BhdGg+PC9nPjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiM4OTg4ODgiIGQ9Ik0gMzA0LjUsMTk4LjUgQyAzMDUuNTY4LDE5OS40MzQgMzA2LjkwMSwxOTkuNzY4IDMwOC41LDE5OS41QyAzMDYuNjU3LDIwMC4yODMgMzA0LjY1NywyMDAuOTUgMzAyLjUsMjAxLjVDIDMwMS4zNjEsMTk5LjYwNCAzMDIuMDI3LDE5OC42MDQgMzA0LjUsMTk4LjUgWiI+PC9wYXRoPjwvZz48Zz48cGF0aCBzdHlsZT0ib3BhY2l0eToxIiBmaWxsPSIjNzI3MTczIiBkPSJNIDIwMC41LDIxMi41IEMgMjAwLjIxNiwyMTQuNDE1IDIwMC41NDksMjE2LjA4MSAyMDEuNSwyMTcuNUMgMjAxLjYzMSwyMTguMzc2IDIwMS4yOTgsMjE5LjA0MyAyMDAuNSwyMTkuNUMgMTk5LjIwMywyMTcuMDI3IDE5OS4yMDMsMjE0LjY5MyAyMDAuNSwyMTIuNSBaIj48L3BhdGg+PC9nPjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiM5YzlhOWMiIGQ9Ik0gMzE0LjUsMjMwLjUgQyAzMTMuNDE1LDIzMi41ODcgMzExLjc0OSwyMzMuOTIgMzA5LjUsMjM0LjVDIDMxMC41ODUsMjMyLjQxMyAzMTIuMjUxLDIzMS4wOCAzMTQuNSwyMzAuNSBaIj48L3BhdGg+PC9nPjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiM3YzdjN2MiIGQ9Ik0gMjkxLjUsMjQ2LjUgQyAyOTEuMDI3LDI0Ny45MDYgMjkwLjAyNywyNDguNTczIDI4OC41LDI0OC41QyAyODguOTczLDI0Ny4wOTQgMjg5Ljk3MywyNDYuNDI3IDI5MS41LDI0Ni41IFoiPjwvcGF0aD48L2c+PGc+PHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iI2EwYTBhMSIgZD0iTSAyNzUuNSwyNTQuNSBDIDI3Mi4zNzQsMjU2Ljk5IDI2OC43MDgsMjU4LjMyMyAyNjQuNSwyNTguNUMgMjY3LjkzOSwyNTYuNzk2IDI3MS42MDUsMjU1LjQ2MiAyNzUuNSwyNTQuNSBaIj48L3BhdGg+PC9nPjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiM4MTgxODAiIGQ9Ik0gNDM1LjUsMjYwLjUgQyA0MzUuMTk4LDI2My4zNzMgNDM0LjUzMSwyNjYuMDM5IDQzMy41LDI2OC41QyA0MzMuMTExLDI2NS40NDcgNDMzLjc3NywyNjIuNzggNDM1LjUsMjYwLjUgWiI+PC9wYXRoPjwvZz48Zz48cGF0aCBzdHlsZT0ib3BhY2l0eToxIiBmaWxsPSIjNjk2NjY2IiBkPSJNIDMyMy41LDMxMC41IEMgMzI1LjAyNywzMTAuNDI3IDMyNi4wMjcsMzExLjA5NCAzMjYuNSwzMTIuNUMgMzI0Ljk3MywzMTIuNTczIDMyMy45NzMsMzExLjkwNiAzMjMuNSwzMTAuNSBaIj48L3BhdGg+PC9nPjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiM3ODdhNzgiIGQ9Ik0gMzM4LjUsMzE5LjUgQyAzNDAuMDI3LDMxOS40MjcgMzQxLjAyNywzMjAuMDk0IDM0MS41LDMyMS41QyAzMzkuOTczLDMyMS41NzMgMzM4Ljk3MywzMjAuOTA2IDMzOC41LDMxOS41IFoiPjwvcGF0aD48L2c+PGc+PHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iIzZlNmQ2ZCIgZD0iTSAxOTIuNSw0MTEuNSBDIDE5NS4xNTIsNDExLjQxIDE5Ny40ODUsNDEyLjA3NiAxOTkuNSw0MTMuNUMgMTk2Ljg0OCw0MTMuNTkgMTk0LjUxNSw0MTIuOTI0IDE5Mi41LDQxMS41IFoiPjwvcGF0aD48L2c+PGc+PHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iIzY3Njg2OCIgZD0iTSAyMTEuNSw0MTUuNSBDIDIyNy4xMjQsNDE3LjA0NiAyNDIuNzksNDE3LjcxMyAyNTguNSw0MTcuNUMgMjQ4LjAwOCw0MTguNjU5IDIzNy4zNDEsNDE4LjgyNSAyMjYuNSw0MThDIDIyMS4yOTQsNDE3LjU2MyAyMTYuMjk0LDQxNi43MyAyMTEuNSw0MTUuNSBaIj48L3BhdGg+PC9nPjwvc3ZnPg==");
}

/* Inter when the machine has it (capture.ee uses it), otherwise the platform UI
   font. No webfont is fetched: an external request would be a CSP problem and a
   needless dependency.
   !important is required here — Tailwind applies the font through a utility
   class, which outranks any element selector. */
html body,
html body button,
html body input,
html body select,
html body textarea {
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI",
               Roboto, "Helvetica Neue", Arial, sans-serif !important;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* The left rail is painted by the Tailwind class bg-neutral-950, not by
   --background-primary, so the variable override never reached it. Targeting
   the element directly rather than remapping --color-neutral-950, which is
   also used for text elsewhere and would have side effects. */
aside.bg-neutral-950,
aside[class*="bg-neutral-950"] {
  background-color: #101c3a;
}

/* ---------------------------------------------------------------------------
 * Notes must not look like replies.
 *
 * The compose default is email in both interfaces, but a note is still one
 * click away — and a note that looks like a reply is how a message gets typed,
 * "sent", and never delivered. Anything in note mode gets an amber cast.
 *
 * Classic marks the compose form with data-type; the beta UI marks internal
 * articles with an internal/note modifier.
 * ------------------------------------------------------------------------- */
.article-add[data-type="note"],
.article-add[data-type="note"] .articleNewEdit-body,
.article-add[data-type="note"] .richtext-content {
  background-color: #fffbeb;
  border-color: #f59e0b;
}

/* The type switcher itself, so the choice is visible before you start typing. */
.article-add[data-type="note"] .js-selectableTypes,
.article-add[data-type="note"] .article-new-meta {
  border-left: 3px solid #f59e0b;
}

/* Beta UI: internal articles and anything flagged as a note. */
[data-test-id="article-bubble"][class*="internal"],
article[class*="internal"],
.Content [class*="article"][class*="internal"] {
  background-color: #fffbeb;
  border-inline-start: 3px solid #f59e0b;
}


/* ---------------------------------------------------------------------------
 * Capture logo in place of the Zammad bird.
 *
 * The header mark is an SVG sprite reference (<svg class="icon-logo"><use
 * href="#icon-logo">), so it cannot be swapped by replacing a file — the
 * sprite is compiled into the bundle. Hiding the <use> and painting the SVG as
 * a background keeps it upgrade-safe and needs no asset rebuild.
 *
 * The source has no viewBox, which is why it scales softly; one is added
 * before embedding. Near-square (482x459), so it sits correctly in the 36x36
 * button without distortion.
 * ------------------------------------------------------------------------- */
.icon-logo use,
svg.icon-logo use {
  display: none;
}

.icon-logo,
svg.icon-logo {
  background-image: var(--capture-mark);
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* ---------------------------------------------------------------------------
 * Collapsed quoted history (see theme/capture-quotes.js).
 *
 * Display only — the quote stays in the article and in the record, because
 * people sometimes edit inside the quoted block and that content matters.
 * ------------------------------------------------------------------------- */
blockquote.capture-quote-collapsed {
  display: none;
}

.capture-quote-toggle {
  display: inline-block;
  margin: 4px 0;
  padding: 0 8px;
  line-height: 1.4;
  font-size: 0.85em;
  letter-spacing: 1px;
  color: #4b5563;
  background-color: #e5e7eb;
  border: 1px solid #d1d5db;
  border-radius: 999px;
  cursor: pointer;
}

.capture-quote-toggle:hover {
  background-color: #d1d5db;
}

/* ---------------------------------------------------------------------------
 * Loading screens.
 *
 * There are two, and the logo rule above only ever reached one of them.
 *
 * The Vue (beta) UI — which capture-beta-default.js makes the default, so this
 * is the screen agents actually see — boots from its own shell with an inline
 * animated SVG, `.loading-animation`, holding the Zammad bird as two <g>
 * layers whose paths fade in one by one. It carries no .icon-logo class, so
 * the swap never applied and the bird survived every other change. The SVG is
 * inline in the shell HTML, so there is no file to replace: the groups are
 * hidden and the mark painted as a background, the same technique the header
 * uses.
 *
 * The classic splash does use .icon-logo and was already correct — but at the
 * 42x36 header size, beside the text, which is too small for a full screen.
 *
 * Neither needs a background rule: both shells paint themselves with
 * --background-primary, remapped to Capture navy at the top of this file.
 * ------------------------------------------------------------------------- */

/* Vue (beta) UI. */
#loading-app .loading-animation > g {
  display: none;
}

#loading-app .loading-animation {
  width: 96px;
  height: 96px;
  background-image: var(--capture-mark);
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  animation: capture-loading-pulse 1.8s ease-in-out infinite;
}

/* Classic splash: same mark, stacked above "Loading…" instead of beside it. */
.splash {
  flex-direction: column;
}

.splash .icon-logo {
  width: 96px;
  height: 96px;
  margin: 0 0 16px 0;
  animation: capture-loading-pulse 1.8s ease-in-out infinite;
}

/* A static mark on a full navy screen reads as a stalled page — Zammad
   animates its bird for the same reason. Opacity only, no transform, so it
   cannot cause layout work on a screen that exists while the app is booting. */
@keyframes capture-loading-pulse {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.45; }
}

@media (prefers-reduced-motion: reduce) {
  #loading-app .loading-animation,
  .splash .icon-logo {
    animation: none;
  }
}
