/* /Components/Chat/ChatWidget.razor.rz.scp.css */
.chat-fab[b-h0j7odu7g9] {
    position: fixed;
    right: 20px;
    bottom: 20px;
    width: 46px;
    height: 46px;
    border-radius: 50%;
    border: 1px solid rgba(255, 255, 255, 0.14);
    background: linear-gradient(135deg, #4363d8, #6a3fd8);
    color: #fff;
    cursor: pointer;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.32);
    z-index: 9000;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform .12s ease, box-shadow .12s ease;
}
.chat-fab:hover[b-h0j7odu7g9] { transform: scale(1.06); box-shadow: 0 8px 22px rgba(0, 0, 0, 0.4); }
.chat-fab__icon[b-h0j7odu7g9] { display: flex; line-height: 1; }

.chat-panel[b-h0j7odu7g9] {
    position: fixed;
    right: 20px;
    bottom: 20px;
    width: 380px;
    max-width: calc(100vw - 32px);
    height: 560px;
    max-height: calc(100vh - 40px);
    display: flex;
    flex-direction: column;
    background: #1c1f26;
    color: #e7e9ee;
    border: 1px solid #2c313c;
    border-radius: 12px;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.5);
    z-index: 9000;
    overflow: hidden;
    font-size: 14px;
}

