/* ============================================================================
   portal.css ÃÂ¢ÃÂÃÂ THE SINGLE PORTAL STYLESHEET
   ----------------------------------------------------------------------------
   Canonical sheet for Cortex Portal. Layouts load ONLY this file.

   Cascade layers (later wins across layers; specificity within a layer):
     vendor      ÃÂ¢ÃÂÃÂ Tabulator (and any other @import'd third-party sheets)
     tokens      ÃÂ¢ÃÂÃÂ design tokens (:root) ÃÂ¢ÃÂÃÂ only place raw values live
     base        ÃÂ¢ÃÂÃÂ fonts, resets, element defaults, a11y helpers
     layout      ÃÂ¢ÃÂÃÂ shell foundation (sidebar/header/page frame) then refinements
     components  ÃÂ¢ÃÂÃÂ reusable UI
     pages       ÃÂ¢ÃÂÃÂ page-scoped / feature islands

   Vendor must sit in a named layer. Unlayered third-party CSS beats every
   @layer rule regardless of specificity ÃÂ¢ÃÂÃÂ that is how table headers/footers
   stuck on Tabulator's #e6e6e6 instead of --gc-bg-subtle (#F4F4F4).

   Shell foundation comes from the pre-consolidation portal chrome; app.css
   layout refinements follow in the same layer so tokenized overrides win.
   ========================================================================= */

@layer vendor, tokens, base, layout, components, pages;
@import url("../vendor/tabulator/tabulator.min.css") layer(vendor);

@layer tokens {
:root {
  /* Brand */
  --gc-navy-50:  #F2F3F7;
  --gc-navy-100: #E0E4ED;
  --gc-navy-200: #C0C9DA;
  --gc-navy-300: #9AA8C4;
  --gc-navy-400: #6277A3;
  --gc-navy-500: #1F3D7C;
  --gc-navy-600: #193266;
  --gc-navy-700: #142851;
  --gc-navy-800: #0F1D3C;
  --gc-navy-900: #0A1428;

  /* Neutrals */
  --gc-neutral-0:   #FFFFFF;
  --gc-neutral-50:  #FAFAFA;
  --gc-neutral-100: #F4F4F4;
  --gc-neutral-200: #E2E2E2;
  --gc-neutral-300: #D6D6D6;
  --gc-neutral-400: #B4B4B4;
  --gc-neutral-500: #979797;
  --gc-neutral-600: #6E6E6E;
  --gc-neutral-700: #4A4A4A;
  --gc-neutral-800: #2D2D2D;
  --gc-neutral-900: #1F1F1F;
  --gc-neutral-950: #0D0D0D;

  /* Semantic */
  --gc-success:     #1E7A5A;
  --gc-success-bg:  #E3F1EB;
  /* Boolean switch on-track (.gc-form-switch :checked). Forest green ÃÂ¢ÃÂÃÂ not mint --gc-health-ok. */
  --gc-switch-on:         var(--gc-success);
  --gc-switch-on-border:  color-mix(in srgb, var(--gc-switch-on) 70%, var(--gc-neutral-0));
  --gc-warning:     #B5761B;
  --gc-warning-bg:  #F7EEDF;
  --gc-danger:      #A3312B;
  --gc-danger-bg:   #F6E4E3;
  --gc-info:        #1F3D7C;
  --gc-info-bg:     #E0E4ED;

  /* Document file-type glyph colours (.gc-file-ico). CSV is slate, not Excel green. */
  --gc-file-csv:    #475569;

  /* Applied roles */
  /* Three surface tiers, not two. The page used to be neutral-100 behind white
     panels ÃÂ¢ÃÂÃÂ 1.10:1, which is almost no separation, and the reason the portal
     read as flat however good the type was. A canvas one step deeper lets a
     white panel actually lift off it.
     OVERRIDES the original brand note "do not invent a third background tone".
     That note was written for a marketing site with no app chrome; a layered
     application shell needs canvas / surface / fill to be distinguishable.
     Three is the limit ÃÂ¢ÃÂÃÂ do not add a fourth. */
  --gc-canvas:        #E6E6E6;                 /* page behind panels; darker than original #F4F4F4 */
  --gc-surface:       var(--gc-neutral-0);     /* panels, cards, drawers */
  --gc-bg-subtle:     var(--gc-neutral-100);   /* fills INSIDE a surface */
  --gc-bg:            var(--gc-neutral-0);
  --gc-surface-dark:  var(--gc-neutral-900);
  /* Sidebar: darkest at the top, lighter toward the footer. No photo, no filter. */
  --gc-sidebar-top:    var(--gc-navy-900);
  --gc-sidebar-mid:    var(--gc-navy-800);
  --gc-sidebar-bottom: var(--gc-navy-700);
  --gc-sidebar-photo:  none;
  /* Reversed text. Pure #FFFFFF on a saturated navy blooms ÃÂ¢ÃÂÃÂ the light
     spreads optically past the glyph edge (halation), which reads as "not
     sharp" even though contrast is technically excellent. Stepping one rung
     down the navy ramp keeps AAA and gives back the edge definition. Active
     items keep pure white, so the extra brightness becomes the emphasis
     instead of an accident. */
  --gc-sidebar-text:          var(--gc-navy-50);    /* 9.39:1 on navy-500 ÃÂ¢ÃÂÃÂ reads as white */
  --gc-sidebar-text-active:   var(--gc-neutral-0);
  --gc-sidebar-text-disabled: var(--gc-navy-300);   /* a colour, never opacity */
  /* Section eyebrows (MAIN / LEASES / ÃÂ¢ÃÂÃÂ¦). navy-200 disappeared into the bar;
     navy-100 is the lightest blue-gray that still sits under nav-item text. */
  --gc-sidebar-section-label: var(--gc-navy-100);
  --gc-sidebar-hover:  rgba(255, 255, 255, 0.1);
  --gc-sidebar-divider: rgba(255, 255, 255, 0.18);
  --gc-nav-item-gap: var(--gc-space-4);
  --gc-text:          var(--gc-neutral-800);
  --gc-text-muted:    var(--gc-neutral-600);
  --gc-text-inverse:  var(--gc-neutral-0);
  /* Two border roles, and the difference is not decorative.
     --gc-border is a hairline: table rules, panel edges, anything purely
     structural. It stays light on purpose ÃÂ¢ÃÂÃÂ the brand carries structure with
     hairlines, and a dark grid on a dense data table is noise.
     --gc-border-strong is the boundary of anything a user must PERCEIVE and
     act on: inputs, selects, textareas, secondary buttons. WCAG 1.4.11 wants
     3:1 for a control boundary, and neutral-300 gave 1.45:1 ÃÂ¢ÃÂÃÂ the input
     outlines were effectively invisible. #949494 is the lightest neutral grey
     that clears 3:1 (3.03:1), so it is the floor, not a preference.
     Never put --gc-border on an interactive control. */
  --gc-border-subtle: var(--gc-neutral-200);   /* 1.30:1 ÃÂ¢ÃÂÃÂ quiet lines INSIDE dense content */
  --gc-border:        #C4C4C4;                 /* 1.74:1 ÃÂ¢ÃÂÃÂ default structure: panel edges, dividers */
  --gc-border-strong: #949494;                 /* 3.03:1 ÃÂ¢ÃÂÃÂ control boundaries (WCAG 1.4.11) */
  --gc-link:          var(--gc-navy-500);
  --gc-link-hover:    var(--gc-navy-600);
  /* Health bar sits on ink, not canvas. Status greens/ambers must be the
     on-dark pair ÃÂ¢ÃÂÃÂ --gc-success is for white panels and vanishes on this bar. */
  --gc-health-bar-bg:      var(--gc-neutral-800);
  --gc-health-bar-border:  var(--gc-neutral-900);
  --gc-health-bar-outline: var(--gc-navy-50);
  --gc-health-bar-label:   var(--gc-navy-50);
  --gc-health-bar-sep:    var(--gc-navy-300);
  --gc-health-ok:         #3DDC97;
  --gc-health-warn:       #F0C14B;
  --gc-health-bad:        #F07167;
  /* Focus. navy-400 was 4.48:1 on white but only 1.48:1 against the unfocused
     border it replaces ÃÂ¢ÃÂÃÂ WCAG 2.4.11 wants 3:1 between the focused and
     unfocused states, and that gap is exactly why the ring was invisible on a
     text field. navy-500 gives 3.43:1 against the border. The halo is a second,
     softer signal so focus is unmissable rather than merely compliant. */
  /* Focus is TWO colours, and that is not decoration ÃÂ¢ÃÂÃÂ it is the only way one
     focus treatment works everywhere. Measured against every surface a ring can
     land on in this portal:
        yellow #FFDD00 :  1.35 white |  1.15 canvas |  7.73 navy |  12.24 ink
        ink    #1F1F1F : 16.48 white | 14.05 canvas |  1.58 navy |   1.00 ink
     Neither is usable alone; they are exact complements. WCAG 2.4.11 endorses a
     two-colour indicator for precisely this case, and it is why GOV.UK pairs
     yellow with black. The single navy ring this replaces scored 1.00:1 against
     the navy sidebar ÃÂ¢ÃÂÃÂ invisible ÃÂ¢ÃÂÃÂ which is why a separate inverse token was
     needed. Two-tone removes that special case entirely.
     Yellow here is FUNCTIONAL, not brand: it means "this is focused" and it
     means nothing else. Never use it for a warning ÃÂ¢ÃÂÃÂ that is --gc-warning, a
     muted ochre, and the two must stay tellable apart. */
  --gc-focus-ring:      #FFDD00;   /* carries dark surfaces */
  --gc-focus-ring-edge: #1F1F1F;   /* carries light surfaces */

  /* Buttons. The primary action is cool slate, not brand navy and not black.
     Navy covers roughly five percent of the live grovercorlew.com surface, and
     a navy button on every page of a dashboard is precisely what the brand
     notes warned reads as "a generic enterprise app that happens to be blue".
     Navy keeps links, ghost buttons, selection, the sidebar, charts, and
     gc-btn-navy (off-portal open only).
     Changing the primary button colour is changing these lines.
     Superseded 2026-08-23: was neutral-900 (flat black).
     Superseded 2026-09-08: was neutral-800 (#2D2D2D) graphite ÃÂ¢ÃÂÃÂ still read as
     a black brick on white panels. Cool slate (#475569) with a darker slate
     border (#334155) keeps contrast (white ÃÂ¢ÃÂÃÂ 7.5:1 AA) without looking black. */
  --gc-btn-primary-bg:          #475569;
  --gc-btn-primary-border:      #334155;
  --gc-btn-primary-bg-hover:    #334155;
  --gc-btn-primary-border-hover:#1E293B;
  --gc-btn-primary-text:        var(--gc-text-inverse);
  /* External / off-portal open action (e.g. Open SharePoint). Not the page primary. */
  --gc-btn-navy-bg:          var(--gc-navy-800);
  --gc-btn-navy-bg-hover:    var(--gc-navy-900);
  --gc-btn-navy-text:        var(--gc-text-inverse);
  --gc-btn-secondary-text:   var(--gc-text);

  /* Button geometry. Vertical padding is a control-density decision and is
     deliberately not on the 4px spacing scale. */
  --gc-btn-padding-y: 10px;
  --gc-btn-padding-x: var(--gc-space-4);

  --gc-font-name: Manrope;
  /* IOT next_portal: system-ui body (`--font-family-ui`), Manrope display, Inter dense chrome. */
  --gc-font-ui: system-ui, -apple-system, "Segoe UI", Roboto, "Open Sans", Arial, sans-serif;
  --gc-font-display: Manrope, var(--gc-font-ui);
  --gc-font-sans: var(--gc-font-ui);
  --gc-font-dense: var(--gc-font-ui); /* Inter when self-hosted ÃÂ¢ÃÂÃÂ see HOWTO Typography */
  --gc-font-mono: "JetBrains Mono", "Cascadia Mono", Consolas, monospace;

  /* Type scale ÃÂ¢ÃÂÃÂ 30 distinct font sizes were in use before this existed, which
     is what a codebase looks like when every author picks a value. Seven steps,
     ~1.15-1.25 ratio, covering every real use in the portal. If a size is not
     here, the answer is the nearest step, not a new token. */
  --gc-text-2xs:  0.75rem;    /* 12px - badges, meta */
  --gc-text-xs:   0.8125rem;  /* 13px - dense secondary text */
  --gc-text-sm:   0.9375rem;  /* 15px - helper text */
  --gc-text-base: 1.0625rem;  /* 17px - body, form controls */
  --gc-text-lg:   1.125rem;   /* 18px - navigation, card and panel titles */
  --gc-text-xl:   1.375rem;   /* 22px - section headings */
  --gc-text-2xl:  1.875rem;   /* 30px - page title (IOT Networks header weight) */
  --gc-text-kpi:  2.5rem;     /* 40px - KPI tile value only */
  /* Sidebar wordmark only ÃÂ¢ÃÂÃÂ 1px under page title, off the seven-step scale
     because reversed navy text is sized in whole pixels. */
  --gc-text-wordmark: 1.6875rem; /* 27px - .id-org CORTEX */

  /* Weights. Four, not eight ÃÂ¢ÃÂÃÂ the portal had a 650 in it. Medium is for
     CONTROL LABELS only (buttons, tabs, pagination): 600 on a button made the
     label heavier than the body text it sits beside. Semibold stays the
     default emphasis for running text. */
  --gc-weight-normal:   400;
  --gc-weight-medium:   500;   /* control labels */
  --gc-weight-semibold: 600;   /* the portal's default emphasis */
  --gc-weight-bold:     700;

  /* Line height */
  --gc-leading-tight:   1.2;   /* headings, badges, single-line controls */
  --gc-leading-normal:  1.5;   /* body and table cells */
  --gc-leading-relaxed: 1.65;  /* long prose, help text */

  /* Letter spacing. Eight values were in use; these are the only two that
     carry meaning ÃÂ¢ÃÂÃÂ everything else was drift. */
  --gc-tracking-normal: normal;
  --gc-tracking-tight:  -0.01em; /* page titles / display headings */
  --gc-tracking-label:  0.05em;  /* uppercase eyebrow labels, table headers */

  /* Icon sizing ÃÂ¢ÃÂÃÂ the header controls are 24px and nothing else was defined. */
  --gc-icon-sm: 16px;
  --gc-icon-md: 20px;
  --gc-icon-lg: 24px;
  --gc-table-action-icon-size: calc(var(--gc-icon-md) + 2px);
  --gc-doc-cell-gap: var(--gc-space-4);

  /* Focus ring. The colour existed; the ring did not, so every author drew
     their own. Apply as a whole: outline, not box-shadow, so it survives
     overflow clipping. */
  /* 2px, and the ink is the control's own 1px border rather than a second band.
     The first attempt drew 3px of yellow with 2px of ink OUTSIDE it, which on a
     white panel ÃÂ¢ÃÂÃÂ where yellow is only 1.35:1 ÃÂ¢ÃÂÃÂ reads as a fat black ring with
     a faint warm tinge. Yellow has to be the visible signal and ink only the
     definition edge under it, not the other way round. */
  --gc-focus-ring-width:  2px;
  --gc-focus-ring-offset: 0px;   /* hugs the control; a scroll container cannot clip it */

  /* Spacing */
  --gc-space-1: 4px;
  --gc-space-2: 8px;
  --gc-space-3: 12px;
  --gc-space-4: 16px;
  --gc-space-5: 20px;
  --gc-space-6: 24px;
  --gc-space-7: 28px;
  --gc-space-8: 32px;
  --gc-space-9: 36px;
  --gc-space-10: 40px;
  --gc-space-12: 48px;

  /* Page preview tiles on Split Lease (min column before the grid wraps). */
  --gc-thumb-min: 160px;

  /* Radius ÃÂ¢ÃÂÃÂ SharePoint (2026-09-01) is the visual reference.
     Panels / KPI tiles used to write calc(token - 2px); those deltas are
     baked into named tokens so pages stop inventing arithmetic. */
  --gc-radius-sm: 4px;
  --gc-radius-md: 6px;   /* legacy; do not use on new raised panels */
  --gc-radius-lg: 10px;
  --gc-radius-card: 4px; /* content panels, chart/feed cards */
  --gc-radius-kpi: 2px;  /* KPI tiles ÃÂ¢ÃÂÃÂ one step tighter than panels */
  --gc-radius-full: 9999px;

  /* Shadows */
  /* 0.06 alpha was invisible at any normal brightness. A raised surface needs a
     contact shadow AND a soft one to read as raised rather than as a border. */
  --gc-shadow-sm: 0 1px 2px rgba(15, 29, 60, 0.10), 0 1px 3px rgba(15, 29, 60, 0.06);
  --gc-shadow-md: 0 8px 24px rgba(15, 29, 60, 0.12);
  --gc-shadow-lg: 0 18px 48px rgba(10, 20, 40, 0.18);

  /* Form controls (login field density is the portal standard) */
  --gc-control-padding-y: 12px;
  --gc-control-padding-x: 14px;
  --gc-control-font-size: var(--gc-text-base);   /* rem: control text must scale with the user's font preference */
  --gc-control-line-height: 1.35;
  --gc-control-min-height: 48px;
  /* The dense variant, for controls that repeat in a row: pagination, chip
     rows, toolbar icon buttons. 44px is the tap-target FLOOR this system
     requires, not a preference ÃÂ¢ÃÂÃÂ nothing may go below it. Reducing padding
     alone does nothing to these controls, because min-width is what sizes
     them once the label is a single glyph. */
  --gc-control-min-height-compact: 44px;
  /* The VISIBLE box for a dense repeating control. A tap target and a drawn
     box are not the same object, and conflating them is what made the pager
     look like a toolbar. Draw at 32px, then extend the hit area back out to
     --gc-control-min-height-compact with a transparent ::after. The floor is
     never lowered ÃÂ¢ÃÂÃÂ it is only decoupled from the chrome. */
  --gc-control-min-height-dense: 32px;
  --gc-search-width: 400px;
  /* Table density. Three tokens, and the row height is DERIVED from two of
     them ÃÂ¢ÃÂÃÂ never declare it. Superseded 2026-08-23: font was --gc-text-lg
     (18px) and both paddings were --gc-space-4 (16px), which gave a 59px row
     that read as loose at ten rows a page and put the densest surface in the
     portal a step above body copy. Now 17px on --gc-space-3 (12px), so a cell
     reads at the same size as the text around it.
     The row falls 59px -> 49.5px and still clears the 44px tap target by
     5.5px. Recompute that number before changing either token again. */
  --gc-table-font-size: var(--gc-text-base);
  --gc-table-row-height: calc(var(--gc-table-cell-padding-y) * 2 + var(--gc-table-font-size) * var(--gc-leading-normal));
  --gc-table-cell-padding-y: var(--gc-space-3);
  --gc-table-cell-padding-x: var(--gc-space-3);

  /* The header and the footer are the table's CHROME, not rows of it. They
     are one height, 2px under a body row, so the grid is bracketed by two
     identical bands. Do not reach for --gc-table-row-height to size either:
     that token belongs to the data rows and moving it moves all of them.
     47.5px still clears the 44px tap target the pager's ::after restores. */
  --gc-table-chrome-height: calc(var(--gc-table-row-height) - 2px);

  /* Breakpoints ÃÂ¢ÃÂÃÂ NOT usable as var() in @media; CSS forbids it. Recorded here
     because this is where you look for a value, and enforced by the style hook.
       sm 640 / 639.98   phone
       md 768 / 767.98   tablet; the sidebar collapses here
       lg 1024 / 1023.98 small laptop
       xl 1280 / 1279.98 wide desktop
     max-width uses the .98 partner so a viewport exactly on the boundary
     matches one side of the pair, never both or neither. */

  /* Motion */
  --gc-duration-fast: 120ms;
  --gc-duration-normal: 200ms;
  --gc-duration-spin: 750ms;
  --gc-ease: ease;
  --gc-ease-spin: linear;

  /* Z-index */
  --gc-z-dropdown: 200;
  --gc-z-overlay: 300;
  --gc-z-sidebar: 350;
  --gc-z-toast: 400;
  --gc-z-dialog: 500;
  --gc-z-skip: 1000;
  /* Inside one stacking context (sidebar photo wash), not competing with the shell. */
  --gc-z-back: 0;
  --gc-z-front: 1;

  /* Shell */
  --gc-sidebar-width: 280px;
  --gc-drawer-width: 420px;
  --gc-drawer-width-wide: 630px;
  --gc-overlay-bg: rgba(10, 20, 40, 0.45);
  --gc-header-icon-size: 24px;
  --gc-header-avatar-size: 28px;

  /* Chart palette (navy-led) */
  --gc-chart-1: var(--gc-navy-500);
  --gc-chart-2: var(--gc-navy-300);
  --gc-chart-3: var(--gc-navy-700);
  --gc-chart-4: var(--gc-navy-400);
  --gc-chart-5: var(--gc-success);
  --gc-chart-6: var(--gc-warning);
  --gc-chart-7: var(--gc-danger);
  --gc-chart-grid: var(--gc-neutral-200);
  --gc-chart-label: var(--gc-text-muted);
  --gc-chart-1-fill: color-mix(in srgb, var(--gc-chart-1) 12%, transparent);
  --gc-chart-state-bg: color-mix(in srgb, var(--gc-surface) 72%, transparent);

  /* Azure Cost ManagementÃ¢ÂÂstyle resource donut (Admin Tools Ã¢ÂÂ Azure Resources) */
  --gc-chart-azure-1: #4FA3F7;
  --gc-chart-azure-2: #E748B9;
  --gc-chart-azure-3: #2EBFB3;
  --gc-chart-azure-4: #8E6CCF;
  --gc-chart-azure-5: #F5A623;
  --gc-chart-azure-6: #6B7280;
}
}

@layer base {
/* === base.css ÃÂ¢ÃÂÃÂ Element defaults and resets. Rarely touched. === */
/* Base utilities and a11y */

@font-face {
  font-family: "Manrope";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/manrope-latin-400.woff2") format("woff2");
}

@font-face {
  font-family: "Manrope";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/manrope-latin-600.woff2") format("woff2");
}

@font-face {
  font-family: "Manrope";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/manrope-latin-700.woff2") format("woff2");
}

:focus-visible {
  outline: var(--gc-focus-ring-width) solid var(--gc-focus-ring);
  outline-offset: var(--gc-focus-ring-offset);
}

.sr-only,
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.is-hidden,
[hidden] {
  display: none !important;
}

.u-flex {
  display: flex;
}

.u-flex-center {
  display: flex;
  align-items: center;
  justify-content: center;
}

.u-gap-2 { gap: var(--gc-space-2); }
.u-gap-3 { gap: var(--gc-space-3); }
.u-gap-4 { gap: var(--gc-space-4); }

.u-mt-0 { margin-top: 0; }
.u-mt-4 { margin-top: var(--gc-space-4); }
.u-mb-0 { margin-bottom: 0; }
.u-mb-4 { margin-bottom: var(--gc-space-4); }

.u-text-muted {
  color: var(--gc-text-muted);
}

.u-truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
}

