@font-face {
    font-family: Thiccboi;
    src: url(fonts/THICCCBOI-Thin.ttf);
    font-weight: 200;
}
@font-face {
    font-family: Thiccboi;
    src: url(fonts/THICCCBOI-Light.ttf);
    font-weight: 300;
}
@font-face {
    font-family: Thiccboi;
    src: url(fonts/THICCCBOI-Regular.ttf);
    font-weight: 400;
}
@font-face {
    font-family: Thiccboi;
    src: url(fonts/THICCCBOI-SemiBold.ttf);
    font-weight: 500;
}
@font-face {
    font-family: Thiccboi;
    src: url(fonts/THICCCBOI-Bold.ttf);
    font-weight: 600;
}
h1, h2, h3, h4, h5, h6 {
    font-size:1.75em;
    margin:0;
    padding:0;
    font-family: Thiccboi, Arial, Helvetica, sans-serif;
    font-weight:normal;
}
h3 { 
    font-weight:500;
}
h4 {
    font-size: 18px;
    font-weight: 500;
}
h5 {
    font-size: 1em;
    font-weight:300;
}
h6 { 
    font-size: 1em;
    font-weight:200; }



html, body {
    font-family: Thiccboi, Arial, Helvetica, sans-serif;
    width: 100%;
    height: 100%;
    margin: 0;
    background-color: #FFFFFF;
    box-sizing: border-box;
}

/* Small / Large screen toggle */

@media (max-width: 841px) {
    .large-only {
        display: none;
    }
}

@media (min-width: 841px) {
    .small-only {
        display: none;
    }
}

/* Default styles */

/*
 * Telerik popups (dropdowns, etc.) are rendered into a .k-animation-container
 * somewhere under <article>, which is position: relative (needed for the
 * LockedPreview overlay). That makes <article> the offset parent, so the popup's
 * absolute viewport coordinates are shifted by <article>'s offset and the popup
 * renders detached from its anchor. Forcing these popups to fixed positioning
 * makes Telerik's viewport coordinates resolve correctly so the popup anchors to
 * its field. Use a descendant selector (not a direct-child one) so it also covers
 * pages whose layout nests the popup deeper (e.g. the account page via ManageLayout).
 */
article .k-animation-container {
    position: fixed;
}

.assisto-row{
    display: flex;
    flex-direction: row;
    gap: 1rem;
}

.user-content-page{
    width: 100%;
    height: 100%;
    max-width: 100%;
    overflow: auto;
    margin-bottom: 5rem;
}

.user-content-page.large{
    overflow: hidden;
}

.user-content-page-container{
    padding: 2rem;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    height: 100%;
    width: 100%;
}

@media (min-width: 841px){
    .user-content-page-container{
        padding: 4rem 4rem 2rem 4rem;
    }
}

.manage-header{
    display: flex;
    flex-direction: row;
    gap: 1rem;
    align-items: center;
    margin-bottom: 1rem;
}

.form-floating{
    width: 100%;
    max-width: 100%;
    margin-bottom: 1rem;
}

.account button, .account-message button {
    text-transform: uppercase;
}

button{
    border: none;
    background: none;
}

.account-message{
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1rem;
}

*:focus-visible{
    outline: 1px solid var(--assisto-primary);
}

.k-picker-outline:focus-visible{
    outline: none;
}

/* disable chrome default blue highlight on filled input texts */
/* https://stackoverflow.com/a/46829178 */ 
input:-webkit-autofill,
textarea:-webkit-autofill,
select:-webkit-autofill {
    -webkit-box-shadow: 0 0 0 1000px white inset !important;
}

/* Custom styles */

.plan-selection-dialog, .pack-selection-dialog{
    min-width: 80%;
    width: fit-content;
    height: fit-content;
    user-select: none;
}

.plan-selection-dialog .dialog-body,
.pack-selection-dialog .dialog-body{
    height: 100%;
}

/*.lock{
    backdrop-filter: blur(1px);
}

.blocked {
    filter: blur(1px);
}*/

/* Overrides */

