html, body {
    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
    background: #f6f7f4;
    color: #1d2528;
}

a, .btn-link {
    color: #006bb7;
}

/* Global application shell. Kept in app.css so layout styling is served with
   the same reliable static asset as the rest of the application theme. */
.app-shell {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    position: relative;
}

.app-main {
    flex: 1;
    min-width: 0;
}

.app-sidebar {
    background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
}

.app-top-row {
    align-items: center;
    background-color: #f7f7f7;
    border-bottom: 1px solid #d6d5d5;
    display: flex;
    height: 3.5rem;
    justify-content: flex-end;
}

.app-sidebar .navbar-toggler {
    appearance: none;
    background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.1);
    color: white;
    cursor: pointer;
    height: 2.5rem;
    position: absolute;
    right: 1rem;
    top: .5rem;
    width: 3.5rem;
}

.app-sidebar .navbar-toggler:checked {
    background-color: rgba(255, 255, 255, .5);
}

.nav-brand-row {
    background-color: rgba(0, 0, 0, .4);
    min-height: 3.5rem;
}

.nav-brand-row .navbar-brand {
    font-size: 1.1rem;
}

.app-sidebar .bi {
    background-size: cover;
    display: inline-block;
    height: 1.25rem;
    margin-right: .75rem;
    position: relative;
    top: -1px;
    width: 1.25rem;
}