.chat-panel__head[b-h0j7odu7g9] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 12px;
    background: #242833;
    border-bottom: 1px solid #2c313c;
}
.chat-panel__title[b-h0j7odu7g9] { font-weight: 600; }
.chat-panel__head-actions[b-h0j7odu7g9] { display: flex; gap: 4px; }
.chat-iconbtn[b-h0j7odu7g9] {
    background: none;
    border: none;
    color: #aab0bd;
    cursor: pointer;
    font-size: 15px;
    padding: 2px 6px;
    border-radius: 6px;
}
.chat-iconbtn:hover[b-h0j7odu7g9] { background: #2c313c; color: #fff; }
.chat-iconbtn:disabled[b-h0j7odu7g9] { opacity: .4; cursor: default; }
.chat-iconbtn--on[b-h0j7odu7g9] { background: #2f3b5c; color: #fff; }

.chat-mic[b-h0j7odu7g9] {
    background: #161922;
    border: 1px solid #2c313c;
    color: #aab0bd;
    border-radius: 8px;
    width: 40px;
    cursor: pointer;
    font-size: 15px;
    flex: 0 0 auto;
}
.chat-mic:hover[b-h0j7odu7g9] { background: #20242e; color: #fff; }
.chat-mic:disabled[b-h0j7odu7g9] { opacity: .4; cursor: default; }
/* Warming up (session started, not yet capturing): amber, no pulse — don't speak yet. */
.chat-mic--warm[b-h0j7odu7g9] {
    background: #4a3b1e;
    border-color: #8a6d2f;
    color: #f0d79a;
}
.chat-mic--on[b-h0j7odu7g9] {
    background: #6e2b2b;
    border-color: #a23b3b;
    color: #fff;
    animation: chat-pulse-b-h0j7odu7g9 1.1s ease-in-out infinite;
}
@keyframes chat-pulse-b-h0j7odu7g9 {
    0%, 100% { box-shadow: 0 0 0 0 rgba(162, 59, 59, 0.6); }
    50% { box-shadow: 0 0 0 6px rgba(162, 59, 59, 0); }
}

.chat-voicebar[b-h0j7odu7g9] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding: 7px 12px;
    background: #20242e;
    border-bottom: 1px solid #2c313c;
}
.chat-voicesel[b-h0j7odu7g9] {
    flex: 1 1 100%;   /* its own row — long voice names need the width */
    min-width: 0;
    max-width: 100%;
    box-sizing: border-box;
    background: #161922;
    color: #e7e9ee;
    border: 1px solid #2c313c;
    border-radius: 6px;
    padding: 4px 6px;
    font-size: 12px;
}
.chat-voicerate[b-h0j7odu7g9] { flex: 1 1 auto; min-width: 0; accent-color: #4363d8; }
.chat-voicerate__val[b-h0j7odu7g9] { flex: 0 0 auto; font-size: 11px; color: #aab0bd; min-width: 30px; text-align: right; }

.chat-panel__log[b-h0j7odu7g9] {
    flex: 1;
    overflow-y: auto;
    padding: 12px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.chat-empty[b-h0j7odu7g9] { color: #7b8190; font-size: 13px; line-height: 1.5; }

.chat-msg[b-h0j7odu7g9] { display: flex; flex-direction: column; gap: 4px; max-width: 100%; }
.chat-msg__text[b-h0j7odu7g9] { white-space: pre-wrap; word-wrap: break-word; line-height: 1.45; }

/* Rendered-markdown assistant text. The .chat-md div is component-rendered (scoped), but its children
   are injected via MarkupString and carry NO scope attribute — so child rules MUST use ::deep or they
   never match (a default <table> then has no borders). */
.chat-md[b-h0j7odu7g9] { white-space: normal; }
.chat-md[b-h0j7odu7g9]  div { margin: 0; }
.chat-md[b-h0j7odu7g9]  .md-sp { height: .5em; }
.chat-md[b-h0j7odu7g9]  .md-h { font-weight: 600; margin: .3em 0 .15em; }
.chat-md[b-h0j7odu7g9]  ul, .chat-md[b-h0j7odu7g9]  ol { margin: .2em 0 .3em; padding-left: 1.3em; }
.chat-md[b-h0j7odu7g9]  li { margin: .1em 0; }
.chat-md[b-h0j7odu7g9]  strong { font-weight: 600; color: #fff; }
.chat-md[b-h0j7odu7g9]  em { font-style: italic; }
.chat-md[b-h0j7odu7g9]  a { color: #8ab4ff; text-decoration: underline; }
.chat-md[b-h0j7odu7g9]  code {
    background: #161922;
    border: 1px solid #3a4150;
    border-radius: 4px;
    padding: 0 4px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 12px;
}
.md-cursor[b-h0j7odu7g9] { opacity: .7; }
.chat-md[b-h0j7odu7g9]  .md-table {
    border-collapse: collapse;
    margin: .35em 0;
    font-size: 13px;
    width: 100%;
}
.chat-md[b-h0j7odu7g9]  .md-table th, .chat-md[b-h0j7odu7g9]  .md-table td {
    border: 1px solid #4a5263;
    padding: 3px 7px;
    text-align: left;
    vertical-align: top;
}
.chat-md[b-h0j7odu7g9]  .md-table th { background: #242833; font-weight: 600; color: #fff; }
.chat-md[b-h0j7odu7g9]  .md-table tr:nth-child(even) td { background: #20242e; }
.chat-msg--user[b-h0j7odu7g9] {
    align-self: flex-end;
    background: #2f3b5c;
    padding: 8px 11px;
    border-radius: 12px 12px 2px 12px;
    max-width: 85%;
}
.chat-msg--assistant[b-h0j7odu7g9] { align-self: flex-start; max-width: 92%; }

.chat-msg__tools[b-h0j7odu7g9] { display: flex; flex-wrap: wrap; gap: 4px; }
.chat-tool[b-h0j7odu7g9] {
    font-size: 11px;
    color: #9fd0a0;
    background: #233027;
    padding: 1px 6px;
    border-radius: 6px;
}

.chat-error[b-h0j7odu7g9] {
    color: #ff9a9a;
    background: #3a2424;
    border-radius: 8px;
    padding: 8px 10px;
    font-size: 13px;
}

.chat-vhint[b-h0j7odu7g9] {
    color: #d8c08a;
    background: #2e2a20;
    border-top: 1px solid #3a3322;
    padding: 7px 12px;
    font-size: 12px;
    line-height: 1.4;
}

.chat-confirm[b-h0j7odu7g9] {
    padding: 10px 12px;
    background: #2a2230;
    border-top: 1px solid #3a2c44;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.chat-confirm__actions[b-h0j7odu7g9] { display: flex; gap: 8px; }
.chat-btn[b-h0j7odu7g9] {
    border: 1px solid #3a4150;
    background: #2c313c;
    color: #e7e9ee;
    border-radius: 7px;
    padding: 5px 12px;
    cursor: pointer;
    font-size: 13px;
}
.chat-btn:hover[b-h0j7odu7g9] { background: #353b48; }
.chat-btn--danger[b-h0j7odu7g9] { background: #6e2b2b; border-color: #8a3a3a; }
.chat-btn--danger:hover[b-h0j7odu7g9] { background: #843333; }

.chat-panel__input[b-h0j7odu7g9] {
    display: flex;
    gap: 8px;
    padding: 10px;
    border-top: 1px solid #2c313c;
    background: #20242e;
}
.chat-input[b-h0j7odu7g9] {
    flex: 1;
    background: #161922;
    border: 1px solid #2c313c;
    border-radius: 8px;
    padding: 8px 10px;
    color: #e7e9ee;
    font-size: 14px;
    outline: none;
}
.chat-input:focus[b-h0j7odu7g9] { border-color: #4363d8; }
.chat-input:disabled[b-h0j7odu7g9] { opacity: .6; }
.chat-send[b-h0j7odu7g9] {
    background: #4363d8;
    border: none;
    color: #fff;
    border-radius: 8px;
    width: 40px;
    cursor: pointer;
    font-size: 14px;
}
.chat-send:disabled[b-h0j7odu7g9] { opacity: .4; cursor: default; }
.chat-stop[b-h0j7odu7g9] { background: #6e2b2b; }
.chat-stop:hover[b-h0j7odu7g9] { background: #843333; }
/* /Components/EditorUserMenu.razor.rz.scp.css */
/* Anchor wrapper: the popover positions relative to the trigger button in the top bar.
   (Alignment is handled by the parent cluster — .pv-top__actions in the Present workspace.) */
.eum[b-wizjs2h407] {
    position: relative;
    display: inline-flex;
}

/* Full-viewport catcher: closes the menu on any outside click. */
.eum__backdrop[b-wizjs2h407] {
    position: fixed;
    inset: 0;
    z-index: 1190;
    background: transparent;
}

/* The one popover under the trigger, right-aligned so it grows left from the screen edge.
   Carries the settings body itself (account / View) plus the report row. */
.eum__pop[b-wizjs2h407] {
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    z-index: 1200;
    width: 320px;
    padding: 10px;
    background: var(--bg-surface);
    border: 1px solid var(--border-default);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-lg);
    display: flex;
    flex-direction: column;
    gap: 10px;
}

/* Hairline between the settings body and the actions below it. */
.eum__sep[b-wizjs2h407] {
    height: 1px;
    margin: 0 -4px;
    background: var(--border-subtle);
}

.eum__item[b-wizjs2h407] {
    display: flex;
    align-items: center;
    gap: 9px;
    width: calc(100% + 8px);
    margin: 0 -4px;
    padding: 7px 9px;
    border: 0;
    background: transparent;
    border-radius: var(--radius-sm);
    color: var(--fg-secondary);
    font-size: var(--text-sm);
    font-weight: var(--weight-medium);
    text-align: left;
    cursor: pointer;
    white-space: nowrap;
}

.eum__item svg[b-wizjs2h407] { flex-shrink: 0; color: var(--fg-muted); }
.eum__item:hover[b-wizjs2h407] { background: var(--bg-hover); color: var(--fg-primary); }
.eum__item:hover svg[b-wizjs2h407] { color: var(--fg-primary); }

/* Account identity — who the settings apply to (the case workspace has no other place that says it).
   Sits at the top of the popover, where the old panel's title bar used to be. */
.eum__acct[b-wizjs2h407] {
    display: flex;
    align-items: center;
    gap: 9px;
    min-width: 0;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--border-subtle);
}

.eum__acct-avatar[b-wizjs2h407] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: var(--bg-selected, var(--bg-hover));
    color: var(--accent-fg, var(--fg-primary));
    font-size: var(--text-xs);
    font-weight: 600;
}

.eum__acct-id[b-wizjs2h407] { display: flex; flex-direction: column; min-width: 0; }

.eum__acct-name[b-wizjs2h407] {
    font-size: var(--text-sm);
    font-weight: var(--weight-medium);
    color: var(--fg-primary);
}

.eum__acct-mail[b-wizjs2h407] {
    font-size: var(--text-xs);
    color: var(--fg-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.eum__sect[b-wizjs2h407] { display: flex; flex-direction: column; gap: 7px; }

.eum__sect-title[b-wizjs2h407] {
    font-size: var(--text-xs);
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--fg-muted);
}

.eum__sect-hint[b-wizjs2h407] { font-size: var(--text-xs); color: var(--fg-muted); }

.eum__toggle[b-wizjs2h407] {
    display: flex;
    align-items: flex-start;
    gap: 9px;
    cursor: pointer;
    margin: 0;
}

.eum__toggle input[b-wizjs2h407] { margin-top: 2px; flex-shrink: 0; }

.eum__toggle-body[b-wizjs2h407] { display: flex; flex-direction: column; gap: 2px; }

.eum__toggle-label[b-wizjs2h407] {
    font-size: var(--text-sm);
    font-weight: var(--weight-medium);
    color: var(--fg-primary);
}

.eum__toggle-hint[b-wizjs2h407] {
    font-size: var(--text-xs);
    color: var(--fg-muted);
    line-height: 1.35;
}
/* /Components/Spark.razor.rz.scp.css */
.hs-spark[b-xir8pnltbc] {
    width: 100%;
    height: 34px;
    display: block;
}

.hs-spark__grid[b-xir8pnltbc] {
    stroke: var(--border-subtle);
    stroke-width: 0.5;
    vector-effect: non-scaling-stroke;
}

.hs-spark__line[b-xir8pnltbc] {
    fill: none;
    stroke-width: 1.5;
    vector-effect: non-scaling-stroke;
    stroke-linejoin: round;
    stroke-linecap: round;
}

.hs-spark__line--a[b-xir8pnltbc] { stroke: var(--success); }
.hs-spark__line--b[b-xir8pnltbc] { stroke: var(--info); }
/* /Components/UserMenu.razor.rz.scp.css */
/* Fallback cog style when no CogClass is supplied. */
.usermenu__cog[b-yegzohtau0] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border: 0;
    background: transparent;
    border-radius: var(--radius-sm);
    color: var(--fg-secondary);
    cursor: pointer;
}

.usermenu__cog:hover[b-yegzohtau0] {
    background: var(--bg-hover);
    color: var(--fg-primary);
}

/* Full-viewport catcher: closes the menu on any outside click. */
.usermenu__backdrop[b-yegzohtau0] {
    position: fixed;
    inset: 0;
    z-index: 1190;
    background: transparent;
}

/* Cursor-anchored popover. left/top set to the click point; transform flips it
   toward whichever corner has room (set in code via _flipX/_flipY). */
.usermenu__pop[b-yegzohtau0] {
    position: fixed;
    z-index: 1200;
    width: 300px;
    padding: 8px;
    background: var(--bg-surface);
    border: 1px solid var(--border-default);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-lg);
    display: flex;
    flex-direction: column;
    gap: 1px;
}

/* Account identity — who the settings below apply to. */
.usermenu__head[b-yegzohtau0] {
    display: flex;
    align-items: center;
    gap: 9px;
    min-width: 0;
    padding: 4px 5px 9px;
    margin-bottom: 6px;
    border-bottom: 1px solid var(--border-subtle);
}

.usermenu__avatar[b-yegzohtau0] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: var(--bg-selected, var(--bg-hover));
    color: var(--accent-fg, var(--fg-primary));
    font-size: var(--text-xs);
    font-weight: 600;
}

.usermenu__id[b-yegzohtau0] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1 1 auto;
}

/* Role reads as a quiet caption, not a badge — it is information, not a control. */
.usermenu__role[b-yegzohtau0] {
    flex: 0 0 auto;
    font-size: var(--text-xs);
    color: var(--fg-muted);
    white-space: nowrap;
}

.usermenu__sect[b-yegzohtau0] {
    display: flex;
    flex-direction: column;
    gap: 7px;
    padding: 0 5px;
    margin-bottom: 6px;
}

.usermenu__sect-title[b-yegzohtau0] {
    font-size: var(--text-xs);
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--fg-muted);
}

.usermenu__sect-hint[b-yegzohtau0] { font-size: var(--text-xs); color: var(--fg-muted); }

.usermenu__theme[b-yegzohtau0] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 6px;
}

.usermenu__theme-opt[b-yegzohtau0] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 5px;
    padding: 9px 4px;
    border: 1px solid var(--border-default);
    border-radius: var(--radius-md);
    background: var(--bg-surface);
    color: var(--fg-secondary);
    font-size: var(--text-xs);
    font-weight: var(--weight-medium);
    cursor: pointer;
}

.usermenu__theme-opt:hover[b-yegzohtau0] {
    border-color: var(--border-strong);
    background: var(--bg-hover);
    color: var(--fg-primary);
}

.usermenu__theme-opt.is-active[b-yegzohtau0] {
    border-color: var(--border-accent);
    background: var(--bg-selected);
    color: var(--accent-fg);
    box-shadow: var(--ring-selected);
}

.usermenu__theme-icon[b-yegzohtau0] { display: inline-flex; color: var(--fg-muted); }
.usermenu__theme-opt.is-active .usermenu__theme-icon[b-yegzohtau0] { color: var(--accent); }

.usermenu__name[b-yegzohtau0] {
    font-size: var(--text-sm);
    font-weight: 600;
    color: var(--fg-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.usermenu__email[b-yegzohtau0] {
    font-size: var(--text-xs);
    color: var(--fg-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.usermenu__item[b-yegzohtau0] {
    display: flex;
    align-items: center;
    gap: 9px;
    width: 100%;
    padding: 7px 9px;
    border: 0;
    background: transparent;
    border-radius: var(--radius-sm);
    color: var(--fg-secondary);
    font-size: var(--text-sm);
    font-weight: var(--weight-medium);
    text-align: left;
    cursor: pointer;
}

.usermenu__item svg[b-yegzohtau0] {
    flex-shrink: 0;
    color: var(--fg-muted);
}

.usermenu__item:hover[b-yegzohtau0] {
    background: var(--bg-hover);
    color: var(--fg-primary);
}

.usermenu__item:hover svg[b-yegzohtau0] {
    color: var(--fg-primary);
}

.usermenu__item--danger[b-yegzohtau0] {
    color: var(--danger);
}

.usermenu__item--danger svg[b-yegzohtau0] {
    color: var(--danger);
}

.usermenu__item--danger:hover[b-yegzohtau0] {
    background: var(--danger-bg);
    color: var(--danger);
}

.usermenu__item--danger:hover svg[b-yegzohtau0] {
    color: var(--danger);
}

.usermenu__sep[b-yegzohtau0] {
    height: 1px;
    margin: 3px 0;
    background: var(--border-subtle);
}
/* /Components/WelcomeTour.razor.rz.scp.css */
.tour-scrim[b-nyyvz0iwef] {
    position: fixed;
    inset: 0;
    z-index: 9100; /* above the chat widget bubble (9000), not just --z-dialog */
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: var(--scrim);
}

.tour[b-nyyvz0iwef] {
    position: relative;
    width: min(440px, 92vw);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-3);
    padding: 32px 28px 20px;
    background: var(--bg-raised);
    border-radius: var(--radius-lg);
    box-shadow: var(--elevation-dialog);
    text-align: center;
}

.tour__close[b-nyyvz0iwef] {
    position: absolute;
    top: 10px;
    right: 10px;
    background: none;
    border: none;
    cursor: pointer;
    font-size: 1rem;
    line-height: 1;
    padding: 6px;
    border-radius: var(--radius-sm);
    color: var(--fg-muted);
}
.tour__close:hover[b-nyyvz0iwef] { color: var(--fg-primary); background: var(--bg-hover); }

.tour__icon[b-nyyvz0iwef] {
    width: 56px;
    height: 56px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-full);
    background: var(--accent-subtle);
    color: var(--accent);
}
.tour__icon svg[b-nyyvz0iwef] { width: 30px; height: 30px; }

.tour__title[b-nyyvz0iwef] {
    margin: 0;
    font-size: var(--text-h3);
    font-weight: var(--weight-semibold);
    color: var(--fg-primary);
}

.tour__body[b-nyyvz0iwef] {
    margin: 0;
    font-size: var(--text-sm);
    line-height: 1.55;
    color: var(--fg-secondary);
    min-height: 5.6em; /* tallest step — keeps the dialog height stable across steps */
}
.tour__body strong[b-nyyvz0iwef] { color: var(--fg-primary); }

.tour__dots[b-nyyvz0iwef] {
    display: flex;
    gap: 8px;
    padding: 2px 0;
}

.tour__dot[b-nyyvz0iwef] {
    width: 8px;
    height: 8px;
    padding: 0;
    border: none;
    border-radius: var(--radius-full);
    background: var(--border-default);
    cursor: pointer;
    transition: background 0.15s ease, transform 0.15s ease;
}
.tour__dot:hover[b-nyyvz0iwef] { background: var(--fg-muted); }
.tour__dot--on[b-nyyvz0iwef] { background: var(--accent); transform: scale(1.25); }

.tour__hint[b-nyyvz0iwef] {
    margin: 0;
    font-size: var(--text-xs);
    color: var(--fg-muted);
}

.tour__acts[b-nyyvz0iwef] {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    width: 100%;
    margin-top: var(--space-3);
}

.tour__spacer[b-nyyvz0iwef] { flex: 1; }
/* /Layout/MainLayout.razor.rz.scp.css */
.app-root[b-sekvq1s5ss] {
    min-height: 100vh;
}
/* /Pages/Case.razor.rz.scp.css */
/* Case-workspace styles that belong to ONE feature and nothing else references.

   Deliberately scoped (Blazor rewrites these to Case.razor's own elements) rather than added to
   wwwroot/css/case.css: that file is the shared workspace chrome and is being reworked on two other
   branches at the same time, so a self-contained feature has no business widening the conflict there.
   Anything here that a second component ever needs should MOVE to case.css at that point. */

/* ---- download the 3D model (top-bar menu) ----------------------------------------------------
   Anchored by .pv-scene (case.css), the same positioned wrapper the appearance/scene menus use. */
.pv-dl[b-vikmukih93] {
    position: absolute;
    top: calc(100% + var(--space-2));
    right: 0;
    z-index: 30;
    width: 260px;
    padding: var(--space-3);
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.pv-dl__hint[b-vikmukih93] {
    font-size: var(--text-xs);
    line-height: 1.35;
    color: var(--fg-muted);
}

.pv-dl__fmt[b-vikmukih93] {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
}

/* Two lines per format: what it is, and the one thing that decides between them. STL cannot carry a
   name or a colour, so a multi-structure STL is a single merged solid — worth saying before the click,
   not after the file is open in the wrong tool. */
.pv-dl__fmtbtn[b-vikmukih93] {
    display: flex;
    flex-direction: column;
    gap: 1px;
    padding: var(--space-2);
    text-align: left;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: var(--radius-sm);
    background: rgba(255, 255, 255, .06);
    color: var(--fg-secondary);
    cursor: pointer;
}

.pv-dl__fmtbtn:hover[b-vikmukih93] { background: rgba(255, 255, 255, .12); }
.pv-dl__fmtbtn:focus-visible[b-vikmukih93] { outline: none; box-shadow: var(--ring-focus); }

.pv-dl__fmtbtn.is-active[b-vikmukih93] {
    background: var(--accent);
    border-color: transparent;
    color: #fff;
}

.pv-dl__fmtname[b-vikmukih93] {
    font-size: var(--text-sm);
    font-weight: var(--weight-medium);
}

.pv-dl__fmtnote[b-vikmukih93] {
    font-size: var(--text-xs);
    opacity: .75;
}

.pv-dl__check[b-vikmukih93] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    font-size: var(--text-xs);
    color: var(--fg-secondary);
    cursor: pointer;
}

.pv-dl__go[b-vikmukih93] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    height: 32px;
    border: 0;
    border-radius: var(--radius-sm);
    background: var(--accent);
    color: #fff;
    font-size: var(--text-sm);
    font-weight: var(--weight-medium);
    cursor: pointer;
}

.pv-dl__go:hover:not(:disabled)[b-vikmukih93] { filter: brightness(1.08); }
.pv-dl__go:disabled[b-vikmukih93] { opacity: .5; cursor: default; }
.pv-dl__go:focus-visible[b-vikmukih93] { outline: none; box-shadow: var(--ring-focus); }

/* Progress + result, deliberately OUTSIDE the popover: a download started from a structure's row menu closes
   that menu at once, and the top-bar popover is normally shut — anything rendered inside either of them would
   have nowhere to appear, so a failed row download would report nothing at all. */
.pv-dl__status[b-vikmukih93] {
    position: absolute;
    top: calc(100% + var(--space-2));
    right: 0;
    z-index: 31;
    max-width: 320px;
    padding: var(--space-2) var(--space-3);
    display: flex;
    align-items: center;
    gap: var(--space-2);
    font-size: var(--text-xs);
    line-height: 1.35;
    color: var(--fg-secondary);
    white-space: normal;
}

.pv-dl__statusx[b-vikmukih93] {
    flex: 0 0 auto;
    display: inline-flex;
    padding: 2px;
    border: 0;
    background: none;
    color: var(--fg-muted);
    cursor: pointer;
}

.pv-dl__statusx:hover[b-vikmukih93] { color: var(--fg-primary); }

/* ---- session chat (collab phase 4) ----------------------------------------------------------- */

/* Trigger: the .pv-icon shell, widened so the live participant count can ride beside the bubble — the
   number is the whole point of the entry (it is what tells you a session is worth talking into), and a
   34px square has no room for it. */
.pv-chat__trigger[b-vikmukih93] {
    position: relative;
    width: auto;
    min-width: 34px;
    padding: 0 var(--space-2);
    gap: 5px;
}

.pv-chat__peers[b-vikmukih93] {
    font-size: var(--text-xs);
    font-weight: var(--weight-semibold);
    line-height: 1;
}

/* Unread count, pinned to the corner so it reads as a notification rather than as part of the label. */
.pv-chat__unread[b-vikmukih93] {
    position: absolute;
    top: -5px;
    right: -5px;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    background: var(--accent);
    color: #fff;
    font-size: 10px;
    font-weight: var(--weight-semibold);
    line-height: 1;
}

/* Docked at the right edge. Fixed, not absolute, for the same reason the AI assistant is: anchored to the
   window, not to the stage. z-index sits below the assistant's 9000 — if they ever do collide, the
   transient panel should win. */
.pv-chat[b-vikmukih93] {
    position: fixed;
    top: 68px;
    bottom: 20px;
    right: 20px;
    z-index: var(--z-toast);
    width: 320px;
    display: flex;
    flex-direction: column;
    padding: 0;
    overflow: hidden;
}

/* ...but step aside ONLY while the AI assistant's panel is actually open — it is a fixed 380px column at
   right:20px/bottom:20px that this file must not touch. Reserving that lane unconditionally was wrong:
   the assistant is closed almost always, so the chat sat ~420px in from the edge with dead space beside
   it, which reads as a layout bug rather than as deference. Side-by-side lanes (rather than stacking, or
   trusting a height cap) is the only arrangement that cannot overlap the assistant at any viewport
   height, so that is what the open case gets. */
.pv-chat--aside[b-vikmukih93] { right: calc(380px + 20px + var(--space-3)); }

/* Too narrow for two lanes: stack above the assistant's column instead of over it. The panel can get
   short here, but the log scrolls and short beats overlapping. Only applies while it is open — a closed
   assistant leaves the full height to the chat. */
@media (max-width: 1180px) {
    .pv-chat--aside[b-vikmukih93] {
        right: 20px;
        bottom: calc(560px + 20px + var(--space-2));
    }

    .pv-chat[b-vikmukih93] { width: min(320px, calc(100vw - 40px)); }
}

.pv-chat__head[b-vikmukih93] {
    flex: 0 0 auto;
    display: flex;
    align-items: baseline;
    gap: var(--space-2);
    padding: var(--space-3);
    border-bottom: 1px solid rgba(255, 255, 255, .1);
}

.pv-chat__title[b-vikmukih93] {
    font-size: var(--text-xs);
    font-weight: var(--weight-semibold);
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--fg-secondary);
}

/* Names, not a count: the count doesn't tell you whether the person you're waiting for has arrived. */
.pv-chat__who[b-vikmukih93] {
    flex: 1 1 auto;
    min-width: 0;
    font-size: var(--text-xs);
    color: var(--fg-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.pv-chat__x[b-vikmukih93] {
    flex: 0 0 auto;
    display: inline-flex;
    padding: 2px;
    border: 0;
    background: none;
    color: var(--fg-muted);
    cursor: pointer;
}

.pv-chat__x:hover[b-vikmukih93] { color: var(--fg-primary); }

/* column-reverse + newest-first markup: the newest message sits at the BOTTOM and the resting scroll
   position is scrollTop 0, so the log auto-sticks to new arrivals with no JS and no scroll bookkeeping.
   Scrolling up to read back is preserved by the browser, exactly as it would be in a normal log. */
.pv-chat__log[b-vikmukih93] {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column-reverse;
    gap: var(--space-2);
    padding: var(--space-3);
    overflow-y: auto;
    overscroll-behavior: contain; /* a chat scrolled to its end must not hand the wheel to the slice scrub behind it */
}

.pv-chat__empty[b-vikmukih93] {
    font-size: var(--text-xs);
    line-height: 1.45;
    color: var(--fg-muted);
}

.pv-chat__msg[b-vikmukih93] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    max-width: 88%;
    align-self: flex-start;
    padding: var(--space-2);
    border-radius: var(--radius-sm);
    background: rgba(255, 255, 255, .06);
}

/* Ours: right-aligned AND tinted. Alignment alone is ambiguous in a narrow column where most messages are
   short enough to look centred. */
.pv-chat__msg--mine[b-vikmukih93] {
    align-self: flex-end;
    background: color-mix(in srgb, var(--accent) 26%, transparent);
}

.pv-chat__meta[b-vikmukih93] {
    display: flex;
    align-items: baseline;
    gap: var(--space-2);
    font-size: var(--text-xs);
}

.pv-chat__author[b-vikmukih93] {
    font-weight: var(--weight-semibold);
    color: var(--fg-secondary);
}

.pv-chat__time[b-vikmukih93] { color: var(--fg-muted); }

/* .pv sets user-select:none for the whole workspace (drag-to-paint must not select chrome) — chat is the
   one place inside it that is text meant to be read and copied out. */
.pv-chat__text[b-vikmukih93] {
    font-size: var(--text-sm);
    line-height: 1.4;
    color: var(--fg-primary);
    white-space: pre-wrap;
    overflow-wrap: anywhere; /* a pasted id must not widen the panel */
    user-select: text;
}

.pv-chat__compose[b-vikmukih93] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-3);
    border-top: 1px solid rgba(255, 255, 255, .1);
}

.pv-chat__field[b-vikmukih93] {
    flex: 1 1 auto;
    min-width: 0;
    height: 32px;
    padding: 0 var(--space-2);
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: var(--radius-sm);
    background: rgba(255, 255, 255, .06);
    color: var(--fg-primary);
    font-size: var(--text-sm);
}

.pv-chat__field[b-vikmukih93]::placeholder { color: var(--fg-muted); }
.pv-chat__field:focus-visible[b-vikmukih93] { outline: none; box-shadow: var(--ring-focus); }

.pv-chat__send[b-vikmukih93] {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border: 0;
    border-radius: var(--radius-sm);
    background: var(--accent);
    color: #fff;
    cursor: pointer;
}

.pv-chat__send:hover:not(:disabled)[b-vikmukih93] { filter: brightness(1.08); }
.pv-chat__send:disabled[b-vikmukih93] { opacity: .5; cursor: default; }
.pv-chat__send:focus-visible[b-vikmukih93] { outline: none; box-shadow: var(--ring-focus); }

.pv-chat__count[b-vikmukih93] {
    flex: 0 0 auto;
    padding: 0 var(--space-3) var(--space-2);
    font-size: var(--text-xs);
    color: var(--fg-muted);
}

/* Light stage: the white-on-white washes the tinted surfaces out, same as the download buttons below. */
.pv--light .pv-chat__msg[b-vikmukih93] { background: rgba(15, 23, 42, .05); }
.pv--light .pv-chat__field[b-vikmukih93] { background: rgba(15, 23, 42, .04); border-color: rgba(15, 23, 42, .12); }
.pv--light .pv-chat__head[b-vikmukih93],
.pv--light .pv-chat__compose[b-vikmukih93] { border-color: rgba(15, 23, 42, .1); }

/* Light stage: .pv-card flips to near-white (case.css), so the white-on-white washes the format buttons out. */
.pv--light .pv-dl__fmtbtn[b-vikmukih93] {
    background: rgba(15, 23, 42, .04);
    border-color: rgba(15, 23, 42, .10);
    color: var(--fg-secondary);
}

.pv--light .pv-dl__fmtbtn:hover[b-vikmukih93] { background: rgba(15, 23, 42, .09); }

.pv--light .pv-dl__fmtbtn.is-active[b-vikmukih93] {
    background: var(--accent);
    border-color: transparent;
    color: #fff;
}
/* /Pages/Import.razor.rz.scp.css */
/* Import / upload flow. Built on the design tokens (ds-*.css). Borders-not-boxes, light chrome,
   dark previews only. Scoped to Import.razor. */

/* ----------------------------------------------------------------- SHELL */
.import[b-wsc2zdadnw] { position: fixed; inset: 0; display: flex; flex-direction: column; min-height: 0; background: var(--bg-app); z-index: 50; }
.import__top[b-wsc2zdadnw] {
  height: var(--toolbar-height); flex: 0 0 auto; display: flex; align-items: center; gap: var(--space-5);
  padding: 0 var(--space-6); border-bottom: 1px solid var(--border-default); background: var(--bg-surface);
}
.import__back[b-wsc2zdadnw] { display: inline-flex; align-items: center; gap: var(--space-2); color: var(--fg-secondary); font-size: var(--text-sm); text-decoration: none; padding: var(--space-2) var(--space-3); border-radius: var(--radius-sm); cursor: pointer; border: none; background: none; }
.import__back:hover[b-wsc2zdadnw] { background: var(--bg-hover); color: var(--fg-primary); }
.import__divider[b-wsc2zdadnw] { width: 1px; height: 22px; background: var(--border-default); }
.import__title[b-wsc2zdadnw] { font-weight: var(--weight-semibold); font-size: var(--text-sm); white-space: nowrap; }
.import__source[b-wsc2zdadnw] { font-family: var(--font-mono); font-size: var(--text-xs); color: var(--fg-faint); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; flex: 0 1 auto; }
.import__spacer[b-wsc2zdadnw] { flex: 1 1 auto; }

.import__body[b-wsc2zdadnw] { flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; }
.import__inner[b-wsc2zdadnw] { max-width: 1080px; margin: 0 auto; padding: var(--space-8) var(--space-8) var(--space-12); }

/* shared progress bar */
.progress[b-wsc2zdadnw] { width: 100%; height: 8px; background: var(--bg-active); border-radius: var(--radius-full); overflow: hidden; }
.progress__fill[b-wsc2zdadnw] { height: 100%; background: var(--accent); border-radius: var(--radius-full); transition: width var(--duration-base) var(--ease-standard); }
/* Indeterminate: a fixed-width fill sweeps across when there's no Done/Total (the build/save phase). */
.progress--indeterminate .progress__fill[b-wsc2zdadnw] { width: 40%; animation: progress-indet-b-wsc2zdadnw 1.1s ease-in-out infinite; }
@keyframes progress-indet-b-wsc2zdadnw { 0% { transform: translateX(-100%); } 100% { transform: translateX(250%); } }
.imp-spinner[b-wsc2zdadnw] { width: 40px; height: 40px; border: 3px solid var(--slate-150); border-top-color: var(--accent); border-radius: 50%; animation: imp-spin-b-wsc2zdadnw 0.8s linear infinite; }
@keyframes imp-spin-b-wsc2zdadnw { to { transform: rotate(360deg); } }

/* ----------------------------------------------------------------- START / DROPZONE */
.imp-start[b-wsc2zdadnw] { max-width: 720px; margin: 0 auto; padding: var(--space-11) var(--space-6) var(--space-10); display: flex; flex-direction: column; align-items: center; text-align: center; }
.imp-start__icon[b-wsc2zdadnw] { width: 64px; height: 64px; border-radius: var(--radius-xl); background: var(--gradient-violet-wash); border: 1px solid var(--border-subtle); display: flex; align-items: center; justify-content: center; color: var(--accent); margin-bottom: var(--space-6); }
.imp-start__title[b-wsc2zdadnw] { font-size: var(--text-h2); font-weight: var(--weight-semibold); margin-bottom: var(--space-3); }
.imp-start__sub[b-wsc2zdadnw] { color: var(--fg-muted); max-width: 460px; line-height: 1.6; margin-bottom: var(--space-7); }
.bigdrop[b-wsc2zdadnw] {
  position: relative; width: 100%; border: 1.5px dashed var(--border-strong); border-radius: var(--radius-lg);
  padding: var(--space-10) var(--space-8); text-align: center; background: var(--bg-surface);
  transition: var(--transition-colors); display: flex; flex-direction: column; align-items: center; gap: var(--space-3);
  cursor: pointer;
}
.bigdrop.is-drag[b-wsc2zdadnw], .bigdrop:hover[b-wsc2zdadnw] { border-color: var(--accent); background: var(--accent-subtle); }
.bigdrop__icon[b-wsc2zdadnw] { color: var(--fg-faint); margin-bottom: var(--space-2); }
.bigdrop.is-drag .bigdrop__icon[b-wsc2zdadnw], .bigdrop:hover .bigdrop__icon[b-wsc2zdadnw] { color: var(--accent); }
.bigdrop__hint[b-wsc2zdadnw] { font-size: var(--text-sm); color: var(--fg-muted); }
.bigdrop__file[b-wsc2zdadnw] { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.imp-or[b-wsc2zdadnw] { display: flex; align-items: center; gap: var(--space-4); width: 100%; color: var(--fg-faint); font-size: var(--text-xs); margin: var(--space-6) 0; }
.imp-or[b-wsc2zdadnw]::before, .imp-or[b-wsc2zdadnw]::after { content: ""; flex: 1 1 auto; height: 1px; background: var(--border-subtle); }

/* ----------------------------------------------------------------- PARSING */
.imp-parse[b-wsc2zdadnw] { max-width: 560px; margin: 0 auto; padding: var(--space-11) var(--space-6); display: flex; flex-direction: column; align-items: center; text-align: center; }
.imp-parse__title[b-wsc2zdadnw] { font-size: var(--text-h3); font-weight: var(--weight-semibold); margin: var(--space-6) 0 var(--space-2); }
.imp-parse__sub[b-wsc2zdadnw] { font-family: var(--font-mono); font-size: var(--text-sm); color: var(--fg-muted); margin-bottom: var(--space-6); }
.imp-parse .progress[b-wsc2zdadnw] { width: 100%; }
.imp-parse__found[b-wsc2zdadnw] { width: 100%; margin-top: var(--space-7); display: flex; flex-direction: column; gap: var(--space-3); }
.found-row[b-wsc2zdadnw] { display: flex; align-items: center; gap: var(--space-4); padding: var(--space-4) var(--space-5); border: 1px solid var(--border-subtle); border-radius: var(--radius-sm); background: var(--bg-surface); font-size: var(--text-sm); text-align: left; animation: foundIn-b-wsc2zdadnw 560ms cubic-bezier(.16,1,.3,1) both; will-change: transform, opacity; }
.found-row__name[b-wsc2zdadnw] { font-weight: var(--weight-medium); }
.found-row__meta[b-wsc2zdadnw] { margin-left: auto; font-family: var(--font-mono); font-size: var(--text-xs); color: var(--fg-faint); }
@keyframes foundIn-b-wsc2zdadnw { from { opacity: 0; transform: translateY(12px) scale(.99); } to { opacity: 1; transform: none; } }

/* ----------------------------------------------------------------- OVERVIEW HEADER */
.ov-head[b-wsc2zdadnw] { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-6); margin-bottom: var(--space-3); }
.ov-title[b-wsc2zdadnw] { font-size: var(--text-h1); font-weight: var(--weight-semibold); }
.ov-sub[b-wsc2zdadnw] { color: var(--fg-muted); font-size: var(--text-sm); margin-top: var(--space-2); }
.ov-bar[b-wsc2zdadnw] { display: flex; align-items: center; gap: var(--space-4); margin: var(--space-6) 0; }
.ov-bar__spacer[b-wsc2zdadnw] { flex: 1 1 auto; }
.casefield[b-wsc2zdadnw] { display: flex; align-items: center; gap: var(--space-3); }
.casefield__label[b-wsc2zdadnw] { font-size: var(--text-2xs); font-weight: var(--weight-semibold); letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--fg-muted); }
.casefield__input[b-wsc2zdadnw] { height: 32px; padding: 0 var(--space-4); border: 1px solid var(--border-default); border-radius: var(--radius-sm); font-size: var(--text-sm); background: var(--bg-surface); color: var(--fg-primary); min-width: 280px; }
.casefield__input:focus[b-wsc2zdadnw] { outline: none; border-color: var(--accent); box-shadow: var(--ring-focus); }

/* segmented control (list / gallery) */
.segmented[b-wsc2zdadnw] { display: inline-flex; padding: var(--space-1); background: var(--bg-sunken); border: 1px solid var(--border-default); border-radius: var(--radius-sm); gap: 2px; }
.segmented__btn[b-wsc2zdadnw] { display: inline-flex; align-items: center; gap: var(--space-2); height: 24px; padding: 0 var(--space-4); border: none; background: none; border-radius: var(--radius-xs); font-size: var(--text-xs); font-weight: var(--weight-medium); color: var(--fg-muted); cursor: pointer; transition: var(--transition-colors); }
.segmented__btn:hover[b-wsc2zdadnw] { color: var(--fg-primary); }
.segmented__btn.is-active[b-wsc2zdadnw] { background: var(--bg-surface); color: var(--fg-primary); box-shadow: var(--shadow-xs); }

/* study grouping */
.study-group[b-wsc2zdadnw] { margin-bottom: var(--space-9); }
.study-head[b-wsc2zdadnw] { position: sticky; top: 0; z-index: var(--z-sticky); display: flex; align-items: center; gap: var(--space-4); padding: var(--space-5) var(--space-2) var(--space-4); margin-bottom: var(--space-5); background: var(--bg-app); border-bottom: 1px solid var(--border-default); }
.study-head .overline[b-wsc2zdadnw] { flex: 0 0 auto; }
.study-head__title[b-wsc2zdadnw] { font-size: var(--text-base); font-weight: var(--weight-semibold); color: var(--fg-primary); white-space: nowrap; }
.study-head__meta[b-wsc2zdadnw] { font-family: var(--font-mono); font-size: var(--text-xs); color: var(--fg-faint); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.study-head__spacer[b-wsc2zdadnw] { flex: 1 1 auto; }
.study-head__count[b-wsc2zdadnw] { font-size: var(--text-xs); color: var(--fg-muted); white-space: nowrap; flex: 0 0 auto; }

/* ----------------------------------------------------------------- STACK PREVIEW */
.preview[b-wsc2zdadnw] { position: relative; background: #06070a; border-radius: var(--radius-sm); overflow: hidden; }
.preview__canvas[b-wsc2zdadnw] { width: 100%; height: 100%; object-fit: contain; display: block; image-rendering: auto; }
.preview__empty[b-wsc2zdadnw] { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #3a3f4d; }
.preview__top[b-wsc2zdadnw] { position: absolute; top: var(--space-3); left: var(--space-3); right: var(--space-3); display: flex; align-items: flex-start; justify-content: space-between; pointer-events: none; }
.preview__idx[b-wsc2zdadnw] { font-family: var(--font-mono); font-size: var(--text-3xs); color: rgba(230,232,239,.82); background: rgba(6,7,10,.5); padding: 1px 5px; border-radius: var(--radius-xs); }

/* Slice scrubber — fades in on hover; wheel / middle-drag work anywhere over the preview. */
.preview__slider[b-wsc2zdadnw] { position: absolute; left: var(--space-3); right: var(--space-3); bottom: var(--space-3); width: auto; height: 3px; margin: 0; padding: 0; appearance: none; -webkit-appearance: none; background: rgba(230,232,239,.22); border-radius: 2px; outline: none; opacity: 0; transition: opacity .12s ease; cursor: pointer; }
.preview:hover .preview__slider[b-wsc2zdadnw] { opacity: 1; }
.preview__slider[b-wsc2zdadnw]::-webkit-slider-thumb { -webkit-appearance: none; width: 11px; height: 11px; border-radius: 50%; background: #e6e8ef; border: 0; box-shadow: 0 0 0 1px rgba(6,7,10,.6); cursor: pointer; }
.preview__slider[b-wsc2zdadnw]::-moz-range-thumb { width: 11px; height: 11px; border-radius: 50%; background: #e6e8ef; border: 0; box-shadow: 0 0 0 1px rgba(6,7,10,.6); cursor: pointer; }

/* modality chip — high-contrast, monochrome */
.modality[b-wsc2zdadnw] { display: inline-flex; align-items: center; gap: var(--space-2); height: 20px; padding: 0 var(--space-3); border-radius: var(--radius-xs); background: var(--slate-900); color: #fff; font-size: var(--text-2xs); font-weight: var(--weight-bold); letter-spacing: var(--tracking-wide); }
.modality svg[b-wsc2zdadnw] { width: 12px; height: 12px; }
.modality--mr[b-wsc2zdadnw] { background: var(--slate-700); }

/* phase label with guessed hint */
.phase[b-wsc2zdadnw] { display: inline-flex; align-items: center; gap: var(--space-2); font-size: var(--text-sm); font-weight: var(--weight-medium); color: var(--fg-primary); white-space: nowrap; }
.phase__guess[b-wsc2zdadnw] { display: inline-flex; align-items: center; gap: 3px; font-size: var(--text-2xs); color: var(--accent-fg); background: var(--accent-subtle); padding: 1px var(--space-3); border-radius: var(--radius-full); font-weight: var(--weight-semibold); }

/* ----------------------------------------------------------------- METADATA */
.meta-grid[b-wsc2zdadnw] { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: var(--space-2) var(--space-6); }
.meta[b-wsc2zdadnw] { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.meta__k[b-wsc2zdadnw] { display: inline-flex; align-items: center; gap: var(--space-2); font-size: var(--text-2xs); font-weight: var(--weight-semibold); letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--fg-muted); }
.meta__v[b-wsc2zdadnw] { font-family: var(--font-mono); font-size: var(--text-sm); color: var(--fg-primary); font-variant-numeric: tabular-nums; }
.meta__v.is-warn[b-wsc2zdadnw] { color: var(--warning-fg); }

/* hint info icon + tooltip */
.hint[b-wsc2zdadnw] { position: relative; display: inline-flex; color: var(--fg-faint); cursor: help; }
.hint:hover[b-wsc2zdadnw] { color: var(--accent); }
.hint__pop[b-wsc2zdadnw] { position: absolute; bottom: calc(100% + 6px); left: -8px; width: 232px; padding: var(--space-4) var(--space-5); background: var(--slate-900); color: var(--slate-50); font-size: var(--text-xs); font-weight: var(--weight-regular); line-height: 1.5; letter-spacing: 0; text-transform: none; border-radius: var(--radius-sm); box-shadow: var(--shadow-md); opacity: 0; visibility: hidden; transform: translateY(3px); transition: opacity var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-standard); z-index: var(--z-tooltip); pointer-events: none; }
.hint:hover .hint__pop[b-wsc2zdadnw] { opacity: 1; visibility: visible; transform: none; }

/* warnings */
.warn[b-wsc2zdadnw] { display: flex; align-items: flex-start; gap: var(--space-3); padding: var(--space-3) var(--space-4); border-radius: var(--radius-sm); font-size: var(--text-xs); line-height: 1.45; }
.warn--warning[b-wsc2zdadnw] { background: var(--warning-bg); color: var(--warning-fg); }
.warn--danger[b-wsc2zdadnw] { background: var(--danger-bg); color: var(--danger-fg); }
.warn--info[b-wsc2zdadnw] { background: var(--bg-sunken); color: var(--fg-secondary); }
.warn svg[b-wsc2zdadnw] { flex: 0 0 auto; margin-top: 1px; }
.warn__label[b-wsc2zdadnw] { font-weight: var(--weight-semibold); }

/* ----------------------------------------------------------------- LIST VARIANT */
.stack-list[b-wsc2zdadnw] { display: flex; flex-direction: column; gap: var(--space-4); }
.stack-row[b-wsc2zdadnw] {
  display: grid; grid-template-columns: 168px 1fr auto; gap: var(--space-6); align-items: stretch;
  padding: var(--space-5); background: var(--bg-surface); border: 1px solid var(--border-default);
  border-radius: var(--radius-md); box-shadow: var(--elevation-card); transition: var(--transition-colors);
}
.stack-row.is-selected[b-wsc2zdadnw] { border-color: var(--border-accent); box-shadow: var(--ring-selected), var(--elevation-card); background: var(--bg-selected); }
.stack-row.is-disabled[b-wsc2zdadnw] { opacity: .72; }
.stack-row__pv[b-wsc2zdadnw] { width: 168px; }
.stack-row .preview[b-wsc2zdadnw] { height: 116px; }
.stack-row__info[b-wsc2zdadnw] { min-width: 0; display: flex; flex-direction: column; gap: var(--space-4); }
.stack-row__head[b-wsc2zdadnw] { display: flex; align-items: center; gap: var(--space-3); flex-wrap: wrap; }
.stack-row__name[b-wsc2zdadnw] { font-size: var(--text-base); font-weight: var(--weight-semibold); color: var(--fg-primary); }
.stack-row__series[b-wsc2zdadnw] { font-family: var(--font-mono); font-size: var(--text-xs); color: var(--fg-faint); white-space: nowrap; }
.stack-row__aside[b-wsc2zdadnw] { display: flex; flex-direction: column; align-items: flex-end; justify-content: space-between; gap: var(--space-4); flex: 0 0 auto; }

/* recommended ribbon */
.rec[b-wsc2zdadnw] { display: inline-flex; align-items: center; gap: var(--space-2); font-size: var(--text-2xs); font-weight: var(--weight-semibold); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--success-fg); }
.rec svg[b-wsc2zdadnw] { width: 12px; height: 12px; }

/* big select control */
.selbox[b-wsc2zdadnw] { display: inline-flex; align-items: center; gap: var(--space-3); height: 32px; padding: 0 var(--space-5) 0 var(--space-4); border: 1px solid var(--border-default); border-radius: var(--radius-full); background: var(--bg-surface); font-size: var(--text-sm); font-weight: var(--weight-medium); color: var(--fg-secondary); cursor: pointer; transition: var(--transition-colors); white-space: nowrap; }
.selbox:hover[b-wsc2zdadnw] { border-color: var(--border-strong); color: var(--fg-primary); }
.selbox.is-on[b-wsc2zdadnw] { background: var(--accent); border-color: var(--accent); color: #fff; }
.selbox.is-on:hover[b-wsc2zdadnw] { background: var(--accent-hover); border-color: var(--accent-hover); }
.selbox__tick[b-wsc2zdadnw] { width: 18px; height: 18px; border-radius: 50%; border: 1.5px solid var(--border-strong); display: flex; align-items: center; justify-content: center; color: transparent; flex: 0 0 auto; }
.selbox.is-on .selbox__tick[b-wsc2zdadnw] { border-color: #fff; color: var(--accent); background: #fff; }

/* reference toggle */
.refbtn[b-wsc2zdadnw] { display: inline-flex; align-items: center; gap: var(--space-2); font-size: var(--text-xs); color: var(--fg-muted); background: none; border: none; cursor: pointer; padding: var(--space-2) 0; }
.refbtn:hover[b-wsc2zdadnw] { color: var(--accent-fg); }
.refbtn.is-ref[b-wsc2zdadnw] { color: var(--accent-fg); font-weight: var(--weight-medium); }

/* ----------------------------------------------------------------- GALLERY VARIANT */
.stack-grid[b-wsc2zdadnw] { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: var(--space-5); }
.stack-card[b-wsc2zdadnw] { display: flex; flex-direction: column; background: var(--bg-surface); border: 1px solid var(--border-default); border-radius: var(--radius-md); box-shadow: var(--elevation-card); overflow: hidden; transition: var(--transition-colors); }
.stack-card.is-selected[b-wsc2zdadnw] { border-color: var(--border-accent); box-shadow: var(--ring-selected), var(--elevation-card); }
.stack-card.is-disabled[b-wsc2zdadnw] { opacity: .72; }
.stack-card .preview[b-wsc2zdadnw] { height: 184px; border-radius: 0; }
.stack-card__body[b-wsc2zdadnw] { padding: var(--space-5); display: flex; flex-direction: column; gap: var(--space-4); flex: 1 1 auto; }
.stack-card__head[b-wsc2zdadnw] { display: flex; align-items: flex-start; gap: var(--space-3); }
.stack-card__title[b-wsc2zdadnw] { min-width: 0; flex: 1 1 auto; }
.stack-card__foot[b-wsc2zdadnw] { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-4) var(--space-5); border-top: 1px solid var(--border-subtle); background: var(--bg-sunken); }

/* ----------------------------------------------------------------- SINGLE-STACK VALIDATE */
.validate[b-wsc2zdadnw] { max-width: 760px; margin: 0 auto; }
.validate__card[b-wsc2zdadnw] { display: grid; grid-template-columns: 280px 1fr; gap: var(--space-7); padding: var(--space-7); background: var(--bg-surface); border: 1px solid var(--border-default); border-radius: var(--radius-lg); box-shadow: var(--elevation-card); }
.validate__pv .preview[b-wsc2zdadnw] { height: 280px; }
.validate__body[b-wsc2zdadnw] { display: flex; flex-direction: column; gap: var(--space-5); min-width: 0; }
.checklist[b-wsc2zdadnw] { display: flex; flex-direction: column; gap: var(--space-3); }
.checkitem[b-wsc2zdadnw] { display: flex; align-items: flex-start; gap: var(--space-3); font-size: var(--text-sm); line-height: 1.45; color: var(--fg-secondary); }
.checkitem > span:last-child[b-wsc2zdadnw] { flex: 1 1 auto; min-width: 0; }
.checkitem__ic[b-wsc2zdadnw] { width: 18px; height: 18px; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.checkitem__ic--ok[b-wsc2zdadnw] { background: var(--success-bg); color: var(--success-fg); }
.checkitem__ic--warn[b-wsc2zdadnw] { background: var(--warning-bg); color: var(--warning-fg); }
.checkitem strong[b-wsc2zdadnw] { color: var(--fg-primary); font-weight: var(--weight-medium); }

/* ----------------------------------------------------------------- FOOTER CREATE BAR */
.imp-foot[b-wsc2zdadnw] { position: sticky; bottom: 0; flex: 0 0 auto; display: flex; align-items: center; gap: var(--space-5); padding: var(--space-5) var(--space-8); border-top: 1px solid var(--border-default); background: color-mix(in srgb, var(--bg-surface) 92%, transparent); backdrop-filter: blur(8px); }
.imp-foot__summary[b-wsc2zdadnw] { font-size: var(--text-sm); color: var(--fg-secondary); white-space: nowrap; }
.imp-foot__summary strong[b-wsc2zdadnw] { color: var(--fg-primary); font-weight: var(--weight-semibold); }
.imp-foot__spacer[b-wsc2zdadnw] { flex: 1 1 auto; }

@media (prefers-reduced-motion: reduce) {
  .found-row[b-wsc2zdadnw], .progress__fill[b-wsc2zdadnw], .hint__pop[b-wsc2zdadnw] { animation: none; transition: none; }
}
/* /Pages/Labeling/Import.razor.rz.scp.css */
.lbl-import__schema[b-2iivsh5fun] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    margin: 0.25rem 0 1rem;
}

.lbl-import__schema-label[b-2iivsh5fun] {
    font-size: var(--text-xs);
    color: var(--fg-muted);
    margin-right: 0.25rem;
}

.lbl-chip[b-2iivsh5fun] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.15rem 0.5rem;
    border-radius: 999px;
    background: var(--bg-subtle, #f1f3f5);
    font-size: var(--text-xs);
    white-space: nowrap;
}

.lbl-chip__dot[b-2iivsh5fun] {
    width: 0.7rem;
    height: 0.7rem;
    border-radius: 50%;
    display: inline-block;
}

.lbl-import__affix[b-2iivsh5fun] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.6rem;
}
.lbl-import__affix .field--sm[b-2iivsh5fun] { width: 10rem; }

.lbl-import__pickers[b-2iivsh5fun] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}

.lbl-import__ignored[b-2iivsh5fun] {
    margin: 0.25rem 0 0.75rem;
    font-size: var(--text-xs);
    color: var(--fg-muted);
}

.lbl-import__ignored ul[b-2iivsh5fun] {
    margin: 0.25rem 0 0 1.25rem;
    max-height: 8rem;
    overflow: auto;
}

.lbl-import__table[b-2iivsh5fun] {
    width: 100%;
    border-collapse: collapse;
    margin-top: 0.5rem;
    font-size: var(--text-sm);
}

.lbl-import__table th[b-2iivsh5fun],
.lbl-import__table td[b-2iivsh5fun] {
    text-align: left;
    padding: 0.4rem 0.5rem;
    border-bottom: 1px solid var(--border, #e9ecef);
    vertical-align: top;
}

.lbl-import__table thead th[b-2iivsh5fun] {
    font-size: var(--text-xs);
    color: var(--fg-muted);
    font-weight: 600;
}

.lbl-import__col-inc[b-2iivsh5fun] {
    width: 1.5rem;
}

.lbl-import__table tr.is-excluded[b-2iivsh5fun] {
    opacity: 0.45;
}

.lbl-import__file[b-2iivsh5fun] {
    font-family: var(--font-mono, monospace);
    font-size: var(--text-xs);
    word-break: break-all;
    max-width: 16rem;
}

.lbl-import__remap[b-2iivsh5fun] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    margin-top: 0.3rem;
}

.lbl-import__remap-row[b-2iivsh5fun] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: var(--text-xs);
}

.lbl-import__remap-row.is-unknown .lbl-import__src[b-2iivsh5fun] {
    color: var(--danger-fg, #c92a2a);
    font-weight: 700;
}

.lbl-import__src[b-2iivsh5fun] {
    display: inline-block;
    min-width: 1.25rem;
    text-align: right;
    font-family: var(--font-mono, monospace);
}

.field--sm[b-2iivsh5fun] {
    padding: 0.2rem 0.4rem;
    font-size: var(--text-xs);
    max-width: 12rem;
}

.lbl-import__result-row td[b-2iivsh5fun] {
    padding-top: 0.2rem;
    border-bottom: 1px solid var(--border, #e9ecef);
}

.lbl-import__result-row .lbl-form__hint[b-2iivsh5fun] {
    margin-left: 0.5rem;
}
/* /Pages/Labeling/ProjectModels.razor.rz.scp.css */
/* Training progress bar on the model-registry rows. Phase-coloured fill (blue = preprocessing,
   green = training) over a subtle track; theme-aware via design tokens. While the phase is active but
   nnU-Net hasn't reported a percentage yet, a travelling sliver animates so the row doesn't look stuck. */

.train-bar[b-nvd3ku0jga] {
    position: relative;
    height: 6px;
    margin-top: 0.55rem;
    max-width: 26rem;
    border-radius: 999px;
    background: var(--bg-active);
    overflow: hidden;
}

.train-bar__fill[b-nvd3ku0jga] {
    height: 100%;
    border-radius: inherit;
    background: var(--fg-secondary);          /* queued / neutral default */
    transition: width 0.5s ease;
}

.train-bar--prep  .train-bar__fill[b-nvd3ku0jga] { background: var(--info); }     /* blue  — preprocessing */
.train-bar--train .train-bar__fill[b-nvd3ku0jga] { background: var(--success); } /* green — training / evaluating */

/* No reported percentage yet: a sliver of the phase colour slides across the track. */
.train-bar--indeterminate .train-bar__fill[b-nvd3ku0jga] {
    width: 32%;
    transition: none;
    animation: train-bar-slide-b-nvd3ku0jga 1.15s ease-in-out infinite;
}

@keyframes train-bar-slide-b-nvd3ku0jga {
    0%   { transform: translateX(-120%); }
    100% { transform: translateX(360%); }
}

@media (prefers-reduced-motion: reduce) {
    .train-bar--indeterminate .train-bar__fill[b-nvd3ku0jga] { animation-duration: 2.4s; }
}

/* Per-epoch loss sparkline (the <Spark> child owns its own line styling; this just sizes the slot). */
.model-spark[b-nvd3ku0jga] {
    margin-top: 6px;
    max-width: 260px;
}

/* MLflow run link — first outbound link in the app; render it as a subtle chip-link in the controls. */
.model-mlflow-link[b-nvd3ku0jga] {
    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;
}
.model-mlflow-link:hover[b-nvd3ku0jga] { text-decoration: underline; }
/* /Pages/Settings.razor.rz.scp.css */
.settings[b-q4ui231tg6] {
    min-height: 100%;
    display: flex;
    justify-content: center;
    padding: 48px 20px;
    background: var(--bg-app);
}

.settings__panel[b-q4ui231tg6] {
    width: 100%;
    max-width: 36rem;
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.settings__head[b-q4ui231tg6] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.settings__back[b-q4ui231tg6] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border: 1px solid var(--border-default);
    border-radius: var(--radius-sm);
    background: var(--bg-surface);
    color: var(--fg-secondary);
    font-size: 16px;
    line-height: 1;
    cursor: pointer;
}

.settings__back:hover[b-q4ui231tg6] {
    background: var(--bg-hover);
    color: var(--fg-primary);
}

.settings__title[b-q4ui231tg6] {
    margin: 0;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--fg-primary);
}

.settings__section[b-q4ui231tg6] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 16px;
    background: var(--bg-surface);
    border: 1px solid var(--border-default);
    border-radius: var(--radius-md);
}

.settings__h2[b-q4ui231tg6] {
    margin: 0;
    font-size: var(--text-2xs);
    text-transform: uppercase;
    letter-spacing: var(--tracking-caps);
    color: var(--fg-muted);
    font-weight: var(--weight-semibold);
}

.settings__hint[b-q4ui231tg6] {
    margin: 0;
    font-size: var(--text-xs);
    color: var(--fg-muted);
}

/* Theme picker — three equal-width segmented cards (Light / Dark / System). */
.themepick[b-q4ui231tg6] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
}

.themepick__opt[b-q4ui231tg6] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 14px 8px;
    border: 1px solid var(--border-default);
    border-radius: var(--radius-md);
    background: var(--bg-surface);
    color: var(--fg-secondary);
    font-size: var(--text-sm);
    font-weight: var(--weight-medium);
    cursor: pointer;
    transition: var(--transition-colors);
}

.themepick__opt:hover[b-q4ui231tg6] {
    border-color: var(--border-strong);
    background: var(--bg-hover);
    color: var(--fg-primary);
}

.themepick__opt.is-active[b-q4ui231tg6] {
    border-color: var(--border-accent);
    background: var(--bg-selected);
    color: var(--accent-fg);
    box-shadow: var(--ring-selected);
}

.themepick__opt:focus-visible[b-q4ui231tg6] {
    outline: none;
    box-shadow: var(--ring-focus);
}

.themepick__icon[b-q4ui231tg6] {
    display: inline-flex;
    color: var(--fg-muted);
}

.themepick__opt.is-active .themepick__icon[b-q4ui231tg6] {
    color: var(--accent);
}

.settings__row[b-q4ui231tg6] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.settings__avatar[b-q4ui231tg6] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 40px;
    height: 40px;
    border-radius: var(--radius-full);
    background: var(--gradient-brand);
    color: #fff;
    font-size: 14px;
    font-weight: 700;
}

.settings__id[b-q4ui231tg6] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1 1 auto;
}

.settings__name[b-q4ui231tg6] {
    font-size: var(--text-sm);
    font-weight: 600;
    color: var(--fg-primary);
}

.settings__email[b-q4ui231tg6] {
    font-size: var(--text-xs);
    color: var(--fg-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.settings__role[b-q4ui231tg6] {
    flex-shrink: 0;
    font-size: var(--text-2xs);
    font-weight: var(--weight-bold);
    letter-spacing: var(--tracking-caps);
    text-transform: uppercase;
    color: var(--accent-fg);
    background: var(--accent-subtle);
    border-radius: var(--radius-full);
    padding: 2px 9px;
}

.settings__action[b-q4ui231tg6] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 12px;
    border: 1px solid var(--border-default);
    border-radius: var(--radius-sm);
    background: var(--bg-app);
    color: inherit;
    text-decoration: none;
}

button.settings__action[b-q4ui231tg6] {
    width: 100%;
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.settings__action:hover[b-q4ui231tg6] {
    background: var(--bg-hover);
    border-color: var(--border-strong);
}

.settings__action-text[b-q4ui231tg6] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-width: 0;
}

.settings__action-title[b-q4ui231tg6] {
    font-size: var(--text-sm);
    font-weight: 600;
    color: var(--fg-primary);
}

.settings__action-sub[b-q4ui231tg6] {
    font-size: var(--text-xs);
    color: var(--fg-muted);
}

.settings__chev[b-q4ui231tg6] {
    flex-shrink: 0;
    color: var(--fg-muted);
    font-size: 16px;
}
