/* AUTO-GENERATED by Styles/build-bundle.sh -- DO NOT EDIT DIRECTLY. Edit the source file named in
   each section comment below, then re-run this script. */

/* ===== app.css ===== */
*, ::before, ::after {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

::backdrop {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

/*
! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com
*/

/*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/

*,
::before,
::after {
  box-sizing: border-box;
  /* 1 */
  border-width: 0;
  /* 2 */
  border-style: solid;
  /* 2 */
  border-color: #e5e7eb;
  /* 2 */
}

::before,
::after {
  --tw-content: '';
}

/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
6. Use the user's configured `sans` font-variation-settings by default.
7. Disable tap highlights on iOS
*/

html,
:host {
  line-height: 1.5;
  /* 1 */
  -webkit-text-size-adjust: 100%;
  /* 2 */
  -moz-tab-size: 4;
  /* 3 */
  -o-tab-size: 4;
     tab-size: 4;
  /* 3 */
  font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  /* 4 */
  font-feature-settings: normal;
  /* 5 */
  font-variation-settings: normal;
  /* 6 */
  -webkit-tap-highlight-color: transparent;
  /* 7 */
}

/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/

body {
  margin: 0;
  /* 1 */
  line-height: inherit;
  /* 2 */
}

/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/

hr {
  height: 0;
  /* 1 */
  color: inherit;
  /* 2 */
  border-top-width: 1px;
  /* 3 */
}

/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/

abbr:where([title]) {
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
}

/*
Remove the default font size and weight for headings.
*/

h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}

/*
Reset links to optimize for opt-in styling instead of opt-out.
*/

a {
  color: inherit;
  text-decoration: inherit;
}

/*
Add the correct font weight in Edge and Safari.
*/

b,
strong {
  font-weight: bolder;
}

/*
1. Use the user's configured `mono` font-family by default.
2. Use the user's configured `mono` font-feature-settings by default.
3. Use the user's configured `mono` font-variation-settings by default.
4. Correct the odd `em` font sizing in all browsers.
*/

code,
kbd,
samp,
pre {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  /* 1 */
  font-feature-settings: normal;
  /* 2 */
  font-variation-settings: normal;
  /* 3 */
  font-size: 1em;
  /* 4 */
}

/*
Add the correct font size in all browsers.
*/

small {
  font-size: 80%;
}

/*
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/*
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
3. Remove gaps between table borders by default.
*/

table {
  text-indent: 0;
  /* 1 */
  border-color: inherit;
  /* 2 */
  border-collapse: collapse;
  /* 3 */
}

/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/

button,
input,
optgroup,
select,
textarea {
  font-family: inherit;
  /* 1 */
  font-feature-settings: inherit;
  /* 1 */
  font-variation-settings: inherit;
  /* 1 */
  font-size: 100%;
  /* 1 */
  font-weight: inherit;
  /* 1 */
  line-height: inherit;
  /* 1 */
  letter-spacing: inherit;
  /* 1 */
  color: inherit;
  /* 1 */
  margin: 0;
  /* 2 */
  padding: 0;
  /* 3 */
}

/*
Remove the inheritance of text transform in Edge and Firefox.
*/

button,
select {
  text-transform: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/

button,
input:where([type='button']),
input:where([type='reset']),
input:where([type='submit']) {
  -webkit-appearance: button;
  /* 1 */
  background-color: transparent;
  /* 2 */
  background-image: none;
  /* 2 */
}

/*
Use the modern Firefox focus style for all focusable elements.
*/

:-moz-focusring {
  outline: auto;
}

/*
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/

:-moz-ui-invalid {
  box-shadow: none;
}

/*
Add the correct vertical alignment in Chrome and Firefox.
*/

progress {
  vertical-align: baseline;
}

/*
Correct the cursor style of increment and decrement buttons in Safari.
*/

::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}

/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/

[type='search'] {
  -webkit-appearance: textfield;
  /* 1 */
  outline-offset: -2px;
  /* 2 */
}

/*
Remove the inner padding in Chrome and Safari on macOS.
*/

::-webkit-search-decoration {
  -webkit-appearance: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/

::-webkit-file-upload-button {
  -webkit-appearance: button;
  /* 1 */
  font: inherit;
  /* 2 */
}

/*
Add the correct display in Chrome and Safari.
*/

summary {
  display: list-item;
}

/*
Removes the default spacing and border for appropriate elements.
*/

blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}

fieldset {
  margin: 0;
  padding: 0;
}

legend {
  padding: 0;
}

ol,
ul,
menu {
  list-style: none;
  margin: 0;
  padding: 0;
}

/*
Reset default styling for dialogs.
*/

dialog {
  padding: 0;
}

/*
Prevent resizing textareas horizontally by default.
*/

textarea {
  resize: vertical;
}

/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/

input::-moz-placeholder, textarea::-moz-placeholder {
  opacity: 1;
  /* 1 */
  color: #9ca3af;
  /* 2 */
}

input::placeholder,
textarea::placeholder {
  opacity: 1;
  /* 1 */
  color: #9ca3af;
  /* 2 */
}

/*
Set the default cursor for buttons.
*/

button,
[role="button"] {
  cursor: pointer;
}

/*
Make sure disabled buttons don't get the pointer cursor.
*/

:disabled {
  cursor: default;
}

/*
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
   This can trigger a poorly considered lint error in some tools but is included by design.
*/

img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block;
  /* 1 */
  vertical-align: middle;
  /* 2 */
}

/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/

img,
video {
  max-width: 100%;
  height: auto;
}

/* Make elements with the HTML hidden attribute stay hidden by default */

[hidden]:where(:not([hidden="until-found"])) {
  display: none;
}

.container {
  width: 100%;
}

@media (min-width: 640px) {
  .container {
    max-width: 640px;
  }
}

@media (min-width: 768px) {
  .container {
    max-width: 768px;
  }
}

@media (min-width: 1024px) {
  .container {
    max-width: 1024px;
  }
}

@media (min-width: 1280px) {
  .container {
    max-width: 1280px;
  }
}

@media (min-width: 1536px) {
  .container {
    max-width: 1536px;
  }
}

.collapse {
  visibility: collapse;
}

.fixed {
  position: fixed;
}

.inset-0 {
  inset: 0px;
}

.col-span-12 {
  grid-column: span 12 / span 12;
}

.col-span-2 {
  grid-column: span 2 / span 2;
}

.col-span-3 {
  grid-column: span 3 / span 3;
}

.col-span-5 {
  grid-column: span 5 / span 5;
}

.col-span-6 {
  grid-column: span 6 / span 6;
}

.col-span-7 {
  grid-column: span 7 / span 7;
}

.m-0 {
  margin: 0px;
}

.m-3 {
  margin: 0.75rem;
}

.mb-0 {
  margin-bottom: 0px;
}

.mb-3 {
  margin-bottom: 0.75rem;
}

.mb-4 {
  margin-bottom: 1rem;
}

.mr-2 {
  margin-right: 0.5rem;
}

.mt-3 {
  margin-top: 0.75rem;
}

.mt-4 {
  margin-top: 1rem;
}

.box-border {
  box-sizing: border-box;
}

.flex {
  display: flex;
}

.table {
  display: table;
}

.grid {
  display: grid;
}

.hidden {
  display: none;
}

.h-1\/2 {
  height: 50%;
}

.h-4 {
  height: 1rem;
}

.h-5 {
  height: 1.25rem;
}

.h-\[75px\] {
  height: 75px;
}

.h-\[90\%\] {
  height: 90%;
}

.h-full {
  height: 100%;
}

.h-screen {
  height: 100vh;
}

.max-h-\[600px\] {
  max-height: 600px;
}

.min-h-screen {
  min-height: 100vh;
}

.w-1 {
  width: 0.25rem;
}

.w-1\/2 {
  width: 50%;
}

.w-2\/3 {
  width: 66.666667%;
}

.w-4 {
  width: 1rem;
}

.w-5 {
  width: 1.25rem;
}

.w-\[20\%\] {
  width: 20%;
}

.w-\[30\%\] {
  width: 30%;
}

.w-\[50\%\] {
  width: 50%;
}

.w-\[70\%\] {
  width: 70%;
}

.w-\[80\%\] {
  width: 80%;
}

.w-\[90\%\] {
  width: 90%;
}

.w-full {
  width: 100%;
}

.max-w-xs {
  max-width: 20rem;
}

.flex-grow {
  flex-grow: 1;
}

.cursor-pointer {
  cursor: pointer;
}

.grid-cols-1 {
  grid-template-columns: repeat(1, minmax(0, 1fr));
}

.grid-cols-10 {
  grid-template-columns: repeat(10, minmax(0, 1fr));
}

.grid-cols-12 {
  grid-template-columns: repeat(12, minmax(0, 1fr));
}

.grid-cols-18 {
  grid-template-columns: repeat(18, minmax(0, 1fr));
}

.grid-cols-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.grid-cols-7 {
  grid-template-columns: repeat(7, minmax(0, 1fr));
}

.flex-col {
  flex-direction: column;
}

.items-center {
  align-items: center;
}

.justify-start {
  justify-content: flex-start;
}

.justify-end {
  justify-content: flex-end;
}

.justify-center {
  justify-content: center;
}

.justify-between {
  justify-content: space-between;
}

.gap-1 {
  gap: 0.25rem;
}

.gap-2 {
  gap: 0.5rem;
}

.gap-3 {
  gap: 0.75rem;
}

.gap-4 {
  gap: 1rem;
}

.overflow-auto {
  overflow: auto;
}

.overflow-hidden {
  overflow: hidden;
}

.overflow-y-auto {
  overflow-y: auto;
}

.rounded {
  border-radius: 0.25rem;
}

.rounded-md {
  border-radius: 0.375rem;
}

.border {
  border-width: 1px;
}

.p-0 {
  padding: 0px;
}

.p-1 {
  padding: 0.25rem;
}

.p-2 {
  padding: 0.5rem;
}

.p-3 {
  padding: 0.75rem;
}

.p-4 {
  padding: 1rem;
}

.p-8 {
  padding: 2rem;
}

.px-4 {
  padding-left: 1rem;
  padding-right: 1rem;
}

.py-2 {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}

.text-center {
  text-align: center;
}

.text-2xl {
  font-size: 1.5rem;
  line-height: 2rem;
}

.text-3xl {
  font-size: 1.875rem;
  line-height: 2.25rem;
}

.text-xl {
  font-size: 1.25rem;
  line-height: 1.75rem;
}

.font-bold {
  font-weight: 700;
}

.font-semibold {
  font-weight: 600;
}