.app-sidebar .bi-house-door-fill-nav-menu { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E"); }
.app-sidebar .bi-box-nav-menu { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='white' viewBox='0 0 16 16'%3E%3Cpath d='M2.5 4.5 8 1.5l5.5 3-5.5 3-5.5-3ZM2.5 4.5v7L8 14.5l5.5-3v-7M8 7.5v7'/%3E%3C/svg%3E"); }
.app-sidebar .bi-school-nav-menu { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='white' viewBox='0 0 16 16'%3E%3Cpath d='M2 14.5h12M3 14.5v-8h10v8M1.5 6.5 8 2l6.5 4.5M6.5 14.5v-3h3v3M5 8.5h1.5M9.5 8.5H11'/%3E%3C/svg%3E"); }
.app-sidebar .bi-tags-nav-menu { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='white' viewBox='0 0 16 16'%3E%3Cpath d='M2 3.5v4.25l5.5 5.5 4.75-4.75L6.75 3H2ZM5 6h.01m4.5-1.5L14 9l-3.5 3.5'/%3E%3C/svg%3E"); }
.app-sidebar .bi-vendors-nav-menu { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='white' viewBox='0 0 16 16'%3E%3Cpath d='M6 7.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM1.5 14c.5-2.5 2.1-4 4.5-4s4 1.5 4.5 4M11 8.5a2 2 0 1 0-.5-3.95M10.5 10.5c1.9.2 3.2 1.4 3.7 3.5'/%3E%3C/svg%3E"); }
.app-sidebar .bi-percent-nav-menu { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='white' viewBox='0 0 16 16'%3E%3Cpath d='m3 13 10-10'/%3E%3Ccircle cx='4' cy='4' r='2'/%3E%3Ccircle cx='12' cy='12' r='2'/%3E%3C/svg%3E"); }
.app-sidebar .bi-quote-nav-menu { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='white' viewBox='0 0 16 16'%3E%3Cpath d='M5.5 2.5h5M4 4.5h8v10H4zM6 7h4M6 9.5h4M6 12h2.5'/%3E%3C/svg%3E"); }
.app-sidebar .bi-printer-nav-menu { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='white' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 5V1.5h7V5M4.5 12.5h7v2h-7zM3 12.5H1.5v-6h13v6H13M4.5 9.5h7M12.5 8h.01'/%3E%3C/svg%3E"); }

.app-sidebar .nav-item {
    font-size: .9rem;
    padding-bottom: .5rem;
}

.app-sidebar .nav-item:first-of-type { padding-top: 1rem; }
.app-sidebar .nav-item:last-of-type { padding-bottom: 1rem; }

.app-sidebar .nav-link {
    align-items: center;
    background: none;
    border: 0;
    border-radius: 4px;
    color: #d7d7d7;
    display: flex;
    height: 3rem;
    line-height: 3rem;
    width: 100%;
}

.app-sidebar .nav-link.active { background-color: rgba(255, 255, 255, .37); color: #fff; }
.app-sidebar .nav-link:hover { background-color: rgba(255, 255, 255, .1); color: #fff; }
.app-sidebar .nav-scrollable { display: none; }
.app-sidebar .navbar-toggler:checked ~ .nav-scrollable { display: block; }

.btn-primary {
    color: #fff;
    background-color: #1b6ec2;
    border-color: #1861ac;
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
  box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}

.content {
    padding-top: 1.5rem;
}

.page-heading {
    align-items: center;
    display: flex;
    gap: 1rem;
    justify-content: space-between;
    margin-bottom: 1.25rem;
}

.page-heading h1 {
    font-size: 2rem;
    font-weight: 700;
    margin: 0;
}

.eyebrow {
    color: #687078;
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .08rem;
    margin: 0 0 .25rem;
    text-transform: uppercase;
}

.metric-grid {
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin-bottom: 1.25rem;
}

.metric,
.panel,
.package-card {
    background: #ffffff;
    border: 1px solid #dce2df;
    border-radius: 8px;
    box-shadow: 0 1px 2px rgb(0 0 0 / .04);
}

.metric {
    padding: 1rem;
}

.metric span,
.panel-title span,
.facts dt,
.package-card p {
    color: #667077;
}

.metric strong {
    display: block;
    font-size: 1.55rem;
    margin-top: .35rem;
}

.metric.warning strong,
.over {
    color: #b54708;
}

.panel {
    margin-bottom: 1.25rem;
    padding: 1rem;
}

.panel h2,
.package-card h2 {
    font-size: 1.05rem;
    margin: 0;
}

.panel-title {
    align-items: baseline;
    display: flex;
    gap: 1rem;
    justify-content: space-between;
    margin-bottom: .9rem;
}

.table-wrap {
    overflow-x: auto;
}

table {
    border-collapse: collapse;
    min-width: 760px;
    width: 100%;
}

th,
td {
    border-bottom: 1px solid #e6ebe8;
    padding: .75rem;
    text-align: left;
    vertical-align: top;
}

th {
    color: #4a555c;
    font-size: .78rem;
    text-transform: uppercase;
}

.number {
    text-align: right;
    white-space: nowrap;
}

.school-cell {
    min-width: 16rem;
}

.school-cell strong,
.school-cell span {
    display: block;
}

.school-cell span {
    color: #667077;
    font-size: .82rem;
}

.status {
    background: #e8f0ec;
    border: 1px solid #c8d8cf;
    border-radius: 999px;
    color: #214c39;
    display: inline-block;
    font-size: .8rem;
    font-weight: 700;
    padding: .2rem .55rem;
}

.package-grid {
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.school-group {
    margin-bottom: 1.5rem;
}

.school-group-header {
    align-items: center;
    background: #ffffff;
    border: 1px solid #dce2df;
    border-radius: 8px;
    display: flex;
    gap: 1rem;
    justify-content: space-between;
    margin-bottom: .75rem;
    padding: 1rem;
}

.school-group-header h2 {
    font-size: 1.2rem;
    margin: 0;
}

.school-group-header span {
    color: #667077;
}

.school-group-header dl {
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(2, minmax(0, auto));
    margin: 0;
}

.school-group-header dt {
    color: #667077;
    font-size: .75rem;
    font-weight: 700;
    text-transform: uppercase;
}

.school-group-header dd {
    margin: .1rem 0 0;
}

.package-card {
    color: inherit;
    display: block;
    padding: 1rem;
    text-decoration: none;
}

.package-card:hover {
    border-color: #8aa99a;
}

.actions {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    margin-top: 1rem;
}

.row-actions {
    min-width: 9rem;
    white-space: nowrap;
}

.form-grid {
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.form-grid label {
    color: #4a555c;
    font-size: .82rem;
    font-weight: 700;
}

.form-note {
    background: #edf4f1;
    border: 1px solid #c8d8cf;
    border-radius: 8px;
    color: #214c39;
    margin: 0;
    padding: .75rem;
}

.form-grid .form-control {
    font-size: .95rem;
    font-weight: 400;
    margin-top: .3rem;
}

.wide {
    grid-column: 1 / -1;
}

.check {
    align-items: center;
    display: flex;
    gap: .5rem;
    padding-top: 1.6rem;
}

.compact {
    display: inline-block;
    max-width: 8rem;
}

.tax-selection-grid {
    display: grid;
    gap: .75rem;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.tax-selection {
    align-items: flex-start;
    background: #f8faf9;
    border: 1px solid #dce2df;
    border-radius: 8px;
    display: flex;
    gap: .65rem;
    padding: .8rem;
}

.tax-selection strong,
.tax-selection small {
    display: block;
}

.tax-selection small {
    color: #667077;
    margin-top: .15rem;
}

.catalog-metrics {
    display: grid;
    gap: .75rem;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin-bottom: 1rem;
}

.catalog-metrics > div {
    align-items: center;
    background: linear-gradient(135deg, #ffffff, #f3f7f5);
    border: 1px solid #dce2df;
    border-radius: 8px;
    display: flex;
    gap: .75rem;
    padding: .8rem 1rem;
}

.catalog-metrics strong {
    color: #214c39;
    font-size: 1.35rem;
}

.catalog-metrics span {
    color: #667077;
    font-size: .84rem;
}

.catalog-tree-panel {
    padding: 0;
    overflow: hidden;
}

.catalog-toolbar {
    align-items: end;
    background: #f8faf9;
    border-bottom: 1px solid #dce2df;
    display: grid;
    gap: 1rem;
    grid-template-columns: minmax(16rem, 1fr) auto auto;
    padding: 1rem;
}

.catalog-search span {
    color: #4a555c;
    display: block;
    font-size: .78rem;
    font-weight: 700;
    margin-bottom: .3rem;
    text-transform: uppercase;
}

.catalog-inactive-toggle {
    align-items: center;
    display: flex;
    gap: .45rem;
    min-height: 2.4rem;
    white-space: nowrap;
}

.catalog-toolbar-actions,
.tree-node-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
}

.catalog-tree {
    background: #eef3f0;
    padding: .85rem;
}

.tree-category {
    background: #fff;
    border: 1px solid #d4ddd8;
    border-radius: 9px;
    box-shadow: 0 1px 2px rgb(0 0 0 / .04);
    margin-bottom: .7rem;
    overflow: hidden;
}

.tree-category:last-child {
    margin-bottom: 0;
}

.tree-category-row,
.tree-subcategory-row,
.tree-item {
    align-items: center;
    display: grid;
    gap: .65rem;
}

.tree-category-row {
    grid-template-columns: 1.6rem 1.8rem minmax(12rem, 1fr) auto auto;
    min-height: 4rem;
    padding: .7rem .85rem;
}

.tree-category-children {
    background: #f8faf9;
    border-top: 1px solid #e1e7e4;
    padding: .65rem .75rem .75rem 3.4rem;
}

.tree-subcategory {
    border-left: 2px solid #bbcec4;
    margin-bottom: .45rem;
    position: relative;
}

.tree-subcategory:last-child {
    margin-bottom: 0;
}

.tree-subcategory-row {
    background: #fff;
    border: 1px solid #dce2df;
    border-left: 0;
    border-radius: 0 7px 7px 0;
    grid-template-columns: 1.6rem 1.4rem minmax(12rem, 1fr) auto auto;
    min-height: 3.5rem;
    padding: .55rem .7rem;
}

.tree-items {
    border-left: 1px dashed #b9c9c1;
    margin-left: 1.1rem;
    padding: .35rem 0 .2rem 2.1rem;
}

.tree-item {
    background: #fff;
    border: 1px solid #e1e7e4;
    border-radius: 6px;
    grid-template-columns: 1.2rem minmax(12rem, 1fr) auto auto;
    margin: .35rem 0;
    min-height: 3.25rem;
    padding: .5rem .65rem;
    position: relative;
}

.tree-item::before {
    border-top: 1px dashed #b9c9c1;
    content: "";
    left: -2.15rem;
    position: absolute;
    top: 50%;
    width: 2.1rem;
}

.tree-toggle {
    align-items: center;
    background: transparent;
    border: 0;
    border-radius: 5px;
    color: #526159;
    display: flex;
    height: 1.7rem;
    justify-content: center;
    padding: 0;
    width: 1.7rem;
}

.tree-toggle:hover,
.tree-toggle:focus-visible {
    background: #e6efea;
    outline: none;
}

.tree-chevron {
    font-size: 1.45rem;
    line-height: 1;
    transform: rotate(0deg);
    transition: transform .15s ease;
}

.tree-chevron.expanded {
    transform: rotate(90deg);
}

.tree-folder-icon {
    background: #dcebe3;
    border-radius: 5px;
    height: 1.55rem;
    position: relative;
    width: 1.8rem;
}

.tree-folder-icon::before {
    background: #a9c6b7;
    border-radius: 3px 3px 0 0;
    content: "";
    height: .35rem;
    left: .18rem;
    position: absolute;
    top: -.2rem;
    width: .75rem;
}

.tree-branch,
.tree-item-marker {
    background: #dcebe3;
    border: 2px solid #759986;
    border-radius: 50%;
    height: .75rem;
    justify-self: center;
    width: .75rem;
}

.tree-branch.uncategorized {
    background: #f2e9d7;
    border-color: #a88748;
}

.tree-item-marker {
    background: #fff;
    border-width: 1px;
    height: .55rem;
    width: .55rem;
}

.tree-node-title {
    min-width: 0;
}

.tree-node-title > div,
.tree-node-title > strong {
    overflow-wrap: anywhere;
}

.tree-node-title small {
    color: #6b7671;
    display: block;
    font-size: .76rem;
    margin-top: .15rem;
}

.tree-code {
    background: #e8f1ec;
    border: 1px solid #c8d8cf;
    border-radius: 4px;
    color: #214c39;
    display: inline-block;
    font-family: Consolas, monospace;
    font-size: .75rem;
    font-weight: 700;
    margin-right: .35rem;
    padding: .15rem .38rem;
}

.tree-code.sub-code {
    background: #f1f4f2;
    border-color: #dce2df;
    color: #526159;
}

.tree-node-inactive {
    opacity: .62;
}

.inactive-status {
    background: #f1f2f1;
    border-color: #d8dcda;
    color: #667077;
}

.tree-empty-branch,
.catalog-empty-state {
    color: #6b7671;
    font-size: .84rem;
    padding: .85rem 1rem;
}

.catalog-empty-state {
    align-items: center;
    display: flex;
    flex-direction: column;
    gap: .25rem;
    padding: 3rem 1rem;
    text-align: center;
}

.catalog-editor {
    border-top: 3px solid #6d9782;
    scroll-margin-top: 1rem;
}

.package-card dl,
.facts {
    display: grid;
    gap: .75rem;
    margin: 1rem 0 0;
}

.package-card dl {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.package-card dt,
.facts dt {
    font-size: .75rem;
    font-weight: 700;
    text-transform: uppercase;
}

.package-card dd,
.facts dd {
    margin: .15rem 0 0;
}

.detail-grid {
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.document-list {
    display: grid;
    gap: .5rem;
}

.document-row {
    align-items: center;
    border-bottom: 1px solid #e6ebe8;
    color: inherit;
    display: grid;
    gap: 1rem;
    grid-template-columns: 3rem 1fr auto;
    padding: .7rem 0;
    text-decoration: none;
}

.document-row:last-child {
    border-bottom: 0;
}

.loading {
    color: #667077;
}

.print-toolbar {
    display: flex;
    gap: .5rem;
    justify-content: flex-end;
    margin: 1rem auto;
    max-width: 8.27in;
}

.print-sheet {
    background: #fff;
    color: #000;
    font-family: "Times New Roman", serif;
    font-size: 12pt;
    line-height: 1.35;
    margin: 0 auto 2rem;
    min-height: 11.69in;
    padding: .45in;
    width: 8.27in;
}

.proc-plan-sheet {
    min-height: 8.27in;
    width: 11.69in;
}

.vendor-quote-sheet {
    background: transparent;
    margin: 0 auto;
    min-height: 0;
    padding: 0;
    width: 8.27in;
}

.print-header {
    margin-bottom: .3in;
    text-align: center;
}

.print-header h1,
.print-sheet h2 {
    font-size: 13pt;
    font-weight: 700;
    margin: .1in 0;
    text-align: center;
    text-transform: uppercase;
}

.center {
    text-align: center;
}

.vendor-report-header {
    margin: 0 0 .22in;
    text-align: center;
}

.vendor-report-header img {
    display: block;
    height: auto;
    margin: 0 auto;
    width: 100%;
}

.vendor-quote-section {
    background: #fff;
    box-sizing: border-box;
    color: #000;
    margin: 0 auto 2rem;
    min-height: 11.69in;
    padding: .45in;
    page-break-after: always;
    break-after: page;
    width: 8.27in;
}

.vendor-quote-section:last-child {
    page-break-after: auto;
    break-after: auto;
}

.indent {
    display: inline-block;
    margin-left: .45in;
}

.print-table {
    border-collapse: collapse;
    margin: .18in 0;
    min-width: 0;
    width: 100%;
}

.print-table th,
.print-table td {
    border: 1px solid #000;
    color: #000;
    font-size: 10pt;
    padding: .07in;
    text-align: left;
    text-transform: none;
    vertical-align: top;
}

.print-table th {
    font-weight: 700;
    text-align: center;
}

.proc-plan-table th,
.proc-plan-table td {
    font-size: 8pt;
    padding: .04in;
}

.proc-plan-table th:nth-child(1),
.proc-plan-table td:nth-child(1) {
    width: .55in;
}

.proc-plan-table th:nth-child(2),
.proc-plan-table td:nth-child(2) {
    width: 3.7in;
}

.proc-plan-table th:nth-child(3),
.proc-plan-table td:nth-child(3),
.proc-plan-table th:nth-child(4),
.proc-plan-table td:nth-child(4),
.proc-plan-table th:nth-child(5),
.proc-plan-table td:nth-child(5),
.proc-plan-table th:nth-child(6),
.proc-plan-table td:nth-child(6),
.proc-plan-table th:nth-child(7),
.proc-plan-table td:nth-child(7) {
    width: .75in;
}

.proc-plan-table th:nth-child(8),
.proc-plan-table td:nth-child(8),
.proc-plan-table th:nth-child(9),
.proc-plan-table td:nth-child(9) {
    width: .95in;
}

.proc-plan-table .summary-row td,
.proc-plan-table .grand-total td {
    font-weight: 700;
}

.compact-print td {
    padding: .05in .08in;
}

.vendor-note {
    margin-top: .16in;
}

.vendor-note p {
    margin: .03in 0;
}

.signature {
    margin-left: auto;
    margin-top: .45in;
    text-align: center;
    width: 2.8in;
}

.signature p {
    margin: .04in 0;
}

.copy-info {
    margin-top: .25in;
}

.copy-info p {
    margin: .03in 0;
}

.comparison-note {
    font-size: 12pt;
    margin-top: .2in;
    text-align: justify;
}

.comparison-note p {
    margin: .03in 0;
}

.terms-note {
    font-size: 12pt;
    margin-top: .18in;
    text-align: justify;
}

.terms-note p {
    margin: .04in 0;
}

.agreement-title {
    font-size: 16pt !important;
    margin-bottom: .35in !important;
    text-decoration: underline;
}

.agreement-intro {
    font-size: 13pt;
    line-height: 1.45;
    margin: .18in 0;
    text-align: justify;
}

.agreement-subtitle {
    font-size: 13pt;
    font-weight: 700;
    margin: .12in 0 .05in;
    text-decoration: underline;
}

.agreement-clauses {
    border-collapse: collapse;
    width: 100%;
}

.agreement-clauses td {
    border: 0;
    font-size: 12.5pt;
    line-height: 1.35;
    padding: .04in .04in;
    text-align: justify;
    vertical-align: top;
}

.agreement-clauses td:first-child {
    font-weight: 700;
    width: .55in;
}

.agreement-sign-heading,
.agreement-signatures,
.agreement-witnesses {
    display: grid;
    grid-template-columns: 1fr 1fr;
    text-align: center;
}

.agreement-sign-heading {
    font-size: 12.5pt;
    font-style: italic;
    font-weight: 700;
    margin-top: .45in;
}

.agreement-signatures {
    margin-top: .7in;
}

.agreement-signatures p {
    font-size: 12.5pt;
    margin: .03in 0;
}

.agreement-presence {
    font-size: 12.5pt;
    margin: .38in 0 .25in;
    text-align: center;
}

.agreement-witnesses {
    text-align: left;
}

.agreement-witnesses p {
    font-size: 12.5pt;
    margin: .12in 0;
}

.bill-rfq {
    margin: .12in 0 .45in;
}

.bill-title {
    text-decoration: underline;
}

.bill-meta {
    border-bottom: 2px solid #000;
    display: grid;
    font-size: 14pt;
    font-weight: 700;
    grid-template-columns: 1fr 1fr;
    margin: .1in 0 .03in;
}

.bill-party-table {
    margin-top: 0;
}

.bill-party-table th,
.bill-party-table td {
    font-size: 13pt;
    height: .38in;
}

.bill-party-table th {
    text-align: left;
    width: 1.5in;
}

.bill-party-table td {
    width: 2.6in;
}

.bill-line {
    font-size: 13pt;
    margin: .45in 0 .5in;
}

.bill-line em,
.bill-work-title,
.bill-words em {
    font-weight: 700;
}

.bill-work-title {
    font-size: 13pt;
    margin: 0 0 .55in;
    text-transform: uppercase;
}

.bill-items-table th,
.bill-items-table td {
    font-size: 12pt;
    text-align: center;
}

.bill-items-table th:nth-child(2),
.bill-items-table td:nth-child(2) {
    text-align: left;
}

.bill-words {
    font-size: 13pt;
    margin: .06in 0 .55in;
}

.bill-words strong {
    display: inline-block;
    text-align: center;
    width: 1.45in;
}

.bill-counter {
    font-size: 13pt;
    margin: 0 0 .9in 1.25in;
}

.bill-signatures {
    display: grid;
    grid-template-columns: 1fr 1fr;
    text-align: center;
}

.bill-signatures p {
    font-size: 13pt;
    margin: .04in 0;
}

.bill-signatures .vendor-script {
    font-family: "Brush Script MT", "Segoe Script", cursive;
    font-size: 24pt;
    font-weight: 400;
    line-height: 1;
}

.challan-rfq {
    margin: .08in 0 .35in .45in;
}

.delivery-title {
    font-size: 15pt !important;
    margin-bottom: .12in !important;
    text-decoration: underline;
}

.challan-line {
    font-size: 11pt;
    font-weight: 700;
    margin: .02in 0;
}

.challan-text {
    font-size: 11pt;
    line-height: 1.3;
    margin: .04in 0 .45in;
    text-align: justify;
}

.challan-list-title {
    border-bottom: 1px solid #000;
    font-size: 11pt;
    margin: 0;
    text-decoration: underline;
}

.delivery-challan-table {
    margin-top: 0;
}

.delivery-challan-table th,
.delivery-challan-table td {
    font-size: 9.5pt;
    padding: .025in .04in;
}

.delivery-challan-table th,
.delivery-challan-table td:first-child,
.delivery-challan-table td:last-child {
    text-align: center;
}

.delivery-challan-table th:first-child,
.delivery-challan-table td:first-child {
    width: .8in;
}

.delivery-challan-table th:last-child,
.delivery-challan-table td:last-child {
    width: .65in;
}

.challan-received {
    font-size: 12pt;
    margin: .35in 0 .75in 1in;
}

.challan-signatures {
    margin-top: 0;
}

.sanction-office {
    font-size: 15pt;
    font-weight: 700;
    line-height: 1.25;
    margin: 0 0 .08in;
    text-align: center;
    text-decoration: underline;
}

.sanction-year {
    font-size: 13pt;
    font-weight: 700;
    margin: 0 0 .75in;
}

.sanction-title {
    font-size: 16pt !important;
    margin: 0 0 .7in 1in !important;
    text-align: left !important;
    text-decoration: underline;
}

.sanction-body {
    font-size: 14pt;
    line-height: 1.35;
    margin: 0;
    text-align: justify;
    text-indent: 1.75in;
}

.sanction-signature {
    margin-top: 1.8in;
    width: 3.3in;
}

.sanction-signature p {
    font-size: 14pt;
    font-weight: 700;
}

.sanction-copy {
    font-size: 14pt;
    margin-top: .18in;
}

.sanction-copy p:first-child {
    font-size: 14pt;
    text-decoration: underline;
}

.sanction-copy p {
    margin: .08in 0;
}

.specimen-address {
    display: grid;
    font-size: 14pt;
    grid-template-columns: 1.05in 1fr;
    line-height: 1.3;
    margin: .45in 0 .35in;
}

.specimen-subject {
    display: grid;
    font-size: 14pt;
    grid-template-columns: 1.05in 1fr;
    margin-bottom: .65in;
}

.specimen-subject strong {
    text-decoration: underline;
}

.specimen-body {
    font-size: 14pt;
    line-height: 1.4;
    margin: .25in 0;
    text-align: justify;
    text-indent: 1.25in;
}

.specimen-sign-list {
    font-size: 14pt;
    margin-top: .75in;
}

.specimen-sign-list p {
    margin: .28in 0;
}

.specimen-ddo-signature {
    margin-top: 1.55in;
    width: 3.3in;
}

.specimen-ddo-signature p {
    font-size: 14pt;
    font-weight: 700;
}

.specimen-copy {
    font-size: 14pt;
    margin-top: .15in;
}

.specimen-copy p:first-child {
    text-decoration: underline;
}

.specimen-copy p {
    margin: .08in 0;
}

.specimen-grid {
    display: grid;
    gap: .25in;
    grid-template-columns: repeat(3, 1fr);
    margin: .6in 0;
}

.specimen-grid span {
    border-top: 1px solid #000;
    padding-top: .1in;
}

.tr-form {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 10pt;
    line-height: 1.15;
}

.tr-form p {
    margin: .02in 0;
}

.tr-heading {
    display: grid;
    font-weight: 700;
    grid-template-columns: 1fr 1.45fr 1fr;
    margin-bottom: .18in;
}

.tr-heading > div:nth-child(2) {
    font-size: 12pt;
    text-align: center;
    text-decoration: underline;
}

.tr-heading > div:last-child {
    font-size: 10pt;
    font-weight: 400;
    padding-top: .02in;
}

.tr-top-grid {
    display: grid;
    grid-template-columns: 1.2fr 1.15fr 1fr;
    margin-bottom: .12in;
    min-height: 1.05in;
}

.tr-ref-block {
    font-size: 10pt;
}

.tr-object-block {
    align-self: center;
    font-size: 10pt;
    text-align: center;
}

.tr-voucher-block {
    font-size: 10pt;
}

.tr-voucher-block p {
    margin-bottom: .08in;
}

.tr-mid-grid {
    align-items: end;
    display: grid;
    grid-template-columns: 1.25fr 1.2fr 1fr;
    margin-bottom: .04in;
}

.tr-demand {
    font-size: 8.5pt;
    font-weight: 700;
}

.tr-form-no {
    font-size: 10pt;
    font-weight: 700;
    text-align: center;
}

.tr-vendor-no {
    border-top: 1px solid #000;
    display: grid;
    font-size: 10pt;
    grid-template-columns: .85in 1fr;
    padding-top: .04in;
}

.tr-bill-table {
    border-collapse: collapse;
    table-layout: fixed;
    width: 100%;
}

.tr-bill-table th,
.tr-bill-table td {
    border: 1px solid #000;
    font-size: 10pt;
    padding: .04in;
    vertical-align: middle;
}

.tr-bill-table th {
    font-weight: 700;
    text-align: center;
}

.tr-bill-table th:first-child,
.tr-bill-table td:first-child {
    width: 1.05in;
}

.tr-bill-table th:last-child,
.tr-bill-table td:last-child {
    width: .95in;
}

.tr-district,
.tr-center,
.tr-amount {
    text-align: center;
}

.tr-detail-title {
    font-size: 11pt !important;
    font-weight: 700;
    text-align: center;
}

.tr-payment-desc {
    font-size: 10pt;
    line-height: 1.25;
}

.tr-total-label {
    text-align: right;
}

.tr-deduction-title {
    text-decoration: underline;
}

.tr-deduction-lines {
    display: grid;
    grid-template-columns: 1.35in .35in 1fr;
    row-gap: .03in;
}

.tr-words {
    font-size: 10pt;
}

.tr-certificate-title {
    font-size: 11pt !important;
    text-align: center;
    text-decoration: underline;
}

.tr-certificate-text {
    text-align: center;
}

.tr-demand-line {
    font-size: 9pt;
    margin-top: .12in !important;
}

.tr30-sheet {
    background: transparent;
    margin: 0 auto;
    min-height: 0;
    padding: 0;
    width: 8.27in;
}

.tr30-page {
    background: #fff;
    box-sizing: border-box;
    color: #000;
    font-family: "Times New Roman", serif;
    margin: 0 auto 2rem;
    min-height: 11.69in;
    padding: .18in .16in .2in;
    page-break-after: always;
    break-after: page;
    width: 8.27in;
}

.tr30-page,
.tr30-page table,
.tr30-page thead,
.tr30-page tbody,
.tr30-page tr,
.tr30-page th,
.tr30-page td,
.tr30-page div,
.tr30-page p,
.tr30-page span {
    background: #fff !important;
    background-image: none !important;
}

.tr30-page:last-child {
    page-break-after: auto;
    break-after: auto;
}

.tr30-title-grid {
    display: grid;
    grid-template-columns: 1.65fr 2.65fr 1.95fr;
}

.tr30-title-grid h2,
.tr30-title-grid h3 {
    font-size: 16pt !important;
    line-height: 1.05;
    margin: 0 !important;
    text-align: center;
    text-transform: none !important;
}

.tr30-title-grid h2 {
    text-decoration: underline;
}

.tr30-title-grid > div:last-child {
    border: 1px solid #000;
    border-bottom: 0;
    font-size: 15pt;
    line-height: 1.15;
}

.tr30-title-grid > div:last-child p {
    border-bottom: 1px solid #000;
    margin: 0;
    padding: .07in .04in;
}

.tr30-month-row {
    border-bottom: 2px solid #000;
    display: grid;
    font-size: 13pt;
    grid-template-columns: 2.6fr 3.4fr;
    margin-top: .02in;
}

.tr30-month-row span,
.tr30-month-row strong {
    padding: .04in .02in;
}

.tr30-month-row span {
    text-decoration: underline;
}

.tr30-school-row {
    border-bottom: 2px solid #000;
    font-size: 14pt;
    padding: .04in;
    text-align: center;
    text-decoration: underline;
}

.tr30-function-grid {
    border-bottom: 2px solid #000;
    display: grid;
    grid-template-columns: 1fr 1.1fr;
}

.tr30-function-grid > div {
    min-height: .86in;
    padding: .04in .02in;
}

.tr30-function-grid > div:first-child {
    font-size: 13pt;
}

.tr30-function-grid > div:last-child {
    border-left: 1px solid #000;
    font-size: 13pt;
    font-weight: 700;
    text-align: center;
}

.tr30-function-grid p {
    margin: .05in 0;
}

.tr30-class-table,
.tr30-voucher-table {
    border-collapse: collapse;
    table-layout: fixed;
    width: 100%;
}

.tr30-class-table {
    border-left: 1px solid #000;
    border-right: 1px solid #000;
}

.tr30-class-table th,
.tr30-class-table td,
.tr30-voucher-table th,
.tr30-voucher-table td {
    border: 0;
    border-right: 1px solid #000;
    font-size: 12pt;
    line-height: 1.04;
    padding: .015in .03in;
    vertical-align: top;
}

.tr30-class-table th {
    border-bottom: 2px solid #000;
    border-top: 0;
    font-size: 12.5pt;
    font-weight: 400;
    text-align: left;
}

.tr30-class-table th:nth-child(1),
.tr30-class-table th:nth-child(4),
.tr30-class-table td:nth-child(1),
.tr30-class-table td:nth-child(4) {
    width: 2.05in;
}

.tr30-class-table th:nth-child(2),
.tr30-class-table th:nth-child(5),
.tr30-class-table td:nth-child(2),
.tr30-class-table td:nth-child(5) {
    text-align: center;
    width: .72in;
}

.tr30-class-table th:nth-child(3),
.tr30-class-table th:nth-child(6),
.tr30-class-table td:nth-child(3),
.tr30-class-table td:nth-child(6) {
    text-align: right;
    width: .78in;
}

.tr30-class-table th:nth-child(3),
.tr30-class-table td:nth-child(3) {
    border-right: 2px solid #000;
}

.tr30-group-row {
    font-weight: 700;
    text-decoration: underline;
}

.tr30-selected-row,
.tr30-total-row {
    font-weight: 700;
}

.tr30-total-row {
    border-bottom: 1px solid #000 !important;
    border-top: 2px solid #000 !important;
}

.tr30-right-summary-label,
.tr30-right-summary-amount,
.tr30-words-label,
.tr30-words-text {
    border-top: 2px solid #000;
    font-size: 13.5pt !important;
    line-height: 1.05;
}

.tr30-right-summary-label,
.tr30-words-label {
    text-align: left !important;
}

.tr30-right-summary-amount {
    text-align: right !important;
}

.tr30-words-text {
    border-top: 0;
    font-size: 12pt !important;
    text-align: left !important;
}

.tr30-appropriation,
.tr30-appropriation-inline {
    border-top: 1px solid #000 !important;
    font-size: 13pt !important;
    min-height: 1.1in;
    padding: .05in !important;
    text-align: left !important;
}

.tr30-appropriation p,
.tr30-appropriation-inline p {
    margin: .13in 0;
}

.tr30-voucher-table {
    margin-top: .28in;
}

.tr30-voucher-table th,
.tr30-voucher-table td {
    border: 2px solid #000;
    font-size: 18pt;
    line-height: 1.2;
    padding: .1in;
    text-align: center;
    vertical-align: middle;
}

.tr30-voucher-table td {
    height: .68in;
}

.tr30-voucher-table tbody tr:last-child td {
    font-size: 18pt;
    height: auto;
    padding: .02in .1in;
}

.tr30-certificates {
    font-size: 13pt;
    line-height: 1.35;
    text-align: justify;
}

.tr30-certificates p {
    margin: .22in 0;
}

.tr30-received {
    font-size: 13pt;
    margin-top: .55in;
}

.tr30-received p {
    margin: .08in 0;
}

.tr30-received p:last-child {
    margin-top: .55in;
}

.tr30-ag-box {
    border: 2px solid #000;
    border-left: 0;
    border-right: 0;
    font-size: 13pt;
    margin-top: .02in;
    min-height: 1.05in;
    text-align: center;
}

.tr30-ag-box p {
    border-bottom: 1px solid #000;
    margin: 0;
    padding: .03in 0;
}

.tr30-ag-box div {
    display: grid;
    grid-template-columns: 1fr 1fr;
    padding-top: .42in;
}

.tr30-footer-sign {
    display: grid;
    font-size: 13pt;
    grid-template-columns: 1fr 1fr;
    margin: .8in .15in 0;
    text-align: center;
}

@media (min-width: 641px) {
    .app-shell {
        flex-direction: row;
    }

    .app-sidebar {
        height: 100vh;
        position: sticky;
        top: 0;
        width: 250px;
    }

    .app-top-row {
        position: sticky;
        top: 0;
        z-index: 10;
    }

    .app-top-row,
    .app-content {
        padding-left: 2rem !important;
        padding-right: 1.5rem !important;
    }

    .app-sidebar .navbar-toggler {
        display: none;
    }

    .app-sidebar .nav-scrollable {
        display: block;
        height: calc(100vh - 3.5rem);
        overflow-y: auto;
    }
}

@media (max-width: 900px) {
    .metric-grid,
    .package-grid,
    .detail-grid,
    .form-grid,
    .school-group-header,
    .catalog-toolbar,
    .catalog-metrics {
        grid-template-columns: 1fr;
    }

    .school-group-header {
        align-items: flex-start;
        display: grid;
    }

    .tree-category-row,
    .tree-subcategory-row,
    .tree-item {
        align-items: start;
        grid-template-columns: 1.5rem 1.6rem minmax(0, 1fr);
    }

    .tree-item {
        grid-template-columns: 1rem minmax(0, 1fr);
    }

    .tree-node-actions,
    .tree-category-row > .status,
    .tree-subcategory-row > .status,
    .tree-item > .status {
        grid-column: 3;
    }

    .tree-item > .tree-node-actions,
    .tree-item > .status {
        grid-column: 2;
    }

    .tree-category-children {
        padding-left: 1.3rem;
    }
}

@media print {
    @page {
        margin: .35in;
        size: A4 portrait;
    }

    body {
        background: #fff;
    }

    .sidebar,
    .top-row,
    .print-toolbar,
    #blazor-error-ui {
        display: none !important;
    }

    .page,
    main,
    article.content {
        display: block !important;
        margin: 0 !important;
        padding: 0 !important;
        width: auto !important;
    }

    .print-sheet {
        box-shadow: none;
        margin: 0;
        min-height: 0;
        padding: 0;
        width: auto;
    }

    .vendor-quote-section {
        margin: 0;
        min-height: calc(11.69in - .7in);
        padding: 0;
        width: auto;
    }

    .tr30-sheet {
        background: #fff !important;
        margin: 0;
        padding: 0;
        width: auto;
    }

    .tr30-page {
        background: #fff !important;
        margin: 0;
        min-height: calc(11.69in - .7in);
        padding: .18in .14in .2in;
        width: auto;
    }
}

h1:focus {
    outline: none;
}

.valid.modified:not([type=checkbox]) {
    outline: 1px solid #26b050;
}

.invalid {
    outline: 1px solid #e50000;
}

.validation-message {
    color: #e50000;
}

.blazor-error-boundary {
    background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

    .blazor-error-boundary::after {
        content: "An error has occurred."
    }

.darker-border-checkbox.form-check-input {
    border-color: #929292;
}

.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
    color: var(--bs-secondary-color);
    text-align: end;
}

.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
    text-align: start;
}

.account-panel { max-width: 560px; margin: 2rem auto; }
.account-panel label { display: block; margin-bottom: 1rem; }
.app-top-row { gap: 1rem; }
fieldset { min-width: 0; }