@layer layout {
/* ---- Shell foundation (structural chrome) ---- */
*, *::before, *::after {
  box-sizing: border-box;
}
html, body {
  margin: 0;
    padding: 0;
    min-height: 100%;
}
body {
  font-family: var(--gc-font-sans);
    font-size: var(--gc-text-base);
    line-height: 1.5;
    color: var(--gc-text);
    background: var(--gc-canvas);
}
@media (min-width: 768px) {
  body.portal-body {
    margin-left: var(--gc-sidebar-width);
  }
}
body.portal-body--dev {
  padding-top: var(--gc-space-7);
}
a {
  color: var(--gc-link);
}
a:hover {
  color: var(--gc-link-hover);
}
code {
  font-family: var(--gc-font-mono);
    font-size: 0.9em;
    background: var(--gc-bg-subtle);
    padding: 2px 6px;
    border: 1px solid var(--gc-border);
}
.sidebar {
  --gc-nav-icon-size: 22px;
    --gc-nav-item-pad-x: 24px;
    --gc-nav-divider: var(--gc-sidebar-divider);
    
    --gc-nav-icon-stroke: 2;
    --gc-nav-font-size: var(--gc-text-lg);
    --gc-nav-font-weight: var(--gc-weight-normal);
    --gc-nav-font-weight-active: var(--gc-weight-normal);
  
    position: fixed;
    inset: 0 auto 0 0;
    z-index: 100;
    width: var(--gc-sidebar-width);
    background: linear-gradient(
      180deg,
      var(--gc-sidebar-top) 0%,
      var(--gc-sidebar-mid) 48%,
      var(--gc-sidebar-bottom) 100%
    );
    color: var(--gc-text-inverse);
    border-right: 1px solid var(--gc-navy-700);
    display: flex;
    flex-direction: column;
    overflow-y: auto;
}
body.portal-body--dev .sidebar {
  top: var(--gc-space-7);
    height: calc(100dvh - var(--gc-space-7));
}
body.portal-body--dev .sidebar-overlay {
  top: var(--gc-space-7);
}
.portal-dev-banner {
  position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: var(--gc-space-7);
    display: flex;
    align-items: center;
    gap: var(--gc-space-2);
    padding: 0 var(--gc-space-3);
    background: color-mix(in srgb, var(--gc-warning) 14%, var(--gc-neutral-0));
    border-bottom: 1px solid color-mix(in srgb, var(--gc-warning) 42%, var(--gc-neutral-0));
    color: var(--gc-warning);
    font-size: var(--gc-text-2xs);
    font-weight: var(--gc-weight-bold);
    letter-spacing: var(--gc-tracking-label);
    text-transform: uppercase;
}
.portal-dev-banner-chip {
  display: inline-flex;
    align-items: center;
    background: var(--gc-warning);
    color: var(--gc-neutral-950);
    border-radius: var(--gc-radius-sm);
    padding: var(--gc-space-1) var(--gc-space-2);
    line-height: var(--gc-leading-tight);
}
.svg-sprite {
  position: absolute;
    width: 0;
    height: 0;
    overflow: hidden;
}
.sidebar-brand {
  padding: 28px 24px 8px;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}
.brand-logo {
  width: auto;
    max-width: 88px;
    height: auto;
    display: block;
}
.id-org {
  margin-top: 14px;
    margin-bottom: 4px;
    font-weight: 600;
    font-size: 1.05rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    line-height: 1.35;
    color: var(--gc-text-inverse);
}
.sidebar-nav {
  display: flex;
    flex-direction: column;
    padding: 28px 0 0;
    flex: 1;
}
.nav-sections {
  list-style: none;
    margin: 0;
    padding: 0;
}
.nav-section-item + .nav-section-item {
  border-top: none;
}
.nav-section-item--divider {
  border-top: 1px solid var(--gc-nav-divider);
    margin-top: var(--gc-space-2);
    padding-top: var(--gc-space-1);
}
.nav-section-label {
  padding: var(--gc-space-8) var(--gc-nav-item-pad-x) var(--gc-space-2);
    font-size: var(--gc-text-sm);
    font-weight: var(--gc-weight-semibold, 600);
    letter-spacing: var(--gc-tracking-label);
    text-transform: uppercase;
    color: var(--gc-sidebar-section-label);
    list-style: none;
}
.nav-section-label:first-child {
  padding-top: 0;
}
.nav-section-label + .nav-section-item .nav-link {
  border-top: none;
}
.nav-link,
.logout-link {
  display: flex;
    align-items: center;
    gap: var(--gc-nav-item-gap);
    padding: 12px var(--gc-nav-item-pad-x);
    color: var(--gc-sidebar-text);
    text-decoration: none;
    font-size: var(--gc-nav-font-size);
    font-weight: var(--gc-nav-font-weight);
    line-height: 1.3;
    border-left: 3px solid transparent;
}
.nav-ico {
  width: var(--gc-nav-icon-size);
    height: var(--gc-nav-icon-size);
    flex: 0 0 var(--gc-nav-icon-size);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: inherit;
}
.nav-ico svg {
  width: 100%;
    height: 100%;
    display: block;
}
.sidebar .nav-ico:not(.nav-ico-sharepoint):not(.nav-ico-lease):not(.nav-ico-yardi):not(.nav-ico-psychology):not(.nav-ico-document-scanner) svg * {
  stroke-width: var(--gc-nav-icon-stroke);
}
.nav-lbl {
  flex: 1 1 auto;
    min-width: 0;
    font-size: inherit;
    font-weight: inherit;
}
.nav-link:hover,
.logout-link:hover {
  background: var(--gc-sidebar-hover);
    color: var(--gc-text-inverse);
}
.nav-link.active {
  background: var(--gc-sidebar-hover);
    border-left-color: var(--gc-navy-200);
    color: var(--gc-sidebar-text-active);
    font-weight: var(--gc-nav-font-weight-active);
}
.nav-section {
  margin: 0;
}
.nav-section-summary {
  display: flex;
    align-items: center;
    gap: var(--gc-nav-item-gap);
    padding: 12px var(--gc-nav-item-pad-x);
    color: var(--gc-text-inverse);
    font-size: var(--gc-nav-font-size);
    font-weight: var(--gc-nav-font-weight);
    line-height: 1.3;
    border-left: 3px solid transparent;
    list-style: none;
    cursor: pointer;
}
.nav-section-summary::-webkit-details-marker {
  display: none;
}
.nav-section-summary:hover,
.nav-section-summary.active {
  background: var(--gc-sidebar-hover);
    color: var(--gc-text-inverse);
}
.nav-section.is-active > .nav-section-summary,
.nav-section[open] > .nav-section-summary.active {
  border-left-color: var(--gc-navy-200);
    font-weight: var(--gc-nav-font-weight-active);
}
.nav-chev {
  width: 14px;
    height: 14px;
    margin-left: auto;
    display: inline-flex;
    flex: 0 0 14px;
    opacity: 0.85;
    transition: transform 0.15s ease;
}
.nav-chev svg {
  width: 100%;
    height: 100%;
    display: block;
}
.nav-section[open] > .nav-section-summary .nav-chev {
  transform: rotate(180deg);
}
.nav-groups {
  list-style: none;
    margin: 0;
    padding: 0 0 6px;
}
.nav-group-link {
  display: flex;
    align-items: center;
    gap: var(--gc-nav-item-gap);
    padding: 10px var(--gc-nav-item-pad-x) 10px calc(var(--gc-nav-item-pad-x) + 12px);
    color: rgba(255, 255, 255, 0.9);
    text-decoration: none;
    font-size: var(--gc-nav-font-size);
    font-weight: var(--gc-nav-font-weight);
    line-height: 1.3;
    border-left: 3px solid transparent;
}
.nav-group-link:hover,
.nav-group-link.active {
  background: var(--gc-sidebar-hover);
    color: var(--gc-text-inverse);
}
.nav-group-link.active {
  border-left-color: var(--gc-navy-200);
    font-weight: var(--gc-nav-font-weight-active);
}
.pph-avatar {
  width: var(--gc-header-avatar-size);
    height: var(--gc-header-avatar-size);
    border-radius: 50%;
    object-fit: cover;
    display: block;
    flex-shrink: 0;
}
.lease-property-bar .gc-combobox {
  position: relative;
    min-width: 16rem;
    max-width: 100%;
    flex: 1 1 16rem;
}
.gc-combobox-input {
  width: 100%;
}
.gc-combobox-list {
  position: absolute;
    z-index: 40;
    top: calc(100% + 0.25rem);
    left: 0;
    right: 0;
    max-height: 16rem;
    margin: 0;
    padding: 0.25rem;
    overflow: auto;
    list-style: none;
    background: var(--gc-surface);
    border: 1px solid var(--gc-border-strong);
    border-radius: var(--gc-radius-sm);
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
}
.gc-combobox-option {
  display: block;
    width: 100%;
    padding: 0.55rem 0.75rem;
    border: 0;
    border-radius: calc(var(--gc-radius-sm) - 1px);
    background: transparent;
    color: var(--gc-text);
    text-align: left;
    cursor: pointer;
}
.gc-combobox-option:hover,
.gc-combobox-option.is-active {
  background: var(--gc-navy-50, #eef3f8);
    color: var(--gc-navy-800, #12304f);
}
.gc-combobox-option[aria-selected="true"] {
  font-weight: 600;
}
.gc-combobox-empty {
  padding: 0.75rem;
    color: var(--gc-text-muted);
}
.sidebar-footer {
  padding: 14px 16px 16px;
    border-top: 1px solid var(--gc-nav-divider);
    margin-top: auto;
}
.sidebar-build {
  display: flex;
    flex-direction: column;
    gap: 2px;
    color: var(--gc-sidebar-section-label);
    font-size: var(--gc-text-base);
    letter-spacing: var(--gc-tracking-label);
    line-height: 1.35;
}
.sidebar-build-label {
  text-transform: uppercase;
    font-weight: var(--gc-weight-semibold);
    font-size: inherit;
}
.sidebar-build-id {
  font-family: var(--gc-font-mono);
    font-size: inherit;
    font-weight: var(--gc-weight-medium);
    color: var(--gc-sidebar-text);
    letter-spacing: 0.02em;
}
.logout-link {
  color: var(--gc-text-inverse);
}
.page-title-bar {
  background: var(--gc-surface);
    border-bottom: 1px solid var(--gc-border);
    
    padding: var(--gc-space-4) var(--gc-space-9);
}
.page-title-bar:has([data-portal-header-below] .settings-tabs) {
  padding-bottom: 0;
    border-bottom: 0;
}
/* Match on .settings-tabs â Razor whitespace makes :empty unreliable. */
[data-portal-header-below]:not(:has(.settings-tabs)) {
  display: none;
}
[data-portal-header-below]:has(.settings-tabs) {
  margin-top: var(--gc-space-4);
}
.page-title-bar [data-portal-header-below] .settings-tabs {
  margin-bottom: 0;
}
.portal-page-header-inner {
  display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}
.portal-page-header-start {
  min-width: 0;
    flex: 1 1 auto;
}
.portal-page-header-title {
  font-family: var(--gc-font-display);
    font-size: var(--gc-text-2xl);
    font-weight: var(--gc-weight-bold);
    letter-spacing: var(--gc-tracking-tight);
    color: var(--gc-text);
    margin: 0;
    line-height: var(--gc-leading-tight);
}
.pph-controls {
  display: flex;
    align-items: center;
    gap: 36px;
    flex-shrink: 0;
}
.pph-icon-btn {
  appearance: none;
    border: none;
    background: transparent;
    padding: 0;
    margin: 0;
    cursor: default;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: var(--gc-header-icon-size);
    height: var(--gc-header-icon-size);
    color: var(--gc-navy-500);
    text-decoration: none;
    transition: color 0.12s ease;
}
.pph-icon-btn:hover:not(:disabled),
.pph-icon-btn:focus-visible:not(:disabled),
a.pph-icon-btn:hover,
a.pph-icon-btn:focus-visible {
  color: var(--gc-navy-600);
    cursor: pointer;
}
.pph-icon-btn:disabled {
  opacity: 1;
    color: var(--gc-navy-500);
}
.pph-ico {
  width: var(--gc-header-icon-size);
    height: var(--gc-header-icon-size);
    display: block;
    flex-shrink: 0;
    color: inherit;
    fill: currentColor;
}
.pph-ico[hidden],
.pph-avatar[hidden],
.pph-ico.is-hidden,
.pph-avatar.is-hidden {
  display: none !important;
}
.pph-icon-btn.pph-icon-btn--account {
  width: var(--gc-header-avatar-size);
    height: var(--gc-header-avatar-size);
    border-radius: 50%;
}
.pph-icon-btn--account .pph-avatar {
  width: var(--gc-header-avatar-size);
    height: var(--gc-header-avatar-size);
    border-radius: 50%;
    object-fit: cover;
    display: block;
    flex-shrink: 0;
}
.pph-icon-btn--account .pph-ico {
  width: var(--gc-header-avatar-size);
    height: var(--gc-header-avatar-size);
}
.page-wrap {
  width: 100%;
    max-width: none;
    margin-block-start: var(--gc-space-6);
    margin-block-end: var(--gc-space-10);
    margin-inline: 0;
    padding-inline: var(--gc-space-4);
}
@media (min-width: 768px) {
  .page-wrap {
    padding-inline: var(--gc-space-9);
  }
}
.card-grid {
  display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 16px;
    margin-bottom: 24px;
}
.card,
.content-panel,
.info-section {
  background: var(--gc-surface);
    border: 1px solid var(--gc-border);
    border-radius: var(--gc-radius-card);
    box-shadow: var(--gc-shadow-sm);
    padding: var(--gc-space-9);
}
.card h3 {
  margin: 0 0 8px;
    font-size: 1.05rem;
    color: var(--gc-navy-500);
}
.card p,
.content-panel p {
  margin: 0 0 12px;
    color: var(--gc-text-muted);
}
.card-icon {
  font-size: 1.4rem; margin-bottom: 8px;
}
.content-panel h2,
.info-section h2 {
  color: var(--gc-navy-500);
    font-size: 1.1rem;
    margin: 24px 0 12px;
}
.content-panel h2:first-child,
.info-section h2:first-child {
  margin-top: 0;
}
.badge {
  display: inline-block;
    padding: 3px 8px;
    font-size: 0.78rem;
    font-weight: 600;
    border: 1px solid var(--gc-border);
}
.badge-success {
  background: var(--gc-success-bg);
    color: var(--gc-success);
    border-color: transparent;
}
.badge-muted {
  background: var(--gc-bg-subtle);
    color: var(--gc-text-muted);
}
.gc-spinner {
  flex-shrink: 0;
    width: 22px;
    height: 22px;
    border: 2.5px solid var(--gc-navy-200);
    border-top-color: var(--gc-navy-500);
    border-radius: 50%;
    animation: gc-spin 0.75s linear infinite;
}
@media (max-width: 767.98px) {
  .page-title-bar {
    padding: var(--gc-space-4);
  }
  .page-title-bar:has([data-portal-header-below] .settings-tabs) {
    padding-bottom: 0;
  }
}

/* ---- Layout refinements (former app.css layout) ---- */
/* === layout.css ÃÂ¢ÃÂÃÂ The application shell ÃÂ¢ÃÂÃÂ sidebar, header, page frame. === */
/* Layout chrome: skip link, mobile nav, account menu, toast host */

/* Soft navigation: keep chrome stable; fade main content only. */
@supports (view-transition-name: none) {
  ::view-transition-old(root),
  ::view-transition-new(root) {
    animation: none;
    mix-blend-mode: normal;
  }

  [data-portal-main] {
    view-transition-name: portal-main;
  }

  ::view-transition-old(portal-main) {
    animation: portal-main-out 140ms ease both;
  }

  ::view-transition-new(portal-main) {
    animation: portal-main-in 180ms ease both;
  }
}

@keyframes portal-main-out {
  to { opacity: 0; transform: translateY(4px); }
}

@keyframes portal-main-in {
  from { opacity: 0; transform: translateY(6px); }
}

html.is-navigating [data-portal-main] {
  opacity: 0.92;
}

html.is-navigating .sidebar-nav .nav-link.active,
html.is-navigating .sidebar-nav .nav-group-link.active,
html.is-navigating .sidebar-nav .nav-section-summary.active {
  transition: background-color 120ms ease, color 120ms ease;
}

.sidebar-footer:empty {
  display: none;
}

.skip-link {
  position: absolute;
  top: var(--gc-space-2);
  left: var(--gc-space-2);
  z-index: var(--gc-z-skip);
  padding: var(--gc-space-2) var(--gc-space-4);
  background: var(--gc-navy-500);
  color: var(--gc-text-inverse);
  font-weight: 600;
  text-decoration: none;
  border-radius: var(--gc-radius-sm);
  transform: translateY(-160%);
  transition: transform var(--gc-duration-fast) var(--gc-ease);
}

.skip-link:focus,
.skip-link:focus-visible {
  transform: translateY(0);
  color: var(--gc-text-inverse);
}

.sidebar-overlay {
  display: none;
  position: fixed;
  inset: 0;
  z-index: var(--gc-z-overlay);
  background: var(--gc-overlay-bg);
  border: 0;
  padding: 0;
  cursor: pointer;
}

.sidebar-overlay.is-visible {
  display: block;
}

.pph-menu-btn {
  display: none;
  appearance: none;
  border: none;
  background: transparent;
  padding: 0;
  margin: 0;
  cursor: pointer;
  width: 44px;
  height: 44px;
  align-items: center;
  justify-content: center;
  color: var(--gc-navy-500);
  flex-shrink: 0;
}

.pph-menu-btn:hover,
.pph-menu-btn:focus-visible {
  color: var(--gc-navy-600);
}

.pph-hamburger {
  display: block;
  width: 22px;
  height: 2px;
  background: currentColor;
  position: relative;
  border-radius: 1px;
}

.pph-hamburger::before,
.pph-hamburger::after {
  content: "";
  position: absolute;
  left: 0;
  width: 22px;
  height: 2px;
  background: currentColor;
  border-radius: 1px;
}

.pph-hamburger::before { top: -7px; }
.pph-hamburger::after { top: 7px; }

/* Opacity on text promotes the element to its own compositing layer, and a
   composited layer loses subpixel antialiasing (ClearType on Windows) ÃÂ¢ÃÂÃÂ the
   glyphs fall back to greyscale AA and visibly blur. This is why the disabled
   nav item read as the fuzziest thing in the sidebar. Dim with a colour. */
.nav-link-unavailable {
  color: var(--gc-sidebar-text-disabled);
  cursor: default;
  pointer-events: none;
}

.nav-subprefix {
  flex: 0 0 auto;
  color: var(--gc-sidebar-text);
}

/* portal.css loads last and paints idle nav as inverse / rgba white. Beat it
   with body.portal-body so reversed text stays on the sidebar tokens. */
body.portal-body {
  font-size: var(--gc-text-base);
  line-height: var(--gc-leading-normal);
  --gc-nav-icon-size: var(--gc-icon-lg);
  --gc-nav-font-size: var(--gc-text-lg);
}

body.portal-body .sidebar {
  z-index: var(--gc-z-sidebar);
  color: var(--gc-sidebar-text);
  isolation: auto;
  overflow-x: hidden;
  overflow-y: auto;
  background-color: var(--gc-sidebar-bottom);
  background-image: linear-gradient(
    180deg,
    var(--gc-sidebar-top) 0%,
    var(--gc-sidebar-mid) 48%,
    var(--gc-sidebar-bottom) 100%
  );
  border-right-color: var(--gc-navy-800);
}

body.portal-body .sidebar::before,
body.portal-body .sidebar::after {
  content: none;
  display: none;
}

body.portal-body .id-org {
  margin-top: var(--gc-space-3);
  margin-bottom: var(--gc-space-1);
  font-family: var(--gc-font-display);
  font-weight: var(--gc-weight-semibold);
  font-size: var(--gc-text-wordmark);
  letter-spacing: var(--gc-tracking-label);
  line-height: var(--gc-leading-tight);
  color: var(--gc-sidebar-text);
}

body.portal-body .nav-link,
body.portal-body .logout-link,
body.portal-body .nav-section-summary,
body.portal-body .nav-group-link {
  color: var(--gc-sidebar-text);
  font-size: var(--gc-text-lg);
  font-weight: var(--gc-weight-normal);
  line-height: var(--gc-leading-tight);
}

/* portal.css only adds 12px, which parks ">" under the parent icon.
   Parent labels start after pad + icon + gap; indent children to that edge. */
body.portal-body .nav-group-link {
  padding-left: calc(var(--gc-nav-item-pad-x) + var(--gc-nav-icon-size) + var(--gc-nav-item-gap));
}

body.portal-body .nav-link:hover,
body.portal-body .logout-link:hover,
body.portal-body .nav-section-summary:hover,
body.portal-body .nav-group-link:hover {
  color: var(--gc-sidebar-text-active);
}

body.portal-body .nav-link.active,
body.portal-body .nav-group-link.active {
  color: var(--gc-sidebar-text-active);
}

body.portal-body .nav-link.nav-link-unavailable,
body.portal-body .nav-group-link.nav-link-unavailable {
  color: var(--gc-sidebar-text-disabled);
}

body.portal-body .nav-chev {
  width: var(--gc-icon-sm);
  height: var(--gc-icon-sm);
  flex: 0 0 var(--gc-icon-sm);
  opacity: 1;
  color: inherit;
  transition: transform var(--gc-duration-fast) var(--gc-ease);
}

body.portal-body .sidebar-build {
  gap: var(--gc-space-1);
  color: var(--gc-sidebar-text-disabled);
  font-size: var(--gc-text-sm);
  letter-spacing: var(--gc-tracking-normal);
  line-height: var(--gc-leading-tight);
}

body.portal-body .sidebar-build-label {
  opacity: 1;
  font-weight: var(--gc-weight-semibold);
  font-size: var(--gc-text-2xs);
  letter-spacing: var(--gc-tracking-label);
}

body.portal-body .sidebar-build-id {
  font-size: var(--gc-text-xs);
  font-weight: var(--gc-weight-normal);
  color: var(--gc-sidebar-text-disabled);
  letter-spacing: var(--gc-tracking-normal);
}

body.portal-body .logout-link {
  color: var(--gc-sidebar-text);
}

body.portal-body .portal-page-header-title {
  font-family: var(--gc-font-display);
  font-size: var(--gc-text-2xl);
  font-weight: var(--gc-weight-bold);
  letter-spacing: var(--gc-tracking-tight);
  color: var(--gc-text);
  line-height: var(--gc-leading-tight);
}

body.portal-body .page-subtitle {
  margin-top: var(--gc-space-1);
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-normal);
}

.pph-icon-btn:not(:disabled) {
  cursor: pointer;
}

.pph-icon-btn.pph-icon-btn--account {
  width: var(--gc-header-avatar-size);
  height: var(--gc-header-avatar-size);
  position: relative;
  overflow: hidden;
  border-radius: 50%;
}

.pph-icon-btn--account .pph-ico {
  width: var(--gc-header-avatar-size);
  height: var(--gc-header-avatar-size);
}

.pph-icon-btn--account .pph-avatar {
  width: var(--gc-header-avatar-size);
  height: var(--gc-header-avatar-size);
  border-radius: 50%;
  object-fit: cover;
  display: block;
}

.pph-icon-btn--account .pph-avatar[hidden],
.pph-icon-btn--account .pph-ico[hidden],
.pph-avatar[hidden],
.pph-ico[hidden],
.pph-avatar.is-hidden,
.pph-ico.is-hidden {
  display: none !important;
}

.pph-account {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: var(--gc-header-avatar-size);
}

.account-menu {
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  z-index: var(--gc-z-dropdown);
  min-width: 260px;
  padding: var(--gc-space-3) 0;
  background: var(--gc-surface);
  border: 1px solid var(--gc-border);
  box-shadow: var(--gc-shadow-md);
  border-radius: var(--gc-radius-md);
}

.account-menu[hidden] {
  display: none !important;
}

.account-menu-header {
  padding: var(--gc-space-2) var(--gc-space-4) var(--gc-space-3);
  border-bottom: 1px solid var(--gc-border);
}

.account-menu-name {
  margin: 0;
  font-weight: 600;
  color: var(--gc-text);
  font-size: 0.98rem;
}

.account-menu-email,
.account-menu-meta {
  margin: 2px 0 0;
  color: var(--gc-text-muted);
  font-size: 0.85rem;
  word-break: break-word;
}

.account-menu-item {
  display: flex;
  align-items: center;
  gap: var(--gc-space-2);
  width: 100%;
  padding: 10px var(--gc-space-4);
  border: 0;
  background: transparent;
  color: var(--gc-text);
  font-family: inherit;
  font-size: 0.92rem;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
}

.account-menu-item:hover,
.account-menu-item:focus-visible {
  background: var(--gc-bg-subtle);
  color: var(--gc-navy-500);
}

.account-menu-divider {
  margin: 6px 0;
  border: 0;
  border-top: 1px solid var(--gc-border);
}

.toast-host {
  position: fixed;
  right: var(--gc-space-4);
  bottom: var(--gc-space-4);
  z-index: var(--gc-z-toast);
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-2);
  max-width: min(360px, calc(100vw - 32px));
  pointer-events: none;
}

.pph-refresh.is-busy .pph-ico {
  animation: gc-spin 0.75s linear infinite;
}

.portal-last-updated {
  margin: 0;
  font-size: 0.82rem;
  color: var(--gc-text-muted);
}

body.nav-open {
  overflow: hidden;
}

@media (max-width: 767.98px) {
  body.portal-body {
    margin-left: 0;
  }

  body.portal-body .sidebar {
    z-index: var(--gc-z-sidebar);
    transform: translateX(-100%);
    transition: transform var(--gc-duration-normal) var(--gc-ease);
  }

  body.portal-body .sidebar.is-open {
    transform: translateX(0);
  }

  .pph-menu-btn {
    display: inline-flex;
  }

  .portal-page-header-start {
    display: flex;
    align-items: center;
    gap: var(--gc-space-3);
  }
}

@media (min-width: 768px) {
  .sidebar {
    transform: none;
  }

  .sidebar-overlay {
    display: none !important;
  }
}
}

@layer components {
/* === components.css ÃÂ¢ÃÂÃÂ Reusable components. Everything two pages could share lives here. === */
/* Shared components */

/* Form controls ÃÂ¢ÃÂÃÂ match login field density across the portal */
#main-content input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]):not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="image"]):not([type="range"]):not([type="color"]),
#main-content select,
#main-content textarea,
.gc-drawer input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]):not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="image"]):not([type="range"]):not([type="color"]),
.gc-drawer select,
.gc-drawer textarea {
  box-sizing: border-box;
  width: 100%;
  min-height: var(--gc-control-min-height);
  padding: var(--gc-control-padding-y) var(--gc-control-padding-x);
  font-family: inherit;
  font-size: var(--gc-control-font-size);
  line-height: var(--gc-control-line-height);
  color: var(--gc-text);
  background: var(--gc-surface);
  border: 1px solid var(--gc-border-strong);
  border-radius: var(--gc-radius-sm);
  outline: none;
}

#main-content select,
.gc-drawer select {
  appearance: auto;
}

#main-content textarea,
.gc-drawer textarea {
  min-height: calc(var(--gc-control-min-height) + var(--gc-space-8));
  resize: vertical;
}

#main-content input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]):focus,
#main-content select:focus,
#main-content textarea:focus,
.gc-drawer input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]):focus,
.gc-drawer select:focus,
.gc-drawer textarea:focus {
  border-color: var(--gc-focus-ring-edge);
  outline: var(--gc-focus-ring-width) solid var(--gc-focus-ring);
  outline-offset: var(--gc-focus-ring-offset);
}

/* Text fields only ÃÂ¢ÃÂÃÂ Chrome treats checkbox/radio/switch as :read-only always,
   and an #id rule here would beat .gc-form-switch :checked --gc-switch-on. */
#main-content input:read-only:not([type="checkbox"]):not([type="radio"]),
#main-content textarea:read-only,
.gc-drawer input:read-only:not([type="checkbox"]):not([type="radio"]),
.gc-drawer textarea:read-only {
  background: var(--gc-bg-subtle);
  color: var(--gc-text-muted);
}

#main-content input::placeholder,
#main-content textarea::placeholder,
.gc-drawer input::placeholder,
.gc-drawer textarea::placeholder {
  color: var(--gc-neutral-500);
}

/* Boolean setting switches ÃÂ¢ÃÂÃÂ Bootstrap form-switch semantics, portal tokens (no Bootstrap). */
.gc-form-check {
  display: flex;
  align-items: center;
  gap: var(--gc-space-3);
  min-height: var(--gc-control-min-height-compact);
}

.gc-form-switch .gc-form-check-input {
  flex: 0 0 auto;
  width: 3.25rem;
  height: 1.75rem;
  margin: 0;
  appearance: none;
  -webkit-appearance: none;
  background-color: var(--gc-neutral-400);
  border: 1px solid transparent;
  border-radius: var(--gc-radius-full);
  cursor: pointer;
  transition:
    background-color var(--gc-duration-fast) var(--gc-ease);
  position: relative;
}

.gc-form-switch .gc-form-check-input::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 3px;
  width: 1.375rem;
  height: 1.375rem;
  transform: translateY(-50%);
  background: var(--gc-neutral-0);
  border-radius: 50%;
  box-shadow: var(--gc-shadow-sm);
  transition: transform var(--gc-duration-fast) var(--gc-ease);
}

.gc-form-switch .gc-form-check-input:checked {
  background: var(--gc-switch-on);
  border-color: var(--gc-switch-on-border);
}

.gc-form-switch .gc-form-check-input:checked::before {
  transform: translate(1.5rem, -50%);
}

.gc-form-switch .gc-form-check-input:focus-visible {
  outline: var(--gc-focus-ring-width) solid var(--gc-focus-ring);
  outline-offset: var(--gc-focus-ring-offset);
}

.gc-form-switch .gc-form-check-input:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}

.gc-form-switch .gc-form-check-label {
  font-size: var(--gc-text-base);
  font-weight: var(--gc-weight-normal);
  letter-spacing: normal;
  line-height: var(--gc-leading-normal);
  text-transform: none;
  color: var(--gc-text);
  cursor: pointer;
  user-select: none;
}

.gc-form-switch .gc-form-check-input:disabled + .gc-form-check-label {
  cursor: not-allowed;
  color: var(--gc-text-muted);
}

@media (prefers-reduced-motion: reduce) {
  .gc-form-switch .gc-form-check-input,
  .gc-form-switch .gc-form-check-input::before {
    transition: none;
  }
}

/* Compact exceptions: table row tools / inline filters stay usable in dense grids */
#main-content .intake-card-actions select,
#main-content .status-table select,
#main-content .data-table select {
  width: auto;
  min-height: 2.25rem;
  padding: 6px 10px;
  font-size: 0.92rem;
}

/* Buttons / pending */
.gc-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--gc-space-2);
  padding: var(--gc-btn-padding-y) var(--gc-btn-padding-x);
  border: 1px solid var(--gc-border-strong);
  background: var(--gc-surface);
  color: var(--gc-btn-secondary-text);
  font-family: inherit;
  font-weight: var(--gc-weight-medium);
  font-size: var(--gc-control-font-size);
  border-radius: var(--gc-radius-md);
  cursor: pointer;
  text-decoration: none;
  /* A button is never the flex item that gives way: in a toolbar row it must
     keep its label on one line rather than wrapping. */
  white-space: nowrap;
  flex: 0 0 auto;
}

/* The default .gc-btn appearance IS the secondary button. This rule exists so
   the class used in markup is defined rather than silently doing nothing. */
.gc-btn-secondary {
  background: var(--gc-surface);
  border-color: var(--gc-border-strong);
  color: var(--gc-btn-secondary-text);
}

.gc-btn-secondary:hover:not(:disabled) {
  background: var(--gc-bg-subtle);
}

.gc-btn:hover:not(:disabled),
.gc-btn:focus-visible:not(:disabled) {
  background: var(--gc-bg-subtle);
}

.gc-btn:disabled {
  opacity: 0.7;
  cursor: not-allowed;
  pointer-events: none;
  box-shadow: none;
}

/* Pending is NOT disabled-with-a-label. The control is working, so it keeps
   its own colour and shows exactly one thing: the spinner.
   It used to share the disabled rule's opacity: 0.7, which broke this file's
   own "never dim with opacity" rule ÃÂ¢ÃÂÃÂ the compositing layer drops subpixel
   antialiasing, which is why the spinner and its label read as fuzzy grey.
   colour: transparent hides the glyphs while KEEPING the label in the
   accessibility tree and keeping its box, so the button cannot resize
   mid-action and shove the rest of the toolbar sideways. */
.gc-btn.is-pending {
  position: relative;
  cursor: wait;
  pointer-events: none;
  box-shadow: none;
  color: transparent;
}

/* Graphic children have no glyphs to make transparent, so hide them. */
.gc-btn.is-pending > svg,
.gc-btn.is-pending > img {
  visibility: hidden;
}

/* inset + margin auto, never a translate: the spin animation owns transform,
   and a centring translate would be overwritten the moment it starts. */
.gc-btn.is-pending .gc-spinner {
  position: absolute;
  inset: 0;
  margin: auto;
}

.gc-btn-primary {
  background: var(--gc-btn-primary-bg);
  border-color: var(--gc-btn-primary-border);
  color: var(--gc-btn-primary-text);
  /* The primary action is the one control that sits above the page rather
     than on it. Shadow, not a heavier weight or a darker fill. */
  box-shadow: var(--gc-shadow-sm);
}

.gc-btn-primary:hover:not(:disabled) {
  background: var(--gc-btn-primary-bg-hover);
  border-color: var(--gc-btn-primary-border-hover);
  color: var(--gc-btn-primary-text);
}

/* A raised control has to settle when pressed, or the lift reads as a
   texture rather than as a state. */
.gc-btn-primary:active:not(:disabled) {
  box-shadow: none;
}

.gc-btn-primary .gc-spinner {
  border-color: color-mix(in srgb, var(--gc-btn-primary-text) 28%, transparent);
  border-top-color: var(--gc-btn-primary-text);
}

/* Off-portal / external open ÃÂ¢ÃÂÃÂ navy fill, not graphite primary. */
.gc-btn-navy {
  background: var(--gc-btn-navy-bg);
  border-color: var(--gc-btn-navy-bg);
  color: var(--gc-btn-navy-text);
  border-radius: var(--gc-radius-sm);
  padding: var(--gc-space-3) var(--gc-space-5);
  font-weight: var(--gc-weight-semibold);
  box-shadow: var(--gc-shadow-sm);
}

.gc-btn-navy:hover:not(:disabled) {
  background: var(--gc-btn-navy-bg-hover);
  border-color: var(--gc-btn-navy-bg-hover);
  color: var(--gc-btn-navy-text);
}

.gc-btn-navy:active:not(:disabled) {
  box-shadow: none;
}

.gc-btn-navy .gc-btn-ico {
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
  flex-shrink: 0;
  color: inherit;
  fill: currentColor;
}

.gc-btn-navy .gc-spinner {
  border-color: color-mix(in srgb, var(--gc-btn-navy-text) 28%, transparent);
  border-top-color: var(--gc-btn-navy-text);
}

.gc-spinner {
  display: inline-block;
  flex-shrink: 0;
  box-sizing: border-box;
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
  border: 2px solid var(--gc-navy-200);
  border-top-color: var(--gc-navy-500);
  border-radius: 50%;
  animation: gc-spin var(--gc-duration-spin) var(--gc-ease-spin) infinite;
}

.gc-spinner::before,
.gc-spinner::after {
  content: none;
}

@keyframes gc-spin {
  to { transform: rotate(360deg); }
}

.gc-btn-ghost {
  background: transparent;
  border-color: transparent;
  color: var(--gc-navy-500);
  text-decoration: underline;
  padding-inline: 6px;
}

.gc-btn-ghost:hover:not(:disabled) {
  background: transparent;
  color: var(--gc-navy-700);
}

/* ---- Login (_LoginLayout only) ---- */
.login-hero {
  box-sizing: border-box;
  min-height: 100svh;
  min-height: 100dvh;
  display: grid;
  place-items: center;
  padding: var(--gc-space-8) var(--gc-space-4);
  position: relative;
  isolation: isolate;
  overflow-x: clip;
  width: 100%;
  background-color: var(--gc-navy-900);
  background-image: url("../images/login-hero-cortex.jpg");
  background-position: center center;
  background-size: cover;
  background-repeat: no-repeat;
  background-attachment: scroll;
}

.login-wrapper {
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  align-items: center;
  width: min(100%, 26.25rem);
  max-width: 100%;
}

.login-box {
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  padding: var(--gc-space-12) var(--gc-space-10) var(--gc-space-10);
  text-align: center;
  color: var(--gc-navy-900);
  border-radius: var(--gc-radius-lg);
  border: 1px solid var(--gc-border);
  background: color-mix(in srgb, var(--gc-neutral-0) 78%, transparent);
  box-shadow: var(--gc-shadow-lg);
  backdrop-filter: blur(18px) saturate(1.15);
  -webkit-backdrop-filter: blur(18px) saturate(1.15);
}

.login-logo {
  width: 100%;
}

.login-logo img {
  display: block;
  margin: 0 auto;
  width: 100%;
  max-width: min(100%, 17.5rem);
  height: auto;
}

.login-product {
  margin: var(--gc-space-3) 0 var(--gc-space-6);
  font-family: var(--gc-font-sans);
  font-size: 1.7rem;
  font-weight: 600;
  letter-spacing: 0.42em;
  text-indent: 0.42em;
  text-transform: uppercase;
  color: var(--gc-navy-900);
  line-height: 1.1;
  max-width: 100%;
  overflow-wrap: anywhere;
}

.login-form {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-3);
  text-align: left;
  width: 100%;
}

.login-form input[type="email"] {
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  min-height: var(--gc-control-min-height);
  padding: var(--gc-control-padding-y) var(--gc-control-padding-x);
  font-family: inherit;
  font-size: var(--gc-control-font-size);
  line-height: var(--gc-control-line-height);
  color: var(--gc-text);
  background: var(--gc-surface);
  border: 1px solid var(--gc-border-strong);
  border-radius: var(--gc-radius-lg);
  outline: none;
  box-shadow: var(--gc-shadow-sm);
}

.login-form input[type="email"]:focus {
  border-color: var(--gc-navy-500);
  box-shadow: var(--gc-shadow-md);
}

.login-form input[type="email"]::placeholder {
  color: var(--gc-text-muted);
}

.btn-login {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  min-height: var(--gc-control-min-height);
  padding: var(--gc-control-padding-y) var(--gc-control-padding-x);
  border: 0;
  border-radius: var(--gc-radius-lg);
  background: var(--gc-btn-primary-bg);
  color: var(--gc-btn-primary-text);
  font-family: inherit;
  font-weight: var(--gc-weight-medium);
  font-size: var(--gc-control-font-size);
  letter-spacing: 0.02em;
  cursor: pointer;
  text-align: center;
  text-decoration: none;
}

.btn-login:hover {
  background: var(--gc-btn-primary-bg-hover);
  color: var(--gc-btn-primary-text);
}

.btn-login:focus-visible {
  outline: 2px solid var(--gc-text-inverse);
  outline-offset: var(--gc-space-1);
}

.btn-login-link {
  box-sizing: border-box;
}

.login-tagline {
  color: var(--gc-navy-700);
  font-size: 0.95rem;
  margin: 0 0 var(--gc-space-2);
  font-weight: 400;
  letter-spacing: normal;
  text-transform: none;
}

.login-error-title {
  font-size: 1.15rem;
  color: var(--gc-navy-900);
  margin: 0 0 var(--gc-space-3);
}

.login-error-actions {
  margin-top: var(--gc-space-5);
}

.login-error {
  background: var(--gc-danger-bg);
  color: var(--gc-danger);
  padding: var(--gc-space-2) var(--gc-space-3);
  font-size: 0.92rem;
  border-radius: var(--gc-radius-md);
}

.login-footer {
  display: block;
  margin: var(--gc-space-6) 0 0;
  padding: var(--gc-space-1) var(--gc-space-2) 0;
  color: var(--gc-navy-800);
  font-size: 0.75rem;
  line-height: 1.45;
  text-align: center;
}

@media (max-width: 767.98px) {
  .login-hero {
    padding: var(--gc-space-6) var(--gc-space-4);
  }

  .login-logo img {
    max-width: min(100%, 15rem);
  }

  .login-product {
    font-size: 1.35rem;
    letter-spacing: 0.32em;
    text-indent: 0.32em;
    margin: var(--gc-space-3) 0 var(--gc-space-5);
  }
}

@media (max-width: 639.98px) {
  .login-hero {
    padding: var(--gc-space-4);
  }

  .login-box {
    padding: var(--gc-space-6) var(--gc-space-4) var(--gc-space-6);
  }

  .login-product {
    letter-spacing: 0.22em;
    text-indent: 0.22em;
  }
}

.btn-login.is-pending {
  position: relative;
  pointer-events: none;
  cursor: wait;
  color: transparent;
}

.btn-login.is-pending .gc-spinner {
  position: absolute;
  inset: 0;
  margin: auto;
}

.btn-login .btn-login-label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--gc-space-2);
}

