/* ============================================================================
   modern-ui.css  —  v2
   Sleek/modern restyle layer for the Admin Submissions dashboard.
   Loaded LAST (after site.css + Observatory.css) so it overrides cleanly.

   Goals for v2:
     - one consistent TYPE + SPACING + SIZE scale (kills the "some huge / some
       tiny" feel)
     - modern density & vertical rhythm
     - real glassmorphism where it reads well (card, chips, dropdowns, accordion)

   Scoping (intentional, so the rest of the app is untouched):
     - Navbar -> header.natura-map-header   (the extended P2 header)
     - Table  -> .modern-submissions         (added on the submissions card)

   Pure CSS over existing markup: no DOM/JS hooks, IDs or onclick changed.
   ============================================================================ */

:root {
    /* brand */
    --mui-blue: #00639B;
    --mui-green: #00AA7D;
    --mui-blue-soft: rgba(0, 99, 155, 0.08);
    --mui-blue-soft-2: rgba(0, 99, 155, 0.14);
    --mui-green-soft: rgba(0, 170, 125, 0.10);

    /* ink */
    --mui-ink: #243140;
    --mui-ink-soft: #66727f;
    --mui-line: rgba(20, 45, 70, 0.10);

    /* type scale */
    --mui-fs-nav: 14px;
    --mui-fs-eyebrow: 11px;      /* column headers / labels */
    --mui-fs-body: 13px;
    --mui-fs-badge: 12px;
    --mui-fs-chip: 12.5px;

    /* spacing scale (4pt) */
    --mui-s1: 4px;
    --mui-s2: 8px;
    --mui-s3: 12px;
    --mui-s4: 16px;
    --mui-s5: 20px;
    --mui-s6: 24px;

    /* sizes */
    --mui-icon: 30px;            /* round icon discs */
    --mui-control-h: 32px;       /* buttons / inputs */

    /* radii */
    --mui-r-pill: 999px;
    --mui-r-card: 18px;
    --mui-r-ctl: 10px;

    /* shadows */
    --mui-shadow: 0 12px 34px rgba(16, 42, 67, 0.12);
    --mui-shadow-soft: 0 2px 10px rgba(16, 42, 67, 0.07);
    --mui-shadow-hover: 0 8px 20px rgba(16, 42, 67, 0.16);

    /* glass */
    --mui-glass-bg: rgba(255, 255, 255, 0.62);
    --mui-glass-bg-strong: rgba(255, 255, 255, 0.80);
    --mui-glass-blur: blur(22px) saturate(180%);
    --mui-glass-border: 1px solid rgba(255, 255, 255, 0.55);
    --mui-glass-inset: inset 0 1px 0 rgba(255, 255, 255, 0.6);

    --mui-ease: cubic-bezier(.4, 0, .2, 1);
}

/* ===========================================================================
   1) TOP NAVBAR
   =========================================================================== */

header.natura-map-header {
    box-shadow: var(--mui-shadow), var(--mui-glass-inset);
    border: var(--mui-glass-border) !important;
    backdrop-filter: var(--mui-glass-blur);
    -webkit-backdrop-filter: var(--mui-glass-blur);
    transition: box-shadow .3s var(--mui-ease);
}

header.natura-map-header .header-top {
    gap: var(--mui-s3);
    padding: var(--mui-s2) var(--mui-s4);
}

/* brand logo chip — constrain so it never dominates */
header.natura-map-header .header-brand-logo {
    height: 44px !important;
    min-width: 44px;
    max-width: 220px;
    padding: var(--mui-s1) var(--mui-s3) !important;
    box-shadow: var(--mui-shadow-soft);
    transition: transform .25s var(--mui-ease), box-shadow .25s var(--mui-ease);
}
header.natura-map-header .header-brand-logo:hover {
    transform: translateY(-1px);
    box-shadow: var(--mui-shadow-hover);
}

/* center nav */
header.natura-map-header .header-nav {
    gap: 2px;
}

header.natura-map-header .header-nav-item {
    gap: var(--mui-s2);
    padding: 5px var(--mui-s3) 5px 5px;
    border-radius: var(--mui-r-pill);
    border: 1px solid transparent;
    transition: background .25s var(--mui-ease), border-color .25s var(--mui-ease),
                box-shadow .25s var(--mui-ease), transform .15s var(--mui-ease);
}
/* normalise the oversized 18px nav text from the inline partial style */
header.natura-map-header .header-nav-item button,
header.natura-map-header .tabChoicep2Extented {
    font-size: var(--mui-fs-nav) !important;
    font-weight: 600;
    letter-spacing: .1px;
    line-height: 1.1 !important;
    transition: color .2s var(--mui-ease);
}

/* visible hover/active on a LIGHT pill (old rule used white@30% -> invisible) */
header.natura-map-header .header-nav-item:hover {
    background: var(--mui-blue-soft);
    border-color: rgba(0, 99, 155, 0.12);
    transform: translateY(-1px);
}
header.natura-map-header .header-nav-item.active {
    background: linear-gradient(135deg, rgba(0, 99, 155, 0.14) 0%, rgba(0, 170, 125, 0.14) 100%);
    border-color: rgba(0, 99, 155, 0.20);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.45);
}

/* round icon discs — one size everywhere */
header.natura-map-header .header-nav-icon {
    width: var(--mui-icon);
    height: var(--mui-icon);
    background: #fff;
    box-shadow: var(--mui-shadow-soft);
    transition: transform .2s var(--mui-ease);
    flex: 0 0 auto;
}
header.natura-map-header .header-nav-icon img {
    height: 16px !important;
}
header.natura-map-header .header-nav-item:hover .header-nav-icon,
header.natura-map-header .header-nav-item.active .header-nav-icon {
    transform: scale(1.06);
}

/* ---- right-side action cluster ---- */
header.natura-map-header .header-actions {
    gap: var(--mui-s2);
}

/* unify every action affordance into the same glass chip & height */
header.natura-map-header .header-actions > div[style*="border-radius:50px"],
header.natura-map-header .header-actions .header-nav-icon,
header.natura-map-header .header-actions .user-containerp2,
header.natura-map-header .header-actions .simple-ContainerNoBorder {
    height: 36px !important;
    min-width: 36px;
    opacity: 1 !important;
    background: var(--mui-glass-bg-strong) !important;
    backdrop-filter: var(--mui-glass-blur);
    -webkit-backdrop-filter: var(--mui-glass-blur);
    border: 1px solid rgba(255, 255, 255, 0.6) !important;
    box-shadow: var(--mui-shadow-soft);
    transition: transform .2s var(--mui-ease), box-shadow .2s var(--mui-ease);
}
header.natura-map-header .header-actions > div[style*="border-radius:50px"] { width: auto; }
header.natura-map-header .header-actions .header-nav-icon { width: 36px !important; height: 36px !important; }

header.natura-map-header .header-actions > div[style*="border-radius:50px"]:hover,
header.natura-map-header .header-actions .header-nav-icon:hover,
header.natura-map-header .header-actions .user-containerp2:hover,
header.natura-map-header .header-actions .simple-ContainerNoBorder:hover {
    transform: translateY(-1px);
    box-shadow: var(--mui-shadow-hover);
}

header.natura-map-header #logonTimer {
    font-size: var(--mui-fs-body);
    font-weight: 700;
    color: var(--mui-blue);
    font-variant-numeric: tabular-nums;
}

/* notification dot */
header.natura-map-header #notificationBellContainer.hasNotification::after {
    content: "";
    position: absolute;
    top: 3px; right: 3px;
    width: 9px; height: 9px;
    border-radius: 50%;
    background: #ff4d4f;
    border: 2px solid #fff;
}

header.natura-map-header .user-containerp2 {
    display: flex;
    align-items: center;
    padding: 0 var(--mui-s2) 0 var(--mui-s1);
    border-radius: var(--mui-r-pill);
    cursor: pointer;
}
header.natura-map-header .user-containerp2 img:first-child { height: 28px !important; }

header.natura-map-header .header-actions .obs_lang {
    transition: transform .2s var(--mui-ease);
    border-radius: 4px;
}
header.natura-map-header .header-actions .obs_lang:hover { transform: scale(1.08); }

/* glass dropdowns / popovers spawned from the header & page */
.notificationsWindowP2 {
    background: var(--mui-glass-bg-strong) !important;
    backdrop-filter: var(--mui-glass-blur);
    -webkit-backdrop-filter: var(--mui-glass-blur);
    border: var(--mui-glass-border) !important;
    box-shadow: var(--mui-shadow) !important;
    border-radius: var(--mui-r-card) !important;
}

/* ===========================================================================
   19) USER CHIP (button) + USER MENU (dropdown)  (v5)
   =========================================================================== */

/* the chip in the (light) header bar */
.obs_topp2 .user-containerp2 {
    display: inline-flex !important;
    align-items: center;
    gap: 6px;
    padding: 3px 9px 3px 4px;
    border-radius: 999px;
    background: rgba(16, 42, 67, 0.04);
    cursor: pointer;
    transition: background .2s var(--mui-ease), box-shadow .2s var(--mui-ease);
}
.obs_topp2 .user-containerp2:hover {
    background: rgba(0, 99, 155, 0.08);
    box-shadow: var(--mui-shadow-soft);
}
.mui-uchip-avatar {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    flex: 0 0 auto;
    background: var(--mui-grad-brand);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: .3px;
}
.mui-uchip-caret { color: var(--mui-ink-soft); flex: 0 0 auto; }

/* the dropdown */
.userMenu {
    position: fixed !important;
    top: 74px !important;
    right: 22px !important;
    left: auto !important;
    width: 268px !important;
    padding: 8px !important;
    background: #fff !important;
    border: 1px solid var(--mui-line) !important;
    border-radius: 16px !important;
    box-shadow: 0 24px 60px rgba(16, 42, 67, 0.24) !important;
    z-index: 4000 !important;
}

/* profile header (name + email row) */
.userMenu .row.pb-2 {
    display: flex !important;
    align-items: center;
    padding: 8px 8px 12px !important;
    margin: 0 !important;
}
.userMenu .row.pb-2 .col-4 { display: none !important; }
.userMenu .row.pb-2 .col-8 { padding: 0 !important; max-width: none !important; flex: 1 1 auto !important; }
.userMenu .row.pb-2 [style*="font-size:90%"] { font-size: 14px !important; font-weight: 700 !important; color: var(--mui-ink) !important; }
.userMenu .row.pb-2 [style*="font-size:80%"] { font-size: 12px !important; color: var(--mui-ink-soft) !important; margin-top: 2px; }

/* divider */
.userMenu .row[style*="height:1px"] {
    background: transparent !important;
    height: auto !important;
    border-top: 1px solid var(--mui-line) !important;
    margin: 4px 6px 8px !important;
}

/* menu items (rows containing a link) */
.userMenu .row:has(a.usermenutext) {
    display: flex !important;
    align-items: center;
    margin: 2px 0 !important;
    border-radius: 10px;
    cursor: pointer;
    transition: background .15s var(--mui-ease);
}
.userMenu .row:has(a.usermenutext):hover { background: var(--mui-blue-soft); }
.userMenu .row:has(a.usermenutext) .col-4 {
    flex: 0 0 auto !important;
    width: 42px !important;
    max-width: 42px !important;
    display: flex; align-items: center; justify-content: center;
    padding: 9px 0 !important;
}
.userMenu .row:has(a.usermenutext) .col-8 {
    flex: 1 1 auto !important;
    max-width: none !important;
    padding: 9px 4px !important;
}
.userMenu .usermenuicon { height: 18px !important; width: 18px !important; }
.userMenu a.usermenutext,
.userMenu span.usermenutext {
    color: var(--mui-ink) !important;
    font-size: 13.5px !important;
    font-weight: 600 !important;
    text-decoration: none !important;
}
/* sign-out item -> red */
.userMenu .row:has(#signOut):hover { background: rgba(226, 59, 59, 0.08); }
.userMenu .row:has(#signOut) span.usermenutext { color: #e23b3b !important; }

/* ===========================================================================
   2) SUBMISSIONS CARD  (glassmorphism)
   =========================================================================== */

.modern-submissions {
    background: var(--mui-glass-bg) !important;
    backdrop-filter: var(--mui-glass-blur) !important;
    -webkit-backdrop-filter: var(--mui-glass-blur) !important;
    border: var(--mui-glass-border) !important;
    border-radius: var(--mui-r-card) !important;
    box-shadow: var(--mui-shadow), var(--mui-glass-inset) !important;
    padding: var(--mui-s5) var(--mui-s6) var(--mui-s6) !important;
    color: var(--mui-ink);
}

/* ---- status filter counters: grouped, equal pills ---- */
.modern-submissions .documentStatusUnderReview,
.modern-submissions .documentStatusSubmitted,
.modern-submissions .documentStatusClarification,
.modern-submissions .documentStatusVerified,
.modern-submissions .documentStatusRejected {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 28px;
    padding: 0 var(--mui-s3) !important;
    margin-left: 6px;
    border-radius: var(--mui-r-pill) !important;
    font-size: var(--mui-fs-chip);
    font-weight: 600;
    line-height: 1;
    cursor: pointer;
    border: 1px solid rgba(255, 255, 255, 0.5);
    box-shadow: var(--mui-shadow-soft);
    transition: transform .15s var(--mui-ease), box-shadow .2s var(--mui-ease), filter .2s var(--mui-ease);
}
.modern-submissions .documentStatusUnderReview:hover,
.modern-submissions .documentStatusSubmitted:hover,
.modern-submissions .documentStatusClarification:hover,
.modern-submissions .documentStatusVerified:hover,
.modern-submissions .documentStatusRejected:hover {
    transform: translateY(-1px);
    box-shadow: var(--mui-shadow-hover);
    filter: brightness(0.99);
}

.modern-submissions .fa-eraser {
    color: var(--mui-ink-soft);
    padding: 7px;
    border-radius: var(--mui-r-pill);
    transition: background .2s var(--mui-ease), color .2s var(--mui-ease);
}
.modern-submissions .fa-eraser:hover {
    background: var(--mui-blue-soft);
    color: var(--mui-blue);
}

/* ---- category tabs ---- */
.modern-submissions .nav-tabs {
    border-bottom: 1px solid var(--mui-line);
    gap: var(--mui-s1);
    margin-top: var(--mui-s4);
    margin-bottom: var(--mui-s2);
}
.modern-submissions .nav-tabs .nav-link {
    border: none !important;
    border-radius: var(--mui-r-ctl) var(--mui-r-ctl) 0 0;
    color: var(--mui-ink-soft);
    font-weight: 600;
    font-size: var(--mui-fs-body);
    padding: var(--mui-s2) var(--mui-s4);
    margin-bottom: -1px;
    background: transparent;
    transition: color .2s var(--mui-ease), background .2s var(--mui-ease);
}
.modern-submissions .nav-tabs .nav-link:hover {
    color: var(--mui-blue);
    background: var(--mui-blue-soft);
}
.modern-submissions .nav-tabs .nav-link.active {
    color: var(--mui-blue) !important;
    background: transparent;
    border-bottom: 3px solid var(--mui-blue) !important;
}

/* ---- column header row ---- */
.modern-submissions .Tableheader {
    color: var(--mui-ink-soft) !important;
    text-transform: uppercase;
    font-size: var(--mui-fs-eyebrow);
    font-weight: 700;
    letter-spacing: .6px;
    padding-top: var(--mui-s3);
    padding-bottom: var(--mui-s3);
    border-bottom: 1px solid var(--mui-line);
}
.modern-submissions .sortButton {
    color: var(--mui-ink-soft) !important;
    text-transform: uppercase;
    font-size: var(--mui-fs-eyebrow);
    font-weight: 700;
    letter-spacing: .6px;
}
.modern-submissions .sortButton:hover { color: var(--mui-blue) !important; }

/* ---- year accordion header: glass bar + branded pill ---- */
.modern-submissions .accordion {
    background: transparent !important;
    margin-bottom: var(--mui-s3);
}
.modern-submissions .accordion-header .row {
    align-items: center;
    background: rgba(255, 255, 255, 0.92);
    /* No backdrop-filter here on purpose: this element repeats down the page, and a blurred
       backdrop must be re-sampled per element on every scroll frame — with one per row that
       overruns the compositor and the page visibly flickers while scrolling. The background
       below is opaque enough to read the same against the page. Keep blur for single
       floating surfaces (navbar, modals, dropdowns), never for list items. */
    border: 1px solid rgba(255, 255, 255, 0.5);
    border-radius: var(--mui-r-ctl);
    padding: var(--mui-s1) var(--mui-s2) !important;
    margin: 0 0 var(--mui-s2) 0 !important;
    box-shadow: var(--mui-shadow-soft);
}
.modern-submissions .p2DashboardYearLabel {
    background: linear-gradient(135deg, var(--mui-blue) 0%, var(--mui-green) 100%) !important;
    color: #fff !important;
    padding: var(--mui-s1) var(--mui-s4) !important;
    border-radius: var(--mui-r-pill) !important;
    font-size: var(--mui-fs-body) !important;
    letter-spacing: .3px;
    box-shadow: var(--mui-shadow-soft);
}
.modern-submissions .accordion-button {
    background: transparent !important;
    box-shadow: none !important;
    padding: var(--mui-s2) var(--mui-s1);
}
.modern-submissions .accordion-button:focus { box-shadow: none !important; }
/* open / closed pills */
.modern-submissions .button-white-linear,
.modern-submissions .form-switch .fontsize80 { font-size: var(--mui-fs-badge) !important; }

/* the year badge ("RY2025") sits in a fixed 1/12-width column, but its own
   padding makes it render wider than that column — it was overlapping the
   "open/closed for submissions" pill right next to it. Let the badge size to
   its own content instead of a rigid Bootstrap column, and force a real gap
   before whatever follows. */
.modern-submissions .accordion-header .row > [class^="col-"]:first-child {
    flex: 0 0 auto;
    width: auto;
    max-width: none;
}
.modern-submissions .accordion-header .row > [class^="col-"]:first-child + [class^="col-"] {
    flex: 1 1 auto;
    width: auto;
    max-width: none;
    margin-left: var(--mui-s2);
    display: flex;
    flex-wrap: wrap;
    row-gap: 6px;
}

/* ---- data rows ---- */
.modern-submissions .tab-content .accordion-collapse .row[class*="pt-2"] {
    border-radius: var(--mui-r-ctl);
    border-bottom: 1px solid var(--mui-line);
    padding-top: var(--mui-s3) !important;
    padding-bottom: var(--mui-s3) !important;
    transition: background .18s var(--mui-ease), box-shadow .18s var(--mui-ease);
    align-items: center;
    font-size: var(--mui-fs-body);
}
.modern-submissions .tab-content .accordion-collapse .row[class*="pt-2"]:hover {
    background: rgba(0, 99, 155, 0.045);
    box-shadow: inset 3px 0 0 var(--mui-green);
}
.modern-submissions .tab-content .accordion-collapse .row[class*="pt-2"] .fontsize70 {
    font-size: var(--mui-fs-badge) !important;
    color: var(--mui-ink-soft);
}

/* the OFYPEKA row (.submissionsBodyContainerAdmin, same markup for admin AND
   user roles) lays these cells out with `display:grid`, so flex/width fixes
   here do nothing — sizing is controlled by that grid's own rules further
   below (search .submissionsBodyContainerAdmin). Long unbreakable tokens
   (an email address, a submission id) in the primary-tier cells had no wrap
   fallback and painted straight over the next grid column; see the
   overflow-wrap fix and the small-screen stacking breakpoint there. */

/* smaller screens: the accordion header's badge+pill can still wrap onto
   their own line once the row gets tight. */
@media (max-width: 992px) {
    .modern-submissions .accordion-header .row > [class^="col-"]:first-child + [class^="col-"] {
        flex-basis: 100%;
        margin-left: 0;
        margin-top: 8px;
    }
}

/* company button */
.modern-submissions .companyDetailsButton {
    border-color: var(--mui-line) !important;
    border-radius: var(--mui-r-ctl) !important;
    background: rgba(255, 255, 255, 0.7) !important;
    padding: 6px var(--mui-s3);
    font-size: var(--mui-fs-body);
    color: var(--mui-ink);
    transition: border-color .2s var(--mui-ease), box-shadow .2s var(--mui-ease), transform .15s var(--mui-ease);
}
/* the company/municipality name is the primary identifier of a submission row -> bold, stand out */
.submissionsBodyContainerAdmin .row[class*="pt-2"] .companyDetailsButton {
    font-weight: 700;
    text-align: left;
}
.modern-submissions .companyDetailsButton:hover {
    border-color: var(--mui-blue) !important;
    box-shadow: var(--mui-shadow-soft);
    transform: translateY(-1px);
}

/* ---- per-row status badges ---- */
.modern-submissions .tableCellNoBorder [class*="documentStatus"],
.modern-submissions .tableCellNoBorder [class*="colors"],
.modern-submissions .tableCellNoBorder [class*="ESGStatus"] {
    display: inline-block;
    padding: var(--mui-s1) var(--mui-s3) !important;
    border-radius: var(--mui-r-pill) !important;
    font-size: var(--mui-fs-badge);
    font-weight: 600;
    line-height: 1.35;
    white-space: nowrap;
}

/* ---- action buttons in the Ενέργεια column ---- */
.modern-submissions .tableCellColumn {
    flex-direction: column;
    gap: var(--mui-s2);
    padding: 0 var(--mui-s2) !important;
}
.modern-submissions .tableCellColumn .esgdefaultbutton,
.modern-submissions .tableCellColumn .esgmainbutton,
.modern-submissions .tableCellColumn a.esgmainbutton {
    -webkit-text-fill-color: initial !important;
    -webkit-background-clip: initial !important;
    background-clip: initial !important;
    color: var(--mui-blue) !important;
    background: var(--mui-blue-soft) !important;
    border: 1px solid rgba(0, 99, 155, 0.18) !important;
    border-radius: var(--mui-r-ctl) !important;
    box-shadow: none !important;
    width: 100% !important;
    min-width: 0 !important;
    height: var(--mui-control-h) !important;
    min-height: var(--mui-control-h);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 0 var(--mui-s3) !important;
    font-size: var(--mui-fs-body) !important;
    font-weight: 600;
    line-height: 1.1;
    text-decoration: none;
    transition: background .2s var(--mui-ease), border-color .2s var(--mui-ease),
                transform .15s var(--mui-ease), box-shadow .2s var(--mui-ease);
}
.modern-submissions .tableCellColumn .esgdefaultbutton img,
.modern-submissions .tableCellColumn .esgmainbutton img { height: 16px !important; }

.modern-submissions .tableCellColumn .esgdefaultbutton:hover,
.modern-submissions .tableCellColumn .esgmainbutton:hover,
.modern-submissions .tableCellColumn a.esgmainbutton:hover {
    background: var(--mui-blue-soft-2) !important;
    border-color: var(--mui-blue) !important;
    transform: translateY(-1px);
    box-shadow: var(--mui-shadow-soft) !important;
}
/* green emphasis for report / send links */
.modern-submissions .tableCellColumn a.esgmainbutton {
    color: var(--mui-green) !important;
    background: var(--mui-green-soft) !important;
    border-color: rgba(0, 170, 125, 0.22) !important;
}
.modern-submissions .tableCellColumn a.esgmainbutton:hover {
    background: rgba(0, 170, 125, 0.18) !important;
    border-color: var(--mui-green) !important;
}

/* ---- unified inline row actions: labeled primary + compact icon-only secondaries ---- */
.modern-submissions .tableCellColumn .mui-act-btn { gap: 7px; }
.modern-submissions .tableCellColumn .mui-act-btn .mui-act-ic { flex: 0 0 auto; }
/* secondary actions = compact icon tiles with a tiny caption beneath, sharing one short row
   under the primary. Every action stays visible/labeled without wrapping or adding height.
   The full description is still on hover (title=). */
.submissionsBodyContainerAdmin .tableCellColumn .mui-act-btn:not(.mui-act-primary) {
    flex: 1 1 0;
    min-width: 0;
    flex-direction: column;
    justify-content: center;
    gap: 3px !important;
    padding: 6px 4px !important;
    min-height: 44px;
    line-height: 1;
}
.submissionsBodyContainerAdmin .tableCellColumn .mui-act-btn:not(.mui-act-primary) .mui-act-ic { width: 17px; height: 17px; }
.submissionsBodyContainerAdmin .tableCellColumn .mui-act-btn:not(.mui-act-primary) > span {
    font-size: 9px;
    font-weight: 600;
    letter-spacing: -.2px;
    line-height: 1;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* primary (View / Audit / Resume): solid, emphasised, spans the full action grid */
.modern-submissions .tableCellColumn .mui-act-primary {
    color: #fff !important;
    background: var(--mui-blue) !important;
    border-color: var(--mui-blue) !important;
    box-shadow: 0 1px 3px rgba(0, 99, 155, 0.18) !important;
}
.modern-submissions .tableCellColumn .mui-act-primary:hover {
    color: #fff !important;
    background: #084d72 !important;
    border-color: #084d72 !important;
    transform: translateY(-1px);
}
/* verify: positive / green accent */
.modern-submissions .tableCellColumn .mui-act-verify {
    color: var(--mui-green) !important;
    background: var(--mui-green-soft) !important;
    border-color: rgba(0, 170, 125, 0.22) !important;
}
.modern-submissions .tableCellColumn .mui-act-verify:hover {
    background: rgba(0, 170, 125, 0.18) !important;
    border-color: var(--mui-green) !important;
}
/* span the full width of the 2-up admin action grid */
.submissionsBodyContainerAdmin .row[class*="pt-2"] > .tableCellColumn > .mui-act-span { grid-column: 1 / -1; }

/* ---- combined per-row action control: sleek split button (primary + ⋮ more) ---- */
/* one cohesive split pill: primary action + ⋮ kebab as its right half */
.modern-submissions .mui-action-cell {
    display: inline-flex;
    align-items: stretch;
    width: 100%;
    max-width: 230px;
    border-radius: 999px;
    box-shadow: 0 1px 3px rgba(0, 99, 155, 0.18);
    overflow: hidden;
}
/* inside the admin grid the actions column is a 2-up grid — let the split button span it */
.submissionsBodyContainerAdmin .tableCellColumn .mui-action-cell {
    grid-column: 1 / -1;
    max-width: none;
}
.modern-submissions .mui-action-cell:empty { display: none; box-shadow: none; }
/* primary action = left segment, grows to fill, square inner (right) corners */
.submissionsBodyContainerAdmin .tableCellColumn .mui-action-cell .esgdefaultbutton,
.submissionsBodyContainerAdmin .tableCellColumn .mui-action-cell .esgmainbutton,
.submissionsBodyContainerAdmin .tableCellColumn .mui-action-cell a.esgmainbutton {
    flex: 1 1 auto;
    width: auto !important;
    min-width: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    border-top-right-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
}
/* ⋮ "more" toggle — the right half of the pill, sharing the primary's blue */
.modern-submissions .mui-action-cell .mui-action-dd {
    display: flex !important;   /* beat Bootstrap .d-inline so the kebab can stretch */
    align-items: stretch;
    flex: 0 0 auto;
}
.modern-submissions .mui-action-more {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    align-self: stretch;
    width: 40px;
    padding: 0;
    border: none;
    background: var(--mui-blue);
    color: #fff;
    cursor: pointer;
    position: relative;
    transition: background .2s var(--mui-ease);
}
.modern-submissions .mui-action-more svg { display: block; opacity: .92; }
.modern-submissions .mui-action-more:hover,
.modern-submissions .mui-action-more[aria-expanded="true"] { background: #084d72; }
.modern-submissions .mui-action-more:hover svg { opacity: 1; }
/* hairline divider between the two halves */
.modern-submissions .mui-action-cell .mui-action-more::before {
    content: "";
    position: absolute;
    left: 0; top: 20%; bottom: 20%;
    width: 1px;
    background: rgba(255, 255, 255, 0.28);
}
/* alert (missing signed report): a small amber dot, not a clashing orange box */
.modern-submissions .mui-action-more-alert::after {
    content: "";
    position: absolute;
    top: 5px; right: 7px;
    width: 7px; height: 7px;
    border-radius: 50%;
    background: #f6a821;
    box-shadow: 0 0 0 2px var(--mui-blue);
}
/* no secondary menu -> the primary fills and rounds both ends */
.modern-submissions .mui-action-cell:not(:has(.mui-action-dd)) .esgdefaultbutton,
.modern-submissions .mui-action-cell:not(:has(.mui-action-dd)) .esgmainbutton,
.modern-submissions .mui-action-cell:not(:has(.mui-action-dd)) a.esgmainbutton {
    border-radius: 999px !important;
}
/* ---- sleek action dropdown menu ---------------------------------------- */
.mui-action-menu.dropdown-menu {
    min-width: 226px !important;
    border: 1px solid var(--mui-line) !important;
    border-radius: 14px !important;
    box-shadow: 0 12px 34px rgba(20, 45, 70, .18), 0 2px 8px rgba(20, 45, 70, .08) !important;
    padding: 6px !important;
    margin: 0 !important;
    background: #fff !important;
    overflow: hidden;
}
/* when open we lift the menu out of the clipping scroll container onto <body> */
.mui-action-menu.mui-action-menu--floating {
    position: fixed !important;
    z-index: 4000 !important;
    animation: muiActionMenuIn .13s var(--mui-ease);
}
@keyframes muiActionMenuIn {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}
.mui-action-menu li { list-style: none; }
.mui-action-menu .mui-action-menu-head {
    padding: 4px 10px 7px;
    margin-bottom: 4px;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: #93a1b0;
    border-bottom: 1px solid rgba(20, 45, 70, .07);
}
/* every menu action is a clean icon + label row */
.mui-action-menu .mui-action-item {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 9px 11px;
    border: none;
    border-radius: 9px;
    background: transparent;
    color: #44525f;
    font-size: 13.5px;
    font-weight: 600;
    line-height: 1.2;
    text-align: left;
    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;
    transition: background .14s var(--mui-ease), color .14s var(--mui-ease);
}
.mui-action-menu .mui-action-item > span { flex: 1 1 auto; }
.mui-action-menu .mui-action-item .mui-action-ic {
    flex: 0 0 auto;
    color: #8595a4;
    transition: color .14s var(--mui-ease);
}
.mui-action-menu .mui-action-item:hover {
    background: var(--mui-blue-soft);
    color: var(--mui-blue);
}
.mui-action-menu .mui-action-item:hover .mui-action-ic { color: var(--mui-blue); }
.mui-action-menu .mui-action-item-danger:hover {
    background: rgba(232, 84, 47, .09);
    color: #d9482a;
}
.mui-action-menu .mui-action-item-danger:hover .mui-action-ic { color: #d9482a; }
/* upload sub-panel */
.mui-action-menu .mui-action-upload { padding: 2px; }
.mui-action-menu .mui-action-upload-head {
    padding: 3px 9px 5px;
    font-size: 11px;
    font-weight: 700;
    color: #6b7885;
}
.mui-action-menu .mui-action-upload-body {
    border: 1px solid rgba(20, 45, 70, .10);
    border-radius: 10px;
    padding: 6px;
    background: #f7f9fb;
}
.mui-action-menu .mui-action-upload-status {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 1px 5px 5px;
}
.mui-action-menu .mui-action-upload-lbl { font-size: 12px; font-weight: 600; color: #44525f; }
.mui-action-menu .mui-action-upload-missing { font-size: 11px; font-weight: 700; color: #d9482a; }
.mui-action-menu .mui-action-upload-body .mui-action-item { background: #fff; }
.mui-action-menu .mui-action-upload-body .mui-action-item:hover { background: var(--mui-blue-soft); }

/* form controls in the table */
.modern-submissions .form-switch .form-check-input { cursor: pointer; }
.modern-submissions input[type="date"].form-control {
    border-radius: var(--mui-r-ctl);
    border: 1px solid var(--mui-line);
    height: var(--mui-control-h);
    font-size: var(--mui-fs-body) !important;
}

/* ===========================================================================
   2b) SPACING / TYPOGRAPHY REFINEMENTS  (v2.1)
   tighten rhythm, fix crammed headers + oversized row text, trim dead space
   =========================================================================== */

/* column headers: smaller, calmer letter-spacing, single tidy line, centered */
.modern-submissions .Tableheader,
.modern-submissions .sortButton {
    font-size: 10px !important;
    letter-spacing: .2px !important;
    line-height: 1.25 !important;
}
.modern-submissions .Tableheader {
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding-top: var(--mui-s2) !important;
    padding-bottom: var(--mui-s2) !important;
    padding-right: 6px !important;
}
.modern-submissions .sortButton { text-align: center; }

/* normalise ALL row cell text to one body size (kills the "huge" titles) */
.modern-submissions .tab-content .accordion-collapse .row[class*="pt-2"] > div {
    font-size: var(--mui-fs-body);
    line-height: 1.45;
}
/* submission + report-title cells: readable, not shouty */
.modern-submissions .tab-content .accordion-collapse .row[class*="pt-2"] > .col-1,
.modern-submissions .tab-content .accordion-collapse .row[class*="pt-2"] > .col-2 {
    font-weight: 500;
    color: var(--mui-ink);
}
.modern-submissions .tab-content .accordion-collapse .row[class*="pt-2"] b {
    font-weight: 700;
}

/* tighter, even row rhythm */
.modern-submissions .tab-content .accordion-collapse .row[class*="pt-2"] {
    padding-top: var(--mui-s3) !important;
    padding-bottom: var(--mui-s3) !important;
    margin: 0 !important;
}

/* trim dead vertical space between / inside year blocks */
.modern-submissions .accordion { margin-bottom: var(--mui-s2) !important; }
.modern-submissions .accordion-collapse > div { padding-top: 0 !important; }
.modern-submissions .accordion-collapse > div:empty,
.modern-submissions .accordion-collapse .row:empty { display: none !important; }
.modern-submissions .tab-content .tab-pane { padding-top: var(--mui-s3) !important; }

/* the cert-hash / KPI scope cells are dense data -> make them monospace-ish & small */
.modern-submissions .tab-content .accordion-collapse .row[class*="pt-2"] > div:nth-last-child(2),
.modern-submissions .tab-content .accordion-collapse .row[class*="pt-2"] .tableCellNoBorder {
    font-size: var(--mui-fs-badge);
}

/* ===========================================================================
   4) COMPACT TOP ZONE  (v2.2)
   Trim the dead space between the navbar and the submissions table.
   Scoped with :has(.modern-submissions) so ONLY the submissions page is
   affected, and nothing is hidden (a User's entity data still renders, tighter).
   =========================================================================== */

/* the stacked wrapper rows above the card (empty admin EntityData wrapper,
   the title+search toolbar, the description row) — kill top padding, trim bottom */
.dashboard-container:has(.modern-submissions) > .col-12 > .row {
    padding-top: 0 !important;
    padding-bottom: var(--mui-s2) !important;
    margin-bottom: 0 !important;
}

/* the submissions row itself should hug the toolbar */
.dashboard-container:has(.modern-submissions) > .col-12 > .row:last-child {
    padding-bottom: 0 !important;
}

/* description line under the toolbar: compact + muted */
.dashboard-container:has(.modern-submissions) > .col-12 > .row .grayText {
    font-size: var(--mui-fs-body);
    line-height: 1.4;
}

/* card breathes less at the very top now that the zone above is tighter */
.modern-submissions {
    padding-top: var(--mui-s3) !important;
    margin-top: var(--mui-s2);
}

/* status-counter row + tabs sit closer to the card top */
.modern-submissions > .row:first-child .pt-2,
.modern-submissions > .row > .col-12 > .row.pt-2 {
    padding-top: 0 !important;
}
.modern-submissions .nav-tabs {
    margin-top: var(--mui-s2);
}

/* the search / "save table" toolbar controls: consistent height & alignment */
.dashboard-container:has(.modern-submissions) .dashboard-search-text-unselected-border {
    height: var(--mui-control-h);
    border-radius: var(--mui-r-ctl);
    border: 1px solid var(--mui-line);
    padding: 0 var(--mui-s3);
}
.dashboard-container:has(.modern-submissions) .p2QuickFilterButton {
    height: var(--mui-control-h);
    display: inline-flex;
    align-items: center;
    border-radius: var(--mui-r-ctl);
}

/* ===========================================================================
   5) MAJOR REDESIGN  (v3)  — adopt the gradient-glass / card language
   =========================================================================== */

:root {
    --mui-grad-nav: linear-gradient(95deg, #1f6fb2 0%, #1aa3b5 52%, #2fd6a6 100%);
    --mui-grad-brand: linear-gradient(135deg, #00639B 0%, #00AA7D 100%);
    --mui-canvas: linear-gradient(180deg, #eaf2fb 0%, #f5f9fc 38%, #eafaf4 100%);
}

/* ---- soft gradient canvas behind everything (scoped to this page) ---- */
body:has(.modern-submissions) { background: var(--mui-canvas) !important; }
body:has(.modern-submissions) .dashboard-container { background: transparent !important; }

/* ---- NAVBAR -> vibrant gradient glass (overlay bypasses the inline bg) ---- */
header.natura-map-header {
    overflow: visible;
    isolation: isolate;
}
header.natura-map-header::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: var(--mui-grad-nav);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
    z-index: 0;
    pointer-events: none;
}
header.natura-map-header > * { position: relative; z-index: 1; }

/* nav items: white text, glass hover/active pills on the gradient */
header.natura-map-header .header-nav-item button,
header.natura-map-header .header-nav-item .tabChoicep2Extented {
    color: #ffffff !important;
    text-shadow: 0 1px 1px rgba(0, 0, 0, 0.08);
}
header.natura-map-header .header-nav-item:hover {
    background: rgba(255, 255, 255, 0.18);
    border-color: rgba(255, 255, 255, 0.28);
}
header.natura-map-header .header-nav-item.active {
    background: rgba(255, 255, 255, 0.24);
    border-color: rgba(255, 255, 255, 0.45);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2), 0 4px 12px rgba(0, 0, 0, 0.08);
}

/* ---- PAGE TITLE block: large heading like the reference ---- */
.dashboard-container:has(.modern-submissions) > .col-12 > .row .blueText {
    font-size: 26px !important;
    font-weight: 800 !important;
    color: #1f3344 !important;
    letter-spacing: -.3px;
    display: flex;
    align-items: center;
    gap: var(--mui-s3);
}
.dashboard-container:has(.modern-submissions) > .col-12 > .row .blueText img {
    height: 34px !important;
    padding: 7px;
    border-radius: 12px;
    background: var(--mui-grad-brand);
    box-shadow: 0 6px 16px rgba(0, 99, 155, 0.28);
}
/* subtitle (the description line) reads as a supporting caption */
.dashboard-container:has(.modern-submissions) > .col-12 > .row .grayText {
    font-size: 14px;
    color: var(--mui-ink-soft);
}

/* ---- the submissions surface becomes the page canvas, not a boxed card ---- */
.modern-submissions {
    background: transparent !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    border: none !important;
    box-shadow: none !important;
    padding: var(--mui-s2) var(--mui-s2) var(--mui-s4) !important;
}

/* ---- status counters -> a glass toolbar cluster ---- */
.modern-submissions .documentStatusUnderReview,
.modern-submissions .documentStatusSubmitted,
.modern-submissions .documentStatusClarification,
.modern-submissions .documentStatusVerified,
.modern-submissions .documentStatusRejected {
    /* No backdrop-filter here on purpose: this element repeats down the page, and a blurred
       backdrop must be re-sampled per element on every scroll frame — with one per row that
       overruns the compositor and the page visibly flickers while scrolling. The background
       below is opaque enough to read the same against the page. Keep blur for single
       floating surfaces (navbar, modals, dropdowns), never for list items. */
}

/* ---- category tabs -> segmented pill control ---- */
.modern-submissions .nav-tabs {
    border-bottom: none !important;
    background: rgba(255, 255, 255, 0.6);
    backdrop-filter: var(--mui-glass-blur);
    -webkit-backdrop-filter: var(--mui-glass-blur);
    border: var(--mui-glass-border);
    border-radius: var(--mui-r-pill);
    padding: 5px;
    gap: 4px;
    display: inline-flex;
    box-shadow: var(--mui-shadow-soft);
    width: auto;
}
.modern-submissions .nav-tabs .nav-link {
    border-radius: var(--mui-r-pill) !important;
    margin-bottom: 0 !important;
    padding: 8px 20px !important;
}
.modern-submissions .nav-tabs .nav-link.active {
    background: var(--mui-grad-brand) !important;
    color: #fff !important;
    border-bottom: none !important;
    box-shadow: 0 6px 16px rgba(0, 99, 155, 0.26);
}
.modern-submissions .nav-tabs .nav-link:hover:not(.active) { background: var(--mui-blue-soft); }
/* branded tabs carry an inline !important background, which kills the background hover above —
   filter is never set inline, so it survives any brand colour (darken works on light and dark). */
.modern-submissions .nav-tabs .nav-link.mui-tab-branded { transition: filter .2s var(--mui-ease), box-shadow .2s var(--mui-ease); }
.modern-submissions .nav-tabs .nav-link.mui-tab-branded:hover:not(.active) {
    filter: brightness(.9) saturate(1.08);
    box-shadow: 0 2px 8px rgba(15, 43, 60, 0.18);
}

/* ---- column header row: lift it onto a subtle strip ---- */
.modern-submissions .Tableheader {
    border-bottom: none !important;
}
.modern-submissions > .row .Tableheader:first-child,
.modern-submissions .text-center.Tableheader {
    /* keep header readable above the cards */
}

/* ---- YEAR section header -> rounded glass bar (like "2025 · Open") ---- */
.modern-submissions .accordion-header .row {
    background: var(--mui-glass-bg-strong) !important;
    /* No backdrop-filter here on purpose: this element repeats down the page, and a blurred
       backdrop must be re-sampled per element on every scroll frame — with one per row that
       overruns the compositor and the page visibly flickers while scrolling. The background
       below is opaque enough to read the same against the page. Keep blur for single
       floating surfaces (navbar, modals, dropdowns), never for list items. */
    border: var(--mui-glass-border) !important;
    border-radius: var(--mui-r-card) !important;
    padding: var(--mui-s2) var(--mui-s4) !important;
    margin-bottom: var(--mui-s3) !important;
    box-shadow: var(--mui-shadow-soft) !important;
}
.modern-submissions .p2DashboardYearLabel {
    font-size: 15px !important;
    padding: 6px 18px !important;
}

/* ---- DATA ROWS -> floating cards ---- */
.modern-submissions .tab-content .accordion-collapse .row[class*="pt-2"] {
    background: rgba(255, 255, 255, 0.94) !important;
    /* No backdrop-filter here on purpose: this element repeats down the page, and a blurred
       backdrop must be re-sampled per element on every scroll frame — with one per row that
       overruns the compositor and the page visibly flickers while scrolling. The background
       below is opaque enough to read the same against the page. Keep blur for single
       floating surfaces (navbar, modals, dropdowns), never for list items. */
    border: 1px solid rgba(255, 255, 255, 0.7) !important;
    border-radius: var(--mui-r-card) !important;
    box-shadow: var(--mui-shadow-soft) !important;
    margin: 0 0 var(--mui-s2) 0 !important;
    padding: 11px var(--mui-s4) 11px var(--mui-s4) !important;
    overflow: hidden;
    position: relative;
}
.modern-submissions .tab-content .accordion-collapse .row[class*="pt-2"]:hover {
    background: rgba(255, 255, 255, 0.95) !important;
    box-shadow: var(--mui-shadow) !important;
    transform: translateY(-1px);
}
/* the thin server-rendered status sliver -> a rounded status accent on the card */
.modern-submissions .tab-content .accordion-collapse .row[class*="pt-2"] > div[style*="position:absolute"][style*="width:3px"] {
    width: 5px !important;
    left: 0 !important;
    border-radius: 0 4px 4px 0;
}

/* ---- KPI scope cell: tabular, labelled ---- */
.modern-submissions .tab-content .accordion-collapse .row[class*="pt-2"] .tableCellNoBorder {
    font-variant-numeric: tabular-nums;
}

/* ---- ACTION buttons: keep stacked, add a primary gradient for view ---- */
.modern-submissions .tableCellColumn .esgdefaultbutton {
    background: var(--mui-grad-brand) !important;
    color: #fff !important;
    border: none !important;
    box-shadow: 0 4px 12px rgba(0, 99, 155, 0.22) !important;
}
.modern-submissions .tableCellColumn .esgdefaultbutton:hover {
    filter: brightness(1.05);
    transform: translateY(-1px);
    box-shadow: 0 8px 18px rgba(0, 99, 155, 0.3) !important;
}

/* ---- search / filter toolbar -> glass pills like the reference ---- */
.dashboard-container:has(.modern-submissions) .p2QuickFilterButton,
.dashboard-container:has(.modern-submissions) .dashboard-search-text-unselected-border {
    background: rgba(255, 255, 255, 0.7) !important;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: var(--mui-glass-border) !important;
    box-shadow: var(--mui-shadow-soft);
}

/* ===========================================================================
   6) CO2 EMISSION DONUT  (v3.1)  — the signature viz from the reference,
   rendered inside the KPIs cell from the Scope 1 / Scope 2 / Total values.
   =========================================================================== */

:root {
    --mui-s1col: #00AA7D;   /* Scope 1 */
    --mui-s2col: #F5A623;   /* Scope 2 */
}

.modern-submissions .mui-kpi-cell {
    display: flex !important;
    align-items: center;
    justify-content: center;
    padding: 0 6px !important;
}

.mui-emission {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 4px;
    width: 100%;
    min-width: 0;
}

/* total emissions headline */
.mui-total {
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 4px;
}
.mui-total-num {
    font-size: 15px;
    font-weight: 800;
    color: var(--mui-ink);
    letter-spacing: -.3px;
    line-height: 1;
}
.mui-total-unit {
    font-size: 9px;
    font-weight: 600;
    color: var(--mui-ink-soft);
    text-transform: uppercase;
    letter-spacing: .3px;
}
/* the "how was this calculated" note used to live only in an invisible title
   attribute on the whole cell — nothing on screen hinted it was hoverable.
   A small always-visible glyph makes the tooltip discoverable. */
.mui-info-ic {
    font-size: 10px;
    color: var(--mui-ink-soft);
    cursor: help;
    opacity: .75;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 6px;
    margin: -6px;
}
.mui-info-ic:hover { opacity: 1; color: var(--mui-blue); }
/* Custom tooltip, driven by data-tip — the native `title` attribute alone was unreliable here (the
   ~1s browser delay is easy to lose the hover before it fires, and there's no styling control), so
   this renders instantly on hover/focus instead of depending on it. `title` is left in place too, as
   a plain-text fallback for anything that reads attributes rather than rendering CSS (e.g. a11y tools). */
.mui-info-ic { position: relative; }
.mui-info-ic::after {
    content: attr(data-tip);
    position: absolute; left: 50%; bottom: calc(100% + 8px); transform: translate(-50%, 4px);
    background: #0B1220; color: #fff; font-size: 11.5px; font-weight: 600; line-height: 1.4;
    white-space: nowrap; padding: 7px 11px; border-radius: 8px;
    box-shadow: 0 14px 30px -12px rgba(16,40,70,.5);
    opacity: 0; visibility: hidden; pointer-events: none; z-index: 60;
    transition: opacity .12s ease, transform .12s ease;
}
.mui-info-ic::before {
    content: ""; position: absolute; left: 50%; bottom: calc(100% + 3px); transform: translateX(-50%);
    border: 5px solid transparent; border-top-color: #0B1220;
    opacity: 0; visibility: hidden; pointer-events: none; z-index: 60; transition: opacity .12s ease;
}
.mui-info-ic:hover::after, .mui-info-ic:focus-visible::after { opacity: 1; visibility: visible; transform: translate(-50%, 0); }
.mui-info-ic:hover::before, .mui-info-ic:focus-visible::before { opacity: 1; visibility: visible; }

/* stacked proportion bar — scales to any magnitude, tiny scopes stay visible */
.mui-bar {
    display: flex;
    width: 100%;
    height: 7px;
    border-radius: 999px;
    overflow: hidden;
    background: #e6ebf1;
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.03);
}
.mui-bar-seg { display: block; height: 100%; }
.mui-bar-s1 { background: var(--mui-s1col); }
.mui-bar-s2 { background: var(--mui-s2col); }

/* scope legend */
.mui-scopes {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.mui-scope {
    display: flex;
    align-items: center;
    gap: 5px;
    font-size: 10px;
    line-height: 1.25;
    color: var(--mui-ink-soft);
    white-space: nowrap;
}
.mui-scope .mui-scope-l { flex: 0 0 auto; font-weight: 600; }
.mui-scope b {
    margin-left: auto;
    color: var(--mui-ink);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}
.mui-scope i {
    font-style: normal;
    color: var(--mui-ink-soft);
    min-width: 30px;
    text-align: right;
}
.mui-dot { width: 8px; height: 8px; border-radius: 50%; flex: 0 0 auto; }
.mui-dot-s1 { background: var(--mui-s1col); }
.mui-dot-s2 { background: var(--mui-s2col); }

/* minimal per-submission "recalculate KPIs" affordance, tucked under the scope lines */
.mui-recalc-link {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-top: 5px;
    padding: 1px 2px;
    border: 0;
    background: transparent;
    color: var(--mui-ink-soft);
    font-size: 9.5px;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: .1px;
    cursor: pointer;
    opacity: .62;
    transition: opacity .12s ease, color .12s ease;
}
.mui-recalc-link svg { flex: 0 0 auto; opacity: .9; }
.mui-recalc-link:hover { opacity: 1; color: var(--mui-blue); }
.mui-recalc-link:active { transform: translateY(.5px); }

/* flags a submission whose Scope 1/2/Total was manually corrected via Emissions Reconciliation —
   Recalculate silently leaves these numbers untouched, so this needs to be visible, not implicit. */
.mui-override-badge {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    margin-bottom: 3px;
    padding: 1px 6px;
    border-radius: 8px;
    background: #fff4e0;
    color: #9a6400;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: .1px;
    line-height: 1.5;
    cursor: help;
}
.mui-override-badge svg { flex: 0 0 auto; }
.mui-recalc-link.is-busy { opacity: .5; pointer-events: none; }
.mui-recalc-link.is-busy svg { animation: mui-recalc-spin .8s linear infinite; }
@keyframes mui-recalc-spin { to { transform: rotate(360deg); } }

/* brief highlight of the scope cell after an inline recalc updates its numbers */
.mui-kpi-cell.mui-kpi-flash { animation: mui-kpi-flash-anim .9s ease; }
@keyframes mui-kpi-flash-anim {
    0% { background: rgba(15, 138, 126, .18); }
    100% { background: transparent; }
}

/* small transient toast for the inline recalc */
.mui-recalc-toast {
    position: fixed;
    left: 50%;
    bottom: 26px;
    transform: translateX(-50%) translateY(14px);
    z-index: 4000;
    max-width: 420px;
    padding: 9px 16px;
    border-radius: 9px;
    background: #12303a;
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: .1px;
    box-shadow: 0 10px 30px -10px rgba(0, 0, 0, .5);
    opacity: 0;
    pointer-events: none;
    visibility: hidden;
    transition: opacity .18s ease, transform .18s ease, visibility .18s;
}
.mui-recalc-toast::before {
    content: "✓";
    margin-right: 8px;
    font-weight: 800;
    color: #35d0a5;
}
.mui-recalc-toast.err { background: #5a1d1d; }
.mui-recalc-toast.err::before { content: "!"; color: #ff9b9b; }
.mui-recalc-toast.show {
    opacity: 1;
    visibility: visible;
    transform: translateX(-50%) translateY(0);
}

/* ===========================================================================
   7) TWO-TIER SUBMISSION CARD  (v3.2)   — admin layout only
   Break the cramped 10-column row into: primary tier (type · submission ·
   company · status · emissions · actions) + secondary tier (the 3 dates +
   certification, as small labelled items). Scoped to .submissionsBodyContainerAdmin
   so User / Auditor / Investor views are untouched.
   =========================================================================== */

/* the column-header row is redundant once rows become self-labelled cards */
.modern-submissions:has(.submissionsBodyContainerAdmin) .Tableheader { display: none !important; }

/* the card grid */
.submissionsBodyContainerAdmin .row[class*="pt-2"] {
    display: grid !important;
    grid-template-columns:
        minmax(160px, 1.3fr)   /* visual 1: company (cell 3, reordered)      */
        minmax(150px, 1.3fr)   /* visual 2: submission (cell 2, reordered)   */
        minmax(110px, 0.9fr)   /* visual 3: report type / year (cell 1)      */
        minmax(100px, 0.8fr)   /* 4 status               */
        168px                  /* 5 emissions            */
        274px;                 /* 6 actions              */
    column-gap: 20px;
    row-gap: 7px;
    align-items: start;
}

/* company name is the primary identifier of a submission -> pull it to the
   front of the row, followed by the submission/submitter info, then the
   framework/year caption last */
.submissionsBodyContainerAdmin .row[class*="pt-2"] > div:nth-child(1) { order: 3; }
.submissionsBodyContainerAdmin .row[class*="pt-2"] > div:nth-child(2) { order: 2; }
.submissionsBodyContainerAdmin .row[class*="pt-2"] > div:nth-child(3) { order: 1; }
.submissionsBodyContainerAdmin .row[class*="pt-2"] > div:nth-child(4) { order: 4; }

/* neutralise bootstrap col widths / paddings inside the grid */
.submissionsBodyContainerAdmin .row[class*="pt-2"] > div {
    width: auto !important;
    max-width: none !important;
    flex: none !important;
    padding: 0 !important;
    margin: 0 !important;
    min-width: 0;
}

/* primary tier (row 1) vertically centered */
.submissionsBodyContainerAdmin .row[class*="pt-2"] > div:nth-child(-n+4) { align-self: center; }
/* an unbroken long token (email address, submission id) in these cells had no
   wrap fallback and overflowed straight across the grid's column-gap into the
   next cell instead of wrapping — this was visible as a submission's name and
   email overlapping the neighbouring "report / year" cell. */
.submissionsBodyContainerAdmin .row[class*="pt-2"] > div:nth-child(-n+4) {
    overflow-wrap: anywhere;
}

/* report type (cell 1) -> muted caption */
.submissionsBodyContainerAdmin .row[class*="pt-2"] > div:nth-child(1) {
    font-size: 12px;
    font-weight: 600;
    color: var(--mui-ink-soft);
    line-height: 1.35;
    text-align: left !important;
}
/* submission (cell 2) -> the card title */
.submissionsBodyContainerAdmin .row[class*="pt-2"] > div:nth-child(2) {
    font-size: 13.5px;
    color: var(--mui-ink);
    line-height: 1.4;
    text-align: left !important;
}
.submissionsBodyContainerAdmin .row[class*="pt-2"] > div:nth-child(2) b { font-weight: 800; }

/* emissions + actions pinned right, spanning both tiers */
.submissionsBodyContainerAdmin .row[class*="pt-2"] > .mui-kpi-cell {
    grid-column: 5;
    grid-row: 1 / span 2;
    align-self: center;
}
.submissionsBodyContainerAdmin .row[class*="pt-2"] > .tableCellColumn {
    grid-column: 6;
    grid-row: 1 / span 2;
    align-self: center;
    display: flex !important;
    flex-direction: row !important;   /* override base .tableCellColumn column direction */
    flex-wrap: wrap;                  /* primary on its own row; the compact icon actions flow below it */
    gap: 6px;
    align-content: center;
    justify-content: flex-start;
    min-width: 0;
    overflow: hidden;
}
/* the primary action + the attachment chip take a full row of their own */
.submissionsBodyContainerAdmin .row[class*="pt-2"] > .tableCellColumn > .mui-act-span,
.submissionsBodyContainerAdmin .row[class*="pt-2"] > .tableCellColumn > [id$="_preview"] {
    flex: 0 0 100%;
}
.submissionsBodyContainerAdmin .row[class*="pt-2"] > .tableCellColumn > * {
    max-width: 100% !important;
    margin: 0 !important;
    min-width: 0;
}
/* primary + preview fill their row; every other action is a compact square icon button */
.submissionsBodyContainerAdmin .row[class*="pt-2"] > .tableCellColumn > .mui-act-span,
.submissionsBodyContainerAdmin .row[class*="pt-2"] > .tableCellColumn > [id$="_preview"] {
    width: 100% !important;
}
/* action buttons: roomy single-line pills in the single-column action list */
.submissionsBodyContainerAdmin .tableCellColumn .esgdefaultbutton,
.submissionsBodyContainerAdmin .tableCellColumn .esgmainbutton,
.submissionsBodyContainerAdmin .tableCellColumn a.esgmainbutton {
    height: auto !important;
    min-height: 36px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    text-align: center;
    line-height: 1.2;
    padding: 8px 13px !important;
}
/* report attachment -> small, minimal file chip (one box, tiny type icon) */
.submissionsBodyContainerAdmin .tableCellColumn [id$="_preview"] {
    display: block !important;
    width: 100% !important;
    min-width: 0;
}
.submissionsBodyContainerAdmin .tableCellColumn .uploadedFile {
    width: 100% !important;
    height: 26px !important;
    display: flex !important;
    align-items: center;
    border: 1px solid var(--mui-line) !important;
    border-radius: 8px !important;
    background-color: #fff;
    background-size: auto 14px !important;       /* shrink the file-type icon */
    background-position: 9px center !important;
    transition: background-color .2s var(--mui-ease), border-color .2s var(--mui-ease);
}
.submissionsBodyContainerAdmin .tableCellColumn .uploadedFile:hover {
    border-color: var(--mui-blue) !important;
    background-color: var(--mui-blue-soft);
}
.submissionsBodyContainerAdmin .tableCellColumn .uploadedFileInner {
    position: static !important;
    left: 0 !important;
    width: auto !important;
    flex: 1 1 auto;
    min-width: 0;
    line-height: 1 !important;
    padding: 0 8px 0 30px !important;     /* leave room for the icon */
    overflow: hidden;
}
.submissionsBodyContainerAdmin .tableCellColumn .uploadedFileInner a {
    display: block;
    font-size: 10.5px;
    font-weight: 600;
    color: var(--mui-blue);
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* secondary tier (row 2): the labelled meta items */
.submissionsBodyContainerAdmin .row[class*="pt-2"] > .mui-meta {
    grid-row: 2;
    display: flex !important;
    flex-direction: column;
    align-items: flex-start !important;
    justify-content: flex-start !important;
    gap: 1px;
    text-align: left !important;
    font-size: 11px !important;
    line-height: 1.25;
    color: var(--mui-ink);
}
.mui-meta-lbl {
    font-size: 8px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .4px;
    color: var(--mui-ink-soft);
    line-height: 1;
}
.submissionsBodyContainerAdmin .mui-meta-cert {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 10.5px;
    word-break: break-all;
}
.submissionsBodyContainerAdmin .mui-meta-cert .mui-meta-lbl { font-family: inherit; }

/* a hairline separating the two tiers */
.submissionsBodyContainerAdmin .row[class*="pt-2"] > .mui-meta {
    border-top: 1px solid var(--mui-line);
    padding-top: 5px !important;
    margin-top: 0 !important;
}

/* the row's minimum width is the sum of its column minmax()/fixed tracks —
   160+150+110+100+168+274px plus 5x20px gaps, ~1060px — so anything narrower
   than that (a smaller window, a laptop split-screen, a tablet) can't shrink
   the grid any further and it overflows. Below that, drop to a single column
   and let every cell stack as a readable card instead. */
@media (max-width: 1100px) {
    .submissionsBodyContainerAdmin .row[class*="pt-2"] {
        grid-template-columns: 1fr !important;
        row-gap: 4px;
    }
    .submissionsBodyContainerAdmin .row[class*="pt-2"] > div:nth-child(-n+4),
    .submissionsBodyContainerAdmin .row[class*="pt-2"] > .mui-meta,
    .submissionsBodyContainerAdmin .row[class*="pt-2"] > .mui-kpi-cell,
    .submissionsBodyContainerAdmin .row[class*="pt-2"] > .tableCellColumn {
        grid-column: 1 !important;
        grid-row: auto !important;
        align-self: start !important;
        width: 100%;
    }
    .submissionsBodyContainerAdmin .row[class*="pt-2"] > .mui-meta {
        flex-direction: row !important;
        justify-content: space-between;
        border-top: none;
        padding-top: 0 !important;
    }
    .submissionsBodyContainerAdmin .row[class*="pt-2"] > .tableCellColumn {
        margin-top: 6px;
    }
    /* the meta/kpi/action cells rely on the desktop grid's explicit grid-row
       to land in the right visual tier and are left at the default order:0,
       lower than the primary tier's order:1-4 — stacked in a single column
       that default put them ahead of the company/name/status cells they're
       meant to follow. Push them after it, in their natural reading order. */
    .submissionsBodyContainerAdmin .row[class*="pt-2"] > .mui-meta { order: 5; }
    .submissionsBodyContainerAdmin .row[class*="pt-2"] > .mui-kpi-cell { order: 6; }
    .submissionsBodyContainerAdmin .row[class*="pt-2"] > .tableCellColumn { order: 7; }
}

/* ---- verifier (Auditor) list: same modern grid + a couple of role-specific touches ---- */
/* Decline is a negative action — set it apart from the neutral-blue action pills (amber caution). */
.submissionsBodyContainerAuditor .tableCellColumn .esgdefaultbutton.mui-decline-btn {
    color: #b45309 !important;
    background: rgba(245, 158, 11, 0.12) !important;
    border: 1px solid rgba(245, 158, 11, 0.30) !important;
}
.submissionsBodyContainerAuditor .tableCellColumn .esgdefaultbutton.mui-decline-btn:hover {
    color: #92400e !important;
    background: rgba(245, 158, 11, 0.20) !important;
    border-color: #f59e0b !important;
}
/* the verifier rarely has a 2nd action, so a single button shouldn't be squeezed to half width */
.submissionsBodyContainerAuditor .row[class*="pt-2"] > .tableCellColumn { grid-template-columns: 1fr; }

/* ===========================================================================
   8) ACTION BUTTONS — full redesign (v3.3)   admin layout only
   One bold primary (View) gradient pill + clean outline/ghost pills for the
   rest, with color-coded hover (blue = copy, green = report/send group).
   =========================================================================== */

.submissionsBodyContainerAdmin .tableCellColumn .esgdefaultbutton,
.submissionsBodyContainerAdmin .tableCellColumn .esgmainbutton,
.submissionsBodyContainerAdmin .tableCellColumn a.esgmainbutton {
    -webkit-text-fill-color: initial !important;
    -webkit-background-clip: border-box !important;
    background-clip: border-box !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    gap: 6px;
    width: 100% !important;
    min-height: 28px;
    height: auto !important;
    padding: 4px 11px !important;
    border-radius: 999px !important;
    font-size: 12px !important;
    font-weight: 600;
    line-height: 1.1;
    letter-spacing: .1px;
    white-space: normal !important;
    text-align: center;
    text-decoration: none;
    cursor: pointer;
    box-shadow: none !important;
    transition: transform .18s var(--mui-ease), box-shadow .2s var(--mui-ease),
                background .2s var(--mui-ease), border-color .2s var(--mui-ease), color .2s var(--mui-ease);
}

/* PRIMARY — View */
.submissionsBodyContainerAdmin .tableCellColumn .esgdefaultbutton {
    background: var(--mui-blue) !important;
    color: #fff !important;
    border: none !important;
    box-shadow: 0 1px 3px rgba(0, 99, 155, 0.18) !important;
}
.submissionsBodyContainerAdmin .tableCellColumn .esgdefaultbutton:hover {
    background: var(--mui-blue) !important;
    box-shadow: 0 3px 8px rgba(0, 99, 155, 0.22) !important;
}
.submissionsBodyContainerAdmin .tableCellColumn .esgdefaultbutton:active {
    background: var(--mui-blue) !important;
    box-shadow: 0 1px 3px rgba(0, 99, 155, 0.2) !important;
}
.submissionsBodyContainerAdmin .tableCellColumn .esgdefaultbutton img {
    height: 13px !important;
    filter: brightness(0) invert(1);
}

/* SECONDARY — copy / report / send : one clean, neutral outline style */
.submissionsBodyContainerAdmin .tableCellColumn .esgmainbutton,
.submissionsBodyContainerAdmin .tableCellColumn a.esgmainbutton {
    background: #fff !important;
    color: #46535f !important;
    border: 1px solid #e1e8ef !important;
}
.submissionsBodyContainerAdmin .tableCellColumn .esgmainbutton:hover,
.submissionsBodyContainerAdmin .tableCellColumn a.esgmainbutton:hover {
    background: #f5f8fb !important;
    border-color: #c6d2de !important;
    color: var(--mui-ink) !important;
    transform: translateY(-1px);
    box-shadow: 0 3px 9px rgba(16, 42, 67, 0.08) !important;
}
.submissionsBodyContainerAdmin .tableCellColumn .esgmainbutton:active,
.submissionsBodyContainerAdmin .tableCellColumn a.esgmainbutton:active {
    transform: translateY(0);
    box-shadow: none !important;
    background: #eef3f8 !important;
}

/* delete / small icon action stays subtle & circular */
.submissionsBodyContainerAdmin .tableCellColumn .esgsmallbutton {
    -webkit-text-fill-color: initial !important;
    width: 28px !important;
    height: 28px !important;
    min-height: 28px;
    align-self: center;
    border-radius: 999px !important;
    background: #fff !important;
    border: 1.5px solid var(--mui-line) !important;
    box-shadow: none !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    transition: all .2s var(--mui-ease);
}
.submissionsBodyContainerAdmin .tableCellColumn .esgsmallbutton:hover {
    border-color: #e23b3b !important;
    background: rgba(226, 59, 59, 0.06) !important;
}

/* ===========================================================================
   9) USE THE VERTICAL SPACE  (v3.4)  — taller list + compact top
   =========================================================================== */

/* the list was capped at ~55vh (100vh - 10vh header - 20vh footer - 15vh).
   let it run down close to the footer instead of stopping above the wave. */
.submissionsBodyContainerAdmin {
    height: calc(100vh - var(--headerHeight) - 178px) !important;
    max-height: none !important;
    padding-bottom: 10px;
}

/* --- compact top zone --- */

/* page title: smaller + tighter */
.dashboard-container:has(.modern-submissions) > .col-12 > .row .blueText {
    font-size: 21px !important;
    gap: 10px;
}
.dashboard-container:has(.modern-submissions) > .col-12 > .row .blueText img {
    height: 26px !important;
    padding: 6px !important;
    border-radius: 10px;
}
/* description caption: smaller, tighter */
.dashboard-container:has(.modern-submissions) > .col-12 > .row .grayText {
    font-size: 12.5px;
    line-height: 1.3;
}
/* card + tabs + counters hug the top */
.modern-submissions {
    padding-top: 4px !important;
    margin-top: 2px;
}
.modern-submissions .nav-tabs {
    margin-top: 6px;
    margin-bottom: 6px;
}
.modern-submissions .documentStatusUnderReview,
.modern-submissions .documentStatusSubmitted,
.modern-submissions .documentStatusClarification,
.modern-submissions .documentStatusVerified,
.modern-submissions .documentStatusRejected { height: 26px; }

/* the year accordion header bars: a touch tighter */
.modern-submissions .accordion-header .row {
    padding: 6px 14px !important;
    margin-bottom: 10px !important;
}
.modern-submissions .accordion { margin-bottom: 6px !important; }

/* the submission cards live in a wrapper with padding-right:2rem, but the year
   header bar does not -> inset the header bar by the same 2rem so they align */
.submissionsBodyContainerAdmin .accordion-header .row {
    margin-right: 2rem !important;
}

/* ===========================================================================
   10) ONE SLEEK SCROLLBAR  (v3.5)
   Kill the outer page scroll (title/tabs stay fixed) so only the list scrolls,
   then style that single scrollbar to be thin, rounded and subtle.
   =========================================================================== */

.dashboard-container:has(.modern-submissions) { overflow: hidden !important; }

/* the card carries a `dashboardp2-container` class that adds its OWN scroll —
   disable it so the inner list is the only scroll container */
.modern-submissions {
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
}

.submissionsBodyContainerAdmin {
    overflow-y: auto !important;
    scrollbar-width: thin;
    scrollbar-color: rgba(0, 99, 155, 0.30) transparent;
}
.submissionsBodyContainerAdmin::-webkit-scrollbar { width: 8px; }
.submissionsBodyContainerAdmin::-webkit-scrollbar-track { background: transparent; }
.submissionsBodyContainerAdmin::-webkit-scrollbar-thumb {
    background: rgba(0, 99, 155, 0.26);
    border-radius: 999px;
    border: 2px solid transparent;
    background-clip: padding-box;
    transition: background .2s var(--mui-ease);
}
.submissionsBodyContainerAdmin::-webkit-scrollbar-thumb:hover {
    background: rgba(0, 99, 155, 0.48);
    background-clip: padding-box;
}

/* the right sidebar (Χρήσιμο Υλικό / Ενημερώσεις) lives next to the list, but the
   page scroll is killed so its overflow was clipped — give it its own scroll. */
.dashboard-container:has(.modern-submissions) .mui-side-col {
    height: calc(100vh - var(--headerHeight) - 178px) !important;
    overflow-y: auto !important;
    overflow-x: hidden;
    padding-right: 5px !important;
    scrollbar-width: thin;
    scrollbar-color: rgba(0, 99, 155, 0.30) transparent;
}
.dashboard-container:has(.modern-submissions) .mui-side-col::-webkit-scrollbar { width: 8px; }
.dashboard-container:has(.modern-submissions) .mui-side-col::-webkit-scrollbar-track { background: transparent; }
.dashboard-container:has(.modern-submissions) .mui-side-col::-webkit-scrollbar-thumb {
    background: rgba(0, 99, 155, 0.26);
    border-radius: 999px;
    border: 2px solid transparent;
    background-clip: padding-box;
    transition: background .2s var(--mui-ease);
}
.dashboard-container:has(.modern-submissions) .mui-side-col::-webkit-scrollbar-thumb:hover {
    background: rgba(0, 99, 155, 0.48);
    background-clip: padding-box;
}

/* ===========================================================================
   11) FOOTER POLISH  (v3.6)   — refined link bar over the wave
   =========================================================================== */

/* footer wave removed — no decorative image in the footer on any page */
.bottom-logo-Container,
.bottom-logo-Container-Product1,
.bottom-logo-Container-Product2,
.bottom-logo-Container-white-Product2,
.bottom-logo-Container-custom,
.bottom-logo-Container-animation {
    background-image: none !important;
}

/* the wave used to need a tall (20vh) reserved band; with it gone, collapse the
   footer to a slim bar so it takes only the space the links need. (modern-ui.css
   loads after Observatory.css, so this --footerHeight wins.) */
:root { --footerHeight: 4vh; }
.footer-bottom {
    top: 0 !important;
    height: var(--footerHeight) !important;
    line-height: var(--footerHeight) !important;
    padding-top: 0 !important;
}

/* the link row */
.footer-bottom {
    padding-left: 2.25rem !important;
}

/* links: kill the uneven Bootstrap pl-4 (it was on every link EXCEPT the
   email one) so the uniform &nbsp; spacers become the only, even gap */
.footer-bottom a {
    color: #2f5067 !important;
    font-size: 12.5px !important;
    font-weight: 600 !important;
    letter-spacing: .1px;
    text-decoration: none !important;
    padding-left: 0 !important;
    transition: color .2s var(--mui-ease);
}
.footer-bottom a:hover {
    color: var(--mui-blue) !important;
    text-decoration: underline;
}

/* "e-Helpdesk:" label */
.footer-bottom span {
    color: #5d6f7b !important;
    font-size: 12px !important;
    font-weight: 600 !important;
}

/* ===========================================================================
   12) SUPER-FILTER BAR  (v3.8)  — compact pills + checkbox dropdowns + chips
   =========================================================================== */

.mui-filterbar {
    position: relative;
    z-index: 100; /* above the list (its accordions are confined to their own context) but below modals (1050+) */
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin: 2px 0 12px 0;
    padding: 9px 12px;
    background: var(--mui-glass-bg-strong);
    backdrop-filter: var(--mui-glass-blur);
    -webkit-backdrop-filter: var(--mui-glass-blur);
    border: var(--mui-glass-border);
    border-radius: var(--mui-r-card);
    box-shadow: var(--mui-shadow-soft);
}
/* the native multiselects are the form source-of-truth; JS draws the pills */
.mui-filterbar select.mui-filter { display: none !important; }

/* ---- filter pill button ---- */
.mui-filter-field { position: relative; flex: 0 0 auto; }
.mui-filter-pill {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    height: 32px;
    padding: 0 11px 0 14px;
    border: 1px solid var(--mui-line);
    border-radius: 999px;
    background: #fff;
    font-size: 12.5px;
    font-weight: 600;
    color: var(--mui-ink);
    cursor: pointer;
    transition: background .15s var(--mui-ease), border-color .15s var(--mui-ease), box-shadow .15s var(--mui-ease);
}
.mui-filter-pill:hover { background: #f5f8fb; border-color: #c6d2de; }
.mui-filter-pill.has-sel { border-color: rgba(0, 99, 155, 0.30); color: var(--mui-blue); }
.mui-filter-field.open .mui-filter-pill {
    border-color: var(--mui-blue);
    box-shadow: 0 0 0 3px rgba(0, 99, 155, 0.10);
}
.mui-pill-badge {
    display: none;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 999px;
    background: var(--mui-blue);
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    line-height: 18px;
    text-align: center;
}
.mui-filter-pill.has-sel .mui-pill-badge { display: inline-block; }
.mui-pill-caret { color: var(--mui-ink-soft); font-size: 9px; transition: transform .15s var(--mui-ease); }
.mui-filter-field.open .mui-pill-caret { transform: rotate(180deg); }

/* ---- dropdown panel ---- */
.mui-filter-panel {
    display: none;
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    z-index: 1200;
    width: 250px;
    background: #fff;
    border: 1px solid var(--mui-line);
    border-radius: 14px;
    box-shadow: var(--mui-shadow);
    padding: 8px;
}
.mui-filter-field.open .mui-filter-panel { display: block; }
.mui-panel-search {
    width: 100%;
    height: 32px;
    border: 1.5px solid var(--mui-blue);
    border-radius: 9px;
    padding: 0 10px 0 30px;
    font-size: 12.5px;
    color: var(--mui-ink);
    margin-bottom: 6px;
    outline: none;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2366727f' stroke-width='2.2' stroke-linecap='round'><circle cx='11' cy='11' r='7'/><line x1='21' y1='21' x2='16.65' y2='16.65'/></svg>");
    background-repeat: no-repeat;
    background-position: 9px center;
}
.mui-panel-list {
    max-height: 220px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 1px;
}
.mui-panel-opt {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 7px 9px;
    border-radius: 9px;
    font-size: 12.5px;
    color: var(--mui-ink);
    cursor: pointer;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.mui-panel-opt:hover { background: var(--mui-blue-soft); }
.mui-panel-opt span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mui-panel-opt input[type="checkbox"] {
    width: 16px;
    height: 16px;
    accent-color: var(--mui-blue);
    flex: 0 0 auto;
    cursor: pointer;
}
.mui-panel-list::-webkit-scrollbar { width: 7px; }
.mui-panel-list::-webkit-scrollbar-thumb { background: rgba(0, 99, 155, 0.22); border-radius: 999px; }

/* ---- selected chips row (below the pills) ---- */
.mui-filter-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    flex: 0 0 100%;
    order: 99;
}
.mui-filter-chips:empty { display: none; }
.mui-chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    height: 26px;
    padding: 0 4px 0 11px;
    background: var(--mui-blue-soft);
    color: var(--mui-blue);
    border: 1px solid rgba(0, 99, 155, 0.18);
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
}
.mui-chip > span {
    max-width: 240px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.mui-chip-x {
    border: none;
    background: transparent;
    color: var(--mui-blue);
    cursor: pointer;
    font-size: 15px;
    line-height: 1;
    padding: 0 5px;
    border-radius: 999px;
}
.mui-chip-x:hover { background: rgba(0, 99, 155, 0.12); color: #e23b3b; }

/* ---- date / search / sort / clear controls ---- */
.mui-filterbar .mui-filter-date,
.mui-filterbar .mui-filter-search,
.mui-filterbar .mui-filter-sort {
    height: 32px;
    border: 1px solid var(--mui-line);
    border-radius: 999px;
    background: #fff;
    padding: 0 13px;
    font-size: 12.5px;
    font-weight: 600;
    color: var(--mui-ink);
    transition: border-color .2s var(--mui-ease), box-shadow .2s var(--mui-ease);
}
.mui-filterbar .mui-filter-date { padding: 0 10px; color: var(--mui-ink-soft); font-weight: 500; flex: 0 0 auto; }
.mui-filterbar .mui-filter-search { flex: 1 1 150px; min-width: 130px; font-weight: 500; }
.mui-filterbar .mui-filter-sort { flex: 0 0 auto; cursor: pointer; }
.mui-filterbar .mui-filter-date:focus,
.mui-filterbar .mui-filter-search:focus,
.mui-filterbar .mui-filter-sort:focus {
    outline: none;
    border-color: var(--mui-blue);
    box-shadow: 0 0 0 3px rgba(0, 99, 155, 0.10);
}
.mui-filterbar .mui-filter-clear {
    height: 32px;
    border: none;
    background: transparent;
    color: var(--mui-ink-soft);
    font-size: 12.5px;
    font-weight: 600;
    padding: 0 12px;
    border-radius: 999px;
    cursor: pointer;
    transition: color .2s var(--mui-ease), background .2s var(--mui-ease);
    flex: 0 0 auto;
}
.mui-filterbar .mui-filter-clear:hover { color: #e23b3b; background: rgba(226, 59, 59, 0.06); }

/* ---- export ("Αποθήκευση πίνακα") -> sleek gradient pill + modern menu ---- */
.mui-filterbar .mui-filter-export { flex: 0 0 auto; }
.mui-filterbar .mui-export-btn {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    height: 32px;
    padding: 0 13px;
    border: none;
    border-radius: 999px;
    background: var(--mui-blue);
    color: #fff;
    font-size: 12.5px;
    font-weight: 600;
    cursor: pointer;
    box-shadow: 0 1px 3px rgba(0, 99, 155, 0.20);
    transition: box-shadow .2s var(--mui-ease);
}
.mui-filterbar .mui-export-btn:hover { box-shadow: 0 4px 11px rgba(0, 99, 155, 0.26); }
.mui-filterbar .mui-export-btn .mui-pill-caret { color: rgba(255, 255, 255, 0.85); font-size: 9px; }
.mui-filterbar .mui-export-btn svg { flex: 0 0 auto; }

.mui-export-menu.dropdown-menu {
    min-width: 150px;
    border: 1px solid var(--mui-line);
    border-radius: 12px;
    box-shadow: var(--mui-shadow);
    padding: 6px;
    margin-top: 6px;
}
.mui-export-menu .dropdown-item {
    border-radius: 8px;
    padding: 7px 12px;
    font-size: 12.5px;
    font-weight: 600;
    color: var(--mui-ink);
    cursor: pointer;
}
.mui-export-menu .dropdown-item:hover,
.mui-export-menu .dropdown-item:focus {
    background: var(--mui-blue-soft);
    color: var(--mui-blue);
}

/* ===========================================================================
   13) TOP-ZONE ALIGNMENT + TITLE  (v3.9)
   =========================================================================== */

/* the card content was inset an extra 8px vs the title -> align them */
.modern-submissions {
    padding-left: 0 !important;
    padding-right: 0 !important;
}
/* rows + year header carried an extra 2rem right inset -> drop it so they
   match the filter-bar width */
.submissionsBodyContainerAdmin .accordion-collapse > div { padding-right: 0 !important; }
.submissionsBodyContainerAdmin .accordion-header .row { margin-right: 0 !important; }
/* nudge the bar's right edge in by the scrollbar width so it lines up with the rows */
.mui-filterbar { margin-right: 8px; }

/* ---- title: Lucide icon tile + roomy text ---- */
.dashboard-container:has(.modern-submissions) > .col-12 > .row .blueText {
    font-size: 20px !important;
    font-weight: 800 !important;
    gap: 12px !important;
    align-items: center;
    padding-top: 2px;
    padding-bottom: 2px;
}
.mui-title-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    flex: 0 0 auto;
    border-radius: 11px;
    background: var(--mui-grad-brand);
    color: #fff;
    box-shadow: 0 6px 16px rgba(0, 99, 155, 0.28);
}
.mui-title-icon svg { display: block; }
.mui-title-text { line-height: 1.2; }
/* no old gradient <img> anymore, but neutralise its rule just in case */
.dashboard-container:has(.modern-submissions) > .col-12 > .row .blueText img { display: none !important; }

/* subtitle: a touch of breathing room under the title */
.dashboard-container:has(.modern-submissions) > .col-12 > .row .grayText { margin-top: 3px; }

/* ===========================================================================
   14) PER-YEAR EMISSIONS SUMMARY (in the RY header)
   =========================================================================== */
.mui-year-emissions {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 14px;
    padding-right: 8px;
    font-size: 12px;
    color: var(--mui-ink-soft);
    white-space: nowrap;
}
.mui-year-emissions b {
    color: var(--mui-ink);
    font-weight: 800;
    font-variant-numeric: tabular-nums;
}
.mui-ye-total { display: inline-flex; align-items: baseline; gap: 3px; }
.mui-ye-total b { font-size: 15px; letter-spacing: -.2px; }
.mui-ye-unit {
    font-size: 9px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .3px;
    color: var(--mui-ink-soft);
}
.mui-ye-item { display: inline-flex; align-items: center; gap: 5px; }
.mui-ye-item b { margin-left: 2px; }
.mui-ye-dot { width: 8px; height: 8px; border-radius: 50%; flex: 0 0 auto; }
.mui-ye-sep { width: 1px; height: 16px; background: var(--mui-line); }

/* ===========================================================================
   15) TOP NAV POLISH  (v4)  — sleek, modern feel
   =========================================================================== */
header.natura-map-header .header-top { gap: 10px; padding: 7px 14px; }

/* center nav: clean white-translucent hover/active pills on the gradient */
header.natura-map-header .header-nav { gap: 4px; }
header.natura-map-header .header-nav-item {
    gap: 8px;
    padding: 5px 14px 5px 6px;
    border-radius: 999px;
    border: 1px solid transparent;
}
header.natura-map-header .header-nav-item button,
header.natura-map-header .header-nav-item .tabChoicep2Extented {
    font-size: 14px !important;
    font-weight: 600;
}
header.natura-map-header .header-nav-item:hover {
    background: rgba(255, 255, 255, 0.14) !important;
    border-color: transparent !important;
    transform: none;
}
header.natura-map-header .header-nav-item.active {
    background: rgba(255, 255, 255, 0.22) !important;
    border-color: rgba(255, 255, 255, 0.30) !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08) !important;
}

/* icon discs: subtle + consistent */
header.natura-map-header .header-nav-item .header-nav-icon {
    width: 28px !important;
    height: 28px !important;
    background: rgba(255, 255, 255, 0.9) !important;
    box-shadow: none !important;
    border: 1px solid rgba(255, 255, 255, 0.5) !important;
}
header.natura-map-header .header-nav-item.active .header-nav-icon { background: #fff !important; }

/* right-side action cluster: uniform glass chips */
header.natura-map-header .header-actions { gap: 8px; align-items: center; }
header.natura-map-header .header-actions > div[style*="border-radius:50px"],
header.natura-map-header .header-actions .header-nav-icon,
header.natura-map-header .header-actions .simple-ContainerNoBorder {
    height: 38px !important;
    min-height: 38px;
    border-radius: 999px !important;
    background: rgba(255, 255, 255, 0.94) !important;
    box-shadow: var(--mui-shadow-soft) !important;
    border: none !important;
    opacity: 1 !important;
}
header.natura-map-header .header-actions .header-nav-icon { width: 38px !important; }
header.natura-map-header #logonTimer { font-weight: 700; color: var(--mui-blue); font-size: 12.5px; }

/* user chip: avatar + name + role + caret */
header.natura-map-header .user-containerp2 {
    display: inline-flex !important;
    align-items: center;
    gap: 9px;
    height: 38px;
    padding: 0 12px 0 5px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.96) !important;
    box-shadow: var(--mui-shadow-soft);
    opacity: 1 !important;
}
.mui-user-avatar {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    flex: 0 0 auto;
    background: var(--mui-grad-brand);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .3px;
}
.mui-user-meta {
    display: flex;
    flex-direction: column;
    line-height: 1.15;
    text-align: left;
    max-width: 150px;
}
.mui-user-name {
    font-size: 12.5px;
    font-weight: 700;
    color: var(--mui-ink);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.mui-user-role {
    font-size: 10px;
    font-weight: 600;
    color: var(--mui-ink-soft);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.mui-user-caret { color: var(--mui-ink-soft); flex: 0 0 auto; }

/* ===========================================================================
   16) ADMIN NAV (the live .tabChoice bar in #tabChoicesContainer)  (v4.1)
   sleek, centered pill items with a subtle hover pill — matches the reference
   =========================================================================== */
#tabChoicesContainer {
    display: inline-flex !important;
    align-items: center;
    gap: 4px;
    border: none !important;
    background: transparent !important;
    overflow: visible !important;
    white-space: nowrap;
    vertical-align: middle;
    pointer-events: auto !important; /* nav clickable; its wrapper is pointer-events:none so the bell/actions underneath stay clickable */
}
#tabChoicesContainer .tabChoice {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    gap: 7px;
    height: 36px;
    padding: 0 15px !important;
    border: 1px solid transparent !important;
    border-radius: 999px !important;
    background: transparent !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    line-height: 1 !important;
    color: #51606d !important;
    cursor: pointer;
    transition: background .2s var(--mui-ease), color .2s var(--mui-ease), border-color .2s var(--mui-ease);
}
#tabChoicesContainer .tabChoice span { color: inherit !important; }
#tabChoicesContainer .tabChoice:hover {
    background: rgba(0, 99, 155, 0.07) !important;
    color: var(--mui-blue) !important;
}
/* active item -> soft brand pill */
#tabChoicesContainer .tabChoice.tabChoiceSelectedp2,
#tabChoicesContainer .tabChoice.tabChoiceSelectedp2 span,
#tabChoicesContainer .tabChoice.frontColor,
#tabChoicesContainer .tabChoice.frontColor span {
    color: var(--mui-blue) !important;
}
#tabChoicesContainer .tabChoice.tabChoiceSelectedp2 {
    background: rgba(0, 99, 155, 0.10) !important;
    border-color: rgba(0, 99, 155, 0.16) !important;
}
/* inline icons inside the nav buttons -> compact (keep their own color) */
#tabChoicesContainer .tabChoice .p2tabmenuicon {
    height: 16px !important;
    width: auto !important;
    padding-right: 0 !important;
}
/* Lucide icon per nav item (inherits the button's text color) */
#tabChoicesContainer .tabChoice .mui-nav-ic {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
}
#tabChoicesContainer .tabChoice .mui-nav-ic svg { display: block; }

/* ---- "More" overflow dropdown for collapsible nav bars (nav-overflow.js) ---- */
/* The whole .mui-nav-more wrapper is shown/hidden via inline style from JS (display none/inline-flex).
   The button is fully self-styled — it deliberately does NOT reuse .tabChoice/.header-nav-item, whose
   `display: inline-flex !important` (scoped under the container id) would otherwise pin it visible. */
.mui-nav-more { position: relative; display: none; flex: 0 0 auto; align-items: center; }
.mui-nav-more-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    height: 36px;
    padding: 0 15px;
    border: 1px solid transparent;
    border-radius: 999px;
    background: transparent;
    font-size: 14px;
    font-weight: 600;
    line-height: 1;
    color: #51606d;
    cursor: pointer;
    white-space: nowrap;
    font-family: inherit;
    transition: background .2s var(--mui-ease), color .2s var(--mui-ease);
}
.mui-nav-more-btn:hover { background: rgba(0, 99, 155, 0.07); color: var(--mui-blue); }
.mui-nav-more-btn svg { flex: 0 0 auto; transition: transform .15s ease; }
.mui-nav-more:hover .mui-nav-more-btn svg, .mui-nav-more.is-open .mui-nav-more-btn svg { transform: rotate(180deg); }
.mui-nav-more-menu {
    display: none;
    flex-direction: column;
    gap: 2px;
    position: absolute;
    top: 100%;
    right: 0;
    min-width: 220px;
    padding: 6px;
    margin-top: 2px;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 10px 30px rgba(16, 42, 67, 0.16), 0 2px 8px rgba(16, 42, 67, 0.08);
    z-index: 3000;
}
.mui-nav-more:hover .mui-nav-more-menu,
.mui-nav-more.is-open .mui-nav-more-menu {
    display: flex;
}
/* items dropped into the menu render as a vertical list instead of horizontal pills */
.mui-nav-more-menu > * {
    display: flex !important;
    justify-content: flex-start !important;
    width: 100%;
    white-space: nowrap;
}

/* ---- platform logo in the header (left) ---- */
body:has(.modern-submissions) .obs_topp2 img.simple-ContainerNoBorder,
body:has(.modern-submissions) .obs_topp2 .tableCellNoBorderAlignLeft img[alt="resNovae"] {
    height: 46px !important;
    max-height: 46px !important;
    width: auto !important;
    background: transparent !important;
    object-fit: contain;
}

/* ===========================================================================
   17) SIGN-IN PAGE POLISH  (v5)  — sleeker/fluid, same layout
   Scoped to .login-page-wrapper so nothing else is affected.
   =========================================================================== */

/* soft gradient canvas + gentle entrance */
.login-page-wrapper {
    background: linear-gradient(135deg, #f3f8fc 0%, #ffffff 46%, #eefaf4 100%) !important;
}
.login-page-wrapper .login-left-content {
    animation: muiLoginIn .5s cubic-bezier(.4, 0, .2, 1) both;
}
@keyframes muiLoginIn {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: none; }
}

/* title + subtitle */
.login-page-wrapper .login-title {
    color: var(--mui-blue) !important;
    letter-spacing: -.4px;
}
.login-page-wrapper .login-subtitle { color: var(--mui-ink-soft); }

/* inputs: modern, smooth focus ring */
.login-page-wrapper .custom-input {
    background: #f4f7fa !important;
    border: 1.5px solid #e6edf3 !important;
    border-radius: 11px !important;
    padding: 0.62rem 1rem !important;
    transition: border-color .2s var(--mui-ease), box-shadow .2s var(--mui-ease), background .2s var(--mui-ease) !important;
}
.login-page-wrapper .custom-input:hover { border-color: #d4dee8 !important; }
.login-page-wrapper .custom-input:focus {
    background: #fff !important;
    border-color: var(--mui-blue) !important;
    box-shadow: 0 0 0 4px rgba(0, 99, 155, 0.12) !important;
}
.login-page-wrapper .custom-label { color: var(--mui-ink-soft); font-weight: 600; }

/* primary button: brand gradient pill with a fluid hover */
.login-page-wrapper .btn-secure-login {
    background: linear-gradient(135deg, #00639B 0%, #00AA7D 100%) !important;
    border-radius: 999px !important;
    padding: 0.72rem !important;
    box-shadow: 0 8px 20px rgba(0, 99, 155, 0.24) !important;
    transition: transform .15s var(--mui-ease), box-shadow .2s var(--mui-ease), filter .2s var(--mui-ease) !important;
}
.login-page-wrapper .btn-secure-login:hover {
    background: linear-gradient(135deg, #00639B 0%, #00AA7D 100%) !important;
    transform: translateY(-1px);
    box-shadow: 0 12px 26px rgba(0, 99, 155, 0.30) !important;
    filter: brightness(1.04);
}
.login-page-wrapper .btn-secure-login:active { transform: translateY(0); }

/* links */
.login-page-wrapper .forgot-pass-link,
.login-page-wrapper .signup-row a,
.login-page-wrapper .login-inline-footer a {
    color: var(--mui-blue) !important;
    transition: color .2s var(--mui-ease);
}
.login-page-wrapper .forgot-pass-link:hover,
.login-page-wrapper .signup-row a:hover,
.login-page-wrapper .login-inline-footer a:hover {
    color: var(--mui-green) !important;
    text-decoration: underline;
}

/* logo + right image panel: a little depth */
.login-page-wrapper .login-logo-img { transition: transform .3s var(--mui-ease); }
.login-page-wrapper .login-right-panel {
    box-shadow: 0 18px 46px rgba(16, 42, 67, 0.16);
    overflow: hidden;
}

/* password toggle hover */
.login-page-wrapper .password-toggle-btn { transition: color .2s var(--mui-ease); }
.login-page-wrapper .password-toggle-btn:hover { color: var(--mui-blue); }

/* ===========================================================================
   18) NOTIFICATIONS PANEL  (v5)  — redesign + fix (was z-index:3, hidden behind page)
   =========================================================================== */
.notificationsWindowP2 {
    position: fixed !important;
    top: 76px !important;
    right: 22px !important;
    left: auto !important;
    bottom: auto !important;
    width: 380px !important;
    max-width: calc(100vw - 44px) !important;
    height: auto !important;
    max-height: 72vh !important;
    display: flex;
    flex-direction: column;
    padding: 0 !important;
    background: #fff !important;
    border: 1px solid var(--mui-line) !important;
    border-radius: 16px !important;
    box-shadow: 0 24px 60px rgba(16, 42, 67, 0.24) !important;
    z-index: 4000 !important;
    overflow: hidden !important;
    white-space: normal !important;
    transition: none !important;
    backdrop-filter: none !important;
}
.notificationsWindowP2.hide { display: none !important; }
.notificationWindowActive {
    width: 380px !important;
    height: auto !important;
    max-height: 72vh !important;
    animation: muiNotifIn .22s cubic-bezier(.4, 0, .2, 1) both;
}
.notificationWindowinActive { width: 380px !important; height: auto !important; }
@keyframes muiNotifIn {
    from { opacity: 0; transform: translateY(-10px) scale(.98); }
    to   { opacity: 1; transform: none; }
}

/* header */
.notificationsWindowP2 .mui-notif-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 13px 16px;
    border-bottom: 1px solid var(--mui-line);
    flex: 0 0 auto;
}
.notificationsWindowP2 .mui-notif-title { font-size: 15px; font-weight: 800; color: var(--mui-ink); display: inline-flex; align-items: center; gap: 8px; }
.notificationsWindowP2 .mui-notif-count {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 20px; height: 20px; padding: 0 6px;
    border-radius: 999px; background: var(--mui-blue); color: #fff;
    font-size: 11px; font-weight: 800; line-height: 1;
}
.notificationsWindowP2 .mui-notif-clear {
    border: none;
    background: transparent;
    color: var(--mui-blue);
    font-size: 12.5px;
    font-weight: 600;
    cursor: pointer;
    padding: 4px 9px;
    border-radius: 8px;
    transition: background .2s var(--mui-ease);
}
.notificationsWindowP2 .mui-notif-clear:hover { background: var(--mui-blue-soft); }

/* scrollable body */
.notificationsWindowP2 .homeNotificationsContainer {
    flex: 1 1 auto;
    overflow-y: auto;
    padding: 8px;
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-height: 0;
}
.notificationsWindowP2 .homeNotificationsContainer::-webkit-scrollbar { width: 8px; }
.notificationsWindowP2 .homeNotificationsContainer::-webkit-scrollbar-thumb { background: rgba(0, 99, 155, 0.22); border-radius: 999px; }

/* notification item */
.notificationsWindowP2 .mui-notif-item {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 11px 10px 11px 8px;
    border-radius: 12px;
    background: #fff;
    border: 1px solid var(--mui-line);
    position: relative;
    transition: background .18s var(--mui-ease), border-color .18s var(--mui-ease), box-shadow .18s var(--mui-ease);
}
.notificationsWindowP2 .mui-notif-item:hover {
    background: #f7fafc;
    border-color: #d8e2ea;
    box-shadow: var(--mui-shadow-soft);
}
/* unread dot */
.notificationsWindowP2 .mui-notif-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--mui-green);
    flex: 0 0 auto;
    margin-top: 13px;
}
/* type icon */
.notificationsWindowP2 .mui-notif-ic {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--mui-blue-soft);
    color: var(--mui-blue);
}
.notificationsWindowP2 .mui-notif-body { flex: 1 1 auto; min-width: 0; }
.notificationsWindowP2 .mui-notif-msg {
    font-size: 13px;
    line-height: 1.45;
    color: var(--mui-ink);
    word-wrap: break-word;
    white-space: normal;
}
.notificationsWindowP2 .mui-notif-msg a { color: var(--mui-blue); font-weight: 600; }
.notificationsWindowP2 .mui-notif-time {
    margin-top: 4px;
    font-size: 11px;
    color: var(--mui-ink-soft);
    font-variant-numeric: tabular-nums;
}
/* dismiss */
.notificationsWindowP2 .mui-notif-dismiss {
    flex: 0 0 auto;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    border: none;
    background: transparent;
    color: var(--mui-ink-soft);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    opacity: .45;
    transition: opacity .15s var(--mui-ease), background .2s var(--mui-ease), color .2s var(--mui-ease);
}
.notificationsWindowP2 .mui-notif-item:hover .mui-notif-dismiss { opacity: 1; }
.notificationsWindowP2 .mui-notif-dismiss:hover { background: rgba(226, 59, 59, 0.10); color: #e23b3b; }

/* read / unread states */
.notificationsWindowP2 .mui-notif-item.is-unread { background: var(--mui-blue-soft, #eef6fb); border-color: rgba(0,99,155,.16); }
.notificationsWindowP2 .mui-notif-item.is-unread .mui-notif-msg { font-weight: 700; }
.notificationsWindowP2 .mui-notif-item.is-read { background: #fff; opacity: .72; }
.notificationsWindowP2 .mui-notif-item.is-read .mui-notif-dot { visibility: hidden; }
.notificationsWindowP2 .mui-notif-item.is-read .mui-notif-ic { background: #eef1f4; color: var(--mui-ink-soft); }
/* the dot only shows for unread */
.notificationsWindowP2 .mui-notif-item.is-read .mui-notif-read { display: none; }

/* per-item "mark as read" (check) */
.notificationsWindowP2 .mui-notif-read {
    flex: 0 0 auto; width: 24px; height: 24px; border-radius: 50%;
    border: none; background: transparent; color: var(--mui-blue);
    display: inline-flex; align-items: center; justify-content: center;
    cursor: pointer; opacity: .55;
    transition: opacity .15s var(--mui-ease), background .2s var(--mui-ease);
}
.notificationsWindowP2 .mui-notif-item:hover .mui-notif-read { opacity: 1; }
.notificationsWindowP2 .mui-notif-read:hover { background: var(--mui-blue-soft, rgba(0,99,155,.1)); }

/* empty state */
.notificationsWindowP2 .mui-notif-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 44px 20px;
    color: var(--mui-ink-soft);
    text-align: center;
    font-size: 13px;
}
.notificationsWindowP2 .mui-notif-empty svg { color: #c4d2dc; }

/* ======================================================================
   20. AGGREGATED RESULTS dashboard  (.mui-agg-*)
   ====================================================================== */
.mui-agg {
    /* reference palette */
    --agg-s1: #0F766E;            /* Κατηγορία 1 — dark teal */
    --agg-s2: #5EEAD4;            /* Κατηγορία 2 — light turquoise */
    --agg-total: var(--agg-accent, #0EA5E9); /* per-article accent (set inline) */
    --agg-brand: #0D9488;         /* teal-green chrome (pills, icons) */
    --agg-eyebrow: #0C726C;
    --agg-navy: #0B1220;          /* titles / numbers */
    /* glassmorphism tokens */
    --agg-glass: rgba(255,255,255,.58);
    --agg-glass-strong: rgba(255,255,255,.72);
    --agg-glass-brd: rgba(255,255,255,.75);
    --agg-glass-blur: saturate(160%) blur(16px);
    --agg-shadow: 0 18px 40px -22px rgba(16,40,70,.45), 0 2px 8px -4px rgba(16,40,70,.18);
    --agg-shadow-hi: inset 0 1px 0 rgba(255,255,255,.6);

    position: relative;
    margin-top: 15px;
    padding: 22px 20px 30px;
    font-family: 'Inter','Segoe UI',system-ui,sans-serif;
    color: var(--mui-ink);
    isolation: isolate;
}
/* ambient accent-tinted splashes — painted full-bleed directly into the page
   background (fixed to the viewport), not boxed inside a card. The accent
   colour changes per article type via --agg-accent (set inline). */
.mui-agg::before {
    /* leave the bottom footer strip clear — the footer sits at z-index:-1 and
       a full-height fixed splash would paint over it */
    content: ''; position: fixed; inset: 0 0 var(--footerHeight) 0; z-index: -1; border-radius: 0; pointer-events: none;
    background:
        radial-gradient(1150px 540px at 6% -8%, color-mix(in srgb, var(--agg-accent) 18%, transparent), transparent 56%),
        radial-gradient(880px 620px at 102% 6%, color-mix(in srgb, var(--agg-accent-mid, #5EEAD4) 16%, transparent), transparent 55%),
        radial-gradient(760px 720px at 48% 118%, color-mix(in srgb, var(--agg-accent) 12%, transparent), transparent 60%),
        linear-gradient(180deg, #f5f9fc 0%, #eaf1f6 100%);
}

/* shared glass surface */
.mui-agg-subtab,
.mui-agg-header,
.mui-agg-stat,
.mui-agg-card,
.mui-agg-empty {
    background: var(--agg-glass);
    /* No backdrop-filter here on purpose: this element repeats down the page, and a blurred
       backdrop must be re-sampled per element on every scroll frame — with one per row that
       overruns the compositor and the page visibly flickers while scrolling. The background
       below is opaque enough to read the same against the page. Keep blur for single
       floating surfaces (navbar, modals, dropdowns), never for list items. */
    border: 1px solid var(--agg-glass-brd);
    box-shadow: var(--agg-shadow), var(--agg-shadow-hi);
}

/* ---- subtabs ---- */
.mui-agg-subtabs { display: flex; gap: 9px; margin-bottom: 18px; flex-wrap: wrap; }
.mui-agg-subtab {
    border-radius: 13px;
    padding: 9px 17px;
    cursor: pointer;
    display: flex; align-items: baseline; gap: 6px;
    transition: transform .18s ease, box-shadow .18s ease, color .18s ease, background .18s ease;
    color: var(--mui-ink-soft);
}
.mui-agg-subtab:hover { color: var(--agg-accent); transform: translateY(-1px); box-shadow: 0 14px 30px -18px color-mix(in srgb, var(--agg-accent) 60%, transparent), var(--agg-shadow-hi); }
.mui-agg-subtab-no { font-weight: 700; font-size: 14px; }
.mui-agg-subtab-sub { font-size: 12.5px; opacity: .85; }
.mui-agg-subtab.is-active {
    background: linear-gradient(135deg, color-mix(in srgb, var(--agg-accent) 92%, white) 0%, var(--agg-accent) 100%);
    border-color: color-mix(in srgb, var(--agg-accent) 55%, white);
    color: #fff;
    box-shadow: 0 14px 30px -12px color-mix(in srgb, var(--agg-accent) 55%, transparent), inset 0 1px 0 rgba(255,255,255,.35);
}
.mui-agg-subtab.is-active .mui-agg-subtab-sub { opacity: .92; }

/* ---- header card ---- */
.mui-agg-header {
    display: flex; align-items: center; justify-content: space-between; gap: 18px;
    border-radius: 20px;
    padding: 20px 24px;
    margin-bottom: 16px;
    flex-wrap: wrap;
    position: relative; overflow: hidden;
}
.mui-agg-header::after {
    content: ''; position: absolute; right: -40px; top: -60px; width: 240px; height: 240px;
    background: radial-gradient(circle, color-mix(in srgb, var(--agg-accent) 18%, transparent), transparent 70%);
    pointer-events: none;
}
.mui-agg-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: 1px; color: var(--agg-eyebrow); margin-bottom: 5px; text-transform: uppercase; }
.mui-agg-title { font-size: 24px; font-weight: 800; color: var(--agg-navy); line-height: 1.1; letter-spacing: -.2px; }
.mui-agg-title-sub { font-weight: 600; color: var(--mui-ink-soft); font-size: 18px; }
.mui-agg-subcount { font-size: 13px; color: var(--mui-ink-soft); margin-top: 6px; }

.mui-agg-years { display: flex; gap: 6px; flex-wrap: wrap; position: relative; z-index: 1; }
.mui-agg-year {
    border: 1px solid var(--agg-glass-brd);
    background: rgba(255,255,255,.5);
    -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
    color: var(--mui-ink-soft);
    border-radius: 10px;
    padding: 7px 15px;
    font-size: 13px; font-weight: 600;
    cursor: pointer;
    transition: all .15s ease;
}
.mui-agg-year:hover { border-color: var(--agg-brand); color: var(--agg-brand); transform: translateY(-1px); }
.mui-agg-year.is-active { background: linear-gradient(135deg, color-mix(in srgb, var(--agg-brand) 90%, white), var(--agg-brand)); border-color: transparent; color: #fff; box-shadow: 0 8px 18px -8px rgba(13,148,136,.6); }

/* ---- stat chips ---- */
.mui-agg-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-bottom: 18px; }
.mui-agg-lastcalc { display: inline-flex; align-items: center; gap: 6px; margin: -8px 0 16px; padding: 4px 11px;
    border-radius: 999px; background: rgba(13,148,136,.08); color: #5b7186; font-size: 11.5px; font-weight: 600;
    font-family: 'Inter','Segoe UI',system-ui,sans-serif; }
.mui-agg-lastcalc svg { color: #0D9488; flex: 0 0 auto; }
.mui-agg-stat {
    border-radius: 18px;
    padding: 17px 22px 18px;
    position: relative;
    overflow: hidden;
    transition: transform .2s ease, box-shadow .2s ease;
}
.mui-agg-stat:hover { transform: translateY(-2px); box-shadow: 0 26px 48px -24px rgba(16,40,70,.5), var(--agg-shadow-hi); }
.mui-agg-stat::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; border-radius: 4px; }
.mui-agg-stat::after { content: ''; position: absolute; right: -30px; top: -40px; width: 150px; height: 150px; border-radius: 50%; opacity: .5; pointer-events: none; }
.mui-agg-stat-total::before { background: var(--agg-total); }
.mui-agg-stat-total::after { background: radial-gradient(circle, color-mix(in srgb, var(--agg-total) 22%, transparent), transparent 70%); }
.mui-agg-stat-s1::before { background: var(--agg-s1); }
.mui-agg-stat-s1::after { background: radial-gradient(circle, rgba(15,118,110,.18), transparent 70%); }
.mui-agg-stat-s2::before { background: var(--agg-s2); }
.mui-agg-stat-s2::after { background: radial-gradient(circle, rgba(94,234,212,.28), transparent 70%); }
.mui-agg-stat-k { font-size: 12.5px; color: var(--mui-ink-soft); font-weight: 600; display: flex; align-items: center; gap: 7px; position: relative; }
.mui-agg-stat-v { font-size: 28px; font-weight: 800; color: var(--agg-navy); margin-top: 7px; letter-spacing: -.5px; font-variant-numeric: tabular-nums; position: relative; }
.mui-agg-stat-v span { font-size: 13px; font-weight: 600; color: var(--mui-ink-soft); letter-spacing: 0; }
.mui-agg-dot { width: 9px; height: 9px; border-radius: 50%; display: inline-block; box-shadow: 0 0 0 3px color-mix(in srgb, currentColor 0%, transparent); }
.mui-agg-dot.s1 { background: var(--agg-s1); }
.mui-agg-dot.s2 { background: var(--agg-s2); }

/* ---- chart grid ---- */
.mui-agg-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 14px; margin-bottom: 14px; }
.mui-agg-card-wide { grid-column: 1 / -1; }
@media (min-width: 1280px) {
    .mui-agg-grid { grid-template-columns: 1fr 1fr; }
    .mui-agg-card-wide { grid-column: 1 / -1; }
}
.mui-agg-card {
    border-radius: 18px;
    padding: 17px 20px 19px;
    transition: transform .2s ease, box-shadow .2s ease;
    display: flex; flex-direction: column;
}
.mui-agg-card:hover { box-shadow: 0 26px 50px -26px rgba(16,40,70,.5), var(--agg-shadow-hi); }
.mui-agg-card-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; gap: 12px; flex-wrap: wrap; }
.mui-agg-card-title { font-size: 14.5px; font-weight: 700; color: var(--agg-navy); letter-spacing: -.1px; }
.mui-agg-card-titlewrap { display: flex; flex-direction: column; gap: 1px; }
.mui-agg-card-sub { font-size: 11.5px; font-weight: 500; color: var(--mui-ink-soft); letter-spacing: .1px; }
.mui-agg-legend { display: flex; gap: 14px; font-size: 12px; color: var(--mui-ink-soft); }
.mui-agg-legend span { display: flex; align-items: center; gap: 6px; }
.mui-agg-sw { width: 12px; height: 12px; border-radius: 4px; display: inline-block; }
.mui-agg-sw.total { background: var(--agg-total); }
.mui-agg-sw.s1 { background: var(--agg-s1); }
.mui-agg-sw.s2 { background: var(--agg-s2); }
/* canvas grows to fill the card height (so the chart matches the taller map card instead of
   leaving empty space below); 280px floor keeps the standalone full-width charts unchanged */
.mui-agg-canvas { position: relative; flex: 1 1 auto; min-height: 280px; }

/* ---- obligor split bars ---- */
.mui-agg-obligor { display: flex; flex-direction: column; gap: 12px; padding-top: 4px; }
.mui-agg-ob-row { display: grid; grid-template-columns: 200px 1fr 132px; align-items: center; gap: 14px; }
.mui-agg-ob-row[title] { cursor: default; }
.mui-agg-ob-name { font-size: 12.5px; font-weight: 600; color: var(--mui-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mui-agg-ob-track { height: 20px; background: rgba(15,23,42,.06); border-radius: 10px; overflow: hidden; display: flex; box-shadow: inset 0 1px 2px rgba(16,40,70,.08); }
.mui-agg-ob-seg { height: 100%; transition: width .6s cubic-bezier(.22,1,.36,1); display: flex; align-items: center; justify-content: center; overflow: hidden; }
/* in-bar Κατ.1 / Κατ.2 values — shown when the segment is wide enough, clipped otherwise */
.mui-agg-ob-segval { font-size: 10.5px; font-weight: 700; line-height: 1; white-space: nowrap; padding: 0 5px; color: #fff; font-variant-numeric: tabular-nums; }
.mui-agg-ob-segval.s2val { color: #0b4f49; }   /* dark teal — readable on the light Κατ.2 segment */
.mui-agg-ob-seg.s1 { background: linear-gradient(90deg, color-mix(in srgb, var(--agg-s1) 85%, black) 0%, var(--agg-s1) 100%); }
.mui-agg-ob-seg.s2 { background: linear-gradient(90deg, var(--agg-s2) 0%, color-mix(in srgb, var(--agg-s2) 70%, white) 100%); }
.mui-agg-ob-val { font-size: 12.5px; font-weight: 700; color: var(--agg-navy); text-align: right; font-variant-numeric: tabular-nums; }
.mui-agg-ob-val span { font-size: 10.5px; font-weight: 600; color: var(--mui-ink-soft); margin-left: 2px; }

/* ---- table ---- */
.mui-agg-tablecard { padding: 18px 0 8px; }
.mui-agg-tablecard .mui-agg-card-head { padding: 0 20px; }
/* title wrap grows and absorbs the free space, so the tools + export icon pack together on
   the right with no dead gap between the "Columns" button and the download icon */
.mui-agg-tablecard .mui-agg-card-titlewrap { flex: 1 1 auto; min-width: 0; }
.mui-agg-table-tools { display: flex; align-items: center; gap: 14px; }
.mui-agg-select {
    border: 1px solid var(--agg-glass-brd);
    border-radius: 10px;
    padding: 7px 13px;
    font-size: 13px;
    color: var(--mui-ink);
    background: rgba(255,255,255,.6);
    -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
    cursor: pointer;
    min-width: 180px;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.mui-agg-select:hover, .mui-agg-select:focus { border-color: var(--agg-brand); box-shadow: 0 0 0 3px rgba(13,148,136,.12); outline: none; }
.mui-agg-count { font-size: 12.5px; color: var(--mui-ink-soft); font-weight: 600; font-variant-numeric: tabular-nums; }
/* compact breakdown selector in the historical-trend card header */
.mui-agg-histmode { min-width: 0; padding: 6px 30px 6px 11px; font-size: 12.5px; }

/* ── historical-trend "add line" series picker ───────────────────────── */
.mui-agg-series-pickwrap { position: relative; }
/* lift the whole card above following cards while its picker is open */
.mui-agg-card-elevated { position: relative; z-index: 50; }
.mui-agg-addline {
    display: inline-flex; align-items: center; gap: 7px;
    border: 1px solid var(--agg-brand); border-radius: 10px;
    padding: 7px 13px; font-size: 12.5px; font-weight: 600;
    color: var(--agg-brand); background: rgba(13,148,136,.06);
    cursor: pointer; transition: background .15s ease, box-shadow .15s ease;
}
.mui-agg-addline:hover { background: rgba(13,148,136,.13); box-shadow: 0 0 0 3px rgba(13,148,136,.12); }
.mui-agg-addline-plus { font-size: 15px; font-weight: 700; line-height: 1; }
.mui-agg-addline-caret { font-size: 10px; opacity: .7; }
.mui-agg-series-menu {
    position: absolute; top: calc(100% + 8px); right: 0; z-index: 40;
    width: 290px; max-width: 80vw;
    background: #fff; border: 1px solid var(--agg-glass-brd); border-radius: 13px;
    box-shadow: 0 18px 48px rgba(15,23,42,.18); padding: 10px;
}
.mui-agg-series-menu[hidden] { display: none; }
.mui-agg-series-search { margin-bottom: 8px; }
.mui-agg-series-search input {
    width: 100%; box-sizing: border-box; border: 1px solid var(--agg-glass-brd);
    border-radius: 9px; padding: 7px 11px; font-size: 12.5px; color: var(--mui-ink);
    outline: none; transition: border-color .15s ease, box-shadow .15s ease;
}
.mui-agg-series-search input:focus { border-color: var(--agg-brand); box-shadow: 0 0 0 3px rgba(13,148,136,.12); }
.mui-agg-series-scroll { max-height: 340px; overflow: auto; }
.mui-agg-series-group { margin-bottom: 6px; }
.mui-agg-series-ghead {
    font-size: 10.5px; font-weight: 700; letter-spacing: .055em; text-transform: uppercase;
    color: var(--mui-ink-soft); padding: 8px 8px 4px; position: sticky; top: 0; background: #fff;
}
.mui-agg-series-opt {
    display: flex; align-items: center; gap: 9px; padding: 6px 8px; border-radius: 8px;
    cursor: pointer; font-size: 12.5px; color: var(--mui-ink); transition: background .12s ease;
}
.mui-agg-series-opt:hover { background: var(--agg-glass); }
.mui-agg-series-opt input { accent-color: var(--agg-brand); width: 15px; height: 15px; flex: 0 0 auto; cursor: pointer; }
.mui-agg-series-dot { width: 11px; height: 11px; border-radius: 50%; flex: 0 0 auto; }
.mui-agg-series-optlabel { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mui-agg-series-none { padding: 14px 8px; text-align: center; font-size: 12px; color: var(--mui-ink-soft); }

/* selected-line chips below the card head, doubling as the chart legend */
.mui-agg-series-chips { display: flex; flex-wrap: wrap; gap: 7px; margin: 0 0 12px; min-height: 26px; }
.mui-agg-chip {
    display: inline-flex; align-items: center; gap: 7px;
    background: var(--agg-glass); border: 1px solid var(--agg-glass-brd);
    border-radius: 999px; padding: 4px 6px 4px 10px; font-size: 12px; color: var(--mui-ink);
    max-width: 240px;
}
.mui-agg-chip-dot { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; }
.mui-agg-chip-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mui-agg-chip-x {
    border: none; background: transparent; color: var(--mui-ink-soft); cursor: pointer;
    font-size: 16px; line-height: 1; padding: 0 2px; border-radius: 50%;
    transition: color .12s ease, background .12s ease;
}
.mui-agg-chip-x:hover { color: #DC2626; background: rgba(220,38,38,.1); }
.mui-agg-series-empty { font-size: 12px; color: var(--mui-ink-soft); font-style: italic; padding: 4px 2px; }
/* Άρθρο 16 obligor table: the reduction-% annotation next to a 2025/2030 target value */
.mui-agg-tgt-pct { font-size: 11px; color: var(--mui-ink-soft); margin-left: 5px; font-variant-numeric: tabular-nums; }
/* combined tab: source-article pill + multi-article de-dup badge */
.mui-agg-srcpill { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 11px; font-weight: 700; white-space: nowrap; color: var(--agg-accent-dark); background: var(--agg-accent-light); border: 1px solid color-mix(in srgb, var(--agg-accent) 30%, transparent); }
/* absolute ⇆ intensity view switch on the "Emissions by category & year" chart */
.mui-agg-modeswitch { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding: 0 6px 8px; }
.mui-agg-modeswitch-lbl { font-size: 11px; font-weight: 700; color: var(--mui-ink-soft); text-transform: uppercase; letter-spacing: .4px; margin-right: 2px; }
.mui-agg-modebtn { border: 1px solid #d9e0e7; background: #fff; color: #44525f; border-radius: 999px; padding: 4px 11px; font-size: 11.5px; font-weight: 700; cursor: pointer; transition: all .15s; }
.mui-agg-modebtn:hover { border-color: var(--agg-accent); color: var(--agg-accent); }
.mui-agg-modebtn.is-active { background: var(--agg-accent); border-color: var(--agg-accent); color: #fff; }
.mui-agg-multibadge { display: inline-block; margin-left: 7px; padding: 1px 7px; border-radius: 999px; font-size: 10.5px; font-weight: 700; white-space: nowrap; color: #92400e; background: #fef3c7; border: 1px solid #fcd34d; vertical-align: middle; }
.mui-agg-subtab-combined { margin-left: 6px; }
.mui-agg-table-wrap { max-height: 560px; overflow: auto; }
.mui-agg-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.mui-agg-table thead th {
    position: sticky; top: 0; z-index: 1;
    background: rgba(244,248,251,.85);
    -webkit-backdrop-filter: saturate(150%) blur(10px); backdrop-filter: saturate(150%) blur(10px);
    color: var(--mui-ink-soft);
    font-weight: 700; font-size: 11.5px; letter-spacing: .4px; text-transform: uppercase;
    text-align: left;
    padding: 12px 20px;
    border-bottom: 1px solid var(--mui-line);
    cursor: default; user-select: none;
}
.mui-agg-table th.sortable { cursor: pointer; transition: color .15s ease; }
.mui-agg-table th.sortable:hover { color: var(--agg-brand); }
.mui-agg-table th.num, .mui-agg-table td.num { text-align: right; }
.mui-agg-table td.num { font-variant-numeric: tabular-nums; }
.mui-agg-table th.sortable::after { content: '↕'; opacity: .35; margin-left: 6px; font-size: 11px; }
.mui-agg-table th.asc::after { content: '↑'; opacity: 1; color: var(--agg-brand); }
.mui-agg-table th.desc::after { content: '↓'; opacity: 1; color: var(--agg-brand); }
.mui-agg-table tbody td { padding: 11px 20px; border-bottom: 1px solid rgba(20,45,70,.05); color: var(--mui-ink); }
.mui-agg-table tbody tr { transition: background .12s ease; }
.mui-agg-table tbody tr:hover { background: rgba(13,148,136,.08); }
.mui-agg-td-name { font-weight: 600; max-width: 360px; }
.mui-agg-td-vat { font-variant-numeric: tabular-nums; color: var(--mui-ink-soft); white-space: nowrap; }
.mui-agg-table td.strong { font-weight: 800; color: var(--agg-navy); }
/* unit suffix in numeric headers ("tCO₂e") — lowercase, lighter, doesn't shout */
.mui-agg-th-unit { font-weight: 600; font-size: 10px; letter-spacing: .2px; text-transform: none; color: var(--mui-ink-soft); opacity: .8; margin-left: 4px; }
/* sticky totals footer row */
.mui-agg-table tfoot td {
    position: sticky; bottom: 0; z-index: 1;
    background: rgba(244,248,251,.92);
    -webkit-backdrop-filter: saturate(150%) blur(10px); backdrop-filter: saturate(150%) blur(10px);
    padding: 12px 20px; border-top: 2px solid var(--mui-line);
    font-weight: 800; color: var(--agg-navy); font-variant-numeric: tabular-nums;
}
.mui-agg-table tfoot .mui-agg-foot-count { font-weight: 600; font-size: 12px; color: var(--mui-ink-soft); }

/* ---- empty ---- */
.mui-agg-empty {
    display: flex; flex-direction: column; align-items: center; gap: 12px;
    padding: 64px 20px; color: var(--mui-ink-soft);
    border-radius: 18px; border-style: dashed;
}
.mui-agg-empty svg { color: color-mix(in srgb, var(--agg-accent) 45%, #c4d2dc); }
.mui-agg-empty span { font-size: 14px; }

/* ---- choropleth map (Phase 2) ---- */
/* map-card header — icon + "Άρθρο 20 · Επιχειρήσεις" + total (matches reference) */
.mui-agg-mapcard-head { display: flex; align-items: center; gap: 11px; padding: 2px 2px 12px; }
.mui-agg-mapcard-ic {
    display: inline-flex; align-items: center; justify-content: center;
    width: 38px; height: 38px; border-radius: 11px; flex: 0 0 auto;
    background: color-mix(in srgb, var(--agg-accent) 14%, white);
    color: var(--agg-accent);
}
.mui-agg-mapcard-title { font-size: 16px; line-height: 1.15; font-weight: 500; color: var(--mui-ink-soft); }
.mui-agg-mapcard-title b { color: var(--agg-navy, #0B1220); font-weight: 800; }
.mui-agg-mapcard-mid { color: var(--mui-ink-soft); margin: 0 1px; }
.mui-agg-mapcard-sub { font-size: 12.5px; color: var(--mui-ink-soft); margin-top: 2px; }
.mui-agg-mapcard-sub span { opacity: .75; }
.mui-agg-mapcard .mui-agg-map { position: relative; height: 380px; width: 100%; }
.mui-agg-map canvas { display: block; width: 100%; height: 100%; }
.mui-agg-map-tip {
    position: absolute; display: none; pointer-events: none;
    background: rgba(15,25,38,.82);
    -webkit-backdrop-filter: saturate(160%) blur(10px); backdrop-filter: saturate(160%) blur(10px);
    color: #fff;
    font-size: 12px; line-height: 1.35;
    padding: 8px 11px; border-radius: 10px;
    border: 1px solid rgba(255,255,255,.16);
    box-shadow: 0 10px 26px rgba(0,0,0,.28);
    white-space: nowrap; z-index: 5;
}
.mui-agg-map-tip b { font-weight: 700; font-size: 12.5px; }
.mui-agg-map-legend {
    position: absolute; left: 14px; bottom: 10px;
    display: flex; align-items: center; gap: 8px;
    font-size: 11px; color: var(--mui-ink-soft);
}
.mui-agg-map-legend-bar {
    width: 120px; height: 9px; border-radius: 5px;
    background: linear-gradient(90deg, var(--agg-accent-light, #dcebf8) 0%, var(--agg-accent-mid, #5aaee4) 55%, var(--agg-accent-dark, #1c6ca8) 100%);
    border: 1px solid var(--agg-glass-brd);
    box-shadow: 0 1px 3px rgba(16,40,70,.15);
}
.mui-agg-mapcard .mui-agg-map canvas { cursor: pointer; }

/* ---- region filter (map click) — active bar + per-card pills ---- */
.mui-agg-filterbar {
    display: flex; align-items: center; gap: 10px;
    padding: 9px 14px; margin-bottom: 14px; border-radius: 12px;
    background: color-mix(in srgb, var(--agg-accent) 12%, white);
    border: 1px solid color-mix(in srgb, var(--agg-accent) 30%, white);
    color: var(--agg-navy, #0B1220); font-size: 13px;
}
.mui-agg-filterbar-ic { display: inline-flex; color: var(--agg-accent); }
.mui-agg-filterbar-txt { flex: 1 1 auto; }
.mui-agg-filterbar-txt b { font-weight: 800; }
.mui-agg-filterbar-clear {
    display: inline-flex; align-items: center; gap: 5px; border: none; cursor: pointer;
    background: var(--agg-accent); color: #fff; font-size: 12px; font-weight: 700;
    padding: 5px 10px; border-radius: 8px; transition: filter .15s ease;
}
.mui-agg-filterbar-clear:hover { filter: brightness(.92); }
.mui-agg-cardfilter {
    display: inline-flex; align-items: center; gap: 4px; margin-left: 8px;
    padding: 2px 8px; border-radius: 999px; font-size: 11px; font-weight: 700;
    color: var(--agg-accent);
    background: color-mix(in srgb, var(--agg-accent) 12%, white);
    border: 1px solid color-mix(in srgb, var(--agg-accent) 28%, white);
    vertical-align: middle;
}
.mui-agg-cardfilter svg { flex: 0 0 auto; }

/* ---- export controls (per-card PNG/PPT/XLS/CSV menu + export-all) ---- */
.mui-agg-export { position: relative; margin-left: auto; flex: 0 0 auto; }
.mui-agg-export-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 30px; height: 30px; border-radius: 9px; cursor: pointer;
    border: 1px solid var(--agg-glass-brd, rgba(255,255,255,.75));
    background: rgba(255,255,255,.6); color: var(--agg-navy, #0B1220);
    transition: color .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.mui-agg-export-btn:hover { color: var(--agg-accent); border-color: color-mix(in srgb, var(--agg-accent) 40%, white); box-shadow: var(--agg-shadow-hi); }
.mui-agg-export-menu {
    position: absolute; top: calc(100% + 6px); right: 0; z-index: 30;
    min-width: 172px; padding: 6px; border-radius: 12px;
    background: #fff; border: 1px solid rgba(20,45,70,.12);
    box-shadow: 0 18px 40px -16px rgba(16,40,70,.4);
    display: none; flex-direction: column; gap: 2px;
}
.mui-agg-export-menu.is-open { display: flex; }
.mui-agg-export-menu button {
    text-align: left; border: none; background: transparent; cursor: pointer;
    font-size: 13px; font-weight: 600; color: var(--mui-ink, #1f2d3d);
    padding: 8px 10px; border-radius: 8px; transition: background .12s ease, color .12s ease;
}
.mui-agg-export-menu button:hover { background: var(--mui-blue-soft, rgba(0,99,155,.08)); color: var(--agg-accent); }
/* column picker (obligor-details table: add any company field as an extra column) */
.mui-agg-colpick { position: relative; display: inline-flex; }
.mui-agg-colbtn {
    display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 11px; border-radius: 9px; cursor: pointer;
    border: 1px solid var(--agg-glass-brd, rgba(255,255,255,.75)); background: rgba(255,255,255,.6);
    color: var(--agg-navy, #0B1220); font-size: 12.5px; font-weight: 600;
    transition: color .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.mui-agg-colbtn:hover { color: var(--agg-accent); border-color: color-mix(in srgb, var(--agg-accent) 40%, white); box-shadow: var(--agg-shadow-hi); }
.mui-agg-colmenu {
    position: absolute; top: calc(100% + 6px); right: 0; z-index: 30;
    min-width: 230px; max-height: 320px; overflow-y: auto; padding: 7px; border-radius: 12px;
    background: #fff; border: 1px solid rgba(20,45,70,.12); box-shadow: 0 18px 40px -16px rgba(16,40,70,.4);
    display: none; flex-direction: column; gap: 1px;
}
.mui-agg-colmenu.is-open { display: flex; }
.mui-agg-colmenu-hd { font-size: 10.5px; font-weight: 700; letter-spacing: .4px; text-transform: uppercase; color: var(--agg-soft, #64748b); padding: 4px 8px 6px; }
.mui-agg-colopt { display: flex; align-items: center; gap: 8px; padding: 7px 8px; border-radius: 8px; cursor: pointer; font-size: 13px; font-weight: 600; color: var(--mui-ink, #1f2d3d); transition: background .12s ease; }
.mui-agg-colopt:hover { background: var(--mui-blue-soft, rgba(0,99,155,.08)); }
.mui-agg-colopt input { accent-color: var(--agg-accent, #0EA5E9); width: 15px; height: 15px; cursor: pointer; }
.mui-agg-td-x { color: var(--mui-ink, #1f2d3d); }
/* drag-to-reorder columns */
.mui-agg-table thead th { cursor: grab; }
.mui-agg-table thead th:active { cursor: grabbing; }
.mui-agg-table thead th.agg-dragging { opacity: .45; }
.mui-agg-table thead th.agg-dragover { box-shadow: inset 2px 0 0 var(--agg-accent, #0EA5E9); }
.mui-agg-colmenu-hint { font-size: 11px; color: var(--agg-soft, #64748b); padding: 6px 8px 2px; border-top: 1px solid rgba(15,23,42,.08); margin-top: 4px; display: flex; align-items: center; gap: 6px; }
/* export-all button (top, in the subtabs row) */
.mui-agg-exportall {
    margin-left: auto; display: inline-flex; align-items: center; gap: 7px;
    padding: 8px 15px; border-radius: 999px; cursor: pointer; white-space: nowrap;
    font-size: 13px; font-weight: 700; color: #fff; border: 1px solid transparent;
    background: linear-gradient(135deg, color-mix(in srgb, var(--agg-accent) 88%, white), var(--agg-accent));
    box-shadow: 0 12px 26px -12px color-mix(in srgb, var(--agg-accent) 60%, transparent);
    transition: filter .15s ease, transform .1s ease;
}
.mui-agg-exportall:hover { filter: brightness(.95); }
.mui-agg-exportall:active { transform: translateY(1px); }
.mui-agg-exportall.is-busy { opacity: .7; cursor: progress; }
/* actions group (report + export-all) pinned to the right of the article tabs */
.mui-agg-actions { margin-left: auto; display: inline-flex; align-items: center; gap: 10px; }
.mui-agg-actions .mui-agg-export, .mui-agg-actions .mui-agg-exportall { margin-left: 0; }
.mui-agg-reportbtn {
    display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; cursor: pointer;
    padding: 8px 14px; border-radius: 999px; font-size: 13px; font-weight: 700;
    color: var(--agg-accent); background: #fff;
    border: 1.5px solid color-mix(in srgb, var(--agg-accent) 45%, white);
    transition: background .15s ease, box-shadow .15s ease;
}
.mui-agg-reportbtn:hover { background: color-mix(in srgb, var(--agg-accent) 8%, white); box-shadow: var(--agg-shadow-hi); }
.mui-agg-reportbtn.is-busy { opacity: .7; cursor: progress; }

/* ===== generated report (off-screen A4 pages, rasterized to PDF/Word) ===== */
.rep-wrap { position: fixed; left: -10000px; top: 0; width: 794px; z-index: -1; }
.rep-page { width: 794px; min-height: 1123px; background: #fff; color: #222b36; box-sizing: border-box; position: relative; overflow: hidden; font-family: 'Inter','Segoe UI',system-ui,sans-serif; }
.rep-pad { padding: 54px 56px 64px; }
.rep-p { font-size: 14px; line-height: 1.6; color: #3b4654; margin: 0 0 18px; }
.rep-sec { display: flex; align-items: center; gap: 12px; margin: 26px 0 12px; }
.rep-sec-no { color: #fff; font-weight: 800; font-size: 13px; width: 30px; height: 30px; border-radius: 8px; display: flex; align-items: center; justify-content: center; }
.rep-sec-t { font-size: 19px; font-weight: 800; color: #0B1220; letter-spacing: -.2px; }
.rep-sub-cont { font-size: 13px; font-weight: 700; color: #64748b; margin: 0 0 12px; }
.rep-kpis { display: flex; gap: 14px; margin: 6px 0 18px; }
.rep-kpi { flex: 1; background: #f6f9fb; border: 1px solid #e8eef3; border-radius: 12px; padding: 14px 16px; }
.rep-kpi-l { font-size: 12px; color: #64748b; font-weight: 600; }
.rep-kpi-v { font-size: 21px; font-weight: 800; color: #0B1220; margin-top: 5px; }
.rep-list { margin: 4px 0 8px; padding-left: 18px; }
.rep-list li { font-size: 13.5px; line-height: 1.7; color: #3b4654; }
.rep-img { text-align: center; margin: 6px 0 10px; }
.rep-img img { max-width: 100%; border: 1px solid #eef2f6; border-radius: 10px; }
.rep-img-missing { text-align: center; color: #9aa7b2; font-size: 13px; padding: 40px 0; }
.rep-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.rep-table th { background: var(--rep-ac, #0EA5E9); color: #fff; text-align: left; padding: 8px 10px; font-weight: 700; }
.rep-table th.n, .rep-table td.n { text-align: right; }
.rep-table td { padding: 7px 10px; border-bottom: 1px solid #eef2f6; color: #2b3645; }
.rep-table td.b { font-weight: 800; color: #0B1220; }
.rep-table tbody tr:nth-child(even) td { background: #f7fafc; }
.rep-cover, .rep-back { color: #fff; }
.rep-cover { display: flex; flex-direction: column; justify-content: space-between; padding: 64px 60px; }
.rep-cover-top { font-size: 13px; font-weight: 700; letter-spacing: 2px; opacity: .85; }
.rep-cover-mid { margin-top: 210px; }
.rep-cover-eyebrow { font-size: 13px; font-weight: 700; letter-spacing: 1.5px; opacity: .9; margin-bottom: 14px; }
.rep-cover-title { font-size: 46px; font-weight: 800; line-height: 1.05; letter-spacing: -1px; }
.rep-cover-sub { font-size: 24px; font-weight: 600; margin-top: 12px; opacity: .96; }
.rep-cover-period { font-size: 15px; margin-top: 18px; opacity: .9; }
.rep-cover-region { font-size: 14px; margin-top: 6px; opacity: .9; }
.rep-cover-foot { display: flex; justify-content: space-between; font-size: 12.5px; opacity: .9; border-top: 1px solid rgba(255,255,255,.3); padding-top: 16px; }
.rep-back { display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; padding: 80px 70px; }
.rep-back-title { font-size: 30px; font-weight: 800; }
.rep-back-txt { font-size: 14px; line-height: 1.7; opacity: .92; margin-top: 18px; max-width: 520px; }
.rep-back-contact { font-size: 14px; font-weight: 700; margin-top: 24px; }
.rep-back-foot { position: absolute; bottom: 48px; left: 0; right: 0; text-align: center; font-size: 12px; opacity: .85; }

/* ======================================================================
   21. ΕΤΑΙΡΕΙΕΣ (Companies admin) — clean modern + light glass
   Scoped under #nav-company so other admin tables are unaffected.
   .aco-* classes are unique to this page.
   ====================================================================== */
/* Shared at :root, not on #nav-company — #nav-investor is a SIBLING tab pane, not a descendant, so a
   var() declared only on #nav-company silently resolved to nothing everywhere in #nav-investor (every
   var(--aco-shadow)/var(--aco-line) there was invalid). Lightened while fixing it: a flatter, thinner
   shadow reads as "sleek" instead of "card floating above the page", which is most of what makes the
   old version feel heavy. */
:root {
    --aco-brand: #0D9488;
    --aco-brand-2: #0B7E73;
    --aco-navy: #0B1220;
    --aco-line: rgba(20,45,70,.08);
    --aco-glass: rgba(255,255,255,.72);
    --aco-blur: saturate(140%) blur(12px);
    --aco-shadow: 0 1px 2px rgba(16,40,70,.05);
    --aco-shadow-hover: 0 6px 16px -10px rgba(16,40,70,.22);
}
#nav-company, #nav-investor {
    font-family: 'Inter','Segoe UI',system-ui,sans-serif;
    padding: 6px 4px 16px;
}

/* ---- tab bar (ΕΤΑΙΡΕΙΕΣ / ΕΜΠΛΕΚΟΜΕΝΟΙ) — flat pill switcher, no per-tab shadow at rest ---- */
#nav-tab.nav-tabs { border: none; gap: 4px; }
#nav-tab.nav-tabs .nav-link {
    border: 1px solid transparent; border-radius: 10px;
    color: #7c8894; font-weight: 600; font-size: 13.5px; padding: 8px 16px;
    transition: color .12s ease, background .12s ease; -webkit-text-fill-color: currentColor;
}
#nav-tab.nav-tabs .nav-link:hover { color: #0D9488; background: rgba(13,148,136,.06); }
#nav-tab.nav-tabs .nav-link.active {
    color: #fff; -webkit-text-fill-color: #fff; border-color: transparent; background: #0D9488;
}

/* ---- toolbar — thin hairline instead of a floating card; shadow only appears on interaction ---- */
.aco-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; margin: 4px 0 14px; }
.aco-search {
    display: flex; align-items: center; gap: 8px;
    background: #fff; border: 1px solid var(--aco-line); border-radius: 11px;
    padding: 4px 6px 4px 14px; transition: box-shadow .14s ease, border-color .14s ease;
}
.aco-search:focus-within { border-color: #bfe2de; box-shadow: var(--aco-shadow-hover); }
.aco-search-ic { color: #a3b1bd; font-size: 13px; display: flex; }
.aco-search-input { border: none; background: transparent; outline: none; font-size: 13.5px; color: var(--aco-navy); width: 280px; max-width: 42vw; padding: 7px 2px; }
.aco-search-input::placeholder { color: #a3b1bd; }
.aco-search-go {
    border: none; border-radius: 8px; cursor: pointer; background: #0D9488; color: #fff;
    font-weight: 600; font-size: 13px; padding: 8px 16px;
    transition: background .12s ease; box-shadow: none;
}
.aco-search-go:hover { background: #0B7E73; }
.aco-toolbar-actions { display: flex; align-items: center; gap: 8px; }

.aco-btn { display: inline-flex; align-items: center; gap: 7px; cursor: pointer; border-radius: 10px; padding: 8px 14px; font-size: 13px; font-weight: 600; transition: background .12s ease, border-color .12s ease, color .12s ease; }
.aco-btn svg { flex: 0 0 auto; }
.aco-btn-ghost { background: #fff; border: 1px solid var(--aco-line); color: var(--aco-navy); -webkit-text-fill-color: currentColor; }
.aco-btn-ghost:hover { color: #0D9488; border-color: #9ad2cc; background: rgba(13,148,136,.04); }
.aco-caret { opacity: .5; }

/* ---- column picker panel — solid, not frosted: a backdrop-filter this large repaints on every
   scroll/drag frame under it, which is exactly the kind of cost that shows up as jank while
   reordering columns. A plain solid surface looks just as crisp and costs nothing at paint time. ---- */
.aco-colpicker { position: relative; }
.aco-colpanel {
    position: absolute; right: 0; top: calc(100% + 8px); z-index: 1200;
    width: 270px; max-height: 60vh; overflow: auto;
    background: #fff; border: 1px solid var(--aco-line); border-radius: 13px;
    box-shadow: var(--aco-shadow-hover);
    padding: 8px; opacity: 0; transform: translateY(-4px); pointer-events: none;
    transition: opacity .12s ease, transform .12s ease;
}
.aco-colpanel.is-open { opacity: 1; transform: translateY(0); pointer-events: auto; }
.aco-colpanel-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 6px 8px 10px; border-bottom: 1px solid var(--aco-line); margin-bottom: 6px; }
.aco-colpanel-head > span { font-weight: 700; font-size: 13px; color: var(--aco-navy); }
.aco-colpanel-acts { display: flex; gap: 6px; }
.aco-link { border: none; background: none; cursor: pointer; font-size: 11.5px; font-weight: 600; color: #0D9488; padding: 2px 5px; border-radius: 6px; }
.aco-link:hover { background: rgba(13,148,136,.1); }
.aco-colpanel-list { display: flex; flex-direction: column; gap: 1px; }
.aco-colitem { display: flex; align-items: center; gap: 10px; cursor: pointer; padding: 8px 10px; border-radius: 10px; transition: background .12s ease; }
.aco-colitem:hover { background: rgba(13,148,136,.07); }
.aco-colitem input { position: absolute; opacity: 0; width: 0; height: 0; }
.aco-colitem-box { width: 18px; height: 18px; border-radius: 6px; border: 1.5px solid #cbd5e1; flex: 0 0 auto; position: relative; transition: all .15s ease; background: #fff; }
.aco-colitem input:checked + .aco-colitem-box { background: #0D9488; border-color: #0D9488; }
.aco-colitem input:checked + .aco-colitem-box::after { content: ''; position: absolute; left: 5px; top: 1.5px; width: 5px; height: 10px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.aco-colitem-txt { font-size: 13px; color: var(--mui-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ---- columns picker: scrollable list + sticky footer, drag-reorder ---- */
.aco-colpanel { display: flex; flex-direction: column; overflow: hidden; }
.aco-colpanel-hint { font-size: 11px; color: var(--aco-soft, #64748b); padding: 0 8px 6px; }
.aco-colpanel-list { flex: 1 1 auto; overflow: auto; padding-right: 2px; }
.aco-colpanel-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 6px 4px; margin-top: 6px; border-top: 1px solid var(--aco-line); }
.aco-colpanel-status { font-size: 11.5px; font-weight: 600; color: var(--aco-soft, #64748b); }
.aco-colsave { padding: 6px 14px; }
.aco-colitem-grip { flex: 0 0 auto; cursor: grab; color: #94a3b8; font-size: 13px; line-height: 1; letter-spacing: -2px; user-select: none; }
.aco-colitem[draggable="true"] { user-select: none; }
.aco-colitem.aco-dragging { opacity: .5; }
.aco-colitem.aco-drop-before { box-shadow: inset 0 2px 0 0 #0D9488; }
.aco-colitem.aco-drop-after { box-shadow: inset 0 -2px 0 0 #0D9488; }

/* ---- flattened grid (column toggling) — classes are unique, unscoped ---- */
.aco-grid, .aco-row {
    display: grid !important;
    grid-template-columns: 5fr 5fr 10fr 15fr 15fr 10fr 6fr 6fr 9fr 9fr 6fr 12fr 4fr 4fr 4fr 12fr 12fr 14fr 7fr 14fr 8fr 9fr 9fr;
    align-items: stretch; margin: 0 !important; width: 100% !important;
}
#nav-company .tableCell .aco-ro { font-size: 12.5px; color: #5b6b78; }
.aco-grid > [class*="col-"], .aco-row > [class*="col-"] { display: contents !important; }
.aco-grid > [class*="col-"] > .row, .aco-row > [class*="col-"] > .row { display: contents !important; }
.aco-grid [data-col], .aco-row [data-col] {
    width: auto !important; max-width: none !important; min-width: 0;
    display: flex; align-items: center; justify-content: center; padding: 5px 8px;
}
.aco-row [data-col] > input, .aco-row [data-col] > select { width: 100%; min-width: 0; }

/* ---- header ---- */
#nav-company .Tableheader.aco-grid {
    background: #f7f9fb; border: 1px solid var(--aco-line); border-radius: 12px 12px 0 0;
    box-shadow: var(--aco-shadow); height: auto !important; min-height: 48px; overflow: hidden;
}
#nav-company .Tableheader .tableCell {
    color: #66727f; font-weight: 700; font-size: 11px; letter-spacing: .3px; text-transform: uppercase; line-height: 1.2;
}

/* ---- body container + rows ---- */
/* override the legacy fixed-height inner scroll (Observatory.css: height:calc(100vh..)+overflow-y:scroll)
   so the grid grows to fit ALL rows and the PAGE scrolls — same as the .umx user grid. */
#nav-company .submissionsBodyContainerAdmin {
    background: #fff; border: 1px solid var(--aco-line); border-top: none;
    border-radius: 0 0 12px 12px; box-shadow: var(--aco-shadow); overflow: visible;
    height: auto !important; max-height: none !important; backdrop-filter: none !important;
}
#nav-company .submissionsBodyContainerAdmin .aco-row { border-bottom: 1px solid rgba(20,45,70,.06); min-height: 46px; transition: background .12s ease; }
#nav-company .submissionsBodyContainerAdmin .aco-row:hover { background: rgba(13,148,136,.05); }
#nav-company .submissionsBodyContainerAdmin .aco-row:last-child { border-bottom: none; }

/* ---- cell inputs/selects ---- */
#nav-company .tableCell .ESGDataTableResultsTextEditable,
#nav-company .tableCell input.ESGDataTableResultsText,
#nav-company .tableCell select.ESGDataTableResultsText {
    border: 1px solid transparent !important; border-radius: 8px; background: transparent !important; color: var(--aco-navy);
    -webkit-text-fill-color: currentColor;
    font-size: 12.5px; padding: 6px 8px; height: auto !important; text-align: left;
    transition: border-color .14s ease, background .14s ease, box-shadow .14s ease;
}
/* base .ESGDataTableResultsText centers text — left-align everything in the cells */
#nav-company .tableCell input,
#nav-company .tableCell select,
#nav-company .tableCell .ESGDataTableResultsText,
#nav-company .tableCell .aco-ro { text-align: left; }
#nav-company .tableCell .ESGDataTableResultsTextEditable:hover,
#nav-company .tableCell select.ESGDataTableResultsText:hover { background: #f3f6f9 !important; border-color: transparent !important; }
#nav-company .tableCell .ESGDataTableResultsTextEditable:focus,
#nav-company .tableCell select.ESGDataTableResultsText:focus { outline: none; background: #fff !important; border-color: #0D9488 !important; box-shadow: 0 0 0 3px rgba(13,148,136,.14); }

/* ---- in-cell action / tier buttons (undo gradient-text so icons/labels show) ---- */
#nav-company .tableCell .button-white-linear.buttonBorder {
    margin: 0 3px !important;
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 32px; height: 32px; padding: 0 9px;
    border-radius: 9px; border: 1px solid var(--aco-line);
    background: #fff !important; color: #5b6b78 !important;
    -webkit-background-clip: border-box !important; background-clip: border-box !important;
    -webkit-text-fill-color: currentColor !important;
    font-size: 12px; font-weight: 600; cursor: pointer; transition: all .15s ease;
}
#nav-company .tableCell .button-white-linear.buttonBorder:hover {
    color: #0D9488 !important; border-color: #9ad2cc; transform: translateY(-1px);
    box-shadow: 0 6px 14px -8px rgba(13,148,136,.6);
}
#nav-company .tableCell .button-white-linear.buttonBorder i { font-size: 13px; }
#nav-company [data-col="info"] { gap: 4px; flex-wrap: wrap; }
#nav-company [data-col="tier"] .button-white-linear.buttonBorder { width: auto; padding: 0 10px; }

/* ---- footer action buttons (Add / Refresh / Save) ---- */
#nav-company .button-white-linear.fontsize90 {
    border-radius: 10px; border: 1px solid var(--aco-line); background: #fff !important;
    color: var(--aco-navy) !important;
    -webkit-background-clip: border-box !important; background-clip: border-box !important;
    -webkit-text-fill-color: currentColor !important;
    font-weight: 600; padding: 9px 18px; margin-right: 8px; box-shadow: none;
    transition: background .12s ease, border-color .12s ease, color .12s ease;
}
#nav-company .button-white-linear.fontsize90:hover { color: #0D9488 !important; border-color: #9ad2cc; background: rgba(13,148,136,.04) !important; }
#nav-company .button-white-linear.fontsize90[value="Admin_SaveCompanies"] {
    background: #0D9488 !important; color: #fff !important; border-color: transparent;
}
#nav-company .button-white-linear.fontsize90[value="Admin_SaveCompanies"]:hover { color: #fff !important; background: #0B7E73 !important; }

/* ---- per-column sort + filter header controls ---- */
#nav-company .Tableheader .tableCell.aco-th {
    flex-direction: column; align-items: stretch; justify-content: center; gap: 5px; padding: 7px 8px;
}
#nav-company .aco-sort {
    display: inline-flex; align-items: center; justify-content: center; gap: 5px; width: 100%;
    background: none; border: none; cursor: pointer; padding: 0;
    font: inherit; color: inherit; text-transform: uppercase; font-weight: 700; font-size: 11px; letter-spacing: .3px;
    -webkit-text-fill-color: currentColor;
}
#nav-company .aco-sort:hover { color: #0D9488; }
/* Wrap instead of clipping (NECCA 86cax7f8b) — headers were cut off mid-word with no way to read the
   full label; the tooltip on the same span (title attribute, set in enhanceHeaders()) still covers
   any remaining edge case where a single unbroken token is wider than the column. */
#nav-company .aco-sort > span:first-child { white-space: normal; overflow-wrap: break-word; line-height: 1.25; }
.aco-sort-ic { width: 12px; flex: 0 0 auto; text-align: center; opacity: .4; }
.aco-sort-ic::before { content: '⇅'; font-size: 10px; }
#nav-company .aco-sort.asc, #nav-company .aco-sort.desc { color: #0D9488; }
.aco-sort.asc .aco-sort-ic, .aco-sort.desc .aco-sort-ic { opacity: 1; }
.aco-sort.asc .aco-sort-ic::before { content: '↑'; }
.aco-sort.desc .aco-sort-ic::before { content: '↓'; }
#nav-company .aco-colfilter {
    width: 100%; border: 1px solid var(--aco-line); border-radius: 7px; background: #fff;
    font-size: 11px; font-weight: 400; text-transform: none; letter-spacing: 0;
    padding: 4px 7px; color: var(--aco-navy); -webkit-text-fill-color: currentColor;
}
#nav-company .aco-colfilter::placeholder { color: #b6c2cc; }
#nav-company .aco-colfilter:focus { outline: none; border-color: #0D9488; box-shadow: 0 0 0 2px rgba(13,148,136,.15); }

/* ---- zebra striping, hidden rows, results count ---- */
#nav-company .submissionsBodyContainerAdmin .aco-row.aco-even { background: rgba(20,45,70,.025); }
#nav-company .submissionsBodyContainerAdmin .aco-row.aco-even:hover { background: rgba(13,148,136,.06); }
.aco-row.aco-hidden { display: none !important; }
.aco-count-chip { font-size: 12px; font-weight: 600; color: #66727f; background: #fff; border: 1px solid var(--aco-line); border-radius: 9px; padding: 8px 11px; }

/* ---- Active boolean → segmented toggle pill (parity with the .umx user grid) ---- */
#nav-company [data-col="active"] { gap: 0; }
#nav-company [data-col="active"] .p3radioContainer {
    margin: 0; cursor: pointer; user-select: none; position: relative;
    display: inline-flex; align-items: center; justify-content: center;
    padding: 5px 12px; font-size: 12px; font-weight: 600; line-height: 1;
    color: #8595a3; background: #f1f4f7; border: 1px solid var(--aco-line);
}
#nav-company [data-col="active"] .p3radioContainer:first-of-type { border-radius: 8px 0 0 8px; border-right-width: 0; }
#nav-company [data-col="active"] .p3radioContainer:last-of-type  { border-radius: 0 8px 8px 0; }
#nav-company [data-col="active"] .p3radioContainer input,
#nav-company [data-col="active"] .p3radioContainer .checkmark {
    position: absolute !important; opacity: 0 !important; width: 0 !important; height: 0 !important;
    margin: 0 !important; padding: 0 !important; pointer-events: none; border: none !important; background: none !important;
}
#nav-company [data-col="active"] .p3radioContainer:has(input:checked) { background: #0D9488; color: #fff; border-color: #0D9488; z-index: 1; }

/* ---- crisp icon action column (tighter spacing, destructive delete cue) ---- */
#nav-company [data-col="info"] { gap: 6px; }
#nav-company [data-col="info"] .button-white-linear.buttonBorder { margin: 0 !important; }
#nav-company [data-col="info"] .button-white-linear.buttonBorder[onclick*="showCompanyDeletionConfirm"]:hover {
    color: #c0392b !important; border-color: #e7b9a6;
    box-shadow: 0 6px 14px -8px rgba(192,57,49,.55);
}

/* ---- flat, borderless cells — match the clean .umx user grid (kills "cells inside cells") ---- */
#nav-company .Tableheader .tableCell,
#nav-company .submissionsBodyContainerAdmin .tableCell { border: none !important; }
/* left-align text columns (modern feel); keep toggle / actions / short numerics centered.
   Note: keep the centered overrides at the same .aco-grid/.aco-row specificity, declared after,
   so they win over the general left-align rule. */
#nav-company .aco-grid [data-col],
#nav-company .aco-row [data-col] { justify-content: flex-start; text-align: left; padding: 7px 10px; }
#nav-company .aco-sort { justify-content: flex-start; }
#nav-company .aco-grid [data-col="active"],#nav-company .aco-row [data-col="active"],
#nav-company .aco-grid [data-col="info"],  #nav-company .aco-row [data-col="info"] { justify-content: center; text-align: center; }
#nav-company .aco-grid [data-col="active"] .aco-sort { justify-content: center; }
/* match the user grid's lighter row rhythm */
#nav-company .submissionsBodyContainerAdmin .aco-row { min-height: 48px; }

/* =========================================================================================
   Stakeholders / Investors company grid (Companies page → #nav-investor tab) — modern reskin.
   Legacy bootstrap-col + .tableCell structure (not the aco data-col grid), so styles target
   those classes directly. Scoped to #nav-investor (the user-management investor tab uses the
   .umx classes, so these selectors never touch it).
   ========================================================================================= */
/* header card */
#nav-investor .Tableheader {
    background: #f7f9fb; border: 1px solid var(--aco-line); border-radius: 12px 12px 0 0;
    box-shadow: var(--aco-shadow); height: auto !important; min-height: 48px; overflow: hidden;
}
#nav-investor .Tableheader .tableCell {
    border: none !important; color: #5b6b78; font-weight: 700; font-size: 11px;
    letter-spacing: .3px; text-transform: uppercase; line-height: 1.2;
    justify-content: flex-start; text-align: left;
}
/* body card — drop the legacy fixed-height inner scroll so the PAGE scrolls */
#nav-investor .submissionsBodyContainerAdmin {
    background: #fff; border: 1px solid var(--aco-line); border-top: none;
    border-radius: 0 0 12px 12px; box-shadow: var(--aco-shadow);
    height: auto !important; max-height: none !important; overflow: visible; backdrop-filter: none !important;
}
/* flat cells (kill the cell-in-cell borders) + left-align */
#nav-investor .tableCell,
#nav-investor .tableCellBorderOnly { border: none !important; justify-content: flex-start; text-align: left; }
/* rows: separators, hover, zebra */
#nav-investor .submissionsBodyContainerAdmin > .row { border-bottom: 1px solid rgba(20,45,70,.06); transition: background .12s ease; }
#nav-investor .submissionsBodyContainerAdmin > .row:last-child { border-bottom: none; }
#nav-investor .submissionsBodyContainerAdmin > .row:nth-of-type(even) { background: rgba(20,45,70,.025); }
#nav-investor .submissionsBodyContainerAdmin > .row:hover { background: rgba(13,148,136,.05); }
/* borderless inline inputs (override the !important base border) + left text */
#nav-investor .tableCell .ESGDataTableResultsTextEditable {
    border: 1px solid transparent !important; background: transparent !important; border-radius: 8px;
    color: var(--aco-navy); -webkit-text-fill-color: currentColor; font-size: 12.5px; padding: 6px 8px;
    text-align: left; height: auto !important; transition: all .14s ease;
}
#nav-investor .tableCell .ESGDataTableResultsTextEditable:hover { background: #f3f6f9 !important; }
#nav-investor .tableCell .ESGDataTableResultsTextEditable:focus { outline: none; background: #fff !important; border-color: #0D9488 !important; box-shadow: 0 0 0 3px rgba(13,148,136,.14); }
/* in-cell action chips (All/No companies, Years, Frameworks, Aggregated tabs) */
#nav-investor .button-white-linear.fontsize90 {
    border-radius: 9px; border: 1px solid var(--aco-line); background: #fff !important; color: #0D9488 !important;
    -webkit-text-fill-color: currentColor !important; font-weight: 600; font-size: 12px; padding: 5px 12px; margin: 2px 3px;
    box-shadow: none; transition: all .15s ease;
}
#nav-investor .button-white-linear.fontsize90:hover { border-color: #9ad2cc; background: #f3faf9 !important; transform: translateY(-1px); }
/* clickable label links (purchased services + the per-row visibility/company summaries) */
#nav-investor [id^="InvestorLicense_"] { color: #0D9488; font-weight: 600; font-size: 12px; }
#nav-investor [id^="InvestorYears_"],
#nav-investor [id^="InvestorFrameworks_"],
#nav-investor [id^="InvestorAggTabs_"] { display: block; font-size: 12px; color: #5b6b78; text-align: left; }
/* contain the long "selected companies" list so one row can't fill the whole page */
#nav-investor [id^="InvestorIncludedCompanies_"] {
    display: block; max-height: 132px; overflow-y: auto; text-align: left;
    font-size: 12px; line-height: 1.5; color: #5b6b78; padding: 4px 6px;
    background: #f8fafc; border: 1px solid var(--aco-line); border-radius: 8px; margin-top: 4px;
}
/* Active boolean → segmented toggle pill (parity with the other grids) */
#nav-investor .tableCell .p3radioContainer {
    margin: 0; cursor: pointer; user-select: none; position: relative; display: inline-flex; align-items: center; justify-content: center;
    padding: 5px 11px; font-size: 12px; font-weight: 600; line-height: 1; color: #8595a3; background: #f1f4f7; border: 1px solid var(--aco-line);
}
#nav-investor .tableCell .p3radioContainer:first-of-type { border-radius: 8px 0 0 8px; border-right-width: 0; }
#nav-investor .tableCell .p3radioContainer:last-of-type { border-radius: 0 8px 8px 0; }
#nav-investor .tableCell .p3radioContainer input,
#nav-investor .tableCell .p3radioContainer .checkmark {
    position: absolute !important; opacity: 0 !important; width: 0 !important; height: 0 !important;
    margin: 0 !important; padding: 0 !important; pointer-events: none; border: none !important; background: none !important;
}
#nav-investor .tableCell .p3radioContainer:has(input:checked) { background: #0D9488; color: #fff; border-color: #0D9488; z-index: 1; }
/* footer buttons (Add / Refresh / Save) */
#nav-investor .button-white-linear.fontsize90[value^="Admin_"] {
    border-radius: 11px; padding: 9px 18px; color: var(--aco-navy) !important; box-shadow: var(--aco-shadow); margin-right: 8px;
}
#nav-investor .button-white-linear.fontsize90[value="Admin_SaveInvestorCompanies"] { background: #0D9488 !important; color: #fff !important; border-color: transparent; }
#nav-investor .button-white-linear.fontsize90[value="Admin_SaveInvestorCompanies"]:hover { background: #0B7E73 !important; color: #fff !important; }
/* export button → ghost style */
#nav-investor .button-simple.buttonBorder {
    border-radius: 12px; border: 1px solid var(--aco-line); background: #fff; color: var(--aco-navy);
    padding: 9px 15px; font-weight: 600; font-size: 13px; box-shadow: var(--aco-shadow);
}
#nav-investor .button-simple.buttonBorder:hover { color: #0D9488; border-color: #9ad2cc; }

/* =========================================================================================
   EXCEL-GRID LAYER — Εταιρείες (#nav-company) + Εμπλεκόμενοι (#nav-investor)

   Turns both grids from "rows of form fields" into a spreadsheet, without restructuring
   either one: the CELL carries the grid lines and every piece of state, and the control
   inside it is stripped of its own chrome (border, radius, focus ring) so it reads as text
   sitting in a cell. Row numbers come from CSS counters drawn into an absolutely-positioned
   left gutter, which is why neither Razor template nor the column-picker's grid-template
   maths had to change. Behaviour half: wwwroot/js/excelGrid.js (paints is-active /
   is-inrange / is-activerow / is-activecol).

   Declared AFTER the two reskin blocks above so it wins the ties on equal specificity.
   ========================================================================================= */
:root { --exg-line: #e4eaf1; --exg-line-strong: #cfd8e3; --exg-head: #eef2f7; --exg-brand: #0D9488; }

/* ---- sticky header + the gutter corner ---- */
#nav-company .Tableheader.aco-grid,
#nav-investor .Tableheader {
    position: sticky; top: 0; z-index: 6; border-radius: 10px 10px 0 0; overflow: visible;
}
#nav-company .Tableheader.aco-grid, #nav-company .submissionsBodyContainerAdmin,
#nav-investor .Tableheader, #nav-investor .submissionsBodyContainerAdmin {
    padding-left: 44px !important;   /* the row-number rail lives here */
    position: relative; border-radius: 10px 10px 0 0;
}
#nav-company .submissionsBodyContainerAdmin, #nav-investor .submissionsBodyContainerAdmin { border-radius: 0 0 10px 10px; }
/* header corner block above the numbers */
#nav-company .Tableheader.aco-grid::before, #nav-investor .Tableheader::before {
    content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 44px;
    background: var(--exg-head); border-right: 1px solid var(--exg-line-strong); border-radius: 10px 0 0 0;
}
/* ---- row-number rail (counters, so no markup change) ---- */
#nav-company .submissionsBodyContainerAdmin { counter-reset: exgrow; }
#nav-investor .submissionsBodyContainerAdmin { counter-reset: exgrow; }
#nav-company .submissionsBodyContainerAdmin .aco-row,
#nav-investor .submissionsBodyContainerAdmin > .row { counter-increment: exgrow; position: relative; }
#nav-company .submissionsBodyContainerAdmin .aco-row::before,
#nav-investor .submissionsBodyContainerAdmin > .row::before {
    content: counter(exgrow);
    /* absolute keeps it out of the grid/flex flow, so it never becomes a track of its own */
    position: absolute; left: -44px; top: 0; bottom: 0; width: 44px;
    display: flex; align-items: center; justify-content: center;
    background: var(--exg-head); border-right: 1px solid var(--exg-line-strong); border-bottom: 1px solid var(--exg-line);
    font-size: 10.5px; font-weight: 700; color: #64748b; z-index: 1;
}
#nav-company .submissionsBodyContainerAdmin .aco-row.is-activerow::before,
#nav-investor .submissionsBodyContainerAdmin > .row.is-activerow::before { background: #d6e6f4; color: #0B1220; }

/* ---- grid lines ---- */
#nav-company .submissionsBodyContainerAdmin .aco-row [data-col] { border-right: 1px solid var(--exg-line) !important; }
#nav-company .Tableheader.aco-grid [data-col] { border-right: 1px solid var(--exg-line-strong) !important; }
#nav-investor .submissionsBodyContainerAdmin .tableCell,
#nav-investor .submissionsBodyContainerAdmin .tableCellBorderOnly,
#nav-investor .Tableheader .tableCell { border-right: 1px solid var(--exg-line) !important; }
#nav-company .submissionsBodyContainerAdmin .aco-row { border-bottom: 1px solid var(--exg-line); }
/* white rows + a hover tint read more like a spreadsheet than zebra banding does */
#nav-company .submissionsBodyContainerAdmin .aco-row.aco-even,
#nav-investor .submissionsBodyContainerAdmin > .row:nth-of-type(even) { background: transparent; }
#nav-company .submissionsBodyContainerAdmin .aco-row:hover,
#nav-company .submissionsBodyContainerAdmin .aco-row.aco-even:hover,
#nav-investor .submissionsBodyContainerAdmin > .row:hover { background: #f6f9fc; }

/* ---- cells go full-bleed; the control fills them edge to edge ---- */
#nav-company .submissionsBodyContainerAdmin .aco-row [data-col] { padding: 0 !important; align-items: stretch; }
#nav-company .submissionsBodyContainerAdmin .aco-row [data-col] > input,
#nav-company .submissionsBodyContainerAdmin .aco-row [data-col] > select,
#nav-investor .submissionsBodyContainerAdmin .tableCell > input,
#nav-investor .submissionsBodyContainerAdmin .tableCell > select {
    height: 100% !important; min-height: 42px; padding: 0 10px !important;
    border: 0 !important; border-radius: 0 !important; background: transparent !important;
}
/* cells holding controls rather than a value keep their breathing room */
#nav-company .submissionsBodyContainerAdmin .aco-row [data-col="active"],
#nav-company .submissionsBodyContainerAdmin .aco-row [data-col="info"],
#nav-company .submissionsBodyContainerAdmin .aco-row [data-col="tier"] { padding: 5px 8px !important; align-items: center; }
/* no per-input focus ring anywhere — the cell draws it (see .is-active below) */
#nav-company .tableCell .ESGDataTableResultsTextEditable:focus,
#nav-company .tableCell select.ESGDataTableResultsText:focus,
#nav-investor .tableCell .ESGDataTableResultsTextEditable:focus {
    background: transparent !important; border-color: transparent !important; box-shadow: none !important;
}
#nav-company .tableCell .ESGDataTableResultsTextEditable:hover,
#nav-company .tableCell select.ESGDataTableResultsText:hover,
#nav-investor .tableCell .ESGDataTableResultsTextEditable:hover { background: transparent !important; }

/* ---- active cell + range selection ---- */
#nav-company .submissionsBodyContainerAdmin .aco-row [data-col].is-inrange,
#nav-investor .submissionsBodyContainerAdmin .tableCell.is-inrange { background: rgba(13,148,136,.11); }
#nav-company .submissionsBodyContainerAdmin .aco-row [data-col].is-active,
#nav-investor .submissionsBodyContainerAdmin .tableCell.is-active {
    box-shadow: inset 0 0 0 2px var(--exg-brand); background: #fff; position: relative; z-index: 2;
}
#nav-company .submissionsBodyContainerAdmin .aco-row.is-activerow,
#nav-investor .submissionsBodyContainerAdmin > .row.is-activerow { background: #f2f8fb; }
#nav-company .Tableheader.aco-grid [data-col].is-activecol,
#nav-investor .Tableheader .tableCell.is-activecol { background: #d6e6f4; color: #0B1220; }

/* Keep the action column on ONE line — wrapped icons make every row a different height, which is
   the single thing that stops a grid reading as a spreadsheet. */
#nav-company .submissionsBodyContainerAdmin .aco-row [data-col="info"] { flex-wrap: nowrap !important; gap: 3px !important; }
#nav-company .submissionsBodyContainerAdmin .aco-row [data-col="info"] .button-white-linear.buttonBorder,
#nav-company .submissionsBodyContainerAdmin .aco-row [data-col="tier"] .button-white-linear.buttonBorder {
    min-width: 26px !important; height: 26px !important; padding: 0 6px !important; font-size: 11px;
}
/* the investor rows carry stacked control clusters (companies / years / frameworks / agg tabs);
   tighten them so the rows stay as close to a uniform height as their content allows */
#nav-investor .submissionsBodyContainerAdmin .tableCellBorderOnly { padding: 6px 8px !important; }
#nav-investor .submissionsBodyContainerAdmin .button-white-linear.fontsize90 { padding: 4px 10px; margin: 1px 2px; font-size: 11.5px; }
#nav-investor .submissionsBodyContainerAdmin [id^="InvestorIncludedCompanies_"] { max-height: 84px; }

/* ---- sticky bottom action bar (Add/Refresh/Save + paging) ----
   .dashboard-container (the non-extended admin shell) is ITSELF the scrolling element
   (height: calc(100vh - headerHeight) + overflow:auto), not the browser window — so with up to 100
   rows on a page, the old "just put the buttons after the table" layout could put them a very long
   scroll away. Sticky pins this bar to the bottom of THAT container, so it's reachable however far
   down the row list you've scrolled. */
#nav-company .aco-actionbar, #nav-investor .aco-actionbar {
    position: sticky; bottom: 0; z-index: 20;
    display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap;
    margin-top: 14px; padding: 12px 4px;
    background: #fff; border-top: 1px solid var(--aco-line);
    box-shadow: 0 -8px 20px -16px rgba(16,40,70,.16);
}
#nav-company .aco-actionbar-btns, #nav-investor .aco-actionbar-btns { display: flex; align-items: center; gap: 8px; }
#nav-company .aco-actionbar .button-white-linear.fontsize90,
#nav-investor .aco-actionbar .button-white-linear.fontsize90 { margin-right: 0; }

/* ---- paging controls, reskinned: the shared paging.cshtml partial (used by many other pages too,
   so its own markup/classes stay untouched) renders plain "|<  <<  >>  >|" glyphs as button text —
   swap those for crisp chevron icons here, scoped to just this bar, and turn the page-range text
   into a chip matching the rest of the toolbar's language. ---- */
#nav-company .aco-actionbar-paging, #nav-investor .aco-actionbar-paging { display: flex; align-items: center; gap: 4px; }
#nav-company .aco-actionbar-paging .button-white-linear.fontsize90,
#nav-investor .aco-actionbar-paging .button-white-linear.fontsize90 {
    font-size: 0; min-width: 34px; height: 34px; padding: 0; margin-right: 0;
    display: inline-flex; align-items: center; justify-content: center;
}
#nav-company .aco-actionbar-paging .button-white-linear.fontsize90::before,
#nav-investor .aco-actionbar-paging .button-white-linear.fontsize90::before {
    font-size: 13px; line-height: 1; font-family: inherit;
}
#nav-company .aco-actionbar-paging .button-white-linear.fontsize90[value$="_FirstPage"]::before,
#nav-investor .aco-actionbar-paging .button-white-linear.fontsize90[value$="_FirstPage"]::before { content: "⇤"; }
#nav-company .aco-actionbar-paging .button-white-linear.fontsize90[value$="_PreviousPage"]::before,
#nav-investor .aco-actionbar-paging .button-white-linear.fontsize90[value$="_PreviousPage"]::before { content: "‹"; font-size: 17px; }
#nav-company .aco-actionbar-paging .button-white-linear.fontsize90[value$="_NextPage"]::before,
#nav-investor .aco-actionbar-paging .button-white-linear.fontsize90[value$="_NextPage"]::before { content: "›"; font-size: 17px; }
#nav-company .aco-actionbar-paging .button-white-linear.fontsize90[value$="_LastPage"]::before,
#nav-investor .aco-actionbar-paging .button-white-linear.fontsize90[value$="_LastPage"]::before { content: "⇥"; }
#nav-company .aco-actionbar-paging span, #nav-investor .aco-actionbar-paging span {
    font-size: 12px; font-weight: 600; color: #5b6b78; background: #f5f8fb;
    border: 1px solid var(--aco-line); border-radius: 9px; padding: 8px 12px; margin: 0 2px; white-space: nowrap;
}

/* ---- shortcut legend + the module's fallback toast ---- */
.exg-keyhint { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 11px; color: #64748b; margin: 0 0 8px 2px; }
.exg-keyhint kbd {
    font-family: inherit; font-size: 10px; font-weight: 700; color: #0B1220; background: var(--exg-head);
    border: 1px solid #d7dfe8; border-bottom-width: 2px; border-radius: 5px; padding: 1px 5px; margin: 0 1px;
}
.exg-keyhint span { white-space: nowrap; }
.exg-toast {
    position: fixed; left: 50%; bottom: 26px; transform: translate(-50%, 14px);
    background: #0B1220; color: #fff; font-size: 13px; font-weight: 600; padding: 11px 18px; border-radius: 11px;
    box-shadow: 0 18px 40px -14px rgba(11,18,32,.6); z-index: 2147483003; opacity: 0; pointer-events: none;
    transition: opacity .18s ease, transform .18s ease; max-width: 78vw; text-align: center;
}
.exg-toast.is-on { opacity: 1; transform: translate(-50%, 0); }
.exg-toast.is-err { background: #b3261e; }

/* ======================================================================
   22. CONFIGURATION (frameworks admin) — .cfg-*
   ====================================================================== */
/* breathing room between the floating top nav and the page title (Submissions etc.) */
.mui-page-head { margin-top: 14px !important; }

/* Config palette. The modals are rendered OUTSIDE #cfgRoot (.cfg), so the vars must be
   declared on the overlays too — otherwise var(--cfg-*) is undefined there and teal/blue
   buttons & selected chips render with no background (grey/unreadable). */
/* .cfg-confirm-back is appended to document.body for the same reason and needs them just as much:
   without it a .cfg-field input inside a confirm dialog resolves border: 1px solid var(--cfg-line)
   to an invalid shorthand, which falls back to border-style: none — the field renders as bare text
   with no box at all. */
.cfg, .cfg-modal-overlay, .cfg-confirm-back {
    --cfg-brand: #0D9488; --cfg-brand-2: #0B7E73; --cfg-accent: #0EA5E9;
    --cfg-navy: #0B1220; --cfg-ink: #334155; --cfg-soft: #64748b; --cfg-line: rgba(20,45,70,.10);
}
.cfg {
    margin-top: 60px; padding: 6px 6px 28px;
    font-family: 'Inter','Segoe UI',system-ui,sans-serif; color: var(--cfg-ink);
}
.cfg-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 14px; }
.cfg-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: 1px; color: var(--cfg-brand-2); }
.cfg-title { font-size: 24px; font-weight: 800; color: var(--cfg-navy); letter-spacing: -.3px; line-height: 1.1; margin-top: 3px; }
.cfg-sub { font-size: 13px; color: var(--cfg-soft); margin-top: 4px; }

/* year bar */
.cfg-yearbar { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 16px;
    background: rgba(255,255,255,.6); -webkit-backdrop-filter: saturate(150%) blur(12px); backdrop-filter: saturate(150%) blur(12px);
    border: 1px solid var(--cfg-line); border-radius: 14px; padding: 9px 12px; box-shadow: 0 10px 26px -20px rgba(16,40,70,.4); }
.cfg-yearbar-label { font-size: 12px; font-weight: 600; color: var(--cfg-soft); margin-right: 6px; }
.cfg-year { border: 1px solid var(--cfg-line); background: #fff; color: var(--cfg-soft); border-radius: 9px; padding: 6px 14px; font-size: 13px; font-weight: 600; cursor: pointer; transition: all .15s ease; }
.cfg-year:hover { border-color: var(--cfg-brand); color: var(--cfg-brand); }
.cfg-year.is-active { background: var(--cfg-brand); border-color: var(--cfg-brand); color: #fff; box-shadow: 0 6px 14px -8px rgba(13,148,136,.6); }

/* buttons */
.cfg-btn { display: inline-flex; align-items: center; gap: 7px; cursor: pointer; border-radius: 10px; padding: 8px 13px; font-size: 12.5px; font-weight: 600; border: 1px solid transparent; transition: all .15s ease; -webkit-text-fill-color: currentColor; }
.cfg-btn svg { flex: 0 0 auto; }
.cfg-btn-lg { padding: 10px 18px; font-size: 13.5px; border-radius: 12px; }
.cfg-btn-ghost { background: #fff; border-color: var(--cfg-line); color: var(--cfg-ink); }
.cfg-btn-ghost:hover { border-color: var(--cfg-brand); color: var(--cfg-brand); }
.cfg-btn-icon { padding: 8px; }
.cfg-btn-primary { background: var(--cfg-brand); color: #fff; box-shadow: 0 8px 16px -8px rgba(13,148,136,.6); }
.cfg-btn-primary:hover { background: var(--cfg-brand-2); transform: translateY(-1px); }
.cfg-btn-accent { background: var(--cfg-accent); color: #fff; box-shadow: 0 8px 16px -8px rgba(14,165,233,.6); }
.cfg-btn-accent:hover { background: #0284c7; transform: translateY(-1px); }
.cfg-btn-danger { background: #fff; border-color: #f0c2c2; color: #c0392b; }
.cfg-btn-danger:hover { background: #fdecec; }
/* disabled buttons: clearly greyed but still readable (was washing out to near-white) */
.cfg-btn:disabled, .cfg-btn[disabled] { background: #e6eaf0 !important; border-color: #e6eaf0 !important; color: #8b96a4 !important; -webkit-text-fill-color: #8b96a4 !important; box-shadow: none !important; transform: none !important; cursor: not-allowed; }

/* group cards */
.cfg-body { display: flex; flex-direction: column; gap: 14px; }
.cfg-group { background: #fff; border: 1px solid var(--cfg-line); border-radius: 16px; box-shadow: 0 12px 30px -22px rgba(16,40,70,.4), 0 1px 4px -2px rgba(16,40,70,.1); overflow: hidden; }
.cfg-group.is-inactive { opacity: .7; }
.cfg-group-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 18px; background: #f7fafb; border-bottom: 1px solid var(--cfg-line); flex-wrap: wrap; }
.cfg-group-title { display: flex; align-items: center; gap: 10px; min-width: 0; }
.cfg-group-name { font-size: 15.5px; font-weight: 700; color: var(--cfg-navy); }
.cfg-type-badge { font-size: 10.5px; font-weight: 700; letter-spacing: .4px; text-transform: uppercase; padding: 3px 9px; border-radius: 999px; }
.cfg-type-badge.framework { background: rgba(13,148,136,.12); color: #0B7E73; }
.cfg-type-badge.report { background: rgba(14,165,233,.12); color: #0369a1; }
.cfg-group-count { font-size: 11px; font-weight: 700; color: var(--cfg-soft); background: rgba(20,45,70,.06); border-radius: 999px; padding: 2px 9px; }
.cfg-inactive-tag { font-size: 10.5px; font-weight: 600; color: #b45309; background: #fef3c7; border-radius: 6px; padding: 2px 7px; }
.cfg-group-actions { display: flex; gap: 8px; }

.cfg-fw-list { display: flex; flex-direction: column; }
.cfg-fw { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 18px; border-bottom: 1px solid rgba(20,45,70,.05); flex-wrap: wrap; transition: background .12s ease; }
.cfg-fw:last-child { border-bottom: none; }
.cfg-fw:hover { background: rgba(13,148,136,.04); }
.cfg-fw.is-inactive .cfg-fw-name { color: var(--cfg-soft); text-decoration: line-through; }
.cfg-fw-main { display: flex; align-items: center; gap: 10px; min-width: 0; }
.cfg-fw-dot { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; }
.cfg-fw-dot.on { background: var(--cfg-brand); box-shadow: 0 0 0 3px rgba(13,148,136,.15); }
.cfg-fw-dot.off { background: #cbd5e1; }
.cfg-fw-name { font-size: 13.5px; font-weight: 600; color: var(--cfg-navy); }
.cfg-fw-id { font-size: 11px; font-weight: 600; color: var(--cfg-soft); font-variant-numeric: tabular-nums; }
.cfg-fw-meta { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.cfg-act-count { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 700; color: var(--cfg-soft); }
.cfg-fw-empty, .cfg-empty { padding: 18px; font-size: 13px; color: var(--cfg-soft); text-align: center; }
.cfg-empty { padding: 50px 18px; }

/* default checkbox */
.cfg-default { display: inline-flex; align-items: center; gap: 7px; cursor: pointer; font-size: 12px; color: var(--cfg-ink); user-select: none; }
.cfg-default input { position: absolute; opacity: 0; width: 0; height: 0; }
.cfg-default-box { width: 17px; height: 17px; border-radius: 5px; border: 1.5px solid #cbd5e1; background: #fff; position: relative; transition: all .15s ease; }
.cfg-default input:checked + .cfg-default-box { background: var(--cfg-brand); border-color: var(--cfg-brand); }
.cfg-default input:checked + .cfg-default-box::after { content: ''; position: absolute; left: 5px; top: 1px; width: 5px; height: 10px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }

/* switch */
.cfg-switch { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; font-size: 13px; color: var(--cfg-ink); user-select: none; }
.cfg-switch input { position: absolute; opacity: 0; width: 0; height: 0; }
.cfg-switch-ui { width: 38px; height: 21px; border-radius: 999px; background: #cbd5e1; position: relative; transition: background .18s ease; flex: 0 0 auto; }
.cfg-switch-ui::after { content: ''; position: absolute; top: 2px; left: 2px; width: 17px; height: 17px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.3); transition: transform .18s ease; }
.cfg-switch input:checked + .cfg-switch-ui { background: var(--cfg-brand); }
.cfg-switch input:checked + .cfg-switch-ui::after { transform: translateX(17px); }

/* modals */
/* Above the cookie-consent banner (z-index 2147483000): otherwise the fixed bottom banner can overlap
   these centred modals' footer buttons on shorter viewports and swallow clicks meant for the modal. */
.cfg-modal-overlay { position: fixed; inset: 0; z-index: 2147483002; display: none; align-items: center; justify-content: center;
    background: rgba(15,25,38,.4); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); padding: 20px; }
.cfg-modal-overlay.open { display: flex; }
.cfg-modal { width: 460px; max-width: 96vw; max-height: 90vh; overflow: auto;
    background: rgba(255,255,255,.92); -webkit-backdrop-filter: saturate(160%) blur(20px); backdrop-filter: saturate(160%) blur(20px);
    border: 1px solid rgba(255,255,255,.8); border-radius: 18px; box-shadow: 0 40px 80px -30px rgba(16,40,70,.6), inset 0 1px 0 rgba(255,255,255,.7);
    animation: cfgPop .18s ease; }
.cfg-modal-wide { width: 560px; }
.cfg-modal-xwide { width: 940px; }
/* The content grid is a spreadsheet, and a spreadsheet wants the screen. Sized as a share of the
   viewport rather than a fixed px width so it fills a large monitor instead of stopping at 1520px. */
/* The framework content editor is a spreadsheet, so it takes a fixed share of the viewport rather than
   a pixel cap — on a wide screen a 2400px ceiling left the grid floating in the middle of the page. */
.cfg-modal-xxwide { width: 95vw; max-width: 95vw; }

/* activation grid — frameworks (grouped) x years, one-click complete on/off per cell */
.cfg-actgrid-wrap { margin-top: 10px; max-height: 62vh; overflow: auto; border: 1px solid var(--cfg-line); border-radius: 12px; background: #fff; }
.cfg-actgrid { border-collapse: separate; border-spacing: 0; width: 100%; font-size: 12.5px; }
.cfg-actgrid thead th {
    position: sticky; top: 0; z-index: 3;
    padding: 9px 12px; text-align: center; font-weight: 700; font-size: 11px; text-transform: uppercase; letter-spacing: .3px;
    color: var(--cfg-soft); background: #f5f8fb; border-bottom: 1px solid var(--cfg-line); white-space: nowrap;
    box-shadow: 0 1px 0 var(--cfg-line);
}
.cfg-actgrid thead th:first-child { text-align: left; left: 0; z-index: 4; }
.cfg-actgrid-group td {
    position: sticky; left: 0; z-index: 1;
    padding: 9px 12px 6px; font-weight: 700; color: #fff; font-size: 10.5px; text-transform: uppercase; letter-spacing: .4px;
    background: var(--cfg-navy); border-bottom: 1px solid var(--cfg-line);
}
.cfg-actgrid tbody tr:not(.cfg-actgrid-group):hover { background: rgba(13,148,136,.05); }
.cfg-actgrid tbody tr:not(.cfg-actgrid-group):nth-child(even) { background: rgba(20,45,70,.015); }
.cfg-actgrid-name {
    position: sticky; left: 0; z-index: 1;
    padding: 7px 12px; white-space: nowrap; color: var(--cfg-navy); font-weight: 600; font-size: 12px;
    background-color: #fff; border-right: 1px solid var(--cfg-line);
}
.cfg-actgrid tbody tr:not(.cfg-actgrid-group):hover .cfg-actgrid-name { background-color: #f1f8f7; }
.cfg-actgrid tbody tr:not(.cfg-actgrid-group):nth-child(even) .cfg-actgrid-name { background-color: #fafbfc; }
.cfg-actgrid-cell { padding: 5px 8px; text-align: center; border-bottom: 1px solid rgba(20,45,70,.05); }
.cfg-actgrid-sw { width: 32px; height: 19px; border-radius: 999px; border: 1px solid var(--cfg-line); cursor: pointer; position: relative; transition: background .14s ease, border-color .14s ease, box-shadow .14s ease; padding: 0; }
.cfg-actgrid-sw:hover { box-shadow: 0 0 0 3px rgba(20,45,70,.06); }
.cfg-actgrid-sw::after { content: ''; position: absolute; top: 1px; left: 1px; width: 15px; height: 15px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.25); transition: transform .14s ease; }
.cfg-actgrid-off { background: #e3e7ee; }
.cfg-actgrid-on { background: #17b26a; border-color: #17b26a; }
.cfg-actgrid-on::after { transform: translateX(13px); }
/* dot marking a year-cell with its own override, distinct from the framework's general Active switch */
.cfg-actgrid-ovmark { display: inline-block; margin-left: 4px; color: var(--mui-blue); font-weight: 900; cursor: help; }
/* flags a year-cell whose effective group differs from the framework's base group row (per-year override) */
.cfg-actgrid-groupbadge { display: inline-block; margin-top: 4px; font-size: 9px; font-weight: 600; color: #8a5a00; background: #fff4e0; border-radius: 6px; padding: 1px 5px; cursor: help; white-space: nowrap; }
@keyframes cfgPop { from { opacity: 0; transform: translateY(8px) scale(.98); } to { opacity: 1; transform: none; } }
.cfg-modal-head { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid var(--cfg-line); font-size: 15px; font-weight: 700; color: var(--cfg-navy); }
.cfg-x { border: none; background: none; font-size: 22px; line-height: 1; color: var(--cfg-soft); cursor: pointer; padding: 0 4px; }
.cfg-x:hover { color: var(--cfg-navy); }
.cfg-modal-body { padding: 18px 20px; display: flex; flex-direction: column; gap: 13px; }
.cfg-modal-foot { display: flex; justify-content: flex-end; gap: 10px; padding: 14px 20px; border-top: 1px solid var(--cfg-line); }
.cfg-modal-foot-split { justify-content: space-between; }
.cfg-modal-foot-split > div { display: flex; gap: 10px; }
.cfg-field { display: flex; flex-direction: column; gap: 5px; font-size: 12.5px; font-weight: 600; color: var(--cfg-soft); }
.cfg-field > span { font-weight: 600; }
.cfg-field input, .cfg-field select { border: 1px solid var(--cfg-line); border-radius: 9px; padding: 8px 11px; font-size: 13.5px; font-weight: 500; color: var(--cfg-navy); background: #fff; -webkit-text-fill-color: currentColor; }
.cfg-field input:focus, .cfg-field select:focus { outline: none; border-color: var(--cfg-brand); box-shadow: 0 0 0 3px rgba(13,148,136,.14); }
.cfg-field-row { display: flex; align-items: flex-end; gap: 14px; flex-wrap: wrap; }
/* predefined document-lines editor (framework modal) */
.cfg-doclines-hint { font-size: 11px; font-weight: 500; color: var(--cfg-soft); margin: -1px 0 2px; }

/* ---- Configuration page: health strip, sticky year bar + search, per-year row chips ---------- */
.cfg-health { border: 1px solid #e6edf3; border-radius: 12px; background: #fff; padding: 12px 14px; margin-bottom: 16px; }
.cfg-health.has-err { border-color: #F0D8C8; background: #FFFBF9; }
.cfg-health.has-warn { border-color: #EBE3CF; background: #FFFDF7; }
.cfg-health.is-ok { border-color: #DCEEE9; background: #F8FCFB; }
.cfg-health-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
.cfg-health-title { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 800; color: #33414d; }
.cfg-health.has-err .cfg-health-title { color: #B4441A; }
.cfg-health.has-warn .cfg-health-title { color: #8A6D1F; }
.cfg-health.is-ok .cfg-health-title { color: #00775A; }
.cfg-health-counts { display: flex; gap: 14px; flex-wrap: wrap; font-size: 11.5px; font-weight: 700; color: #7b8794; }
.cfg-health-list { list-style: none; margin: 10px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.cfg-health-item { display: flex; align-items: flex-start; gap: 8px; font-size: 12.5px; line-height: 1.5; color: #44525f; }
.cfg-health-dot { width: 6px; height: 6px; border-radius: 50%; margin-top: 6px; flex: 0 0 6px; }
.cfg-health-item.sev-err .cfg-health-dot { background: #E2453B; }
.cfg-health-item.sev-warn .cfg-health-dot { background: #E0A83B; }
.cfg-health-txt { flex: 1 1 auto; }
.cfg-health-go { border: 1px solid #cdd7e2; background: #fff; color: #00639B; font-family: inherit; font-size: 11px; font-weight: 700; padding: 2px 9px; border-radius: 999px; cursor: pointer; white-space: nowrap; }
.cfg-health-go:hover { border-color: #00639B; background: #F2F8FC; }

.cfg-yearbar-sticky { position: sticky; top: 0; z-index: 40; background: #fff; box-shadow: 0 1px 0 #e6edf3; }
.cfg-yearbar-search { margin-left: auto; display: flex; align-items: center; gap: 6px; border: 1px solid #dbe3ec; border-radius: 999px; padding: 4px 10px; background: #fff; min-width: 260px; color: #94a3b0; }
.cfg-yearbar-search:focus-within { border-color: #00AA7D; }
.cfg-yearbar-search input { border: 0; outline: 0; font-family: inherit; font-size: 12.5px; color: #33414d; background: transparent; flex: 1 1 auto; min-width: 0; }
.cfg-search-x { border: 0; background: transparent; color: #94a3b0; font-size: 16px; line-height: 1; cursor: pointer; visibility: hidden; }

/* Sits between the name and the actions in the same flex row (.cfg-fw). mr:auto keeps the chips
   hugging the framework name and pushes the action cluster to the right edge, instead of the
   chips floating in the middle of the row. */
.cfg-fw-year { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; margin-left: 14px; margin-right: auto; }
.cfg-ychip { font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 999px; background: #eef2f6; color: #55636f; white-space: nowrap; }
.cfg-ychip-muted { background: #f5f7f9; color: #94a3b0; font-weight: 600; }
.cfg-ychip-on { background: #C9EFEB; color: #00775A; }
.cfg-ychip-off { background: #FFE7DD; color: #B4441A; }
.cfg-ychip-move { background: #E7EDFB; color: #3A4FA0; }

.cfg-btn-lbl { white-space: nowrap; }
.cfg-fw-more { position: relative; display: inline-block; }
.cfg-fw-more-menu { display: none; position: absolute; right: 0; top: calc(100% + 4px); z-index: 60; background: #fff; border: 1px solid #e6edf3; border-radius: 10px; box-shadow: 0 10px 28px rgba(16,40,60,.14); padding: 5px; min-width: 260px; }
.cfg-fw-more.open .cfg-fw-more-menu { display: block; }
.cfg-fw-more-menu button { display: block; width: 100%; text-align: left; border: 0; background: transparent; font-family: inherit; font-size: 12.5px; color: #33414d; padding: 8px 10px; border-radius: 7px; cursor: pointer; }
.cfg-fw-more-menu button:hover { background: #f4f7fa; }

@keyframes cfgFwFlash { 0%, 100% { background: transparent; } 25%, 75% { background: #FFF6D8; } }
.cfg-fw-flash { animation: cfgFwFlash 2.2s ease; }

/* Framework modal scope zones: the modal is opened with a reference year selected, so it has to be
   obvious at a glance which fields are per-year and which rewrite every year at once. */
.cfg-allzone-head, .cfg-yearzone-head { font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; margin-bottom: 6px; }
.cfg-allzone-head { color: #94a3b0; }
.cfg-yearzone-head { color: #00775A; }
.cfg-yearzone { background: #F6FBFA; border: 1px solid #DCEEE9; border-radius: 10px; padding: 10px 12px; }
.cfg-year-note { font-size: 11.5px; line-height: 1.45; color: #B4441A; background: #FFF6F2; border: 1px solid #F0D8C8; border-radius: 8px; padding: 7px 10px; margin-top: 7px; }

.cfg-autofill-status { display: flex; align-items: flex-start; gap: 7px; margin: 6px 0 10px; padding: 8px 11px;
    border-radius: 10px; font-size: 11.5px; font-weight: 600; line-height: 1.45; }
.cfg-autofill-status svg { flex: 0 0 auto; margin-top: 1px; }
.cfg-autofill-status.is-on { background: rgba(16,185,129,.10); color: #0d9367; }
.cfg-autofill-status.is-off { background: rgba(148,163,184,.14); color: #64748b; }
.cfg-autofill-check-btn { border: 1px solid var(--cfg-line); background: #fff; color: var(--cfg-navy);
    border-radius: 9px; padding: 6px 12px; font-size: 11.5px; font-weight: 700; cursor: pointer; margin: -4px 0 10px; }
.cfg-autofill-check-btn:hover { border-color: var(--cfg-brand); color: var(--cfg-brand); }
.cfg-autofill-check-btn:disabled { opacity: .6; cursor: default; }
.cfg-autofill-audit:empty { display: none; }
.cfg-autofill-audit-summary { font-size: 11.5px; font-weight: 700; border-radius: 9px; padding: 7px 11px; margin-bottom: 8px; }
.cfg-autofill-audit-summary.all-ok { background: rgba(16,185,129,.10); color: #0d9367; }
.cfg-autofill-audit-summary.has-issues { background: rgba(239,68,68,.10); color: #b91c1c; }
.cfg-autofill-audit-empty { font-size: 11.5px; color: var(--cfg-soft); font-weight: 600; }
.cfg-autofill-audit-table { width: 100%; border-collapse: collapse; font-size: 11.5px; margin-bottom: 10px; }
.cfg-autofill-audit-table th { text-align: left; font-weight: 700; color: var(--cfg-soft); padding: 4px 8px; border-bottom: 1px solid var(--cfg-line); }
.cfg-autofill-audit-table td { padding: 5px 8px; border-bottom: 1px solid var(--cfg-line); color: var(--cfg-navy); }
.cfg-audit-fail { color: #b91c1c; font-weight: 700; }
/* ---- "Suggest fixes" result list (Data/KPIs algorithm tools) ---- */
.cfg-algo-suggest-list { display: flex; flex-direction: column; gap: 8px; max-height: 260px; overflow-y: auto; }
.cfg-algo-suggest-item { border: 1px solid var(--cfg-line); border-radius: 10px; padding: 8px 11px; font-size: 11.5px; }
.cfg-algo-suggest-code { font-weight: 800; color: var(--cfg-navy); margin-bottom: 3px; }
.cfg-algo-suggest-orig { font-family: 'SFMono-Regular', Consolas, monospace; color: #b91c1c; background: rgba(239,68,68,.06); border-radius: 6px; padding: 3px 6px; word-break: break-all; }
.cfg-algo-suggest-fix { font-family: 'SFMono-Regular', Consolas, monospace; color: #0d9367; background: rgba(16,185,129,.08); border-radius: 6px; padding: 3px 6px; margin-top: 5px; word-break: break-all; }
.cfg-algo-suggest-reason { color: var(--cfg-soft); margin-top: 4px; font-style: italic; }
.cfg-algo-suggest-diag { color: var(--cfg-soft); margin-top: 5px; }
.cfg-algo-suggest-item .cfg-autofill-check-btn { margin: 8px 0 0; }
.cfg-doclines { display: flex; flex-direction: column; gap: 6px; }
.cfg-docline { display: flex; align-items: center; gap: 8px; }
.cfg-docline-name { flex: 1 1 auto; border: 1px solid var(--cfg-line); border-radius: 9px; padding: 8px 11px; font-size: 13.5px; font-weight: 500; color: var(--cfg-navy); background: #fff; }
.cfg-docline-name:focus { outline: none; border-color: var(--cfg-brand); box-shadow: 0 0 0 3px rgba(13,148,136,.14); }
.cfg-docline-del { flex: 0 0 auto; width: 30px; height: 30px; border: 1px solid var(--cfg-line); border-radius: 8px; background: #fff; color: #b4424e; font-size: 18px; line-height: 1; cursor: pointer; transition: background .15s ease, border-color .15s ease; }
.cfg-docline-del:hover { background: #fdecee; border-color: #f3c0c6; }
.cfg-docline-autofill-lbl { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 5px; font-size: 11.5px; font-weight: 600; color: var(--cfg-soft); white-space: nowrap; cursor: pointer; }
.cfg-docline-autofill-lbl input { margin: 0; cursor: pointer; }
.cfg-docline-lock-lbl { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 5px; font-size: 11.5px; font-weight: 600; color: var(--cfg-soft); white-space: nowrap; cursor: pointer; }
.cfg-docline-lock-lbl input { margin: 0; cursor: pointer; }
.cfg-doclines-add { align-self: flex-start; margin-top: 4px; border: 1px dashed var(--cfg-line); background: #fff; color: var(--cfg-brand); font-size: 12.5px; font-weight: 700; border-radius: 9px; padding: 6px 12px; cursor: pointer; transition: background .15s ease, border-color .15s ease; }
.cfg-doclines-add:hover { background: rgba(13,148,136,.06); border-color: var(--cfg-brand); }
.cfg-field-sm { max-width: 110px; }
/* year toggle chips (replaced the multi-select) */
.cfg-field-yearchips { flex: 1 1 100%; }
.cfg-yearpick { display: flex; flex-wrap: wrap; gap: 5px; }
.cfg-ychipbtn { border: 1px solid var(--cfg-line); background: #fff; color: var(--cfg-soft); border-radius: 999px; font-size: 12px; font-weight: 700; padding: 5px 12px; cursor: pointer; transition: all .13s ease; }
.cfg-ychipbtn:hover { border-color: var(--cfg-brand); color: var(--cfg-brand); }
.cfg-ychipbtn.is-on { background: var(--cfg-brand); border-color: var(--cfg-brand); color: #fff; }
.cfg-scope-box { display: flex; flex-direction: column; gap: 6px; }
.cfg-scope-box select[multiple] { width: 100%; border: 1px solid var(--cfg-line); border-radius: 10px; padding: 4px; font-size: 13px; color: var(--cfg-navy); }
.cfg-scope-box select[multiple] option { padding: 5px 8px; border-radius: 6px; }
.cfg-optsearch { border: 1px solid var(--cfg-line); border-radius: 9px; padding: 7px 11px; font-size: 13px; }
.cfg-optsearch:focus { outline: none; border-color: var(--cfg-brand); }
.cfg-allyears { margin-top: 4px; }

/* toast — must outrank .cfg-modal-overlay (z-index 2147483002); every config
   editor IS a modal, so a toast fired while one is open (e.g. a save error)
   was rendering behind it, completely invisible. */
.cfg-toast { position: fixed; bottom: 26px; left: 50%; transform: translateX(-50%) translateY(20px); z-index: 2147483003;
    background: rgba(15,25,38,.92); color: #fff; font-size: 13.5px; font-weight: 600; padding: 12px 20px; border-radius: 12px;
    box-shadow: 0 18px 40px rgba(0,0,0,.3); opacity: 0; pointer-events: none; transition: all .25s ease; }
.cfg-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }
.cfg-toast.ok { border-left: 4px solid #0D9488; }
.cfg-toast.err { border-left: 4px solid #e74c3c; }

/* ---- Configuration: additions (show-hidden, max chip, activations) ---- */
.cfg-header-actions { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.cfg-showhidden { font-size: 12.5px; color: var(--cfg-soft); }
.cfg-max-chip { font-size: 11px; font-weight: 700; color: #0369a1; background: rgba(14,165,233,.12); border-radius: 999px; padding: 3px 9px; white-space: nowrap; }
.cfg-act-count { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 700; color: var(--cfg-soft); background: rgba(20,45,70,.05); border: 1px solid transparent; border-radius: 999px; padding: 4px 10px; cursor: pointer; transition: all .14s ease; -webkit-text-fill-color: currentColor; }
.cfg-act-count:hover { color: var(--cfg-brand); background: rgba(13,148,136,.1); border-color: rgba(13,148,136,.25); }
.cfg-muted { color: var(--cfg-soft); font-size: 13px; }

/* dashboard-mapping code picker */
.cfg-codepicker { display: flex; flex-direction: column; gap: 2px; max-height: 220px; overflow-y: auto; border: 1px solid var(--cfg-line); border-radius: 9px; padding: 4px 8px; margin: 4px 0 10px; }
.cfg-codepicker-row { display: grid; grid-template-columns: 1fr 32px 32px 44px; align-items: center; gap: 4px; padding: 4px 2px; font-size: 12.5px; }
.cfg-codepicker-row:not(:last-child) { border-bottom: 1px solid #f1f3f6; }
.cfg-codepicker-row input { justify-self: center; cursor: pointer; }
.cfg-codepicker-code { color: var(--cfg-navy); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: flex; align-items: center; min-width: 0; }
.cfg-codepicker-txt { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.cfg-codepicker-head { font-size: 10.5px; font-weight: 700; color: var(--cfg-soft); text-transform: uppercase; letter-spacing: .03em; position: sticky; top: 0; background: #fff; }
.cfg-dashall-ok { color: #0f7b5c; }
.cfg-dashall-missing { color: #b4424e; }

/* dashboard-mapping cards (list view of what's already configured) */
.cfg-dashcards { display: flex; flex-direction: column; gap: 10px; }
.cfg-dashempty { font-size: 13px; color: var(--cfg-soft); text-align: center; padding: 22px 12px; border: 1.5px dashed var(--cfg-line); border-radius: 12px; }
.cfg-dashcard { border: 1px solid var(--cfg-line); border-radius: 12px; padding: 12px 14px; background: #fff; transition: border-color .15s ease, box-shadow .15s ease; }
.cfg-dashcard:hover { border-color: var(--cfg-brand); box-shadow: 0 2px 10px rgba(20,45,70,.06); }
.cfg-dashcard.is-inactive { opacity: .58; }
.cfg-dashcard-head { display: flex; align-items: center; gap: 10px; }
.cfg-dashcard-pill { font-size: 11.5px; font-weight: 800; padding: 3px 11px; border-radius: 999px; color: #fff; background: var(--cfg-brand); letter-spacing: .02em; white-space: nowrap; }
.cfg-dashcard-pill.dash-Article20 { background: #0d9488; }
.cfg-dashcard-pill.dash-Article19 { background: #6366f1; }
.cfg-dashcard-pill.dash-Article16 { background: #0369a1; }
.cfg-dashcard-pill.dash-Combined { background: #a16207; }
.cfg-dashcard-meta { font-size: 12.5px; font-weight: 600; color: var(--cfg-soft); flex: 1 1 auto; }
.cfg-dashcard-actions { display: flex; gap: 6px; flex: 0 0 auto; }
.cfg-dashcard-edit, .cfg-dashcard-del { border: 1px solid var(--cfg-line); border-radius: 8px; background: #fff; cursor: pointer; height: 30px; font-size: 12.5px; font-weight: 700; color: var(--cfg-navy); display: inline-flex; align-items: center; gap: 5px; transition: all .14s ease; }
.cfg-dashcard-edit { padding: 0 11px; }
.cfg-dashcard-edit:hover { border-color: var(--cfg-brand); color: var(--cfg-brand); background: rgba(13,148,136,.06); }
.cfg-dashcard-del { width: 30px; justify-content: center; color: #b4424e; font-size: 18px; line-height: 1; }
.cfg-dashcard-del:hover { background: #fdecee; border-color: #f3c0c6; }
.cfg-dashcard-codes { display: flex; flex-wrap: wrap; gap: 5px 20px; margin-top: 10px; font-size: 12.5px; color: var(--cfg-navy); }
.cfg-dashcard-codes b { font-weight: 800; color: var(--cfg-soft); font-size: 10.5px; text-transform: uppercase; letter-spacing: .03em; }
.cfg-dashcard-muted { color: var(--cfg-soft); font-style: italic; }
.cfg-dashadd { margin-top: 12px; width: 100%; border: 1.5px dashed var(--cfg-line); background: #fff; color: var(--cfg-brand); font-size: 13px; font-weight: 800; border-radius: 11px; padding: 11px; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 7px; transition: all .15s ease; }
.cfg-dashadd:hover { background: rgba(13,148,136,.06); border-color: var(--cfg-brand); }
.cfg-dashback { border: none; background: none; color: var(--cfg-soft); font-size: 12.5px; font-weight: 700; cursor: pointer; display: inline-flex; align-items: center; gap: 5px; padding: 2px 0; margin-bottom: 12px; }
.cfg-dashback:hover { color: var(--cfg-brand); }
.cfg-dashform-title { font-size: 14.5px; font-weight: 800; color: var(--cfg-navy); margin-bottom: 4px; }

/* ---- dashboard mapping: plain-language explainer, examples and the dry-run check ---- */
.cfg-dashexplain { border: 1px solid var(--cfg-line); border-left: 3px solid var(--cfg-brand); border-radius: 10px; padding: 12px 14px; background: #fbfdfd; }
.cfg-dashexplain-t { font-size: 13px; font-weight: 800; color: var(--cfg-navy); }
.cfg-dashexplain-b { font-size: 12.5px; color: var(--cfg-navy); margin-top: 4px; line-height: 1.5; }
.cfg-dashexplain-flow { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 10px; }
.cfg-dfx { font-size: 11.5px; font-weight: 700; color: var(--cfg-soft); background: rgba(20,45,70,.05); border-radius: 6px; padding: 3px 9px; }
.cfg-dfx-hi { color: #fff; background: var(--cfg-brand); }
.cfg-dfarrow { color: var(--cfg-soft); font-size: 12px; }
.cfg-dashexplain-note { font-size: 11.5px; color: var(--cfg-soft); margin-top: 9px; line-height: 1.5; }
.cfg-dashlist-actions { display: flex; gap: 8px; align-items: center; }
.cfg-dashlist-actions .cfg-dashadd { flex: 1 1 auto; }
.cfg-dashlist-actions .cfg-btn { margin-top: 12px; white-space: nowrap; }

.cfg-codepicker-row.is-unused .cfg-codepicker-code { color: var(--cfg-soft); }
.cfg-codepicker-use { flex: 0 0 auto; font-style: normal; font-size: 10px; font-weight: 800; margin-left: 7px; padding: 1px 6px; border-radius: 999px; background: rgba(13,148,136,.1); color: #0f7b5c; letter-spacing: .02em; }
.cfg-codepicker-use.none { background: rgba(20,45,70,.06); color: var(--cfg-soft); }
/* Same KPI code, different KPI in another reference year — hover for the per-year list. */
.cfg-codepicker-warn { flex: 0 0 auto; font-style: normal; font-size: 10px; font-weight: 800; margin-left: 6px; padding: 1px 6px; border-radius: 999px; background: rgba(217,119,6,.13); color: #9a5b06; letter-spacing: .02em; cursor: help; white-space: nowrap; }

.cfg-dashex { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 4px; }
.cfg-dashex-head { flex: 1 0 100%; font-size: 10.5px; font-weight: 800; color: var(--cfg-soft); text-transform: uppercase; letter-spacing: .03em; }
.cfg-dashex-card { flex: 1 1 240px; border: 1px solid var(--cfg-line); border-radius: 10px; padding: 9px 11px; background: #fff; }
.cfg-dashex-card.is-match { border-color: #0f7b5c; background: #f4fbf8; }
.cfg-dashex-card.is-none { opacity: .6; }
.cfg-dashex-top { display: flex; align-items: center; gap: 7px; font-size: 12.5px; color: var(--cfg-navy); }
.cfg-dashex-badge { font-size: 10px; font-weight: 800; padding: 2px 7px; border-radius: 999px; }
.cfg-dashex-badge.ok { background: #dcf3ea; color: #0f7b5c; }
.cfg-dashex-badge.warn { background: #fdf1dc; color: #9a6510; }
.cfg-dashex-badge.none { background: rgba(20,45,70,.06); color: var(--cfg-soft); }
.cfg-dashex-codes { margin-top: 6px; display: flex; flex-direction: column; gap: 2px; font-size: 11px; color: var(--cfg-navy); word-break: break-all; }
.cfg-dashex-codes i { font-style: normal; font-weight: 800; color: var(--cfg-soft); margin-right: 5px; }
.cfg-dashex-use { margin-top: 8px; border: 1px solid var(--cfg-line); background: #fff; border-radius: 7px; font-size: 11.5px; font-weight: 700; color: var(--cfg-brand); padding: 4px 10px; cursor: pointer; }
.cfg-dashex-use:hover { background: rgba(13,148,136,.07); border-color: var(--cfg-brand); }

.cfg-dashcard-check { border: 1px solid var(--cfg-line); border-radius: 8px; background: #fff; cursor: pointer; height: 30px; padding: 0 11px; font-size: 12.5px; font-weight: 700; color: var(--cfg-navy); display: inline-flex; align-items: center; gap: 5px; transition: all .14s ease; }
.cfg-dashcard-check:hover { border-color: var(--cfg-brand); color: var(--cfg-brand); background: rgba(13,148,136,.06); }
.cfg-dashcard.v-ok { border-color: #86c9b1; }
.cfg-dashcard.v-warn { border-color: #e6b465; }
.cfg-dashcard.v-error { border-color: #e29aa3; }
.cfg-dashcard-result { margin-top: 10px; border-top: 1px solid var(--cfg-line); padding-top: 10px; }

.cfg-dashcheck { margin-top: 14px; border: 1px solid var(--cfg-line); border-radius: 11px; padding: 12px 14px; background: #fbfcfd; }
.cfg-dashcheck-verdict { font-size: 13px; font-weight: 800; padding: 7px 11px; border-radius: 8px; margin-bottom: 10px; }
.cfg-dashcheck-verdict.v-ok { background: #dcf3ea; color: #0b6249; }
.cfg-dashcheck-verdict.v-warn { background: #fdf1dc; color: #8a5a0c; }
.cfg-dashcheck-verdict.v-error { background: #fdecee; color: #9a2f3c; }
.cfg-dashcheck-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 7px; }
.cfg-dashcheck-list li { font-size: 12.5px; line-height: 1.45; padding-left: 20px; position: relative; color: var(--cfg-navy); }
.cfg-dashcheck-list li b { display: block; font-weight: 800; }
.cfg-dashcheck-list li span { color: var(--cfg-soft); }
.cfg-dashcheck-list li::before { position: absolute; left: 0; top: 0; font-weight: 900; font-size: 12px; }
.cfg-dashcheck-list li.c-ok::before { content: '✓'; color: #0f7b5c; }
.cfg-dashcheck-list li.c-warn::before { content: '!'; color: #b57a1a; }
.cfg-dashcheck-list li.c-error::before { content: '✕'; color: #b4424e; }
.cfg-dashcheck-sub { margin-top: 12px; font-size: 10.5px; font-weight: 800; color: var(--cfg-soft); text-transform: uppercase; letter-spacing: .03em; }
/* Obligor names run to 60+ characters; without a fixed layout the name column eats the row and
   pushes Scope 1/2/Total off the edge of the modal — the only columns anyone opened this for. */
.cfg-dashcheck-tbl { width: 100%; border-collapse: collapse; margin-top: 6px; font-size: 12px; table-layout: fixed; }
.cfg-dashcheck-tbl th:first-child, .cfg-dashcheck-tbl td:first-child { width: auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cfg-dashcheck-tbl th:nth-child(2), .cfg-dashcheck-tbl td:nth-child(2) { width: 46px; }
.cfg-dashcheck-tbl th:nth-child(n+3), .cfg-dashcheck-tbl td:nth-child(n+3) { width: 94px; padding-left: 2px; padding-right: 2px; }
.cfg-dashcheck-tbl th { text-align: right; font-weight: 800; color: var(--cfg-soft); font-size: 10.5px; text-transform: uppercase; padding: 4px 6px; border-bottom: 1px solid var(--cfg-line); }
.cfg-dashcheck-tbl th:first-child, .cfg-dashcheck-tbl td:first-child { text-align: left; }
.cfg-dashcheck-tbl td { text-align: right; padding: 5px 6px; border-bottom: 1px solid #f1f3f6; color: var(--cfg-navy); white-space: nowrap; }
.cfg-dashcheck-tbl tr.is-mismatch td { background: #fff8f8; }
.cfg-dashcheck-flag { font-style: normal; font-size: 9.5px; font-weight: 800; color: var(--cfg-soft); margin-left: 4px; }
.cfg-dashcheck-flag.bad { color: #b4424e; }
.cfg-dashcheck-foot { margin-top: 8px; font-size: 12px; color: var(--cfg-soft); }
.cfg-btn.cfg-btn-danger { background: #b4424e; border-color: #b4424e; color: #fff; }

/* framework content editor (fields / calculations / KPIs tabs) */
.cfg-content-tabs { display: flex; gap: 4px; }
.cfg-content-tab { border: none; background: none; cursor: pointer; font-size: 13px; font-weight: 700; color: var(--cfg-soft); padding: 9px 14px; border-bottom: 2.5px solid transparent; margin-bottom: -1px; transition: color .14s ease, border-color .14s ease; }
.cfg-content-tab:hover { color: var(--cfg-navy); }
.cfg-content-tab.is-active { color: var(--cfg-brand); border-bottom-color: var(--cfg-brand); }

/* framework content editor — wider modal, roomier spreadsheet-style editable table */
.cfg-content-modal .cfg-modal-body { padding: 22px 26px; gap: 16px; }
/* Excel-style formula bar: shows/edits the full value of whichever cell is focused */
.cfg-ct-formulabar { display: flex; align-items: flex-start; gap: 10px; margin-top: 2px; }
.cfg-ct-fb-label { flex: 0 0 auto; margin-top: 9px; font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .03em; color: var(--cfg-soft); background: #f5f8fb; border: 1px solid var(--cfg-line); border-radius: 8px; padding: 5px 10px; white-space: nowrap; max-width: 180px; overflow: hidden; text-overflow: ellipsis; }
.cfg-ct-fb-inputwrap { flex: 1 1 auto; display: flex; flex-direction: column; min-width: 0; }
.cfg-ct-fb-input { min-height: 40px; max-height: 260px; overflow-y: auto; resize: vertical; border: 1.5px solid var(--cfg-line); border-radius: 10px; padding: 9px 12px; font-size: 13.5px; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; color: var(--cfg-navy); background: #fff; }
.cfg-ct-fb-input:disabled { background: #f5f8fb; color: var(--cfg-soft); cursor: default; }
.cfg-ct-fb-input:focus { outline: none; border-color: var(--cfg-brand); box-shadow: 0 0 0 3px rgba(13,148,136,.14); }
.cfg-ct-fb-count { align-self: flex-end; margin-top: 3px; font-size: 10.5px; color: var(--cfg-soft); }

/* algorithm-writing helper: insert-id / insert-function dropdowns + PDF guide link */
.cfg-ct-algohelp { display: flex; align-items: center; gap: 8px; margin-top: -6px; }
.cfg-ct-algohelp-dd { position: relative; }
.cfg-ct-algohelp-btn { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--cfg-line); background: #fff; color: var(--cfg-navy); font-size: 12px; font-weight: 700; border-radius: 8px; padding: 6px 11px; cursor: pointer; transition: all .14s ease; }
.cfg-ct-algohelp-btn:hover { border-color: var(--cfg-brand); color: var(--cfg-brand); background: rgba(13,148,136,.06); }
.cfg-ct-algohelp-menu { display: none; position: absolute; top: calc(100% + 6px); left: 0; z-index: 20; min-width: 300px; max-width: 360px; max-height: 320px; overflow: auto; background: #fff; border: 1px solid var(--cfg-line); border-radius: 12px; box-shadow: 0 20px 46px -18px rgba(16,40,70,.35); padding: 6px; }
.cfg-ct-algohelp-menu.open { display: block; }
.cfg-ct-algohelp-menu-right { left: auto; right: 0; }

/* column manager (Fields/Data/KPIs tabs — show/hide + reorder) */
.cfg-content-tabsrow { display: flex; align-items: center; justify-content: space-between; gap: 10px; border-bottom: 1px solid var(--cfg-line); }
.cfg-colmgr-list { display: flex; flex-direction: column; }
.cfg-colmgr-row { display: flex; align-items: center; gap: 4px; padding: 3px 6px; border-radius: 8px; }
.cfg-colmgr-row:hover { background: rgba(13,148,136,.06); }
.cfg-colmgr-move { border: 1px solid var(--cfg-line); background: #fff; border-radius: 6px; width: 22px; height: 22px; font-size: 11px; color: var(--cfg-soft); cursor: pointer; flex: 0 0 auto; }
.cfg-colmgr-move:hover:not(:disabled) { border-color: var(--cfg-brand); color: var(--cfg-brand); }
.cfg-colmgr-move:disabled { opacity: .35; cursor: default; }
.cfg-colmgr-lbl { display: flex; align-items: center; gap: 8px; font-size: 12.5px; font-weight: 600; color: var(--cfg-navy); cursor: pointer; padding: 4px 2px; flex: 1 1 auto; }
.cfg-colmgr-reset { width: 100%; margin-top: 4px; border: none; background: none; color: var(--cfg-brand); font-size: 11.5px; font-weight: 700; padding: 8px; cursor: pointer; border-top: 1px solid var(--cfg-line); }
.cfg-colmgr-reset:hover { text-decoration: underline; }
.cfg-ct-algohelp-group { font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: var(--cfg-soft); padding: 8px 9px 4px; }
.cfg-ct-algohelp-item { display: flex; flex-direction: column; align-items: flex-start; gap: 1px; width: 100%; text-align: left; border: none; background: none; border-radius: 8px; padding: 7px 9px; cursor: pointer; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 12px; color: var(--cfg-navy); }
.cfg-ct-algohelp-item:hover { background: rgba(13,148,136,.08); }
.cfg-ct-algohelp-item b { font-weight: 700; }
.cfg-ct-algohelp-item span { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-size: 11px; font-weight: 500; color: var(--cfg-soft); }
.cfg-ct-algohelp-empty { font-size: 12px; color: var(--cfg-soft); padding: 10px; text-align: center; }
.cfg-ct-algohelp-guide { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; font-size: 12px; font-weight: 700; color: var(--cfg-brand); text-decoration: none; padding: 6px 4px; cursor: pointer; }
.cfg-ct-algohelp-guide:hover { text-decoration: underline; }

/* "Industries" gating button (Fields tab) + its nested editor rows */
.cfg-ct-indbtn { border: 1px solid var(--cfg-line); border-radius: 999px; background: #fff; color: var(--cfg-navy); font-size: 11.5px; font-weight: 800; width: 26px; height: 26px; cursor: pointer; transition: all .14s ease; }
.cfg-ct-indbtn:hover { border-color: var(--cfg-brand); color: var(--cfg-brand); background: rgba(13,148,136,.08); }
/* "all industries" (no gating rows) — a word, not a number, so it needs to be a pill rather than a
   circle, and muted so a genuine industry restriction still stands out in a long column. */
.cfg-ct-indbtn-all { width: auto; min-width: 26px; padding: 0 9px; border-style: dashed; color: var(--cfg-muted, #64748b); font-weight: 700; letter-spacing: .01em; }
#cfgIndList .cfg-field-row select.cfg-ind-industry, #cfgIndList .cfg-field-row select.cfg-ind-sub { min-width: 170px; border: 1px solid var(--cfg-line); border-radius: 9px; padding: 8px 11px; font-size: 13px; color: var(--cfg-navy); background: #fff; }
#cfgIndList .cfg-field-row { align-items: center; }

/* "Duplicate to..." target picker */
.cfg-content-tabsrow-actions { display: flex; align-items: center; gap: 8px; }
#cfgDupTargets .cfg-field-row { align-items: center; }
#cfgDupTargets .cfg-field-row select.cfg-dup-fw { min-width: 220px; border: 1px solid var(--cfg-line); border-radius: 9px; padding: 8px 11px; font-size: 13px; color: var(--cfg-navy); background: #fff; }
#cfgDupTargets .cfg-field-row select.cfg-dup-yr { min-width: 90px; border: 1px solid var(--cfg-line); border-radius: 9px; padding: 8px 11px; font-size: 13px; color: var(--cfg-navy); background: #fff; }
.cfg-dup-result { font-size: 12.5px; color: var(--cfg-navy); padding: 6px 10px; border-radius: 8px; background: rgba(13,148,136,.06); margin-bottom: 4px; display: flex; align-items: center; gap: 6px; }
.cfg-dup-result svg { flex: 0 0 auto; }
.cfg-dup-pending { background: rgba(20,45,70,.04); color: var(--cfg-soft); }
.cfg-dup-done { background: rgba(15,123,92,.08); color: #0f7b5c; }
.cfg-dup-skipped { background: rgba(20,45,70,.04); color: var(--cfg-soft); }
.cfg-dup-error { background: #fdecee; color: #b4424e; }
.cfg-dup-progresswrap { margin-bottom: 10px; display: flex; align-items: center; gap: 10px; }
.cfg-dup-progressbar { flex: 1 1 auto; height: 7px; border-radius: 999px; background: rgba(20,45,70,.08); overflow: hidden; }
.cfg-dup-progressfill { height: 100%; background: var(--cfg-brand); transition: width .25s ease; }
.cfg-dup-progresslbl { font-size: 11.5px; font-weight: 700; color: var(--cfg-soft); white-space: nowrap; }
.cfg-dup-spin { width: 10px; height: 10px; border-radius: 50%; border: 2px solid rgba(20,45,70,.15); flex: 0 0 auto; }
.cfg-dup-spin-active { border-top-color: var(--cfg-brand); animation: cfgDupSpin .7s linear infinite; }
@keyframes cfgDupSpin { to { transform: rotate(360deg); } }

/* Excel import: the upload is a single request with no interim progress from the server, so this is
   an indeterminate bar (a moving band, not a real percentage) — it exists purely so a slow import
   reads as "still working" instead of a frozen page. See cfgCtImportRun(). */
.cfg-ct-import-progresswrap { margin-bottom: 10px; }
.cfg-ct-import-progressbar { height: 7px; border-radius: 999px; background: rgba(20,45,70,.08); overflow: hidden; position: relative; }
.cfg-ct-import-progressbar-indeterminate::before {
    content: ""; position: absolute; top: 0; bottom: 0; left: -30%; width: 30%;
    border-radius: 999px; background: var(--cfg-brand);
    animation: cfgCtImportIndeterminate 1.1s ease-in-out infinite;
}
@keyframes cfgCtImportIndeterminate {
    0% { left: -30%; }
    50% { left: 60%; }
    100% { left: 110%; }
}
.cfg-dup-success { display: flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 700; color: #0f7b5c; background: rgba(15,123,92,.1); border-radius: 10px; padding: 10px 12px; margin-bottom: 10px; }
.cfg-content-tabs { gap: 6px; }
.cfg-content-tab { padding: 10px 18px; font-size: 13.5px; }
/* ============================================================================================
   CONFIGURATION CONTENT GRID — a spreadsheet, not a form that happens to sit in a table.
   The inversion this design rests on: the <td> owns the grid lines and all visual state, and the
   <input>/<select> inside it is stripped of every affordance (border, radius, background, chrome)
   so it reads as plain text sitting in a cell. What tells you where you are is the active-cell
   ring and the highlighted row/column headers, exactly like Excel — not a box drawn around every
   editable value. See the grid controller in AdminConfiguration.cshtml for the behaviour half.
   ============================================================================================ */
.cfg-content-tablewrap {
    /* fills the height the modal gives it rather than a fixed 58vh, so a tall screen shows more rows */
    max-height: calc(100vh - 390px); min-height: 260px; overflow: auto;
    border: 1px solid #cfd8e3; border-radius: 10px; background: #fff;
}
.cfg-content-table { border-collapse: separate; border-spacing: 0; width: 100%; font-size: 13px; table-layout: fixed; }

/* ---- column headers ---- */
.cfg-content-table thead th {
    position: sticky; top: 0; z-index: 3;
    padding: 8px 10px; text-align: left; font-weight: 700; font-size: 10.5px; text-transform: uppercase; letter-spacing: .35px;
    color: var(--cfg-soft); background: #eef2f7;
    border-bottom: 1px solid #cfd8e3; border-right: 1px solid #dde4ec;
    white-space: nowrap; overflow: hidden; user-select: none; transition: background .12s ease, color .12s ease;
}
.cfg-content-table thead th:last-child { border-right: 0; }
/* the header of the column you're in lights up — the other half of "where am I" in a wide grid */
.cfg-content-table thead th.is-activecol { background: #d6e6f4; color: var(--cfg-navy); }
.cfg-content-th-lbl { display: block; overflow: hidden; text-overflow: ellipsis; padding-right: 10px; }
.cfg-content-resize { position: absolute; top: 0; right: 0; bottom: 0; width: 8px; cursor: col-resize; z-index: 4; }
.cfg-content-resize:hover, .cfg-content-resize:active { background: rgba(13,148,136,.35); }

/* ---- body cells: the grid itself. padding:0 because the input fills the cell edge to edge ---- */
.cfg-content-table tbody td {
    padding: 0; overflow: hidden; vertical-align: middle; background: #fff; position: relative;
    border-bottom: 1px solid #e4eaf1; border-right: 1px solid #e4eaf1;
}
.cfg-content-table tbody td:last-child { border-right: 0; }
.cfg-content-table tbody tr:hover td { background: #f6f9fc; }

/* ---- active cell + range selection: the core spreadsheet affordance ---- */
.cfg-content-table tbody td.is-inrange { background: rgba(13,148,136,.11) !important; }
.cfg-content-table tbody td.is-active {
    background: #fff !important; z-index: 2;
    /* drawn as an inset ring so it never shifts the cell's box or overlaps its neighbours */
    box-shadow: inset 0 0 0 2px var(--cfg-brand);
}
.cfg-content-table tbody tr.is-activerow td { background: #f2f8fb; }
.cfg-content-table tbody tr.is-activerow td.is-inrange { background: rgba(13,148,136,.13) !important; }

/* Deactivated rows stay visible and editable but read as switched-off at a glance, so hiding them is
   a preference rather than the only way to tell them apart. */
.cfg-ct-row-inactive td { opacity: .58; }
.cfg-ct-row-inactive:hover td { opacity: 1; }

/* show/hide inactive switch */
.cfg-ct-switch { display: inline-flex; align-items: center; gap: 7px; cursor: pointer; user-select: none; padding: 5px 10px 5px 7px; border: 1px solid var(--cfg-line); border-radius: 999px; background: #fff; transition: all .14s ease; }
.cfg-ct-switch:hover { border-color: #c7d0da; }
.cfg-ct-switch input { position: absolute; opacity: 0; width: 0; height: 0; }
.cfg-ct-switch-track { position: relative; width: 30px; height: 17px; border-radius: 999px; background: #d5dde5; transition: background .16s ease; flex: 0 0 auto; }
.cfg-ct-switch-thumb { position: absolute; top: 2px; left: 2px; width: 13px; height: 13px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(20,45,70,.3); transition: transform .16s cubic-bezier(.4,0,.2,1); }
.cfg-ct-switch input:checked + .cfg-ct-switch-track { background: var(--cfg-brand); }
.cfg-ct-switch input:checked + .cfg-ct-switch-track .cfg-ct-switch-thumb { transform: translateX(13px); }
.cfg-ct-switch input:focus-visible + .cfg-ct-switch-track { box-shadow: 0 0 0 3px rgba(13,148,136,.25); }
.cfg-ct-switch-lbl { font-size: 11.5px; font-weight: 700; color: var(--cfg-navy); }
.cfg-ct-switch-chip { font-size: 10.5px; font-weight: 800; color: var(--cfg-soft); background: rgba(20,45,70,.07); border-radius: 999px; padding: 2px 7px; }

/* ---- Excel upload report ---- */
.cfg-imp-banner { display: flex; align-items: flex-start; gap: 10px; padding: 12px 14px; border-radius: 12px; font-size: 12.5px; margin-bottom: 12px; }
.cfg-imp-banner svg { flex: 0 0 auto; margin-top: 1px; }
.cfg-imp-banner.is-ok { background: rgba(16,185,129,.10); color: #0d7a5f; }
.cfg-imp-banner.is-err { background: rgba(239,68,68,.10); color: #b3261e; }
.cfg-imp-banner-sub { font-weight: 500; opacity: .85; margin-top: 2px; }
.cfg-imp-stats { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; }
.cfg-imp-stat { flex: 1 1 120px; border: 1px solid var(--cfg-line); border-radius: 11px; padding: 9px 12px; background: #fff; }
.cfg-imp-stat-l { font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .3px; color: var(--cfg-soft); }
.cfg-imp-stat-v { font-size: 12.5px; color: var(--cfg-navy); margin-top: 3px; }
.cfg-imp-sec { border: 1px solid var(--cfg-line); border-radius: 12px; margin-bottom: 10px; overflow: hidden; background: #fff; }
.cfg-imp-sec-h { font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .3px; color: var(--cfg-soft); padding: 9px 13px; background: #f6f9fc; border-bottom: 1px solid var(--cfg-line); }
.cfg-imp-sec.is-err .cfg-imp-sec-h { background: rgba(239,68,68,.09); color: #b3261e; }
.cfg-imp-sec.is-warn .cfg-imp-sec-h { background: rgba(245,158,11,.13); color: #9a6206; }
.cfg-imp-sec ul { margin: 0; padding: 10px 13px 12px 28px; font-size: 12.5px; color: var(--cfg-navy); }
.cfg-imp-sec li { margin-bottom: 5px; line-height: 1.45; }
.cfg-imp-rows { max-height: 240px; overflow-y: auto; }
.cfg-imp-row { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; padding: 7px 13px; border-bottom: 1px solid rgba(20,45,70,.05); font-size: 12px; }
.cfg-imp-row:last-child { border-bottom: none; }
.cfg-imp-tag { font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .3px; border-radius: 999px; padding: 2px 8px; flex: 0 0 auto; }
.cfg-imp-tag.is-new { background: rgba(16,185,129,.14); color: #0d7a5f; }
.cfg-imp-tag.is-upd { background: rgba(59,130,246,.14); color: #1d4ed8; }
.cfg-imp-loc { color: var(--cfg-soft); font-weight: 600; }
.cfg-imp-code { font-weight: 700; color: var(--cfg-navy); }
/* Title beside the code in an import review — secondary to the code, ellipsised, never wraps the row. */
.cfg-imp-title { color: var(--cfg-soft); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; flex: 1 1 auto; }
/* Dry-run banner: deliberately not the green "applied" treatment — nothing has happened yet. */
.cfg-imp-banner.is-preview { background: rgba(0,99,155,.07); border-color: rgba(0,99,155,.28); color: #0b3d5c; }
.cfg-btn.cfg-btn-apply { background: #b45309; border-color: #b45309; }
.cfg-btn.cfg-btn-apply:hover { background: #92400e; border-color: #92400e; }
.cfg-imp-note { flex: 1 1 100%; font-size: 11.5px; color: #9a6206; }
/* The inputs stop looking like inputs. No border, no radius, no background, no focus ring — the
   cell around them carries all of that. This single rule is what turns the table from "a form in a
   grid" into "a spreadsheet". */
.cfg-content-table td input[type="text"], .cfg-content-table td select {
    width: 100%; min-width: 0; height: 34px; border: 0; border-radius: 0; background: transparent;
    padding: 0 9px; font-size: 13px; font-weight: 500; font-family: inherit; color: var(--cfg-navy);
    -webkit-text-fill-color: currentColor;
}
.cfg-content-table td input[type="text"]:focus, .cfg-content-table td select:focus { outline: none; }
/* Selects lose the native chrome too, and earn a caret only on hover / when active — so a dropdown
   cell looks like every other cell at rest but still announces itself as one when you reach it. */
.cfg-content-table td select { appearance: none; -webkit-appearance: none; cursor: pointer; padding-right: 15px; }
.cfg-content-table td.cfg-ct-cell-sel::after {
    content: ""; position: absolute; right: 5px; top: 50%; margin-top: -2px; width: 0; height: 0; pointer-events: none;
    border-left: 3.5px solid transparent; border-right: 3.5px solid transparent; border-top: 4px solid #93a3b5;
    opacity: 0; transition: opacity .12s ease;
}
.cfg-content-table tbody tr:hover td.cfg-ct-cell-sel::after,
.cfg-content-table tbody td.cfg-ct-cell-sel.is-active::after { opacity: 1; }
.cfg-content-table td input[type="checkbox"] { width: 16px; height: 16px; cursor: pointer; display: block; margin: 9px auto; }
/* non-input cell content (the "—" / "save first" notes, the industries & group-columns buttons) has
   to supply its own padding now that the <td> has none */
.cfg-content-table tbody td > span.cfg-muted { display: block; padding: 0 9px; line-height: 34px; }
.cfg-content-table tbody td > .cfg-ct-indbtn { margin: 4px auto; display: block; }

/* Pinned to the right edge so Save/Delete stay reachable however far the grid scrolls sideways.
   Two things this rule has to get right, both of which silently defeat sticky if missed:
     - it must outrank the `.cfg-content-table tbody td` block above, which sets position:relative;
     - it must NOT be display:flex — a flex child of a <tr> is wrapped in an anonymous table-cell,
       so sticky would resolve against that wrapper instead of the scroll container and never pin.
   The buttons are already inline-flex, so text-align is enough to lay them out. */
.cfg-content-table tbody td.cfg-ct-actions {
    position: sticky; right: 0; z-index: 3;
    text-align: center; white-space: nowrap; padding: 0 6px;
    background: #fff; border-left: 1px solid #cfd8e3;
}
.cfg-content-table tbody tr:hover td.cfg-ct-actions { background: #f6f9fc; }
.cfg-content-table tbody tr.is-activerow td.cfg-ct-actions { background: #f2f8fb; }
.cfg-content-table thead th.cfg-ct-actionshead { position: sticky; right: 0; top: 0; z-index: 5; border-left: 1px solid #cfd8e3; }
.cfg-ct-save, .cfg-ct-del { border: 1px solid var(--cfg-line); border-radius: 8px; background: #fff; cursor: pointer; width: 28px; height: 28px; margin: 0 2px; display: inline-flex; align-items: center; justify-content: center; transition: all .14s ease; }
.cfg-ct-save { color: #0f7b5c; }
.cfg-ct-save:hover { border-color: #0f7b5c; background: rgba(15,123,92,.08); }
.cfg-ct-del { color: #b4424e; font-size: 18px; line-height: 1; }
.cfg-ct-del:hover { border-color: #b4424e; background: #fdecee; }
.cfg-content-modal .cfg-dashadd { margin-top: 4px; }

/* ---- row-header gutter: Excel's numbered rail, sticky so it survives horizontal scrolling.
   The number and the bulk-select checkbox share one cell — the number is the resting state and the
   checkbox takes over on hover or once the row is picked, so selection stays available without
   spending a permanent column on it. ---- */
/* Same specificity caveat as the actions column above: this has to outrank `.cfg-content-table
   tbody td`, or the gutter silently falls back to position:relative and stops pinning. */
.cfg-content-table tbody td.cfg-ct-selcell,
.cfg-content-table thead th.cfg-ct-selcell {
    position: sticky; left: 0; width: 46px; text-align: center; padding: 0 !important;
    background: #eef2f7 !important; border-right: 1px solid #cfd8e3 !important; user-select: none;
}
.cfg-content-table tbody td.cfg-ct-selcell { z-index: 3; }
.cfg-content-table thead th.cfg-ct-selcell { top: 0; z-index: 5; }
.cfg-content-table tbody tr.is-activerow td.cfg-ct-selcell { background: #d6e6f4 !important; }
.cfg-content-table tbody tr.is-picked td.cfg-ct-selcell { background: #dff1ee !important; }
.cfg-ct-rowno { display: block; font-size: 10.5px; font-weight: 700; color: var(--cfg-soft); line-height: 34px; transition: opacity .12s ease; }
.cfg-content-table tbody td.cfg-ct-selcell input[type="checkbox"] {
    position: absolute; left: 0; right: 0; top: 50%; margin: -8px auto 0; opacity: 0; transition: opacity .12s ease;
}
.cfg-content-table tbody tr:hover .cfg-ct-rowno,
.cfg-content-table tbody tr.is-picked .cfg-ct-rowno { opacity: 0; }
.cfg-content-table tbody tr:hover td.cfg-ct-selcell input[type="checkbox"],
.cfg-content-table tbody tr.is-picked td.cfg-ct-selcell input[type="checkbox"] { opacity: 1; }

/* ---- keyboard-shortcut legend under the formula bar ---- */
.cfg-ct-keyhint { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 11px; color: var(--cfg-soft); margin-top: -4px; }
.cfg-ct-keyhint kbd {
    font-family: inherit; font-size: 10px; font-weight: 700; color: var(--cfg-navy); background: #eef2f7;
    border: 1px solid #d7dfe8; border-bottom-width: 2px; border-radius: 5px; padding: 1px 5px; margin: 0 1px;
}
.cfg-ct-keyhint span { white-space: nowrap; }
.cfg-ct-bulkbar {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 9px 14px; margin-bottom: 8px; border-radius: 10px;
    background: rgba(13,148,136,.08); border: 1px solid rgba(13,148,136,.25);
    font-size: 12.5px; font-weight: 600; color: var(--cfg-navy);
}
.cfg-ct-bulkbar-actions { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.cfg-imp-banner.is-warn { background: rgba(245,158,11,.13); color: #9a6206; }

/* ---- Fields-tab bulk editors (pillar/topic, industries, copy-to) ---- */
/* the "you are about to change these" line — deliberately verbose (names, not just a count),
   since a bulk write you cannot undo deserves to name its targets before it runs */
.cfg-bulk-target {
    font-size: 12.5px; font-weight: 700; color: var(--cfg-navy); background: rgba(13,148,136,.08);
    border: 1px solid rgba(13,148,136,.25); border-radius: 10px; padding: 9px 12px; margin-bottom: 12px;
    line-height: 1.5; word-break: break-word;
}
.cfg-bulk-grid { display: flex; gap: 12px; flex-wrap: wrap; margin: 12px 0 4px; }
.cfg-bulk-grid > label { flex: 1 1 200px; display: flex; flex-direction: column; gap: 5px; }
.cfg-bulk-grid > label > span { font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .3px; color: var(--cfg-soft); }
.cfg-bulk-grid select {
    border: 1px solid var(--cfg-line); border-radius: 9px; padding: 9px 11px; font-size: 13px;
    font-weight: 500; color: var(--cfg-navy); background: #fafbfc; transition: all .14s ease;
}
.cfg-bulk-grid select:focus { outline: none; border-color: var(--cfg-brand); background: #fff; box-shadow: 0 0 0 3px rgba(13,148,136,.14); }
.cfg-bulk-multi {
    width: 100%; margin-top: 8px; border: 1px solid var(--cfg-line); border-radius: 10px;
    padding: 6px; font-size: 13px; color: var(--cfg-navy); background: #fff;
}
.cfg-bulk-chk { display: flex; align-items: center; gap: 8px; margin-top: 10px; font-size: 12.5px; font-weight: 600; color: var(--cfg-navy); cursor: pointer; }
.cfg-bulk-chk input { width: 17px; height: 17px; cursor: pointer; }
/* amber, not red: these actions are wide-reaching but legitimate and reversible by re-running */
.cfg-bulk-warn {
    margin-top: 12px; padding: 9px 12px; border-radius: 10px; font-size: 12px; line-height: 1.5;
    background: rgba(245,158,11,.13); color: #9a6206;
}

/* Algorithm cell warning (Data/KPIs tabs): a formula that will not parse — and therefore evaluate
   to NaN — is flagged red-amber right where it's being typed, the same check the Excel import runs,
   instead of only surfacing after a round-trip through a workbook. */
.cfg-algo-wrap { position: relative; display: block; }
/* The input has no border of its own in the grid, so a broken formula is flagged by tinting the
   cell itself rather than by re-drawing a box around the text. */
.cfg-algo-wrap.cfg-algo-broken { background: rgba(245,158,11,.13); box-shadow: inset 0 0 0 1px rgba(217,119,6,.45); }
.cfg-algo-wrap.cfg-algo-broken input[data-role="algo"] { padding-right: 24px; }
.cfg-algo-warn {
    position: absolute; right: 7px; top: 50%; transform: translateY(-50%);
    color: #b3261e; font-size: 13px; line-height: 1; cursor: default; pointer-events: auto;
}
.cfg-algo-broken-chip {
    font-size: 11.5px; font-weight: 800; color: #b3261e; background: rgba(239,68,68,.10);
    border-radius: 999px; padding: 3px 9px; cursor: default;
}

/* Fields tab "Available in framework" cell: a field is normally only visible here because it is
   linked to the framework, but an orphaned field — real submitted values under this framework's
   assessments with no ESGVariableSimple_ReportingSubCategory link — is surfaced too (see
   ConfigFrameworkContent) so it does not silently disappear on the live data table. The checkbox
   flips the link directly (ConfigSetFrameworkFieldLink); unchecked = orphaned = flagged red-amber,
   the same visual language as the Data/KPIs algorithm-warning cell. */
.cfg-fw-link-wrap { display: inline-flex; align-items: center; gap: 5px; }
.cfg-fw-link-wrap.cfg-fw-link-warn { background: rgba(245,158,11,.13); box-shadow: inset 0 0 0 1px rgba(217,119,6,.45); border-radius: 6px; padding: 2px 6px; }
.cfg-fw-link-warn-ic { color: #b3261e; font-size: 13px; line-height: 1; cursor: default; }

/* unsaved-edit cue: a left accent on the row + the row's own ✓ turns solid, so it's obvious
   which rows still need the footer "Save changes" (or their per-row ✓) to persist. */
/* the accent lives on the sticky row-header itself, so it stays visible at any horizontal scroll */
.cfg-content-table tr.cfg-ct-row-dirty > td.cfg-ct-selcell { box-shadow: inset 3px 0 0 0 var(--cfg-brand); }
.cfg-content-table tr.cfg-ct-row-dirty > td.cfg-ct-selcell .cfg-ct-rowno { color: var(--cfg-brand); }
.cfg-content-table tr.cfg-ct-row-dirty .cfg-ct-save { border-color: var(--cfg-brand); background: rgba(15,123,92,.10); }
/* footer Save button gently pulses while there are unsaved changes */
.cfg-btn-primary.cfg-btn-attn { animation: cfgBtnAttn 1.6s ease-in-out infinite; }
@keyframes cfgBtnAttn {
    0%, 100% { box-shadow: 0 8px 16px -8px rgba(13,148,136,.6); }
    50%      { box-shadow: 0 0 0 4px rgba(13,148,136,.28); }
}

/* activations modal */
.cfg-actsum { display: flex; flex-direction: column; gap: 8px; padding-bottom: 12px; margin-bottom: 12px; border-bottom: 1px solid var(--cfg-line); }
.cfg-actsum-row { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.cfg-actsum-lbl { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .4px; color: var(--cfg-soft); margin-right: 4px; }
.cfg-pill { font-size: 11.5px; font-weight: 600; color: #0B7E73; background: rgba(13,148,136,.1); border-radius: 999px; padding: 3px 10px; }
.cfg-pill.alt { color: #0369a1; background: rgba(14,165,233,.1); }
.cfg-actlist { max-height: 46vh; overflow: auto; }
.cfg-acttable { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.cfg-acttable thead th { position: sticky; top: 0; background: #f5f8fb; text-align: left; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .3px; color: var(--cfg-soft); padding: 8px 10px; border-bottom: 1px solid var(--cfg-line); }
.cfg-acttable tbody td { padding: 8px 10px; border-bottom: 1px solid rgba(20,45,70,.05); color: var(--cfg-navy); }
.cfg-acttable tbody tr:hover { background: rgba(13,148,136,.05); }
.cfg-allyears-tag { font-size: 10px; font-weight: 700; color: #b45309; background: #fef3c7; border-radius: 5px; padding: 1px 6px; margin-left: 6px; }

/* ---- per-year summary strip ---- */
.cfg-summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 16px; }
.cfg-stat { background: rgba(255,255,255,.72); backdrop-filter: blur(10px) saturate(150%); -webkit-backdrop-filter: blur(10px) saturate(150%);
    border: 1px solid var(--cfg-line); border-radius: 14px; padding: 13px 16px; box-shadow: 0 10px 26px -20px rgba(16,40,70,.4); display: flex; flex-direction: column; gap: 2px; }
.cfg-stat-num { font-size: 26px; font-weight: 800; color: var(--cfg-navy); line-height: 1; letter-spacing: -.5px; }
.cfg-stat-num.cfg-stat-accent { color: var(--cfg-brand); }
.cfg-stat-lbl { font-size: 11.5px; font-weight: 600; color: var(--cfg-soft); }

/* ---- auto-assign by sector panel ---- */
.cfg-sectorpanel { background: linear-gradient(135deg, rgba(14,165,233,.06), rgba(13,148,136,.05)); border: 1px solid var(--cfg-line);
    border-radius: 16px; padding: 16px 18px; margin-bottom: 18px; box-shadow: 0 12px 30px -24px rgba(16,40,70,.45); }
.cfg-sectorpanel-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
.cfg-sectorpanel-title { display: inline-flex; align-items: center; gap: 8px; font-size: 15px; font-weight: 800; color: var(--cfg-navy); }
.cfg-sectorpanel-title svg { color: var(--cfg-accent); }
.cfg-sectorpanel-sub { font-size: 12.5px; color: var(--cfg-soft); margin-top: 3px; max-width: 640px; }
.cfg-sectorpanel-empty { font-size: 13px; color: var(--cfg-soft); margin-top: 12px; font-style: italic; }
.cfg-sectorrules { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 10px; margin-top: 14px; }
.cfg-sectorrule { background: #fff; border: 1px solid var(--cfg-line); border-radius: 12px; padding: 11px 13px; cursor: pointer; transition: all .15s ease; }
.cfg-sectorrule:hover { border-color: var(--cfg-accent); box-shadow: 0 8px 18px -12px rgba(14,165,233,.5); transform: translateY(-1px); }
.cfg-sectorrule.is-all { background: linear-gradient(135deg, rgba(13,148,136,.10), rgba(13,148,136,.04)); border-color: rgba(13,148,136,.35); }
.cfg-sectorrule.is-all .cfg-sectorrule-count { background: var(--cfg-brand); }
.cfg-allsectors-chip { font-size: 10.5px; font-weight: 700; color: var(--cfg-brand-2); background: rgba(13,148,136,.12); border: 1px solid rgba(13,148,136,.25); border-radius: 999px; padding: 2px 9px; }
.cfg-tab-chip { font-size: 10.5px; font-weight: 700; color: #7c3aed; background: rgba(124,58,237,.12); border: 1px solid rgba(124,58,237,.25); border-radius: 999px; padding: 2px 9px; white-space: nowrap; }
.cfg-sectorrule-name { display: flex; align-items: center; gap: 7px; font-size: 13.5px; font-weight: 700; color: var(--cfg-navy); margin-bottom: 7px; }
.cfg-sectorrule-count { font-size: 11px; font-weight: 700; color: #fff; background: var(--cfg-accent); border-radius: 999px; min-width: 19px; text-align: center; padding: 1px 6px; }
.cfg-sectorrule-fws { display: flex; flex-wrap: wrap; gap: 5px; }
.cfg-sectorrule-fw { font-size: 11px; font-weight: 600; color: var(--cfg-ink); background: rgba(20,45,70,.05); border-radius: 6px; padding: 2px 8px; }

/* ---- Removal rules -------------------------------------------------------------------------
   A removal rule reads exactly like an assignment rule and does the opposite, so it is marked
   everywhere it appears: a red edge on the card, a "removes" tag by the name, and red framework
   chips instead of neutral ones. */
.cfg-sectorrule.is-removal { border-color: rgba(220,38,38,.35); background: linear-gradient(135deg, rgba(220,38,38,.06), rgba(220,38,38,.02)); }
.cfg-sectorrule.is-removal:hover { border-color: #dc2626; box-shadow: 0 8px 18px -12px rgba(220,38,38,.55); }
.cfg-sectorrule.is-removal .cfg-sectorrule-count { background: #dc2626; }
.cfg-sectorrule.is-removal .cfg-sectorrule-fw { color: #991b1b; background: rgba(220,38,38,.09); }
.cfg-rule-kindtag { font-size: 10.5px; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; border-radius: 999px; padding: 2px 8px; }
.cfg-rule-kindtag.is-remove { color: #991b1b; background: rgba(220,38,38,.12); border: 1px solid rgba(220,38,38,.3); }

/* The assign-or-remove choice in the rule editor. Two full-width cards rather than a checkbox:
   the difference between them is destructive, so it should not read as a minor option. */
.cfg-rule-kind { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 4px 0 2px; }
.cfg-rule-kindopt { display: flex; flex-direction: column; gap: 2px; border: 1.5px solid var(--cfg-line); border-radius: 10px; padding: 10px 12px 11px 34px; position: relative; cursor: pointer; background: #fff; transition: all .15s ease; }
.cfg-rule-kindopt:hover { border-color: var(--cfg-accent); }
.cfg-rule-kindopt input { position: absolute; left: 12px; top: 13px; accent-color: var(--cfg-accent); }
.cfg-rule-kindopt .cfg-rule-kindttl { font-size: 13px; font-weight: 700; color: var(--cfg-navy); }
.cfg-rule-kindopt .cfg-rule-kindsub { font-size: 11.5px; color: var(--cfg-muted); line-height: 1.35; }
.cfg-rule-kindopt:has(input:checked) { border-color: var(--cfg-accent); background: rgba(14,165,233,.05); }
.cfg-rule-kindopt.is-remove input { accent-color: #dc2626; }
.cfg-rule-kindopt.is-remove:hover { border-color: #dc2626; }
.cfg-rule-kindopt.is-remove:has(input:checked) { border-color: #dc2626; background: rgba(220,38,38,.05); }
.cfg-rule-kindopt.is-remove:has(input:checked) .cfg-rule-kindttl { color: #991b1b; }
.cfg-rule-removewarn { margin: 10px 0 2px; font-size: 12px; line-height: 1.5; color: #7f1d1d; background: rgba(220,38,38,.07); border: 1px solid rgba(220,38,38,.22); border-left-width: 3px; border-radius: 8px; padding: 9px 12px; }

/* Worked example under the emissions agreement tolerance inputs: a percentage of an emission figure
   is hard to judge in the abstract, and the two inputs interact (the larger one wins). */
.cfg-tol-preview { font-weight: 700; color: var(--cfg-brand-2); }

/* ---- sector defaults modal picker ---- */
.cfg-field-lbl { display: block; font-size: 12px; font-weight: 600; color: var(--cfg-soft); margin-bottom: 7px; }
.cfg-sectorchips { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 4px; }
/* unselected: white pill, clear border, dark text */
.cfg-sectorchip { display: inline-flex; align-items: center; gap: 6px; padding: 7px 14px; border: 1.5px solid #cbd5e1; border-radius: 999px; cursor: pointer; font-size: 12.5px; font-weight: 600; color: #334155; background: #fff; transition: background .12s ease, border-color .12s ease, color .12s ease; user-select: none; }
.cfg-sectorchip:hover { border-color: var(--cfg-brand); color: var(--cfg-brand); background: #f1faf8; }
.cfg-sectorchip input { position: absolute; opacity: 0; width: 0; height: 0; }
/* selected: solid teal, white text, leading ✓ (same look as the active year pills) */
.cfg-sectorchip.is-on { background: var(--cfg-brand); border-color: var(--cfg-brand); color: #fff; box-shadow: 0 4px 10px -6px rgba(13,148,136,.55); }
.cfg-sectorchip.is-on:hover { background: var(--cfg-brand-2); border-color: var(--cfg-brand-2); color: #fff; }
.cfg-sectorchip.is-on::before { content: '\2713'; font-size: 11px; font-weight: 900; line-height: 1; }
.cfg-sectorchip-all { font-weight: 700; }
.cfg-sectorchip-none { font-weight: 700; }
/* the "None" bucket selected → slate, so it reads distinctly from the teal sector chips */
.cfg-sectorchip-none.is-on { background: #475569; border-color: #475569; color: #fff; box-shadow: 0 4px 10px -6px rgba(71,85,105,.55); }
.cfg-sectorchip-none.is-on:hover { background: #3b475a; border-color: #3b475a; }
.cfg-sector-multinote { font-size: 12px; color: #b45309; background: #fef3c7; border-radius: 8px; padding: 7px 11px; margin: 2px 0 12px; }
.cfg-sector-hint { font-size: 12px; color: var(--cfg-soft); margin: 4px 0 12px; }
.cfg-sectorpicker { max-height: 48vh; overflow: auto; display: flex; flex-direction: column; gap: 14px; }
.cfg-sectorpick-group { }
.cfg-sectorpick-grouphd { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .4px; color: var(--cfg-soft); margin-bottom: 7px; }
.cfg-sectorpick-item { display: flex; align-items: center; gap: 9px; padding: 8px 10px; border: 1px solid var(--cfg-line); border-radius: 9px; cursor: pointer; margin-bottom: 6px; transition: all .12s ease; }
.cfg-sectorpick-item:hover { border-color: var(--cfg-accent); background: rgba(14,165,233,.04); }
.cfg-sectorpick-item.is-on { border-color: var(--cfg-brand); background: rgba(13,148,136,.07); }
.cfg-sectorpick-item input { position: absolute; opacity: 0; width: 0; height: 0; }
.cfg-sectorpick-box { width: 18px; height: 18px; border-radius: 5px; border: 2px solid var(--cfg-line); flex: 0 0 auto; position: relative; transition: all .12s ease; }
.cfg-sectorpick-item.is-on .cfg-sectorpick-box { background: var(--cfg-brand); border-color: var(--cfg-brand); }
.cfg-sectorpick-item.is-on .cfg-sectorpick-box::after { content: ''; position: absolute; left: 5px; top: 1px; width: 5px; height: 10px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.cfg-sectorpick-name { font-size: 13px; font-weight: 600; color: var(--cfg-navy); }

/* ---- flexible assignment-rule panel cards + editor ---- */
.cfg-sectorrule.is-off { opacity: .62; }
.cfg-rule-conds { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 8px; }
.cfg-rule-cond-chip { font-size: 11px; font-weight: 700; color: var(--cfg-brand-2); background: rgba(13,148,136,.10);
    border: 1px solid rgba(13,148,136,.22); border-radius: 6px; padding: 2px 8px; }

.cfg-input { border: 1px solid var(--cfg-line); border-radius: 9px; padding: 8px 11px; font-size: 13.5px; font-weight: 500;
    color: var(--cfg-navy); background: #fff; -webkit-text-fill-color: currentColor; width: 100%; }
.cfg-input:focus { outline: none; border-color: var(--cfg-brand); box-shadow: 0 0 0 3px rgba(13,148,136,.14); }

.cfg-rule-top { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.cfg-rule-namefield { flex: 1 1 280px; }
.cfg-rule-activesw { flex: 0 0 auto; padding-bottom: 4px; }
.cfg-rule-sechd { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .4px; color: var(--cfg-soft);
    margin: 6px 0 2px; border-top: 1px solid var(--cfg-line); padding-top: 13px; }
.cfg-rule-conds-edit { display: flex; flex-direction: column; gap: 9px; }
.cfg-cond { display: flex; align-items: center; gap: 9px; flex-wrap: wrap;
    background: rgba(20,45,70,.025); border: 1px solid var(--cfg-line); border-radius: 11px; padding: 9px 11px; }
.cfg-cond > select, .cfg-cond .cfg-cond-valwrap > input, .cfg-cond .cfg-cond-val,
.cfg-cond-range input { border: 1px solid var(--cfg-line); border-radius: 9px; padding: 7px 10px; font-size: 13px; font-weight: 500;
    color: var(--cfg-navy); background: #fff; -webkit-text-fill-color: currentColor; }
.cfg-cond > select:focus, .cfg-cond input:focus, .cfg-cond .cfg-cond-val:focus { outline: none; border-color: var(--cfg-brand); box-shadow: 0 0 0 3px rgba(13,148,136,.14); }
.cfg-cond-field { flex: 0 0 auto; min-width: 150px; }
.cfg-cond-op { flex: 0 0 auto; min-width: 110px; }
.cfg-cond-valwrap { flex: 1 1 200px; display: flex; align-items: center; gap: 7px; min-width: 160px; }
.cfg-cond-valwrap > input, .cfg-cond-text, .cfg-cond-num-from { width: 100%; }
/* the native multi-selects are kept as the serialization source of truth but never shown */
.cfg-ms-native { position: absolute; opacity: 0; pointer-events: none; width: 0; height: 0; }

/* ---- condition value multi-select: token picker ---------------------------------------------- */
.cfg-ms { position: relative; width: 100%; min-width: 0; }
.cfg-ms-control { width: 100%; min-height: 38px; display: flex; align-items: center; gap: 8px;
    border: 1px solid var(--cfg-line); border-radius: 9px; background: #fff; padding: 5px 9px;
    cursor: pointer; text-align: left; font: inherit; transition: border-color .12s, box-shadow .12s; }
.cfg-ms-control:hover { border-color: #b9c6d3; }
.cfg-ms-control[aria-expanded="true"] { border-color: var(--cfg-brand); box-shadow: 0 0 0 3px rgba(13,148,136,.14); }
.cfg-ms-chips { flex: 1 1 auto; display: flex; flex-wrap: wrap; gap: 4px; align-items: center; min-width: 0; }
.cfg-ms-ph { font-size: 13px; color: #93a1b0; font-weight: 500; }
.cfg-ms-chip { display: inline-flex; align-items: center; gap: 4px; max-width: 190px;
    background: rgba(13,148,136,.1); color: #0b7d72; border: 1px solid rgba(13,148,136,.22);
    border-radius: 999px; padding: 2px 4px 2px 9px; font-size: 12px; font-weight: 700; line-height: 1.5; }
.cfg-ms-chiptxt { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cfg-ms-x { flex: 0 0 auto; width: 15px; height: 15px; border-radius: 50%; display: inline-flex;
    align-items: center; justify-content: center; font-size: 13px; line-height: 1; cursor: pointer;
    color: #0b7d72; transition: background .12s, color .12s; }
.cfg-ms-x:hover { background: #0b7d72; color: #fff; }
.cfg-ms-more { font-size: 11.5px; font-weight: 700; color: var(--cfg-soft); padding: 0 2px; }
.cfg-ms-caret { flex: 0 0 auto; color: #93a1b0; font-size: 11px; transition: transform .15s ease; }
.cfg-ms-control[aria-expanded="true"] .cfg-ms-caret { transform: rotate(180deg); }

.cfg-ms-pop { position: absolute; z-index: 60; left: 0; right: 0; top: calc(100% + 5px);
    background: #fff; border: 1px solid var(--cfg-line); border-radius: 12px;
    box-shadow: 0 18px 44px -14px rgba(13,32,54,.36); overflow: hidden; }
.cfg-ms-pop.up { top: auto; bottom: calc(100% + 5px); }
.cfg-ms-pop[hidden] { display: none; }
.cfg-ms-head { padding: 8px; border-bottom: 1px solid var(--cfg-line); }
.cfg-ms-search { width: 100%; border: 1px solid var(--cfg-line); border-radius: 8px; padding: 7px 10px;
    font-size: 13px; font-family: inherit; color: var(--cfg-navy); background: #f8fafc; }
.cfg-ms-search:focus { outline: none; border-color: var(--cfg-brand); background: #fff; box-shadow: 0 0 0 3px rgba(13,148,136,.12); }
.cfg-ms-list { max-height: 210px; overflow-y: auto; padding: 5px; }
.cfg-ms-opt { display: flex; align-items: center; gap: 9px; padding: 7px 9px; border-radius: 8px;
    cursor: pointer; font-size: 13px; font-weight: 500; color: var(--cfg-navy); user-select: none; }
.cfg-ms-opt[hidden] { display: none; }
.cfg-ms-opt:hover { background: rgba(20,45,70,.05); }
.cfg-ms-opt input[type=checkbox] { position: absolute; opacity: 0; width: 0; height: 0; }
.cfg-ms-check { flex: 0 0 auto; width: 17px; height: 17px; border: 1.5px solid #c3cfdb; border-radius: 5px;
    background: #fff; position: relative; transition: all .12s ease; }
.cfg-ms-opt.on .cfg-ms-check { background: var(--cfg-brand); border-color: var(--cfg-brand); }
.cfg-ms-opt.on .cfg-ms-check::after { content: ''; position: absolute; left: 5px; top: 1.5px;
    width: 4px; height: 9px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(43deg); }
.cfg-ms-opt.on { color: #0b7d72; font-weight: 700; }
.cfg-ms-optlbl { flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; }
.cfg-ms-empty { padding: 14px 10px; text-align: center; font-size: 12.5px; color: var(--cfg-soft); }
.cfg-ms-foot { display: flex; align-items: center; gap: 8px; padding: 7px 9px;
    border-top: 1px solid var(--cfg-line); background: #fbfdff; }
.cfg-ms-act { border: none; background: none; padding: 3px 6px; border-radius: 6px; cursor: pointer;
    font: inherit; font-size: 12px; font-weight: 700; color: var(--cfg-brand); }
.cfg-ms-act:hover { background: rgba(13,148,136,.1); }
.cfg-ms-count { margin-left: auto; font-size: 11.5px; font-weight: 600; color: var(--cfg-soft); }
.cfg-cond-range { display: flex; align-items: center; gap: 6px; width: 100%; }
.cfg-cond-range input { width: 100%; }
.cfg-cond-rl { font-size: 11.5px; font-weight: 700; color: var(--cfg-soft); }
.cfg-cond-rm { flex: 0 0 auto; width: 28px; height: 28px; border: none; border-radius: 8px; cursor: pointer;
    background: rgba(220,38,38,.08); color: #dc2626; font-size: 18px; line-height: 1; display: inline-flex; align-items: center; justify-content: center; transition: all .12s ease; }
.cfg-cond-rm:hover { background: #dc2626; color: #fff; }
.cfg-rule-addcond { margin-top: 10px; align-self: flex-start; }

/* =====================================================================
   Section 23 — Modern Auth screens (login hero, wrong-password, forgot)
   ===================================================================== */

/* ---- Login right-side hero (LoginOFYPEKA) ---- */
.ofy-hero {
    position: absolute; right: 4%; top: 50%; transform: translateY(-50%);
    width: min(34vw, 480px); text-align: center; z-index: 1; pointer-events: none;
    font-family: 'Inter','Segoe UI',system-ui,sans-serif;
}
.ofy-hero-art { width: 100%; height: auto; display: block; margin: 0 auto;
    filter: drop-shadow(0 24px 50px rgba(13,99,155,.28)); }
.ofy-hero-title { margin-top: 26px; font-size: clamp(22px, 2.4vw, 34px); font-weight: 800;
    line-height: 1.1; letter-spacing: -.4px;
    background: linear-gradient(120deg,#0B7E73 0%, #0D9488 40%, #00639B 100%);
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.ofy-hero-sub { margin-top: 12px; font-size: clamp(12px, 1.05vw, 15.5px); font-weight: 600;
    color: #5b7186; line-height: 1.5; max-width: 30ch; margin-left: auto; margin-right: auto; }
.ofy-hero-pills { margin-top: 18px; display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; }
.ofy-hero-pill { font-size: 11.5px; font-weight: 700; color: #0B7E73;
    background: rgba(13,148,136,.12); border: 1px solid rgba(13,148,136,.22);
    border-radius: 999px; padding: 4px 12px; }
@media (max-width: 1180px) { .ofy-hero { display: none; } }

/* ---- Shared modern auth card (AccessDenied + ForgotPassword family) ---- */
.auth-wrap { position: relative; z-index: 5; min-height: calc(100vh - 120px);
    display: flex; align-items: center; justify-content: center; padding: 28px 18px;
    font-family: 'Inter','Segoe UI',system-ui,sans-serif; }
.auth-card { width: 100%; max-width: 470px; text-align: center;
    background: rgba(255,255,255,.9); backdrop-filter: blur(20px) saturate(160%);
    -webkit-backdrop-filter: blur(20px) saturate(160%);
    border: 1px solid rgba(255,255,255,.7); border-radius: 24px;
    box-shadow: 0 34px 80px -34px rgba(16,40,70,.55), 0 2px 8px -2px rgba(16,40,70,.12);
    padding: 40px 38px; animation: authPop .4s cubic-bezier(.2,.8,.25,1); }
@keyframes authPop { from { opacity: 0; transform: translateY(14px) scale(.985); } to { opacity: 1; transform: none; } }
.auth-logo { max-height: 52px; max-width: 70%; margin: 0 auto 20px; display: block; }
.auth-badge { width: 70px; height: 70px; border-radius: 22px; margin: 0 auto 20px;
    display: flex; align-items: center; justify-content: center; color: #fff; position: relative; }
.auth-badge svg { width: 34px; height: 34px; }
.auth-badge::after { content: ''; position: absolute; inset: -6px; border-radius: 26px;
    border: 2px solid currentColor; opacity: .14; }
.auth-badge-key  { background: linear-gradient(135deg,#0D9488,#00639B); color: #0D9488; box-shadow: 0 16px 30px -14px rgba(13,148,136,.7); }
.auth-badge-mail { background: linear-gradient(135deg,#0EA5E9,#00639B); color: #0EA5E9; box-shadow: 0 16px 30px -14px rgba(14,165,233,.7); }
.auth-badge-ok   { background: linear-gradient(135deg,#10B981,#0D9488); color: #10B981; box-shadow: 0 16px 30px -14px rgba(16,185,129,.7); }
.auth-badge-warn { background: linear-gradient(135deg,#F59E0B,#EF4444); color: #F59E0B; box-shadow: 0 16px 30px -14px rgba(239,68,68,.6); }
.auth-title { font-size: 23px; font-weight: 800; color: #0B1220; letter-spacing: -.3px; line-height: 1.2; }
.auth-sub { font-size: 14px; color: #64748b; margin-top: 9px; line-height: 1.55; }
.auth-sub.justify { text-align: justify; }
.auth-form { margin-top: 26px; text-align: left; }
.auth-field { position: relative; margin-bottom: 16px; }
.auth-field > input, .auth-field > .default-input {
    width: 100% !important; height: 54px; box-sizing: border-box;
    border: 1.5px solid #e2e8f0 !important; border-radius: 13px !important;
    padding: 20px 15px 7px !important; font-size: 15px !important; color: #0B1220 !important;
    background: #fff !important; transition: border-color .15s ease, box-shadow .15s ease; margin: 0 !important; }
.auth-field > input:focus, .auth-field > .default-input:focus {
    border-color: #0D9488 !important; box-shadow: 0 0 0 4px rgba(13,148,136,.12) !important; outline: none !important; }
/* transform:none is load-bearing, not tidiness. site.css still carries the previous generation of
   floating label ("input.default-input:not(:placeholder-shown) + label { transform: translate(0,-2rem) }"),
   and this card positions the label with `top` instead. Without resetting it the two stack: the label
   lands 32px above where it belongs — outside its own box, on the bottom border of the field above.
   That is ClickUp 123vqc2b1gu, which only showed once a field had a value, because that is when the
   legacy rule matches. */
.auth-field > label, .auth-field > .floating-placeholder {
    position: absolute !important; left: 15px !important; top: 17px !important; margin: 0 !important;
    transform: none !important;
    color: #94a3b8 !important; font-size: 15px !important; font-weight: 500 !important;
    pointer-events: none; transition: all .15s ease; background: transparent !important; }
.auth-field > input:focus + label, .auth-field > input:not(:placeholder-shown) + label,
.auth-field > .default-input:focus + .floating-placeholder,
.auth-field > .default-input:not(:placeholder-shown) + .floating-placeholder {
    top: 8px !important; left: 15px !important; transform: none !important;
    font-size: 11px !important; font-weight: 700 !important; color: #0D9488 !important; }
.auth-btn { width: 100%; height: 54px; border: none; border-radius: 13px; cursor: pointer;
    background: linear-gradient(135deg,#0D9488,#00639B); color: #fff !important; font-size: 15px; font-weight: 700;
    box-shadow: 0 16px 30px -14px rgba(13,148,136,.65); transition: transform .14s ease, filter .14s ease, box-shadow .14s ease;
    display: flex; align-items: center; justify-content: center; gap: 8px; text-decoration: none !important; }
.auth-btn:hover { transform: translateY(-1px); filter: brightness(1.06); color: #fff !important; text-decoration: none !important; }
.auth-btn:active { transform: translateY(0); }
.auth-btn-block { margin-top: 4px; }
.auth-links { margin-top: 20px; display: flex; flex-direction: column; gap: 10px; align-items: center; }
.auth-link { color: #0D9488; font-weight: 600; font-size: 13.5px; text-decoration: none; display: inline-flex; align-items: center; gap: 6px; }
.auth-link:hover { color: #00639B; text-decoration: underline; }
.auth-alert { border-radius: 13px; padding: 12px 15px; font-size: 13.5px; margin-bottom: 18px; text-align: left; line-height: 1.45; }
.auth-alert-err { background: #fef2f2; color: #b91c1c; border: 1px solid #fecaca; }
.auth-alert-ok  { background: #f0fdf4; color: #15803d; border: 1px solid #bbf7d0; }
.auth-help { font-size: 12.5px; color: #94a3b8; margin-top: 22px; line-height: 1.5; }
.auth-divider { height: 1px; background: linear-gradient(90deg,transparent,rgba(20,45,70,.12),transparent); margin: 22px 0; }
.auth-mailgif { width: 72px; height: auto; margin: 4px auto 6px; display: block; }
/* password-strength messages inside the card */
.auth-card .weakPassword { text-align: left; font-size: 12.5px; margin: -6px 0 14px; color: #b45309; }
.auth-card .weakPassword.hide { display: none; }

/* ---- Auth card: sign-up additions (a longer form than the rest of the family) ---- */
/* Six fields don't fit the 470px card without becoming a tall single column, so the wide
   variant pairs first/last name and the two passwords side by side. */
.auth-card-wide { max-width: 560px; }
.auth-badge-user { background: linear-gradient(135deg,#0D9488,#00639B); color: #0D9488; box-shadow: 0 16px 30px -14px rgba(13,148,136,.7); }
.auth-row { display: grid; grid-template-columns: 1fr 1fr; gap: 0 14px; }
@media (max-width: 560px) { .auth-row { grid-template-columns: 1fr; } }

/* Show/hide control inside a field. The input keeps its label as its immediate next sibling —
   the floating-label rules above are `input + label` — so the button is placed after the label
   in the markup and positioned over the field. */
.auth-field-eye > input, .auth-field-eye > .default-input { padding-right: 46px !important; }
/* Greek labels are long ("ΕΠΑΝΕΙΣΑΓΩΓΗ ΚΩΔΙΚΟΥ"); stop the resting label running under the icon. */
.auth-field-eye > label, .auth-field-eye > .floating-placeholder {
    max-width: calc(100% - 62px); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.auth-eye { position: absolute; right: 8px; top: 50%; transform: translateY(-50%);
    background: none; border: none; cursor: pointer; color: #94a3b8; padding: 6px;
    display: inline-flex; align-items: center; justify-content: center; border-radius: 9px;
    transition: color .15s ease, background .15s ease; }
.auth-eye:hover { color: #0D9488; background: rgba(13,148,136,.10); }
.auth-eye .eye-off { display: none; }
.auth-eye[aria-pressed="true"] .eye-on { display: none; }
.auth-eye[aria-pressed="true"] .eye-off { display: block; }

/* Live "passwords don't match" note. Mirrors .weakPassword's placement so the card doesn't
   jump when one appears and the other disappears. */
.auth-note { text-align: left; font-size: 12.5px; margin: -6px 0 14px; line-height: 1.45; }
.auth-note.hide { display: none; }
.auth-note-err { color: #b91c1c; }
.auth-note-ok { color: #15803d; }

/* A single piece of data the card exists to show back to the reader — the address an activation
   mail just went to. Bordered rather than merely bold, so it reads as a value, not a sentence. */
.auth-value { display: block; margin: 14px 0 4px; padding: 12px 16px;
    border: 1px solid rgba(13,148,136,.22); border-radius: 13px;
    background: linear-gradient(135deg, rgba(13,148,136,.07), rgba(0,99,155,.07));
    color: #0B1220; font-size: 15px; font-weight: 700; text-align: center;
    word-break: break-all; }

/* Footer row of the card: the secondary action and the policy link, on one quiet line. */
.auth-foot { margin-top: 18px; display: flex; flex-wrap: wrap; align-items: center;
    justify-content: center; gap: 6px 10px; font-size: 13.5px; color: #64748b; }
.auth-foot .auth-link { font-size: 13.5px; }

/* "Exit" affordance, top-right of the page rather than inside the card. */
.auth-exit { position: absolute; top: 92px; right: 26px; z-index: 6;
    display: inline-flex; align-items: center; gap: 7px; padding: 8px 15px;
    border: 1px solid rgba(20,45,70,.14); border-radius: 999px;
    background: rgba(255,255,255,.86); backdrop-filter: blur(12px) saturate(150%);
    -webkit-backdrop-filter: blur(12px) saturate(150%);
    color: #4b5b6b !important; font-family: 'Inter','Segoe UI',system-ui,sans-serif;
    font-size: 13px; font-weight: 600; text-decoration: none !important;
    box-shadow: 0 10px 24px -16px rgba(16,40,70,.5);
    transition: color .15s ease, border-color .15s ease, background .15s ease, transform .15s ease; }
.auth-exit:hover { color: #00639B !important; border-color: rgba(0,99,155,.35);
    background: #fff; transform: translateY(-1px); text-decoration: none !important; }
.auth-exit:active { transform: translateY(0); }
@media (max-width: 700px) { .auth-exit { top: 74px; right: 12px; } }

/* ---- Submissions article-tab row + inline Recalculate button ---- */
.mui-tabrow { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; }
.mui-tabrow-nav { flex: 1 1 auto; min-width: 0; }
.mui-recalc-btn {
    flex: 0 0 auto;
    display: inline-flex; align-items: center; gap: 7px;
    height: 34px; padding: 0 15px; margin-bottom: 4px;
    border: 1.5px solid rgba(0,99,155,.30); border-radius: 999px;
    background: rgba(0,99,155,.06); color: var(--mui-blue, #00639B);
    font-family: 'Inter','Segoe UI',system-ui,sans-serif; font-size: 12.5px; font-weight: 700;
    cursor: pointer; white-space: nowrap; transition: background .15s ease, border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.mui-recalc-btn svg { transition: transform .5s ease; }
.mui-recalc-btn:hover { background: var(--mui-blue, #00639B); border-color: var(--mui-blue, #00639B); color: #fff; box-shadow: 0 6px 14px -6px rgba(0,99,155,.6); }
.mui-recalc-btn:hover svg { transform: rotate(180deg); }
.mui-recalc-btn:active { transform: translateY(1px); }

/* ---- Background KPI recalculation widget (non-blocking, bottom-right) ---- */
.kpi-widget {
    position: fixed; right: 22px; bottom: 22px; width: 326px; max-width: calc(100vw - 44px);
    max-height: calc(100vh - 44px); overflow-y: auto; z-index: 6000;
    background: rgba(255,255,255,.93); backdrop-filter: blur(18px) saturate(160%); -webkit-backdrop-filter: blur(18px) saturate(160%);
    border: 1px solid rgba(255,255,255,.7); border-radius: 16px;
    box-shadow: 0 26px 64px -26px rgba(16,40,70,.55), 0 2px 8px -2px rgba(16,40,70,.16);
    padding: 14px 16px; font-family: 'Inter','Segoe UI',system-ui,sans-serif;
    transform: translateY(20px); opacity: 0; pointer-events: none;
    transition: opacity .25s ease, transform .25s ease;
}
.kpi-widget.show { transform: none; opacity: 1; pointer-events: auto; }
.kpi-widget-head { display: flex; align-items: center; gap: 9px; margin-bottom: 11px; }
.kpi-widget-ic { display: inline-flex; align-items: center; color: #00639B; flex: 0 0 auto; }
.kpi-widget.is-running .kpi-widget-ic svg { animation: kpiSpin 1s linear infinite; }
.kpi-widget.is-done .kpi-widget-ic { color: #10B981; }
.kpi-widget.is-error .kpi-widget-ic { color: #ef4444; }
.kpi-widget-title { font-size: 13.5px; font-weight: 800; color: #0B1220; flex: 1; min-width: 0; }
.kpi-widget-x { border: none; background: transparent; color: #94a3b8; font-size: 19px; line-height: 1; cursor: pointer; padding: 0 2px; flex: 0 0 auto; }
.kpi-widget-x:hover { color: #475569; }
.kpi-widget-bar { height: 8px; border-radius: 999px; background: rgba(20,45,70,.10); overflow: hidden; }
.kpi-widget-fill { height: 100%; width: 0; border-radius: 999px; background: linear-gradient(90deg,#0D9488,#00639B); transition: width .4s ease; }
.kpi-widget.is-done .kpi-widget-fill { background: linear-gradient(90deg,#10B981,#0D9488); }
.kpi-widget.is-error .kpi-widget-fill { background: #ef4444; }
.kpi-widget-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 9px; }
.kpi-widget-msg { font-size: 12px; color: #64748b; flex: 1; min-width: 0; overflow-wrap: break-word; word-break: break-word; white-space: normal; }
.kpi-widget-pct { font-size: 12px; font-weight: 800; color: #00639B; font-variant-numeric: tabular-nums; flex: 0 0 auto; }
.kpi-widget.is-done .kpi-widget-pct { color: #10B981; }
.kpi-widget.is-error .kpi-widget-pct { color: #ef4444; }
@keyframes kpiSpin { to { transform: rotate(360deg); } }

/* ---- Modernized header right-side actions (timer / help / notifications / user) ---- */
.obs_topp2 .mui-hdr-actions {
    display: flex; align-items: center; justify-content: flex-end;
    gap: 6px; width: 100%; height: 100%; padding-right: 4px;
}
.obs_topp2 .mui-hdr-timer {
    display: inline-flex; align-items: center; gap: 7px;
    height: 34px; padding: 0 13px 0 11px; margin-right: 2px;
    border: 1px solid rgba(0,170,125,.28); border-radius: 999px;
    background: rgba(0,170,125,.09); color: var(--mui-green, #00AA7D);
    font-family: 'Inter','Segoe UI',system-ui,sans-serif;
    font-size: 12.5px; font-weight: 700; font-variant-numeric: tabular-nums;
    cursor: pointer; white-space: nowrap; user-select: none;
    transition: background .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.obs_topp2 .mui-hdr-timer:hover { background: rgba(0,170,125,.16); border-color: rgba(0,170,125,.45); box-shadow: 0 4px 12px -6px rgba(0,170,125,.5); }
.obs_topp2 .mui-hdr-timer-ic { flex: 0 0 auto; transition: transform .5s ease; }
.obs_topp2 .mui-hdr-timer:hover .mui-hdr-timer-ic { transform: rotate(-180deg); }
.obs_topp2 .mui-hdr-timer-txt { line-height: 1; }

.obs_topp2 .mui-hdr-btn {
    position: relative; display: inline-flex; align-items: center; justify-content: center;
    width: 38px; height: 38px; flex: 0 0 auto;
    border: none; border-radius: 50%; background: transparent;
    color: #475569; cursor: pointer;
    transition: background .15s ease, color .15s ease, box-shadow .15s ease, transform .12s ease;
}
.obs_topp2 .mui-hdr-btn:hover { background: var(--mui-blue-soft, rgba(0,99,155,.08)); color: var(--mui-blue, #00639B); box-shadow: var(--mui-shadow-soft); }
.obs_topp2 .mui-hdr-btn:active { transform: translateY(1px); }

.obs_topp2 .mui-hdr-dot {
    position: absolute; top: 7px; right: 8px;
    width: 9px; height: 9px; border-radius: 50%;
    background: #ef4444; border: 2px solid #fff; box-sizing: border-box;
    display: none;
}
.obs_topp2 .mui-hdr-dot.hasNotification { display: block; animation: muiDotPulse 1.8s ease-out infinite; }

/* Bell ring. The de-flicker work replaced the animated .gif bell with an inline SVG and reduced the
   poll handler to a dot toggle, which left the bell itself completely static — the animation the
   red dot alone cannot carry. Animating the SVG in CSS restores it without reintroducing the
   flicker the .gif had: the class is toggled idempotently, and re-adding a class already present
   does not restart a running CSS animation (re-assigning an <img src> to the same .gif did).
   NOTE: deliberately NOT named `hasNotification` — the global rule in site.css turns anything with
   that class into a small absolutely-positioned red square, which would eat the whole button. */
.obs_topp2 .mui-hdr-btn#notificationBell.is-ringing svg {
    transform-origin: 50% 10%;
    animation: muiBellRing 4s ease-in-out infinite;
}
@keyframes muiBellRing {
    0%, 55%, 100% { transform: rotate(0); }
    58% { transform: rotate(14deg); }
    62% { transform: rotate(-12deg); }
    66% { transform: rotate(9deg); }
    70% { transform: rotate(-7deg); }
    74% { transform: rotate(4deg); }
    78% { transform: rotate(-2deg); }
}
@media (prefers-reduced-motion: reduce) {
    .obs_topp2 .mui-hdr-btn#notificationBell.is-ringing svg { animation: none; }
}

/* AI assistant header button. Tinted violet rather than the neutral grey of its neighbours: the AI
   capabilities are the thing users were not finding, and a header of identical grey glyphs gives no
   reason to try any particular one. Same size/shape as the others so it still reads as part of the set. */
.obs_topp2 .mui-hdr-btn.mui-hdr-ai { color: #7c3aed; }
.obs_topp2 .mui-hdr-btn.mui-hdr-ai:hover { background: rgba(124,58,237,.10); color: #6d28d9; }
/* "not opened yet" cue — violet (a hint), never the red of the notification dot (a demand) */
.obs_topp2 .mui-hdr-ai-dot {
    position: absolute; top: 7px; right: 8px;
    width: 8px; height: 8px; border-radius: 50%;
    background: linear-gradient(135deg,#7c3aed,#a855f7); border: 2px solid #fff; box-sizing: border-box;
    animation: muiAiDotPulse 2.4s ease-out infinite;
}
@keyframes muiAiDotPulse {
    0%   { box-shadow: 0 0 0 0 rgba(124,58,237,.45); }
    70%  { box-shadow: 0 0 0 6px rgba(124,58,237,0); }
    100% { box-shadow: 0 0 0 0 rgba(124,58,237,0); }
}
@keyframes muiDotPulse {
    0%   { box-shadow: 0 0 0 0 rgba(239,68,68,.5); }
    70%  { box-shadow: 0 0 0 6px rgba(239,68,68,0); }
    100% { box-shadow: 0 0 0 0 rgba(239,68,68,0); }
}

/* user chip: a touch more polish + ensure it sits inline in the actions row */
.obs_topp2 .mui-hdr-actions .user-containerp2 { margin-left: 2px; }

/* ---- User chip button redesign (header) ---- */
.obs_topp2 .user-containerp2 {
    display: inline-flex !important; align-items: center; justify-content: center;
    width: 34px !important; height: 34px !important; padding: 0 !important; gap: 0 !important; margin-left: 2px;
    border-radius: 50% !important; background: transparent !important;
    border: none !important; cursor: pointer;
    transition: background .15s var(--mui-ease) !important;
}
.obs_topp2 .user-containerp2:hover {
    background: var(--mui-blue-soft) !important; box-shadow: none !important;
}
.obs_topp2 .user-containerp2 .mui-uchip-avatar {
    width: 30px; height: 30px; border-radius: 50%;
    background: var(--mui-grad-brand); color: #fff;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 11.5px; font-weight: 800; letter-spacing: .2px;
}
.obs_topp2 .user-containerp2 .mui-uchip-caret { display: none !important; }

/* ---- Compact user menu ---- */
.userMenu { width: 208px !important; padding: 5px !important; border-radius: 14px !important; top: 70px !important; }
.userMenu .row.pb-2 { padding: 5px 8px 7px !important; }
.userMenu .row.pb-2 [style*="font-size:90%"] { font-size: 13px !important; }
.userMenu .row.pb-2 [style*="font-size:80%"] { font-size: 11.5px !important; }
.userMenu .row[style*="height:1px"] { margin: 1px 6px 4px !important; }
.userMenu .row:has(a.usermenutext) { margin: 0 !important; border-radius: 9px; }
.userMenu .row:has(a.usermenutext) .col-4 { width: 30px !important; max-width: 30px !important; padding: 5px 0 !important; }
.userMenu .row:has(a.usermenutext) .col-8 { padding: 5px 4px !important; }
.userMenu .usermenuicon { height: 16px !important; width: 16px !important; }
.userMenu a.usermenutext, .userMenu span.usermenutext { font-size: 12.5px !important; font-weight: 600 !important; }
/* the whole row carries the hover; never highlight the text node alone */
.userMenu a.usermenutext:hover,
.userMenu span.usermenutext:hover,
.userMenu .usermenutext:hover { background: transparent !important; }

/* ---- Glassmorphism top navbar (frosted, soft elevation) ---- */
.obs_topp2 {
    background: var(--mui-glass-bg-strong) !important;   /* rgba(255,255,255,.80) */
    -webkit-backdrop-filter: var(--mui-glass-blur);
    backdrop-filter: var(--mui-glass-blur);
    border: 1px solid rgba(255, 255, 255, 0.6) !important;
    box-shadow: 0 10px 30px -12px rgba(16, 42, 67, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.6) !important;
}

/* ============================================================
   Settings page — modern redesign (ESG_Index / ESGenius)
   Scoped under .set-modern so legacy products are unaffected.
   ============================================================ */
.set-modern { animation: setFadeIn .4s cubic-bezier(.22, 1, .36, 1); }
@keyframes setFadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

/* hero header: gradient icon badge + title + subtitle */
.set-hero { display: flex; align-items: center; gap: 18px; margin: 8px 0 26px; }
.set-hero-badge {
    width: 60px; height: 60px; border-radius: 19px; flex: 0 0 auto;
    display: grid; place-items: center; color: #fff;
    background: linear-gradient(135deg, var(--mui-blue) 0%, var(--mui-green) 100%);
    box-shadow: 0 16px 32px -14px rgba(0, 99, 155, .7);
}
.set-hero-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: 1.3px; text-transform: uppercase; color: var(--mui-green); margin-bottom: 3px; }
.set-hero-title { font-size: 29px; font-weight: 800; letter-spacing: -.6px; color: var(--mui-ink); line-height: 1.08; }
.set-hero-sub { font-size: 14px; color: var(--mui-ink-soft); margin-top: 4px; }

/* segmented pill tab bar */
.set-tabs {
    display: flex; flex-wrap: wrap; gap: 6px; padding: 6px; margin-bottom: 28px;
    background: rgba(16, 40, 70, .045); border: 1px solid rgba(16, 40, 70, .06);
    border-radius: 16px;
}
.set-tab {
    text-decoration: none; cursor: pointer; white-space: nowrap;
    font-size: 13.5px; font-weight: 650; color: var(--mui-ink-soft);
    padding: 9px 18px; border-radius: 11px; border: 1px solid transparent;
    transition: color .16s ease, background .16s ease, box-shadow .16s ease;
}
.set-tab:hover { color: var(--mui-blue); background: rgba(255, 255, 255, .7); text-decoration: none; }
.set-tab.is-active {
    color: var(--mui-blue); background: #fff; border-color: rgba(16, 40, 70, .06);
    box-shadow: 0 6px 16px -8px rgba(16, 40, 70, .4);
}

/* content card */
.set-card {
    background: rgba(255, 255, 255, .82); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
    border: 1px solid rgba(16, 40, 70, .08); border-radius: 20px;
    padding: 30px 32px; box-shadow: 0 26px 64px -38px rgba(16, 40, 70, .5);
    max-width: 960px;
}
.set-card-title { font-size: 18px; font-weight: 750; color: var(--mui-ink); letter-spacing: -.2px; }
.set-card-sub { font-size: 13.5px; color: var(--mui-ink-soft); margin: 5px 0 24px; }

/* language selector grid of cards */
.set-langgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 14px; }
.set-langcard {
    position: relative; display: flex; align-items: center; gap: 14px; width: 100%; text-align: left;
    padding: 16px 18px; border-radius: 16px; cursor: pointer; background: #fff;
    border: 1.5px solid rgba(16, 40, 70, .10);
    transition: transform .18s cubic-bezier(.22, 1, .36, 1), border-color .18s ease, box-shadow .18s ease, background .18s ease;
}
.set-langcard:hover { border-color: color-mix(in srgb, var(--mui-blue) 45%, white); box-shadow: 0 14px 30px -16px rgba(0, 99, 155, .55); transform: translateY(-2px); }
.set-langcard.is-active { border-color: var(--mui-blue); background: linear-gradient(180deg, rgba(0, 99, 155, .06), rgba(0, 170, 125, .05)); }
.set-langcard-flag { width: 36px; height: 25px; border-radius: 5px; object-fit: cover; box-shadow: 0 1px 3px rgba(16, 40, 70, .3); flex: 0 0 auto; }
.set-langcard-name { font-size: 15.5px; font-weight: 700; color: var(--mui-ink); display: block; }
.set-langcard-meta { font-size: 11.5px; font-weight: 600; color: var(--mui-ink-soft); margin-top: 1px; display: block; }
.set-langcard.is-active .set-langcard-meta { color: var(--mui-blue); }
.set-langcard-ind { margin-left: auto; flex: 0 0 auto; display: grid; place-items: center; }
.set-langcard-radio { width: 22px; height: 22px; border-radius: 50%; border: 2px solid rgba(16, 40, 70, .18); transition: border-color .18s ease; }
.set-langcard:hover .set-langcard-radio { border-color: var(--mui-blue); }
.set-langcard-check {
    width: 24px; height: 24px; border-radius: 50%; color: #fff;
    display: grid; place-items: center;
    background: linear-gradient(135deg, var(--mui-blue), var(--mui-green));
    box-shadow: 0 4px 10px -3px rgba(0, 99, 155, .6);
}
.set-langcard .set-langcard-check { display: none; }
.set-langcard.is-active .set-langcard-check { display: grid; }
.set-langcard.is-active .set-langcard-radio { display: none; }

/* ===========================================================================
   ENTITY IDENTITY HEADER (user dashboard)  — minimal, flat, left-aligned with
   the page title below it. ESG_Index only (tagged .mui-entitydata).
   =========================================================================== */
.dashboard-entitydata-Container.mui-entitydata {
    box-shadow: none !important;
    background: transparent !important;
    padding: 0 !important;
    margin: 0 !important;
}
.mui-entity-card {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    padding: 0;                /* flat: text lines up with the title underneath */
    background: transparent;
    border: none;
    box-shadow: none;
}
.mui-entity-logo {
    flex: 0 0 auto;
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 11px;
    background: #fff;
    border: 1px solid rgba(20, 45, 70, 0.09);
    overflow: hidden;
}
.mui-entity-logo img { max-width: 100%; max-height: 100%; object-fit: contain; }
.mui-entity-logo-fallback {
    width: 100%;
    height: 100%;
    align-items: center;
    justify-content: center;
    color: var(--mui-blue);
    background: var(--mui-blue-soft);
}
.mui-entity-logo-fallback svg { width: 20px; height: 20px; }
.mui-entity-main { flex: 1 1 auto; min-width: 0; }
.mui-entity-name {
    font-size: 16px;
    font-weight: 700;
    line-height: 1.25;
    color: #1c3a52;
    margin-bottom: 2px;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}
.mui-entity-sector {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    max-width: 100%;
    color: #6b7885;
    font-size: 12.5px;
    font-weight: 500;
    line-height: 1.2;
}
.mui-entity-sector svg { flex: 0 0 auto; opacity: .6; }
.mui-entity-sector span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.mui-entity-meta {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 22px;
}
.mui-entity-fact {
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.mui-entity-fact-lbl {
    font-size: 8.5px;
    font-weight: 700;
    letter-spacing: .5px;
    text-transform: uppercase;
    color: #a3afba;
    line-height: 1;
}
.mui-entity-fact-val {
    font-size: 12.5px;
    font-weight: 600;
    color: #51606d;
    line-height: 1.1;
    white-space: nowrap;
}
@media (max-width: 1200px) {
    .mui-entity-meta { display: none; }
}

/* ===========================================================================
   CARBON FOOTPRINT DASHBOARD (user, Ν.4936 articles 20/19/16)
   =========================================================================== */
.cfd-wrap {
    --cfd-accent: #0EA5E9; --cfd-accent-mid: #5AAEE4; --cfd-accent-dark: #1C6CA8; --cfd-accent-soft: #DCEBF8;
    padding: 4px 2px 24px; position: relative;
}
/* ambient accent splash behind the dashboard (recolours per active article) */
.cfd-wrap::before {
    content: ""; position: absolute; left: -24px; right: -24px; top: -24px; height: 440px;
    z-index: 0; pointer-events: none; border-radius: 26px;
    background:
        radial-gradient(720px 320px at 4% -14%, color-mix(in srgb, var(--cfd-accent) 34%, transparent), transparent 60%),
        radial-gradient(600px 340px at 100% -8%, color-mix(in srgb, var(--cfd-accent-mid) 30%, transparent), transparent 58%),
        radial-gradient(700px 360px at 60% 120%, color-mix(in srgb, var(--cfd-accent) 12%, transparent), transparent 62%);
    transition: background .35s var(--mui-ease);
}
.cfd-wrap > * { position: relative; z-index: 1; }
.cfd-head { display: flex; align-items: center; gap: 14px; margin: 28px 0 14px; }
.cfd-head-icon {
    flex: 0 0 auto; width: 46px; height: 46px; display: flex; align-items: center; justify-content: center;
    border-radius: 13px; color: #fff; border: none;
    background: linear-gradient(135deg, color-mix(in srgb, var(--cfd-accent) 88%, white), var(--cfd-accent));
    box-shadow: 0 12px 24px -10px color-mix(in srgb, var(--cfd-accent) 70%, transparent);
    transition: background .35s var(--mui-ease), box-shadow .35s var(--mui-ease);
}
.cfd-title { font-size: 20px; font-weight: 800; color: #16344b; line-height: 1.2; }
.cfd-subtitle { font-size: 12.5px; color: #6b7885; margin-top: 2px; }

/* sub-tabs */
.cfd-subtabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; }
.cfd-subtab {
    display: flex; flex-direction: column; align-items: flex-start; gap: 1px;
    padding: 8px 16px; border-radius: 12px; border: 1px solid var(--mui-line);
    background: #fff; cursor: pointer; transition: all .15s var(--mui-ease); min-width: 140px;
}
.cfd-subtab:hover { border-color: color-mix(in srgb, var(--cfd-accent) 40%, white); background: color-mix(in srgb, var(--cfd-accent) 8%, white); }
.cfd-subtab.active {
    background: linear-gradient(135deg, color-mix(in srgb, var(--cfd-accent) 92%, white), var(--cfd-accent));
    border-color: transparent; box-shadow: 0 12px 24px -10px color-mix(in srgb, var(--cfd-accent) 60%, transparent);
}
.cfd-subtab-main { font-size: 14px; font-weight: 700; color: #2a3b4c; }
.cfd-subtab-sub { font-size: 11px; font-weight: 500; color: #93a1b0; }
.cfd-subtab.active .cfd-subtab-main { color: #fff; }
.cfd-subtab.active .cfd-subtab-sub { color: rgba(255,255,255,.8); }

.cfd-panel { display: none; }
.cfd-panel.active { display: block; animation: cfdFade .2s var(--mui-ease); }
@keyframes cfdFade { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }

.cfd-section-title { display: flex; align-items: center; gap: 10px; font-size: 15px; font-weight: 700; color: #16344b; margin: 6px 0 12px; padding-left: 12px; position: relative; }
.cfd-section-title::before { content: ""; position: absolute; left: 0; top: 3px; bottom: 3px; width: 3.5px; border-radius: 3px; background: linear-gradient(180deg, var(--cfd-accent), var(--cfd-accent-dark)); }
.cfd-year-chip { font-size: 11px; font-weight: 700; color: #fff; background: linear-gradient(135deg, color-mix(in srgb, var(--cfd-accent) 90%, white), var(--cfd-accent-dark)); border-radius: 999px; padding: 2px 10px; }

/* toolbar: section title + year selector on one row */
.cfd-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 6px 0 12px; }
.cfd-toolbar .cfd-section-title { margin: 0; }
.cfd-years { display: inline-flex; align-items: center; gap: 4px; background: #fff; border: 1px solid var(--mui-line); border-radius: 999px; padding: 4px; box-shadow: 0 2px 8px rgba(20,45,70,.05); }
.cfd-years-label { font-size: 10.5px; font-weight: 700; color: #93a1b0; text-transform: uppercase; letter-spacing: .4px; padding: 0 7px 0 6px; }
.cfd-year { border: none; background: transparent; border-radius: 999px; padding: 5px 13px; font-size: 13px; font-weight: 700; color: var(--mui-ink-soft); cursor: pointer; transition: all .15s var(--mui-ease); }
.cfd-year:hover:not(.active):not([disabled]) { background: color-mix(in srgb, var(--cfd-accent) 10%, white); color: var(--cfd-accent-dark); }
.cfd-year.active { background: linear-gradient(135deg, color-mix(in srgb, var(--cfd-accent) 92%, white), var(--cfd-accent)); color: #fff; box-shadow: 0 6px 14px -6px color-mix(in srgb, var(--cfd-accent) 60%, transparent); }
.cfd-years-single .cfd-year[disabled] { cursor: default; }

/* emissions-intensity section */
.cfd-section-title-sub { margin-top: 22px !important; }
.cfd-section-note { font-size: 11.5px; font-weight: 500; color: #93a1b0; letter-spacing: 0; }
.cfd-cards-intensity .cfd-card-v { font-size: 22px; }
.cfd-card-int .cfd-unit { font-size: 11px; }
/* denominator toggle (per kWh / per employee / per turnover) */
.cfd-denom-toggle { display: inline-flex; align-items: center; gap: 3px; background: #fff; border: 1px solid var(--mui-line); border-radius: 999px; padding: 4px; box-shadow: 0 2px 8px rgba(20,45,70,.05); margin: 2px 0 14px; }
.cfd-denom { border: none; background: transparent; border-radius: 999px; padding: 6px 15px; font-family: inherit; font-size: 12.5px; font-weight: 700; color: var(--mui-ink-soft); cursor: pointer; white-space: nowrap; transition: all .15s var(--mui-ease); }
.cfd-denom:hover:not(.active) { background: color-mix(in srgb, var(--cfd-accent) 10%, white); color: var(--cfd-accent-dark); }
.cfd-denom.active { background: linear-gradient(135deg, color-mix(in srgb, var(--cfd-accent) 92%, white), var(--cfd-accent)); color: #fff; box-shadow: 0 6px 14px -6px color-mix(in srgb, var(--cfd-accent) 60%, transparent); }

/* benchmark pill (difference from platform average) */
.cfd-pill { display: inline-flex; align-items: center; gap: 4px; font-size: 11.5px; font-weight: 800; padding: 3px 10px; border-radius: 999px; letter-spacing: .2px; }
.cfd-pill-good { color: #0f7a4d; background: rgba(31,157,99,.12); }
.cfd-pill-bad  { color: #c2401f; background: rgba(224,83,58,.12); }
.cfd-pill-flat { color: #7e8b97; background: rgba(20,45,70,.07); }
.cfd-delta-vs { color: #aab4bf; font-weight: 600; font-size: 11px; margin-left: 3px; }

/* overview cards */
.cfd-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-bottom: 18px; }
.cfd-card { background: #fff; border: 1px solid var(--mui-line); border-radius: 16px; padding: 16px 18px; box-shadow: 0 2px 10px rgba(20,45,70,.05); position: relative; overflow: hidden; }
.cfd-card::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px; z-index: 1; }
/* soft colour glow in the card's own scope colour */
.cfd-card::after { content: ""; position: absolute; right: -34px; top: -34px; width: 130px; height: 130px; border-radius: 50%; pointer-events: none; }
.cfd-card-s1::before { background: #0b4a6f; }
.cfd-card-s2::before { background: #16b8a6; }
.cfd-card-tot::before { background: linear-gradient(90deg, #0b4a6f, #16b8a6); }
.cfd-card-s1::after { background: radial-gradient(circle, rgba(11,74,111,.16), transparent 70%); }
.cfd-card-s2::after { background: radial-gradient(circle, rgba(22,184,166,.20), transparent 70%); }
.cfd-card-tot::after { background: radial-gradient(circle, rgba(43,191,122,.20), transparent 70%); }
.cfd-card-h { display: flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: 600; color: #6b7885; }
.cfd-card-sub { font-size: 11px; font-weight: 500; color: #9aa7b3; margin-top: 4px; line-height: 1.3; }
.cfd-dot { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; }
.cfd-dot-s1 { background: #0b4a6f; } .cfd-dot-s2 { background: #16b8a6; } .cfd-dot-tot { background: #2bbf7a; }
.cfd-card-v { font-size: 26px; font-weight: 800; color: #16344b; margin: 8px 0 6px; line-height: 1; }
.cfd-unit { font-size: 12px; font-weight: 600; color: #93a1b0; }
.cfd-card-d { font-size: 12px; color: #93a1b0; }
.cfd-delta { font-weight: 700; }
.cfd-delta-good { color: #1f9d63; } .cfd-delta-bad { color: #e0533a; } .cfd-delta-flat { color: #93a1b0; }

/* boxes / charts */
.cfd-grid2 { display: grid; grid-template-columns: 1fr 1.35fr; gap: 14px; margin-bottom: 18px; }
.cfd-grid2-detail { grid-template-columns: 1fr 1.2fr; }
.cfd-box { background: #fff; border: 1px solid var(--mui-line); border-radius: 16px; padding: 16px 18px; box-shadow: 0 2px 10px rgba(20,45,70,.05); }
.cfd-box-title { font-size: 14px; font-weight: 700; color: #16344b; padding-left: 11px; position: relative; }
.cfd-box-title::before { content: ""; position: absolute; left: 0; top: 2px; bottom: 2px; width: 3px; border-radius: 3px; background: var(--cfd-accent); }
.cfd-box-sub { font-size: 11.5px; color: #93a1b0; margin-bottom: 6px; }
.cfd-chart { width: 100%; }

/* table */
.cfd-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.cfd-table th { text-align: left; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .4px; color: #93a1b0; padding: 6px 8px; border-bottom: 1px solid var(--mui-line); }
.cfd-table th.num, .cfd-table td.num { text-align: right; }
.cfd-table td { padding: 9px 8px; color: #44525f; border-bottom: 1px solid rgba(20,45,70,.05); }
.cfd-table .cfd-table-total td { font-weight: 800; color: #16344b; border-top: 2px solid var(--mui-line); border-bottom: none; }

.cfd-empty { background: #fff; border: 1px dashed var(--mui-line); border-radius: 16px; padding: 40px 20px; text-align: center; color: #93a1b0; font-size: 13.5px; }

/* ---- sector benchmark (k-anonymised) ---- */
.cfd-peers { margin-bottom: 14px; }
.cfd-peer-rows { display: flex; flex-direction: column; gap: 14px; margin-top: 12px; }
.cfd-peer-row { display: grid; grid-template-columns: minmax(150px, 1.1fr) minmax(120px, 2fr) minmax(150px, 1.1fr); gap: 14px; align-items: center; }
.cfd-peer-lbl { font-size: 12.5px; color: #44525f; font-weight: 600; }
/* the track shows the peer P25–P75 band, the sector median, and this organisation's position */
.cfd-peer-bar { position: relative; height: 10px; border-radius: 6px; background: rgba(20,45,70,.06); }
.cfd-peer-band { position: absolute; top: 0; bottom: 0; border-radius: 6px; background: rgba(20,45,70,.14); }
.cfd-peer-med { position: absolute; top: -3px; bottom: -3px; width: 2px; background: #64748b; border-radius: 2px; transform: translateX(-1px); }
.cfd-peer-me { position: absolute; top: -5px; width: 12px; height: 20px; border-radius: 4px; background: var(--cfd-accent); border: 2px solid #fff; box-shadow: 0 1px 4px rgba(20,45,70,.25); transform: translateX(-6px); }
.cfd-peer-vals { font-size: 12px; color: #16344b; display: flex; flex-direction: column; gap: 1px; }
.cfd-peer-vals b { font-size: 13.5px; font-weight: 800; }
.cfd-peer-vs { color: #93a1b0; font-size: 11px; }
.cfd-peer-word { font-size: 11px; font-weight: 700; }
.cfd-peer-good .cfd-peer-word { color: #15803d; }
.cfd-peer-high .cfd-peer-word { color: #b45309; }
.cfd-peer-low .cfd-peer-word, .cfd-peer-mid .cfd-peer-word { color: #64748b; }
.cfd-peer-note { margin-top: 12px; font-size: 11px; color: #93a1b0; }
.cfd-peer-empty { font-size: 12.5px; color: #64748b; background: rgba(20,45,70,.04); border-radius: 10px; padding: 12px 14px; }
@media (max-width: 900px) { .cfd-peer-row { grid-template-columns: 1fr; gap: 6px; } }

/* ---- AI emissions analysis ---- */
.cfd-ai { margin-bottom: 14px; border-color: rgba(124,58,237,.22); }
.cfd-ai-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.cfd-ai-badge { display: inline-block; font-size: 9.5px; font-weight: 800; letter-spacing: .5px; color: #fff; background: linear-gradient(135deg,#7c3aed,#a855f7); border-radius: 5px; padding: 2px 6px; margin-right: 6px; vertical-align: 1px; }
.cfd-ai-btn { display: inline-flex; align-items: center; gap: 7px; border: 1px solid rgba(124,58,237,.35); background: rgba(124,58,237,.06); color: #6d28d9; font-size: 12.5px; font-weight: 700; border-radius: 9px; padding: 8px 13px; cursor: pointer; transition: background .15s, border-color .15s; }
.cfd-ai-btn:hover:not(:disabled) { background: rgba(124,58,237,.12); border-color: rgba(124,58,237,.5); }
.cfd-ai-btn:disabled { opacity: .55; cursor: default; }
.cfd-ai-body:empty { display: none; }
.cfd-ai-body { margin-top: 14px; }
.cfd-ai-load { display: flex; align-items: center; gap: 9px; font-size: 12.5px; color: #6d28d9; }
.cfd-ai-spin { width: 13px; height: 13px; border: 2px solid rgba(124,58,237,.25); border-top-color: #7c3aed; border-radius: 50%; animation: cfdAiSpin .7s linear infinite; }
@keyframes cfdAiSpin { to { transform: rotate(360deg); } }
.cfd-ai-err { font-size: 12.5px; color: #b91c1c; background: rgba(185,28,28,.06); border-radius: 10px; padding: 11px 13px; }
.cfd-ai-headline { font-size: 14.5px; font-weight: 700; color: #16344b; line-height: 1.5; margin-bottom: 12px; }
.cfd-ai-verdict { display: inline-block; font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .4px; border-radius: 6px; padding: 3px 8px; margin-right: 9px; vertical-align: 2px; }
.cfd-ai-v-improving { background: rgba(21,128,61,.1); color: #15803d; }
.cfd-ai-v-worsening { background: rgba(185,28,28,.1); color: #b91c1c; }
.cfd-ai-v-stable { background: rgba(20,45,70,.07); color: #44525f; }
.cfd-ai-v-mixed { background: rgba(180,83,9,.1); color: #b45309; }
.cfd-ai-sec { border-left: 2px solid rgba(124,58,237,.25); padding: 2px 0 2px 12px; margin-bottom: 12px; }
.cfd-ai-sec-t { font-size: 12.5px; font-weight: 700; color: #16344b; margin-bottom: 3px; }
.cfd-ai-sec-b { font-size: 12.5px; color: #44525f; line-height: 1.65; }
.cfd-ai-foot { font-size: 10.5px; color: #93a1b0; border-top: 1px solid var(--mui-line); padding-top: 9px; margin-top: 4px; }
.cfd-ai-foot a { color: #6d28d9; font-weight: 700; }

/* bottom KPI explorer */
.cfd-explorer { margin-bottom: 8px; }
.cfd-explorer-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 12px 0 4px; }
.cfd-explorer-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.cfd-exp-chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 5px 4px 11px; border-radius: 999px; font-size: 12px; font-weight: 700; color: #2a3b4c; background: #fff; border: 1px solid var(--mui-line); }
.cfd-exp-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--c, #888); flex: 0 0 auto; }
.cfd-exp-x { border: none; background: transparent; cursor: pointer; font-size: 15px; line-height: 1; color: #9aa7b4; padding: 0 4px; border-radius: 50%; transition: color .15s var(--mui-ease); }
.cfd-exp-x:hover { color: #e0533a; }
.cfd-explorer-add { border: 1px solid var(--mui-line); border-radius: 999px; padding: 6px 14px; font-size: 12.5px; font-weight: 600; color: var(--cfd-accent, var(--mui-blue)); background: #fff; cursor: pointer; max-width: 300px; transition: border-color .15s var(--mui-ease); }
.cfd-explorer-add:hover { border-color: color-mix(in srgb, var(--cfd-accent) 45%, white); }

@media (max-width: 1100px) {
    .cfd-cards { grid-template-columns: 1fr; }
    .cfd-grid2, .cfd-grid2-detail { grid-template-columns: 1fr; }
}

/* export controls */
.cfd-toolbar-right { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
/* submission selector (aggregated vs individual verified submission) */
.cfd-subpick { display: inline-flex; align-items: center; gap: 7px; background: #fff; border: 1px solid var(--mui-line); border-radius: 999px; padding: 3px 6px 3px 11px; box-shadow: 0 2px 8px rgba(20,45,70,.05); }
.cfd-subpick-label { font-size: 10.5px; font-weight: 700; color: #93a1b0; text-transform: uppercase; letter-spacing: .4px; }
.cfd-subsel { border: none; background: color-mix(in srgb, var(--cfd-accent) 8%, white); color: var(--cfd-accent-dark, #1C6CA8); font-family: inherit; font-size: 12.5px; font-weight: 700; padding: 6px 10px; border-radius: 999px; cursor: pointer; max-width: 260px; }
.cfd-subsel:focus { outline: 2px solid color-mix(in srgb, var(--cfd-accent) 40%, white); outline-offset: 1px; }
/* aggregation / single-submission notice banner */
.cfd-subnote { display: flex; align-items: center; gap: 8px; font-size: 12.5px; line-height: 1.45; border-radius: 11px; padding: 9px 13px; margin: 0 0 14px; }
.cfd-subnote svg { flex: 0 0 auto; }
.cfd-subnote b { font-weight: 800; }
.cfd-subnote-agg { color: #8a5a00; background: rgba(217,151,17,.10); border: 1px solid rgba(217,151,17,.28); }
.cfd-subnote-single { color: var(--cfd-accent-dark, #1C6CA8); background: color-mix(in srgb, var(--cfd-accent) 8%, white); border: 1px solid color-mix(in srgb, var(--cfd-accent) 30%, white); }

/* "Select your verification body" call-to-action (Dashboard, ESG_Index user) — compact strip */
.auditor-cta { display: flex; align-items: center; gap: 9px; flex-wrap: nowrap; margin: 4px 0; padding: 5px 6px 5px 11px; border-radius: 999px; background: #fffbeb; border: 1px solid #fde3a7; }
.auditor-cta-ic { flex: 0 0 auto; display: flex; align-items: center; color: #d97706; }
.auditor-cta-ic svg { width: 15px; height: 15px; }
.auditor-cta-text { flex: 1 1 auto; min-width: 0; font-size: 11.5px; line-height: 1.3; color: #92400e; }
.auditor-cta-text label { display: inline; margin: 0; padding: 0; font-weight: 400; color: inherit; }
.auditor-cta-text br { display: none; }
.auditor-cta-text u { text-decoration: none; }
.auditor-cta-text b { color: #b45309; font-weight: 700; }
.auditor-cta-text b::before { content: " · "; color: #d6a55a; font-weight: 400; }
.auditor-cta-btn { flex: 0 0 auto; border: none; cursor: pointer; white-space: nowrap; font-family: inherit; font-size: 12px; font-weight: 700; color: #fff; padding: 6px 14px; border-radius: 999px; background: #d97706; transition: background .12s var(--mui-ease, ease); }
.auditor-cta-btn:hover { background: #b45309; }
@media (max-width: 640px) { .auditor-cta { flex-wrap: wrap; } .auditor-cta-text { flex: 1 1 100%; } }
.cfd-export { position: relative; }
.cfd-export-btn { display: inline-flex; align-items: center; gap: 7px; border: 1px solid var(--mui-line); background: #fff; color: var(--cfd-accent-dark, #1C6CA8); font-family: inherit; font-size: 12.5px; font-weight: 700; padding: 7px 13px; border-radius: 999px; cursor: pointer; transition: all .15s var(--mui-ease); }
.cfd-export-btn:hover { border-color: color-mix(in srgb, var(--cfd-accent) 45%, white); background: color-mix(in srgb, var(--cfd-accent) 7%, white); }
.cfd-export-btn.is-busy { opacity: .55; pointer-events: none; }
.cfd-export-caret { font-size: 10px; color: #9aa7b4; }
.cfd-export-menu { position: absolute; right: 0; top: calc(100% + 6px); z-index: 50; background: #fff; border: 1px solid var(--mui-line); border-radius: 12px; box-shadow: 0 14px 36px -10px rgba(16,45,70,.3); padding: 6px; min-width: 250px; }
.cfd-export-menu button { display: block; width: 100%; text-align: left; border: none; background: transparent; font-family: inherit; font-size: 12.8px; font-weight: 600; color: #44525f; padding: 9px 12px; border-radius: 8px; cursor: pointer; white-space: nowrap; }
.cfd-export-menu button:hover { background: color-mix(in srgb, var(--cfd-accent) 9%, white); color: #16344b; }

.cfd-drill-btn { color: var(--cfd-accent-dark, #1C6CA8); }

/* submission drill-down modal */
.cfd-modal { position: fixed; inset: 0; z-index: 2147482000; background: rgba(16,38,58,.45); backdrop-filter: blur(2px); display: flex; align-items: center; justify-content: center; padding: 22px; animation: ccFade .18s ease both; }
.cfd-modal[hidden] { display: none !important; }
.cfd-modal-dialog { width: 100%; max-width: 760px; max-height: 86vh; display: flex; flex-direction: column; background: #fff; border-radius: 20px; box-shadow: 0 30px 70px -20px rgba(16,45,70,.5); overflow: hidden; animation: ccPop .26s cubic-bezier(.16,1,.3,1) both; font-family: 'Manrope', system-ui, 'Segoe UI', sans-serif; }
.cfd-modal-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 20px 22px 14px; }
.cfd-modal-title { font-size: 18px; font-weight: 800; color: #16344b; letter-spacing: -.3px; }
.cfd-modal-sub { font-size: 12.5px; font-weight: 600; color: var(--cfd-accent-dark, #1C6CA8); margin-top: 3px; }
.cfd-modal-x { border: none; background: #eef2f6; color: #56636e; width: 32px; height: 32px; border-radius: 50%; font-size: 20px; line-height: 1; cursor: pointer; flex: 0 0 auto; transition: all .15s var(--mui-ease); }
.cfd-modal-x:hover { background: #e2e8ee; color: #16344b; }
.cfd-modal-tabs { display: flex; gap: 4px; padding: 0 22px; border-bottom: 1px solid var(--mui-line); }
.cfd-modal-tab { border: none; background: transparent; font-family: inherit; font-size: 13px; font-weight: 700; color: #7e8b97; padding: 9px 14px 12px; cursor: pointer; position: relative; display: inline-flex; align-items: center; gap: 6px; }
.cfd-modal-tab:hover { color: #16344b; }
.cfd-modal-tab.active { color: var(--cfd-accent-dark, #1C6CA8); }
.cfd-modal-tab.active::after { content: ""; position: absolute; left: 8px; right: 8px; bottom: -1px; height: 3px; border-radius: 3px 3px 0 0; background: var(--cfd-accent, #0EA5E9); }
.cfd-modal-count { font-size: 10.5px; font-weight: 800; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; background: #eef2f6; color: #7e8b97; display: inline-flex; align-items: center; justify-content: center; }
.cfd-modal-tab.active .cfd-modal-count { background: color-mix(in srgb, var(--cfd-accent) 16%, white); color: var(--cfd-accent-dark, #1C6CA8); }
.cfd-modal-search { padding: 12px 22px 4px; }
.cfd-modal-search input { width: 100%; border: 1px solid var(--mui-line); border-radius: 10px; padding: 9px 13px; font-family: inherit; font-size: 13px; color: #16344b; outline: none; transition: border-color .15s var(--mui-ease); }
.cfd-modal-search input:focus { border-color: color-mix(in srgb, var(--cfd-accent) 50%, white); }
.cfd-modal-body { padding: 10px 22px 22px; overflow: auto; }
.cfd-modal-loading, .cfd-modal-empty { text-align: center; color: #93a1b0; font-size: 13px; padding: 30px 10px; }
.cfd-modal-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.cfd-modal-table th { text-align: left; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .4px; color: #93a1b0; padding: 8px 8px; border-bottom: 1px solid var(--mui-line); position: sticky; top: 0; background: #fff; }
.cfd-modal-table th.num, .cfd-modal-table td.num { text-align: right; }
.cfd-modal-table td { padding: 10px 8px; border-bottom: 1px solid rgba(20,45,70,.05); color: #16344b; vertical-align: top; }
.cfd-modal-lbl { font-weight: 600; color: #2c3e4e; }
.cfd-modal-code { font-size: 11px; color: #9aa7b3; margin-top: 2px; font-family: 'SFMono-Regular', ui-monospace, Menlo, Consolas, monospace; }
.cfd-modal-note { font-size: 11px; color: #93a1b0; margin-top: 2px; font-style: italic; }
.cfd-modal-u { font-size: 11px; font-weight: 600; color: #93a1b0; }
.cfd-modal-dash { color: #c2cbd4; font-weight: 700; }
.cfd-modal-tablebtn { display: inline-flex; align-items: center; gap: 5px; margin-top: 7px; border: 1px solid var(--mui-line); background: #fff; color: var(--cfd-accent-dark, #1C6CA8); font-family: inherit; font-size: 11.5px; font-weight: 700; padding: 4px 10px; border-radius: 999px; cursor: pointer; transition: all .15s var(--mui-ease); }
.cfd-modal-tablebtn:hover { border-color: color-mix(in srgb, var(--cfd-accent) 45%, white); background: color-mix(in srgb, var(--cfd-accent) 7%, white); }
.cfd-modal-tablebtn.open { background: color-mix(in srgb, var(--cfd-accent) 12%, white); border-color: color-mix(in srgb, var(--cfd-accent) 45%, white); }
.cfd-modal-subrow > td { padding: 0 8px 12px !important; }
.cfd-modal-subtable { width: 100%; border-collapse: collapse; background: #f7fafc; border: 1px solid var(--mui-line); border-radius: 10px; overflow: hidden; }
.cfd-modal-subtable td { padding: 7px 11px; font-size: 12px; color: #44525f; border-bottom: 1px solid rgba(20,45,70,.05); }
.cfd-modal-subtable tr:last-child td { border-bottom: none; }
.cfd-modal-subtable td.num { text-align: right; font-weight: 700; color: #16344b; }
/* metric "how it was calculated" panel */
.cfd-fx-row > td { padding: 0 8px 14px !important; }
.cfd-fx-sec { margin-top: 10px; }
.cfd-fx-sec:first-child { margin-top: 2px; }
.cfd-fx-h { font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .5px; color: #93a1b0; margin-bottom: 5px; }
.cfd-fx-code { font-family: 'SFMono-Regular', ui-monospace, 'Cascadia Code', Menlo, Consolas, monospace; font-size: 12px; line-height: 1.7; color: #2c3e4e; background: #f7fafc; border: 1px solid var(--mui-line); border-radius: 10px; padding: 10px 12px; word-break: break-word; }
.cfd-fx-code.alt { background: color-mix(in srgb, var(--cfd-accent) 5%, white); border-color: color-mix(in srgb, var(--cfd-accent) 22%, white); font-family: 'Manrope', system-ui, sans-serif; line-height: 1.6; }
.cfd-fx-id { font-weight: 700; color: #7a8794; }
.cfd-fx-id.is-kpi { color: var(--cfd-accent-dark, #1C6CA8); background: color-mix(in srgb, var(--cfd-accent) 11%, white); border-radius: 4px; padding: 0 3px; }
.cfd-fx-res { margin-top: 12px; padding-top: 10px; border-top: 1px dashed var(--mui-line); font-size: 13px; font-weight: 700; color: #16344b; }
.cfd-fx-res b { font-size: 15px; }
.cfd-modal-docs { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.cfd-modal-doc { display: flex; align-items: center; gap: 11px; border: 1px solid var(--mui-line); border-radius: 12px; padding: 11px 13px; text-decoration: none; transition: all .15s var(--mui-ease); background: #fff; }
.cfd-modal-doc:hover { border-color: color-mix(in srgb, var(--cfd-accent) 45%, white); background: color-mix(in srgb, var(--cfd-accent) 5%, white); }
.cfd-modal-doc-ic { flex: 0 0 auto; width: 38px; height: 38px; border-radius: 9px; background: color-mix(in srgb, var(--cfd-accent) 12%, white); color: var(--cfd-accent-dark, #1C6CA8); display: flex; align-items: center; justify-content: center; font-size: 9.5px; font-weight: 800; letter-spacing: .3px; }
.cfd-modal-doc-main { min-width: 0; flex: 1 1 auto; display: flex; flex-direction: column; }
.cfd-modal-doc-name { font-size: 12.5px; font-weight: 700; color: #16344b; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cfd-modal-doc-desc { font-size: 11px; color: #93a1b0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cfd-modal-doc-size { font-size: 11px; color: #aab4bf; font-weight: 600; flex: 0 0 auto; }
@media (max-width: 640px) { .cfd-modal-docs { grid-template-columns: 1fr; } }

/* per-chart PNG download button (reveals on box hover) */
.cfd-box { position: relative; }
.cfd-chart-dl { position: absolute; top: 12px; right: 12px; width: 30px; height: 30px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--mui-line); background: rgba(255,255,255,.92); color: #7e8b97; border-radius: 9px; cursor: pointer; opacity: 0; transition: all .15s var(--mui-ease); z-index: 4; }
.cfd-box:hover .cfd-chart-dl, .cfd-chart-dl:focus-visible { opacity: 1; }
.cfd-chart-dl:hover { color: var(--cfd-accent-dark, #1C6CA8); border-color: color-mix(in srgb, var(--cfd-accent) 45%, white); }
.cfd-chart-dl.is-busy { opacity: 1; pointer-events: none; animation: cfdPulse 1s ease-in-out infinite; }
@keyframes cfdPulse { 50% { opacity: .4; } }

/* The CFD page scrolls the whole page (unlike the single-viewport dashboard tabs),
   so the absolutely-pinned footer (top: 100vh - footerHeight; z-index:-1) ends up
   stuck in the first screen behind the content. Let it flow beneath the content. */
/* The Carbon Footprint dashboard scrolls well past one viewport, but the footer is
   absolutely positioned at top:100vh with z-index:-1, so it ends up hidden behind the
   content (only reachable by scrolling to the very bottom). When the CFD is on the page,
   PIN every footer-container variant to the bottom of the viewport so it is ALWAYS visible,
   and pad the dashboard content so its last row never hides behind the pinned bar.
   (The footer lives at the page root, not as a sibling of the CFD form, so the match is on
   body:has, not a sibling combinator.) */
body:has(.cfd-wrap) .bottom-logo-Container,
body:has(.cfd-wrap) .bottom-logo-Container-Product1,
body:has(.cfd-wrap) .bottom-logo-Container-Product2,
body:has(.cfd-wrap) .bottom-logo-Container-white-Product2,
body:has(.cfd-wrap) .bottom-logo-Container-custom,
body:has(.cfd-wrap) .bottom-logo-Container-animation {
    position: fixed !important;
    bottom: 0 !important;
    top: auto !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    height: auto !important;
    min-height: var(--footerHeight);
    z-index: 1200 !important;
    overflow: visible !important;
    margin: 0 !important;
    background: #fff !important;
    border-top: 1px solid var(--mui-line, #e7edf2);
    box-shadow: 0 -3px 14px rgba(16, 45, 70, .07);
}
/* clearance so the explorer (last content block) is never covered by the pinned footer */
body:has(.cfd-wrap) .cfd-wrap { padding-bottom: calc(var(--footerHeight) + 26px); }

/* ===========================================================================
   CFD — Στόχοι & Πορεία (emission targets / trajectory)
   =========================================================================== */
.cfd-target-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.cfd-target-editbtn {
    display: inline-flex; align-items: center; gap: 7px; flex: none;
    border: 1px solid var(--mui-line, #e7edf2); background: #fff;
    color: var(--cfd-accent-dark, #1C6CA8); font-size: 12.5px; font-weight: 700;
    padding: 7px 13px; border-radius: 999px; cursor: pointer; transition: all .15s var(--mui-ease, ease);
}
.cfd-target-editbtn:hover { border-color: color-mix(in srgb, var(--cfd-accent) 45%, white); background: color-mix(in srgb, var(--cfd-accent) 7%, white); }
.cfd-target-summary { display: flex; flex-wrap: wrap; gap: 10px; margin: 12px 0 6px; }
.cfd-target-stat { display: flex; flex-direction: column; gap: 2px; padding: 9px 13px; border: 1px solid var(--mui-line, #e7edf2); border-radius: 13px; background: #f8fafc; min-width: 150px; }
.cfd-target-stat-l { font-size: 11px; font-weight: 700; color: #93a1b0; }
.cfd-target-stat-l em { font-style: normal; color: #b3bfca; font-weight: 600; }
.cfd-target-stat-v { font-size: 17px; font-weight: 800; color: #16344b; font-variant-numeric: tabular-nums; }
.cfd-target-stat-v i { font-style: normal; font-size: 11px; font-weight: 600; color: #93a1b0; }
.cfd-target-red { font-size: 12px; font-weight: 800; }
.cfd-target-red.ok { color: #0f7a4d; }
.cfd-target-red.warn { color: #c2401f; }
.cfd-target-red.free { color: #64748b; }
.cfd-target-optional { color: #64748b; font-style: italic; font-size: 12px; }
.cfd-target-drift { flex-basis: 100%; font-size: 11.5px; color: #9a6b1e; background: #fef6e7; border: 1px solid #f6e2b8; border-radius: 10px; padding: 7px 11px; }
.cfd-target-empty { flex-basis: 100%; font-size: 12.5px; color: #7e8b97; background: #f8fafc; border: 1px dashed var(--mui-line, #e7edf2); border-radius: 12px; padding: 14px; text-align: center; }
.cfd-target-track { margin-top: 8px; }
.cfd-target-tracktbl { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.cfd-target-tracktbl th { text-align: left; font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .4px; color: #93a1b0; padding: 4px 8px; border-bottom: 1px solid var(--mui-line, #e7edf2); }
.cfd-target-tracktbl td { padding: 6px 8px; border-bottom: 1px solid #f1f5f8; color: #2c3e4e; font-variant-numeric: tabular-nums; }
.cfd-target-tracktbl .num { text-align: right; }
.cfd-target-tracktbl tr.cfd-target-baseyr td { background: #f7fafc; color: #64748b; }
.cfd-target-tracktbl tr.cfd-target-baseyr em { font-style: normal; font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .4px; color: #93a1b0; margin-left: 4px; }

/* editor modal */
.cfd-te { display: flex; flex-direction: column; gap: 16px; }
.cfd-te-baseline-row { display: flex; align-items: center; gap: 8px; font-size: 14px; color: #16344b; flex-wrap: wrap; }
.cfd-te-baseline-row .cfd-te-lbl { font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .4px; color: #93a1b0; }
.cfd-te-baseline-row .cfd-te-sep { color: #cdd7e2; }
.cfd-te-baseline-row input { width: 120px; padding: 7px 10px; border: 1.5px solid #cdd7e2; border-radius: 10px; font-size: 14px; font-variant-numeric: tabular-nums; }
.cfd-te-baseline-row input.cfd-te-yr { width: 78px; }
.cfd-te-baseline-row i { font-style: normal; font-size: 12px; color: #93a1b0; }
.cfd-te-floor { margin-top: 6px; font-size: 12.5px; color: #475569; }
.cfd-te-split { padding: 12px 14px; border: 1px solid var(--mui-line, #e7edf2); border-radius: 13px; background: #f8fafc; }
.cfd-te-split-head { display: flex; justify-content: space-between; align-items: baseline; font-size: 12.5px; font-weight: 700; color: #475569; }
.cfd-te-split-vals { font-size: 12px; font-weight: 800; color: var(--cfd-accent-dark, #1C6CA8); }
.cfd-te-range { width: 100%; margin: 10px 0 4px; accent-color: var(--cfd-accent, #0EA5E9); }
.cfd-te-split-note { font-size: 11.5px; color: #93a1b0; }
.cfd-te-points-head { display: flex; justify-content: space-between; align-items: center; font-size: 12.5px; font-weight: 700; color: #475569; }
.cfd-te-addrow { border: 1px dashed var(--cfd-accent, #0EA5E9); background: color-mix(in srgb, var(--cfd-accent) 6%, white); color: var(--cfd-accent-dark, #1C6CA8); font-size: 12px; font-weight: 700; padding: 5px 11px; border-radius: 999px; cursor: pointer; }
.cfd-te-table { width: 100%; border-collapse: collapse; }
.cfd-te-table th { text-align: left; font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .4px; color: #93a1b0; padding: 4px 8px; }
.cfd-te-table th.num, .cfd-te-table td.num { text-align: right; }
.cfd-te-table td { padding: 5px 8px; border-bottom: 1px solid #f1f5f8; color: #2c3e4e; font-variant-numeric: tabular-nums; }
.cfd-te-table input { width: 92px; padding: 6px 9px; border: 1.5px solid #cdd7e2; border-radius: 9px; font-size: 13px; text-align: right; font-variant-numeric: tabular-nums; }
.cfd-te-table input.cfd-te-y { width: 70px; }
.cfd-te-table input[readonly] { background: #f1f5f8; color: #7e8b97; }
.cfd-te-del { border: none; background: transparent; color: #c2401f; font-size: 18px; line-height: 1; cursor: pointer; padding: 0 6px; }
.cfd-te-req { font-size: 10.5px; font-weight: 800; color: #93a1b0; }
.cfd-te-head-btns { display: inline-flex; gap: 8px; }
.cfd-te-note { font-size: 11.5px; color: #93a1b0; margin: 2px 0 6px; line-height: 1.45; }
.cfd-te-table td.cfd-te-reco { color: #93a1b0; font-size: 12px; }
.cfd-te-table td.cfd-te-tot.cfd-te-over { color: #c2401f; font-weight: 800; }
.cfd-te-info { font-size: 12.5px; color: #8a5a00; background: rgba(217,151,17,.10); border: 1px solid rgba(217,151,17,.30); border-radius: 10px; padding: 9px 12px; line-height: 1.5; }
/* Άρθρο 20 free/optional mode: hide the −30% floor, the linear-max column, the linear-path button + notice */
.cfd-te-optnote { display: none; }
.cfd-te-freemode .cfd-te-optnote { display: block; font-size: 12.5px; color: var(--cfd-accent-dark, #1C6CA8); background: color-mix(in srgb, var(--cfd-accent) 8%, white); border: 1px solid color-mix(in srgb, var(--cfd-accent) 30%, white); border-radius: 10px; padding: 9px 12px; line-height: 1.5; margin-bottom: 12px; }
.cfd-te-freemode .cfd-te-reco-h,
.cfd-te-freemode .cfd-te-reco,
.cfd-te-freemode #cfdTeLinear,
.cfd-te-freemode .cfd-te-floor,
.cfd-te-freemode .cfd-te-note,
.cfd-te-freemode #cfdTeInfo { display: none !important; }
.cfd-te-warn { font-size: 12.5px; color: #c2401f; background: rgba(224,83,58,.08); border: 1px solid rgba(224,83,58,.25); border-radius: 10px; padding: 9px 12px; }
.cfd-te-foot { display: flex; justify-content: flex-end; gap: 10px; padding: 16px 22px; border-top: 1px solid var(--mui-line, #e7edf2); }
.cfd-te-cancel { border: 1px solid var(--mui-line, #e7edf2); background: #fff; color: #475569; font-size: 13px; font-weight: 700; padding: 9px 18px; border-radius: 11px; cursor: pointer; }
.cfd-te-save { border: none; background: linear-gradient(135deg, color-mix(in srgb, var(--cfd-accent) 92%, white), var(--cfd-accent)); color: #fff; font-size: 13px; font-weight: 800; padding: 9px 20px; border-radius: 11px; cursor: pointer; box-shadow: 0 6px 14px -6px color-mix(in srgb, var(--cfd-accent) 60%, transparent); }
.cfd-te-save:disabled { opacity: .5; cursor: not-allowed; box-shadow: none; }

/* ===========================================================================
   MY ACCOUNT  (ESG_Index profile page redesign)
   =========================================================================== */
.mui-account { max-width: 1060px; margin: 6px auto 60px; padding: 0 26px; box-sizing: border-box; }

/* back link */
.mui-account-back {
    display: inline-flex; align-items: center; gap: 7px; margin: 6px 0 18px;
    color: var(--mui-blue); font-size: 13.5px; font-weight: 600; text-decoration: none !important;
    transition: gap .15s var(--mui-ease), opacity .15s var(--mui-ease);
}
.mui-account-back:hover { gap: 11px; color: var(--mui-blue); opacity: .85; }
.mui-account-back svg { flex: 0 0 auto; }

/* hero header */
.mui-account-hero { display: flex; align-items: center; gap: 18px; }
.mui-account-avatar {
    flex: 0 0 auto; width: 62px; height: 62px; border-radius: 50%;
    background: var(--mui-grad-brand); color: #fff;
    display: flex; align-items: center; justify-content: center;
    font-size: 23px; font-weight: 800; letter-spacing: .4px;
    box-shadow: 0 14px 28px -12px rgba(0, 99, 155, .65);
}
.mui-account-id { min-width: 0; }
.mui-account-name {
    margin: 0; font-size: 27px; font-weight: 800; letter-spacing: -.4px;
    color: var(--mui-ink); line-height: 1.15;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mui-account-email {
    display: inline-flex; align-items: center; gap: 7px; margin-top: 5px;
    color: var(--mui-ink-soft); font-size: 13.5px; font-weight: 500;
}
.mui-account-email svg { color: #9aa7b4; flex: 0 0 auto; }

/* welcome subtitle */
.mui-account-welcome {
    margin: 16px 0 0; max-width: 760px;
    color: var(--mui-ink-soft); font-size: 13.5px; line-height: 1.6;
}
.mui-account-welcome a { color: var(--mui-blue); font-weight: 600; text-decoration: none; }
.mui-account-welcome a:hover { text-decoration: underline; }

/* error banner */
.mui-account #MyAccountErrorMessage { margin: 18px 0 0; }
.mui-account #MyAccountErrorMessage.is-empty { display: none !important; }
.mui-account #MyAccountErrorMessage:not(.is-empty) {
    background: #fef2f2 !important; color: #b91c1c !important; border: 1px solid #fecaca !important;
    border-radius: 12px; padding: 12px 15px; font-size: 13.5px; line-height: 1.45;
}

/* content panel */
.mui-account-panel {
    margin-top: 22px; background: #fff;
    border: 1px solid var(--mui-line); border-radius: var(--mui-r-card);
    box-shadow: var(--mui-shadow-soft); overflow: hidden;
}

/* segmented tabs */
.mui-account-tabs {
    display: flex; gap: 2px; padding: 0 12px;
    border-bottom: 1px solid var(--mui-line);
    background: linear-gradient(180deg, rgba(0,99,155,.025), rgba(0,99,155,0));
}
.mui-account-tab {
    position: relative; padding: 16px 18px 14px; margin: 0;
    color: var(--mui-ink-soft); font-size: 14px; font-weight: 600;
    text-decoration: none !important; white-space: nowrap;
    transition: color .15s var(--mui-ease);
}
.mui-account-tab::after {
    content: ''; position: absolute; left: 12px; right: 12px; bottom: -1px; height: 2.5px;
    border-radius: 3px 3px 0 0; background: var(--mui-blue);
    transform: scaleX(0); transform-origin: center; transition: transform .2s var(--mui-ease);
}
.mui-account-tab:hover { color: var(--mui-ink); }
.mui-account-tab.is-active { color: var(--mui-blue); }
.mui-account-tab.is-active::after { transform: scaleX(1); }

/* body */
.mui-account-body { padding: 30px 32px 34px; }

/* normalize legacy width helpers inside the panel */
.mui-account-body .w-45,
.mui-account-body .w-55,
.mui-account-body .w-50 { width: 100% !important; max-width: 580px; }
.mui-account-body .mw-70 { max-width: 100% !important; }
.mui-account-body .w-100 { width: 100% !important; }

/* field wrapper spacing (legacy inline position:relative + padding-top:1rem) */
.mui-account-body [style*="position:relative"] { padding-top: 0 !important; margin-bottom: 18px; }

/* modern boxed inputs */
.mui-account-body .default-input,
.mui-account-body .default-dropdown {
    width: 100% !important; height: 54px; box-sizing: border-box;
    border: 1.5px solid #e3e9f0 !important; border-radius: 13px !important;
    padding: 20px 15px 7px !important; margin: 0 !important;
    font-size: 14.5px !important; color: #0B1220 !important;
    background: #fff !important; outline: 0 !important;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.mui-account-body .default-dropdown {
    -webkit-appearance: none; -moz-appearance: none; appearance: none;
    padding-right: 38px !important; cursor: pointer;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2366727f' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important; background-position: right 14px center !important;
}
.mui-account-body .default-input:focus,
.mui-account-body .default-dropdown:focus {
    border-color: var(--mui-blue) !important;
    box-shadow: 0 0 0 4px var(--mui-blue-soft) !important; outline: none !important;
}
.mui-account-body .default-input[disabled],
.mui-account-body .default-dropdown[disabled] {
    background: #f4f6f9 !important; color: #7c8794 !important; cursor: not-allowed;
}

/* floating labels (note: neutralize legacy site.css translate(-2rem) transform) */
.mui-account-body .floating-placeholder {
    position: absolute !important; left: 15px !important; top: 18px !important; margin: 0 !important;
    color: #94a3b8 !important; font-size: 14.5px !important; font-weight: 500 !important;
    pointer-events: none; transition: all .15s ease; background: transparent !important; opacity: 1;
    transform: none !important;
}
.mui-account-body .default-input:focus + .floating-placeholder,
.mui-account-body .default-input:not(:placeholder-shown) + .floating-placeholder,
.mui-account-body .default-dropdown + .floating-placeholder {
    top: 8px !important; left: 15px !important; font-size: 11px !important; font-weight: 700 !important;
    color: var(--mui-blue) !important; letter-spacing: .2px; transform: none !important;
}

/* .default-label predates the boxed fields: site.css pins it at top:0 of its wrapper, which on a
   54px control lands it ON the top border rather than inside the box, and leaves it grey/13.6px
   while every neighbouring field's .floating-placeholder is blue/11px inside the box. Give it the
   same floated treatment, so the two selects that use it (Σχετικό Άρθρο ΕΚΝ, Ομάδα έργου) stop
   reading as a different kind of field from the inputs around them. */
.mui-account-body .default-label {
    position: absolute !important; left: 15px !important; top: 8px !important; margin: 0 !important;
    font-size: 11px !important; font-weight: 700 !important; letter-spacing: .2px;
    color: var(--mui-blue) !important; background: transparent !important;
    transform: none !important; pointer-events: none;
}
/* mandatory variant, mirroring the .floating-placeholder rule further down */
.mui-account-body .default-dropdown[required] + .default-label { color: #B45309 !important; }

/* change-password link row */
.mui-account-body .entity-data-edit-text {
    display: inline-flex; align-items: center; gap: 6px;
    color: var(--mui-blue) !important; font-size: 13px; font-weight: 600; text-decoration: none !important;
}
.mui-account-body .entity-data-edit-text:hover { text-decoration: underline !important; }

/* submit button */
.mui-account-body .login-btn {
    min-width: 0 !important; height: 48px; padding: 0 30px !important;
    border-radius: 13px !important; border: none !important;
    background: var(--mui-grad-brand) !important; color: #fff !important;
    font-size: 14.5px; font-weight: 700; letter-spacing: .2px;
    box-shadow: 0 16px 30px -14px rgba(0, 99, 155, .6);
    margin: 8px 0 0 !important; transition: transform .14s ease, filter .14s ease;
}
.mui-account-body .login-btn:hover { transform: translateY(-1px); filter: brightness(1.05); }
.mui-account-body .login-btn:active { transform: translateY(0); }

/* company-tab: org card + section heading */
.mui-account-body .login-welcome {
    font-size: 17px !important; font-weight: 800 !important; color: var(--mui-ink) !important;
    margin-bottom: 16px; letter-spacing: -.2px;
}
.mui-account-body .elevated-Container {
    border: 1px solid var(--mui-line) !important; border-radius: 16px !important;
    background: #fff !important; box-shadow: var(--mui-shadow-soft) !important;
}
.mui-account-body .fa-cog { color: var(--mui-ink-soft); transition: color .15s ease, transform .25s ease; }
.mui-account-body .fa-cog:hover { color: var(--mui-blue); transform: rotate(45deg); }

/* tighten the welcome text inside the company partial (it duplicates intro copy) */
.mui-account-body .row > .col-12.login-welcome + .col-1,
.mui-account-body .col-12.login-welcome { margin-bottom: 4px; }

/* company tab: full-width container, fields laid out in a responsive 2-col grid
   (halves the vertical length of the long form so there's far less scrolling) */
.mui-account-body #CompanyDetailsContainer {
    width: 100% !important; max-width: 100% !important; flex: 0 0 100% !important;
    max-height: none !important; overflow: visible !important; margin: 0 !important; padding: 0 !important;
    display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 24px; align-items: start;
}
.mui-account-body #CompanyDetailsContainer .row { margin-left: 0; margin-right: 0; }
/* the identity header (logo + display name) and any non-field block span both columns */
.mui-account-body #CompanyDetailsContainer > .mui-cd-identity,
.mui-account-body #CompanyDetailsContainer > *:not([style*="position:relative"]):not(.mui-cd-identity) {
    grid-column: 1 / -1;
}
/* textareas (custom long-text fields) read better full-width */
.mui-account-body #CompanyDetailsContainer > [style*="position:relative"]:has(textarea) { grid-column: 1 / -1; }
/* control-less wrappers are section headings (e.g. "Πληροφορίες Οργανισμού") —
   span the full row and render them as group dividers so the form scans by section */
.mui-account-body #CompanyDetailsContainer > [style*="position:relative"]:not(:has(input)):not(:has(select)):not(:has(textarea)) {
    grid-column: 1 / -1 !important;
    margin: 18px 0 4px !important; padding-bottom: 7px;
    font-size: 12.5px; font-weight: 800; letter-spacing: .3px;
    color: var(--mui-blue); border-bottom: 1px solid var(--mui-line);
}

/* footer: on the account page the page can grow taller than the viewport, so the
   legacy `position:absolute; top:calc(100vh - footer)` lands the footer mid-page.
   Let it flow at the true end of the content instead. */
.mui-account { min-height: calc(100vh - var(--headerHeight) - 90px); }
/* `~` only works when the footer is an exact subsequent sibling with nothing in
   between; that broke once already (the account page can wrap the footer inside
   an extra container, or the tab content can push it past the general-sibling
   scope). `:has()` matches regardless of exact DOM position, same pattern already
   used above for `body:has(.cfd-wrap)`. */
body:has(.mui-account) .bottom-logo-Container {
    position: relative !important;
    top: auto !important; left: auto !important;
    width: 100% !important; height: var(--footerHeight) !important;
    margin-top: 14px; z-index: auto !important;
    border-top: 1px solid var(--mui-line);
}
/* mandatory fields stand out: amber floating label (alongside the existing " *")
   plus a left accent bar on the field box. Required inputs carry [required]. */
.mui-account-body .default-input[required] + .floating-placeholder,
.mui-account-body .default-dropdown[required] + .floating-placeholder {
    color: #B45309 !important; font-weight: 700 !important;
}
.mui-account-body .default-input[required],
.mui-account-body .default-dropdown[required] {
    border-color: #ecd9ad !important;
    box-shadow: inset 3px 0 0 0 #F5A623 !important;
}
.mui-account-body .default-input[required]:focus,
.mui-account-body .default-dropdown[required]:focus {
    border-color: var(--mui-blue) !important;
    box-shadow: inset 3px 0 0 0 #F5A623, 0 0 0 4px var(--mui-blue-soft) !important;
}

@media (max-width: 760px) {
    .mui-account-body #CompanyDetailsContainer { grid-template-columns: 1fr; }
}

/* identity header (logo + display name) at the top of the list */
.mui-cd-identity {
    display: flex; align-items: center; gap: 22px;
    padding: 2px 0 22px; margin-bottom: 22px; border-bottom: 1px solid var(--mui-line);
}
.mui-cd-logo { position: relative; flex: 0 0 auto; width: 96px; }
.mui-cd-logo-frame {
    width: 96px; height: 96px; border-radius: 18px; border: 1.5px dashed #cdd7e2;
    background: #f7fafc; display: flex; align-items: center; justify-content: center; overflow: hidden;
}
.mui-cd-logo-frame img { max-width: 84%; max-height: 84%; object-fit: contain; }
.mui-cd-logo-edit {
    position: absolute; top: 68px; right: -6px; width: 30px; height: 30px; border-radius: 50%;
    background: var(--mui-blue); color: #fff; display: flex; align-items: center; justify-content: center;
    cursor: pointer; border: 2px solid #fff; box-shadow: 0 6px 14px -4px rgba(0, 99, 155, .6);
    transition: transform .14s ease, filter .14s ease;
}
.mui-cd-logo-edit:hover { transform: translateY(-1px); filter: brightness(1.08); }
.mui-cd-logo input[type=file] { display: none !important; }
.mui-cd-logo-cap { margin-top: 9px; text-align: center; font-size: 11px; font-weight: 600; color: var(--mui-ink-soft); }
.mui-cd-displayname { flex: 1 1 auto; min-width: 0; }
.mui-cd-displayname > [style*="position:relative"] { margin-bottom: 0 !important; }

/* Company profile — mandatory fields and the one field that changes what you can submit.
   Σχετικό άρθρο ΕΚΝ decides which frameworks an organisation may report under, so it is
   lifted out of the run of identical rows instead of being one more line among them. */
/* Invalid input: red edge, distinct from the amber "this one is mandatory" bar above. */
.mui-account-body .default-input.mui-cd-invalid {
    border-color: #e0b4ae !important;
    box-shadow: inset 3px 0 0 0 #c0392b !important;
}

.mui-cd-keyfield {
    margin: 6px 0 14px;
    padding: 14px 14px 11px;
    border: 1px solid var(--mui-line, #e2e8e5);
    border-left: 3px solid var(--mui-blue, #2563eb);
    border-radius: 6px;
    background: rgba(37, 99, 235, .035);
}
.mui-cd-keyfield.is-unset {
    border-left-color: #b7791f;
    background: rgba(183, 121, 31, .07);
}
/* The generic field-wrapper rule above zeroes padding-top on anything with inline
   position:relative, which this card matches — leaving the control flush against its own top
   border. Restore it here (later in the file, so it wins at equal specificity), and push the
   absolutely positioned label down by the same amount so it still floats inside the control. */
.mui-account-body .mui-cd-keyfield { padding-top: 14px !important; }
.mui-account-body .mui-cd-keyfield .mui-cd-keylabel {
    top: 22px !important;   /* 14px card padding + the 8px the other fields float their label at */
    left: 29px !important;  /* 14px card padding + the 15px inset, so it lines up with the value */
}
.mui-cd-keyhint {
    margin-top: 7px;
    font-size: 11.5px;
    line-height: 1.5;
    color: var(--mui-ink-soft, #5d6d66);
}
.mui-cd-keyfield.is-unset .mui-cd-keyhint { color: #8a5a12; }

/* ΚΑΔ feedback under the field. Three states, because they mean different things: a malformed
   code is an error, an unrecognised 4-digit class is only a warning (the platform holds the NACE
   classes, not the full ΚΑΔ catalogue), and a recognised one confirms the sector it resolves to. */
.mui-cd-kadmsg {
    display: none;
    margin-top: 5px;
    padding-left: 1rem;
    font-size: 11.5px;
    line-height: 1.45;
    color: #c0392b;
}
.mui-cd-kadmsg.is-shown { display: block; }
.mui-cd-kadmsg.is-warn { color: #8a5a12; }
.mui-cd-kadmsg.is-ok { color: var(--mui-ink-soft, #5d6d66); }

/* ΚΑΔ type-ahead. Suggestions are ΚΑΔ 2025 — the list AADE accepts today — matched on either the
   code or the description, so someone who does not know their code can search for the activity. */
.mui-kad-list {
    position: absolute;
    top: 3rem;
    left: 1rem;
    z-index: 20;
    min-width: 70%;
    max-width: calc(100% - 1rem);
    max-height: 260px;
    overflow-y: auto;
    padding: 4px;
    background: #fff;
    border: 1px solid var(--mui-line, #ddd);
    border-radius: 6px;
    box-shadow: 0 6px 18px rgba(0, 0, 0, .12);
}
.mui-kad-opt {
    display: flex;
    gap: 10px;
    align-items: baseline;
    padding: 6px 8px;
    cursor: pointer;
    border-radius: 4px;
}
.mui-kad-opt:hover { background: #e8f0fe; }
.mui-kad-code {
    flex: 0 0 auto;
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    font-size: 12px;
    color: var(--mui-blue, #2563eb);
}
.mui-kad-desc {
    flex: 1 1 auto;
    font-size: 11.5px;
    line-height: 1.4;
    color: var(--mui-ink-soft, #5d6d66);
}

@media (max-width: 820px) {
    .mui-account { padding: 0 16px; }
    .mui-account-body { padding: 22px 18px 26px; }
    .mui-account-name { font-size: 23px; }
    .mui-account-body .col-6 { width: 100% !important; flex: 0 0 100% !important; max-width: 100% !important; }
    .mui-cd-identity { flex-direction: column; align-items: flex-start; }
    .mui-cd-displayname { width: 100%; }
}

/* ---- company-info MODAL variant of .mui-account-body ----
   Reuses all the modern field styling, but: (a) the modal frame already insets
   the content, so drop the page-panel padding; (b) lay the form out as a single
   full-width column that occupies the whole modal (no empty second pane);
   (c) the account page lets the container grow with the page, but a modal must
   scroll internally, so re-instate a capped, scrollable container. */
.cd-modal-fill { padding: 2px 2px 6px !important; }
.cd-modal-fill #CompanyDetailsContainer {
    grid-template-columns: 1fr !important;
    column-gap: 0 !important;
    max-height: 60vh !important;
    overflow-y: auto !important;
    padding-right: 8px !important;
}
/* the identity header reads better with a little breathing room in the modal */
.cd-modal-fill .mui-cd-identity { padding-top: 4px; }

/* =========================================================================================
   Διαχείριση Χρηστών (User Management) — modern grid.  Scoped to .umx so it never leaks into
   the companies grid (.aco-* / #nav-company) or any other screen. Reuses the generic
   .aco-toolbar/.aco-search/.aco-btn pieces for the toolbar.
   ========================================================================================= */
.umx { --umx-line: rgba(20,45,70,.10); margin-top: 4px; }
.umx, .umx * { box-sizing: border-box; }

/* grid skeleton — header row + each data row share the same column template so they align */
.umx .umx-head, .umx .umx-row { display: grid; align-items: center; }
.umx.umx-full .umx-head,
.umx.umx-full .umx-row {
    grid-template-columns: 1.1fr 1.1fr 1.7fr 1.2fr 1.7fr 1.05fr .95fr .9fr .9fr .8fr 1fr 1.3fr;
}
.umx.umx-inv .umx-head,
.umx.umx-inv .umx-row {
    grid-template-columns: 1.15fr 1.15fr 1.8fr 1.3fr 1.8fr 1.1fr .95fr .85fr 1fr 1.4fr;
}

/* header */
.umx .umx-head {
    background: #f5f8fb; border: 1px solid var(--umx-line); border-radius: 14px 14px 0 0;
    min-height: 50px; box-shadow: var(--aco-shadow); overflow: hidden;
}
.umx .umx-head .umx-cell { font-size: 11.5px; font-weight: 700; color: #5b6b78;
    text-transform: uppercase; letter-spacing: .02em; }

/* body */
.umx .umx-body {
    background: #fff; border: 1px solid var(--umx-line); border-top: none;
    border-radius: 0 0 14px 14px; box-shadow: var(--aco-shadow); overflow: hidden;
}
.umx .umx-row { min-height: 46px; border-bottom: 1px solid rgba(20,45,70,.06); transition: background .12s ease; }
.umx .umx-row:last-child { border-bottom: none; }
.umx .umx-body > .umx-row:nth-of-type(even) { background: rgba(20,45,70,.025); }
.umx .umx-row:hover { background: rgba(13,148,136,.06); }

/* cells */
.umx .umx-cell { display: flex; align-items: center; padding: 6px 10px; min-width: 0; }
.umx .umx-cell.umx-c-center { justify-content: center; text-align: center; }

/* inline-edit inputs — borderless until hover/focus */
.umx .umx-cell input[type=text],
.umx .umx-cell input[type=email],
.umx .umx-cell input[type=password],
.umx .umx-cell select {
    width: 100%; min-width: 0; height: auto; font-size: 13px; padding: 7px 8px;
    border: 1px solid transparent; border-radius: 8px; background: transparent;
    color: #0B1220; transition: all .14s ease;
}
.umx .umx-cell input:hover, .umx .umx-cell select:hover { background: #f3f6f9; }
.umx .umx-cell input:focus, .umx .umx-cell select:focus {
    outline: none; background: #fff; border-color: #0D9488; box-shadow: 0 0 0 2px rgba(13,148,136,.15);
}
.umx .umx-cell .text-danger { font-size: 10.5px; }

/* sortable header buttons (kept as submit name="sort" — server-side sort unchanged) */
.umx .sortButton {
    border: none; background: none; cursor: pointer; padding: 0; font: inherit;
    display: inline-flex; align-items: center; gap: 6px;
    font-size: 11.5px; font-weight: 700; color: #5b6b78; text-transform: uppercase; letter-spacing: .02em;
}
.umx .sortButton:hover { color: #0D9488; }
.umx .sortButton .fas { font-size: 10px; color: #0D9488; }

/* boolean (Ναι/Όχι radios) → compact segmented pill, binding preserved */
.umx .umx-cell.umx-bool { justify-content: center; gap: 0; }
.umx .p3radioContainer {
    margin: 0; cursor: pointer; user-select: none; position: relative;
    display: inline-flex; align-items: center; justify-content: center;
    padding: 5px 11px; font-size: 12px; font-weight: 600; line-height: 1;
    color: #8595a3; background: #f1f4f7; border: 1px solid var(--umx-line);
}
.umx .umx-cell.umx-bool .p3radioContainer:first-of-type { border-radius: 8px 0 0 8px; border-right-width: 0; }
.umx .umx-cell.umx-bool .p3radioContainer:last-of-type  { border-radius: 0 8px 8px 0; }
.umx .p3radioContainer input,
.umx .p3radioContainer .checkmark {
    position: absolute !important; opacity: 0 !important; width: 0 !important; height: 0 !important;
    margin: 0 !important; padding: 0 !important; pointer-events: none; border: none !important;
}
.umx .p3radioContainer:has(input:checked) { background: #0D9488; color: #fff; border-color: #0D9488; z-index: 1; }

/* action column — icon buttons */
.umx .umx-cell.umx-action { gap: 6px; flex-wrap: wrap; justify-content: center; }
.umx .umx-act {
    display: inline-flex; align-items: center; justify-content: center;
    width: 32px; height: 32px; padding: 0; border-radius: 9px; font-size: 13px;
    border: 1px solid var(--umx-line); background: #fff; color: #5b6b78; cursor: pointer; transition: all .14s ease;
}
.umx .umx-act:hover { color: #0D9488; border-color: #9ad2cc; transform: translateY(-1px); }
.umx .umx-act.umx-act-shield:hover { color: #b3431f; border-color: #e7b9a6; }

/* Extra per-admin permissions: a single "Permissions" button + badge per row (replaces one inline
   toggle per permission — keeps the row clean as the permission list grows), plus the shared modal
   it opens (AdminUserManagementListed.cshtml). The real checkboxes stay in the row for form binding
   but are visually hidden — only ever shown/toggled through the modal. */
.umx .umx-perm-store { position: absolute; opacity: 0; width: 0; height: 0; overflow: hidden; pointer-events: none; }
.umx .umx-perm-btn { position: relative; }
.umx .umx-perm-btn.umx-perm-btn-active { color: #0D9488; border-color: #9ad2cc; }
.umx .umx-perm-badge {
    position: absolute; top: -5px; right: -5px; min-width: 15px; height: 15px; padding: 0 3px;
    border-radius: 999px; background: #0D9488; color: #fff; font-size: 9px; font-weight: 800;
    line-height: 15px; text-align: center; box-shadow: 0 0 0 2px #fff;
}
.umx-perm-modal-content { border: none; border-radius: 16px; overflow: hidden; font-family: Manrope, system-ui, 'Segoe UI', sans-serif; }
.umx-perm-modal-head { display: flex; align-items: center; gap: 12px; padding: 20px 22px 14px; }
.umx-perm-modal-ic {
    width: 40px; height: 40px; border-radius: 12px; flex: 0 0 auto; font-size: 16px; color: #0D9488;
    background: linear-gradient(135deg, rgba(0,99,155,.12), rgba(0,170,125,.14));
    display: flex; align-items: center; justify-content: center;
}
.umx-perm-modal-head h3 { margin: 0; font-size: 16px; font-weight: 800; color: #16344b; }
.umx-perm-modal-sub { font-size: 12px; color: #7d8a97; margin-top: 2px; }
.umx-perm-modal-rows { padding: 4px 22px 10px; display: flex; flex-direction: column; gap: 3px; }
.umx-perm-modal-row { display: flex; align-items: center; gap: 12px; padding: 10px 8px; border-radius: 10px; cursor: pointer; user-select: none; transition: background .12s ease; }
.umx-perm-modal-row:hover { background: rgba(13,148,136,.07); }
.umx-perm-modal-ic2 {
    width: 28px; height: 28px; border-radius: 8px; flex: 0 0 auto; font-size: 12px; color: #5b6b78;
    background: #eef2f6; display: flex; align-items: center; justify-content: center;
}
.umx-perm-modal-lbl { flex: 1; font-size: 13px; color: #16344b; font-weight: 600; }
.umx-perm-toggle { width: 34px; height: 18px; border-radius: 999px; background: #cfd8e0; position: relative; transition: background .16s ease; flex: 0 0 auto; }
.umx-perm-toggle-thumb { position: absolute; top: 2px; left: 2px; width: 14px; height: 14px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.28); transition: left .16s ease; }
.umx-perm-toggle.on { background: #0D9488; }
.umx-perm-toggle.on .umx-perm-toggle-thumb { left: 18px; }
.umx-perm-modal-foot { display: flex; justify-content: flex-end; align-items: center; gap: 10px; padding: 14px 22px 20px; border-top: 1px solid rgba(20,45,70,.06); margin-top: 8px; }
.umx-perm-savemsg { margin-right: auto; font-size: 12px; font-weight: 700; }
.umx-perm-savemsg.is-ok { color: #0d9367; }
.umx-perm-savemsg.is-err { color: #b91c1c; }
.umx-x { background: none; border: none; color: #93a1b0; font-size: 20px; cursor: pointer; margin-left: auto; padding: 4px 6px; border-radius: 8px; line-height: 1; }
.umx-x:hover { background: #f1f5f8; color: #16344b; }

/* per-column filter row (Excel-style) */
.umx.umx-full .umx-filters { grid-template-columns: 1.1fr 1.1fr 1.7fr 1.2fr 1.7fr 1.05fr .95fr .9fr .9fr .8fr 1fr 1.3fr; }
.umx.umx-inv .umx-filters { grid-template-columns: 1.15fr 1.15fr 1.8fr 1.3fr 1.8fr 1.1fr .95fr .85fr 1fr 1.4fr; }
.umx .umx-filters { display: grid; align-items: center; background: rgba(20,45,70,.03); border-bottom: 1px solid var(--umx-line); }
.umx .umx-filters .umx-fcell { padding: 5px 8px; min-width: 0; display: flex; align-items: center; }
.umx .umx-filters .umx-fcell.umx-c-center { justify-content: center; }
.umx .umx-filters input, .umx .umx-filters select {
    width: 100%; min-width: 0; font-size: 11.5px; padding: 5px 7px;
    border: 1px solid var(--umx-line); border-radius: 7px; background: #fff; color: #2a3b48; transition: all .14s ease;
}
.umx .umx-filters input::placeholder { color: #aeb9c2; font-style: italic; }
.umx .umx-filters input:focus, .umx .umx-filters select:focus {
    outline: none; border-color: #0D9488; box-shadow: 0 0 0 2px rgba(13,148,136,.15);
}
.umx .umx-fclear {
    border: 1px solid var(--umx-line); background: #fff; color: #8595a3; width: 26px; height: 26px;
    border-radius: 7px; cursor: pointer; font-size: 12px; line-height: 1; transition: all .14s ease;
}
.umx .umx-fclear:hover { color: #b3431f; border-color: #e7b9a6; }

/* footer action buttons */
.umx .umx-footer { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-top: 14px; }
.umx .umx-footer .button-white-linear { border-radius: 11px; }
.umx .umx-paging { margin-top: 10px; }
.umx .umx-cell input::placeholder { color: #b6c2cc; }

/* ── Submission-limit-reached blocker (ESGMaximumAssessmentsReached) ───────── */
.msr-wrap {
    display: flex;
    justify-content: center;
    align-items: flex-start;
    padding: clamp(28px, 8vh, 90px) 18px 40px;
    min-height: 52vh;
}
.msr-card {
    width: 100%;
    max-width: 560px;
    background: var(--mui-glass-bg-strong, rgba(255,255,255,0.85));
    backdrop-filter: var(--mui-glass-blur);
    -webkit-backdrop-filter: var(--mui-glass-blur);
    border: var(--mui-glass-border);
    border-radius: var(--mui-r-card, 18px);
    box-shadow: var(--mui-shadow);
    padding: 34px 34px 30px;
    text-align: center;
    animation: msr-rise .45s cubic-bezier(.2,.7,.3,1) both;
}
@keyframes msr-rise { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
.msr-icon {
    width: 64px;
    height: 64px;
    margin: 0 auto 16px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--mui-blue, #00639B);
    background: var(--mui-blue-soft, rgba(0,99,155,0.08));
}
.msr-title {
    font-size: 20px;
    font-weight: 700;
    color: var(--mui-ink, #243140);
    margin: 0 0 14px;
    letter-spacing: -0.01em;
}
.msr-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
    margin: 0 0 16px;
}
.msr-chip {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 6px 12px;
    border-radius: var(--mui-r-pill, 999px);
    background: var(--mui-green-soft, rgba(0,170,125,0.10));
    border: 1px solid rgba(0,170,125,0.22);
    font-size: var(--mui-fs-chip, 12.5px);
    max-width: 100%;
}
.msr-chip-k {
    text-transform: uppercase;
    letter-spacing: .04em;
    font-size: 10.5px;
    font-weight: 700;
    color: var(--mui-green, #00AA7D);
    white-space: nowrap;
}
.msr-chip-v {
    font-weight: 600;
    color: var(--mui-ink, #243140);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.msr-text {
    font-size: 14px;
    line-height: 1.55;
    color: var(--mui-ink-soft, #66727f);
    margin: 0 auto 24px;
    max-width: 440px;
}
.msr-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 0 20px;
    height: 42px;
    border-radius: var(--mui-r-pill, 999px);
    background: var(--mui-blue, #00639B);
    color: #fff !important;
    font-weight: 600;
    font-size: 14px;
    text-decoration: none !important;
    box-shadow: var(--mui-shadow-soft);
    transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
}
.msr-btn:hover {
    background: #00547f;
    transform: translateY(-1px);
    box-shadow: var(--mui-shadow-hover);
    color: #fff !important;
}
.msr-btn svg { flex: 0 0 auto; }

/* ── ESG Data Table: "Auto-fill from Excel" (Φόρτωση από Πρότυπο) ───────────── */
.edt-autofill-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 36px;
    padding: 0 16px;
    margin-right: 8px;
    border: none;
    border-radius: var(--mui-r-pill, 999px);
    background: linear-gradient(135deg, #00639B 0%, #00AA7D 100%);
    color: #fff;
    font-weight: 700;
    font-size: 13px;
    cursor: pointer;
    box-shadow: 0 8px 18px -8px rgba(0, 99, 155, 0.7);
    transition: transform .15s ease, box-shadow .15s ease, filter .15s ease;
    vertical-align: middle;
}
.edt-autofill-btn:hover { transform: translateY(-1px); filter: brightness(1.04); box-shadow: 0 10px 22px -8px rgba(0, 99, 155, 0.8); }
.edt-autofill-btn svg { width: 17px; height: 17px; }
.edt-autofill-btn-row { height: 30px; padding: 0 12px; margin-right: 0; font-size: 12px; white-space: nowrap; }
.edt-autofill-btn-row svg { width: 14px; height: 14px; }
.edt-autofill-spark { display: inline-flex; animation: edtSpark 2.6s ease-in-out infinite; }
@keyframes edtSpark { 0%, 100% { transform: scale(1) rotate(0); opacity: 1; } 50% { transform: scale(1.12) rotate(6deg); opacity: .85; } }

.edt-import-overlay {
    position: fixed; inset: 0; z-index: 2147483002;
    background: rgba(16, 38, 58, 0.5); backdrop-filter: blur(3px);
    display: flex; align-items: center; justify-content: center; padding: 20px;
    font-family: 'Manrope', system-ui, 'Segoe UI', sans-serif;
    animation: edtFade .2s ease both;
}
@keyframes edtFade { from { opacity: 0; } to { opacity: 1; } }
.edt-import-card {
    position: relative; width: 100%; max-width: 480px; background: #fff;
    border-radius: 22px; padding: 30px 30px 28px; text-align: center; color: #16344b;
    box-shadow: 0 30px 70px -20px rgba(16, 45, 70, 0.55);
    animation: edtPop .26s cubic-bezier(.16, 1, .3, 1) both;
}
@keyframes edtPop { from { opacity: 0; transform: translateY(14px) scale(.98); } to { opacity: 1; transform: none; } }
.edt-import-x {
    position: absolute; top: 14px; right: 14px; width: 32px; height: 32px;
    border: none; background: #f1f5f8; color: #5b6b78; border-radius: 50%;
    display: flex; align-items: center; justify-content: center; cursor: pointer; transition: background .15s ease;
}
.edt-import-x:hover { background: #e2e8ee; color: #16344b; }
.edt-import-x svg { width: 16px; height: 16px; }
.edt-import-badge {
    width: 58px; height: 58px; margin: 0 auto 14px; border-radius: 18px;
    display: flex; align-items: center; justify-content: center; color: #00AA7D;
    background: linear-gradient(135deg, rgba(0, 99, 155, .12), rgba(0, 170, 125, .16));
}
.edt-import-badge svg { width: 30px; height: 30px; }
.edt-import-title { font-size: 19px; font-weight: 800; margin: 0 0 6px; letter-spacing: -.3px; }
.edt-import-sub { font-size: 13px; line-height: 1.55; color: #5b6b78; margin: 0 auto 18px; max-width: 400px; }
.edt-import-tmpl {
    display: inline-flex; align-items: center; gap: 8px; margin: 0 0 16px;
    padding: 9px 16px; border-radius: 999px; border: 1.5px solid #cfe0ea;
    color: #00639B; font-weight: 700; font-size: 12.5px; text-decoration: none; transition: all .15s ease;
}
.edt-import-tmpl:hover { background: #f0f7fb; border-color: #00639B; color: #00547f; }

.edt-dropzone {
    border: 2px dashed #c6d4e0; border-radius: 16px; background: #fbfdfe;
    padding: 30px 20px; cursor: pointer; transition: border-color .18s ease, background .18s ease, transform .18s ease;
    outline: none;
}
/* "Required" badge on the framework's predefined document rows. A bare red asterisk read as
   decoration; a labelled pill says what it means without needing a legend. */
.edt-doc-req-wrap { margin: 0 0 5px; }
.edt-doc-req {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 2px 9px 2px 7px; border-radius: 999px;
    background: #fff2f0; border: 1px solid #ffd3cd; color: #c0392b;
    font-size: 9.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase;
    line-height: 1.7; white-space: nowrap; cursor: help; vertical-align: middle;
}
.edt-doc-req::before { content: ''; width: 5px; height: 5px; border-radius: 50%; background: currentColor; flex: 0 0 auto; }
/* legacy asterisk kept in case any other view still renders it */
.edt-doc-mandatory-badge {
    display: inline-flex; align-items: center; justify-content: center;
    color: #d9534f; font-weight: 800; font-size: 15px; margin-right: 4px; cursor: help;
}
.edt-dropzone:hover, .edt-dropzone:focus-visible { border-color: #00AA7D; background: #f3fbf8; }
.edt-dropzone.edt-dz-over { border-color: #00AA7D; background: #ecf9f4; transform: scale(1.01); border-style: solid; }
.edt-dz-state { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.edt-dz-ic { width: 46px; height: 46px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #00639B; background: rgba(0, 99, 155, .09); margin-bottom: 4px; }
.edt-dz-ic svg { width: 24px; height: 24px; }
.edt-dz-ic-ok { color: #00AA7D; background: rgba(0, 170, 125, .14); animation: edtPopIc .3s cubic-bezier(.16,1,.3,1) both; }
.edt-dz-ic-err { color: #d9534f; background: rgba(217, 83, 79, .12); }
@keyframes edtPopIc { from { transform: scale(.6); opacity: 0; } to { transform: scale(1); opacity: 1; } }
.edt-dz-title { font-size: 14px; font-weight: 700; color: #16344b; }
.edt-dz-sub { font-size: 12px; color: #7b8893; }
.edt-dz-fname { font-size: 12.5px; font-weight: 600; color: #00639B; word-break: break-all; max-width: 100%; }
.edt-dz-spin {
    width: 34px; height: 34px; border-radius: 50%; margin-bottom: 6px;
    border: 3px solid rgba(0, 99, 155, .18); border-top-color: #00639B; animation: edtSpin .8s linear infinite;
}
@keyframes edtSpin { to { transform: rotate(360deg); } }
.edt-import-retry {
    margin-top: 8px; padding: 8px 18px; border: none; border-radius: 999px;
    background: #00639B; color: #fff; font-weight: 700; font-size: 12.5px; cursor: pointer; transition: background .15s ease;
}
.edt-import-retry:hover { background: #00547f; }

/* auto-fill "Completed N values" confirmation, re-shown after the post-import full-page reload (the
   in-modal flash alone can be missed if the browser starts tearing the page down before it's seen) */
.edt-autofill-toast {
    position: fixed; right: 20px; bottom: 20px; z-index: 2147483003;
    display: flex; align-items: flex-start; gap: 12px;
    max-width: 360px; padding: 14px 18px; border-radius: 16px;
    background: #fff; color: #16344b; box-shadow: 0 20px 45px -15px rgba(16, 45, 70, 0.45);
    font-family: 'Manrope', system-ui, 'Segoe UI', sans-serif;
    opacity: 0; transform: translateY(12px);
    transition: opacity .25s ease, transform .25s ease;
}
.edt-autofill-toast-in { opacity: 1; transform: translateY(0); }
.edt-autofill-toast-ic {
    flex: none; width: 30px; height: 30px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    color: #00AA7D; background: rgba(0, 170, 125, .14);
}
.edt-autofill-toast-ic svg { width: 17px; height: 17px; }
.edt-autofill-toast-title { font-size: 13.5px; font-weight: 800; }
.edt-autofill-toast-doc { font-size: 12px; color: #7b8893; margin-top: 2px; word-break: break-word; }

/* ---------- Smart Check (AI pre-submission review) ---------- */
.edt-smartcheck-btn {
    display: inline-flex; align-items: center; gap: 8px; height: 36px; padding: 0 14px 0 15px;
    margin-right: 8px; border: none; border-radius: var(--mui-r-pill, 999px);
    background: linear-gradient(135deg, #6D28D9 0%, #4F46E5 55%, #2563EB 100%);
    color: #fff; font-weight: 700; font-size: 13px; cursor: pointer; vertical-align: middle;
    box-shadow: 0 8px 18px -8px rgba(79, 70, 229, 0.75);
    transition: transform .15s ease, box-shadow .15s ease, filter .15s ease;
}
.edt-smartcheck-btn:hover { transform: translateY(-1px); filter: brightness(1.05); box-shadow: 0 10px 22px -8px rgba(79, 70, 229, 0.85); }
.edt-smartcheck-btn svg { width: 17px; height: 17px; }
.edt-smartcheck-spark { display: inline-flex; animation: edtSpark 2.6s ease-in-out infinite; }
.edt-smartcheck-ai { font-size: 10px; font-weight: 800; letter-spacing: .05em; background: rgba(255,255,255,.22); padding: 2px 6px; border-radius: 6px; }

#smartCheckModal { position: fixed; inset: 0; z-index: 2147483003; background: rgba(16, 38, 58, 0.5); backdrop-filter: blur(3px); }
#smartCheckModal.show { display: flex !important; align-items: flex-start; justify-content: center; padding: 40px 20px; overflow-y: auto; }
.smc-card {
    width: 100%; max-width: 560px; height: auto !important; background: #fff; border-radius: 22px; overflow: hidden; color: #16344b;
    font-family: 'Manrope', system-ui, 'Segoe UI', sans-serif;
    box-shadow: 0 30px 70px -20px rgba(16, 45, 70, 0.55); animation: edtPop .26s cubic-bezier(.16,1,.3,1) both; margin: auto;
}
.smc-head { display: flex; align-items: center; justify-content: space-between; padding: 18px 20px; background: linear-gradient(135deg, #6D28D9 0%, #4F46E5 55%, #2563EB 100%); color: #fff; }
.smc-head-l { display: flex; align-items: center; gap: 12px; }
.smc-orb { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 12px; background: rgba(255,255,255,.16); }
.smc-orb svg { width: 22px; height: 22px; }
.smc-title { font-size: 17px; font-weight: 800; display: flex; align-items: center; gap: 8px; }
.smc-ai { font-size: 10px; font-weight: 800; letter-spacing: .05em; background: rgba(255,255,255,.22); padding: 2px 6px; border-radius: 6px; }
.smc-sub { font-size: 12.5px; opacity: .9; margin-top: 2px; }
.smc-x { border: none; background: rgba(255,255,255,.14); color: #fff; width: 34px; height: 34px; border-radius: 10px; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; transition: background .15s ease; }
.smc-x:hover { background: rgba(255,255,255,.28); }
.smc-x svg { width: 18px; height: 18px; }
.smc-body { padding: 20px; max-height: 62vh; overflow-y: auto; }
.smc-foot { display: flex; justify-content: flex-end; gap: 10px; padding: 14px 20px; border-top: 1px solid #eef1f6; }
.smc-btn { padding: 9px 18px; border-radius: 999px; border: none; font-weight: 700; font-size: 13px; cursor: pointer; }
.smc-btn-ghost { background: #eef1f6; color: #33465a; }
.smc-btn-ghost:hover { background: #e2e7ef; }

.smc-loading { text-align: center; padding: 34px 10px; }
.smc-spin { display: inline-block; width: 34px; height: 34px; border: 3px solid #e6e2fb; border-top-color: #4F46E5; border-radius: 50%; animation: edtSpin .8s linear infinite; }
.smc-loading-txt { margin-top: 14px; font-weight: 800; font-size: 15px; color: #2d2170; }
.smc-loading-sub { margin-top: 4px; font-size: 12.5px; color: #7b8698; }
.smc-error { padding: 24px; text-align: center; color: #b42318; font-weight: 600; font-size: 14px; }

.smc-score-row { display: flex; align-items: center; gap: 16px; padding: 14px 16px; border-radius: 16px; background: #f6f7fb; border: 1px solid #eceef5; }
.smc-band-ok { background: #eefaf3; border-color: #cdeede; }
.smc-band-warn { background: #fff8ec; border-color: #f6e4c1; }
.smc-band-bad { background: #fdf0ee; border-color: #f6d2cb; }
/* general-feedback badge (readiness + one-liner) — no numeric "completeness score": there's no real
   total-fields-required denominator for it (fields are per-company optional), so a made-up number
   there would just read as fake precision. The readiness label + headline carry the signal instead. */
.smc-band-ic {
    display: flex; align-items: center; justify-content: center; flex: 0 0 48px; width: 48px; height: 48px;
    border-radius: 50%; font-weight: 800; font-size: 20px; color: #fff; background: #4F46E5;
}
.smc-band-ok .smc-band-ic { background: #12a150; }
.smc-band-warn .smc-band-ic { background: #d98a00; }
.smc-band-bad .smc-band-ic { background: #d1382a; }
.smc-readiness { font-weight: 800; font-size: 15px; color: #1e2a3a; }
.smc-headline { font-size: 13px; color: #56637a; margin-top: 3px; line-height: 1.4; }

.smc-meta { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 4px; }
.smc-chip { font-size: 12px; color: #445167; background: #f2f4f8; border: 1px solid #e6eaf1; border-radius: 999px; padding: 5px 11px; }
.smc-chip b { color: #1e2a3a; }
.smc-chip-spark { background: #f3ecff; border-color: #e2d4ff; color: #6b3fd4; }
.smc-chip-pending { background: #eef4ff; border-color: #d5e3fb; color: #2f5fce; font-style: italic; }

.smc-cc { margin-top: 16px; border-radius: 13px; padding: 12px 14px; border: 1px solid #e6eaf1; background: #f8f9fc; }
.smc-cc-match { background: #f2fbf6; border-color: #d8efe2; }
.smc-cc-diff { background: #fffaf0; border-color: #f2e6ca; }
.smc-cc-h { font-weight: 700; font-size: 13px; color: #23303f; margin-bottom: 8px; }
.smc-cc-tbl { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.smc-cc-tbl th { text-align: right; color: #7b8698; font-weight: 600; font-size: 11.5px; padding: 2px 8px; }
.smc-cc-tbl th:first-child { text-align: left; }
.smc-cc-tbl td { text-align: right; padding: 3px 8px; color: #33465a; border-top: 1px solid rgba(0,0,0,.05); }
.smc-cc-tbl td:first-child { text-align: left; font-weight: 600; color: #23303f; }
.smc-cc-ok { color: #12a150; font-weight: 800; }
.smc-cc-bad { color: #d1382a; font-weight: 800; }
.smc-cc-src { margin-top: 8px; font-size: 11px; color: #8a94a4; font-style: italic; }

/* year-over-year movements measured by the platform (Smart Check) */
.smc-yoy { margin-top: 16px; border-radius: 13px; padding: 12px 14px; border: 1px solid #e6eaf1; background: #f8f9fc; }
.smc-yoy-clean { font-size: 12.5px; color: #33465a; background: #f2fbf6; border-color: #d8efe2; }
.smc-yoy-h { font-weight: 700; font-size: 13px; color: #23303f; margin-bottom: 8px; }
.smc-yoy-tbl { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.smc-yoy-tbl th { text-align: right; color: #7b8698; font-weight: 600; font-size: 11.5px; padding: 2px 8px; }
.smc-yoy-tbl th:first-child { text-align: left; }
.smc-yoy-tbl td { text-align: right; padding: 4px 8px; color: #33465a; border-top: 1px solid rgba(0,0,0,.05); }
.smc-yoy-tbl td:first-child { text-align: left; color: #23303f; }
.smc-yoy-scope td { font-weight: 700; }
.smc-yoy-bad { color: #d1382a; font-weight: 800; }
.smc-yoy-mid { color: #b45309; font-weight: 700; }
.smc-yoy-new { color: #6d28d9; font-weight: 700; }
.smc-yoy-note { margin-top: 9px; font-size: 11px; color: #8a94a4; }

.smc-checks { display: flex; flex-direction: column; gap: 10px; margin-top: 16px; }
.smc-check { display: flex; gap: 11px; padding: 12px 13px; border-radius: 13px; background: #f8f9fc; border: 1px solid #eef1f6; }
.smc-check-ic { flex: 0 0 22px; width: 22px; height: 22px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-weight: 800; font-size: 12px; color: #fff; margin-top: 1px; }
.smc-ok .smc-check-ic { background: #12a150; }
.smc-warn .smc-check-ic { background: #d98a00; }
.smc-info .smc-check-ic { background: #4F46E5; }
.smc-ok { background: #f2fbf6; border-color: #d8efe2; }
.smc-warn { background: #fffaf0; border-color: #f2e6ca; }
.smc-check-t { font-weight: 700; font-size: 13.5px; color: #23303f; }
.smc-check-d { font-size: 12.5px; color: #5a6678; margin-top: 2px; line-height: 1.45; }
.smc-disc { margin-top: 16px; font-size: 11.5px; color: #8a94a4; text-align: center; font-style: italic; }

/* ============================================================================
   .num-frac — shared "de-emphasise the decimals" treatment for numeric display.
   The whole part stays full size/weight; the fractional part (separator + digits)
   is rendered smaller and lighter, inheriting color/weight otherwise so it still
   works inside colored stat values, table cells, etc. Read-only display only —
   never used inside an <input value="..."> attribute.
   ============================================================================ */
.num-frac { font-size: 0.76em; font-weight: 400; opacity: .62; letter-spacing: 0; }

/* ============================================================================
   Section — My Account "AI Assistant" page (MCP bridge)
   ============================================================================ */
.mui-ai { max-width: 760px; font-family: 'Inter','Segoe UI',system-ui,sans-serif; }

.mui-ai-hero { display: flex; align-items: flex-start; gap: 18px; margin-bottom: 26px; }
.mui-ai-badge {
    flex: 0 0 auto; width: 58px; height: 58px; border-radius: 18px;
    background: var(--mui-grad-brand, linear-gradient(135deg,#0D9488,#00639B)); color: #fff;
    display: flex; align-items: center; justify-content: center; position: relative;
    box-shadow: 0 16px 30px -14px rgba(13,148,136,.65);
}
.mui-ai-badge svg { width: 28px; height: 28px; }
.mui-ai-badge::after {
    content: ''; position: absolute; inset: -6px; border-radius: 22px;
    border: 2px solid #0D9488; opacity: .14;
}
.mui-ai-head { flex: 1 1 auto; min-width: 0; padding-top: 2px; }
.mui-ai-title-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.mui-ai-title { margin: 0; font-size: 22px; font-weight: 800; letter-spacing: -.4px; color: var(--mui-ink, #0B1220); }
.mui-ai-pill {
    display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 800;
    letter-spacing: .3px; padding: 4px 11px; border-radius: 999px; text-transform: uppercase;
}
.mui-ai-pill svg { width: 11px; height: 11px; }
.mui-ai-pill.is-on { background: rgba(16,185,129,.12); color: #0d9367; }
.mui-ai-pill.is-off { background: rgba(148,163,184,.16); color: #64748b; }
.mui-ai-sub { margin: 8px 0 0; font-size: 13.5px; color: var(--mui-ink-soft, #64748b); line-height: 1.6; max-width: 56ch; }

.mui-ai-section { margin-top: 22px; }
.mui-ai-section-title {
    display: flex; align-items: center; gap: 8px; margin: 0 0 12px;
    font-size: 12.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .5px;
    color: #8a94a3;
}
.mui-ai-section-title svg { width: 14px; height: 14px; color: #0D9488; }

.mui-ai-features { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 10px; }
@media (max-width: 620px) { .mui-ai-features { grid-template-columns: 1fr; } }
.mui-ai-feature {
    display: flex; align-items: flex-start; gap: 11px; padding: 13px 14px;
    background: #fff; border: 1px solid var(--mui-line, #e6edf3); border-radius: 14px;
    transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.mui-ai-feature:hover { border-color: rgba(13,148,136,.35); box-shadow: 0 10px 22px -14px rgba(13,148,136,.35); transform: translateY(-1px); }
.mui-ai-feature-ic {
    flex: 0 0 auto; width: 30px; height: 30px; border-radius: 10px;
    background: linear-gradient(135deg, rgba(13,148,136,.14), rgba(0,99,155,.14)); color: #0D9488;
    display: flex; align-items: center; justify-content: center;
}
.mui-ai-feature-ic svg { width: 15px; height: 15px; }
.mui-ai-feature-t { font-size: 13px; font-weight: 600; color: var(--mui-ink, #0B1220); line-height: 1.45; }

.mui-ai-note {
    display: flex; align-items: flex-start; gap: 9px; margin-top: 12px; padding: 11px 13px;
    background: #f8fafc; border: 1px solid #eef1f6; border-radius: 12px;
    font-size: 12px; color: #64748b; line-height: 1.55;
}
.mui-ai-note svg { flex: 0 0 auto; width: 15px; height: 15px; margin-top: 1px; color: #94a3b8; }

.mui-ai-card {
    margin-top: 22px; padding: 20px 22px; background: #fff;
    border: 1px solid var(--mui-line, #e6edf3); border-radius: var(--mui-r-card, 16px);
    box-shadow: var(--mui-shadow-soft, 0 10px 30px -18px rgba(16,40,70,.18));
}
.mui-ai-steps { list-style: none; margin: 0; padding: 0; counter-reset: aistep; }
.mui-ai-steps li { counter-increment: aistep; display: flex; gap: 12px; padding: 9px 0; }
.mui-ai-steps li:not(:last-child) { border-bottom: 1px dashed #eef1f6; }
.mui-ai-steps li::before {
    content: counter(aistep); flex: 0 0 auto; width: 22px; height: 22px; border-radius: 50%;
    background: rgba(13,148,136,.12); color: #0D9488; font-size: 11.5px; font-weight: 800;
    display: flex; align-items: center; justify-content: center; margin-top: 1px;
}
.mui-ai-steps li span { font-size: 13px; color: var(--mui-ink-soft, #4a5568); line-height: 1.55; padding-top: 1px; }

.mui-ai-code-row { display: flex; align-items: stretch; gap: 8px; margin: 12px 0 4px; }
.mui-ai-code {
    flex: 1 1 auto; min-width: 0; display: flex; align-items: center;
    background: #0B1220; color: #7ee6d8; border-radius: 12px; padding: 12px 14px;
    font-family: 'SFMono-Regular',Menlo,Consolas,monospace; font-size: 13px;
    overflow-x: auto; white-space: nowrap;
}
.mui-ai-copy {
    flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; gap: 6px;
    width: 44px; border: 1.5px solid var(--mui-line, #e3e9f0); border-radius: 12px;
    background: #fff; color: #475569; cursor: pointer; transition: all .15s ease;
}
.mui-ai-copy svg { width: 16px; height: 16px; }
.mui-ai-copy:hover { border-color: #0D9488; color: #0D9488; background: rgba(13,148,136,.06); }
.mui-ai-copy.is-copied { border-color: #10B981; color: #10B981; background: rgba(16,185,129,.08); }

.mui-ai-empty {
    display: flex; align-items: center; gap: 12px; margin-top: 22px; padding: 16px 18px;
    background: #f8fafc; border: 1px dashed #dbe2ea; border-radius: 14px;
    color: #64748b; font-size: 13px; line-height: 1.5;
}
.mui-ai-empty svg { flex: 0 0 auto; width: 26px; height: 26px; color: #94a3b8; }

.mui-ai-tool-tabs { display: flex; gap: 6px; margin-top: 14px; border-bottom: 1px solid #eef1f6; flex-wrap: wrap; }
.mui-ai-tool-tab {
    border: none; background: none; padding: 8px 12px; font-size: 12.5px; font-weight: 600;
    color: var(--mui-ink-soft, #64748b); cursor: pointer; border-bottom: 2px solid transparent;
    margin-bottom: -1px; transition: color .15s ease, border-color .15s ease;
}
.mui-ai-tool-tab:hover { color: #0D9488; }
.mui-ai-tool-tab.is-active { color: #0D9488; border-bottom-color: #0D9488; }

/* ---- Configuration -> Value lists (DataList editor) ---- */
.cfg-dl-rows { display: flex; flex-direction: column; gap: 8px; margin-top: 14px; }
.cfg-dl { display: flex; align-items: flex-start; gap: 14px; border: 1px solid var(--cfg-line); border-radius: 12px; padding: 12px 14px; background: #fff; }
.cfg-dl:hover { border-color: var(--cfg-brand); }
.cfg-dl.is-broken { border-color: #e29aa3; background: #fffafa; }
.cfg-dl.is-empty { border-color: #e6b465; background: #fffdf8; }
.cfg-dl-main { flex: 1 1 auto; min-width: 0; }
.cfg-dl-name { display: flex; align-items: center; gap: 8px; font-size: 13.5px; font-weight: 800; color: var(--cfg-navy); flex-wrap: wrap; }
.cfg-dl-missing { color: #b4424e; }
.cfg-dl-id { font-size: 11px; font-weight: 700; color: var(--cfg-soft); }
.cfg-dl-meta { display: flex; align-items: center; gap: 6px; margin-top: 7px; flex-wrap: wrap; }
.cfg-dl-fw { font-size: 11px; font-weight: 700; color: var(--cfg-soft); background: rgba(20,45,70,.05); border-radius: 6px; padding: 2px 8px; }
.cfg-dl-used { margin-top: 7px; font-size: 11.5px; color: var(--cfg-soft); line-height: 1.5; }
.cfg-dl-actions { display: flex; gap: 6px; flex: 0 0 auto; }
.cfg-ychip-warn { background: #fdf1dc; color: #8a5a0c; border-color: #f0d9ab; }

.cfg-dlv-rows { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }
.cfg-dlv { border: 1px solid var(--cfg-line); border-radius: 10px; padding: 10px 12px; background: #fff; }
.cfg-dlv.is-inactive { opacity: .62; }
.cfg-dlv-head { display: flex; align-items: center; gap: 7px; }
.cfg-dlv-id { font-size: 11px; font-weight: 800; color: var(--cfg-soft); }
.cfg-dlv-fields { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; margin-top: 8px; }
.cfg-dlv-actions { display: flex; gap: 6px; margin-top: 10px; }

/* ---- Configuration: AI analyst review + impact-aware delete confirm --------------------------- */
.cfg-ct-ai-btn { flex: 0 0 auto; align-self: flex-start; display: inline-flex; align-items: center; gap: 6px;
    border: 1px solid rgba(124,58,237,.28); background: linear-gradient(135deg, rgba(124,58,237,.09), rgba(13,148,136,.09));
    color: #6d28d9; border-radius: 9px; padding: 7px 12px; font: inherit; font-size: 12.5px; font-weight: 700;
    cursor: pointer; white-space: nowrap; transition: all .13s ease; }
.cfg-ct-ai-btn:hover:not(:disabled) { border-color: #7c3aed; background: linear-gradient(135deg, rgba(124,58,237,.16), rgba(13,148,136,.14)); }
.cfg-ct-ai-btn:disabled { opacity: .45; cursor: default; }

.cfg-analyst { margin-top: 9px; border: 1px solid var(--cfg-line); border-left: 3px solid #7c3aed;
    border-radius: 11px; background: #fdfcff; overflow: hidden; }
.cfg-analyst-head { display: flex; align-items: center; gap: 8px; padding: 9px 12px;
    border-bottom: 1px solid var(--cfg-line); background: rgba(124,58,237,.05); font-size: 12.5px; }
.cfg-analyst-badge { background: linear-gradient(135deg,#7c3aed,#0d9488); color: #fff; font-size: 10px;
    font-weight: 800; letter-spacing: .05em; padding: 3px 7px; border-radius: 999px; }
.cfg-analyst-code { font-family: ui-monospace, Menlo, monospace; font-weight: 700; color: var(--cfg-navy); }
.cfg-analyst-x { margin-left: auto; border: none; background: none; font-size: 19px; line-height: 1;
    color: var(--cfg-soft); cursor: pointer; padding: 0 4px; border-radius: 6px; }
.cfg-analyst-x:hover { background: rgba(20,45,70,.08); color: var(--cfg-navy); }
.cfg-analyst-body { padding: 11px 14px; font-size: 13px; line-height: 1.6; color: var(--cfg-navy); }
.cfg-analyst-body p { margin: 0 0 7px; }
.cfg-analyst-body ul { margin: 0 0 7px; padding-left: 19px; }
.cfg-analyst-body li { margin: 3px 0; }
.cfg-analyst-body code { font-family: ui-monospace, Menlo, monospace; font-size: 12px;
    background: rgba(20,45,70,.07); padding: 1px 5px; border-radius: 5px; }
.cfg-analyst-foot { padding: 7px 14px; border-top: 1px solid var(--cfg-line); background: #fbfaff;
    font-size: 11px; color: var(--cfg-soft); }
.cfg-analyst-err { padding: 12px 14px; font-size: 12.5px; color: #b91c1c; }
.cfg-analyst-spin { width: 13px; height: 13px; border: 2px solid rgba(124,58,237,.25);
    border-top-color: #7c3aed; border-radius: 50%; display: inline-block; margin-right: 7px;
    animation: cfgAnalystSpin .7s linear infinite; }
@keyframes cfgAnalystSpin { to { transform: rotate(360deg); } }

/* Whole-framework audit panel. Shares the analyst panel's shell but is wider in purpose: a scoreboard,
   a deterministic findings list, and the AI's reading of them. */
.cfg-audit-scope { display: flex; align-items: center; gap: 7px; padding: 9px 12px; border-bottom: 1px solid var(--cfg-line); }
.cfg-audit-goal { flex: 1; border: 1px solid var(--cfg-line); border-radius: 8px; padding: 6px 10px;
    font-size: 12px; color: var(--cfg-navy); background: #fff; }
.cfg-audit-goal:focus { outline: none; border-color: #7c3aed; box-shadow: 0 0 0 3px rgba(124,58,237,.12); }
.cfg-audit-stats { display: flex; flex-wrap: wrap; gap: 7px; padding: 10px 14px 4px; }
.cfg-audit-stat { font-size: 11px; color: var(--cfg-soft); background: rgba(20,45,70,.05);
    border-radius: 999px; padding: 3px 9px; }
.cfg-audit-stat b { color: var(--cfg-navy); font-weight: 800; }
.cfg-audit-stat-high b { color: #b91c1c; }
.cfg-audit-stat-med b { color: #b45309; }
.cfg-audit-list { list-style: none; margin: 0; padding: 6px 14px 12px; }
.cfg-audit-f { display: flex; gap: 9px; padding: 9px 0; border-bottom: 1px solid var(--cfg-line); font-size: 12.5px; }
.cfg-audit-f:last-child { border-bottom: none; }
.cfg-audit-sev { flex: none; width: 6px; border-radius: 3px; background: var(--cfg-soft); }
.cfg-audit-sev-high { background: #dc2626; }
.cfg-audit-sev-medium { background: #f59e0b; }
.cfg-audit-sev-low { background: #94a3b8; }
.cfg-audit-f-t { font-weight: 700; color: var(--cfg-navy); }
.cfg-audit-f-d { color: var(--cfg-soft); line-height: 1.55; margin-top: 2px; }
.cfg-audit-clean { padding: 14px; font-size: 12.5px; color: #0f766e; }
.cfg-audit-fixbtn { flex: none; align-self: flex-start; border: 1px solid var(--cfg-line); background: #fff;
    border-radius: 8px; font-size: 11px; font-weight: 700; color: #7c3aed; padding: 4px 10px; cursor: pointer; }
.cfg-audit-fixbtn:hover { background: rgba(124,58,237,.07); border-color: rgba(124,58,237,.4); }
.cfg-audit-fix { margin-top: 8px; padding: 9px 12px; border-left: 2px solid #7c3aed; background: #fdfcff;
    border-radius: 0 8px 8px 0; font-size: 12px; line-height: 1.55; color: var(--cfg-navy); }
.cfg-audit-fix ol, .cfg-audit-fix ul { margin: 0 0 6px; padding-left: 18px; }
.cfg-audit-fix code { font-family: ui-monospace, Menlo, monospace; font-size: 11.5px;
    background: rgba(20,45,70,.07); padding: 1px 5px; border-radius: 5px; }
.cfg-audit-repair { margin-top: 8px; padding: 9px 11px; border: 1px dashed rgba(124,58,237,.45);
    border-radius: 9px; display: flex; flex-direction: column; gap: 6px; align-items: flex-start; }
.cfg-audit-repair code { word-break: break-all; }

/* Company preview. The host renders the live data-table markup, so it is scoped and scrollable rather
   than styled — anything that restyles it here would defeat the purpose of showing the real thing. */
/* Opens ON TOP of the framework content modal it is launched from. Every .cfg-modal-overlay shares one
   z-index, and this one sits earlier in the DOM, so at equal z-index it painted behind the still-open
   editor and the button looked dead. Above the overlay, below the toast (2147483003). */
#cfgPreviewModal { z-index: 2147483002; }
#cfgPreviewModal.open { z-index: 2147483004; }
.cfg-preview-bar { display: flex; align-items: center; gap: 9px; padding: 12px 20px;
    border-bottom: 1px solid var(--cfg-line); flex-wrap: wrap; }
.cfg-preview-bar label { font-size: 11px; font-weight: 700; color: var(--cfg-soft);
    text-transform: uppercase; letter-spacing: .5px; }
.cfg-preview-bar .cfg-input { width: auto; min-width: 200px; }
.cfg-preview-count { margin-left: auto; font-size: 11.5px; color: var(--cfg-soft); }
.cfg-preview-note { padding: 10px 20px; font-size: 11.5px; line-height: 1.55; color: #34505f;
    background: #f5fafd; border-bottom: 1px solid var(--cfg-line); }
.cfg-preview-host { padding: 0; max-height: 72vh; overflow: auto; background: #fff; }
/* The table itself lives in a shadow root with its own stylesheet (see cfgPreviewShell), so the rules
   that tidy the live markup up — static sticky bar, hidden modals and menus — are injected in there and
   deliberately not repeated at page level, where they would leak onto the Configuration screen. */
.cfg-preview-loading { padding: 40px 20px; text-align: center; font-size: 13px; color: var(--cfg-soft); }

/* Submitted-data footprint badge in the fields grid. Neutral when a field carries no answers,
   emphatic once it does — this is the number that says "removing this destroys real data". */
.cfg-ct-databtn { border: 1px solid var(--cfg-line); background: #fff; border-radius: 7px;
    font-size: 11px; font-weight: 700; color: var(--cfg-soft); padding: 2px 7px; cursor: default;
    font-family: ui-monospace, Menlo, monospace; }
.cfg-ct-databtn-has { border-color: rgba(180,83,9,.4); background: #fffbeb; color: #b45309; }
.cfg-ct-databtn-none { opacity: .55; }

/* Above .cfg-modal-overlay (2147483002) and the history panel (…003). Every confirm in this screen
   is raised FROM inside a modal — deleting a row, locking the content — so at 30050 it rendered
   behind the modal that asked for it and the click looked like it had done nothing. */
.cfg-confirm-back { position: fixed; inset: 0; z-index: 2147483004; background: rgba(13,32,54,.5);
    display: flex; align-items: center; justify-content: center; padding: 20px; }
.cfg-confirm-box { width: 100%; max-width: 520px; background: #fff; border-radius: 14px;
    box-shadow: 0 26px 64px -18px rgba(13,32,54,.5); overflow: hidden; }
.cfg-confirm-body { padding: 18px 20px 6px; max-height: 60vh; overflow-y: auto; }
.cfg-confirm-foot { display: flex; justify-content: flex-end; gap: 9px; padding: 14px 20px 16px; }
.cfg-confirm-cancel, .cfg-confirm-ok { border-radius: 9px; padding: 9px 17px; font: inherit;
    font-size: 13px; font-weight: 700; cursor: pointer; border: 1px solid transparent; }
.cfg-confirm-cancel { background: #fff; border-color: var(--cfg-line); color: var(--cfg-navy); }
.cfg-confirm-cancel:hover { background: #f1f5f9; }
.cfg-confirm-ok { background: #dc2626; color: #fff; }
.cfg-confirm-ok:hover { background: #b91c1c; }

.cfg-delimpact-q { font-size: 14.5px; font-weight: 800; color: var(--cfg-navy); margin-bottom: 12px; }
.cfg-delimpact-q code, .cfg-delimpact-sub code { font-family: ui-monospace, Menlo, monospace; font-size: 12.5px;
    background: rgba(20,45,70,.07); padding: 1px 6px; border-radius: 5px; }
.cfg-delimpact-item { border-radius: 9px; padding: 10px 12px; margin-bottom: 9px; font-size: 12.5px;
    line-height: 1.55; color: var(--cfg-navy); }
.cfg-delimpact-danger { background: rgba(220,38,38,.07); border: 1px solid rgba(220,38,38,.22); }
.cfg-delimpact-warn { background: rgba(217,119,6,.08); border: 1px solid rgba(217,119,6,.24); }
.cfg-delimpact-ok { background: rgba(13,148,136,.08); border: 1px solid rgba(13,148,136,.22); }
.cfg-delimpact-sub { margin-top: 6px; font-size: 11.5px; color: var(--cfg-soft); max-height: 132px; overflow-y: auto; }
.cfg-delimpact-sub > div { padding: 1px 0; }
.cfg-delimpact-yr { opacity: .7; }
.cfg-delimpact-other { background: rgba(20,45,70,.09); border-radius: 5px; padding: 0 5px; margin-left: 4px; }
.cfg-delimpact-note { font-size: 11.5px; color: var(--cfg-soft); line-height: 1.5; margin-top: 2px; }

/* ---- "why is there no Create button" note ---------------------------------------------------
   Shown in the create-button slot of an OPEN year when something blocks this account from
   starting a report (placeholder/invalid account email, missing industry, bad KAD). It replaces
   an empty <span> that rendered nothing at all, which made a blocked account look like a broken
   page. Deliberately an inline note rather than an alert: the full actionable text already sits
   in the banner at the top of the list, and this repeats once per open year. */
.create-blocked-note {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    max-width: 100%;
    padding: 6px 12px;
    border-radius: 20px;
    background: #FFF4E5;
    border: 1px solid #F5C77E;
    color: #8A5A00;
    font-size: 12px;
    font-weight: 600;
    line-height: 1.35;
    cursor: help;
}
.create-blocked-note svg { width: 14px; height: 14px; flex: 0 0 auto; }
.create-blocked-note > span { min-width: 0; }


/* ---- optional per-framework-group tab branding (admin Configuration -> group modal) ---------
   The whole block is inert until the admin turns the switch on; an unbranded group is the default
   and renders the submissions tab exactly as before. */
.cfg-brand-block { margin-top: 14px; padding-top: 12px; border-top: 1px solid #e8edf3; }
.cfg-brand-hint { margin: 4px 0 0 46px; font-size: 11.5px; color: #7b8893; }
.cfg-brand-fields { margin-top: 10px; }
.cfg-brand-fields input[type="color"] { width: 100%; height: 34px; padding: 2px; border: 1px solid #d5dde6; border-radius: 8px; background: #fff; cursor: pointer; }
.cfg-brand-fields input[type="file"] { font-size: 12px; }
.cfg-brand-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 10px; }
/* the preview is the tab itself, at the size it will actually render */
.cfg-brand-preview {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 8px 20px; border-radius: 999px; border: 1px solid #e2e8f0;
    font-size: 13px; font-weight: 600; background: #f8fafc; color: #16344b;
}
.cfg-brand-preview img { height: 18px; width: auto; max-width: 90px; object-fit: contain; }
.cfg-btn-sm { padding: 5px 12px !important; font-size: 12px !important; }

/* the branded tab on the submissions page. Only the colours the admin actually set are emitted as
   inline style, so a group with a logo but no colours keeps the default tab colours, and so on. */
.modern-submissions .nav-tabs .nav-link .mui-tab-logo {
    height: 16px; width: auto; max-width: 74px; object-fit: contain;
    margin-right: 7px; vertical-align: -3px;
}

/* =====================================================================================
   ESG Performance Overview (epo-*): company tab + admin consolidated page
   ===================================================================================== */
.epo-page { padding: 14px 16px 40px; display: flex; flex-direction: column; gap: 14px; font-size: 13px; color: #16344b; }
.epo-card { background: #fff; border: 1px solid #e4eaf0; border-radius: 16px; box-shadow: 0 1px 2px rgba(15,23,42,.04); }
/* company card */
.epo-company { display: grid; grid-template-columns: 200px 1fr; overflow: hidden; }
.epo-pin { background: radial-gradient(120% 90% at 30% 20%, #dff3ec 0%, #e8f1fa 55%, #dbe7f3 100%); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; color: #00639B; padding: 18px; text-align: center; font-weight: 700; font-size: 12.5px; }
.epo-company-body { padding: 18px 22px; }
.epo-company-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; }
.epo-company-name { display: flex; align-items: center; gap: 8px; font-size: 18px; font-weight: 800; color: #0f2b3c; }
.epo-company-sub { color: #7b8893; font-size: 12.5px; margin-top: 2px; }
.epo-company-badges { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.epo-badge-id { background: #00AA7D; color: #fff; font-weight: 800; font-size: 11px; letter-spacing: .3px; padding: 6px 12px; border-radius: 999px; }
.epo-year { display: flex; align-items: center; gap: 8px; font-size: 12px; color: #64748b; }
.epo-year select, .epo-filters select { border: 1.5px solid #dfe6ee; border-radius: 9px; padding: 6px 10px; font-size: 12.5px; font-weight: 700; color: #0f2b3c; background: #fff; }
.epo-attrs { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px 18px; margin-top: 16px; }
.epo-attr small { display: block; font-size: 10px; letter-spacing: .5px; text-transform: uppercase; color: #94a3b0; font-weight: 700; }
.epo-attr b { display: block; font-size: 13px; font-weight: 700; color: #16344b; margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* empty state */
.epo-empty { padding: 44px 28px 40px; text-align: center; max-width: 720px; margin: 0 auto; width: 100%; }
.epo-empty h3 { font-size: 20px; font-weight: 800; color: #0f2b3c; margin: 8px 0 8px; }
.epo-empty p { color: #55636f; font-size: 14px; line-height: 1.6; margin: 0 auto 18px; max-width: 560px; }
.epo-empty-peers { display: inline-block; background: #f0faf6; color: #1d6b52; border: 1px solid #cdece0; border-radius: 999px; padding: 6px 14px; font-size: 12px; font-weight: 700; margin-bottom: 18px; }
.epo-cta { display: inline-flex; align-items: center; gap: 8px; border: none; cursor: pointer; color: #fff; font-weight: 800; font-size: 14px; padding: 12px 22px; border-radius: 999px; background: linear-gradient(135deg, #00639B 0%, #00AA7D 100%); box-shadow: 0 10px 24px -10px rgba(0,99,155,.6); transition: transform .15s, box-shadow .15s; }
.epo-cta:hover { transform: translateY(-1px); box-shadow: 0 14px 28px -10px rgba(0,99,155,.7); }
.epo-cta-sm { font-size: 12.5px; padding: 8px 16px; }
/* navigator */
.epo-nav { background: #fff; border: 1px solid #e4eaf0; border-radius: 16px; overflow: hidden; }
.epo-nav-head { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; padding: 14px 18px; border-bottom: 1px solid #edf1f5; }
.epo-nav-title { display: flex; align-items: center; gap: 14px; font-weight: 800; font-size: 15px; color: #0f2b3c; }
.epo-pills { display: flex; gap: 4px; background: #f3f6f9; border-radius: 999px; padding: 3px; }
.epo-pill { border: none; background: transparent; border-radius: 999px; padding: 5px 12px; font-size: 12px; font-weight: 700; color: #55636f; cursor: pointer; }
.epo-pill.is-on { background: #0f2b3c; color: #fff; }
.epo-pill-e:not(.is-on) { color: #0f8a5f; } .epo-pill-s:not(.is-on) { color: #7c3aed; } .epo-pill-g:not(.is-on) { color: #0369a1; }
.epo-legend { display: flex; gap: 14px; flex-wrap: wrap; font-size: 11px; color: #64748b; }
.epo-legend span { display: inline-flex; align-items: center; gap: 5px; }
.epo-lg { display: inline-block; width: 10px; height: 10px; border-radius: 50%; }
.epo-lg-me { background: #1a73e8; } .epo-lg-band { width: 18px; height: 6px; border-radius: 3px; background: #bfe8d6; }
.epo-lg-sector { width: 3px; height: 12px; border-radius: 1px; background: #0f8a5f; }
.epo-lg-global { width: 3px; height: 12px; border-radius: 1px; background: #94a3b0; border-left: 1px dashed #94a3b0; background: transparent; }
.epo-lg-region { background: #7c3aed; } .epo-lg-size { width: 0; height: 0; border-radius: 0; border-left: 5px solid transparent; border-right: 5px solid transparent; border-bottom: 9px solid #f97316; }
.epo-table { display: flex; flex-direction: column; }
.epo-thead, .epo-row { display: grid; grid-template-columns: minmax(220px, 2.2fr) minmax(220px, 2fr) 110px 100px 100px 100px 100px; gap: 10px; align-items: center; padding: 0 18px; }
.epo-table-admin .epo-thead, .epo-table-admin .epo-row { grid-template-columns: minmax(220px, 2.2fr) minmax(220px, 2fr) 110px 110px 110px 80px; }
.epo-thead { font-size: 10.5px; letter-spacing: .5px; text-transform: uppercase; color: #94a3b0; font-weight: 800; padding-top: 12px; padding-bottom: 10px; }
.epo-thead .epo-r { border-bottom: 2px solid #e4eaf0; padding-bottom: 2px; }
.epo-group-head { display: flex; align-items: center; gap: 8px; font-size: 10.5px; letter-spacing: .6px; font-weight: 800; color: #55636f; padding: 12px 18px 6px; }
.epo-group-head i { width: 8px; height: 8px; border-radius: 50%; }
.epo-cat-E i, .epo-code.epo-cat-E { background: #10b981; } .epo-cat-S i, .epo-code.epo-cat-S { background: #8b5cf6; } .epo-cat-G i, .epo-code.epo-cat-G { background: #0ea5e9; }
.epo-row { padding-top: 10px; padding-bottom: 10px; border-top: 1px solid #f1f4f7; }
.epo-row:hover { background: #fafcfe; }
.epo-row-na { opacity: .55; }
.epo-var { display: flex; align-items: center; gap: 10px; min-width: 0; }
.epo-code { color: #fff; font-size: 10px; font-weight: 800; padding: 2px 7px; border-radius: 6px; flex: 0 0 auto; }
.epo-lbl { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-weight: 600; color: #16344b; }
.epo-track-wrap { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.epo-track { position: relative; height: 8px; border-radius: 6px; background: #eef2f6; margin: 8px 8px; }
.epo-band { position: absolute; top: 0; bottom: 0; border-radius: 6px; background: #bfe8d6; }
.epo-mk { position: absolute; top: 50%; transform: translate(-50%, -50%); }
.epo-mk-med { width: 2px; height: 16px; background: #0f8a5f; border-radius: 1px; }
.epo-mk-sector { width: 3px; height: 16px; background: #0f8a5f; border-radius: 1px; }
.epo-mk-global { width: 0; height: 16px; border-left: 2px dashed #94a3b0; }
.epo-mk-region { width: 10px; height: 10px; border-radius: 50%; background: #7c3aed; border: 2px solid #fff; box-shadow: 0 0 0 1px #7c3aed; }
.epo-mk-size { width: 0; height: 0; border-left: 5px solid transparent; border-right: 5px solid transparent; border-bottom: 9px solid #f97316; transform: translate(-50%, -60%); }
.epo-mk-me { width: 14px; height: 14px; border-radius: 50%; background: #1a73e8; border: 2.5px solid #fff; box-shadow: 0 1px 4px rgba(26,115,232,.5); z-index: 2; }
.epo-track-note { font-size: 10.5px; color: #94a3b0; }
.epo-c { text-align: center; } .epo-r { text-align: right; }
.epo-chip { display: inline-block; padding: 4px 12px; border-radius: 8px; font-weight: 800; font-size: 12px; }
.epo-chip-yes { background: #e6f7ef; color: #15803d; } .epo-chip-no { background: #fdecec; color: #b91c1c; }
.epo-chip-num { background: #e8f1fb; color: #1a5fb4; } .epo-chip-na { background: #f1f4f7; color: #94a3b0; }
.epo-delta { font-weight: 800; font-size: 12px; white-space: nowrap; }
.epo-delta-good { color: #15803d; } .epo-delta-bad { color: #dc2626; } .epo-delta-flat { color: #64748b; } .epo-delta-na { color: #c3ccd5; }
.epo-num { font-weight: 700; } .epo-muted { color: #94a3b0; font-weight: 600; }
.epo-foot { padding: 12px 18px 16px; font-size: 11px; color: #94a3b0; border-top: 1px solid #edf1f5; line-height: 1.5; }
/* admin */
.epo-admin-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; flex-wrap: wrap; }
.epo-admin-head h2 { font-size: 20px; font-weight: 800; color: #0f2b3c; margin: 0; }
.epo-admin-sub { color: #64748b; font-size: 12.5px; margin-top: 2px; }
.epo-filters { display: flex; gap: 10px; align-items: flex-end; flex-wrap: wrap; }
.epo-filters label { display: flex; flex-direction: column; gap: 3px; font-size: 10.5px; text-transform: uppercase; letter-spacing: .4px; color: #94a3b0; font-weight: 700; }
.epo-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; }
.epo-tile { background: #fff; border: 1px solid #e4eaf0; border-radius: 14px; padding: 14px 16px; }
.epo-tile small { display: block; font-size: 10.5px; text-transform: uppercase; letter-spacing: .4px; color: #94a3b0; font-weight: 700; }
.epo-tile b { display: block; font-size: 26px; font-weight: 800; color: #0f2b3c; margin: 4px 0 0; }
.epo-tile span { font-size: 11.5px; color: #64748b; }
.epo-tile-on { border-color: #bfe8d6; background: #f6fcf9; }
.epo-split { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.epo-mini { padding: 14px 16px; }
.epo-mini h4 { font-size: 12px; font-weight: 800; color: #0f2b3c; margin: 0 0 10px; text-transform: uppercase; letter-spacing: .4px; }
.epo-mini-row { display: grid; grid-template-columns: minmax(120px, 1fr) 2fr 34px; gap: 10px; align-items: center; font-size: 12px; padding: 4px 0; }
.epo-mini-row span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: #44525f; font-weight: 600; }
.epo-mini-row i { display: block; height: 8px; border-radius: 6px; background: #eef2f6; }
.epo-mini-row i b { display: block; height: 100%; border-radius: 6px; background: linear-gradient(90deg, #00639B, #00AA7D); }
.epo-mini-row em { font-style: normal; font-weight: 800; color: #0f2b3c; text-align: right; }
@media (max-width: 1100px) { .epo-thead, .epo-row, .epo-table-admin .epo-thead, .epo-table-admin .epo-row { grid-template-columns: minmax(180px, 2fr) minmax(160px, 2fr) 90px repeat(4, 80px); } }
@media (max-width: 900px) { .epo-company { grid-template-columns: 1fr; } .epo-pin { flex-direction: row; } .epo-split { grid-template-columns: 1fr; } .epo-thead { display: none; } .epo-row, .epo-table-admin .epo-row { grid-template-columns: 1fr 1fr; } .epo-var, .epo-track-wrap { grid-column: 1 / -1; } }
.epo-map { position: relative; min-height: 190px; background: #e8f1fa; }
.epo-map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; pointer-events: none; filter: saturate(.9); }
.epo-map-lbl { position: absolute; left: 10px; bottom: 10px; background: rgba(255,255,255,.92); color: #00639B; font-weight: 800; font-size: 11.5px; padding: 5px 10px; border-radius: 999px; box-shadow: 0 2px 8px rgba(15,43,60,.15); text-decoration: none; max-width: calc(100% - 20px); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.epo-status-pill { display: inline-block; background: #e8f1fb; color: #1a5fb4; border: 1px solid #cfe0f5; border-radius: 999px; padding: 6px 14px; font-size: 12px; font-weight: 800; margin-bottom: 6px; }
.epo-cta-ghost { background: #fff; color: #00639B; border: 1.5px solid #cfe0f5; box-shadow: none; }
.epo-cta-ghost:hover { background: #f4f9fd; box-shadow: none; }
.mui-agg-subtab-esg.is-active { --agg-accent: #00AA7D; }

/* Submission blockers (Submissions.cshtml). The old .c-Error box was a 1px red rectangle sized to
   its text, so a short blocker rendered as a thin strip that read as a field validation error —
   easy to skim past on a page where every Create button had just been replaced. Amber, not red:
   this is a "do this first", not a failure. .c-Error still supplies the base box, so these only
   override what needs to change. */
.mui-blocker.c-Error {
    display: flex; align-items: flex-start; gap: 12px;
    border: 1px solid #f0d9a8 !important;
    border-left: 4px solid #F5A623 !important;
    border-radius: 12px;
    background: #fffaf0 !important;
    padding: 14px 16px;
    color: #4a3a1c;
    font-size: 13.5px; line-height: 1.6;
    text-align: left;
}
.mui-blocker-ic {
    flex: 0 0 auto; width: 20px; height: 20px; margin-top: 1px;
    fill: none; stroke: #B45309; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round;
}
.mui-blocker-body { min-width: 0; }
.mui-blocker-title {
    font-weight: 800; font-size: 14.5px; color: #7c4a03;
    margin-bottom: 4px; letter-spacing: -.1px;
}
/* the "take me to the field" link — a button, because it is the point of the whole message */
.mui-blocker-cta {
    display: inline-block; padding: 8px 16px; border-radius: 10px;
    background: #B45309; color: #fff !important; text-decoration: none !important;
    font-weight: 700; font-size: 13px;
    box-shadow: 0 8px 18px -10px rgba(180, 83, 9, .9);
    transition: filter .14s ease, transform .14s ease;
}
.mui-blocker-cta:hover { filter: brightness(1.08); transform: translateY(-1px); }

/* Partial Excel import: the values that were read are saved, so this is amber guidance rather than a
   red failure. Wider and left-aligned because it carries two sentences of instructions, not a filename. */
.edt-autofill-toast.edt-autofill-toast-partial { max-width: 520px; align-items: flex-start; }
.edt-autofill-toast-partial .edt-autofill-toast-ic { color: #B45309; }
.edt-autofill-toast-partial .edt-autofill-toast-doc,
.edt-done-partial {
    color: #7c4a03; font-size: 12.5px; line-height: 1.55; text-align: left;
    background: #fffaf0; border-left: 3px solid #F5A623; border-radius: 8px;
    padding: 9px 11px; margin-top: 7px;
}

/* "Download summary" on the ESG Performance Overview company card. Sits in the same badge row as the
   year picker, so it is sized to match the picker rather than the page's primary buttons. */
.epo-dl {
    display: inline-flex; align-items: center; gap: 7px;
    padding: 7px 14px; border-radius: 10px;
    background: #00639B; color: #fff !important; text-decoration: none !important;
    font-size: 12.5px; font-weight: 700; white-space: nowrap;
    box-shadow: 0 8px 18px -12px rgba(0, 99, 155, .95);
    transition: filter .14s ease, transform .14s ease;
}
.epo-dl:hover { filter: brightness(1.08); transform: translateY(-1px); }
.epo-dl svg { flex: 0 0 auto; }


/* Excel cell mapping editor (Configuration → framework → «Αντιστοίχιση κελιών Excel»). */
.cfg-cellmap-sec-t { font-size: 12px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase;
  color: var(--cfg-ink-soft, #64748b); margin: 14px 0 6px; }
#cfgCellMapTable td { padding: 5px 6px; vertical-align: middle; }
#cfgCellMapTable .cfg-input { width: 100%; padding: 5px 8px; font-size: 12.5px; }
#cfgCellMapTable td:last-child { text-align: center; }
#cfgCellMapTable .cfg-btn { padding: 3px 9px; line-height: 1.2; }
/* a saved row flashes green — the only feedback that a per-field edit was persisted */
@keyframes cfgRowSaved { from { background: #d1fae5; } to { background: transparent; } }
.cfg-row-saved { animation: cfgRowSaved .9s ease-out; }

/* origin badge in the Excel-mapping editor */
.cfg-cellmap-origin { white-space: nowrap; }
.cfg-cellmap-tag { display: inline-block; font-size: 10.5px; font-weight: 800; letter-spacing: .02em;
  border-radius: 999px; padding: 2px 8px; }
.cfg-cellmap-tag.is-builtin  { background: #eef2f7; color: #64748b; border: 1px solid #dfe6ee; }
.cfg-cellmap-tag.is-override { background: #fff4e5; color: #8a5a00; border: 1px solid #f5c77e; }
.cfg-cellmap-tag.is-custom   { background: #e8f7ee; color: #0f7a37; border: 1px solid #bfe7cd; }
.cfg-cellmap-tag.is-dead     { background: #fdecec; color: #a12a2a; border: 1px solid #f2c0c0; }
.cfg-cellmap-builtin .cfg-input { background: #fbfcfe; }

/* ---- Configuration: field change history panel ------------------------------------------------
   Who created, deactivated, edited or unlinked a framework's input fields, and when. Built for the
   2026-09-09 "deactivated fields are active again the next morning" investigation, so the layout
   optimises for scanning a long list: fixed-width time and actor columns, the verb in the middle,
   the field code as a monospace anchor. Rows the application did not write are pulled out visually,
   because they are the ones that answer the question. */
/* This one opens from INSIDE the framework content modal, which is another .cfg-modal-overlay at
   the same z-index (2147483002) and sits later in the DOM — so at equal stacking the content modal
   paints on top and the history panel opens invisibly behind it, which looks exactly like the
   History button doing nothing. One step up puts it above its launcher; the toast stays above both
   (same value, later in the DOM). */
#cfgFieldHistoryModal { z-index: 2147483003; }

.cfg-fh-bar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 8px; }
.cfg-fh-search { flex: 1 1 260px; min-width: 200px; }
.cfg-fh-only { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; cursor: pointer; white-space: nowrap; }
.cfg-fh-hint { font-size: 11.5px; line-height: 1.45; margin-bottom: 10px; }
.cfg-fh-list { max-height: 60vh; overflow-y: auto; border: 1px solid var(--cfg-border, #e3e6ea); border-radius: 8px; }
.cfg-fh-empty { padding: 22px 16px; text-align: center; font-size: 12.5px; }
.cfg-fh-err { display: block; margin-top: 6px; font-size: 11px; opacity: .75; }

.cfg-fh-row {
    display: grid;
    grid-template-columns: 150px 150px 190px auto 1fr auto;
    align-items: baseline;
    gap: 10px;
    padding: 7px 12px;
    border-bottom: 1px solid var(--cfg-border-soft, #eef1f4);
    font-size: 12.5px;
}
.cfg-fh-row:last-child { border-bottom: 0; }
.cfg-fh-row:hover { background: var(--cfg-row-hover, #f7f9fb); }
.cfg-fh-when { color: #6b7280; font-variant-numeric: tabular-nums; white-space: nowrap; }
.cfg-fh-who { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* Not a person: the program the database saw. Reads as machinery, not as a colleague. */
.cfg-fh-who.is-sql { font-weight: 500; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11.5px; color: #7c5cbf; }
.cfg-fh-verb { color: #374151; }
.cfg-fh-code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11.5px; background: #f1f3f5; border-radius: 4px; padding: 1px 5px; white-space: nowrap; }
.cfg-fh-detail { color: #6b7280; font-size: 11.5px; overflow: hidden; text-overflow: ellipsis; }
.cfg-fh-tag { font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; color: #92400e; background: #fef3c7; border-radius: 999px; padding: 2px 8px; white-space: nowrap; }

/* The verb carries the colour, so the eye can sort activations from deactivations at a glance. */
.cfg-fh-row.is-on   .cfg-fh-verb { color: #15803d; font-weight: 600; }
.cfg-fh-row.is-off  .cfg-fh-verb { color: #b45309; font-weight: 600; }
.cfg-fh-row.is-del  .cfg-fh-verb { color: #b91c1c; font-weight: 600; }
.cfg-fh-row.is-add  .cfg-fh-verb { color: #1d4ed8; }
.cfg-fh-row.is-edit .cfg-fh-verb { color: #374151; }
.cfg-fh-row.is-outside { background: #fffbeb; box-shadow: inset 3px 0 0 #f59e0b; }
.cfg-fh-row.is-outside:hover { background: #fef6e0; }

@media (max-width: 900px) {
    .cfg-fh-row { grid-template-columns: 1fr; gap: 2px; padding: 10px 12px; }
    .cfg-fh-detail { white-space: normal; }
}

/* ---- Configuration: framework content lock ----------------------------------------------------
   The lock is enforced server-side in ESGContext; everything here is signalling. The button lives in
   the Fields/Data/KPIs editor toolbar, next to the other tools that act on the same content, and is
   styled as a state of that content rather than as one more action — locked is a condition you should
   notice on the way in, not a button you press by accident. */
.cfg-ct-lockbtn {
    display: inline-flex; align-items: center; gap: 5px;
    border: 1px solid #cfd6de; background: #fff; color: #374151;
    border-radius: 6px; padding: 5px 11px; font-size: 11.5px; font-weight: 600;
    cursor: pointer; white-space: nowrap;
}
.cfg-ct-lockbtn:hover { border-color: #0f5132; color: #0f5132; }
/* Frozen: reads as a standing condition, and unlocking should not look like the safe default. */
.cfg-ct-lockbtn.is-locked { background: #fef3c7; border-color: #f0b429; color: #92400e; }
.cfg-ct-lockbtn.is-locked:hover { background: #fde9a9; border-color: #d99a0b; color: #7c4a03; }

.cfg-lockbanner {
    display: flex; align-items: flex-start; gap: 10px;
    border: 1px solid #f0b429; background: #fffbeb; color: #7c4a03;
    border-radius: 8px; padding: 10px 12px; margin-bottom: 10px; font-size: 12.5px; line-height: 1.5;
}
.cfg-lockbanner-ic { font-size: 16px; line-height: 1.2; }
.cfg-lockbanner i { opacity: .85; }

/* Padlock on the framework card in the list, so the state is visible without opening anything. */
.cfg-fw-locktag {
    display: inline-flex; align-items: center; gap: 4px; margin-left: 6px;
    font-size: 10.5px; font-weight: 700; letter-spacing: .02em;
    color: #92400e; background: #fef3c7; border: 1px solid #f0b429;
    border-radius: 999px; padding: 1px 7px; vertical-align: middle;
}

/* A frozen framework's content editor. Readable, plainly not editable: the cells keep their text
   (they are made readonly, not disabled, so nothing greys out) while the grid loses the affordances
   that suggest typing. */
.cfg-content-tablewrap.is-locked { background-image: repeating-linear-gradient(135deg, rgba(240,180,41,.05) 0 10px, transparent 10px 20px); }
.cfg-content-tablewrap.is-locked input[readonly],
.cfg-content-tablewrap.is-locked textarea[readonly] { cursor: default; background: transparent; }
.cfg-content-tablewrap.is-locked input:focus,
.cfg-content-tablewrap.is-locked select:disabled,
.cfg-content-tablewrap.is-locked textarea:focus { box-shadow: none; }
/* Disabled selects still have to be READ, so keep the text at full contrast. */
.cfg-content-tablewrap.is-locked select:disabled { color: inherit; opacity: 1; -webkit-text-fill-color: currentColor; }
.cfg-content-tablewrap.is-locked input:disabled { opacity: .55; }

.is-lockdisabled { opacity: .45; cursor: not-allowed; }
.is-lockdisabled:hover { filter: none; }

/* One table field, opened from inside the company preview. It replaces the field list rather than
   stacking another overlay on it — this is a level deeper into the same preview, so a back link
   reads better than a second thing to dismiss. */
.cfg-preview-sub-head { display: flex; align-items: center; gap: 12px; padding: 4px 0 10px; }
.cfg-preview-back {
    display: inline-flex; align-items: center; gap: 6px;
    border: 1px solid #cfd6de; background: #fff; color: #374151;
    border-radius: 6px; padding: 5px 11px; font-size: 12px; font-weight: 600; cursor: pointer;
}
.cfg-preview-back:hover { border-color: #0f5132; color: #0f5132; }
.cfg-preview-sub-title { font-size: 13px; font-weight: 600; color: #0B1220; }

/* ---- Verifier mark editor (non-emission submissions) ----------------------------------
   Shared by the in-submission confirm modal (CommonTabsAndButtons.cshtml) and the admin
   verify-override modal on the submissions list (Submissions.cshtml), so the closing step
   looks the same whichever way a submission is verified. */
        .vmark-wrap { text-align: left; margin: 14px 0 4px; }
        .vmark-intro { font-size: 12.5px; line-height: 1.5; color: #55606e; margin-bottom: 12px; }
        .vmark-row { display: flex; align-items: center; gap: 12px; padding: 7px 0; border-bottom: 1px solid #eef1f5; }
        .vmark-row:last-child { border-bottom: 0; }
        .vmark-lbl { flex: 1 1 auto; font-size: 13px; color: #2c3542; margin: 0; }
        .vmark-inp { flex: 0 0 auto; display: flex; align-items: baseline; gap: 6px; }
        .vmark-inp input { width: 96px; padding: 6px 8px; border: 1px solid #d3dae3; border-radius: 7px; font-size: 13px; text-align: right; }
        .vmark-inp input:focus { outline: none; border-color: #7aa7d9; box-shadow: 0 0 0 3px rgba(122,167,217,.18); }
        .vmark-max { font-size: 12px; color: #8b95a3; }
        .vmark-row-total { border-top: 2px solid #e3e8ee; border-bottom: 0; margin-top: 6px; padding-top: 11px; }
        .vmark-row-total .vmark-lbl { font-weight: 600; }
        .vmark-row-note { display: block; border-bottom: 0; }
        .vmark-row-note textarea { width: 100%; margin-top: 5px; padding: 7px 9px; border: 1px solid #d3dae3; border-radius: 7px; font-size: 13px; resize: vertical; }

/* Verifier-mark chip on a submissions row — what a non-emission submission shows in the
   column where a carbon one shows its Scope 1/2 bars. */
.mui-markchip { display: inline-flex; align-items: baseline; gap: 8px; padding: 6px 11px; border: 1px solid #dbe3ec; border-radius: 999px; background: #f6f9fc; }
.mui-markchip-lbl { font-size: 10.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: #7b8794; }
.mui-markchip-val { color: #1f2937; }
.mui-markchip-val b { font-size: 16px; font-weight: 700; }
.mui-markchip-val small { font-size: 11px; color: #97a1ad; margin-left: 1px; }

/* ===========================================================================
   SUBMISSION-WINDOW STRIP  (the "RY2025 ⌄ Ανοικτό για υποβολή" bar)

   One bar per year per framework-group tab. It carries, left to right: the year
   pill, the collapse chevron, the open/closed status, the deadline, and the
   admin's free-text notice to users.

   Everything here is scoped under .modern-submissions so the legacy shell — which
   never loads these rules — keeps the inline styles the markup still carries.
   =========================================================================== */

/* The bar itself: flat and quiet, so the coloured status chip is what the eye
   lands on rather than the container. */
.modern-submissions .accordion-header .row {
    background: #fff !important;
    border: 1px solid var(--mui-line) !important;
    border-radius: 12px !important;
    padding: 10px 18px 10px 10px !important;
    box-shadow: none !important;
    transition: border-color .16s var(--mui-ease), box-shadow .16s var(--mui-ease);
}
.modern-submissions .accordion-header .row:hover {
    border-color: rgba(0, 99, 155, 0.28) !important;
    box-shadow: var(--mui-shadow-soft) !important;
}

/* Year pill. */
.modern-submissions .p2DashboardYearLabel {
    font-size: 13px !important;
    font-weight: 700 !important;
    padding: 5px 14px !important;
    margin: 0 !important;
    letter-spacing: .02em;
    box-shadow: 0 1px 3px rgba(0, 99, 155, 0.28) !important;
    cursor: pointer;
}

/* Chevron. Two problems with the stock one: it is a large tinted background-image
   that competes with the year pill, and Bootstrap gives it `margin-left:auto`, which
   on a content-width button collapses to zero and leaves it glued to the pill.
   So: own the button's layout with a flex gap, and give the glyph a round hover
   target — 28px, a real pointer target rather than a 15px hairline. */
.modern-submissions .accordion-button {
    display: flex !important;
    align-items: center;
    gap: 10px;
    padding: 0 2px 0 0 !important;
}
.modern-submissions .accordion-button::after {
    margin-left: 0 !important;
    width: 28px; height: 28px;
    background-size: 14px;
    background-position: center;
    border-radius: 50%;
    opacity: .5;
    transition: transform .2s var(--mui-ease), opacity .16s var(--mui-ease), background-color .16s var(--mui-ease);
}
.modern-submissions .accordion-button:hover::after {
    opacity: .9;
    background-color: var(--mui-blue-soft);
}

/* The chips sit in the next column. One flex gap owns every space between them,
   so nothing depends on each chip remembering its own margin. */
.modern-submissions .accordion-header .row > [class^="col-"]:first-child + [class^="col-"] {
    gap: 10px;
    margin-left: 14px;
}
.modern-submissions .sw-due,
.modern-submissions .sw-note { margin-left: 0; }

/* A hairline between "which year" and "what state it is in". Without it the bar reads
   as a loose bag of pills; with it there is a left-hand identity and a right-hand
   status. Hidden once the row wraps, where a leading rule would dangle. */
.modern-submissions .accordion-header .row > [class^="col-"]:first-child + [class^="col-"]::before {
    content: "";
    flex: 0 0 auto;
    width: 1px;
    height: 20px;
    background: var(--mui-line);
}

/* Status chip — the class wins over the inline colours it sits beside. */
.modern-submissions .sw-status {
    display: inline-flex !important;
    align-items: center;
    gap: 6px;
    padding: 4px 11px 4px 9px !important;
    border-radius: var(--mui-r-pill) !important;
    font-size: var(--mui-fs-chip) !important;
    font-weight: 600;
    line-height: 1.5;
    border: 1px solid transparent;
}
.modern-submissions .sw-status .sw-dot {
    width: 6px; height: 6px; border-radius: 50%;
    background: currentColor; flex: 0 0 auto;
}
.modern-submissions .sw-status-open {
    background: rgba(0, 170, 125, 0.10) !important;
    color: #068a68 !important;
    border-color: rgba(0, 170, 125, 0.26);
}
/* The "open" dot gets a soft halo — the one piece of state worth noticing at a
   glance when scanning a column of years. */
.modern-submissions .sw-status-open .sw-dot { box-shadow: 0 0 0 3px rgba(0, 170, 125, 0.18); }
.modern-submissions .sw-status-closed {
    background: rgba(206, 54, 54, 0.08) !important;
    color: #c0392f !important;
    border-color: rgba(206, 54, 54, 0.22);
}

/* Deadline, shown to users beside the status. Neutral: it is a fact, not a state. */
.modern-submissions .sw-due {
    display: inline-flex; align-items: center; gap: 5px;
    margin-left: var(--mui-s2);
    padding: 4px 10px;
    border: 1px solid var(--mui-line);
    border-radius: var(--mui-r-pill);
    font-size: var(--mui-fs-badge);
    color: var(--mui-ink-soft);
    white-space: nowrap;
}
.modern-submissions .sw-due svg { opacity: .7; }

/* The notice, as users see it. Capped and ellipsised so a long note can never
   push the strip into a second line or shove the controls off the row; the full
   text is on the title attribute. */
.modern-submissions .sw-note {
    display: inline-flex; align-items: center; gap: 6px;
    margin-left: var(--mui-s2);
    /* Shrinks before anything else on the row and never grows past a readable line;
       whatever is cut stays available on the title attribute. */
    flex: 0 1 auto;
    min-width: 0;
    max-width: 64ch;
    padding: 4px 11px;
    border-radius: var(--mui-r-pill);
    background: rgba(214, 158, 46, 0.10);
    border: 1px solid rgba(214, 158, 46, 0.28);
    color: #8a6116;
    font-size: var(--mui-fs-badge);
    line-height: 1.5;
}
.modern-submissions .sw-note svg { flex: 0 0 auto; opacity: .85; }
.modern-submissions .sw-note-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* The admin's editor for that notice. Underline-only until focused, so an empty
   box does not read as one more control competing with the switch and the date. */
.modern-submissions .sw-note-edit {
    display: inline-flex; align-items: center; gap: 6px;
    margin-left: var(--mui-s3);
    color: var(--mui-ink-soft);
}
.modern-submissions .sw-note-ic { display: inline-flex; opacity: .6; }
.modern-submissions .sw-note-input {
    width: 230px;
    height: 30px;
    padding: 0 4px;
    font-size: var(--mui-fs-badge);
    color: var(--mui-ink);
    background: transparent;
    border: 0;
    border-bottom: 1px solid var(--mui-line);
    border-radius: 0;
    transition: border-color .16s var(--mui-ease), width .16s var(--mui-ease);
}
.modern-submissions .sw-note-input::placeholder { color: #9aa5b1; }
.modern-submissions .sw-note-input:hover { border-bottom-color: rgba(0, 99, 155, 0.35); }
.modern-submissions .sw-note-input:focus {
    outline: none;
    width: 320px;
    border-bottom-color: var(--mui-blue);
}
.modern-submissions .sw-note-saved {
    font-size: 11px; font-weight: 600; color: #068a68;
    opacity: 0; transition: opacity .18s var(--mui-ease);
}
.modern-submissions .sw-note-saved.is-on { opacity: 1; }
.modern-submissions .sw-note-saved.is-bad { color: #c0392f; }

/* Tight screens: let the notice have the full row rather than fighting for it. */
@media (max-width: 1200px) {
    .modern-submissions .sw-note { max-width: 28ch; }
    .modern-submissions .sw-note-input { width: 150px; }
    .modern-submissions .sw-note-input:focus { width: 220px; }
}

/* Below 992px an earlier rule drops the chips onto their own line (flex-basis:100%),
   where the divider would dangle at the start of the row with nothing before it. */
@media (max-width: 992px) {
    .modern-submissions .accordion-header .row > [class^="col-"]:first-child + [class^="col-"]::before {
        display: none;
    }
}