.transition {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.duration-1000 {
  transition-duration: 1000ms;
}

.duration-200 {
  transition-duration: 200ms;
}

.duration-300 {
  transition-duration: 300ms;
}

.ease-in-out {
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

@media (min-width: 640px) {
  .sm\:col-span-6 {
    grid-column: span 6 / span 6;
  }

  .sm\:grid-cols-1 {
    grid-template-columns: repeat(1, minmax(0, 1fr));
  }

  .sm\:grid-cols-6 {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
}

@media (min-width: 768px) {
  .md\:col-span-4 {
    grid-column: span 4 / span 4;
  }

  .md\:flex {
    display: flex;
  }

  .md\:w-1\/3 {
    width: 33.333333%;
  }

  .md\:w-2\/3 {
    width: 66.666667%;
  }

  .md\:max-w-none {
    max-width: none;
  }

  .md\:grid-cols-12 {
    grid-template-columns: repeat(12, minmax(0, 1fr));
  }

  .md\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .md\:grid-cols-8 {
    grid-template-columns: repeat(8, minmax(0, 1fr));
  }

  .md\:flex-row {
    flex-direction: row;
  }
}

@media (min-width: 1024px) {
  .lg\:col-span-4 {
    grid-column: span 4 / span 4;
  }

  .lg\:col-span-8 {
    grid-column: span 8 / span 8;
  }

  .lg\:grid-cols-12 {
    grid-template-columns: repeat(12, minmax(0, 1fr));
  }

  .lg\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* App-level error boundary UI */
.app-error-ui {
  position: fixed;
  inset: 0;
  background-color: rgba(0, 0, 0, 0.7);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9999;
}

.app-error-card {
  background: #1e1e1e;
  color: #fff;
  border-radius: 12px;
  padding: 2rem;
  max-width: 400px;
  width: 90%;
  text-align: center;
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
}

.app-error-card h3 {
  margin: 0 0 0.75rem 0;
  font-size: 1.25rem;
  font-weight: 600;
}

.app-error-card p {
  margin: 0 0 1.5rem 0;
  font-size: 0.9rem;
  opacity: 0.8;
}

.app-error-reload {
  padding: 0.6rem 2rem;
  border: none;
  border-radius: 6px;
  background: #4f9cf7;
  color: #fff;
  font-size: 0.95rem;
  cursor: pointer;
  transition: background 0.2s;
}

.app-error-reload:hover {
  background: #3a7bd5;
}

.app-notfound-ui {
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9999;
}

.app-notfound-card {
  background: #1e1e1e;
  color: #fff;
  border-radius: 12px;
  padding: 2rem;
  max-width: 400px;
  width: 90%;
  text-align: center;
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
}

.app-notfound-card h3 {
  margin: 0 0 0.75rem 0;
  font-size: 1.25rem;
  font-weight: 600;
}

.app-notfound-card p {
  margin: 0 0 1.5rem 0;
  font-size: 0.9rem;
  opacity: 0.8;
}

.app-notfound-home {
  padding: 0.6rem 2rem;
  border: none;
  border-radius: 6px;
  background: #4f9cf7;
  color: #fff;
  font-size: 0.95rem;
  cursor: pointer;
  transition: background 0.2s;
}

.app-notfound-home:hover {
  background: #3a7bd5;
}
/* ===== Styles/Shared/shared.css ===== */

/* === Theme\colors.css === */

.bg-dark-100 {
    background-color: rgb(38, 45, 51);
}

.bg-dark-200 {
    background-color: rgba(45, 53, 60);
}

.bg-dark-300 {
    background-color: rgb(38, 45, 51);
}

.bg-dark-400 {
    background-color: rgb(22, 26, 29);
}

.bg-dark-500 {
    background-color: rgb(32, 37, 42);
}

.bg-dark-600 {
    background-color: rgb(41, 41, 41);
}

.bg-dark-700 {
    /* Task 28 (2026-08-02), audit item A6: was rgb(61, 165, 138), 3.02:1 against the white button text
       that's always paired with it -- below WCAG AA's 4.5:1. See Theme/colors.css for the full note. */
    background-color: rgb(20, 120, 100);
}

.bg-light-100 {
    background-color: rgb(245, 245, 245);
}

.bg-light-200 {
    /* Task 28 (2026-08-02), audit item A6: was rgb(112, 216, 189), 1.71:1 against the white button text
       that's always paired with it -- a severe WCAG AA failure. See Theme/colors.css for the full note. */
    background-color: rgb(20, 120, 100);
}

.bg-light-300 {
    background-color: rgb(222, 226, 230);
}

.bg-color-50 {
    background-color: rgb(255, 255, 255);
}

.bg-color-100 {
    background-color: rgb(0, 0, 0);
}

.bg-color-200 {
    /* Task 28 (2026-08-02), audit item A6: was rgb(0, 172, 172), 2.80:1 against white -- below WCAG
       AA's 4.5:1. See Theme/colors.css for the full note. */
    --tw-bg-opacity: 1;
    background-color: rgb(0, 110, 110);
}

.bg-color-300 {
    /* Task 28: was rgb(0, 123, 255), 3.98:1 against white -- below AA's 4.5:1. */
    background-color: rgb(0, 90, 200);
}

.bg-color-400 {
    /* Task 28: was rgb(239, 68, 68), 3.76:1 against white -- below AA's 4.5:1. */
    background-color: rgb(200, 35, 35);
}

.text-light {
    color: rgb(255, 255, 255);
}

.text-dark {
    color: rgba(0, 0, 0, 0.87);
}

.text-blue {
    color: rgb(0, 123, 255);
}

.text-color-100 {
    color: rgb(207, 207, 207);
}

.hover\:bg-hover-100:hover {
    background-color: rgb(61, 165, 138);
}

.hover\:bg-hover-200:hover {
    background-color: rgb(55, 60, 65);
}

.hover\:bg-hover-300:hover {
    background-color: rgb(207, 207, 207);
}

.hover\:bg-hover-400:hover {
    background-color: rgb(32, 36, 39);
}

.hover\:bg-hover-500:hover {
    background-color: rgb(12, 106, 79);
}

.hover\:bg-hover-600:hover {
    background-color: rgb(252, 165, 165);
}

.hover\:bg-hover-700:hover {
    background-color: rgb(185, 28, 28);
}

.hover\:bg-hover-800:hover {
    background-color: rgb(0, 100, 200);
}

.color-100 {
    background-color: rgb(219, 79, 74);
}

.color-200 {
    background-color: rgb(51, 152, 255);
}

.color-300 {
    background-color: rgba(0, 0, 0, 0.87);
}

.border-color-400 {
    border-color: rgb(229, 231, 235);
}

.border-color-500 {
    /* Task 28 (2026-08-02), audit item A6: was rgb(159, 181, 185), 1.65:1 against the input backgrounds
       it borders in the light theme -- below WCAG 1.4.11's 3:1. See Theme/colors.css for the full note. */
    border-color: rgb(100, 120, 125);
}

.hover\:border-color-100:hover {
    border-color: rgb(0, 100, 200);
}

.hover\:border-color-200:hover {
    border-color: rgb(51, 152, 255);
}

.hover\:border-color-300:hover {
    border-color: rgba(0, 0, 0, 0.87);
}


/* === Theme\styles.css === */

body {
    font-family: "Source Sans Pro", sans-serif;
    font-weight: 400;
    font-size: 0.857143rem;
    line-height: 1.5;
}

.label-2,
.Nav-Body-Item-Button-Text,
.Nav-Body-Item-List-Button-Text {
    cursor: pointer;
    font-family: "Work Sans", sans-serif;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.6;
    margin: 0px;
}

.Nav-Header-Button-Text {
    margin: 0px;
    font-family: "Work Sans", sans-serif;
    font-size: 16px;
    font-weight: 400;
    line-height: 1.334;
}

.Topbar-Pagename-Text {
    font-family: "Work Sans", sans-serif;
    font-size: 20px;
    font-weight: 400;
    line-height: 1.235;
    margin: 0px 0px 0px 30px;
}

.button-2 {
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
}

.table-cell-1-p,
.table-cell-3-p,
.table-cell-2-p {
    cursor: pointer;
    font-family: "Work Sans", sans-serif;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.6;
    margin: 0px;
}


/* === Layout\LoginLayout.css === */

.login-layout {
    height: 100%;
    width: 100%;
}


/* === Layout\MainLayout.css === */

.MainLayout-Wrapper {
    display: flex;
    flex-direction: column;
    height: 100vh;
    overflow: hidden;
}

.MainLayout-NotLoggedIn {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100vh;
}

.MainLayout-NotLoggedIn-Card {
    max-width: 32rem;
    width: 100%;
    padding: 2rem;
    border-radius: 0.5rem;
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}

.MainLayout-NotLoggedIn-Title {
    font-size: 1.5rem;
    font-weight: 600;
}

.MainLayout-NotLoggedIn-Text {
    margin-top: 0.75rem;
}

.MainLayout-NotLoggedIn-ButtonRow {
    margin-top: 1.5rem;
    display: flex;
    justify-content: center;
}

.button-2 {
    height: 35px;
    box-sizing: border-box;
    border-radius: 4px;
    transition: 0.2s ease-in-out;
    min-width: 150px;
    padding: 6px 16px;
    margin: 10px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
}

.h-full {
    height: 100%;
}

.w-full {
    width: 100%;
}

.overflow-auto {
    overflow: auto;
}

@media(min-width: 768px) {
    .Main-Top {
        width: 100%;
        height: 48px;
    }

    .Main-Bottom {
        flex: 1;
        min-height: 0;
        width: 100%;
        display: flex;
    }

    .Main-Nav-Menu {
        max-width: 210px;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

    .Main-Body {
        padding: 10px;
        width: 100%;
        height: 100%;
        overflow-y: auto;
        overflow-x: hidden;
    }
}

@media(max-width: 768px) {
    .Main-Top {
        width: 100%;
        height: 48px;
    }

    .Main-Bottom {
        height: 100%;
        width: 100%;
        display: flex;
        flex-direction: column;
    }

    .Main-Nav-Menu {
        width: 0;
        height: 0;
        overflow: visible;
    }

    .Main-Body {
        width: 100%;
        height: 100%;
        overflow-y: auto;
        overflow-x: hidden;
    }
}


/* === Layout\NavMenu.css === */

/* ── Theme CSS Variables ── */
.Nav-Container {
    --nav-border-color: rgba(255, 255, 255, 0.3);
    --nav-divider-bg: rgba(255, 255, 255, 0.14);
    --nav-item-hover-overlay: rgba(255, 255, 255, 0.08);
    --nav-item-active-overlay: rgba(255, 255, 255, 0.15);
    --nav-icon-color: rgb(245, 245, 245);
    --nav-list-hover-overlay: rgba(255, 255, 255, 0.06);
    --nav-list-active-overlay: rgba(255, 255, 255, 0.12);
    --nav-text-color: rgb(255, 255, 255);
    --nav-scrollbar-track: rgb(38, 45, 51);
    --nav-scrollbar-thumb: rgb(80, 85, 90);
    --nav-scrollbar-thumb-hover: rgb(100, 105, 110);
}

.Nav-Container--light {
    --nav-border-color: rgba(0, 0, 0, 0.15);
    --nav-divider-bg: rgba(0, 0, 0, 0.1);
    --nav-item-hover-overlay: rgba(0, 0, 0, 0.05);
    --nav-item-active-overlay: rgba(0, 0, 0, 0.1);
    --nav-icon-color: rgb(80, 80, 80);
    --nav-list-hover-overlay: rgba(0, 0, 0, 0.03);
    --nav-list-active-overlay: rgba(0, 0, 0, 0.08);
    --nav-text-color: rgba(0, 0, 0, 0.87);
    --nav-scrollbar-track: #f0f0f0;
    --nav-scrollbar-thumb: #888;
    --nav-scrollbar-thumb-hover: #555;
}

.Nav-Container--light .Nav-Header-Button-Icon img {
    filter: brightness(0);
}

@media(min-width: 768px) {
    .Nav-Container {
        width: 210px;
        flex: 1;
        min-height: 0;
        display: flex;
        flex-direction: column;
        overflow: hidden;
        border: 0;
        border-right: 1px solid var(--nav-border-color);
        transition: width 0.3s ease;
    }

    .NavMenu {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

    .Nav-Header {
        flex: 0 0 48px;
        display: flex;
        justify-content: center;
        align-items: center;
    }

    .Nav-Header-Button {
        width: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        padding: 8px 12px;
        gap: 5px;
        cursor: pointer;
    }

    .Nav-Header-Button-Expanded {
        justify-content: flex-start;
    }

    .Nav-Header-Button-Icon {
        flex: 0 0 auto;
        height: 1.3em;
        width: 1.3em;
        display: flex;
        justify-content: center;
        align-items: center;
    }

    .Nav-Header-Divider {
        width: calc(100% - 16px);
        height: 1px;
        margin: 0 8px 8px 8px;
        background: var(--nav-divider-bg);
        flex: 0 0 auto;
    }

    .Nav-Body {
        flex: 1;
        display: flex;
        flex-direction: column;
        overflow-x: hidden;
        overflow-y: auto;
        min-height: 0;
    }

    .Nav-Body-Item {
        display: flex;
        flex-direction: column;
    }

    .Nav-Body-Item-Button {
        min-height: 44px;
        display: flex;
        align-items: center;
        padding: 0 12px;
        cursor: pointer;
        transition: background-color 0.15s ease;
        position: relative;
    }
    .Nav-Body-Item-Button:hover {
        background-color: var(--nav-item-hover-overlay);
    }
    .Nav-Body-Item-Button.active {
        background-color: var(--nav-item-active-overlay);
    }
    .Nav-Body-Item-Button.active::before {
        content: '';
        position: absolute;
        left: 0;
        top: 6px;
        bottom: 6px;
        width: 3px;
        border-radius: 0 2px 2px 0;
        background-color: #4f9cf7;
    }

    .Nav-Item-Button-Icon {
        width: 1.3rem;
        height: 1.3rem;
        display: flex;
        justify-content: flex-start;
        align-items: center;
        color: var(--nav-icon-color);
        margin-right: 3px;
    }

    /* AUDIT-Blazor-Round2-Response.md C3: MenuIcon.razor -- sec_menu.icon_name is now a short key
       resolved to a static /Assets/Icons/menu/<key>.svg file, applied as a mask so the icon fills with
       the container's own currentColor (whatever color:/--nav-icon-color the wrapping element already
       sets: .Nav-Item-Button-Icon, .dashboard-tab-icon, .reportbrowser-item-icon-wrap, .Nav-Flyout-Card-
       Item's icon div) instead of needing inline SVG markup. Same masking technique already used for
       action-button icons elsewhere (SubAccountSearch.css, TrnSearch.css). Not media-query-specific, so
       only needs declaring once even though .Nav-Item-Button-Icon itself is redeclared per breakpoint. */
    .menu-icon-masked {
        background-color: currentColor;
        -webkit-mask: var(--menu-icon-url) no-repeat center / contain;
        mask: var(--menu-icon-url) no-repeat center / contain;
    }

    .Nav-Body-Item-Button-Text {
        width: 65%;
        display: flex;
        justify-content: flex-start;
        align-items: center;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
        cursor: pointer;
        font-family: "Work Sans", sans-serif;
        font-size: 12px;
        font-weight: 500;
        line-height: 1.6;
        margin: 0px;
    }
    .Nav-Body-Item-Button:hover .Nav-Body-Item-Button-Text {
        overflow: visible;
        text-overflow: clip;
    }

    .Nav-Body-Item-Button-Sign {
        width: 24px;
        flex: 0 0 24px;
        display: flex;
        justify-content: center;
        align-items: center;
        margin-left: auto;
        margin-right: 4px;
    }

    .nav-arrow-icon {
        width: 16px;
        height: 16px;
        display: block;
        transition: transform 0.25s ease;
    }

    .nav-arrow-icon--open {
        transform: rotate(90deg);
    }

    .Nav-Body-Item-List {
        display: flex;
        flex-direction: column;
        transition: max-height 0.3s ease-in-out, opacity 0.3s ease-in-out;
        max-height: 0;
        opacity: 0;
        overflow: hidden;
    }

    .Nav-Body-Item-List.expanded {
        opacity: 1;
    }

    .Nav-Body-Item-List-Button {
        min-height: 40px;
        display: flex;
        justify-content: center;
        align-items: center;
        cursor: pointer;
        transition: background-color 0.15s ease;
        position: relative;
    }
    .Nav-Body-Item-List-Button:hover {
        background-color: var(--nav-list-hover-overlay);
    }
    .Nav-Body-Item-List-Button.active {
        background-color: var(--nav-list-active-overlay);
    }
    .Nav-Body-Item-List-Button.active::before {
        content: '';
        position: absolute;
        left: 0;
        top: 5px;
        bottom: 5px;
        width: 3px;
        border-radius: 0 2px 2px 0;
        background-color: #4f9cf7;
    }

    .Nav-Body-Item-List-Button-Empty {
        width: 10%;
    }

    .Nav-Body-Item-List-Button-Text {
        width: 65%;
        display: flex;
        justify-content: flex-start;
        align-items: center;
        margin-right: 10px;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
        cursor: pointer;
        font-family: "Work Sans", sans-serif;
        font-size: 12px;
        font-weight: 500;
        line-height: 1.6;
        margin: 0px;
    }
    .Nav-Body-Item-List-Button:hover .Nav-Body-Item-List-Button-Text {
        overflow: visible;
        text-overflow: clip;
    }

    .Nav-Container-Special-Case {
        width: 70px;
        height: 100%;
        display: flex;
        flex-direction: column;
        overflow: hidden;
        border: 0;
        border-right: 1px solid var(--nav-border-color);
        transition: width 0.3s ease;
    }

    .Nav-Header-Special-Case {
        width: 100%;
        height: 48px;
        background-color: rgba(0, 0, 0, 0);
    }

    .Nav-Body-Special-Case {
        width: 100%;
    }

    .Nav-Container-Special-Case .Nav-Body {
        scrollbar-width: none;
        -ms-overflow-style: none;
    }

    .Nav-Container-Special-Case .Nav-Body::-webkit-scrollbar {
        width: 0;
        height: 0;
    }

    .Nav-Container-Special-Case .Nav-Body-Item-Button {
        justify-content: center;
        padding: 0;
    }
    .Nav-Container-Special-Case .Nav-Item-Button-Icon {
        margin-right: 0;
    }
    .Nav-Container-Special-Case .Nav-Body-Item-Button.active {
        background-color: var(--nav-item-active-overlay);
        box-shadow: inset 3px 0 0 #4f9cf7;
    }
}

@media(max-width: 768px) {
    .Nav-Drawer-Backdrop {
        position: fixed;
        inset: 0;
        z-index: 999;
        background: rgba(0, 0, 0, 0.5);
        opacity: 0;
        pointer-events: none;
        transition: opacity 0.3s ease;
        border: none;
        padding: 0;
        cursor: pointer;
    }
    .Nav-Drawer-Backdrop--open {
        opacity: 1;
        pointer-events: auto;
    }

    .Nav-Container {
        position: fixed;
        top: 0;
        left: 0;
        width: 210px;
        height: 100vh;
        z-index: 1000;
        display: flex;
        flex-direction: column;
        overflow: hidden;
        border: 0;
        border-right: 1px solid var(--nav-border-color);
        transform: translateX(-100%);
        transition: transform 0.3s ease;
    }
    .Nav-Container--open {
        transform: translateX(0);
    }

    .NavMenu {
        flex: 1;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

    .Nav-Header {
        flex: 0 0 48px;
        display: flex;
        justify-content: center;
        align-items: center;
    }

    .Nav-Header-Button {
        width: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        padding: 8px 12px;
        gap: 5px;
        cursor: pointer;
    }

    .Nav-Header-Button-Expanded {
        justify-content: flex-start;
    }

    .Nav-Header-Button-Icon {
        flex: 0 0 auto;
        height: 1.3em;
        width: 1.3em;
        display: flex;
        justify-content: center;
        align-items: center;
    }

    .Nav-Header-Divider {
        width: calc(100% - 16px);
        height: 1px;
        margin: 0 8px 8px 8px;
        background: var(--nav-divider-bg);
        flex: 0 0 auto;
    }

    .Nav-Body {
        flex: 1;
        display: flex;
        flex-direction: column;
        overflow-x: hidden;
        overflow-y: auto;
        min-height: 0;
    }

    .Nav-Body-Item {
        display: flex;
        flex-direction: column;
    }

    .Nav-Body-Item-Button {
        min-height: 44px;
        display: flex;
        align-items: center;
        padding: 0 12px;
        cursor: pointer;
        transition: background-color 0.15s ease;
        position: relative;
    }
    .Nav-Body-Item-Button:hover {
        background-color: var(--nav-item-hover-overlay);
    }
    .Nav-Body-Item-Button.active {
        background-color: var(--nav-item-active-overlay);
    }
    .Nav-Body-Item-Button.active::before {
        content: '';
        position: absolute;
        left: 0;
        top: 6px;
        bottom: 6px;
        width: 3px;
        border-radius: 0 2px 2px 0;
        background-color: #4f9cf7;
    }

    .Nav-Item-Button-Icon {
        width: 1.3rem;
        height: 1.3rem;
        display: flex;
        justify-content: flex-start;
        align-items: center;
        color: var(--nav-icon-color);
        margin-right: 3px;
    }

    .Nav-Body-Item-Button-Text {
        width: 65%;
        display: flex;
        justify-content: flex-start;
        align-items: center;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
        cursor: pointer;
        font-family: "Work Sans", sans-serif;
        font-size: 12px;
        font-weight: 500;
        line-height: 1.6;
        margin: 0px;
    }
    .Nav-Body-Item-Button:hover .Nav-Body-Item-Button-Text {
        overflow: visible;
        text-overflow: clip;
    }

    .Nav-Body-Item-Button-Sign {
        width: 24px;
        flex: 0 0 24px;
        display: flex;
        justify-content: center;
        align-items: center;
        margin-left: auto;
        margin-right: 4px;
    }

    .nav-arrow-icon {
        width: 16px;
        height: 16px;
        display: block;
        transition: transform 0.25s ease;
    }

    .nav-arrow-icon--open {
        transform: rotate(90deg);
    }

    .Nav-Body-Item-List {
        display: flex;
        flex-direction: column;
        transition: max-height 0.3s ease-in-out, opacity 0.3s ease-in-out;
        max-height: 0;
        opacity: 0;
        overflow: hidden;
    }

    .Nav-Body-Item-List.expanded {
        opacity: 1;
    }

    .Nav-Body-Item-List-Button {
        min-height: 40px;
        display: flex;
        justify-content: center;
        align-items: center;
        cursor: pointer;
        transition: background-color 0.15s ease;
        position: relative;
    }
    .Nav-Body-Item-List-Button:hover {
        background-color: var(--nav-list-hover-overlay);
    }
    .Nav-Body-Item-List-Button.active {
        background-color: var(--nav-list-active-overlay);
    }
    .Nav-Body-Item-List-Button.active::before {
        content: '';
        position: absolute;
        left: 0;
        top: 5px;
        bottom: 5px;
        width: 3px;
        border-radius: 0 2px 2px 0;
        background-color: #4f9cf7;
    }

    .Nav-Body-Item-List-Button-Empty {
        width: 10%;
    }

    .Nav-Body-Item-List-Button-Text {
        width: 65%;
        display: flex;
        justify-content: flex-start;
        align-items: center;
        margin-right: 10px;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
        cursor: pointer;
        font-family: "Work Sans", sans-serif;
        font-size: 12px;
        font-weight: 500;
        line-height: 1.6;
        margin: 0px;
    }
    .Nav-Body-Item-List-Button:hover .Nav-Body-Item-List-Button-Text {
        overflow: visible;
        text-overflow: clip;
    }
}

.text {
    flex: 1 1 auto;
    min-width: 0;
}

.text p {
    margin: 0;
    white-space: nowrap;
    overflow-x: hidden;
    color: var(--nav-text-color);
    font-size: 16px;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    text-align: left;
}

.Nav-Body::-webkit-scrollbar {
    width: 4px;
    height: 4px;
}

.Nav-Body::-webkit-scrollbar-track {
    background: var(--nav-scrollbar-track);
    border-radius: 10px;
}

.Nav-Body::-webkit-scrollbar-thumb {
    background: var(--nav-scrollbar-thumb);
    border-radius: 10px;
}

.Nav-Body::-webkit-scrollbar-thumb:hover {
    background: var(--nav-scrollbar-thumb-hover);
}

.Nav-Body {
    scrollbar-width: thin;
    scrollbar-color: var(--nav-scrollbar-thumb) var(--nav-scrollbar-track);
}


/* === Layout\TopBar.css === */

.TopBar-Root {
    width: 100%;
    height: 100%;
    display: flex;
    padding-top: 0.5rem;
    padding-bottom: 0.5rem;
}

.TopBar-LogoArea {
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    flex: 0 0 210px;
    width: 210px;
}

.TopBar-LogoButton {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    cursor: pointer;
}

/* Item 8 (branding): appicon-currentcolor.svg via CSS mask -- background-color: currentColor picks up
   whatever color the element's own `color` resolves to, which here is @Theme.TextBody's color (applied
   as a class on this same div in TopBar.razor), so it follows the light/dark theme automatically. Same
   masking technique as .menu-icon-masked (C3). */
.TopBar-BrandIcon {
    width: 32px;
    height: 32px;
    flex-shrink: 0;
    background-color: currentColor;
    -webkit-mask: url('/Assets/Icons/appicon-currentcolor.svg') no-repeat center / contain;
    mask: url('/Assets/Icons/appicon-currentcolor.svg') no-repeat center / contain;
}

.TopBar-AppName {
    font-size: 1.25rem;
}

.TopBar-ContentArea {
    height: 100%;
    display: flex;
    flex: 1 1 auto;
    min-width: 0;
}

.TopBar-PageNameWrapper {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: flex-start;
}

.Topbar-Pagename-Text {
    font-family: "Work Sans", sans-serif;
    font-size: 20px;
    font-weight: 400;
    line-height: 1.235;
    margin: 0px 0px 0px 30px;
}

/* W157: left-aligned, sized to its content, and NEVER display:none at any width --
   truncate instead. The account name is the only on-screen answer to "whose books
   am I in?", and this app attaches one login to many accounts. */
.TopBar-AccountNameWrapper {
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    flex: 0 1 auto;
    min-width: 0;
    max-width: 320px;
    padding-left: 1rem;
}

.TopBar-AccountName {
    font-size: 1.25rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.TopBar-IconRow {
    width: 100%;
    height: 100%;
    display: flex;
    justify-content: flex-end;
}

.TopBar-IconGroup {
    display: flex;
    align-items: center;
    justify-content: center;
}

.TopBar-IconButton {
    width: 35px;
    height: 35px;
    border-radius: 50%;
    transition: all 0.3s ease-in-out;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0.5rem;
}

.TopBar-IconButton--dark img {
    filter: brightness(0);
}

.TopBar-MobileOverflow {
    display: none;
    position: relative;
}

.TopBar-OverflowButton {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0.4rem;
    transition: all 0.3s ease-in-out;
}

.TopBar-OverflowBackdrop {
    display: none;
    border: none;
    padding: 0;
    cursor: pointer;
}

.TopBar-OverflowMenu {
    position: absolute;
    top: 100%;
    right: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.25rem;
    padding: 0.5rem;
    border-radius: 0.5rem;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
    z-index: 1001;
}

@media(min-width: 768px) {
    .TopBar-MobileMenu {
        display: none;
    }
}

@media(max-width: 768px) {
    .TopBar-Root {
        position: relative;
        padding: 0.25rem 0.5rem;
        gap: 0.25rem;
    }

    .TopBar-ContentArea {
        display: contents;
    }

    .TopBar-MobileMenu {
        order: 1;
        display: flex;
        align-items: center;
    }

    .TopBar-Hamburger {
        display: flex;
        align-items: center;
        justify-content: center;
        width: 34px;
        height: 34px;
        border-radius: 50%;
        padding: 0.4rem;
    }

    .TopBar-Hamburger.TopBar-IconButton--dark {
        color: #000;
    }

    .TopBar-Hamburger:not(.TopBar-IconButton--dark) {
        color: #fff;
    }
    .TopBar-Hamburger svg {
        width: 20px;
        height: 20px;
    }

    .TopBar-AccountNameWrapper {
        order: 2;
        width: auto;
        max-width: 120px;
        height: auto;
        display: flex;
        align-items: center;
        padding-left: 0.25rem;
    }
    .TopBar-AccountName {
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        font-size: 0.95rem;
    }

    .TopBar-PageNameWrapper {
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
        width: auto;
        max-width: 50%;
        height: auto;
        display: flex;
        align-items: center;
        justify-content: center;
    }
    .Topbar-Pagename-Text {
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        font-size: 0.85rem;
    }

    .TopBar-IconRow {
        order: 4;
        display: none;
    }

    .TopBar-MobileOverflow {
        order: 5;
        display: flex;
        align-items: center;
        position: relative;
        margin-left: auto;
    }

    .TopBar-OverflowBackdrop {
        display: block;
        position: fixed;
        inset: 0;
        z-index: 1000;
    }

    .TopBar-OverflowMenu {
        right: 0;
        top: calc(100% + 4px);
    }

    .TopBar-LogoArea {
        display: none;
    }
}

.Text-5 {
    font-size: 1.25rem;
    line-height: 1.75rem;
}


/* === Components\Loading.css === */

.loading-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1050;
    backdrop-filter: blur(8px);
    animation: fadeIn 0.3s ease-in-out;
}

.loading-overlay.show {
    display: flex;
}

.loading-progress {
    width: 140px;
    height: 140px;
    position: relative;
    animation: rotate 1.5s linear infinite;
}

@keyframes rotate {
    100% {
        transform: rotate(360deg);
    }
}

.loading-progress circle {
    fill: none;
    stroke: #e0e0e0;
    stroke-width: 8px;
    transform-origin: 50% 50%;
    transform: rotate(-90deg);
}

.loading-progress circle:last-child {
    stroke: #1b6ec2;
    stroke-dasharray: calc(3.141 * var(--blazor-load-percentage, 0%) * 0.8), 500%;
    transition: stroke-dasharray 0.3s ease-in-out;
}

.loading-progress-text {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    color: #1b6ec2;
    font-size: 1.2rem;
    font-weight: 600;
    text-align: center;
    z-index: 1051;
}

@keyframes fadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}


/* === Components\NavFlyoutHost.css === */

@media(min-width: 768px) {
    .Nav-Flyout-Overlay {
        position: fixed;
        width: 260px;
        max-height: calc(100vh - 72px);
        z-index: 2000;
    }

    .Nav-Flyout-Card {
        width: 100%;
        border-width: 1px;
        border-style: solid;
        border-radius: 14px;
        box-shadow: 0 16px 40px rgba(0, 0, 0, 0.28);
        overflow: hidden;
        backdrop-filter: blur(10px);
    }

    .Nav-Flyout-Card-Header {
        min-height: 44px;
        display: flex;
        align-items: center;
        padding: 0 14px;
        font-weight: 600;
        border-bottom: 1px solid rgba(255, 255, 255, 0.12);
    }

    .Nav-Flyout-Card-List {
        display: flex;
        flex-direction: column;
        max-height: calc(100vh - 120px);
        overflow-y: auto;
        padding: 6px 0;
    }

    .Nav-Flyout-Card-Item {
        min-height: 42px;
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 0 14px;
        text-align: left;
        width: 100%;
        cursor: pointer;
        transition: background-color 0.15s ease;
    }

    .Nav-Flyout-Card-Item:hover {
        background-color: rgba(255, 255, 255, 0.08);
    }

    .Nav-Flyout-Card-Item.active {
        background-color: rgba(255, 255, 255, 0.12);
    }

    .Nav-Flyout-Card-Item-Text {
        flex: 1;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }
}


/* === Components\PageHeader.css === */

.page-header-container {
    display: flex;
    align-items: center;
}

.page-description-text {
    margin: 0;
    font-weight: 600;
}


/* === Components\Popup.css === */

.popup-overlay {
    position: fixed;
    inset: 0;
    background-color: rgba(0, 0, 0, 0.7);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 50;
    backdrop-filter: blur(5px);
}

.popup-card {
    width: 100%;
    max-width: 400px;
    min-height: 180px;
    border-radius: 12px;
    padding: 25px;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

.popup-body {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    height: 100%;
}

.popup-body h5 {
    font-size: 1.25rem;
    font-weight: bold;
    margin-bottom: 15px;
    text-align: center;
}

.popup-body p {
    font-size: 1rem;
    margin-bottom: 20px;
    padding: 0 10px;
    text-align: center;
}

.popup-button {
    height: 35px;
    box-sizing: border-box;
    border-radius: 4px;
    min-width: 120px;
    padding: 6px 16px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
    border: none;
    cursor: pointer;
    transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-duration: 150ms;
    align-self: center;
}

.popup-button:active {
    opacity: 0.8;
}

.popup-button:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

.popup-confirm-buttons {
    display: flex;
    justify-content: center;
    gap: 1rem;
    margin-top: 10px;
}

.popup-confirm-buttons .popup-button {
    flex: 1;
    min-width: 0;
}


/* === Components\SessionExpirationModal.css === */

.session-modal {
    display: none;
    position: fixed;
    z-index: 9999;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
}

.session-modal.show {
    display: flex;
    align-items: center;
    justify-content: center;
}

.modal-overlay {
    position: absolute;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.7);
    backdrop-filter: blur(4px);
    border: none;
    padding: 0;
    cursor: pointer;
}

.modal-content {
    position: relative;
    border-radius: 12px;
    padding: 30px;
    max-width: 500px;
    width: 90%;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
    animation: slideIn 0.3s ease-out;
}

@keyframes slideIn {
    from {
        transform: translateY(-50px);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

.modal-header h3 {
    margin: 0 0 15px 0;
    font-size: 24px;
    font-weight: 600;
}

.modal-body {
    margin: 20px 0;
}

.modal-body p {
    margin: 0 0 20px 0;
    font-size: 16px;
    line-height: 1.5;
}

.countdown {
    text-align: center;
    margin: 20px 0;
}

.countdown-time {
    font-size: 48px;
    font-weight: bold;
    font-family: 'Courier New', monospace;
}

.modal-footer {
    display: flex;
    gap: 15px;
    justify-content: center;
    margin-top: 25px;
}

.modal-footer button {
    padding: 12px 30px;
    border: none;
    border-radius: 6px;
    font-size: 16px;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s ease;
}

.modal-footer button:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}

.modal-footer button:active {
    transform: translateY(0);
}


/* === Bug 14 (2026-08-11): no spinner arrows on number fields ===
   Mazhar's standing rule, reported repeatedly and never actually fixed in the OLD app -- beta's half
   was verified 08-11 ("up/down gone. verified") while this side had nothing built at all.

   Global on purpose, matching what beta did. Every `type="number"` in this app (36 of them across
   TrnEdit, TrnEditJV, TrnSearch, ItemSaveOrEdit, SubAccountSave and Form1099K) is a money or quantity
   box that is typed into, never stepped through with a mouse -- so scoping this to a class would just
   be one more thing to remember to add on the next screen, which is how it stayed broken this long.

   Note the Tailwind Preflight interaction, which is why this needs to be explicit rather than assumed:
   app.css ships `::-webkit-inner-spin-button, ::-webkit-outer-spin-button { height: auto; }` from
   normalize. That is a cursor/alignment correction -- it does NOT hide anything, and it is the entire
   reason a grep for "inner-spin-button" in this repo used to look like the rule already existed.
   `appearance` is set alongside each prefixed form so this keeps working as the prefixes are dropped. */

input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    appearance: none;
    margin: 0;
}

input[type="number"] {
    -moz-appearance: textfield;
    appearance: textfield;
}

/* ===== Styles/Pages/Auth/Login.css ===== */
/* ============================================================
   Pages/Login.css — Login page specific styles.
   Zero Tailwind utilities — all explicit custom CSS.
   Scoped under .login-page to avoid leaking to other pages.
   ============================================================ */

/* --- Design Tokens (CSS custom properties) --- */
.login-page {
    --social-btn-min-width: 140px;
    --social-btn-min-height: 48px;
    --input-height: 44px;
    --form-max-width: 20rem;
    --social-row-max-width: 20rem;
}

/* --- Outer container ---
   Replaces: min-h-screen flex flex-col md:flex-row --- */
.login-page {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

@media (min-width: 768px) {
    .login-page {
        flex-direction: row;
    }
}

/* --- Left hero (background image) panel ---
   Replaces: hidden md:flex md:w-2/3 min-h-screen flex flex-col
             items-center justify-center p-8 relative
             + inline background-image/style properties --- */
.login-hero {
    display: none;
    min-height: 100vh;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 2rem;
    position: relative;
    overflow: hidden;
}

.login-hero::before {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background-image: url('/Assets/Images/background_blur.jpg');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center;
    background-attachment: fixed;
    filter: blur(3px);
    z-index: 0;
}

@media (min-width: 768px) {
    .login-hero {
        display: flex;
        width: 66.666667%;
    }
}

/* --- Gradient overlay over hero image ---
   Replaces: absolute inset-0 bg-gradient-to-br from-black/60 to-transparent --- */
.login-hero-overlay {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background: linear-gradient(to bottom right, rgba(0, 0, 0, 0.6), transparent);
    z-index: 1;
}

/* --- Hero text wrapper ---
   Replaces: relative z-10 text-center --- */
.login-hero-content {
    position: relative;
    z-index: 10;
    text-align: center;
}

/* --- Hero title ---
   Replaces: text-3xl font-bold mb-4 + inline font-size:30px --- */
.login-hero-title {
    font-size: 30px;
    font-weight: 700;
    margin-bottom: 1rem;
    color: #fff;
}

/* --- Hero subtitle ---
   Replaces: text-xl font-bold mb-2 --- */
.login-hero-subtitle {
    font-size: 1.25rem;
    line-height: 1.75rem;
    font-weight: 700;
    margin-bottom: 0.5rem;
    color: #fff;
}

/* --- Right form panel ---
   Replaces: w-full md:w-1/3 min-h-screen flex items-center justify-center p-8 --- */
.login-form-panel {
    width: 100%;
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem;
}

@media (min-width: 768px) {
    .login-form-panel {
        width: 33.333333%;
    }
}

/* --- Inner container for form content ---
   Replaces: w-full flex flex-col items-center gap-4 --- */
.login-inner {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

/* --- Title block spacing ---
   Replaces: mb-3 --- */
.login-title-block {
    margin-bottom: 0.75rem;
}

/* --- Page heading ---
   Replaces: text-3xl font-bold --- */
.login-heading {
    font-size: 1.875rem;
    line-height: 2.25rem;
    font-weight: 700;
}

/* --- Social login buttons row ---
   Replaces: w-2/3 max-w-xs md:max-w-none flex gap-4 ---
   flex-wrap + justify-content: center handles narrow screens
   where buttons need to stack vertically instead of squash. --- */
.login-social-row {
    width: 66.666667%;
    max-width: 20rem;
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
    justify-content: center;
}

@media (min-width: 768px) {
    .login-social-row {
        max-width: none;
    }
}

/* --- Social login button (Google / GitHub) ---
   Replaces: text-xl w-1/2 p-2 px-4 rounded flex justify-center items-center gap-2
             (p-2 + px-4 = padding: 0.5rem 1rem; py-2 + px-4 = same result)
   flex: 1 + min-width: 140px keeps buttons side-by-side until
   they'd be narrower than 140px, then they wrap to stacked. --- */
.login-social-btn {
    font-size: 1.25rem;
    line-height: 1.75rem;
    flex: 1;
    min-width: var(--social-btn-min-width, 140px);
    min-height: var(--social-btn-min-height, 48px);
    padding: 0.5rem 1rem;
    border-radius: 0.25rem;
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
    border: none;
    cursor: pointer;
}

/* --- OR divider ---
   Replaces: mb-3 --- */
.login-divider {
    margin-bottom: 0.75rem;
}

/* --- Email/password form ---
   Replaces: w-2/3 max-w-xs md:max-w-none flex flex-col justify-center items-center gap-4 --- */
.login-form {
    width: 66.666667%;
    max-width: 20rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 1rem;
}

@media (min-width: 768px) {
    .login-form {
        max-width: none;
    }
}

/* --- Navigation links container ---
   Replaces: w-full flex flex-col items-center gap-2 mt-4 --- */
.login-nav {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    margin-top: 1rem;
}

/* --- Navigation link row ---
   Replaces: flex items-center gap-1 --- */
.login-nav-row {
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

/* --- Navigation button (text-link style) ---
   Needed because Tailwind preflight resets button styles globally.
   If preflight is removed later, this ensures buttons still look like text. --- */
.login-nav-btn {
    background: none;
    border: none;
    cursor: pointer;
    padding: 0;
    font: inherit;
}

.login-password-wrapper {
    position: relative;
    flex: 1;
    width: 100%;
}

.login-password-wrapper input {
    padding-right: 2.5rem;
}

.login-password-toggle {
    position: absolute;
    right: 0.5rem;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    cursor: pointer;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0.6;
    color: inherit;
    line-height: 1;
}

.login-password-toggle:hover {
    opacity: 1;
}

.login-input {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    height: 35px;
    width: 100%;
    box-sizing: border-box;
    text-align: left;
}

.login-btn {
    padding: 0.5rem 0;
    border-radius: 0.375rem;
    transition: 0.2s ease-in-out;
    width: 100%;
}

/* ===== Styles/Pages/Auth/Signup.css ===== */
/* ============================================================
   Pages/Signup.css — Signup page specific styles.
   Fully self-contained — all classes used in Signup.razor
   are defined here (including shared auth layout classes).
   ============================================================ */

/* --- Design Tokens --- */
.login-page {
    --social-btn-min-width: 140px;
    --social-btn-min-height: 48px;
    --input-height: 44px;
    --form-max-width: 20rem;
    --social-row-max-width: 20rem;
}

/* --- Outer container --- */
.login-page {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

@media (min-width: 768px) {
    .login-page {
        flex-direction: row;
    }
}

/* --- Left hero panel --- */
.login-hero {
    display: none;
    min-height: 100vh;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 2rem;
    position: relative;
    overflow: hidden;
}

.login-hero::before {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background-image: url('/Assets/Images/background_blur.jpg');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center;
    background-attachment: fixed;
    filter: blur(3px);
    z-index: 0;
}

@media (min-width: 768px) {
    .login-hero {
        display: flex;
        width: 66.666667%;
    }
}

.login-hero-overlay {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background: linear-gradient(to bottom right, rgba(0, 0, 0, 0.6), transparent);
    z-index: 1;
}

.login-hero-content {
    position: relative;
    z-index: 10;
    text-align: center;
}

.login-hero-title {
    font-size: 30px;
    font-weight: 700;
    margin-bottom: 1rem;
    color: #fff;
}

.login-hero-subtitle {
    font-size: 1.25rem;
    line-height: 1.75rem;
    font-weight: 700;
    margin-bottom: 0.5rem;
    color: #fff;
}

/* --- Right form panel --- */
.login-form-panel {
    width: 100%;
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem;
}

@media (min-width: 768px) {
    .login-form-panel {
        width: 33.333333%;
    }
}

.login-inner {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

.login-title-block {
    margin-bottom: 0.75rem;
}

.login-heading {
    font-size: 1.875rem;
    line-height: 2.25rem;
    font-weight: 700;
}

.login-social-row {
    width: 66.666667%;
    max-width: 20rem;
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
    justify-content: center;
}

@media (min-width: 768px) {
    .login-social-row {
        max-width: none;
    }
}

.login-social-btn {
    font-size: 1.25rem;
    line-height: 1.75rem;
    flex: 1;
    min-width: var(--social-btn-min-width, 140px);
    min-height: var(--social-btn-min-height, 48px);
    padding: 0.5rem 1rem;
    border-radius: 0.25rem;
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
    border: none;
    cursor: pointer;
}

.login-divider {
    margin-bottom: 0.75rem;
}

.login-form {
    width: 66.666667%;
    max-width: 20rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 1rem;
}

@media (min-width: 768px) {
    .login-form {
        max-width: none;
    }
}

.login-nav {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    margin-top: 1rem;
}

.login-nav-row {
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

.login-nav-btn {
    background: none;
    border: none;
    cursor: pointer;
    padding: 0;
    font: inherit;
}

.signup-password-row {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    width: 100%;
}

.signup-password-wrapper {
    position: relative;
    flex: 1;
}

.signup-password-wrapper input {
    padding-right: 2.5rem;
}

.signup-password-toggle {
    position: absolute;
    right: 0.5rem;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    cursor: pointer;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0.6;
    color: inherit;
    line-height: 1;
}

.signup-password-toggle:hover {
    opacity: 1;
}

.signup-input {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    height: 35px;
    width: 100%;
    box-sizing: border-box;
    text-align: left;
}

.signup-action-btn {
    padding: 0.3rem;
    border-radius: 0.25rem;
    transition: all 200ms ease-in-out;
    display: flex;
    justify-content: center;
    align-items: center;
    text-align: center;
    width: 60px;
    max-width: 60px;
    min-width: 60px;
}

.signup-btn {
    padding: 0.5rem 0;
    border-radius: 0.375rem;
    transition: 0.2s ease-in-out;
    width: 100%;
}

.signup-password-row .signup-action-btn {
    height: var(--input-height, 44px);
}

/* ===== Styles/Pages/Auth/VerifyEmail.css ===== */
.verify-container {
    width: 100%;
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    overflow: hidden;
    box-sizing: border-box;
}

.verify-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 90%;
    max-width: 480px;
    border: 1px solid;
    box-sizing: border-box;
    border-radius: 8px;
    padding: 2.5rem 2rem;
}

.verify-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.25rem;
    width: 100%;
    text-align: center;
}

.verify-title {
    font-size: 1.5rem;
    font-weight: 600;
    margin: 0;
}

.verify-email {
    font-size: 1rem;
    font-weight: 500;
    word-break: break-all;
    margin: 0;
}

.verify-message {
    font-size: 0.875rem;
    line-height: 1.5;
    margin: 0;
    max-width: 380px;
}

.verify-btn {
    height: 35px;
    box-sizing: border-box;
    border-radius: 0.25rem;
    transition: 0.2s ease-in-out;
    min-width: 150px;
    padding: 6px 16px;
    border-radius: 4px;
    margin: 10px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
}

.verify-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

/* ===== Styles/Pages/Auth/ForgetPassword.css ===== */
.forgetpassword-container {
    height: 100vh;
    width: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.forgetpassword-card-wrapper {
    display: flex;
    justify-content: center;
    align-items: center;
    flex: 1;
}

.forgetpassword-card {
    width: 90%;
    height: 90%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
    border: 1px solid #fff;
    box-sizing: border-box;
}

.forgetpassword-content {
    width: 100%;
    max-width: 400px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0.75rem;
}

.forgetpassword-title-wrapper {
    margin-bottom: 0.75rem;
}

.forgetpassword-title {
    font-size: 30px;
    font-weight: 700;
    margin-bottom: 1rem;
}

.forgetpassword-form {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.75rem;
    width: 100%;
    max-width: 300px;
}

.forgetpassword-actions {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    width: 100%;
    max-width: 300px;
}

.forgetpassword-actions button {
    flex: 1;
    min-width: 0;
}

.forgetpassword-input {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    font-size: 16px;
    height: 35px;
    width: 100%;
    box-sizing: border-box;
    text-align: left;
}

.forgetpassword-btn {
    height: 35px;
    box-sizing: border-box;
    border-radius: 4px;
    transition: 0.2s ease-in-out;
    padding: 6px 16px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
}

.forgetpassword-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

/* ===== Styles/Pages/Auth/EmailLinkCallback.css ===== */
.emaillink-callback-container {
    width: 100%;
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    overflow: hidden;
    box-sizing: border-box;
}

.emaillink-callback-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 90%;
    max-width: 480px;
    border: 1px solid;
    box-sizing: border-box;
    border-radius: 8px;
    padding: 2.5rem 2rem;
}

.emaillink-callback-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.25rem;
    width: 100%;
    text-align: center;
}

.emaillink-spinner {
    width: 40px;
    height: 40px;
    border: 4px solid rgba(255, 255, 255, 0.2);
    border-top-color: currentColor;
    border-radius: 50%;
    animation: emaillink-spin 0.8s linear infinite;
}

@keyframes emaillink-spin {
    to { transform: rotate(360deg); }
}

.emaillink-status {
    font-size: 0.875rem;
    line-height: 1.5;
    margin: 0;
}

.emaillink-prompt-title {
    font-size: 1.5rem;
    font-weight: 600;
    margin: 0;
}

.emaillink-prompt-message {
    font-size: 0.875rem;
    line-height: 1.5;
    margin: 0;
    max-width: 380px;
}

.emaillink-prompt-form {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.75rem;
    width: 100%;
    max-width: 300px;
}

.emaillink-input {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    font-size: 16px;
    height: 35px;
    width: 100%;
    box-sizing: border-box;
    text-align: left;
}

.emaillink-btn {
    height: 35px;
    box-sizing: border-box;
    border-radius: 4px;
    transition: 0.2s ease-in-out;
    padding: 6px 16px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
}

/* ===== Styles/Pages/User/User.css ===== */
.user-container {
    height: 100vh;
    width: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.user-card-wrapper {
    display: flex;
    justify-content: center;
    align-items: center;
    flex: 1;
}

.user-card {
    width: 90%;
    height: 90%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
    border: 1px solid #fff;
    box-sizing: border-box;
}

.user-content {
    width: 100%;
    max-width: 400px;
    height: 50%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
}

.user-title-wrapper {
    margin-bottom: 0.75rem;
}

.user-title {
    font-size: 30px;
    font-weight: 700;
    margin-bottom: 1rem;
}

.user-form {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.75rem;
    width: 100%;
    max-width: 300px;
}

.user-input-wrapper {
    width: 100%;
}

.user-input {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    font-size: 16px;
    height: 35px;
    width: 100%;
    box-sizing: border-box;
    text-align: left;
}

.user-button {
    padding: 0.5rem 0;
    border-radius: 0.375rem;
    transition: 0.2s ease-in-out;
    width: 100%;
}

/* ===== Styles/Pages/User/ChangePassword.css ===== */
.changepassword-page {
    height: 100%;
    width: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.changepassword-body {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    flex: 1;
}

.changepassword-form {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding: 2rem;
    width: 300px;
}

.changepassword-input {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    height: 35px;
    text-align: left;
    width: 100%;
    min-width: 0;
    max-width: none;
    box-sizing: border-box;
}

.changepassword-footer {
    display: flex;
    justify-content: center;
    gap: 1rem;
    width: 300px;
    padding: 0 2rem;
}

.changepassword-footer .changepassword-btn {
    margin: 0;
    height: 35px;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}

.changepassword-btn {
    height: 35px;
    box-sizing: border-box;
    border-radius: 0.25rem;
    transition: 0.2s ease-in-out;
    min-width: 150px;
    padding: 6px 16px;
    margin: 10px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
}

.changepassword-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

/* ===== Styles/Pages/User/InviteUser.css ===== */
.inviteuser-page {
    height: 100%;
    width: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.inviteuser-body {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    flex: 1;
}

.inviteuser-form {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding: 2rem;
    width: 300px;
}

.inviteuser-input {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    height: 35px;
    text-align: left;
    width: 100%;
    min-width: 0;
    max-width: none;
    box-sizing: border-box;
}

.inviteuser-footer {
    display: flex;
    justify-content: center;
    gap: 1rem;
    width: 300px;
    padding: 0 2rem;
}

.inviteuser-footer .inviteuser-btn {
    margin: 0;
    height: 35px;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}

.inviteuser-btn {
    height: 35px;
    box-sizing: border-box;
    border-radius: 0.25rem;
    transition: 0.2s ease-in-out;
    min-width: 150px;
    padding: 6px 16px;
    margin: 10px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
}

.inviteuser-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

/* ===== Styles/Pages/Account/AccountSelect.css ===== */
.accountselect-container {
    width: 100%;
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    overflow-x: hidden;
    box-sizing: border-box;
}

.accountselect-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 90%;
    height: 90%;
    border: 1px solid #fff;
    box-sizing: border-box;
}

.accountselect-list {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    overflow-y: auto;
    overflow-x: hidden;
    height: 100%;
    max-height: 600px;
    width: 100%;
    padding: 1rem;
    box-sizing: border-box;
}

.accountselect-item {
    margin: 0.75rem;
    width: 100%;
    max-width: 20rem;
    border-radius: 0.375rem;
    overflow: hidden;
}

.accountselect-item-inner {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 0;
    border-radius: 0.25rem;
    height: 75px;
}

.accountselect-btn {
    width: 100%;
    height: 100%;
    transition: all 200ms ease-in-out;
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 0 20px;
}

.accountselect-account-name {
    margin-bottom: 0;
    font-size: 1.125rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.accountselect-footer {
    display: flex;
    justify-content: center;
    align-items: center;
    margin-top: 0.75rem;
    width: 100%;
    max-width: 20rem;
    padding: 1rem;
    gap: 1rem;
    box-sizing: border-box;
}

/* ---- Replaces shared button-2 ---- */
.accountselect-btn-action {
    height: 35px;
    box-sizing: border-box;
    border-radius: 4px;
    transition: 0.2s ease-in-out;
    flex: 1;
    padding: 6px 16px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
}

.accountselect-btn-action:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

/* ===== Styles/Pages/Account/AccountSetup.css ===== */
.accountsetup-container {
    height: 100vh;
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    overflow-x: hidden;
}

.accountsetup-card {
    width: 90%;
    height: 90%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
    border: 1px solid #fff;
    box-sizing: border-box;
}

.accountsetup-content {
    width: 100%;
    max-width: 400px;
    height: 90%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
}

.accountsetup-title-wrapper {
    margin-bottom: 0.75rem;
    text-align: center;
    width: 100%;
}

.accountsetup-title {
    font-size: 30px;
    font-weight: 700;
    margin-bottom: 1rem;
}

.accountsetup-description {
    font-size: 0.875rem;
    line-height: 1.5;
    margin-top: 0.5rem;
    max-width: 90%;
    margin-left: auto;
    margin-right: auto;
}

.accountsetup-list {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    overflow-y: auto;
    overflow-x: hidden;
    height: 100%;
    max-height: 600px;
    width: 100%;
    padding: 1rem;
    box-sizing: border-box;
}

.accountsetup-item {
    margin: 0.75rem;
    width: 100%;
    max-width: 20rem;
    border-radius: 0.25rem;
}

.accountsetup-item-inner {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 0;
    border-radius: 0.25rem;
    height: 75px;
    gap: 0.5rem;
}

.accountsetup-checkbox {
    width: 20px;
    height: 20px;
    cursor: pointer;
    accent-color: rgb(61, 165, 138);
    flex-shrink: 0;
}

.accountsetup-submit-btn {
    width: 100%;
}

/* ---- Replaces shared inputField-3 ---- */
.accountsetup-field-input {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    font-size: 16px;
    height: 35px;
    width: 100%;
    box-sizing: border-box;
    text-align: left;
}

/* ---- Replaces shared button-2 ---- */
.accountsetup-btn {
    height: 35px;
    box-sizing: border-box;
    border-radius: 4px;
    transition: 0.2s ease-in-out;
    min-width: 150px;
    padding: 6px 16px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
}

.accountsetup-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

/* ===== Styles/Pages/Account/Payment.css ===== */
.payment-container {
    height: 100vh;
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
}

.payment-card {
    width: 90%;
    height: 90%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
    border-width: 1px;
    box-sizing: border-box;
}

.payment-card-inner {
    width: 90%;
    height: 90%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
}

.payment-title-wrapper {
    margin-bottom: 0.75rem;
}

.payment-title {
    font-size: 1.875rem;
    line-height: 2.25rem;
    font-weight: 700;
    margin-bottom: 1rem;
}

.payment-content {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    overflow: hidden;
    height: 100%;
    max-height: 600px;
    padding: 0.75rem;
}

.payment-form {
    width: 100%;
    height: 100%;
    gap: 0.75rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

.payment-fields {
    width: 100%;
    max-width: 380px;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.payment-input-label {
    display: block;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 0.25rem;
    font-family: "Work Sans", sans-serif;
}

.payment-stripe-row {
    display: flex;
    flex-direction: column;
}

.payment-stripe-row-inline {
    display: flex;
    gap: 0.75rem;
}

.payment-stripe-row-inline > * {
    flex: 1;
}

.payment-input {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    font-size: 16px;
    height: 35px;
    width: 100%;
    box-sizing: border-box;
    text-align: left;
}

.payment-checkbox-row {
    width: 100%;
    max-width: 380px;
    display: flex;
    justify-content: flex-start;
    align-items: center;
}

.payment-checkbox-label {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    cursor: pointer;
    position: relative;
}

.payment-checkbox-input {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
}

.payment-checkbox-custom {
    width: 18px;
    height: 18px;
    border: 2px solid rgba(255, 255, 255, 0.3);
    border-radius: 3px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.2s ease, border-color 0.2s ease;
    flex-shrink: 0;
}

.payment-checkbox-input:checked + .payment-checkbox-custom {
    background: #22c55e;
    border-color: #22c55e;
}

.payment-checkbox-input:checked + .payment-checkbox-custom::after {
    content: "\2713";
    color: #fff;
    font-size: 0.7rem;
    font-weight: 700;
    line-height: 1;
}

.payment-checkbox-text {
    font-size: 0.85rem;
    font-family: "Work Sans", sans-serif;
}

.payment-amount-row {
    width: 100%;
    max-width: 380px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0.75rem;
}

.payment-amount-display {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.15rem;
}

.payment-amount-label {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    opacity: 0.7;
    font-family: "Work Sans", sans-serif;
}

.payment-amount-value {
    font-size: 1.5rem;
    font-weight: 800;
    line-height: 1.2;
}

.payment-button-row {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    width: 100%;
    padding: 0.75rem 0;
}

.payment-nav-button {
    height: 35px;
    box-sizing: border-box;
    border-radius: 4px;
    transition: 0.2s ease-in-out;
    flex: 1;
    padding: 6px 16px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
}

.payment-nav-button:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}



/* ===== Styles/Pages/Account/PlanSelection.css ===== */
.planselection-container {
    height: 100vh;
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
}

.planselection-card {
    width: 90%;
    height: 90%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
    border-width: 1px;
    box-sizing: border-box;
}

.planselection-card-inner {
    width: 90%;
    height: 90%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
}

.planselection-title-wrapper {
    margin-bottom: 0.75rem;
}

.planselection-title {
    font-size: 1.875rem;
    line-height: 2.25rem;
    font-weight: 700;
    margin-bottom: 1rem;
}

.planselection-tab-row {
    display: flex;
    justify-content: center;
    gap: 0.5rem;
    margin-bottom: 0.5rem;
}

.planselection-tab {
    padding: 0.5rem 2rem;
    border: 2px solid transparent;
    border-radius: 0.5rem;
    font-family: "Work Sans", sans-serif;
    font-size: 0.85rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    cursor: pointer;
    transition: border-color 0.2s ease, background 0.2s ease;
    background: transparent;
}

.planselection-tab-active {
    border-color: #22c55e;
}

.planselection-plan-list {
    display: flex;
    align-items: stretch;
    justify-content: center;
    gap: 1.5rem;
    overflow-y: auto;
    height: 100%;
    max-height: 520px;
    width: 100%;
    padding: 0.75rem;
}

@media (max-width: 640px) {
    .planselection-container {
        padding: 0.75rem 0;
    }

    .planselection-card {
        height: 100%;
        justify-content: flex-start;
        padding: 0.75rem 0;
        box-sizing: border-box;
    }

    .planselection-card-inner {
        width: 100%;
        height: 100%;
        justify-content: flex-start;
    }

    .planselection-plan-list {
        flex-direction: column;
        align-items: stretch;
        justify-content: flex-start;
        gap: 1rem;
        max-height: none;
        padding: 0.5rem;
        flex: 1;
        min-height: 0;
        height: auto;
        overflow-y: auto;
    }

    .planselection-plan-card {
        max-width: 100%;
        width: 100%;
        padding: 1rem;
    }

    .planselection-plan-price {
        font-size: 1.5rem;
    }

    .planselection-title {
        font-size: 1.5rem;
        line-height: 1.75rem;
    }

    .planselection-title-wrapper {
        margin-top: 1rem;
    }

    .planselection-tab {
        padding: 0.4rem 1.25rem;
        font-size: 0.75rem;
    }

    .planselection-button-row {
        flex-direction: row;
        gap: 0.5rem;
        padding: 0.75rem 0;
        max-width: 300px;
    }

    .planselection-nav-button {
        flex: 1;
        min-width: 0;
        margin: 0;
    }
}

.planselection-plan-card {
    flex: 1;
    max-width: 320px;
    display: flex;
    flex-direction: column;
    border: 2px solid transparent;
    border-radius: 0.75rem;
    padding: 1.25rem;
    cursor: pointer;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
    background: rgba(255, 255, 255, 0.05);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
    text-align: inherit;
    font: inherit;
    color: inherit;
}

.planselection-plan-card:hover {
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

.planselection-plan-card-selected {
    border-color: #22c55e;
    box-shadow: 0 0 0 1px #22c55e, 0 4px 12px rgba(34, 197, 94, 0.2);
}

.planselection-plan-header {
    text-align: center;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    margin-bottom: 0.75rem;
}

.planselection-plan-name {
    font-size: 1.1rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    display: block;
    margin-bottom: 0.4rem;
}

.planselection-plan-price-row {
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 0.25rem;
}

.planselection-plan-price {
    font-size: 2rem;
    font-weight: 800;
    line-height: 1;
}

.planselection-plan-period {
    font-size: 0.85rem;
    font-weight: 500;
}

.planselection-plan-saving {
    display: inline-block;
    margin-top: 0.5rem;
    padding: 0.2rem 0.6rem;
    background: #22c55e;
    color: #fff;
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    border-radius: 9999px;
    letter-spacing: 0.03em;
}

.planselection-plan-features {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
    padding: 0.5rem 0;
}

.planselection-plan-feature {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.planselection-check-icon {
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #22c55e;
    color: #fff;
    font-size: 0.65rem;
    font-weight: 700;
    border-radius: 50%;
    line-height: 1;
}

.planselection-feature-text {
    font-size: 0.8rem;
    line-height: 1.4;
}

.planselection-button-row {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    width: 100%;
    max-width: 300px;
    padding: 1rem;
    margin-top: 0.5rem;
}

.planselection-nav-button {
    height: 35px;
    box-sizing: border-box;
    border-radius: 4px;
    transition: 0.2s ease-in-out;
    flex: 1;
    padding: 6px 16px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
}

.planselection-nav-button:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

/* ===== Styles/Pages/Account/Paywall.css ===== */
.paywall-container {
    height: 100vh;
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    overflow-x: hidden;
}

.paywall-card {
    width: 90%;
    max-width: 480px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
    border: 1px solid #fff;
    box-sizing: border-box;
    padding: 2rem;
}

.paywall-content {
    width: 100%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0.75rem;
    text-align: center;
}

.paywall-title {
    font-size: 30px;
    font-weight: 700;
    margin-bottom: 0.5rem;
}

.paywall-description {
    font-size: 0.875rem;
    line-height: 1.5;
    margin-bottom: 1rem;
}

.paywall-btn {
    width: 100%;
    height: 40px;
    box-sizing: border-box;
    border-radius: 4px;
    transition: 0.2s ease-in-out;
    padding: 6px 16px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.875rem;
}

.paywall-nav-btn {
    margin-top: 0.5rem;
    background: none;
    border: none;
    cursor: pointer;
    text-decoration: underline;
    font-size: 0.8rem;
}

/* ===== Styles/Pages/Account/Billing.css ===== */
.billing-container {
    width: 100%;
    min-height: 100vh;
    display: flex;
    justify-content: center;
    padding: 2rem 1rem;
    box-sizing: border-box;
}

.billing-card {
    width: 100%;
    max-width: 640px;
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    border: 1px solid #fff;
    box-sizing: border-box;
    padding: 2rem;
    border-radius: 4px;
    height: fit-content;
}

.billing-title {
    font-size: 1.75rem;
    font-weight: 700;
}

.billing-section {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.15);
}

.billing-section:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.billing-label {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    opacity: 0.7;
}

.billing-plan-name {
    font-size: 1.25rem;
    font-weight: 600;
}

.billing-trial-banner {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    padding: 0.75rem 1rem;
    border-radius: 4px;
    background: rgba(61, 165, 138, 0.15);
    flex-wrap: wrap;
}

.billing-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
}

.billing-btn {
    height: 40px;
    box-sizing: border-box;
    border-radius: 4px;
    transition: 0.2s ease-in-out;
    padding: 6px 20px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.875rem;
    white-space: nowrap;
}

/* ===== Styles/Pages/Account/AccountSettings.css ===== */
.account-settings-container {
    width: 100%;
    min-height: 100vh;
    display: flex;
    justify-content: center;
    padding: 2rem 1rem;
    box-sizing: border-box;
}

.account-settings-card {
    width: 100%;
    max-width: 640px;
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    border: 1px solid #fff;
    box-sizing: border-box;
    padding: 2rem;
    border-radius: 4px;
    height: fit-content;
}

.account-settings-title {
    font-size: 1.75rem;
    font-weight: 700;
}

.account-settings-section {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding-bottom: 1.25rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.15);
}

.account-settings-section:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.account-settings-label {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    opacity: 0.7;
}

.account-settings-radio-row {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    cursor: pointer;
}

.account-settings-note {
    font-size: 0.8rem;
    opacity: 0.7;
}

.account-settings-select {
    padding: 0.5rem;
    border-radius: 4px;
    max-width: 320px;
}

.account-settings-btn {
    height: 40px;
    box-sizing: border-box;
    border-radius: 4px;
    transition: 0.2s ease-in-out;
    padding: 6px 20px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.875rem;
    white-space: nowrap;
    align-self: flex-start;
}

.account-settings-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.account-settings-saved {
    font-size: 0.8rem;
    opacity: 0.8;
}

/* ===== Styles/Pages/Account/Analytics.css ===== */
.analytics-container {
    width: 100%;
    padding: 2rem 1rem;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

.analytics-title {
    font-size: 1.75rem;
    font-weight: 700;
}

.analytics-filters {
    display: flex;
    align-items: flex-end;
    gap: 1rem;
    flex-wrap: wrap;
}

.analytics-date-input {
    display: block;
    padding: 0.4rem 0.6rem;
    border-radius: 4px;
    margin-top: 0.25rem;
}

.analytics-btn {
    height: 38px;
    box-sizing: border-box;
    border-radius: 4px;
    padding: 6px 20px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.875rem;
}

.analytics-section {
    border: 1px solid #fff;
    border-radius: 4px;
    padding: 1.25rem;
}

.analytics-section-title {
    font-size: 1.1rem;
    font-weight: 600;
    margin-bottom: 0.75rem;
}

.analytics-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.875rem;
}

.analytics-table th, .analytics-table td {
    text-align: left;
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

/* ===== Styles/Pages/Dashboard/Dashboard.css ===== */
.dashboard-container {
    height: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

/* ── Tab Bar ── */
.dashboard-tabs-wrapper {
    padding: 0.75rem 0.75rem 0;
}

.dashboard-tabs-container {
    display: flex;
    gap: 0;
    border-bottom-width: 1px;
    border-bottom-style: solid;
    overflow-x: auto;
}

.dashboard-tab-button {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.625rem 1.25rem;
    font-size: 0.875rem;
    font-weight: 500;
    border: none;
    border-bottom: 2px solid transparent;
    background: transparent;
    cursor: pointer;
    white-space: nowrap;
    transition: color 0.2s, border-color 0.2s, background-color 0.2s;
    opacity: 0.65;
}

.dashboard-tab-button:hover {
    opacity: 1;
}

.dashboard-tab-active {
    opacity: 1;
    border-bottom-color: rgb(0, 172, 172);
}

.dashboard-tab-icon {
    display: flex;
    align-items: center;
}

/* ── Chart Area ── */
.dashboard-chart-area {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    flex: 1;
    min-height: 0;
    overflow: auto;
    padding: 0.5rem;
}

.dashboard-chart-row {
    min-height: 300px;
    width: 100%;
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
    flex-shrink: 0;
}

@media (max-width: 640px) {
    .dashboard-chart-area {
        padding-bottom: 80px;
    }

    .dashboard-chart-row {
        min-height: 250px;
    }

    .dashboard-chart-cell {
        min-height: 250px;
    }
}

@media (min-width: 640px) {
    .dashboard-chart-row {
        grid-template-columns: repeat(6, minmax(0, 1fr));
    }
}

@media (min-width: 768px) {
    .dashboard-chart-row {
        grid-template-columns: repeat(12, minmax(0, 1fr));
    }
}

.dashboard-chart-cell {
    display: flex;
    padding: 1rem;
    border-radius: 0.5rem;
    overflow: hidden;
    min-width: 0;
    min-height: 300px;
}

/* Item 11 (chart audit): a chart whose query legitimately returns zero rows -- see ChartDetailDto.isEmpty
   -- still takes its grid slot, but shows this instead of an empty ApexChart. */
.dashboard-chart-empty-wrap {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    width: 100%;
    text-align: center;
}

.dashboard-chart-empty-title {
    font-size: 0.9rem;
    font-weight: 500;
    opacity: 0.85;
}

.dashboard-chart-empty {
    font-size: 0.85rem;
    opacity: 0.6;
}

.dashboard-chart-inner {
    width: 100%;
    height: 100%;
    min-width: 0;
    transition: opacity 0.15s ease;
}

/* col-span-* for chart grid column spans */
.col-span-1 { grid-column: span 1 / span 1; }
.col-span-2 { grid-column: span 2 / span 2; }
.col-span-3 { grid-column: span 3 / span 3; }
.col-span-4 { grid-column: span 4 / span 4; }
.col-span-5 { grid-column: span 5 / span 5; }
.col-span-6 { grid-column: span 6 / span 6; }
.col-span-7 { grid-column: span 7 / span 7; }
.col-span-8 { grid-column: span 8 / span 8; }
.col-span-9 { grid-column: span 9 / span 9; }
.col-span-10 { grid-column: span 10 / span 10; }
.col-span-11 { grid-column: span 11 / span 11; }
.col-span-12 { grid-column: span 12 / span 12; }

/* Task 30 (2026-08-02): below 640px .dashboard-chart-row has no grid-template-columns (see the base
   rule above), so the grid engine auto-generates one implicit column per span value for every
   col-span-N card -- on a phone viewport that rendered charts as narrow slivers side-by-side instead
   of stacking full-width. This rule must stay AFTER the plain .col-span-N rules above (equal
   specificity, later source order wins) so it actually overrides them inside the media query. */
@media (max-width: 640px) {
    .col-span-1, .col-span-2, .col-span-3, .col-span-4, .col-span-5, .col-span-6,
    .col-span-7, .col-span-8, .col-span-9, .col-span-10, .col-span-11, .col-span-12 {
        grid-column: 1 / -1;
    }
}

/* 2026-08-09 incident: these rules already existed in Dashboard.razor.css (the 0ba stattile fix),
   but that file is Blazor CSS-isolation output and index.html never links the generated
   {Assembly}.styles.css bundle -- this app's real stylesheet is this file, concatenated into
   bundle.css by build-bundle.sh. The isolation file was therefore dead code and these rules never
   reached the browser: .dashboard-stattile-row/-stattile had no display rule at all (UA default
   block, so five tiles stacked as a vertical list) and the label/value spans had no display rule
   either (UA default inline, so "$627 Gross Profit" ran together on one line). Mirrors beta's
   (SellerTally.App Dashboard.razor.css) proven layout. */
.dashboard-stattile-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: 0.75rem;
    width: 100%;
    height: 100%;
    align-content: center;
}

.dashboard-stattile {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    min-width: 0;
    text-align: center;
}

.dashboard-stattile-value {
    font-size: 1.5rem;
    font-weight: 700;
    line-height: 1.2;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.dashboard-stattile-negative {
    color: #ef4444;
}

.dashboard-stattile-label {
    font-size: 0.8rem;
    opacity: 0.75;
}

@media (max-width: 640px) {
    .dashboard-stattile-row {
        grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
    }
    .dashboard-stattile-value {
        font-size: 1.15rem;
    }
}

/* ===== Styles/Pages/Reports/Report.css ===== */
/* ============================================================
   Part 1: QuickGrid Base Styles (from ReportGrid.css)
   ============================================================ */

.report-quickgrid-container {
    --report-col-min-width: 200px;
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    overflow: auto;
}

.report-quickgrid-container > div {
    width: 100%;
    height: auto;
    overflow: visible;
}

.report-quickgrid-container table {
    width: max-content;
    min-width: 0;
    table-layout: auto;
    flex: none !important;
    border-collapse: separate !important;
    border-spacing: 0;
}

.report-quickgrid-container table th {
    width: auto !important;
    flex: none !important;
}

.report-quickgrid-container table td {
    width: auto !important;
    flex: none !important;
}

.report-quickgrid-container table tbody tr {
    height: 24px;
    max-height: 24px;
    transition: background-color 0.2s ease;
}

.report-quickgrid-container table tbody tr:nth-child(even) {
    background-color: rgba(128, 128, 128, 0.05);
}

.report-quickgrid-container table tbody tr:hover {
    background-color: rgba(128, 128, 128, 0.1);
}

.report-quickgrid-container table thead tr {
    height: 24px;
    max-height: 24px;
}

.report-quickgrid-container table th {
    position: sticky;
    top: 0;
    z-index: 10;
    padding: 0 !important;
    background: transparent !important;
}

.report-quickgrid-container th,
.report-quickgrid-container td {
    height: 24px;
    max-height: 24px;
    overflow: hidden;
    text-overflow: ellipsis;
    vertical-align: middle;
    font-size: 0.9rem;
    white-space: nowrap;
    min-width: var(--report-col-min-width) !important;
    width: auto !important;
    max-width: none !important;
}

.report-quickgrid-container table th {
    font-size: 1rem;
}

.report-quickgrid-container table td.report-text-right,
.report-quickgrid-container table th.report-text-right {
    text-align: right !important;
}

.report-quickgrid-container table td.report-text-left,
.report-quickgrid-container table th.report-text-left {
    text-align: left !important;
}

.report-quickgrid-container table td.text-center,
.report-quickgrid-container table th.text-center {
    text-align: center !important;
}

.report-quickgrid-container div.report-text-right {
    text-align: right !important;
    display: block !important;
    width: 100% !important;
    min-width: var(--report-col-min-width);
}

.report-quickgrid-container div.report-text-left {
    text-align: left !important;
    display: block !important;
    width: 100% !important;
    min-width: var(--report-col-min-width);
}

.report-quickgrid-container div.report-text-center {
    text-align: center !important;
    display: block !important;
    width: 100% !important;
    min-width: var(--report-col-min-width);
}

.report-quickgrid-end-spacer {
    height: 30px;
    flex: 0 0 auto;
}


/* ============================================================
   Part 2: Report Page Layout & Overrides (original Report.css)
   ============================================================ */

/* ---- Page Layout ---- */

.report-page {
    padding: 0;
    margin: 0;
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.report-content {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 0.75rem;
    overflow: hidden;
    flex: 1;
}

/* ---- QuickGrid Container Override ---- */

.report-quickgrid-container {
    border-radius: 8px;
    overflow: auto;
}

/* ---- Back Button ---- */

.report-back-row {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-shrink: 0;
}

.report-back-btn {
    padding: 0.5rem 1rem;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 10px;
    transition: all 0.2s ease;
}

.report-back-icon {
    width: 1.25rem;
    height: 1.25rem;
}

/* ---- Form Fields Grid ---- */

.report-fields {
    width: 100%;
    display: grid;
    gap: 1rem 30px;
    row-gap: 30px;
    grid-template-columns: repeat(1, 1fr);
}

@media (min-width: 768px) {
    .report-fields {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1024px) {
    .report-fields {
        grid-template-columns: repeat(3, 1fr);
    }
}

.report-field {
    display: grid;
    grid-template-columns: repeat(10, 1fr);
    width: 100%;
    position: relative;
}

.report-field-label {
    grid-column: span 2 / span 2;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    text-align: left;
    padding-left: 4px;
}

.report-field-input {
    grid-column: span 8 / span 8;
}

.report-field-input.report-input {
    width: 100%;
    min-width: 0;
    max-width: none;
    box-sizing: border-box;
}

select.report-field-input {
    padding-right: 30px;
    -moz-appearance: none;
    -webkit-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='%23666'%3E%3Cpath fill-rule='evenodd' d='M12.53 16.28a.75.75 0 0 1-1.06 0l-7.5-7.5a.75.75 0 0 1 1.06-1.06L12 14.69l6.97-6.97a.75.75 0 1 1 1.06 1.06l-7.5 7.5Z' clip-rule='evenodd' /%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 14px;
}

.report-field-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 1rem;
    padding: 0 4px;
}

.report-field-actions .report-btn {
    margin: 0;
}

/* ---- QuickGrid Table Overrides ---- */

.report-quickgrid-container table tbody tr {
    height: 28px;
    max-height: 28px;
    transition: background-color 0.2s ease;
}

.report-quickgrid-container table tbody tr:nth-child(odd) {
    background-color: rgba(128, 128, 128, 0.03);
}

.report-quickgrid-container table tbody tr:nth-child(even) {
    background-color: rgba(128, 128, 128, 0.08);
}

.report-quickgrid-container table tbody tr:hover {
    background-color: rgba(128, 128, 128, 0.12);
}

.report-quickgrid-container table {
    border-collapse: collapse !important;
}

.report-quickgrid-container table tbody td {
    border-bottom: 1px solid rgba(207, 207, 207, 0.15);
}

.report-quickgrid-container table thead tr {
    /* Mazhar's standing grid rule (mazhar-rules.md 7): data rows are SLIGHTLY shorter than the
       header, "not half". This grid was 50px header / 20px data = 40%, past half. Beta's DataGrid
       is the reference (40/36); reports run denser, so the pair here is 32/28 - same relationship,
       tighter scale. .report-header-inner is the flex band INSIDE th, so it moves in the same edit
       or the header would stay 50px regardless of what th declares. */
    height: 32px;
    max-height: 32px;
}

.report-quickgrid-container td {
    height: 28px;
    max-height: 28px;
    font-size: 0.75rem;
    min-width: 50px !important;
    width: auto !important;
    max-width: 250px !important;
    padding: 0 !important;
}

.report-quickgrid-container table th {
    height: 32px;
    max-height: 32px;
    font-size: 0.95rem;
    min-width: 50px !important;
    width: auto !important;
    max-width: 250px !important;
}

/* ---- Header Row ---- */

.report-header-inner {
    width: 100%;
    height: 32px;
    display: flex;
    align-items: center;
}

.reportpage-header-cell {
    padding: 0 8px;
    color: white;
    font-size: 0.95rem;
    font-weight: 700;
    text-align: center;
    width: 100%;
    border-left: 1px solid rgba(207, 207, 207, 0.15);
    border-right: 1px solid rgba(207, 207, 207, 0.15);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.reportpage-data-cell {
    padding: 0 8px;
    border-left: 1px solid rgba(207, 207, 207, 0.15);
    border-right: 1px solid rgba(207, 207, 207, 0.15);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ---- No Data ---- */

.report-no-data,
.report-loading {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
}


/* ============================================================
   Part 3: Page-Specific Input & Button Classes
   ============================================================ */

.report-input {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    height: 35px;
    width: 200px;
    min-width: 200px;
    max-width: 200px;
    text-align: left;
}

.report-btn {
    height: 35px;
    box-sizing: border-box;
    border-radius: 4px;
    transition: 0.2s ease-in-out;
    min-width: 150px;
    padding: 6px 16px;
    margin: 10px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
}



/* ============================================================
   Part 6: Disabled Button State (global)
   ============================================================ */

.report-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

/* ===== Styles/Pages/Reports/ReportBrowser.css ===== */
.reportbrowser-page {
    height: 100%;
    display: flex;
    flex-direction: column;
    overflow: auto;
}

.reportbrowser-body {
    flex: 1;
    padding: 0.75rem;
    display: flex;
    flex-direction: column;
    overflow: auto;
}

.reportbrowser-top-row {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.75rem;
}

.reportbrowser-btn-back {
    padding: 0.5rem 1rem;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 10px;
    transition: all 0.2s ease;
}

.reportbrowser-back-icon {
    width: 1.25rem;
    height: 1.25rem;
}

.reportbrowser-breadcrumb {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

.reportbrowser-breadcrumb-item {
    padding: 4px 8px;
    border-radius: 6px;
    cursor: pointer;
    transition: background-color 0.15s ease;
}

.reportbrowser-breadcrumb-item:hover {
    background-color: rgba(255, 255, 255, 0.08);
}

.reportbrowser-breadcrumb-sep {
    color: rgba(255, 255, 255, 0.3);
}

.reportbrowser-empty {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
}

.reportbrowser-grid {
    display: grid;
    gap: 0.5rem;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
}

.reportbrowser-item-btn {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    padding: 0.5rem;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 12px;
    text-align: left;
    transition: all 0.2s ease;
}

.reportbrowser-item-btn:hover {
    border-color: rgba(255, 255, 255, 0.25);
}

.reportbrowser-item-icon-wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    height: 1.25rem;
    width: 1.25rem;
}

.reportbrowser-item-name {
    flex-grow: 1;
}

.reportbrowser-item-arrow {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 6px;
    color: inherit;
    background: transparent;
    transition: all 0.15s ease;
    flex-shrink: 0;
}

.reportbrowser-item-btn:hover .reportbrowser-item-arrow {
    color: inherit;
    background: rgba(128, 128, 128, 0.15);
}

.reportbrowser-arrow-icon {
    width: 0.875rem;
    height: 0.875rem;
}

@media (max-width: 640px) {
    .reportbrowser-page {
        height: auto;
        min-height: 100%;
        overflow: visible;
        padding-bottom: 80px;
        box-sizing: border-box;
    }

    .reportbrowser-body {
        overflow-y: visible;
        flex: none;
    }

    .reportbrowser-breadcrumb {
        flex-wrap: wrap;
    }

    .reportbrowser-grid {
        grid-template-columns: 1fr;
    }
}

/* ===== Styles/Pages/Reports/CoaTree.css ===== */
.coatree-page {
    padding: 0;
    margin: 0;
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.coatree-content {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 0.75rem;
    overflow: hidden;
    flex: 1;
}

.coatree-toolbar {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.coatree-toolbar-label {
    font-size: 0.9rem;
}

.coatree-date-input {
    height: 35px;
    width: 200px;
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    box-shadow: 0 0 0 0.2px;
}

.coatree-table {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border-radius: 8px;
}

.coatree-header {
    display: grid;
    grid-template-columns: var(--coatree-cols);
    align-items: center;
    gap: 0.5rem;
    padding: 0.6rem 0.75rem;
    font-weight: 700;
    font-size: 0.85rem;
    color: white;
}

.coatree-tree {
    flex: 1;
    overflow-y: auto;
    padding: 0.5rem 0.75rem;
}

/* Column widths live in one variable so the header row and every nested node row stay in step -- nested
   rows are indented via margin-left on .coatree-children, which shrinks the row from the left while its
   right edge stays put, so fixed-width right-aligned amount columns line up at every depth. */
.coatree-page {
    --coatree-cols: minmax(0, 1fr) 120px 120px 120px;
}

.coatree-empty {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 2rem 0;
}

.coatree-node-row {
    display: grid;
    grid-template-columns: var(--coatree-cols);
    align-items: center;
    gap: 0.5rem;
    padding: 0.35rem 0.25rem;
    border-radius: 4px;
    width: 100%;
    text-align: left;
    background: none;
    border: none;
    font: inherit;
    cursor: pointer;
    color: inherit;
}

/* minmax(0, 1fr) above plus this min-width:0 is what lets long account names ellipsis instead of
   forcing the row wider than its container and knocking the amount columns out of alignment. */
.coatree-node-label {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
}

.coatree-amount {
    text-align: right;
    font-size: 0.875rem;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.coatree-clickable {
    cursor: pointer;
}

.coatree-clickable:hover {
    background: rgba(127, 127, 127, 0.12);
}

.coatree-toggle,
.coatree-toggle-spacer {
    display: inline-block;
    width: 12px;
    height: 12px;
    flex-shrink: 0;
}

.coatree-toggle {
    border-style: solid;
    border-color: currentColor transparent transparent transparent;
    border-width: 6px 4px 0 4px;
    transition: transform 120ms ease-in-out;
}

.coatree-toggle-collapsed {
    transform: rotate(-90deg);
}

.coatree-toggle-expanded {
    transform: rotate(0deg);
}

.coatree-node-name {
    font-size: 0.875rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Codes are fixed-width and lead the label, so a monospace face keeps every name starting at the same
   x-position within a level instead of drifting with the digit widths. */
.coatree-node-code {
    font-size: 0.75rem;
    opacity: 0.65;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    white-space: nowrap;
    flex-shrink: 0;
}

.coatree-children {
    margin-left: 22px;
    border-left: 1px solid rgba(127, 127, 127, 0.25);
    padding-left: 6px;
}

/* Level-based emphasis: root (1) boldest, leaf/sub-account (4) lightest */
.coatree-level-1 .coatree-node-name {
    font-weight: 700;
    font-size: 1rem;
}

.coatree-level-2 .coatree-node-name {
    font-weight: 600;
}

.coatree-level-4 .coatree-node-name {
    opacity: 0.9;
}

/* ---- Responsive ---- */

/* Tablet: tighter amount columns and less indent per level, so deeply nested names keep usable width. */
@media (max-width: 1024px) {
    .coatree-page {
        --coatree-cols: minmax(0, 1fr) 95px 95px 95px;
    }

    .coatree-amount,
    .coatree-node-name {
        font-size: 0.8rem;
    }

    .coatree-children {
        margin-left: 14px;
    }
}

/* Phone: three amount columns can't fit beside a readable name, so Debit and Credit drop away and only
   Balance -- the figure that actually answers "how much is in this account" -- is kept. */
@media (max-width: 640px) {
    .coatree-page {
        --coatree-cols: minmax(0, 1fr) 100px;
        height: auto;
        min-height: 100%;
        overflow: visible;
    }

    .coatree-amount-debit,
    .coatree-amount-credit,
    .coatree-header .coatree-amount:not(:last-child) {
        display: none;
    }

    .coatree-content {
        overflow-y: visible;
        flex: none;
    }

    .coatree-tree {
        overflow-y: visible;
    }

    .coatree-toolbar {
        flex-wrap: wrap;
    }

    .coatree-children {
        margin-left: 10px;
    }
}

/* ===== Styles/Pages/Reports/Form1099K.css ===== */
.f1099k-page {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.f1099k-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 0.75rem;
    overflow-y: auto;
}

.f1099k-toolbar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.f1099k-label {
    font-size: 0.9rem;
}

.f1099k-hint {
    font-size: 0.82rem;
    opacity: 0.8;
    max-width: 70ch;
}

.f1099k-input {
    height: 34px;
    border: none;
    border-radius: 0.25rem;
    padding: 0.4rem 0.5rem;
    box-shadow: 0 0 0 0.2px;
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
}

.f1099k-notes {
    height: auto;
    resize: vertical;
    font-family: inherit;
}

.f1099k-btn {
    height: 34px;
    min-width: 110px;
    border: none;
    border-radius: 4px;
    padding: 0 16px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    text-transform: uppercase;
    cursor: pointer;
    transition: 0.2s ease-in-out;
}

.f1099k-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
    align-items: start;
}

.f1099k-card {
    border-radius: 8px;
    padding: 0.9rem 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}

.f1099k-card-title {
    font-weight: 700;
    font-size: 0.9rem;
}

.f1099k-field {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 150px;
    align-items: center;
    gap: 0.5rem;
}

.f1099k-field label {
    font-size: 0.82rem;
}

/* Two columns of months on desktop so the block doesn't run the full page height. */
.f1099k-months {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.5rem 1rem;
}

.f1099k-check {
    font-size: 0.82rem;
    font-weight: 600;
    padding-top: 0.3rem;
}

/* The self-check colours are the whole point of these two lines -- a typo in the entry would otherwise
   surface later as a phantom variance in the reconciliation and get blamed on our data. */
.f1099k-ok {
    color: #2e7d32;
}

.f1099k-err {
    color: #c62828;
}

@media (max-width: 1024px) {
    .f1099k-grid {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (max-width: 640px) {
    .f1099k-page {
        height: auto;
        min-height: 100%;
        overflow: visible;
    }

    .f1099k-months {
        grid-template-columns: minmax(0, 1fr);
    }

    .f1099k-field {
        grid-template-columns: minmax(0, 1fr) 110px;
    }

    .f1099k-toolbar {
        gap: 0.5rem;
    }
}

/* ===== Styles/Pages/SubAccounts/SubAccountSearch.css ===== */
/* ============================================================
   Pages/SubAccountSearch.css — SubAccountSearch page styles.
   Zero Tailwind utilities — all explicit custom CSS.
   ============================================================ */

.subaccountsearch-page {
    padding: 0;
    margin: 0;
    width: 100%;
}

.subaccountsearch-content {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding: 0.75rem;
    overflow: hidden;
    flex: 1;
}

.subaccountsearch-toolbar {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.subaccountsearch-search-wrapper {
    position: relative;
    display: flex;
    align-items: center;
    flex: 1;
}

.subaccountsearch-search-input {
    width: 100%;
    min-width: 400px;
    padding-right: 40px !important;
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    height: 35px;
    box-sizing: border-box;
}

.subaccountsearch-search-btn {
    position: absolute;
    right: 2px;
    top: 2px;
    bottom: 2px;
    width: 32px;
    border: none;
    background: transparent;
    cursor: pointer;
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 0;
}

.subaccountsearch-search-btn::before {
    content: '';
    display: block;
    width: 20px;
    height: 20px;
    background-color: currentColor;
    mask: url('/Assets/Icons/search.svg') no-repeat center / contain;
    -webkit-mask: url('/Assets/Icons/search.svg') no-repeat center / contain;
}

.subaccountsearch-actions {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-shrink: 0;
}

/* ---- List View ---- */

.subaccountsearch-list {
    width: 100%;
    flex: 1;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.subaccountsearch-list-table {
    border-radius: 8px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.subaccountsearch-list-header {
    display: grid;
    grid-template-columns: 1fr 130px 110px 100px;
    height: 50px;
}

.subaccountsearch-list-header .subaccountsearch-list-cell {
    font-weight: 700;
    font-size: 0.95rem;
    color: white;
}

.subaccountsearch-list-body {
    overflow-y: auto;
    flex: 1;
}

.subaccountsearch-list-item {
    display: grid;
    grid-template-columns: 1fr 130px 110px 100px;
    height: 50px;
    position: relative;
}

.subaccountsearch-list-item::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 14px;
    right: 14px;
    height: 1px;
    background: rgba(207, 207, 207, 0.2);
}

.subaccountsearch-list-item:last-child::after {
    display: none;
}

.subaccountsearch-list-cell {
    display: flex;
    align-items: center;
    padding: 0 16px;
    font-size: 0.875rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.subaccountsearch-list-cell-center {
    justify-content: center;
}

/* Status colors - static, not affected by theme */
.status-active {
    color: rgb(34, 197, 94) !important;
}

.status-inactive {
    color: rgb(239, 68, 68) !important;
}

.status-pending {
    color: rgb(251, 146, 60) !important;
}

/* Edit button */
.subaccountsearch-edit-btn {
    width: 30px;
    height: 30px;
    border: none;
    border-radius: 0.25rem;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    transition: all 200ms ease-in-out;
}

.subaccountsearch-edit-btn::before {
    content: '';
    display: block;
    width: 16px;
    height: 16px;
    background-color: white;
    mask: url('/Assets/Icons/edit.svg') no-repeat center / contain;
    -webkit-mask: url('/Assets/Icons/edit.svg') no-repeat center / contain;
}

.subaccountsearch-add-btn {
    height: 35px;
    box-sizing: border-box;
    border-radius: 4px;
    transition: 0.2s ease-in-out;
    min-width: 150px;
    padding: 6px 16px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
}

.subaccountsearch-add-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

.subaccountsearch-empty {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 1rem 0;
}

@media (max-width: 640px) {
    .subaccountsearch-page {
        height: auto;
        min-height: 100%;
        overflow: visible;
        padding-bottom: 80px;
        box-sizing: border-box;
    }

    .subaccountsearch-content {
        overflow-y: visible;
        flex: none;
    }

    .subaccountsearch-toolbar {
        flex-direction: column;
        align-items: stretch;
        gap: 0.5rem;
    }

    .subaccountsearch-search-input {
        min-width: 0;
    }

    .subaccountsearch-actions {
        justify-content: stretch;
    }

    .subaccountsearch-add-btn {
        width: 100%;
        min-width: 0;
    }

    .subaccountsearch-list {
        flex: none;
        overflow: visible;
    }

    .subaccountsearch-list-table {
        flex: none;
        overflow: visible;
    }

    .subaccountsearch-list-body {
        overflow-y: visible;
        flex: none;
    }

    .subaccountsearch-list-header,
    .subaccountsearch-list-item {
        grid-template-columns: 1fr 90px 80px 60px;
    }

    .subaccountsearch-list-cell {
        padding: 0 8px;
        font-size: 0.75rem;
    }
}

/* ===== Styles/Pages/SubAccounts/SubAccountSave.css ===== */
/* ============================================================
   Pages/SubAccountSave.css — SubAccountSave page styles.
   Zero Tailwind utilities — all explicit custom CSS.
   ============================================================ */

.subaccountsave-page {
    height: 100%;
    width: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.subaccountsave-body {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    flex: 1;
}

.subaccountsave-form {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding: 2rem;
    width: 400px;
}

.subaccountsave-field {
    display: grid;
    grid-template-columns: repeat(10, 1fr);
    width: 100%;
    position: relative;
}

.subaccountsave-field-label {
    grid-column: span 2 / span 2;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    text-align: left;
    padding-left: 4px;
    cursor: pointer;
    font-family: "Work Sans", sans-serif;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.6;
    margin: 0px;
}

.subaccountsave-field-input {
    grid-column: span 8 / span 8;
}

.subaccountsave-field-input.subaccountsave-input {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    height: 35px;
    text-align: left;
    width: 100%;
    min-width: 0;
    max-width: none;
    box-sizing: border-box;
}

select.subaccountsave-field-input {
    padding-right: 30px;
    -moz-appearance: none;
    -webkit-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='%23666'%3E%3Cpath fill-rule='evenodd' d='M12.53 16.28a.75.75 0 0 1-1.06 0l-7.5-7.5a.75.75 0 0 1 1.06-1.06L12 14.69l6.97-6.97a.75.75 0 1 1 1.06 1.06l-7.5 7.5Z' clip-rule='evenodd' /%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 14px;
}

.subaccountsave-footer {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    width: 400px;
    padding: 0 2rem;
}

.subaccountsave-cursor-help {
    cursor: help;
}

.subaccountsave-footer .subaccountsave-btn {
    height: 35px;
    box-sizing: border-box;
    border-radius: 4px;
    transition: 0.2s ease-in-out;
    min-width: 150px;
    padding: 6px 16px;
    margin: 0;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
}

.subaccountsave-footer .subaccountsave-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

/* ===== Styles/Pages/SubAccounts/SecAccountUpload.css ===== */
.secaccountupload-page {
    height: 100%;
    width: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.secaccountupload-body {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    flex: 1;
}

.secaccountupload-form {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding: 2rem;
    width: 300px;
}

.secaccountupload-field {
    display: grid;
    grid-template-columns: repeat(10, 1fr);
    width: 100%;
    position: relative;
}

.secaccountupload-field-label {
    grid-column: span 2 / span 2;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    text-align: left;
    padding-left: 4px;
    cursor: pointer;
    font-family: "Work Sans", sans-serif;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.6;
    margin: 0px;
}

.secaccountupload-field-input {
    grid-column: span 8 / span 8;
}

.secaccountupload-field-input.secaccountupload-input {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    height: 35px;
    text-align: left;
    width: 100%;
    min-width: 0;
    max-width: none;
    box-sizing: border-box;
}

.secaccountupload-footer {
    display: flex;
    justify-content: center;
    gap: 1rem;
    width: 300px;
    padding: 0 2rem;
}

.secaccountupload-footer .secaccountupload-btn {
    height: 35px;
    box-sizing: border-box;
    border-radius: 4px;
    transition: 0.2s ease-in-out;
    min-width: 150px;
    padding: 6px 16px;
    margin: 0;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
    display: flex;
    align-items: center;
    justify-content: center;
}

.secaccountupload-footer .secaccountupload-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

/* ===== Styles/Pages/SubAccounts/SecAccountList.css ===== */
/* ============================================================
   Pages/SecAccountList.css — SecAccountList page styles.
   Zero Tailwind utilities — all explicit custom CSS.
   ============================================================ */

.secaccountlist-page {
    padding: 0;
    margin: 0;
    width: 100%;
}

.secaccountlist-content {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding: 0.75rem;
    overflow: hidden;
    flex: 1;
}

.secaccountlist-header {
    display: flex;
    justify-content: flex-end;
    align-items: center;
}

/* ---- List View ---- */

.secaccountlist-list {
    width: 100%;
    flex: 1;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.secaccountlist-list-table {
    border-radius: 8px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.secaccountlist-list-header {
    display: grid;
    grid-template-columns: 1fr 80px;
    height: 50px;
}

.secaccountlist-list-header .secaccountlist-list-cell {
    font-weight: 700;
    font-size: 0.95rem;
    color: white;
}

.secaccountlist-list-body {
    overflow-y: auto;
    flex: 1;
}

.secaccountlist-list-item {
    display: grid;
    grid-template-columns: 1fr 80px;
    height: 50px;
    position: relative;
}

.secaccountlist-list-item::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 14px;
    right: 14px;
    height: 1px;
    background: rgba(207, 207, 207, 0.2);
}

.secaccountlist-list-item:last-child::after {
    display: none;
}

.secaccountlist-list-cell {
    display: flex;
    align-items: center;
    padding: 0 16px;
    font-size: 0.875rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.secaccountlist-list-cell-center {
    justify-content: center;
}

/* Delete button */
.secaccountlist-delete-btn {
    width: 30px;
    height: 30px;
    border: none;
    border-radius: 0.25rem;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    transition: all 200ms ease-in-out;
}

.secaccountlist-delete-btn::before {
    content: '';
    display: block;
    width: 16px;
    height: 16px;
    background-color: white;
    mask: url('/Assets/Icons/delete.svg') no-repeat center / contain;
    -webkit-mask: url('/Assets/Icons/delete.svg') no-repeat center / contain;
}

.secaccountlist-add-btn {
    height: 35px;
    box-sizing: border-box;
    border-radius: 4px;
    transition: 0.2s ease-in-out;
    min-width: 150px;
    padding: 6px 16px;
    margin: 10px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
}

.secaccountlist-add-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

.secaccountlist-empty {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 1rem 0;
}

/* ===== Styles/Pages/SubAccounts/ItemSaveOrEdit.css ===== */
.itemsaveoredit-page {
    padding: 0;
    margin: 0;
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.itemsaveoredit-content {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 0.75rem;
    overflow: hidden;
    flex: 1;
}

.itemsaveoredit-fields {
    width: 100%;
    display: grid;
    gap: 1rem 30px;
    row-gap: 30px;
    grid-template-columns: repeat(1, 1fr);
}

@media (min-width: 768px) {
    .itemsaveoredit-fields {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1024px) {
    .itemsaveoredit-fields {
        grid-template-columns: repeat(3, 1fr);
    }
}

.itemsaveoredit-field {
    display: grid;
    grid-template-columns: repeat(10, 1fr);
    width: 100%;
    position: relative;
}

.itemsaveoredit-field-label {
    grid-column: span 2 / span 2;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    text-align: left;
    padding-left: 4px;
}

.itemsaveoredit-field-input {
    grid-column: span 8 / span 8;
}

.itemsaveoredit-field-input-checkbox {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    padding-left: 4px;
}

.itemsaveoredit-field-input.itemsaveoredit-input {
    width: 100%;
    min-width: 0;
    max-width: none;
    box-sizing: border-box;
}

select.itemsaveoredit-field-input {
    padding-right: 30px;
    -moz-appearance: none;
    -webkit-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='%23666'%3E%3Cpath fill-rule='evenodd' d='M12.53 16.28a.75.75 0 0 1-1.06 0l-7.5-7.5a.75.75 0 0 1 1.06-1.06L12 14.69l6.97-6.97a.75.75 0 1 1 1.06 1.06l-7.5 7.5Z' clip-rule='evenodd' /%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 14px;
}

.itemsaveoredit-checkbox-field {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 1rem;
}

.itemsaveoredit-field-checkbox {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
}

.itemsaveoredit-checkbox {
    width: 20px;
    height: 20px;
    cursor: pointer;
    accent-color: rgb(61, 165, 138);
    flex-shrink: 0;
}

.itemsaveoredit-field-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 1rem;
    padding: 0 4px;
}

.itemsaveoredit-field-actions .itemsaveoredit-btn {
    margin: 0;
}

.itemsaveoredit-footer {
    display: flex;
    justify-content: flex-end;
    gap: 1rem;
}

/* ---- List View ---- */

.itemsaveoredit-list {
    width: 100%;
    flex: 1;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    margin-top: 30px;
}

.itemsaveoredit-list-table {
    border-radius: 8px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.itemsaveoredit-list-header {
    display: grid;
    height: 50px;
}

.itemsaveoredit-list-header .itemsaveoredit-list-cell {
    font-weight: 700;
    font-size: 0.95rem;
    color: white;
}

.itemsaveoredit-list-body {
    overflow-y: auto;
    flex: 1;
}

.itemsaveoredit-list-item {
    display: grid;
    height: 50px;
    position: relative;
}

.itemsaveoredit-list-item::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 14px;
    right: 14px;
    height: 1px;
    background: rgba(207, 207, 207, 0.2);
}

.itemsaveoredit-list-item:last-child::after {
    display: none;
}

.itemsaveoredit-list-cell {
    display: flex;
    align-items: center;
    padding: 0 16px;
    font-size: 0.875rem;
    overflow: hidden;
}

.itemsaveoredit-list-cell-center {
    justify-content: center;
}

/* ---- Replaces shared label-2 ---- */
.itemsaveoredit-label {
    display: flex;
    justify-content: center;
    align-items: center;
    text-align: center;
    cursor: pointer;
    font-family: "Work Sans", sans-serif;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.6;
    margin: 0px;
}

/* ---- Replaces shared inputField-2 ---- */
.itemsaveoredit-input {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    height: 35px;
    width: 200px;
    min-width: 200px;
    max-width: 200px;
    text-align: left;
}

/* ---- Replaces shared button-2 ---- */
.itemsaveoredit-btn {
    height: 35px;
    box-sizing: border-box;
    border-radius: 4px;
    transition: 0.2s ease-in-out;
    min-width: 150px;
    padding: 6px 16px;
    margin: 10px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
}

.itemsaveoredit-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

/* ---- Replaces Tailwind cursor-help ---- */
.itemsaveoredit-cursor-help {
    cursor: help;
}

@media (max-width: 640px) {
    .itemsaveoredit-page {
        height: auto;
        min-height: 100%;
        overflow: visible;
        padding-bottom: 80px;
        box-sizing: border-box;
    }

    .itemsaveoredit-content {
        overflow-y: visible;
        flex: none;
    }

    .itemsaveoredit-list {
        flex: none;
        overflow-x: auto;
        overflow-y: visible;
        margin-top: 1rem;
    }

    .itemsaveoredit-list-table {
        flex: none;
        overflow: visible;
        min-width: max-content;
    }

    .itemsaveoredit-list-body {
        overflow-y: visible;
        flex: none;
    }
}

/* ===== Styles/Pages/Transactions/PeriodClose.css ===== */
.periodclose-page {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.periodclose-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 0.75rem;
    overflow-y: auto;
}

.periodclose-hint {
    font-size: 0.82rem;
    opacity: 0.85;
    max-width: 80ch;
    line-height: 1.5;
}

.periodclose-toolbar,
.periodclose-reopen {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.6rem;
    font-size: 0.9rem;
}

.periodclose-input {
    height: 34px;
    border: none;
    border-radius: 0.25rem;
    padding: 0.4rem 0.5rem;
    box-shadow: 0 0 0 0.2px;
    box-sizing: border-box;
    min-width: 130px;
}

.periodclose-reason {
    flex: 1;
    min-width: 240px;
}

.periodclose-btn {
    height: 34px;
    min-width: 120px;
    border: none;
    border-radius: 4px;
    padding: 0 16px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    text-transform: uppercase;
    cursor: pointer;
    transition: 0.2s ease-in-out;
}

/* Status is the single most important thing on this page -- whether the month is locked -- so it reads
   as a badge rather than another line of text. */
.periodclose-status {
    font-weight: 700;
    font-size: 0.75rem;
    letter-spacing: 0.04em;
    padding: 0.25rem 0.6rem;
    border-radius: 4px;
}

.periodclose-locked {
    color: #c62828;
    font-weight: 600;
}

.periodclose-open {
    color: #2e7d32;
    font-weight: 600;
}

.periodclose-ok {
    color: #2e7d32;
    font-size: 0.85rem;
    font-weight: 600;
}

.periodclose-err {
    color: #c62828;
    font-size: 0.85rem;
    font-weight: 600;
}

.periodclose-failures {
    border-radius: 8px;
    padding: 0.75rem 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.periodclose-failures-title {
    font-weight: 700;
    font-size: 0.85rem;
}

.periodclose-failure {
    display: flex;
    gap: 0.75rem;
    font-size: 0.82rem;
}

.periodclose-failure-name {
    font-weight: 600;
    min-width: 170px;
    flex-shrink: 0;
}

.periodclose-list {
    border-radius: 8px;
    overflow: hidden;
}

.periodclose-list-header,
.periodclose-list-item {
    display: grid;
    grid-template-columns: 120px 90px 150px 150px minmax(0, 1fr);
    align-items: center;
    min-height: 42px;
}

.periodclose-list-header .periodclose-cell {
    font-weight: 700;
    font-size: 0.8rem;
    color: white;
}

.periodclose-list-item {
    position: relative;
}

.periodclose-list-item::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 14px;
    right: 14px;
    height: 1px;
    background: rgba(207, 207, 207, 0.2);
}

.periodclose-cell {
    padding: 0 14px;
    font-size: 0.82rem;
    min-width: 0;
}

.periodclose-cell-reason {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.periodclose-empty {
    padding: 1rem;
    font-size: 0.85rem;
}

@media (max-width: 1024px) {
    .periodclose-list-header,
    .periodclose-list-item {
        grid-template-columns: 100px 80px 120px minmax(0, 1fr);
    }
    /* Reopened timestamp drops first -- the reason text says more than the timestamp does. */
    .periodclose-list-header .periodclose-cell:nth-child(4),
    .periodclose-list-item .periodclose-cell:nth-child(4) {
        display: none;
    }
}

@media (max-width: 640px) {
    .periodclose-page {
        height: auto;
        min-height: 100%;
        overflow: visible;
    }

    .periodclose-list-header,
    .periodclose-list-item {
        grid-template-columns: 95px 75px minmax(0, 1fr);
    }

    .periodclose-list-header .periodclose-cell:nth-child(3),
    .periodclose-list-item .periodclose-cell:nth-child(3) {
        display: none;
    }

    .periodclose-btn {
        flex: 1;
        min-width: 0;
    }
}

/* ===== Styles/Pages/Transactions/TrnSearch.css ===== */
.trnsearch-page {
    padding: 0;
    margin: 0;
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.trnsearch-content {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 0.75rem;
    overflow: hidden;
    flex: 1;
}

/* ---- Form Fields Grid ---- */

.trnsearch-fields {
    width: 100%;
    display: grid;
    gap: 1rem 30px;
    row-gap: 30px;
    grid-template-columns: repeat(1, 1fr);
}

@media (min-width: 768px) {
    .trnsearch-fields {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1024px) {
    .trnsearch-fields {
        grid-template-columns: repeat(3, 1fr);
    }
}

.trnsearch-field {
    display: grid;
    grid-template-columns: repeat(10, 1fr);
    width: 100%;
    position: relative;
}

.trnsearch-field-label {
    grid-column: span 2 / span 2;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    text-align: left;
    padding-left: 4px;
}

.trnsearch-field-input {
    grid-column: span 8 / span 8;
}

.trnsearch-field-input.trnsearch-input {
    width: 100%;
    min-width: 0;
    max-width: none;
    box-sizing: border-box;
}

select.trnsearch-field-input {
    padding-right: 30px;
    -moz-appearance: none;
    -webkit-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='%23666'%3E%3Cpath fill-rule='evenodd' d='M12.53 16.28a.75.75 0 0 1-1.06 0l-7.5-7.5a.75.75 0 0 1 1.06-1.06L12 14.69l6.97-6.97a.75.75 0 1 1 1.06 1.06l-7.5 7.5Z' clip-rule='evenodd' /%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 14px;
}

.trnsearch-field-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 1rem;
    padding: 0 4px;
}

.trnsearch-field-actions .trnsearch-btn {
    margin: 0;
}

/* ---- Amount Input ---- */

.trnsearch-amount-input {
    text-align: right !important;
}

/* ---- List View ---- */

.trnsearch-list {
    width: 100%;
    flex: 1;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    margin-top: 30px;
}

.trnsearch-list-table {
    border-radius: 8px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.trnsearch-list-header {
    display: grid;
    grid-template-columns: 1fr 1fr minmax(0, 2fr) 1fr 1fr 110px;
    height: 50px;
}

.trnsearch-list-header .trnsearch-list-cell {
    font-weight: 700;
    font-size: 0.95rem;
    color: white;
}

.trnsearch-list-body {
    overflow-y: auto;
    flex: 1;
}

.trnsearch-list-item {
    display: grid;
    grid-template-columns: 1fr 1fr minmax(0, 2fr) 1fr 1fr 110px;
    height: 50px;
    position: relative;
}

/* docs/for-claude-code/BACKLOG-for-ClaudeCode.md 1.3: a subtle flag, not an alarm -- this is a search
   list, not a validation error the user needs to dismiss. */
.trnsearch-list-item-unbalanced {
    background: rgba(220, 53, 69, 0.08);
    box-shadow: inset 3px 0 0 rgba(220, 53, 69, 0.6);
}

/* docs/for-claude-code/BACKLOG-for-ClaudeCode.md 2.2: a neutral "this row is inactive" treatment, not a
   warning like unbalanced above -- a deleted row showing up (Status = Deleted/All) is expected, not a
   problem to flag. */
.trnsearch-list-item-deleted {
    opacity: 0.55;
    font-style: italic;
}

.trnsearch-list-item::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 14px;
    right: 14px;
    height: 1px;
    background: rgba(207, 207, 207, 0.2);
}

.trnsearch-list-item:last-child::after {
    display: none;
}

.trnsearch-list-cell {
    display: flex;
    align-items: center;
    padding: 0 16px;
    font-size: 0.875rem;
    overflow: hidden;
}

.trnsearch-list-cell-center {
    justify-content: center;
}

/* Amounts right-align with tabular figures so digits line up column-wise down the list. */
.trnsearch-list-cell-right {
    justify-content: flex-end;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

/* Descriptions arrive already trimmed from the server, but on a narrow screen the column can still be
   shorter than 50 characters -- this ellipsis picks up from there. min-width:0 is required: a grid item
   defaults to min-width:auto, which would let the text push the column wider instead of clipping. */
.trnsearch-list-cell-description {
    min-width: 0;
    display: block;
    line-height: 50px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.trnsearch-empty {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 1rem 0;
}

/* ---- Pager ---- */

.trnsearch-pager {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.75rem;
    padding: 0.75rem 4px 0;
    font-size: 0.85rem;
}

.trnsearch-pager-controls {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.trnsearch-pager-position {
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.trnsearch-pager-btn {
    height: 32px;
    min-width: 90px;
    border: none;
    border-radius: 4px;
    padding: 0 14px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    text-transform: uppercase;
    cursor: pointer;
    transition: 0.2s ease-in-out;
}

.trnsearch-pager-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

/* Action buttons */
.trnsearch-action-btn {
    width: 30px;
    height: 30px;
    border: none;
    border-radius: 0.25rem;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    transition: all 200ms ease-in-out;
}

.trnsearch-action-btn::before {
    content: '';
    display: block;
    width: 16px;
    height: 16px;
    background-color: white;
    mask-repeat: no-repeat;
    mask-position: center;
    mask-size: contain;
    -webkit-mask-repeat: no-repeat;
    -webkit-mask-position: center;
    -webkit-mask-size: contain;
}

.trnsearch-edit-btn::before {
    mask-image: url('/Assets/Icons/edit.svg');
    -webkit-mask-image: url('/Assets/Icons/edit.svg');
}

.trnsearch-delete-btn::before {
    mask-image: url('/Assets/Icons/delete.svg');
    -webkit-mask-image: url('/Assets/Icons/delete.svg');
}

.trnsearch-restore-btn::before {
    mask-image: url('/Assets/Icons/restore.svg');
    -webkit-mask-image: url('/Assets/Icons/restore.svg');
}

/* ---- Shared component styles ---- */

.trnsearch-input {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    height: 35px;
    width: 200px;
    min-width: 200px;
    max-width: 200px;
    text-align: left;
}

.trnsearch-btn {
    height: 35px;
    box-sizing: border-box;
    border-radius: 4px;
    transition: 0.2s ease-in-out;
    min-width: 150px;
    padding: 6px 16px;
    margin: 10px;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
}

.trnsearch-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

@media (max-width: 640px) {
    .trnsearch-page {
        height: auto;
        min-height: 100%;
        overflow: visible;
        padding-bottom: 80px;
        box-sizing: border-box;
    }

    .trnsearch-content {
        overflow-y: visible;
        flex: none;
    }

    .trnsearch-list {
        flex: none;
        overflow: visible;
    }

    .trnsearch-list-table {
        flex: none;
        overflow: visible;
    }

    .trnsearch-list-body {
        overflow-y: visible;
        flex: none;
    }

    .trnsearch-list-header,
    .trnsearch-list-item {
        grid-template-columns: 1.1fr minmax(0, 1.6fr) 1fr 74px;
    }

    /* Phone: five columns can't stay legible side by side. Transaction Date drops out -- it's the least
       useful for picking a row out of a list you already date-filtered, and Description (the thing that
       actually identifies a transaction) gets the reclaimed width. Credit Total (backlog 1.3) drops out
       too rather than squeezing to six columns -- Debit Total plus the unbalanced-row highlight already
       surfaces the same signal at a glance; per-column show/hide (noted in 1.3, not built) is the real
       fix if this needs to be selectable later. */
    .trnsearch-list-header .trnsearch-list-cell:nth-child(2),
    .trnsearch-list-item .trnsearch-list-cell:nth-child(2),
    .trnsearch-list-header .trnsearch-list-cell:nth-child(5),
    .trnsearch-list-item .trnsearch-list-cell:nth-child(5) {
        display: none;
    }

    .trnsearch-list-cell {
        padding: 0 8px;
        font-size: 0.8rem;
    }

    /* Pager stacks and the buttons go full-width, so they stay comfortable tap targets. */
    .trnsearch-pager {
        justify-content: center;
        gap: 0.5rem;
    }

    .trnsearch-pager-controls {
        width: 100%;
        justify-content: space-between;
    }

    .trnsearch-pager-btn {
        flex: 1;
        min-width: 0;
    }
}

/* Tablet: keep every column, just tighten the fixed Actions column and the gutters. */
@media (min-width: 641px) and (max-width: 1024px) {
    .trnsearch-list-header,
    .trnsearch-list-item {
        grid-template-columns: 1fr 0.9fr minmax(0, 1.8fr) 1fr 1fr 96px;
    }

    .trnsearch-list-cell {
        padding: 0 10px;
        font-size: 0.82rem;
    }
}

/* ===== Styles/Pages/Transactions/TrnEdit.css ===== */
.trnedit-page {
    padding: 0;
    margin: 0;
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.trnedit-content {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 0.75rem;
    overflow: hidden;
    flex: 1;
}

/* Restore follow-up (docs/for-claude-code/BACKLOG-for-ClaudeCode.md 2.2): `display: contents` keeps the
   fieldset invisible in the layout tree -- .trnedit-fields stays a direct flex item of .trnedit-content,
   same as before this wrapper existed -- while still letting the native `disabled` attribute cascade to
   every descendant input/select/button, which is what actually makes the screen read-only. */
.trnedit-fieldset {
    display: contents;
    border: none;
    margin: 0;
    padding: 0;
}

.trnedit-deleted-banner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.75rem 1rem;
    border-radius: 4px;
    background: rgba(220, 53, 69, 0.12);
    box-shadow: inset 3px 0 0 rgba(220, 53, 69, 0.6);
    flex-wrap: wrap;
}

/* ---- Form Fields ---- */

.trnedit-fields {
    width: 100%;
    display: grid;
    gap: 1rem 30px;
    row-gap: 30px;
    grid-template-columns: repeat(1, 1fr);
}

@media (min-width: 768px) {
    .trnedit-fields {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1024px) {
    .trnedit-fields {
        grid-template-columns: repeat(3, 1fr);
    }
}

.trnedit-field {
    display: grid;
    grid-template-columns: repeat(10, 1fr);
    width: 100%;
    position: relative;
}

.trnedit-field-label {
    grid-column: span 2 / span 2;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    text-align: left;
    padding-left: 4px;
}

.trnedit-field-input {
    grid-column: span 8 / span 8;
}

.trnedit-field-input.trnedit-input {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    text-align: left;
    width: 100%;
    min-width: 0;
    max-width: none;
    box-sizing: border-box;
    height: 38px;
}

select.trnedit-field-input {
    padding-right: 30px;
    -moz-appearance: none;
    -webkit-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='%23666'%3E%3Cpath fill-rule='evenodd' d='M12.53 16.28a.75.75 0 0 1-1.06 0l-7.5-7.5a.75.75 0 0 1 1.06-1.06L12 14.69l6.97-6.97a.75.75 0 1 1 1.06 1.06l-7.5 7.5Z' clip-rule='evenodd' /%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 14px;
}

.trnedit-field-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 1rem;
    padding: 0 4px;
}

.trnedit-field-actions .trnedit-btn {
    margin: 0;
}

.trnedit-field-actions-top {
    margin-top: 30px;
    justify-content: flex-start;
}

/* ---- Right/Left align utilities ---- */

.trnedit-right-align {
    text-align: right !important;
}

.trnedit-left-align {
    text-align: left !important;
}

/* ---- Total labels ---- */

.trnedit-total-box {
    display: inline-flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    padding: 10px 20px;
    border-radius: 8px;
    min-width: 220px;
}

.trnedit-total-box-label {
    font-size: 0.8rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    white-space: nowrap;
}

.trnedit-total-box-value {
    font-size: 1.1rem;
    font-weight: 700;
    font-family: 'Consolas', 'Courier New', monospace;
    white-space: nowrap;
}

/* ---- Table ---- */

.trnedit-list {
    width: 100%;
    flex: 1;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    margin-top: 30px;
}

.trnedit-list-table {
    border-radius: 8px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.trnedit-list-header {
    display: flex;
    height: 50px;
    align-items: center;
    gap: 0;
    padding: 8px 24px 8px 8px;
    margin: 0;
}

.trnedit-list-header .trnedit-list-cell {
    font-weight: 700;
    font-size: 0.95rem;
    color: white;
}

.trnedit-list-body {
    overflow-y: scroll;
    flex: 1;
}

.trnedit-list-body > .trnedit-list-item:not(:last-child)::after {
    content: '';
    display: block;
    height: 1px;
    background: rgba(207, 207, 207, 0.2);
    margin: 0 14px;
}

.trnedit-list-item {
    display: flex;
    align-items: center;
    gap: 0;
    padding: 8px;
    margin: 0;
    min-height: 50px;
    position: relative;
}

.trnedit-list-cell {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 6px;
    margin: 0;
    font-size: 0.875rem;
    height: 100%;
    box-sizing: border-box;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Fixed percentage column widths */
.trnedit-list-cell-dr {
    width: 5%;
    flex: 0 0 5%;
    min-width: 0;
}

.trnedit-list-cell-action {
    width: 5%;
    flex: 0 0 5%;
    min-width: 0;
}

.trnedit-list-cell-type {
    width: 10%;
    flex: 0 0 10%;
    min-width: 0;
}

.trnedit-list-cell-coa {
    width: 18%;
    flex: 0 0 18%;
    min-width: 0;
}

.trnedit-list-cell-sub {
    width: 16%;
    flex: 0 0 16%;
    min-width: 0;
}

.trnedit-list-cell-input {
    width: 7%;
    flex: 0 0 7%;
    min-width: 0;
}

.trnedit-list-cell-desc {
    width: 25%;
    flex: 0 0 25%;
    min-width: 0;
}

/* Select inside table cells */
.trnedit-list-cell select.trnedit-input-md {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    padding-right: 30px;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    text-align: left;
    height: 35px;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
    -moz-appearance: none;
    -webkit-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='%23666'%3E%3Cpath fill-rule='evenodd' d='M12.53 16.28a.75.75 0 0 1-1.06 0l-7.5-7.5a.75.75 0 0 1 1.06-1.06L12 14.69l6.97-6.97a.75.75 0 1 1 1.06 1.06l-7.5 7.5Z' clip-rule='evenodd' /%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 14px;
}

/* Input inside table cells */
.trnedit-list-cell input.trnedit-input-sm,
.trnedit-list-cell input.trnedit-input-lg {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    text-align: left;
    height: 35px;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

/* Icon delete button */
.trnedit-delete-btn {
    width: 30px;
    height: 30px;
    border: none;
    border-radius: 0.25rem;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    transition: all 200ms ease-in-out;
}

.trnedit-delete-btn::before {
    content: '';
    display: block;
    width: 16px;
    height: 16px;
    background-color: white;
    mask: url('/Assets/Icons/delete.svg') no-repeat center / contain;
    -webkit-mask: url('/Assets/Icons/delete.svg') no-repeat center / contain;
}

/* Footer */
.trnedit-footer {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
}

.trnedit-footer .trnedit-btn {
    margin: 0;
}

.trnedit-footer .trnedit-btn:disabled,
.trnedit-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

@media (max-width: 640px) {
    .trnedit-page {
        height: auto;
        min-height: 100%;
        overflow: visible;
        padding-bottom: 80px;
        box-sizing: border-box;
    }

    .trnedit-content {
        overflow-y: visible;
        flex: none;
    }

    .trnedit-list {
        flex: none;
        overflow: visible;
    }

    .trnedit-list-table {
        flex: none;
        overflow: visible;
    }

    .trnedit-list-header {
        display: none;
    }

    .trnedit-list-body {
        overflow-y: visible;
        flex: none;
        display: flex;
        flex-direction: column;
        gap: 1rem;
    }

    .trnedit-list-item {
        flex-direction: column;
        border: 1px solid rgba(207, 207, 207, 0.2);
        border-radius: 8px;
        padding: 1rem;
        align-items: stretch;
        min-height: 0;
        gap: 0.75rem;
    }

    .trnedit-list-item::after {
        display: none !important;
    }

    .trnedit-list-cell {
        display: flex;
        flex-direction: row;
        align-items: center;
        gap: 0.5rem;
        padding: 0.25rem 0;
        flex: none !important;
        width: auto !important;
        min-width: auto !important;
        height: auto;
        justify-content: flex-start;
    }

    .trnedit-list-cell::before {
        content: attr(data-label);
        font-weight: 700;
        font-size: 0.75rem;
        opacity: 0.8;
        flex: 0 0 15ch;
        text-align: left;
    }

    .trnedit-list-cell select,
    .trnedit-list-cell input {
        flex: 1;
        min-width: 0;
        box-sizing: border-box;
    }

    .trnedit-list-cell-dr {
        display: flex;
        flex-direction: row;
        align-items: center;
        gap: 0.5rem;
        padding: 0.25rem 0;
        flex: none !important;
        width: auto !important;
        min-width: auto !important;
        height: auto;
    }

    .trnedit-list-cell-dr::before {
        content: attr(data-label);
        font-weight: 700;
        font-size: 0.75rem;
        opacity: 0.8;
        flex: 0 0 15ch;
        text-align: left;
    }

    .trnedit-list-cell-action {
        display: flex;
        flex-direction: row;
        align-items: center;
        gap: 0.5rem;
        padding: 0.25rem 0;
        flex: none !important;
        width: auto !important;
        min-width: auto !important;
        height: auto;
    }

    .trnedit-list-cell-action::before {
        content: attr(data-label);
        font-weight: 700;
        font-size: 0.75rem;
        opacity: 0.8;
        flex: 0 0 15ch;
        text-align: left;
    }

    .trnedit-footer {
        flex-direction: column;
    }

    .trnedit-footer-row {
        flex-direction: row;
        gap: 0.5rem;
    }

    .trnedit-total-box {
        min-width: 0;
        flex: 1;
    }

    .trnedit-footer-actions {
        flex-direction: row;
        flex-wrap: wrap;
        gap: 0.5rem;
        align-items: stretch;
    }

    .trnedit-footer-actions .trnedit-btn {
        flex: 1;
        min-width: 0;
    }
}

/* ---- Page-specific replacements for shared CSS ---- */

.trnedit-btn {
    height: 35px;
    box-sizing: border-box;
    border-radius: 4px;
    min-width: 150px;
    padding: 6px 16px;
    margin: 0;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
    transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-duration: 150ms;
}

.trnedit-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

.trnedit-footer-row {
    width: 100%;
    display: flex;
    justify-content: flex-start;
    gap: 0.75rem;
}

.trnedit-footer-actions {
    width: 100%;
    display: flex;
    justify-content: flex-end;
    gap: 1rem;
}

/* ===== Styles/Pages/Transactions/TrnEditJV.css ===== */
.trnedit-page {
    padding: 0;
    margin: 0;
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.trnedit-content {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 0.75rem;
    overflow: hidden;
    flex: 1;
}

/* ---- Form Fields ---- */

.trnedit-fields {
    width: 100%;
    display: grid;
    gap: 1rem 30px;
    row-gap: 30px;
    grid-template-columns: repeat(1, 1fr);
}

@media (min-width: 768px) {
    .trnedit-fields {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1024px) {
    .trnedit-fields {
        grid-template-columns: repeat(3, 1fr);
    }
}

.trnedit-field {
    display: grid;
    grid-template-columns: repeat(10, 1fr);
    width: 100%;
    position: relative;
}

.trnedit-field-label {
    grid-column: span 2 / span 2;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    text-align: left;
    padding-left: 4px;
}

.trnedit-field-input {
    grid-column: span 8 / span 8;
}

.trnedit-field-input.trneditjv-input {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    text-align: left;
    width: 100%;
    min-width: 0;
    max-width: none;
    box-sizing: border-box;
    height: 38px;
}

select.trnedit-field-input {
    padding-right: 30px;
    -moz-appearance: none;
    -webkit-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='%23666'%3E%3Cpath fill-rule='evenodd' d='M12.53 16.28a.75.75 0 0 1-1.06 0l-7.5-7.5a.75.75 0 0 1 1.06-1.06L12 14.69l6.97-6.97a.75.75 0 1 1 1.06 1.06l-7.5 7.5Z' clip-rule='evenodd' /%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 14px;
}

.trnedit-field-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 1rem;
    padding: 0 4px;
}

.trnedit-field-actions .trneditjv-btn {
    margin: 0;
}

.trnedit-field-actions-top {
    margin-top: 30px;
    justify-content: flex-start;
}

/* ---- Right/Left align utilities ---- */

.trnedit-right-align {
    text-align: right !important;
}

.trnedit-left-align {
    text-align: left !important;
}

/* ---- Total labels ---- */

.trnedit-total-box {
    display: inline-flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    padding: 10px 20px;
    border-radius: 8px;
    min-width: 220px;
}

.trnedit-total-box-label {
    font-size: 0.8rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    white-space: nowrap;
}

.trnedit-total-box-value {
    font-size: 1.1rem;
    font-weight: 700;
    font-family: 'Consolas', 'Courier New', monospace;
    white-space: nowrap;
}

/* ---- Table ---- */

.trnedit-list {
    width: 100%;
    flex: 1;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    margin-top: 30px;
}

.trnedit-list-table {
    border-radius: 8px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.trnedit-list-header {
    display: flex;
    height: 50px;
    align-items: center;
    gap: 0;
    padding: 8px 24px 8px 8px;
    margin: 0;
}

.trnedit-list-header .trnedit-list-cell {
    font-weight: 700;
    font-size: 0.95rem;
    color: white;
}

.trnedit-list-body {
    overflow-y: scroll;
    flex: 1;
}

.trnedit-list-body > .trnedit-list-item:not(:last-child)::after {
    content: '';
    display: block;
    height: 1px;
    background: rgba(207, 207, 207, 0.2);
    margin: 0 14px;
}

.trnedit-list-item {
    display: flex;
    align-items: center;
    gap: 0;
    padding: 8px;
    margin: 0;
    min-height: 50px;
    position: relative;
}

.trnedit-list-cell {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 6px;
    margin: 0;
    font-size: 0.875rem;
    height: 100%;
    box-sizing: border-box;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Fixed percentage column widths */
.trnedit-list-cell-dr {
    width: 5%;
    flex: 0 0 5%;
    min-width: 0;
}

.trnedit-list-cell-action {
    width: 5%;
    flex: 0 0 5%;
    min-width: 0;
}

.trnedit-list-cell-type {
    width: 10%;
    flex: 0 0 10%;
    min-width: 0;
}

.trnedit-list-cell-coa {
    width: 18%;
    flex: 0 0 18%;
    min-width: 0;
}

.trnedit-list-cell-sub {
    width: 16%;
    flex: 0 0 16%;
    min-width: 0;
}

.trnedit-list-cell-input {
    width: 7%;
    flex: 0 0 7%;
    min-width: 0;
}

.trnedit-list-cell-desc {
    width: 25%;
    flex: 0 0 25%;
    min-width: 0;
}

/* Select inside table cells */
.trnedit-list-cell select.trneditjv-input-md {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    padding-right: 30px;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    text-align: left;
    height: 35px;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
    -moz-appearance: none;
    -webkit-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='%23666'%3E%3Cpath fill-rule='evenodd' d='M12.53 16.28a.75.75 0 0 1-1.06 0l-7.5-7.5a.75.75 0 0 1 1.06-1.06L12 14.69l6.97-6.97a.75.75 0 1 1 1.06 1.06l-7.5 7.5Z' clip-rule='evenodd' /%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 14px;
}

/* Input inside table cells */
.trnedit-list-cell input.trneditjv-input-sm,
.trnedit-list-cell input.trneditjv-input-lg {
    border: none;
    border-radius: 0.25rem;
    padding: 0.5rem;
    transition: 0.2s ease;
    box-shadow: 0 0 0 0.2px;
    text-align: left;
    height: 35px;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

/* Icon delete button */
.trnedit-delete-btn {
    width: 30px;
    height: 30px;
    border: none;
    border-radius: 0.25rem;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    transition: all 200ms ease-in-out;
}

.trnedit-delete-btn::before {
    content: '';
    display: block;
    width: 16px;
    height: 16px;
    background-color: white;
    mask: url('/Assets/Icons/delete.svg') no-repeat center / contain;
    -webkit-mask: url('/Assets/Icons/delete.svg') no-repeat center / contain;
}

/* Footer */
.trnedit-footer {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
}

.trnedit-footer .trneditjv-btn {
    margin: 0;
}

.trnedit-footer .trneditjv-btn:disabled,
.trneditjv-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

@media (max-width: 640px) {
    .trnedit-page {
        height: auto;
        min-height: 100%;
        overflow: visible;
        padding-bottom: 80px;
        box-sizing: border-box;
    }

    .trnedit-content {
        overflow-y: visible;
        flex: none;
    }

    .trnedit-list {
        flex: none;
        overflow: visible;
    }

    .trnedit-list-table {
        flex: none;
        overflow: visible;
    }

    .trnedit-list-header {
        display: none;
    }

    .trnedit-list-body {
        overflow-y: visible;
        flex: none;
        display: flex;
        flex-direction: column;
        gap: 1rem;
    }

    .trnedit-list-item {
        flex-direction: column;
        border: 1px solid rgba(207, 207, 207, 0.2);
        border-radius: 8px;
        padding: 1rem;
        align-items: stretch;
        min-height: 0;
        gap: 0.75rem;
    }

    .trnedit-list-item::after {
        display: none !important;
    }

    .trnedit-list-cell {
        display: flex;
        flex-direction: row;
        align-items: center;
        gap: 0.5rem;
        padding: 0.25rem 0;
        flex: none !important;
        width: auto !important;
        min-width: auto !important;
        height: auto;
        justify-content: flex-start;
    }

    .trnedit-list-cell::before {
        content: attr(data-label);
        font-weight: 700;
        font-size: 0.75rem;
        opacity: 0.8;
        flex: 0 0 15ch;
        text-align: left;
    }

    .trnedit-list-cell select,
    .trnedit-list-cell input {
        flex: 1;
        min-width: 0;
        box-sizing: border-box;
    }

    .trnedit-list-cell-dr {
        display: flex;
        flex-direction: row;
        align-items: center;
        gap: 0.5rem;
        padding: 0.25rem 0;
        flex: none !important;
        width: auto !important;
        min-width: auto !important;
        height: auto;
    }

    .trnedit-list-cell-dr::before {
        content: attr(data-label);
        font-weight: 700;
        font-size: 0.75rem;
        opacity: 0.8;
        flex: 0 0 15ch;
        text-align: left;
    }

    .trnedit-list-cell-action {
        display: flex;
        flex-direction: row;
        align-items: center;
        gap: 0.5rem;
        padding: 0.25rem 0;
        flex: none !important;
        width: auto !important;
        min-width: auto !important;
        height: auto;
    }

    .trnedit-list-cell-action::before {
        content: attr(data-label);
        font-weight: 700;
        font-size: 0.75rem;
        opacity: 0.8;
        flex: 0 0 15ch;
        text-align: left;
    }

    .trnedit-footer {
        flex-direction: column;
    }

    .trneditjv-footer-row {
        flex-direction: row;
        gap: 0.5rem;
    }

    .trnedit-total-box {
        min-width: 0;
        flex: 1;
    }

    .trneditjv-footer-actions {
        flex-direction: row;
        flex-wrap: wrap;
        gap: 0.5rem;
        align-items: stretch;
    }

    .trneditjv-footer-actions .trneditjv-btn {
        flex: 1;
        min-width: 0;
    }
}

/* ---- Page-specific replacements for shared CSS ---- */

.trneditjv-btn {
    height: 35px;
    box-sizing: border-box;
    border-radius: 4px;
    min-width: 150px;
    padding: 6px 16px;
    margin: 0;
    font-family: "Work Sans", sans-serif;
    font-weight: 500;
    font-size: 0.75rem;
    line-height: 1.75;
    text-transform: uppercase;
    transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-duration: 150ms;
}

.trneditjv-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

.trneditjv-footer-row {
    width: 100%;
    display: flex;
    justify-content: flex-start;
    gap: 0.75rem;
}

.trneditjv-footer-actions {
    width: 100%;
    display: flex;
    justify-content: flex-end;
    gap: 1rem;
}