.btn-login .gc-spinner {
  width: var(--gc-icon-sm);
  height: var(--gc-icon-sm);
  border-width: 2px;
  border-color: color-mix(in srgb, var(--gc-neutral-0) 28%, transparent);
  border-top-color: var(--gc-neutral-0);
}

.gc-spinner.gc-spinner-sm {
  width: var(--gc-icon-sm);
  height: var(--gc-icon-sm);
  border-width: 2px;
}

/* Alerts */
.gc-alert {
  padding: 12px 14px;
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-sm);
  font-size: 0.92rem;
}

.gc-alert-info {
  background: var(--gc-info-bg);
  border-color: var(--gc-navy-200);
  color: var(--gc-navy-700);
}

.gc-alert-success {
  background: var(--gc-success-bg);
  border-color: transparent;
  color: var(--gc-success);
}

.gc-alert-warning {
  background: var(--gc-warning-bg);
  border-color: transparent;
  color: var(--gc-warning);
}

.gc-alert-danger {
  background: var(--gc-danger-bg);
  border-color: transparent;
  color: var(--gc-danger);
}

/* Badges */
.badge-warning {
  background: var(--gc-warning-bg);
  color: var(--gc-warning);
  border-color: transparent;
}

.badge-danger {
  background: var(--gc-danger-bg);
  color: var(--gc-danger);
  border-color: transparent;
}

/* Toasts */
.gc-toast {
  pointer-events: auto;
  display: flex;
  align-items: flex-start;
  gap: var(--gc-space-3);
  padding: 12px 14px;
  background: var(--gc-surface);
  border: 1px solid var(--gc-border);
  border-left-width: 4px;
  border-radius: var(--gc-radius-md);
  box-shadow: var(--gc-shadow-md);
  color: var(--gc-text);
  font-size: 0.92rem;
  animation: gc-toast-in var(--gc-duration-normal) var(--gc-ease);
}

.gc-toast-success { border-left-color: var(--gc-success); }
.gc-toast-info { border-left-color: var(--gc-navy-500); }
.gc-toast-warning { border-left-color: var(--gc-warning); }
.gc-toast-danger { border-left-color: var(--gc-danger); }

.gc-toast-message {
  flex: 1;
  margin: 0;
}

.gc-toast-close {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--gc-text-muted);
  cursor: pointer;
  font-size: 1.1rem;
  line-height: 1;
  padding: 0;
}

@keyframes gc-toast-in {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Dialogs ÃÂ¢ÃÂÃÂ match content-panel / card radius (--gc-radius-card), not --gc-radius-lg */
.gc-dialog {
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-card);
  padding: 0;
  max-width: min(440px, calc(100vw - 32px));
  width: min(440px, calc(100vw - 32px));
  box-shadow: var(--gc-shadow-lg);
  background: var(--gc-surface);
  color: var(--gc-text);
}

.gc-dialog.gc-dialog--size-lg {
  max-width: min(640px, calc(100vw - 32px));
  width: min(640px, calc(100vw - 32px));
  max-height: min(80vh, 720px);
}

/* Only when open ÃÂ¢ÃÂÃÂ author `display` overrides the UA closed-dialog `display: none`. */
.gc-dialog.gc-dialog--size-lg[open] {
  display: flex;
  flex-direction: column;
}

.gc-dialog::backdrop {
  background: var(--gc-overlay-bg);
}

.gc-dialog-body {
  padding: var(--gc-space-6);
}

.gc-dialog-body--scroll {
  overflow: auto;
  flex: 1 1 auto;
  min-height: 0;
}

.gc-dialog-title {
  margin: 0 0 var(--gc-space-3);
  font-size: 1.1rem;
  color: var(--gc-navy-500);
}

.gc-dialog-message {
  margin: 0;
  color: var(--gc-text);
}

.gc-dialog-switch {
  margin-block-start: var(--gc-space-4);
  display: grid;
  gap: var(--gc-space-2);
}

.gc-dialog-message + .gc-dialog-message {
  margin-top: var(--gc-space-3);
}

.gc-dialog-message--muted {
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
}

.gc-dialog-actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--gc-space-2);
  padding: var(--gc-space-3) var(--gc-space-6) var(--gc-space-5);
  border-top: 1px solid var(--gc-border);
}

/* Dropdown a11y + toolbar Actions menus (Cortex Portal / OpenClaw native pattern) */
[data-component="dropdown"] {
  position: relative;
  display: inline-flex;
}

[data-component="dropdown"] [data-dropdown-menu][hidden] {
  display: none !important;
}

.dropdown-toggle::after {
  content: "";
  display: inline-block;
  width: var(--gc-space-2);
  height: var(--gc-space-2);
  margin-left: var(--gc-space-2);
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(calc(var(--gc-space-1) * -0.5)) rotate(45deg);
  vertical-align: middle;
}

.dropdown-menu {
  position: absolute;
  top: calc(100% + var(--gc-space-1));
  right: 0;
  z-index: var(--gc-z-dropdown);
  min-width: calc(var(--gc-space-12) * 4);
  padding: var(--gc-space-1);
  margin: 0;
  background: var(--gc-surface);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-control);
  box-shadow: var(--gc-shadow-md);
}

.dropdown-menu-end {
  right: 0;
  left: auto;
}

.dropdown-item {
  display: flex;
  align-items: center;
  width: 100%;
  min-height: var(--gc-control-min-height, 44px);
  padding: var(--gc-space-2) var(--gc-space-3);
  border: 0;
  border-radius: var(--gc-radius-control);
  background: transparent;
  color: var(--gc-text);
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.dropdown-item:hover,
.dropdown-item:focus-visible {
  background: var(--gc-surface-muted, color-mix(in srgb, var(--gc-text) 6%, var(--gc-surface)));
  outline: none;
}

.dropdown-item-danger {
  color: var(--gc-danger);
}

.dropdown-item-danger:hover,
.dropdown-item-danger:focus-visible {
  background: var(--gc-danger-bg);
  color: var(--gc-danger);
}

.dropdown-divider {
  height: 1px;
  margin: var(--gc-space-1) 0;
  background: var(--gc-border);
  border: 0;
}

/* Stat cards */
.stat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: var(--gc-space-4);
  margin-bottom: var(--gc-space-6);
}

.stat-card {
  background: var(--gc-surface);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-card);
  padding: var(--gc-space-5) var(--gc-space-5);
  box-shadow: var(--gc-shadow-sm);
}

.stat-card-label {
  margin: 0;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--gc-text-muted);
}

.stat-card-value {
  margin: 8px 0 0;
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--gc-navy-500);
  line-height: 1.15;
}

.stat-card-hint {
  margin: 6px 0 0;
  font-size: 0.85rem;
  color: var(--gc-text-muted);
}

.stat-card.is-loading .stat-card-value {
  min-height: 1.15em;
}

.stat-card.is-loading .stat-card-value::before,
.gc-kpi.is-loading .gc-kpi-value::before {
  content: "";
  display: inline-block;
  box-sizing: border-box;
  width: var(--gc-icon-lg);
  height: var(--gc-icon-lg);
  border: 2px solid var(--gc-navy-200);
  border-top-color: var(--gc-navy-500);
  border-radius: 50%;
  animation: gc-spin var(--gc-duration-spin) var(--gc-ease-spin) infinite;
  background: none;
}

.stat-card.is-loading .stat-card-value::before {
  height: var(--gc-icon-lg);
  max-width: none;
}

.chart-card.is-loading .chart-card-canvas-wrap::before {
  content: none;
}

/* Chart cards */
.chart-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--gc-space-4);
  margin-bottom: var(--gc-space-6);
  align-items: stretch;
}

.chart-card {
  display: flex;
  flex-direction: column;
  background: var(--gc-surface);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-card);
  padding: var(--gc-space-5);
  box-shadow: var(--gc-shadow-sm);
  min-width: 0;
}

.chart-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gc-space-3);
  min-height: 1.6rem;
  margin-bottom: var(--gc-space-4);
}

.chart-card-title {
  margin: 0;
  font-family: var(--gc-font-display);
  font-size: var(--gc-text-lg);
  font-weight: var(--gc-weight-semibold);
  color: var(--gc-navy-500);
}

.chart-legend {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 12px 16px;
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: 0.82rem;
  color: var(--gc-text-muted);
}

.chart-legend li {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
}

.chart-legend-swatch {
  width: 14px;
  height: 8px;
  border-radius: 1px;
  background: var(--gc-navy-500);
}

.chart-legend-swatch[data-swatch="1"] {
  background: var(--gc-navy-300);
}

.chart-card-canvas-wrap {
  position: relative;
  height: 240px;
  flex: 0 0 240px;
}

.chart-card-canvas-wrap canvas {
  display: block;
  width: 100% !important;
  height: 100% !important;
}

.chart-card-state {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--gc-space-2);
  padding: var(--gc-space-4);
  text-align: center;
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
}

.chart-card-state[hidden] {
  display: none !important;
}

.chart-card-state:not([hidden]) {
  background: var(--gc-chart-state-bg);
}

.chart-card-summary {
  display: none;
}

.chart-card-data[hidden] {
  display: none !important;
}

.health-bar,
.portal-status-strip {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: var(--gc-space-3);
  margin-block: var(--gc-space-4);
  margin-inline: 0;
  padding: var(--gc-space-3);
  min-height: var(--gc-control-min-height-compact);
  background: var(--gc-health-bar-bg);
  border: 1px solid var(--gc-health-bar-outline);
  border-radius: 0;
  color: var(--gc-health-bar-label);
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-tight);
}

.portal-status-strip.is-hidden,
.portal-status-strip[hidden] {
  display: none !important;
}

.health-bar-item {
  display: inline-flex;
  align-items: baseline;
  gap: var(--gc-space-2);
  white-space: nowrap;
}

.health-bar-label {
  color: var(--gc-health-bar-label);
  font-weight: var(--gc-weight-normal);
}

.health-bar-value {
  font-weight: var(--gc-weight-semibold);
}

.health-bar-value.is-ok { color: var(--gc-health-ok); }
.health-bar-value.is-warn { color: var(--gc-health-warn); }
.health-bar-value.is-bad { color: var(--gc-health-bad); }
.health-bar-value.is-unknown { color: var(--gc-navy-300); }

.health-bar-sep {
  margin: 0 var(--gc-space-4);
  color: var(--gc-health-bar-sep);
  font-weight: var(--gc-weight-normal);
}

.health-strip {
  display: none;
}

.health-chip {
  display: none;
}

.health-chip-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--gc-text-muted);
}

.health-chip.is-ok .health-chip-dot { background: var(--gc-success); }
.health-chip.is-warn .health-chip-dot { background: var(--gc-warning); }
.health-chip.is-bad .health-chip-dot { background: var(--gc-danger); }
.health-chip.is-unknown .health-chip-dot { background: var(--gc-neutral-400); }

/* Settings tabs */
.settings-tabs {
  display: flex;
  gap: 0;
  border-bottom: 1px solid var(--gc-border);
  margin-bottom: var(--gc-space-5);
}

.settings-tab {
  appearance: none;
  border: 0;
  background: transparent;
  padding: 12px 16px;
  font-family: inherit;
  font-size: var(--gc-text-base);
  font-weight: var(--gc-weight-medium);
  color: var(--gc-neutral-700);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  line-height: var(--gc-leading-tight);
}

.settings-tab:hover,
.settings-tab:focus-visible {
  color: var(--gc-navy-500);
}

.settings-tab[aria-selected="true"] {
  color: var(--gc-navy-800);
  font-weight: var(--gc-weight-bold);
  border-bottom-color: var(--gc-navy-800);
}

.settings-panel[hidden] {
  display: none !important;
}

/* Title-bar tabs: flush underline with the page-title-bar bottom edge.
   Used by Settings and SharePoint via @section PageHeaderBelow. */
.page-title-bar .settings-tabs {
  gap: var(--gc-space-6);
  margin-bottom: 0;
  border-bottom: 1px solid var(--gc-border);
}

.page-title-bar .settings-tabs .settings-tab {
  padding-inline: 0;
  padding-block: var(--gc-space-2) var(--gc-space-3);
}

/* Collapsible section cards ÃÂ¢ÃÂÃÂ SharePoint / IoT home-msp pattern.
   Header actions (FindÃÂ¢ÃÂÃÂ¦, OpenÃÂ¢ÃÂÃÂ¦) stay visible when collapsed. */
.gc-collapse-card .gc-collapse-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gc-space-3);
  margin-bottom: var(--gc-space-3);
  transition: margin-bottom var(--gc-duration-normal) var(--gc-ease);
}

.gc-collapse-card .gc-collapse-header .gc-section-title {
  margin: 0;
}

.gc-collapse-actions {
  display: inline-flex;
  align-items: center;
  gap: var(--gc-space-2);
  flex-shrink: 0;
  margin-left: auto;
}

.gc-collapse-action {
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--gc-link);
  font: inherit;
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-tight);
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
  white-space: nowrap;
}

.gc-collapse-action:hover,
.gc-collapse-action:focus-visible {
  color: var(--gc-link-hover);
}

.gc-collapse-action:disabled {
  color: var(--gc-text-muted);
  cursor: default;
  text-decoration: none;
}

.gc-collapse-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: var(--gc-control-min-height-dense);
  height: var(--gc-control-min-height-dense);
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: var(--gc-radius-sm);
  background: transparent;
  color: var(--gc-text);
  cursor: pointer;
}

.gc-collapse-toggle svg {
  display: block;
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
}

.gc-collapse-toggle:hover,
.gc-collapse-toggle:focus-visible {
  color: var(--gc-link);
}

.gc-collapse-card.is-collapsed .gc-collapse-header {
  margin-bottom: 0;
}

.gc-collapse-body {
  display: grid;
  grid-template-rows: 1fr;
  overflow: hidden;
  opacity: 1;
  transition:
    grid-template-rows var(--gc-duration-normal) var(--gc-ease),
    opacity var(--gc-duration-fast) var(--gc-ease);
}

.gc-collapse-body-inner {
  min-height: 0;
  overflow: hidden;
}

.gc-collapse-card:not(.is-collapsed) .gc-collapse-body,
.gc-collapse-card:not(.is-collapsed) .gc-collapse-body-inner {
  overflow: visible;
}

.gc-collapse-card.is-collapsed .gc-collapse-body {
  grid-template-rows: 0fr;
  opacity: 0;
  pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
  .gc-collapse-card .gc-collapse-header,
  .gc-collapse-body {
    transition: none;
  }
}

.ai-ctl-models,
.ai-ctl-overview,
.ai-ctl-requests {
  display: grid;
  gap: var(--gc-space-4);
}

.ai-ctl .health-bar {
  justify-content: space-between;
  align-items: center;
  gap: var(--gc-space-4);
}

.ai-ctl-overview .content-panel {
  padding: var(--gc-space-4);
}

.ai-ctl-overview .content-panel p {
  margin: 0 0 var(--gc-space-2);
}

.gc-kpi-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--gc-space-3);
}

@media (min-width: 640px) {
  .gc-kpi-grid {
    grid-template-columns: 1fr 1fr;
  }
}

@media (min-width: 1024px) {
  .gc-kpi-grid {
    grid-template-columns: 1fr 1fr 1fr 1fr;
  }
}

@media (min-width: 1280px) {
  .gc-kpi-grid {
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
  }
}

.gc-kpi {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  min-height: 7.5rem;
  padding: var(--gc-space-4);
  background: linear-gradient(180deg, var(--gc-surface) 0%, var(--gc-bg-subtle) 100%);
  border: 1px solid var(--gc-border-strong);
  border-radius: var(--gc-radius-kpi);
  box-shadow: var(--gc-shadow-sm);
}

.gc-kpi-value {
  margin: 0;
  color: var(--gc-text);
  font-size: var(--gc-text-kpi);
  font-weight: var(--gc-weight-semibold);
  line-height: var(--gc-leading-tight);
  font-variant-numeric: tabular-nums;
}

.gc-kpi-label {
  margin: var(--gc-space-1) 0 0;
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-semibold);
  letter-spacing: var(--gc-tracking-label);
  text-transform: uppercase;
}

.gc-kpi.is-danger {
  border-color: var(--gc-danger);
  background: linear-gradient(135deg, var(--gc-danger-bg) 0%, var(--gc-surface) 100%);
}

.gc-kpi.is-danger .gc-kpi-value,
.gc-kpi.is-danger .gc-kpi-label {
  color: var(--gc-danger);
}

.gc-kpi.is-warn {
  border-color: var(--gc-warning);
  background: linear-gradient(135deg, var(--gc-warning-bg) 0%, var(--gc-surface) 100%);
}

.gc-kpi.is-warn .gc-kpi-value {
  color: var(--gc-warning);
}

.gc-kpi.is-warn .gc-kpi-label {
  color: var(--gc-warning);
}

.gc-kpi.is-ok {
  border-color: var(--gc-success);
  background: linear-gradient(135deg, var(--gc-success-bg) 0%, var(--gc-surface) 100%);
}

.gc-kpi.is-ok .gc-kpi-value {
  color: var(--gc-success);
}

.gc-kpi.is-ok .gc-kpi-label {
  color: var(--gc-text-muted);
}

.gc-kpi.is-loading .gc-kpi-value {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: var(--gc-text-kpi);
  color: transparent;
}

.gc-kpi.is-loading .gc-kpi-value::before {
  position: static;
  margin: 0;
  width: var(--gc-icon-lg);
  height: var(--gc-icon-lg);
}

@media (prefers-reduced-motion: reduce) {
  .stat-card.is-loading .stat-card-value::before,
  .gc-kpi.is-loading .gc-kpi-value::before {
    animation: none;
    border-color: var(--gc-navy-200);
    border-top-color: var(--gc-navy-500);
  }
}

[data-file-manager] > .gc-kpi-grid {
  margin-bottom: var(--gc-space-4);
  gap: var(--gc-space-4);
}

.gc-import-stage {
  display: grid;
  gap: var(--gc-space-3);
  padding: var(--gc-space-4);
  background: var(--gc-surface);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-md);
  box-shadow: var(--gc-shadow-sm);
}

.gc-import-stage-label {
  margin: 0;
  font-size: var(--gc-text-base);
  font-weight: var(--gc-weight-medium);
  line-height: var(--gc-leading-normal);
  color: var(--gc-text);
}

.gc-import-stack {
  display: grid;
  gap: var(--gc-space-3);
  margin: 0;
  padding: 0;
  list-style: none;
}

.gc-import-card {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--gc-space-3);
  padding: var(--gc-space-4);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-md);
  background: var(--gc-surface);
  box-shadow: var(--gc-shadow-sm);
}

.gc-import-card.is-processing {
  border-color: var(--gc-border-strong);
  background: linear-gradient(90deg, var(--gc-navy-100) 0%, var(--gc-surface) 58%);
}

.gc-import-card.is-pending {
  background: var(--gc-bg-subtle);
  border-color: var(--gc-border-subtle);
  box-shadow: none;
}

.gc-import-card.is-pending .gc-scan-name,
.gc-import-card.is-pending .gc-import-size,
.gc-import-card.is-pending .gc-scan-detail {
  color: var(--gc-text-muted);
}

.gc-import-card.is-complete {
  border-color: var(--gc-border);
}

.gc-import-card-main {
  flex: 1 1 12rem;
  min-width: 0;
  display: grid;
  gap: var(--gc-space-1);
}

.gc-import-size {
  margin: 0;
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-normal);
  color: var(--gc-text-muted);
}

.gc-import-card-status {
  flex: 0 0 auto;
  margin-left: auto;
}

/* Shared wizard job progress (split, extract, ÃÂ¢ÃÂÃÂ¦) */
.gc-progress-ring,
.gc-split-ring {
  --gc-ring-pct: 0;
  position: relative;
  flex: 0 0 var(--gc-space-10);
  width: var(--gc-space-10);
  height: var(--gc-space-10);
  border-radius: 50%;
  background: conic-gradient(
    var(--gc-navy-500) calc(var(--gc-ring-pct) * 1%),
    var(--gc-border-subtle) 0
  );
  transition: background var(--gc-duration-normal) var(--gc-ease);
}

.gc-progress-ring::after,
.gc-split-ring::after {
  content: '';
  position: absolute;
  inset: 18%;
  border-radius: 50%;
  background: var(--gc-surface);
}

.gc-progress-ring-lg {
  flex: 0 0 auto;
  width: calc(var(--gc-space-10) + var(--gc-space-8));
  height: calc(var(--gc-space-10) + var(--gc-space-8));
}

.gc-progress-ring-lg::after {
  inset: 14%;
}

.gc-progress-ring-label {
  position: absolute;
  inset: 0;
  z-index: var(--gc-z-front);
  display: grid;
  place-items: center;
  font-size: var(--gc-text-xl);
  font-weight: var(--gc-weight-bold);
  line-height: var(--gc-leading-tight);
  color: var(--gc-navy-700);
  font-variant-numeric: tabular-nums;
}

.gc-wizard-sync-ico,
.gc-split-sync-ico,
.gc-extract-sync-ico {
  flex: 0 0 var(--gc-icon-sm);
  width: var(--gc-icon-sm);
  height: var(--gc-icon-sm);
}

.gc-wizard-sync-ico.is-spinning,
.gc-split-sync-ico.is-spinning,
.gc-extract-sync-ico.is-spinning {
  animation: gc-spin var(--gc-duration-spin) var(--gc-ease-spin) infinite reverse;
}

.gc-wizard-pill-ico {
  width: var(--gc-icon-sm);
  height: var(--gc-icon-sm);
}

.gc-wizard-progress-stage {
  display: grid;
  gap: var(--gc-space-5);
  padding: var(--gc-space-5);
  background: var(--gc-surface);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-md);
  box-shadow: var(--gc-shadow-sm);
}

.gc-wizard-progress-hero {
  display: grid;
  gap: var(--gc-space-3);
  justify-items: center;
  text-align: center;
}

.gc-wizard-progress-title {
  margin: 0;
  font-size: var(--gc-text-xl);
  font-weight: var(--gc-weight-bold);
  line-height: var(--gc-leading-tight);
  color: var(--gc-text);
}

.gc-wizard-progress-lede {
  margin: 0;
  max-width: 36rem;
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-normal);
  color: var(--gc-text-muted);
}

.gc-wizard-progress-stack {
  display: grid;
  gap: var(--gc-space-3);
  margin: 0;
  padding: 0;
  list-style: none;
}

.gc-wizard-job-card {
  display: grid;
  gap: var(--gc-space-3);
  padding: var(--gc-space-4);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-md);
  background: var(--gc-surface);
  box-shadow: var(--gc-shadow-sm);
}

.gc-wizard-job-card.is-done {
  background: linear-gradient(90deg, var(--gc-navy-100) 0%, var(--gc-surface) 62%);
}

.gc-wizard-job-card.is-working {
  border-top: 3px solid var(--gc-navy-500);
  box-shadow: var(--gc-shadow-md);
}

.gc-wizard-job-card.is-queued,
.gc-wizard-job-card.is-pending {
  background: var(--gc-bg-subtle);
  border-color: var(--gc-border-subtle);
  box-shadow: none;
}

.gc-wizard-job-card.is-queued .gc-wizard-job-name,
.gc-wizard-job-card.is-queued .gc-wizard-job-meta,
.gc-wizard-job-card.is-pending .gc-wizard-job-name,
.gc-wizard-job-card.is-pending .gc-wizard-job-meta {
  color: var(--gc-text-muted);
}

.gc-wizard-job-row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: var(--gc-space-3);
}

.gc-wizard-job-icon {
  display: grid;
  place-items: center;
  flex: 0 0 var(--gc-space-8);
  width: var(--gc-space-8);
  height: var(--gc-space-8);
  border-radius: var(--gc-radius-sm);
}

.gc-wizard-job-icon svg {
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
}

.gc-wizard-job-icon.is-done {
  background: var(--gc-navy-100);
  color: var(--gc-navy-500);
}

.gc-wizard-job-icon.is-working {
  background: var(--gc-navy-500);
  color: var(--gc-surface);
}

.gc-wizard-job-icon.is-queued,
.gc-wizard-job-icon.is-pending {
  background: var(--gc-bg-subtle);
  color: var(--gc-text-muted);
  border: 1px solid var(--gc-border-subtle);
}

.gc-wizard-job-main {
  flex: 1 1 12rem;
  min-width: 0;
  display: grid;
  gap: var(--gc-space-1);
}

.gc-wizard-job-name {
  font-size: var(--gc-text-base);
  font-weight: var(--gc-weight-bold);
  line-height: var(--gc-leading-tight);
  color: var(--gc-text);
}

.gc-wizard-job-meta {
  margin: 0;
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-normal);
  color: var(--gc-text-muted);
}

.gc-wizard-job-status {
  flex: 0 0 auto;
  display: grid;
  gap: var(--gc-space-1);
  justify-items: end;
  margin-left: auto;
}

.gc-wizard-job-page {
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-medium);
  line-height: var(--gc-leading-normal);
  color: var(--gc-text-muted);
  font-variant-numeric: tabular-nums;
}

.gc-wizard-job-detail {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) minmax(5rem, 7rem);
  gap: var(--gc-space-3);
  align-items: center;
  padding: var(--gc-space-3);
  background: var(--gc-bg-subtle);
  border: 1px solid var(--gc-border-subtle);
  border-radius: var(--gc-radius-sm);
}

.gc-wizard-job-detail-ico {
  display: grid;
  place-items: center;
  color: var(--gc-navy-500);
}

.gc-wizard-job-detail-ico svg {
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
}

.gc-wizard-job-detail-text {
  margin: 0;
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-normal);
  color: var(--gc-text-muted);
}

.gc-wizard-job-detail-bar {
  height: var(--gc-space-2);
  overflow: hidden;
  background: var(--gc-border-subtle);
  border-radius: var(--gc-radius-sm);
}

.gc-wizard-job-detail-bar-fill {
  display: block;
  height: 100%;
  width: 0;
  background: var(--gc-navy-500);
  transition: width var(--gc-duration-normal) var(--gc-ease);
}

.gc-extract-layout.is-running {
  grid-template-columns: 1fr;
}

.gc-extract-layout.is-running .gc-extract-scope,
.gc-extract-layout.is-running .gc-extract-picker {
  display: none;
}

.gc-extract-layout.is-running .gc-extract-main {
  grid-column: 1 / -1;
}

@media (max-width: 767.98px) {
  .gc-wizard-job-detail {
    grid-template-columns: auto minmax(0, 1fr);
  }

  .gc-wizard-job-detail-bar {
    grid-column: 1 / -1;
  }
}

.gc-split-stage {
  display: grid;
  gap: var(--gc-space-4);
  padding: var(--gc-space-4);
  background: var(--gc-surface);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-md);
  box-shadow: var(--gc-shadow-sm);
}

.gc-split-head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--gc-space-4);
}

.gc-split-status {
  display: flex;
  align-items: center;
  gap: var(--gc-space-2);
  flex: 1 1 14rem;
  min-width: 0;
  margin: 0;
  font-size: var(--gc-text-base);
  font-weight: var(--gc-weight-medium);
  line-height: var(--gc-leading-normal);
  color: var(--gc-text);
}

.gc-split-sync-ico {
  flex: 0 0 var(--gc-icon-md);
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
  color: var(--gc-navy-500);
}

.gc-split-sync-ico.is-spinning {
  animation: gc-spin var(--gc-duration-spin) var(--gc-ease-spin) infinite reverse;
}

.gc-split-overall {
  display: flex;
  align-items: center;
  gap: var(--gc-space-3);
  flex: 0 0 auto;
  padding: var(--gc-space-3) var(--gc-space-4);
  background: var(--gc-navy-100);
  border: 1px solid var(--gc-border-subtle);
  border-radius: var(--gc-radius-md);
}

.gc-split-overall-copy {
  display: grid;
  gap: var(--gc-space-1);
  min-width: 0;
}

.gc-split-overall-copy .gc-label {
  color: var(--gc-navy-700);
}

.gc-split-overall-copy strong {
  font-size: var(--gc-text-lg);
  font-weight: var(--gc-weight-bold);
  color: var(--gc-text);
  line-height: var(--gc-leading-tight);
}

.gc-split-stack {
  display: grid;
  gap: var(--gc-space-3);
  margin: 0;
  padding: 0;
  list-style: none;
}

.gc-split-card {
  display: grid;
  gap: var(--gc-space-3);
  padding: var(--gc-space-4);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-md);
  background: var(--gc-surface);
  box-shadow: var(--gc-shadow-sm);
}

.gc-split-card.is-working {
  border-color: var(--gc-border-strong);
  background: linear-gradient(90deg, var(--gc-navy-100) 0%, var(--gc-surface) 58%);
}

.gc-split-card.is-pending {
  background: var(--gc-bg-subtle);
  border-color: var(--gc-border-subtle);
  box-shadow: none;
}

.gc-split-card.is-pending .gc-scan-name,
.gc-split-card.is-pending .gc-split-card-meta {
  color: var(--gc-text-muted);
}

.gc-split-card-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--gc-space-3);
}

.gc-split-card-icon {
  display: grid;
  place-items: center;
  flex: 0 0 var(--gc-space-8);
  width: var(--gc-space-8);
  height: var(--gc-space-8);
  border-radius: var(--gc-radius-sm);
}

.gc-split-card-icon svg {
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
}

.gc-split-card-icon.is-done {
  background: var(--gc-navy-100);
  color: var(--gc-navy-500);
}

.gc-split-card-icon.is-working {
  background: var(--gc-navy-500);
  color: var(--gc-surface);
}

.gc-split-card-icon.is-pending {
  background: var(--gc-bg-subtle);
  color: var(--gc-text-muted);
  border: 1px solid var(--gc-border-subtle);
}

.gc-split-card-main {
  flex: 1 1 12rem;
  min-width: 0;
  display: grid;
  gap: var(--gc-space-1);
}

.gc-split-card-meta {
  margin: 0;
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-normal);
  color: var(--gc-text-muted);
}

.gc-split-card-status {
  flex: 0 0 auto;
  margin-left: auto;
}

.gc-split-card-bar {
  position: relative;
  height: var(--gc-space-4);
  overflow: hidden;
  background: var(--gc-border-subtle);
  border-radius: var(--gc-radius-sm);
}

.gc-split-card-bar-fill {
  display: block;
  height: 100%;
  width: 0;
  background: var(--gc-navy-500);
  transition: width var(--gc-duration-normal) var(--gc-ease);
}

.gc-split-card-bar-label {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center end;
  padding-right: var(--gc-space-2);
  font-size: var(--gc-text-2xs);
  font-weight: var(--gc-weight-bold);
  color: var(--gc-navy-700);
  pointer-events: none;
}

.gc-extract-layout {
  display: grid;
  gap: var(--gc-space-4);
  grid-template-columns: minmax(12rem, 18rem) minmax(0, 1fr);
  align-items: start;
}

.gc-extract-scope {
  display: grid;
  gap: 0;
  min-width: 0;
  background: var(--gc-surface);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-md);
  box-shadow: var(--gc-shadow-sm);
  overflow: hidden;
}

.gc-extract-scope-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gc-space-3);
  padding: var(--gc-space-4);
  border-bottom: 1px solid var(--gc-border-subtle);
}

.gc-extract-scope-title {
  margin: 0;
  font-size: var(--gc-text-base);
  font-weight: var(--gc-weight-bold);
  line-height: var(--gc-leading-tight);
  color: var(--gc-text);
}

.gc-extract-scope-badge {
  display: inline-flex;
  align-items: center;
  padding: var(--gc-space-1) var(--gc-space-3);
  border-radius: var(--gc-radius-lg);
  background: var(--gc-navy-500);
  color: var(--gc-surface);
  font-size: var(--gc-text-2xs);
  font-weight: var(--gc-weight-bold);
  letter-spacing: var(--gc-tracking-label);
  text-transform: uppercase;
}

.gc-extract-scope-list {
  display: grid;
  gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
}

.gc-extract-scope-item {
  display: flex;
  align-items: flex-start;
  gap: var(--gc-space-3);
  padding: var(--gc-space-4);
  border-bottom: 1px solid var(--gc-border-subtle);
}

.gc-extract-scope-item:last-child {
  border-bottom: 0;
}

.gc-extract-scope-ico {
  display: grid;
  place-items: center;
  flex: 0 0 var(--gc-icon-lg);
  width: var(--gc-icon-lg);
  height: var(--gc-icon-lg);
  color: var(--gc-navy-500);
}