a, 
a:focus, 
a:hover, 
a:active,
.btn-link{
    color: var(--assisto-primary);
}

a:focus,
a:hover,
a:active {
}

.btn-primary,
.btn-primary:hover,
.btn-primary:active,
.btn-primary:focus {
    color: #fff;
    background-color: var(--assisto-primary);
    border-color: var(--assisto-primary);
}

.btn-primary:hover,
.btn-primary:active,
.btn-primary:focus {
    filter: brightness(115%);
}

.form-control:focus,
.k-picker-outline:focus{
    border-color: var(--assisto-primary-focus-border);
}

.k-list-item.k-selected,
.k-selected.k-list-optionlabel,
.k-selected.k-list-optionlabel:hover
{
    color: var(--assisto-primary);
}

.form-check-input:checked{
    background-color:var(--assisto-primary);
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
    box-shadow: 0 0 0 .25rem var(--assisto-primary-focus-border);
}

h1:focus {
    outline: none;
}

.valid.modified:not([type=checkbox]) {
    outline: 1px solid var(--assisto-primary);
}

/*.invalid {
    outline: 1px solid var(--assisto-error-border);
}*/

.validation-message {
    color: var(--assisto-error);
}

.blazor-error-boundary {
    background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, var(--assisto-error-border);
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

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

.darker-border-checkbox.form-check-input {
    border-color: #929292;
}

.alert-danger{
    background-color: var(--assisto-error-bg);
    border-color: var(--assisto-error);
}

.text-danger{
    margin: .5rem 0 .25rem 0;
    color: var(--assisto-error);
}

.invalid{
    border-color: var(--assisto-error-border);
}

.k-textbox > input{
    background-color: white;
}

.account form button{
    text-transform: uppercase;
}

/* Colors */

* {
    --assisto-bg: #eeeeee;
    --assisto-primary: #0ba292;
    --assisto-primary-focus: #0B8F81;
    --assisto-primary-filter: brightness(0) saturate(100%) invert(35%) sepia(97%) saturate(3512%) hue-rotate(156deg) brightness(93%) contrast(91%);
    --assisto-primary-rgb: 11, 143, 129;
    --assito-secondary: #00C9AF;
    --assito-secondary-focus: #058373;
    --assisto-primary-focus-border: rgba(11, 142, 128, 0.34);
    --assisto-tertiary: #4a80d1;
    --assisto-tertiary-rgb: 74, 128, 209;
    --assisto-border: #929292;
    --assisto-blue: #2683D4;
    --assisto-blue-filter: brightness(0) saturate(100%) invert(42%) sepia(86%) saturate(706%) hue-rotate(172deg) brightness(91%) contrast(88%);
    --assisto-white-filter: brightness(0) saturate(100%) invert(94%) sepia(100%) saturate(0%) hue-rotate(115deg) brightness(104%) contrast(102%);
    --assisto-action-bg: #FCF7EE;
    --assisto-action-bg-border: rgba(0, 0, 0, 0.12);

    --assisto-primary-text: black;
    --assisto-secondary-text: #747474;
    
    --assisto-warning: #f0881f;
    --assisto-warning-bg: #ffe3cc;
    --assisto-warning-rgb: 240, 136, 31;
    --assisto-warning-filter: brightness(0) saturate(100%) invert(77%) sepia(52%) saturate(5123%) hue-rotate(347deg) brightness(97%) contrast(94%);
    --assisto-error: #F01F83;
    --assisto-error-bg: #fad0e4;
    --assisto-error-border: #f156a1;
    --assisto-error-rgb: 240, 31, 131;
    --assisto-error-filter: brightness(0) saturate(100%) invert(18%) sepia(51%) saturate(6207%) hue-rotate(321deg) brightness(105%) contrast(88%);
    
    --assisto-credits-bg: #F67FED;

    --assisto-highlight-yellow: #bcdf0c;
    
    --ease-time: .4s;
    --ease-curve: cubic-bezier(0, 0, 0, 1);
    --bs-blue: var(--assisto-primary);
    --bs-primary: var(--assisto-primary);
    --bs-danger-rgb: var(--assisto-error-rgb);
    --mud-palette-primary: var(--assisto-primary);
    --mud-palette-primary-rgb: 11, 142, 128;
    --mud-palette-primary-darken: var(--assisto-primary);
    --mud-palette-primary-lighten: var(--assisto-primary);
}

/* ---- State selector (now lives in the sticky context bar alongside the tabs) ---- */
.header-state-field {
    position: relative;
    display: inline-flex;
    align-items: center;
    border: 1px solid #c0c0c0;
    border-radius: 999px;
    background-color: #ffffff;
    cursor: pointer;
}

.header-state-field:hover {
    border-color: var(--assisto-primary);
}

/* The icon sits on top of the select (which fills the whole pill); pointer-events:none lets clicks
   anywhere — including over the icon — fall through to the select so the entire field opens it. */
.header-state-icon {
    position: absolute;
    left: 12px;
    top: 50%;
    transform: translateY(-50%);
    display: inline-flex;
    color: var(--assisto-primary);
    pointer-events: none;
}

.header-state-select {
    width: 100%;
    /* Left padding clears the absolutely-positioned icon; the select owns the full clickable area. */
    padding: 5px 12px 5px 34px;
    border: none;
    background: transparent;
    font-size: 14px;
    font-weight: 600;
    color: #2b2b2b;
    cursor: pointer;
    outline: none;
}

/* ---- Ring spinner (mirrors the app's ALoader / self-audit .lds-ring) ----
   Defined globally here so it can be dropped into JS-injected DOM (the citation-detail panel) and the
   navigation overlay, neither of which Blazor's scoped CSS reaches. Sized via --rs-size / --rs-width. */
.report-spinner {
    display: flex;
    align-items: center;
    justify-content: center;
}

.report-spinner .lds-ring {
    position: relative;
    display: inline-block;
    width: var(--rs-size, 40px);
    height: var(--rs-size, 40px);
    color: var(--assisto-primary);
}

.report-spinner .lds-ring div {
    box-sizing: border-box;
    position: absolute;
    display: block;
    width: 100%;
    height: 100%;
    border: var(--rs-width, 4px) solid currentColor;
    border-radius: 50%;
    border-color: currentColor transparent transparent transparent;
    animation: report-spinner-rotate 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
}

.report-spinner .lds-ring div:nth-child(1) { animation-delay: -0.45s; }
.report-spinner .lds-ring div:nth-child(2) { animation-delay: -0.3s; }
.report-spinner .lds-ring div:nth-child(3) { animation-delay: -0.15s; }

@keyframes report-spinner-rotate {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* Citation-detail modal loading/error state — injected by openStory while /report/citation/{id} loads. */
.citation-detail-status {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 160px;
    padding: 2rem;
    color: #6b7280;
    font-size: 14px;
    text-align: center;
}

/* Full-screen overlay shown while a State/Topic change reloads the report (both are full-page reloads). */
.report-nav-loader {
    position: fixed;
    inset: 0;
    z-index: 2000;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, 0.6);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.15s ease;
    --rs-size: 56px;
    --rs-width: 5px;
}

.report-nav-loader.visible {
    opacity: 1;
    visibility: visible;
    pointer-events: all;
}

/* ---- Account / settings menu (collapses the inline email, theme toggle and print) ---- */
.account-menu {
    position: relative;
    display: inline-flex;
}

.account-menu-trigger {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    height: 38px;
    padding: 0 10px 0 12px;
    border: 1px solid #c0c0c0;
    border-radius: 999px;
    background-color: #ffffff;
    color: #333333;
    cursor: pointer;
}

.account-menu-trigger:hover {
    border-color: var(--assisto-primary);
}

.account-menu-avatar {
    color: var(--assisto-primary);
}

.account-menu-caret {
    color: #888888;
    transition: transform 0.15s ease;
}

.account-menu-trigger[aria-expanded="true"] .account-menu-caret {
    transform: rotate(180deg);
}

.account-menu-panel {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    min-width: 240px;
    max-width: calc(100vw - 32px);
    padding: 6px;
    background-color: #ffffff;
    border: 1px solid #e0e0e0;
    border-radius: 12px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
    display: none;
    z-index: 200;
}

.account-menu-panel.open {
    display: block;
}

.account-menu-identity {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 8px 10px;
    margin-bottom: 4px;
    border-bottom: 1px solid #eeeeee;
}

.account-menu-identity-caption {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #999999;
}

.account-menu-identity-email {
    font-size: 14px;
    font-weight: 600;
    color: #2b2b2b;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 280px;
}

.account-menu-item {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 9px 10px;
    border: none;
    border-radius: 8px;
    background: transparent;
    font-size: 14px;
    color: #333333;
    text-align: left;
    cursor: pointer;
}

.account-menu-item:hover {
    background-color: #f2f2f2;
}

/* The menu renders some items as links (Go to app) and a logout form button; keep them flush with the
   button items (no underline, no inherited form margin). */
a.account-menu-item {
    text-decoration: none;
}

.account-menu-logout-form {
    margin: 0;
}

/* Footer group (Go to app / Log out), set off from the theme + print controls above it. */
.account-menu-footer {
    margin-top: 4px;
    padding-top: 4px;
    border-top: 1px solid #eeeeee;
}

.account-menu-item-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    color: var(--assisto-primary);
}

