@import '_content/OpusDatum.Platform.UI/OpusDatum.Platform.UI.tfeqjajyel.bundle.scp.css';

/* /Components/Pages/FrameworkAppetite.razor.rz.scp.css */
/* #5133 follow-up — the criteria matrix is a COORDINATE grid, so its geometry must not depend on what
   any one cell contains. The rule this applies is I4.5 in docs/UI_INTERACTION_GUIDE.md (#5143) —
   that is its home; this comment is the site-local measurement behind it.

   Measured on the running app before this: the table was table-layout:auto, so opening the band editor
   in C4 took that column from 100px to 155px and shrank every other column to pay for it (header -15,
   C1 -13, C2 -8, C3 -11, C5 -8). Editing one cell moved the other 24, under the cursor. The resting
   columns were uneven for the same reason — 156/98/132/100/100 — which distorts a grid whose entire
   meaning is position, before anyone clicks anything.

   Fixed layout with declared widths makes the geometry a property of the table rather than of its
   contents, so no cell can move another. The widths are percentages so the grid stays fluid inside the
   existing .table-responsive wrapper; min-width keeps it legible on a narrow viewport and lets the
   wrapper scroll, which is how this table already behaved. */
.rd-criteria-matrix[b-bxcs09em9j] {
    table-layout: fixed;
    min-width: 34rem;
}

/* The band editor wears the cell it is editing.

   Before this it was a default .form-select: white (#fff) painted over the cell's band colour, a 1px
   focus-blue border, and 14px/400 type against the cells' own semibold-small. So the editor hid the
   very band it was there to change, and read as a form control dropped onto a heat map — which is the
   design foundation's collision rule (consistency wins by default), not a matter of taste.

   Only the skin changes: it stays a real <select>, so every keyboard behaviour #5133 added — Enter to
   open, arrows to choose, Escape to abandon, focus returning to the cell — is untouched (I10.1).

   Focus is an INSET ring rather than a border or an outline, deliberately: an inset shadow occupies no
   space, so the focus indicator itself cannot resize the cell and reflow the grid. currentColor ties it
   to the cell's own text colour, which already contrasts with the band behind it in both themes
   (WCAG 2.4.7 without the layout cost). */
.rd-band-editor[b-bxcs09em9j] {
    background-color: transparent;
    border: 0;
    border-radius: 0;
    color: inherit;
    font-size: 0.875rem;
    font-weight: 600;
    height: 100%;
    text-align: center;
    width: 100%;
}

.rd-band-editor:focus[b-bxcs09em9j],
.rd-band-editor:focus-visible[b-bxcs09em9j] {
    box-shadow: inset 0 0 0 2px currentColor;
    outline: 0;
}

/* The OPTIONS must not inherit the cell's colour. `color: inherit` above is what makes the closed
   editor read as part of its band — but the browser draws the open dropdown list on its own surface,
   so on a Critical cell (white text on red) the options became white on white and vanished. The list
   is chrome, not part of the heat map, so it takes the ordinary body colours in both themes. */
.rd-band-editor option[b-bxcs09em9j] {
    background-color: var(--bs-body-bg);
    color: var(--bs-body-color);
}
/* /Components/Pages/FrameworkGovernancePage.razor.rz.scp.css */
/* #6809 — a principle's name keeps a 14rem column beside its note on a desktop, and takes its own line above the
   note on a narrow viewport. As an inline style the 14rem held at every width, so the row could not be narrower than
   the name plus the note, and at 320 CSS px (a desktop at 400% zoom) the page scrolled sideways by 39px: a WCAG
   1.4.10 reflow failure. The principles are a list, not a data table, so 1.4.10's exception for data tables does not
   apply. The breakpoint is 48rem, where #6592's registers stop stacking.

   The row's wrap and the name's width switch in the SAME media query, deliberately. With the wrap as Bootstrap's
   flex-md-nowrap, the row stopped wrapping at 768px while the name kept its full line until 48rem; a rem in a media
   query is the browser's default font size, so the two agree only at 16px. At a 24px default (Chrome's "Very large")
   and a 1000px window the name took the whole of a row that no longer wrapped, and the page scrolled sideways by
   102px (#6839 review). */