.gc-extract-scope-ico svg {
  width: 100%;
  height: 100%;
}

.gc-extract-scope-copy {
  flex: 1 1 auto;
  min-width: 0;
  display: grid;
  gap: var(--gc-space-1);
}

.gc-extract-scope-meta {
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-normal);
  color: var(--gc-text-muted);
}

.gc-extract-scope-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gc-space-3);
  padding: var(--gc-space-4);
  background: var(--gc-navy-100);
  border-top: 1px solid var(--gc-border-subtle);
}

.gc-extract-scope-foot strong {
  font-size: var(--gc-text-base);
  font-weight: var(--gc-weight-bold);
  color: var(--gc-text);
}

.gc-extract-main {
  display: grid;
  gap: var(--gc-space-4);
  min-width: 0;
}

.gc-extract-picker-title {
  margin: 0 0 var(--gc-space-3);
  font-size: var(--gc-text-base);
  font-weight: var(--gc-weight-bold);
  line-height: var(--gc-leading-tight);
  color: var(--gc-text);
}

.gc-extract-engines {
  display: grid;
  gap: var(--gc-space-3);
  margin: 0;
  padding: 0;
  border: 0;
  min-width: 0;
}

.gc-extract-engine {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: var(--gc-space-4);
  align-items: center;
  padding: var(--gc-space-4);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-md);
  background: var(--gc-surface);
  box-shadow: var(--gc-shadow-sm);
  cursor: pointer;
  transition:
    background var(--gc-duration-fast) var(--gc-ease),
    border-color var(--gc-duration-fast) var(--gc-ease),
    color var(--gc-duration-fast) var(--gc-ease);
}

.gc-extract-engine:has(input:checked) {
  border-color: var(--gc-navy-500);
  background: var(--gc-navy-500);
  color: var(--gc-surface);
  box-shadow: var(--gc-shadow-md);
}

.gc-extract-engine-icon {
  display: grid;
  place-items: center;
  flex: 0 0 var(--gc-space-8);
  width: var(--gc-space-8);
  height: var(--gc-space-8);
  border-radius: var(--gc-radius-sm);
  background: var(--gc-navy-100);
  color: var(--gc-navy-500);
}

.gc-extract-engine:has(input:checked) .gc-extract-engine-icon {
  background: color-mix(in srgb, var(--gc-surface) 18%, transparent);
  color: var(--gc-surface);
}

.gc-extract-engine-icon svg {
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
}

.gc-extract-engine-copy {
  display: grid;
  gap: var(--gc-space-1);
  min-width: 0;
}

.gc-extract-engine-title {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--gc-space-2);
  font-size: var(--gc-text-base);
  font-weight: var(--gc-weight-bold);
  line-height: var(--gc-leading-tight);
}

.gc-extract-engine-desc {
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-normal);
  color: var(--gc-text-muted);
}

.gc-extract-engine:has(input:checked) .gc-extract-engine-desc {
  color: color-mix(in srgb, var(--gc-surface) 78%, transparent);
}

.gc-extract-engine-tag {
  display: inline-flex;
  align-items: center;
  padding: var(--gc-space-1) var(--gc-space-2);
  border-radius: var(--gc-radius-lg);
  background: var(--gc-info-bg);
  color: var(--gc-navy-700);
  font-size: var(--gc-text-2xs);
  font-weight: var(--gc-weight-bold);
  letter-spacing: var(--gc-tracking-label);
  text-transform: uppercase;
}

.gc-extract-engine:has(input:checked) .gc-extract-engine-tag {
  background: color-mix(in srgb, var(--gc-surface) 22%, transparent);
  color: var(--gc-surface);
}

.gc-extract-engine .gc-cost {
  color: var(--gc-text);
  white-space: nowrap;
}

.gc-extract-engine:has(input:checked) .gc-cost {
  color: var(--gc-surface);
}

.gc-extract-confirms {
  display: grid;
  gap: var(--gc-space-3);
  margin-top: var(--gc-space-4);
}

.gc-extract-stage {
  display: grid;
  gap: var(--gc-space-4);
  padding: var(--gc-space-4);
  background: var(--gc-surface);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-md);
  box-shadow: var(--gc-shadow-sm);
}

.gc-extract-head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--gc-space-4);
}

.gc-extract-status {
  display: flex;
  align-items: center;
  gap: var(--gc-space-2);
  flex: 1 1 14rem;
  min-width: 0;
  margin: 0;
  font-size: var(--gc-text-base);
  font-weight: var(--gc-weight-medium);
  line-height: var(--gc-leading-normal);
  color: var(--gc-text);
}

.gc-extract-sync-ico {
  flex: 0 0 var(--gc-icon-md);
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
  color: var(--gc-navy-500);
}

.gc-extract-sync-ico.is-spinning {
  animation: gc-spin var(--gc-duration-spin) var(--gc-ease-spin) infinite reverse;
}

.gc-extract-overall {
  display: flex;
  align-items: center;
  gap: var(--gc-space-3);
  flex: 0 0 auto;
  padding: var(--gc-space-3) var(--gc-space-4);
  background: var(--gc-navy-100);
  border: 1px solid var(--gc-border-subtle);
  border-radius: var(--gc-radius-md);
}

.gc-extract-overall-copy {
  display: grid;
  gap: var(--gc-space-1);
  min-width: 0;
}

.gc-extract-overall-copy .gc-label {
  color: var(--gc-navy-700);
}

.gc-extract-overall-copy strong {
  font-size: var(--gc-text-lg);
  font-weight: var(--gc-weight-bold);
  color: var(--gc-text);
  line-height: var(--gc-leading-tight);
}

.gc-extract-ring {
  --gc-ring-pct: 0;
  flex: 0 0 var(--gc-space-10);
  width: var(--gc-space-10);
  height: var(--gc-space-10);
  border-radius: 50%;
  background: conic-gradient(
    var(--gc-navy-500) calc(var(--gc-ring-pct) * 1%),
    var(--gc-border-subtle) 0
  );
  position: relative;
  transition: background var(--gc-duration-normal) var(--gc-ease);
}

.gc-extract-ring::after {
  content: '';
  position: absolute;
  inset: 18%;
  border-radius: 50%;
  background: var(--gc-surface);
}

.gc-extract-stack {
  display: grid;
  gap: var(--gc-space-3);
  margin: 0;
  padding: 0;
  list-style: none;
}

.gc-extract-card {
  display: grid;
  gap: var(--gc-space-3);
  padding: var(--gc-space-4);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-md);
  background: var(--gc-surface);
  box-shadow: var(--gc-shadow-sm);
}

.gc-extract-card.is-working {
  border-color: var(--gc-border-strong);
  background: linear-gradient(90deg, var(--gc-navy-100) 0%, var(--gc-surface) 58%);
}

.gc-extract-card.is-pending {
  background: var(--gc-bg-subtle);
  border-color: var(--gc-border-subtle);
  box-shadow: none;
}

.gc-extract-card.is-pending .gc-scan-name,
.gc-extract-card.is-pending .gc-extract-card-meta {
  color: var(--gc-text-muted);
}

.gc-extract-card-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--gc-space-3);
}

.gc-extract-card-icon {
  display: grid;
  place-items: center;
  flex: 0 0 var(--gc-space-8);
  width: var(--gc-space-8);
  height: var(--gc-space-8);
  border-radius: var(--gc-radius-sm);
}

.gc-extract-card-icon svg {
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
}

.gc-extract-card-icon.is-done {
  background: var(--gc-navy-100);
  color: var(--gc-navy-500);
}

.gc-extract-card-icon.is-working {
  background: var(--gc-navy-500);
  color: var(--gc-surface);
}

.gc-extract-card-icon.is-pending {
  background: var(--gc-bg-subtle);
  color: var(--gc-text-muted);
  border: 1px solid var(--gc-border-subtle);
}

.gc-extract-card-main {
  flex: 1 1 12rem;
  min-width: 0;
  display: grid;
  gap: var(--gc-space-1);
}

.gc-extract-card-meta {
  margin: 0;
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-normal);
  color: var(--gc-text-muted);
}

.gc-extract-card-status {
  flex: 0 0 auto;
  margin-left: auto;
}

.gc-extract-card-bar {
  position: relative;
  height: var(--gc-space-4);
  overflow: hidden;
  background: var(--gc-border-subtle);
  border-radius: var(--gc-radius-sm);
}

.gc-extract-card-bar-fill {
  display: block;
  height: 100%;
  width: 0;
  background: var(--gc-navy-500);
  transition: width var(--gc-duration-normal) var(--gc-ease);
}

.gc-extract-card-bar-label {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center end;
  padding-right: var(--gc-space-2);
  font-size: var(--gc-text-2xs);
  font-weight: var(--gc-weight-bold);
  color: var(--gc-navy-700);
  pointer-events: none;
}

@media (max-width: 767.98px) {
  .gc-extract-layout {
    grid-template-columns: 1fr;
  }
}

.gc-meter {
  margin: 0 0 var(--gc-space-4);
}

.gc-meter-caption {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: var(--gc-space-2);
  margin: 0 0 var(--gc-space-2);
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
}

.gc-meter-track {
  display: flex;
  width: 100%;
  height: var(--gc-space-3);
  overflow: hidden;
  background: var(--gc-bg-subtle);
  border: 1px solid var(--gc-border);
}

.gc-meter-used,
.gc-meter-deleted {
  display: block;
  height: 100%;
  width: 0;
}

.gc-meter-used {
  background: var(--gc-chart-1);
}

.gc-meter-deleted {
  background: var(--gc-warning);
}

.ai-ctl-ds-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--gc-space-4);
}

@media (min-width: 1024px) {
  .ai-ctl-ds-grid {
    grid-template-columns: 1fr 1fr;
  }
}

.ai-ctl-ds-copy {
  margin: 0 0 var(--gc-space-2);
  color: var(--gc-text-muted);
}

.ai-ctl-ds-list {
  display: grid;
  gap: var(--gc-space-2);
}

.ai-ctl-ds-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: var(--gc-space-2);
}

.ai-ctl-ds-label {
  font-weight: var(--gc-weight-semibold);
}

.ai-ctl-ds-status {
  display: inline-flex;
  align-items: center;
  gap: var(--gc-space-2);
}

.ai-ctl-ds-dot {
  width: var(--gc-space-2);
  height: var(--gc-space-2);
  border-radius: 50%;
  background: var(--gc-text-muted);
}

.ai-ctl-ds-status.is-ok .ai-ctl-ds-dot { background: var(--gc-success); }
.ai-ctl-ds-status.is-error .ai-ctl-ds-dot { background: var(--gc-danger); }

.ai-ctl-ds-status-text {
  font-weight: var(--gc-weight-semibold);
}

.ai-ctl-ds-refresh {
  min-width: var(--gc-control-min-height);
  padding-inline: var(--gc-space-2);
}

.ai-ctl-ds-refresh-ico {
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
}

.ai-ctl-ds-checked {
  display: block;
  color: var(--gc-text-muted);
  font-size: var(--gc-text-2xs);
}

.ai-ctl-ds-results {
  min-height: 0;
  padding: var(--gc-space-3);
  border: 1px dashed var(--gc-border-strong);
}

.gc-log {
  margin: var(--gc-space-3) 0 0;
  padding: var(--gc-space-3);
  max-height: 18rem;
  overflow: auto;
  border: 1px solid var(--gc-border-strong);
  border-radius: var(--gc-radius-sm);
  background: var(--gc-surface);
  color: var(--gc-text);
  font-family: var(--gc-font-mono);
  font-size: var(--gc-text-2xs);
  line-height: var(--gc-leading-normal);
  white-space: pre-wrap;
  word-break: break-word;
}

@media (max-width: 639.98px) {
  .gc-log {
    max-height: 14rem;
  }
}

.ai-ctl-uptime {
  margin-left: auto;
}

.ai-ctl .ai-ctl-uptime .health-bar-label,
.ai-ctl .ai-ctl-uptime .health-bar-value {
  font-size: var(--gc-text-base);
  font-weight: var(--gc-weight-normal);
  letter-spacing: var(--gc-tracking-normal);
  line-height: var(--gc-leading-normal);
}

.ai-ctl .ai-ctl-uptime .health-bar-value {
  font-variant-numeric: tabular-nums;
}

@media (max-width: 639.98px) {
  .health-bar,
  .portal-status-strip,
  .ai-ctl .health-bar {
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
  }

  .ai-ctl-uptime {
    margin-left: 0;
  }
}

.ai-ctl-default {
  display: grid;
  gap: var(--gc-space-3);
  max-width: 100%;
  margin: 0 0 var(--gc-space-5);
}

.ai-ctl-models .chart-card-title {
  margin-bottom: var(--gc-space-4);
}

.ai-ctl-default select {
  width: 100%;
}

.ai-ctl-provider-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--gc-space-6);
}

@media (min-width: 1024px) {
  .ai-ctl-provider-grid {
    grid-template-columns: 1fr 1fr;
  }
}

.ai-ctl-xai-actions {
  display: flex;
  justify-content: flex-end;
  margin-top: var(--gc-space-5);
}

.yardi-cfg {
  margin-top: var(--gc-space-5);
  padding-top: var(--gc-space-5);
  border-top: 1px dashed var(--gc-border);
}

.yardi-cfg-title {
  margin: 0 0 var(--gc-space-2);
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-semibold);
  color: var(--gc-text);
}

.yardi-cfg-field {
  margin-bottom: var(--gc-space-4);
}

.yardi-cfg-field .gc-label {
  display: block;
  margin-bottom: var(--gc-space-1);
}

.yardi-cfg-input-row {
  display: flex;
  align-items: stretch;
  gap: var(--gc-space-2);
}

.yardi-cfg-input {
  flex: 1 1 auto;
  min-width: 0;
}

/* Locked by default ÃÂ¢ÃÂÃÂ beat #main-content input white background */
#main-content .yardi-cfg-field:not(.is-editing) .yardi-cfg-input {
  background: var(--gc-bg-subtle);
  color: var(--gc-text-muted);
  border-color: var(--gc-border);
  cursor: default;
}

#main-content .yardi-cfg-field:not(.is-editing) .yardi-cfg-input:focus {
  border-color: var(--gc-border);
  outline: none;
  box-shadow: none;
}

#main-content .yardi-cfg-field.is-editing .yardi-cfg-input {
  background: var(--gc-surface);
  color: var(--gc-text);
  border-color: var(--gc-border-strong);
  cursor: text;
}

.yardi-cfg-edit {
  flex: 0 0 auto;
  align-self: stretch;
  min-width: var(--gc-control-min-height);
  padding-inline: var(--gc-space-2);
}

.yardi-cfg-edit-ico {
  width: 1rem;
  height: 1rem;
}

.yardi-cfg-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gc-space-2);
  margin-top: var(--gc-space-2);
}

.yardi-cfg-field.is-editing .yardi-cfg-edit {
  visibility: hidden;
}

.settings-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gc-space-3);
  align-items: center;
  margin-bottom: var(--gc-space-4);
}

.settings-search {
  flex: 1 1 220px;
  min-width: 0;
  /* Sizing comes from global #main-content form control rules */
}

.settings-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: var(--gc-space-5);
}

@media (max-width: 960px) {
  .chart-grid {
    grid-template-columns: 1fr;
  }

  .settings-layout {
    grid-template-columns: 1fr;
  }
}

.user-detail {
  background: var(--gc-bg-subtle);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-md);
  padding: var(--gc-space-5);
  min-height: 200px;
  align-self: start;
}

.user-detail-title {
  margin: 0 0 var(--gc-space-3);
  font-size: 1.05rem;
  color: var(--gc-navy-500);
}

.user-detail-empty {
  margin: 0;
  color: var(--gc-text-muted);
}

.user-groups-list {
  margin: 0;
  padding-left: var(--gc-space-5);
}

.user-groups-list li {
  margin: 0 0 var(--gc-space-2);
}

.user-groups-list li:last-child {
  margin-bottom: 0;
}

.kv-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.92rem;
}

.kv-table th,
.kv-table td {
  text-align: left;
  padding: 8px 0;
  border-bottom: 1px solid var(--gc-border);
  vertical-align: top;
}

.kv-table th {
  width: 38%;
  color: var(--gc-text-muted);
  font-weight: 600;
  padding-right: var(--gc-space-3);
}

/* Data tables */
.data-table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.data-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.95rem;
}

.data-table th,
.data-table td {
  text-align: left;
  padding: 10px 14px;
  border-bottom: 1px solid var(--gc-border);
}

.data-table th {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--gc-text-muted);
  background: var(--gc-bg-subtle);
  font-weight: 600;
}

.data-table tbody tr {
  cursor: pointer;
}

.data-table tbody tr:hover {
  background: var(--gc-navy-50);
}

.data-table tbody tr.is-selected {
  background: var(--gc-navy-50);
}

.data-table tbody tr:focus-visible {
  outline: 2px solid var(--gc-focus-ring);
  outline-offset: -2px;
}

.table-loading {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--gc-space-2);
  padding: var(--gc-space-6);
  text-align: center;
  color: var(--gc-text-muted);
}

.table-empty {
  padding: var(--gc-space-6);
  text-align: center;
  color: var(--gc-text-muted);
  font-weight: var(--gc-weight-normal);
}

[data-home-dashboard] {
  display: grid;
  gap: var(--gc-space-5);
}

.dashboard-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--gc-space-3);
  margin-bottom: var(--gc-space-5);
}

.dashboard-header h2 {
  margin: 0;
  color: var(--gc-navy-500);
  font-size: 1.1rem;
}

/* ---- Labels, IDs, Tabulator chrome ---- */

.gc-label {
  font-size: var(--gc-text-2xs);
  font-weight: var(--gc-weight-semibold);
  letter-spacing: var(--gc-tracking-label);
  line-height: var(--gc-leading-tight);
  text-transform: uppercase;
  color: var(--gc-text-muted);
  white-space: nowrap;
}

.gc-id {
  color: var(--gc-text-muted);
  font-variant-numeric: tabular-nums;
}

.gc-table-host.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-normal);
  letter-spacing: var(--gc-tracking-label);
  line-height: var(--gc-leading-tight);
  text-transform: uppercase;
  color: var(--gc-text-muted);
  white-space: normal;
  overflow: visible;
  text-overflow: unset;
}

.gc-id-pill {
  display: inline-block;
  padding: var(--gc-space-1) var(--gc-space-2);
  font-family: var(--gc-font-mono);
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-semibold);
  line-height: var(--gc-leading-tight);
  color: var(--gc-text-muted);
  background: var(--gc-bg-subtle);
  border-radius: var(--gc-radius-sm);
}

.gc-status-chip {
  display: inline-block;
  padding: var(--gc-space-1) var(--gc-space-2);
  font-size: var(--gc-text-2xs);
  font-weight: var(--gc-weight-semibold);
  line-height: var(--gc-leading-tight);
  border-radius: var(--gc-radius-sm);
  color: var(--gc-text);
  background: var(--gc-bg-subtle);
}

.gc-status-chip.is-ok {
  color: var(--gc-success);
  background: var(--gc-success-bg);
}

.gc-status-chip.is-bad {
  color: var(--gc-danger);
  background: var(--gc-danger-bg);
}

.gc-status-chip.is-pending {
  color: var(--gc-warning);
  background: var(--gc-warning-bg);
}

.gc-table-stack {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-1);
  min-width: 0;
}

.gc-table-doc-cell {
  display: flex;
  align-items: center;
  gap: var(--gc-doc-cell-gap);
  min-width: 0;
}

.gc-table-doc-cell .gc-file-ico,
.gc-table-doc-cell .gc-file-ico svg {
  width: calc(var(--gc-icon-md) + 4px);
  height: calc(var(--gc-icon-md) + 4px);
}

.gc-table-stack-primary {
  min-width: 0;
  font-weight: var(--gc-weight-normal);
  color: var(--gc-text);
}

/* Table hyperlinks are table text ÃÂ¢ÃÂÃÂ not navy/blue. Always underline so the
   click target is obvious; colour stays --gc-text. Outside .gc-table-host,
   links stay --gc-link. */
.gc-table-host a {
  color: var(--gc-text);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.gc-table-host a:hover,
.gc-table-host a:focus-visible {
  color: var(--gc-text);
  text-decoration: underline;
}

.gc-location-chips {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--gc-space-2);
  min-width: 0;
}

.gc-table-stack-secondary,
.gc-table-id-link {
  font-size: var(--gc-text-2xs);
  color: var(--gc-text);
}

.gc-table-id-link {
  color: var(--gc-link);
  text-decoration: underline;
  font-family: var(--gc-font-mono);
  overflow-wrap: anywhere;
  cursor: pointer;
}

.ai-ctl-request-pre {
  margin: 0;
  padding: var(--gc-space-3);
  max-height: calc(var(--gc-space-12) * 4);
  overflow: auto;
  white-space: pre;
  font-family: var(--gc-font-mono);
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-tight);
  color: var(--gc-text);
  background: var(--gc-bg-subtle);
  border: 1px solid var(--gc-border);
}

.ai-ctl-tools-form {
  display: grid;
  gap: var(--gc-space-4);
  max-width: 100%;
}

.ai-ctl-tools-form .form-row {
  width: 100%;
}

.ai-ctl-tools-form select,
.ai-ctl-tools-form textarea {
  width: 100%;
}

.ai-ctl-tools-form textarea {
  min-height: calc(var(--gc-control-min-height) * 4);
}

.ai-ctl-tools-form textarea[data-ai-tools-evidence] {
  min-height: calc(var(--gc-control-min-height) * 8);
}

[data-ai-tools-result] {
  margin-top: var(--gc-space-4);
  max-height: calc(var(--gc-space-12) * 12);
}

.gc-table-desc {
  display: inline-flex;
  align-items: center;
  gap: var(--gc-space-2);
  min-width: 0;
  max-width: 100%;
}

.gc-table-desc-cell {
  max-width: none;
}

.gc-table-desc-ico {
  flex: 0 0 auto;
  width: var(--gc-icon-sm);
  height: var(--gc-icon-sm);
  color: var(--gc-text-muted);
}

.gc-table-desc-text {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Document file-type icon ÃÂ¢ÃÂÃÂ Font Awesome Free solid glyphs via layout sprite.
   No background chip; type colour is on the glyph only. */
.gc-file-ico {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
  color: var(--gc-navy-500);
}

.gc-file-ico svg {
  display: block;
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
}

.gc-file-ico.is-pdf {
  color: var(--gc-danger);
}

.gc-file-ico.is-excel,
.gc-file-ico.is-sheet {
  color: var(--gc-success);
}

.gc-file-ico.is-csv {
  color: var(--gc-file-csv);
}

.gc-file-ico.is-powerpoint,
.gc-file-ico.is-slides {
  color: var(--gc-warning);
}

.gc-file-ico.is-word {
  color: var(--gc-navy-500);
}

.gc-file-ico.is-archive {
  color: var(--gc-neutral-700);
}

.gc-table-blank {
  color: var(--gc-text-muted);
}

.gc-table-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--gc-space-3);
  margin-bottom: var(--gc-space-4);
}

.gc-table-toolbar-start {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--gc-space-3);
}

.gc-table-toolbar-actions {
  align-items: center;
  justify-content: flex-start;
  gap: var(--gc-space-3);
}

.gc-table-page-size-wrap {
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
}

.gc-table-toolbar-end {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: var(--gc-space-3);
  margin-left: auto;
}

.gc-table-search-host {
  flex: 0 1 auto;
  width: var(--gc-search-width);
  max-width: 100%;
}

.gc-table-search-wrap {
  position: relative;
  display: flex;
  align-items: center;
  width: var(--gc-search-width);
  max-width: 100%;
}

.gc-table-search-ico {
  position: absolute;
  left: var(--gc-space-3);
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
  color: var(--gc-text-muted);
  pointer-events: none;
}

#main-content input.gc-table-search:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]):not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="image"]):not([type="range"]):not([type="color"]) {
  width: var(--gc-search-width);
  max-width: 100%;
  min-height: var(--gc-space-10);
  padding: var(--gc-space-2) var(--gc-control-padding-x) var(--gc-space-2) var(--gc-space-10);
  font-size: var(--gc-control-font-size);
  border: 1px solid var(--gc-border-strong);
  box-shadow: none;
  appearance: none;
}

#main-content select.gc-table-page-size {
  width: auto;
  min-height: var(--gc-space-10);
  padding: var(--gc-space-2) var(--gc-space-3);
  font-size: var(--gc-control-font-size);
  border: 1px solid var(--gc-border-strong);
}

#main-content.page-wrap {
  width: 100%;
  max-width: none;
}

.gc-table-host {
  width: 100%;
  max-width: 100%;
}

iframe.gc-frame-preview {
  display: block;
  width: 100%;
  min-height: 70vh;
  border: 1px solid var(--gc-border);
}

.gc-table-host.tabulator {
  width: 100%;
  max-width: 100%;
  font-family: inherit;
  font-size: var(--gc-table-font-size);
  font-weight: var(--gc-weight-normal);
  line-height: var(--gc-leading-normal);
  color: var(--gc-text);
  background: var(--gc-surface);
  border: 1px solid var(--gc-border-strong);
  box-shadow: none;
  transform: none;
}

.gc-table-host.tabulator .tabulator-header {
  width: 100%;
  background: var(--gc-bg-subtle);
  border-bottom: 1px solid var(--gc-border-strong);
  color: var(--gc-text);
  font-weight: var(--gc-weight-semibold);
  box-shadow: none;
  white-space: normal;
}

.gc-table-host.tabulator .tabulator-header .tabulator-headers,
.gc-table-host.tabulator .tabulator-header-contents,
.gc-table-host.tabulator .tabulator-tableholder,
.gc-table-host.tabulator .tabulator-table {
  width: 100%;
  min-width: 100%;
}

.gc-table-host.tabulator .tabulator-header .tabulator-col,
.gc-table-host.tabulator .tabulator-tableholder .tabulator-row .tabulator-cell {
  background: transparent;
  border-right: 1px solid var(--gc-border-strong);
  min-height: var(--gc-table-row-height);
  overflow: visible;
}

.gc-table-host.tabulator .tabulator-header .tabulator-col .tabulator-col-content,
.gc-table-host.tabulator .tabulator-row .tabulator-cell {
  padding: var(--gc-table-cell-padding-y) var(--gc-table-cell-padding-x);
  font-size: var(--gc-table-font-size);
  line-height: var(--gc-leading-normal);
  overflow: visible;
}

/* The header is chrome, so it comes off --gc-table-chrome-height while the
   body rows above stay on --gc-table-row-height. The PADDING is what sizes
   this box: 12 + 25.5 + 12 already exceeds the min-height, so min-height
   never binds and changing it alone does nothing. Move the padding. */
.gc-table-host.tabulator .tabulator-header .tabulator-col {
  min-height: var(--gc-table-chrome-height);
}

.gc-table-host.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
  padding-top: calc(var(--gc-table-cell-padding-y) - 1px);
  padding-bottom: calc(var(--gc-table-cell-padding-y) - 1px);
}

.gc-table-host.tabulator .tabulator-col .tabulator-arrow {
  border-bottom-color: var(--gc-text-muted);
  border-top-color: var(--gc-text-muted);
}

.gc-table-host.tabulator .tabulator-col.tabulator-sortable:hover .tabulator-arrow,
.gc-table-host.tabulator .tabulator-col[aria-sort="ascending"] .tabulator-arrow,
.gc-table-host.tabulator .tabulator-col[aria-sort="descending"] .tabulator-arrow {
  border-bottom-color: var(--gc-text);
  border-top-color: var(--gc-text);
}

.gc-table-host .tabulator-col-resize-handle {
  background: transparent;
}

.gc-table-host.tabulator .tabulator-row {
  min-height: var(--gc-table-row-height);
  background: var(--gc-surface);
  border-bottom: 1px solid var(--gc-border-subtle);
}

/* No zebra striping ÃÂ¢ÃÂÃÂ even rows match odd. Vendor tabulator.min.css sets
   .tabulator-row-even to #efefef; the unlayered escape at the end of this
   file is what actually wins the cascade. Keep this rule for clarity. */
.gc-table-host.tabulator .tabulator-row.tabulator-row-even {
  background: var(--gc-surface);
}

/* Same hover as .data-table / Assets: --gc-navy-50, not navy-100. */
.gc-table-host.tabulator .tabulator-row:hover {
  background: var(--gc-navy-50);
}

.gc-table-host.tabulator .tabulator-row.tabulator-selected {
  background: var(--gc-navy-50);
}

.gc-table-host.tabulator .tabulator-cell.gc-table-select {
  text-align: center;
}

.gc-table-host.tabulator .tabulator-cell.gc-table-select input[type="checkbox"] {
  width: var(--gc-space-5);
  height: var(--gc-space-5);
}

.gc-table-host.tabulator .tabulator-cell {
  min-height: var(--gc-table-row-height);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--gc-table-font-size);
  font-weight: inherit;
  color: var(--gc-text);
  vertical-align: middle;
}

.gc-table-host.tabulator .tabulator-cell.gc-table-wrap {
  white-space: normal;
  overflow: visible;
  text-overflow: unset;
}

.gc-table-host.tabulator .tabulator-cell.gc-table-wrap .gc-table-desc-text {
  white-space: normal;
  overflow: visible;
  text-overflow: unset;
}

.gc-table-host.tabulator .tabulator-cell.gc-table-actions-cell {
  overflow: visible;
  white-space: nowrap;
  text-overflow: clip;
}

.gc-table-actions-cell .yardi-report-actions {
  display: inline-flex;
  flex-wrap: nowrap;
  justify-content: center;
  align-items: center;
  width: max-content;
  margin-inline: auto;
}

.gc-table-host.tabulator .tabulator-tableholder,
.gc-table-host.tabulator .tabulator-calcs-holder {
  background: var(--gc-surface);
}

.gc-table-host.tabulator .tabulator-footer {
  width: 100%;
  background: var(--gc-bg-subtle);
  border-top: 1px solid var(--gc-border-strong);
  color: var(--gc-text);
  font-size: var(--gc-text-base);
  font-weight: var(--gc-weight-normal);
  white-space: normal;
  /* Centres a 32px pager inside the same 47.5px band as the header:
     (47.5 - 32) / 2 = 7.75px. Derived, not typed, so the two bands cannot
     drift apart when either token moves. */
  padding: calc((var(--gc-table-chrome-height) - var(--gc-control-min-height-dense)) / 2)
           var(--gc-table-cell-padding-x);
}

.gc-table-host.tabulator .tabulator-footer .tabulator-footer-contents {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--gc-space-3);
  width: 100%;
  /* The dense floor, because the pager inside it is already the 32px dense
     box. The 44px compact floor was reserving height for a control that no
     longer exists, which is what made the footer 18.5px taller than the
     header. The tap target is unchanged: .tabulator-page::after still
     projects it back out to 44px. */
  min-height: var(--gc-control-min-height-dense);
  padding: 0;
}

/* The row count is secondary text reporting on the grid, not part of it, so
   this is the sanctioned round DOWN: 17px -> 15px. It sets the footer's
   weight, and the pager matches it. */
.gc-table-host.tabulator .tabulator-footer .tabulator-page-counter {
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-normal);
  line-height: var(--gc-leading-normal);
  flex: 1 1 auto;
}

.gc-table-host.tabulator .tabulator-footer .tabulator-page-counter span span:nth-child(2),
.gc-table-host.tabulator .tabulator-footer .tabulator-page-counter span span:nth-child(4) {
  font-weight: var(--gc-weight-semibold);
  color: var(--gc-text);
}

.gc-table-pager-ico {
  width: var(--gc-icon-sm);
  height: var(--gc-icon-sm);
  color: inherit;
}

.gc-table-pager-ico.is-prev {
  transform: rotate(90deg);
}

.gc-table-pager-ico.is-next {
  transform: rotate(-90deg);
}

.gc-table-host.tabulator .tabulator-footer .tabulator-paginator {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  /* 12px, not 8px: each button's hit area grows 6px per side, so a smaller
     gap would make neighbouring targets overlap and the wrong page would
     load from a near-miss tap. */
  gap: var(--gc-space-3);
  flex: 0 0 auto;
  margin: 0;
  color: var(--gc-text);
  text-align: right;
}

