/* Workspace UI follows the compact, information-first conventions of modern
   administrative portals while keeping DosseyWorks' own identity. */

:root {
    --dw-font-xs: 13px;
    --dw-font-sm: 14px;
    --dw-font-md: 15px;
    --dw-font-lg: 16px;
    --dw-font-xl: 18px;
    --dw-font-2xl: 20px;
    --dw-font-3xl: 24px;
    --dw-font-kpi: 26px;
}

html, body, .mud-typography, .mud-button-root, .mud-nav-link { font-family: "Segoe UI", SegoeUI, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif; }
html, body { font-size: var(--dw-font-sm); }
small { font-size: var(--dw-font-xs); }

/* Routes.razor focuses the page's h1 after every navigation, so a screen reader
   announces where it landed rather than leaving the reading position at the
   link that was just followed. To make a heading focusable at all, Blazor
   stamps tabindex="-1" on it -- and Chrome then treats it as a focus-visible
   target and draws its default ring, which reads as a box drawn around the
   page title.

   The focus is worth keeping; the ring is not. A heading is not something you
   can act on, so there is no state to indicate, and nothing is lost by hiding
   it. Scoped to exactly the attribute Blazor adds, so no genuinely interactive
   control can match this and lose its focus indicator. */
h1[tabindex="-1"]:focus { outline: none; }

.validation-message {
    color: var(--mud-palette-error);
    font-size: var(--dw-font-xs);
}

.dw-wordmark {
    display: block;
    width: 7.6rem;
    height: auto;
}

.dw-module-card {
    height: 100%;
    border-top: 3px solid var(--mud-palette-primary);
}