/* ---- Shared report-card language (matches the monthly report's trend/mover cards) ----
   Global so the survey-prep risk / department / trends cards render identically to StateTrendsSection's cards
   without duplicating the palette. Components add class="report-card" plus the severity/score/delta helpers. */
.report-card {
    --report-card-bg: var(--rt-mist, #f6f7f9);
    --report-card-border: var(--rt-border, #e5e7eb);
    display: flex;
    flex-direction: column;
    gap: 10px;
    min-width: 0;
    padding: 15px 17px;
    background: var(--report-card-bg);
    border: 1px solid var(--report-card-border);
    border-radius: 10px;
    color: inherit;
    text-decoration: none;
    transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}

a.report-card:hover {
    border-color: var(--assisto-primary, #004f44);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
    transform: translateY(-1px);
}

/* Scope/severity pill — same colour code as SeverityTag / the trends .sev-band (L1 A–C … L4 J–L). */
.report-sev-band {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.5rem;
    height: 1.4rem;
    padding: 0 6px;
    border-radius: 5px;
    color: #fff;
    font-weight: 700;
    font-size: 0.8rem;
    background-color: var(--rt-sev-l1, #95b0aa);
}
/* Theme var with the ORIGINAL value as fallback so report pages (which load
   report-theme.css) get the re-tuned ramp while any other surface stays as-is. */
.report-sev-band.l1 { background-color: var(--rt-sev-l1, #95b0aa); }
.report-sev-band.l2 { background-color: var(--rt-sev-l2, #e9c403); color: #3a2f00; }
.report-sev-band.l3 { background-color: var(--rt-sev-l3, #e16b21); }
.report-sev-band.l4 { background-color: var(--rt-sev-l4, #d80162); }

/* Composite risk score chip — on the green(low)→red(high) risk ramp so it reads as "how risky". */
.report-score-chip {
    font-weight: 700;
    font-size: 0.82rem;
    color: #fff;
    padding: 1px 9px;
    border-radius: 999px;
    background: var(--rt-sev-l1, #95b0aa);
}
.report-score-chip.tier-low      { background: var(--rt-better, #1d9e75); }
.report-score-chip.tier-moderate { background: var(--rt-sev-l2, #e9c403); color: #3a2f00; }
.report-score-chip.tier-high     { background: var(--rt-sev-l3, #e16b21); }
.report-score-chip.tier-critical { background: var(--rt-sev-l4, #d80162); }

/* Direction deltas: "up = more citations = bad" (red), "down = fewer = good" (green), matching the trends cards. */
.report-delta { font-weight: 600; white-space: nowrap; }
.report-delta.is-up { color: var(--rt-worse, #c0392b); }
.report-delta.is-down { color: var(--rt-better, #1d9e75); }