.gc-table-host.tabulator .tabulator-footer .tabulator-pages {
  display: inline-flex !important;
  align-items: center;
  gap: var(--gc-space-1);
  margin: 0;
}

/* Pager buttons are a repeating row of single glyphs. The DRAWN box is 32px;
   the TAP TARGET is still 44px, extended by the ::after below. Padding alone
   changes nothing here ÃÂ¢ÃÂÃÂ min-width is what sizes a one-character button, so
   the box has to come down with it. Weight matches the counter: the footer
   is one voice. */
.gc-table-host.tabulator .tabulator-footer .tabulator-page {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: var(--gc-control-min-height-dense);
  min-height: var(--gc-control-min-height-dense);
  margin: 0;
  padding: 0 var(--gc-space-1);
  color: var(--gc-text);
  background: var(--gc-surface);
  border: 1px solid var(--gc-border-strong);
  border-radius: var(--gc-radius-sm);
  font-size: var(--gc-text-base);
  font-weight: var(--gc-weight-normal);
  line-height: var(--gc-leading-tight);
}

/* Draws nothing. It restores the 44px tap target the 32px box gave up, so
   the control shrank visually and not for a thumb. Never give this a
   background or a border, and never delete it to "clean up" the rule ÃÂ¢ÃÂÃÂ it
   is the reason the smaller pager is allowed to exist. */
.gc-table-host.tabulator .tabulator-footer .tabulator-page::after {
  content: '';
  position: absolute;
  inset: calc((var(--gc-control-min-height-compact) - var(--gc-control-min-height-dense)) / -2);
}

.gc-table-host.tabulator .tabulator-footer .tabulator-page.active {
  color: var(--gc-text);
  background: var(--gc-surface);
  border-color: var(--gc-border-strong);
}

.gc-table-host.tabulator .tabulator-footer .tabulator-page.disabled,
.gc-table-host.tabulator .tabulator-footer .tabulator-page[disabled] {
  color: var(--gc-text-muted);
  background: var(--gc-surface);
  border-color: var(--gc-border);
  cursor: default;
  opacity: 1;
}

@media (hover: hover) and (pointer: fine) {
  .gc-table-host.tabulator .tabulator-footer .tabulator-page:hover {
    color: var(--gc-text);
    background: var(--gc-navy-100);
  }

  .gc-table-host.tabulator .tabulator-footer .tabulator-page.active:hover {
    color: var(--gc-text);
    background: var(--gc-navy-100);
  }

  .gc-table-host.tabulator .tabulator-footer .tabulator-page[disabled]:hover {
    color: var(--gc-text-muted);
    background: var(--gc-surface);
  }
}

.gc-table-host.tabulator .tabulator-footer .tabulator-page[data-page="first"],
.gc-table-host.tabulator .tabulator-footer .tabulator-page[data-page="last"] {
  display: none;
}

.gc-kv {
  display: grid;
  gap: var(--gc-space-3);
  margin: 0;
}

.gc-kv > div {
  display: grid;
  gap: var(--gc-space-1);
}

/* Label left, value right ÃÂ¢ÃÂÃÂ same type size, label semibold. Stacked .gc-kv
   stays the drawer/detail default. */
.gc-kv-cols > div {
  grid-template-columns: minmax(7rem, 11rem) minmax(0, 1fr);
  column-gap: var(--gc-space-5);
  row-gap: 0;
  align-items: baseline;
}

.gc-kv-cols dt {
  color: var(--gc-text);
  font-size: var(--gc-text-base);
}

.gc-kv-cols dd {
  font-size: var(--gc-text-base);
}

.gc-kv dt {
  margin: 0;
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-semibold);
}

.gc-kv dd {
  margin: 0;
  color: var(--gc-text);
  overflow-wrap: anywhere;
}

.gc-table-name {
  display: inline-flex;
  align-items: center;
  gap: var(--gc-space-3);
  min-width: 0;
  width: 100%;
}

.gc-table-name-text {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.gc-table-icon-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--gc-control-min-height);
  height: var(--gc-control-min-height);
  min-width: var(--gc-control-min-height);
  min-height: var(--gc-control-min-height);
  padding: 0;
  border: 0;
  border-radius: var(--gc-radius-sm);
  background: transparent;
  color: var(--gc-text);
  cursor: pointer;
}

.gc-table-icon-btn--dense {
  width: var(--gc-control-min-height-dense);
  height: var(--gc-control-min-height-dense);
  min-width: var(--gc-control-min-height-dense);
  min-height: var(--gc-control-min-height-dense);
}

.gc-table-icon-btn svg {
  width: var(--gc-table-action-icon-size);
  height: var(--gc-table-action-icon-size);
  display: block;
  fill: currentColor;
  color: inherit;
}

/* Keep icon-button footprint stable: hide the glyph, center spinner in the same box. */
.gc-table-icon-btn.is-pending {
  cursor: wait;
  color: var(--gc-text-muted);
}

.gc-table-icon-btn.is-pending > svg {
  visibility: hidden;
}

.gc-table-icon-btn.is-pending > .gc-spinner {
  position: absolute;
  inset: 0;
  margin: auto;
  width: var(--gc-table-action-icon-size);
  height: var(--gc-table-action-icon-size);
  border-width: 2px;
}

.gc-table-icon-btn:hover:not(:disabled) {
  color: var(--gc-link);
}

.gc-table-icon-btn:focus-visible {
  outline: var(--gc-focus-ring-width) solid var(--gc-focus-ring);
  outline-offset: var(--gc-focus-ring-offset);
}

.gc-table-icon-btn[aria-pressed="true"] {
  background: var(--gc-navy-50);
}

/* Vendor Tabulator sets .tabulator-placeholder .tabulator-placeholder-contents
   to font-weight 700 + 20px ÃÂ¢ÃÂÃÂ beat that chain, keep empty copy at body weight. */
.gc-table-host .tabulator-placeholder .tabulator-placeholder-contents {
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-normal);
  padding: var(--gc-space-6);
}

.gc-table-host .tabulator-responsive-collapse {
  padding: var(--gc-space-3);
  border-bottom: 1px solid var(--gc-border);
  background: var(--gc-bg-subtle);
  color: var(--gc-text);
  font-size: var(--gc-text-sm);
  white-space: normal;
}

.gc-table-host .tabulator-responsive-collapse-toggle {
  color: var(--gc-text-muted);
}

@media (min-width: 768px) {
  .gc-table-host .tabulator-col.gc-table-collapse,
  .gc-table-host .tabulator-cell.gc-table-collapse {
    display: none;
    width: 0;
    min-width: 0;
    padding: 0;
    border: none;
    overflow: hidden;
  }
}

.tabulator-edit-list,
.tabulator-popup-container {
  background: var(--gc-surface);
  border: 1px solid var(--gc-border);
  box-shadow: none;
  color: var(--gc-text);
  font-size: var(--gc-text-sm);
}

.gc-record-form {
  margin-top: var(--gc-space-4);
  padding: var(--gc-space-4);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-lg);
  background: var(--gc-surface);
}

.gc-record-form-title {
  margin: 0 0 var(--gc-space-4);
  font-size: var(--gc-text-lg);
  font-weight: var(--gc-weight-semibold);
  line-height: var(--gc-leading-tight);
  color: var(--gc-navy-500);
}

.gc-record-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 var(--gc-space-4);
}

.gc-record-span {
  grid-column: 1 / -1;
}

.gc-record-form .form-row {
  display: grid;
  gap: var(--gc-space-1);
  margin-bottom: var(--gc-space-4);
}

.gc-record-form .form-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gc-space-3);
}

.gc-drawer-root {
  position: fixed;
  inset: 0;
  z-index: var(--gc-z-dialog);
  pointer-events: none;
}

.gc-drawer-root.is-open {
  pointer-events: auto;
}

.gc-drawer-overlay {
  position: absolute;
  inset: 0;
  z-index: var(--gc-z-back);
  border: 0;
  padding: 0;
  margin: 0;
  background: var(--gc-overlay-bg);
  cursor: pointer;
  opacity: 0;
  transition: opacity var(--gc-duration-normal) var(--gc-ease);
}

.gc-drawer-root.is-open .gc-drawer-overlay {
  opacity: 1;
}

.gc-drawer {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: var(--gc-z-front);
  display: flex;
  flex-direction: column;
  width: var(--gc-drawer-width);
  max-width: 100%;
  background: var(--gc-surface);
  border-left: 1px solid var(--gc-border-strong);
  box-shadow: var(--gc-shadow-lg);
  transform: translateX(100%);
  transition: transform var(--gc-duration-normal) var(--gc-ease);
}

.gc-drawer.is-wide {
  width: var(--gc-drawer-width-wide);
}

.gc-drawer-root.is-open .gc-drawer {
  transform: translateX(0);
}

.gc-drawer-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gc-space-3);
  flex-shrink: 0;
  padding: var(--gc-space-5) var(--gc-space-6);
  border-bottom: 1px solid var(--gc-border);
}

.gc-drawer-title {
  margin: 0;
  font-size: var(--gc-text-xl);
  font-weight: var(--gc-weight-bold);
  line-height: var(--gc-leading-tight);
  color: var(--gc-text);
}

.gc-drawer-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--gc-space-10);
  height: var(--gc-space-10);
  padding: 0;
  border: 0;
  border-radius: var(--gc-radius-sm);
  background: transparent;
  color: var(--gc-text-muted);
  cursor: pointer;
}

.gc-drawer-close svg {
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
  display: block;
}

.gc-drawer-body {
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
}

.gc-drawer-form {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
}

.gc-drawer-scroll {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  padding: var(--gc-space-6);
}

.gc-drawer-status {
  display: flex;
  align-items: center;
  gap: var(--gc-space-2);
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
}

.gc-drawer-section + .gc-drawer-section {
  margin-top: var(--gc-space-6);
  padding-top: var(--gc-space-6);
  border-top: 1px solid var(--gc-border);
}

.gc-drawer-section-title {
  margin: 0 0 var(--gc-space-4);
  font-size: var(--gc-text-2xs);
  font-weight: var(--gc-weight-semibold);
  letter-spacing: var(--gc-tracking-label);
  line-height: var(--gc-leading-tight);
  text-transform: uppercase;
  color: var(--gc-text-muted);
}

.gc-drawer .form-row,
.gc-drawer-form .form-row {
  display: grid;
  gap: var(--gc-space-1);
  margin-bottom: var(--gc-space-4);
  width: 100%;
}

.gc-drawer .form-row label,
.gc-drawer-form .form-row label,
.gc-drawer .gc-meta-label {
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-semibold);
  color: var(--gc-text);
}

.gc-meta-value {
  margin: 0;
  color: var(--gc-text);
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-normal);
  overflow-wrap: anywhere;
}

.gc-meta-value-break {
  word-break: break-word;
}

.gc-wizard-file-meta {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--gc-space-2);
}

.gc-wizard-file-meta .gc-drawer-section {
  min-width: 0;
}

.gc-drawer-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: var(--gc-space-3);
  flex-shrink: 0;
  padding: var(--gc-space-4) var(--gc-space-6);
  border-top: 1px solid var(--gc-border);
  background: var(--gc-surface);
}

body.gc-drawer-open {
  overflow: hidden;
}

@media (prefers-reduced-motion: reduce) {
  .gc-drawer,
  .gc-drawer-overlay {
    transition: none;
  }
}

@media (max-width: 639.98px) {
  .gc-drawer {
    width: 100%;
  }
}

@media (max-width: 639.98px) {
  .gc-table-toolbar {
    flex-direction: column;
    align-items: stretch;
  }

  .gc-table-toolbar-start,
  .gc-table-toolbar-end {
    margin-left: 0;
    width: 100%;
  }

  .gc-table-search-host {
    width: 100%;
  }

  #main-content input.gc-table-search:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="hidden"]):not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="image"]):not([type="range"]):not([type="color"]) {
    width: 100%;
    max-width: none;
  }
}

@media (max-width: 767.98px) {
  .gc-table-host.tabulator .tabulator-footer .tabulator-footer-contents {
    flex-direction: column;
    align-items: stretch;
  }

  .gc-table-host.tabulator .tabulator-footer .tabulator-paginator {
    justify-content: flex-start;
  }

  .gc-record-grid {
    grid-template-columns: 1fr;
  }

  .chart-grid {
    grid-template-columns: 1fr;
  }
}

.gc-section-title {
  margin: 0 0 var(--gc-space-2);
  font-family: var(--gc-font-display);
  font-size: var(--gc-text-xl);
  font-weight: var(--gc-weight-semibold);
  line-height: var(--gc-leading-tight);
  color: var(--gc-text);
}

.gc-feed-panel {
  background: var(--gc-surface);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-card);
  box-shadow: var(--gc-shadow-sm);
  padding: var(--gc-space-5);
  margin-bottom: var(--gc-space-6);
}

.gc-feed {
  list-style: none;
  margin: 0;
  padding: 0;
}

.gc-feed-item + .gc-feed-item {
  border-top: 1px solid var(--gc-border-subtle);
}

.gc-feed-link {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: var(--gc-space-1);
  min-height: var(--gc-control-min-height);
  padding: var(--gc-space-3) 0;
  color: inherit;
  text-decoration: none;
}

a.gc-feed-link:hover .gc-feed-title,
a.gc-feed-link:focus-visible .gc-feed-title {
  color: var(--gc-link);
}

.gc-feed-title {
  font-size: var(--gc-text-base);
  font-weight: var(--gc-weight-semibold);
  line-height: var(--gc-leading-tight);
  color: var(--gc-text);
}

.gc-feed-meta,
.gc-feed-when,
.gc-feed-empty {
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-normal);
  color: var(--gc-text-muted);
}

.gc-feed-empty {
  padding: var(--gc-space-4) 0;
}

.gc-feed--rows .gc-feed-item + .gc-feed-item {
  border-top: 1px solid var(--gc-border-subtle);
}

.gc-feed--rows .gc-feed-link {
  flex-direction: row;
  align-items: center;
  gap: var(--gc-space-4);
  min-height: 0;
  padding: var(--gc-space-4) var(--gc-space-2);
}

.gc-feed--rows .gc-feed-link:hover,
.gc-feed--rows .gc-feed-link:focus-visible {
  background: var(--gc-bg-subtle);
}

.gc-feed--rows .gc-feed-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: var(--gc-radius-sm);
  background: var(--gc-bg-subtle);
  color: var(--gc-navy-500);
}

.gc-feed--rows .gc-feed-icon svg {
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
}

.gc-feed--rows .gc-feed-icon.is-pdf {
  background: color-mix(in srgb, var(--gc-danger) 12%, var(--gc-surface));
  color: var(--gc-danger);
}

.gc-feed--rows .gc-feed-icon.is-sheet {
  background: color-mix(in srgb, var(--gc-success) 12%, var(--gc-surface));
  color: var(--gc-success);
}

.gc-feed--rows .gc-feed-icon.is-slides {
  background: color-mix(in srgb, var(--gc-warning) 12%, var(--gc-surface));
  color: var(--gc-warning);
}

.gc-feed--rows .gc-feed-body {
  flex: 1;
  min-width: 0;
}

.gc-feed--rows .gc-feed-aside {
  flex-shrink: 0;
  text-align: right;
}

.gc-feed--rows .gc-feed-title {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.gc-feed--rows .gc-feed-meta {
  display: flex;
  align-items: center;
  gap: var(--gc-space-1);
  margin-top: var(--gc-space-1);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--gc-neutral-700);
}

.gc-feed--rows .gc-feed-meta-ico {
  width: var(--gc-icon-sm);
  height: var(--gc-icon-sm);
  flex-shrink: 0;
  color: var(--gc-neutral-700);
}

.gc-feed--rows .gc-feed-when {
  font-weight: var(--gc-weight-medium);
  color: var(--gc-text);
}

.gc-feed--rows .gc-feed-stamp {
  margin-top: var(--gc-space-1);
  font-size: var(--gc-text-xs);
  font-variant-numeric: tabular-nums;
  color: var(--gc-neutral-700);
}

.gc-activity-table {
  overflow: hidden;
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-md);
  background: var(--gc-surface);
  box-shadow: var(--gc-shadow-sm);
}

.gc-activity-table-head,
.gc-activity-row {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr);
  gap: var(--gc-space-4);
  align-items: center;
  padding: var(--gc-space-3) var(--gc-space-6);
}

.gc-activity-table-head {
  border-bottom: 1px solid var(--gc-border-subtle);
  background: var(--gc-bg-subtle);
  font-size: var(--gc-text-2xs);
  font-weight: var(--gc-weight-semibold);
  letter-spacing: var(--gc-tracking-label);
  text-transform: uppercase;
  color: var(--gc-neutral-700);
}

.gc-activity-row + .gc-activity-row {
  border-top: 1px solid var(--gc-border-subtle);
}

.gc-activity-row:hover {
  background: var(--gc-bg-subtle);
}

a.gc-activity-row {
  color: inherit;
  text-decoration: none;
}

a.gc-activity-row:hover .gc-activity-doc-title {
  color: var(--gc-navy-500);
}

.gc-activity-doc {
  display: flex;
  align-items: flex-start;
  gap: var(--gc-space-3);
  min-width: 0;
}

.gc-activity-doc .gc-feed-icon {
  margin-top: var(--gc-space-1);
}

.gc-activity-doc-ico {
  flex-shrink: 0;
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
  margin-top: var(--gc-space-1);
  color: var(--gc-navy-500);
}

.gc-activity-location.is-onedrive {
  background: color-mix(in srgb, var(--gc-info) 12%, var(--gc-surface));
  color: var(--gc-info);
}

.gc-activity-location.is-library {
  background: color-mix(in srgb, var(--gc-warning) 12%, var(--gc-surface));
  color: var(--gc-warning);
}

.gc-activity-doc-title {
  font-size: var(--gc-text-base);
  font-weight: var(--gc-weight-semibold);
  line-height: var(--gc-leading-tight);
  color: var(--gc-text);
}

.gc-activity-doc-sub {
  margin-top: var(--gc-space-1);
  font-size: var(--gc-text-sm);
  color: var(--gc-neutral-700);
}

.gc-activity-location {
  display: inline-block;
  max-width: 100%;
  padding: var(--gc-space-1) var(--gc-space-2);
  border-radius: var(--gc-radius-sm);
  background: color-mix(in srgb, var(--gc-navy-500) 10%, var(--gc-surface));
  color: var(--gc-navy-500);
  font-size: var(--gc-text-2xs);
  font-weight: var(--gc-weight-semibold);
  letter-spacing: var(--gc-tracking-label);
  text-transform: uppercase;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.gc-activity-when {
  text-align: right;
}

.gc-activity-when-rel {
  font-size: var(--gc-text-base);
  font-weight: var(--gc-weight-medium);
  color: var(--gc-text);
}

.gc-activity-when-stamp {
  margin-top: var(--gc-space-1);
  font-size: var(--gc-text-sm);
  font-variant-numeric: tabular-nums;
  color: var(--gc-neutral-700);
}

@media (max-width: 767.98px) {
  .gc-activity-table-head {
    display: none;
  }

  .gc-activity-row {
    grid-template-columns: 1fr;
    gap: var(--gc-space-2);
  }

  .gc-activity-when {
    text-align: left;
  }
}

.gc-wizard-nav {
  margin-bottom: var(--gc-space-5);
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
}

.gc-wizard-nav-list {
  display: flex;
  flex-wrap: nowrap;
  align-items: flex-start;
  list-style: none;
  margin: 0;
  padding: 0;
  min-width: min-content;
}

.gc-wizard-nav-list > li {
  display: grid;
  grid-template-columns: auto minmax(var(--gc-space-3), 1fr);
  grid-template-rows: var(--gc-control-min-height) auto;
  align-items: center;
  flex: 1 1 0;
  min-width: calc(var(--gc-space-12) * 2);
}

.gc-wizard-nav-list > li:last-child {
  flex: 0 0 auto;
  grid-template-columns: auto;
}

.gc-wizard-nav-item {
  appearance: none;
  grid-column: 1;
  grid-row: 1 / 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--gc-space-2);
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--gc-text-muted);
  font-family: inherit;
  font-size: var(--gc-text-xs);
  font-weight: var(--gc-weight-semibold);
  line-height: var(--gc-leading-tight);
  cursor: pointer;
}

.gc-wizard-nav-item:hover,
.gc-wizard-nav-item:focus-visible {
  color: var(--gc-link);
}

.gc-wizard-nav-item[aria-current="step"] {
  color: var(--gc-text);
}

.gc-wizard-nav-item:disabled {
  cursor: not-allowed;
}

.gc-wizard-nav-index {
  box-sizing: border-box;
  display: grid;
  place-items: center;
  width: var(--gc-control-min-height);
  height: var(--gc-control-min-height);
  border: 1px solid var(--gc-border-strong);
  border-radius: 50%;
  background: var(--gc-navy-100);
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
  font-variant-numeric: tabular-nums;
}

.gc-wizard-nav-item[aria-current="step"] .gc-wizard-nav-index {
  border-color: var(--gc-navy-800);
  background: var(--gc-navy-800);
  color: var(--gc-text-inverse);
}

.gc-wizard-nav-item:disabled .gc-wizard-nav-index {
  background: var(--gc-navy-100);
  color: var(--gc-text-muted);
}

.gc-wizard-nav-label {
  max-width: calc(var(--gc-space-12) * 2);
  text-align: center;
  text-transform: uppercase;
}

.gc-wizard-nav-rule {
  grid-column: 2;
  grid-row: 1;
  align-self: center;
  height: 1px;
  min-width: var(--gc-space-3);
  margin: 0;
  background: var(--gc-border);
}

.gc-wizard-nav-list > li:last-child .gc-wizard-nav-rule {
  display: none;
}

.gc-wizard-step {
  display: grid;
  gap: var(--gc-space-5);
  margin-bottom: var(--gc-space-6);
  padding: var(--gc-space-6);
  background: var(--gc-surface);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-lg);
  box-shadow: var(--gc-shadow-sm);
}

.gc-wizard-asset {
  display: grid;
  gap: var(--gc-space-2);
  max-width: min(100%, 36rem);
}

.gc-wizard-property-card {
  padding: 0;
  border-left: var(--gc-space-1) solid var(--gc-navy-800);
  overflow: visible;
}

.gc-wizard-property-body {
  display: grid;
  gap: var(--gc-space-3);
  padding: var(--gc-space-6);
}

.gc-wizard-field-kicker {
  margin: 0;
  font-size: var(--gc-text-2xs);
  font-weight: var(--gc-weight-bold);
  letter-spacing: var(--gc-tracking-label);
  text-transform: uppercase;
  color: var(--gc-navy-800);
}

.gc-wizard-property-card .gc-wizard-actions {
  padding: var(--gc-space-4) var(--gc-space-6);
}

.gc-combobox {
  position: relative;
}

.gc-select-field {
  display: flex;
  align-items: center;
  gap: var(--gc-space-3);
  min-height: var(--gc-control-min-height);
  padding: 0 var(--gc-space-3);
  background: var(--gc-navy-50);
  border: 1px solid var(--gc-border-strong);
  border-radius: var(--gc-radius-sm);
}

.gc-select-field-ico,
.gc-select-field-toggle svg {
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
  flex: 0 0 auto;
  color: var(--gc-navy-800);
}

.gc-select-field .gc-combobox-input {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--gc-text);
  font: inherit;
  min-height: var(--gc-control-min-height);
}

.gc-select-field .gc-combobox-input:focus {
  outline: none;
  box-shadow: none;
}

.gc-select-field:focus-within {
  border-color: var(--gc-navy-800);
}

.gc-select-field-toggle {
  appearance: none;
  display: inline-grid;
  place-items: center;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--gc-navy-800);
  cursor: pointer;
  min-width: var(--gc-icon-lg);
  min-height: var(--gc-control-min-height);
}

.gc-select-field.is-open .gc-select-field-toggle svg {
  transform: rotate(180deg);
}

.gc-combobox-list {
  position: absolute;
  z-index: var(--gc-z-dropdown);
  top: calc(100% + var(--gc-space-1));
  left: 0;
  right: 0;
  max-height: calc(var(--gc-space-12) * 4);
  margin: 0;
  padding: var(--gc-space-1);
  overflow: auto;
  list-style: none;
  background: var(--gc-surface);
  border: 1px solid var(--gc-border-strong);
  border-radius: var(--gc-radius-sm);
  box-shadow: var(--gc-shadow-md);
}

.gc-combobox-option {
  display: block;
  width: 100%;
  padding: var(--gc-space-3);
  border: 0;
  border-radius: var(--gc-radius-sm);
  background: transparent;
  color: var(--gc-text);
  text-align: left;
  cursor: pointer;
}

.gc-combobox-option:hover,
.gc-combobox-option.is-active {
  background: var(--gc-navy-50);
  color: var(--gc-navy-800);
}

.gc-combobox-option[aria-selected="true"] {
  font-weight: var(--gc-weight-semibold);
}

.gc-combobox-empty {
  padding: var(--gc-space-3);
  color: var(--gc-text-muted);
}

.gc-wizard-asset-combobox {
  width: 100%;
}

.gc-wizard-asset-combobox .gc-combobox-input {
  background: var(--gc-navy-50);
}

.gc-wizard-step-head {
  display: grid;
  gap: var(--gc-space-2);
}

.gc-wizard-step-title {
  margin: 0;
  font-size: var(--gc-text-xl);
  font-weight: var(--gc-weight-bold);
  line-height: var(--gc-leading-tight);
  color: var(--gc-text);
}

.gc-wizard-step-lede {
  margin: 0;
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
}

.gc-wizard-doc-switch {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gc-space-2);
  margin-block-end: var(--gc-space-4);
}

.gc-wizard-doc-switch[hidden] {
  display: none;
}

.gc-wizard-reprocess {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--gc-space-3);
  min-height: var(--gc-control-min-height);
  margin: var(--gc-space-4) 0 0;
  font-size: var(--gc-text-sm);
  color: var(--gc-text);
}

.gc-wizard-path {
  display: grid;
  gap: var(--gc-space-2);
  padding: var(--gc-space-4);
  background: var(--gc-navy-50);
  border-radius: var(--gc-radius-sm);
}

.gc-wizard-path-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--gc-space-3);
  padding: var(--gc-space-3) var(--gc-space-4);
  background: var(--gc-surface);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-sm);
}

.gc-wizard-path-icon {
  display: inline-flex;
  flex-shrink: 0;
  color: var(--gc-navy-800);
}

.gc-wizard-path-icon svg {
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
}

.gc-wizard-path-text {
  flex: 1 1 12rem;
  min-width: 0;
  margin: 0;
  color: var(--gc-text);
  word-break: break-word;
}

.gc-wizard-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: center;
  gap: var(--gc-space-3);
  width: 100%;
  padding-top: var(--gc-space-5);
  border-top: 1px solid var(--gc-border);
}

.gc-wizard-actions [data-wizard-back],
.gc-wizard-actions [data-wizard-reset] {
  margin-right: auto;
}

.gc-wizard-actions .gc-btn {
  width: auto;
  justify-self: end;
}

.gc-wizard-methods {
  display: grid;
  gap: var(--gc-space-1);
  margin: 0;
  min-width: 0;
  width: min(100%, 40rem);
  border: 0;
  padding: 0;
}

.gc-method-head,
.gc-method-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--gc-space-3);
  align-items: center;
}

.gc-method-head {
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-semibold);
  color: var(--gc-text-muted);
}

.gc-method-head > :last-child {
  text-align: end;
}

.gc-method-row {
  margin: 0;
  min-height: var(--gc-control-min-height);
  cursor: pointer;
}

.gc-method-choice {
  display: flex;
  align-items: center;
  gap: var(--gc-space-3);
  min-width: 0;
}

.gc-wizard-step .check-row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: var(--gc-space-3);
  margin: 0;
  min-height: var(--gc-control-min-height);
}

.gc-cost {
  margin: 0;
  font-size: var(--gc-text-lg);
  font-weight: var(--gc-weight-semibold);
  line-height: var(--gc-leading-tight);
  color: var(--gc-success);
  text-align: end;
  font-variant-numeric: tabular-nums;
}

.gc-cost-frac {
  font-size: var(--gc-text-2xs);
  font-weight: inherit;
  vertical-align: super;
  line-height: var(--gc-leading-tight);
}

.gc-cost.is-negative {
  color: var(--gc-danger);
}

.gc-file-name {
  display: flex;
  align-items: center;
  gap: var(--gc-space-2);
  min-width: 0;
}

.gc-file-open {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  min-width: var(--gc-control-min-height-compact);
  min-height: var(--gc-control-min-height-compact);
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--gc-link);
  cursor: pointer;
}

.gc-file-open:disabled {
  color: var(--gc-text-muted);
  cursor: not-allowed;
}

.gc-file-open-ico {
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
}

.gc-split-page-list {
  display: grid;
  gap: var(--gc-space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.gc-page-thumbs {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(var(--gc-thumb-min), 1fr));
  gap: var(--gc-space-3);
  margin: var(--gc-space-4) 0 0;
  padding: 0;
  list-style: none;
}

.gc-page-thumb {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-2);
  min-height: var(--gc-control-min-height-compact);
  padding: var(--gc-space-2);
  border: 1px solid var(--gc-border-strong);
  border-radius: var(--gc-radius-md);
  background: var(--gc-surface);
  color: var(--gc-text);
  text-decoration: none;
}

.gc-page-thumb:hover,
.gc-page-thumb:focus-visible {
  color: var(--gc-link);
}

.gc-page-thumb img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--gc-radius-sm);
  background: var(--gc-bg-subtle);
}

.gc-page-thumb-label {
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-medium);
  line-height: var(--gc-leading-normal);
}

.gc-extract-page,
.gc-extract-text {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-2);
  width: 100%;
  scroll-margin-block: var(--gc-space-3);
  padding: var(--gc-space-3);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-md);
  background: var(--gc-surface);
}

.gc-extract-page.is-active,
.gc-extract-text.is-active {
  border-color: var(--gc-border-strong);
  box-shadow: var(--gc-shadow-sm);
}

.gc-extract-page-label {
  margin: 0;
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-semibold);
  line-height: var(--gc-leading-tight);
  color: var(--gc-text-muted);
}

.gc-extract-texts {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-4);
  min-height: 100%;
  padding: var(--gc-space-3);
}

.gc-extract-text-body {
  margin: 0;
  max-height: none;
  overflow: visible;
  white-space: pre-wrap;
  font-family: var(--gc-font-mono);
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-normal);
  color: var(--gc-text);
}

.extraction-pdf-pages:has(.gc-extract-page) {
  align-items: stretch;
}

.extraction-codemirror:has(.gc-extract-texts) {
  height: auto;
}

.gc-wizard-result {
  margin: 0;
  padding: var(--gc-space-3);
  background: var(--gc-bg-subtle);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius);
  font-size: var(--gc-text-sm);
  overflow: auto;
  max-height: calc(var(--gc-space-12) * 5);
  white-space: pre-wrap;
}

.gc-cache-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--gc-space-3);
  min-height: var(--gc-control-min-height);
  padding-block: var(--gc-space-2);
  border-block: 1px solid var(--gc-border);
}

.gc-cache-ttl {
  display: flex;
  align-items: center;
  gap: var(--gc-space-2);
  margin: 0;
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
}

.gc-cache-ttl strong {
  color: var(--gc-text);
  font-weight: var(--gc-weight-semibold);
}

.gc-cache-ico {
  width: var(--gc-icon-sm);
  height: var(--gc-icon-sm);
  flex: 0 0 var(--gc-icon-sm);
}

.gc-cache-rebuild {
  display: grid;
  place-items: center;
  width: var(--gc-control-min-height);
  height: var(--gc-control-min-height);
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--gc-text);
  cursor: pointer;
}

.gc-cache-rebuild svg {
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
}

.gc-cache-rebuild:hover,
.gc-cache-rebuild:focus-visible {
  color: var(--gc-link);
}

.gc-cache-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: var(--gc-space-2);
  margin: 0;
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-normal);
  text-align: right;
}

.gc-cache-meta strong {
  color: var(--gc-text);
  font-weight: var(--gc-weight-semibold);
}