.dw-public-main { min-height: 100vh; }
.dw-public-nav { border-bottom: 1px solid rgba(255,255,255,.12); }
.dw-hero { padding: clamp(4.5rem, 8vw, 7rem) 0; background: linear-gradient(135deg, #f5f9fd 0%, #fff 60%, #fdf6f4 100%); }
.dw-hero-title { max-width: 48rem; font-size: clamp(2.25rem, 4.2vw, 3.75rem); font-weight: 600; letter-spacing: -.025em; line-height: 1.12; margin-top: .75rem; }
.dw-hero-copy { max-width: 44rem; color: #4d5661; font-size: var(--dw-font-xl); line-height: 1.65; margin-top: 1.5rem; }
.dw-hero-panel { border-top: 4px solid #e84436; }
.dw-section { padding: 6rem 0; }
.dw-capability { height: 100%; border-color: #dce2e8; }
.dw-cta { padding: 5rem 0; background: #0b1f33; color: #fff; }
.dw-join { padding-top: clamp(5rem, 10vw, 9rem); padding-bottom: 4rem; }
.dw-choice-card { height: 100%; border-top: 3px solid var(--mud-palette-primary); }
.dw-field-label { display: block; margin: .85rem 0 .3rem; color: #323130; font-size: var(--dw-font-xs); font-weight: 600; }
.dw-text-input { display: block; width: 100%; height: 2.25rem; padding: 0 .65rem; border: 1px solid #8a8886; border-radius: 2px; background: #fff; color: #242424; font: inherit; }
.dw-text-input:focus { border-color: #0f6cbd; outline: 2px solid rgba(15,108,189,.2); }
.dw-primary-button { min-height: 2.25rem; padding: .45rem .85rem; border: 0; border-radius: 2px; background: #0f6cbd; color: #fff; cursor: pointer; font: 600 var(--dw-font-sm)/1 "Segoe UI", sans-serif; }
.dw-primary-button:hover { background: #115ea3; }
.dw-secondary-button { min-height: 2.25rem; padding: .45rem .85rem; border: 1px solid #8a8886; border-radius: 2px; background: #fff; color: #333; cursor: pointer; font: 600 var(--dw-font-sm)/1 "Segoe UI", sans-serif; }
.dw-secondary-button:hover { background: #f2f2f2; }
.dw-review-row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 0; border-top: 1px solid #e5e5e5; }
.dw-page-header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; }
.dw-button-link { display: inline-flex; align-items: center; text-decoration: none; }
.dw-form-grid { display: grid; grid-template-columns: repeat(2,minmax(0,26rem)); gap: .1rem 1.5rem; }
.dw-text-area { display: block; width: min(100%,53.5rem); min-height: 5rem; padding: .55rem .65rem; border: 1px solid #8a8886; border-radius: 2px; font: inherit; }
.dw-report-definition-grid { display: grid; grid-template-columns: minmax(0,2fr) minmax(300px,1fr); gap: 18px; margin-top: 18px; }.dw-report-definition-grid>div { min-width: 0; }.dw-report-definition-grid .dw-text-area { width: 100%; }.dw-sql-editor { min-height: 280px; font-family: Consolas,"Courier New",monospace; font-size: var(--dw-font-xs); line-height: 1.55; tab-size: 4; }.dw-parameter-editor { min-height: 180px; font-family: Consolas,"Courier New",monospace; font-size: var(--dw-font-xs); line-height: 1.55; }.dw-key-reveal { margin: 14px 0; padding: 13px 15px; border: 1px solid #d83b01; border-left-width: 4px; background: #fff4ce; }.dw-key-reveal p { margin: 3px 0 9px; }.dw-key-reveal code { display: block; overflow-wrap: anywhere; padding: 9px; border: 1px solid #d2d0ce; background: #fff; user-select: all; }.dw-connector-config { margin-top: 16px; }.dw-connector-config h3 { margin: 0 0 8px; font-size: var(--dw-font-md); }.dw-connector-config pre { overflow-x: auto; padding: 12px; border: 1px solid #d2d0ce; background: #f8f8f8; font-size: var(--dw-font-xs); line-height: 1.6; }
.dw-report-run-panel,.dw-report-result-panel { margin-top: 16px; }.dw-report-run-panel .dw-form-grid { max-width: 900px; }.dw-report-run-panel .dw-form-grid small { display: block; margin-top: 4px; color: #605e5c; font-size: var(--dw-font-xs); }.dw-report-run-panel .dw-select { width: 100%; height: 34px; padding: 0 8px; border: 1px solid #8a8886; border-radius: 2px; background: #fff; color: #323130; font: var(--dw-font-xs) "Segoe UI",sans-serif; }.dw-field-error { display: block; margin-top: 4px; color: #a4262c; font-size: var(--dw-font-xs); }.dw-report-results { max-height: 65vh; border: 1px solid #edebe9; }.dw-report-results table { width: max-content; min-width: 100%; }.dw-report-results th { position: sticky; z-index: 1; top: 0; background: #f3f2f1; }.dw-report-results td { max-width: 420px; overflow-wrap: anywhere; white-space: pre-wrap; }.dw-form-actions button:disabled { border-color: #d2d0ce; background: #f3f2f1; color: #a19f9d; cursor: default; }.dw-row-actions .dw-command-run { display: inline-flex; align-items: center; gap: 3px; min-height: 26px; padding: 0 9px; border: 1px solid #0078d4; border-radius: 2px; background: #0078d4; color: #fff; font-weight: 600; }.dw-row-actions .dw-command-run:hover { background: #106ebe; text-decoration: none; }
.dw-report-connection { margin-top: 18px; padding: 14px 15px 16px; border: 1px solid #d2d0ce; background: #fafafa; }.dw-report-connection h3 { margin: 0; font-size: var(--dw-font-md); }.dw-report-connection>p { margin: 3px 0 14px; color: #605e5c; }.dw-report-connection .dw-info-note { margin-top: 14px; }
.dw-inline-editor { display: grid; grid-template-columns: minmax(180px,240px) minmax(220px,1fr) auto; align-items: end; gap: 12px; margin: 4px 0 8px; padding: 12px 14px 14px; border: 1px solid #d2d0ce; background: #fafafa; }.dw-inline-editor .dw-field-label { margin-top: 0; }.dw-inline-editor .dw-action-primary { display: inline-flex; align-items: center; gap: 5px; min-height: 36px; padding: 0 12px; border: 1px solid #0078d4; border-radius: 2px; background: #0078d4; color: #fff; font: 600 var(--dw-font-xs) "Segoe UI",sans-serif; cursor: pointer; }.dw-field-help { margin: 8px 0 15px; color: #605e5c; font-size: var(--dw-font-xs); }.dw-row-actions details>summary { color: #0067b8; cursor: pointer; font-size: var(--dw-font-xs); }.dw-row-actions details[open] { min-width: 190px; padding: 7px; border: 1px solid #d2d0ce; background: #fafafa; }.dw-row-actions details form { display: block; margin-top: 7px; }.dw-row-actions details .dw-text-input { height: 30px; }
.dw-public-flow { display: grid; min-height: calc(100vh - 48px); place-items: start center; padding: clamp(42px,8vh,90px) 20px; background: #f3f6f9; }.dw-auth-card { width: min(620px,100%); padding: 24px 28px 28px; border: 1px solid #d2d0ce; border-top: 4px solid #0078d4; background: #fff; box-shadow: 0 4px 14px rgba(0,0,0,.08); }.dw-auth-card h1 { margin: 4px 0 0; font-size: var(--dw-font-2xl); font-weight: 600; }.dw-auth-card .dw-section-heading p { max-width: 520px; line-height: 1.5; }.dw-auth-card .dw-editor { display: grid; gap: 5px; }.dw-auth-card small { display: block; margin-top: 4px; color: #605e5c; font-size: var(--dw-font-xs); }.dw-eyebrow { color: #0067b8; font-size: var(--dw-font-xs); font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }.dw-select-input { display: block; width: 100%; height: 2.25rem; padding: 0 .55rem; border: 1px solid #8a8886; border-radius: 2px; background: #fff; color: #242424; font: inherit; }
.dw-input-unit { display: flex; align-items: stretch; }.dw-input-unit .dw-text-input { min-width: 0; border-radius: 2px 0 0 2px; }.dw-input-unit>span { display: inline-flex; align-items: center; padding: 0 .65rem; border: 1px solid #8a8886; border-left: 0; border-radius: 0 2px 2px 0; background: #edebe9; color: #605e5c; font-size: var(--dw-font-xs); }
.dw-check { display: flex; align-items: center; gap: .5rem; margin-top: 1rem; font-size: var(--dw-font-sm); }
.dw-data-table { width: 100%; border-collapse: collapse; font-size: var(--dw-font-xs); }
.dw-data-table th { height: 2.4rem; padding: .45rem .75rem; background: #fafafa; color: #323130; font-weight: 600; text-align: left; white-space: nowrap; border-bottom: 1px solid #d2d0ce; }
.dw-data-table td { height: 3rem; padding: .45rem .75rem; border-bottom: 1px solid #edebe9; vertical-align: middle; }
.dw-data-table td span { display: block; margin-top: .12rem; color: #605e5c; font-size: var(--dw-font-xs); }
.dw-data-table tbody tr:hover { background: #f3f9fd; }
@media(max-width:700px){.dw-form-grid,.dw-inline-editor{grid-template-columns:1fr}}

.dw-user-menu { position: relative; color: inherit; }
.dw-user-menu summary { list-style: none; }
.dw-user-menu summary::-webkit-details-marker { display: none; }
.dw-user-trigger { display: flex; align-items: center; gap: .55rem; min-height: 40px; padding: .25rem .55rem; border: 1px solid transparent; border-radius: 4px; cursor: pointer; user-select: none; }
.dw-user-trigger:hover, .dw-user-menu[open] .dw-user-trigger { background: rgba(255,255,255,.1); border-color: rgba(255,255,255,.2); }
.dw-user-avatar { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; flex: 0 0 30px; border-radius: 50%; background: #e84436; color: #fff; font-size: var(--dw-font-xs); font-weight: 600; letter-spacing: .02em; }
.dw-user-trigger-name { max-width: 12rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--dw-font-sm); }
.dw-user-card { position: absolute; z-index: 1400; top: calc(100% + .6rem); right: 0; width: min(22rem, calc(100vw - 2rem)); padding: .75rem 0; border: 1px solid #d5d9de; border-radius: 4px; background: #fff; color: #242424; box-shadow: 0 8px 24px rgba(0,0,0,.2); }
.dw-user-identity { display: flex; align-items: center; gap: .9rem; padding: .7rem 1rem 1rem; }
.dw-user-avatar-large { width: 44px; height: 44px; flex-basis: 44px; font-size: var(--dw-font-lg); }
.dw-user-identity-text { min-width: 0; }
.dw-user-full-name { overflow: hidden; color: #1f1f1f; font-size: var(--dw-font-md); font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.dw-user-email { overflow: hidden; margin-top: .15rem; color: #616161; font-size: var(--dw-font-xs); text-overflow: ellipsis; white-space: nowrap; }
.dw-user-divider { height: 1px; margin: 0 0 .4rem; background: #e5e5e5; }
.dw-user-action { display: flex; align-items: center; gap: .75rem; padding: .7rem 1rem; color: #242424; text-decoration: none; font-size: var(--dw-font-sm); }
.dw-user-action:hover { background: #f2f2f2; color: #0f6cbd; }

@media (max-width: 600px) {
    .dw-user-trigger-name { display: none; }
}

/* Administrative workspace shell */
.dw-portal-header { height: 48px; min-height: 48px; }
.dw-portal-header .mud-toolbar { min-height: 48px; padding: 0 12px; }
.dw-shell-brand { display: flex; align-items: center; height: 48px; padding: 0 8px; }
.dw-header-divider { width: 1px; height: 22px; margin: 0 14px 0 8px; background: rgba(255,255,255,.25); }
.dw-header-context { color: #f3f2f1; font-size: var(--dw-font-sm); font-weight: 600; }
.dw-workspace-name { max-width: 22rem; margin-left: .65rem; overflow: hidden; color: #c8c6c4; font-size: var(--dw-font-xs); text-overflow: ellipsis; white-space: nowrap; }
.dw-global-search { display: flex; align-items: center; gap: .55rem; width: min(34rem,38vw); height: 30px; margin-left: 3rem; padding: 0 .7rem; border-radius: 2px; background: #fff; color: #605e5c; font-size: var(--dw-font-xs); }
.dw-workspace-drawer { border-right: 1px solid #e1dfdd; }
.dw-workspace-drawer .mud-drawer-content { background: #f7f7f7; }
.dw-workspace-navigation { display: flex; flex-direction: column; min-height: calc(100vh - 48px); }
/* The module sidebar. Follows the settings context nav it replaced -- same
   flat rows, same 3px active rail -- rather than inventing a second idiom for
   the same job. */
.dw-module-identity { display: flex; align-items: center; gap: 9px; padding: 14px 14px 12px; border-bottom: 1px solid #e1dfdd; }
.dw-module-identity svg { flex: none; color: #0078d4; }
.dw-module-identity span { display: block; color: #605e5c; font-size: var(--dw-font-xs); text-transform: uppercase; letter-spacing: .04em; }
.dw-module-identity strong { display: block; margin-top: 1px; color: #201f1e; font-size: var(--dw-font-sm); font-weight: 600; }
/* The only way back out of a module, so it is above the module's own pages and
   in the same place in every one of them -- not pinned to the bottom, where it
   would move with the length of the list. */
.dw-module-launchpad { display: flex; align-items: center; gap: 9px; min-height: 34px; padding: 0 14px; border-bottom: 1px solid #e1dfdd; color: #0067b8; font-size: var(--dw-font-xs); text-decoration: none; }
.dw-module-launchpad:hover { background: #f3f2f1; }
.dw-module-nav { padding: 8px 0; }
.dw-module-nav a { display: flex; align-items: center; gap: 9px; min-height: 36px; padding: 0 14px; border-left: 3px solid transparent; color: #323130; font-size: var(--dw-font-sm); text-decoration: none; }
.dw-module-nav a:hover { background: #f3f2f1; }
.dw-module-nav a.active { border-left-color: #0078d4; background: #eaeaea; color: #201f1e; font-weight: 600; }
.dw-module-nav a:focus-visible, .dw-module-launchpad:focus-visible { outline: 2px solid #0078d4; outline-offset: -2px; }
.dw-module-nav svg, .dw-module-launchpad svg { flex: none; color: inherit; }
.dw-service-search { display: flex; align-items: center; gap: .45rem; height: 30px; padding: 0 .5rem; border: 1px solid #8a8886; background: #fff; color: #605e5c; font-size: var(--dw-font-xs); }
.dw-workspace-canvas { min-height: calc(100vh - 48px); padding: 16px 28px 48px !important; background: #fff; }

/* Resource pages */
.dw-breadcrumb { display: flex; align-items: center; gap: .45rem; min-height: 25px; color: #605e5c; font-size: var(--dw-font-xs); }
.dw-breadcrumb a { color: #0067b8; text-decoration: none; }
.dw-resource-header { display: flex; align-items: flex-start; justify-content: space-between; margin: 7px 0 12px; }
.dw-resource-header h1 { margin: 0; color: #201f1e; font-size: var(--dw-font-3xl); font-weight: 600; line-height: 1.25; }
.dw-resource-header h1 .dw-entity-mark { margin-right: .4rem; color: #0067b8; vertical-align: -2px; }
.dw-entity-mark { flex: none; }
.dw-empty .dw-entity-mark { margin-bottom: 6px; color: #a19f9d; }
.dw-context-mark { display: flex; align-items: center; justify-content: center; width: 42px; height: 42px; margin-right: 12px; background: #0078d4; color: #fff; }
.dw-context-mark .dw-entity-mark { color: #fff; }
.dw-resource-link .dw-entity-mark, .dw-related-panel .dw-entity-mark { margin-right: .3rem; color: #605e5c; vertical-align: -2px; }
.dw-resource-header p { margin: .25rem 0 0; color: #605e5c; font-size: var(--dw-font-sm); }
.dw-command-bar { display: flex; align-items: center; gap: .1rem; min-height: 40px; margin: 0 -4px 16px; border-top: 1px solid #edebe9; border-bottom: 1px solid #edebe9; }
.dw-command-bar a, .dw-command-bar button { display: inline-flex; align-items: center; gap: .4rem; min-height: 32px; padding: 0 .65rem; border: 0; background: transparent; color: #323130; font: 600 var(--dw-font-xs) "Segoe UI", sans-serif; text-decoration: none; cursor: pointer; }
.dw-command-bar a:hover, .dw-command-bar button:hover { background: #f3f2f1; }
.dw-command-bar .dw-command-primary { color: #0067b8; }
.dw-notice { margin-bottom: 12px; padding: 8px 12px; border-left: 3px solid; font-size: var(--dw-font-xs); }
.dw-notice.success { border-color: #107c10; background: #f1faf1; }.dw-notice.error { border-color: #a4262c; background: #fdf3f4; }
.dw-kpi-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 12px; margin-bottom: 18px; }
.dw-kpi-grid-three { grid-template-columns: repeat(3,minmax(0,1fr)); }
.dw-kpi { min-height: 104px; padding: 14px 16px; border: 1px solid #e1dfdd; border-top: 2px solid #0078d4; background: #fff; }
.dw-kpi span { display: block; color: #605e5c; font-size: var(--dw-font-xs); font-weight: 600; }.dw-kpi strong { display: block; margin: 7px 0 3px; color: #201f1e; font-size: var(--dw-font-kpi); font-weight: 500; }.dw-kpi small { color: #605e5c; font-size: var(--dw-font-xs); }.dw-kpi small.positive { color: #107c10; }.dw-kpi small.negative { color: #a4262c; }
.dw-resource-panel, .dw-dashboard-panel { border: 1px solid #e1dfdd; background: #fff; }
.dw-list-toolbar { display: flex; align-items: center; justify-content: space-between; min-height: 44px; padding: 6px 10px; border-bottom: 1px solid #e1dfdd; color: #605e5c; font-size: var(--dw-font-xs); }
.dw-filter-form { display: flex; align-items: center; width: min(28rem,60vw); height: 30px; padding: 0 8px; border: 1px solid #8a8886; background: #fff; }.dw-filter-form:focus-within { border-color: #0078d4; box-shadow: inset 0 0 0 1px #0078d4; }.dw-filter-form input { width: 100%; margin-left: 6px; border: 0; outline: 0; font: var(--dw-font-xs) "Segoe UI",sans-serif; }
.dw-filter-bar { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px; margin-bottom: 16px; padding: 12px; border: 1px solid #e1dfdd; background: #faf9f8; }
.dw-filter-bar > div { display: flex; flex-direction: column; gap: 4px; }.dw-filter-bar .dw-text-input { min-width: 11rem; }
.dw-filter-action { justify-content: flex-end; }.dw-filter-action button { min-height: 32px; padding: 0 1rem; }
.dw-locked-note { color: #605e5c; font-size: var(--dw-font-xs); font-style: italic; }
.dw-table-scroll { overflow-x: auto; }.dw-number { text-align: right !important; font-variant-numeric: tabular-nums; }.dw-resource-link { color: #0067b8; font-weight: 600; text-decoration: none; }.dw-resource-link:hover { text-decoration: underline; }.dw-attention { color: #a4262c; font-weight: 600; }
.dw-status { display: inline-flex !important; align-items: center; width: fit-content; padding: 2px 7px; border-radius: 10px; font-size: var(--dw-font-xs) !important; }.dw-status.active { background: #dff6dd; color: #0b6a0b; }.dw-status.archived { background: #edebe9; color: #605e5c; }.dw-status.pending { margin-right: 6px; background: #fff4ce; color: #7a4d05; }.dw-status.failed { background: #fde7e9; color: #a4262c; }.dw-status.neutral { background: #eff6fc; color: #004578; }.dw-overdue { display: block; margin-top: 2px; color: #a4262c !important; font-size: var(--dw-font-xs); }
.dw-row-actions { white-space: nowrap; }.dw-row-actions a, .dw-row-actions form, .dw-row-actions button { display: inline; }.dw-row-actions a, .dw-row-actions button { margin-right: 9px; border: 0; background: transparent; color: #0067b8; font: var(--dw-font-xs) "Segoe UI",sans-serif; text-decoration: none; cursor: pointer; }
.dw-launchpad-welcome { min-height: 240px; padding: 28px 16px; }
.dw-launchpad-welcome .dw-launchpad-welcome-action { margin-top: 16px; }
.dw-launchpad-welcome span { max-width: 52ch; }
.dw-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 130px; color: #605e5c; text-align: center; }.dw-empty strong { color: #323130; font-size: var(--dw-font-sm); }.dw-empty span { margin-top: 4px; }

/* Editors */
.dw-editor { max-width: 1100px; }.dw-editor section { margin-bottom: 16px; padding: 18px 20px 22px; border: 1px solid #e1dfdd; background: #fff; }.dw-editor h2, .dw-panel-heading h2 { margin: 0; color: #201f1e; font-size: var(--dw-font-md); font-weight: 600; }.dw-editor section>p, .dw-panel-heading p { margin: 3px 0 8px; color: #605e5c; font-size: var(--dw-font-xs); }
.dw-pricing-section { border-left: 3px solid #0078d4 !important; }.dw-money-field { max-width: 32rem; }.dw-money-input { display: grid; grid-template-columns: auto minmax(9rem,1fr) auto; align-items: center; height: 32px; border: 1px solid #8a8886; background: #fff; }.dw-money-input:focus-within { border-color: #0078d4; box-shadow: inset 0 0 0 1px #0078d4; }.dw-money-input>span { padding: 0 9px; color: #605e5c; font-size: var(--dw-font-xs); white-space: nowrap; }.dw-money-input>span:first-child { height: 100%; border-right: 1px solid #edebe9; line-height: 30px; font-weight: 600; }.dw-money-input>span:last-child { border-left: 1px solid #edebe9; }.dw-money-input input { height: 30px; border: 0; outline: 0; text-align: right; font: var(--dw-font-sm) "Segoe UI",sans-serif; font-variant-numeric: tabular-nums; }.dw-money-field>small { display: block; margin-top: 5px; color: #605e5c; font-size: var(--dw-font-xs); line-height: 1.35; }.dw-pricing-guidance { display: flex; flex-direction: column; max-width: 42rem; padding: 11px 13px; border-left: 3px solid #605e5c; background: #f3f2f1; }.dw-pricing-guidance strong { font-size: var(--dw-font-sm); }.dw-pricing-guidance span { margin-top: 3px; color: #605e5c; font-size: var(--dw-font-xs); }
.dw-modal-backdrop { position: fixed; z-index: 1300; inset: 0; display: flex; align-items: flex-start; justify-content: center; padding: 7vh 20px 30px; overflow-y: auto; background: rgba(0,0,0,.42); }.dw-modal-panel { width: min(760px,100%); border: 1px solid #8a8886; background: #fff; box-shadow: 0 12px 35px rgba(0,0,0,.3); }.dw-modal-panel>header { display: flex; align-items: flex-start; min-height: 78px; padding: 14px 18px; border-bottom: 1px solid #d2d0ce; }.dw-modal-panel>header span { color: #605e5c; font-size: var(--dw-font-xs); }.dw-modal-panel>header h2 { margin: 2px 0; font-size: var(--dw-font-xl); font-weight: 600; }.dw-modal-panel>header p { margin: 0; color: #605e5c; font-size: var(--dw-font-xs); }.dw-modal-close { margin-left: auto; padding: 0 5px; border: 0; background: transparent; color: #605e5c; font: 25px/1 "Segoe UI",sans-serif; cursor: pointer; }.dw-modal-panel>form { padding: 16px 18px 20px; }.dw-modal-panel>footer { display: flex; justify-content: flex-end; gap: 8px; padding: 10px 18px; border-top: 1px solid #d2d0ce; background: #fafafa; }.dw-modal-panel>footer button { min-height: 30px; padding: 0 13px; border: 1px solid #8a8886; border-radius: 2px; background: #fff; color: #323130; font: 600 var(--dw-font-xs) "Segoe UI",sans-serif; cursor: pointer; }.dw-modal-panel>footer .dw-action-primary { border-color: #0078d4; background: #0078d4; color: #fff; }.dw-modal-panel>footer button:disabled { border-color: #d2d0ce; background: #f3f2f1; color: #a19f9d; cursor: default; }.dw-time-entry-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px 16px; margin-bottom: 14px; }.dw-time-entry-grid .dw-grid-span { grid-column: 1/-1; }.dw-time-entry-grid small { display: block; margin-top: 4px; color: #605e5c; font-size: var(--dw-font-xs); }.dw-time-billing-preview { display: flex; align-items: baseline; justify-content: space-between; margin: 2px 0 14px; padding: 9px 11px; border-left: 3px solid #0078d4; background: #f3f9fd; }.dw-time-billing-preview span { color: #605e5c; font-size: var(--dw-font-xs); }.dw-time-billing-preview strong { font-size: var(--dw-font-xs); }.dw-hours-method { display: flex; gap: 20px; margin: 0 0 14px; padding: 11px 12px; border: 1px solid #d2d0ce; }.dw-hours-method legend { padding: 0 5px; color: #605e5c; font-size: var(--dw-font-xs); font-weight: 600; }.dw-hours-method label { display: flex; align-items: center; gap: 6px; font-size: var(--dw-font-xs); }.dw-hours-input { max-width: 10rem; text-align: right; font-variant-numeric: tabular-nums; }.dw-time-note { margin: -6px 0 14px; color: #605e5c; font-size: var(--dw-font-xs); }

/* Workspace settings */
/* Was a two-column grid with its own nav beside the content. The nav is the
   module sidebar now, so this is just the work surface. */
.dw-settings-layout { max-width: 1360px; min-height: 600px; border: 1px solid #d2d0ce; background: #fff; }
.dw-settings-content { min-width: 0; padding: 18px 20px 30px; }.dw-settings-editor { max-width: 100%; }.dw-settings-editor fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }.dw-settings-editor fieldset:disabled { opacity: .7; }
.dw-secret-current { margin: 0 0 4px; color: #605e5c; font-size: var(--dw-font-xs); }.dw-check.compact { margin-top: 5px; font-size: var(--dw-font-xs); }
.dw-info-note { display: flex; align-items: flex-start; gap: 8px; max-width: 53.5rem; margin-top: 14px; padding: 9px 11px; border-left: 3px solid #0078d4; background: #f3f9fd; color: #323130; font-size: var(--dw-font-xs); line-height: 1.4; }
.dw-settings-panel { margin-bottom: 18px; padding: 16px 18px 20px; border: 1px solid #e1dfdd; background: #fff; }.dw-resource-table { width: 100%; border-collapse: collapse; font-size: var(--dw-font-xs); }.dw-resource-table th { padding: 8px 10px; border-bottom: 1px solid #d2d0ce; background: #fafafa; text-align: left; }.dw-resource-table td { padding: 9px 10px; border-bottom: 1px solid #edebe9; vertical-align: middle; }.dw-resource-table td>span { display: block; max-width: 25rem; margin-top: 2px; color: #605e5c; font-size: var(--dw-font-xs); }.dw-resource-table td:last-child { white-space: nowrap; }.dw-status-active { color: #107c10!important; }.dw-status-inactive { color: #605e5c!important; }
.dw-link-button { padding: 0; border: 0; background: transparent; color: #0067b8; font: var(--dw-font-xs) "Segoe UI",sans-serif; cursor: pointer; }.dw-link-button.danger { color: #a4262c; }.dw-inline-form { display: inline; margin-left: 10px; }.dw-form-actions { display: flex; align-items: center; gap: 10px; margin-top: 16px; }.dw-form-actions a { color: #0067b8; font-size: var(--dw-font-xs); text-decoration: none; }.dw-form-actions .dw-action-primary { display: inline-flex; align-items: center; gap: 5px; min-height: 32px; padding: 0 12px; border: 1px solid #0078d4; border-radius: 2px; background: #0078d4; color: #fff; font: 600 var(--dw-font-xs) "Segoe UI",sans-serif; cursor: pointer; }
.dw-attachment-table .dw-file-link { padding: 0; border: 0; background: transparent; text-align: left; cursor: pointer; }.dw-version-history { margin-top: 3px; color: #605e5c; font-size: var(--dw-font-xs); }.dw-version-history summary { color: #0067b8; cursor: pointer; }.dw-version-history span { display: block; padding: 2px 0; white-space: nowrap; }.dw-attachment-modal { width: min(680px,100%); }.dw-attachment-form { display: grid; gap: 13px; padding: 16px 18px 20px; }.dw-attachment-form small { display: block; margin-top: 4px; color: #605e5c; font-size: var(--dw-font-xs); }.dw-file-input { width: 100%; min-height: 34px; padding: 5px; border: 1px solid #8a8886; background: #fff; color: #323130; font: var(--dw-font-xs) "Segoe UI",sans-serif; }.dw-file-input::file-selector-button { min-height: 25px; margin-right: 9px; padding: 0 10px; border: 1px solid #8a8886; border-radius: 2px; background: #f3f2f1; color: #323130; cursor: pointer; }.dw-selected-file { display: flex; align-items: center; gap: 9px; padding: 9px 11px; border: 1px solid #d2d0ce; background: #fafafa; }.dw-selected-file strong,.dw-selected-file span { display: block; font-size: var(--dw-font-xs); }.dw-selected-file span { margin-top: 2px; color: #605e5c; }.dw-upload-progress { display: flex; align-items: center; gap: 9px; padding: 9px 11px; border-left: 3px solid #0078d4; background: #f3f9fd; font-size: var(--dw-font-xs); }.dw-upload-progress>span { width: 15px; height: 15px; border: 2px solid #c7e0f4; border-top-color: #0078d4; border-radius: 50%; animation: dw-spin .8s linear infinite; }@keyframes dw-spin{to{transform:rotate(360deg)}}

/* Analysis and workspace dashboard */
.dw-period-tabs { display: flex; gap: 2px; margin: -5px 0 18px; border-bottom: 1px solid #d2d0ce; }.dw-period-tabs a { padding: 8px 14px 7px; color: #323130; font-size: var(--dw-font-xs); text-decoration: none; }.dw-period-tabs a.active { border-bottom: 2px solid #0078d4; color: #0067b8; font-weight: 600; }
.dw-dashboard-grid { display: grid; grid-template-columns: minmax(0,2fr) minmax(300px,1fr); gap: 14px; }.dw-dashboard-panel { min-height: 330px; padding: 16px; }.dw-panel-heading { display: flex; justify-content: space-between; margin-bottom: 14px; }.dw-panel-heading>span { color: #605e5c; font-size: var(--dw-font-xs); }
.dw-column-chart { display: flex; align-items: flex-end; gap: 8px; height: 245px; padding: 28px 4px 0; border-bottom: 1px solid #d2d0ce; }.dw-column { display: flex; flex: 1; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; min-width: 32px; }.dw-column-bar { width: min(34px,72%); min-height: 3px; background: #0078d4; }.dw-column-value { margin-bottom: 4px; color: #605e5c; font-size: var(--dw-font-xs); }.dw-column>span { margin: 7px 0 -22px; color: #605e5c; font-size: var(--dw-font-xs); white-space: nowrap; }.dw-chart-empty { height: 240px; }
.dw-ageing-row { margin: 13px 0; }.dw-ageing-row>div:first-child { display: flex; justify-content: space-between; margin-bottom: 4px; color: #605e5c; font-size: var(--dw-font-xs); }.dw-ageing-row strong { color: #323130; font-weight: 600; }.dw-ageing-track { height: 7px; background: #f3f2f1; }.dw-ageing-track span { display: block; height: 100%; background: #0078d4; }.dw-ageing-track span.critical { background: #d13438; }.dw-ageing-total { display: flex; justify-content: space-between; margin-top: 20px; padding-top: 12px; border-top: 1px solid #edebe9; font-size: var(--dw-font-xs); }.dw-ageing-total strong { font-size: var(--dw-font-sm); }
/* The launchpad at /workspace/{id}: one tile per module.
   Flat and bordered rather than cards -- no shadow, no large radius, no hero.
   Every colour is a theme variable rather than a hex, so the tiles stay legible
   if the dark palette MainLayout already defines is ever switched on; the hex
   fallbacks are the same Fluent greys the rest of this file uses. */
.dw-launchpad { display: grid; grid-template-columns: repeat(auto-fill,minmax(265px,1fr)); gap: 10px; max-width: 1100px; }
.dw-launchpad-tile { display: flex; align-items: flex-start; gap: 12px; min-height: 90px; padding: 14px 16px; border: 1px solid var(--mud-palette-lines-default,#e1dfdd); border-radius: 2px; background: var(--mud-palette-surface,#fff); color: var(--mud-palette-text-primary,#323130); text-decoration: none; }
.dw-launchpad-tile:hover { border-color: var(--mud-palette-primary,#0078d4); background: var(--mud-palette-action-default-hover,#f3f9fd); }
/* The tiles are the only way out of this page, so the focus ring has to be
   visible rather than inherited from the browser default on a bordered box. */
.dw-launchpad-tile:focus-visible { outline: 2px solid var(--mud-palette-primary,#0078d4); outline-offset: -1px; }
.dw-launchpad-tile svg { flex: none; color: var(--mud-palette-primary,#0078d4); }
.dw-launchpad-tile strong { display: block; font-size: var(--dw-font-md); font-weight: 600; }
.dw-launchpad-tile small { display: block; margin-top: 4px; color: var(--mud-palette-text-secondary,#605e5c); font-size: var(--dw-font-xs); line-height: 1.45; }

/* Customer resource context: Azure DevOps work-item-inspired structure */
.dw-context-card { max-width: 1440px; border: 1px solid #c8c6c4; background: #fff; box-shadow: 0 2px 8px rgba(0,0,0,.08); }
.dw-context-identity { display: flex; align-items: center; min-height: 82px; padding: 14px 18px; border-bottom: 1px solid #edebe9; }
.dw-context-icon { display: flex; align-items: center; justify-content: center; width: 42px; height: 42px; margin-right: 12px; background: #0078d4; color: #fff; font-size: var(--dw-font-xl); font-weight: 600; }
.dw-context-title { min-width: 0; }.dw-context-title>span,.dw-context-title>small { display: block; color: #605e5c; font-size: var(--dw-font-xs); }.dw-context-title h1 { margin: 2px 0; color: #201f1e; font-size: var(--dw-font-2xl); font-weight: 600; }
.dw-context-actions { display: flex; align-items: center; gap: 5px; margin-left: auto; }.dw-context-actions a,.dw-context-actions button { display: inline-flex; align-items: center; gap: 5px; min-height: 32px; padding: 0 12px; border: 1px solid #8a8886; border-radius: 2px; background: #fff; color: #323130; font: 600 var(--dw-font-xs) "Segoe UI",sans-serif; text-decoration: none; cursor: pointer; }.dw-context-actions .dw-action-primary { border-color: #0078d4; background: #0078d4; color: #fff; }.dw-context-actions a:hover,.dw-context-actions button:hover { background: #f3f2f1; }.dw-context-actions .dw-action-primary:hover { background: #106ebe; }
.dw-state-strip { display: flex; align-items: stretch; min-height: 58px; padding: 0 18px; border-bottom: 1px solid #d2d0ce; background: #f3f2f1; }.dw-state-strip>div { display: flex; flex-direction: column; justify-content: center; min-width: 150px; padding: 8px 24px 8px 0; }.dw-state-strip span { color: #605e5c; font-size: var(--dw-font-xs); }.dw-state-strip strong { margin-top: 3px; color: #323130; font-size: var(--dw-font-xs); font-weight: 600; }.dw-state-strip strong.active { color: #107c10; }.dw-state-strip strong.archived { color: #a4262c; }.dw-state-strip .dw-state-action { align-items: flex-end; margin-left: auto; padding-right: 0; }.dw-state-action form,.dw-state-action button { margin: 0; }.dw-state-action button { border: 0; background: transparent; color: #0067b8; font: 600 var(--dw-font-xs) "Segoe UI",sans-serif; cursor: pointer; }
.dw-editor-state { margin-bottom: 16px; border: 1px solid #d2d0ce; }.dw-assignment-field select { width: 210px; height: 26px; margin-top: 2px; border: 1px solid #8a8886; background: #fff; font: var(--dw-font-xs) "Segoe UI",sans-serif; }
.dw-resource-context-layout { display: grid; grid-template-columns: 175px minmax(0,1fr); }.dw-context-nav { padding: 12px 0; border-right: 1px solid #edebe9; background: #fafafa; }.dw-context-nav a { display: flex; align-items: center; justify-content: space-between; min-height: 34px; padding: 0 14px; border-left: 3px solid transparent; color: #323130; font-size: var(--dw-font-xs); text-decoration: none; }.dw-context-nav a:hover { background: #f3f2f1; }.dw-context-nav a.active { border-left-color: #0078d4; background: #edebe9; font-weight: 600; }.dw-context-nav a span { color: #605e5c; font-size: var(--dw-font-xs); }
.dw-context-content { min-width: 0; padding: 0 20px 30px; }.dw-context-section { padding: 20px 0 24px; border-bottom: 1px solid #edebe9; scroll-margin-top: 60px; }.dw-context-section:last-child { border-bottom: 0; }.dw-section-heading { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: 14px; }.dw-section-heading h2 { margin: 0; color: #201f1e; font-size: var(--dw-font-md); font-weight: 600; }.dw-section-heading p { margin: 3px 0 0; color: #605e5c; font-size: var(--dw-font-xs); }.dw-section-heading>a { color: #0067b8; font-size: var(--dw-font-xs); text-decoration: none; }
.dw-property-grid { display: grid; grid-template-columns: repeat(4,minmax(130px,1fr)); border-top: 1px solid #edebe9; border-left: 1px solid #edebe9; }.dw-property-grid>div { min-height: 66px; padding: 10px 12px; border-right: 1px solid #edebe9; border-bottom: 1px solid #edebe9; }.dw-property-grid span,.dw-property-grid strong { display: block; }.dw-property-grid span { color: #605e5c; font-size: var(--dw-font-xs); }.dw-property-grid strong { margin-top: 5px; color: #323130; font-size: var(--dw-font-xs); font-weight: 600; }
.dw-resource-notes { margin-top: 14px; padding: 12px; background: #fafafa; }.dw-resource-notes span { color: #605e5c; font-size: var(--dw-font-xs); }.dw-resource-notes p { margin: 5px 0 0; color: #323130; font-size: var(--dw-font-xs); white-space: pre-wrap; }
.dw-resource-metadata { display: grid; grid-template-columns: repeat(3,1fr); gap: 12px; margin-top: 14px; }.dw-resource-metadata>div { padding: 9px 11px; border-left: 2px solid #d2d0ce; }.dw-resource-metadata span,.dw-resource-metadata strong,.dw-resource-metadata small { display: block; }.dw-resource-metadata span { color: #605e5c; font-size: var(--dw-font-xs); }.dw-resource-metadata strong { margin-top: 3px; font-size: var(--dw-font-xs); font-weight: 600; }.dw-resource-metadata small { margin-top: 2px; color: #605e5c; font-size: var(--dw-font-xs); }.dw-monospace { overflow: hidden; font-family: Consolas,monospace; text-overflow: ellipsis; }
.dw-comment-editor { border: 1px solid #c8c6c4; }.dw-comment-editor textarea { display: block; width: 100%; min-height: 74px; padding: 10px; border: 0; border-bottom: 1px solid #edebe9; outline: 0; resize: vertical; font: var(--dw-font-xs) "Segoe UI",sans-serif; }.dw-comment-editor:focus-within { border-color: #0078d4; }.dw-comment-editor>div { display: flex; align-items: center; justify-content: space-between; min-height: 38px; padding: 0 8px 0 10px; background: #fafafa; }.dw-comment-editor span { color: #605e5c; font-size: var(--dw-font-xs); }.dw-comment-editor button { min-height: 27px; padding: 0 12px; border: 0; background: #0078d4; color: #fff; font: 600 var(--dw-font-xs) "Segoe UI",sans-serif; cursor: pointer; }
.dw-discussion-list { margin-top: 14px; }.dw-comment { display: grid; grid-template-columns: 32px minmax(0,1fr); gap: 10px; padding: 12px 0; border-bottom: 1px solid #edebe9; }.dw-comment-avatar { display: flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 50%; background: #e1dfdd; color: #323130; font-size: var(--dw-font-xs); font-weight: 600; }.dw-comment header { display: flex; align-items: baseline; gap: 8px; }.dw-comment header strong { font-size: var(--dw-font-xs); }.dw-comment header span { color: #605e5c; font-size: var(--dw-font-xs); }.dw-comment p { margin: 6px 0 0; font-size: var(--dw-font-xs); line-height: 1.45; white-space: pre-wrap; }
.dw-related-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; }.dw-related-panel { min-width: 0; border: 1px solid #e1dfdd; }.dw-related-panel>header { display: flex; align-items: center; justify-content: space-between; min-height: 38px; padding: 0 10px; border-bottom: 1px solid #edebe9; background: #fafafa; }.dw-related-panel h3 { margin: 0; font-size: var(--dw-font-xs); font-weight: 600; }.dw-related-panel header span { color: #605e5c; font-size: var(--dw-font-xs); }.dw-related-panel table { width: 100%; border-collapse: collapse; font-size: var(--dw-font-xs); }.dw-related-panel th,.dw-related-panel td { padding: 7px 8px; border-bottom: 1px solid #edebe9; text-align: left; }.dw-related-panel th { color: #605e5c; font-weight: 600; }.dw-related-panel td span { display: block; color: #605e5c; font-size: var(--dw-font-xs); }.dw-empty.compact { min-height: 88px; padding: 12px; }
.dw-timeline { margin-left: 7px; border-left: 2px solid #d2d0ce; }.dw-timeline article { position: relative; display: grid; grid-template-columns: 12px minmax(0,1fr); gap: 8px; margin: 0 0 0 -7px; padding: 0 0 18px; }.dw-timeline-dot { width: 12px; height: 12px; margin-top: 2px; border: 3px solid #fff; border-radius: 50%; background: #0078d4; box-shadow: 0 0 0 1px #0078d4; }.dw-timeline header { display: flex; align-items: baseline; justify-content: space-between; }.dw-timeline header strong { font-size: var(--dw-font-xs); }.dw-timeline time { color: #605e5c; font-size: var(--dw-font-xs); }.dw-timeline p { margin: 4px 0 0; color: #605e5c; font-size: var(--dw-font-xs); }.dw-timeline p span { margin-left: 5px; }

@media(max-width:1000px){.dw-global-search{display:none}.dw-kpi-grid{grid-template-columns:repeat(2,1fr)}.dw-dashboard-grid{grid-template-columns:1fr}.dw-property-grid{grid-template-columns:repeat(2,1fr)}.dw-related-grid{grid-template-columns:1fr}}
@media(max-width:700px){.dw-workspace-canvas{padding:12px!important}.dw-kpi-grid,.dw-kpi-grid-three{grid-template-columns:1fr}.dw-form-grid,.dw-time-entry-grid,.dw-report-definition-grid{grid-template-columns:1fr}.dw-time-entry-grid .dw-grid-span{grid-column:auto}.dw-modal-backdrop{padding:12px}.dw-resource-header h1{font-size:var(--dw-font-2xl)}.dw-resource-context-layout{grid-template-columns:1fr}.dw-context-nav{display:flex;overflow-x:auto;border-right:0;border-bottom:1px solid #edebe9}.dw-context-nav a{white-space:nowrap}.dw-settings-content{padding:14px 12px 20px}.dw-context-content{padding:0 12px 20px}.dw-context-identity{align-items:flex-start;flex-wrap:wrap}.dw-context-actions{width:100%;margin:10px 0 0 54px}.dw-state-strip{flex-wrap:wrap}.dw-state-strip .dw-state-action{align-items:flex-start;margin-left:0}.dw-property-grid,.dw-resource-metadata{grid-template-columns:1fr}.dw-workspace-name{display:none}}

@media (max-width: 600px) {
    .dw-wordmark {
        width: 6.8rem;
    }
}

.blazor-error-boundary {
    background: var(--mud-palette-error);
    color: var(--mud-palette-error-text);
    padding: 1rem;
}

    .blazor-error-boundary::after {
        content: "An error has occurred.";
    }