.rd-principle-row[b-o1hbpufq36] {
    flex-wrap: wrap;
}

.rd-principle-label[b-o1hbpufq36] {
    flex: 0 0 100%;
}

@media (min-width: 48rem) {
    .rd-principle-row[b-o1hbpufq36] {
        flex-wrap: nowrap;
    }

    .rd-principle-label[b-o1hbpufq36] {
        flex: 0 0 auto;
        min-width: 14rem;
    }
}
/* /Components/Pages/HowItWorks.razor.rz.scp.css */
/* #3829 — typography for the primer markdown. ::deep reaches the HTML injected from the markdown
   service (scoped selectors alone would not match it). Colours come from --bs-* tokens only, so the
   page follows the theme in both modes. */

.rd-primer[b-xkyzoph1nk]  h1 {
    font-size: 1.6rem;
    font-weight: 600;
    margin-bottom: 0.75rem;
}

.rd-primer[b-xkyzoph1nk]  h2 {
    font-size: 1.15rem;
    font-weight: 600;
    margin-top: 1.75rem;
    margin-bottom: 0.6rem;
    padding-bottom: 0.3rem;
    border-bottom: 1px solid var(--bs-border-color);
}

.rd-primer[b-xkyzoph1nk]  h3 {
    font-size: 1rem;
    font-weight: 600;
    margin-top: 1.25rem;
    margin-bottom: 0.4rem;
}

.rd-primer[b-xkyzoph1nk]  p,
.rd-primer[b-xkyzoph1nk]  li {
    line-height: 1.65;
}

.rd-primer[b-xkyzoph1nk]  ul {
    padding-left: 1.2rem;
}

.rd-primer[b-xkyzoph1nk]  li {
    margin-bottom: 0.35rem;
}

/* The primer's italic stand-first paragraph, and the em-dashed asides within it. */
.rd-primer[b-xkyzoph1nk]  h1 + p em {
    color: var(--bs-secondary-color);
}

.rd-primer[b-xkyzoph1nk]  hr {
    margin: 1.75rem 0;
    border-top-color: var(--bs-border-color);
    opacity: 1;
}

.rd-primer[b-xkyzoph1nk]  table {
    width: 100%;
    border-collapse: collapse;
    margin: 0.75rem 0;
    font-size: 0.9rem;
}

.rd-primer[b-xkyzoph1nk]  th,
.rd-primer[b-xkyzoph1nk]  td {
    border: 1px solid var(--bs-border-color);
    padding: 0.4rem 0.6rem;
    text-align: left;
    vertical-align: top;
}

.rd-primer[b-xkyzoph1nk]  th {
    background-color: var(--bs-tertiary-bg);
}

.rd-primer[b-xkyzoph1nk]  p:last-child {
    margin-bottom: 0;
}
/* /Components/Shared/ChatTranscript.razor.rz.scp.css */
/* Scoped styling for the assistant's rendered markdown (#3039). Keeps tables,
   code and pre blocks readable inside the chat bubble; ::deep reaches the HTML
   injected from the markdown service. */

.rd-chat-md[b-ed8ttv95lz]  table {
    width: 100%;
    border-collapse: collapse;
    margin: 0.5rem 0;
    font-size: 0.85rem;
}

.rd-chat-md[b-ed8ttv95lz]  th,
.rd-chat-md[b-ed8ttv95lz]  td {
    border: 1px solid var(--bs-border-color);
    padding: 0.25rem 0.5rem;
    text-align: left;
    vertical-align: top;
}

.rd-chat-md[b-ed8ttv95lz]  th {
    background-color: var(--bs-tertiary-bg);
}