.gc-cache-meta-sep {
  color: var(--gc-text-muted);
}

.gc-cache-rebuild-link {
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--gc-link);
  font: inherit;
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-normal);
  text-decoration: underline;
  cursor: pointer;
  min-height: var(--gc-control-min-height);
}

.gc-cache-rebuild-link:hover,
.gc-cache-rebuild-link:focus-visible {
  color: var(--gc-link-hover);
}

.gc-extract-review {
  display: flex;
  flex-direction: column;
  min-height: 0;
  max-height: none;
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-md);
  background: var(--gc-surface);
  overflow: visible;
}

.extraction-view:has(.gc-extract-review) .extraction-mobile-tabs {
  display: none;
  margin-bottom: var(--gc-space-3);
  gap: var(--gc-space-1);
}

.gc-extract-review-head {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--gc-space-4);
  padding: var(--gc-space-3) var(--gc-space-4);
  border-bottom: 1px solid var(--gc-border);
  background: var(--gc-bg-subtle);
}

.gc-extract-review-colhead {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gc-space-3);
  min-width: 0;
}

.gc-extract-review-colhead h3 {
  margin: 0;
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-semibold);
  line-height: var(--gc-leading-tight);
}

.gc-extract-review-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--gc-space-3);
  width: 100%;
  min-width: 0;
}

.gc-extract-review-filename,
.gc-extract-review-text-title {
  margin: 0;
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-semibold);
  line-height: var(--gc-leading-tight);
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.gc-extract-page-indicator {
  font-size: var(--gc-text-sm);
  color: var(--gc-text-muted);
  white-space: nowrap;
}

.gc-extract-confidence {
  display: inline-flex;
  align-items: center;
  gap: var(--gc-space-2);
  padding: var(--gc-space-1) var(--gc-space-3);
  border-radius: var(--gc-radius-pill);
  font-size: var(--gc-text-xs);
  font-weight: var(--gc-weight-medium);
  white-space: nowrap;
}

.gc-extract-confidence::before {
  content: '';
  width: 0.5rem;
  height: 0.5rem;
  border-radius: 50%;
  background: currentColor;
}

.gc-extract-confidence.is-high {
  color: var(--gc-success);
  background: var(--gc-success-bg);
}

.gc-extract-confidence.is-medium {
  color: var(--gc-warning);
  background: var(--gc-warning-bg);
}

.gc-extract-confidence.is-low {
  color: var(--gc-danger);
  background: var(--gc-danger-bg);
}

.gc-extract-review-shell .gc-extract-page-label {
  display: none;
}

.gc-extract-review-shell .gc-extract-text-body {
  font-family: var(--gc-font-mono);
  line-height: var(--gc-leading-relaxed);
}

.gc-extract-review-shell .gc-extract-review-body {
  min-height: 0;
  max-height: none;
  overflow: visible;
}

.gc-extract-pair-text .gc-extract-text-body {
  margin: 0;
  padding: var(--gc-space-4);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-md);
  background: var(--gc-surface);
  font-family: var(--gc-font-mono);
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-relaxed);
  white-space: pre-wrap;
  word-break: break-word;
}

.gc-text-editor {
  position: relative;
  min-height: 280px;
}

.gc-text-editor-mirror,
.gc-text-editor-input {
  box-sizing: border-box;
  width: 100%;
  margin: 0;
  padding: var(--gc-space-4);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-md);
  background: var(--gc-surface);
  font-family: var(--gc-font-mono);
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-relaxed);
  white-space: pre-wrap;
  word-break: break-word;
  overflow: hidden;
}

.gc-text-editor-mirror {
  position: absolute;
  inset: 0;
  pointer-events: none;
  color: var(--gc-text);
}

.gc-text-editor-input {
  position: relative;
  z-index: var(--gc-z-front);
  resize: none;
  min-height: 280px;
  color: transparent;
  caret-color: var(--gc-text);
  background: transparent;
}

#main-content textarea.gc-text-editor-input,
.gc-drawer textarea.gc-text-editor-input {
  resize: none;
  overflow: hidden;
  min-height: 280px;
}

.gc-text-editor-input:focus {
  outline: 2px solid var(--gc-focus-ring);
  outline-offset: 2px;
}

.gc-text-add {
  background: var(--gc-info-bg);
  color: inherit;
  border-radius: var(--gc-radius-sm);
}

.gc-extract-review-body {
  position: relative;
  flex: 1;
  min-height: 0;
  overflow: visible;
  padding: var(--gc-space-4);
  background: var(--gc-bg-subtle);
}

.gc-extract-page-nav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--gc-space-3);
  margin: 0 0 var(--gc-space-4);
}

.gc-extract-page-jump {
  display: inline-flex;
  align-items: center;
  gap: var(--gc-space-2);
  color: var(--gc-text);
  font-size: var(--gc-text-sm);
}

.gc-extract-page-jump input[type="number"] {
  width: 5rem;
  min-height: var(--gc-control-min-height-compact);
  text-align: center;
}

.gc-extract-pairs {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-5);
}

.gc-extract-pair {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: var(--gc-space-4);
  align-items: start;
}

.gc-extract-pair-pdf,
.gc-extract-pair-text {
  min-width: 0;
}

.gc-extract-pair-pdf {
  overflow: hidden;
}

.gc-extract-pair-pdf .extraction-pdf-page {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  background: var(--gc-surface);
  box-shadow: var(--gc-shadow-sm);
}

/* Previews stay column-bound; zoom may widen upgraded canvases past the column. */
.gc-extract-pair-pdf .extraction-pdf-page.is-preview {
  max-width: 100%;
}

.gc-extract-pair.is-active .gc-extract-pair-pdf,
.gc-extract-pair.is-active .gc-extract-pair-text {
  border-color: var(--gc-border-strong);
  box-shadow: var(--gc-shadow-sm);
}

@media (max-width: 767.98px) {
  .extraction-view:has(.gc-extract-review) .extraction-mobile-tabs {
    display: flex;
  }

  .gc-extract-review-head {
    grid-template-columns: 1fr;
  }

  .gc-extract-pair {
    grid-template-columns: 1fr;
  }

  .gc-extract-review.is-pdf-only .gc-extract-review-colhead[data-extract-colhead="text"],
  .gc-extract-review.is-pdf-only .gc-extract-pair-text {
    display: none;
  }

  .gc-extract-review.is-text-only .gc-extract-review-colhead[data-extract-colhead="pdf"],
  .gc-extract-review.is-text-only .gc-extract-pair-pdf {
    display: none;
  }

  .gc-table-toolbar:has([data-wizard-select-search-host]) {
    flex-direction: column;
    align-items: stretch;
  }

  .gc-table-toolbar:has([data-wizard-select-search-host]) .gc-table-toolbar-end {
    justify-content: flex-start;
  }

  .gc-cache-meta {
    justify-content: flex-start;
    text-align: left;
  }
}

.gc-scan-stage {
  display: grid;
  gap: var(--gc-space-3);
  padding: var(--gc-space-4);
  background: var(--gc-surface);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-md);
  box-shadow: var(--gc-shadow-sm);
}

.gc-scan-stage-label {
  margin: 0;
  font-size: var(--gc-text-base);
  font-weight: var(--gc-weight-medium);
  line-height: var(--gc-leading-normal);
  color: var(--gc-text);
}

.gc-scan-stage-label.is-ok {
  color: var(--gc-success);
}

.gc-scan-stage-label.is-warn {
  color: var(--gc-warning);
}

.gc-scan-stage-label.is-bad {
  color: var(--gc-danger);
}

.gc-scan-panel {
  padding: var(--gc-space-4);
  background: var(--gc-bg-subtle);
  border: 1px solid var(--gc-border-subtle);
  border-radius: var(--gc-radius-sm);
}

.gc-scan-bar {
  height: var(--gc-space-2);
  overflow: hidden;
  background: var(--gc-border-subtle);
  border-radius: var(--gc-radius-sm);
}

.gc-scan-bar-fill {
  display: block;
  height: 100%;
  width: 0;
  background: var(--gc-navy-500);
  transition: width var(--gc-duration-normal) var(--gc-ease);
}

.gc-scan-item-main {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--gc-space-3);
}

.gc-scan-file-ico {
  display: grid;
  place-items: center;
  width: var(--gc-icon-lg);
  height: var(--gc-icon-lg);
  flex: 0 0 var(--gc-icon-lg);
  color: var(--gc-text-muted);
}

.gc-scan-file-ico svg {
  width: 100%;
  height: 100%;
}

.gc-scan-item-copy {
  flex: 1 1 12rem;
  min-width: 0;
  display: grid;
  gap: var(--gc-space-1);
}

.gc-scan-pill {
  display: inline-flex;
  align-items: center;
  gap: var(--gc-space-2);
  margin-left: auto;
  padding: var(--gc-space-1) var(--gc-space-3);
  border-radius: var(--gc-radius-lg);
  background: var(--gc-info-bg);
  color: var(--gc-navy-700);
  font-size: var(--gc-text-2xs);
  font-weight: var(--gc-weight-bold);
  letter-spacing: var(--gc-tracking-label);
  text-transform: uppercase;
}

.gc-scan-pill.is-ok {
  background: var(--gc-success-bg);
  color: var(--gc-success);
}

.gc-scan-pill.is-bad {
  background: var(--gc-danger-bg);
  color: var(--gc-danger);
}

.gc-scan-pill.is-busy {
  background: var(--gc-navy-100);
  color: var(--gc-navy-700);
}

.gc-scan-pill.is-waiting {
  background: var(--gc-surface);
  border: 1px solid var(--gc-border);
  color: var(--gc-text-muted);
}

.gc-scan-pill-dot {
  width: var(--gc-space-2);
  height: var(--gc-space-2);
  border-radius: 50%;
  background: var(--gc-navy-500);
}

.gc-scan-item.is-scanning {
  border-left: var(--gc-space-1) solid var(--gc-navy-800);
}

.gc-scan-list {
  display: grid;
  gap: var(--gc-space-3);
  margin: 0;
  padding: 0;
  list-style: none;
}

.gc-scan-item {
  display: grid;
  gap: var(--gc-space-1);
  padding: var(--gc-space-4);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-sm);
  background: var(--gc-surface);
  box-shadow: var(--gc-shadow-sm);
}

.gc-wizard-actions-inline {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gc-space-2);
  margin: 0 0 var(--gc-space-3);
}

.gc-scan-item.is-queued {
  background: var(--gc-surface);
  border-color: var(--gc-border-subtle);
  box-shadow: none;
}

.gc-scan-item.is-scanning {
  background: var(--gc-surface);
  border-color: var(--gc-border-strong);
}

.gc-scan-item.is-clean {
  background: var(--gc-success-bg);
  border-color: var(--gc-border);
  box-shadow: none;
}

.gc-scan-progress-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--gc-space-2);
}

.gc-scan-item.is-infected,
.gc-scan-item.is-error {
  background: var(--gc-danger-bg);
  border-color: var(--gc-danger);
}

.gc-scan-item-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--gc-space-2);
}

button.gc-scan-item-head {
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
  min-height: var(--gc-control-min-height);
  font: inherit;
  color: inherit;
}

.gc-scan-item.is-current {
  outline: var(--gc-focus-ring-width) solid var(--gc-border-strong);
  outline-offset: var(--gc-focus-ring-offset);
}

.gc-scan-name {
  font-size: var(--gc-text-base);
  font-weight: var(--gc-weight-semibold);
  line-height: var(--gc-leading-tight);
  color: var(--gc-text);
  overflow-wrap: anywhere;
}

.gc-scan-meta,
.gc-scan-detail {
  margin: 0;
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-normal);
  color: var(--gc-text-muted);
}

.gc-scan-advanced summary {
  display: flex;
  align-items: center;
  min-height: var(--gc-control-min-height);
  cursor: pointer;
  color: var(--gc-link);
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-semibold);
}

.gc-scan-advanced .gc-wizard-result {
  margin-top: var(--gc-space-2);
}

.gc-tree-host {
  flex: 1;
  min-height: calc(var(--gc-control-min-height) * 6);
  max-height: calc(var(--gc-space-12) * 12);
  margin: 0 var(--gc-space-4) var(--gc-space-3);
  overflow: auto;
  --wb-font-stack: inherit;
  --wb-node-text-color: var(--gc-text);
  --wb-border-color: var(--gc-border);
  --wb-background-color: var(--gc-surface);
  --wb-hover-color: transparent;
  --wb-hover-border-color: transparent;
  --wb-active-color: transparent;
  --wb-active-hover-color: transparent;
  --wb-active-border-color: transparent;
  --wb-active-hover-border-color: transparent;
  --wb-active-cell-color: transparent;
  --wb-active-color-grayscale: transparent;
  --wb-active-border-color-grayscale: transparent;
  --wb-active-hover-color-grayscale: transparent;
  --wb-focus-border-color: var(--gc-focus-ring-edge);
  --wb-col-padding-x: var(--gc-space-2);
  --wb-icon-outer-height: var(--gc-icon-md);
  --wb-icon-outer-width: var(--gc-icon-md);
  --wb-icon-height: var(--gc-icon-sm);
  --wb-icon-width: var(--gc-icon-sm);
  --wb-icon-padding-y: calc((var(--gc-icon-md) - var(--gc-icon-sm)) / 2);
  --wb-icon-padding-x: calc((var(--gc-icon-md) - var(--gc-icon-sm)) / 2);
  --wb-error-color: var(--gc-danger);
  --wb-error-background-color: var(--gc-danger-bg);
}

.gc-tree-host .wunderbaum {
  height: 100%;
  min-height: inherit;
  font-family: inherit;
  font-size: var(--gc-text-base);
  color: var(--gc-text);
  border: 1px solid var(--gc-border-strong);
  border-radius: var(--gc-radius-sm);
}

.gc-tree-host .wunderbaum:focus,
.gc-tree-host .wunderbaum:focus-within {
  border-color: var(--gc-focus-ring-edge);
  outline: var(--gc-focus-ring-width) solid var(--gc-focus-ring);
  outline-offset: var(--gc-focus-ring-offset);
}

.gc-tree-host .wb-row,
.gc-tree-host .wb-node {
  color: var(--gc-text);
  font-size: var(--gc-text-base);
}

.gc-tree-host .wunderbaum div.wb-node-list div.wb-row.wb-focus:not(.wb-active) {
  border-style: solid;
  border-color: transparent;
}

.gc-tree-host .wunderbaum div.wb-node-list div.wb-row.wb-active,
.gc-tree-host .wunderbaum div.wb-node-list div.wb-row.wb-selected,
.gc-tree-host .wunderbaum div.wb-node-list div.wb-row.wb-active:hover,
.gc-tree-host .wunderbaum div.wb-node-list div.wb-row.wb-selected:hover {
  background: transparent;
  border-color: transparent;
}

@media (hover: hover) and (pointer: fine) {
  .gc-tree-host .wunderbaum div.wb-node-list div.wb-row:hover:not(.wb-active):not(.wb-selected) {
    background: transparent;
    border-color: transparent;
  }
}

.gc-tree-host i.wb-expander {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: var(--gc-icon-md);
  min-height: var(--gc-icon-md);
  cursor: pointer;
}

.gc-tree-host i.wb-expander.gc-tree-expander-collapsed::before {
  content: "ÃÂ¢ÃÂÃÂ¸";
  color: var(--gc-text);
  font-style: normal;
  line-height: var(--gc-leading-tight);
  font-size: var(--gc-text-lg);
}

.gc-tree-host i.wb-expander.gc-tree-expander-expanded::before {
  content: "ÃÂ¢ÃÂÃÂ¾";
}

.gc-tree-host i.wb-expander.gc-tree-expander-loading {
  border: 2px solid var(--gc-navy-200);
  border-top-color: var(--gc-navy-500);
  border-radius: 50%;
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
  min-height: var(--gc-icon-md);
  animation: gc-spin var(--gc-duration-spin) var(--gc-ease-spin) infinite;
}

.gc-tree-host i.wb-expander.gc-tree-expander-loading::before,
.gc-tree-host i.wb-expander.wb-indent::before {
  content: none;
}

.gc-table-name-link {
  color: var(--gc-link);
  cursor: pointer;
  text-decoration: underline;
}

.gc-table-row-link {
  color: var(--gc-text);
  cursor: pointer;
  text-decoration: underline;
}

@media (max-width: 639.98px) {
  .gc-tree-host {
    min-height: calc(var(--gc-control-min-height) * 4);
  }
}

.ai-ctl-model {
  overflow-wrap: anywhere;
  font-size: var(--gc-text-lg);
}
}

@layer pages {
/* ---- Feature islands ---- */
.lease-property-bar {
  display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1rem;
    flex-wrap: wrap;
}
.assets-toolbar {
  display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
}
.asset-id-badge {
  display: inline-block;
    min-width: 3.25rem;
    padding: 0.35rem 0.65rem;
    font-family: var(--gc-font-mono);
    font-size: 0.9rem;
    font-weight: 600;
    line-height: 1.2;
    text-align: center;
    border: 1px solid transparent;
    border-radius: var(--gc-radius-sm);
}
.asset-id-badge.is-active {
  background: var(--gc-success-bg);
    color: var(--gc-success);
    border-color: color-mix(in srgb, var(--gc-success) 28%, transparent);
}
.asset-id-badge.is-inactive {
  background: var(--gc-neutral-100);
    color: var(--gc-neutral-600);
    border-color: var(--gc-border-strong);
}
.assets-data-row.is-editing {
  background: color-mix(in srgb, var(--gc-navy-50) 70%, white);
}
.assets-editor-row > td {
  padding: 0 !important;
    border-bottom: 1px solid var(--gc-border);
    background: var(--gc-surface);
}
.assets-inline-form {
  max-width: none;
    margin: 0;
    padding: 0 1rem;
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    transition: max-height 0.28s ease, opacity 0.2s ease, padding 0.28s ease;
}
.assets-editor-row.is-open .assets-inline-form {
  max-height: 56rem;
    opacity: 1;
    padding: 1rem 1.15rem 1.15rem;
}
.assets-inline-title {
  margin: 0 0 0.85rem;
    font-size: 1.05rem;
    color: var(--gc-navy-500);
}
.assets-inline-grid {
  display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 1rem;
}
.assets-inline-span {
  grid-column: 1 / -1;
}
.assets-entities-cell {
  max-width: 14rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
@media (max-width: 720px) {
  .assets-inline-grid {
    grid-template-columns: 1fr;
  }
}
.intake-upload {
  border: 1px dashed var(--gc-border);
    border-radius: 8px;
    padding: 1rem 1.1rem;
    margin-bottom: 1rem;
    background: color-mix(in srgb, var(--gc-surface) 92%, var(--gc-page));
}
.intake-upload.is-dragover {
  border-color: var(--gc-accent, #2563eb);
    background: color-mix(in srgb, var(--gc-surface) 80%, #dbeafe);
}
.intake-upload-copy {
  margin: 0 0 0.35rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}
.intake-section {
  margin-bottom: 1.75rem;
}
.intake-section h2 {
  margin: 0 0 0.5rem;
    font-size: 1.1rem;
}
.intake-lanes {
  display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 0.75rem;
}
.intake-lane {
  border: 1px solid var(--gc-border);
    border-radius: 8px;
    background: var(--gc-surface);
    padding: 0.65rem;
    min-height: 10rem;
}
.intake-lane h3 {
  margin: 0 0 0.5rem;
    font-size: 0.92rem;
}
.intake-cards {
  list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.5rem;
}
.intake-card {
  border: 1px solid var(--gc-border);
    border-radius: 6px;
    padding: 0.45rem 0.5rem;
    background: var(--gc-bg-subtle);
}
.intake-card-name {
  display: block;
    font-size: 0.86rem;
    margin-bottom: 0.35rem;
    word-break: break-word;
}
.intake-card-actions {
  display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
    align-items: center;
}
.lease-review-queue {
  margin-bottom: 1.5rem;
}
.page-subtitle {
  margin: 4px 0 0;
    color: var(--gc-text-muted);
    font-size: 0.98rem;
}
.status-table {
  width: 100%;
    border-collapse: collapse;
    font-size: 0.95rem;
}
.status-table th,
.status-table td {
  text-align: left;
    padding: 10px 14px;
    border-bottom: 1px solid var(--gc-border-subtle);
}
.status-table th {
  border-bottom: 2px solid var(--gc-border-strong);
}
.status-table th {
  font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--gc-text-muted);
    background: var(--gc-bg-subtle);
    font-weight: 600;
}
.workflow-list {
  padding-left: 1.3rem;
    color: var(--gc-text-muted);
}
.notice {
  margin-top: 20px;
    padding: 14px 16px;
    background: var(--gc-info-bg);
    border: 1px solid var(--gc-navy-200);
    color: var(--gc-navy-700);
}
.lease-files-status {
  display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 16px;
    color: var(--gc-text-muted);
    font-size: 0.95rem;
}
@keyframes gc-spin {
  to { transform: rotate(360deg); }
}
.lease-files-skeleton .skeleton-bar {
  display: block;
    height: 14px;
    border-radius: 4px;
    background: linear-gradient(
      90deg,
      var(--gc-neutral-100) 0%,
      var(--gc-neutral-200) 45%,
      var(--gc-neutral-100) 90%
    );
    background-size: 200% 100%;
    animation: gc-shimmer 1.4s ease-in-out infinite;
}
.skeleton-bar-wide {
  width: 72%; max-width: 280px;
}
.skeleton-bar-medium {
  width: 55%; max-width: 120px;
}
.skeleton-bar-narrow {
  width: 40%; max-width: 64px;
}
@keyframes gc-shimmer {
  0% { background-position: 100% 0; }
    100% { background-position: -100% 0; }
}
.lease-files-message {
  margin: 0;
}
.lease-files-toolbar {
  display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}
.lease-files-selection-count {
  margin: 0;
    color: var(--gc-text-muted);
    font-size: 0.92rem;
}
.actions-dropdown {
  position: relative;
}
.btn-actions {
  display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 9px 14px;
    border: 1px solid var(--gc-border-strong);
    background: var(--gc-surface);
    color: var(--gc-btn-secondary-text);
    font-family: inherit;
    font-weight: var(--gc-weight-semibold);
    font-size: var(--gc-text-sm);
    cursor: pointer;
    white-space: nowrap;
}
.btn-actions:hover:not(:disabled),
.btn-actions:focus-visible:not(:disabled) {
  background: var(--gc-bg-subtle);
    border-color: var(--gc-navy-300);
}
.btn-actions:disabled {
  opacity: 0.55;
    cursor: not-allowed;
}
.btn-actions.is-disabled {
  opacity: 0.55;
    pointer-events: none;
}
.btn-actions-chevron {
  width: 14px;
    height: 14px;
}
.lease-review-summary {
  display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 18px;
    margin-bottom: 20px;
}
.lease-review-label {
  margin-bottom: 4px !important;
    color: var(--gc-text-muted);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}
.lease-review-value {
  color: var(--gc-navy-500) !important;
    font-weight: 600;
    overflow-wrap: anywhere;
}
.lease-review-actions,
.lease-review-row-actions {
  display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.lease-review-actions {
  margin: 18px 0;
}
.lease-review-loading {
  display: flex;
    align-items: center;
    gap: 10px;
    color: var(--gc-text-muted);
}
.lease-review-table-wrap {
  overflow-x: auto;
}
.lease-review-field-id {
  min-width: 210px;
    font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
    font-size: 0.84rem;
}
.lease-review-field-value {
  min-width: 240px;
    max-width: 520px;
    overflow-wrap: anywhere;
    white-space: pre-wrap;
}
.lease-review-row-actions {
  min-width: 170px;
}
.kb-shell {
  display: grid;
    gap: 20px;
}
.kb-hero {
  display: grid;
    gap: 16px;
    background:
      linear-gradient(135deg, rgba(31, 61, 124, 0.08), transparent 55%),
      var(--gc-surface);
}
.kb-kicker {
  margin: 0 0 6px;
    color: var(--gc-navy-500);
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}
.kb-hero-title {
  margin: 0 0 8px;
    color: var(--gc-navy-800);
    font-size: 1.55rem;
    line-height: 1.25;
}
.kb-hero-lead {
  margin: 0;
    max-width: 62ch;
    color: var(--gc-text-muted);
}
.kb-search {
  width: min(100%, 420px);
    padding: 12px 14px;
    border: 1px solid var(--gc-border-strong);
    border-radius: var(--gc-radius-md);
    background: var(--gc-bg);
    color: var(--gc-text);
    font: inherit;
}
.kb-search:focus {
  outline: 2px solid var(--gc-focus-ring);
    outline-offset: 2px;
}
.kb-search-meta {
  margin: 0;
    color: var(--gc-text-muted);
    font-size: 0.85rem;
}
.kb-toolbar {
  padding-top: 14px;
    padding-bottom: 14px;
}
.kb-filters {
  display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.kb-filter {
  appearance: none;
    margin: 0;
    padding: 7px 12px;
    border: 1px solid var(--gc-border-strong);
    border-radius: var(--gc-radius-md);
    background: var(--gc-bg);
    color: var(--gc-navy-700);
    font: inherit;
    font-size: 0.9rem;
    cursor: pointer;
}
.kb-filter:hover {
  border-color: var(--gc-navy-300);
    background: var(--gc-navy-50);
}
.kb-filter.is-active {
  border-color: var(--gc-navy-500);
    background: var(--gc-navy-500);
    color: var(--gc-text-inverse);
}
.kb-list-header {
  display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
}
.kb-list-header h2 {
  margin: 0;
    color: var(--gc-navy-700);
    font-size: 1.1rem;
}
.kb-category-count {
  color: var(--gc-text-muted);
    font-size: 0.85rem;
    font-variant-numeric: tabular-nums;
}
.kb-article-table td {
  vertical-align: top;
}
.kb-article-row.is-hidden {
  display: none;
}
.kb-row-id {
  display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    border-radius: var(--gc-radius-sm);
    background: var(--gc-navy-100);
    color: var(--gc-navy-700);
    font-family: var(--gc-font-mono);
    font-size: 0.78rem;
    font-weight: 600;
    text-decoration: none;
}
.kb-row-id:hover {
  background: var(--gc-navy-200);
    color: var(--gc-navy-800);
}
.kb-row-link {
  display: grid;
    gap: 4px;
    color: inherit;
    text-decoration: none;
}
.kb-row-link:hover .kb-row-title {
  color: var(--gc-navy-600);
    text-decoration: underline;
}
.kb-row-title {
  color: var(--gc-navy-800);
    font-weight: 650;
    line-height: 1.35;
}
.kb-row-summary {
  color: var(--gc-text-muted);
    font-size: 0.9rem;
    line-height: 1.45;
}
.kb-row-category {
  color: var(--gc-text-muted);
    font-size: 0.9rem;
    white-space: nowrap;
}
.kb-empty {
  margin: 12px 0 0;
}
.kb-article-id {
  display: inline-flex;
    align-items: center;
    width: fit-content;
    padding: 2px 8px;
    border-radius: var(--gc-radius-sm);
    background: var(--gc-navy-100);
    color: var(--gc-navy-700);
    font-family: var(--gc-font-mono);
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.02em;
}
.kb-reader {
  display: grid;
    gap: 16px;
    max-width: 860px;
}
.kb-breadcrumb {
  display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
    color: var(--gc-text-muted);
    font-size: 0.9rem;
}
.kb-breadcrumb a {
  color: var(--gc-link);
    text-decoration: none;
}
.kb-breadcrumb a:hover {
  color: var(--gc-link-hover);
    text-decoration: underline;
}
.kb-reader-header {
  display: grid;
    gap: 10px;
}
.kb-reader-meta {
  display: flex;
    flex-wrap: wrap;
    gap: 10px 14px;
    align-items: center;
}
.kb-reader-category,
.kb-reader-tags,
.kb-reader-updated {
  margin: 0;
    color: var(--gc-text-muted);
    font-size: 0.88rem;
}
.kb-reader-title {
  margin: 0;
    color: var(--gc-navy-800);
    font-size: 1.65rem;
    line-height: 1.25;
}
.kb-reader-summary {
  margin: 0;
    max-width: 68ch;
    color: var(--gc-text);
    font-size: 1.05rem;
    line-height: 1.5;
}
.kb-reader-body {
  display: grid;
    gap: 0.35rem;
    max-width: 72ch;
}
.kb-reader-body h2 {
  margin: 1.35rem 0 0.45rem;
    color: var(--gc-navy-700);
    font-size: 1.2rem;
}
.kb-reader-body h3 {
  margin: 1.1rem 0 0.35rem;
    color: var(--gc-navy-600);
    font-size: 1.05rem;
}
.kb-reader-body p,
.kb-reader-body li {
  margin: 0.35rem 0;
    line-height: 1.6;
    color: var(--gc-text);
}
.kb-reader-body ul {
  margin: 0.35rem 0 0.7rem;
    padding-left: 1.2rem;
}
.kb-related h2 {
  margin: 0 0 12px;
    font-size: 1.05rem;
    color: var(--gc-navy-700);
}
.kb-related-list {
  display: grid;
    gap: 8px;
    margin: 0;
    padding: 0;
    list-style: none;
}
.kb-related-list a {
  display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: baseline;
    padding: 10px 12px;
    border: 1px solid var(--gc-border);
    border-radius: var(--gc-radius-md);
    color: var(--gc-navy-700);
    text-decoration: none;
}
.kb-related-list a:hover {
  background: var(--gc-bg-subtle);
    color: var(--gc-navy-800);
}
.kb-back {
  margin: 4px 0 0;
}
@media (max-width: 767.98px) {
  .kb-hero-title {
    font-size: 1.35rem;
  }
  .kb-reader-title {
    font-size: 1.4rem;
  }
  .kb-article-table th:nth-child(3),
  .kb-article-table td:nth-child(3) {
    display: none;
  }
}
.actions-menu {
  position: absolute;
    top: calc(100% + 6px);
    right: 0;
    z-index: 20;
    min-width: 220px;
    padding: 6px 0;
    background: var(--gc-surface);
    border: 1px solid var(--gc-border);
    box-shadow: 0 8px 24px rgba(15, 29, 60, 0.12);
}
.actions-menu-item {
  display: block;
    width: 100%;
    padding: 10px 16px;
    border: 0;
    background: transparent;
    color: var(--gc-text);
    font-family: inherit;
    font-size: 0.92rem;
    text-align: left;
    cursor: pointer;
}
.actions-menu-item:hover:not(:disabled),
.actions-menu-item:focus-visible:not(:disabled) {
  background: var(--gc-bg-subtle);
    color: var(--gc-navy-500);
}
.actions-menu-item:disabled {
  color: var(--gc-text-muted);
    cursor: not-allowed;
}
.actions-menu-divider {
  margin: 6px 0;
    border: 0;
    border-top: 1px solid var(--gc-border);
}
.status-table .col-select {
  width: 44px;
    padding-left: 14px;
    padding-right: 8px;
    text-align: center;
}
.table-checkbox-label {
  display: inline-flex;
    align-items: center;
    justify-content: center;
    margin: 0;
    cursor: pointer;
}
.table-checkbox {
  width: 16px;
    height: 16px;
    margin: 0;
    accent-color: var(--gc-navy-500);
    cursor: pointer;
}
.status-table tbody tr.is-selected {
  background: var(--gc-navy-50);
}
.skeleton-bar-checkbox {
  width: 16px;
    max-width: 16px;
    margin: 0 auto;
}
.doc-name-cell {
  display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}
.doc-actions {
  display: inline-flex;
    align-items: center;
    gap: 4px;
    flex-shrink: 0;
}
.doc-action-btn {
  display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    padding: 0;
    border: 1px solid transparent;
    border-radius: 4px;
    background: transparent;
    color: var(--gc-text-muted);
    cursor: pointer;
}
.doc-action-btn:hover:not(:disabled),
.doc-action-btn:focus-visible:not(:disabled) {
  color: var(--gc-navy-500);
    background: var(--gc-navy-50);
    border-color: var(--gc-navy-200);
}
.doc-action-btn.is-active {
  color: var(--gc-navy-500);
    background: var(--gc-navy-50);
    border-color: var(--gc-navy-200);
}
.doc-action-btn:disabled {
  opacity: 0.4;
    cursor: not-allowed;
}
.doc-action-ico {
  width: 18px;
    height: 18px;
}
.doc-name {
  color: var(--gc-text);
    font-weight: 600;
    word-break: break-word;
}
.doc-detail-row td {
  padding: 0;
    background: var(--gc-bg-subtle);
    border-bottom: 1px solid var(--gc-border);
}
.doc-metadata-panel {
  padding: 20px 24px 24px;
}
.doc-metadata-loading {
  display: flex;
    align-items: center;
    gap: 12px;
    color: var(--gc-text-muted);
    font-size: 0.92rem;
}
.doc-metadata-empty {
  margin: 0;
    color: var(--gc-text-muted);
    font-size: 0.92rem;
}
.doc-metadata-sections {
  --doc-meta-label-width: 200px;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}
@media (max-width: 960px) {
  .doc-metadata-sections {
    grid-template-columns: 1fr;
  }
}
.doc-metadata-section {
  background: var(--gc-surface);
    border: 1px solid var(--gc-border);
    min-width: 0;
}
.doc-metadata-section-wide {
  grid-column: 1 / -1;
}
.doc-metadata-heading {
  margin: 0;
    padding: 12px 16px;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--gc-navy-500);
    background: var(--gc-bg-subtle);
    border-bottom: 1px solid var(--gc-border);
}
.doc-metadata-table {
  width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}
.doc-metadata-table th,
.doc-metadata-table td {
  vertical-align: top;
    padding: 10px 16px;
    border-bottom: 1px solid var(--gc-border);
    text-align: left;
}
.doc-metadata-table tr:last-child th,
.doc-metadata-table tr:last-child td {
  border-bottom: 0;
}
.doc-metadata-table th {
  width: var(--doc-meta-label-width);
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--gc-text-muted);
    background: var(--gc-neutral-50);
    word-break: break-word;
}
.doc-metadata-table td {
  font-size: 0.92rem;
    color: var(--gc-text);
    word-break: break-word;
}
.doc-metadata-value-mono {
  font-family: var(--gc-font-mono);
    font-size: 0.84rem;
    line-height: 1.45;
    word-break: break-all;
}
.doc-detail-row .notice {
  margin-top: 0;
}
.notfound-hero {
  min-height: 100svh;
    display: grid;
    place-items: center;
    padding: 40px 16px;
    background-color: var(--gc-neutral-0);
    background-image:
      linear-gradient(180deg, var(--gc-navy-50) 0%, var(--gc-neutral-0) 42%, var(--gc-neutral-0) 100%),
      repeating-linear-gradient(
        135deg,
        rgba(31, 61, 124, 0.035) 0 1px,
        transparent 1px 14px
      );
}
.notfound-panel {
  width: 100%;
    max-width: 560px;
    text-align: left;
}
.notfound-title {
  margin: 0 0 16px;
    font-size: 2rem;
    font-weight: 700;
    color: var(--gc-navy-500);
}
.notfound-copy {
  margin: 0 0 28px;
    color: var(--gc-text-muted);
    font-size: 1.05rem;
    line-height: 1.55;
}
.notfound-requested {
  margin-bottom: 28px;
}
.notfound-requested-label {
  font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--gc-text-muted);
    margin-bottom: 8px;
}
.notfound-requested-path {
  display: inline-block;
    max-width: 100%;
    padding: 10px 14px;
    background: var(--gc-bg-subtle);
    border: 1px solid var(--gc-border);
    font-family: var(--gc-font-mono);
    font-size: 0.92rem;
    color: var(--gc-text);
    word-break: break-all;
}
.notfound-actions {
  display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 36px;
}
.notfound-actions .btn-login,
.notfound-actions .btn-secondary {
  width: auto;
    min-width: 140px;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.btn-secondary {
  padding: 12px 16px;
    border: 1px solid var(--gc-border-strong);
    background: var(--gc-surface);
    color: var(--gc-text);
    font-family: inherit;
    font-weight: 600;
    font-size: 16px;
    cursor: pointer;
    text-align: center;
}
.btn-secondary:hover {
  background: var(--gc-bg-subtle);
    color: var(--gc-text);
}
.notfound-footer {
  padding-top: 20px;
    border-top: 1px solid var(--gc-border);
    color: var(--gc-text-muted);
    font-size: 13px;
}
.lease-settings-form {
  max-width: 44rem;
}
.lease-settings-form .form-row {
  display: grid; gap: 0.35rem; margin-bottom: 1rem;
}
.lease-settings-form .form-row-checks {
  display: grid; gap: 0.5rem; margin: 1rem 0 1.25rem;
}
.lease-settings-form fieldset {
  border: 1px solid var(--gc-border); border-radius: 8px; padding: 0.85rem 1rem; margin: 0 0 1rem;
}
.lease-settings-form legend {
  padding: 0 0.35rem; font-weight: 600;
}
.lease-settings-form .folder-list {
  margin: 0; padding-left: 1.1rem;
}
.lease-settings-form .folder-current {
  margin: 0 0 0.75rem; word-break: break-word;
}
.lease-settings-form .form-actions {
  display: flex; flex-wrap: wrap; gap: 0.75rem;
}
.lease-settings-form .check-row {
  display: flex;
    align-items: flex-start;
    gap: 0.55rem;
    margin: 0.35rem 0;
}
.lease-settings-form .extraction-method-list {
  margin: 0.35rem 0 0.75rem 1.4rem;
    padding: 0.5rem 0.75rem;
    border-left: 2px solid var(--gc-border);
}
.lease-settings-form .extraction-method-list.is-disabled {
  opacity: 0.55;
}
.sp-folder-dialog {
  border: 1px solid var(--gc-border);
    border-radius: var(--gc-radius-sm);
    padding: 0;
    width: min(640px, calc(100vw - 32px));
    max-height: min(80vh, 720px);
    box-shadow: var(--gc-shadow-lg);
}
.sp-folder-dialog::backdrop {
  background: rgba(10, 20, 40, 0.45);
}
.sp-folder-dialog-body {
  display: flex;
    flex-direction: column;
    max-height: min(80vh, 720px);
}
.sp-folder-dialog-header {
  display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.1rem;
    border-bottom: 1px solid var(--gc-border);
}
.sp-folder-dialog-header h3 {
  margin: 0;
    font-size: 1.05rem;
    color: var(--gc-navy-500);
}
.sp-folder-toolbar {
  display: flex;
    gap: 0.5rem;
    padding: 0.85rem 1.1rem 0.35rem;
}
.sp-folder-search {
  flex: 1;
    min-width: 0;
}
.sp-folder-crumbs {
  display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
    padding: 0.35rem 1.1rem 0.75rem;
    font-size: 0.9rem;
}
.sp-crumb {
  border: 0;
    background: transparent;
    color: var(--gc-link);
    cursor: pointer;
    padding: 0;
    font: inherit;
}
.sp-crumb.is-current {
  color: var(--gc-text);
    cursor: default;
    font-weight: 600;
}
.sp-crumb-sep {
  color: var(--gc-text-muted);
}
.sp-folder-status {
  margin: 0 1.1rem 0.5rem;
    color: var(--gc-text-muted);
    font-size: 0.9rem;
}
.sp-folder-status.is-error {
  color: var(--gc-danger);
}
.sp-folder-list {
  list-style: none;
    margin: 0;
    padding: 0 0.5rem 0.75rem;
    overflow: auto;
    flex: 1;
    min-height: 220px;
}
.sp-folder-item {
  width: 100%;
    display: grid;
    grid-template-columns: 4.5rem 1fr auto;
    gap: 0.75rem;
    align-items: center;
    text-align: left;
    border: 0;
    border-radius: var(--gc-radius-sm);
    background: transparent;
    padding: 0.65rem 0.75rem;
    cursor: pointer;
    font: inherit;
    color: inherit;
}
.sp-folder-item:hover {
  background: var(--gc-bg-subtle);
}
.sp-folder-kind {
  font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--gc-text-muted);
}
.sp-folder-name {
  font-weight: 500;
}
.sp-folder-meta {
  font-size: 0.85rem;
    color: var(--gc-text-muted);
}
.sp-folder-empty {
  padding: 1.5rem 1rem;
    color: var(--gc-text-muted);
    text-align: center;
}
.sp-folder-dialog-actions {
  display: flex;
    justify-content: flex-end;
    gap: 0.75rem;
    padding: 0.85rem 1.1rem 1.1rem;
    border-top: 1px solid var(--gc-border);
}
.settings-help {
  color: var(--gc-text-muted); margin: 0 0 1rem;
}
.extraction-view-toolbar {
  display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
    flex-wrap: wrap;
}
.extraction-view-heading {
  display: flex;
    align-items: flex-start;
    gap: 0.85rem;
    min-width: 0;
}
.extraction-view-title {
  margin: 0;
    font-size: 1.15rem;
    line-height: 1.3;
    word-break: break-word;
}
.extraction-view-meta {
  margin: 0.35rem 0 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    color: var(--gc-text-muted);
    font-size: 0.9rem;
}
.extraction-mode-badge {
  display: inline-block;
    padding: 0.15rem 0.5rem;
    border-radius: var(--gc-radius-sm);
    background: var(--gc-navy-50);
    color: var(--gc-navy-500);
    font-weight: 600;
}
.extraction-mobile-tabs {
  display: none;
    margin-bottom: 0.75rem;
}
.extraction-split {
  display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.85rem;
    min-height: min(70vh, 52rem);
}
.extraction-pane {
  display: flex;
    flex-direction: column;
    min-height: 0;
    border: 1px solid var(--gc-border);
    border-radius: var(--gc-radius-sm);
    background: var(--gc-surface);
    overflow: hidden;
}
.extraction-pane-header {
  display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.55rem 0.75rem;
    border-bottom: 1px solid var(--gc-border);
    background: var(--gc-navy-50);
}
.extraction-pane-header h3 {
  margin: 0;
    font-size: 0.95rem;
    font-weight: 600;
}
.extraction-pane-body {
  position: relative;
    flex: 1;
    min-height: 0;
    overflow: auto;
}
.extraction-pdf-scroll {
  background: #e8ebf0;
    padding: 0.75rem;
}
.extraction-pdf-pages {
  display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.75rem;
}
.extraction-pdf-page {
  max-width: 100%;
    height: auto;
    background: white;
    box-shadow: 0 1px 4px rgba(15, 23, 42, 0.12);
}
.extraction-pdf-controls {
  display: flex;
    align-items: center;
    gap: 0.35rem;
}
.extraction-pdf-zoom {
  min-width: 3.5rem;
    text-align: center;
    font-size: 0.85rem;
    color: var(--gc-text-muted);
}
.extraction-text-host,
.extraction-codemirror {
  height: 100%;
    min-height: 18rem;
}
.extraction-codemirror .cm-editor {
  height: 100%;
}
.extraction-text-fallback {
  margin: 0;
    padding: 0.85rem 1rem;
    white-space: pre-wrap;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.85rem;
    line-height: 1.45;
}
.doc-action-btn.doc-action-extraction.is-ready {
  color: var(--gc-navy-500);
}
.doc-action-btn.doc-action-extraction.is-ready:hover:not(:disabled),
.doc-action-btn.doc-action-extraction.is-ready:focus-visible:not(:disabled) {
  background: var(--gc-navy-50);
}
@media (max-width: 900px) {
  .extraction-mobile-tabs {
    display: flex;
        gap: 0.25rem;
  }
  .extraction-split {
    grid-template-columns: 1fr;
        min-height: min(65vh, 40rem);
  }
  .extraction-pane[hidden] {
    display: none !important;
  }
}

/* ---- pages/app-controller.css ---- */
/* App Controller dashboard ÃÂ¢ÃÂÃÂ SharePoint toolbar / panel conventions. */

.app-ctl-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--gc-space-3);
  margin-block-end: var(--gc-space-5);
}

.app-ctl-updated {
  display: inline-flex;
  align-items: center;
  gap: var(--gc-space-2);
  margin: 0;
  color: var(--gc-text);
  font-size: var(--gc-text-sm);
}

.app-ctl-updated-ico {
  width: var(--gc-icon-sm);
  height: var(--gc-icon-sm);
  flex: 0 0 auto;
  color: var(--gc-text-muted);
}

.app-ctl-panels {
  display: grid;
  gap: var(--gc-space-5);
  margin-block-start: var(--gc-space-5);
}

@media (min-width: 1024px) {
  .app-ctl-panels {
    grid-template-columns: 1fr 1fr;
  }
}

.app-ctl-copy {
  margin: 0 0 var(--gc-space-4);
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
}

.app-ctl .content-panel + .content-panel,
.app-ctl .health-bar + .content-panel {
  margin-block-start: 0;
}

.app-ctl .health-bar {
  margin-block: var(--gc-space-4);
}

/* ÃÂ¢ÃÂÃÂÃÂ¢ÃÂÃÂ Yardi dashboard (Stitch-inspired, portal tokens) ÃÂ¢ÃÂÃÂÃÂ¢ÃÂÃÂ */

.yardi-dash {
  display: grid;
  gap: var(--gc-space-5);
}

.yardi-kpi-strip {
  margin: 0;
  width: 100%;
}

@media (min-width: 640px) {
  .yardi-kpi-strip {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (min-width: 1024px) {
  .yardi-kpi-strip {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }
}

.yardi-dash > .settings-panel {
  display: grid;
  gap: var(--gc-space-5);
  min-width: 0;
}

.yardi-dash-layout {
  display: grid;
  gap: var(--gc-space-5);
}

@media (min-width: 1024px) {
  .yardi-dash-layout {
    grid-template-columns: minmax(0, 2fr) minmax(18rem, 1fr);
    align-items: stretch;
  }

  .yardi-dash-main,
  .yardi-dash-side {
    display: flex;
    flex-direction: column;
    min-height: 0;
  }

  .yardi-dash-main > .yardi-hero,
  .yardi-dash-side > .yardi-settings-card {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    min-height: 100%;
  }

  .yardi-dash-side > .yardi-settings-card .yardi-cfg {
    flex: 1 1 auto;
  }
}

.yardi-dash-main,
.yardi-dash-side {
  display: grid;
  gap: var(--gc-space-5);
  min-width: 0;
}

.yardi-panel-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--gc-space-3);
  margin-block-end: var(--gc-space-3);
}

.yardi-panel-head .chart-card-title,
.yardi-panel-head .gc-section-title {
  margin: 0;
}

.yardi-dash > .chart-card {
  margin-block: var(--gc-space-4) var(--gc-space-5);
}

.yardi-catalog-panel .gc-collapse-actions .gc-btn {
  min-height: 2rem;
  padding-inline: var(--gc-space-3);
  font-size: var(--gc-text-sm);
}

.yardi-dash .chart-legend-swatch[data-swatch="success"] {
  background: var(--gc-chart-5);
}

.yardi-dash .chart-legend-swatch[data-swatch="failed"] {
  background: var(--gc-chart-7);
}

.yardi-settings-chart {
  width: 100%;
}

.yardi-def-enabled-switch .gc-form-switch {
  margin: 0;
}

.yardi-def-enabled-switch .gc-form-check-input {
  margin-inline-start: 0;
}

.yardi-panel-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gc-space-2);
}

.yardi-section-title {
  margin: 0;
  font-size: var(--gc-text-lg);
  font-weight: var(--gc-weight-semibold);
  color: var(--gc-text);
  display: inline-flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--gc-space-2);
}

.yardi-section-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--gc-space-2);
  margin: 0 0 var(--gc-space-4);
}

.yardi-section-uptime {
  margin: 0;
  display: inline-flex;
  align-items: baseline;
  gap: var(--gc-space-1);
  font-variant-numeric: tabular-nums;
  font-weight: var(--gc-weight-normal);
  color: var(--gc-text-muted);
}

.yardi-section-uptime-label {
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-medium);
  letter-spacing: normal;
  text-transform: none;
  color: inherit;
}

.yardi-section-uptime-value {
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-medium);
  color: inherit;
  font-family: var(--gc-font-sans);
}

.yardi-report-form {
  display: grid;
  gap: var(--gc-space-4);
  margin-block-end: var(--gc-space-5);
  padding: var(--gc-space-5);
  border: 1px solid var(--gc-border);
  background: var(--gc-bg-subtle);
}

.yardi-report-form[hidden] {
  display: none;
}

.yardi-report-form-title {
  margin: 0;
  color: var(--gc-text);
  font-family: var(--gc-font-display);
  font-size: var(--gc-text-lg);
  font-weight: var(--gc-weight-semibold);
}

.yardi-report-form-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--gc-space-4);
}

@media (min-width: 768px) {
  .yardi-report-form-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.yardi-report-field {
  display: grid;
  align-content: start;
  gap: var(--gc-space-1);
  min-width: 0;
}

.yardi-report-field input,
.yardi-report-field select {
  width: 100%;
  min-width: 0;
}

.yardi-report-enabled {
  justify-items: start;
}

.yardi-report-result {
  margin: 0;
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
  overflow-wrap: anywhere;
}

.yardi-report-form-actions,
.yardi-report-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--gc-space-3);
}

.yardi-report-form-actions {
  margin-block-start: var(--gc-space-4);
}

.yardi-report-actions {
  gap: var(--gc-space-2);
}

/* Pages layer beats components ÃÂ¢ÃÂÃÂ keep table actions on one row even when the cell is tight. */
.gc-table-actions-cell .yardi-report-actions {
  display: inline-flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: center;
  width: max-content;
  max-width: none;
  margin-inline: auto;
  gap: var(--gc-space-2);
}

/* Schedule summaries wrap instead of colliding with Last generated. */
[data-yardi-definitions].tabulator .tabulator-cell.gc-table-wrap,
[data-yardi-definitions] .tabulator-cell.gc-table-wrap {
  white-space: normal;
  overflow: visible;
  text-overflow: unset;
  overflow-wrap: anywhere;
  word-break: break-word;
  line-height: var(--gc-leading-snug, 1.35);
}

.yardi-schedule-editor {
  display: grid;
  gap: var(--gc-space-4);
}

.yardi-schedule-block {
  display: grid;
  gap: var(--gc-space-2);
}

.yardi-schedule-type-row,
.yardi-schedule-day-presets,
.yardi-schedule-days,
.yardi-schedule-interval-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gc-space-2);
  align-items: center;
}

.yardi-schedule-radio {
  display: inline-flex;
  align-items: center;
  gap: var(--gc-space-2);
  margin: 0;
  font-size: var(--gc-text-sm);
  color: var(--gc-text);
}

.yardi-schedule-days label {
  display: inline-flex;
  align-items: center;
  gap: var(--gc-space-1);
  margin: 0;
  padding: var(--gc-space-1) var(--gc-space-2);
  border: 1px solid var(--gc-border);
  background: var(--gc-bg);
  font-size: var(--gc-text-sm);
}

.yardi-schedule-times {
  display: grid;
  gap: var(--gc-space-2);
}

.yardi-schedule-time-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gc-space-2);
  align-items: center;
}

.yardi-schedule-time-row input[type="time"],
.yardi-schedule-interval-row input[type="number"],
.yardi-schedule-interval-row select {
  max-width: 12rem;
}

.yardi-schedule-summary,
.yardi-schedule-next {
  margin: 0;
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
}

/* Hero */

.yardi-hero {
  padding: 0;
  overflow: hidden;
}

.yardi-dash .yardi-hero.content-panel {
  padding: 0;
}

.yardi-dash .yardi-cfg {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
}

.yardi-settings-card > .chart-card-title {
  margin-block-end: var(--gc-space-5);
}

.yardi-cfg-field.is-editing [data-yardi-cfg-edit] {
  visibility: hidden;
}

.yardi-hero-banner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--gc-space-5);
  padding: var(--gc-space-8) var(--gc-space-9);
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--gc-navy-800) 88%, transparent), var(--gc-navy-900)),
    var(--gc-navy-900);
  color: var(--gc-text-inverse);
}

.yardi-hero-status {
  display: flex;
  align-items: center;
  gap: var(--gc-space-5);
  min-width: 0;
  flex: 1 1 16rem;
}

.yardi-hero-icon {
  width: 5.75rem;
  height: 5.75rem;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border-radius: var(--gc-radius-full);
  border: 3px solid transparent;
  /* On-dark defaults ÃÂ¢ÃÂÃÂ muted until a tone class is applied */
  background: color-mix(in srgb, var(--gc-navy-100) 18%, transparent);
  color: var(--gc-navy-100);
  box-shadow: var(--gc-shadow-md);
}

.yardi-hero-icon svg {
  width: 3.125rem;
  height: 3.125rem;
}

/* Connected ÃÂ¢ÃÂÃÂ same green as connection-status dots (--gc-success), soft outer halo on navy */
.yardi-hero-icon.is-ok {
  background: var(--gc-success);
  color: var(--gc-neutral-0);
  box-shadow: var(--gc-shadow-md);
  border: 3px solid color-mix(in srgb, var(--gc-success) 55%, var(--gc-navy-100));
}

/* Pending / in-progress ÃÂ¢ÃÂÃÂ spinning refresh glyph */
.yardi-hero-icon.is-running {
  background: color-mix(in srgb, var(--gc-health-warn) 42%, transparent);
  color: var(--gc-health-warn);
  box-shadow: var(--gc-shadow-md);
  border: 3px solid color-mix(in srgb, var(--gc-health-warn) 40%, transparent);
}

.yardi-hero-icon.is-running svg {
  animation: gc-spin var(--gc-duration-spin) var(--gc-ease-spin) infinite;
}

@media (prefers-reduced-motion: reduce) {
  .yardi-hero-icon.is-running svg {
    animation: none;
  }
}

/* Failed / error */
.yardi-hero-icon.is-error {
  background: color-mix(in srgb, var(--gc-health-bad) 42%, transparent);
  color: var(--gc-health-bad);
  box-shadow: var(--gc-shadow-md);
  border: 3px solid color-mix(in srgb, var(--gc-health-bad) 40%, transparent);
}

/* Unknown / not yet checked */
.yardi-hero-icon.is-unknown {
  background: color-mix(in srgb, var(--gc-navy-100) 22%, transparent);
  color: var(--gc-navy-50);
  box-shadow: none;
  border: 3px solid transparent;
}

/* Integration disabled */
.yardi-hero-icon.is-disabled {
  background: var(--gc-neutral-600);
  color: var(--gc-neutral-200);
  box-shadow: none;
  border: 3px solid transparent;
}

.yardi-hero-title {
  margin: 0;
  font-size: var(--gc-text-kpi);
  font-weight: var(--gc-weight-semibold);
  letter-spacing: var(--gc-tracking-normal);
  color: var(--gc-text-inverse);
  line-height: var(--gc-leading-tight);
}

/* Beat portal.css `.content-panel h2` / `.content-panel p` muted overrides */
.yardi-dash .yardi-hero-banner .yardi-hero-title,
.yardi-dash .yardi-hero.content-panel .yardi-hero-banner h2.yardi-hero-title {
  color: var(--gc-text-inverse);
  font-size: var(--gc-text-kpi);
}

.yardi-hero-subtitle {
  margin: var(--gc-space-2) 0 0;
  color: var(--gc-text-inverse);
  font-size: var(--gc-text-lg);
  font-weight: var(--gc-weight-medium);
}

.yardi-dash .yardi-hero-banner .yardi-hero-subtitle,
.yardi-dash .yardi-hero.content-panel .yardi-hero-banner p.yardi-hero-subtitle {
  color: var(--gc-text-inverse);
  margin-block-end: 0;
}

.yardi-hero-actions {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: center;
  gap: var(--gc-space-2);
  flex: 0 1 auto;
  max-width: 100%;
}

.yardi-hero-toolbar {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--gc-space-3);
}

.yardi-hero-switch {
  margin: 0;
  min-height: 0;
  gap: 0;
}

.yardi-hero-banner .yardi-hero-switch .gc-form-check-input {
  border: 1px solid color-mix(in srgb, var(--gc-neutral-0) 35%, transparent);
}

.yardi-hero-banner .yardi-hero-switch .gc-form-check-input:not(:checked) {
  background-color: var(--gc-neutral-800);
}

/* Match Connected icon / status dots via --gc-switch-on */
.yardi-hero-banner .yardi-hero-switch .gc-form-check-input:checked {
  background-color: var(--gc-switch-on);
  border-color: var(--gc-switch-on-border);
}

.yardi-dispatch {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-3);
}

.yardi-dispatch-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gc-space-3);
  min-height: 2rem;
}

.yardi-dispatch-label {
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-medium);
  color: var(--gc-text);
}

.yardi-dispatch-switch {
  display: inline-flex;
  align-items: center;
  gap: var(--gc-space-2);
  margin: 0;
}

.yardi-dispatch-switch .gc-form-check-input:checked {
  background-color: var(--gc-switch-on);
  border-color: var(--gc-switch-on-border);
}

.yardi-dispatch-status {
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-semibold);
  color: var(--gc-text-muted);
  text-transform: capitalize;
}

.yardi-dispatch-status[data-state="running"] {
  color: var(--gc-success);
}

.yardi-dispatch-status[data-state="paused"] {
  color: var(--gc-warning, var(--gc-text));
}

.yardi-dispatch-divider {
  margin: var(--gc-space-1) 0 0;
  border: 0;
  border-top: 1px solid var(--gc-border);
}

.yardi-dispatch-host-exports {
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-semibold);
  color: var(--gc-text-muted);
}

.yardi-dispatch-host-exports[data-state="allowed"] {
  color: var(--gc-success);
}

.yardi-dispatch-host-exports[data-state="blocked"] {
  color: var(--gc-danger);
}

.yardi-dispatch-host-hint {
  margin: 0;
  font-size: var(--gc-text-xs);
  line-height: var(--gc-leading-normal);
  color: var(--gc-text-muted);
}

.yardi-dispatch-host-hint code {
  font-family: var(--gc-font-mono);
  font-size: inherit;
}

.yardi-runs-clickable .tabulator-row {
  cursor: pointer;
}

.yardi-run-detail {
  display: grid;
  gap: var(--gc-space-2);
  margin: 0 0 var(--gc-space-4);
}

.yardi-run-detail-row {
  display: grid;
  grid-template-columns: minmax(6rem, 8rem) 1fr;
  gap: var(--gc-space-2);
}

.yardi-run-detail-row dt {
  margin: 0;
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-medium);
}

.yardi-run-detail-row dd {
  margin: 0;
  font-size: var(--gc-text-sm);
  word-break: break-word;
}

.yardi-run-events-title {
  margin: 0 0 var(--gc-space-2);
  font-size: var(--gc-text-md);
  font-weight: var(--gc-weight-semibold);
  color: var(--gc-text);
}

.yardi-run-events {
  margin: 0;
  padding-left: var(--gc-space-5);
  font-size: var(--gc-text-sm);
}

.yardi-run-events li {
  margin-bottom: var(--gc-space-1);
}

.yardi-run-event-at,
.yardi-run-event-stage {
  color: var(--gc-text-muted);
}

.chart-card-note {
  margin: calc(var(--gc-space-2) * -1) 0 var(--gc-space-3);
  font-size: var(--gc-text-sm);
  color: var(--gc-text-muted);
}

.yardi-hero-reconnect {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--gc-space-1);
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--gc-text-inverse);
  font: inherit;
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-medium);
  line-height: var(--gc-leading-tight);
  white-space: nowrap;
  cursor: pointer;
}

.yardi-hero-reconnect-label {
  text-decoration: underline;
  text-underline-offset: 2px;
}

.yardi-hero-banner .yardi-hero-reconnect:hover:not(:disabled) {
  opacity: 0.88;
}

.yardi-hero-banner .yardi-hero-reconnect.is-pending,
.yardi-hero-banner .yardi-hero-reconnect:disabled {
  opacity: 0.72;
  cursor: wait;
}

.yardi-hero-reconnect-ico {
  width: var(--gc-icon-sm);
  height: var(--gc-icon-sm);
  color: currentColor;
  flex: 0 0 auto;
}

.yardi-hero-reconnect.is-pending .yardi-hero-reconnect-ico {
  animation: gc-spin var(--gc-duration-spin) var(--gc-ease-spin) infinite;
}

.yardi-hero-meta {
  margin: 0;
  text-align: start;
  color: var(--gc-text-inverse);
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-medium);
  font-variant-numeric: tabular-nums;
  font-family: var(--gc-font-sans);
}

.yardi-dash .yardi-hero-banner .yardi-hero-meta,
.yardi-dash .yardi-hero.content-panel .yardi-hero-banner p.yardi-hero-meta {
  color: var(--gc-text-inverse);
  margin-block-end: 0;
}

.yardi-hero-body {
  padding: var(--gc-space-6) var(--gc-space-9) var(--gc-space-8);
  flex: 1 1 auto;
}

.yardi-steps {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: var(--gc-space-4);
  position: relative;
  overflow: hidden;
}

.yardi-steps::before {
  content: none;
}

.yardi-step {
  display: grid;
  grid-template-columns: 1.5rem 1fr;
  gap: var(--gc-space-3);
  align-items: start;
  position: relative;
}

.yardi-step:not(:last-child)::after {
  content: "";
  position: absolute;
  left: 0.6875rem;
  top: 1.5rem;
  height: calc(100% - 1.5rem + var(--gc-space-4) + 0.75rem);
  bottom: auto;
  width: 2px;
  background: var(--gc-border);
  pointer-events: none;
}

.yardi-step:last-child::after {
  content: none;
  display: none;
}

.yardi-step-marker {
  width: 1.5rem;
  height: 1.5rem;
  border-radius: var(--gc-radius-full);
  border: 2px solid var(--gc-border);
  background: var(--gc-surface);
  position: relative;
  box-sizing: border-box;
}

.yardi-step.is-done .yardi-step-marker,
.yardi-step.is-current .yardi-step-marker,
.yardi-step.is-error .yardi-step-marker {
  outline: 0.25rem solid var(--gc-surface);
  outline-offset: -0.4rem;
}

.yardi-step.is-done .yardi-step-marker {
  border-color: var(--gc-success);
  background: var(--gc-success);
}

.yardi-step.is-current .yardi-step-marker {
  border-color: var(--gc-health-warn);
  background: var(--gc-health-warn);
}

.yardi-step.is-error .yardi-step-marker {
  border-color: var(--gc-health-bad);
  background: var(--gc-health-bad);
}

.yardi-step-copy {
  display: grid;
  gap: var(--gc-space-1);
  min-width: 0;
}

.yardi-step-title {
  font-weight: var(--gc-weight-semibold);
  color: var(--gc-text);
}

.yardi-step-detail {
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
}

.yardi-step.is-current .yardi-step-detail {
  color: var(--gc-health-warn);
}

.yardi-step.is-error .yardi-step-detail {
  color: var(--gc-health-bad);
}

/* Connection Settings */

.yardi-cfg-label-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--gc-space-3);
  margin-block-end: var(--gc-space-1);
}

.yardi-cfg-label-row .gc-label {
  margin: 0;
}

/* Session log inspector ÃÂ¢ÃÂÃÂ full-width console */

.yardi-logs-panel {
  width: 100%;
  min-width: 0;
}

.yardi-log-inspector {
  display: grid;
  gap: var(--gc-space-3);
  margin-block-end: 0;
}

.yardi-log-toolbar {
  display: grid;
  gap: var(--gc-space-2);
}

.yardi-log-toolbar-row {
  display: grid;
  gap: var(--gc-space-2);
}

.yardi-log-run {
  width: 100%;
}

.yardi-log-summary {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gc-space-2);
  align-items: center;
  font-size: var(--gc-text-sm);
  font-family: var(--gc-font-sans);
  color: var(--gc-text);
  padding: var(--gc-space-2) var(--gc-space-3);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-control, var(--gc-radius-sm));
  background: var(--gc-surface-subtle, var(--gc-navy-50));
}

.yardi-log-filterbar {
  display: grid;
  gap: var(--gc-space-3);
  padding: var(--gc-space-3);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-card);
  background: var(--gc-surface);
}

.yardi-log-level-chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gc-space-2);
}

.yardi-log-chip {
  appearance: none;
  border: 1px solid var(--gc-border);
  background: var(--gc-surface);
  color: var(--gc-text-muted);
  border-radius: var(--gc-radius-full);
  min-height: 2rem;
  padding: 0 var(--gc-space-3);
  font: inherit;
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-semibold);
  cursor: pointer;
}