.rd-chat-md[b-ed8ttv95lz]  pre {
    white-space: pre-wrap;
    word-break: break-word;
    background-color: var(--bs-tertiary-bg);
    padding: 0.5rem;
    border-radius: 0.25rem;
    margin: 0.5rem 0;
}

.rd-chat-md[b-ed8ttv95lz]  code {
    word-break: break-word;
}

.rd-chat-md[b-ed8ttv95lz]  p:last-child {
    margin-bottom: 0;
}
/* /Components/Shared/DefinedTermsPanel.razor.rz.scp.css */
.defterms[b-sktqhh110m] {
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-left: 3px solid var(--bs-info, #0dcaf0);
    border-radius: .5rem;
    background: var(--bs-tertiary-bg, #f8f9fa);
    margin: .75rem 0;
}

.defterms-summary[b-sktqhh110m] {
    display: flex;
    align-items: center;
    gap: .4rem;
    padding: .6rem .85rem;
    cursor: pointer;
    list-style: none;
    font-size: .9rem;
}

.defterms-summary[b-sktqhh110m]::-webkit-details-marker { display: none; }

.defterms-title[b-sktqhh110m] { font-weight: 600; color: var(--bs-body-color, #212529); }

.defterms-cite[b-sktqhh110m] {
    font-style: italic;
    color: var(--bs-secondary-color, #6c757d);
    margin-left: .4rem;
}

.defterms-chev[b-sktqhh110m] { transition: transform .15s ease; color: var(--bs-secondary-color, #6c757d); }
.defterms[open] .defterms-chev[b-sktqhh110m] { transform: rotate(180deg); }

.defterms-list[b-sktqhh110m] {
    margin: 0;
    padding: 0 .95rem .8rem 2.1rem;
    font-size: .88rem;
}

.defterms-list dt[b-sktqhh110m] {
    font-weight: 600;
    margin-top: .5rem;
}

.defterms-list dd[b-sktqhh110m] {
    margin: .1rem 0 0;
    color: var(--bs-secondary-color, #495057);
    line-height: 1.45;
}
/* /Components/Shared/FoundationalFramePanel.razor.rz.scp.css */
.frame-panel[b-6iv45ne1yb] {
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: .5rem;
    background: var(--bs-body-bg, #fff);
    padding: 1rem 1.15rem;
    margin-bottom: 1rem;
}

.frame-panel-head[b-6iv45ne1yb] { margin-bottom: .75rem; }

.frame-panel-title[b-6iv45ne1yb] {
    font-size: 1.05rem;
    font-weight: 600;
    margin-bottom: .15rem;
}

.frame-block[b-6iv45ne1yb] {
    padding: .65rem 0;
    border-top: 1px solid var(--bs-border-color, #dee2e6);
}

.frame-block-label[b-6iv45ne1yb] {
    font-size: .75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--bs-secondary-color, #6c757d);
    margin-bottom: .35rem;
}

.frame-cite[b-6iv45ne1yb] {
    font-weight: 400;
    text-transform: none;
    letter-spacing: 0;
    font-style: italic;
    color: var(--bs-secondary-color, #6c757d);
    margin-left: .4rem;
}

.frame-purpose[b-6iv45ne1yb] { font-weight: 500; }

.frame-limbs[b-6iv45ne1yb] { margin: 0; padding-left: 1.1rem; font-size: .9rem; }

.frame-scope[b-6iv45ne1yb] { display: grid; grid-template-columns: auto 1fr; gap: .2rem .9rem; font-size: .9rem; margin: 0; }
.frame-scope dt[b-6iv45ne1yb] { font-weight: 600; color: var(--bs-secondary-color, #6c757d); }
.frame-scope dd[b-6iv45ne1yb] { margin: 0; }

.frame-exemptions[b-6iv45ne1yb] { padding-bottom: .25rem; }
.frame-exemptions-summary[b-6iv45ne1yb] {
    display: flex;
    align-items: center;
    cursor: pointer;
    list-style: none;
}
.frame-exemptions-summary[b-6iv45ne1yb]::-webkit-details-marker { display: none; }
.frame-chev[b-6iv45ne1yb] { transition: transform .15s ease; color: var(--bs-secondary-color, #6c757d); }
.frame-exemptions[open] .frame-chev[b-6iv45ne1yb] { transform: rotate(180deg); }

.frame-exemption-list[b-6iv45ne1yb] { list-style: none; margin: .6rem 0 0; padding: 0; display: grid; gap: .5rem; }
.frame-exemption[b-6iv45ne1yb] {
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-left: 3px solid var(--bs-warning, #ffc107);
    border-radius: .4rem;
    padding: .5rem .65rem;
    font-size: .85rem;
}
.frame-exemption-head[b-6iv45ne1yb] { display: flex; align-items: center; gap: .5rem; margin-bottom: .25rem; }
.frame-exemption-id[b-6iv45ne1yb] { font-weight: 600; }
.frame-exemption-row[b-6iv45ne1yb] { line-height: 1.4; }
.frame-exemption-key[b-6iv45ne1yb] {
    display: inline-block;
    min-width: 5.5rem;
    font-weight: 600;
    color: var(--bs-secondary-color, #6c757d);
}
/* /Components/Shared/RdErrorSummary.razor.rz.scp.css */
/* #5979 — RdErrorSummary: Bootstrap's alert carries the look; this carries the one thing the alert
   does not have — a focus ring, because the summary takes focus when it appears (I17.6) and a reader
   who tabbed away must be able to find it again. Nothing animates. */

.rd-error-summary:focus-visible[b-6714d99zo2] {
    outline: 2px solid var(--bs-danger);
    outline-offset: 2px;
}

.rd-error-summary .alert-link[b-6714d99zo2] {
    text-decoration: underline;
}
/* /Components/Shared/RdHint.razor.rz.scp.css */
/* #5923 — RdHint: the §1.4.13 contract's CSS half. Shown on hover AND focus-within of the wrapper;
   hidden while dismissed (Escape) whatever the pointer or focus says; flush under the trigger so the
   pointer can move onto it (hoverable); nothing here animates. */

.rd-hint[b-5gv0edy4i1] {
    position: relative;
    display: inline-flex;
    align-items: center;
    vertical-align: baseline;
}

.rd-hint-trigger[b-5gv0edy4i1] {
    border: 0;
    background: none;
    padding: 0 0.15em;
    margin: 0;
    line-height: 1;
    font-size: inherit;
    color: inherit;
    opacity: 0.75;
    cursor: help;
    border-radius: 0.25rem;
}

.rd-hint-trigger:hover[b-5gv0edy4i1],
.rd-hint-trigger:focus-visible[b-5gv0edy4i1] {
    opacity: 1;
}

/* #6410 — a trigger with visible content (a chip): the content carries its own styling, so the button
   adds nothing to it — no padding, no dimming — and the pointer stays an arrow. The "?" help cursor
   over a chip that seemed to do nothing was the call's complaint. */
.rd-hint-trigger--content[b-5gv0edy4i1] {
    padding: 0;
    opacity: 1;
    cursor: default;
    line-height: inherit;
}

/* The focus outline is a line, so it takes the link tone, the guide's blue as a line (shell.css, "two
   tones" under Palette, #6844 review): #006bb7 in light, and in dark #73aed7, 6.44:1 against the surface,
   where #006bb7 was 2.78:1, under WCAG 1.4.11's 3:1 for a focus indicator. */
.rd-hint-trigger:focus-visible[b-5gv0edy4i1] {
    outline: 2px solid var(--bs-link-color);
    outline-offset: 1px;
}

.rd-hint-text[b-5gv0edy4i1] {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 1070;
    min-width: 14rem;
    max-width: min(24rem, 80vw);
    padding: 0.5rem 0.75rem;
    font-size: 0.8125rem;
    font-weight: 400;
    line-height: 1.4;
    text-align: start;
    text-transform: none;
    white-space: normal;
    color: var(--bs-body-color);
    background: var(--bs-body-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    box-shadow: var(--bs-box-shadow-sm);
}

.rd-hint--end .rd-hint-text[b-5gv0edy4i1] {
    left: auto;
    right: 0;
}

.rd-hint:hover .rd-hint-text[b-5gv0edy4i1],
.rd-hint:focus-within .rd-hint-text[b-5gv0edy4i1] {
    display: block;
}

/* Dismissed wins over hover and focus: Escape hides the panel while the trigger keeps focus. */
.rd-hint--dismissed .rd-hint-text[b-5gv0edy4i1],
.rd-hint--dismissed:hover .rd-hint-text[b-5gv0edy4i1],
.rd-hint--dismissed:focus-within .rd-hint-text[b-5gv0edy4i1] {
    display: none;
}

@media print {
    .rd-hint[b-5gv0edy4i1] {
        display: none;
    }

    /* A chip trigger is content the page shows, so print keeps it; only its panel goes. */
    .rd-hint--content[b-5gv0edy4i1] {
        display: inline-flex;
    }

    .rd-hint--content .rd-hint-text[b-5gv0edy4i1] {
        display: none;
    }
}
/* /Components/Shared/RegulationDomainPanel.razor.rz.scp.css */
/* #3829 — the fold affordance. A flex <summary> loses the browser's native disclosure triangle, so the
   marker is suppressed explicitly and a chevron carries the state instead (same treatment as
   FoundationalFramePanel). Colours from --bs-* tokens only. */

/* The citation sits inside an uppercased section label; Bootstrap has no text-transform reset utility,
   so the case of a real citation ("EU 2023/1113 Article 1") is restored here. */
.rd-domain-cite[b-drb8itw298] {
    text-transform: none;
    letter-spacing: normal;
}

.rd-domain-summary[b-drb8itw298] {
    cursor: pointer;
    list-style: none;
}

.rd-domain-summary[b-drb8itw298]::-webkit-details-marker {
    display: none;
}

.rd-domain-chevron[b-drb8itw298] {
    color: var(--bs-secondary-color);
    transition: transform 0.15s ease;
}

.rd-domain-fold[open] .rd-domain-chevron[b-drb8itw298] {
    transform: rotate(180deg);
}
/* /Components/Shared/TraceabilityLattice.razor.rz.scp.css */
/* #4029 lattice colours — decided coverage, never match strength. Moved from the page's <style>
   block with the drawing (#5919), so the component carries its own look. */
.trace-edge[b-f006husji9] { stroke: var(--bs-border-color); stroke-width: 1; }
.trace-text[b-f006husji9] { font-size: 11px; fill: var(--bs-body-color); pointer-events: none; }
.trace-node[b-f006husji9] { cursor: pointer; }
.trace-node:hover rect[b-f006husji9] { stroke-width: 2.5; }
.tc-covered[b-f006husji9] { fill: var(--bs-success-bg-subtle); stroke: var(--bs-success); }
.tc-partial[b-f006husji9] { fill: var(--bs-warning-bg-subtle); stroke: var(--bs-warning); }
.tc-gap[b-f006husji9]     { fill: var(--bs-danger-bg-subtle);  stroke: var(--bs-danger); }
.tc-none[b-f006husji9]    { fill: var(--bs-secondary-bg);      stroke: var(--bs-border-color); }
/* #6286 — governed outside this register: assessed, carries no rating. The dash is the second cue, so it is told
   from "not assessed" without colour (I18.5); the table beside the picture carries the word. */
.tc-outside[b-f006husji9] { fill: var(--bs-body-bg);            stroke: var(--bs-secondary-color); stroke-dasharray: 4 2; }
.tc-risk[b-f006husji9]    { fill: var(--bs-info-bg-subtle);    stroke: var(--bs-info); }
.tc-risk-muted[b-f006husji9] { fill: var(--bs-secondary-bg);   stroke: var(--bs-border-color); }