.yardi-log-chip.is-active {
  background: var(--gc-navy-500);
  border-color: var(--gc-navy-500);
  color: var(--gc-text-inverse);
}

.yardi-log-chip[data-yardi-log-level-chip="error"].is-active {
  background: var(--gc-danger);
  border-color: var(--gc-danger);
}

.yardi-log-chip[data-yardi-log-level-chip="warn"].is-active {
  background: var(--gc-warning);
  border-color: var(--gc-warning);
  color: var(--gc-neutral-900);
}

.yardi-log-filter-controls {
  display: grid;
  gap: var(--gc-space-3);
  grid-template-columns: repeat(4, minmax(0, 1fr));
  align-items: end;
}

@media (min-width: 1024px) {
  .yardi-log-filter-controls {
    grid-template-columns: minmax(8rem, 11rem) minmax(8rem, 11rem) 7rem minmax(14rem, 1.4fr) auto;
  }
}

.yardi-log-filter-field {
  display: grid;
  gap: var(--gc-space-1);
  min-width: 0;
}

.yardi-log-filter-field .gc-label {
  margin: 0;
}

.yardi-log-errors {
  display: inline-flex;
  align-items: center;
  gap: var(--gc-space-2);
  min-height: 2.5rem;
  font-size: var(--gc-text-sm);
  color: var(--gc-text);
  white-space: nowrap;
}

.yardi-log-console {
  position: relative;
  overflow: auto;
  min-height: 18rem;
  max-height: min(32rem, 60vh);
  padding: var(--gc-space-4);
  padding-inline-end: calc(var(--gc-space-4) + var(--gc-control-min-height-dense) + var(--gc-space-3));
  border: 1px solid var(--gc-neutral-800);
  border-radius: var(--gc-radius-card);
  background: var(--gc-neutral-950);
  color: var(--gc-neutral-100);
  font-family: var(--gc-font-mono);
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-relaxed);
  scroll-behavior: smooth;
}

.yardi-log-copy {
  position: absolute;
  top: var(--gc-space-3);
  right: var(--gc-space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--gc-control-min-height-dense);
  height: var(--gc-control-min-height-dense);
  padding: 0;
  border: 1px solid var(--gc-neutral-700);
  border-radius: var(--gc-radius-sm);
  background: color-mix(in srgb, var(--gc-neutral-900) 88%, transparent);
  color: var(--gc-neutral-100);
  cursor: pointer;
}

.yardi-log-copy:hover,
.yardi-log-copy:focus-visible {
  color: var(--gc-text-inverse);
  border-color: var(--gc-neutral-500);
  background: var(--gc-neutral-800);
}

.yardi-log-copy.is-copied {
  color: var(--gc-health-ok);
  border-color: var(--gc-health-ok);
}

.yardi-log-copy-ico {
  display: block;
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
}

.yardi-log-console-lines {
  display: grid;
  gap: var(--gc-space-1);
}

.yardi-log-line {
  display: grid;
  grid-template-columns: 13.75rem 3.5rem minmax(8rem, 12rem) minmax(0, 1fr);
  gap: var(--gc-space-3);
  align-items: start;
  padding-block: var(--gc-space-1);
  color: var(--gc-neutral-100);
  word-break: break-word;
}

.yardi-log-line.is-warn {
  color: var(--gc-warning);
}

.yardi-log-line.is-error {
  color: var(--gc-danger-bg);
}

.yardi-log-at,
.yardi-log-level,
.yardi-log-stage,
.yardi-log-msg {
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  font: inherit;
  color: inherit;
  white-space: pre-wrap;
}

.yardi-log-level {
  font-weight: var(--gc-weight-semibold);
  letter-spacing: var(--gc-tracking-label);
}

.yardi-log-empty {
  text-align: left;
  color: var(--gc-neutral-400);
  font-family: var(--gc-font-mono);
  font-size: var(--gc-text-sm);
}

.yardi-log-cap {
  margin: 0;
  font-size: var(--gc-text-xs);
  color: var(--gc-text-muted);
}

.yardi-log-raw {
  margin: 0;
}

.yardi-log-raw summary {
  cursor: pointer;
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
}

.yardi-log-raw .gc-log {
  max-height: 14rem;
  overflow: auto;
  background: var(--gc-neutral-950);
  color: var(--gc-neutral-100);
  border-color: var(--gc-neutral-800);
}

@media (max-width: 1023.98px) {
  .yardi-log-filter-controls {
    grid-template-columns: 1fr 1fr;
  }

  .yardi-log-filter-search,
  .yardi-log-errors {
    grid-column: 1 / -1;
  }

  .yardi-log-toolbar {
    grid-template-columns: 1fr;
  }

  .yardi-hero-banner {
    padding: var(--gc-space-6);
  }

  .yardi-hero-body {
    padding: var(--gc-space-6);
  }

  .yardi-hero-title {
    font-size: var(--gc-text-2xl);
  }

  .yardi-hero-actions {
    align-items: stretch;
    width: 100%;
  }

  .yardi-hero-toolbar {
    width: 100%;
  }

  .yardi-hero-reconnect,
  .yardi-hero-actions .gc-btn {
    flex: 0 0 auto;
    width: auto;
    justify-content: flex-start;
  }

  .yardi-hero-meta {
    text-align: start;
  }

  .yardi-log-line {
    grid-template-columns: 1fr;
    gap: var(--gc-space-1);
    padding-block: var(--gc-space-2);
    border-block-end: 1px solid var(--gc-neutral-800);
  }
}

@media (max-width: 639.98px) {
  .yardi-kpi-strip {
    grid-template-columns: 1fr 1fr;
  }
}

/* ---- pages/sharepoint.css ---- */
/* SharePoint page ÃÂ¢ÃÂÃÂ layout only. Shared chrome: app.css / brand.css.
   Reference template for portal multi-view dashboards (HOWTO *SharePoint template*). */

.sharepoint-dashboard .sharepoint-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--gc-space-3);
  margin-bottom: var(--gc-space-5);
}

.sharepoint-dashboard .sharepoint-updated {
  margin: 0;
  color: var(--gc-text);
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-tight);
}

.sharepoint-tenant-stack {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-5);
}

.sharepoint-dashboard .sharepoint-kpi-capacity {
  margin-bottom: var(--gc-space-3);
}

@media (min-width: 640px) {
  .sharepoint-dashboard .sharepoint-kpi-capacity,
  .sharepoint-dashboard .sharepoint-kpi-estate {
    grid-template-columns: 1fr 1fr 1fr;
  }
}

@media (min-width: 1280px) {
  .sharepoint-dashboard .sharepoint-kpi-capacity,
  .sharepoint-dashboard .sharepoint-kpi-estate {
    grid-template-columns: 1fr 1fr 1fr;
  }
}

.sharepoint-dashboard .sharepoint-kpi-estate {
  margin-bottom: 0;
}

.sharepoint-review-help {
  margin: var(--gc-space-2) 0 var(--gc-space-3);
  max-width: 36rem;
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-normal);
  color: var(--gc-neutral-700);
}

.sharepoint-review-status {
  margin: var(--gc-space-2) 0 var(--gc-space-3);
  font-size: var(--gc-text-sm);
  color: var(--gc-neutral-700);
}

.sharepoint-storage-review:not(.is-loaded) .gc-table-toolbar,
.sharepoint-storage-review:not(.is-loaded) .gc-table-host {
  display: none;
}

.sharepoint-dashboard .sharepoint-sites .gc-table-toolbar,
.sharepoint-dashboard .sharepoint-storage-review .gc-table-toolbar {
  align-items: center;
  margin-bottom: var(--gc-space-3);
}

.sharepoint-dashboard .sharepoint-sites .gc-table-toolbar-end {
  margin-left: 0;
}

.sharepoint-site-layout,
.sharepoint-user-layout {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-5);
}

.sharepoint-site-hero {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--gc-space-5);
}

@media (min-width: 1024px) {
  .sharepoint-site-hero {
    grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
  }
}

.sharepoint-site-picker {
  display: flex;
  flex-direction: column;
}

.sharepoint-site-picker .gc-label {
  display: block;
  margin-bottom: var(--gc-space-2);
}

.sharepoint-dashboard .sharepoint-select {
  display: block;
  width: 100%;
  min-height: var(--gc-control-min-height);
  padding: var(--gc-space-3);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-sm);
  background: var(--gc-bg-subtle);
  color: var(--gc-text);
  font: inherit;
  font-weight: var(--gc-weight-medium);
}

.sharepoint-site-summary {
  display: flex;
  align-items: center;
  gap: var(--gc-space-3);
  margin-top: auto;
  padding-top: var(--gc-space-5);
}

.sharepoint-site-summary-meta {
  margin: 0;
  font-size: var(--gc-text-2xs);
  font-weight: var(--gc-weight-semibold);
  letter-spacing: var(--gc-tracking-label);
  text-transform: uppercase;
  color: var(--gc-neutral-700);
}

.sharepoint-user-email {
  text-transform: none;
  letter-spacing: normal;
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-normal);
}

.sharepoint-site-summary-ico {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: var(--gc-radius-full);
  background: color-mix(in srgb, var(--gc-navy-500) 12%, var(--gc-surface));
  color: var(--gc-navy-500);
}

.sharepoint-site-summary-ico svg {
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
}

.sharepoint-site-storage-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gc-space-3);
  margin-bottom: var(--gc-space-4);
}

.sharepoint-site-storage-head .gc-section-title {
  margin: 0;
}

.sharepoint-site-report-link {
  display: inline-flex;
  align-items: center;
  gap: var(--gc-space-1);
  font-size: var(--gc-text-2xs);
  font-weight: var(--gc-weight-semibold);
  letter-spacing: var(--gc-tracking-label);
  text-transform: uppercase;
  color: var(--gc-navy-500);
  text-decoration: none;
}

.sharepoint-site-report-link svg {
  width: var(--gc-icon-sm);
  height: var(--gc-icon-sm);
}

.sharepoint-site-report-link:hover,
.sharepoint-site-report-link:focus-visible {
  text-decoration: underline;
}

.sharepoint-site-storage-body {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 6rem;
}

.sharepoint-site-storage-kpi {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-2);
  width: 100%;
}

.sharepoint-site-storage-used {
  margin: 0;
  font-family: var(--gc-font-display);
  font-size: var(--gc-text-2xl);
  font-weight: var(--gc-weight-semibold);
  line-height: var(--gc-leading-tight);
  color: var(--gc-text);
}

.sharepoint-site-storage-caption {
  margin: 0;
  font-size: var(--gc-text-sm);
  color: var(--gc-neutral-700);
}

.sharepoint-site-storage-meter {
  width: 100%;
  height: var(--gc-space-2);
  border-radius: var(--gc-radius-full);
  background: var(--gc-bg-subtle);
  overflow: hidden;
}

.sharepoint-site-storage-meter-fill {
  height: 100%;
  width: 0;
  border-radius: inherit;
  background: var(--gc-navy-500);
  transition: width var(--gc-duration-normal) var(--gc-ease);
}

.sharepoint-feed-title {
  margin: 0 0 var(--gc-space-3);
  font-family: var(--gc-font-display);
  font-size: var(--gc-text-xl);
  font-weight: var(--gc-weight-semibold);
  line-height: var(--gc-leading-tight);
  color: var(--gc-text);
}

.sharepoint-site-feed .gc-table-toolbar,
.sharepoint-user-activity .gc-table-toolbar {
  align-items: center;
  margin-bottom: var(--gc-space-3);
}

.sharepoint-doc-meta {
  display: inline-flex;
  align-items: center;
  gap: var(--gc-space-1);
  min-width: 0;
}

/* Storage-review site chips: full names, wrap instead of ellipsis. */
.sharepoint-dashboard .sharepoint-storage-review .gc-activity-location,
.sharepoint-location-chips .gc-activity-location,
.gc-location-chips .gc-activity-location {
  max-width: none;
  overflow: visible;
  text-overflow: unset;
  white-space: normal;
  overflow-wrap: anywhere;
  line-height: var(--gc-leading-tight);
}

.sharepoint-dashboard .sharepoint-storage-review .gc-location-chips {
  align-items: flex-start;
}

.sharepoint-doc-meta-ico {
  width: var(--gc-icon-sm);
  height: var(--gc-icon-sm);
  flex-shrink: 0;
  color: var(--gc-neutral-700);
}

.sharepoint-when-cell {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: var(--gc-space-1);
}

.sharepoint-when-cell-tabular {
  min-width: 6.5rem;
}

.sharepoint-when-cell-tabular .sharepoint-when-rel,
.sharepoint-when-cell-tabular .sharepoint-when-stamp {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.sharepoint-when-rel {
  font-weight: var(--gc-weight-medium);
  color: var(--gc-text);
}

.sharepoint-when-stamp {
  font-size: var(--gc-text-xs);
  font-variant-numeric: tabular-nums;
  color: var(--gc-neutral-700);
}

.sharepoint-dashboard .sharepoint-select:disabled {
  color: var(--gc-text);
  opacity: 1;
  cursor: not-allowed;
}

.sharepoint-site-summary-ico.is-initials {
  font-size: var(--gc-text-xs);
  font-weight: var(--gc-weight-bold);
}

.sharepoint-user-layout .sharepoint-site-hero {
  grid-template-columns: 1fr;
}

@media (min-width: 1024px) {
  .sharepoint-user-layout .sharepoint-site-hero {
    grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
  }
}

.sharepoint-user-activity-desc {
  margin: var(--gc-space-2) 0 0;
  max-width: 36rem;
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-normal);
  color: var(--gc-neutral-700);
}

.sharepoint-dashboard .gc-table-stack-secondary {
  display: block;
  color: var(--gc-text);
  font-size: var(--gc-text-xs);
}

.sharepoint-dashboard a.gc-table-site-link {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--gc-space-1);
  min-width: 0;
  color: inherit;
  text-decoration: none;
}

.sharepoint-dashboard a.gc-table-site-link .gc-table-stack-secondary {
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* Storage Recovery Console (Storage tab) */

.sharepoint-recovery-console {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-5);
}

.sharepoint-storage-alert {
  margin: 0;
}

.sharepoint-storage-alert-title {
  margin: 0 0 var(--gc-space-1);
  font-weight: var(--gc-weight-semibold);
}

.sharepoint-storage-alert-detail,
.sharepoint-storage-alert-targets {
  margin: 0;
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-normal);
}

.sharepoint-storage-alert-targets {
  margin-top: var(--gc-space-2);
  font-weight: var(--gc-weight-medium);
}

.sharepoint-tenant-kpis {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-3);
}

.sharepoint-recovery-baseline {
  margin: 0;
  font-size: var(--gc-text-xs);
  line-height: var(--gc-leading-normal);
  color: var(--gc-neutral-700);
}

.sharepoint-recovery-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--gc-space-5);
  align-items: start;
}

@media (min-width: 1280px) {
  .sharepoint-recovery-layout {
    grid-template-columns: minmax(0, 1fr) minmax(18rem, 22rem);
  }
}

.sharepoint-recovery-main {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-5);
  min-width: 0;
}

.sharepoint-recovery-main .sharepoint-storage-review .gc-collapse-header {
  margin-bottom: 0;
}

.sharepoint-recovery-main .sharepoint-storage-review:not(.is-collapsed) .gc-collapse-header {
  margin-bottom: var(--gc-space-3);
}

.sharepoint-recovery-plan {
  position: sticky;
  top: var(--gc-space-4);
}

.sharepoint-recovery-plan-inner {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-5);
  padding: var(--gc-space-6);
  border: 1px solid color-mix(in srgb, var(--gc-warning) 28%, var(--gc-border));
  border-radius: var(--gc-radius-md);
  background: linear-gradient(
    165deg,
    var(--gc-warning-bg) 0%,
    color-mix(in srgb, var(--gc-warning-bg) 55%, var(--gc-surface)) 100%
  );
  color: var(--gc-text);
  box-shadow: var(--gc-shadow-sm);
}

.sharepoint-recovery-plan-title {
  margin: 0;
  color: var(--gc-warning);
  font-family: var(--gc-font-display);
  font-size: var(--gc-text-xl);
  font-weight: var(--gc-weight-semibold);
  line-height: var(--gc-leading-tight);
}

.sharepoint-recovery-stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--gc-space-4);
  margin: 0;
}

.sharepoint-recovery-stat {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-2);
}

.sharepoint-recovery-stat dt {
  margin: 0;
  color: var(--gc-text-muted);
  font-size: var(--gc-text-2xs);
  font-weight: var(--gc-weight-semibold);
  letter-spacing: var(--gc-tracking-label);
  text-transform: uppercase;
}

.sharepoint-recovery-stat dd {
  margin: 0;
  color: var(--gc-text);
  font-family: var(--gc-font-display);
  font-size: var(--gc-text-lg);
  font-weight: var(--gc-weight-semibold);
  font-variant-numeric: tabular-nums;
}

.sharepoint-recovery-stat dd.is-danger {
  color: var(--gc-danger);
}

.sharepoint-recovery-status {
  margin: 0;
  padding: var(--gc-space-3);
  border-radius: var(--gc-radius-sm);
  background: color-mix(in srgb, var(--gc-warning) 8%, var(--gc-surface));
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-normal);
  color: var(--gc-text);
}

.sharepoint-recovery-status.is-over {
  background: color-mix(in srgb, var(--gc-danger) 8%, var(--gc-surface));
  color: var(--gc-danger);
}

.sharepoint-recovery-headroom {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-2);
}

.sharepoint-recovery-headroom-label {
  margin: 0;
  font-size: var(--gc-text-xs);
  font-weight: var(--gc-weight-semibold);
  color: var(--gc-text-muted);
}

.sharepoint-recovery-headroom-row {
  display: flex;
  justify-content: space-between;
  gap: var(--gc-space-2);
  font-size: var(--gc-text-xs);
  color: var(--gc-text);
}

.sharepoint-recovery-headroom-meter {
  width: 100%;
  height: var(--gc-space-2);
  border-radius: var(--gc-radius-full);
  background: color-mix(in srgb, var(--gc-warning) 12%, var(--gc-surface));
  overflow: hidden;
}

.sharepoint-recovery-headroom-meter + .sharepoint-recovery-headroom-row {
  margin-top: var(--gc-space-3);
}

.sharepoint-recovery-headroom-fill {
  height: 100%;
  width: 0;
  border-radius: inherit;
  background: var(--gc-warning);
  transition: width var(--gc-duration-normal) var(--gc-ease);
}

.sharepoint-owner-impact {
  padding-top: var(--gc-space-2);
  border-top: 1px solid color-mix(in srgb, var(--gc-warning) 20%, var(--gc-border));
}

.sharepoint-owner-impact-title {
  margin: 0 0 var(--gc-space-3);
  font-size: var(--gc-text-xs);
  font-weight: var(--gc-weight-semibold);
  letter-spacing: var(--gc-tracking-label);
  text-transform: uppercase;
  color: var(--gc-text-muted);
}

.sharepoint-owner-impact-empty {
  margin: 0;
  font-size: var(--gc-text-sm);
  color: var(--gc-neutral-700);
}

.sharepoint-owner-impact-list {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-4);
  margin: 0;
  padding: 0;
  list-style: none;
}

.sharepoint-owner-impact-item {
  display: flex;
  align-items: flex-start;
  gap: var(--gc-space-3);
}

.sharepoint-owner-impact-avatar {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 2rem;
  height: 2rem;
  border-radius: var(--gc-radius-full);
  background: color-mix(in srgb, var(--gc-warning) 18%, var(--gc-surface));
  color: var(--gc-warning);
  font-size: var(--gc-text-2xs);
  font-weight: var(--gc-weight-bold);
}

.sharepoint-owner-impact-body {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-1);
  min-width: 0;
}

.sharepoint-owner-impact-name {
  font-size: var(--gc-text-sm);
  font-weight: var(--gc-weight-medium);
  overflow-wrap: anywhere;
}

.sharepoint-owner-impact-meta {
  font-size: var(--gc-text-xs);
  color: var(--gc-neutral-700);
}

.sharepoint-recovery-action {
  width: 100%;
  margin-top: var(--gc-space-2);
}

.sharepoint-recovery-action-help {
  margin: 0;
  font-size: var(--gc-text-xs);
  text-align: center;
  color: var(--gc-neutral-700);
}

.sharepoint-owner-cell {
  overflow-wrap: anywhere;
}

.sharepoint-dashboard .sharepoint-storage-review .gc-activity-location {
  display: inline-block;
  max-width: 12rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: middle;
}

@media (max-width: 639.98px) {
  .sharepoint-recovery-stats {
    grid-template-columns: 1fr;
  }

  .sharepoint-recovery-plan {
    position: static;
  }
}

/* ---- pages/settings.css ---- */
/* Settings account card + Admin Tools Users / Azure Resources. */

[data-users-shell] {
  display: grid;
  gap: var(--gc-space-5);
}

.settings-account .gc-section-title {
  margin: 0 0 var(--gc-space-2);
}

.settings-account .settings-help {
  margin: 0 0 var(--gc-space-4);
}

.settings-user-activity-header {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--gc-space-2) var(--gc-space-4);
  margin-bottom: var(--gc-space-4);
}

.settings-user-activity-meta {
  margin: 0;
  font-size: var(--gc-text-sm);
  color: var(--gc-text-muted);
}

.azure-resources {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-5);
}

.azure-resources .settings-help,
.azure-resources-meta {
  margin: 0;
}

.azure-resources-meta {
  margin: calc(var(--gc-space-3) * -1) 0 0;
  font-size: var(--gc-text-xs);
  color: var(--gc-text-muted);
  line-height: var(--gc-leading-normal);
}

.azure-resources .chart-grid {
  margin-bottom: 0;
}

.azure-resources-kpis {
  grid-template-columns: 1fr;
}

@media (min-width: 640px) {
  .azure-resources-kpis {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

.azure-resources .chart-card-canvas-wrap {
  height: 260px;
  flex: 0 0 260px;
}

.azure-resources .chart-legend-swatch[data-swatch="0"] {
  background: var(--gc-chart-1);
}

.azure-resources .chart-legend-swatch[data-swatch="1"],
.azure-resources .chart-legend-swatch--dashed {
  background-color: transparent;
  background-image: repeating-linear-gradient(
    90deg,
    var(--gc-chart-3) 0 3px,
    transparent 3px 6px
  );
}

.azure-resources .content-panel .gc-section-title {
  margin: 0 0 var(--gc-space-4);
}

@media (max-width: 767.98px) {
  .azure-resources .chart-grid {
    grid-template-columns: 1fr;
  }
}

/* ---- pages/key-vault.css ---- */
/* Key Vault admin page ÃÂ¢ÃÂÃÂ SharePoint dashboard layout conventions (HOWTO *SharePoint template*). */

.key-vault-stack {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-5);
}

/* Two KPIs always span the full content width (not the default 4/5-col grid). */
.key-vault-dashboard .key-vault-kpis {
  grid-template-columns: 1fr;
  margin-bottom: 0;
}

@media (min-width: 640px) {
  .key-vault-dashboard .key-vault-kpis {
    grid-template-columns: 1fr 1fr;
  }
}

.key-vault-dashboard .key-vault-kpis [data-kv-kpi="vault"] .gc-kpi-value {
  font-size: var(--gc-text-xl);
  word-break: break-word;
}

.key-vault-dashboard .key-vault-secrets .gc-section-title {
  margin-bottom: var(--gc-space-3);
}

.key-vault-dashboard .key-vault-secrets .gc-table-toolbar {
  align-items: center;
  margin-bottom: var(--gc-space-3);
}

.key-vault-dashboard .key-vault-secrets .table-loading {
  margin-top: var(--gc-space-2);
}

/* Truncate long revealed values; full string is on title for hover. */
.key-vault-dashboard .kv-value-text {
  display: block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.key-vault-dashboard .kv-actions-col .tabulator-cell {
  overflow: visible;
}

/* Inline edit: value cell becomes input + Save/Cancel (Yardi cfg pattern). */
.key-vault-dashboard .kv-value-edit {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--gc-space-2);
  width: 100%;
  min-width: 0;
  padding-block: var(--gc-space-1);
}

.key-vault-dashboard .kv-value-edit.is-loading {
  flex-direction: row;
  align-items: center;
  gap: var(--gc-space-2);
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
}

.key-vault-dashboard .kv-value-input {
  width: 100%;
  min-width: 0;
  font-family: var(--gc-font-mono, var(--gc-font-body));
  font-size: var(--gc-text-sm);
}

.key-vault-dashboard .kv-value-edit-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gc-space-2);
}

.key-vault-dashboard .kv-value-edit-error {
  margin: 0;
  color: var(--gc-danger);
  font-size: var(--gc-text-sm);
  line-height: var(--gc-leading-tight);
}

@media (max-width: 767.98px) {
  .key-vault-dashboard .kv-value-edit-actions {
    width: 100%;
  }

  .key-vault-dashboard .kv-value-edit-actions .gc-btn {
    flex: 1 1 auto;
  }
}

}

/* --------------------------------------------------------------------------
   Unlayered Tabulator row chrome
   Tabulator ships in @layer vendor (see @import above). These escapes stay
   outside @layer as belt-and-suspenders against any page VendorStyles that
   remain unlayered, and to lock even/odd + hover/selected to tokens.
   -------------------------------------------------------------------------- */
.gc-table-host.tabulator .tabulator-row,
.gc-table-host.tabulator .tabulator-row.tabulator-row-even {
  background-color: var(--gc-surface);
}

.gc-table-host.tabulator .tabulator-row:hover {
  background-color: var(--gc-navy-50);
}

.gc-table-host.tabulator .tabulator-row.tabulator-selected,
.gc-table-host.tabulator .tabulator-row.tabulator-selected:hover {
  background-color: var(--gc-navy-50);
}

/* Assets Property List import review dialog */
.gc-dialog.gc-dialog--size-xl {
  max-width: min(1100px, calc(100vw - 32px));
  width: min(1100px, calc(100vw - 32px));
  max-height: min(90vh, 900px);
}

.gc-dialog.gc-dialog--size-xl[open] {
  display: flex;
  flex-direction: column;
}

.assets-import-dialog .assets-import-body {
  display: flex;
  flex-direction: column;
  gap: var(--gc-space-5);
}

.assets-import-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--gc-space-4);
}

.assets-import-stages {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gc-space-2);
  list-style: none;
  margin: 0;
  padding: 0;
}

.assets-import-stages li {
  padding: var(--gc-space-1) var(--gc-space-3);
  border: 1px solid var(--gc-border-subtle);
  border-radius: var(--gc-radius-sm);
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
}

.assets-import-stages li.is-done {
  color: var(--gc-text);
  border-color: var(--gc-border);
}

.assets-import-stages li.is-current {
  color: var(--gc-text);
  border-color: var(--gc-border-strong);
  background: var(--gc-bg-subtle);
  font-weight: var(--gc-weight-medium);
}

.assets-import-progress-meta {
  display: flex;
  justify-content: space-between;
  gap: var(--gc-space-3);
  margin-bottom: var(--gc-space-2);
  font-size: var(--gc-text-sm);
}

.assets-import-progress-bar {
  width: 100%;
  height: var(--gc-space-3);
  accent-color: var(--gc-navy-600);
}

.assets-import-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--gc-space-3);
}

.assets-import-hint {
  margin: var(--gc-space-2) 0 0;
}

.assets-import-kpi {
  border: 1px solid var(--gc-border-subtle);
  border-radius: var(--gc-radius-kpi);
  padding: var(--gc-space-3);
  background: var(--gc-bg-subtle);
  text-align: center;
}

.assets-import-kpi-value {
  display: block;
  font-size: var(--gc-text-lg);
  font-weight: var(--gc-weight-medium);
}

.assets-import-kpi-label {
  display: block;
  margin-top: var(--gc-space-1);
  color: var(--gc-text-muted);
  font-size: var(--gc-text-sm);
}

.assets-import-badge {
  display: inline-block;
  padding: 0 var(--gc-space-2);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-sm);
  font-size: var(--gc-text-sm);
  text-transform: lowercase;
}

.assets-import-badge--new { border-color: var(--gc-switch-on); }
.assets-import-badge--update { border-color: var(--gc-navy-500); }
.assets-import-badge--conflict,
.assets-import-badge--invalid { border-color: var(--gc-danger); }

.assets-import-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gc-space-4);
  flex-wrap: wrap;
  border-top: 1px solid var(--gc-border-subtle);
}

.assets-import-footer-actions {
  display: flex;
  gap: var(--gc-space-3);
}

.assets-import-details-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--gc-text-sm);
}

.assets-import-details-table th,
.assets-import-details-table td {
  padding: var(--gc-space-2) var(--gc-space-3);
  border-bottom: 1px solid var(--gc-border-subtle);
  text-align: left;
  vertical-align: top;
}

.assets-import-result-list {
  margin: 0;
  padding-left: var(--gc-space-5);
}

@media (max-width: 767.98px) {
  .assets-import-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 1024px) {
  .assets-import-summary {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
}

@media (prefers-reduced-motion: reduce) {
  .assets-import-progress-bar {
    transition: none;
  }
}

/* Yardi — Data Feed tab */
.yardi-odata-head {
  display: flex;
  align-items: center;
  margin-bottom: var(--gc-space-5);
}

.yardi-odata-head-actions {
  display: flex;
  align-items: center;
  gap: var(--gc-space-2);
  width: 100%;
  min-width: 0;
}

.yardi-odata-url {
  flex: 1 1 auto;
  min-width: 0;
  max-width: none;
  padding: var(--gc-space-2) var(--gc-space-3);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-sm);
  background: var(--gc-surface-muted, color-mix(in srgb, var(--gc-text) 6%, var(--gc-surface)));
  color: var(--gc-text);
  font-size: var(--gc-text-sm);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.yardi-odata-copy {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--gc-control-min-height);
  height: var(--gc-control-min-height);
  padding: 0;
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-sm);
  background: var(--gc-surface);
  color: var(--gc-navy-800);
  cursor: pointer;
}

.yardi-odata-copy:hover,
.yardi-odata-copy:focus-visible {
  border-color: var(--gc-navy-500);
  color: var(--gc-navy-500);
}

.yardi-odata-copy.is-copied {
  color: var(--gc-success, var(--gc-health-ok));
  border-color: var(--gc-success, var(--gc-health-ok));
}

.yardi-odata-copy-ico {
  display: block;
  width: var(--gc-icon-md);
  height: var(--gc-icon-md);
}

.gc-kpi-grid.yardi-odata-kpis {
  margin: 0 0 var(--gc-space-5);
  grid-template-columns: 1fr;
}

@media (min-width: 640px) {
  .gc-kpi-grid.yardi-odata-kpis {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (min-width: 1024px) {
  .gc-kpi-grid.yardi-odata-kpis {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (min-width: 1280px) {
  .gc-kpi-grid.yardi-odata-kpis {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

.yardi-odata-matrix {
  position: relative;
  margin-bottom: var(--gc-space-5);
}

.yardi-odata-legend {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gc-space-3);
  margin: 0 0 var(--gc-space-3);
  color: var(--gc-text-muted);
  font-size: var(--gc-text-xs);
}

.yardi-odata-person {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  text-align: left;
}

.yardi-odata-person strong {
  display: block;
  font-size: var(--gc-text-sm);
}

.yardi-odata-person small {
  display: block;
  color: var(--gc-text-muted);
  font-size: var(--gc-text-xs);
}

.yardi-odata-switch {
  justify-content: center;
}

.yardi-odata-savebar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--gc-space-3);
  margin-top: var(--gc-space-4);
  padding: var(--gc-space-3) var(--gc-space-4);
  border: 1px solid var(--gc-border);
  border-radius: var(--gc-radius-md, var(--gc-radius-sm));
  background: var(--gc-navy-800);
  color: var(--gc-surface);
}

.yardi-odata-savebar-copy {
  flex: 1 1 12rem;
}

.yardi-odata-savebar-copy strong {
  display: block;
  font-size: var(--gc-text-sm);
}

.yardi-odata-savebar-copy span {
  color: color-mix(in srgb, var(--gc-surface) 72%, transparent);
  font-size: var(--gc-text-xs);
}

.yardi-odata-logs {
  margin-top: var(--gc-space-5);
}
