/*
 * MONETIC UI - m0 Design System
 * ==============================
 * Grayscale foundation with deep blue and gold accents
 * Multi-tenant themeable via server-provided CSS variables
 */

@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;500;700;900&family=IBM+Plex+Mono:wght@400;500&display=swap');

/* ============================================================================
   CSS CUSTOM PROPERTIES (m0 Design Tokens)
   ============================================================================ */

:root {
    /* Deep Blue Accent - Rich and Professional */
    --primary-blue: #1a4b8c;
    --primary-blue-glow: #1a4b8c99;
    --secondary-blue: #0d3b66;
    --navy-dark: #0a1628;
    
    /* Gold Accent - Warmth and Prestige */
    --accent-gold: #c9a227;
    --accent-gold-glow: #c9a227cc;
    --accent-gold-light: #d4af37;
    
    /* Legacy compatibility (mapped to new palette) */
    --accent-red: var(--accent-gold);
    --accent-red-glow: var(--accent-gold-glow);
    --accent-red-dark: #a68b1f;
    
    --patriot-white: #e8e8ec;
    --star-white: #ffffff;
    
    /* Background Colors - Steel Charcoal */
    --dark-bg: #0a0a0f;
    --card-bg: #141419;
    --modal-bg: #1a1a22;
    --panel-bg: linear-gradient(135deg, #141419 0%, #1e1e28 100%);
    
    /* Grid and Effects */
    --grid-color: #1a4b8c12;
    --border-glow: #1a4b8c80;
    --border-glow-gold: #c9a22780;
    --border-glow-red: var(--border-glow-gold);
    
    /* Typography */
    --text-primary: #e8e8ec;
    --text-secondary: #a0a0b0;
    --text-accent: #5a8fd4;
    --text-accent-gold: #d4af37;
    --text-accent-red: var(--text-accent-gold);
    /*
     * Bumped 2026-04-18 from #606070 to #86869a so muted text passes
     * WCAG AA (4.5:1) on both `--dark-bg` and `--card-bg`. The previous
     * value was ~3.2:1 on dark and ~2.9:1 on cards — failing AA for
     * normal text and the 3:1 minimum for UI components on cards.
     * The new value preserves the muted hierarchy: still distinctly
     * less luminous than `--text-secondary` (#a0a0b0) so the visual
     * tier still reads "secondary > muted".
     *
     * NOTE for the future theme system (Phase 2): this is exactly the
     * kind of value that NFT-derived themes need to ship within a
     * versioned spec so we can validate contrast ratios before
     * applying them — see docs/specs/ui-theme-spec-v1.md (TBD).
     */
    --text-muted: #86869a;
    
    /* Status Colors */
    --status-success: var(--status-success);
    --status-warning: #c9a227;
    --status-error: var(--status-error);
    --status-info: #5a8fd4;
    
    /* Spacing Scale */
    --spacing-xs: 0.25rem;
    --spacing-sm: 0.5rem;
    --spacing-md: 1rem;
    --spacing-lg: 1.5rem;
    --spacing-xl: 2rem;

    /* Panel edge padding — the breathing room between a panel's
       outer border / chrome divider and its inner content. The
       canonical "header + scrollable list" panel idiom (Home,
       Account Management, Entity / Principal Management, …) was
       letting text run flush against the left/right edges; this
       token gives each panel a single source of truth for the
       inset so a future "tighten everything by 2px" review only
       touches one declaration. Defaults to spacing-md (1rem) —
       large enough to read as deliberate negative space, not so
       large that it eats horizontal real estate on narrow
       columns. */
    --panel-edge-pad: var(--spacing-md);

    /* ──────────────────────────────────────────────────────────
       Canonical interaction states (hover / focus / active).
       Single source of truth so every clickable surface in the
       UI reads with the same visual grammar:

       - **Hover** = subtle bg overlay + 1px gold outline. The
         outline says "this is interactive" without the visual
         weight of a focus ring. Distinguishable from focus
         because: 1px (not 2px), no offset (sits flush on edge),
         lower-alpha gold. Works on dark + light surfaces alike
         because both layers are color-mix on accent tokens.
       - **Focus** = 2px solid gold outline at 2px offset. This
         is the keyboard-nav indicator; deliberately stronger
         than hover so screen-reader / keyboard users get an
         unambiguous selection cue distinct from mouse-over.
       - **Active (pressed)** = 1px transform offset (down).
         Tactile feedback that the press registered.

       Use the matching `--interactive-*` tokens on any clickable
       surface: buttons, list items, cards, links acting as CTAs.
       Per-component overrides are fine when the design needs
       them (e.g. destructive buttons get a red focus ring), but
       start from these tokens so the default reads consistent.
       ────────────────────────────────────────────────────────── */
    --interactive-hover-bg: color-mix(in srgb, var(--anviz-accent-secondary) 14%, transparent);
    --interactive-hover-outline: 1px solid color-mix(in srgb, var(--anviz-accent-primary) 60%, transparent);
    --interactive-focus-outline: 2px solid var(--anviz-accent-primary);
    --interactive-focus-offset: 2px;
    --interactive-active-translate: 1px;

    /* ──────────────────────────────────────────────────────────
       Canonical workspace bar primitives.

       Both bars (chat-side `.chat-bar-row` + `.chat-input-container`,
       panel-side `.m-panel-bar`) share these so any height,
       padding, or chrome change touches one declaration and
       both bars stay in lockstep. The user's "why aren't they
       using the same theme primitives" rule, codified.

       - **Top row**: 52px container holding 44px-tall buttons
         centered vertically. Used for the chat-bar (Threads /
         D.B.O.M. / Send / Receive) and the panel-bar's top
         (panel-switcher tabs OR item-sub-tabs).
       - **Bottom row**: 76px = 44px button + `--panel-edge-pad`
         on top + bottom. Used for the chat input row (textarea
         + send button at min-height) and the panel-bar's
         bottom (`[← ⚙]` / middle / `[X]`). The chat input row
         can grow above this (textarea max-height 120px); the
         panel row stays fixed.
       - **Button size**: 44px height across every bar button
         in the workspace. Single canonical touch target.
       - **Chrome**: shared background + border-top declarations
         so chat + auxiliary chrome render identically.

       The bar `border-top` separates the bar from the panel
       content above. The TOP row's `border-bottom` separates
       the two rows within a bar. The BOTTOM row carries no
       extra border — it inherits the parent bar's chrome. This
       mirror-image structure is enforced on both sides
       (chat-side: `.chat-bar-row` border-top + border-bottom,
       `.chat-input-container` border-top: none).
       ────────────────────────────────────────────────────────── */
    --bar-button-size: 44px;
    --bar-row-height-top: 52px;
    /* Outer height of the canonical bar bottom row.
       
       Both `.chat-input-container` (chat-side) and
       `.m-panel-bar__row--bottom` (panel-side) consume this token
       as their `min-height`. Matching values land both bars'
       bottom edges at the same Y position so the chat panel and
       the right-side panel(s) read as a unified control surface
       across the workspace.
       
       Theoretical minimum is `--bar-button-size + --panel-edge-pad
       * 2` = 44 + 28 = 72px (a 44px button inside a 14px-padded
       frame). Empirical chat render is 5px taller because the
       chat-input textarea's user-agent baseline + line-height
       pushes its content area to 49px, so the chat-input-container
       outer = 49 + 28 = 77px regardless of the min-height token.
       
       To make the panel-bar bottom row match that rendered height,
       this token is hardcoded to 77px (the empirical chat render)
       rather than the theoretical 72px. Both consumers' min-height
       lands at 77; the panel bar (with chip content shorter than
       49) sits exactly at 77; chat (with content >= 49) also sits
       at 77 (or grows further if the textarea expands past 49px,
       which is allowed up to the chat input's `max-height: 120px`).
       
       Adjust this token if the chat textarea's intrinsic content
       baseline shifts (font change, line-height change, padding
       tweak on `.chat-input-field`). The two bars must keep
       sharing the same value. */
    --bar-row-height-bottom: 77px;
    --bar-row-bg: color-mix(in srgb, var(--card-bg) 70%, transparent);
    --bar-row-border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    --bar-row-divider: 1px solid color-mix(in srgb, var(--text-accent) 18%, transparent);
    /* Divider thickness as a bare value (not the full
       `border:` shorthand above) so calc() arithmetic on row
       heights can include it. The chat-side `.chat-bar-row`'s
       border-bottom sits OUTSIDE the inner `.chat-bar` box,
       adding 1px to the row's outer height; the panel-side
       `.m-panel-bar__row--top`'s border-bottom is INSIDE its
       border-box height and subtracts from the content area.
       Adding this thickness to the panel-side row--top height
       cancels the subtraction so both bars stack to the same
       total pixel height. Pre-fix the panel side was 1px
       shorter than the chat side. */
    --bar-row-divider-thickness: 1px;

    /* Border Radius */
    --radius-sm: 5px;
    --radius-md: 10px;
    --radius-lg: 15px;
    --radius-pill: 25px;
    
    /* Animation */
    --duration-fast: 0.2s;
    --duration-normal: 0.3s;
    --duration-slow: 0.5s;
    
    /* Shadows */
    --shadow-glow-blue: 0 0 20px var(--primary-blue-glow);
    --shadow-glow-gold: 0 0 20px var(--accent-gold-glow);
    --shadow-glow-red: var(--shadow-glow-gold);

    /*
     * an-viz DesignTokens bridge (core/an-viz client/config.rs — DesignTokens::from_css).
     * The an-viz crate has no DOM tile primitives; GPU views read these. Domain shells
     * reuse the same tokens so canvases and chrome stay aligned.
     */
    --anviz-bg-primary: #0a0a0f;
    --anviz-bg-panel: color-mix(in srgb, var(--card-bg) 85%, transparent);
    --anviz-accent-primary: #c9a227;
    --anviz-accent-secondary: #1a4b8c;
    --anviz-accent-tertiary: #e8e8ec;
    --anviz-data-low: #1e3a5f;
    --anviz-data-mid: #5a8fd4;
    --anviz-data-high: #c9a227;
    --anviz-grid-color: color-mix(in srgb, var(--primary-blue) 8%, transparent);
    --anviz-grid-major: color-mix(in srgb, var(--primary-blue) 15%, transparent);
    --anviz-axis-x: var(--status-error);
    --anviz-axis-y: var(--status-success);
    --anviz-axis-z: #5a8fd4;
    --anviz-glow-color: color-mix(in srgb, var(--primary-blue) 30%, transparent);
    --anviz-bloom-threshold: 0.8;
    --anviz-bloom-intensity: 0.3;
}

/* ============================================================================
   BASE STYLES
   ============================================================================ */

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html, body {
    width: 100%;
    height: 100%;
    font-family: 'Orbitron', monospace;
    font-size: 14px;
    color: var(--text-primary);
    background: var(--dark-bg);
    -webkit-font-smoothing: antialiased;
    line-height: 1.6;
    overflow: hidden;
    
    /* Subtle grid background - steel blue tint */
    background-image:
        radial-gradient(circle at 10% 20%, rgba(255, 255, 255, 0.02) 1px, transparent 1px),
        radial-gradient(circle at 70% 30%, rgba(255, 255, 255, 0.015) 1px, transparent 1px),
        linear-gradient(color-mix(in srgb, var(--primary-blue) 4%, transparent) 1px, transparent 1px),
        linear-gradient(90deg, color-mix(in srgb, var(--primary-blue) 4%, transparent) 1px, transparent 1px);
    background-size: 400px 400px, 500px 500px, 50px 50px, 50px 50px;
    background-color: var(--dark-bg);
}

/* m0 accent stripe - subtle blue/gold gradient */
body::after {
    content: '';
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    height: 2px;
    background: linear-gradient(90deg, 
        var(--primary-blue) 0%, 
        var(--secondary-blue) 40%,
        var(--accent-gold) 60%, 
        var(--accent-gold-light) 100%
    );
    z-index: 9999;
    pointer-events: none;
}

/* ============================================================================
   WORKSPACE
   ============================================================================ */

.monetic-app {
    width: 100%;
    /* iOS Safari's `100vh` is the LARGE viewport (URL bar +
       bottom tab bar excluded from the calculation), so content
       laid out to `100vh` extends BEHIND the chrome and the
       bottom-most rows (chat-bar with Threads / D.B.O.M. /
       Send / Receive) get occluded by Safari's bottom UI.
       
       `100dvh` (dynamic viewport height) uses the CURRENT
       visible viewport — shrinks/grows as Safari hides/shows
       its chrome. Safari 15.4+ (March 2022) supports it; older
       browsers fall through to the `100vh` declaration above
       per the cascade.
       
       The viewport meta tag carries `viewport-fit=cover` so
       `env(safe-area-inset-bottom)` resolves to the iPhone's
       home-indicator inset where applicable (Face ID models).
       The chat-bar's bottom row already provides enough
       breathing room above the home indicator without an
       explicit padding-bottom — if a future panel pushes
       content flush to the bottom edge, add the inset there. */
    height: 100vh;
    height: 100dvh;
    display: flex;
    flex-direction: column;
    background: transparent;
}

/* Single-panel architecture (PR Series A.2.2b+, 2026-05-10):
   `.workspace` is a horizontal flex row holding two regions —
   chat (fixed-ish width, always left) and the auxiliary
   panel slot (flexes to fill). Pre-A.2.2b this was a column
   that stacked `.workspace-panels` (horizontal panel strip)
   above the minimized tray; both retired. */
.workspace {
    flex: 1;
    display: flex;
    flex-direction: row;
    overflow: hidden;
}

/* Chat region — left side, always visible. Width
   determined by `style:flex-grow=split` (workspace state's
   `chat_panel_split`, default 0.5 for an even split). The
   `flex-basis: 0` lets `flex-grow` be the sole sizing
   authority; min-width clamps the absolute floor below
   which the divider can't be dragged. */
.workspace-chat-region {
    flex: 0.5 1 0;
    min-width: 280px;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

/* Auxiliary panel region — right side. Same flex-grow
   model as chat-region; default 0.5 (even split). */
.workspace-panel-region {
    flex: 0.5 1 0;
    min-width: 280px;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

/* Draggable divider between chat and auxiliary panel.
   PR Series A.3 hotfix (2026-05-11): introduces a single
   resize affordance on the chat / panel boundary (different
   from the legacy multi-panel per-panel resize handles).
   Drag updates `WorkspaceState::chat_panel_split` via the
   workspace shell's mousedown-and-track handler;
   persistence rides the existing workspace-state
   localStorage path. */
.workspace-divider {
    flex: 0 0 6px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: col-resize;
    background: rgb(from var(--card-bg) r g b / 0.50);
    border-left: 1px solid rgb(from var(--text-accent) r g b / 0.18);
    border-right: 1px solid rgb(from var(--text-accent) r g b / 0.18);
    transition: background-color 120ms ease;
    touch-action: none;
    z-index: 1;
}

.workspace-divider:hover,
.workspace-divider:active {
    background: rgb(from var(--text-accent) r g b / 0.18);
}

.workspace-divider__grip {
    display: block;
    width: 2px;
    height: 32px;
    background: rgb(from var(--text-accent) r g b / 0.40);
    border-radius: 1px;
    pointer-events: none;
}

.workspace-divider:hover .workspace-divider__grip,
.workspace-divider:active .workspace-divider__grip {
    background: var(--text-accent);
}

/* Inner slot wrapper so future split-pane modes can layer
   without affecting the region's flex behavior. */
.workspace-panel-slot {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-height: 0;
}

/* Mobile (≤768px): two-page swipeable workspace.
   
   Pattern (specced 2026-06-12, operator UX call):
   - Page 1 (default) = chat region, full viewport width.
   - Page 2          = active panel region, full viewport width.
   - Swipe right-to-left snaps from page 1 → page 2 (and back).
   - Tap "Send" / "Receive" / any nav.push_root from the chat-bar
     also lands the user on page 2 — the workspace's
     `create_effect` watcher in `workspace/mod.rs` calls
     `scrollIntoView()` on the panel region whenever the active
     panel changes on mobile.
   
   CSS scroll-snap is the canonical primitive — no JS for the
   swipe gesture itself, just for the programmatic-tap path.
   `scroll-behavior: smooth` on the workspace makes the
   programmatic `scrollIntoView()` animate at the same ease as
   the native swipe.
   
   Desktop (>768px) is unchanged — flex-row split with the
   draggable divider; the panel-region's inline `style:flex-grow`
   drives the resize handle. On mobile we override that inline
   flex-grow with `!important` so both regions become fixed
   100vw pages regardless of where the divider was last
   dragged on desktop. */
@media (max-width: 768px) {
    .workspace {
        flex-direction: row;
        overflow-x: scroll;
        overflow-y: hidden;
        /* **No `scroll-snap-type`** — runtime evidence
           (Safari Web Inspector scroll-event log, 2026-06-13):
           every tap on an interior panel button triggers iOS
           Safari's tap-to-focus-into-view autoscroll, and any
           `scroll-snap-type` value (mandatory, proximity)
           then re-snaps to chat (scrollLeft=0) as the "nearest"
           snap point — even when the panel region was at
           scrollLeft=393 immediately before the tap. The bounce
           fires WITHIN ONE FRAME, before any Rust event handler
           runs, so it's not preventable from our app code.
           CSS scroll-snap is incompatible with this layout's
           interaction model; the canonical fix is to disable
           scroll-snap entirely and let `overflow-x: scroll`
           handle the swipe gesture without any "settle to the
           nearest page" behavior. Programmatic scrolls
           (`workspace.scrollTo(...)`) then land and stay.
           User-initiated swipes still page-swap fine — iOS
           Safari's native scroll-momentum is sufficient on a
           container where each child is exactly `100vw`. If we
           ever want true page-pagination behavior back, the
           canonical replacement is a JS-side touchend listener
           that calls `scrollTo(round(scrollLeft / clientWidth) *
           clientWidth, 0)` — that's scope for a follow-up; the
           current behavior (free swipe + reliable programmatic
           snap) is the documented mobile workspace contract. */
        /* `overflow-anchor: none` belt-and-suspenders: prevents
           WebKit's scroll-anchoring heuristic from preserving a
           "visual anchor" when the panel content reflows
           (e.g. when a panel re-renders after a NavigatePush).
           Without this, focus moving to a freshly-rendered
           interactive element can shift `scrollLeft` to keep
           that anchor in view, defeating our `scrollTo`. */
        overflow-anchor: none;
        /* Stop horizontal scroll-chaining into ancestor
           scrollers — bounded swipe so the mobile workspace
           doesn't accidentally drive page-level overscroll. */
        overscroll-behavior-x: contain;
        scrollbar-width: none;
        -ms-overflow-style: none;
    }
    .workspace::-webkit-scrollbar {
        display: none;
    }
    .workspace-chat-region,
    .workspace-panel-region {
        /* Override the inline `style:flex-grow` set by the
           desktop resize logic — on mobile both regions are
           fixed 100vw pages, not a flex split. */
        flex: 0 0 100vw !important;
        width: 100vw;
        min-width: 100vw;
        max-width: 100vw;
        height: 100%;
        /* `scroll-snap-align` retired alongside the parent's
           `scroll-snap-type` — see the parent's comment for the
           runtime evidence proving snap-type fights our
           programmatic `scrollTo`. The child snap-align is
           dead-letter without it. */
        overflow-y: auto;
    }
    .workspace-divider {
        display: none;
    }
    /* The chat-region's panel-container has a border-right
       that reads as a desktop side-by-side separator. On
       mobile the regions are separate scroll-snap pages
       (not side-by-side), so the border becomes visual
       noise at the right edge of page 1. Hide it. */
    .workspace-chat-region .panel-container,
    .workspace-panel-region .panel-container {
        border-right: none;
    }
}

/* `.workspace-panels` retired in PR Series A.3 (2026-05-11)
   along with the multi-panel `<For>` render. Kept the
   selector commented for one release window in case any
   stale CSS rules elsewhere reference it via cascade. */
/* .workspace-panels { … legacy multi-panel horizontal strip … } */

/* ============================================================================
   PANEL CONTAINER (single-panel architecture, PR Series A.3, 2026-05-11)
   ============================================================================
   Pre-A.3: heavyweight container with two width modes (auto-share via
   `flex: 1 1 0` for the multi-panel <For> + locked `.user-sized` for the
   resize-handle flow). Both retired with the multi-panel infrastructure.
   The container now fills its parent flex slot — chat region for chat,
   auxiliary slot for whichever panel is current per
   `state.workspace.history.current()`. */

.panel-container {
    flex: 1 1 auto;
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    height: 100%;
    width: 100%;
    position: relative;

    /* Smooth focus transitions (ADR-012) — kept for the
       chat/aux focus-class toggle even though under single-
       panel both are always "focused" in the rendering sense. */
    transition:
        box-shadow var(--duration-fast) ease-out,
        background var(--duration-fast) ease-out;

    /* Frosted glass effect */
    background: color-mix(in srgb, var(--card-bg) 85%, transparent);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-right: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);

    /* Subtle inner glow */
    box-shadow: inset 0 0 40px color-mix(in srgb, var(--text-accent) 3%, transparent);
}

/* `.user-sized` retired in PR Series A.3 (2026-05-11) along
   with the resize handle. */

.panel-container:last-child {
    border-right: none;
}

.panel-container.focused {
    background: color-mix(in srgb, var(--card-bg) 90%, transparent);
    box-shadow: 
        inset 0 0 40px color-mix(in srgb, var(--text-accent) 8%, transparent),
        inset 0 0 0 1px color-mix(in srgb, var(--text-accent) 50%, transparent);
}

/* Panel header with patriot stripe */
.panel-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--card-bg) 70%, transparent);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    min-height: 44px;
    position: relative;
}

.panel-header::after {
    content: '';
    position: absolute;
    bottom: -1px;
    left: 0;
    right: 0;
    height: 2px;
    background: linear-gradient(90deg, 
        var(--accent-red),
        var(--patriot-white),
        var(--primary-blue)
    );
}

.panel-header-title {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: var(--primary-blue);
}

.panel-code {
    font-size: 0.6rem;
    font-weight: 900;
    padding: 2px 6px;
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-sm);
    letter-spacing: 1px;
}

.panel-header-controls {
    display: flex;
    gap: var(--spacing-xs);
}

.panel-control {
    width: 24px;
    height: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: 1px solid transparent;
    border-radius: var(--radius-sm);
    color: var(--text-muted);
    cursor: pointer;
    font-size: 14px;
    transition: all var(--duration-fast);
}

.panel-control:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}

.panel-control.close:hover {
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
    border-color: var(--accent-red);
    color: var(--accent-red);
}

.panel-control.bug-report {
    font-size: 12px;
}

.panel-control.bug-report:hover {
    background: rgba(255, 152, 0, 0.15);
    border-color: rgba(255, 152, 0, 0.5);
}

/* ============================================================================
   BUG REPORT MODAL
   ============================================================================ */

.bug-report-overlay {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.7);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1000;
    animation: fadeIn 0.2s ease;
}

.bug-report-modal {
    background: var(--surface-panel);
    border: 1px solid var(--border-color);
    border-radius: 12px;
    width: 90%;
    max-width: 480px;
    max-height: 90vh;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    animation: slideUp 0.2s ease;
}

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes slideUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.bug-report-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--spacing-md) var(--spacing-lg);
    border-bottom: 1px solid var(--border-color);
}

.bug-report-header h3 {
    margin: 0;
    font-size: 16px;
    font-weight: 600;
    color: var(--text-primary);
}

.bug-report-close {
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    color: var(--text-muted);
    font-size: 20px;
    cursor: pointer;
    border-radius: 4px;
}

.bug-report-close:hover {
    background: rgba(255, 255, 255, 0.1);
    color: var(--text-primary);
}

.bug-report-body {
    padding: var(--spacing-lg);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    overflow-y: auto;
}

.bug-report-context {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: 6px;
    font-size: 13px;
}

.bug-report-context .context-label {
    color: var(--text-muted);
}

.bug-report-context .context-value {
    color: var(--primary-blue);
    font-weight: 500;
}

.bug-report-field {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.bug-report-field label {
    font-size: 13px;
    font-weight: 500;
    color: var(--text-secondary);
}

.bug-report-field textarea {
    background: var(--surface-bg);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: var(--spacing-md);
    font-family: inherit;
    font-size: 14px;
    color: var(--text-primary);
    resize: vertical;
}

.bug-report-field textarea:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.bug-report-field textarea::placeholder {
    color: var(--text-muted);
}

.bug-report-option {
    display: flex;
    align-items: center;
}

.bug-report-option label {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    font-size: 14px;
    color: var(--text-secondary);
    cursor: pointer;
}

.bug-report-option input[type="checkbox"] {
    width: 16px;
    height: 16px;
    accent-color: var(--primary-blue);
}

.bug-report-footer {
    display: flex;
    justify-content: flex-end;
    gap: var(--spacing-md);
    padding: var(--spacing-md) var(--spacing-lg);
    border-top: 1px solid var(--border-color);
}

.bug-report-cancel {
    padding: var(--spacing-sm) var(--spacing-lg);
    background: transparent;
    border: 1px solid var(--border-color);
    border-radius: 6px;
    color: var(--text-secondary);
    font-size: 14px;
    cursor: pointer;
}

.bug-report-cancel:hover {
    background: rgba(255, 255, 255, 0.05);
    color: var(--text-primary);
}

.bug-report-submit {
    padding: var(--spacing-sm) var(--spacing-lg);
    background: var(--primary-blue);
    border: none;
    border-radius: 6px;
    color: white;
    font-size: 14px;
    font-weight: 500;
    cursor: pointer;
}

.bug-report-submit:hover:not(:disabled) {
    background: #0090cc;
}

.bug-report-submit:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.bug-report-success {
    padding: var(--spacing-xl);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-md);
    text-align: center;
}

.bug-report-success .success-icon {
    font-size: 48px;
}

.bug-report-success p {
    font-size: 16px;
    color: var(--text-secondary);
    margin: 0;
}

/* Panel Content Container
 * 
 * PATTERN: The .panel-content wrapper fills available space (flex: 1).
 * Each panel's root element (e.g., .chat-panel, .vault-panel) should:
 * 
 * 1. Set height: 100% to fill the container
 * 2. Set overflow-y: auto for vertical scrolling
 * 3. Use display: flex; flex-direction: column for internal layout
 * 
 * Example panel structure:
 *   .panel-content (this class - flex container)
 *     .my-panel (height: 100%, overflow-y: auto, display: flex, flex-direction: column)
 *       .my-panel-header (flex: 0 - fixed height)
 *       .my-panel-content (flex: 1, overflow-y: auto - scrollable area)
 *       .my-panel-footer (flex: 0 - fixed height, optional)
 */
.panel-content {
    flex: 1;
    overflow: hidden;
    /* Fallback scroll for panels that don't set their own */
    /* Individual panels should use overflow-y: auto on their root element */
}

/* Base styles for all panel root elements
 * Panels use the naming convention: .{panel-name}-panel
 * This provides sensible defaults for scrolling behavior
 * 
 * Individual panels can override overflow if they have internal scroll containers.
 * Panels with complex layouts (header + scroll area + footer) should:
 * 1. Set overflow: hidden on the panel root
 * 2. Set overflow-y: auto on the scrollable content area
 */
[class$="-panel"] {
    height: 100%;
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

/* Panels with internal scroll containers - prevent double scrolling
 * These panels have a header/footer + scrollable content area pattern.
 * The content area (e.g., .chat-messages-container) handles scrolling.
 * On mobile, the media query overrides this to allow panel-level scroll.
 *
 * WARNING: Only add a panel here if it has a dedicated internal scroll container
 * (e.g., .chat-messages-container, .panel-scrollable). Otherwise the panel
 * won't scroll at all and content will be clipped.
 *
 * If your panel just has a bunch of content that should scroll, do NOT add it
 * here - the base [class$="-panel"] rule already provides overflow-y: auto.
 */
.chat-panel,
.transactions-panel,
.settings-panel,
.comms-panel,
.onboarding-panel,
.opex-panel,
.spend-shell-panel,
.home-panel,
.vault-panel,
.address-book-panel,
.services-shell-panel,
.books-panel {
    overflow: hidden;
}

/* Scrollable panel content - use this class for the main scrollable area */
.panel-scrollable {
    flex: 1;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

/* ============================================================================
   LAZY PANEL SKELETON (ADR-012 Phase 3)
   ============================================================================ */

.lazy-panel-wrapper {
    width: 100%;
    height: 100%;
}

.panel-skeleton {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    animation: skeleton-pulse 1.5s ease-in-out infinite;
}

.skeleton-header {
    height: 32px;
    background: linear-gradient(90deg, 
        color-mix(in srgb, var(--text-accent) 5%, transparent) 0%,
        color-mix(in srgb, var(--text-accent) 10%, transparent) 50%,
        color-mix(in srgb, var(--text-accent) 5%, transparent) 100%);
    border-radius: var(--radius-md);
}

.skeleton-content {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.skeleton-line {
    height: 16px;
    background: linear-gradient(90deg, 
        color-mix(in srgb, var(--text-accent) 3%, transparent) 0%,
        color-mix(in srgb, var(--text-accent) 8%, transparent) 50%,
        color-mix(in srgb, var(--text-accent) 3%, transparent) 100%);
    border-radius: var(--radius-sm);
}

.skeleton-line.short {
    width: 60%;
}

@keyframes skeleton-pulse {
    0%, 100% { opacity: 0.6; }
    50% { opacity: 1; }
}

/* ============================================================================
   RESIZE HANDLE
   ============================================================================ */

.resize-handle {
    position: absolute;
    top: 0;
    right: -3px;
    width: 6px;
    height: 100%;
    cursor: col-resize;
    z-index: 10;
    background: transparent;
    transition: background 0.15s ease;
}

.resize-handle:hover {
    background: linear-gradient(180deg, var(--accent-red), var(--primary-blue));
    box-shadow: 0 0 10px var(--primary-blue-glow);
}

/* Global resizing state - applied to body during drag */
body.resizing {
    cursor: col-resize !important;
    user-select: none !important;
}

body.resizing * {
    cursor: col-resize !important;
}

body.resizing .resize-handle {
    background: linear-gradient(180deg, var(--accent-red), var(--primary-blue));
    box-shadow: 0 0 10px var(--primary-blue-glow);
}

/* ============================================================================
   CHAT PANEL
   ============================================================================ */

.chat-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: transparent;
}

/* Holographic Memory Upgrade Notice */
.chat-upgrade-notice {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    padding: var(--spacing-xl);
    text-align: center;
    color: var(--text-primary);
}

.chat-upgrade-notice .upgrade-icon {
    color: var(--accent-cyan);
    opacity: 0.8;
    margin-bottom: var(--spacing-lg);
    animation: pulse-glow 2s ease-in-out infinite;
}

@keyframes pulse-glow {
    0%, 100% { opacity: 0.6; transform: scale(1); }
    50% { opacity: 1; transform: scale(1.05); }
}

.chat-upgrade-notice h2 {
    font-size: 1.5rem;
    font-weight: 500;
    color: var(--text-primary);
    margin-bottom: var(--spacing-md);
}

.chat-upgrade-notice .upgrade-description {
    max-width: 400px;
    font-size: 0.95rem;
    color: var(--text-secondary);
    line-height: 1.6;
    margin-bottom: var(--spacing-lg);
}

.chat-upgrade-notice .upgrade-features {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-lg);
}

.chat-upgrade-notice .feature {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    font-size: 0.9rem;
    color: var(--text-primary);
}

.chat-upgrade-notice .feature-icon {
    color: var(--accent-cyan);
    font-weight: bold;
}

.chat-upgrade-notice .upgrade-status {
    font-size: 0.85rem;
    color: var(--text-tertiary);
    font-style: italic;
}

/* ============================================================================
   HOLOGRAPHIC STATUS BAR
   ============================================================================ */

.holographic-status-bar {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-xs) var(--spacing-md);
    background: linear-gradient(90deg, color-mix(in srgb, var(--primary-blue) 15%, transparent) 0%, color-mix(in srgb, var(--text-accent) 8%, transparent) 100%);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    font-size: 0.8rem;
}

/* Modality Indicator */
.status-modality {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: 2px 8px;
    border-radius: 4px;
    font-weight: 500;
}

.status-modality .modality-icon {
    font-size: 1rem;
}

.status-modality .modality-label {
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.status-modality .build-phase {
    opacity: 0.7;
    font-weight: 400;
}

/* Modality colors */
.modality-discovery {
    background: rgba(138, 43, 226, 0.2);
    color: #b366ff;
}

.modality-research {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    color: var(--accent-cyan);
}

.modality-build {
    background: rgba(255, 165, 0, 0.2);
    color: var(--status-warning);
}

.modality-execute {
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    color: var(--status-success);
}

/* Regime Indicator */
.status-regime {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: 2px 8px;
    border-radius: 4px;
}

.status-regime .regime-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: currentColor;
    animation: regime-pulse 2s ease-in-out infinite;
}

.status-regime .regime-label {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

@keyframes regime-pulse {
    0%, 100% { opacity: 0.6; }
    50% { opacity: 1; }
}

/* Regime colors */
.regime-unknown {
    color: var(--text-tertiary);
}

.regime-exploring {
    color: #9966ff;
}

.regime-focused {
    color: var(--status-success);
}

.regime-transitioning {
    color: var(--status-warning);
}

.regime-looping {
    color: #ff6b6b;
}

/* Turn Counter */
.status-turn {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-left: auto;
    color: var(--text-secondary);
}

.status-turn .turn-label {
    font-size: 0.7rem;
    text-transform: uppercase;
    opacity: 0.6;
}

.status-turn .turn-count {
    font-family: var(--font-mono);
    font-weight: 500;
    color: var(--text-primary);
}

/* Connection Indicator */
.status-connected,
.status-disconnected {
    display: flex;
    align-items: center;
    padding: 2px;
}

.status-connected .connection-dot,
.status-disconnected .connection-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
}

.status-connected .connection-dot {
    background: var(--status-success);
    box-shadow: 0 0 6px #00ff8866;
}

.status-disconnected .connection-dot {
    background: #ff6b6b;
    box-shadow: 0 0 6px #ff6b6b66;
}

.chat-header {
    padding: var(--spacing-sm) var(--spacing-md);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
}

/* Branch Controls */
.chat-branch-controls {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-sm) var(--spacing-md);
    background: rgba(0, 82, 204, 0.15);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.branch-selector,
.modality-selector {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
}

.branch-label,
.modality-label {
    font-size: 0.75rem;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.branch-dropdown,
.modality-dropdown {
    background: color-mix(in srgb, var(--card-bg) 80%, transparent);
    color: var(--text-primary);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    font-family: var(--font-mono);
    font-size: 0.85rem;
    cursor: pointer;
}

.branch-dropdown:hover,
.modality-dropdown:hover {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.branch-dropdown:focus,
.modality-dropdown:focus {
    outline: none;
    border-color: var(--primary-blue);
    box-shadow: 0 0 8px var(--primary-blue-glow);
}

/* Message action buttons */
.message-actions {
    display: flex;
    gap: var(--spacing-xs);
    margin-top: var(--spacing-sm);
    padding-top: var(--spacing-xs);
    border-top: 1px solid rgba(255, 255, 255, 0.05);
    opacity: 0;
    transition: opacity 0.2s ease;
}

.message:hover .message-actions {
    opacity: 1;
}

/* Onboarding panel actions should always be visible */
.onboarding-panel .message-actions,
.onboarding-message .message-actions {
    opacity: 1;
}

.msg-action-btn {
    background: transparent;
    border: 1px solid rgba(255, 255, 255, 0.1);
    color: var(--text-secondary);
    padding: 4px 8px;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 0.85rem;
    transition: all 0.2s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 28px;
}

.msg-action-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-color: var(--primary-blue);
    color: var(--text-primary);
}

.msg-action-btn.copied {
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    border-color: var(--status-success);
    color: var(--status-success);
}

/* Inline edit form */
.edit-inline {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    width: 100%;
    margin-top: var(--spacing-sm);
}

.edit-inline .edit-textarea {
    width: 100%;
    min-height: 60px;
    background: color-mix(in srgb, var(--card-bg) 80%, transparent);
    color: var(--text-primary);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    padding: var(--spacing-sm);
    font-family: inherit;
    font-size: 0.9rem;
    resize: vertical;
}

.edit-inline .edit-textarea:focus {
    outline: none;
    border-color: var(--primary-blue);
    box-shadow: 0 0 8px var(--primary-blue-glow);
}

.edit-buttons {
    display: flex;
    gap: var(--spacing-xs);
    justify-content: flex-end;
}

.edit-save,
.edit-cancel {
    padding: 4px 12px;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 0.8rem;
    transition: all 0.2s ease;
}

.edit-save {
    background: var(--primary-blue);
    color: var(--star-white);
    border: none;
}

.edit-save:hover {
    background: var(--secondary-blue);
}

.edit-cancel {
    background: transparent;
    color: var(--text-secondary);
    border: 1px solid rgba(255, 255, 255, 0.2);
}

.edit-cancel:hover {
    background: rgba(255, 255, 255, 0.1);
    color: var(--text-primary);
}

.branch-btn {
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    color: var(--text-secondary);
    padding: 4px 8px;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 0.9rem;
    transition: all 0.2s ease;
}

.branch-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-color: var(--primary-blue);
    color: var(--text-primary);
}

.fork-btn:hover {
    border-color: var(--status-info);
}

.edit-btn:hover {
    border-color: var(--status-warning);
}

/* Edit form inline */
.edit-form {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    width: 100%;
}

.edit-textarea {
    width: 100%;
    min-height: 80px;
    background: color-mix(in srgb, var(--card-bg) 80%, transparent);
    color: var(--text-primary);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    padding: var(--spacing-sm);
    font-family: inherit;
    resize: vertical;
}

.edit-textarea:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.edit-actions {
    display: flex;
    gap: var(--spacing-sm);
    justify-content: flex-end;
}

.edit-submit,
.edit-cancel {
    padding: var(--spacing-xs) var(--spacing-md);
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 0.85rem;
    transition: all 0.2s ease;
}

.edit-submit {
    background: var(--primary-blue);
    color: var(--star-white);
    border: none;
}

.edit-submit:hover {
    background: var(--secondary-blue);
}

.edit-cancel {
    background: transparent;
    color: var(--text-secondary);
    border: 1px solid rgba(255, 255, 255, 0.2);
}

.edit-cancel:hover {
    background: rgba(255, 255, 255, 0.1);
}

/* Branch indicator on messages */
.branch-indicator {
    margin-left: var(--spacing-xs);
    font-size: 0.75rem;
    opacity: 0.7;
}

.branch-correction {
    color: var(--status-warning);
}

.branch-exploration {
    color: var(--status-info);
}

.branch-checkpoint {
    color: var(--status-success);
}

.chat-messages-container {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-md);
    min-height: 0;
}

.chat-navigation {
    padding: var(--spacing-sm) var(--spacing-md);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    background: color-mix(in srgb, var(--card-bg) 50%, transparent);
}

/* Chat-input row — Row B of the chat panel's two-row chrome.
   Mirrors the panel-bar's `__row--bottom`: same height
   (`--bar-row-height-bottom`), same chrome (no extra
   border-top — `.chat-bar-row`'s border-bottom serves as the
   between-rows divider, exactly like the panel-bar's top-row
   border-bottom does). Both bars now have IDENTICAL bottom-row
   dimensions and chrome via the shared `--bar-*` tokens. */
.chat-input-container {
    /* `min-height` (not `height`) so the textarea can grow
       beyond the canonical 76px when the user types multiple
       lines — chat input legitimately expands; the panel-bar
       bottom row stays fixed. */
    min-height: var(--bar-row-height-bottom);
    padding: var(--panel-edge-pad);
    background: var(--bar-row-bg);
}

/* Session Manager */
.session-manager {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    position: relative;
}

.current-thread {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-md);
    color: var(--text-primary);
    cursor: pointer;
    font-family: 'Orbitron', monospace;
    font-size: 0.75rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1px;
    transition: all var(--duration-fast);
}

.current-thread:hover {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    box-shadow: var(--shadow-glow-blue);
}

.new-thread {
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, var(--secondary-blue), var(--primary-blue));
    border: none;
    border-radius: var(--radius-md);
    color: white;
    cursor: pointer;
    font-size: 18px;
    font-weight: 700;
    box-shadow: var(--shadow-glow-blue);
    transition: all var(--duration-fast);
    position: relative;
    z-index: 101;  /* Above thread-list dropdown */
    flex-shrink: 0;
}

.new-thread:hover {
    transform: translateY(-2px);
    box-shadow: 0 0 30px var(--primary-blue-glow);
}

.new-thread:active {
    transform: translateY(0);
    box-shadow: var(--shadow-glow-blue);
}

.thread-list {
    position: absolute;
    top: 100%;
    left: 0;
    right: 48px;
    margin-top: var(--spacing-xs);
    background: var(--modal-bg);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-md);
    z-index: 100;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5), var(--shadow-glow-blue);
    max-height: 200px;
    overflow-y: auto;
    
    /* Smooth dropdown animation (ADR-012) */
    animation: dropdown-appear var(--duration-fast) ease-out;
}

@keyframes dropdown-appear {
    from {
        opacity: 0;
        transform: translateY(-8px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.thread-item {
    display: block;
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    background: transparent;
    border: none;
    color: var(--text-secondary);
    cursor: pointer;
    text-align: left;
    pointer-events: auto;
    position: relative;
    font-family: 'Orbitron', monospace;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    transition: all var(--duration-fast);
}

.thread-item:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    color: var(--primary-blue);
}

.thread-item.active {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    color: var(--primary-blue);
    border-left: 3px solid var(--primary-blue);
}

/* Messages */
.message-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    overflow: visible;
}

.message {
    max-width: 85%;
    padding: var(--spacing-md);
    border-radius: var(--radius-lg);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.85rem;
    
    /* Smooth appearance animation (ADR-012) */
    animation: message-appear var(--duration-normal) ease-out;
}

@keyframes message-appear {
    from {
        opacity: 0.7;
        transform: translateY(4px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.message-user {
    align-self: flex-end;
    background: linear-gradient(135deg, var(--secondary-blue), var(--primary-blue));
    color: white;
    box-shadow: var(--shadow-glow-blue);
}

.message-agent {
    align-self: flex-start;
    background: var(--navy-dark);
    border: 1px solid var(--primary-blue);
    color: var(--text-secondary);
}

.message-system {
    align-self: center;
    background: transparent;
    color: var(--text-muted);
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.message-header {
    display: flex;
    justify-content: space-between;
    margin-bottom: var(--spacing-xs);
    font-size: 0.65rem;
    font-family: 'Orbitron', monospace;
    text-transform: uppercase;
    letter-spacing: 1px;
    opacity: 0.7;
}

.message-content {
    line-height: 1.6;
}

/* Markdown Content Styling */
.markdown-content {
    line-height: 1.7;
}

.markdown-content h1,
.markdown-content h2,
.markdown-content h3,
.markdown-content h4,
.markdown-content h5,
.markdown-content h6 {
    color: var(--cyber-cyan);
    font-family: 'Orbitron', monospace;
    margin: 0.8em 0 0.4em 0;
    font-weight: 600;
}

.markdown-content h1 {
    font-size: 1.4rem;
    border-bottom: 1px solid var(--border-color);
    padding-bottom: 0.3em;
}

.markdown-content h2 {
    font-size: 1.2rem;
}

.markdown-content h3 {
    font-size: 1rem;
    color: var(--patriot-gold);
}

.markdown-content p {
    margin: 0.5em 0;
}

.markdown-content ul,
.markdown-content ol {
    margin: 0.5em 0;
    padding-left: 1.5em;
}

.markdown-content li {
    margin: 0.25em 0;
}

.markdown-content strong {
    color: var(--patriot-gold);
    font-weight: 600;
}

.markdown-content em {
    color: var(--text-secondary);
    font-style: italic;
}

.markdown-content code {
    background: rgba(0, 0, 0, 0.5);
    color: var(--cyber-cyan);
    padding: 0.15em 0.4em;
    border-radius: var(--radius-sm);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.85em;
}

.markdown-content pre {
    background: rgba(0, 0, 0, 0.6);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
    padding: var(--spacing-sm);
    margin: 0.75em 0;
    overflow-x: auto;
}

.markdown-content pre code {
    background: none;
    padding: 0;
    color: var(--text-secondary);
    font-size: 0.8rem;
    line-height: 1.5;
}

.markdown-content table {
    width: 100%;
    border-collapse: collapse;
    margin: 0.75em 0;
    font-size: 0.85em;
}

.markdown-content th,
.markdown-content td {
    border: 1px solid var(--border-color);
    padding: 0.4em 0.6em;
    text-align: left;
}

.markdown-content th {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    color: var(--cyber-cyan);
    font-weight: 600;
}

.markdown-content tr:nth-child(even) td {
    background: rgba(0, 0, 0, 0.2);
}

.markdown-content hr {
    border: none;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--border-color), transparent);
    margin: 1em 0;
}

.markdown-content blockquote {
    border-left: 3px solid var(--patriot-gold);
    margin: 0.75em 0;
    padding: 0.5em 1em;
    background: color-mix(in srgb, var(--accent-gold) 5%, transparent);
    color: var(--text-secondary);
}

.markdown-content a {
    color: var(--cyber-cyan);
    text-decoration: none;
    border-bottom: 1px dashed var(--cyber-cyan);
}

.markdown-content a:hover {
    color: var(--patriot-gold);
    border-color: var(--patriot-gold);
}

/* Task lists */
.markdown-content input[type="checkbox"] {
    margin-right: 0.5em;
    accent-color: var(--cyber-cyan);
}

/* Server-rendered diagrams (mermaid, etc.) */
.markdown-content .diagram {
    margin: 1.5rem 0;
    padding: 1rem;
    background: rgba(10, 25, 47, 0.9);
    border: 1px solid var(--cyber-cyan);
    border-radius: var(--radius-md);
    box-shadow: 0 0 20px color-mix(in srgb, var(--text-accent) 15%, transparent);
    /* Container fits content */
    display: inline-block;
    max-width: 100%;
    transition: all 0.3s ease;
}

/* SVG sizing - use width to control size, container follows */
.markdown-content .diagram svg {
    display: block;
    /* Default: small thumbnail */
    width: 280px;
    height: auto;
    cursor: zoom-in;
    transition: width 0.3s ease;
}

/* Expand on hover */
.markdown-content .diagram:hover svg {
    width: 500px;
    cursor: zoom-out;
}

/* Full size on click/active - caps at container width */
.markdown-content .diagram:active svg {
    width: 100%;
    max-width: 800px;
}

/* Hint text */
.markdown-content .diagram figcaption {
    margin-top: 0.5rem;
    text-align: center;
    font-size: 0.8rem;
    color: var(--cyber-cyan);
}

.markdown-content .diagram figcaption::after {
    content: " (hover to zoom)";
    opacity: 0.6;
    font-size: 0.7rem;
}

.markdown-content .diagram figcaption {
    margin-top: 0.75rem;
    font-size: 0.8rem;
    color: var(--cyber-cyan);
    text-align: center;
    font-style: italic;
}

/* Monochromatic cyan theme for diagrams */
.markdown-content .diagram svg * {
    /* Reset all fills and strokes */
}

/* All text white */
.markdown-content .diagram svg text,
.markdown-content .diagram svg tspan,
.markdown-content .diagram svg .nodeLabel,
.markdown-content .diagram svg .label,
.markdown-content .diagram svg .edgeLabel span,
.markdown-content .diagram svg foreignObject div,
.markdown-content .diagram svg foreignObject span,
.markdown-content .diagram svg foreignObject p {
    fill: #ffffff !important;
    color: #ffffff !important;
    font-weight: 500 !important;
}

/* Node boxes - monochromatic cyan */
.markdown-content .diagram svg rect,
.markdown-content .diagram svg .node rect,
.markdown-content .diagram svg .node polygon,
.markdown-content .diagram svg .basic,
.markdown-content .diagram svg .label-container {
    fill: color-mix(in srgb, var(--text-accent) 20%, transparent) !important;
    stroke: var(--cyber-cyan) !important;
    stroke-width: 2px !important;
}

/* Edges/arrows - white for visibility */
.markdown-content .diagram svg path.flowchart-link,
.markdown-content .diagram svg .edgePath path,
.markdown-content .diagram svg line {
    stroke: #ffffff !important;
    stroke-width: 2px !important;
}

/* Arrow markers - white */
.markdown-content .diagram svg marker path,
.markdown-content .diagram svg .arrowMarkerPath {
    fill: #ffffff !important;
    stroke: #ffffff !important;
}

/* Edge labels background */
.markdown-content .diagram svg .edgeLabel rect,
.markdown-content .diagram svg .labelBkg {
    fill: rgba(10, 25, 47, 0.95) !important;
    opacity: 1 !important;
}

/* Cluster/subgraph boxes */
.markdown-content .diagram svg .cluster rect {
    fill: color-mix(in srgb, var(--text-accent) 8%, transparent) !important;
    stroke: color-mix(in srgb, var(--text-accent) 50%, transparent) !important;
}

/* ============================================================================
   ACTION BUTTONS (from an-agent action catalog)
   ============================================================================ */

/* Base action button */
.action-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1.5rem;
    margin: 0.5rem 0.25rem;
    border-radius: var(--radius-md);
    font-family: 'Orbitron', monospace;
    font-weight: 600;
    font-size: 0.85rem;
    cursor: pointer;
    transition: all 0.2s ease;
    border: none;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Interactive actions (forms, wizards) - Blue theme */
.action-btn.interactive {
    background: linear-gradient(135deg, #3b82f6, #2563eb);
    color: white;
    box-shadow: 0 2px 8px rgba(59, 130, 246, 0.4);
}

.action-btn.interactive:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 16px rgba(59, 130, 246, 0.5);
    background: linear-gradient(135deg, #60a5fa, #3b82f6);
}

/* Approval actions (biometric, signing) - Green theme */
.action-btn.approval {
    background: linear-gradient(135deg, #10b981, #059669);
    color: white;
    box-shadow: 0 2px 8px rgba(16, 185, 129, 0.4);
}

.action-btn.approval:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 16px rgba(16, 185, 129, 0.5);
    background: linear-gradient(135deg, #34d399, #10b981);
}

/* Notification actions - Subtle gray theme */
.action-btn.notification {
    background: linear-gradient(135deg, #4b5563, #374151);
    color: #e5e7eb;
    box-shadow: 0 2px 8px rgba(75, 85, 99, 0.3);
}

.action-btn.notification:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(75, 85, 99, 0.4);
}

/* Action button icon */
.action-btn .action-icon {
    font-size: 1.1rem;
}

/* Action button label */
.action-btn .action-label {
    white-space: nowrap;
}

/* Active/pressed state */
.action-btn:active {
    transform: translateY(0);
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
}

/* Disabled state */
.action-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
    transform: none;
}

/* Group of actions */
.markdown-content .action-group {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin: 1rem 0;
}

.message.streaming .typing-indicator {
    color: var(--accent-red);
    animation: blink 1s infinite;
}

@keyframes blink {
    0%, 50% { opacity: 1; }
    51%, 100% { opacity: 0; }
}

/* Chat Input */
.chat-input {
    display: flex;
    gap: var(--spacing-sm);
    align-items: flex-end;
}

.chat-input-field {
    flex: 1;
    /* `--bar-button-size` ensures the textarea's collapsed
       height equals the canonical bar button height — same as
       `.chat-send-button` next to it, same as every panel-bar
       button. The chat input legitimately grows beyond this
       up to `max-height` when the user types multiple lines. */
    min-height: var(--bar-button-size);
    max-height: 120px;
    padding: var(--spacing-sm) var(--spacing-md);
    background: var(--card-bg);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-lg);
    color: var(--text-primary);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.9rem;
    resize: none;
    outline: none;
    transition: all var(--duration-fast);
}

.chat-input-field:focus {
    box-shadow: var(--shadow-glow-blue);
}

.chat-input-field::placeholder {
    color: var(--text-muted);
    font-family: 'Orbitron', monospace;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.chat-send-button {
    width: var(--bar-button-size);
    height: var(--bar-button-size);
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, var(--accent-red-dark), var(--accent-red));
    border: none;
    border-radius: var(--radius-lg);
    color: white;
    cursor: pointer;
    font-size: 18px;
    box-shadow: var(--shadow-glow-red);
    transition: all var(--duration-fast);
}

/* `.chat-scope-button` retired in PR Series A.4 hotfix
   (2026-05-11) — the corpus-override cycle button folded into
   the new D.B.O.M. picker semantics on `ChatBar`. The runtime
   API + storage path stay; only the chat-input affordance
   retires (functional re-introduction belongs on the D.B.O.M.
   workstream). */

.chat-send-button:hover:not(:disabled) {
    transform: translateY(-2px);
    box-shadow: 0 0 30px var(--accent-red-glow);
}

.chat-send-button:disabled {
    background: var(--navy-dark);
    color: var(--text-muted);
    cursor: not-allowed;
    box-shadow: none;
}

.chat-disconnected {
    margin-top: var(--spacing-sm);
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
    border: 1px solid var(--accent-red);
    border-radius: var(--radius-sm);
    color: var(--accent-red);
    font-family: 'Orbitron', monospace;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    text-align: center;
}

/* `.chat-action-bar`, `.primary-domain-controls`,
   `.primary-domain-control`, and `.primary-domain-control--home`
   retired in PR Series A.4 hotfix (2026-05-11) — the chat panel's
   3-row chrome collapsed to 2 rows per the wireframe. The
   chat-side quick-launchers moved into `.chat-bar__button--nav`
   on the new `ChatBar` component (Send + Receive only; Home + Services
   were redundant with the panel-bar's [X] / [Services] tab).
   ChatBar styles live alongside `.chat-input-field` further down
   the file (search "chat-bar" in styles.css). */

.domain-shell-panel {
    padding: var(--spacing-lg);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    height: 100%;
}

.domain-shell-title {
    font-family: 'Orbitron', monospace;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--primary-blue);
    margin: 0;
}

.domain-shell-subtitle {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.8rem;
    color: var(--text-muted);
    margin: 0;
    line-height: 1.5;
}

/* ============================================================================
   SEND SHELL — Phase 1 of the Send/Receive/Products IA cutover.
   Method-first action surface: header + active-Entity line +
   horizontal method row + per-method form panel. Receive will
   reuse most of these classes once Phase 2 ships.
   ============================================================================ */

.send-shell-panel {
    display: flex;
    flex-direction: column;
    gap: 0;
    min-height: 0;
    padding-inline: var(--panel-edge-pad);
    padding-block-start: var(--panel-edge-pad);
}

.send-shell-header {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding-bottom: var(--spacing-md);
}

/* Context-only header (post the IA review): drop the redundant
   inner panel title — the panel chrome already shows it — and
   render only the active-Entity + Account context line. Tighter
   bottom padding because there's just one line of content now. */
.send-shell-header--context-only {
    padding-bottom: var(--spacing-sm);
}

.send-shell-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--anviz-accent-primary);
}

.send-shell-subtitle {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.8rem;
    color: var(--text-muted);
    line-height: 1.5;
}

/* Active operating context — Entity + Account, separated by a
   middle dot. Surfaces the two dimensions the user changes from
   Home so the Send / Receive panel makes its operating context
   immediately visible.
   The Entity + Account names render in the gold accent color
   with a soft text-shadow halo so they read as "this is the
   active selection" — same visual grammar (gold = active) we
   use on Home rows + the active method button. The ambient
   prefix copy stays muted so the names own the line's visual
   weight. */
.send-shell-active-context {
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: var(--spacing-xs);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.85rem;
    color: var(--text-secondary);
}

.send-shell-active-context-prefix {
    color: var(--text-muted);
}

.send-shell-active-context strong {
    color: var(--anviz-accent-primary);
    font-weight: 700;
    letter-spacing: 0.4px;
    text-shadow: 0 0 8px color-mix(in srgb, var(--anviz-accent-primary) 35%, transparent);
}

.send-shell-active-context-separator {
    color: var(--text-muted);
    margin-inline: var(--spacing-xs);
}

.send-shell-empty-state {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-xl);
}

.send-shell-empty-message {
    margin: 0;
    max-width: 480px;
    text-align: center;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.85rem;
    line-height: 1.6;
    color: var(--text-secondary);
}

.send-shell-body {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    flex: 1;
    min-height: 0;
    /* **Thumb-reach layout.** The body's children (amount, form,
       action stack) align toward the bottom so the controls the
       user actually presses live in the lower-half / thumb-reach
       zone on mobile. The header (one line of context) floats
       alone at the top; the empty space sits between header and
       the amount cluster, not between the form and the action
       buttons. The form area gets `flex: 0 1 auto` (don't grow,
       do shrink + scroll if it would overflow) — see
       `.send-method-content` below — so a short form doesn't
       expand to fill the panel and bias the cluster back toward
       the top. */
    justify-content: flex-end;
}

/* Centered amount header — the primary view item per the IA
   review. Sits at the top of the amount/form/action cluster,
   larger than any other form input so the user sees the dollar
   value first. The currency suffix tracks the shell-level
   `TransferAmountContext` currency signal (defaults USD;
   P2P-on-chain overwrites with the selected asset).
   **Layout note:** uses a 3-column grid (`1fr auto 1fr`) so
   the input sits in the geometric center of the section, not
   shifted left by the right-side USD label. The two `1fr`
   columns balance whatever leftover space exists on either
   side; the input lives in the auto-centered middle column,
   and the currency label sits at the start of the right `1fr`
   column right next to the input. A flex-with-justify-center
   layout would have centered the group but that puts the
   visual weight (the input) off-center because the USD label
   adds width on one side only. */
.send-shell-amount {
    /* `flex: 1 1 auto` so the amount section grows to fill the
       empty vertical space between the header and the form
       cluster. The form keeps `flex: 0 1 auto` (don't grow) so
       it stays anchored just above the action stack; the amount
       absorbs whatever's left over. Combined with
       `align-content: center` on the grid below, the
       `0.00 USDC` row centers vertically in the open space —
       not pinned to the top, not pinned to the bottom. */
    flex: 1 1 auto;
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: baseline;
    align-content: center;
    column-gap: var(--spacing-sm);
    padding-block: var(--spacing-md);
    min-height: 120px;
    /* Glowing breakline — navy blue accent + soft halo. The
       negative spread on the box-shadow keeps the glow tight to
       the bottom edge instead of haloing the whole section.
       Same treatment on `.send-action-stack` border-top so the
       two dividers read as one visual grammar. */
    border-bottom: 1px solid
        color-mix(in srgb, var(--anviz-accent-secondary) 75%, transparent);
    box-shadow: 0 4px 14px -4px
        color-mix(in srgb, var(--anviz-accent-secondary) 65%, transparent);
}

.send-shell-amount-input {
    grid-column: 2;
    font-family: 'Orbitron', monospace;
    font-size: 2.5rem;
    font-weight: 700;
    text-align: center;
    letter-spacing: 1px;
    background: transparent;
    border: none;
    color: var(--patriot-white);
    width: 100%;
    min-width: 200px;
    max-width: 320px;
    padding: 0;
    transition: color var(--duration-fast);
}

.send-shell-amount-input:focus {
    outline: none;
    color: var(--anviz-accent-primary);
}

.send-shell-amount-input::placeholder {
    color: var(--text-muted);
    font-weight: 500;
}

.send-shell-amount-currency {
    grid-column: 3;
    justify-self: start;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.85rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-secondary);
}

/* Method form area — sits between the amount header and the
   action stack. `flex: 0 1 auto` means: don't grow, do shrink
   + scroll internally if the form would overflow. Combined with
   `justify-content: flex-end` on the parent, this makes the
   form sit just above the action stack rather than stretching
   to fill the empty middle of the panel. */
.send-method-content {
    flex: 0 1 auto;
    overflow-y: auto;
    min-height: 0;
    max-height: 100%;
}

/* ============================================================================
   ACTION STACK — the bottom-of-panel "game-controls" cluster.

   The method picker + the primary Send button together form one
   tactile control set. Visually grouped (top border, common
   block padding); the Send button at the bottom is the primary
   action — gold, larger, distinct from the method selectors
   above it. Receive uses the same chrome with the
   `--no-action` modifier (no Send button — credential display,
   not transaction).
   ============================================================================ */

.send-action-stack {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding-block: var(--spacing-sm) var(--spacing-md);
    /* Glowing breakline — same treatment as
       `.send-shell-amount`'s border-bottom but inverted (top
       edge, glow extends upward). Negative spread keeps the
       halo tight to the line. */
    border-top: 1px solid
        color-mix(in srgb, var(--anviz-accent-secondary) 75%, transparent);
    box-shadow: 0 -4px 14px -4px
        color-mix(in srgb, var(--anviz-accent-secondary) 65%, transparent);
}

/* Method picker — stacked button list. Each button reads as a
   discrete control: full-width hit target, larger touch
   surface, gold-glow active state. */
.send-method-row {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.send-method-row-button {
    appearance: none;
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--text-accent) 38%, transparent);
    background: color-mix(in srgb, var(--card-bg) 40%, transparent);
    color: var(--text-secondary);
    font-family: 'Orbitron', monospace;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 1px;
    text-align: left;
    cursor: pointer;
    transition: background var(--duration-fast),
                border-color var(--duration-fast),
                color var(--duration-fast),
                box-shadow var(--duration-fast);
}

.send-method-row-button:hover {
    border-color: var(--text-accent);
    color: var(--patriot-white);
    background: var(--interactive-hover-bg);
}

.send-method-row-button:focus-visible {
    outline: var(--interactive-focus-outline);
    outline-offset: var(--interactive-focus-offset);
}

.send-method-row-button.active {
    border-color: var(--anviz-accent-primary);
    color: var(--patriot-white);
    background: color-mix(in srgb, var(--anviz-accent-primary) 16%, transparent);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--anviz-accent-primary) 30%, transparent);
}

/* Placeholder methods (Card / Swap) read as "still selectable
   but not wired" — dashed border + muted color so the user sees
   the difference without hiding them. */
.send-method-row-button.placeholder {
    border-style: dashed;
    color: var(--text-muted);
}

/* `.send-action-row` — the bottom-of-stack peer-action container.
   Renders two equal-weight buttons split 50/50:
     Send shell:    [ Swap ] [ Send via <method> ]
     Receive shell: [ Swap ] [ Request ]
   The peer buttons themselves are `<Button variant=Primary
   size=Lg>` instances — the canonical commit-action treatment
   (solid blue fill, light text, blue glow on hover) propagates
   from `.m-btn--primary` so this row inherits the workspace's
   "lit blue" commit vocabulary without per-row overrides.
   The `.send-action-row-button` modifier below stretches each
   `inline-flex` Button to fill its grid column. */
.send-action-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: var(--spacing-sm);
}

/* Peer-action `<Button>` instances inside `.send-action-row`.
   The grid uses `1fr 1fr` for equal columns; the canonical
   `<Button>` is `display: inline-flex` (sizes to content) so we
   stretch each cell's child to fill the column via this
   modifier. Vertical sizing inherits the canonical `m-btn--lg`
   padding scale so Send / Receive peer rows match the rest of
   the workspace's "loud commit-action" treatment. */
.send-action-row-button {
    width: 100%;
    justify-self: stretch;
}

/* Status surface — submit success / failure / validation
   message. Sits between the method picker and the Send button
   so feedback appears right where the user just clicked. */
.send-action-status {
    margin: 0;
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 14%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 35%, transparent);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-secondary);
    line-height: 1.4;
}

.send-method-form {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding-block: var(--spacing-md);
}

.send-method-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--patriot-white);
}

.send-method-description {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-muted);
    line-height: 1.5;
}

.send-method-field-group {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.send-method-field-row {
    display: flex;
    gap: var(--spacing-md);
    flex-wrap: wrap;
}

.send-method-field {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    flex: 1;
    min-width: 200px;
}

.send-method-field-label {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.74rem;
    color: var(--text-muted);
    letter-spacing: 0.4px;
}

.send-method-input {
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--card-bg) 80%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 35%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.85rem;
    transition: border-color var(--duration-fast);
}

.send-method-input:focus {
    outline: none;
    border-color: var(--text-accent);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--text-accent) 30%, transparent);
}

/* `.send-method-checkbox` removed — the per-form Save-to-Vault
   checkbox was dropped in favor of an unconditional save +
   status-message confirmation. */

/* ----- Swap method (Uniswap-style two-token pair) ------------------------ */

.swap-pair {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    align-items: stretch;
}

.swap-pair-leg {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
    padding: var(--spacing-sm) var(--spacing-md);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--card-bg) 60%, transparent);
}

.swap-pair-leg-label {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.74rem;
    color: var(--text-muted);
    letter-spacing: 0.4px;
    text-transform: uppercase;
}

.swap-pair-leg-asset {
    /* Override the generic input full-width sizing — the asset
       picker lives on the right side of each leg as a pill,
       not a full-width field. */
    width: auto;
    min-width: 110px;
    max-width: 180px;
    padding: var(--spacing-xs) var(--spacing-sm);
}

/* Flip button — sits between the From and To legs. Circular,
   gold-accented, tactile. Same visual grammar as the active
   action-stack button so users read it as "this does
   something deliberate". */
.swap-pair-flip {
    align-self: center;
    appearance: none;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: 1px solid color-mix(in srgb, var(--anviz-accent-primary) 50%, transparent);
    background: color-mix(in srgb, var(--anviz-accent-primary) 12%, transparent);
    color: var(--anviz-accent-primary);
    font-family: 'Orbitron', monospace;
    font-size: 1.1rem;
    line-height: 1;
    cursor: pointer;
    margin-block: calc(-1 * var(--spacing-sm));
    /* Pull the button up so it overlaps the gap between legs
       and reads as a control bridging them, not floating in
       its own row. */
    z-index: 1;
    transition: background var(--duration-fast),
                box-shadow var(--duration-fast),
                transform var(--duration-fast);
}

.swap-pair-flip:hover {
    background: color-mix(in srgb, var(--anviz-accent-primary) 24%, transparent);
    box-shadow: 0 0 0 1px var(--anviz-accent-primary),
                0 0 14px color-mix(in srgb, var(--anviz-accent-primary) 35%, transparent);
    transform: rotate(180deg);
}

.swap-pair-flip:focus-visible {
    outline: var(--interactive-focus-outline);
    outline-offset: var(--interactive-focus-offset);
}

/* Quote display — estimated output + per-unit rate. Subtle
   surface so it reads as "informational" not "another input". */
.swap-quote {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 28%, transparent);
}

.swap-quote-output {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.85rem;
    color: var(--text-secondary);
}

.swap-quote-output-prefix {
    color: var(--text-muted);
}

.swap-quote-output strong {
    color: var(--patriot-white);
    font-weight: 700;
}

.swap-quote-rate {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-muted);
}

.swap-quote-empty {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-muted);
    line-height: 1.5;
}

/* Slippage tolerance — three preset chips. Active chip uses
   the canonical gold-active treatment. */
.swap-slippage {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.swap-slippage-options {
    display: flex;
    gap: var(--spacing-xs);
}

.swap-slippage-option {
    appearance: none;
    flex: 1;
    padding: var(--spacing-xs) var(--spacing-md);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--text-accent) 35%, transparent);
    background: transparent;
    color: var(--text-secondary);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    cursor: pointer;
    transition: background var(--duration-fast),
                border-color var(--duration-fast),
                color var(--duration-fast);
}

.swap-slippage-option:hover {
    border-color: var(--text-accent);
    color: var(--patriot-white);
    background: var(--interactive-hover-bg);
}

.swap-slippage-option:focus-visible {
    outline: var(--interactive-focus-outline);
    outline-offset: var(--interactive-focus-offset);
}

.swap-slippage-option.active {
    border-color: var(--anviz-accent-primary);
    color: var(--patriot-white);
    background: color-mix(in srgb, var(--anviz-accent-primary) 16%, transparent);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--anviz-accent-primary) 30%, transparent);
}

/* ============================================================================
   ADDRESS BOOK PANEL
   Browsable directory of contacts (people/orgs you Send to / Receive from).
   Reads + writes through `services::intelligence` (substrate) +
   `services::contact_overflow` (vault overflow); no AppState slice. Two
   views: list (default) and detail (on drill-in).
   ============================================================================ */

.address-book-panel {
    display: flex;
    flex-direction: column;
    gap: 0;
    min-height: 0;
    /* No outer padding — the panel-scrollable body owns the
       inset so the bar background spans edge to edge. */
}

.address-book-panel > .panel-scrollable {
    /* Inner scroll body — the chrome (PanelBar) sits below as
       a sibling, naturally pinned at the bottom of the flex
       column. Inset padding matches the canonical
       `--panel-edge-pad` used by other list panels. */
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding-inline: var(--panel-edge-pad);
    padding-block: var(--panel-edge-pad);
}

.address-book-header {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding-bottom: var(--spacing-md);
}

.address-book-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--anviz-accent-primary);
}

.address-book-subtitle {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.8rem;
    color: var(--text-muted);
    line-height: 1.5;
}

.address-book-scroll {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding: var(--spacing-xs) 0 var(--spacing-lg);
    min-height: 0;
}

.address-book-toolbar {
    display: flex;
    gap: var(--spacing-sm);
    align-items: center;
}

.address-book-search {
    flex: 1;
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--text-accent) 35%, transparent);
    background: color-mix(in srgb, var(--card-bg) 80%, transparent);
    color: var(--text-primary);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.85rem;
    transition: border-color var(--duration-fast);
}

.address-book-search:focus {
    outline: none;
    border-color: var(--text-accent);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.address-book-method-filter {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-xs);
}

.address-book-method-filter-chip {
    appearance: none;
    padding: var(--spacing-xs) var(--spacing-md);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--text-accent) 35%, transparent);
    background: transparent;
    color: var(--text-secondary);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    cursor: pointer;
    transition: background var(--duration-fast),
                border-color var(--duration-fast),
                color var(--duration-fast);
}

.address-book-method-filter-chip:hover {
    border-color: var(--text-accent);
    color: var(--patriot-white);
    background: var(--interactive-hover-bg);
}

.address-book-method-filter-chip:focus-visible {
    outline: var(--interactive-focus-outline);
    outline-offset: var(--interactive-focus-offset);
}

.address-book-method-filter-chip.active {
    border-color: var(--anviz-accent-primary);
    color: var(--patriot-white);
    background: color-mix(in srgb, var(--anviz-accent-primary) 16%, transparent);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--anviz-accent-primary) 30%, transparent);
}

/* List */

.address-book-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.address-book-list-item {
    border-radius: var(--radius-sm);
    overflow: hidden;
    background: color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 20%, transparent);
}

.address-book-list-button {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm) var(--spacing-md);
    text-align: left;
}

.address-book-list-item-primary {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.address-book-list-item-name {
    font-family: 'Orbitron', monospace;
    font-size: 0.86rem;
    font-weight: 700;
    color: var(--patriot-white);
}

.address-book-list-item-handle {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-secondary);
}

.address-book-list-item-method-tags {
    display: flex;
    gap: var(--spacing-xs);
    margin-left: auto;
}

.address-book-method-tag {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.62rem;
    line-height: 1;
    letter-spacing: 0.5px;
    font-weight: 600;
    padding: 4px 8px;
    border-radius: var(--radius-sm);
    color: var(--text-accent);
    background: color-mix(in srgb, var(--text-accent) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 35%, transparent);
}

.address-book-list-item-notes {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-muted);
    line-height: 1.4;
}

.address-book-list-item-tag-list {
    display: flex;
    gap: var(--spacing-xs);
    flex-wrap: wrap;
}

.address-book-list-item-tag {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.7rem;
    color: var(--text-secondary);
    padding: 2px var(--spacing-xs);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 14%, transparent);
}

/* Detail */

.address-book-detail {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.address-book-detail-back {
    appearance: none;
    border: none;
    background: transparent;
    color: var(--text-accent);
    font: inherit;
    font-size: 0.78rem;
    text-align: left;
    padding: 0;
    cursor: pointer;
    align-self: flex-start;
}

.address-book-detail-back:hover {
    color: var(--anviz-accent-primary);
}

.address-book-detail-header {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.address-book-detail-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 1rem;
    color: var(--patriot-white);
}

.address-book-detail-section {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 20%, transparent);
}

.address-book-detail-section-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 1.2px;
    text-transform: uppercase;
    color: var(--text-accent);
}

.address-book-detail-row {
    margin: 0;
    display: flex;
    gap: var(--spacing-xs);
    align-items: baseline;
    flex-wrap: wrap;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.82rem;
}

.address-book-detail-key {
    color: var(--text-muted);
}

.address-book-detail-value {
    color: var(--patriot-white);
}

.address-book-detail-value--mono {
    font-family: 'IBM Plex Mono', monospace;
}

.address-book-detail-actions {
    display: flex;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.address-book-detail-delete {
    border-color: color-mix(in srgb, var(--status-error) 60%, transparent);
    color: var(--status-error);
}

.address-book-detail-delete:hover {
    border-color: var(--status-error) !important;
    background: color-mix(in srgb, var(--status-error) 14%, transparent) !important;
    color: var(--patriot-white) !important;
}

.address-book-add-body {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    /* Sectioned modal can grow tall when the user fills out
       postal addresses; cap height + scroll so the Cancel/Add
       footer remains reachable on smaller viewports. */
    max-height: 70vh;
    overflow-y: auto;
}

/* Add-counterparty modal — sectioned form (Identity / Routing /
   Postal addresses / Notes & tags). Each `address-book-add-section`
   block reuses the same chrome as the detail-section pattern so
   add and detail surfaces feel like the same record viewed two
   ways. */
.address-book-add-section {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 20%, transparent);
}

.address-book-add-section-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 1.2px;
    text-transform: uppercase;
    color: var(--text-accent);
}

/* Postal-address sub-form — three of these stack inside the
   "Postal addresses" section. Renders as a fieldset with a
   subtle dashed border so the user reads the three blocks as
   separate-but-related slots. The grid lays out a 2-column
   responsive shape on wider modals (line1 / line2 on the top
   row, then city / region / postal_code / country flowing
   into the second row pair). */
.address-book-postal-block {
    border: 1px dashed color-mix(in srgb, var(--anviz-accent-secondary) 35%, transparent);
    border-radius: var(--radius-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.address-book-postal-legend {
    padding: 0 var(--spacing-xs);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: var(--text-muted);
}

.address-book-postal-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--spacing-sm);
}

/* Line 1 / line 2 each span the full row; the bottom 4 fields
   pair up — city / region on one row, postal / country on
   the next. On narrow modals the whole grid collapses to a
   single column via the media query below. */
.address-book-postal-line {
    grid-column: 1 / -1;
}

@media (max-width: 600px) {
    .address-book-postal-grid {
        grid-template-columns: 1fr;
    }
}

/* Saved-recipients picker — sits at the top of each Send
   method form, surfaces counterparties with credentials for
   the active method. Renders nothing when there are no
   matches; when populated it's a single labeled `<select>`.
   Used by the Send ACH / Wire forms' Round F-5 secondary
   credential picker; the original standalone picker was
   collapsed into <ContactAutocomplete> inputs in Phase 2 of
   the Send refinement. */
.saved-recipients-picker {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 28%, transparent);
}

/* `<ContactAutocomplete>` — typed input + suggestion popover
   for Send recipient / wallet-address fields. The outer
   container is `position: relative` so the popover anchors
   beneath the input via `position: absolute`. The popover
   width matches the input's full width via `inset-inline: 0`,
   so contact names that overflow the field still render
   readable in the popover.
   Visual narrative: same `--anviz-accent-secondary` border
   tint as the legacy saved-recipients picker (and the rest
   of the panel-input chrome) so the popover reads as part of
   the same surface, not as floating chrome. Blue glow shadow
   matches the Send action-stack's commit-action vocabulary. */
.contact-autocomplete {
    position: relative;
    width: 100%;
}

.contact-autocomplete-popover {
    position: absolute;
    inset-inline: 0;
    top: calc(100% + var(--spacing-xs));
    z-index: 20;
    display: flex;
    flex-direction: column;
    max-height: 320px;
    overflow-y: auto;
    padding: var(--spacing-xs);
    background: var(--card-bg);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 45%, transparent);
    border-radius: var(--radius-sm);
    box-shadow: 0 8px 24px -8px color-mix(in srgb, var(--anviz-accent-secondary) 55%, transparent);
}

.contact-autocomplete-row {
    appearance: none;
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: var(--spacing-xs) var(--spacing-sm);
    background: transparent;
    border: 1px solid transparent;
    border-radius: var(--radius-sm);
    text-align: left;
    cursor: pointer;
    transition: background var(--duration-fast),
                border-color var(--duration-fast);
}

.contact-autocomplete-row:hover,
.contact-autocomplete-row:focus-visible {
    background: var(--interactive-hover-bg);
    border-color: color-mix(in srgb, var(--anviz-accent-primary) 45%, transparent);
    outline: none;
}

.contact-autocomplete-row-primary {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.85rem;
    color: var(--text-primary);
    font-weight: 600;
}

.contact-autocomplete-row-secondary {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.74rem;
    color: var(--text-secondary);
    letter-spacing: 0.2px;
}

.contact-autocomplete-empty {
    margin: 0;
    padding: var(--spacing-xs) var(--spacing-sm);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-muted);
    line-height: 1.4;
}

/* ----- Swap / Request modal bodies ---------------------------------------- */

.swap-modal-body,
.request-modal-body {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

/* Request modal — the sharable URL row. Read-only input + copy
   button, mirroring the `.receive-copy-field-row` chrome but
   inside the modal's own form context. */
.request-modal-url {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.request-modal-url-row {
    display: flex;
    gap: var(--spacing-sm);
    align-items: stretch;
}

/* `.send-method-submit*` removed 2026-04-28 — the per-form
   "Save to Vault" submit button in Receive ACH / Wire / P2P-
   on-chain manual-entry forms now composes from the canonical
   `<Button variant=Primary size=Md>` primitive per ADR-020.
   Visual treatment lives in `.m-btn--primary` (solid blue +
   light text + blue glow on hover — the workspace
   commit-action vocabulary). */

.send-method-status {
    margin: 0;
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 14%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 35%, transparent);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-secondary);
}

.send-method-placeholder {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-lg);
    border: 1px dashed color-mix(in srgb, var(--text-muted) 50%, transparent);
    border-radius: var(--radius-sm);
}

.send-method-placeholder-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--text-muted);
}

.send-method-placeholder-body {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.8rem;
    color: var(--text-secondary);
    line-height: 1.5;
}

/* ----- Monetic Pay card on-ramp widget --------------------------------- */
.monetic-pay-onramp {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding-block: var(--spacing-md);
}

.monetic-pay-onramp-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--text-muted);
}

.monetic-pay-widget,
.monetic-pay-amount-step,
.monetic-pay-card-form {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.monetic-pay-field-group {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    flex: 1;
}

.monetic-pay-field-row {
    display: flex;
    gap: var(--spacing-md);
}

/* Container for a Worldpay-owned hosted-field iframe. The SDK injects an
   <iframe> into this div; we provide the chrome (border, height) so it
   matches `.send-method-input`. */
.monetic-pay-field {
    width: 100%;
    height: 42px;
    padding: 0 var(--spacing-md);
    display: flex;
    align-items: center;
    background: color-mix(in srgb, var(--card-bg) 80%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 35%, transparent);
    border-radius: var(--radius-sm);
    transition: border-color var(--duration-fast);
}

.monetic-pay-field:focus-within {
    border-color: var(--text-accent);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.monetic-pay-field iframe {
    width: 100%;
    height: 100%;
    border: 0;
    display: block;
}

.monetic-pay-primary-button {
    align-self: stretch;
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 88%, transparent);
    border: 1px solid var(--text-accent);
    border-radius: var(--radius-sm);
    color: var(--bg-primary, #0a1929);
    font-family: 'Orbitron', monospace;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 1px;
    text-transform: uppercase;
    cursor: pointer;
    transition: filter var(--duration-fast), opacity var(--duration-fast);
}

.monetic-pay-primary-button:hover:not(:disabled) {
    filter: brightness(1.1);
}

.monetic-pay-primary-button:disabled {
    opacity: 0.55;
    cursor: default;
}

.monetic-pay-hint {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
    color: var(--text-muted);
    line-height: 1.4;
}

.monetic-pay-error {
    margin: 0;
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, #ff6b6b 12%, transparent);
    border: 1px solid color-mix(in srgb, #ff6b6b 40%, transparent);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: #ff9b9b;
    line-height: 1.4;
}

.monetic-pay-loading {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-lg);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.82rem;
    color: var(--text-secondary);
}

.monetic-pay-spinner {
    width: 16px;
    height: 16px;
    border: 2px solid color-mix(in srgb, var(--text-accent) 25%, transparent);
    border-top-color: var(--text-accent);
    border-radius: 50%;
    animation: spin 1s linear infinite;
    flex-shrink: 0;
}

.monetic-pay-funded {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-lg);
    text-align: center;
}

.monetic-pay-funded-icon {
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: color-mix(in srgb, var(--text-accent) 18%, transparent);
    color: var(--text-accent);
    font-size: 1.1rem;
    font-weight: 700;
}

.monetic-pay-funded-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--text-primary);
}

/* Receive credential copy field — labeled read-only input + copy
   button. Same chrome as `.send-method-input` so credential
   surfaces inherit the rest of the form theme. */
.receive-copy-field {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.receive-copy-field-row {
    display: flex;
    gap: var(--spacing-sm);
    align-items: stretch;
}

.receive-copy-field-value {
    flex: 1;
    font-family: 'IBM Plex Mono', monospace;
    cursor: text;
}

.receive-copy-field-button {
    padding: var(--spacing-sm) var(--spacing-md);
    border: 1px solid color-mix(in srgb, var(--text-accent) 50%, transparent);
    background: transparent;
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    cursor: pointer;
    transition: border-color var(--duration-fast),
                background var(--duration-fast),
                color var(--duration-fast);
}

.receive-copy-field-button:hover {
    border-color: var(--text-accent);
    background: var(--interactive-hover-bg);
    color: var(--patriot-white);
}

.receive-copy-field-button:focus-visible {
    outline: var(--interactive-focus-outline);
    outline-offset: var(--interactive-focus-offset);
}

.send-method-empty-credentials {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

/* ============================================================================
   SERVICES SHELL — Phase 4 (formerly "Products"). Four-card
   landing surface (Contracts / Markets / Yield / Strategies).
   Composes from canonical primitives (PanelSurfaceHeader,
   Section, Button) with scoped `services-shell-*` chrome only
   where a primitive doesn't exist yet (the card-grid layout).
   Pre-2026-04-28 this borrowed `send-shell-*` and
   `home-row-secondary-action` from sibling panels — that
   cross-panel CSS coupling is removed; this section now owns
   its visual identity end to end.
   ============================================================================ */

.services-shell-panel {
    display: flex;
    flex-direction: column;
    gap: 0;
    min-height: 0;
    /* No outer padding — the panel-scrollable body owns the
       inset so the canonical `<PanelBar>` background spans
       edge to edge. */
}

.services-shell-panel > .panel-scrollable {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
    padding-inline: var(--panel-edge-pad);
    padding-block: var(--panel-edge-pad);
}

/* Books panel — stub today; layout matches the canonical
   flex-column-with-scrollable-body pattern so the bar sits
   pinned at the bottom even as the placeholder content fills
   the middle. */
.books-panel {
    display: flex;
    flex-direction: column;
    gap: 0;
    min-height: 0;
}

.books-panel > .panel-scrollable {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
    padding: var(--spacing-lg);
}

.services-shell-active-entity {
    margin: 0;
    padding-block-end: var(--spacing-md);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.85rem;
    color: var(--text-secondary);
}

.services-shell-active-entity-prefix {
    color: var(--text-muted);
    margin-inline-end: var(--spacing-xs);
}

.services-shell-active-entity strong {
    color: var(--anviz-accent-primary);
    font-weight: 700;
    letter-spacing: 0.4px;
    text-shadow: 0 0 8px color-mix(in srgb, var(--anviz-accent-primary) 35%, transparent);
}

.services-shell-empty-state {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-xl);
}

.services-shell-empty-message {
    margin: 0;
    max-width: 480px;
    text-align: center;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.85rem;
    line-height: 1.6;
    color: var(--text-secondary);
}

.services-shell-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: var(--spacing-md);
    padding-block: var(--spacing-md);
    flex: 1;
    align-content: start;
}

.services-shell-card {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    border-radius: var(--radius-md);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 25%, transparent);
    background: color-mix(in srgb, var(--card-bg) 60%, transparent);
    transition: border-color var(--duration-fast), background var(--duration-fast);
}

.services-shell-card.live:hover {
    border-color: color-mix(in srgb, var(--text-accent) 60%, transparent);
    background: color-mix(in srgb, var(--card-bg) 80%, transparent);
}

.services-shell-card.coming-soon {
    border-style: dashed;
    border-color: color-mix(in srgb, var(--text-muted) 40%, transparent);
    background: transparent;
}

.services-shell-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-sm);
}

.services-shell-card-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--patriot-white);
}

.services-shell-card.coming-soon .services-shell-card-title {
    color: var(--text-secondary);
}

.services-shell-card-tag {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.66rem;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: var(--text-muted);
    padding: 2px var(--spacing-xs);
    border: 1px solid color-mix(in srgb, var(--text-muted) 40%, transparent);
    border-radius: var(--radius-sm);
}

.services-shell-card-description {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-secondary);
    line-height: 1.55;
}

/* ============================================================================
   ROUTES SHELL — multi-hop money movement (ADR-036)
   ============================================================================
   Layout mirrors Send / Receive / Services: PanelSurfaceHeader,
   active-Entity context line, empty-state, body, action-stack.
   The `routes-shell-*` namespace is scoped per ADR-020 §1
   (no cross-panel CSS coupling). Tokens are the workspace
   canonicals (`--anviz-accent-primary` for lit-action, `--spacing-*`
   for rhythm, `--panel-edge-pad` for the inset shared with the
   sibling shells).
*/

.routes-shell-panel {
    display: flex;
    flex-direction: column;
    gap: 0;
    min-height: 0;
    padding-inline: var(--panel-edge-pad);
    padding-block-start: var(--panel-edge-pad);
}

/* Active-Entity context line — same shape as
   `.send-shell-active-context` / `.services-shell-active-entity`
   so the user reads the same words across shells. */
.routes-shell-active-entity {
    margin: 0 0 var(--spacing-sm) 0;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: var(--spacing-xs);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.85rem;
    color: var(--text-secondary);
}

.routes-shell-active-entity-prefix {
    color: var(--text-muted);
}

.routes-shell-active-entity strong {
    color: var(--anviz-accent-primary);
    font-weight: 700;
    letter-spacing: 0.4px;
    text-shadow: 0 0 8px color-mix(in srgb, var(--anviz-accent-primary) 35%, transparent);
}

.routes-shell-empty-state {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-xl);
}

.routes-shell-empty-message {
    margin: 0;
    max-width: 480px;
    text-align: center;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.85rem;
    line-height: 1.6;
    color: var(--text-secondary);
}

.routes-shell-body {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    flex: 1;
    min-height: 0;
}

.routes-shell-content {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.routes-shell-loading,
.routes-shell-empty-inline {
    margin: var(--spacing-sm) 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-muted);
}

.routes-shell-parameter-sheet {
    padding: var(--spacing-md);
}

.routes-shell-parameter-sheet--stub {
    border: 1px dashed color-mix(in srgb, var(--text-muted) 40%, transparent);
    border-radius: var(--radius-sm);
}

.routes-shell-parameter-sheet-msg {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-muted);
    text-align: center;
}

/* ── Library view ───────────────────────────────────────── */

.routes-library {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.routes-library-sections {
    display: flex;
    gap: var(--spacing-xs);
    flex-wrap: wrap;
}

.routes-library-section-button {
    appearance: none;
    padding: var(--spacing-xs) var(--spacing-sm);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--text-accent) 38%, transparent);
    background: color-mix(in srgb, var(--card-bg) 40%, transparent);
    color: var(--text-secondary);
    font-family: 'Orbitron', monospace;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.8px;
    text-transform: uppercase;
    cursor: pointer;
    transition: background var(--duration-fast),
                border-color var(--duration-fast),
                color var(--duration-fast);
}

.routes-library-section-button:hover {
    border-color: var(--text-accent);
    color: var(--patriot-white);
    background: var(--interactive-hover-bg);
}

.routes-library-section-button:focus-visible {
    outline: var(--interactive-focus-outline);
    outline-offset: var(--interactive-focus-offset);
}

.routes-library-section-button.active {
    border-color: var(--anviz-accent-primary);
    color: var(--patriot-white);
    background: color-mix(in srgb, var(--anviz-accent-primary) 16%, transparent);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--anviz-accent-primary) 30%, transparent);
}

.routes-library-body {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.routes-flow-list,
.routes-run-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.routes-flow-row,
.routes-run-row {
    margin: 0;
    padding: 0;
}

.routes-flow-row-button,
.routes-run-row-button {
    appearance: none;
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--text-accent) 28%, transparent);
    background: color-mix(in srgb, var(--card-bg) 55%, transparent);
    color: var(--text-secondary);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.82rem;
    text-align: left;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-sm);
    transition: background var(--duration-fast),
                border-color var(--duration-fast);
}

.routes-flow-row-button:hover,
.routes-run-row-button:hover {
    border-color: var(--text-accent);
    background: var(--interactive-hover-bg);
}

.routes-flow-row-button:focus-visible,
.routes-run-row-button:focus-visible {
    outline: var(--interactive-focus-outline);
    outline-offset: var(--interactive-focus-offset);
}

.routes-flow-name {
    font-weight: 600;
    color: var(--patriot-white);
}

.routes-flow-meta,
.routes-run-id-mono,
.routes-hop-id-mono {
    font-size: 0.74rem;
    color: var(--text-muted);
}

/* ── Editor view ────────────────────────────────────────── */

.routes-editor {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.routes-editor-mode-toggle {
    display: flex;
    gap: var(--spacing-xs);
    flex-wrap: wrap;
}

.routes-editor-mode-button {
    appearance: none;
    padding: var(--spacing-xs) var(--spacing-sm);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--text-accent) 38%, transparent);
    background: color-mix(in srgb, var(--card-bg) 40%, transparent);
    color: var(--text-secondary);
    font-family: 'Orbitron', monospace;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.8px;
    text-transform: uppercase;
    cursor: pointer;
    transition: background var(--duration-fast),
                border-color var(--duration-fast),
                color var(--duration-fast);
}

.routes-editor-mode-button:hover {
    border-color: var(--text-accent);
    color: var(--patriot-white);
}

.routes-editor-mode-button.active {
    border-color: var(--anviz-accent-primary);
    color: var(--patriot-white);
    background: color-mix(in srgb, var(--anviz-accent-primary) 16%, transparent);
}

.routes-hop-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.routes-hop-list--linear,
.routes-hop-list--canvas {
    /* Stack from origin → end. */
    counter-reset: hop;
}

.routes-hop-list--tree {
    /* Indented tree — `style:padding-left` per row drives the
       depth from `Hop.depends_on`. */
}

.routes-hop-card {
    border-radius: var(--radius-md);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    background: color-mix(in srgb, var(--card-bg) 55%, transparent);
    padding: var(--spacing-sm) var(--spacing-md);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.routes-hop-card--executed {
    /* Solid border = Monetic / an-integration executes. */
}

.routes-hop-card--observed {
    /* Dashed border = off-flow step the user attests. */
    border-style: dashed;
}

.routes-hop-card-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.routes-hop-index {
    font-family: 'Orbitron', monospace;
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--anviz-accent-primary);
    min-width: 1.5rem;
}

.routes-editor-affordances {
    display: flex;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
    margin-top: var(--spacing-sm);
}

.routes-editor-affordance-button {
    flex: 1 1 auto;
}

/* ── Alternatives + AML ─────────────────────────────────── */

.routes-alternative-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.routes-alternative-card {
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--text-accent) 22%, transparent);
    background: color-mix(in srgb, var(--card-bg) 40%, transparent);
    padding: var(--spacing-sm) var(--spacing-md);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.routes-alternative-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-sm);
}

.routes-alternative-score {
    font-family: 'Orbitron', monospace;
    font-size: 0.74rem;
    color: var(--text-muted);
}

.routes-alternative-rationale {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-secondary);
    line-height: 1.5;
}

.routes-alternatives-error {
    margin: 0;
    color: var(--text-muted);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
}

.routes-aml-badge-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.routes-aml-badge-row {
    display: flex;
    gap: var(--spacing-sm);
    align-items: center;
}

.routes-aml-badge-hop {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
    color: var(--text-muted);
}

/* ── Run view ───────────────────────────────────────────── */

.routes-run-view {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.routes-run-hop-statuses {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.routes-run-hop-status {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--card-bg) 40%, transparent);
}

/* ── Parameter sheet ────────────────────────────────────── */

.routes-parameter-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.routes-parameter-row {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.routes-parameter-label {
    display: flex;
    align-items: baseline;
    gap: var(--spacing-xs);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.82rem;
}

.routes-parameter-name {
    color: var(--patriot-white);
    font-weight: 600;
}

.routes-parameter-kind {
    color: var(--text-muted);
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.8px;
}

.routes-parameter-required {
    color: var(--anviz-accent-primary);
    font-weight: 700;
}

.routes-parameter-description {
    margin: 0;
    color: var(--text-muted);
    font-size: 0.74rem;
    font-family: 'IBM Plex Mono', monospace;
}

.routes-parameter-input {
    appearance: none;
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--text-accent) 28%, transparent);
    background: color-mix(in srgb, var(--card-bg) 60%, transparent);
    color: var(--patriot-white);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.85rem;
}

.routes-parameter-input:focus {
    outline: none;
    border-color: var(--anviz-accent-primary);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--anviz-accent-primary) 25%, transparent);
}

.routes-parameter-sheet-actions {
    margin-top: var(--spacing-md);
    display: flex;
    gap: var(--spacing-sm);
}

/* ── Gates ──────────────────────────────────────────────── */

.routes-gate-action-row {
    display: flex;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-sm);
}

.routes-gate-hint {
    margin: var(--spacing-xs) 0 0 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.74rem;
    color: var(--text-muted);
    line-height: 1.5;
}

/* ── Action stack (mirrors `.send-action-stack` treatment) ── */

.routes-action-stack {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding-block: var(--spacing-sm) var(--spacing-md);
    border-top: 1px solid
        color-mix(in srgb, var(--anviz-accent-secondary) 75%, transparent);
    box-shadow: 0 -4px 14px -4px
        color-mix(in srgb, var(--anviz-accent-secondary) 65%, transparent);
}

.routes-action-status {
    margin: 0;
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 14%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 35%, transparent);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-secondary);
    line-height: 1.4;
}

.routes-action-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: var(--spacing-sm);
}

.routes-action-row-button {
    width: 100%;
    justify-self: stretch;
}

/* ── Not-yet-wired notices (no-fallbacks rule) ──────────── */

.routes-not-implemented-detail {
    margin: 0 0 var(--spacing-xs) 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-secondary);
    line-height: 1.5;
}

.routes-not-implemented-hint {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.74rem;
    color: var(--text-muted);
    line-height: 1.5;
    font-style: italic;
}

.routes-service-error-detail {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-secondary);
    line-height: 1.5;
}

.routes-empty-draft-hint {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.82rem;
    color: var(--text-secondary);
    line-height: 1.6;
}

/* ── Draft editor (in-memory Route composer) ────────────── */

.routes-draft-meta {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.routes-draft-field {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    margin: 0;
}

.routes-draft-field-label {
    font-family: 'Orbitron', monospace;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.6px;
    text-transform: uppercase;
    color: var(--text-muted);
}

.routes-draft-field-inline {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-xs);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-secondary);
}

.routes-draft-hop-list,
.routes-draft-parameter-list {
    list-style: none;
    margin: 0 0 var(--spacing-sm) 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.routes-draft-hop-card {
    border-radius: var(--radius-md);
    border: 1px solid color-mix(in srgb, var(--text-accent) 28%, transparent);
    background: color-mix(in srgb, var(--card-bg) 50%, transparent);
    padding: var(--spacing-md);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.routes-draft-hop-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.routes-draft-depends-on-badge {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    background: var(--color-bg-subtle);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    padding: 2px 8px;
    white-space: nowrap;
}

.routes-draft-amount-picker {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.routes-draft-amount-description {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    margin: 0;
}

.routes-draft-amount-empty {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    font-style: italic;
    margin: 0;
}

.routes-draft-amount-stub {
    color: var(--color-warning, var(--color-text-muted));
}

.routes-draft-amount-fixed-row {
    display: flex;
    gap: var(--spacing-md);
    flex-wrap: wrap;
}

.routes-draft-currency-input {
    max-width: 6rem;
}

.routes-draft-schedule-periodic {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.routes-draft-parameter-card {
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--text-accent) 22%, transparent);
    background: color-mix(in srgb, var(--card-bg) 40%, transparent);
    padding: var(--spacing-sm) var(--spacing-md);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.routes-draft-kind-toggle {
    display: flex;
    gap: var(--spacing-xs);
}

.routes-draft-save-row {
    margin-top: var(--spacing-md);
    display: flex;
    justify-content: flex-start;
}

/* ============================================================================
   HOME PANEL — meta surface (ADR-021)
   ============================================================================
   Layout: header (title + subtitle) + scrollable section stack. Each
   section uses the `<Section/>` primitive (panel-section-* classes
   from ADR-020); only the home-specific chrome lives here.
*/

.home-panel {
    gap: 0;
    min-height: 0;
    /* Edge inset shared by the canonical IA panels (see
       --panel-edge-pad). `padding-block-start` gives the
       header a breath under the panel chrome divider; the
       scroll container's existing `var(--spacing-lg)`
       bottom padding handles the bottom. */
    padding-inline: var(--panel-edge-pad);
    padding-block-start: var(--panel-edge-pad);
}

.home-panel-header {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding-bottom: var(--spacing-md);
}

.home-panel-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--anviz-accent-primary);
}

.home-panel-subtitle {
    margin: 0;
    font-size: 0.85rem;
    color: var(--text-secondary);
    line-height: 1.5;
}

/* Body region — flex-1 with internal scroll, sibling to the
   PanelControlBar at the bottom. Mirrors the
   `.principal-management-detail-body` pattern (s2 of the
   privacy-shield arc) so Home and PrincipalDetail share the
   same flex-column-with-bottom-bar layout grammar. */
.home-panel-body {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: var(--spacing-xs) 0 var(--spacing-md);
    scrollbar-width: thin;
}

/* ----- Glance tab (panels/home/views.rs::GlanceView)
   -----
   The default Home view per the canonical PanelControlBar IA.
   Compact context cards for active Entity + active Account +
   Books stub. Goal: answer "where am I right now?" in one
   scan, drill into the per-domain tab from the bar below. */

.home-glance {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.home-glance-card {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent);
    border-radius: var(--radius-md);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 30%, transparent);
}

/* `.home-glance-card--entity` previously carried a gold border
   override that broke visual consistency with the sibling cards
   (Account / Books, both blue-bordered by the base
   `.home-glance-card` rule). Removed 2026-05-22 so the three
   glance cards read as a single visual set; the "Operating as"
   eyebrow text already carries the gold accent to highlight the
   active-context language. */

.home-glance-card-eyebrow {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--anviz-accent-primary);
}

.home-glance-card-primary {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.home-glance-card-name {
    font-family: 'Orbitron', monospace;
    font-size: 1rem;
    font-weight: 700;
    color: var(--patriot-white);
    letter-spacing: 0.04em;
}

.home-glance-card-meta {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.home-glance-card-empty {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
    flex-wrap: wrap;
}

.home-glance-card-empty-message {
    margin: 0;
    font-size: 0.85rem;
    color: var(--text-secondary);
    line-height: 1.4;
}

/* Legacy `.home-panel-scroll` retained as an alias for any
   external CSS that still targets it. New code should use
   `.home-panel-body`. */
.home-panel-scroll {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
    padding: var(--spacing-xs) 0 var(--spacing-lg);
    min-height: 0;
}

/* Make the entire principal row a single button surface so
   keyboard nav + assistive tech work without per-row affordances.
   The hover treatment telegraphs "this is clickable" — distinct
   enough from the static rows that the user reads them as a
   different interaction kind. */
.home-row-list-item--clickable {
    padding: 0;
    overflow: hidden;
}

.home-row-list-item-button {
    appearance: none;
    border: none;
    background: transparent;
    color: inherit;
    font: inherit;
    text-align: inherit;
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    cursor: pointer;
    transition: background var(--duration-fast);
}

/* Canonical "list-row interactive" primitive — applied to every
   "click a row to drill" surface across the IA panels. Three
   independent selectors today (`.home-row-list-item-button`
   from Home's EntitiesRow / AccountsRow,
   `.principal-management-list-button` from Entity Management's
   roster, `.account-management-tree-button` from Account
   Management's tree) share the same affordance pattern, so they
   share one declaration block. New list-row surfaces should
   either join this selector list or carry the
   `.list-row-button` utility class added below for the same
   effect without renaming HTML. */
.home-row-list-item-button:hover,
.principal-management-list-button:hover,
.account-management-tree-button:hover,
.list-row-button:hover {
    background: var(--interactive-hover-bg);
    outline: var(--interactive-hover-outline);
    outline-offset: -1px;
}

.home-row-list-item-button:focus-visible,
.principal-management-list-button:focus-visible,
.account-management-tree-button:focus-visible,
.list-row-button:focus-visible {
    /* Stronger focus ring (2px solid gold + 2px offset) wins
       over the 1px hover outline so keyboard users see an
       unambiguous selection state distinct from mouse-over. */
    background: var(--interactive-hover-bg);
    outline: var(--interactive-focus-outline);
    outline-offset: var(--interactive-focus-offset);
}

/* **Active** modifier — applied when the row's id matches
   `session.active_principal_id` / `session.active_account_id`.
   Visual: gold left border accent + soft gold tint on the
   button surface, mirroring the `.send-method-row-button.active`
   treatment so "this is the active selection" reads with one
   visual grammar across the workspace. */
.home-row-list-item--active {
    border-color: var(--anviz-accent-primary);
    box-shadow: inset 3px 0 0 var(--anviz-accent-primary);
}

.home-row-list-item-button--active {
    background: color-mix(in srgb, var(--anviz-accent-primary) 12%, transparent);
}

.home-row-list-item-button--active:hover {
    background: color-mix(in srgb, var(--anviz-accent-primary) 18%, transparent);
}

/* Small "active" chip rendered in the row's primary line so
   the user has a direct text label, not just a color hint.
   Same chrome shape as `.status-badge` but with the gold
   accent so it reads as an active-state cue, not a status
   tone. */
.home-row-list-item-active-marker {
    display: inline-flex;
    align-items: center;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.62rem;
    line-height: 1;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    font-weight: 600;
    padding: 4px 8px;
    border-radius: var(--radius-sm);
    color: var(--anviz-accent-primary);
    background: color-mix(in srgb, var(--anviz-accent-primary) 16%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-primary) 45%, transparent);
    margin-left: auto;
}

/* Generic utility class for any new list-row click surface
   that doesn't want a bespoke component class. Matches the
   structural shape of the three component-specific rules
   above (transparent bg, no border, full-width click target,
   inherited typography). Compose with
   `.{panel}-list-row-button` when you need layout-specific
   padding or color. */
.list-row-button {
    appearance: none;
    border: none;
    background: transparent;
    color: inherit;
    font: inherit;
    text-align: inherit;
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    cursor: pointer;
    transition: background var(--duration-fast),
                outline-color var(--duration-fast);
}

/* ============================================================
   PRINCIPAL MANAGEMENT PANEL
   The IA layer above AccountManagement — the user's legal
   entities. Two modes: roster (drillable list of all
   principals) and detail (Identity edit + Members + Attached).
   Chrome mirrors the home-panel conventions so the two surfaces
   read as a coherent IA family.
   ============================================================ */

/* ============================================================
   ACCOUNT MANAGEMENT PANEL
   The IA layer below PrincipalManagement. Two modes: tree (the
   recursive UA hierarchy) and detail (single UA's identity +
   hierarchy + entity attachment + addresses). Chrome mirrors the
   principal-management vocabulary so the two panels read as a
   coherent IA family.
   ============================================================ */

.account-management-panel {
    display: flex;
    flex-direction: column;
    gap: 0;
    min-height: 0;
    /* See --panel-edge-pad. */
    padding-inline: var(--panel-edge-pad);
    padding-block-start: var(--panel-edge-pad);
}

.account-management-header {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding-bottom: var(--spacing-md);
}

.account-management-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--anviz-accent-primary);
}

.account-management-subtitle {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.8rem;
    color: var(--text-muted);
    line-height: 1.5;
}

.account-management-scroll {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
    padding: var(--spacing-xs) 0 var(--spacing-lg);
    min-height: 0;
}

/* Recursive tree — top-level UAs as drillable cards, children
   nested visually with a left border in the accent color. The
   `--depth-N` modifier classes apply progressive padding so the
   tree shape reads at a glance. */
.account-management-tree {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.account-management-tree-children {
    list-style: none;
    margin: 0;
    padding: 0;
    margin-left: var(--spacing-md);
    padding-left: var(--spacing-sm);
    border-left: 2px solid
        color-mix(in srgb, var(--anviz-accent-secondary) 30%, transparent);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    margin-top: var(--spacing-xs);
}

.account-management-tree-node {
    border-radius: var(--radius-sm);
    overflow: hidden;
    background: color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 20%, transparent);
    transition: border-color var(--duration-fast), box-shadow var(--duration-fast);
}

/* Active-row highlight — same treatment as
   `.principal-management-list-item--active`. Lit gold border +
   gold glow signals "this is your active context" at L1 of
   the canonical list-then-tab IA stack. */
.account-management-tree-node--active {
    border-color: var(--accent-gold);
    box-shadow: var(--shadow-glow-gold);
}

/* Subtle background tint per nesting depth so a deep sub-account
   is visually distinct from its parent without being noisy. */
.account-management-tree-node-depth-1 {
    background: color-mix(in srgb, var(--anviz-bg-panel) 90%, transparent);
}

.account-management-tree-node-depth-2 {
    background: color-mix(in srgb, var(--anviz-bg-panel) 80%, transparent);
}

.account-management-tree-node-depth-3 {
    background: color-mix(in srgb, var(--anviz-bg-panel) 70%, transparent);
}

.account-management-tree-button {
    appearance: none;
    border: none;
    background: transparent;
    color: inherit;
    font: inherit;
    text-align: inherit;
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    cursor: pointer;
    transition: background var(--duration-fast);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

/* Hover + focus inherited from the canonical "list-row
   interactive" primitive — see `.list-row-button` block above
   for rationale. */

.account-management-tree-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
}

.account-management-tree-primary {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
    min-width: 0;
}

.account-management-tree-name {
    font-family: 'Orbitron', monospace;
    font-size: 0.86rem;
    font-weight: 700;
    color: var(--patriot-white);
}

.account-management-tree-type {
    font-size: 0.78rem;
    color: var(--text-secondary);
}

.account-management-tree-tag {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 2px var(--spacing-xs);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 14%, transparent);
    color: var(--text-secondary);
}

.account-management-tree-meta {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

/* Detail mode — single UA. Mirrors principal-management-detail
   chrome with the same back-link header pattern. */
.account-management-detail {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.account-management-detail-header {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.account-management-back {
    appearance: none;
    border: none;
    background: transparent;
    color: var(--text-accent);
    font: inherit;
    font-size: 0.78rem;
    text-align: left;
    padding: 0;
    cursor: pointer;
    align-self: flex-start;
}

.account-management-back:hover {
    color: var(--anviz-accent-primary);
}

.account-management-detail-title {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.account-management-detail-title h2 {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 1rem;
    color: var(--patriot-white);
}

.account-management-detail-type {
    font-size: 0.82rem;
    color: var(--text-secondary);
}

.account-management-detail-tag {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 2px var(--spacing-xs);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 14%, transparent);
    color: var(--text-secondary);
}

.account-management-identity,
.account-management-hierarchy,
.account-management-principal,
.account-management-addresses {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.account-management-identity-readonly {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    padding-top: var(--spacing-sm);
    border-top: 1px solid color-mix(in srgb, var(--text-muted) 20%, transparent);
}

/* Inline create-sub-account form — same dashed-border treatment
   as the Add Member form on the Principal Management panel so
   the "form, not row" affordance is visually consistent. */
.account-management-create-sub {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    border: 1px dashed
        color-mix(in srgb, var(--anviz-accent-secondary) 40%, transparent);
    border-radius: var(--radius-sm);
}

.account-management-create-sub-actions {
    display: flex;
    gap: var(--spacing-sm);
    justify-content: flex-end;
}

.account-management-create-sub-trigger {
    appearance: none;
    align-self: flex-start;
    border: 1px dashed
        color-mix(in srgb, var(--anviz-accent-secondary) 40%, transparent);
    background: transparent;
    color: var(--text-accent);
    font: inherit;
    font-size: 0.78rem;
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    cursor: pointer;
}

.account-management-create-sub-trigger:hover {
    background: color-mix(in srgb, var(--anviz-accent-secondary) 6%, transparent);
}

.account-management-empty {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    padding: var(--spacing-md);
    border: 1px dashed
        color-mix(in srgb, var(--text-muted) 30%, transparent);
    border-radius: var(--radius-sm);
}

/* Top-of-tree affordance bar — hosts the inline + Create
   universal account button and (eventually) other tree-level
   actions (filter / collapse-all / etc.). Keeps the sticky
   feeling without an actual sticky positioning. */
.account-management-tree-toolbar {
    display: flex;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-sm);
}

/* Per-chain address group inside the Detail's Addresses
   section. Heading + tight list. Multiple groups stack with
   normal spacing. */
.account-management-address-group {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm) 0;
    border-bottom: 1px solid color-mix(in srgb, var(--text-muted) 15%, transparent);
}

.account-management-address-group:last-child {
    border-bottom: none;
}

.account-management-address-group-label {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.74rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--anviz-accent-primary);
}

.account-management-address-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.account-management-address-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-sm);
    padding: 0.3rem var(--spacing-sm);
    background: color-mix(in srgb, var(--anviz-bg-panel) 80%, transparent);
    border-radius: var(--radius-sm);
}

.account-management-address-network {
    font-size: 0.78rem;
    color: var(--text-secondary);
    font-family: 'IBM Plex Mono', monospace;
}

/* Address value renders as a clickable button that copies the
   full value to the clipboard on click. Hover reveals the copy
   glyph more prominently; the title attribute on the button
   surfaces the full address on hover too. */
.account-management-address-value {
    appearance: none;
    border: none;
    background: transparent;
    color: var(--patriot-white);
    font: inherit;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    padding: 0.2rem 0.4rem;
    cursor: pointer;
    border-radius: var(--radius-sm);
    transition: background var(--duration-fast);
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-xs);
}

.account-management-address-value:hover,
.account-management-address-value:focus-visible {
    background: color-mix(in srgb, var(--anviz-accent-secondary) 14%, transparent);
    outline: none;
}

.account-management-address-copy {
    color: var(--text-muted);
    font-size: 0.74rem;
    opacity: 0.5;
    transition: opacity var(--duration-fast);
}

.account-management-address-value:hover .account-management-address-copy,
.account-management-address-value:focus-visible .account-management-address-copy {
    opacity: 1;
    color: var(--text-accent);
}

.account-management-empty-label {
    font-family: 'Orbitron', monospace;
    font-size: 0.82rem;
    color: var(--text-secondary);
}

.account-management-empty-hint {
    font-size: 0.78rem;
    color: var(--text-muted);
    line-height: 1.4;
}

.principal-management-panel {
    display: flex;
    flex-direction: column;
    gap: 0;
    min-height: 0;
    /* See --panel-edge-pad. */
    padding-inline: var(--panel-edge-pad);
    padding-block-start: var(--panel-edge-pad);
}

.principal-management-header {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding-bottom: var(--spacing-md);
}

.principal-management-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--anviz-accent-primary);
}

.principal-management-subtitle {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.8rem;
    color: var(--text-muted);
    line-height: 1.5;
}

.principal-management-scroll {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
    padding: var(--spacing-xs) 0 var(--spacing-lg);
    min-height: 0;
}

/* Roster mode — drillable list of all the user's principals. */
.principal-management-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.principal-management-list-item {
    border-radius: var(--radius-sm);
    overflow: hidden;
    background: color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 20%, transparent);
    transition: border-color var(--duration-fast), box-shadow var(--duration-fast);
}

/* Active-row highlight — shown at L1 of the list-then-tab IA
   stack, where the user has picked an entity from the list
   (setting the active context) but hasn't yet clicked a tab
   to navigate to detail. The user needs to see WHICH entity
   is active so they can confirm their pick before clicking a
   tab, or re-select if they meant a different entity.
   Treatment: gold border + subtle gold glow — matches the
   bar's `.active` lit-gold semantic so "lit gold = active /
   selected" reads consistently across the workspace chrome
   and the panel content. */
.principal-management-list-item--active {
    border-color: var(--accent-gold);
    box-shadow: var(--shadow-glow-gold);
}

.principal-management-list-button {
    appearance: none;
    border: none;
    background: transparent;
    color: inherit;
    font: inherit;
    text-align: inherit;
    width: 100%;
    padding: var(--spacing-md);
    cursor: pointer;
    transition: background var(--duration-fast);
}

/* Hover + focus inherited from the canonical "list-row
   interactive" primitive grouped near `.list-row-button` —
   keeps the visual grammar consistent with Home's entity rows
   and Account Management's tree nodes. */

.principal-management-card {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.principal-management-card-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.principal-management-card-name {
    font-family: 'Orbitron', monospace;
    font-size: 0.86rem;
    font-weight: 700;
    color: var(--patriot-white);
}

.principal-management-card-kind {
    font-size: 0.78rem;
    color: var(--text-secondary);
}

.principal-management-card-meta {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

/* Detail mode — single Principal's surface. */
/* Detail-mode container fills the parent panel-scrollable so
   the body can own its own internal scroll and the
   PanelTabBar lives outside that scroll — anchored to the
   panel's bottom edge with content scrolling behind it. The
   parent `.panel-scrollable` `overflow-y: auto` never engages
   here because the detail fills exactly the available height
   (`flex: 1; min-height: 0; overflow: hidden`). */
.principal-management-detail {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    overflow: hidden;
    gap: 0;
}

.principal-management-detail-header {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding-bottom: var(--spacing-md);
    flex-shrink: 0;
}

/* The active-tab body owns the scroll. PanelTabBar sits
   below it as a sibling, naturally pinned at the bottom of
   the flex column without needing `position: sticky`. */
.principal-management-detail-body {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: var(--spacing-xs) 0 var(--spacing-md);
    /* Hide native scrollbar so the chrome reads clean; the
       content still scrolls naturally. Mirrors the pattern
       used by `.panel-scrollable` on mobile. */
    scrollbar-width: thin;
}

/* ============================================================
   M-CALLOUT — framed informational/explainer surface
   ============================================================
   Canonical primitive for the eyebrow + body explainer card
   pattern. Replaces the ad-hoc class families that surfaced
   during the privacy-shield work (charter-tab-intro, invite-
   code-section-header, invite-discoverability-note,
   invite-code-modal-explainer, charter-clause-hint). See
   `components/info_callout.rs` for the typed component +
   tone narrative.

   Three tones:
   - `--privacy-shield` — gold trim. User-controlled / "this is
     yours" framing. Pairs with the You-shield language elsewhere
     (`.home-row-list-item--personal`, `.principal-management-
     detail-title--personal`, gold active state on
     `.primary-domain-control` + `.m-panel-control-bar__tab`).
   - `--info` — blue trim. Default informational tone.
   - `--warning` — amber. Pre-flight / save-now warnings. */
.m-callout {
    display: flex;
    align-items: flex-start;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    border: 1px solid transparent;
    border-radius: var(--radius-sm);
}

.m-callout--privacy-shield {
    background: color-mix(in srgb, var(--accent-gold) 7%, transparent);
    border-color: color-mix(in srgb, var(--accent-gold) 30%, transparent);
}

.m-callout--info {
    background: color-mix(in srgb, var(--text-accent) 6%, transparent);
    border-color: color-mix(in srgb, var(--text-accent) 25%, transparent);
}

.m-callout--warning {
    background: color-mix(in srgb, var(--status-warning, #c9a227) 10%, transparent);
    border-color: color-mix(in srgb, var(--status-warning, #c9a227) 40%, transparent);
}

.m-callout__icon {
    flex-shrink: 0;
    font-size: 1rem;
    line-height: 1.4;
}

.m-callout--privacy-shield .m-callout__icon {
    color: var(--accent-gold);
}

.m-callout--info .m-callout__icon {
    color: var(--text-accent);
}

.m-callout--warning .m-callout__icon {
    color: var(--status-warning, #c9a227);
}

.m-callout__content {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    flex: 1;
    min-width: 0;
}

.m-callout__eyebrow {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 1.5px;
    text-transform: uppercase;
}

.m-callout--privacy-shield .m-callout__eyebrow {
    color: var(--accent-gold);
}

.m-callout--info .m-callout__eyebrow {
    color: var(--text-accent);
}

.m-callout--warning .m-callout__eyebrow {
    color: var(--status-warning, #c9a227);
}

.m-callout__body {
    margin: 0;
    font-size: 0.82rem;
    line-height: 1.5;
    color: var(--text-secondary);
}

.m-callout__body strong {
    color: var(--text-primary);
    font-weight: 600;
}

.m-callout__body em {
    color: var(--text-primary);
    font-style: italic;
}

.m-callout__body code {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
    padding: 1px 5px;
    background: color-mix(in srgb, var(--text-accent) 12%, transparent);
    color: var(--text-accent);
    border-radius: 3px;
}

.m-callout__body p {
    margin: 0;
}

.m-callout__body p + p {
    margin-top: var(--spacing-xs);
}

/* ============================================================
   M-CHIP — small selectable pill control
   ============================================================
   Single-line, low-chrome selectable element. Used for time-
   preset pickers, mode toggles, filter chips, and other
   high-density "tap-this-short-label-to-pick-this-option"
   surfaces. See `components/chip.rs` for the typed component.

   Two tones:
   - `--default` — neutral idle, gold-on-active (the You-shield
     engagement color). Default for most picker/toggle cases.
   - `--dim` — for chips that should read as escape-hatch /
     "advanced" siblings; idle is muted, active is the same
     gold treatment so the user gets identical feedback when
     they pick it. */
.m-chip {
    appearance: none;
    padding: var(--spacing-xs) var(--spacing-md);
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.74rem;
    cursor: pointer;
    white-space: nowrap;
    transition: all var(--duration-fast);
}

.m-chip:hover:not(:disabled):not(.active) {
    background: color-mix(in srgb, var(--text-accent) 8%, transparent);
    color: var(--text-primary);
}

.m-chip:focus-visible {
    outline: var(--interactive-focus-outline);
    outline-offset: var(--interactive-focus-offset);
}

.m-chip:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}

.m-chip.active {
    background: var(--accent-gold);
    border-color: var(--accent-gold);
    color: var(--dark-bg);
    cursor: default;
}

.m-chip--dim {
    background: color-mix(in srgb, var(--text-muted) 6%, transparent);
    border-color: color-mix(in srgb, var(--text-muted) 25%, transparent);
}

.m-chip--dim:hover:not(:disabled):not(.active) {
    background: color-mix(in srgb, var(--text-muted) 12%, transparent);
}

/* ============================================================
   M-SELECTABLE-CARD — card-radio with title + description
   ============================================================
   Canonical primitive for the "click-this-card-to-pick-this-
   option" pattern. Replaces ad-hoc per-consumer chrome that
   surfaced for the charter discoverability picker, the invite-
   code action picker, and similar option-stacks.

   Two tones:
   - `--gold` — active state fills gold (privacy/identity-
     flavored choices; default).
   - `--blue` — active state fills blue (operational / commit-
     flavored choices). */
.m-selectable-card {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: var(--spacing-sm) var(--spacing-md);
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--text-accent) 25%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    cursor: pointer;
    text-align: left;
    appearance: none;
    transition: all var(--duration-fast);
}

.m-selectable-card:hover:not(:disabled):not(.selected) {
    background: color-mix(in srgb, var(--text-accent) 6%, transparent);
    border-color: color-mix(in srgb, var(--text-accent) 50%, transparent);
}

.m-selectable-card:focus-visible {
    outline: var(--interactive-focus-outline);
    outline-offset: var(--interactive-focus-offset);
}

.m-selectable-card:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}

.m-selectable-card__title {
    font-family: 'Orbitron', monospace;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--text-primary);
}

.m-selectable-card__description {
    font-size: 0.74rem;
    line-height: 1.4;
    color: var(--text-secondary);
}

/* Gold tone — default. Active state matches the You-shield
   language: gold fill, dark text, gold glow. Same grammar as
   `.primary-domain-control.active` + `.m-panel-control-bar__tab.active`. */
.m-selectable-card--gold.selected {
    background: color-mix(in srgb, var(--accent-gold) 12%, transparent);
    border-color: var(--accent-gold);
    box-shadow: var(--shadow-glow-gold);
    color: var(--text-primary);
}

.m-selectable-card--gold.selected .m-selectable-card__title {
    color: var(--accent-gold);
}

/* Blue tone — operational/commit-flavored. Active state mirrors
   the `.m-btn--primary` chrome (solid blue, light text, blue
   glow). */
.m-selectable-card--blue.selected {
    background: color-mix(in srgb, var(--anviz-accent-secondary) 14%, transparent);
    border-color: var(--anviz-accent-secondary);
    box-shadow: var(--shadow-glow-blue);
    color: var(--text-primary);
}

.m-selectable-card--blue.selected .m-selectable-card__title {
    color: var(--text-accent);
}

/* ============================================================
   INVITE CODE SECTION (issuer-side, Personal Entity Charter tab)
   ============================================================
   Surfaces the invitation-code primitive on Personal Entities.
   Stub today — substrate primitive pending per
   `MEMO_TO_AN_ACCOUNT_INVITE_CODES_2026-05-07.md`. The chrome
   matches the You-shield language elsewhere (gold trim) so it
   reads as part of the same privacy-stack surface. */
.invite-code-section {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: 0;
}

.invite-code-section-lead {
    margin: 0;
    font-size: 0.8rem;
    line-height: 1.45;
    color: var(--text-secondary);
}

.invite-code-section-actions {
    display: flex;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.invite-code-section-count {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.74rem;
    color: var(--text-secondary);
    align-self: center;
}

.invite-code-section-count--loading {
    color: var(--text-muted);
    font-style: italic;
}

.invite-code-section-error {
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--status-error, #c0392b) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error, #c0392b) 35%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 0.78rem;
}

.invite-code-section-empty {
    margin: 0;
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-muted) 6%, transparent);
    border: 1px dashed color-mix(in srgb, var(--text-muted) 30%, transparent);
    border-radius: var(--radius-sm);
    font-size: 0.82rem;
    color: var(--text-secondary);
    line-height: 1.5;
    text-align: center;
}

.invite-code-section-empty strong {
    color: var(--text-primary);
}

/* Active code list rows */
.invite-code-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.invite-code-row {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--card-bg) 70%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 18%, transparent);
    border-radius: var(--radius-sm);
}

.invite-code-row--inactive {
    opacity: 0.55;
}

.invite-code-row-primary {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.invite-code-row-tier {
    font-family: 'Orbitron', monospace;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-primary);
}

.invite-code-row-bound {
    font-size: 0.74rem;
    color: var(--text-secondary);
    font-style: italic;
}

.invite-code-row-meta {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.invite-code-row-actions {
    display: flex;
    justify-content: flex-end;
    gap: var(--spacing-xs);
}

/* Generate modal — form + preset chips */
.invite-code-modal-body {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.invite-code-modal-explainer {
    margin: 0;
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 8%, transparent);
    border-left: 2px solid color-mix(in srgb, var(--text-accent) 50%, transparent);
    border-radius: var(--radius-sm);
    font-size: 0.78rem;
    line-height: 1.5;
    color: var(--text-secondary);
}

.invite-code-modal-field {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.invite-code-modal-radio-stack {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.invite-code-modal-radio-stack--inline {
    flex-direction: row;
    flex-wrap: wrap;
    gap: var(--spacing-xs);
}

/* (`.invite-code-modal-radio*` family removed — the cards now
   come from the canonical `.m-selectable-card` primitive. The
   `.invite-code-modal-radio-stack` container above keeps its
   own class for layout.) */

/* Layout container for the chip row in the expiry-preset
   picker. The Chip primitives inside come from `.m-chip`. */
.invite-code-modal-chip-row {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-xs);
}

.invite-code-modal-error {
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--status-error, #c0392b) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error, #c0392b) 35%, transparent);
    border-radius: var(--radius-sm);
    font-size: 0.78rem;
    color: var(--text-primary);
}

.invite-code-modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: var(--spacing-sm);
}

/* Plaintext display modal — the one-shot save-now surface */
.invite-code-plaintext-body {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.invite-code-plaintext-warning {
    margin: 0;
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--accent-gold) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--accent-gold) 45%, transparent);
    border-radius: var(--radius-sm);
    font-size: 0.82rem;
    line-height: 1.5;
    color: var(--text-primary);
}

.invite-code-plaintext-display {
    text-align: center;
    padding: var(--spacing-md);
    background: var(--dark-bg);
    border: 1px solid var(--accent-gold);
    border-radius: var(--radius-md);
}

.invite-code-plaintext-code {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 1.4rem;
    font-weight: 700;
    letter-spacing: 0.15em;
    color: var(--accent-gold);
    user-select: all;
}

.invite-code-plaintext-link {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.invite-code-plaintext-link-label {
    font-size: 0.74rem;
    color: var(--text-secondary);
}

.invite-code-plaintext-link-value {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    padding: var(--spacing-xs) var(--spacing-sm);
    background: color-mix(in srgb, var(--card-bg) 80%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 25%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    word-break: break-all;
    user-select: all;
}

.invite-code-plaintext-qr {
    display: flex;
    justify-content: center;
    padding: var(--spacing-md);
    background: var(--star-white);
    border-radius: var(--radius-md);
}

.invite-code-plaintext-qr svg {
    display: block;
    max-width: 180px;
}

.invite-code-plaintext-qr-error {
    margin: 0;
    color: var(--status-error, #c0392b);
    font-size: 0.78rem;
}

.invite-code-plaintext-meta {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--card-bg) 60%, transparent);
    border-radius: var(--radius-sm);
}

.invite-code-plaintext-actions {
    display: flex;
    justify-content: flex-end;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

/* Redeemer panel — paste + preview + redeem */
.invite-code-redeem {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.invite-code-redeem-explainer {
    margin: 0;
    font-size: 0.78rem;
    line-height: 1.5;
    color: var(--text-secondary);
}

.invite-code-redeem-input {
    font-family: 'IBM Plex Mono', monospace;
    letter-spacing: 0.08em;
}

.invite-code-redeem-actions {
    display: flex;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.invite-code-redeem-error {
    padding: var(--spacing-xs) var(--spacing-sm);
    background: color-mix(in srgb, var(--status-error, #c0392b) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error, #c0392b) 35%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 0.78rem;
}

.invite-code-redeem-preview {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--accent-gold) 7%, transparent);
    border: 1px solid color-mix(in srgb, var(--accent-gold) 30%, transparent);
    border-radius: var(--radius-sm);
}

.invite-code-redeem-preview-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.invite-code-redeem-preview-action {
    font-family: 'Orbitron', monospace;
    font-size: 0.74rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-primary);
}

.invite-code-redeem-preview-meta {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.invite-code-redeem-preview-hint {
    margin: 0;
    font-size: 0.74rem;
    color: var(--text-secondary);
    font-style: italic;
    line-height: 1.4;
}

/* ============================================================
   CHARTER TAB — INTRO + CLAUSE HINTS
   ============================================================
   The Charter tab carries five clauses worth of editor; the
   intro card frames the mental model in plain language and the
   per-clause hints (one short paragraph at the top of each
   `Collapsible` body) name what *that* clause governs without
   the user having to infer it from the editor controls. */
.charter-tab-intro {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--card-bg) 80%, transparent);
    border: 1px solid color-mix(in srgb, var(--accent-gold) 30%, transparent);
    border-radius: var(--radius-md);
}

/* (`.charter-tab-intro-frame/-eyebrow/-body` removed — the
   intro card is now an `.m-callout` rendered by the component.) */

.charter-tab-intro-status {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.charter-tab-intro-hint {
    font-size: 0.78rem;
    color: var(--text-muted);
    font-style: italic;
}

/* Vault-unlock affordance — surfaces inline on the Charter
   tab when the canonical-Vault session is locked (typical
   post-page-reload state). The user has a valid auth-service
   session but the in-memory PRF stash is gone; the button
   below runs a fresh passkey assertion to capture PRF +
   stash, then bumps the parent's reload counter so the
   Charter fetch re-fires. Same `.m-button--primary` primitive
   the canonical chips use; layout matches the surrounding
   `.charter-tab-intro-status` row so the affordance reads as
   the natural "next step" rather than an error. */
.charter-tab-intro-unlock {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.charter-tab-intro-unlock-button {
    /* Sized to sit inline with the StatusBadge + hint without
       dominating the row. Same hover/active treatment as the
       canonical bar chips inherits via `.m-button--primary`. */
    padding-block: 0.35rem;
    padding-inline: 0.85rem;
    font-size: 0.85rem;
}

.charter-tab-intro-unlock-error {
    flex-basis: 100%;
    font-size: 0.78rem;
    color: var(--text-error, #c0392b);
}

/* (`.charter-clause-hint` removed — clause hints are now
   `.m-callout` instances rendered by the component.) */

/* ============================================================
   PANEL CONTROL BAR (canonical "game-control console")
   ============================================================
   Two stacked rows pinned to the bottom of every panel that
   adopts the canonical IA convention (see
   `panel_control_bar.rs` docstring):

   - Bottom row (primary)  — leading + tabs. The persistent
     navigation map; height matches `.chat-input-container`'s
     chip row (44px) so the "primary controls live here"
     muscle memory is the same across the chat surface and
     every panel.
   - Top row (actions)     — trailing slot. Contextual to the
     active tab; collapses entirely when no trailing is
     supplied.

   Container chrome mirrors `.chat-input-container` (card-bg
   blur + blue-accent top border) so the bar reads as the
   same chrome family. Tab buttons mirror
   `.primary-domain-control` (Orbitron uppercase, blue at
   rest, gold fill on active) so the grammar matches the
   workspace's top primary-domain rack. */
.m-panel-control-bar {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    background: color-mix(in srgb, var(--card-bg) 88%, transparent);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

/* Each row owns its own padding + flex layout so the two rows
   can be styled independently (different heights, different
   alignments). The actions row sits above the primary row;
   each row gets a subtle internal divider when both are
   present. */
.m-panel-control-bar__row {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
}

/* Top row — contextual actions for the active tab. Right-
   aligned so the action chips visually anchor over the tab
   they belong to (the rightmost portion of the primary row
   typically contains the action's "subject" via the tab
   strip's tail). */
.m-panel-control-bar__row--actions {
    justify-content: flex-end;
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 15%, transparent);
}

/* Bottom row — persistent primary nav. Min-height matches
   the chat-input chip row (44px); the row's content (tabs +
   leading slot) self-sizes within that vertical envelope. */
.m-panel-control-bar__row--primary {
    min-height: 44px;
}

/* Leading + trailing slot wrappers. Both reuse the same
   horizontal-flex shape so leading on the bottom row and
   trailing on the top row look like sibling control clusters. */
.m-panel-control-bar__leading,
.m-panel-control-bar__trailing {
    display: flex;
    align-items: center;
    flex-shrink: 0;
    /* `sm` (not `xs`) so adjacent rack chips read as siblings
       in a row, not crammed into a pill — the rack should
       feel like a HUD with breathing room around each
       affordance. */
    gap: var(--spacing-sm);
}

.m-panel-control-bar__tabs {
    display: flex;
    flex: 1;
    align-items: center;
    /* Tabs anchor to the left of the strip immediately after
       any leading slot (e.g. Settings on Home) so the user's
       eye hits leading → first tab → second tab in left-to-
       right reading order. Centered alignment was tried in
       v1 but produced an awkward gap between the leading
       chip and the tab strip on wide panels. */
    justify-content: flex-start;
    gap: var(--spacing-xs);
    overflow-x: auto;
    /* Hide native scrollbar; on narrow viewports the row scrolls
       horizontally rather than wrapping or truncating labels. */
    scrollbar-width: none;
    -ms-overflow-style: none;
}

.m-panel-control-bar__tabs::-webkit-scrollbar {
    display: none;
}

/* Tab button — mirrors `.primary-domain-control`. Heights /
   borders / typography match so a tab in the bottom rack reads
   as the same control language as a domain pick in the top
   rack. Height bumped to 36px (from 28px) so the strip fills
   the 44px primary-row envelope cleanly with the row's
   spacing-sm vertical padding. */
.m-panel-control-bar__tab {
    position: relative;
    appearance: none;
    height: 36px;
    padding: 0 var(--spacing-md);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-xs);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-sm);
    color: var(--primary-blue);
    cursor: pointer;
    font-family: 'Orbitron', monospace;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 1px;
    text-transform: uppercase;
    white-space: nowrap;
    transition: all var(--duration-fast);
}

.m-panel-control-bar__tab:hover:not(.active) {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    color: var(--text-accent);
    box-shadow: var(--shadow-glow-blue);
}

.m-panel-control-bar__tab:focus-visible {
    outline: var(--interactive-focus-outline);
    outline-offset: var(--interactive-focus-offset);
}

.m-panel-control-bar__tab:active:not(:disabled) {
    transform: translateY(var(--interactive-active-translate));
}

/* Active tab — mirrors `.primary-domain-control.active`: gold
   fill, dark text, gold glow. The HUD-flagged-objective look:
   "this is the lit selection." */
.m-panel-control-bar__tab.active {
    background: var(--accent-gold);
    color: var(--dark-bg);
    border-color: var(--accent-gold);
    box-shadow: var(--shadow-glow-gold);
    cursor: default;
}

.m-panel-control-bar__tab-label {
    line-height: 1;
}

/* Badge — gold pill on idle/hover, inverted to dark-on-gold
   when its parent tab is active so the count stays legible
   against the gold fill. */
.m-panel-control-bar__badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 16px;
    height: 16px;
    padding: 0 5px;
    border-radius: 8px;
    background: color-mix(in srgb, var(--accent-gold) 25%, transparent);
    color: var(--accent-gold);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.6rem;
    font-weight: 600;
    line-height: 1;
    letter-spacing: 0;
    text-transform: none;
}

.m-panel-control-bar__tab.active .m-panel-control-bar__badge {
    background: color-mix(in srgb, var(--dark-bg) 25%, transparent);
    color: var(--dark-bg);
}

/* Mobile collapse: each row tightens its padding; tabs
   distribute evenly across the strip so four-to-five tabs
   fit across a 360px viewport without horizontal scroll. */
@media (max-width: 480px) {
    .m-panel-control-bar__row {
        padding: var(--spacing-xs) var(--spacing-sm);
        gap: var(--spacing-xs);
    }

    .m-panel-control-bar__tabs {
        justify-content: space-between;
    }

    .m-panel-control-bar__tab {
        padding: 0 var(--spacing-sm);
        flex: 1;
        font-size: 0.6rem;
        letter-spacing: 0.5px;
    }
}

/* Section-focus primitive (PR Series A.2.4f, 2026-05-10) retired
   in PR Series A.2.4h (2026-05-23). The radial focus chip + the
   purple-border focus container were replaced by expand-to-focus
   on the existing `<Collapsible>` (Option 3 of the section-focus
   refactor — single-open accordion + adaptive control bar). The
   bar's section-action chip now resolves against the currently-
   expanded clause directly via `PrincipalEditActions::section_action`. */

/* ============================================================
   Panel Bar (PR Series A.1, 2026-05-10 canon)
   New canonical panel footer bar — always two rows, stable
   [← ⚙ X] cluster, scrollable middle. See
   `docs/memos/MEMO_PANEL_BAR_CANON_2026-05-10.md`.

   Stub-level styling at landing — Series A.2's per-panel
   migrations will iterate visuals as panels adopt the new
   shape. Container chrome mirrors `.chat-input-container` for
   muscle-memory continuity with the chat surface.
   ============================================================ */

/* Panel bar reaches the panel container's edges regardless of
   whatever inner `padding-inline: var(--panel-edge-pad)` the
   hosting panel applies — `margin-inline: calc(-1 * --panel-edge-pad)`
   pulls the bar's background out to the panel-container edge,
   then each row applies `padding-inline: var(--panel-edge-pad)`
   so the actual buttons inside still respect the canonical
   inset. Net result: full-width band of chrome, canonical
   button alignment, no per-panel ad-hoc adjustments needed.

   Background + border-top reference the canonical `--bar-row-*`
   tokens so chat-side and panel-side chrome use the SAME
   primitives — change one declaration and both bars update in
   lockstep. */
.m-panel-bar {
    background: var(--bar-row-bg);
    border-top: var(--bar-row-border);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    display: flex;
    flex-direction: column;
    gap: 0;
    /* Escape parent panel's `padding-inline: var(--panel-edge-pad)`
       so the bar background spans the panel-container edge to
       edge. Panels that don't apply edge padding will see a
       sliver of overflow — those should adopt the canonical
       padding pattern. */
    margin-inline: calc(-1 * var(--panel-edge-pad));
}

.m-panel-bar__row {
    /* Canonical bar row height — top row hosts 44px buttons
       centered in 52px breathing room. The bottom row
       overrides via `--bar-row-height-bottom` to match the
       chat input row's vertical footprint exactly. */
    height: var(--bar-row-height-top);
    display: flex;
    align-items: center;
    /* Canonical inner padding — matches `.chat-bar`'s so
       buttons on either bar line up at the same inset. */
    padding: 0 var(--panel-edge-pad);
    gap: var(--spacing-sm);
}

.m-panel-bar__row--top {
    /* Bump height by the divider thickness so the 1px
       border-bottom (counted INTO the box per box-sizing
       border-box) doesn't subtract from the canonical 52px
       content area. Net total is 53px including the divider —
       matches the chat-side `.chat-bar-row`'s 1+52+1=54px
       region (the `.m-panel-bar`'s outer border-top adds the
       missing 1px to make both bars total to the same pixel
       height end-to-end). */
    height: calc(var(--bar-row-height-top) + var(--bar-row-divider-thickness));
    border-bottom: var(--bar-row-divider);
    overflow-x: auto;
    /* Edge-fade affordance — signals more tabs are reachable
       by scroll. */
    mask-image: linear-gradient(to right, black 0, black calc(100% - 24px), transparent);
    -webkit-mask-image: linear-gradient(to right, black 0, black calc(100% - 24px), transparent);
}

.m-panel-bar__row--bottom {
    /* Mirrors `.chat-input-container`'s shape rule exactly so the
       chips sit inside an explicit padded frame the same way the
       chat-input buttons do — `min-height` (not `height`) + block
       padding `var(--panel-edge-pad)`, instead of the previous
       fixed `height` + zero block padding model.
       
       Both bars consume the same `--bar-row-height-bottom` token
       (77px, see the token's docstring for the rationale) so this
       row's outer height lands at 77px in the no-overflow case
       — pixel-aligned with the chat-input-container next to it.
       That alignment is the canon: chat panel's bottom row + right-
       side panel(s)' bottom rows read as a single unified control
       surface across the workspace.
       
       Stable [← ⚙] / middle / [X] layout via three flex children;
       middle gets flex: 1 to absorb remaining space. */
    min-height: var(--bar-row-height-bottom);
    height: auto;
    padding-block: var(--panel-edge-pad);
}

.m-panel-bar__leading,
.m-panel-bar__trailing {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    flex-shrink: 0;
}

.m-panel-bar__middle {
    flex: 1;
    min-width: 0;
    display: flex;
    align-items: center;
    overflow-x: auto;
    /* Same edge-fade as the top row for consistency. */
    mask-image: linear-gradient(to right, black 0, black calc(100% - 16px), transparent);
    -webkit-mask-image: linear-gradient(to right, black 0, black calc(100% - 16px), transparent);
}

.m-panel-bar__row--top::-webkit-scrollbar,
.m-panel-bar__middle::-webkit-scrollbar {
    display: none;
}

/* Stable [← ⚙ X] cluster buttons — icon-only, fixed footprint.
   Disabled-state is the visible muscle-memory anchor at root
   per the canon's §4 routing rules.

   Visual narrative is the canonical "cockpit hardware button":
   - Rest: subtle linear gradient + inset highlight (gives the
     button physical presence — reads as a tactile control,
     not a flat web button)
   - Hover: lift up 1px + gold border + intensified blue glow
     (the canonical "engagement" gesture)
   - Active (pressed): translateY back to 0 + reduced glow
     (committed press — settles into the bezel)

   44px square footprint matches `.chat-bar__button`,
   `.chat-input-field`, and `.chat-send-button` so the icon
   cluster reads as a peer across the workspace chrome. */
.m-panel-bar__stable {
    height: var(--bar-button-size);
    min-width: var(--bar-button-size);
    padding: 0 var(--spacing-sm);
    background: linear-gradient(
        180deg,
        color-mix(in srgb, var(--primary-blue) 14%, transparent) 0%,
        color-mix(in srgb, var(--primary-blue) 6%, transparent) 100%
    );
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-md);
    color: var(--primary-blue);
    font-size: 1.05rem;
    line-height: 1;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    /* Inset highlight gives the button tactile depth — reads
       as a control with a beveled edge rather than a flat
       overlay. The dark inset on the bottom edge implies
       seating in a bezel. */
    box-shadow:
        inset 0 1px 0 color-mix(in srgb, var(--text-accent) 18%, transparent),
        inset 0 -1px 0 color-mix(in srgb, black 30%, transparent);
    transition: background 160ms ease, border-color 160ms ease,
        color 160ms ease, box-shadow 160ms ease, transform 120ms ease;
}

.m-panel-bar__stable:hover:not(:disabled) {
    background: linear-gradient(
        180deg,
        color-mix(in srgb, var(--primary-blue) 22%, transparent) 0%,
        color-mix(in srgb, var(--primary-blue) 12%, transparent) 100%
    );
    border-color: var(--accent-gold);
    color: var(--text-primary);
    transform: translateY(-1px);
    box-shadow:
        inset 0 1px 0 color-mix(in srgb, var(--text-accent) 28%, transparent),
        inset 0 -1px 0 color-mix(in srgb, black 30%, transparent),
        var(--shadow-glow-blue);
}

.m-panel-bar__stable:active:not(:disabled) {
    transform: translateY(0);
    box-shadow:
        inset 0 2px 4px color-mix(in srgb, black 40%, transparent),
        inset 0 -1px 0 color-mix(in srgb, var(--text-accent) 12%, transparent);
}

.m-panel-bar__stable:disabled {
    opacity: 0.35;
    cursor: not-allowed;
}

/* Top-row tab styles — both panel-switcher and item-sub-tabs
   reuse the same chip visual. Mirrors `.primary-domain-control`
   so the cross-panel switcher reads visually as primary
   navigation. */
.m-panel-bar__switcher,
.m-panel-bar__sub-tabs {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: nowrap;
}

/* Panel-switcher AND item-sub-tabs fill the row width; each
   tab gets `flex: 1` so they distribute equally across the
   available space — same canonical "fill the row" treatment
   the chat input's Send/Receive buttons + the entity panel's
   Charter/Profile/People/$Maps tabs use. The user's read:
   "buttons in our top rows and bottom rows should be doing
   what the swap and send buttons do" — equal-share width.
   When the tab count overflows the row, the existing
   edge-fade mask scrolls. */
.m-panel-bar__switcher,
.m-panel-bar__sub-tabs {
    flex: 1;
    justify-content: stretch;
}

/* Switcher-tab and sub-tab styling brings the panel-bar tabs up
   to the chat side's `.primary-domain-control` design language:
   primary-blue border + Orbitron uppercase at rest, blue-glow on
   hover (potential energy → engagement), gold-fill on active
   (the canonical lit-up state for navigation surfaces). Pulled
   from `.primary-domain-control` so the cross-panel switcher
   reads visually as primary navigation peer to the chat-side
   quick-launchers. */
/* All bar buttons land at the canonical 44px height — same as
   the chat bar's `.chat-bar__button`, the chat input's textarea
   + send button, and the panel-bar's stable cluster + search.
   One button height across the workspace's chrome.

   "Cockpit hardware button" treatment: subtle vertical gradient
   + inset highlight at rest gives tactile depth; hover lifts +
   intensifies; active is the canonical lit-gold "engaged" state
   with a deeper glow. */
.m-panel-bar__switcher-tab,
.m-panel-bar__sub-tab {
    /* Each tab grows equally to fill the row width. Pre-fix
       tabs sat at their natural content width with empty space
       on either side; the user wanted the bar buttons to "do
       what the Swap / Send buttons do" — distribute the row's
       width equally. */
    flex: 1 1 0;
    min-width: 0;
    height: var(--bar-button-size);
    padding: 0 var(--spacing-md);
    background: linear-gradient(
        180deg,
        color-mix(in srgb, var(--primary-blue) 14%, transparent) 0%,
        color-mix(in srgb, var(--primary-blue) 6%, transparent) 100%
    );
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-md);
    color: var(--primary-blue);
    font-family: var(--font-display, 'Orbitron', sans-serif);
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    cursor: pointer;
    box-shadow:
        inset 0 1px 0 color-mix(in srgb, var(--text-accent) 18%, transparent),
        inset 0 -1px 0 color-mix(in srgb, black 30%, transparent);
    transition: background 160ms ease, color 120ms ease,
        border-color 160ms ease, box-shadow 160ms ease, transform 120ms ease;
}

.m-panel-bar__switcher-tab:hover:not(.active),
.m-panel-bar__sub-tab:hover:not(.active) {
    background: linear-gradient(
        180deg,
        color-mix(in srgb, var(--primary-blue) 22%, transparent) 0%,
        color-mix(in srgb, var(--primary-blue) 12%, transparent) 100%
    );
    color: var(--text-primary);
    transform: translateY(-1px);
    box-shadow:
        inset 0 1px 0 color-mix(in srgb, var(--text-accent) 28%, transparent),
        inset 0 -1px 0 color-mix(in srgb, black 30%, transparent),
        var(--shadow-glow-blue);
}

.m-panel-bar__switcher-tab:active:not(.active),
.m-panel-bar__sub-tab:active:not(.active) {
    transform: translateY(0);
    box-shadow:
        inset 0 2px 4px color-mix(in srgb, black 40%, transparent),
        inset 0 -1px 0 color-mix(in srgb, var(--text-accent) 12%, transparent);
}

/* Canonical disabled state — used by list-then-tab panels
   (PrincipalManagement / AccountManagement / etc.) when
   tabs lack the entity context to act on. Muted color +
   dashed border + cursor:not-allowed communicates "pick from
   the list first" without any ad-hoc hint chrome. Hover and
   active variants suppressed so the disabled tab reads as
   genuinely inert. */
.m-panel-bar__switcher-tab:disabled,
.m-panel-bar__sub-tab:disabled {
    background: transparent;
    border: 1px dashed color-mix(in srgb, var(--text-muted) 50%, transparent);
    color: var(--text-muted);
    cursor: not-allowed;
    box-shadow: none;
    opacity: 0.65;
}

.m-panel-bar__switcher-tab:disabled:hover,
.m-panel-bar__sub-tab:disabled:hover {
    background: transparent;
    color: var(--text-muted);
    transform: none;
    box-shadow: none;
}

/* Active treatment matches `.primary-domain-control.active` — gold
   fill with dark text reads as "lit up." Aligns with the chat-side
   active-tab vocabulary so a lit nav button means the same thing
   on either bar. The lit state's inset highlight comes from the
   gold itself; the "engaged" glow is amplified to read as a
   deliberate commitment, not a hover hint. */
.m-panel-bar__switcher-tab.active,
.m-panel-bar__sub-tab.active {
    background: linear-gradient(
        180deg,
        color-mix(in srgb, var(--accent-gold) 100%, white 8%) 0%,
        var(--accent-gold) 100%
    );
    border-color: var(--accent-gold);
    color: var(--dark-bg);
    box-shadow:
        inset 0 1px 0 color-mix(in srgb, white 25%, transparent),
        inset 0 -1px 0 color-mix(in srgb, black 25%, transparent),
        var(--shadow-glow-gold);
}

/* Search input in ROW B middle. Aligns with `.chat-input-field`
   so the panel bar's search affordance reads as a peer to the
   chat input's textarea — same primary-blue border at rest, same
   blue-glow on focus. The bar middle is a textual input region
   conceptually parallel to the chat input below it. */
.m-panel-bar__search {
    flex: 1;
    height: var(--bar-button-size);
    padding: 0 var(--spacing-md);
    background: var(--card-bg);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-lg);
    color: var(--text-primary);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.9rem;
    transition: border-color 120ms ease, box-shadow 120ms ease;
}

.m-panel-bar__search::placeholder {
    color: var(--text-muted);
    font-family: 'Orbitron', monospace;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.m-panel-bar__search:focus {
    outline: none;
    box-shadow: var(--shadow-glow-blue);
}

/* Action chips cluster in ROW B middle. Same width-fill
   treatment as the top-row tabs — each chip grows equally
   so the cluster spans the bar's middle slot. */
.m-panel-bar__chips {
    flex: 1;
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: nowrap;
    justify-content: stretch;
}

/* Canonical bar-chip — uses the SAME visual contract as
   `.m-panel-bar__switcher-tab` (44px height, cockpit gradient,
   inset shadow, lift-on-hover). Variant modifiers swap the
   color narrative:
   - secondary  → blue outline at rest (Pair, Cancel)
   - primary    → gold fill (Add, Save) — the canonical "lit
     up commit-action" treatment
   - ghost      → subdued no-border (Help, ?, contextual)

   Pre-fix chips rendered through the `<Button>` component
   (`.m-btn--sm`) which has no fixed height and a different
   visual grammar — broke height parity with the rest of the
   bar. Now they're peers of switcher-tabs in every dimension. */
.m-panel-bar__chip {
    /* Same flex-fill treatment as switcher-tab so chips span
       the bar's middle slot equally — matches the user's
       "buttons fill the row" design call. */
    flex: 1 1 0;
    min-width: 0;
    height: var(--bar-button-size);
    padding: 0 var(--spacing-md);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-xs);
    border-radius: var(--radius-md);
    font-family: var(--font-display, 'Orbitron', sans-serif);
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    cursor: pointer;
    /* Long chip labels (e.g. "Send via Wire") shouldn't break
       the bar layout — single-line + ellipsis on overflow. */
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    transition: background 160ms ease, color 120ms ease,
        border-color 160ms ease, box-shadow 160ms ease, transform 120ms ease;
}

/* Canonical disabled state for chips — matches
   `.m-panel-bar__sub-tab:disabled`. Muted color, dashed
   border, cursor:not-allowed; hover suppressed. Used by
   commit-action chips whose preconditions aren't met (e.g.
   "Send" when the form isn't valid). */
.m-panel-bar__chip:disabled {
    background: transparent;
    border: 1px dashed color-mix(in srgb, var(--text-muted) 50%, transparent);
    color: var(--text-muted);
    cursor: not-allowed;
    box-shadow: none;
    opacity: 0.65;
}

.m-panel-bar__chip:disabled:hover {
    background: transparent;
    color: var(--text-muted);
    transform: none;
    box-shadow: none;
}

.m-panel-bar__chip:active:not(:disabled) {
    transform: translateY(0);
    box-shadow:
        inset 0 2px 4px color-mix(in srgb, black 40%, transparent),
        inset 0 -1px 0 color-mix(in srgb, var(--text-accent) 12%, transparent);
}

/* Secondary variant — same as switcher-tab rest state. */
.m-panel-bar__chip--secondary {
    background: linear-gradient(
        180deg,
        color-mix(in srgb, var(--primary-blue) 14%, transparent) 0%,
        color-mix(in srgb, var(--primary-blue) 6%, transparent) 100%
    );
    border: 1px solid var(--primary-blue);
    color: var(--primary-blue);
    box-shadow:
        inset 0 1px 0 color-mix(in srgb, var(--text-accent) 18%, transparent),
        inset 0 -1px 0 color-mix(in srgb, black 30%, transparent);
}

.m-panel-bar__chip--secondary:hover:not(:disabled) {
    background: linear-gradient(
        180deg,
        color-mix(in srgb, var(--primary-blue) 22%, transparent) 0%,
        color-mix(in srgb, var(--primary-blue) 12%, transparent) 100%
    );
    color: var(--text-primary);
    transform: translateY(-1px);
    box-shadow:
        inset 0 1px 0 color-mix(in srgb, var(--text-accent) 28%, transparent),
        inset 0 -1px 0 color-mix(in srgb, black 30%, transparent),
        var(--shadow-glow-blue);
}

/* Primary variant — same as switcher-tab.active (lit gold). */
.m-panel-bar__chip--primary {
    background: linear-gradient(
        180deg,
        color-mix(in srgb, var(--accent-gold) 100%, white 8%) 0%,
        var(--accent-gold) 100%
    );
    border: 1px solid var(--accent-gold);
    color: var(--dark-bg);
    box-shadow:
        inset 0 1px 0 color-mix(in srgb, white 25%, transparent),
        inset 0 -1px 0 color-mix(in srgb, black 25%, transparent),
        var(--shadow-glow-gold);
}

.m-panel-bar__chip--primary:hover:not(:disabled) {
    transform: translateY(-1px);
    box-shadow:
        inset 0 1px 0 color-mix(in srgb, white 35%, transparent),
        inset 0 -1px 0 color-mix(in srgb, black 25%, transparent),
        var(--shadow-glow-gold);
}

/* Ghost variant — subdued, transparent at rest, light hover.
   Used for [?] / [Cancel] / contextual help affordances. */
.m-panel-bar__chip--ghost {
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--text-muted) 50%, transparent);
    color: var(--text-muted);
}

.m-panel-bar__chip--ghost:hover:not(:disabled) {
    background: color-mix(in srgb, var(--text-accent) 8%, transparent);
    color: var(--text-primary);
    border-color: var(--primary-blue);
    transform: translateY(-1px);
}

/* Selected (mode-active) treatment — canonical "this chip is the
   currently-active mode in a one-of-N cluster" visual. Gold border
   + gold inner glow + gold text (NO gold fill — that's `--primary`'s
   commit-action treatment). Distinguishes the Speed/Cost/Stealth
   intent cluster's lit chip from the Send button.

   Stacks with any variant (`--secondary`, `--ghost`, even
   `--primary` though that combination is unusual): the selected
   styling overrides the variant's border + color, the variant's
   background still applies. The intent cluster on Send uses
   `secondary().selected(true)` for the lit chip — gold border on
   the secondary's blue gradient. */
.m-panel-bar__chip--selected {
    border-color: var(--accent-gold);
    color: var(--text-accent);
    box-shadow:
        inset 0 0 0 1px color-mix(in srgb, var(--accent-gold) 60%, transparent),
        inset 0 1px 0 color-mix(in srgb, var(--accent-gold) 30%, transparent),
        inset 0 -1px 0 color-mix(in srgb, black 30%, transparent),
        0 0 8px color-mix(in srgb, var(--accent-gold) 35%, transparent);
}

.m-panel-bar__chip--selected:hover:not(:disabled) {
    color: var(--text-accent);
    transform: translateY(-1px);
    box-shadow:
        inset 0 0 0 1px color-mix(in srgb, var(--accent-gold) 80%, transparent),
        inset 0 1px 0 color-mix(in srgb, var(--accent-gold) 40%, transparent),
        inset 0 -1px 0 color-mix(in srgb, black 30%, transparent),
        0 0 12px color-mix(in srgb, var(--accent-gold) 45%, transparent);
}

.m-panel-bar__middle-empty {
    /* Empty middle slot — render a flexible spacer so the
       trailing [X] still sits at the right edge. */
    flex: 1;
}

@media (max-width: 480px) {
    .m-panel-bar__row {
        height: 48px;
    }
    .m-panel-bar__stable,
    .m-panel-bar__switcher-tab,
    .m-panel-bar__sub-tab,
    .m-panel-bar__search {
        height: 40px;
    }
    .m-panel-bar__stable {
        min-width: 40px;
        font-size: 0.95rem;
    }
    .m-panel-bar__switcher-tab,
    .m-panel-bar__sub-tab {
        padding: 0 var(--spacing-sm);
        font-size: 0.62rem;
    }
    .m-panel-bar__search {
        font-size: 0.8rem;
    }
}

.principal-management-detail-title {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.principal-management-detail-title h2 {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 1rem;
    color: var(--patriot-white);
}

.principal-management-detail-kind {
    font-size: 0.82rem;
    color: var(--text-secondary);
}

/* `@handle.universal` next to the entity title — rendered only
 * when the EntityProfile overlay has a `universal_handle` set.
 * Same density as `.principal-management-detail-kind` so the two
 * meta-chips read as a peer cluster around the title. */
.principal-management-detail-handle {
    font-size: 0.82rem;
    color: var(--color-accent-handle, var(--text-secondary));
    font-family: var(--font-mono, monospace);
}

/* Shield treatment on the Principal detail header for Personal
   Entities — surfaces the user-as-shield framing the moment
   the user lands on the surface. The glyph + tagline below
   complement the EntitiesRow shield treatment so the visual
   language is consistent across Home and Entity Management. */
/* `.principal-management-detail-title--personal` and
   `.principal-management-detail-shield` removed 2026-05-22.
   Personal entities used to render with a gold-tinted title
   background + a gold ◈ shield icon to highlight "this is your
   identity surface" — but the gold accents broke visual
   consistency with non-personal entity titles (which had no
   accent), and the shield iconography was only meaningful with
   the now-removed tagline context. The privacy semantic still
   surfaces through the tagline below the title (rule retained
   here for that paragraph). */

.principal-management-detail-shield-tagline {
    margin: var(--spacing-xs) 0 0;
    font-size: 0.78rem;
    color: var(--text-secondary);
    font-style: italic;
}

/* Profile-tab KYB-upgrade intro line — sits between the editable
 * Profile section (day-0 substrate fields) and the four KYB-
 * upgrade groupings (Business Name / Jurisdiction / Addresses /
 * Image) that fill in as the user attaches KYB content to the
 * Entity's Vault. Single muted line so the em-dashes below read
 * as "next steps available," not "broken UI." */
.principal-management-profile-kyb-intro {
    margin: var(--spacing-lg) 0 var(--spacing-sm);
    padding: 0;
    font-size: 0.8rem;
    line-height: 1.4;
    color: var(--text-secondary);
    font-style: italic;
}

.principal-management-identity,
.principal-management-members,
.principal-management-attached,
.principal-management-profile,
.principal-management-profile-fields {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.principal-management-profile-status {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    margin: 0;
}

.principal-management-charter,
.principal-management-charter-read,
.principal-management-charter-empty {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.principal-management-charter-status {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    margin: 0;
}

.principal-management-charter-empty-message {
    font-size: var(--font-size-md);
    margin: 0;
}

.principal-management-charter-empty-hint {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    margin: 0;
}

.principal-management-charter-identity {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    padding-bottom: var(--spacing-sm);
    border-bottom: 1px solid color-mix(in srgb, var(--text-muted) 20%, transparent);
}

.principal-management-charter-discoverability-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-sm);
}

.principal-management-charter-discoverability-label {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
}

.principal-management-charter-aspect {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm) 0;
    border-top: 1px solid color-mix(in srgb, var(--text-muted) 12%, transparent);
}

.principal-management-charter-aspect:first-of-type {
    border-top: none;
    padding-top: 0;
}

.principal-management-charter-aspect-title {
    font-size: var(--font-size-md);
    font-weight: 600;
    margin: 0 0 var(--spacing-xs) 0;
}

.principal-management-charter-aspect-hint {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    font-style: italic;
    margin: 0;
}

.principal-management-charter-edit {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.principal-management-charter-actions {
    display: flex;
    gap: var(--spacing-sm);
    align-items: center;
    margin-top: var(--spacing-sm);
}

.principal-management-charter-textarea {
    min-height: 4rem;
    resize: vertical;
    font-family: inherit;
}

.principal-management-charter-discoverability-picker {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
    border: 1px solid color-mix(in srgb, var(--text-muted) 18%, transparent);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--text-muted) 4%, transparent);
}

.principal-management-charter-discoverability-picker-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-sm);
}

.principal-management-charter-discoverability-picker-label {
    font-size: var(--font-size-md);
    font-weight: 600;
}

.principal-management-charter-discoverability-picker-saving {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    font-style: italic;
}

.principal-management-charter-discoverability-picker-options {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
    gap: var(--spacing-sm);
}

/* (`.principal-management-charter-discoverability-option*`
   family removed — the picker now uses the canonical
   `.m-selectable-card` primitive directly. The picker's
   layout container `.principal-management-charter-
   discoverability-picker-options` keeps its own class.) */

/* Intent-driven Tax aspect picker (2026-05-23).
   The picker replaces the legacy 4-text-input editor for
   the Charter's Tax + Accounting aspects. Layout: two
   stacked SelectableCard grids (intent + income range),
   a recommendation card with reasoning bullets, and an
   always-visible advanced editor below. Auto-apply means
   no buttons inside the form body — Save lives in the
   PanelControlBar at the footer. */

.principal-management-charter-tax-step {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    margin-bottom: var(--spacing-sm);
}

.principal-management-charter-tax-intent-grid,
.principal-management-charter-tax-income-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
    gap: var(--spacing-sm);
    margin-top: var(--spacing-xs);
}

.principal-management-charter-tax-other-input {
    margin-top: var(--spacing-xs);
}

/* People tab IA map (2026-05-25) — visual primer + section
   navigator at the top of the People tab. Two groups, two cells
   each; cells highlight when their corresponding Collapsible
   section below is the expanded one. */

.people-tab-map {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
    padding: var(--spacing-sm);
    border: 1px solid color-mix(in srgb, var(--text-muted) 12%, transparent);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--text-muted) 3%, transparent);
}

.people-tab-map-group {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.people-tab-map-group-title {
    font-size: var(--font-size-xs);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text-muted);
    margin: 0;
}

.people-tab-map-cells {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--spacing-sm);
}

.people-tab-map-cell {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    padding: var(--spacing-sm);
    border: 1px solid color-mix(in srgb, var(--text-muted) 18%, transparent);
    border-radius: var(--radius-sm);
    background: var(--bg-secondary);
    color: var(--text-primary);
    cursor: pointer;
    text-align: left;
    font: inherit;
    transition: border-color 120ms ease, background-color 120ms ease, transform 80ms ease;
}

.people-tab-map-cell:hover {
    border-color: color-mix(in srgb, var(--text-accent) 40%, transparent);
    background: color-mix(in srgb, var(--text-accent) 6%, var(--bg-secondary));
}

.people-tab-map-cell:focus-visible {
    outline: 2px solid var(--gold);
    outline-offset: 2px;
}

.people-tab-map-cell.selected {
    border-color: var(--text-accent);
    background: color-mix(in srgb, var(--text-accent) 10%, var(--bg-secondary));
}

.people-tab-map-cell-title {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-primary);
}

.people-tab-map-cell-verb {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    font-style: italic;
}

.people-tab-map-cell-target {
    color: color-mix(in srgb, var(--text-muted) 70%, var(--text-primary));
}

.people-tab-map-cell-description {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    line-height: 1.4;
    margin-top: 0.25rem;
}

/* Compact count-first card header (2026-06-16 People-tab pass).
 * Row: [count chip] · [title] · [? glyph (right-aligned)] */
.people-tab-map-cell-header {
    display: flex;
    align-items: baseline;
    gap: var(--spacing-sm);
}

.people-tab-map-cell-count {
    font-size: var(--font-size-lg);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: var(--text-accent);
    min-width: 1.5em;
    text-align: right;
}

.people-tab-map-cell-info {
    margin-left: auto;
    font-size: var(--font-size-xs);
    line-height: 1;
    width: 1.1em;
    height: 1.1em;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    border: 1px solid color-mix(in srgb, var(--text-muted) 30%, transparent);
    color: var(--color-text-muted);
    cursor: help;
}

.people-tab-map-cell-info:hover {
    border-color: var(--text-accent);
    color: var(--text-accent);
}

.principal-management-charter-tax-recommendation {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    margin: var(--spacing-md) 0;
    border: 1px solid color-mix(in srgb, var(--text-muted) 18%, transparent);
    border-left: 3px solid var(--color-accent, currentColor);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--text-muted) 5%, transparent);
}

.principal-management-charter-tax-recommendation--inconclusive {
    border-left-color: color-mix(in srgb, var(--text-muted) 40%, transparent);
}

.principal-management-charter-tax-recommendation-title {
    font-size: var(--font-size-md);
    font-weight: 600;
    margin: 0;
}

.principal-management-charter-tax-recommendation-body {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    margin: 0;
}

.principal-management-charter-tax-recommendation-summary {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm) 0;
}

.principal-management-charter-tax-reasoning-title {
    font-size: var(--font-size-sm);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--color-text-muted);
    margin: var(--spacing-xs) 0 0 0;
}

.principal-management-charter-tax-reasoning-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.principal-management-charter-tax-reasoning-item {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    padding: var(--spacing-xs) 0;
    border-top: 1px solid color-mix(in srgb, var(--text-muted) 10%, transparent);
}

.principal-management-charter-tax-reasoning-item:first-child {
    border-top: none;
    padding-top: 0;
}

.principal-management-charter-tax-reasoning-item-title {
    font-size: var(--font-size-sm);
    font-weight: 600;
}

.principal-management-charter-tax-reasoning-item-body {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    line-height: 1.45;
}

.principal-management-charter-tax-advanced {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    border: 1px solid color-mix(in srgb, var(--text-muted) 12%, transparent);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--text-muted) 3%, transparent);
}

.principal-management-charter-tax-advanced-title {
    font-size: var(--font-size-sm);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--color-text-muted);
    margin: 0;
}

/* Contacts (EntityContact pairings) section */
.principal-management-contacts {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.principal-management-contacts-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: var(--spacing-md);
}

.principal-management-contacts-explainer,
.principal-management-members-explainer,
.principal-management-relationships-explainer {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    margin: 0 0 var(--spacing-sm) 0;
    flex: 1;
}

.principal-management-contacts-status,
.principal-management-contacts-empty {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    margin: 0;
    font-style: italic;
}

.principal-management-contacts-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.principal-management-contacts-row {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    padding: var(--spacing-sm);
    border: 1px solid color-mix(in srgb, var(--text-muted) 18%, transparent);
    border-radius: var(--radius-sm);
}

.principal-management-contacts-row-identity {
    display: flex;
    align-items: baseline;
    gap: var(--spacing-sm);
}

.principal-management-contacts-row-name {
    font-size: var(--font-size-md);
    font-weight: 600;
}

.principal-management-contacts-row-handle {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
}

.principal-management-contacts-row-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-sm);
}

.principal-management-contacts-row-accepted {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
}

.principal-management-contacts-row-error {
    font-size: var(--font-size-xs);
    color: var(--color-error, var(--text-muted));
    margin: 0;
}

/* ----- Pair-request modal (panels/principal_management/views/contacts.rs)
   -----
   The bespoke `principal-management-contacts-modal*` and
   `principal-management-contacts-token*` chrome (overlay,
   header, white-on-light card) was replaced 2026-05-07 by the
   canonical `<Modal>` primitive. Only the body-content
   classes remain — they style the form fields and the token
   reveal *inside* the Modal's themed shell. */

/* Sponsor invite modal — compact graph-adjacent form (2026-06-16) */
.sponsor-modal-body {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.sponsor-modal-context {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--text-muted) 18%, transparent);
    background: color-mix(in srgb, var(--text-muted) 4%, transparent);
}

.sponsor-modal-context--personal {
    border-left: 2px solid color-mix(in srgb, var(--accent-gold) 55%, transparent);
    background: color-mix(in srgb, var(--accent-gold) 6%, transparent);
}

.sponsor-modal-context--entity {
    border-left: 2px solid color-mix(in srgb, var(--text-accent) 50%, transparent);
    background: color-mix(in srgb, var(--text-accent) 6%, transparent);
}

.sponsor-modal-context-badge {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-primary);
}

.sponsor-modal-context-detail {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    line-height: 1.4;
}

.sponsor-modal-fields {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.sponsor-modal-notes-hint {
    margin: calc(-1 * var(--spacing-xs)) 0 0;
}

.sponsor-modal-error {
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--status-error, #ff6b6b) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error, #ff6b6b) 50%, transparent);
    color: var(--status-error, #ff6b6b);
    font-size: 0.8rem;
}

.pair-modal-body {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.pair-modal-field {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.pair-modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-xs);
}

.pair-modal-error {
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--status-error, #ff6b6b) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error, #ff6b6b) 50%, transparent);
    color: var(--status-error, #ff6b6b);
    font-size: 0.8rem;
}

.pair-modal-token {
    display: block;
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--anviz-bg-panel) 80%, transparent);
    border: 1px dashed color-mix(in srgb, var(--anviz-accent-secondary) 40%, transparent);
    border-radius: var(--radius-sm);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--patriot-white);
    word-break: break-all;
    user-select: all;
    line-height: 1.5;
}

/* Stakeholders + Reports sections */
.principal-management-stakeholders,
.principal-management-reports {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.principal-management-stakeholders-status,
.principal-management-stakeholders-empty,
.principal-management-reports-status,
.principal-management-reports-empty {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    margin: 0;
    font-style: italic;
}

.principal-management-stakeholders-explainer,
.principal-management-reports-explainer {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    margin: 0;
}

.principal-management-stakeholders-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.principal-management-stakeholders-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-sm);
    border: 1px solid color-mix(in srgb, var(--text-muted) 18%, transparent);
    border-radius: var(--radius-sm);
}

.principal-management-stakeholders-row-identity {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
}

.principal-management-stakeholders-row-role {
    font-size: var(--font-size-md);
    font-weight: 600;
}

.principal-management-stakeholders-row-entity-ref {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    font-family: var(--font-mono, monospace);
    word-break: break-all;
}

.principal-management-stakeholders-row-claims {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    white-space: nowrap;
}

.principal-management-stakeholders-row-resolving {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    font-style: italic;
}

.principal-management-stakeholders-row-resolved,
.principal-management-stakeholders-row-failed {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
}

.principal-management-stakeholders-row-name {
    font-size: var(--font-size-sm);
    font-weight: 500;
}

.principal-management-stakeholders-row-handle {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
}

.principal-management-stakeholders-row-via {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    font-style: italic;
}

.principal-management-stakeholders-row-error {
    font-size: var(--font-size-xs);
    color: var(--color-warn, #b45309);
}

/* Stakeholders editor (Phase B1) */

.principal-management-stakeholders-actions {
    display: flex;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-sm);
}

.principal-management-stakeholders-editor {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.principal-management-stakeholders-add-row {
    display: flex;
    margin-top: var(--spacing-xs);
}

.principal-management-stakeholder-editor-row {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    border: 1px solid color-mix(in srgb, var(--text-muted) 22%, transparent);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--text-muted) 4%, transparent);
}

.principal-management-stakeholder-editor-row-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--spacing-sm);
}

.principal-management-stakeholder-editor-row-index {
    font-size: var(--font-size-md);
    font-weight: 600;
}

.principal-management-stakeholder-editor-claims {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
    border: 1px dashed color-mix(in srgb, var(--text-muted) 30%, transparent);
    border-radius: var(--radius-sm);
}

.principal-management-stakeholder-editor-claims-label {
    font-size: var(--font-size-sm);
    font-weight: 600;
}

.principal-management-stakeholder-editor-claims-hint {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    margin: 0;
    font-style: italic;
}

.principal-management-stakeholder-editor-claims-empty {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    font-style: italic;
    margin: 0;
}

.principal-management-stakeholder-editor-claim-row {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    padding: var(--spacing-xs);
    background: color-mix(in srgb, var(--text-muted) 6%, transparent);
    border-radius: var(--radius-sm);
}

.principal-management-stakeholder-editor-claim-fields {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    gap: var(--spacing-sm);
    align-items: end;
}

@media (max-width: 720px) {
    .principal-management-stakeholder-editor-claim-fields {
        grid-template-columns: 1fr 1fr;
    }
}

/* PredicateTrace — auditability-first advisory rendering for
   `Vec<PredicateEvaluationResult>` (Phase D2). Sits below a
   chat message bubble or inside a Charter section to surface the
   per-predicate verdict + reason chain. */

.predicate-trace {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md, 12px);
    padding: var(--spacing-md, 12px);
    border: 1px solid var(--color-border-subtle, rgba(255, 255, 255, 0.08));
    border-radius: var(--radius-md, 6px);
    background: var(--color-surface-raised, rgba(255, 255, 255, 0.02));
}

.predicate-trace-empty {
    margin: 0;
    color: var(--color-text-muted, rgba(255, 255, 255, 0.6));
    font-style: italic;
    font-size: 0.875rem;
}

.predicate-trace-summary {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm, 8px);
    flex-wrap: wrap;
    padding-bottom: var(--spacing-sm, 8px);
    border-bottom: 1px solid var(--color-border-subtle, rgba(255, 255, 255, 0.08));
}

.predicate-trace-summary-label {
    font-weight: 600;
    color: var(--color-text-secondary, rgba(255, 255, 255, 0.7));
    font-size: 0.875rem;
}

.predicate-trace-summary-count {
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 0.8125rem;
    font-weight: 500;
}

.predicate-trace-summary-count--pass {
    background: color-mix(in srgb, var(--color-status-active, #22c55e) 16%, transparent);
    color: var(--color-status-active, #22c55e);
}

.predicate-trace-summary-count--fail {
    background: color-mix(in srgb, var(--color-status-error, #ef4444) 16%, transparent);
    color: var(--color-status-error, #ef4444);
}

.predicate-trace-summary-count--inconclusive {
    background: color-mix(in srgb, var(--color-status-pending, #eab308) 16%, transparent);
    color: var(--color-status-pending, #eab308);
}

.predicate-trace-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm, 8px);
}

.predicate-trace-row {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs, 4px);
    padding: var(--spacing-sm, 8px);
    background: var(--color-surface, rgba(255, 255, 255, 0.03));
    border-radius: var(--radius-sm, 4px);
}

.predicate-trace-row-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-sm, 8px);
    flex-wrap: wrap;
}

.predicate-trace-row-id {
    font-size: 0.75rem;
    font-family: var(--font-mono, ui-monospace, monospace);
    color: var(--color-text-muted, rgba(255, 255, 255, 0.6));
    word-break: break-all;
}

.predicate-trace-row-description {
    margin: 0;
    font-size: 0.875rem;
    color: var(--color-text-primary, rgba(255, 255, 255, 0.9));
}

.predicate-trace-row-reason {
    margin: var(--spacing-xs, 4px) 0 0 0;
    padding: var(--spacing-sm, 8px);
    background: color-mix(in srgb, var(--color-status-error, #ef4444) 6%, transparent);
    border-left: 3px solid var(--color-status-error, #ef4444);
    border-radius: var(--radius-sm, 4px);
    font-size: 0.8125rem;
    color: var(--color-text-primary, rgba(255, 255, 255, 0.9));
    line-height: 1.5;
}

.predicate-trace-row-citations-placeholder {
    margin: var(--spacing-xs, 4px) 0 0 0;
    font-size: 0.75rem;
    font-style: italic;
    color: var(--color-text-muted, rgba(255, 255, 255, 0.5));
}

.predicate-trace-row-missing-label {
    margin: var(--spacing-xs, 4px) 0 0 0;
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--color-text-secondary, rgba(255, 255, 255, 0.7));
}

.predicate-trace-row-missing-list {
    list-style: disc;
    margin: var(--spacing-xs, 4px) 0 0 var(--spacing-md, 12px);
    padding: 0;
}

.predicate-trace-row-missing-item {
    font-size: 0.8125rem;
    color: var(--color-text-secondary, rgba(255, 255, 255, 0.7));
}

.predicate-trace-row-missing-item code {
    font-family: var(--font-mono, ui-monospace, monospace);
    font-size: 0.75rem;
    padding: 1px 4px;
    background: var(--color-surface-raised, rgba(255, 255, 255, 0.05));
    border-radius: 3px;
}

/* CorpusRetrievalTrace — corpus-grounded retrieval rendering
   from POST /v1/corpus/query (Phase D consumer wiring). Renders
   atoms returned with their audit-substrate envelope per
   ADR-039 § 8 auditability-first stance — fitness band,
   predicate evaluations, provenance, citation chain. */

.corpus-retrieval-trace {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md, 12px);
    padding: var(--spacing-md, 12px);
    border: 1px solid var(--color-border-subtle, rgba(255, 255, 255, 0.08));
    border-radius: var(--radius-md, 6px);
    background: var(--color-surface-raised, rgba(255, 255, 255, 0.02));
}

.corpus-retrieval-trace-empty {
    margin: 0;
    color: var(--color-text-muted, rgba(255, 255, 255, 0.6));
    font-style: italic;
    font-size: 0.875rem;
}

.corpus-retrieval-trace-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-sm, 8px);
    padding-bottom: var(--spacing-sm, 8px);
    border-bottom: 1px solid var(--color-border-subtle, rgba(255, 255, 255, 0.08));
}

.corpus-retrieval-trace-count {
    font-weight: 600;
    color: var(--color-text-secondary, rgba(255, 255, 255, 0.7));
    font-size: 0.875rem;
}

.corpus-retrieval-trace-run-id {
    font-family: var(--font-mono, ui-monospace, monospace);
    font-size: 0.75rem;
    color: var(--color-text-muted, rgba(255, 255, 255, 0.5));
}

.corpus-retrieval-trace-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm, 8px);
}

.corpus-retrieval-row {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs, 4px);
    padding: var(--spacing-sm, 8px);
    background: var(--color-surface, rgba(255, 255, 255, 0.03));
    border-radius: var(--radius-sm, 4px);
}

.corpus-retrieval-row-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm, 8px);
    flex-wrap: wrap;
}

.corpus-retrieval-row-id {
    font-family: var(--font-mono, ui-monospace, monospace);
    font-size: 0.75rem;
    color: var(--color-text-primary, rgba(255, 255, 255, 0.9));
    word-break: break-all;
}

.corpus-retrieval-row-kind,
.corpus-retrieval-row-state {
    font-size: 0.75rem;
    padding: 2px 6px;
    border-radius: 999px;
    background: color-mix(in srgb, var(--color-text-secondary, rgba(255, 255, 255, 0.7)) 12%, transparent);
    color: var(--color-text-secondary, rgba(255, 255, 255, 0.7));
}

.corpus-retrieval-row-fitness {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.corpus-retrieval-row-fitness-band {
    height: 4px;
    background: var(--color-surface-raised, rgba(255, 255, 255, 0.06));
    border-radius: 2px;
    overflow: hidden;
}

.corpus-retrieval-row-fitness-fill {
    height: 100%;
    background: linear-gradient(
        90deg,
        var(--color-status-error, #ef4444) 0%,
        var(--color-status-pending, #eab308) 50%,
        var(--color-status-active, #22c55e) 100%
    );
    transition: width 0.3s ease;
}

.corpus-retrieval-row-fitness-label {
    font-size: 0.75rem;
    color: var(--color-text-muted, rgba(255, 255, 255, 0.6));
}

.corpus-retrieval-row-provenance {
    margin: 0;
    font-size: 0.75rem;
    font-style: italic;
    color: var(--color-text-muted, rgba(255, 255, 255, 0.55));
}

.corpus-retrieval-row-predicates,
.corpus-retrieval-row-citations {
    margin-top: var(--spacing-xs, 4px);
    padding-top: var(--spacing-xs, 4px);
    border-top: 1px dashed var(--color-border-subtle, rgba(255, 255, 255, 0.06));
}

.corpus-retrieval-row-predicates-label,
.corpus-retrieval-row-citations-label {
    margin: 0 0 4px 0;
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--color-text-secondary, rgba(255, 255, 255, 0.7));
}

.corpus-retrieval-row-predicates-list,
.corpus-retrieval-row-citations-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.corpus-retrieval-row-predicate {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm, 8px);
    flex-wrap: wrap;
}

.corpus-retrieval-row-predicate-id {
    font-family: var(--font-mono, ui-monospace, monospace);
    font-size: 0.75rem;
}

.corpus-retrieval-row-predicate-score {
    font-size: 0.75rem;
    color: var(--color-text-muted, rgba(255, 255, 255, 0.55));
}

.corpus-retrieval-row-citation code {
    font-family: var(--font-mono, ui-monospace, monospace);
    font-size: 0.75rem;
    padding: 1px 4px;
    background: var(--color-surface-raised, rgba(255, 255, 255, 0.05));
    border-radius: 3px;
}

/* Shared card footer for editor rows. Used at the bottom of each
   editor card (stakeholder, reserve pool, position, trigger,
   condition, leaf floor rule, pool claim) to anchor the Remove
   action in a consistent place across the Charter authoring UI. */
.principal-management-card-footer {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-sm);
    padding-top: var(--spacing-sm);
    border-top: 1px solid var(--color-border-subtle, rgba(255, 255, 255, 0.08));
}

/* EntityRefPicker shared component */

.entity-ref-picker {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.entity-ref-picker-hint {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    margin: 0;
    line-height: 1.4;
}


/* Reserves section + editor (Phase B2) */

.principal-management-reserves {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.principal-management-reserves-status,
.principal-management-reserves-empty {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    margin: 0;
    font-style: italic;
}

.principal-management-reserves-explainer {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    margin: 0;
}

.principal-management-reserves-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.principal-management-reserve-pool-row {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm);
    border: 1px solid color-mix(in srgb, var(--text-muted) 18%, transparent);
    border-radius: var(--radius-sm);
}

.principal-management-reserve-pool-header {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: var(--spacing-sm);
}

.principal-management-reserve-pool-label {
    font-size: var(--font-size-md);
    font-weight: 600;
}

.principal-management-reserve-pool-currency {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    font-family: var(--font-mono, monospace);
}

.principal-management-reserve-pool-floor {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
}

.principal-management-reserves-actions {
    display: flex;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-sm);
}

.principal-management-reserves-editor,
.principal-management-reserves-add-row {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.principal-management-reserve-pool-editor {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    border: 1px solid color-mix(in srgb, var(--text-muted) 22%, transparent);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--text-muted) 4%, transparent);
}

.principal-management-reserve-pool-editor-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--spacing-sm);
}

.principal-management-reserve-pool-editor-index {
    font-size: var(--font-size-md);
    font-weight: 600;
}

.principal-management-reserve-pool-floor-editor {
    margin-top: var(--spacing-sm);
    padding-top: var(--spacing-sm);
    border-top: 1px solid color-mix(in srgb, var(--text-muted) 12%, transparent);
}

.principal-management-floor-rule-editor {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.principal-management-floor-rule-fields {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
    border: 1px dashed color-mix(in srgb, var(--text-muted) 25%, transparent);
    border-radius: var(--radius-sm);
}

.principal-management-floor-rule-hint {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    margin: 0;
    font-style: italic;
    line-height: 1.4;
}

.principal-management-floor-rule-empty {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    font-style: italic;
    margin: 0;
}

.principal-management-leaf-floor-rule-editor {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--text-muted) 6%, transparent);
    border-radius: var(--radius-sm);
}

.principal-management-leaf-floor-rule-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--spacing-sm);
}

.principal-management-leaf-floor-rule-index {
    font-size: var(--font-size-sm);
    font-weight: 600;
}

/* Distribution section + editor (Phase B3) */

.principal-management-distribution {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.principal-management-distribution-status,
.principal-management-distribution-empty {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    margin: 0;
    font-style: italic;
}

.principal-management-distribution-explainer {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    margin: 0;
}

.principal-management-distribution-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.principal-management-position-row {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm);
    border: 1px solid color-mix(in srgb, var(--text-muted) 18%, transparent);
    border-radius: var(--radius-sm);
    border-left: 4px solid color-mix(in srgb, var(--color-accent, var(--text-active)) 50%, transparent);
}

.principal-management-position-header {
    display: flex;
    gap: var(--spacing-sm);
    align-items: baseline;
}

.principal-management-position-priority {
    font-size: var(--font-size-md);
    font-weight: 700;
    color: var(--color-text-muted);
    font-family: var(--font-mono, monospace);
}

.principal-management-position-label {
    font-size: var(--font-size-md);
    font-weight: 600;
}

.principal-management-position-details {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
}

.principal-management-position-rule,
.principal-management-position-sink,
.principal-management-position-floor,
.principal-management-position-ceiling,
.principal-management-position-conditions {
    line-height: 1.4;
}

.principal-management-distribution-actions,
.principal-management-distribution-add-row {
    display: flex;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-sm);
}

.principal-management-distribution-editor {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.principal-management-position-editor {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    border: 1px solid color-mix(in srgb, var(--text-muted) 22%, transparent);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--text-muted) 4%, transparent);
}

.principal-management-position-editor-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--spacing-sm);
}

.principal-management-position-editor-index {
    font-size: var(--font-size-md);
    font-weight: 600;
}

.principal-management-position-editor-priority-row {
    display: grid;
    grid-template-columns: 1fr 3fr;
    gap: var(--spacing-sm);
}

@media (max-width: 720px) {
    .principal-management-position-editor-priority-row {
        grid-template-columns: 1fr;
    }
}

.principal-management-position-editor-section {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
    border: 1px dashed color-mix(in srgb, var(--text-muted) 20%, transparent);
    border-radius: var(--radius-sm);
}

.principal-management-position-editor-section-title {
    font-size: var(--font-size-sm);
    font-weight: 600;
    margin: 0;
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.principal-management-position-editor-toggle {
    display: flex;
    gap: var(--spacing-sm);
    align-items: center;
    font-size: var(--font-size-sm);
}

.principal-management-position-editor-disabled-hint {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    font-style: italic;
    margin: 0;
}

.principal-management-position-rule-editor,
.principal-management-position-sink-editor,
.principal-management-position-ceiling-editor,
.principal-management-trigger-condition-editor {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.principal-management-position-rule-fields,
.principal-management-position-sink-fields {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--text-muted) 6%, transparent);
    border-radius: var(--radius-sm);
}

.principal-management-position-rule-hint,
.principal-management-position-sink-hint {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    margin: 0;
    font-style: italic;
    line-height: 1.4;
}

.principal-management-trigger-condition-editor {
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--text-muted) 6%, transparent);
    border-radius: var(--radius-sm);
}

.principal-management-trigger-condition-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--spacing-sm);
}

.principal-management-trigger-condition-index {
    font-size: var(--font-size-sm);
    font-weight: 600;
}

.principal-management-trigger-condition-fields {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--text-muted) 6%, transparent);
    border-radius: var(--radius-sm);
}

.principal-management-trigger-condition-hint {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    margin: 0;
    font-style: italic;
    line-height: 1.4;
}

/* Triggers section + editor (Phase B4) */

.principal-management-triggers {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.principal-management-triggers-status,
.principal-management-triggers-empty {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    margin: 0;
    font-style: italic;
}

.principal-management-triggers-explainer {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    margin: 0;
}

.principal-management-triggers-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.principal-management-trigger-row {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm);
    border: 1px solid color-mix(in srgb, var(--text-muted) 18%, transparent);
    border-radius: var(--radius-sm);
}

.principal-management-trigger-row-header {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: var(--spacing-sm);
}

.principal-management-trigger-row-label {
    font-size: var(--font-size-md);
    font-weight: 600;
}

.principal-management-trigger-row-id {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    font-family: var(--font-mono, monospace);
}

.principal-management-trigger-row-description {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    margin: 0;
    line-height: 1.4;
}

.principal-management-trigger-row-condition {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
    margin: 0;
    font-style: italic;
}

.principal-management-triggers-actions,
.principal-management-triggers-add-row {
    display: flex;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-sm);
}

.principal-management-triggers-editor {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.principal-management-trigger-editor-row {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    border: 1px solid color-mix(in srgb, var(--text-muted) 22%, transparent);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--text-muted) 4%, transparent);
}

.principal-management-trigger-editor-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--spacing-sm);
}

.principal-management-trigger-editor-index {
    font-size: var(--font-size-md);
    font-weight: 600;
}

.principal-management-trigger-editor-condition-section {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
    border: 1px dashed color-mix(in srgb, var(--text-muted) 20%, transparent);
    border-radius: var(--radius-sm);
}

.principal-management-trigger-editor-toggle {
    display: flex;
    gap: var(--spacing-sm);
    align-items: center;
    font-size: var(--font-size-sm);
}

.principal-management-trigger-editor-disabled-hint {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    font-style: italic;
    margin: 0;
}

.principal-management-reports-period-inferred {
    font-size: var(--font-size-xs);
    color: var(--color-warn, #b45309);
    margin: 0;
    font-style: italic;
}

/* Layout container for the mode-toggle Chip row in the
   add-member form. Chips inside come from `.m-chip`. */
.principal-management-invite-mode-toggle {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-xs);
    margin-bottom: var(--spacing-sm);
}

.principal-management-invite-entity-ref,
.principal-management-invite-user-id {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.principal-management-invite-hint {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    margin: 0;
    line-height: 1.4;
}

/* (`.principal-management-invite-discoverability-note*` family
   removed — the discoverability prerequisite is now an
   `.m-callout` (PrivacyShield tone, ⓘ icon) rendered by the
   component, scoped to the ByEntityRef path only.) */

/* Live resolve-preview line shown below the handle TextField
   in the invite form. Color-coded by state — pending blue,
   found green-ish (we use status-active tone), gating cases
   gold (the canonical "engagement / attention" color), missing
   /errors red. Uses the existing status-tone vocabulary so the
   reads consistent with badges elsewhere. */
.principal-management-invite-resolve {
    display: flex;
    gap: var(--spacing-xs);
    align-items: flex-start;
    margin: var(--spacing-xs) 0 0;
    padding: var(--spacing-xs) var(--spacing-sm);
    font-size: 0.78rem;
    line-height: 1.4;
    border-radius: var(--radius-sm);
    border: 1px solid transparent;
}

.principal-management-invite-resolve-icon {
    flex-shrink: 0;
    font-weight: 700;
    line-height: 1.4;
}

.principal-management-invite-resolve--pending {
    background: color-mix(in srgb, var(--text-accent) 8%, transparent);
    border-color: color-mix(in srgb, var(--text-accent) 25%, transparent);
    color: var(--text-secondary);
    font-style: italic;
}

.principal-management-invite-resolve--found {
    background: color-mix(in srgb, var(--accent-gold) 12%, transparent);
    border-color: color-mix(in srgb, var(--accent-gold) 35%, transparent);
    color: var(--text-primary);
}

.principal-management-invite-resolve--found strong {
    color: var(--accent-gold);
    font-weight: 700;
}

.principal-management-invite-resolve--blocked {
    background: color-mix(in srgb, var(--accent-gold) 8%, transparent);
    border-color: color-mix(in srgb, var(--accent-gold) 30%, transparent);
    color: var(--text-secondary);
}

.principal-management-invite-resolve--blocked code {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
    padding: 1px 5px;
    background: color-mix(in srgb, var(--text-accent) 12%, transparent);
    color: var(--text-accent);
    border-radius: 3px;
}

.principal-management-invite-resolve--missing {
    background: color-mix(in srgb, var(--status-warning, #c9a227) 8%, transparent);
    border-color: color-mix(in srgb, var(--status-warning, #c9a227) 30%, transparent);
    color: var(--text-secondary);
}

.principal-management-invite-resolve--error {
    background: color-mix(in srgb, var(--status-error, #c0392b) 10%, transparent);
    border-color: color-mix(in srgb, var(--status-error, #c0392b) 35%, transparent);
    color: var(--text-primary);
}

.principal-management-invite-success {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--color-success, #16a34a) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--color-success, #16a34a) 30%, transparent);
    border-radius: var(--radius-sm);
}

.principal-management-invite-success-name {
    font-size: var(--font-size-sm);
    font-weight: 600;
}

.principal-management-invite-success-via {
    font-size: var(--font-size-xs);
    color: var(--color-text-muted);
    font-style: italic;
}

.principal-management-add-member-actions {
    display: flex;
    gap: var(--spacing-sm);
    justify-content: flex-end;
}

/* Tag for "Universal" / "External" inside an Attached Accounts
   row — distinguishes the two account kinds at a glance without
   relying on the chain badge alone. */
.principal-management-attached-secondary {
    font-size: 0.74rem;
    color: var(--text-secondary);
}

/* Universal-account row variant inside Attached Accounts —
   subtle background tint to make the visual hierarchy
   (UA = parent, External = child) read at a glance. */
.principal-management-attached-row--ua {
    background: color-mix(in srgb, var(--anviz-accent-secondary) 6%, transparent);
}

.principal-management-identity-readonly {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    padding-top: var(--spacing-sm);
    border-top: 1px solid color-mix(in srgb, var(--text-muted) 20%, transparent);
}

/* Members list — owner row carries no Remove affordance, others
   do. The Remove button is small and right-aligned so the row
   stays scannable. */
.principal-management-members-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.principal-management-member-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--anviz-bg-panel) 80%, transparent);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 12%, transparent);
}

.principal-management-member-primary {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
    min-width: 0;
}

.principal-management-member-id {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--patriot-white);
}

/* §3 visibility cap masked-row treatment (an-account v1.0.51).
   Row chrome dims slightly so the eye knows this entry is
   different from the others, while role + tenure stay legible.
   The "[private member]" label uses a distinct, italic, muted
   tone so it's obvious it's a sentinel, not a real id. The
   small "private" pill on the right names what's happening
   for users who don't know the privacy model. */
.principal-management-member-row--masked {
    background: color-mix(in srgb, var(--text-muted) 6%, transparent);
    border-color: color-mix(in srgb, var(--text-muted) 30%, transparent);
}

.principal-management-member-id--masked {
    font-family: inherit;
    font-style: italic;
    color: var(--text-muted);
}

.principal-management-member-masked-hint {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.65rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 2px var(--spacing-xs);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--text-muted) 18%, transparent);
    color: var(--text-muted);
    cursor: help;
}

.principal-management-member-role {
    font-size: 0.74rem;
    color: var(--text-secondary);
}

.principal-management-member-remove {
    appearance: none;
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    background: transparent;
    color: var(--status-error);
    font: inherit;
    font-size: 0.74rem;
    padding: 0.25rem var(--spacing-sm);
    border-radius: var(--radius-sm);
    cursor: pointer;
}

.principal-management-member-remove:hover:not(:disabled) {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
}

.principal-management-add-member {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    border: 1px dashed
        color-mix(in srgb, var(--anviz-accent-secondary) 40%, transparent);
    border-radius: var(--radius-sm);
}

.principal-management-add-member-trigger {
    appearance: none;
    align-self: flex-start;
    border: 1px dashed
        color-mix(in srgb, var(--anviz-accent-secondary) 40%, transparent);
    background: transparent;
    color: var(--text-accent);
    font: inherit;
    font-size: 0.78rem;
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    cursor: pointer;
}

.principal-management-add-member-trigger:hover {
    background: color-mix(in srgb, var(--anviz-accent-secondary) 6%, transparent);
}

/* ============================================================================
   ENTITY-RELATIONSHIPS GRAPH EDITOR (ADR-033 / Phase D consumer surface)
   ============================================================================
   Three categorized groups (Parents / Children / Peers) plus an
   add-relationship form that translates user-POV labels into the
   substrate's storage shape (Parent edges + canonical Peer ordering). */

.principal-management-relationships {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.principal-management-relationship-group {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.principal-management-relationship-group-header {
    display: flex;
    align-items: baseline;
    gap: var(--spacing-sm);
}

.principal-management-relationship-group-title {
    font-family: 'Orbitron', monospace;
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--text-secondary);
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.principal-management-relationship-group-count {
    font-size: 0.74rem;
    color: var(--text-muted);
    font-variant-numeric: tabular-nums;
}

.principal-management-relationship-empty {
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-bg-panel) 50%, transparent);
    border: 1px dashed color-mix(in srgb, var(--text-muted) 40%, transparent);
    font-size: 0.76rem;
    color: var(--text-muted);
    line-height: 1.4;
}

.principal-management-relationship-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.principal-management-relationship-row {
    display: grid;
    grid-template-columns: 1fr auto auto;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-bg-panel) 60%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-muted) 20%, transparent);
}

.principal-management-relationship-primary {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.principal-management-relationship-name {
    font-size: 0.85rem;
    color: var(--text-primary);
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.principal-management-relationship-id {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
    color: var(--text-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.principal-management-relationship-meta {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 2px;
}

.principal-management-relationship-meta-item {
    font-size: 0.72rem;
    color: var(--text-muted);
    font-variant-numeric: tabular-nums;
}

.principal-management-add-relationship {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    border: 1px dashed
        color-mix(in srgb, var(--anviz-accent-secondary) 40%, transparent);
    border-radius: var(--radius-sm);
}

.principal-management-add-relationship-hint {
    font-size: 0.74rem;
    color: var(--text-muted);
    line-height: 1.4;
    font-style: italic;
}

/* Attached accounts — UAs + Externals attached to this principal.
   Detach affordance per row. */
.principal-management-attached-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.principal-management-attached-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--anviz-bg-panel) 80%, transparent);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 12%, transparent);
}

.principal-management-attached-primary {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
    min-width: 0;
}

.principal-management-attached-name {
    font-family: 'Orbitron', monospace;
    font-size: 0.82rem;
    color: var(--patriot-white);
}

.principal-management-attached-tag {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 2px var(--spacing-xs);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 14%, transparent);
    color: var(--text-secondary);
}

.principal-management-attached-detach {
    appearance: none;
    border: 1px solid color-mix(in srgb, var(--text-muted) 30%, transparent);
    background: transparent;
    color: var(--text-secondary);
    font: inherit;
    font-size: 0.74rem;
    padding: 0.25rem var(--spacing-sm);
    border-radius: var(--radius-sm);
    cursor: pointer;
}

.principal-management-attached-detach:hover:not(:disabled) {
    background: color-mix(in srgb, var(--text-muted) 10%, transparent);
}

.principal-management-empty {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    padding: var(--spacing-md);
    border: 1px dashed
        color-mix(in srgb, var(--text-muted) 30%, transparent);
    border-radius: var(--radius-sm);
}

.principal-management-empty-label {
    font-family: 'Orbitron', monospace;
    font-size: 0.82rem;
    color: var(--text-secondary);
}

.principal-management-empty-hint {
    font-size: 0.78rem;
    color: var(--text-muted);
    line-height: 1.4;
}

/* --- Entity context card --------------------------------------------------- */

.home-entity-card {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    border-radius: var(--radius-md);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 45%, transparent);
    background: color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent);
}

.home-entity-card-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--spacing-md);
}

.home-entity-name {
    font-family: 'Orbitron', monospace;
    font-size: 0.95rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--text-primary);
}

/* --- Entity switcher control ---------------------------------------------- */
/*
 * Lives inside the Entity section in Home (ADR-021 §2 / Step D).
 * Replaces the pre-Step-D `<select>` that lived in workspace chrome
 * (`workspace::EntitySwitcher`). Styled to fit the Home panel's
 * an-viz-token-aligned aesthetic instead of using the browser default.
 */

.home-entity-switcher {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.home-entity-switcher-label {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--text-muted);
}

.home-entity-switcher-select {
    height: 32px;
    padding: 0 var(--spacing-md);
    border-radius: var(--radius-md);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 45%, transparent);
    background: color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent);
    color: var(--text-primary);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.8rem;
    cursor: pointer;
    transition: border-color var(--duration-fast), box-shadow var(--duration-fast);
    /* Override the system <select> chrome to fit the panel system. */
    appearance: none;
    -webkit-appearance: none;
    background-image: linear-gradient(45deg, transparent 50%, var(--text-muted) 50%),
        linear-gradient(135deg, var(--text-muted) 50%, transparent 50%);
    background-position: calc(100% - 18px) 50%, calc(100% - 12px) 50%;
    background-size: 6px 6px, 6px 6px;
    background-repeat: no-repeat;
    padding-right: var(--spacing-xl);
}

.home-entity-switcher-select:hover {
    border-color: var(--anviz-accent-secondary);
    box-shadow: var(--shadow-glow-blue);
}

.home-entity-switcher-select:focus-visible {
    outline: 2px solid var(--anviz-accent-primary);
    outline-offset: 2px;
}

.home-entity-switcher-select option {
    background: var(--anviz-bg-primary);
    color: var(--text-primary);
}

/* --- Generic Home section action button ----------------------------------- */
/* Used by the Settings affordance and any future "open this panel" links
   inside Home. Styled like a tile button so the affordance is uniform. */

.home-section-action {
    align-self: flex-start;
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-md);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 45%, transparent);
    background: color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    cursor: pointer;
    transition: border-color var(--duration-fast), background var(--duration-fast),
        box-shadow var(--duration-fast), color var(--duration-fast);
}

.home-section-action:hover {
    border-color: var(--anviz-accent-secondary);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 12%, var(--anviz-bg-panel));
    box-shadow: var(--shadow-glow-blue);
    color: var(--patriot-white);
}

.home-section-action:focus-visible {
    outline: 2px solid var(--anviz-accent-primary);
    outline-offset: 2px;
}

/* ============================================================================
   HOME ROW PRIMITIVE (components/home_row.rs)
   ============================================================================
   Full-width dashboard rows used by the Home panel's three-row IA
   (Entities · Accounts · Books). Header + drill action + body. Stub
   actions render visually-distinct from live actions so users (and
   the team) can tell at a glance what's wired vs awaiting upstream.
   See ADR-021 §6 + memo MEMO_TO_AN_ACCOUNT_HOME_IA_PRIMITIVES_2026-04-18. */

.home-row {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding: var(--spacing-lg) var(--spacing-md);
    border-top: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 25%, transparent);
}

.home-row:first-of-type {
    border-top: none;
}

.home-row-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--spacing-md);
}

.home-row-header-text {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    flex: 1;
    min-width: 0;
}

.home-row-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.92rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--patriot-white);
}

.home-row-subtitle {
    margin: 0;
    font-size: 0.78rem;
    color: var(--text-secondary);
    line-height: 1.4;
}

.home-row-action {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: var(--spacing-xs) var(--spacing-md);
    border-radius: var(--radius-sm);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.74rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    white-space: nowrap;
    flex-shrink: 0;
    transition: border-color var(--duration-fast), background var(--duration-fast),
        box-shadow var(--duration-fast), color var(--duration-fast);
}

.home-row-action--live {
    background: color-mix(in srgb, var(--anviz-accent-secondary) 8%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 45%, transparent);
    color: var(--text-primary);
    cursor: pointer;
}

.home-row-action--live:hover {
    background: color-mix(in srgb, var(--anviz-accent-secondary) 18%, transparent);
    border-color: var(--anviz-accent-secondary);
    box-shadow: var(--shadow-glow-blue);
    color: var(--patriot-white);
}

.home-row-action--live:focus-visible {
    outline: 2px solid var(--anviz-accent-primary);
    outline-offset: 2px;
}

.home-row-action--stub {
    /* Stub actions intentionally read as "not yet" — dashed border,
       muted text, no hover state. The `title` tooltip explains what
       primitive they're waiting on.
       Border tint bumped 2026-04-18 from 40% → 65% so it clears the
       3:1 non-text contrast threshold on `--dark-bg`. */
    background: transparent;
    border: 1px dashed color-mix(in srgb, var(--text-muted) 65%, transparent);
    color: var(--text-muted);
    cursor: help;
}

.home-row-action-arrow {
    font-weight: 400;
}

.home-row-body {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

/* Total balance summary — the only "headline figure" surface on
   Home. Bumped padding + accent-tinted background give it more
   presence than a stock list row so the user's eye lands here
   when they open Home. The MoneyText inside grows via the
   --hero-amount override below. */
.home-row-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
    padding: var(--spacing-md) var(--spacing-lg);
    background: linear-gradient(
        135deg,
        color-mix(in srgb, var(--anviz-accent-secondary) 8%, transparent),
        color-mix(in srgb, var(--anviz-accent-primary) 4%, transparent)
    );
    border-radius: var(--radius-md);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 35%, transparent);
}

.home-row-summary-label {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--text-muted);
}

/* Boost the MoneyText sitting inside a home-row-summary so the
   total reads as a hero figure. Targets the .money-text root
   class shipped by components/MoneyText so we don't have to
   thread a variant prop through. */
.home-row-summary .money-text {
    font-family: 'Orbitron', monospace;
    font-size: 1.45rem;
    font-weight: 700;
    color: var(--patriot-white);
    letter-spacing: 0.02em;
}

.home-row-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.home-row-list-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 20%, transparent);
}

.home-row-list-item--active {
    flex-direction: column;
    align-items: stretch;
    gap: var(--spacing-sm);
    border-color: color-mix(in srgb, var(--anviz-accent-secondary) 55%, transparent);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 6%, transparent);
}

.home-row-list-item-primary {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
    min-width: 0;
}

.home-row-list-item-name {
    font-family: 'Orbitron', monospace;
    font-size: 0.86rem;
    font-weight: 700;
    color: var(--patriot-white);
}

.home-row-list-item-secondary {
    font-size: 0.78rem;
    color: var(--text-secondary);
}

.home-row-list-item-tag {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 2px var(--spacing-xs);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 14%, transparent);
    color: var(--text-secondary);
}

.home-row-list-item-mono {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.74rem;
    color: var(--text-muted);
}

.home-row-list-item-meta {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

/* Personal Entity treatment in EntitiesRow — surfaces the
   user-as-shield framing from the user-owned-discoverability
   memo (2026-05-07). The row sits at the top of the list
   (sorted by `PrincipalKind::Personal` first), gets a gold
   shield glyph + a one-line tagline beneath the primary row
   so the user reads "this surface controls *me*, not an
   entity I own." Operating Entities (LLC / Trust / Family)
   below keep the bare list-item chrome. */
.home-row-list-item--personal {
    background: color-mix(in srgb, var(--accent-gold) 7%, transparent);
    border-color: color-mix(in srgb, var(--accent-gold) 30%, transparent);
}

.home-row-list-item-button--personal {
    flex-direction: column;
    align-items: stretch;
    gap: var(--spacing-sm);
}

.home-row-list-item--personal:hover {
    background: color-mix(in srgb, var(--accent-gold) 12%, transparent);
    border-color: color-mix(in srgb, var(--accent-gold) 50%, transparent);
    box-shadow: var(--shadow-glow-gold);
}

.home-row-list-item-shield {
    flex-shrink: 0;
    font-size: 1rem;
    color: var(--accent-gold);
    line-height: 1;
}

.home-row-list-item-shield-tagline {
    margin: 0;
    font-size: 0.74rem;
    color: var(--text-secondary);
    font-style: italic;
    line-height: 1.4;
}

/* Universal-account row that contains nested external imports.
   Switches the layout to column so the primary line and money
   value still sit together at top, with the nested-children
   list flowing underneath. */
.home-row-list-item--ua {
    flex-direction: column;
    align-items: stretch;
    gap: var(--spacing-xs);
}

/* The wrapper for an "unassigned imports" group — externals
   that came over without a `universal_id`. Should be empty for
   new imports post-FK ship; defensive surface for legacy data
   or edge cases. Uses a dashed border to telegraph "this is a
   bucket, not a real account". */
.home-row-list-item--orphan-group {
    flex-direction: column;
    align-items: stretch;
    gap: var(--spacing-xs);
    border-style: dashed;
    border-color: color-mix(in srgb, var(--text-muted) 60%, transparent);
}

/* Nested list rendered inside a UA row to show its children
   (imported externals today; TSS-derived chain accounts when we
   surface those too). Insets visually so the parent/child
   relationship reads at a glance. */
.home-row-list--nested {
    margin-left: var(--spacing-md);
    padding-left: var(--spacing-sm);
    border-left: 2px solid
        color-mix(in srgb, var(--anviz-accent-secondary) 30%, transparent);
    gap: 2px;
}

/* External-account child row. Tighter padding + smaller name
   font than the parent UA row so the visual hierarchy reads
   correctly: UA is the headline, externals are children of it. */
.home-row-list-item--external {
    padding: var(--spacing-xs) var(--spacing-sm);
    background: color-mix(in srgb, var(--anviz-bg-panel) 80%, transparent);
    border-color: color-mix(in srgb, var(--anviz-accent-secondary) 12%, transparent);
}

.home-row-list-item--external .home-row-list-item-name {
    font-family: inherit;
    font-size: 0.82rem;
    font-weight: 500;
}

/* External row's trailing Remove button — hidden by default,
   revealed on row hover/focus so the action is discoverable
   without cluttering the list. Keep visible on touch via
   `hover: none` media query so the affordance doesn't strand
   mobile users. */
.home-row-list-item--external .m-btn {
    flex-shrink: 0;
    opacity: 0;
    transition: opacity var(--duration-fast);
}

.home-row-list-item--external:hover .m-btn,
.home-row-list-item--external:focus-within .m-btn {
    opacity: 1;
}

@media (hover: none) {
    .home-row-list-item--external .m-btn {
        opacity: 1;
    }
}

/* Inline error surface for failed Remove operations — sits below
   the AccountsList list, visually subordinate to the list itself
   so the user knows the remove failed without it dominating. */
.home-row-inline-error {
    margin-top: var(--spacing-sm);
    padding: var(--spacing-xs) var(--spacing-md);
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 35%, transparent);
    border-radius: var(--radius-sm);
    font-size: 0.78rem;
    color: var(--status-error);
}

.home-row-empty {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md) var(--spacing-lg);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--anviz-bg-panel) 60%, transparent);
    /* Border tint bumped 2026-04-18 from 30% → 60% so the dashed
       container reads as a real boundary (≥3:1 non-text contrast). */
    border: 1px dashed color-mix(in srgb, var(--text-muted) 60%, transparent);
}

.home-row-empty-label {
    font-family: 'Orbitron', monospace;
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--text-secondary);
    letter-spacing: 0.06em;
}

.home-row-empty-hint {
    font-size: 0.76rem;
    color: var(--text-muted);
    line-height: 1.4;
}

.home-row-secondary-actions {
    display: flex;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.home-row-secondary-action {
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    /* `--text-accent` is the brighter steely blue (#5a8fd4)
       used by the chat panel's surface borders — visibly
       readable against the dark panel chrome where the older
       `--anviz-accent-secondary` (navy #1a4b8c) at 30% alpha
       was washing out. Idle is a 60% alpha so the chip reads
       as "live but quiet"; hover takes it to full saturation
       (see `:hover` below) for an unambiguous "you can click
       this" cue. */
    border: 1px solid color-mix(in srgb, var(--text-accent) 60%, transparent);
    background: transparent;
    color: var(--text-secondary);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    cursor: pointer;
    transition: border-color var(--duration-fast), color var(--duration-fast),
        background var(--duration-fast), transform var(--duration-fast);
}

.home-row-secondary-action:hover:not(:disabled) {
    /* Hover saturates the border to full `--text-accent` and
       lights a soft glow so the chip reads as "click me now"
       — same affordance grammar as the chat panel's input +
       scope buttons (see `.chat-input-field:focus` /
       `.chat-scope-button:hover`). The 1px gold outline ring
       lives on the canonical focus state so keyboard nav
       still wins visually. */
    border-color: var(--text-accent);
    color: var(--patriot-white);
    background: var(--interactive-hover-bg);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--text-accent) 30%, transparent);
    transform: translateY(calc(-1 * var(--interactive-active-translate)));
}

.home-row-secondary-action:focus-visible {
    outline: var(--interactive-focus-outline);
    outline-offset: var(--interactive-focus-offset);
}

.home-row-secondary-action:active:not(:disabled) {
    transform: translateY(0);
}

/* (`.home-row-secondary-action--manage` removed — the
   per-row "Manage X →" navigation chips moved into the
   consolidated `<HomeControlBar>` at the bottom of the panel.
   Per the controls-at-bottom ethos: row chips reserve for
   creation actions on the row's data; navigation primaries
   live in the panel's bottom rack.) */

.home-row-secondary-action:disabled {
    /* Disabled affordances on Home are deliberate — they signal
       "this is the IA slot, just not wired yet." Hover hint
       explains what's blocking. */
    opacity: 0.55;
    cursor: help;
}

/* (`.home-footer` removed — the four navigation affordances
   moved into the consolidated `<HomeControlBar>` at the bottom
   of the panel. Vault + Address Book moved to Services;
   Identity & Devices folded into Settings → Security; Manage
   X buttons consolidated. See `panels/home/views.rs`'s
   `HomeControlBar` for the new shape.) */

/* ============================================================================
   SETTINGS — PASSKEYS SUBSECTION (panels/settings/passkeys.rs)
   ============================================================================
   Migrated 2026-05-07 from the deprecated `identity-devices-*`
   class family. The old top-level Identity & Devices panel was
   deleted; passkey management now lives inside Settings →
   Security alongside the other cross-cutting auth controls.
   The parent `Section` primitive owns the title/subtitle chrome
   so the panel/header/title/subtitle classes from the old block
   are gone — only the row + actions + empty/error styles
   carried forward. */

.settings-passkeys {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.settings-passkeys-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.settings-passkeys-list-item {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 30%, transparent);
}

.settings-passkeys-list-item-primary {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.settings-passkeys-list-item-icon {
    font-size: 1.25rem;
}

.settings-passkeys-list-item-name {
    font-family: 'Orbitron', monospace;
    font-size: 0.88rem;
    font-weight: 700;
    color: var(--patriot-white);
}

.settings-passkeys-list-item-meta {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.settings-passkeys-list-item-actions {
    display: flex;
    justify-content: flex-end;
    gap: var(--spacing-sm);
}

.settings-passkeys-actions {
    margin-top: var(--spacing-md);
    display: flex;
    gap: var(--spacing-sm);
}

.settings-passkeys-action {
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    font-weight: 600;
    cursor: pointer;
    transition: background var(--duration-fast), border-color var(--duration-fast),
        color var(--duration-fast), box-shadow var(--duration-fast);
}

.settings-passkeys-action--primary {
    background: color-mix(in srgb, var(--anviz-accent-secondary) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 50%, transparent);
    color: var(--text-primary);
}

.settings-passkeys-action--primary:hover:not(:disabled) {
    background: color-mix(in srgb, var(--anviz-accent-secondary) 22%, transparent);
    border-color: var(--anviz-accent-secondary);
    box-shadow: var(--shadow-glow-blue);
    color: var(--patriot-white);
}

.settings-passkeys-action--primary:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.settings-passkeys-action--danger {
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--status-error, #ff6b6b) 50%, transparent);
    color: var(--status-error, #ff6b6b);
}

.settings-passkeys-action--danger:hover {
    background: color-mix(in srgb, var(--status-error, #ff6b6b) 12%, transparent);
    border-color: var(--status-error, #ff6b6b);
}

.settings-passkeys-empty {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    padding: var(--spacing-md);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-bg-panel) 60%, transparent);
    border: 1px dashed color-mix(in srgb, var(--text-muted) 60%, transparent);
}

.settings-passkeys-empty-label {
    font-family: 'Orbitron', monospace;
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--text-secondary);
    letter-spacing: 0.06em;
}

.settings-passkeys-empty-hint {
    font-size: 0.76rem;
    color: var(--text-muted);
    line-height: 1.4;
}

.settings-passkeys-error {
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--status-error, #ff6b6b) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error, #ff6b6b) 50%, transparent);
    color: var(--status-error, #ff6b6b);
    font-size: 0.8rem;
}

/* ============================================================================
   THEME PICKER (panels/settings/mod.rs::ThemePicker)
   ============================================================================
   Card-per-preset picker for the Appearance section. Each card shows
   a 5-color palette swatch + name + description; click applies +
   persists. The active preset gets a selection ring. Designed to take
   any number of theme cards so NFT-derived themes drop in without UI
   changes once wallet enumeration lands. */

.theme-picker {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.theme-picker-item {
    border-radius: var(--radius-md);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 30%, transparent);
    background: color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent);
    transition: border-color var(--duration-fast), box-shadow var(--duration-fast);
}

.theme-picker-item:hover {
    border-color: var(--anviz-accent-secondary);
}

.theme-picker-item.active {
    border-color: var(--anviz-accent-primary);
    box-shadow: var(--shadow-glow-blue);
}

.theme-picker-button {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    background: transparent;
    border: none;
    color: inherit;
    cursor: pointer;
    text-align: left;
    font-family: inherit;
}

.theme-picker-swatches {
    display: flex;
    gap: 4px;
    flex-shrink: 0;
}

.theme-picker-swatch {
    width: 18px;
    height: 28px;
    border-radius: 3px;
    /* Two-layer ring: outer light, inner dark. Guarantees the
       swatch stays visible whether the swatch color is darker or
       lighter than the surrounding card surface — important now
       that themes can have surfaces close in luminance to one of
       their own swatches (Light's bg.surface ≈ Light's surrounding
       chrome). */
    box-shadow:
        inset 0 0 0 1px color-mix(in srgb, var(--patriot-white) 25%, transparent),
        0 0 0 1px color-mix(in srgb, var(--text-primary) 35%, transparent);
}

/* ----------------------------------------------------------------------------
   Color customizer (Appearance → per-slot color pickers)
   ---------------------------------------------------------------------------- */

.color-customizer-actions {
    display: flex;
    justify-content: flex-end;
    margin-bottom: var(--spacing-sm);
}

.color-customizer-reset {
    font-size: 0.78rem;
    color: var(--text-secondary);
    padding: 4px 10px;
    border: 1px solid color-mix(in srgb, var(--text-secondary) 35%, transparent);
    border-radius: var(--radius-sm);
    background: none;
    cursor: pointer;
    transition: all var(--duration-fast, 0.15s) ease;
}

.color-customizer-reset:hover {
    color: var(--text-primary);
    border-color: color-mix(in srgb, var(--primary-blue) 50%, transparent);
}

.color-customizer {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.color-customizer-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--card-bg) 40%, transparent);
}

.color-customizer-label {
    flex: 1 1 auto;
    font-size: 0.85rem;
    color: var(--text-primary);
}

.color-customizer-value {
    flex: 0 0 auto;
    font-family: var(--font-mono, monospace);
    font-size: 0.75rem;
    color: var(--text-secondary);
    text-transform: uppercase;
}

.color-customizer-input {
    flex: 0 0 auto;
    width: 38px;
    height: 28px;
    padding: 0;
    border: 1px solid color-mix(in srgb, var(--text-primary) 30%, transparent);
    border-radius: var(--radius-sm);
    background: none;
    cursor: pointer;
}

.color-customizer-error {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    border: 1px solid color-mix(in srgb, var(--status-warning, #c08a3e) 45%, transparent);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--status-warning, #c08a3e) 10%, transparent);
}

.color-customizer-error-title {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--text-primary);
}

.color-customizer-error-detail {
    font-size: 0.78rem;
    color: var(--text-secondary);
}

.theme-picker-meta {
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex: 1;
    min-width: 0;
}

.theme-picker-name {
    font-family: 'Orbitron', monospace;
    font-size: 0.86rem;
    font-weight: 700;
    color: var(--patriot-white);
    letter-spacing: 0.04em;
}

.theme-picker-description {
    font-size: 0.74rem;
    color: var(--text-secondary);
    line-height: 1.35;
}

.theme-picker-selected-indicator {
    color: var(--anviz-accent-primary);
    font-size: 0.9rem;
    /* Hidden until the .active modifier flips it on. */
    opacity: 0;
    transition: opacity var(--duration-fast);
}

.theme-picker-item.active .theme-picker-selected-indicator {
    opacity: 1;
}

/* Spend shell — an-viz-token-aligned tile grid (responsive 3 → 2 → 1 columns) */
.spend-shell-panel {
    gap: 0;
    /* Lets flex children (.panel-scrollable) resolve height and share space */
    min-height: 0;
}

.spend-shell-panel .domain-shell-panel-header {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding-bottom: var(--spacing-sm);
}

/* Fill remaining panel height; grid rows share space evenly (see grid-auto-rows). */
.spend-shell-panel .panel-scrollable {
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.anviz-tile-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--spacing-md);
    padding: var(--spacing-xs) 0 var(--spacing-lg);
}

.spend-shell-panel .anviz-tile-grid {
    flex: 1;
    min-height: 0;
    align-content: stretch;
    /* Equal-height rows that grow with the panel; floor keeps tiny viewports readable. */
    grid-auto-rows: minmax(5rem, 1fr);
    padding-bottom: 0;
}

@media (max-width: 900px) {
    .anviz-tile-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 520px) {
    .anviz-tile-grid {
        grid-template-columns: minmax(0, 1fr);
    }
}

.anviz-tile {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    min-height: 5.5rem;
    text-align: left;
    font-family: inherit;
    cursor: pointer;
    border-radius: var(--radius-md);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 45%, transparent);
    background: color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent);
    color: var(--text-secondary);
    transition: border-color var(--duration-fast), background var(--duration-fast),
        box-shadow var(--duration-fast), color var(--duration-fast);
    /* Long-press should reveal context, not the OS callout / text selection. */
    -webkit-user-select: none;
    user-select: none;
    -webkit-touch-callout: none;
}

.spend-shell-panel .anviz-tile {
    min-height: 0;
    height: 100%;
    box-sizing: border-box;
}

.anviz-tile:hover {
    border-color: var(--anviz-accent-secondary);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 12%, var(--anviz-bg-panel));
    box-shadow: var(--shadow-glow-blue);
    color: var(--patriot-white);
}

.anviz-tile:focus-visible {
    outline: 2px solid var(--anviz-accent-primary);
    outline-offset: 2px;
}

.anviz-tile-icon {
    font-size: 1.25rem;
    line-height: 1;
    color: var(--anviz-accent-primary);
}

.anviz-tile:hover .anviz-tile-icon {
    color: var(--anviz-accent-tertiary);
}

.anviz-tile-label {
    font-family: 'Orbitron', monospace;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--text-primary);
}

.anviz-tile-desc {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
    line-height: 1.45;
    color: var(--text-muted);
}

.anviz-tile:hover .anviz-tile-desc {
    color: var(--text-secondary);
}

/*
 * Tile popover — hover (desktop) and long-press (mobile, .open class) reveal
 * an educational context card. Visual system reads from --anviz-* tokens so it
 * stays consistent with any future an-viz canvas embedded in the same shell.
 */
.anviz-tile-popover {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    right: 0;
    z-index: 30;
    padding: var(--spacing-md);
    border-radius: var(--radius-md);
    border: 1px solid var(--anviz-accent-secondary);
    background: color-mix(in srgb, var(--anviz-bg-panel) 96%, var(--anviz-bg-primary));
    box-shadow: 0 12px 28px rgba(0, 0, 0, 0.45),
        0 0 0 1px color-mix(in srgb, var(--anviz-accent-secondary) 25%, transparent);
    color: var(--text-secondary);
    text-align: left;
    pointer-events: none;
    opacity: 0;
    transform: translateY(-4px);
    transition: opacity var(--duration-fast), transform var(--duration-fast);
}

.anviz-tile:hover .anviz-tile-popover,
.anviz-tile:focus-visible .anviz-tile-popover,
.anviz-tile.open .anviz-tile-popover {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}

.anviz-tile-popover-title {
    margin: 0 0 var(--spacing-sm);
    font-family: 'Orbitron', monospace;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--anviz-accent-primary);
}

.anviz-tile-popover-line {
    margin: 0 0 var(--spacing-xs);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.74rem;
    line-height: 1.5;
    color: var(--text-primary);
}

.anviz-tile-popover-line:last-of-type {
    margin-bottom: var(--spacing-sm);
}

.anviz-tile-popover-hint {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.62rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--anviz-accent-secondary);
}

@media (max-width: 520px) {
    /*
     * Single-column layout: anchor the popover above the tile so the next
     * row of tiles isn't pushed off-screen by an opened context card.
     */
    .anviz-tile-popover {
        top: auto;
        bottom: calc(100% + 6px);
        transform: translateY(4px);
    }
    .anviz-tile:hover .anviz-tile-popover,
    .anviz-tile:focus-visible .anviz-tile-popover,
    .anviz-tile.open .anviz-tile-popover {
        transform: translateY(0);
    }
}

/* Legacy chat-nav for backwards compat */
.chat-nav {
    display: flex;
    gap: var(--spacing-sm);
}

.chat-nav-button {
    height: 32px;
    padding: 0 var(--spacing-sm);
    display: flex;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-md);
    color: var(--text-secondary);
    cursor: pointer;
    font-family: 'Orbitron', monospace;
    font-size: 0.6rem;
    font-weight: 700;
    letter-spacing: 1px;
    transition: all var(--duration-fast);
}

.chat-nav-button:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    color: var(--primary-blue);
    box-shadow: var(--shadow-glow-blue);
}

.chat-nav-button.active {
    background: var(--primary-blue);
    color: var(--dark-bg);
    box-shadow: var(--shadow-glow-blue);
}

.nav-label {
    font-weight: 700;
}

/* ============================================================================
   PLACEHOLDER PANEL
   ============================================================================ */

.placeholder-panel {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    padding: var(--spacing-xl);
}

.placeholder-content {
    text-align: center;
}

.placeholder-code {
    font-size: 2rem;
    font-weight: 900;
    margin-bottom: var(--spacing-md);
    color: var(--primary-blue);
    opacity: 0.4;
    letter-spacing: 4px;
}

.placeholder-title {
    font-size: 1rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 3px;
    margin-bottom: var(--spacing-sm);
    color: var(--primary-blue);
}

.placeholder-message {
    color: var(--text-muted);
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 1px;
}

/* ============================================================================
   PANEL OPENER
   ============================================================================ */

.panel-opener {
    position: relative;
    z-index: 100;
}

.panel-opener-toggle {
    height: 28px;
    padding: 0 var(--spacing-md);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-xs);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-sm);
    color: var(--primary-blue);
    cursor: pointer;
    font-size: 14px;
    font-weight: 500;
    font-family: 'IBM Plex Mono', monospace;
    transition: all var(--duration-fast);
    flex-shrink: 0;
}

.panel-opener-toggle:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    box-shadow: var(--shadow-glow-blue);
}

.panel-opener-toggle.active {
    background: var(--primary-blue);
    color: var(--dark-bg);
    box-shadow: var(--shadow-glow-blue);
}

.panel-opener-menu {
    position: absolute;
    bottom: 36px;
    right: 0;
    background: var(--modal-bg);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-lg);
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5), var(--shadow-glow-blue);
    min-width: 220px;
    max-height: 400px;
    overflow-y: auto;
    z-index: 1000;
}

.panel-opener-item {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    width: 100%;
    padding: var(--spacing-md);
    background: transparent;
    border: none;
    color: var(--text-primary);
    cursor: pointer;
    font-family: 'Orbitron', monospace;
    font-size: 0.75rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1px;
    text-align: left;
    transition: all var(--duration-fast);
}

.panel-opener-item:hover {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    color: var(--primary-blue);
}

.panel-opener-item .icon {
    width: 28px;
    text-align: center;
    font-size: 16px;
}

.panel-opener-divider {
    padding: var(--spacing-xs) var(--spacing-sm);
    font-size: 0.7rem;
    color: var(--patriot-gold);
    text-align: center;
    border-top: 1px solid var(--border-color);
    margin-top: var(--spacing-xs);
}

/* ============================================================================
   MINIMIZED TRAY
   ============================================================================ */

.workspace-tray {
    display: flex;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: var(--navy-dark);
    border-top: 1px solid var(--primary-blue);
}

.tray-item {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: var(--spacing-xs) var(--spacing-sm);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    cursor: pointer;
    font-family: 'Orbitron', monospace;
    font-size: 0.65rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    transition: all var(--duration-fast);
}

.tray-item:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    color: var(--primary-blue);
    box-shadow: var(--shadow-glow-blue);
}

/* ============================================================================
   MOBILE PANEL NAVIGATION
   ============================================================================ */

/* Mobile: Full-width panels — multi-panel scroll-snap retired
 *
 * `.workspace-panels` is a dead-letter selector from the retired
 * multi-panel architecture (PR Series A.3, 2026-05-11). The current
 * single-panel architecture renders ONE auxiliary panel at a time in
 * `.workspace-panel-region` (see workspace/mod.rs), which is what the
 * upstream `.workspace` rules above control. Leaving the scroll-snap
 * declarations on `.workspace-panels` here was harmless when the
 * selector matched nothing — BUT a stale `.panel-container` ancestor
 * selector still applies these properties on mobile, and any
 * `scroll-snap-type` value on the `.workspace`'s scroll axis fights
 * the programmatic `scrollTo` snap helper (see runtime evidence in
 * the comment on `.workspace` above).
 *
 * All scroll-snap declarations removed; the remaining mobile sizing
 * rules (width: 100vw on `.panel-container`) are kept so any
 * leftover use of the class still gets full-width treatment.
 */
@media (max-width: 768px) {
    .workspace-panels {
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        -ms-overflow-style: none;
    }

    .workspace-panels::-webkit-scrollbar {
        display: none;
    }

    .panel-container {
        /* Each panel fills the viewport width */
        min-width: 100vw !important;
        max-width: 100vw !important;
        width: 100vw !important;

        /* Remove border on mobile (panels are full-width) */
        border-right: none;
    }

    /* On mobile, all panels are equal width (no "last fills remaining") */
    .panel-container:last-child {
        flex: 0 0 auto;
    }
    
    /* Hide minimized tray on mobile - use panel opener instead */
    .workspace-tray {
        display: none;
    }
    
    /* Hide all scrollbars on mobile - users know to scroll
     * Applies to all panel content areas and scrollable containers
     */
    .panel-content,
    [class$="-panel"],
    .panel-scrollable,
    [class*="-content"],
    [class*="-list"] {
        scrollbar-width: none;
        -ms-overflow-style: none;
    }
    
    .panel-content::-webkit-scrollbar,
    [class$="-panel"]::-webkit-scrollbar,
    .panel-scrollable::-webkit-scrollbar,
    [class*="-content"]::-webkit-scrollbar,
    [class*="-list"]::-webkit-scrollbar {
        display: none;
    }
    
    /* Ensure panels that blocked scroll can scroll on mobile
     * These panels have overflow:hidden for desktop (internal scroll containers)
     * but need to allow scrolling on mobile when content overflows
     */
    .chat-panel,
    .accounts-panel,
    .transactions-panel,
    .settings-panel,
    .comms-panel,
    .onboarding-panel,
    .opex-panel,
    .spend-shell-panel,
    .home-panel,
    .address-book-content {
        overflow-y: auto !important;
    }
}

/* Tablet: 2 panels side by side. Scroll-snap retired here too —
 * same reason as the mobile block above (programmatic snap fights),
 * and `.workspace-panels` is dead-letter from the retired multi-
 * panel architecture. `.panel-container` width override kept for
 * any legacy use. */
@media (min-width: 769px) and (max-width: 1024px) {
    .panel-container {
        min-width: 50vw;
    }
}

/* ============================================================================
   BUTTONS
   ============================================================================ */

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-sm) var(--spacing-lg);
    border: none;
    border-radius: var(--radius-pill);
    font-family: 'Orbitron', monospace;
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 2px;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.btn-primary {
    background: linear-gradient(135deg, var(--secondary-blue), var(--primary-blue));
    color: white;
    box-shadow: var(--shadow-glow-blue);
}

.btn-primary:hover:not(:disabled) {
    transform: translateY(-2px);
    box-shadow: 0 0 30px var(--primary-blue-glow);
}

.btn-secondary {
    background: transparent;
    color: var(--primary-blue);
    border: 2px solid var(--primary-blue);
}

.btn-secondary:hover:not(:disabled) {
    background: var(--primary-blue);
    color: var(--dark-bg);
    box-shadow: var(--shadow-glow-blue);
}

.btn-icon {
    width: 36px;
    height: 36px;
    padding: 0;
    background: transparent;
    color: var(--text-secondary);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-md);
}

.btn-icon:hover:not(:disabled) {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    color: var(--primary-blue);
}

/* ============================================================================
   BUTTON PRIMITIVE (components/button.rs)
   ============================================================================
   Canonical interactive button. Replaces the proliferating per-panel
   `.action-btn` islands. Variants mirror the Home panel's visual
   vocabulary: Primary (filled accent-tint), Secondary (bordered),
   Ghost (chromeless), Stub (dashed/coming-soon). Tokens-only — no
   literal hex, no hard-coded color: white, no fixed radii.

   Migration: new code targets `Button`. The legacy `.btn` family stays
   put for the ~200 existing usages until those panels get refactored.
*/

.m-btn {
    --m-btn-bg: transparent;
    --m-btn-bg-hover: transparent;
    --m-btn-fg: var(--text-primary);
    --m-btn-border: transparent;
    --m-btn-border-hover: transparent;
    --m-btn-shadow-hover: none;

    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-xs);
    background: var(--m-btn-bg);
    color: var(--m-btn-fg);
    border: 1px solid var(--m-btn-border);
    border-radius: var(--radius-sm);
    font-family: 'IBM Plex Mono', monospace;
    font-weight: 600;
    letter-spacing: 0.04em;
    line-height: 1.2;
    cursor: pointer;
    transition:
        background var(--duration-fast),
        border-color var(--duration-fast),
        box-shadow var(--duration-fast),
        color var(--duration-fast),
        transform var(--duration-fast);
}

.m-btn:hover:not(:disabled) {
    background: var(--m-btn-bg-hover);
    border-color: var(--m-btn-border-hover);
    box-shadow: var(--m-btn-shadow-hover);
}

.m-btn:active:not(:disabled) {
    transform: translateY(1px);
}

.m-btn:focus-visible {
    outline: 2px solid var(--anviz-accent-primary);
    outline-offset: 2px;
}

.m-btn:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}

/* ----- Sizes ----- */

.m-btn--sm {
    padding: var(--spacing-xs) var(--spacing-sm);
    font-size: 0.72rem;
}

.m-btn--md {
    padding: var(--spacing-sm) var(--spacing-md);
    font-size: 0.78rem;
}

.m-btn--lg {
    padding: var(--spacing-sm) var(--spacing-lg);
    font-size: 0.86rem;
}

/* ----- Variants -----
   Color narrative:
   - **Primary** = SOLID blue at rest, light text. A Primary button
     is a commit-action that's already lit — Swap / Send / Save /
     Create / Confirm. Same visual grammar as the active workspace
     primary-domain control row (Home / Send / Receive / Services
     when active): solid `--anviz-accent-secondary` fill + light
     `--text-primary` foreground + blue glow on hover. The button
     is the action; the surface reads "press me to commit."
   - **Secondary / Ghost** = blue at rest, GOLD on engagement
     (hover / focus). For these, blue is potential energy, gold is
     engagement — the user mouses over → it lights up. This is the
     classic m0 narrative; Primary is the exception because a
     commit-action should look committed at rest, not "wake up on
     hover."
   - **Stub** = muted dashed border. Inert, "coming soon."

   Tokens:
   - `--anviz-accent-secondary` = blue (theme.accent.primary)
   - `--anviz-accent-primary`   = gold (theme.accent.secondary)
*/

/* Primary: solid blue fill, light text, blue glow on hover.
   The canonical commit-action — the loudest button on a surface
   and the one the user is meant to press to commit (Send, Swap,
   Save, Create, Confirm). Mirrors the active workspace
   primary-domain control treatment so a "lit blue button" reads
   the same anywhere in the workspace.
   Hover brightens the fill toward `--text-accent` (the slightly
   lighter blue) and adds the canonical blue glow halo. Pressed
   deepens the fill toward the navy bottom of the palette and
   drops the lift so the gesture reads as committed. */
.m-btn--primary {
    --m-btn-bg: var(--anviz-accent-secondary);
    --m-btn-bg-hover: color-mix(in srgb, var(--anviz-accent-secondary) 70%, var(--text-accent) 30%);
    --m-btn-fg: var(--text-primary);
    --m-btn-border: var(--anviz-accent-secondary);
    --m-btn-border-hover: color-mix(in srgb, var(--anviz-accent-secondary) 70%, var(--text-accent) 30%);
    --m-btn-shadow-hover: var(--shadow-glow-blue);
}

.m-btn--primary:active:not(:disabled) {
    /* Pressed: deepen the fill toward navy + drop the lift so
       the gesture reads as committed. Override the base
       `.m-btn:active` translate to zero so the button settles
       firmly in place when the user commits. */
    background: color-mix(in srgb, var(--anviz-accent-secondary) 80%, black 20%);
    transform: translateY(0);
}

/* Secondary: blue outline at rest, gold outline + glow on hover.
   Sits next to a Primary without competing. Use for alternates
   and drill-in CTAs. */
.m-btn--secondary {
    --m-btn-bg: transparent;
    --m-btn-bg-hover: color-mix(in srgb, var(--anviz-accent-primary) 10%, transparent);
    --m-btn-fg: var(--text-secondary);
    --m-btn-border: color-mix(in srgb, var(--anviz-accent-secondary) 55%, transparent);
    --m-btn-border-hover: var(--anviz-accent-primary);
    --m-btn-shadow-hover: var(--shadow-glow-gold);
}

.m-btn--secondary:hover:not(:disabled) {
    color: var(--text-primary);
}

/* Ghost: no border, no fill, gold hover-tint only. Use for footer
   links and toolbar actions where chrome would be too heavy. */
.m-btn--ghost {
    --m-btn-bg: transparent;
    --m-btn-bg-hover: color-mix(in srgb, var(--anviz-accent-primary) 10%, transparent);
    --m-btn-fg: var(--text-secondary);
    --m-btn-border: transparent;
    --m-btn-border-hover: transparent;
    border: none;
    padding-left: var(--spacing-sm);
    padding-right: var(--spacing-sm);
}

.m-btn--ghost:hover:not(:disabled) {
    color: var(--text-primary);
}

/* Stub: disabled "coming soon" affordance. Dashed border, muted text,
   `cursor: help`. The `tooltip` tells the user what's blocking. */
.m-btn--stub {
    --m-btn-bg: transparent;
    --m-btn-bg-hover: transparent;
    --m-btn-fg: var(--text-muted);
    --m-btn-border: color-mix(in srgb, var(--text-muted) 65%, transparent);
    --m-btn-border-hover: color-mix(in srgb, var(--text-muted) 65%, transparent);
    border-style: dashed;
    cursor: help;
}

.m-btn--stub:hover:not(:disabled) {
    transform: none;
    box-shadow: none;
}

.m-btn__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.95em;
    line-height: 1;
}

.m-btn__label {
    display: inline-flex;
    align-items: center;
}

/* ============================================================================
   PANEL SURFACE HEADER + FINANCIAL SURFACES (contracts, markets)
   ============================================================================ */

.m-panel-surface-header {
    padding: 0 0 var(--spacing-md);
    margin-bottom: var(--spacing-md);
    border-bottom: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 32%, transparent);
}

.m-panel-surface-eyebrow {
    font-size: 0.65rem;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--text-muted);
    margin: 0 0 var(--spacing-xs);
    font-family: 'IBM Plex Mono', monospace;
}

.m-panel-surface-title {
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--text-primary);
    margin: 0 0 var(--spacing-xs);
    font-family: 'IBM Plex Mono', monospace;
    letter-spacing: 0.02em;
}

.m-panel-surface-subtitle {
    font-size: 0.78rem;
    line-height: 1.45;
    color: var(--text-secondary);
    margin: 0;
    max-width: 56ch;
}

.m-financial-surface {
    color: var(--text-primary);
}

.m-financial-nav {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-xs);
    margin-top: var(--spacing-sm);
}

.m-financial-nav-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-xs) var(--spacing-sm);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    color: var(--text-secondary);
    background: color-mix(in srgb, var(--anviz-bg-panel) 88%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 45%, transparent);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition:
        border-color var(--duration-fast),
        box-shadow var(--duration-fast),
        color var(--duration-fast),
        background var(--duration-fast);
}

.m-financial-nav-btn:hover:not(:disabled) {
    color: var(--text-primary);
    border-color: var(--anviz-accent-primary);
    box-shadow: var(--shadow-glow-gold);
}

.m-financial-nav-btn.active {
    color: var(--text-primary);
    border-color: var(--anviz-accent-primary);
    background: color-mix(in srgb, var(--anviz-accent-primary) 12%, transparent);
}

.m-financial-nav-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

.m-financial-nav-btn--primary.active {
    border-color: var(--anviz-accent-primary);
}

.m-financial-seg {
    display: inline-flex;
    gap: 0;
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 40%, transparent);
    overflow: hidden;
}

.m-financial-seg-btn {
    padding: var(--spacing-xs) var(--spacing-sm);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    color: var(--text-secondary);
    background: transparent;
    border: none;
    border-right: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 35%, transparent);
    cursor: pointer;
    transition:
        background var(--duration-fast),
        color var(--duration-fast);
}

.m-financial-seg-btn:last-child {
    border-right: none;
}

.m-financial-seg-btn:hover:not(:disabled) {
    color: var(--text-primary);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 10%, transparent);
}

.m-financial-seg-btn.active {
    color: var(--text-primary);
    background: color-mix(in srgb, var(--anviz-accent-primary) 14%, transparent);
}

.m-financial-seg-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.contracts-legacy-banner.panel-section {
    margin-bottom: var(--spacing-md);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 6%, var(--anviz-bg-panel));
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 28%, transparent);
    border-radius: var(--radius-sm);
}

.contract-management-panel .contracts-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

.contract-management-panel .contracts-filter-group {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-sm);
}

.contract-management-panel .contracts-filter-select {
    min-width: 10rem;
    padding: var(--spacing-xs) var(--spacing-sm);
    font-size: 0.78rem;
    color: var(--text-primary);
    background: color-mix(in srgb, var(--anviz-bg-panel) 92%, var(--anviz-accent-secondary));
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 40%, transparent);
    border-radius: var(--radius-sm);
}

.contract-management-panel .contracts-search-box input {
    min-width: 12rem;
    padding: var(--spacing-xs) var(--spacing-sm);
    font-size: 0.78rem;
    color: var(--text-primary);
    background: color-mix(in srgb, var(--anviz-bg-panel) 92%, var(--anviz-accent-secondary));
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 40%, transparent);
    border-radius: var(--radius-sm);
}

.contract-management-panel .contracts-toolbar-right {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--spacing-sm);
}

.opex-panel.m-financial-surface .opex-header {
    border-bottom: none;
    margin-bottom: var(--spacing-sm);
}

.opex-panel.m-financial-surface .m-panel-surface-header {
    border-bottom: none;
    margin-bottom: var(--spacing-xs);
    padding-bottom: 0;
}

/* ============================================================================
   CARDS
   ============================================================================ */

.card {
    background: var(--card-bg);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-md);
    overflow: hidden;
    box-shadow: inset 0 0 30px color-mix(in srgb, var(--text-accent) 5%, transparent);
}

.card::before {
    content: '';
    display: block;
    height: 3px;
    background: linear-gradient(90deg, 
        var(--accent-red),
        var(--patriot-white),
        var(--primary-blue)
    );
}

.card-header {
    padding: var(--spacing-md);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    background: var(--navy-dark);
}

.card-title {
    font-size: 0.85rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: var(--primary-blue);
}

.card-body {
    padding: var(--spacing-md);
}

/* ============================================================================
   SCROLLBARS - Patriot Style
   ============================================================================ */

::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}

::-webkit-scrollbar-track {
    background: var(--dark-bg);
}

::-webkit-scrollbar-thumb {
    background: linear-gradient(180deg, var(--primary-blue), var(--accent-red));
    border-radius: var(--radius-pill);
}

::-webkit-scrollbar-thumb:hover {
    background: linear-gradient(180deg, var(--accent-red), var(--primary-blue));
}

/* ============================================================================
   ANIMATIONS
   ============================================================================ */

@keyframes pulse-patriot {
    0%, 100% {
        box-shadow: 
            0 0 10px var(--primary-blue-glow),
            0 0 20px color-mix(in srgb, var(--text-accent) 30%, transparent);
    }
    50% {
        box-shadow: 
            0 0 20px var(--accent-red-glow),
            0 0 40px color-mix(in srgb, var(--status-error) 30%, transparent);
    }
}

.pulse-patriot {
    animation: pulse-patriot 2s ease-in-out infinite;
}

/* ============================================================================
   UTILITY CLASSES
   ============================================================================ */

.text-blue { color: var(--primary-blue); }
.text-red { color: var(--accent-red); }
.text-white { color: var(--patriot-white); }
.text-success { color: var(--status-success); }
.text-warning { color: var(--status-warning); }
.text-muted { color: var(--text-muted); }

.glow-blue { box-shadow: var(--shadow-glow-blue); }
.glow-red { box-shadow: var(--shadow-glow-red); }

/* ============================================================================
   ACCOUNTS PANEL
   ============================================================================ */

.accounts-panel {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    height: 100%;
}

.accounts-summary {
    text-align: center;
    padding: var(--spacing-lg);
    background: linear-gradient(135deg, color-mix(in srgb, var(--text-accent) 10%, transparent), color-mix(in srgb, var(--status-error) 5%, transparent));
    border-radius: var(--radius-md);
    border: 1px solid var(--primary-blue);
}

.summary-label {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: var(--text-muted);
    margin-bottom: var(--spacing-sm);
}

.summary-amount {
    font-family: var(--font-display);
    font-size: 2rem;
    font-weight: 700;
    color: var(--primary-blue);
    text-shadow: 0 0 20px var(--primary-blue-glow);
}

.accounts-list {
    flex: 1;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.account-card {
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--card-bg) 60%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-md);
    transition: all 0.2s ease;
}

.account-card:hover {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
}

.account-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--spacing-sm);
}

.account-name {
    font-weight: 600;
    color: var(--patriot-white);
}

.account-type {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    padding: 2px 8px;
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-pill);
    color: var(--primary-blue);
}

.account-balance {
    font-family: var(--font-display);
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--patriot-white);
}

.account-currency {
    font-size: 0.75rem;
    color: var(--text-muted);
    margin-left: var(--spacing-xs);
}

.account-chain {
    font-size: 0.7rem;
    color: var(--primary-blue);
    margin-top: var(--spacing-xs);
}

.accounts-actions {
    display: flex;
    gap: var(--spacing-sm);
}

.action-btn {
    flex: 1;
    padding: var(--spacing-sm) var(--spacing-md);
    background: var(--primary-blue);
    color: var(--dark-bg);
    border: none;
    border-radius: var(--radius-md);
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
}

.action-btn:hover {
    background: var(--accent-cyan);
    box-shadow: 0 0 20px var(--primary-blue-glow);
}

.action-btn.secondary {
    background: transparent;
    border: 1px solid var(--primary-blue);
    color: var(--primary-blue);
}

.action-btn.secondary:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

/* Money Function List */
.money-functions {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.money-function-tile {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--accent-gold) 4%, transparent);
    border: 1px solid color-mix(in srgb, var(--accent-gold) 18%, transparent);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: all 0.18s ease;
    font-family: inherit;
    color: var(--text-secondary);
    text-align: left;
    width: 100%;
}

.money-function-tile:hover {
    background: color-mix(in srgb, var(--accent-gold) 10%, transparent);
    border-color: var(--accent-gold);
    box-shadow: 0 0 14px var(--accent-gold-glow);
    color: var(--patriot-white);
}

.money-function-tile:hover .function-icon {
    color: var(--accent-gold);
}

.money-function-tile:hover .function-arrow {
    opacity: 1;
    color: var(--accent-gold);
}

.function-icon {
    font-size: 1rem;
    color: var(--accent-gold);
    width: 22px;
    text-align: center;
    flex-shrink: 0;
    opacity: 0.7;
    transition: all 0.18s ease;
}

.function-label {
    flex: 1;
    font-size: 0.85rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.function-arrow {
    font-size: 0.8rem;
    color: var(--accent-gold);
    opacity: 0.3;
    transition: all 0.18s ease;
}

/* Onramp Form — Uniswap-style single screen */
.onramp-form {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    height: 100%;
}

.swap-box {
    background: rgba(10, 10, 15, 0.7);
    border: 1px solid color-mix(in srgb, var(--accent-gold) 20%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md) var(--spacing-md) 10px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    transition: border-color 0.18s ease;
}

.swap-box:focus-within {
    border-color: color-mix(in srgb, var(--accent-gold) 55%, transparent);
}

.swap-box-label {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    color: var(--text-muted);
}

.swap-amount-row {
    display: flex;
    align-items: baseline;
    gap: 4px;
}

.swap-currency-symbol {
    font-size: 1.6rem;
    font-weight: 300;
    color: var(--text-muted);
    line-height: 1;
}

.swap-amount-input {
    flex: 1;
    background: transparent;
    border: none;
    outline: none;
    font-size: 2rem;
    font-weight: 600;
    font-family: var(--font-display);
    color: var(--patriot-white);
    width: 100%;
    min-width: 0;
    -moz-appearance: textfield;
}

.swap-amount-input::-webkit-outer-spin-button,
.swap-amount-input::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

.swap-amount-input::placeholder {
    color: var(--text-muted);
    opacity: 0.5;
}

.swap-receive-amount {
    font-size: 2rem;
    font-weight: 600;
    font-family: var(--font-display);
    color: var(--text-secondary);
}

.swap-meta-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-sm);
}

.swap-provider-pill {
    display: flex;
    align-items: center;
    gap: 6px;
}

.swap-via {
    font-size: 0.75rem;
    color: var(--text-muted);
}

.swap-inline-select {
    background: color-mix(in srgb, var(--accent-gold) 8%, transparent);
    border: 1px solid color-mix(in srgb, var(--accent-gold) 25%, transparent);
    border-radius: var(--radius-pill);
    color: var(--accent-gold);
    font-size: 0.8rem;
    font-weight: 600;
    padding: 3px 10px 3px 8px;
    cursor: pointer;
    outline: none;
    -webkit-appearance: none;
    appearance: none;
    /* custom chevron */
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23c9a227' opacity='0.6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 8px center;
    padding-right: 22px;
}

.swap-inline-select option {
    background: var(--card-bg);
    color: var(--patriot-white);
}

.swap-fiat-badge {
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 1px;
    color: var(--text-muted);
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: var(--radius-pill);
    padding: 3px 10px;
}

.swap-divider {
    text-align: center;
    font-size: 1.1rem;
    color: var(--accent-gold);
    opacity: 0.5;
    line-height: 1;
    padding: 2px 0;
}

.swap-rate-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: 0 4px;
}

.swap-rate {
    font-size: 0.75rem;
    color: var(--text-secondary);
}

.swap-powered-by {
    font-size: 0.75rem;
    color: var(--text-muted);
}

/* Provider loading/missing state in the "via" pill */
.swap-provider-loading {
    font-size: 0.8rem;
    color: var(--text-muted);
    font-style: italic;
}
.swap-provider-none {
    color: var(--accent-red, #e05a5a);
}

/* Destination row — shows where funds land */
.swap-destination-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: 0 var(--spacing-xs);
    margin-top: calc(var(--spacing-xs) * -1);
    margin-bottom: var(--spacing-xs);
}
.swap-destination-label {
    font-size: 0.72rem;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    min-width: 1.6rem;
}
.swap-destination-account {
    font-size: 0.82rem;
    color: var(--text-secondary);
    font-weight: 500;
}
.swap-destination-provider {
    font-size: 0.75rem;
    color: var(--text-muted);
    margin-left: auto;
}

.swap-cta-btn {
    width: 100%;
    padding: var(--spacing-md);
    background: var(--accent-gold);
    color: var(--dark-bg);
    border: none;
    border-radius: var(--radius-md);
    font-size: 1rem;
    font-weight: 700;
    font-family: inherit;
    letter-spacing: 1px;
    text-transform: uppercase;
    cursor: pointer;
    transition: all 0.18s ease;
    margin-top: auto;
}

.swap-cta-btn:hover:not(:disabled) {
    background: var(--accent-gold-light);
    box-shadow: 0 0 20px var(--accent-gold-glow);
}

.swap-cta-btn:disabled,
.swap-cta-btn.disabled {
    opacity: 0.35;
    cursor: not-allowed;
}

/* Function Providers View */
.function-providers-view {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.fn-header-icon {
    color: var(--primary-blue);
    margin-right: var(--spacing-xs);
}

.coming-soon-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-xl);
    text-align: center;
    opacity: 0.6;
}

.coming-soon-icon {
    font-size: 2.5rem;
    color: var(--primary-blue);
    opacity: 0.5;
}

.coming-soon-label {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
}

.coming-soon-text {
    font-size: 0.75rem;
    color: var(--text-muted);
    opacity: 0.7;
}

.no-providers-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-lg);
    text-align: center;
    color: var(--text-muted);
    font-size: 0.85rem;
}

/* KYC Form Styles */
.kyc-form {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.kyc-form .form-section {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.kyc-form .section-title {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--primary-blue);
    margin: 0;
    padding-bottom: var(--spacing-xs);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.kyc-form .form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--spacing-md);
}

.kyc-form .form-group {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.kyc-form .form-group label {
    font-size: 0.85rem;
    color: var(--text-secondary);
    font-weight: 500;
}

.kyc-form .form-group label .required {
    color: var(--error-color, var(--status-error));
    margin-left: 2px;
}

.kyc-form .form-group input,
.kyc-form .form-group select {
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--card-bg) 80%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-md);
    color: var(--patriot-white);
    font-size: 0.9rem;
    transition: border-color 0.2s ease;
}

.kyc-form .form-group input:focus,
.kyc-form .form-group select:focus {
    outline: none;
    border-color: var(--primary-blue);
    box-shadow: 0 0 10px color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.kyc-form .form-group input::placeholder {
    color: var(--text-muted);
}

.kyc-form .form-group select {
    cursor: pointer;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2300a8ff' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    padding-right: 36px;
}

.kyc-form .form-group select option {
    background: var(--dark-bg);
    color: var(--patriot-white);
}

/* Vault Prefill Section */
.vault-prefill-section {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    margin-bottom: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px dashed color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-lg);
}

.btn-vault-prefill {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-md) var(--spacing-xl);
    background: linear-gradient(135deg, color-mix(in srgb, var(--text-accent) 20%, transparent), color-mix(in srgb, var(--text-accent) 10%, transparent));
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-lg);
    color: var(--primary-blue);
    font-weight: 600;
    font-size: 1rem;
    cursor: pointer;
    transition: all 0.2s ease;
}

.btn-vault-prefill:hover:not(:disabled) {
    background: linear-gradient(135deg, color-mix(in srgb, var(--text-accent) 30%, transparent), color-mix(in srgb, var(--text-accent) 20%, transparent));
    box-shadow: 0 0 20px color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.btn-vault-prefill:disabled {
    opacity: 0.7;
    cursor: wait;
}

.vault-hint {
    font-size: 0.8rem;
    color: var(--text-muted);
}

.vault-prefill-success {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    color: var(--success-color, var(--status-success));
    font-weight: 500;
}

.vault-prefill-success .success-icon {
    font-size: 1.2rem;
}

/* Document Capture Component Styles */
.document-capture {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
    padding: var(--spacing-md);
}

.capture-step {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.capture-step h4 {
    font-family: var(--font-display);
    font-size: 1.1rem;
    color: var(--patriot-white);
    margin: 0;
}

.capture-error {
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    border-radius: var(--radius-md);
    color: #ff6b6b;
}

/* Upload area — <label> wrapping a hidden file input */
.upload-area {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-xl) var(--spacing-md);
    background: color-mix(in srgb, var(--card-bg) 60%, transparent);
    border: 2px dashed color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: all 0.2s ease;
    position: relative;
    min-height: 120px;
    text-align: center;
}

.upload-area:hover {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
}

.upload-icon {
    font-size: 2rem;
}

.upload-hint {
    color: var(--text-secondary);
    font-size: 0.9rem;
    margin: 0;
}

.upload-current {
    color: var(--accent-green, #4ecb71);
    font-size: 0.9rem;
    margin: 0;
}

.upload-error {
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border-radius: var(--radius-sm);
    color: #ff6b6b;
    font-size: 0.85rem;
}

.upload-progress {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
    color: var(--text-secondary);
    font-size: 0.9rem;
}

/* Visually hidden — keeps element in the rendering tree for browser
   activation (labels, file inputs) but invisible to the user */
.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;
}

/* ID Class Selection */
.id-class-options {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.id-class-option {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--card-bg) 80%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-md);
    color: var(--patriot-white);
    cursor: pointer;
    transition: all 0.2s ease;
    text-align: left;
}

.id-class-option:hover {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.id-class-option .option-icon {
    font-size: 1.5rem;
}

.id-class-option .option-label {
    flex: 1;
    font-weight: 500;
}

.id-class-option .option-note {
    font-size: 0.8rem;
    color: var(--text-muted);
}

/* Camera Preview */
.camera-container {
    position: relative;
    width: 100%;
    aspect-ratio: 4/3;
    background: #000;
    border-radius: var(--radius-lg);
    overflow: hidden;
}

.camera-preview {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.capture-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
}

.capture-frame {
    border: 3px dashed color-mix(in srgb, var(--text-accent) 60%, transparent);
    border-radius: var(--radius-lg);
}

.capture-frame.frame-id {
    width: 85%;
    height: 55%;
}

.capture-frame.frame-selfie {
    width: 60%;
    height: 70%;
    border-radius: 50%;
}

/* Capture Actions */
.capture-actions {
    display: flex;
    gap: var(--spacing-md);
    justify-content: center;
}

.btn-capture {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-xs);
    padding: var(--spacing-md) var(--spacing-xl);
    background: var(--primary-blue);
    border: none;
    border-radius: var(--radius-lg);
    color: var(--dark-bg);
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
}

.btn-capture:hover:not(:disabled) {
    background: var(--accent-cyan);
    box-shadow: 0 0 20px var(--primary-blue-glow);
}

.btn-capture:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.btn-capture .capture-icon {
    font-size: 1.5rem;
}

.btn-upload {
    display: flex;
    align-items: center;
    padding: var(--spacing-md) var(--spacing-lg);
    background: transparent;
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-lg);
    color: var(--primary-blue);
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s ease;
}

.btn-upload:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.capture-buttons {
    display: flex;
    gap: var(--spacing-md);
    justify-content: flex-end;
}

/* Review Step */
.review-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: var(--spacing-md);
}

.review-item {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    align-items: center;
}

.review-label {
    font-size: 0.85rem;
    color: var(--text-secondary);
    font-weight: 500;
}

.review-thumbnail {
    width: 100%;
    aspect-ratio: 4/3;
    border-radius: var(--radius-md);
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.review-thumbnail img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.btn-retake {
    padding: var(--spacing-xs) var(--spacing-md);
    background: transparent;
    border: 1px solid var(--text-muted);
    border-radius: var(--radius-sm);
    color: var(--text-muted);
    font-size: 0.8rem;
    cursor: pointer;
    transition: all 0.2s ease;
}

.btn-retake:hover {
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}

/* ============================================================================
   PERSONA WIDGET (Cybrid KYC Integration)
   ============================================================================ */

.persona-widget-container {
    display: flex;
    flex-direction: column;
    width: 100%;
    min-height: 500px;
    background: var(--bg-secondary);
    border-radius: var(--radius-lg);
    overflow: hidden;
    position: relative;
}

.persona-iframe {
    width: 100%;
    height: 600px;
    min-height: 500px;
    border: none;
    background: #fff;
    border-radius: var(--radius-md);
}

/* Make iframe take full height on mobile */
@media (max-width: 768px) {
    .persona-iframe {
        height: 100vh;
        max-height: calc(100vh - 200px);
    }
}

.persona-loading {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-md);
    padding: var(--spacing-xl);
    min-height: 300px;
    color: var(--text-secondary);
}

.persona-loading .loading-spinner {
    width: 48px;
    height: 48px;
}

.persona-error {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-md);
    padding: var(--spacing-xl);
    min-height: 300px;
    text-align: center;
}

.persona-error .error-icon {
    font-size: 3rem;
}

.persona-error p {
    color: var(--text-secondary);
    max-width: 400px;
}

.persona-complete {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-md);
    padding: var(--spacing-xl);
    min-height: 300px;
    text-align: center;
}

.persona-complete .success-icon {
    font-size: 3rem;
    color: var(--status-success);
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    width: 80px;
    height: 80px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
}

.persona-complete h4 {
    margin: 0;
    font-size: 1.25rem;
}

.persona-complete p {
    color: var(--text-secondary);
    margin: 0;
}

.persona-prefill-notice {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    font-size: 0.85rem;
    color: var(--text-secondary);
}

.persona-prefill-notice .prefill-icon {
    font-size: 1rem;
}

/* Provider-specific theming for Persona in wizard */
.wizard-step.documents-step .persona-widget-container {
    margin: var(--spacing-md) 0;
}

/* Verification confirmation overlay — shown while polling Cybrid backend */
.verification-confirming {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-md);
    padding: var(--spacing-xl) var(--spacing-md);
    text-align: center;
}

.verification-confirming p {
    color: var(--text-secondary);
    font-size: 0.95rem;
    margin: 0;
}

/* Demo mode container — wraps the entire fallback when provider is unavailable */
.demo-mode-container {
    border: 2px solid color-mix(in srgb, var(--status-warning) 40%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--status-warning) 4%, transparent);
}

.demo-mode-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

.demo-badge {
    display: inline-block;
    padding: 2px 10px;
    background: color-mix(in srgb, var(--status-warning) 85%, transparent);
    color: #1a1a2e;
    border-radius: 4px;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    flex-shrink: 0;
}

.demo-title {
    font-family: var(--font-display);
    font-size: 1rem;
    color: color-mix(in srgb, var(--status-warning) 90%, transparent);
    margin: 0;
}

.demo-explanation {
    font-size: 0.85rem;
    color: var(--text-secondary);
    margin: 0 0 var(--spacing-sm) 0;
    line-height: 1.5;
}

.demo-explanation code {
    background: rgba(255, 255, 255, 0.08);
    padding: 1px 5px;
    border-radius: 3px;
    font-size: 0.82rem;
}

.demo-explanation strong {
    color: color-mix(in srgb, var(--status-warning) 90%, transparent);
}

/* ============================================================================
   TRANSACTIONS PANEL
   ============================================================================ */

.transactions-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.transactions-filters {
    display: flex;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.filter-select,
.search-input {
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--card-bg) 80%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-md);
    color: var(--patriot-white);
    font-size: 0.85rem;
}

.filter-select:focus,
.search-input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.filter-group {
    flex-shrink: 0;
}

.search-group {
    flex: 1;
}

.search-input {
    width: 100%;
}

.transactions-list {
    flex: 1;
    overflow-y: auto;
}

.transaction-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    transition: background 0.2s ease;
}

.transaction-row:hover {
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
}

.tx-icon {
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: var(--radius-md);
}

.tx-type-badge {
    font-family: var(--font-display);
    font-weight: 700;
    color: var(--primary-blue);
}

.tx-details {
    flex: 1;
}

.tx-counterparty {
    font-weight: 600;
    color: var(--patriot-white);
    margin-bottom: 2px;
}

.tx-meta {
    display: flex;
    gap: var(--spacing-sm);
    font-size: 0.75rem;
    color: var(--text-muted);
}

.tx-amount-section {
    text-align: right;
}

.tx-amount {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 1rem;
}

.tx-amount.amount-positive {
    color: var(--status-success);
}

.tx-amount.amount-negative {
    color: var(--accent-red);
}

.tx-status {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-top: 2px;
}

.tx-status.status-completed {
    color: var(--status-success);
}

.tx-status.status-pending {
    color: var(--status-warning);
}

.tx-status.status-failed {
    color: var(--accent-red);
}

.transactions-footer {
    padding: var(--spacing-md);
    text-align: center;
}

.load-more-btn {
    padding: var(--spacing-sm) var(--spacing-lg);
    background: transparent;
    border: 1px solid var(--primary-blue);
    color: var(--primary-blue);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: all 0.2s ease;
}

.load-more-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

/* ============================================================================
   TRANSFER PANEL
   ============================================================================ */

.transfer-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: var(--spacing-md);
}

.transfer-progress {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-lg);
}

.transfer-progress .step {
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 2px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: 50%;
    font-family: var(--font-display);
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--text-muted);
    transition: all 0.3s ease;
}

.transfer-progress .step.active {
    background: var(--primary-blue);
    border-color: var(--primary-blue);
    color: var(--dark-bg);
    box-shadow: 0 0 15px var(--primary-blue-glow);
}

.step-connector {
    width: 30px;
    height: 2px;
    background: color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.transfer-content {
    flex: 1;
    overflow-y: auto;
}

.transfer-step {
    animation: fadeIn 0.3s ease;
}

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.step-title {
    font-family: var(--font-display);
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--patriot-white);
    text-align: center;
    margin-bottom: var(--spacing-lg);
}

.quick-recipients {
    margin-bottom: var(--spacing-lg);
}

.section-label {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: var(--text-muted);
    margin-bottom: var(--spacing-sm);
}

.recipient-chip {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: var(--spacing-xs) var(--spacing-sm);
    margin-right: var(--spacing-xs);
    margin-bottom: var(--spacing-xs);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-pill);
    cursor: pointer;
    transition: all 0.2s ease;
}

.recipient-chip:hover {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.recipient-avatar {
    width: 20px;
    height: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--primary-blue);
    border-radius: 50%;
    font-size: 0.65rem;
    font-weight: 700;
    color: var(--dark-bg);
}

.recipient-name {
    font-size: 0.8rem;
    color: var(--patriot-white);
}

.recipient-input-group,
.memo-input-group {
    margin-bottom: var(--spacing-md);
}

.input-label {
    display: block;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
    margin-bottom: var(--spacing-xs);
}

.transfer-input {
    width: 100%;
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--card-bg) 80%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-md);
    color: var(--patriot-white);
    font-size: 1rem;
}

.transfer-input:focus {
    outline: none;
    border-color: var(--primary-blue);
    box-shadow: 0 0 10px var(--primary-blue-glow);
}

.amount-input-container {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-sm);
}

.currency-symbol {
    font-family: var(--font-display);
    font-size: 2rem;
    font-weight: 700;
    color: var(--primary-blue);
}

.amount-input {
    width: 200px;
    padding: var(--spacing-md);
    background: transparent;
    border: none;
    border-bottom: 2px solid var(--primary-blue);
    color: var(--patriot-white);
    font-family: var(--font-display);
    font-size: 2rem;
    font-weight: 700;
    text-align: center;
}

.amount-input:focus {
    outline: none;
}

.balance-info {
    text-align: center;
    font-size: 0.8rem;
    color: var(--text-muted);
    margin-bottom: var(--spacing-md);
}

.amount-presets {
    display: flex;
    justify-content: center;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-lg);
}

.preset-btn {
    padding: var(--spacing-xs) var(--spacing-md);
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-pill);
    color: var(--primary-blue);
    font-size: 0.8rem;
    cursor: pointer;
    transition: all 0.2s ease;
}

.preset-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
}

.routes-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-lg);
}

.route-option {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--card-bg) 60%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: all 0.2s ease;
    text-align: left;
}

.route-option:hover {
    border-color: var(--primary-blue);
}

.route-option.selected {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    box-shadow: 0 0 15px var(--primary-blue-glow);
}

.route-name {
    font-weight: 600;
    color: var(--patriot-white);
    margin-bottom: 2px;
}

.route-meta {
    display: flex;
    gap: var(--spacing-md);
    font-size: 0.75rem;
    color: var(--text-muted);
}

.route-check {
    font-size: 1.25rem;
    color: var(--primary-blue);
}

.review-summary {
    background: color-mix(in srgb, var(--card-bg) 60%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
}

.review-row {
    display: flex;
    justify-content: space-between;
    padding: var(--spacing-sm) 0;
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.review-row:last-child {
    border-bottom: none;
}

.review-row.total {
    border-top: 2px solid var(--primary-blue);
    margin-top: var(--spacing-sm);
    padding-top: var(--spacing-md);
}

.review-label {
    color: var(--text-muted);
}

.review-value {
    font-weight: 600;
    color: var(--patriot-white);
}

.review-row.total .review-value {
    color: var(--primary-blue);
    font-family: var(--font-display);
    font-size: 1.1rem;
}

.step-actions {
    display: flex;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-lg);
}

.back-btn {
    flex: 1;
    padding: var(--spacing-md);
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    color: var(--text-muted);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: all 0.2s ease;
}

.back-btn:hover {
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}

.next-btn {
    flex: 2;
    padding: var(--spacing-md);
    background: var(--primary-blue);
    border: none;
    color: var(--dark-bg);
    border-radius: var(--radius-md);
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
}

.next-btn:hover:not(:disabled) {
    background: var(--accent-cyan);
    box-shadow: 0 0 20px var(--primary-blue-glow);
}

.next-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.confirm-btn {
    flex: 2;
    padding: var(--spacing-md);
    background: linear-gradient(135deg, var(--primary-blue), var(--accent-cyan));
    border: none;
    color: var(--dark-bg);
    border-radius: var(--radius-md);
    font-weight: 700;
    cursor: pointer;
    transition: all 0.2s ease;
}

.confirm-btn:hover {
    box-shadow: 0 0 25px var(--primary-blue-glow);
}

.transfer-step.processing,
.transfer-step.complete {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-xl);
}

.processing-spinner {
    width: 50px;
    height: 50px;
    border: 3px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-top-color: var(--primary-blue);
    border-radius: 50%;
    animation: spin 1s linear infinite;
    margin-bottom: var(--spacing-md);
}

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

.processing-text,
.complete-text {
    color: var(--text-muted);
    text-align: center;
}

.success-icon {
    width: 60px;
    height: 60px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--status-success);
    border-radius: 50%;
    font-size: 2rem;
    color: var(--dark-bg);
    margin-bottom: var(--spacing-md);
}

.new-transfer-btn {
    margin-top: var(--spacing-lg);
    padding: var(--spacing-md) var(--spacing-xl);
    background: var(--primary-blue);
    border: none;
    color: var(--dark-bg);
    border-radius: var(--radius-md);
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
}

.new-transfer-btn:hover {
    background: var(--accent-cyan);
    box-shadow: 0 0 20px var(--primary-blue-glow);
}

/* ============================================================================
   SETTINGS PANEL
   ============================================================================ */

.settings-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.settings-nav {
    display: flex;
    gap: var(--spacing-xs);
    padding: var(--spacing-md);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    overflow-x: auto;
}

.settings-nav .nav-item {
    padding: var(--spacing-sm) var(--spacing-md);
    background: transparent;
    border: 1px solid transparent;
    border-radius: var(--radius-md);
    color: var(--text-muted);
    font-size: 0.8rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
    white-space: nowrap;
}

.settings-nav .nav-item:hover {
    color: var(--primary-blue);
}

.settings-nav .nav-item.active {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}

.settings-content {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-md);
}

.settings-section {
    animation: fadeIn 0.3s ease;
}

.section-title {
    font-family: var(--font-display);
    font-size: 1rem;
    font-weight: 700;
    color: var(--patriot-white);
    margin-bottom: var(--spacing-lg);
    padding-bottom: var(--spacing-sm);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.setting-group {
    margin-bottom: var(--spacing-lg);
}

.setting-label {
    display: block;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
    margin-bottom: var(--spacing-sm);
}

.setting-select {
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--card-bg) 80%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-md);
    color: var(--patriot-white);
    font-size: 0.9rem;
}

.setting-select:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.theme-options {
    display: flex;
    gap: var(--spacing-sm);
}

.theme-btn {
    flex: 1;
    padding: var(--spacing-sm);
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-md);
    color: var(--text-muted);
    cursor: pointer;
    transition: all 0.2s ease;
}

.theme-btn:hover {
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}

.theme-btn.active {
    background: var(--primary-blue);
    border-color: var(--primary-blue);
    color: var(--dark-bg);
}

.toggle-setting {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--card-bg) 60%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-md);
}

.toggle-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.toggle-label {
    font-weight: 600;
    color: var(--patriot-white);
}

.toggle-desc {
    font-size: 0.75rem;
    color: var(--text-muted);
}

/* NOTE (2026-05-29): the `.toggle` / `.toggle-slider` rules that
   used to live here were removed. They were a stale DUPLICATE of
   the canonical toggle block further down this file (search
   `.toggle {` → the `position: relative; width: 48px` block). The
   two blocks conflicted: this one moved the ON knob via
   `transform: translateX(20px)` while the canonical block moves it
   via `left: 24px`. Both applied (different properties), so the ON
   knob got pushed `24px + 20px` and overshot off the right edge.
   The canonical block fully covers `.toggle`, `.toggle.on`,
   `.toggle-slider`, and `.toggle.on .toggle-slider`; this stale
   copy was pure conflict. `.toggle-setting` / `.toggle-info`
   (layout for the settings rows) stay — they're not duplicated. */

.security-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--card-bg) 60%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-md);
}

.security-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.security-label {
    font-weight: 600;
    color: var(--patriot-white);
}

.security-status {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.security-status.status-active {
    color: var(--status-success);
}

.security-status.status-inactive {
    color: var(--text-muted);
}

.security-desc {
    font-size: 0.75rem;
    color: var(--text-muted);
}

.security-btn {
    padding: var(--spacing-xs) var(--spacing-md);
    background: transparent;
    border: 1px solid var(--primary-blue);
    color: var(--primary-blue);
    border-radius: var(--radius-md);
    font-size: 0.8rem;
    cursor: pointer;
    transition: all 0.2s ease;
}

.security-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.danger-zone {
    border-color: color-mix(in srgb, var(--status-error) 30%, transparent);
    background: color-mix(in srgb, var(--status-error) 5%, transparent);
}

.danger-header {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: var(--accent-red);
    margin-bottom: var(--spacing-sm);
}

.danger-btn {
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    background: transparent;
    border: 1px solid var(--accent-red);
    color: var(--accent-red);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: all 0.2s ease;
}

.danger-btn:hover {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
}

.settings-footer {
    padding: var(--spacing-md);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.save-btn {
    width: 100%;
    padding: var(--spacing-md);
    background: var(--primary-blue);
    border: none;
    color: var(--dark-bg);
    border-radius: var(--radius-md);
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
}

.save-btn:hover {
    background: var(--accent-cyan);
    box-shadow: 0 0 20px var(--primary-blue-glow);
}

/* ============================================================================
   COMMS PANEL - TL-Driven Communications Orchestration
   ============================================================================ */

.comms-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: linear-gradient(180deg, 
        color-mix(in srgb, var(--card-bg) 95%, transparent) 0%,
        rgba(0, 10, 30, 0.98) 100%
    );
}

/* Comms Header */
.comms-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--spacing-md) var(--spacing-lg);
    background: linear-gradient(90deg, 
        color-mix(in srgb, var(--text-accent) 8%, transparent) 0%,
        rgba(0, 82, 204, 0.05) 50%,
        color-mix(in srgb, var(--text-accent) 8%, transparent) 100%
    );
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.comms-title {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.comms-title .title-icon {
    font-size: 1.5rem;
    filter: drop-shadow(0 0 8px var(--primary-blue-glow));
}

.comms-title h2 {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 1.1rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: var(--primary-blue);
    text-shadow: 0 0 20px var(--primary-blue-glow);
}

.comms-quick-stats {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.85rem;
}

.comms-quick-stats .stat {
    display: flex;
    align-items: baseline;
    gap: 2px;
}

.comms-quick-stats .stat-value {
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--accent-cyan);
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
}

.comms-quick-stats .stat-label {
    color: var(--text-muted);
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.comms-quick-stats .stat-divider {
    color: color-mix(in srgb, var(--text-accent) 30%, transparent);
    padding: 0 var(--spacing-xs);
}

/* Comms Tabs */
.comms-tabs {
    display: flex;
    gap: 2px;
    padding: var(--spacing-sm) var(--spacing-md);
    background: rgba(0, 0, 0, 0.3);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 15%, transparent);
}

.comms-tabs .tab {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm) var(--spacing-md);
    background: transparent;
    border: 1px solid transparent;
    border-radius: var(--radius-sm);
    color: var(--text-muted);
    font-family: 'Orbitron', monospace;
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1px;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.comms-tabs .tab:hover {
    background: color-mix(in srgb, var(--text-accent) 8%, transparent);
    color: var(--text-secondary);
    border-color: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.comms-tabs .tab.active {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-color: var(--primary-blue);
    color: var(--primary-blue);
    box-shadow: 0 0 15px color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.comms-tabs .badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    background: linear-gradient(135deg, var(--accent-red), var(--status-error));
    border-radius: 9px;
    font-size: 0.65rem;
    font-weight: 700;
    color: white;
    box-shadow: 0 0 10px color-mix(in srgb, var(--status-error) 50%, transparent);
    animation: pulse-badge 2s infinite;
}

@keyframes pulse-badge {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.1); }
}

/* Comms Content */
.comms-content {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-md);
}

/* Escalations View */
.escalations-view {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.empty-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-xxl);
    text-align: center;
}

.empty-state .empty-icon {
    font-size: 3rem;
    color: var(--accent-green);
    filter: drop-shadow(0 0 20px color-mix(in srgb, var(--status-success) 50%, transparent));
    margin-bottom: var(--spacing-md);
}

.empty-state .empty-text {
    color: var(--text-primary);
    font-size: 1rem;
    margin: 0 0 var(--spacing-xs) 0;
}

.empty-state .empty-hint {
    color: var(--text-muted);
    font-size: 0.8rem;
    margin: 0;
}

/* Escalation Cards */
.escalation-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.escalation-card {
    background: linear-gradient(135deg, 
        rgba(0, 30, 60, 0.8) 0%,
        color-mix(in srgb, var(--card-bg) 90%, transparent) 100%
    );
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    transition: all var(--duration-fast);
}

.escalation-card:hover {
    border-color: color-mix(in srgb, var(--text-accent) 40%, transparent);
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3), 
                0 0 15px color-mix(in srgb, var(--text-accent) 10%, transparent);
    transform: translateY(-1px);
}

.escalation-card.priority-high {
    border-left: 3px solid var(--accent-red);
    background: linear-gradient(135deg, 
        color-mix(in srgb, var(--status-error) 8%, transparent) 0%,
        color-mix(in srgb, var(--card-bg) 90%, transparent) 30%
    );
}

.escalation-card.priority-normal {
    border-left: 3px solid var(--accent-yellow);
}

.escalation-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-sm);
}

.escalation-header .platform-icon {
    font-size: 1.2rem;
    filter: drop-shadow(0 0 5px rgba(255, 255, 255, 0.3));
}

.escalation-header .trigger-type {
    flex: 1;
    font-family: 'Orbitron', monospace;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--primary-blue);
}

.escalation-header .time-ago {
    font-size: 0.7rem;
    color: var(--text-muted);
}

.escalation-preview {
    font-size: 0.9rem;
    color: var(--text-primary);
    line-height: 1.4;
    margin-bottom: var(--spacing-sm);
    padding: var(--spacing-sm);
    background: rgba(0, 0, 0, 0.3);
    border-radius: var(--radius-sm);
    border-left: 2px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.escalation-reason {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    font-size: 0.75rem;
    color: var(--text-muted);
    margin-bottom: var(--spacing-md);
}

.escalation-reason .reason-label {
    font-family: 'Orbitron', monospace;
    font-size: 0.65rem;
    font-weight: 700;
    color: var(--accent-cyan);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.escalation-actions {
    display: flex;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.escalation-actions .action-btn {
    flex: 1;
    min-width: 80px;
    padding: var(--spacing-xs) var(--spacing-sm);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--primary-blue);
    font-family: 'Orbitron', monospace;
    font-size: 0.65rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.escalation-actions .action-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-color: var(--primary-blue);
    box-shadow: 0 0 10px color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.escalation-actions .action-btn.primary {
    background: linear-gradient(135deg, var(--secondary-blue), var(--primary-blue));
    border-color: var(--primary-blue);
    color: white;
    box-shadow: 0 0 10px color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.escalation-actions .action-btn.primary:hover {
    box-shadow: 0 0 20px color-mix(in srgb, var(--text-accent) 50%, transparent);
}

.escalation-actions .action-btn.danger {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border-color: color-mix(in srgb, var(--status-error) 30%, transparent);
    color: var(--accent-red);
}

.escalation-actions .action-btn.danger:hover {
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
    border-color: var(--accent-red);
    box-shadow: 0 0 10px color-mix(in srgb, var(--status-error) 30%, transparent);
}

/* Activity View */
.activity-view {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.activity-header {
    display: flex;
    align-items: baseline;
    gap: var(--spacing-sm);
    padding-bottom: var(--spacing-sm);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 15%, transparent);
}

.activity-header .section-title {
    font-family: 'Orbitron', monospace;
    font-size: 0.8rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-secondary);
}

.activity-header .section-subtitle {
    font-size: 0.7rem;
    color: var(--text-muted);
}

.activity-list {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.activity-row {
    display: grid;
    grid-template-columns: 24px 50px 1fr 24px auto;
    gap: var(--spacing-sm);
    align-items: center;
    padding: var(--spacing-sm) var(--spacing-sm);
    background: color-mix(in srgb, var(--card-bg) 50%, transparent);
    border-radius: var(--radius-sm);
    transition: background var(--duration-fast);
}

.activity-row:hover {
    background: rgba(0, 30, 60, 0.7);
}

.activity-row.status-delivered .activity-status {
    color: var(--accent-green);
}

.activity-row.status-batched .activity-status {
    color: var(--accent-yellow);
}

.activity-row.status-suppressed .activity-status {
    color: var(--text-muted);
}

.activity-status {
    font-size: 1rem;
    text-align: center;
}

.activity-time {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.7rem;
    color: var(--text-muted);
}

.activity-trigger {
    font-size: 0.75rem;
    color: var(--text-secondary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.activity-platform {
    font-size: 0.9rem;
    text-align: center;
}

.activity-preview {
    font-size: 0.7rem;
    color: var(--text-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    text-align: right;
}

/* Preferences View */
.preferences-view {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.pref-section {
    background: color-mix(in srgb, var(--card-bg) 60%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
}

.pref-title {
    margin: 0 0 var(--spacing-md) 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-secondary);
}

.platform-selector {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(80px, 1fr));
    gap: var(--spacing-sm);
}

.platform-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    padding: var(--spacing-sm);
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all var(--duration-fast);
}

.platform-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: color-mix(in srgb, var(--text-accent) 40%, transparent);
}

.platform-btn.active {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-color: var(--primary-blue);
    box-shadow: 0 0 15px color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.platform-btn .platform-icon {
    font-size: 1.5rem;
}

.platform-btn .platform-name {
    font-size: 0.6rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-muted);
}

.platform-btn.active .platform-name {
    color: var(--primary-blue);
}

.pref-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
}

.pref-label {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.pref-label span:first-child {
    font-size: 0.85rem;
    color: var(--text-primary);
}

.pref-hint {
    font-size: 0.7rem;
    color: var(--text-muted);
}

/* Toggle Switch */
.toggle {
    position: relative;
    width: 48px;
    height: 26px;
    background: rgba(0, 0, 0, 0.4);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: 13px;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.toggle.on {
    background: color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-color: var(--primary-blue);
}

.toggle-slider {
    position: absolute;
    top: 2px;
    left: 2px;
    width: 20px;
    height: 20px;
    background: var(--text-muted);
    border-radius: 50%;
    transition: all var(--duration-fast);
}

.toggle.on .toggle-slider {
    left: 24px;
    background: var(--primary-blue);
    box-shadow: 0 0 10px var(--primary-blue-glow);
}

.severity-selector {
    display: flex;
    gap: 2px;
    background: rgba(0, 0, 0, 0.3);
    border-radius: var(--radius-sm);
    padding: 2px;
}

.severity-btn {
    flex: 1;
    padding: var(--spacing-xs) var(--spacing-sm);
    background: transparent;
    border: none;
    border-radius: var(--radius-sm);
    color: var(--text-muted);
    font-size: 0.7rem;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.severity-btn:hover {
    color: var(--text-secondary);
}

.severity-btn.active {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    color: var(--primary-blue);
}

.quiet-hours {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.time-input {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.time-input label {
    font-size: 0.65rem;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.time-input input[type="time"] {
    padding: var(--spacing-xs) var(--spacing-sm);
    background: rgba(0, 0, 0, 0.4);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.85rem;
}

.time-input input[type="time"]:focus {
    outline: none;
    border-color: var(--primary-blue);
    box-shadow: 0 0 10px color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.time-separator {
    color: var(--text-muted);
    font-size: 0.8rem;
    padding-top: 16px;
}

.pref-note {
    margin: var(--spacing-sm) 0 0 0;
    font-size: 0.7rem;
    color: var(--text-muted);
    font-style: italic;
}

.pref-footer {
    display: flex;
    justify-content: flex-end;
    padding-top: var(--spacing-md);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 15%, transparent);
}

/* Comms Health Footer */
.comms-health {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
    padding: var(--spacing-sm) var(--spacing-md);
    background: linear-gradient(90deg, 
        rgba(0, 40, 80, 0.9) 0%,
        rgba(0, 30, 60, 0.95) 50%,
        rgba(0, 40, 80, 0.9) 100%
    );
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.7rem;
}

.health-item {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
}

.health-indicator {
    font-size: 0.8rem;
}

.health-indicator.good {
    color: var(--accent-green);
    text-shadow: 0 0 8px color-mix(in srgb, var(--status-success) 60%, transparent);
}

.health-indicator.warning {
    color: var(--accent-yellow);
    text-shadow: 0 0 8px rgba(255, 204, 0, 0.6);
}

.health-indicator.critical {
    color: var(--accent-red);
    text-shadow: 0 0 8px color-mix(in srgb, var(--status-error) 60%, transparent);
}

.health-label {
    color: var(--text-muted);
}

.health-value {
    color: var(--accent-cyan);
}

/* Secrets View */
.secrets-view {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.secrets-header {
    text-align: center;
    padding: var(--spacing-md);
    background: linear-gradient(135deg,
        color-mix(in srgb, var(--text-accent) 5%, transparent) 0%,
        rgba(0, 82, 204, 0.08) 50%,
        color-mix(in srgb, var(--text-accent) 5%, transparent) 100%
    );
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-md);
}

.secrets-title {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-sm);
}

.secrets-title .lock-icon {
    font-size: 1.5rem;
    filter: drop-shadow(0 0 10px color-mix(in srgb, var(--accent-gold) 50%, transparent));
}

.secrets-title h3 {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 1rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: var(--accent-yellow);
    text-shadow: 0 0 15px color-mix(in srgb, var(--accent-gold) 40%, transparent);
}

.secrets-description {
    margin: 0;
    font-size: 0.8rem;
    color: var(--text-muted);
}

.unlock-prompt {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-sm);
}

.unlock-btn {
    padding: var(--spacing-sm) var(--spacing-lg);
    background: linear-gradient(135deg, color-mix(in srgb, var(--accent-gold) 20%, transparent), rgba(255, 136, 0, 0.2));
    border: 1px solid color-mix(in srgb, var(--accent-gold) 50%, transparent);
    border-radius: var(--radius-md);
    color: var(--accent-yellow);
    font-family: 'Orbitron', monospace;
    font-size: 0.85rem;
    font-weight: 700;
    cursor: pointer;
    transition: all var(--duration-fast);
    text-shadow: 0 0 10px color-mix(in srgb, var(--accent-gold) 30%, transparent);
}

.unlock-btn:hover:not(:disabled) {
    background: linear-gradient(135deg, color-mix(in srgb, var(--accent-gold) 30%, transparent), rgba(255, 136, 0, 0.3));
    border-color: var(--accent-yellow);
    box-shadow: 0 0 20px color-mix(in srgb, var(--accent-gold) 30%, transparent);
    transform: translateY(-1px);
}

.unlock-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.unlock-error {
    margin: 0;
    font-size: 0.75rem;
    color: var(--accent-red);
}

.secrets-description.unlocked {
    color: var(--accent-green);
    font-weight: 600;
}

.secrets-locked-message {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-xxl);
    text-align: center;
}

.secrets-locked-message p {
    margin: 0;
    color: var(--text-muted);
    font-size: 0.9rem;
}

.passkey-warning {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-xs);
    margin-top: var(--spacing-sm);
    padding: var(--spacing-xs) var(--spacing-md);
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    border-radius: var(--radius-sm);
    font-size: 0.75rem;
    color: var(--accent-red);
}

.result-success {
    font-size: 0.7rem;
    color: var(--accent-green);
    font-weight: 600;
}

.result-error {
    font-size: 0.7rem;
    color: var(--accent-red);
    font-weight: 600;
}

.secrets-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.secret-card {
    background: color-mix(in srgb, var(--card-bg) 80%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-md);
    overflow: hidden;
    transition: all var(--duration-fast);
}

.secret-card:hover {
    border-color: color-mix(in srgb, var(--text-accent) 40%, transparent);
}

.secret-card-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    width: 100%;
    padding: var(--spacing-md);
    background: transparent;
    border: none;
    cursor: pointer;
    text-align: left;
    transition: background var(--duration-fast);
}

.secret-card-header:hover {
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
}

.secret-card-header .platform-icon {
    font-size: 1.8rem;
    filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.3));
}

.secret-card-header .platform-info {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.secret-card-header .platform-name {
    font-family: 'Orbitron', monospace;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 1px;
    color: var(--primary-blue);
}

.secret-card-header .platform-desc {
    font-size: 0.7rem;
    color: var(--text-muted);
}

.secret-card-header .expand-icon {
    color: var(--text-muted);
    font-size: 0.7rem;
    transition: transform var(--duration-fast);
}

.secret-card-body {
    padding: var(--spacing-md);
    padding-top: 0;
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    animation: slide-down 0.2s ease-out;
}

@keyframes slide-down {
    from {
        opacity: 0;
        transform: translateY(-10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.secret-field {
    margin-bottom: var(--spacing-md);
}

.secret-field:last-of-type {
    margin-bottom: var(--spacing-lg);
}

.field-label {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-xs);
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.sensitive-badge {
    display: inline-flex;
    align-items: center;
    padding: 2px 6px;
    background: linear-gradient(135deg, color-mix(in srgb, var(--accent-gold) 15%, transparent), rgba(255, 136, 0, 0.15));
    border: 1px solid color-mix(in srgb, var(--accent-gold) 40%, transparent);
    border-radius: 3px;
    font-size: 0.55rem;
    font-weight: 700;
    color: var(--accent-yellow);
    letter-spacing: 1px;
}

.field-input-wrapper {
    display: flex;
    gap: var(--spacing-xs);
}

.secret-input {
    flex: 1;
    padding: var(--spacing-sm) var(--spacing-md);
    background: rgba(0, 0, 0, 0.4);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.85rem;
    transition: all var(--duration-fast);
}

.secret-input:focus {
    outline: none;
    border-color: var(--primary-blue);
    box-shadow: 0 0 15px color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.secret-input::placeholder {
    color: var(--text-muted);
    font-style: italic;
}

.toggle-visibility {
    width: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all var(--duration-fast);
}

.toggle-visibility:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-color: var(--primary-blue);
}

.field-help {
    margin: var(--spacing-xs) 0 0 0;
    font-size: 0.7rem;
    color: var(--text-muted);
    font-style: italic;
}

.secret-card-actions {
    display: flex;
    gap: var(--spacing-sm);
    justify-content: flex-end;
    padding-top: var(--spacing-sm);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.test-btn {
    padding: var(--spacing-xs) var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--primary-blue);
    font-family: 'Orbitron', monospace;
    font-size: 0.7rem;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.test-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-color: var(--primary-blue);
    box-shadow: 0 0 10px color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.secrets-footer {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding-top: var(--spacing-md);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 15%, transparent);
}

.security-note {
    display: flex;
    align-items: flex-start;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--status-success) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 20%, transparent);
    border-radius: var(--radius-sm);
}

.security-note .note-icon {
    font-size: 1.2rem;
    filter: drop-shadow(0 0 5px color-mix(in srgb, var(--status-success) 50%, transparent));
}

.security-note p {
    margin: 0;
    font-size: 0.7rem;
    color: var(--text-muted);
    line-height: 1.5;
}

.bulk-actions {
    display: flex;
    gap: var(--spacing-sm);
    justify-content: center;
}

.import-btn,
.export-btn {
    padding: var(--spacing-xs) var(--spacing-md);
    background: color-mix(in srgb, var(--card-bg) 80%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-family: 'Orbitron', monospace;
    font-size: 0.65rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.import-btn:hover,
.export-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: color-mix(in srgb, var(--text-accent) 40%, transparent);
    color: var(--primary-blue);
}

/* ============================================================================
   LOADING OVERLAY
   ============================================================================ */

.loading-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(5, 15, 25, 0.9);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    z-index: 10;
}

.loading-spinner {
    width: 40px;
    height: 40px;
    border: 3px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-top-color: var(--primary-blue);
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

.loading-text {
    margin-top: var(--spacing-md);
    color: var(--text-muted);
    font-size: 0.85rem;
}

/* `.keyboard-hint`, `.keyboard-hint-icon`,
   `.keyboard-shortcuts-popup`, `.shortcut-row`, `.shortcut-keys`,
   `.shortcut-desc`, `@keyframes fadeInUp` retired in PR Series A.4
   hotfix (2026-05-11) — the `[⌘?]` icon button + hover popup
   collapsed into a `title` attribute on the chat send button per
   the user's call. The shortcut vocabulary stays the same; just
   the chrome surface returns its space to the message thread. */

/* ============================================================================
   INSIGHTS SECTION - Learning visibility
   ============================================================================ */

.empty-insights {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-xl);
    text-align: center;
    color: var(--text-dim);
}

.empty-insights .empty-icon {
    font-size: 3rem;
    margin-bottom: var(--spacing-md);
    opacity: 0.5;
}

.empty-insights .empty-text {
    font-size: 0.95rem;
    margin-bottom: var(--spacing-sm);
    max-width: 280px;
}

.empty-insights .empty-hint {
    font-size: 0.8rem;
    opacity: 0.7;
}

.section-desc {
    font-size: 0.85rem;
    color: var(--text-dim);
    margin-bottom: var(--spacing-md);
}

.insights-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.insight-card {
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--card-bg) 60%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-md);
    backdrop-filter: blur(8px);
}

.insight-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--spacing-sm);
}

.insight-type {
    font-size: 0.75rem;
    text-transform: uppercase;
    color: var(--primary-blue);
    padding: 2px 8px;
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-radius: var(--radius-sm);
}

.insight-relevance {
    font-size: 0.8rem;
    color: var(--patriot-gold);
    font-weight: 500;
}

.insight-content {
    font-size: 0.9rem;
    color: var(--text-primary);
    line-height: 1.5;
}

/* ----------------------------------------------------------------------------
   HRR insights (Settings → Insights tab) — holographic memory projection
   ---------------------------------------------------------------------------- */

.hrr-insights {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.insights-loading {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-lg);
    color: var(--text-secondary);
}

.insights-error {
    padding: var(--spacing-md);
    border: 1px solid color-mix(in srgb, var(--status-warning, #c08a3e) 45%, transparent);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--status-warning, #c08a3e) 10%, transparent);
}

/* Memory-state header — live HRR transparency strip. */
.hrr-memory-state {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--card-bg) 50%, transparent);
    border: 1px solid color-mix(in srgb, var(--primary-blue) 25%, transparent);
    border-radius: var(--radius-md);
    backdrop-filter: blur(8px);
}

.hrr-memory-state.disconnected {
    border-color: color-mix(in srgb, var(--text-secondary) 25%, transparent);
    opacity: 0.75;
}

.hrr-memory-state-item {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 64px;
}

.hrr-memory-state-label {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--text-secondary);
}

.hrr-memory-state-value {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--text-primary);
}

.hrr-section {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.hrr-section-title {
    margin: 0;
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--text-primary);
}

.hrr-section-desc {
    margin: 0;
    font-size: 0.8rem;
    color: var(--text-secondary);
}

/* Salient contexts — relative attention bars. */
.hrr-salient-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.hrr-salient-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.hrr-salient-context {
    flex: 0 0 45%;
    font-size: 0.8rem;
    color: var(--text-primary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.hrr-salient-bar-track {
    flex: 1 1 auto;
    height: 6px;
    border-radius: 3px;
    background: color-mix(in srgb, var(--text-secondary) 18%, transparent);
    overflow: hidden;
}

.hrr-salient-bar-fill {
    display: block;
    height: 100%;
    border-radius: 3px;
    background: linear-gradient(
        90deg,
        var(--primary-blue),
        var(--patriot-gold)
    );
}

/* ============================================================================
   INVENTORY PANELS (Admin Reference)
   ============================================================================ */

.inventory-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--bg-secondary);
}

.inventory-header {
    padding: var(--spacing-md);
    border-bottom: 1px solid var(--border-color);
    background: rgba(0, 0, 0, 0.3);
}

.inventory-header h2 {
    margin: 0 0 var(--spacing-xs) 0;
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--primary-blue);
}

.inventory-subtitle {
    margin: 0;
    font-size: 0.8rem;
    color: var(--text-secondary);
}

.entity-access-panel.management-mode {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.entity-access-content {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.entity-access-notice {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
    padding: var(--spacing-sm) var(--spacing-md);
    border: 1px solid color-mix(in srgb, var(--status-success) 35%, transparent);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--status-success) 12%, transparent);
    color: var(--text-primary);
}

.entity-access-notice button {
    background: transparent;
    border: none;
    color: var(--text-secondary);
    cursor: pointer;
    font-size: 0.8rem;
}

.entity-access-card {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    background: rgba(0, 0, 0, 0.24);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
}

.entity-access-card-header {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.entity-access-card-header h3 {
    margin: 0;
    font-size: 1rem;
    color: var(--text-primary);
}

.entity-access-card-header p {
    margin: 0;
    color: var(--text-secondary);
    font-size: 0.85rem;
    line-height: 1.5;
}

.entity-access-form-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: var(--spacing-md);
}

.entity-access-form-grid--compact {
    grid-template-columns: minmax(240px, 2fr) minmax(180px, 1fr);
}

.entity-access-field {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.entity-access-field span {
    font-size: 0.75rem;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--text-muted);
}

.entity-access-field input,
.entity-access-field select {
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 0.9rem;
}

.entity-access-field input:focus,
.entity-access-field select:focus {
    outline: none;
    border-color: var(--primary-blue);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--text-accent) 25%, transparent);
}

.entity-access-stats .stat-item {
    min-width: 0;
}

.entity-access-stats .stat-value {
    word-break: break-word;
}

.entity-access-table {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid rgba(100, 120, 150, 0.2);
    border-radius: var(--radius-md);
    background: rgba(0, 0, 0, 0.2);
}

.entity-access-table-header,
.entity-access-table-row {
    display: grid;
    gap: var(--spacing-sm);
    align-items: center;
    padding: var(--spacing-sm) var(--spacing-md);
}

.entity-access-table-header {
    position: sticky;
    top: 0;
    background: rgba(0, 0, 0, 0.32);
    border-bottom: 1px solid rgba(100, 120, 150, 0.2);
    font-size: 0.7rem;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--text-muted);
}

.entity-access-table-row {
    border-bottom: 1px solid rgba(100, 120, 150, 0.1);
    font-size: 0.85rem;
    color: var(--text-primary);
}

.entity-access-table-row:last-child {
    border-bottom: none;
}

.entity-access-table-row:hover {
    background: rgba(255, 255, 255, 0.02);
}

.entity-access-table-header--members,
.entity-access-table-row--members {
    grid-template-columns: minmax(220px, 2fr) minmax(120px, 1fr) minmax(110px, 0.8fr) minmax(170px, 1.2fr) minmax(110px, 0.8fr);
}

.entity-access-table-header--invites,
.entity-access-table-row--invites {
    grid-template-columns: minmax(220px, 2fr) minmax(120px, 1fr) minmax(110px, 0.8fr) minmax(170px, 1.2fr);
}

.entity-access-mono {
    font-family: var(--font-mono);
    font-size: 0.8rem;
}

.entity-access-status {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 4px 8px;
    border-radius: var(--radius-sm);
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
}

.entity-access-status--active,
.entity-access-status--accepted,
.entity-access-status--registered {
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    color: #22c55e;
}

.entity-access-status--pending {
    background: color-mix(in srgb, var(--status-warning) 20%, transparent);
    color: #f59e0b;
}

.entity-access-status--revoked {
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
    color: #ef4444;
}

.entity-access-actions {
    display: flex;
    justify-content: flex-end;
}

.entity-access-empty-state {
    margin-top: var(--spacing-sm);
}

.inventory-tabs {
    display: flex;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm);
    background: rgba(0, 0, 0, 0.2);
    border-bottom: 1px solid var(--border-color);
    overflow-x: auto;
    flex-wrap: nowrap;
}

.inventory-tab {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: var(--spacing-xs) var(--spacing-sm);
    background: transparent;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-size: 0.75rem;
    cursor: pointer;
    transition: all var(--transition-fast);
    white-space: nowrap;
}

.inventory-tab:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
    color: var(--text-primary);
}

.inventory-tab.active {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}

.tab-icon {
    font-size: 1rem;
}

.tab-name {
    font-weight: 500;
}

.inventory-content {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-sm);
}

.capability-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.capability-card {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    transition: border-color var(--transition-fast);
}

.capability-card:hover {
    border-color: var(--primary-blue);
}

.capability-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-xs);
}

.method-badge {
    font-family: var(--font-mono);
    font-size: 0.7rem;
    font-weight: 700;
    padding: 2px 6px;
    border-radius: var(--radius-sm);
    text-transform: uppercase;
}

.method-get {
    background: rgba(97, 175, 254, 0.2);
    color: #61affe;
}

.method-post {
    background: rgba(73, 204, 144, 0.2);
    color: #49cc90;
}

.method-patch {
    background: rgba(252, 161, 48, 0.2);
    color: #fca130;
}

.method-delete {
    background: rgba(249, 62, 62, 0.2);
    color: #f93e3e;
}

.capability-name {
    font-weight: 600;
    color: var(--text-primary);
    font-size: 0.9rem;
}

.capability-endpoint {
    display: block;
    font-family: var(--font-mono);
    font-size: 0.8rem;
    color: var(--patriot-gold);
    background: rgba(0, 0, 0, 0.4);
    padding: var(--spacing-xs) var(--spacing-sm);
    border-radius: var(--radius-sm);
    margin: var(--spacing-xs) 0;
    overflow-x: auto;
}

.capability-description {
    margin: var(--spacing-xs) 0;
    font-size: 0.85rem;
    color: var(--text-secondary);
    line-height: 1.4;
}

.capability-params {
    margin-top: var(--spacing-sm);
    padding-top: var(--spacing-sm);
    border-top: 1px solid var(--border-color);
}

.params-label {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--text-secondary);
    text-transform: uppercase;
    margin-bottom: var(--spacing-xs);
    display: block;
}

.params-list {
    margin: var(--spacing-xs) 0 0 0;
    padding-left: var(--spacing-md);
    font-family: var(--font-mono);
    font-size: 0.75rem;
    color: var(--text-secondary);
}

.params-list li {
    margin-bottom: 2px;
}

.inventory-footer {
    padding: var(--spacing-sm);
    border-top: 1px solid var(--border-color);
    background: rgba(0, 0, 0, 0.2);
}

.webhook-events summary {
    cursor: pointer;
    font-size: 0.85rem;
    color: var(--text-secondary);
    padding: var(--spacing-xs);
}

.webhook-events summary:hover {
    color: var(--text-primary);
}

.events-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: var(--spacing-xs);
    padding: var(--spacing-sm);
}

.event-item {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: var(--spacing-xs);
    background: rgba(0, 0, 0, 0.2);
    border-radius: var(--radius-sm);
}

.event-item code {
    font-family: var(--font-mono);
    font-size: 0.7rem;
    color: var(--patriot-gold);
}

.event-item span {
    font-size: 0.7rem;
    color: var(--text-secondary);
}

/* ============================================================================
   DEPLOYMENT & SECRETS PANEL
   ============================================================================ */

.deployment-secrets-panel .service-info-bar {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-xs) var(--spacing-sm);
    background: linear-gradient(90deg, rgba(0, 195, 255, 0.1), color-mix(in srgb, var(--accent-gold) 5%, transparent));
    border-bottom: 1px solid var(--border-color);
    font-size: 0.75rem;
}

.deployment-secrets-panel .service-label {
    color: var(--cyber-cyan);
    font-weight: 600;
}

.deployment-secrets-panel .service-port {
    font-family: var(--font-mono);
    color: var(--patriot-gold);
    padding: 2px 6px;
    background: rgba(0, 0, 0, 0.3);
    border-radius: var(--radius-sm);
}

.deployment-secrets-panel .auth-info {
    color: var(--text-secondary);
    font-style: italic;
    margin-left: auto;
}

.deployment-secrets-panel .tab-port {
    font-family: var(--font-mono);
    font-size: 0.65rem;
    color: var(--text-muted);
    opacity: 0.7;
}

.deployment-secrets-panel .inventory-tab:hover .tab-port {
    color: var(--cyber-cyan);
    opacity: 1;
}

/* Method badge for ACTION type */
.method-badge.method-action {
    background: linear-gradient(135deg, var(--primary-blue), var(--cyber-cyan));
    color: var(--bg-primary);
}

/* Security Tiers */
.deployment-secrets-panel .security-tiers,
.deployment-secrets-panel .rate-limits,
.deployment-secrets-panel .quick-reference {
    margin-bottom: var(--spacing-sm);
}

.deployment-secrets-panel details summary {
    cursor: pointer;
    font-size: 0.85rem;
    color: var(--text-secondary);
    padding: var(--spacing-xs);
    border-radius: var(--radius-sm);
    transition: all var(--transition-fast);
}

.deployment-secrets-panel details summary:hover {
    color: var(--text-primary);
    background: rgba(255, 255, 255, 0.05);
}

.deployment-secrets-panel details[open] summary {
    color: var(--cyber-cyan);
    border-bottom: 1px solid var(--border-color);
    margin-bottom: var(--spacing-sm);
}

.tiers-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
}

.tier-card {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
    padding: var(--spacing-sm);
}

.tier-card h4 {
    margin: 0 0 var(--spacing-xs) 0;
    font-size: 0.85rem;
    color: var(--patriot-gold);
}

.tier-detail {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-bottom: var(--spacing-xs);
}

.tier-label {
    font-size: 0.7rem;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.tier-detail code,
.tier-detail span:not(.tier-label) {
    font-size: 0.75rem;
    color: var(--text-primary);
}

.tier-detail code {
    font-family: var(--font-mono);
    color: var(--cyber-cyan);
}

/* Rate Limits Table */
.limits-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.75rem;
    margin: var(--spacing-sm);
}

.limits-table th,
.limits-table td {
    padding: var(--spacing-xs) var(--spacing-sm);
    text-align: left;
    border-bottom: 1px solid var(--border-color);
}

.limits-table th {
    color: var(--text-secondary);
    font-weight: 600;
    text-transform: uppercase;
    font-size: 0.65rem;
    letter-spacing: 0.5px;
}

.limits-table td {
    color: var(--text-primary);
}

.limits-table code {
    font-family: var(--font-mono);
    color: var(--patriot-gold);
    background: rgba(0, 0, 0, 0.3);
    padding: 2px 6px;
    border-radius: var(--radius-sm);
}

/* Quick Reference Grid */
.reference-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
}

.ref-section {
    background: rgba(0, 0, 0, 0.3);
    border-radius: var(--radius-sm);
    padding: var(--spacing-sm);
}

.ref-section h4 {
    margin: 0 0 var(--spacing-xs) 0;
    font-size: 0.75rem;
    color: var(--cyber-cyan);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.ref-section code {
    display: block;
    font-family: var(--font-mono);
    font-size: 0.7rem;
    color: var(--patriot-gold);
    background: rgba(0, 0, 0, 0.3);
    padding: var(--spacing-xs);
    border-radius: var(--radius-sm);
    margin-bottom: var(--spacing-xs);
    word-break: break-all;
}

.ref-section p {
    margin: var(--spacing-xs) 0;
    font-size: 0.7rem;
    color: var(--text-muted);
    text-align: center;
}

.ref-section ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.ref-section li {
    font-size: 0.7rem;
    color: var(--text-secondary);
    padding: 2px 0;
}

.ref-section li code {
    display: inline;
    padding: 1px 4px;
    margin-right: var(--spacing-xs);
}

/* ============================================================================
   DEPLOYMENT & SECRETS - MANAGEMENT MODE
   ============================================================================ */

.deployment-secrets-panel.management-mode {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.management-tabs {
    display: flex;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm);
    background: rgba(0, 0, 0, 0.3);
    border-bottom: 1px solid var(--border-color);
}

.management-tab {
    padding: var(--spacing-xs) var(--spacing-md);
    background: transparent;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-size: 0.8rem;
    cursor: pointer;
    transition: all var(--transition-fast);
}

.management-tab:hover {
    background: rgba(255, 255, 255, 0.05);
    color: var(--text-primary);
}

.management-tab.active {
    background: var(--primary-blue);
    border-color: var(--primary-blue);
    color: white;
}

.management-content {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-md);
}

/* Secrets Manager */
.secrets-manager {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.secrets-filters {
    display: flex;
    gap: var(--spacing-sm);
    align-items: center;
    flex-wrap: wrap;
}

.filter-group {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.filter-group label {
    font-size: 0.7rem;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.filter-group select {
    padding: var(--spacing-xs) var(--spacing-sm);
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 0.85rem;
    cursor: pointer;
}

.filter-group select:focus {
    outline: none;
    border-color: var(--cyber-cyan);
}

.btn-refresh,
.btn-add,
.btn-save,
.btn-delete,
.btn-deploy {
    padding: var(--spacing-xs) var(--spacing-sm);
    border-radius: var(--radius-sm);
    font-size: 0.8rem;
    cursor: pointer;
    transition: all var(--transition-fast);
    border: none;
}

.btn-refresh {
    background: rgba(0, 195, 255, 0.2);
    color: var(--cyber-cyan);
}

.btn-refresh:hover:not(:disabled) {
    background: rgba(0, 195, 255, 0.3);
}

.btn-add {
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    color: var(--status-success);
    margin-left: auto;
}

.btn-add:hover {
    background: color-mix(in srgb, var(--status-success) 30%, transparent);
}

.btn-save {
    background: var(--cyber-cyan);
    color: var(--bg-primary);
    font-weight: 600;
}

.btn-save:hover:not(:disabled) {
    background: #00e5ff;
}

.btn-save:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.btn-delete {
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
    color: var(--status-error);
    padding: 4px 8px;
}

.btn-delete:hover {
    background: color-mix(in srgb, var(--status-error) 40%, transparent);
}

/* Reveal/Hide buttons for secrets */
.btn-reveal,
.btn-hide {
    padding: 4px 8px;
    border-radius: var(--radius-sm);
    font-size: 0.8rem;
    cursor: pointer;
    transition: all var(--transition-fast);
    border: none;
    margin-left: var(--spacing-xs);
}

.btn-reveal {
    background: rgba(0, 195, 255, 0.2);
    color: var(--cyber-cyan);
}

.btn-reveal:hover {
    background: rgba(0, 195, 255, 0.4);
}

.btn-hide {
    background: rgba(139, 92, 246, 0.2);
    color: #8b5cf6;
}

.btn-hide:hover {
    background: rgba(139, 92, 246, 0.4);
}

.btn-reveal-all {
    padding: 2px 8px;
    border-radius: var(--radius-sm);
    font-size: 0.7rem;
    cursor: pointer;
    transition: all var(--transition-fast);
    border: 1px solid var(--cyber-cyan);
    background: transparent;
    color: var(--cyber-cyan);
}

.btn-reveal-all:hover {
    background: rgba(0, 195, 255, 0.2);
}

/* Passkey registration */
.passkey-section {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    margin-top: var(--spacing-md);
    padding-top: var(--spacing-md);
    border-top: 1px dashed var(--border-color);
}

.btn-register-passkey {
    padding: var(--spacing-xs) var(--spacing-md);
    border-radius: var(--radius-sm);
    font-size: 0.85rem;
    cursor: pointer;
    transition: all var(--transition-fast);
    border: 1px solid var(--patriot-gold);
    background: color-mix(in srgb, var(--status-warning) 10%, transparent);
    color: var(--patriot-gold);
    font-weight: 600;
}

.btn-register-passkey:hover {
    background: color-mix(in srgb, var(--status-warning) 25%, transparent);
    transform: translateY(-1px);
}

.passkey-hint {
    font-size: 0.75rem;
    color: var(--text-muted);
    font-style: italic;
}

/* Secret value states */
.col-value .masked {
    display: flex;
    align-items: center;
    color: var(--text-muted);
    font-family: var(--font-mono);
}

.col-value .revealed {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
}

.col-value .revealed code {
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 30%, transparent);
    padding: 2px 8px;
    border-radius: var(--radius-xs);
    color: var(--status-success);
    font-size: 0.8rem;
    max-width: 250px;
    overflow: hidden;
    text-overflow: ellipsis;
}

.col-value .revealing {
    color: var(--patriot-gold);
    animation: pulse 1.5s infinite;
}

@keyframes pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
}

.btn-deploy {
    background: linear-gradient(135deg, var(--patriot-gold), #ff9900);
    color: var(--bg-primary);
    font-weight: 600;
    padding: var(--spacing-sm) var(--spacing-lg);
}

.btn-deploy:hover:not(:disabled) {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px color-mix(in srgb, var(--accent-gold) 30%, transparent);
}

.btn-deploy:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

/* Error banner */
.error-banner {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
    border: 1px solid var(--status-error);
    border-radius: var(--radius-sm);
    color: var(--status-error);
    font-size: 0.85rem;
}

/* KYC debug error - full error text, copy button, monospace for readability */
.kyc-debug-error .kyc-debug-error-content {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    width: 100%;
}
.kyc-debug-error .kyc-debug-error-text {
    font-family: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, monospace;
    font-size: 0.8rem;
    white-space: pre-wrap;
    word-break: break-all;
    margin: 0;
    max-height: 12em;
    overflow-y: auto;
}
.kyc-debug-error .kyc-debug-error-actions {
    display: flex;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.error-banner button {
    background: transparent;
    border: none;
    color: var(--status-error);
    cursor: pointer;
    font-size: 1rem;
}

/* Add secret form */
.add-secret-form {
    background: color-mix(in srgb, var(--status-success) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 30%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
}

.add-secret-form h4 {
    margin: 0 0 var(--spacing-sm) 0;
    color: var(--status-success);
    font-size: 0.9rem;
}

.form-row {
    display: flex;
    gap: var(--spacing-sm);
    align-items: center;
}

.form-row input {
    flex: 1;
    padding: var(--spacing-sm);
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: var(--font-mono);
    font-size: 0.85rem;
}

.form-row input:focus {
    outline: none;
    border-color: var(--cyber-cyan);
}

.form-row input::placeholder {
    color: var(--text-muted);
}

.form-hint {
    margin: var(--spacing-xs) 0 0 0;
    font-size: 0.75rem;
    color: var(--text-muted);
}

/* Secrets list */
.secrets-list {
    background: rgba(0, 0, 0, 0.2);
    border-radius: var(--radius-md);
    overflow: hidden;
}

.secrets-header,
.secret-row {
    display: grid;
    grid-template-columns: 1fr 120px 150px 60px;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    align-items: center;
}

.secrets-header {
    background: rgba(0, 0, 0, 0.3);
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-muted);
}

.secret-row {
    border-top: 1px solid var(--border-color);
    font-size: 0.85rem;
}

.secret-row:hover {
    background: rgba(255, 255, 255, 0.03);
}

.col-key code {
    font-family: var(--font-mono);
    color: var(--patriot-gold);
    font-size: 0.8rem;
}

.col-value .masked {
    color: var(--text-muted);
    font-family: var(--font-mono);
}

.col-meta {
    font-size: 0.75rem;
    color: var(--text-muted);
}

.empty-state {
    padding: var(--spacing-lg);
    text-align: center;
    color: var(--text-muted);
    font-style: italic;
}

/* Security info */
.security-info {
    padding: var(--spacing-sm);
}

.tss-info {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--accent-gold) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--accent-gold) 30%, transparent);
    border-radius: var(--radius-sm);
    font-size: 0.8rem;
}

.tss-badge {
    padding: 2px 8px;
    background: var(--patriot-gold);
    color: var(--bg-primary);
    border-radius: var(--radius-sm);
    font-weight: 600;
    font-size: 0.75rem;
}

/* Deployments Manager */
.deployments-manager {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.deploy-trigger {
    background: color-mix(in srgb, var(--accent-gold) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--accent-gold) 20%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
}

.deploy-trigger h4 {
    margin: 0 0 var(--spacing-md) 0;
    color: var(--patriot-gold);
}

.trigger-form {
    display: flex;
    gap: var(--spacing-md);
    align-items: flex-end;
    flex-wrap: wrap;
}

.trigger-form .form-group {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.trigger-form label {
    font-size: 0.7rem;
    color: var(--text-muted);
    text-transform: uppercase;
}

.trigger-form select,
.trigger-form input {
    padding: var(--spacing-sm);
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 0.85rem;
    min-width: 150px;
}

.trigger-form select:focus,
.trigger-form input:focus {
    outline: none;
    border-color: var(--patriot-gold);
}

/* Executions list */
.executions-list {
    background: rgba(0, 0, 0, 0.2);
    border-radius: var(--radius-md);
    overflow: hidden;
}

.executions-list h4 {
    margin: 0;
    padding: var(--spacing-md);
    background: rgba(0, 0, 0, 0.2);
    border-bottom: 1px solid var(--border-color);
}

.executions-header,
.execution-row {
    display: grid;
    grid-template-columns: 100px 1fr 100px 80px 150px;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    align-items: center;
}

.executions-header {
    background: rgba(0, 0, 0, 0.2);
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-muted);
}

.execution-row {
    border-top: 1px solid var(--border-color);
    font-size: 0.85rem;
}

.execution-row code {
    font-family: var(--font-mono);
    font-size: 0.75rem;
    color: var(--cyber-cyan);
}

.col-status {
    padding: 2px 8px;
    border-radius: var(--radius-sm);
    text-align: center;
    font-size: 0.75rem;
    font-weight: 600;
}

.status-success {
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    color: var(--status-success);
}

.status-running {
    background: rgba(0, 195, 255, 0.2);
    color: var(--cyber-cyan);
}

.status-failed {
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
    color: var(--status-error);
}

.status-unknown {
    background: rgba(128, 128, 128, 0.2);
    color: var(--text-muted);
}

/* Service Status */
.service-status {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.status-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.status-header h4 {
    margin: 0;
}

.services-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: var(--spacing-md);
}

.service-card {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    padding: var(--spacing-md);
    border-radius: var(--radius-md);
    border: 1px solid var(--border-color);
}

.service-healthy {
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    border-color: color-mix(in srgb, var(--status-success) 30%, transparent);
}

.service-unhealthy {
    background: rgba(255, 165, 0, 0.1);
    border-color: rgba(255, 165, 0, 0.3);
}

.service-unavailable {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border-color: color-mix(in srgb, var(--status-error) 30%, transparent);
}

.service-icon {
    font-size: 1.5rem;
}

.service-info {
    display: flex;
    align-items: baseline;
    gap: var(--spacing-xs);
}

.service-name {
    font-weight: 600;
    color: var(--text-primary);
}

.service-port {
    font-family: var(--font-mono);
    font-size: 0.75rem;
    color: var(--text-muted);
}

.service-status {
    font-size: 0.8rem;
    color: var(--text-secondary);
    text-transform: capitalize;
}

.service-message {
    font-size: 0.7rem;
    color: var(--text-muted);
    word-break: break-all;
}

/* CRDT Status */
.crdt-status {
    background: rgba(0, 0, 0, 0.2);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
}

.crdt-status h4 {
    margin: 0 0 var(--spacing-md) 0;
    color: var(--cyber-cyan);
}

.crdt-info {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: var(--spacing-sm);
}

.crdt-item {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.crdt-key {
    font-size: 0.7rem;
    color: var(--text-muted);
    text-transform: uppercase;
}

.crdt-item code {
    font-family: var(--font-mono);
    color: var(--text-primary);
    font-size: 0.85rem;
}

/* API Reference */
.api-reference {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.reference-section {
    background: rgba(0, 0, 0, 0.2);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
}

.reference-section h4 {
    margin: 0 0 var(--spacing-sm) 0;
    color: var(--cyber-cyan);
}

.endpoint-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.endpoint {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-xs);
    background: rgba(0, 0, 0, 0.2);
    border-radius: var(--radius-sm);
    font-size: 0.8rem;
}

.method {
    padding: 2px 6px;
    border-radius: 3px;
    font-size: 0.65rem;
    font-weight: 600;
    min-width: 50px;
    text-align: center;
}

.method-get {
    background: rgba(0, 195, 255, 0.3);
    color: var(--cyber-cyan);
}

.method-post {
    background: color-mix(in srgb, var(--status-success) 30%, transparent);
    color: var(--status-success);
}

.method-delete {
    background: color-mix(in srgb, var(--status-error) 30%, transparent);
    color: var(--status-error);
}

.endpoint code {
    font-family: var(--font-mono);
    color: var(--patriot-gold);
    font-size: 0.75rem;
}

.endpoint .desc {
    color: var(--text-muted);
    margin-left: auto;
}

.auth-info {
    padding: var(--spacing-sm);
    background: rgba(0, 0, 0, 0.2);
    border-radius: var(--radius-sm);
}

.auth-info code {
    display: block;
    font-family: var(--font-mono);
    color: var(--patriot-gold);
    margin-bottom: var(--spacing-xs);
}

.auth-info p {
    margin: 0;
    font-size: 0.8rem;
    color: var(--text-muted);
}

.rate-limits-table {
    width: 100%;
    font-size: 0.8rem;
}

.rate-limits-table td {
    padding: var(--spacing-xs);
    border-bottom: 1px solid var(--border-color);
}

.rate-limits-table td:first-child {
    color: var(--text-secondary);
}

.rate-limits-table td:last-child {
    font-family: var(--font-mono);
    color: var(--patriot-gold);
}

/* Admin nav styling */
.nav-divider {
    color: var(--border-color);
    padding: 0 var(--spacing-xs);
    font-size: 0.8rem;
}

.admin-nav {
    border-color: var(--patriot-gold) !important;
}

.admin-nav:hover {
    background: color-mix(in srgb, var(--accent-gold) 10%, transparent) !important;
}

.admin-nav.active {
    background: color-mix(in srgb, var(--accent-gold) 20%, transparent) !important;
    color: var(--patriot-gold) !important;
}

/* Additional method badge for PUT */
.method-put {
    background: rgba(156, 39, 176, 0.2);
    color: #9c27b0;
}

/* Status badges for capabilities */
/* Canonical StatusBadge primitive (see ADR-020 +
   `crates/ui-app/src/components/status_badge.rs`). The chained
   `.status-badge.status-badge` selector gives this declaration
   double-class specificity (0,2,0) which beats single-class
   `.status-badge` rules later in the cascade — several
   panel-specific stylesheets (contract-management, opex,
   scoreboard, factory-observer) accidentally redeclared a
   plain `.status-badge` and were stomping the canonical pill
   shape onto every Home-row badge with their own padding /
   radius / font-size. Bumping specificity here is the
   minimal-blast-radius fix; future cleanup is to scope those
   panel-local declarations to their panel ancestors. */
.status-badge.status-badge {
    display: inline-flex;
    align-items: center;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.62rem;
    line-height: 1;
    letter-spacing: 0.5px;
    padding: 4px 8px;
    border-radius: var(--radius-sm);
    font-weight: 600;
    text-transform: uppercase;
    margin-left: auto;
}

.status-available {
    background: rgba(97, 218, 251, 0.2);
    color: var(--cyber-cyan);
}

.status-coming-soon {
    background: color-mix(in srgb, var(--status-warning) 20%, transparent);
    color: var(--status-warning);
}

.status-tbd {
    background: rgba(156, 163, 175, 0.2);
    color: #9ca3af;
}

/* Inventory notice for pending integrations */
.inventory-notice {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    background: color-mix(in srgb, var(--status-warning) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-warning) 30%, transparent);
    border-radius: var(--radius-sm);
    margin-top: var(--spacing-sm);
    font-size: 0.75rem;
}

.notice-badge {
    background: color-mix(in srgb, var(--status-warning) 30%, transparent);
    color: var(--status-warning);
    padding: 2px 6px;
    border-radius: var(--radius-sm);
    font-weight: 600;
    font-size: 0.65rem;
    text-transform: uppercase;
}

/* Action Buttons in Chat Messages */
.action-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 12px 20px;
    margin: 12px 4px;
    border: none;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
    background: linear-gradient(135deg, var(--cyber-cyan) 0%, var(--quantum-teal) 100%);
    color: var(--patriot-navy);
    box-shadow: 0 2px 8px rgba(0, 212, 255, 0.3);
}

.action-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 16px rgba(0, 212, 255, 0.5);
}

.action-btn:active {
    transform: translateY(0);
}

.action-btn.interactive {
    background: linear-gradient(135deg, var(--cyber-cyan) 0%, var(--quantum-teal) 100%);
}

.action-btn.approval {
    background: linear-gradient(135deg, #ffd700 0%, var(--status-warning) 100%);
}

.action-btn.notification {
    background: linear-gradient(135deg, #a8a8a8 0%, #888888 100%);
    cursor: default;
}

.action-icon {
    font-size: 18px;
}

.action-label {
    white-space: nowrap;
}

/* ============================================================================
   ESCROW PANEL
   ============================================================================ */

/* ============================================================================
   LOANS PANEL
   ============================================================================ */

.loans-panel {
    padding: var(--spacing-lg);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xl);
}

.loans-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.loan-card {
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: var(--spacing-md);
}

.loan-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--spacing-sm);
}

.loan-id {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 12px;
    color: var(--text-muted);
}

.loan-status {
    padding: 4px 8px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
}

.loan-provider {
    font-size: 13px;
    color: var(--text-secondary);
    margin-bottom: var(--spacing-md);
}

.provider-value {
    color: var(--primary-blue);
    font-weight: 600;
}

.loan-flow {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

.collateral-box,
.loan-box {
    flex: 1;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid var(--border-glow);
    border-radius: 6px;
    padding: var(--spacing-sm);
    text-align: center;
}

.box-label {
    font-size: 10px;
    text-transform: uppercase;
    color: var(--text-muted);
    margin-bottom: 4px;
}

.box-amount {
    font-size: 18px;
    font-weight: 700;
    color: var(--text-primary);
}

.box-asset {
    font-size: 12px;
    color: var(--primary-blue);
}

.flow-arrow {
    font-size: 24px;
    color: var(--status-success);
}

.loan-details {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.loans-summary {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--spacing-md);
}

/* ============================================================================
   MULTI-HOP TRACKER PANEL
   ============================================================================ */

.tracker-panel {
    padding: var(--spacing-lg);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.tracker-header {
    text-align: center;
    padding-bottom: var(--spacing-md);
    border-bottom: 1px solid var(--border-glow);
}

.txn-id {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 14px;
    color: var(--primary-blue);
}

.txn-description {
    font-size: 18px;
    font-weight: 600;
    color: var(--text-primary);
    margin-top: var(--spacing-xs);
}

.tracker-progress {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: 8px;
    padding: var(--spacing-md);
}

.progress-bar {
    height: 8px;
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: 4px;
    overflow: hidden;
}

.progress-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--primary-blue) 0%, var(--status-success) 100%);
    border-radius: 4px;
    transition: width 0.5s ease;
}

.progress-info {
    display: flex;
    justify-content: space-between;
    margin-top: var(--spacing-sm);
    font-size: 13px;
}

.progress-percent {
    color: var(--status-success);
    font-weight: 600;
}

.progress-eta {
    color: var(--text-muted);
}

.hops-container {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.hop-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
}

.hop-wrapper.hop-parallel {
    margin-left: var(--spacing-lg);
}

.parallel-branch-indicator {
    width: 100%;
    text-align: center;
    padding: var(--spacing-sm) 0;
}

.branch-label {
    font-size: 11px;
    text-transform: uppercase;
    color: var(--text-muted);
    letter-spacing: 1px;
}

.hop-card {
    width: 100%;
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: var(--spacing-md);
}

.hop-card.hop-complete {
    border-color: var(--status-success);
}

.hop-card.hop-progress {
    border-color: var(--primary-blue);
    box-shadow: 0 0 12px color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.hop-card.hop-manual {
    border-color: var(--status-warning);
}

.hop-card.hop-failed {
    border-color: var(--status-error);
}

.hop-card.hop-pending {
    opacity: 0.6;
}

.hop-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-sm);
}

.hop-icon {
    font-size: 18px;
}

.hop-complete .hop-icon { color: var(--status-success); }
.hop-progress .hop-icon { color: var(--primary-blue); }
.hop-manual .hop-icon { color: var(--status-warning); }
.hop-failed .hop-icon { color: var(--status-error); }
.hop-pending .hop-icon { color: var(--text-muted); }

.hop-name {
    font-weight: 600;
    color: var(--text-primary);
}

.hop-provider {
    font-size: 12px;
    color: var(--primary-blue);
    margin-left: auto;
}

.hop-flow {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    font-size: 13px;
    color: var(--text-secondary);
    margin-bottom: var(--spacing-sm);
}

.hop-arrow {
    color: var(--status-success);
}

.hop-timing {
    display: flex;
    justify-content: space-between;
    font-size: 11px;
    color: var(--text-muted);
}

.timing-live {
    color: var(--status-success);
    animation: pulse 1.5s ease-in-out infinite;
}

.hop-error {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border: 1px solid var(--status-error);
    border-radius: 4px;
    padding: var(--spacing-sm);
    margin-top: var(--spacing-sm);
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    font-size: 12px;
}

.error-icon {
    color: var(--status-error);
}

.error-text {
    color: var(--text-primary);
    flex: 1;
}

.support-link {
    color: var(--primary-blue);
    text-decoration: none;
}

.support-link:hover {
    text-decoration: underline;
}

.hop-connector {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: var(--spacing-xs) 0;
}

.connector-line {
    width: 2px;
    height: 16px;
    background: var(--border-glow);
}

.connector-arrow {
    font-size: 10px;
    color: var(--border-glow);
}

.tracker-actions {
    display: flex;
    gap: var(--spacing-md);
    justify-content: center;
    padding-top: var(--spacing-md);
    border-top: 1px solid var(--border-glow);
}

/* ============================================================================
   SHARED PANEL STYLES
   ============================================================================ */

.panel-section {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.section-title {
    font-size: 14px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
}

.detail-row {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
}

.detail-label {
    color: var(--text-muted);
}

.detail-value {
    color: var(--text-primary);
}

.summary-item {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: 6px;
    padding: var(--spacing-md);
    text-align: center;
}

.summary-label {
    font-size: 11px;
    text-transform: uppercase;
    color: var(--text-muted);
    display: block;
    margin-bottom: var(--spacing-xs);
}

.summary-value {
    font-size: 18px;
    font-weight: 700;
    color: var(--text-primary);
}

/* Status indicators shared across panels */
.status-active {
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    color: var(--status-success);
}

.status-pending {
    background: color-mix(in srgb, var(--status-warning) 20%, transparent);
    color: var(--status-warning);
}

.status-complete {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    color: var(--primary-blue);
}

.status-error {
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
    color: var(--status-error);
}

/* ============================================================================
   PRIMITIVE COMPONENTS — ADR-020
   See crates/ui-app/src/components/ for the Rust API. Selector names are
   the contract; if you change one here, change the matching `view!` block
   in `components/{section,key_value_row,money_text,status_badge}.rs`.
   ============================================================================ */

/* --- <Section/> ---------------------------------------------------------- */
/*
 * Layered on top of the legacy `.panel-section` rule above (which sets the
 * outer flex column). The `panel-section-*` classes below are introduced by
 * the <Section/> primitive and only apply when present.
 */

.panel-section-header {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.panel-section-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--text-secondary);
}

.panel-section-subtitle {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.74rem;
    line-height: 1.5;
    color: var(--text-muted);
}

.panel-section-body {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

/* --- <KeyValueRow/> ------------------------------------------------------ */

.kv-row {
    display: grid;
    grid-template-columns: minmax(8rem, max-content) 1fr;
    column-gap: var(--spacing-md);
    align-items: baseline;
    font-size: 0.8rem;
}

.kv-row-label {
    color: var(--text-muted);
    font-family: 'IBM Plex Mono', monospace;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: 0.68rem;
}

.kv-row-value {
    color: var(--text-primary);
    word-break: break-word;
}

.kv-row-value--mono {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
}

.kv-row-value--muted {
    color: var(--text-muted);
}

.kv-row-value--emphasis {
    color: var(--anviz-accent-primary);
    font-weight: 700;
}

/* --- <MoneyText/> -------------------------------------------------------- */

.money-text {
    font-family: 'IBM Plex Mono', monospace;
    font-variant-numeric: tabular-nums;
    color: var(--text-primary);
}

/* --- <StatusBadge/> ------------------------------------------------------ */
/*
 * Uses BEM modifiers (`status-badge--active`) deliberately to avoid
 * collisions with the legacy `.status-badge.status-running` selectors that
 * still exist in older panels. New code paths must use the modifier form.
 */

.status-badge--active {
    background: rgba(0, 204, 106, 0.18);
    color: var(--status-success);
    border: 1px solid color-mix(in srgb, var(--status-success) 35%, transparent);
}

.status-badge--pending {
    background: color-mix(in srgb, var(--accent-gold) 18%, transparent);
    color: var(--status-warning);
    border: 1px solid color-mix(in srgb, var(--status-warning) 35%, transparent);
}

.status-badge--complete {
    background: color-mix(in srgb, var(--primary-blue) 22%, transparent);
    color: var(--primary-blue);
    border: 1px solid color-mix(in srgb, var(--primary-blue) 40%, transparent);
}

.status-badge--warning {
    background: color-mix(in srgb, var(--accent-gold) 22%, transparent);
    color: var(--accent-gold);
    border: 1px solid color-mix(in srgb, var(--accent-gold) 40%, transparent);
}

.status-badge--error {
    background: color-mix(in srgb, var(--status-error) 18%, transparent);
    color: var(--status-error);
    border: 1px solid color-mix(in srgb, var(--status-error) 35%, transparent);
}

.status-badge--info {
    background: rgba(90, 143, 212, 0.18);
    color: var(--status-info);
    border: 1px solid color-mix(in srgb, var(--status-info) 35%, transparent);
}

.status-badge--neutral {
    background: rgba(160, 160, 176, 0.14);
    color: var(--text-secondary);
    border: 1px solid rgba(160, 160, 176, 0.3);
}

/* ============================================================================
   1KONTO INVENTORY PANEL
   ============================================================================ */

.onekonto-inventory .inventory-header {
    background: linear-gradient(135deg, #1a1a2e 0%, #2d2d44 100%);
}

.onekonto-inventory .provider-logo {
    font-size: 28px;
    font-weight: 900;
    color: #7b68ee;
}

.integration-notes {
    background: rgba(123, 104, 238, 0.1);
    border: 1px solid rgba(123, 104, 238, 0.3);
    border-radius: 8px;
    padding: var(--spacing-md);
}

.integration-notes ul {
    margin: 0;
    padding-left: var(--spacing-lg);
}

.integration-notes li {
    color: var(--text-secondary);
    font-size: 13px;
    margin-bottom: var(--spacing-xs);
}

/* ============================================================================
   ACCOUNT MANAGEMENT PANEL
   ============================================================================ */

.account-management-panel {
    background: var(--panel-bg);
}

.account-management-panel .inventory-header {
    background: linear-gradient(135deg, #1a2744 0%, #0d1929 100%);
    border-bottom: 2px solid var(--primary-blue);
}

/* Overview Tab */
.overview-tab {
    padding: var(--spacing-md);
}

.account-overview {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.overview-section {
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
}

.overview-section h3 {
    font-size: 14px;
    color: var(--text-accent);
    margin-bottom: var(--spacing-md);
    text-transform: uppercase;
    letter-spacing: 1px;
}

.info-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--spacing-md);
}

.info-item {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.info-label {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
}

.info-value {
    font-size: 13px;
    color: var(--text-primary);
}

.info-value.selectable {
    user-select: all;
    cursor: pointer;
}

/* TSS Status */
.tss-status {
    display: flex;
    align-items: center;
    gap: var(--spacing-lg);
}

.tss-threshold {
    display: flex;
    flex-direction: column;
    align-items: center;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    padding: var(--spacing-md);
    border-radius: var(--radius-md);
    min-width: 100px;
}

.threshold-value {
    font-size: 24px;
    font-weight: 700;
    color: var(--primary-blue);
}

.threshold-label {
    font-size: 10px;
    color: var(--text-muted);
    text-transform: uppercase;
}

.tss-info {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.tss-key, .tss-parties {
    font-size: 12px;
    color: var(--text-secondary);
}

/* Devices List */
.devices-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-md);
}

.device-item {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    background: rgba(0, 0, 0, 0.3);
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.device-icon {
    font-size: 20px;
}

.device-info {
    flex: 1;
    display: flex;
    flex-direction: column;
}

.device-name {
    font-size: 13px;
    color: var(--text-primary);
}

.device-registered {
    font-size: 11px;
    color: var(--text-muted);
}

.device-status {
    font-size: 11px;
    padding: 2px 8px;
    border-radius: var(--radius-pill);
}

.device-status.active {
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    color: var(--status-success);
}

.btn-add-device {
    background: linear-gradient(135deg, var(--primary-blue) 0%, var(--secondary-blue) 100%);
    color: white;
    border: none;
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    transition: all var(--duration-fast);
}

.btn-add-device:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-glow-blue);
}

.device-hint {
    font-size: 11px;
    color: var(--text-muted);
    margin-top: var(--spacing-xs);
}

/* Stats Grid */
.stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--spacing-md);
}

.stat-card {
    background: rgba(0, 0, 0, 0.3);
    padding: var(--spacing-md);
    border-radius: var(--radius-sm);
    text-align: center;
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.stat-value {
    font-size: 24px;
    font-weight: 700;
    color: var(--primary-blue);
    display: block;
}

.stat-label {
    font-size: 10px;
    color: var(--text-muted);
    text-transform: uppercase;
}

/* Whitelist Tab */
.whitelist-tab {
    padding: var(--spacing-md);
}

.whitelist-header, .tss-header, .addresses-header, .linked-header, .documents-header {
    margin-bottom: var(--spacing-lg);
}

.whitelist-header h3, .tss-header h3, .addresses-header h3, .linked-header h3, .documents-header h3 {
    font-size: 16px;
    color: var(--text-primary);
    margin-bottom: var(--spacing-xs);
}

.whitelist-desc, .tss-desc, .addresses-desc, .linked-desc, .documents-desc {
    font-size: 12px;
    color: var(--text-secondary);
}

.add-whitelist-form {
    display: flex;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-lg);
}

.add-whitelist-form input {
    flex: 1;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    color: var(--text-primary);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 13px;
}

.add-whitelist-form input:focus {
    outline: none;
    border-color: var(--primary-blue);
    box-shadow: 0 0 10px color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.btn-invite {
    background: linear-gradient(135deg, var(--primary-blue) 0%, var(--secondary-blue) 100%);
    color: white;
    border: none;
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    white-space: nowrap;
}

.btn-invite:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.whitelist-entries {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-lg);
}

.whitelist-entry {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    background: rgba(0, 0, 0, 0.3);
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.entry-email {
    flex: 1;
    font-size: 13px;
    color: var(--text-primary);
}

.entry-status {
    font-size: 11px;
    padding: 2px 8px;
    border-radius: var(--radius-pill);
}

.status-accepted {
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    color: var(--status-success);
}

.status-pending {
    background: color-mix(in srgb, var(--status-warning) 20%, transparent);
    color: var(--status-warning);
}

.status-expired {
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
    color: var(--status-error);
}

.entry-date {
    font-size: 11px;
    color: var(--text-muted);
}

/* Empty State */
.empty-state {
    text-align: center;
    padding: var(--spacing-xl);
    color: var(--text-muted);
}

.empty-icon {
    font-size: 48px;
    display: block;
    margin-bottom: var(--spacing-md);
    opacity: 0.5;
}

.empty-hint {
    font-size: 12px;
    color: var(--text-muted);
    margin-top: var(--spacing-sm);
}

/* Info Box */
.info-box {
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    margin-top: var(--spacing-lg);
}

.info-box h4 {
    font-size: 13px;
    color: var(--text-accent);
    margin-bottom: var(--spacing-sm);
}

.info-box ol, .info-box ul {
    margin: 0;
    padding-left: var(--spacing-lg);
}

.info-box li {
    font-size: 12px;
    color: var(--text-secondary);
    margin-bottom: var(--spacing-xs);
}

/* TSS Tab */
.tss-tab {
    padding: var(--spacing-md);
}

.tss-content {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.tss-scheme-card {
    background: linear-gradient(135deg, color-mix(in srgb, var(--text-accent) 10%, transparent) 0%, rgba(0, 82, 204, 0.1) 100%);
    border: 2px solid var(--primary-blue);
    border-radius: var(--radius-lg);
    padding: var(--spacing-lg);
    text-align: center;
}

.scheme-visual {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-sm);
}

.scheme-threshold, .scheme-total {
    font-size: 48px;
    font-weight: 900;
    color: var(--primary-blue);
}

.scheme-divider {
    font-size: 24px;
    color: var(--text-muted);
}

.scheme-label {
    font-size: 14px;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 2px;
}

.scheme-desc {
    font-size: 12px;
    color: var(--text-muted);
    margin-top: var(--spacing-sm);
}

.tss-parties {
    margin-top: var(--spacing-lg);
}

.tss-parties h4 {
    font-size: 13px;
    color: var(--text-accent);
    margin-bottom: var(--spacing-md);
}

.party-card {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    background: rgba(0, 0, 0, 0.3);
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    margin-bottom: var(--spacing-sm);
}

.party-icon {
    font-size: 20px;
}

.party-info {
    flex: 1;
    display: flex;
    flex-direction: column;
}

.party-label {
    font-size: 13px;
    color: var(--text-primary);
}

.party-type {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: capitalize;
}

.party-status {
    font-size: 11px;
    padding: 2px 8px;
    border-radius: var(--radius-pill);
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    color: var(--status-success);
    text-transform: capitalize;
}

.party-pending .party-status {
    background: color-mix(in srgb, var(--status-warning) 20%, transparent);
    color: var(--status-warning);
}

.party-revoked .party-status {
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
    color: var(--status-error);
}

.tss-key-info {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--spacing-md);
    background: rgba(0, 0, 0, 0.2);
    padding: var(--spacing-md);
    border-radius: var(--radius-sm);
}

.key-item {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.key-label {
    font-size: 10px;
    color: var(--text-muted);
    text-transform: uppercase;
}

.key-item code, .key-item span:last-child {
    font-size: 12px;
    color: var(--text-secondary);
}

.tss-actions {
    display: flex;
    gap: var(--spacing-md);
}

.btn-rotate, .btn-upgrade {
    flex: 1;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    color: var(--primary-blue);
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-family: 'Orbitron', monospace;
    font-size: 12px;
}

.btn-rotate:disabled, .btn-upgrade:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.upgrade-path {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-md);
    margin-top: var(--spacing-md);
}

.path-step {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm) var(--spacing-md);
    background: rgba(0, 0, 0, 0.3);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.path-step.current {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.step-scheme {
    font-size: 16px;
    font-weight: 700;
    color: var(--primary-blue);
}

.step-label {
    font-size: 10px;
    color: var(--text-muted);
}

.path-arrow {
    color: var(--text-muted);
    font-size: 16px;
}

/* Addresses Tab */
.addresses-tab {
    padding: var(--spacing-md);
}

.addresses-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.address-card {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
}

.address-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-sm);
}

.chain-icon {
    font-size: 20px;
}

.chain-name {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
}

.network-badge {
    font-size: 10px;
    padding: 2px 8px;
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    color: var(--primary-blue);
    border-radius: var(--radius-pill);
    text-transform: uppercase;
}

.address-value {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.address-text {
    flex: 1;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 12px;
    color: var(--text-secondary);
    word-break: break-all;
    background: rgba(0, 0, 0, 0.3);
    padding: var(--spacing-sm);
    border-radius: var(--radius-sm);
}

.btn-copy {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    color: var(--primary-blue);
    padding: var(--spacing-xs) var(--spacing-sm);
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 14px;
    transition: all var(--duration-fast);
}

.btn-copy:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.btn-copy.copied {
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    border-color: var(--status-success);
}

/* Linked Accounts Tab - Graph View */
.linked-tab {
    padding: var(--spacing-md);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.linked-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: var(--spacing-md);
    flex-wrap: wrap;
}

.linked-header .header-left h3 {
    margin: 0 0 var(--spacing-xs) 0;
    color: var(--text-primary);
}

.linked-header .linked-desc {
    margin: 0;
    font-size: 0.85rem;
    color: var(--text-muted);
}

.header-controls {
    display: flex;
    gap: var(--spacing-sm);
    align-items: center;
}

.view-toggle {
    display: flex;
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-sm);
    overflow: hidden;
}

.view-toggle .toggle-btn {
    background: transparent;
    border: none;
    padding: var(--spacing-xs) var(--spacing-sm);
    color: var(--text-secondary);
    font-size: 0.8rem;
    cursor: pointer;
    transition: all 0.15s ease;
}

.view-toggle .toggle-btn.active {
    background: var(--primary-blue);
    color: var(--dark-bg);
}

.view-toggle .toggle-btn:hover:not(.active) {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.add-account-btn {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-sm);
    padding: var(--spacing-xs) var(--spacing-md);
    color: var(--primary-blue);
    font-size: 0.85rem;
    cursor: pointer;
    transition: all 0.15s ease;
}

.add-account-btn:hover {
    background: var(--primary-blue);
    color: var(--dark-bg);
}

.reset-btn {
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    border-radius: var(--radius-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    color: color-mix(in srgb, var(--status-error) 80%, transparent);
    font-size: 0.8rem;
    cursor: pointer;
    transition: all 0.15s ease;
}

.reset-btn:hover {
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
    border-color: #f44;
    color: #f44;
}

/* Graph Container */
.account-graph-container {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
}

.account-graph-svg {
    display: block;
}

.graph-node:hover circle {
    filter: brightness(1.2);
}

.graph-legend {
    display: flex;
    gap: var(--spacing-md);
    margin-top: var(--spacing-sm);
    padding-top: var(--spacing-sm);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.legend-item {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    font-size: 0.75rem;
    color: var(--text-muted);
}

.legend-dot {
    width: 12px;
    height: 12px;
    border-radius: 50%;
}

.legend-dot.universal { background: #00a8ff; }
.legend-dot.personal { background: var(--status-success); }
.legend-dot.sub { background: #ff6b35; }

/* List/Tree View */
.account-list-container {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
}

.tree-node {
    margin-bottom: var(--spacing-xs);
}

.tree-node-content {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: background 0.15s ease;
}

.tree-node-content:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.tree-node-content.selected {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border: 1px solid var(--primary-blue);
}

.node-icon {
    font-size: 1.2rem;
}

.node-label {
    font-weight: 500;
    color: var(--text-primary);
}

.node-id {
    font-size: 0.75rem;
    color: var(--text-muted);
    flex: 1;
}

.node-kyc {
    font-size: 0.85rem;
}

/* Selected Node Details Panel */
.node-details-panel {
    background: rgba(0, 0, 0, 0.4);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
}

.details-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--spacing-md);
    padding-bottom: var(--spacing-sm);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.details-header h4 {
    margin: 0;
    color: var(--primary-blue);
}

.details-header .close-btn {
    background: none;
    border: none;
    color: var(--text-muted);
    font-size: 1.2rem;
    cursor: pointer;
}

.details-content {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.detail-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.detail-label {
    color: var(--text-muted);
    font-size: 0.85rem;
}

.detail-value {
    color: var(--text-primary);
    font-size: 0.85rem;
}

.detail-value.kyc-verified { color: var(--status-success); }
.detail-value.kyc-pending { color: var(--status-warning); }
.detail-value.kyc-none { color: var(--text-muted); }

.account-type-badge {
    padding: 2px 8px;
    border-radius: var(--radius-pill);
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    text-transform: capitalize;
}

.detail-actions {
    display: flex;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-md);
    padding-top: var(--spacing-md);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.action-btn {
    flex: 1;
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-sm);
    color: var(--primary-blue);
    font-size: 0.8rem;
    cursor: pointer;
    transition: all 0.15s ease;
}

.action-btn:hover {
    background: var(--primary-blue);
    color: var(--dark-bg);
}

.action-btn.secondary {
    border-color: color-mix(in srgb, var(--text-accent) 30%, transparent);
    color: var(--text-secondary);
}

.action-btn.danger {
    width: 100%;
    margin-top: var(--spacing-sm);
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border-color: #f44;
    color: #f44;
}

.action-btn.danger:hover {
    background: #f44;
    color: white;
}

/* Modal readonly field */
.readonly-field {
    display: block;
    padding: var(--spacing-sm);
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: var(--radius-sm);
    color: var(--text-muted);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.9rem;
}

/* Account Selector in Panel Header */
.account-selector {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-sm);
}

.account-selector label {
    color: var(--text-secondary);
    font-size: 0.85rem;
}

.account-selector select {
    flex: 1;
    padding: var(--spacing-xs) var(--spacing-sm);
    background: rgba(0, 0, 0, 0.4);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.85rem;
    cursor: pointer;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2300a8ff' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right var(--spacing-sm) center;
    padding-right: calc(var(--spacing-md) + 16px);
    max-width: 300px;
}

.account-selector select:focus {
    border-color: var(--primary-blue);
    box-shadow: 0 0 8px color-mix(in srgb, var(--text-accent) 30%, transparent);
    outline: none;
}

.access-warning {
    margin-top: var(--spacing-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    background: color-mix(in srgb, var(--status-warning) 15%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-warning) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--status-warning);
    font-size: 0.8rem;
}

/* Contextual Tab Styles */
.contextual .access-status {
    padding: var(--spacing-md);
    border-radius: var(--radius-sm);
    text-align: center;
}

.contextual .access-status.granted {
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 30%, transparent);
    color: var(--status-success);
}

.contextual .access-status.denied {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    color: var(--status-error);
}

/* TSS Tab Contextual */
.tss-tab.contextual .tss-diagram {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-lg);
    text-align: center;
    margin-bottom: var(--spacing-md);
}

.tss-tab.contextual .threshold-display {
    margin-bottom: var(--spacing-sm);
}

.tss-tab.contextual .threshold-value {
    font-size: 3rem;
    font-weight: 900;
    color: var(--primary-blue);
    text-shadow: 0 0 20px color-mix(in srgb, var(--text-accent) 50%, transparent);
}

.tss-tab.contextual .threshold-desc {
    color: var(--text-muted);
    margin: 0;
}

.tss-tab.contextual .parties-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-md);
}

.tss-tab.contextual .party-card {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    padding: var(--spacing-sm) var(--spacing-md);
}

.tss-tab.contextual .party-card.is-you {
    border-color: var(--status-success);
    background: color-mix(in srgb, var(--status-success) 5%, transparent);
}

.tss-tab.contextual .party-icon {
    font-size: 1.5rem;
}

.tss-tab.contextual .party-info {
    flex: 1;
}

.tss-tab.contextual .party-label {
    display: block;
    color: var(--text-primary);
    font-weight: 500;
}

.tss-tab.contextual .party-id {
    font-size: 0.75rem;
    color: var(--text-muted);
    font-family: 'IBM Plex Mono', monospace;
}

.tss-tab.contextual .you-badge {
    background: var(--status-success);
    color: var(--dark-bg);
    padding: 2px 8px;
    border-radius: var(--radius-pill);
    font-size: 0.7rem;
    font-weight: 600;
}

.tss-tab.contextual .tss-meta {
    font-size: 0.8rem;
    color: var(--text-muted);
    margin-bottom: var(--spacing-md);
}

.tss-tab.contextual .tss-actions {
    display: flex;
    gap: var(--spacing-sm);
}

/* Addresses Tab Contextual */
.addresses-tab.contextual .addresses-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.addresses-tab.contextual .address-card {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    padding: var(--spacing-sm) var(--spacing-md);
}

.addresses-tab.contextual .chain-info {
    min-width: 100px;
}

.addresses-tab.contextual .chain-name {
    display: block;
    color: var(--text-accent);
    font-weight: 500;
}

.addresses-tab.contextual .network-name {
    font-size: 0.75rem;
    color: var(--text-muted);
}

.addresses-tab.contextual .address-value {
    flex: 1;
    font-size: 0.8rem;
    color: var(--text-primary);
    overflow: hidden;
    text-overflow: ellipsis;
}

.addresses-tab.contextual .copy-btn {
    background: none;
    border: none;
    font-size: 1rem;
    cursor: pointer;
    opacity: 0.6;
    transition: opacity 0.15s;
}

.addresses-tab.contextual .copy-btn:hover {
    opacity: 1;
}

/* Action button primary variant */
.action-btn.primary {
    background: var(--primary-blue);
    border-color: var(--primary-blue);
    color: var(--dark-bg);
}

.action-btn.primary:hover {
    filter: brightness(1.1);
}

/* Modal Styles */
.modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.7);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 2000;
}

.modal-content {
    background: var(--modal-bg);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-lg);
    width: 90%;
    max-width: 480px;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5), var(--shadow-glow-blue);
}

.modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-md);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.modal-header h3 {
    margin: 0;
    color: var(--text-primary);
}

.modal-header .close-btn {
    background: none;
    border: none;
    color: var(--text-muted);
    font-size: 1.5rem;
    cursor: pointer;
}

.modal-tabs {
    display: flex;
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.modal-tab {
    flex: 1;
    padding: var(--spacing-sm) var(--spacing-md);
    background: transparent;
    border: none;
    color: var(--text-secondary);
    cursor: pointer;
    transition: all 0.15s ease;
}

.modal-tab.active {
    color: var(--primary-blue);
    border-bottom: 2px solid var(--primary-blue);
}

.modal-body {
    padding: var(--spacing-lg);
}

.modal-body .form-group {
    margin-bottom: var(--spacing-md);
}

.modal-body .form-group label {
    display: block;
    margin-bottom: var(--spacing-xs);
    color: var(--text-secondary);
    font-size: 0.85rem;
}

.modal-body .form-group input,
.modal-body .form-group select,
.modal-body .form-group textarea {
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    background: rgba(0, 0, 0, 0.4);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.9rem;
    outline: none;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.modal-body .form-group input:focus,
.modal-body .form-group select:focus,
.modal-body .form-group textarea:focus {
    border-color: var(--primary-blue);
    box-shadow: 0 0 8px color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.modal-body .form-group input::placeholder {
    color: var(--text-muted);
}

.modal-body .form-group select {
    cursor: pointer;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2300a8ff' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right var(--spacing-sm) center;
    padding-right: calc(var(--spacing-md) + 16px);
}

.modal-body .form-group select option {
    background: var(--dark-bg);
    color: var(--text-primary);
}

.modal-footer {
    display: flex;
    justify-content: flex-end;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.btn-secondary {
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    color: var(--text-secondary);
    cursor: pointer;
}

.btn-secondary:hover {
    border-color: var(--primary-blue);
    color: var(--text-primary);
}

.btn-primary {
    background: var(--primary-blue);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    color: var(--dark-bg);
    font-weight: 500;
    cursor: pointer;
}

.btn-primary:hover {
    filter: brightness(1.1);
}

/* Legacy - keep for backwards compat */
.linked-account-card {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    padding: var(--spacing-md);
    margin-bottom: var(--spacing-sm);
}

.account-info {
    flex: 1;
}

.account-email {
    font-size: 13px;
    color: var(--text-primary);
    display: block;
}

.account-id {
    font-size: 11px;
    color: var(--text-muted);
}

.kyc-status {
    font-size: 11px;
    padding: 2px 8px;
    border-radius: var(--radius-pill);
}

.kyc-verified {
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    color: var(--status-success);
}

.kyc-pending {
    background: color-mix(in srgb, var(--status-warning) 20%, transparent);
    color: var(--status-warning);
}

.kyc-none {
    background: rgba(107, 124, 147, 0.2);
    color: var(--text-muted);
}

.linked-date {
    font-size: 11px;
    color: var(--text-muted);
}

/* Documents Tab */
.documents-tab {
    padding: var(--spacing-md);
}

.document-card {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    padding: var(--spacing-md);
    margin-bottom: var(--spacing-sm);
}

.doc-icon {
    font-size: 24px;
}

.doc-info {
    flex: 1;
}

.doc-type {
    font-size: 13px;
    color: var(--text-primary);
    display: block;
}

.doc-filename {
    font-size: 11px;
    color: var(--text-muted);
}

.doc-status {
    font-size: 11px;
    padding: 2px 8px;
    border-radius: var(--radius-pill);
}

.doc-verified .doc-status {
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    color: var(--status-success);
}

.doc-pending .doc-status {
    background: color-mix(in srgb, var(--status-warning) 20%, transparent);
    color: var(--status-warning);
}

.doc-rejected .doc-status {
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
    color: var(--status-error);
}

.doc-date {
    font-size: 11px;
    color: var(--text-muted);
}

.required-docs {
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    margin-top: var(--spacing-lg);
}

.required-docs h4 {
    font-size: 13px;
    color: var(--text-accent);
    margin-bottom: var(--spacing-sm);
}

.required-docs ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.required-docs li {
    font-size: 12px;
    padding: var(--spacing-xs) 0;
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.required-docs li::before {
    content: '☐';
    color: var(--text-muted);
}

.doc-required {
    color: var(--text-primary);
}

.doc-optional {
    color: var(--text-muted);
}

.doc-optional::after {
    content: ' (optional)';
    font-size: 10px;
    color: var(--text-muted);
}

/* ============================================================================
   EXPORT & INDEPENDENCE TAB
   ============================================================================ */

.export-independence-tab {
    padding: var(--spacing-md);
}

.export-content {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.export-section {
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-lg);
}

.export-section h3 {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-accent);
    margin-bottom: var(--spacing-md);
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.section-desc {
    font-size: 12px;
    color: var(--text-secondary);
    margin-bottom: var(--spacing-md);
}

/* Account Status Section */
.account-status-section .status-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

.status-item {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.status-label {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
}

.status-value {
    font-size: 13px;
    color: var(--text-primary);
}

.account-type-badge {
    display: inline-block;
    padding: 2px 8px;
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-accent);
    font-size: 11px;
}

/* Independence Action */
.independence-action {
    margin-top: var(--spacing-md);
    padding-top: var(--spacing-md);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.independence-btn {
    background: linear-gradient(135deg, var(--accent-red), var(--accent-red-dark));
    color: white;
    border: none;
    padding: var(--spacing-sm) var(--spacing-lg);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    font-weight: 600;
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: all var(--duration-fast);
    box-shadow: 0 0 15px color-mix(in srgb, var(--status-error) 30%, transparent);
}

.independence-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 0 25px color-mix(in srgb, var(--status-error) 50%, transparent);
}

.independence-hint {
    font-size: 11px;
    color: var(--text-muted);
    margin-top: var(--spacing-sm);
}

/* Export Cards */
.export-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--spacing-md);
}

.export-card {
    background: rgba(0, 0, 0, 0.2);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    text-align: center;
    transition: all var(--duration-fast);
}

.export-card:hover {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
}

.export-card-icon {
    font-size: 28px;
    margin-bottom: var(--spacing-sm);
}

.export-card h4 {
    font-size: 13px;
    color: var(--text-primary);
    margin-bottom: var(--spacing-xs);
}

.export-card p {
    font-size: 11px;
    color: var(--text-muted);
    margin-bottom: var(--spacing-md);
    line-height: 1.4;
}

.export-btn {
    width: 100%;
    background: linear-gradient(135deg, var(--primary-blue), var(--secondary-blue));
    color: white;
    border: none;
    padding: var(--spacing-sm) var(--spacing-md);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    font-weight: 600;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all var(--duration-fast);
}

.export-btn:hover:not(:disabled) {
    transform: translateY(-1px);
    box-shadow: var(--shadow-glow-blue);
}

.export-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* Exported Data Section */
.exported-data-section {
    border-color: var(--status-success);
    background: color-mix(in srgb, var(--status-success) 3%, transparent);
}

.exported-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--spacing-md);
}

.countdown-badge {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    background: color-mix(in srgb, var(--status-warning) 15%, transparent);
    border: 1px solid var(--status-warning);
    border-radius: var(--radius-pill);
    padding: 4px 12px;
}

.countdown-icon {
    font-size: 14px;
}

.countdown-time {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 14px;
    font-weight: 600;
    color: var(--status-warning);
}

.exported-content {
    background: rgba(0, 0, 0, 0.3);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

/* Seed Phrase Display */
.seed-phrase-display {
    text-align: center;
}

.seed-words {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-md);
}

.seed-word {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    padding: var(--spacing-sm);
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.word-num {
    font-size: 10px;
    color: var(--text-muted);
    min-width: 20px;
}

.word-text {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 12px;
    color: var(--text-primary);
}

.derivation-path {
    font-size: 11px;
    color: var(--text-muted);
}

.derivation-path code {
    background: rgba(0, 0, 0, 0.3);
    padding: 2px 6px;
    border-radius: 3px;
    font-family: 'IBM Plex Mono', monospace;
    color: var(--text-secondary);
}

/* Private Keys Display */
.private-keys-display {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.key-entry {
    background: rgba(0, 0, 0, 0.2);
    border-radius: var(--radius-sm);
    padding: var(--spacing-md);
}

.key-header {
    display: flex;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-sm);
}

.key-chain {
    background: var(--primary-blue);
    color: white;
    padding: 2px 8px;
    border-radius: var(--radius-sm);
    font-size: 10px;
    font-weight: 600;
}

.key-network {
    color: var(--text-muted);
    font-size: 11px;
}

.key-address, .key-private {
    font-size: 11px;
    margin-bottom: var(--spacing-xs);
}

.addr-label, .priv-label {
    color: var(--text-muted);
}

.key-address code, .key-private code {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 11px;
    word-break: break-all;
}

.private-key {
    color: var(--status-warning);
}

/* Hardware Instructions */
.hardware-instructions-display h4 {
    font-size: 13px;
    color: var(--text-primary);
    margin-bottom: var(--spacing-md);
}

.instructions-list {
    list-style: none;
    counter-reset: instruction;
    padding: 0;
}

.instructions-list li {
    counter-increment: instruction;
    padding: var(--spacing-sm) 0;
    padding-left: 30px;
    position: relative;
    font-size: 12px;
    color: var(--text-secondary);
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.instructions-list li:last-child {
    border-bottom: none;
}

.instructions-list li::before {
    content: counter(instruction);
    position: absolute;
    left: 0;
    width: 20px;
    height: 20px;
    background: var(--primary-blue);
    color: white;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 10px;
    font-weight: 600;
}

/* TSS Shares Display */
.tss-shares-display .tss-info {
    font-size: 12px;
    color: var(--text-accent);
    margin-bottom: var(--spacing-md);
    text-align: center;
}

.share-entry {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-sm);
    background: rgba(0, 0, 0, 0.2);
    border-radius: var(--radius-sm);
    margin-bottom: var(--spacing-sm);
}

.share-index {
    font-size: 11px;
    color: var(--text-muted);
    min-width: 60px;
}

.share-data {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 11px;
    color: var(--text-secondary);
    word-break: break-all;
}

/* Exported Actions */
.exported-actions {
    display: flex;
    gap: var(--spacing-sm);
    justify-content: center;
    margin-bottom: var(--spacing-md);
}

.copy-btn, .done-btn {
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.copy-btn {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid var(--primary-blue);
    color: var(--text-accent);
}

.copy-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.done-btn {
    background: linear-gradient(135deg, var(--status-success), var(--status-success));
    border: none;
    color: white;
}

.done-btn:hover {
    box-shadow: 0 0 15px color-mix(in srgb, var(--status-success) 40%, transparent);
}

/* Export Warning */
.export-warning {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--status-warning) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-warning) 30%, transparent);
    border-radius: var(--radius-sm);
    font-size: 11px;
    color: var(--status-warning);
}

.warning-icon {
    font-size: 14px;
}

/* Security Notice Section */
.security-notice-section {
    border-color: var(--status-warning);
    background: color-mix(in srgb, var(--status-warning) 3%, transparent);
}

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

.security-list li {
    font-size: 12px;
    color: var(--text-secondary);
    padding: var(--spacing-sm) 0;
    padding-left: 24px;
    position: relative;
}

.security-list li::before {
    content: '•';
    position: absolute;
    left: 8px;
    color: var(--status-warning);
}

/* Export History Section */
.export-history-section {
    border-color: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.empty-history {
    text-align: center;
    padding: var(--spacing-lg);
    color: var(--text-muted);
    font-size: 12px;
}

.history-list {
    max-height: 200px;
    overflow-y: auto;
}

.history-entry {
    display: flex;
    gap: var(--spacing-md);
    padding: var(--spacing-sm);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    font-size: 12px;
}

.history-entry:last-child {
    border-bottom: none;
}

.entry-date {
    color: var(--text-muted);
    min-width: 120px;
}

.entry-type {
    color: var(--text-primary);
    flex: 1;
}

.entry-method {
    color: var(--text-muted);
}

/* Independence Modal */
.independence-modal {
    max-width: 500px;
}

.independence-intro {
    font-size: 13px;
    color: var(--text-secondary);
    margin-bottom: var(--spacing-lg);
}

.independence-effects {
    background: color-mix(in srgb, var(--status-success) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 20%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
}

.independence-effects h4 {
    font-size: 12px;
    color: var(--status-success);
    margin-bottom: var(--spacing-sm);
}

.independence-effects ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.independence-effects li {
    font-size: 12px;
    color: var(--text-secondary);
    padding: var(--spacing-xs) 0;
}

.independence-options {
    margin-bottom: var(--spacing-lg);
}

.option-checkbox {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    font-size: 12px;
    color: var(--text-secondary);
    cursor: pointer;
}

.option-checkbox input[type="checkbox"] {
    width: 16px;
    height: 16px;
    accent-color: var(--primary-blue);
}

.confirmation-input {
    margin-bottom: var(--spacing-md);
}

.confirmation-input label {
    display: block;
    font-size: 12px;
    color: var(--text-secondary);
    margin-bottom: var(--spacing-sm);
}

.confirmation-input strong {
    color: var(--text-accent);
}

.confirmation-input input {
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 14px;
    text-align: center;
    letter-spacing: 2px;
}

.confirmation-input input:focus {
    outline: none;
    border-color: var(--primary-blue);
    box-shadow: 0 0 10px color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.btn-independence {
    background: linear-gradient(135deg, var(--accent-red), var(--accent-red-dark));
}

.btn-independence:hover:not(:disabled) {
    box-shadow: var(--shadow-glow-red);
}

.btn-independence:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* Responsive for export cards */
@media (max-width: 600px) {
    .export-cards {
        grid-template-columns: 1fr;
    }
    
    .seed-words {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .account-status-section .status-grid {
        grid-template-columns: 1fr;
    }
}

/* ============================================================================
   CONTRACT MANAGEMENT PANEL
   ============================================================================ */

.contract-management-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.contract-management-panel .header-subtitle {
    font-size: 12px;
    color: var(--text-muted);
    margin-top: var(--spacing-xs);
}

/* Toolbar */
.contracts-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    gap: var(--spacing-md);
    flex-wrap: wrap;
}

.toolbar-left, .toolbar-right {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
}

.filter-group {
    display: flex;
    gap: var(--spacing-sm);
}

.filter-group select {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    padding: 6px 10px;
    cursor: pointer;
}

.filter-group select:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.search-box input {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    padding: 8px 12px;
    width: 200px;
}

.search-box input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.search-box input::placeholder {
    color: var(--text-muted);
}

.create-contract-btn {
    background: linear-gradient(135deg, var(--status-success), var(--status-success));
    color: white;
    border: none;
    padding: 8px 16px;
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    font-weight: 600;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all var(--duration-fast);
    white-space: nowrap;
}

.create-contract-btn:hover {
    box-shadow: 0 0 15px color-mix(in srgb, var(--status-success) 40%, transparent);
    transform: translateY(-1px);
}

/* Contracts content area */
.contracts-content {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-md);
}

/* Contract list */
.contracts-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

/* Contract card */
.contract-card {
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    cursor: pointer;
    transition: all var(--duration-fast);
}

.contract-card:hover {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 6%, transparent);
}

.contract-card.selected {
    border-color: var(--primary-blue);
    box-shadow: 0 0 15px color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.contract-card-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-sm);
}

.contract-type-icon {
    font-size: 24px;
    min-width: 32px;
    text-align: center;
}

.contract-info {
    flex: 1;
}

.contract-name {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
    margin: 0;
}

.contract-type-label {
    font-size: 10px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
}

.contract-status {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: 4px 12px;
    border-radius: var(--radius-pill);
    font-size: 11px;
    font-weight: 600;
}

.contract-status.status-draft {
    background: rgba(128, 128, 128, 0.2);
    color: #888;
}

.contract-status.status-pending {
    background: color-mix(in srgb, var(--status-warning) 15%, transparent);
    color: var(--status-warning);
}

.contract-status.status-active {
    background: color-mix(in srgb, var(--status-success) 15%, transparent);
    color: var(--status-success);
}

.contract-status.status-paused {
    background: color-mix(in srgb, var(--status-warning) 15%, transparent);
    color: var(--status-warning);
}

.contract-status.status-completed {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    color: var(--primary-blue);
}

.contract-status.status-cancelled {
    background: color-mix(in srgb, var(--status-error) 15%, transparent);
    color: var(--accent-red);
}

.contract-card-body {
    margin-bottom: var(--spacing-sm);
}

.contract-description {
    font-size: 12px;
    color: var(--text-secondary);
    margin: 0 0 var(--spacing-sm) 0;
    line-height: 1.4;
}

.contract-meta {
    display: flex;
    gap: var(--spacing-lg);
    flex-wrap: wrap;
}

.meta-item {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.meta-label {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
}

.meta-value {
    font-size: 12px;
    color: var(--text-primary);
}

.meta-value.value-usd {
    color: var(--status-success);
    font-weight: 600;
}

.contract-card-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: var(--spacing-sm);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.contract-address code {
    font-size: 11px;
    color: var(--text-muted);
    background: rgba(0, 0, 0, 0.2);
    padding: 2px 6px;
    border-radius: 3px;
}

.contract-actions {
    display: flex;
    gap: var(--spacing-sm);
}

.contract-actions .action-btn {
    padding: 4px 10px;
    font-size: 10px;
    border-radius: var(--radius-sm);
    border: none;
    cursor: pointer;
    transition: all var(--duration-fast);
    font-family: 'Orbitron', monospace;
    font-weight: 500;
}

.action-btn.action-primary {
    background: linear-gradient(135deg, var(--primary-blue), var(--secondary-blue));
    color: white;
}

.action-btn.action-secondary {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    color: var(--text-accent);
}

.action-btn.action-success {
    background: linear-gradient(135deg, var(--status-success), var(--status-success));
    color: white;
}

.action-btn.action-warning {
    background: color-mix(in srgb, var(--status-warning) 20%, transparent);
    border: 1px solid var(--status-warning);
    color: var(--status-warning);
}

.action-btn.action-danger {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    color: var(--accent-red);
}

.action-btn:hover {
    transform: translateY(-1px);
}

/* Contracts summary */
.contracts-summary {
    display: flex;
    justify-content: space-around;
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.summary-stat {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
}

.summary-stat .stat-value {
    font-size: 18px;
    font-weight: 700;
    color: var(--text-accent);
}

.summary-stat .stat-label {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
}

/* Contract detail view */
.contract-detail {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.detail-header {
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.back-btn {
    background: none;
    border: none;
    color: var(--text-accent);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    cursor: pointer;
    padding: 0;
    margin-bottom: var(--spacing-sm);
}

.back-btn:hover {
    text-decoration: underline;
}

.detail-title {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

.detail-title .type-icon {
    font-size: 28px;
}

.detail-title h2 {
    font-size: 18px;
    font-weight: 600;
    margin: 0;
    flex: 1;
}

.status-badge {
    padding: 6px 14px;
    border-radius: var(--radius-pill);
    font-size: 12px;
    font-weight: 600;
}

.detail-actions {
    display: flex;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.detail-actions .action-btn {
    padding: 8px 14px;
    font-size: 11px;
}

/* Detail tabs */
.detail-tabs {
    display: flex;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm) var(--spacing-md);
    background: rgba(0, 0, 0, 0.2);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.tab-btn {
    background: none;
    border: none;
    color: var(--text-muted);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    padding: 8px 16px;
    cursor: pointer;
    border-radius: var(--radius-sm);
    transition: all var(--duration-fast);
}

.tab-btn:hover {
    color: var(--text-primary);
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
}

.tab-btn.active {
    color: var(--text-accent);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

/* Detail content */
.detail-content {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-md);
}

.tab-content {
    max-width: 800px;
}

.tab-content h3 {
    font-size: 14px;
    color: var(--text-accent);
    margin-bottom: var(--spacing-md);
}

/* Info section */
.info-section {
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

.info-section h3 {
    margin-top: 0;
}

.info-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--spacing-md);
}

.info-item {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.info-item.full-width {
    grid-column: span 2;
}

.info-label {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
}

.info-value {
    font-size: 13px;
    color: var(--text-primary);
}

.info-value.selectable {
    user-select: all;
    cursor: text;
}

.info-value.value-large {
    font-size: 20px;
    font-weight: 700;
    color: var(--status-success);
}

/* Parties tab */
.parties-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.parties-tab .party-card {
    background: rgba(0, 0, 0, 0.2);
    border: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
}

.party-role {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-accent);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    padding: 4px 10px;
    border-radius: var(--radius-sm);
    min-width: 80px;
    text-align: center;
}

.party-info {
    flex: 1;
}

.party-label {
    font-size: 13px;
    color: var(--text-primary);
    display: block;
}

.party-address {
    font-size: 11px;
    color: var(--text-muted);
}

.party-account {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.linked-badge {
    font-size: 10px;
    color: var(--status-success);
}

.account-id {
    font-size: 11px;
    color: var(--text-muted);
}

/* Conditions tab */
.conditions-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.condition-card {
    background: rgba(0, 0, 0, 0.2);
    border: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
}

.condition-card.satisfied {
    border-color: var(--status-success);
    background: color-mix(in srgb, var(--status-success) 3%, transparent);
}

.condition-status {
    font-size: 20px;
}

.condition-info {
    flex: 1;
}

.condition-type {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-accent);
    display: block;
}

.condition-desc {
    font-size: 12px;
    color: var(--text-secondary);
}

/* History tab */
.events-timeline {
    position: relative;
    padding-left: 20px;
}

.events-timeline::before {
    content: '';
    position: absolute;
    left: 5px;
    top: 0;
    bottom: 0;
    width: 2px;
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.event-item {
    position: relative;
    margin-bottom: var(--spacing-md);
}

.event-marker {
    position: absolute;
    left: -20px;
    top: 4px;
    width: 12px;
    height: 12px;
    background: var(--primary-blue);
    border-radius: 50%;
    border: 2px solid var(--dark-bg);
}

.event-content {
    background: rgba(0, 0, 0, 0.2);
    border-radius: var(--radius-md);
    padding: var(--spacing-sm) var(--spacing-md);
}

.event-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 4px;
}

.event-type {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-accent);
    font-weight: 600;
}

.event-time {
    font-size: 10px;
    color: var(--text-muted);
}

.event-desc {
    font-size: 12px;
    color: var(--text-secondary);
    margin: 0 0 4px 0;
}

.event-tx {
    font-size: 10px;
    color: var(--text-muted);
    display: block;
}

.event-actor {
    font-size: 10px;
    color: var(--text-muted);
}

/* Security tab */
.security-score {
    display: flex;
    align-items: center;
    gap: var(--spacing-lg);
    padding: var(--spacing-md);
}

.score-circle {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    background: conic-gradient(
        var(--status-success) calc(var(--score) * 3.6deg),
        rgba(0, 0, 0, 0.3) 0
    );
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
}

.score-circle::before {
    content: '';
    position: absolute;
    inset: 6px;
    border-radius: 50%;
    background: var(--dark-bg);
}

.score-value {
    font-size: 22px;
    font-weight: 700;
    color: var(--status-success);
    position: relative;
    z-index: 1;
}

.score-max {
    font-size: 10px;
    color: var(--text-muted);
    position: relative;
    z-index: 1;
}

.score-label {
    font-size: 14px;
    color: var(--text-secondary);
}

.patterns-list {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-sm);
}

.pattern-badge {
    display: flex;
    align-items: center;
    gap: 4px;
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 20%, transparent);
    border-radius: var(--radius-sm);
    padding: 4px 10px;
    font-size: 11px;
}

.pattern-check {
    color: var(--status-success);
}

.pattern-name {
    color: var(--text-secondary);
}

/* Empty state in contract panel */
.contract-management-panel .empty-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-xl) var(--spacing-md);
    text-align: center;
}

.contract-management-panel .empty-state .empty-icon {
    font-size: 48px;
    margin-bottom: var(--spacing-md);
}

.contract-management-panel .empty-state h3 {
    font-size: 16px;
    color: var(--text-primary);
    margin-bottom: var(--spacing-sm);
}

.contract-management-panel .empty-state p {
    font-size: 12px;
    color: var(--text-secondary);
    margin: 0;
}

.contract-management-panel .empty-state .empty-hint {
    color: var(--text-muted);
    font-style: italic;
    margin-top: var(--spacing-sm);
}

.empty-state.small {
    padding: var(--spacing-lg);
}

.empty-state.small p {
    font-size: 12px;
}

/* ============================================================================
   TRANSFER PANEL V2 - Redesigned
   ============================================================================ */

.transfer-panel-v2 {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--dark-bg);
}

/* Header with source selector */
.transfer-header {
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.transfer-header .header-title h2 {
    font-size: 18px;
    margin: 0 0 var(--spacing-sm) 0;
}

.source-selector {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.source-selector .selector-label {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
}

.source-dropdown {
    flex: 1;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    padding: 8px 12px;
    cursor: pointer;
}

.source-dropdown:focus {
    outline: none;
    border-color: var(--primary-blue);
}

/* Progress indicator v2 */
.transfer-progress-v2 {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-md);
    gap: var(--spacing-xs);
}

.progress-step {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
}

.progress-step .step-number {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 2px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 600;
    color: var(--text-muted);
    transition: all var(--duration-fast);
}

.progress-step.active .step-number {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-color: var(--primary-blue);
    color: var(--text-accent);
}

.progress-step.current .step-number {
    background: var(--primary-blue);
    border-color: var(--primary-blue);
    color: white;
    box-shadow: 0 0 15px color-mix(in srgb, var(--text-accent) 40%, transparent);
}

.progress-step .step-label {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-muted);
}

.progress-step.active .step-label {
    color: var(--text-secondary);
}

.progress-step.current .step-label {
    color: var(--text-accent);
}

.transfer-progress-v2 .step-connector {
    width: 20px;
    height: 2px;
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    margin-bottom: 20px;
}

.transfer-progress-v2 .step-connector.active {
    background: var(--primary-blue);
}

/* Content area */
.transfer-content-v2 {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-md);
}

.transfer-step {
    max-width: 500px;
    margin: 0 auto;
}

.transfer-step .step-title {
    font-size: 16px;
    color: var(--text-primary);
    margin: 0 0 var(--spacing-xs) 0;
    text-align: center;
}

.transfer-step .step-subtitle {
    font-size: 12px;
    color: var(--text-muted);
    margin: 0 0 var(--spacing-lg) 0;
    text-align: center;
}

/* Account cards */
.account-cards {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-lg);
}

.account-card {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: all var(--duration-fast);
    text-align: left;
    width: 100%;
}

.account-card:hover {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 6%, transparent);
}

.account-card.selected {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    box-shadow: 0 0 15px color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.account-icon {
    font-size: 24px;
}

.account-info {
    flex: 1;
}

.account-name {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
}

.account-balances {
    display: flex;
    gap: var(--spacing-xs);
    margin-top: 4px;
    flex-wrap: wrap;
}

.balance-chip {
    font-size: 10px;
    color: var(--text-muted);
    background: rgba(0, 0, 0, 0.2);
    padding: 2px 6px;
    border-radius: 3px;
}

.account-check {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--status-success);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    opacity: 0;
    transition: opacity var(--duration-fast);
}

.account-card.selected .account-check {
    opacity: 1;
}

/* Recipient search */
.recipient-search {
    margin-bottom: var(--spacing-md);
}

.recipient-search input {
    width: 100%;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    padding: 10px 14px;
}

.recipient-search input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.recipient-search input::placeholder {
    color: var(--text-muted);
}

/* Recipient categories */
.recipient-categories {
    display: flex;
    gap: var(--spacing-xs);
    margin-bottom: var(--spacing-md);
    overflow-x: auto;
    padding-bottom: 4px;
}

.category-tab {
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-radius: var(--radius-pill);
    color: var(--text-muted);
    font-family: 'Orbitron', monospace;
    font-size: 10px;
    padding: 6px 12px;
    cursor: pointer;
    white-space: nowrap;
    transition: all var(--duration-fast);
}

.category-tab:hover {
    border-color: var(--primary-blue);
    color: var(--text-primary);
}

.category-tab.active {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-color: var(--primary-blue);
    color: var(--text-accent);
}

/* Address book list */
.address-book-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    max-height: 280px;
    overflow-y: auto;
    margin-bottom: var(--spacing-md);
}

.recipient-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: rgba(0, 0, 0, 0.2);
    border: 1px solid transparent;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all var(--duration-fast);
    text-align: left;
    width: 100%;
}

.recipient-row:hover {
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border-color: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.recipient-row.selected {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
}

.recipient-icon {
    font-size: 18px;
    min-width: 24px;
    text-align: center;
}

.recipient-info {
    flex: 1;
    min-width: 0;
}

.recipient-name {
    font-size: 13px;
    font-weight: 500;
    color: var(--text-primary);
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
}

.own-account-badge {
    font-size: 9px;
    background: color-mix(in srgb, var(--status-success) 15%, transparent);
    color: var(--status-success);
    padding: 2px 6px;
    border-radius: 3px;
}

.recipient-details {
    display: flex;
    gap: var(--spacing-xs);
    font-size: 10px;
    color: var(--text-muted);
}

.recipient-chain {
    text-transform: uppercase;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    padding: 1px 4px;
    border-radius: 2px;
}

.verified-badge {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: var(--status-success);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 10px;
}

.add-recipient-btn {
    width: 100%;
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px dashed color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-accent);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    cursor: pointer;
    transition: all var(--duration-fast);
    margin-bottom: var(--spacing-md);
}

.add-recipient-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
}

/* Asset selector */
.asset-selector {
    display: flex;
    justify-content: center;
    gap: var(--spacing-xs);
    margin-bottom: var(--spacing-lg);
}

.asset-chip {
    padding: 8px 16px;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-pill);
    color: var(--text-muted);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.asset-chip:hover {
    border-color: var(--primary-blue);
    color: var(--text-primary);
}

.asset-chip.selected {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-color: var(--primary-blue);
    color: var(--text-accent);
}

/* Amount input v2 */
.amount-input-v2 {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-xs);
    margin-bottom: var(--spacing-sm);
}

.amount-input-v2 .currency-symbol {
    font-size: 32px;
    color: var(--text-muted);
}

.amount-input-v2 .amount-field {
    background: transparent;
    border: none;
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 42px;
    font-weight: 700;
    width: 200px;
    text-align: center;
}

.amount-input-v2 .amount-field:focus {
    outline: none;
}

.amount-input-v2 .amount-field::placeholder {
    color: var(--text-muted);
}

.balance-display {
    text-align: center;
    font-size: 12px;
    color: var(--text-muted);
    margin-bottom: var(--spacing-md);
}

/* Quick amounts */
.quick-amounts {
    display: flex;
    justify-content: center;
    gap: var(--spacing-xs);
    margin-bottom: var(--spacing-lg);
    flex-wrap: wrap;
}

.quick-amount {
    padding: 6px 14px;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.quick-amount:hover {
    border-color: var(--primary-blue);
    color: var(--text-accent);
}

.quick-amount.max {
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    border-color: color-mix(in srgb, var(--status-success) 30%, transparent);
    color: var(--status-success);
}

/* Memo input */
.memo-input {
    margin-bottom: var(--spacing-lg);
}

.memo-input label {
    display: block;
    font-size: 11px;
    color: var(--text-muted);
    margin-bottom: var(--spacing-xs);
}

.memo-input input {
    width: 100%;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    padding: 10px 14px;
}

.memo-input input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

/* Routes list v2 */
.routes-list-v2 {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-lg);
}

.route-card {
    display: flex;
    align-items: flex-start;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: all var(--duration-fast);
    text-align: left;
    width: 100%;
}

.route-card:hover:not(:disabled) {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 6%, transparent);
}

.route-card.selected {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.route-card.unavailable {
    opacity: 0.5;
    cursor: not-allowed;
}

.route-icon {
    font-size: 24px;
    min-width: 32px;
    text-align: center;
}

.route-info {
    flex: 1;
}

.route-name {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 4px;
}

.route-description {
    font-size: 11px;
    color: var(--text-muted);
    margin-bottom: var(--spacing-xs);
}

.route-meta {
    display: flex;
    gap: var(--spacing-md);
    font-size: 10px;
}

.route-fee {
    color: var(--status-success);
}

.route-time {
    color: var(--text-secondary);
}

.route-check {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--status-success);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    opacity: 0;
    transition: opacity var(--duration-fast);
}

.route-card.selected .route-check {
    opacity: 1;
}

/* Review card */
.review-card {
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

.review-section {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    padding: var(--spacing-sm) 0;
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.review-section:last-child {
    border-bottom: none;
}

.review-section.amount,
.review-section.total {
    padding: var(--spacing-md) 0;
}

.review-label {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
}

.review-value {
    font-size: 13px;
    color: var(--text-primary);
    text-align: right;
}

.review-value.large {
    font-size: 20px;
    font-weight: 700;
    color: var(--text-accent);
}

.review-subvalue {
    display: block;
    font-size: 11px;
    color: var(--text-muted);
    margin-top: 2px;
}

.asset-label {
    font-size: 12px;
    color: var(--text-muted);
    margin-left: 4px;
}

.review-section.total {
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    margin: var(--spacing-sm) calc(-1 * var(--spacing-md));
    padding: var(--spacing-md);
    border-radius: 0 0 var(--radius-md) var(--radius-md);
}

/* ETA display */
.eta-display {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border-radius: var(--radius-sm);
    margin-bottom: var(--spacing-lg);
}

.eta-icon {
    font-size: 16px;
}

.eta-text {
    font-size: 12px;
    color: var(--text-secondary);
}

/* Processing step */
.transfer-step.processing {
    text-align: center;
    padding: var(--spacing-xl) 0;
}

.processing-animation {
    margin-bottom: var(--spacing-lg);
}

.processing-animation .spinner {
    width: 60px;
    height: 60px;
    border: 3px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-top-color: var(--primary-blue);
    border-radius: 50%;
    margin: 0 auto;
    animation: spin 1s linear infinite;
}

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

.processing-text {
    font-size: 12px;
    color: var(--text-muted);
    margin: var(--spacing-sm) 0 var(--spacing-lg);
}

.processing-steps {
    text-align: left;
    max-width: 250px;
    margin: 0 auto;
}

.proc-step {
    font-size: 12px;
    padding: var(--spacing-xs) 0;
    color: var(--text-muted);
}

.proc-step.done {
    color: var(--status-success);
}

.proc-step.active {
    color: var(--text-accent);
}

/* Complete step */
.transfer-step.complete {
    text-align: center;
    padding: var(--spacing-xl) 0;
}

.success-animation {
    margin-bottom: var(--spacing-lg);
}

.success-check {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--status-success), var(--status-success));
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 40px;
    margin: 0 auto;
    animation: scaleIn 0.3s ease-out;
}

@keyframes scaleIn {
    from {
        transform: scale(0);
        opacity: 0;
    }
    to {
        transform: scale(1);
        opacity: 1;
    }
}

.completion-summary {
    margin-bottom: var(--spacing-lg);
}

.summary-amount {
    font-size: 28px;
    font-weight: 700;
    color: var(--text-accent);
    margin: 0;
}

.summary-recipient {
    font-size: 14px;
    color: var(--text-secondary);
    margin: var(--spacing-xs) 0 0;
}

.completion-actions {
    display: flex;
    justify-content: center;
    gap: var(--spacing-md);
}

.view-tx-btn {
    padding: 10px 20px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-accent);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    cursor: pointer;
}

.new-transfer-btn {
    padding: 10px 20px;
    background: linear-gradient(135deg, var(--primary-blue), var(--secondary-blue));
    border: none;
    border-radius: var(--radius-sm);
    color: white;
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
}

/* Step actions */
.step-actions {
    display: flex;
    gap: var(--spacing-md);
    justify-content: center;
    margin-top: var(--spacing-lg);
}

.back-btn {
    padding: 12px 24px;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.back-btn:hover {
    border-color: var(--primary-blue);
    color: var(--text-accent);
}

.next-btn {
    padding: 12px 32px;
    background: linear-gradient(135deg, var(--primary-blue), var(--secondary-blue));
    border: none;
    border-radius: var(--radius-sm);
    color: white;
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.next-btn:hover:not(:disabled) {
    box-shadow: 0 0 20px color-mix(in srgb, var(--text-accent) 40%, transparent);
}

.next-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.confirm-btn {
    padding: 14px 32px;
    background: linear-gradient(135deg, var(--status-success), var(--status-success));
    border: none;
    border-radius: var(--radius-sm);
    color: white;
    font-family: 'Orbitron', monospace;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.confirm-btn:hover {
    box-shadow: 0 0 20px color-mix(in srgb, var(--status-success) 40%, transparent);
}

/* Empty recipients */
.empty-recipients {
    text-align: center;
    padding: var(--spacing-lg);
    color: var(--text-muted);
}

/* ============================================================================
   ROUTE BUILDER PANEL
   ============================================================================ */

.route-builder-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.builder-header {
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.builder-header h2 {
    font-size: 18px;
    margin: 0 0 var(--spacing-xs) 0;
}

.builder-header .header-subtitle {
    font-size: 12px;
    color: var(--text-muted);
    margin: 0;
}

.builder-content {
    display: flex;
    flex: 1;
    overflow: hidden;
}

/* Provider Catalog */
.provider-catalog {
    width: 280px;
    border-right: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    background: rgba(0, 0, 0, 0.2);
    display: flex;
    flex-direction: column;
    overflow-y: auto;
}

.provider-catalog h3 {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
    padding: var(--spacing-md);
    margin: 0;
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.provider-list {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-sm);
}

.provider-card {
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-left: 3px solid var(--provider-color, var(--primary-blue));
    border-radius: var(--radius-sm);
    margin-bottom: var(--spacing-sm);
    overflow: hidden;
}

.provider-card.selected {
    border-color: var(--provider-color, var(--primary-blue));
    background: color-mix(in srgb, var(--text-accent) 6%, transparent);
}

.provider-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    cursor: pointer;
    transition: background var(--duration-fast);
}

.provider-header:hover {
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
}

.provider-icon {
    font-size: 20px;
}

.provider-name {
    flex: 1;
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
}

.provider-category {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-muted);
    background: rgba(0, 0, 0, 0.3);
    padding: 2px 6px;
    border-radius: 3px;
}

.hop-types {
    padding: var(--spacing-sm);
    background: rgba(0, 0, 0, 0.2);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.hop-type-btn {
    width: 100%;
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    cursor: pointer;
    text-align: left;
    margin-bottom: var(--spacing-xs);
    transition: all var(--duration-fast);
}

.hop-type-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
}

.hop-type-btn:last-child {
    margin-bottom: 0;
}

.hop-type-name {
    font-size: 12px;
    font-weight: 500;
    color: var(--text-primary);
    margin-bottom: 2px;
}

.hop-type-flow {
    font-size: 11px;
    color: var(--text-muted);
    margin-bottom: 2px;
}

.hop-type-meta {
    display: flex;
    gap: var(--spacing-sm);
    font-size: 10px;
    color: var(--text-muted);
}

.hop-time {
    color: var(--text-secondary);
}

.hop-manual {
    color: var(--status-warning);
}

/* Route Canvas */
.route-canvas {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.canvas-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.route-meta-inputs {
    display: flex;
    gap: var(--spacing-sm);
    flex: 1;
}

.route-name-input,
.route-desc-input {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    padding: 8px 12px;
}

.route-name-input {
    width: 200px;
}

.route-desc-input {
    flex: 1;
}

.route-name-input:focus,
.route-desc-input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.canvas-actions {
    display: flex;
    gap: var(--spacing-sm);
}

.btn-clear {
    padding: 8px 16px;
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--accent-red);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    cursor: pointer;
}

.btn-clear:hover {
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
}

/* Route Hops */
.route-hops {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-lg);
}

.empty-route {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    text-align: center;
    color: var(--text-muted);
}

.empty-route .empty-icon {
    font-size: 48px;
    margin-bottom: var(--spacing-md);
    opacity: 0.5;
}

.empty-route h4 {
    font-size: 16px;
    color: var(--text-secondary);
    margin: 0 0 var(--spacing-sm) 0;
}

.empty-route p {
    font-size: 12px;
    max-width: 300px;
}

.hop-card-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
}

.hop-card-wrapper.parallel {
    margin-left: 40px;
    position: relative;
}

.hop-card-wrapper.parallel::before {
    content: '⚡ Parallel';
    position: absolute;
    left: -50px;
    top: 50%;
    transform: translateY(-50%) rotate(-90deg);
    font-size: 9px;
    color: var(--status-warning);
    text-transform: uppercase;
    letter-spacing: 1px;
}

.hop-card {
    display: flex;
    align-items: flex-start;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-md);
    width: 100%;
    max-width: 500px;
}

.hop-order {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--primary-blue);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 700;
    flex-shrink: 0;
}

.hop-content {
    flex: 1;
}

.hop-card .hop-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-sm);
}

.hop-card .hop-provider {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-accent);
}

.hop-card .hop-type {
    font-size: 11px;
    color: var(--text-secondary);
    background: rgba(0, 0, 0, 0.2);
    padding: 2px 8px;
    border-radius: 3px;
}

.hop-card .hop-automation {
    font-size: 10px;
    color: var(--text-muted);
    margin-left: auto;
}

.hop-card .hop-flow {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.hop-card .hop-input,
.hop-card .hop-output {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
}

.hop-card .amount-input {
    width: 80px;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    padding: 4px 8px;
}

.hop-card .amount-input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.hop-card .asset-label,
.hop-card .output-label {
    font-size: 11px;
    color: var(--text-muted);
}

.hop-card .hop-arrow {
    color: var(--primary-blue);
    font-size: 16px;
}

.hop-actions {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.hop-action {
    width: 24px;
    height: 24px;
    border-radius: 4px;
    border: none;
    cursor: pointer;
    font-size: 12px;
    transition: all var(--duration-fast);
}

.hop-action.parallel {
    background: color-mix(in srgb, var(--status-warning) 10%, transparent);
    color: var(--status-warning);
}

.hop-action.parallel.active {
    background: var(--status-warning);
    color: white;
}

.hop-action.remove {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    color: var(--accent-red);
}

.hop-action.remove:hover {
    background: var(--accent-red);
    color: white;
}

.hop-connector {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: var(--spacing-sm) 0;
}

.hop-connector .connector-line {
    width: 2px;
    height: 20px;
    background: color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.hop-connector .connector-arrow {
    color: color-mix(in srgb, var(--text-accent) 50%, transparent);
    font-size: 10px;
}

/* Route Summary */
.route-summary {
    display: flex;
    justify-content: center;
    gap: var(--spacing-xl);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.route-summary .summary-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
}

.route-summary .summary-label {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
}

.route-summary .summary-value {
    font-size: 16px;
    font-weight: 600;
    color: var(--text-accent);
}

.route-actions {
    display: flex;
    justify-content: center;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.btn-save {
    padding: 10px 24px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-accent);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    cursor: pointer;
}

.btn-save:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.btn-execute {
    padding: 10px 24px;
    background: linear-gradient(135deg, var(--status-success), var(--status-success));
    border: none;
    border-radius: var(--radius-sm);
    color: white;
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
}

.btn-execute:hover:not(:disabled) {
    box-shadow: 0 0 20px color-mix(in srgb, var(--status-success) 40%, transparent);
}

.btn-execute:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* ============================================================================
   ADDRESS BOOK PANEL (legacy sibling rules — `.address-book-panel`
   root rule lives at the canonical block earlier in the file;
   these duplicates were resetting `min-height: 0` and the
   `--panel-edge-pad` so the canonical-Vault rebuild's panel-
   scrollable body / bar pinning never engaged. Removed
   2026-05-19 as part of the canonical-control-bar UX pass.)
   ============================================================================ */

.address-book-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.address-book-header h2 {
    font-size: 18px;
    margin: 0;
}

.add-contact-btn {
    padding: 8px 16px;
    background: linear-gradient(135deg, var(--primary-blue), var(--accent-cyan));
    border: none;
    border-radius: var(--radius-sm);
    color: white;
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.add-contact-btn:hover {
    box-shadow: 0 0 20px color-mix(in srgb, var(--text-accent) 40%, transparent);
}

.address-book-toolbar {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-sm) var(--spacing-md);
    background: rgba(0, 0, 0, 0.2);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.search-box {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    flex: 1;
    max-width: 300px;
}

.search-box .search-icon {
    color: var(--text-muted);
}

.search-box .search-input {
    flex: 1;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    padding: 6px 10px;
}

.search-box .search-input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.category-filters {
    display: flex;
    gap: 4px;
}

.filter-btn {
    padding: 4px 8px;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-muted);
    font-size: 11px;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.filter-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    color: var(--text-primary);
}

.filter-btn.active {
    background: var(--primary-blue);
    border-color: var(--primary-blue);
    color: white;
}

.address-book-content {
    display: flex;
    flex: 1;
    overflow: hidden;
}

/* Contacts List */
.contacts-list {
    width: 300px;
    border-right: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    overflow-y: auto;
}

.empty-contacts {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 200px;
    color: var(--text-muted);
}

.empty-contacts .empty-icon {
    font-size: 36px;
    margin-bottom: var(--spacing-sm);
    opacity: 0.5;
}

.contact-card {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 5%, transparent);
    cursor: pointer;
    transition: background var(--duration-fast);
}

.contact-card:hover {
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
}

.contact-card.selected {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-left: 3px solid var(--primary-blue);
}

.contact-avatar {
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: 50%;
    font-size: 16px;
}

.contact-info {
    flex: 1;
    min-width: 0;
}

.contact-name {
    font-size: 13px;
    font-weight: 500;
    color: var(--text-primary);
    display: flex;
    align-items: center;
    gap: 4px;
}

.verified-badge {
    font-size: 10px;
    color: var(--status-success);
}

.verified-badge.large {
    font-size: 11px;
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    padding: 2px 6px;
    border-radius: 3px;
    margin-left: var(--spacing-xs);
}

.contact-meta {
    font-size: 10px;
    color: var(--text-muted);
    display: flex;
    gap: var(--spacing-sm);
}

.contact-trust {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 2px;
}

.trust-score {
    font-size: 10px;
    color: var(--status-success);
    font-weight: 600;
}

.privacy-level {
    font-size: 12px;
}

/* Contact Detail */
.contact-detail {
    flex: 1;
    overflow-y: auto;
}

.no-contact-selected {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    color: var(--text-muted);
}

.no-contact-selected .no-select-icon {
    font-size: 36px;
    margin-bottom: var(--spacing-sm);
    opacity: 0.5;
}

.contact-detail-content {
    padding: var(--spacing-lg);
}

.detail-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
    padding-bottom: var(--spacing-md);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.detail-avatar {
    width: 48px;
    height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: 50%;
    font-size: 24px;
}

.detail-title h3 {
    font-size: 18px;
    margin: 0 0 4px 0;
    display: flex;
    align-items: center;
}

.detail-category {
    font-size: 11px;
    color: var(--text-muted);
}

.detail-section {
    margin-bottom: var(--spacing-lg);
}

.detail-section h4 {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
    margin: 0 0 var(--spacing-sm) 0;
}

.security-info {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.security-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.security-label {
    font-size: 12px;
    color: var(--text-secondary);
}

.security-value {
    font-size: 12px;
    color: var(--text-primary);
}

.trust-bar {
    width: 150px;
    height: 8px;
    background: rgba(0, 0, 0, 0.3);
    border-radius: 4px;
    position: relative;
    overflow: hidden;
}

.trust-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--status-warning), var(--status-success));
    border-radius: 4px;
}

.trust-bar .trust-label {
    position: absolute;
    right: 4px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 8px;
    color: white;
    font-weight: 600;
}

.addresses-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.address-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-radius: var(--radius-sm);
}

.chain-icon {
    font-size: 14px;
}

.chain-name {
    font-size: 11px;
    color: var(--text-muted);
    min-width: 70px;
}

.address-value {
    flex: 1;
    font-size: 11px;
    font-family: 'JetBrains Mono', monospace;
    color: var(--text-secondary);
}

.copy-btn {
    padding: 4px 6px;
    background: transparent;
    border: none;
    cursor: pointer;
    font-size: 12px;
    opacity: 0.5;
    transition: opacity var(--duration-fast);
}

.copy-btn:hover {
    opacity: 1;
}

.add-address-btn {
    margin-top: var(--spacing-sm);
    padding: 6px 12px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px dashed color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-accent);
    font-size: 11px;
    cursor: pointer;
}

.add-address-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
}

.tags-list {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-xs);
}

.tag {
    padding: 4px 8px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: 3px;
    font-size: 10px;
    color: var(--text-accent);
}

.notes-content {
    font-size: 12px;
    color: var(--text-secondary);
    line-height: 1.5;
    margin: 0;
}

.detail-footer {
    padding-top: var(--spacing-md);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    margin-top: var(--spacing-lg);
}

.created-date {
    font-size: 10px;
    color: var(--text-muted);
}

.detail-actions {
    display: flex;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-lg);
}

.action-btn {
    flex: 1;
    padding: 10px 16px;
    border-radius: var(--radius-sm);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.action-btn.send {
    background: linear-gradient(135deg, var(--status-success), var(--status-success));
    border: none;
    color: white;
}

.action-btn.send:hover {
    box-shadow: 0 0 15px color-mix(in srgb, var(--status-success) 30%, transparent);
}

.action-btn.edit {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    color: var(--text-accent);
}

.action-btn.edit:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.action-btn.delete {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    color: var(--accent-red);
}

.action-btn.delete:hover {
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
}

/* Add Contact Modal */
.add-contact-modal {
    width: 500px;
    max-height: 80vh;
    background: var(--bg-card);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-md);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.modal-header h3 {
    margin: 0;
    font-size: 16px;
}

.modal-close {
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    color: var(--text-muted);
    font-size: 16px;
    cursor: pointer;
}

.modal-close:hover {
    color: var(--text-primary);
}

.modal-body {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-lg);
}

.form-group {
    margin-bottom: var(--spacing-md);
}

.form-group label {
    display: block;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
    margin-bottom: var(--spacing-xs);
}

.form-group .hint {
    text-transform: none;
    letter-spacing: 0;
    opacity: 0.7;
}

.form-input,
.form-textarea {
    width: 100%;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    padding: 10px 12px;
}

.form-textarea {
    min-height: 80px;
    resize: vertical;
}

.form-input:focus,
.form-textarea:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.category-selector,
.privacy-selector {
    display: grid;
    gap: var(--spacing-xs);
}

.category-selector {
    grid-template-columns: repeat(4, 1fr);
}

.privacy-selector {
    grid-template-columns: 1fr;
}

.category-option,
.privacy-option {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all var(--duration-fast);
}

.category-option:hover,
.privacy-option:hover {
    background: color-mix(in srgb, var(--text-accent) 8%, transparent);
}

.category-option.selected,
.privacy-option.selected {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-color: var(--primary-blue);
}

.cat-icon {
    font-size: 16px;
}

.cat-label {
    font-size: 9px;
    color: var(--text-muted);
}

.privacy-option {
    flex-direction: row;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
}

.privacy-icon {
    font-size: 20px;
}

.privacy-name {
    font-size: 12px;
    font-weight: 500;
    color: var(--text-primary);
}

.privacy-desc {
    font-size: 10px;
    color: var(--text-muted);
    margin-left: auto;
}

.added-addresses {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    margin-bottom: var(--spacing-sm);
}

.added-address {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    background: color-mix(in srgb, var(--status-success) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 20%, transparent);
    border-radius: var(--radius-sm);
}

.added-address .chain {
    font-size: 10px;
    text-transform: uppercase;
    color: var(--status-success);
    font-weight: 600;
}

.added-address .addr {
    flex: 1;
    font-size: 11px;
    font-family: 'JetBrains Mono', monospace;
    color: var(--text-secondary);
}

.added-address .remove-addr {
    padding: 2px 6px;
    background: transparent;
    border: none;
    color: var(--accent-red);
    cursor: pointer;
    font-size: 10px;
}

.address-input-row {
    display: flex;
    gap: var(--spacing-xs);
}

.chain-select {
    width: 120px;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    padding: 8px;
}

.address-input {
    flex: 1;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    padding: 8px;
}

.address-input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.validate-btn {
    padding: 8px 12px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-accent);
    font-size: 11px;
    cursor: pointer;
}

.validate-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.modal-footer {
    display: flex;
    justify-content: flex-end;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.btn-cancel {
    padding: 10px 20px;
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-muted);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    cursor: pointer;
}

.btn-cancel:hover {
    border-color: var(--text-muted);
    color: var(--text-primary);
}

.btn-create {
    padding: 10px 20px;
    background: linear-gradient(135deg, var(--primary-blue), var(--accent-cyan));
    border: none;
    border-radius: var(--radius-sm);
    color: white;
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    font-weight: 600;
    cursor: pointer;
}

.btn-create:hover:not(:disabled) {
    box-shadow: 0 0 20px color-mix(in srgb, var(--text-accent) 40%, transparent);
}

.btn-create:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* ============================================================================
   DATA INVENTORY PANEL
   ============================================================================ */

.data-inventory-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.inventory-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-md);
    background: linear-gradient(135deg, rgba(139, 92, 246, 0.1), color-mix(in srgb, var(--text-accent) 5%, transparent));
    border-bottom: 1px solid rgba(139, 92, 246, 0.2);
}

.header-title h2 {
    font-size: 18px;
    margin: 0;
    background: linear-gradient(135deg, #8B5CF6, var(--primary-blue));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.header-subtitle {
    font-size: 11px;
    color: var(--text-muted);
}

.header-stats {
    display: flex;
    gap: var(--spacing-lg);
}

.stat-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.stat-item .stat-value {
    font-size: 16px;
    font-weight: 700;
    color: var(--text-accent);
}

.stat-item .stat-label {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-muted);
}

.inventory-search {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: rgba(0, 0, 0, 0.2);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.inventory-search .search-icon {
    color: var(--text-muted);
}

.inventory-search .search-input {
    flex: 1;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    padding: 8px 12px;
}

.inventory-search .search-input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.inventory-content {
    display: flex;
    flex: 1;
    overflow: hidden;
}

/* Category list */
.category-list {
    width: 260px;
    border-right: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    overflow-y: auto;
    padding: var(--spacing-sm);
}

.category-card {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    margin-bottom: var(--spacing-xs);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all var(--duration-fast);
}

.category-card:hover {
    background: color-mix(in srgb, var(--text-accent) 8%, transparent);
    border-color: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.category-card.selected {
    background: rgba(139, 92, 246, 0.15);
    border-color: rgba(139, 92, 246, 0.4);
}

.category-card.add-new {
    border-style: dashed;
    opacity: 0.6;
}

.category-card.add-new:hover {
    opacity: 1;
}

.category-icon {
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    background: rgba(139, 92, 246, 0.1);
    border-radius: 6px;
}

.category-info {
    flex: 1;
    min-width: 0;
}

.category-name {
    font-size: 12px;
    font-weight: 500;
    color: var(--text-primary);
}

.category-meta {
    display: flex;
    gap: var(--spacing-sm);
    font-size: 10px;
    color: var(--text-muted);
}

.category-status .status-badge {
    font-size: 12px;
}

.status-active { color: var(--status-success); }
.status-stale { color: var(--status-warning); }
.status-error { color: var(--accent-red); }
.status-syncing { color: var(--primary-blue); }
.status-new { color: #8B5CF6; }

/* Table detail */
.table-detail {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-lg);
}

.no-selection {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    color: var(--text-muted);
    text-align: center;
}

.no-selection .no-select-icon {
    font-size: 36px;
    margin-bottom: var(--spacing-sm);
    opacity: 0.5;
}

.no-selection h4 {
    margin: 0 0 var(--spacing-xs) 0;
    color: var(--text-secondary);
}

.no-selection p {
    font-size: 12px;
    margin: 0;
}

/* Category detail */
.category-detail,
.table-detail-view {
    max-width: 700px;
}

.detail-header {
    display: flex;
    align-items: flex-start;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
}

.detail-icon {
    width: 48px;
    height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 28px;
    background: linear-gradient(135deg, rgba(139, 92, 246, 0.2), color-mix(in srgb, var(--text-accent) 10%, transparent));
    border-radius: 10px;
}

.detail-title h3 {
    font-size: 20px;
    margin: 0 0 4px 0;
}

.detail-title p {
    font-size: 12px;
    color: var(--text-muted);
    margin: 0;
}

.detail-stats {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-lg);
}

.stat-chip {
    display: flex;
    flex-direction: column;
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: var(--radius-sm);
}

.stat-chip .chip-value {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-accent);
}

.stat-chip .chip-label {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-muted);
}

.tables-header,
.section-header {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
    margin: var(--spacing-lg) 0 var(--spacing-sm) 0;
    padding-bottom: var(--spacing-xs);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.tables-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.table-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all var(--duration-fast);
}

.table-row:hover {
    background: color-mix(in srgb, var(--text-accent) 8%, transparent);
    border-color: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.table-type-icon {
    font-size: 16px;
}

.table-info {
    flex: 1;
    min-width: 0;
}

.table-name {
    font-size: 13px;
    font-weight: 500;
    color: var(--text-primary);
    font-family: 'JetBrains Mono', monospace;
}

.table-desc {
    display: block;
    font-size: 10px;
    color: var(--text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.table-meta {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.table-rows,
.table-size {
    font-size: 10px;
    color: var(--text-secondary);
}

.table-badge {
    font-size: 10px;
    padding: 2px 4px;
    border-radius: 3px;
}

.table-badge.embeddings {
    background: rgba(139, 92, 246, 0.2);
}

.table-badge.hypertable {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

/* Table detail view */
.back-btn {
    padding: 6px 12px;
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-muted);
    font-size: 11px;
    cursor: pointer;
    margin-bottom: var(--spacing-md);
}

.back-btn:hover {
    border-color: var(--primary-blue);
    color: var(--text-primary);
}

.columns-list,
.indexes-list {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.column-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    background: rgba(0, 0, 0, 0.2);
    border-radius: var(--radius-sm);
    font-size: 11px;
}

.column-name {
    font-family: 'JetBrains Mono', monospace;
    color: var(--text-primary);
    min-width: 150px;
    display: flex;
    align-items: center;
    gap: 4px;
}

.pk-badge {
    font-size: 10px;
}

.column-type {
    font-family: 'JetBrains Mono', monospace;
    color: #8B5CF6;
    min-width: 150px;
}

.column-nullable {
    font-size: 9px;
    color: var(--text-muted);
    min-width: 60px;
}

.column-desc {
    font-size: 10px;
    color: var(--text-muted);
    font-style: italic;
}

.index-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    background: rgba(0, 0, 0, 0.2);
    border-radius: var(--radius-sm);
    font-size: 11px;
}

.index-icon {
    color: var(--status-warning);
}

.index-name {
    font-family: 'JetBrains Mono', monospace;
    color: var(--text-secondary);
}

.table-actions {
    display: flex;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-lg);
}

.query-btn,
.export-btn {
    padding: 10px 16px;
    border-radius: var(--radius-sm);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    cursor: pointer;
}

.query-btn {
    background: linear-gradient(135deg, #8B5CF6, var(--primary-blue));
    border: none;
    color: white;
}

.query-btn:hover {
    box-shadow: 0 0 20px rgba(139, 92, 246, 0.4);
}

.export-btn {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    color: var(--text-accent);
}

.export-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

/* ============================================================================
   RSS READER PANEL
   ============================================================================ */

.rss-reader-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.rss-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-md);
    background: linear-gradient(135deg, color-mix(in srgb, var(--text-accent) 10%, transparent), rgba(139, 92, 246, 0.05));
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.rss-header .header-title h2 {
    font-family: 'Orbitron', monospace;
    font-size: 18px;
    font-weight: 700;
    margin: 0;
    color: var(--text-primary);
}

.rss-header .header-subtitle {
    font-size: 11px;
    color: var(--text-muted);
}

.rss-header .header-actions {
    display: flex;
    gap: var(--spacing-sm);
}

.rss-header .action-btn {
    padding: 8px 12px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-size: 11px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.rss-header .action-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    color: var(--text-primary);
}

.rss-header .action-btn.active {
    background: color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}

.rss-toolbar {
    padding: var(--spacing-md);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    background: rgba(0, 0, 0, 0.2);
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.rss-toolbar .search-box {
    display: flex;
    align-items: center;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: var(--radius-sm);
    padding: 0 var(--spacing-sm);
}

.rss-toolbar .search-icon {
    font-size: 14px;
    margin-right: var(--spacing-xs);
}

.rss-toolbar .search-input {
    flex: 1;
    background: transparent;
    border: none;
    color: var(--text-primary);
    padding: 10px 0;
    font-size: 13px;
}

.rss-toolbar .search-input::placeholder {
    color: var(--text-muted);
}

.category-pills {
    display: flex;
    gap: var(--spacing-xs);
    flex-wrap: wrap;
}

.category-pills .pill {
    padding: 6px 12px;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 999px;
    color: var(--text-secondary);
    font-size: 11px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.category-pills .pill:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.category-pills .pill.active {
    background: var(--cat-color, var(--primary-blue));
    background: color-mix(in srgb, var(--cat-color, var(--primary-blue)) 20%, transparent);
    border-color: var(--cat-color, var(--primary-blue));
    color: var(--cat-color, var(--primary-blue));
}

.rss-content {
    flex: 1;
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    min-height: 0;
    overflow: hidden;
}

.article-list {
    overflow-y: auto;
    border-right: 1px solid rgba(255, 255, 255, 0.05);
}

.empty-articles {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 200px;
    color: var(--text-muted);
}

.empty-articles .empty-icon {
    font-size: 48px;
    margin-bottom: var(--spacing-md);
}

.article-card {
    padding: var(--spacing-md);
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
    cursor: pointer;
    transition: all 0.2s ease;
}

.article-card:hover {
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
}

.article-card.selected {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-left: 3px solid var(--primary-blue);
}

.article-card.read .article-title {
    color: var(--text-muted);
}

.article-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--spacing-xs);
}

.article-category {
    padding: 4px 8px;
    border-radius: var(--radius-sm);
    font-size: 10px;
    font-weight: 500;
}

.article-time {
    font-size: 10px;
    color: var(--text-muted);
}

.article-title {
    font-size: 14px;
    font-weight: 500;
    color: var(--text-primary);
    margin: 0 0 var(--spacing-sm) 0;
    line-height: 1.4;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.article-meta {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.article-source {
    font-size: 11px;
    color: var(--text-muted);
}

.article-tickers {
    display: flex;
    gap: 4px;
}

.ticker-badge {
    padding: 2px 6px;
    background: rgba(247, 147, 26, 0.2);
    border-radius: var(--radius-sm);
    font-size: 10px;
    font-weight: 600;
    color: #F7931A;
    font-family: 'JetBrains Mono', monospace;
}

.ticker-badge.large {
    padding: 4px 10px;
    font-size: 12px;
}

.bookmark-indicator {
    font-size: 12px;
}

.article-reader {
    overflow-y: auto;
    background: rgba(0, 0, 0, 0.2);
}

.no-article {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    color: var(--text-muted);
    text-align: center;
    padding: var(--spacing-lg);
}

.no-article .no-article-icon {
    font-size: 48px;
    margin-bottom: var(--spacing-md);
}

.no-article h4 {
    font-size: 16px;
    margin: 0 0 var(--spacing-xs) 0;
    color: var(--text-secondary);
}

.no-article p {
    font-size: 12px;
    margin: 0;
}

.article-content {
    padding: var(--spacing-lg);
}

.content-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

.content-category {
    padding: 6px 12px;
    border-radius: var(--radius-sm);
    font-size: 11px;
    font-weight: 500;
}

.content-source {
    font-size: 12px;
    color: var(--text-muted);
}

.content-title {
    font-size: 20px;
    font-weight: 600;
    color: var(--text-primary);
    margin: 0 0 var(--spacing-md) 0;
    line-height: 1.4;
}

.content-meta {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
    padding-bottom: var(--spacing-md);
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.content-time {
    font-size: 12px;
    color: var(--text-muted);
}

.content-tickers {
    display: flex;
    gap: var(--spacing-xs);
}

.content-body {
    font-size: 14px;
    line-height: 1.7;
    color: var(--text-secondary);
}

.content-body p {
    margin: 0 0 var(--spacing-md) 0;
}

.content-actions {
    display: flex;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-lg);
    padding-top: var(--spacing-md);
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.read-more-btn {
    padding: 10px 20px;
    background: linear-gradient(135deg, var(--primary-blue), var(--secondary-blue));
    border: none;
    border-radius: var(--radius-sm);
    color: white;
    font-size: 12px;
    font-weight: 500;
    cursor: pointer;
    text-decoration: none;
    transition: all 0.2s ease;
}

.read-more-btn:hover {
    box-shadow: 0 0 20px color-mix(in srgb, var(--text-accent) 40%, transparent);
}

.bookmark-btn,
.share-btn {
    padding: 10px 16px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-size: 12px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.bookmark-btn:hover,
.share-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    color: var(--text-primary);
}

/* Sources Panel */
.sources-panel {
    padding: var(--spacing-lg);
}

.sources-panel h3 {
    font-family: 'Orbitron', monospace;
    font-size: 16px;
    margin: 0 0 var(--spacing-xs) 0;
}

.sources-subtitle {
    font-size: 12px;
    color: var(--text-muted);
    margin: 0 0 var(--spacing-lg) 0;
}

.sources-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.source-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: rgba(0, 0, 0, 0.3);
    border-radius: var(--radius-sm);
    border: 1px solid rgba(255, 255, 255, 0.05);
}

.source-category {
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-sm);
    font-size: 14px;
}

.source-info {
    flex: 1;
    display: flex;
    flex-direction: column;
}

.source-name {
    font-size: 13px;
    color: var(--text-primary);
}

.source-count {
    font-size: 10px;
    color: var(--text-muted);
}

.source-priority {
    font-size: 10px;
    padding: 4px 8px;
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    border-radius: var(--radius-sm);
    color: var(--status-success);
    text-transform: uppercase;
}

.sources-footer {
    margin-top: var(--spacing-lg);
}

.add-feed-btn {
    width: 100%;
    padding: 12px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px dashed color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--primary-blue);
    font-size: 12px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.add-feed-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-style: solid;
}

/* ============================================================================
   WORKFLOW PROGRESS - Agent-driven workflow execution UI
   ============================================================================ */

.workflow-progress {
    background: linear-gradient(135deg, var(--card-bg) 0%, color-mix(in srgb, var(--text-accent) 5%, transparent) 100%);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-lg);
    padding: var(--spacing-lg);
    margin: var(--spacing-md) 0;
    position: relative;
    overflow: hidden;
}

.workflow-progress::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: linear-gradient(90deg, var(--primary-blue), var(--accent-red), var(--primary-blue));
    background-size: 200% 100%;
    animation: workflow-gradient 3s ease infinite;
}

@keyframes workflow-gradient {
    0%, 100% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
}

.workflow-progress.state-completed::before {
    background: var(--status-success);
    animation: none;
}

.workflow-progress.state-failed::before {
    background: var(--status-error);
    animation: none;
}

.workflow-progress.state-compensating::before {
    background: var(--status-warning);
    animation: pulse 1s ease infinite;
}

/* Header */
.workflow-header {
    margin-bottom: var(--spacing-md);
}

.workflow-title {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-xs);
}

.workflow-icon {
    font-size: 24px;
}

.workflow-name {
    font-family: var(--font-display);
    font-size: 16px;
    font-weight: 600;
    color: var(--text-primary);
}

.workflow-pattern-badge {
    font-size: 10px;
    padding: 2px 8px;
    border-radius: var(--radius-sm);
    text-transform: uppercase;
    font-weight: 500;
}

.badge-saga {
    background: color-mix(in srgb, var(--status-warning) 20%, transparent);
    color: var(--status-warning);
    border: 1px solid color-mix(in srgb, var(--status-warning) 30%, transparent);
}

.badge-dag {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    color: var(--primary-blue);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.badge-linear {
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    color: var(--status-success);
    border: 1px solid color-mix(in srgb, var(--status-success) 30%, transparent);
}

.workflow-description {
    font-size: 13px;
    color: var(--text-secondary);
}

/* Progress Bar */
.workflow-progress-bar {
    margin-bottom: var(--spacing-md);
}

.progress-track {
    height: 8px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: 4px;
    overflow: hidden;
    margin-bottom: var(--spacing-xs);
}

.progress-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--primary-blue), var(--status-success));
    border-radius: 4px;
    transition: width 0.5s ease;
    position: relative;
}

.progress-fill::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
    animation: shimmer 2s ease infinite;
}

@keyframes shimmer {
    0% { transform: translateX(-100%); }
    100% { transform: translateX(100%); }
}

.progress-text {
    font-size: 11px;
    color: var(--text-muted);
    text-align: right;
}

/* Steps List */
.workflow-steps {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-md);
}

.workflow-step {
    display: flex;
    align-items: flex-start;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border-radius: var(--radius-sm);
    border-left: 3px solid transparent;
    transition: all 0.2s ease;
}

.workflow-step.step-current {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-left-color: var(--primary-blue);
}

.workflow-step.step-completed {
    opacity: 0.8;
}

.workflow-step.step-completed .step-icon {
    color: var(--status-success);
}

.workflow-step.step-failed {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border-left-color: var(--status-error);
}

.workflow-step.step-failed .step-icon {
    color: var(--status-error);
}

.workflow-step.step-running .step-icon {
    color: var(--primary-blue);
    animation: pulse 1s ease infinite;
}

.workflow-step.step-auth {
    background: color-mix(in srgb, var(--status-warning) 10%, transparent);
    border-left-color: var(--status-warning);
}

.step-icon {
    font-size: 16px;
    width: 24px;
    text-align: center;
    flex-shrink: 0;
    margin-top: 2px;
    color: var(--text-muted);
}

.step-content {
    flex: 1;
    min-width: 0;
}

.step-name {
    font-size: 13px;
    font-weight: 500;
    color: var(--text-primary);
    margin-bottom: 2px;
}

.step-description {
    font-size: 11px;
    color: var(--text-secondary);
}

.step-spinner {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 11px;
    color: var(--primary-blue);
    margin-top: 4px;
}

.spinner {
    width: 12px;
    height: 12px;
    border: 2px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-top-color: var(--primary-blue);
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

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

.step-panel-badge {
    font-size: 9px;
    padding: 2px 6px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: var(--radius-sm);
    color: var(--primary-blue);
    flex-shrink: 0;
}

/* Auth Prompt */
.workflow-auth-prompt {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-lg);
    background: color-mix(in srgb, var(--status-warning) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-warning) 30%, transparent);
    border-radius: var(--radius-md);
    text-align: center;
}

.auth-icon {
    font-size: 32px;
}

.auth-message {
    font-size: 14px;
    color: var(--text-primary);
}

.btn-auth {
    padding: 10px 24px;
    background: linear-gradient(135deg, var(--status-warning), #ff8800);
    border: none;
    border-radius: var(--radius-sm);
    color: #000;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
}

.btn-auth:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px color-mix(in srgb, var(--status-warning) 40%, transparent);
}

/* Error State */
.workflow-error {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-lg);
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    border-radius: var(--radius-md);
    text-align: center;
}

.error-icon {
    font-size: 32px;
}

.error-message {
    font-size: 13px;
    color: var(--text-primary);
}

.error-actions {
    display: flex;
    gap: var(--spacing-sm);
}

.btn-retry {
    padding: 8px 16px;
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--primary-blue);
    font-size: 12px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.btn-retry:hover {
    background: color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.btn-cancel {
    padding: 8px 16px;
    background: transparent;
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-size: 12px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.btn-cancel:hover {
    border-color: color-mix(in srgb, var(--status-error) 50%, transparent);
    color: var(--status-error);
}

/* Completion State */
.workflow-complete {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-lg);
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 30%, transparent);
    border-radius: var(--radius-md);
    text-align: center;
}

.complete-icon {
    font-size: 32px;
}

.complete-message {
    font-size: 14px;
    color: var(--status-success);
    font-weight: 500;
}

/* Running Footer */
.workflow-running-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: var(--spacing-sm);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.running-indicator {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12px;
    color: var(--primary-blue);
}

.pulse-dot {
    width: 8px;
    height: 8px;
    background: var(--primary-blue);
    border-radius: 50%;
    animation: pulse-scale 1.5s ease infinite;
}

@keyframes pulse-scale {
    0%, 100% { transform: scale(1); opacity: 1; }
    50% { transform: scale(1.5); opacity: 0.5; }
}

.btn-cancel-running {
    padding: 6px 12px;
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--status-error);
    font-size: 11px;
    cursor: pointer;
    opacity: 0.7;
    transition: all 0.2s ease;
}

.btn-cancel-running:hover {
    opacity: 1;
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
}

/* Compact Progress */
.workflow-progress-compact {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: 6px 12px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    font-size: 12px;
}

.compact-icon {
    font-size: 14px;
}

.compact-name {
    color: var(--text-primary);
    font-weight: 500;
}

.compact-progress {
    color: var(--text-muted);
}

.compact-state {
    padding: 2px 6px;
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--primary-blue);
    font-size: 10px;
    text-transform: uppercase;
}

/* ============================================================================
   OPPORTUNITY EXCHANGE PANEL - Asset-Backed Private Credit Marketplace
   ============================================================================ */

.opex-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--panel-bg);
    color: var(--text-primary);
    overflow: hidden;
}

/* Header */
.opex-header {
    padding: 16px 20px;
    background: var(--card-bg);
    border-bottom: 1px solid var(--border-glow);
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.opex-brand {
    display: flex;
    align-items: center;
    gap: 12px;
}

.opex-icon {
    font-size: 28px;
    filter: drop-shadow(0 0 8px var(--primary-blue-glow));
}

.opex-title h1 {
    font-family: var(--font-display);
    font-size: 18px;
    font-weight: 700;
    margin: 0;
    background: linear-gradient(135deg, var(--primary-blue), var(--patriot-white));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.opex-subtitle {
    font-size: 11px;
    color: var(--text-muted);
    margin: 0;
}

/* Navigation */
.opex-nav {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.opex-nav-btn {
    background: transparent;
    border: 1px solid var(--border-glow);
    border-radius: 6px;
    padding: 8px 14px;
    color: var(--text-secondary);
    font-size: 12px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 6px;
    transition: all 0.2s ease;
}

.opex-nav-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}

.opex-nav-btn.active {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}

.opex-nav-btn.create-btn {
    background: linear-gradient(135deg, var(--primary-blue), var(--secondary-blue));
    border: none;
    color: var(--star-white);
    font-weight: 600;
}

.opex-nav-btn.create-btn:hover {
    filter: brightness(1.1);
    box-shadow: 0 4px 16px var(--primary-blue-glow);
}

.nav-icon {
    font-size: 14px;
}

/* Content Area */
.opex-content {
    flex: 1;
    overflow-y: auto;
    padding: 20px;
}

/* Discover View */
.discover-view {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.discover-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 12px;
}

.stat-card {
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 16px;
    text-align: center;
}

.stat-value {
    display: block;
    font-family: var(--font-display);
    font-size: 24px;
    font-weight: 700;
    color: var(--primary-blue);
    text-shadow: 0 0 12px var(--primary-blue-glow);
}

.stat-label {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Filters */
.discover-filters {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.search-box {
    display: flex;
    align-items: center;
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 0 12px;
}

.search-icon {
    font-size: 16px;
    color: var(--text-muted);
}

.search-box input {
    flex: 1;
    background: transparent;
    border: none;
    padding: 12px;
    color: var(--text-primary);
    font-size: 14px;
    outline: none;
}

.search-box input::placeholder {
    color: var(--text-muted);
}

.asset-class-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.filter-chip {
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: 20px;
    padding: 6px 12px;
    color: var(--text-secondary);
    font-size: 12px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 4px;
    transition: all 0.2s ease;
}

.filter-chip:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
}

.filter-chip.active {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}

.chip-icon {
    font-size: 14px;
}

/* Opportunity Grid */
.opportunity-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 16px;
}

/* Opportunity Card */
.opportunity-card {
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 12px;
    padding: 16px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.opportunity-card:hover {
    border-color: var(--primary-blue);
    box-shadow: 0 8px 32px color-mix(in srgb, var(--text-accent) 15%, transparent);
    transform: translateY(-2px);
}

.opp-card-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
}

.asset-class-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: 4px;
    padding: 4px 8px;
    font-size: 11px;
    color: var(--primary-blue);
}

.asset-class-badge.large {
    font-size: 13px;
    padding: 6px 12px;
}

.badge-icon {
    font-size: 12px;
}

.status-badge {
    font-size: 10px;
    padding: 3px 8px;
    border-radius: 4px;
    text-transform: uppercase;
    font-weight: 600;
    letter-spacing: 0.5px;
}

.status-blue { background: color-mix(in srgb, var(--text-accent) 20%, transparent); color: var(--primary-blue); }
.status-green { background: color-mix(in srgb, var(--status-success) 20%, transparent); color: var(--status-success); }
.status-yellow { background: color-mix(in srgb, var(--status-warning) 20%, transparent); color: var(--status-warning); }
.status-red { background: color-mix(in srgb, var(--status-error) 20%, transparent); color: var(--status-error); }
.status-purple { background: rgba(156, 39, 176, 0.2); color: #ce93d8; }
.status-gray { background: rgba(107, 124, 147, 0.2); color: var(--text-muted); }
.status-teal { background: rgba(0, 188, 212, 0.2); color: #80deea; }

.opp-title {
    font-family: var(--font-display);
    font-size: 15px;
    font-weight: 600;
    margin: 0 0 8px 0;
    color: var(--text-primary);
}

.opp-description {
    font-size: 12px;
    color: var(--text-secondary);
    margin: 0 0 16px 0;
    line-height: 1.5;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.opp-metrics {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
    margin-bottom: 16px;
}

.metric {
    text-align: center;
}

.metric-value {
    display: block;
    font-family: var(--font-mono);
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
}

.metric-label {
    font-size: 9px;
    color: var(--text-muted);
    text-transform: uppercase;
}

.opp-card-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-top: 12px;
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.matching-model {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 11px;
    color: var(--text-muted);
}

.model-icon {
    font-size: 14px;
}

.biomimicry-badge {
    font-size: 16px;
    filter: drop-shadow(0 0 4px color-mix(in srgb, var(--status-success) 50%, transparent));
    cursor: help;
}

.data-proofs-count {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 11px;
    color: var(--status-success);
}

.proofs-icon {
    font-size: 12px;
}

/* Empty State */
.empty-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 60px 20px;
    text-align: center;
}

.empty-icon {
    font-size: 48px;
    margin-bottom: 16px;
    opacity: 0.5;
}

.empty-state h3 {
    font-family: var(--font-display);
    font-size: 18px;
    margin: 0 0 8px 0;
    color: var(--text-primary);
}

.empty-state p {
    font-size: 13px;
    color: var(--text-muted);
    margin: 0 0 20px 0;
}

/* Buttons */
.primary-btn {
    background: linear-gradient(135deg, var(--primary-blue), var(--secondary-blue));
    border: none;
    border-radius: 8px;
    padding: 12px 24px;
    color: var(--star-white);
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
}

.primary-btn:hover:not(:disabled) {
    filter: brightness(1.1);
    box-shadow: 0 4px 16px var(--primary-blue-glow);
}

.primary-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.secondary-btn {
    background: transparent;
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 12px 24px;
    color: var(--text-secondary);
    font-size: 14px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.secondary-btn:hover:not(:disabled) {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}

/* My Opportunities View */
.my-opportunities-view {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.my-opps-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 16px;
}

/* Active Positions View */
.active-positions-view {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.positions-summary {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 16px;
}

.summary-card {
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 12px;
    padding: 20px;
}

.summary-card h4 {
    font-size: 12px;
    color: var(--text-muted);
    margin: 0 0 8px 0;
    text-transform: uppercase;
}

.summary-value {
    font-family: var(--font-display);
    font-size: 28px;
    font-weight: 700;
    color: var(--text-primary);
}

.summary-card.providing .summary-value {
    color: var(--primary-blue);
}

.summary-card.receiving .summary-value {
    color: var(--status-success);
}

.summary-label {
    font-size: 11px;
    color: var(--text-muted);
}

/* Opportunity Detail View */
.opportunity-detail-view {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.detail-header {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.back-btn {
    background: transparent;
    border: none;
    color: var(--text-muted);
    font-size: 13px;
    cursor: pointer;
    padding: 0;
    align-self: flex-start;
}

.back-btn:hover {
    color: var(--primary-blue);
}

.detail-title-section h2 {
    font-family: var(--font-display);
    font-size: 20px;
    margin: 12px 0 8px 0;
}

.detail-description {
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 1.5;
    margin: 0;
}

.detail-actions {
    display: flex;
    gap: 12px;
}

.detail-tabs {
    display: flex;
    gap: 4px;
    border-bottom: 1px solid var(--border-glow);
    padding-bottom: 0;
}

.detail-tab {
    background: transparent;
    border: none;
    border-bottom: 2px solid transparent;
    padding: 12px 16px;
    color: var(--text-muted);
    font-size: 13px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.detail-tab:hover {
    color: var(--text-primary);
}

.detail-tab.active {
    color: var(--primary-blue);
    border-bottom-color: var(--primary-blue);
}

.detail-content {
    padding-top: 8px;
}

/* Overview Tab */
.overview-tab {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.terms-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 16px;
}

.term-card {
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 16px;
}

.term-label {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    margin-bottom: 8px;
}

.term-value {
    font-family: var(--font-mono);
    font-size: 16px;
    color: var(--text-primary);
}

.additional-terms h4 {
    font-size: 14px;
    margin: 0 0 12px 0;
    color: var(--text-primary);
}

.additional-terms ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.additional-terms li {
    padding: 8px 0;
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    font-size: 13px;
    color: var(--text-secondary);
}

.term-name {
    color: var(--text-muted);
    margin-right: 8px;
}

/* Collateral Tab */
.collateral-tab {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.collateral-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.collateral-header h4 {
    margin: 0;
    font-size: 14px;
}

.verification-badge {
    font-size: 11px;
    padding: 4px 10px;
    border-radius: 4px;
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    color: var(--status-success);
}

.collateral-details {
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 16px;
}

.detail-row {
    display: flex;
    justify-content: space-between;
    padding: 12px 0;
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.detail-row:last-child {
    border-bottom: none;
}

.detail-label {
    color: var(--text-muted);
    font-size: 13px;
}

.detail-value {
    color: var(--text-primary);
    font-size: 13px;
    text-align: right;
}

.detail-value.highlight {
    font-family: var(--font-mono);
    font-weight: 600;
    color: var(--primary-blue);
}

.trust-score {
    font-size: 11px;
    color: var(--status-success);
    margin-left: 8px;
}

.encumbrances h5 {
    font-size: 13px;
    color: var(--text-primary);
    margin: 0 0 12px 0;
}

.encumbrances ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.encumbrances li {
    padding: 8px 12px;
    background: color-mix(in srgb, var(--status-warning) 10%, transparent);
    border-radius: 4px;
    font-size: 12px;
    color: var(--status-warning);
    margin-bottom: 8px;
}

/* Data Proofs Tab */
.data-proofs-tab {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.proofs-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 12px;
}

.proof-card {
    background: var(--card-bg);
    border: 1px solid rgba(107, 124, 147, 0.3);
    border-radius: 8px;
    padding: 14px;
    transition: all 0.2s ease;
}

.proof-card.verified {
    border-color: color-mix(in srgb, var(--status-success) 30%, transparent);
}

.proof-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 10px;
}

.proof-category {
    font-size: 10px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.visibility-badge {
    font-size: 11px;
    color: var(--text-secondary);
}

.proof-label {
    font-size: 13px;
    color: var(--text-primary);
    margin-bottom: 12px;
}

.proof-footer {
    font-size: 11px;
}

.verified-badge {
    color: var(--status-success);
}

.pending-badge {
    color: var(--text-muted);
}

/* Matching Tab */
.matching-tab {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.matching-model-display {
    text-align: center;
    padding: 24px;
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 12px;
}

.model-icon-large {
    font-size: 48px;
    margin-bottom: 12px;
}

.matching-model-display h3 {
    font-family: var(--font-display);
    font-size: 18px;
    margin: 0 0 8px 0;
}

.model-description {
    font-size: 13px;
    color: var(--text-secondary);
}

.model-config {
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 16px;
}

.config-details {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.config-row {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
}

.config-row span:first-child {
    color: var(--text-muted);
}

.config-row span:last-child {
    color: var(--text-primary);
    font-family: var(--font-mono);
}

.config-note {
    color: var(--text-muted);
    font-size: 13px;
    text-align: center;
}

/* Biomimicry Tab */
.biomimicry-tab {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.biomimicry-enabled {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.bio-header {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px;
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 30%, transparent);
    border-radius: 8px;
}

.bio-icon {
    font-size: 28px;
    filter: drop-shadow(0 0 8px color-mix(in srgb, var(--status-success) 50%, transparent));
}

.bio-header h3 {
    margin: 0;
    font-size: 16px;
    color: var(--status-success);
}

.bio-section h4 {
    font-size: 13px;
    color: var(--text-muted);
    text-transform: uppercase;
    margin: 0 0 12px 0;
}

.metrics-list, .patterns-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.metric-item, .pattern-item {
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 12px;
}

.metric-item {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.metric-name, .pattern-name {
    font-size: 13px;
    font-weight: 500;
    color: var(--text-primary);
}

.metric-desc, .pattern-desc {
    font-size: 11px;
    color: var(--text-muted);
}

.pattern-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
}

.pattern-icon {
    font-size: 24px;
}

.pattern-info {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.biomimicry-disabled {
    text-align: center;
    padding: 40px;
    color: var(--text-muted);
}

.bio-icon-muted {
    font-size: 48px;
    opacity: 0.3;
    margin-bottom: 16px;
}

.biomimicry-disabled h4 {
    margin: 0 0 8px 0;
    color: var(--text-secondary);
}

.biomimicry-disabled p {
    font-size: 13px;
    margin: 0;
}

/* Create Wizard */
.create-wizard {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.wizard-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 24px;
}

.wizard-header h2 {
    font-family: var(--font-display);
    font-size: 18px;
    margin: 0;
}

.cancel-btn {
    background: transparent;
    border: none;
    font-size: 20px;
    color: var(--text-muted);
    cursor: pointer;
}

.cancel-btn:hover {
    color: var(--accent-red);
}

.wizard-progress {
    display: flex;
    justify-content: space-between;
    margin-bottom: 32px;
    padding: 0 20px;
}

.progress-step {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    opacity: 0.4;
}

.progress-step.current, .progress-step.completed {
    opacity: 1;
}

.step-number {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--card-bg);
    border: 2px solid var(--border-glow);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 600;
}

.progress-step.current .step-number {
    background: var(--primary-blue);
    border-color: var(--primary-blue);
    color: var(--star-white);
}

.progress-step.completed .step-number {
    background: var(--status-success);
    border-color: var(--status-success);
    color: var(--dark-bg);
}

.step-label {
    font-size: 10px;
    color: var(--text-muted);
    text-align: center;
}

.progress-step.current .step-label {
    color: var(--primary-blue);
}

.wizard-content {
    flex: 1;
    overflow-y: auto;
}

.wizard-step {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.wizard-step h3 {
    font-family: var(--font-display);
    font-size: 16px;
    margin: 0;
}

.wizard-nav {
    display: flex;
    justify-content: space-between;
    padding-top: 24px;
    border-top: 1px solid var(--border-glow);
    margin-top: 24px;
}

/* Asset Class Step */
.asset-class-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 12px;
}

.asset-class-option {
    background: var(--card-bg);
    border: 2px solid var(--border-glow);
    border-radius: 12px;
    padding: 20px;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s ease;
}

.asset-class-option:hover {
    border-color: var(--primary-blue);
    transform: translateY(-2px);
}

.asset-class-option.selected {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.option-icon {
    font-size: 32px;
    margin-bottom: 12px;
}

.option-label {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 8px;
}

.option-desc {
    font-size: 11px;
    color: var(--text-muted);
    line-height: 1.4;
}

/* Form Elements */
.form-group {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.form-group label {
    font-size: 12px;
    color: var(--text-muted);
    text-transform: uppercase;
}

.form-group input, .form-group textarea {
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 12px;
    color: var(--text-primary);
    font-size: 14px;
    font-family: inherit;
    outline: none;
    transition: border-color 0.2s ease;
}

.form-group input:focus, .form-group textarea:focus {
    border-color: var(--primary-blue);
}

.form-group textarea {
    min-height: 100px;
    resize: vertical;
}

.form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}

.form-row.three-col {
    grid-template-columns: repeat(3, 1fr);
}

/* Data Proofs Step */
.step-description {
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 1.5;
}

.proof-categories {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 12px;
}

.proof-category-card {
    display: flex;
    align-items: center;
    gap: 12px;
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 14px;
}

.category-icon {
    font-size: 24px;
}

.category-name {
    flex: 1;
    font-size: 13px;
    color: var(--text-primary);
}

.add-proof-btn {
    background: transparent;
    border: 1px solid var(--primary-blue);
    border-radius: 4px;
    padding: 4px 10px;
    color: var(--primary-blue);
    font-size: 11px;
    cursor: pointer;
}

.add-proof-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.skip-note {
    font-size: 12px;
    color: var(--text-muted);
    text-align: center;
    font-style: italic;
}

/* Matching Model Step */
.matching-model-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 12px;
}

.matching-model-option {
    background: var(--card-bg);
    border: 2px solid var(--border-glow);
    border-radius: 12px;
    padding: 16px;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s ease;
}

.matching-model-option:hover {
    border-color: var(--primary-blue);
}

.matching-model-option.selected {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.model-icon {
    font-size: 28px;
    margin-bottom: 10px;
}

.model-name {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 6px;
}

.model-desc {
    font-size: 11px;
    color: var(--text-muted);
    line-height: 1.4;
}

/* Biomimicry Step */
.bio-toggle {
    padding: 20px;
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
}

.toggle-label {
    display: flex;
    align-items: center;
    gap: 12px;
    cursor: pointer;
}

.toggle-label input[type="checkbox"] {
    width: 20px;
    height: 20px;
    cursor: pointer;
}

.toggle-text {
    font-size: 14px;
    color: var(--text-primary);
}

.bio-preview {
    background: color-mix(in srgb, var(--status-success) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 20%, transparent);
    border-radius: 8px;
    padding: 20px;
}

.bio-preview h4 {
    font-size: 14px;
    margin: 0 0 16px 0;
    color: var(--status-success);
}

.bio-feature {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 12px;
}

.feature-icon {
    font-size: 20px;
}

.feature-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.feature-name {
    font-size: 13px;
    color: var(--text-primary);
}

.feature-desc {
    font-size: 11px;
    color: var(--text-muted);
}

.advanced-note {
    font-size: 11px;
    color: var(--text-muted);
    text-align: center;
    margin-top: 16px;
    font-style: italic;
}

/* Review Step */
.review-sections {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 16px;
    margin-bottom: 24px;
}

.review-section {
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 16px;
}

.review-section h4 {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    margin: 0 0 8px 0;
}

.review-section p {
    font-size: 14px;
    color: var(--text-primary);
    margin: 0;
}

.review-section .value {
    font-family: var(--font-mono);
    font-size: 18px;
    font-weight: 600;
    color: var(--primary-blue);
}

.review-terms p {
    margin-bottom: 4px;
}

.submit-btn {
    width: 100%;
    background: linear-gradient(135deg, var(--primary-blue), var(--secondary-blue));
    border: none;
    border-radius: 8px;
    padding: 16px;
    color: var(--star-white);
    font-size: 16px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
}

.submit-btn:hover {
    filter: brightness(1.1);
    box-shadow: 0 4px 24px var(--primary-blue-glow);
}

/* ============================================================================
   PRESTIGE HUD STYLES
   ============================================================================ */

/* Full HUD */
.prestige-hud {
    background: linear-gradient(135deg, rgba(30, 35, 45, 0.95), rgba(20, 25, 35, 0.98));
    border: 1px solid rgba(100, 120, 150, 0.3);
    border-radius: 12px;
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 16px;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.05);
}

.hud-identity {
    display: flex;
    align-items: center;
    gap: 12px;
}

.hud-avatar {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: linear-gradient(135deg, #1a1f2e, #2a3040);
    border: 3px solid currentColor;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    font-weight: bold;
    color: var(--text-primary);
}

.hud-name-tier {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.hud-name {
    font-size: 16px;
    font-weight: 600;
    color: var(--text-primary);
}

.hud-tier-badge {
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: white;
}

/* Stats Grid */
.hud-stats-grid {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 12px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 8px;
}

.stat-bar-row {
    display: grid;
    grid-template-columns: 80px 1fr 30px;
    align-items: center;
    gap: 8px;
}

.stat-bar-label {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.stat-bar-track {
    height: 6px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 3px;
    overflow: hidden;
}

.stat-bar-fill {
    height: 100%;
    border-radius: 3px;
    transition: width 0.3s ease;
    box-shadow: 0 0 8px currentColor;
}

.stat-bar-level {
    font-size: 12px;
    font-weight: 700;
    text-align: right;
}

/* Trust Meter */
.hud-trust-meter {
    padding: 12px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 8px;
}

.trust-header {
    display: flex;
    justify-content: space-between;
    margin-bottom: 8px;
}

.trust-label {
    font-size: 12px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.trust-value {
    font-size: 12px;
    font-weight: 700;
    color: var(--text-primary);
}

.trust-bar-container {
    height: 8px;
    background: linear-gradient(90deg, 
        color-mix(in srgb, var(--status-error) 30%, transparent), 
        color-mix(in srgb, var(--status-warning) 30%, transparent), 
        color-mix(in srgb, var(--status-success) 30%, transparent)
    );
    border-radius: 4px;
    overflow: hidden;
}

.trust-bar-fill {
    height: 100%;
    background: linear-gradient(90deg, #ef4444, #f59e0b, #22c55e);
    border-radius: 4px;
    transition: width 0.3s ease;
}

/* Quick Stats */
.hud-quick-stats {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
}

.quick-stat {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 8px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 6px;
}

.qs-value {
    font-size: 14px;
    font-weight: 700;
    color: var(--text-primary);
}

.qs-label {
    font-size: 9px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

/* Level Progress */
.hud-progress {
    padding: 12px;
    background: rgba(100, 120, 200, 0.1);
    border-radius: 8px;
    border: 1px solid rgba(100, 120, 200, 0.2);
}

.progress-header {
    display: flex;
    justify-content: space-between;
    margin-bottom: 8px;
    font-size: 11px;
    color: var(--text-secondary);
}

.progress-bar-container {
    height: 6px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 3px;
    overflow: hidden;
}

.progress-bar-fill {
    height: 100%;
    background: linear-gradient(90deg, #3b82f6, #a855f7);
    border-radius: 3px;
    box-shadow: 0 0 10px rgba(59, 130, 246, 0.5);
}

/* Compact HUD */
.prestige-hud-compact {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 12px;
    background: rgba(0, 0, 0, 0.3);
    border-radius: 8px;
    border: 1px solid rgba(100, 120, 150, 0.2);
}

.hud-tier {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 4px 8px;
    border: 2px solid;
    border-radius: 6px;
}

.tier-label {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
}

.tier-points {
    font-size: 9px;
    color: var(--text-muted);
}

.hud-trust {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 8px;
}

.hud-trust .trust-bar {
    flex: 1;
    height: 4px;
    background: linear-gradient(90deg, #22c55e, #3b82f6, #a855f7);
    border-radius: 2px;
}

.hud-trust .trust-value {
    font-size: 12px;
    font-weight: 700;
    color: var(--text-primary);
}

/* Counterparty Card */
.counterparty-card {
    background: linear-gradient(135deg, rgba(30, 35, 45, 0.9), rgba(25, 30, 40, 0.95));
    border: 1px solid rgba(100, 120, 150, 0.25);
    border-radius: 12px;
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.counterparty-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.counterparty-role {
    font-size: 10px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.counterparty-tier {
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 10px;
    font-weight: 700;
    color: white;
}

.counterparty-identity {
    display: flex;
    align-items: center;
    gap: 12px;
}

.counterparty-avatar {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.3);
    border: 2px solid;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: bold;
    font-size: 16px;
}

.counterparty-name {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
}

.counterparty-trust {
    display: flex;
    align-items: center;
    gap: 8px;
}

.mini-trust-bar {
    flex: 1;
    height: 4px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 2px;
    overflow: hidden;
}

.mini-trust-fill {
    height: 100%;
    background: linear-gradient(90deg, #22c55e, #3b82f6);
    border-radius: 2px;
}

.mini-trust-label {
    font-size: 10px;
    color: var(--text-muted);
}

.counterparty-highlights {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
}

.highlight {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 8px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 6px;
}

.h-icon {
    font-size: 14px;
    margin-bottom: 2px;
}

.h-value {
    font-size: 13px;
    font-weight: 700;
    color: var(--text-primary);
}

.h-label {
    font-size: 9px;
    color: var(--text-muted);
    text-align: center;
}

.counterparty-prestige-bars {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 8px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 6px;
}

/* Model Access Badge */
.model-access-badge {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 30%, transparent);
    border-radius: 8px;
}

.model-access-badge.locked {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border-color: color-mix(in srgb, var(--status-error) 30%, transparent);
}

.model-icon {
    font-size: 16px;
}

.model-name {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
}

.access-status {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
}

.access-status.unlocked {
    color: #22c55e;
}

.access-status.locked {
    color: #ef4444;
}

/* Offer Modal */
.offer-modal {
    background: var(--card-bg);
    border-radius: 16px;
    padding: 24px;
    max-width: 600px;
    width: 90%;
    max-height: 85vh;
    overflow-y: auto;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
}

.modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}

.modal-header h2 {
    margin: 0;
    font-size: 20px;
    color: var(--text-primary);
}

.close-btn {
    background: none;
    border: none;
    font-size: 20px;
    color: var(--text-muted);
    cursor: pointer;
}

.close-btn:hover {
    color: var(--text-primary);
}

.offer-opp-summary {
    padding: 16px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 8px;
    margin-bottom: 16px;
}

.offer-opp-summary h3 {
    margin: 0 0 8px 0;
    font-size: 16px;
    color: var(--text-primary);
}

.opp-key-terms {
    display: flex;
    gap: 16px;
    font-size: 13px;
    color: var(--text-secondary);
}

.offer-your-profile {
    margin-bottom: 16px;
}

.offer-your-profile h4 {
    margin: 0 0 8px 0;
    font-size: 12px;
    color: var(--text-muted);
    text-transform: uppercase;
}

.access-warning {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px;
    background: color-mix(in srgb, var(--status-error) 15%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    border-radius: 8px;
    margin-bottom: 16px;
    font-size: 13px;
    color: #ef4444;
}

.offer-form {
    display: flex;
    flex-direction: column;
    gap: 16px;
    margin-bottom: 20px;
}

.form-row {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.form-row label {
    font-size: 12px;
    color: var(--text-secondary);
    font-weight: 500;
}

.form-row input,
.form-row textarea {
    padding: 10px 12px;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(100, 120, 150, 0.3);
    border-radius: 6px;
    color: var(--text-primary);
    font-size: 14px;
}

.form-row input:focus,
.form-row textarea:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.form-row input:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.form-hint {
    font-size: 11px;
    color: var(--text-muted);
}

.conditions-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 8px;
}

.condition-chip {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 4px 8px;
    background: rgba(59, 130, 246, 0.2);
    border: 1px solid rgba(59, 130, 246, 0.3);
    border-radius: 4px;
    font-size: 12px;
    color: var(--text-primary);
}

.remove-condition {
    background: none;
    border: none;
    color: var(--text-muted);
    cursor: pointer;
    font-size: 12px;
    padding: 0;
}

.add-condition {
    display: flex;
    gap: 8px;
}

.add-condition input {
    flex: 1;
}

.add-condition button {
    padding: 8px 16px;
    background: var(--primary-blue);
    border: none;
    border-radius: 6px;
    color: white;
    font-weight: 600;
    cursor: pointer;
}

.offer-summary {
    padding: 16px;
    background: rgba(59, 130, 246, 0.1);
    border: 1px solid rgba(59, 130, 246, 0.2);
    border-radius: 8px;
    margin-bottom: 20px;
}

.summary-row {
    display: flex;
    justify-content: space-between;
    padding: 8px 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
    font-size: 13px;
    color: var(--text-secondary);
}

.summary-row:last-child {
    border-bottom: none;
}

.summary-value {
    font-weight: 600;
    color: var(--text-primary);
}

.summary-value.bonus {
    color: #22c55e;
}

.modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
}

/* Offers List */
.offers-empty {
    text-align: center;
    padding: 40px;
    color: var(--text-muted);
}

.offers-empty .empty-icon {
    font-size: 40px;
    margin-bottom: 12px;
}

.offers-list {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.offer-card {
    background: rgba(0, 0, 0, 0.2);
    border: 1px solid rgba(100, 120, 150, 0.2);
    border-radius: 12px;
    padding: 16px;
}

.offer-card-header {
    margin-bottom: 16px;
}

.offer-terms {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    margin-bottom: 12px;
}

.offer-term {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.term-label {
    font-size: 10px;
    color: var(--text-muted);
    text-transform: uppercase;
}

.term-value {
    font-size: 16px;
    font-weight: 700;
    color: var(--text-primary);
}

.offer-conditions {
    padding: 12px;
    background: color-mix(in srgb, var(--status-warning) 10%, transparent);
    border-radius: 6px;
    margin-bottom: 12px;
}

.conditions-label {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    display: block;
    margin-bottom: 8px;
}

.offer-conditions ul {
    margin: 0;
    padding-left: 16px;
    font-size: 12px;
    color: var(--text-secondary);
}

.offer-actions {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.offer-status {
    padding: 4px 8px;
    border-radius: 4px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
}

.action-buttons {
    display: flex;
    gap: 8px;
}

.reject-btn {
    padding: 8px 16px;
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--status-error) 50%, transparent);
    border-radius: 6px;
    color: #ef4444;
    font-size: 12px;
    cursor: pointer;
}

.reject-btn:hover {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
}

.accept-btn {
    padding: 8px 16px;
    background: #22c55e;
    border: none;
    border-radius: 6px;
    color: white;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
}

.accept-btn:hover {
    background: #16a34a;
}



/* ============================================================================
   WHITELIST MANAGEMENT PANEL
   ============================================================================ */

.whitelist-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--dark-bg);
    color: var(--text-primary);
    padding: 20px;
    gap: 16px;
}

.whitelist-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
}

.header-title h1 {
    margin: 0;
    font-size: 24px;
    color: var(--text-primary);
}

.header-title .subtitle {
    margin: 4px 0 0 0;
    font-size: 13px;
    color: var(--text-muted);
}

.header-actions {
    display: flex;
    gap: 12px;
    align-items: center;
}

.view-toggle {
    display: flex;
    background: rgba(0, 0, 0, 0.3);
    border-radius: 6px;
    padding: 2px;
}

.toggle-btn {
    padding: 6px 12px;
    background: transparent;
    border: none;
    border-radius: 4px;
    color: var(--text-muted);
    font-size: 12px;
    cursor: pointer;
    transition: all 0.2s;
}

.toggle-btn:hover {
    color: var(--text-primary);
}

.toggle-btn.active {
    background: var(--primary-blue);
    color: white;
}

.add-invite-btn {
    padding: 8px 16px;
    background: var(--primary-blue);
    border: none;
    border-radius: 6px;
    color: white;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.2s;
}

.add-invite-btn:hover {
    background: #2563eb;
}

/* Stats Bar */
.stats-bar {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}

.stat-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 12px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 8px;
    border: 1px solid rgba(100, 120, 150, 0.2);
}

.stat-item.registered { border-color: color-mix(in srgb, var(--status-success) 30%, transparent); }
.stat-item.pending { border-color: color-mix(in srgb, var(--status-warning) 30%, transparent); }

.stat-item .stat-value {
    font-size: 24px;
    font-weight: 700;
    color: var(--text-primary);
}

.stat-item .stat-label {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
}

/* Error Banner */
.error-banner {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 16px;
    background: color-mix(in srgb, var(--status-error) 15%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    border-radius: 8px;
    color: #ef4444;
}

.error-banner button {
    background: none;
    border: none;
    color: #ef4444;
    cursor: pointer;
}

/* Loading State */
.loading-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 40px;
    color: var(--text-muted);
    gap: 12px;
}

.spinner {
    width: 24px;
    height: 24px;
    border: 2px solid rgba(255, 255, 255, 0.1);
    border-top-color: var(--primary-blue);
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

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

/* Content Area */
.whitelist-content {
    flex: 1;
    overflow: hidden;
}

/* List View */
.list-view {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 12px;
}

.list-filters {
    display: flex;
    gap: 12px;
}

.list-filters .search-box {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(100, 120, 150, 0.2);
    border-radius: 6px;
}

.list-filters .search-box input {
    flex: 1;
    background: transparent;
    border: none;
    color: var(--text-primary);
    font-size: 13px;
    outline: none;
}

.list-filters select {
    padding: 8px 12px;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(100, 120, 150, 0.2);
    border-radius: 6px;
    color: var(--text-primary);
    font-size: 13px;
}

/* Entries Table */
.entries-table {
    flex: 1;
    overflow: auto;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 8px;
    border: 1px solid rgba(100, 120, 150, 0.2);
}

.table-header {
    display: grid;
    grid-template-columns: 2fr 1.5fr 100px 70px 80px 1.5fr 100px;
    gap: 12px;
    padding: 12px 16px;
    background: rgba(0, 0, 0, 0.3);
    border-bottom: 1px solid rgba(100, 120, 150, 0.2);
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    position: sticky;
    top: 0;
}

.table-row {
    display: grid;
    grid-template-columns: 2fr 1.5fr 100px 70px 80px 1.5fr 100px;
    gap: 12px;
    padding: 12px 16px;
    border-bottom: 1px solid rgba(100, 120, 150, 0.1);
    font-size: 13px;
    align-items: center;
}

.table-row:hover {
    background: rgba(255, 255, 255, 0.02);
}

.table-row.revoked {
    opacity: 0.5;
}

.col-status {
    padding: 4px 8px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    text-align: center;
}

.status-pending {
    background: color-mix(in srgb, var(--status-warning) 20%, transparent);
    color: #f59e0b;
}

.status-registered {
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    color: #22c55e;
}

.status-revoked {
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
    color: #ef4444;
}

.depth-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    font-size: 11px;
    font-weight: 700;
    background: linear-gradient(135deg, 
        hsl(calc(200 + var(--depth, 0) * 30), 70%, 50%),
        hsl(calc(220 + var(--depth, 0) * 30), 70%, 40%)
    );
    color: white;
}

.col-referred {
    font-size: 12px;
    color: var(--text-secondary);
}

.revoke-btn {
    padding: 4px 12px;
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--status-error) 50%, transparent);
    border-radius: 4px;
    color: #ef4444;
    font-size: 11px;
    cursor: pointer;
    transition: all 0.2s;
}

.revoke-btn:hover {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
}

/* Graph View */
.graph-view {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 16px;
}

.graph-legend {
    display: flex;
    gap: 16px;
    padding: 12px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 8px;
}

.legend-item {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 11px;
    color: var(--text-muted);
}

.legend-item::before {
    content: "";
    width: 12px;
    height: 12px;
    border-radius: 4px;
}

.legend-item.founder::before { background: #f59e0b; }
.legend-item.direct::before { background: #3b82f6; }
.legend-item.chain::before { background: #a855f7; }
.legend-item.pending::before { border: 2px dashed var(--text-muted); }
.legend-item.registered::before { background: #22c55e; }

.graph-container {
    flex: 1;
    overflow: auto;
    padding: 20px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 8px;
}

.tree-node-container {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.tree-node {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    background: rgba(30, 35, 45, 0.9);
    border-radius: 8px;
    border: 2px solid;
    width: fit-content;
    min-width: 200px;
}

.tree-node.founder { border-color: #f59e0b; }
.tree-node.direct { border-color: #3b82f6; }
.tree-node.chain { border-color: #a855f7; }
.tree-node.pending { border-style: dashed; }
.tree-node.registered { box-shadow: 0 0 0 2px color-mix(in srgb, var(--status-success) 30%, transparent); }

.node-avatar {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.3);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 14px;
    color: var(--text-primary);
}

.node-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.node-name {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
}

.node-email {
    font-size: 11px;
    color: var(--text-muted);
}

.node-stats {
    margin-left: auto;
}

.stat-badge {
    padding: 4px 8px;
    background: rgba(0, 0, 0, 0.3);
    border-radius: 4px;
    font-size: 10px;
    color: var(--text-secondary);
}

.tree-children {
    margin-left: 40px;
    padding-left: 20px;
    border-left: 2px solid rgba(100, 120, 150, 0.3);
    display: flex;
    flex-direction: column;
    gap: 8px;
}

/* Stats View */
.stats-view {
    display: flex;
    flex-direction: column;
    gap: 24px;
    overflow: auto;
}

.stats-cards {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
}

.stats-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 24px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 12px;
    border: 1px solid rgba(100, 120, 150, 0.2);
}

.stats-card.highlight { border-color: var(--primary-blue); }
.stats-card.success { border-color: #22c55e; }
.stats-card.warning { border-color: #f59e0b; }
.stats-card.info { border-color: #06b6d4; }

.stats-card .card-value {
    font-size: 36px;
    font-weight: 700;
    color: var(--text-primary);
}

.stats-card .card-label {
    font-size: 12px;
    color: var(--text-muted);
    margin-top: 4px;
}

.stats-card .card-pct {
    font-size: 14px;
    color: #22c55e;
    margin-top: 4px;
}

.stats-section {
    background: rgba(0, 0, 0, 0.2);
    border-radius: 12px;
    padding: 20px;
}

.stats-section h3 {
    margin: 0 0 16px 0;
    font-size: 16px;
    color: var(--text-primary);
}

/* Top Referrers */
.top-referrers {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.referrer-row {
    display: grid;
    grid-template-columns: 40px 1fr 2fr 1fr;
    align-items: center;
    gap: 12px;
    padding: 12px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 8px;
}

.referrer-row .rank {
    font-size: 14px;
    font-weight: 700;
    color: var(--primary-blue);
}

.referrer-row .referrer-name {
    font-weight: 600;
    color: var(--text-primary);
}

.referrer-row .referrer-email {
    font-size: 12px;
    color: var(--text-muted);
}

.referrer-row .referrer-count {
    font-size: 13px;
    color: #22c55e;
    text-align: right;
}

/* Depth Chart */
.depth-chart {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.depth-row {
    display: grid;
    grid-template-columns: 80px 1fr 60px;
    align-items: center;
    gap: 12px;
}

.depth-label {
    font-size: 13px;
    color: var(--text-secondary);
}

.depth-bar-container {
    height: 20px;
    background: rgba(0, 0, 0, 0.3);
    border-radius: 4px;
    overflow: hidden;
}

.depth-bar {
    height: 100%;
    background: linear-gradient(90deg, var(--primary-blue), #a855f7);
    border-radius: 4px;
    transition: width 0.3s;
}

.depth-count {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
    text-align: right;
}

/* Add Invite Modal */
.add-invite-modal {
    background: var(--card-bg);
    border-radius: 12px;
    padding: 24px;
    width: 400px;
    max-width: 90%;
}

.add-invite-modal .modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}

.add-invite-modal .modal-header h2 {
    margin: 0;
    font-size: 18px;
    color: var(--text-primary);
}

.add-invite-modal .modal-body {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.add-invite-modal .form-group label {
    display: block;
    margin-bottom: 6px;
    font-size: 12px;
    color: var(--text-secondary);
}

.add-invite-modal .form-group input,
.add-invite-modal .form-group textarea {
    width: 100%;
    padding: 10px 12px;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(100, 120, 150, 0.3);
    border-radius: 6px;
    color: var(--text-primary);
    font-size: 14px;
    box-sizing: border-box;
}

.add-invite-modal .form-group textarea {
    min-height: 80px;
    resize: vertical;
}

.add-invite-modal .modal-footer {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    margin-top: 24px;
}

.empty-stats {
    text-align: center;
    padding: 40px;
    color: var(--text-muted);
}



/* ============================================================================
   SCOREBOARD PANEL - GRAPHITE & WHITE WITH CYBERPUNK HIGHLIGHTS
   ============================================================================
   LttR Trading Scoreboard - clean graphite with neon accents
   ============================================================================ */

/* Scoreboard CSS Variables */
.scoreboard-panel {
    --scb-graphite-dark: #1a1a1e;
    --scb-graphite: #242428;
    --scb-graphite-light: #2e2e34;
    --scb-graphite-hover: #38383e;
    --scb-white: #ffffff;
    --scb-white-muted: #e8e8ec;
    --scb-white-dim: #a8a8b0;
    --scb-accent-blue: #00a8ff;
    --scb-accent-red: #ff1744;
    --scb-accent-green: var(--status-success);
    --scb-accent-gold: var(--status-warning);
}

.scoreboard-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--scb-graphite-dark);
    color: var(--scb-white);
    font-family: 'IBM Plex Mono', monospace;
    overflow: hidden;
}

/* ========== HEADER ========== */

.scoreboard-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    background: linear-gradient(135deg, var(--scb-graphite) 0%, var(--scb-graphite-dark) 100%);
    border-bottom: 1px solid var(--scb-graphite-light);
    flex-shrink: 0;
}

.scoreboard-logo {
    display: flex;
    align-items: center;
    gap: 8px;
}

.scoreboard-logo .logo-icon {
    font-size: 24px;
    color: var(--scb-accent-blue);
    text-shadow: 0 0 10px var(--scb-accent-blue);
}

.scoreboard-logo .logo-text {
    font-size: 18px;
    font-weight: 700;
    color: var(--scb-white);
    letter-spacing: 2px;
}

.scoreboard-logo .logo-sub {
    font-size: 10px;
    color: var(--scb-white-dim);
    letter-spacing: 3px;
    margin-left: 4px;
}

.scoreboard-nav {
    display: flex;
    gap: 4px;
}

.scoreboard-nav .nav-item {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 8px 14px;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 6px;
    color: var(--scb-white-dim);
    font-family: inherit;
    font-size: 12px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.scoreboard-nav .nav-item:hover {
    background: var(--scb-graphite-hover);
    color: var(--scb-white);
}

.scoreboard-nav .nav-item.active {
    background: var(--scb-graphite-light);
    border-color: var(--scb-accent-blue);
    color: var(--scb-accent-blue);
    box-shadow: 0 0 8px color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.scoreboard-nav .nav-icon {
    font-size: 14px;
}

/* ========== LOADING & ERROR ========== */

.scoreboard-loading {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 60px;
    gap: 16px;
    color: var(--scb-white-dim);
}

.scoreboard-spinner {
    width: 32px;
    height: 32px;
    border: 3px solid var(--scb-graphite-light);
    border-top-color: var(--scb-accent-blue);
    border-radius: 50%;
    animation: scb-spin 1s linear infinite;
}

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

.mini-spinner {
    width: 16px;
    height: 16px;
    border: 2px solid var(--scb-graphite-light);
    border-top-color: var(--scb-accent-blue);
    border-radius: 50%;
    animation: scb-spin 0.8s linear infinite;
}

.scoreboard-error {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 16px;
    padding: 12px 16px;
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border: 1px solid var(--scb-accent-red);
    border-radius: 8px;
}

.scoreboard-error .error-icon {
    font-size: 20px;
    color: var(--scb-accent-red);
}

.scoreboard-error .error-text {
    flex: 1;
    color: var(--scb-accent-red);
}

.scoreboard-error .error-retry {
    padding: 6px 12px;
    background: var(--scb-accent-red);
    border: none;
    border-radius: 4px;
    color: var(--scb-white);
    font-family: inherit;
    font-size: 12px;
    cursor: pointer;
    transition: opacity 0.2s;
}

.scoreboard-error .error-retry:hover {
    opacity: 0.85;
}

/* ========== CONTENT AREA ========== */

.scoreboard-content {
    flex: 1;
    padding: 16px;
    overflow-y: auto;
}

.scoreboard-content::-webkit-scrollbar {
    width: 6px;
}

.scoreboard-content::-webkit-scrollbar-track {
    background: var(--scb-graphite-dark);
}

.scoreboard-content::-webkit-scrollbar-thumb {
    background: var(--scb-graphite-light);
    border-radius: 3px;
}

/* ========== SECTIONS ========== */

.section-title {
    font-size: 12px;
    font-weight: 600;
    color: var(--scb-white-dim);
    letter-spacing: 1.5px;
    text-transform: uppercase;
    margin-bottom: 12px;
}

.section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 12px;
}

.view-all-btn {
    padding: 4px 10px;
    background: transparent;
    border: 1px solid var(--scb-graphite-light);
    border-radius: 4px;
    color: var(--scb-white-dim);
    font-family: inherit;
    font-size: 11px;
    cursor: pointer;
    transition: all 0.2s;
}

.view-all-btn:hover {
    border-color: var(--scb-accent-blue);
    color: var(--scb-accent-blue);
}

/* ========== ACTIVE RUNS GRID ========== */

.active-runs-section {
    margin-bottom: 24px;
}

.active-runs-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
}

.active-run-card {
    background: var(--scb-graphite);
    border: 1px solid var(--scb-graphite-light);
    border-radius: 8px;
    padding: 14px;
    transition: border-color 0.2s;
}

.active-run-card:hover {
    border-color: var(--scb-graphite-hover);
}

.active-run-card.accent-live {
    border-left: 3px solid var(--scb-accent-red);
}

.active-run-card.accent-paper {
    border-left: 3px solid var(--scb-accent-blue);
}

.active-run-card.accent-backtest {
    border-left: 3px solid var(--scb-white-dim);
}

.active-run-card .run-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 10px;
}

.active-run-card .run-mode {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 1px;
    color: var(--scb-white-dim);
}

.active-run-card .run-status {
    font-size: 10px;
    padding: 2px 8px;
    border-radius: 10px;
    font-weight: 600;
}

.run-status.status-running {
    background: color-mix(in srgb, var(--status-success) 15%, transparent);
    color: var(--scb-accent-green);
}

.run-status.status-completed {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    color: var(--scb-accent-blue);
}

.run-status.status-cancelled,
.run-status.status-failed {
    background: color-mix(in srgb, var(--status-error) 15%, transparent);
    color: var(--scb-accent-red);
}

.active-run-card .run-details {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.active-run-card .run-id {
    font-size: 12px;
    color: var(--scb-white-muted);
    font-family: 'IBM Plex Mono', monospace;
}

.active-run-card .run-day {
    font-size: 11px;
    color: var(--scb-white-dim);
}

.active-run-card .view-run-btn {
    margin-top: 8px;
    padding: 6px 12px;
    background: var(--scb-graphite-light);
    border: none;
    border-radius: 4px;
    color: var(--scb-white);
    font-family: inherit;
    font-size: 11px;
    cursor: pointer;
    transition: background 0.2s;
}

.active-run-card .view-run-btn:hover {
    background: var(--scb-accent-blue);
}

.active-run-card .run-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 12px 0;
    color: var(--scb-white-dim);
}

.active-run-card .empty-icon {
    font-size: 24px;
    opacity: 0.5;
}

.active-run-card .empty-text {
    font-size: 11px;
    margin-top: 4px;
}

/* ========== STATS GRID ========== */

.quick-stats-section {
    margin-bottom: 24px;
}

.stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
}

.stat-card {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px;
    background: var(--scb-graphite);
    border: 1px solid var(--scb-graphite-light);
    border-radius: 8px;
}

.stat-card .stat-icon {
    font-size: 20px;
    color: var(--scb-accent-blue);
}

.stat-card .stat-content {
    display: flex;
    flex-direction: column;
}

.stat-card .stat-value {
    font-size: 18px;
    font-weight: 700;
    color: var(--scb-white);
}

.stat-card .stat-label {
    font-size: 10px;
    color: var(--scb-white-dim);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* ========== TABLES ========== */

.runs-table-container {
    overflow-x: auto;
}

.runs-table,
.trades-table,
.leaderboard-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}

.runs-table th,
.trades-table th,
.leaderboard-table th {
    padding: 10px 12px;
    text-align: left;
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 1px;
    text-transform: uppercase;
    color: var(--scb-white-dim);
    background: var(--scb-graphite);
    border-bottom: 1px solid var(--scb-graphite-light);
}

.runs-table td,
.trades-table td,
.leaderboard-table td {
    padding: 10px 12px;
    border-bottom: 1px solid var(--scb-graphite-light);
    color: var(--scb-white-muted);
}

.runs-table tr:hover td,
.trades-table tr:hover td,
.leaderboard-table tr:hover td {
    background: var(--scb-graphite);
}

.run-id-cell {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 11px;
}

.date-cell {
    font-size: 11px;
    color: var(--scb-white-dim);
}

.price-cell {
    font-family: 'IBM Plex Mono', monospace;
}

.symbol-cell {
    font-weight: 600;
    color: var(--scb-white);
}

/* Mode & Status Badges */

.mode-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 8px;
    border-radius: 4px;
    font-size: 10px;
    font-weight: 600;
}

.mode-badge.mode-live {
    background: color-mix(in srgb, var(--status-error) 15%, transparent);
    color: var(--scb-accent-red);
}

.mode-badge.mode-paper {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    color: var(--scb-accent-blue);
}

.mode-badge.mode-backtest {
    background: rgba(255, 255, 255, 0.1);
    color: var(--scb-white-dim);
}

.status-badge {
    display: inline-block;
    padding: 3px 8px;
    border-radius: 4px;
    font-size: 10px;
    font-weight: 600;
}

.status-badge.status-running {
    background: color-mix(in srgb, var(--status-success) 15%, transparent);
    color: var(--scb-accent-green);
}

.status-badge.status-completed {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    color: var(--scb-accent-blue);
}

.status-badge.status-open {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    color: var(--scb-accent-blue);
}

.status-badge.status-closed {
    background: rgba(255, 255, 255, 0.1);
    color: var(--scb-white-dim);
}

.status-badge.status-cancelled,
.status-badge.status-failed {
    background: color-mix(in srgb, var(--status-error) 15%, transparent);
    color: var(--scb-accent-red);
}

.row-action-btn {
    padding: 4px 10px;
    background: var(--scb-graphite-light);
    border: none;
    border-radius: 4px;
    color: var(--scb-white);
    font-size: 12px;
    cursor: pointer;
    transition: background 0.2s;
}

.row-action-btn:hover {
    background: var(--scb-accent-blue);
}

/* Positive/Negative values */

.positive {
    color: var(--scb-accent-green) !important;
}

.negative {
    color: var(--scb-accent-red) !important;
}

/* ========== FILTERS BAR ========== */

.filters-bar {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 16px;
    padding: 12px;
    background: var(--scb-graphite);
    border-radius: 8px;
}

.filter-group {
    display: flex;
    align-items: center;
    gap: 8px;
}

.filter-group label {
    font-size: 11px;
    color: var(--scb-white-dim);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.filter-select {
    padding: 6px 10px;
    background: var(--scb-graphite-dark);
    border: 1px solid var(--scb-graphite-light);
    border-radius: 4px;
    color: var(--scb-white);
    font-family: inherit;
    font-size: 12px;
    cursor: pointer;
}

.filter-select:focus {
    outline: none;
    border-color: var(--scb-accent-blue);
}

.filter-loading {
    margin-left: auto;
}

/* ========== RUN DETAIL VIEW ========== */

.run-detail-view {
    position: relative;
}

.run-detail-header {
    margin-bottom: 20px;
}

.run-title-section {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 8px;
}

.run-title {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 18px;
    font-weight: 600;
    color: var(--scb-white);
}

.mode-indicator {
    font-size: 16px;
}

.run-status-large {
    padding: 4px 12px;
    border-radius: 6px;
    font-size: 11px;
    font-weight: 600;
}

.run-meta {
    font-size: 11px;
    color: var(--scb-white-dim);
}

/* Summary Grid */

.run-summary-grid {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 10px;
    margin-bottom: 20px;
}

.summary-stat {
    display: flex;
    flex-direction: column;
    padding: 12px;
    background: var(--scb-graphite);
    border: 1px solid var(--scb-graphite-light);
    border-radius: 6px;
}

.summary-stat .stat-label {
    font-size: 10px;
    color: var(--scb-white-dim);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 4px;
}

.summary-stat .stat-value {
    font-size: 16px;
    font-weight: 700;
    color: var(--scb-white);
}

.summary-stat.positive .stat-value {
    color: var(--scb-accent-green);
}

.summary-stat.negative .stat-value {
    color: var(--scb-accent-red);
}

/* Detail Tabs */

.detail-tabs {
    display: flex;
    gap: 4px;
    margin-bottom: 16px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--scb-graphite-light);
}

.tab-btn {
    padding: 8px 16px;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 6px;
    color: var(--scb-white-dim);
    font-family: inherit;
    font-size: 12px;
    cursor: pointer;
    transition: all 0.2s;
}

.tab-btn:hover {
    background: var(--scb-graphite);
}

.tab-btn.active {
    background: var(--scb-graphite);
    border-color: var(--scb-accent-blue);
    color: var(--scb-accent-blue);
}

.tab-content {
    min-height: 200px;
}

/* ========== BREAKDOWN CARDS ========== */

.breakdown-section {
    margin-bottom: 24px;
}

.breakdown-title {
    font-size: 13px;
    font-weight: 600;
    color: var(--scb-white);
    margin-bottom: 12px;
}

.exit-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
}

.exit-card {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 12px;
    background: var(--scb-graphite);
    border-radius: 6px;
}

.exit-card .exit-label {
    font-size: 11px;
    font-weight: 600;
    color: var(--scb-white);
}

.exit-card .exit-count {
    font-size: 10px;
    color: var(--scb-white-dim);
}

.exit-card .exit-pnl {
    font-size: 14px;
    font-weight: 700;
}

.team-breakdown-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
}

.team-breakdown-card {
    padding: 14px;
    background: var(--scb-graphite);
    border-radius: 6px;
}

.team-breakdown-card .team-name {
    display: block;
    font-size: 14px;
    font-weight: 700;
    color: var(--scb-accent-blue);
    margin-bottom: 10px;
}

.team-breakdown-card .team-stats {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.team-breakdown-card .team-stat {
    display: flex;
    justify-content: space-between;
}

.team-breakdown-card .team-stat .label {
    font-size: 11px;
    color: var(--scb-white-dim);
}

.team-breakdown-card .team-stat .value {
    font-size: 11px;
    font-weight: 600;
    color: var(--scb-white);
}

/* ========== TRADE DETAIL ========== */

.trade-detail-view {
    position: relative;
}

.back-btn {
    margin-bottom: 16px;
    padding: 8px 14px;
    background: var(--scb-graphite);
    border: 1px solid var(--scb-graphite-light);
    border-radius: 6px;
    color: var(--scb-white);
    font-family: inherit;
    font-size: 12px;
    cursor: pointer;
    transition: border-color 0.2s;
}

.back-btn:hover {
    border-color: var(--scb-accent-blue);
}

.trade-header {
    margin-bottom: 16px;
}

.trade-title {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 20px;
    font-weight: 700;
}

.trade-symbol {
    color: var(--scb-white);
}

.trade-status {
    font-size: 11px;
    padding: 4px 10px;
    border-radius: 4px;
}

.trade-metrics-grid {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 10px;
    margin-bottom: 20px;
}

.metric-card {
    display: flex;
    flex-direction: column;
    padding: 12px;
    background: var(--scb-graphite);
    border-radius: 6px;
}

.metric-card .metric-label {
    font-size: 10px;
    color: var(--scb-white-dim);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 4px;
}

.metric-card .metric-value {
    font-size: 14px;
    font-weight: 700;
    color: var(--scb-white);
}

.context-section,
.signals-section,
.explanation-section {
    margin-bottom: 20px;
}

.context-section h3,
.signals-section h3,
.explanation-section h3 {
    font-size: 13px;
    font-weight: 600;
    color: var(--scb-white);
    margin-bottom: 12px;
}

.context-grid,
.signals-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
}

.context-item,
.signal-card {
    padding: 10px;
    background: var(--scb-graphite);
    border-radius: 6px;
}

.context-item .label,
.signal-card .team-name {
    font-size: 10px;
    color: var(--scb-white-dim);
    text-transform: uppercase;
}

.context-item .value {
    font-size: 13px;
    font-weight: 600;
    color: var(--scb-white);
}

.signal-card {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.signal-card .signal-direction {
    font-size: 12px;
    font-weight: 600;
    color: var(--scb-white);
}

.signal-card .signal-conviction {
    font-size: 11px;
    color: var(--scb-accent-blue);
}

/* ========== DECISION EXPLANATION ========== */

.decision-block {
    padding: 14px;
    background: var(--scb-graphite);
    border-radius: 8px;
    margin-bottom: 12px;
}

.decision-block h4 {
    font-size: 12px;
    font-weight: 600;
    color: var(--scb-white-dim);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 10px;
}

.decision-block .verdict {
    font-size: 14px;
    font-weight: 600;
    color: var(--scb-white);
    margin-bottom: 12px;
    padding: 8px 12px;
    background: var(--scb-graphite-dark);
    border-radius: 4px;
    border-left: 3px solid var(--scb-accent-blue);
}

.reasoning-chain {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.reasoning-step {
    display: flex;
    gap: 10px;
    padding: 8px;
    background: var(--scb-graphite-dark);
    border-radius: 4px;
}

.reasoning-step .step-num {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    background: var(--scb-graphite-light);
    border-radius: 50%;
    font-size: 11px;
    font-weight: 600;
    color: var(--scb-accent-blue);
    flex-shrink: 0;
}

.reasoning-step .step-component {
    font-size: 11px;
    font-weight: 600;
    color: var(--scb-white);
    margin-bottom: 2px;
}

.reasoning-step .step-rationale {
    font-size: 11px;
    color: var(--scb-white-dim);
    line-height: 1.4;
}

.counterfactual {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--scb-graphite-light);
}

.counterfactual h5 {
    font-size: 11px;
    color: var(--scb-white-dim);
    margin-bottom: 8px;
}

.cf-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
}

.cf-item {
    padding: 8px;
    background: var(--scb-graphite-dark);
    border-radius: 4px;
}

.cf-item .cf-label {
    font-size: 10px;
    color: var(--scb-white-dim);
    margin-bottom: 2px;
}

.cf-item .cf-value {
    font-size: 13px;
    font-weight: 600;
}

/* ========== LEADERBOARDS VIEW ========== */

.leaderboards-view {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.leaderboard-panels {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
}

.leaderboard-panel {
    background: var(--scb-graphite);
    border-radius: 8px;
    overflow: hidden;
}

.leaderboard-panel .panel-title {
    padding: 12px 14px;
    font-size: 12px;
    font-weight: 600;
    color: var(--scb-white);
    background: var(--scb-graphite-dark);
    border-bottom: 1px solid var(--scb-graphite-light);
}

.rank-cell {
    width: 40px;
}

.rank-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    font-size: 11px;
    font-weight: 700;
    background: var(--scb-graphite-light);
    color: var(--scb-white);
}

.rank-badge.rank-1 {
    background: linear-gradient(135deg, #ffd700, var(--status-warning));
    color: #1a1a1e;
}

.rank-badge.rank-2 {
    background: linear-gradient(135deg, #c0c0c0, #a0a0a0);
    color: #1a1a1e;
}

.rank-badge.rank-3 {
    background: linear-gradient(135deg, #cd7f32, #a06020);
    color: #1a1a1e;
}

.trend-cell {
    display: flex;
    align-items: center;
    gap: 4px;
}

.trend-icon.trend-up {
    color: var(--scb-accent-green);
}

.trend-icon.trend-down {
    color: var(--scb-accent-red);
}

/* ========== TEAMS VIEW ========== */

.teams-view {}

.teams-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 12px;
}

.team-card {
    padding: 14px;
    background: var(--scb-graphite);
    border: 1px solid var(--scb-graphite-light);
    border-radius: 8px;
    transition: border-color 0.2s;
}

.team-card:hover {
    border-color: var(--scb-accent-blue);
}

.team-card .team-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 8px;
}

.team-card .team-name {
    font-size: 14px;
    font-weight: 700;
    color: var(--scb-white);
}

.team-card .team-status {
    font-size: 10px;
    padding: 2px 8px;
    border-radius: 10px;
}

.team-card .team-status.status-active {
    background: color-mix(in srgb, var(--status-success) 15%, transparent);
    color: var(--scb-accent-green);
}

.team-card .team-status.status-idle {
    background: rgba(255, 255, 255, 0.1);
    color: var(--scb-white-dim);
}

.team-card .team-focus {
    font-size: 11px;
    color: var(--scb-white-dim);
    margin-bottom: 10px;
}

.team-card .team-agents,
.team-card .team-port {
    display: flex;
    justify-content: space-between;
    font-size: 11px;
    padding: 4px 0;
}

.team-card .agents-label,
.team-card .port-label {
    color: var(--scb-white-dim);
}

.team-card .agents-count,
.team-card .port-value {
    color: var(--scb-white);
    font-weight: 600;
}

/* ========== EMPTY STATE ========== */

.empty-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 40px;
    color: var(--scb-white-dim);
}

.empty-state .empty-icon {
    font-size: 32px;
    opacity: 0.5;
    margin-bottom: 12px;
}

.empty-state .empty-text {
    font-size: 13px;
}

/* ========== LOADING OVERLAY ========== */

.loading-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(26, 26, 30, 0.8);
    z-index: 10;
}

/* ========== RESPONSIVE ========== */

@media (max-width: 1200px) {
    .run-summary-grid,
    .trade-metrics-grid {
        grid-template-columns: repeat(3, 1fr);
    }
    
    .exit-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .context-grid,
    .signals-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .cf-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 900px) {
    .active-runs-grid {
        grid-template-columns: 1fr;
    }
    
    .stats-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .leaderboard-panels {
        grid-template-columns: 1fr;
    }
    
    .team-breakdown-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 600px) {
    .scoreboard-header {
        flex-direction: column;
        gap: 12px;
    }
    
    .scoreboard-nav {
        width: 100%;
        overflow-x: auto;
    }
    
    .run-summary-grid,
    .trade-metrics-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .stats-grid {
        grid-template-columns: 1fr;
    }
}

/* ============================================================================
   TRADING VISUALIZATION PANEL
   GPU-Native Trading Visualization for LttR
   ============================================================================ */

.trading-viz-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--panel-bg);
    color: var(--text-primary);
    overflow: hidden;
}

/* Header */
.viz-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 16px;
    border-bottom: 1px solid var(--border-glow);
    background: color-mix(in srgb, var(--card-bg) 80%, transparent);
}

.viz-title {
    display: flex;
    align-items: center;
    gap: 8px;
}

.viz-icon {
    font-size: 1.4em;
}

.viz-icon-right {
    font-size: 1.2em;
    margin-left: 4px;
}

.viz-title {
    display: flex;
    align-items: center;
    gap: 6px;
}

.viz-label {
    font-weight: 600;
    font-size: 1.1em;
    letter-spacing: 0.05em;
    background: linear-gradient(135deg, var(--status-error), #ffffff, #4444ff);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.viz-label {
    font-family: var(--font-display);
    font-size: 1.1em;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    background: linear-gradient(135deg, var(--primary-blue), var(--accent-red));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.viz-nav {
    display: flex;
    gap: 4px;
}

.viz-nav-btn {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    background: transparent;
    border: 1px solid var(--grid-color);
    border-radius: 4px;
    color: var(--text-secondary);
    font-family: var(--font-mono);
    font-size: 0.85em;
    cursor: pointer;
    transition: all 0.2s ease;
}

.viz-nav-btn:hover:not(.disabled) {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}

.viz-nav-btn.active {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-color: var(--primary-blue);
    color: var(--primary-blue);
    box-shadow: 0 0 10px var(--primary-blue-glow);
}

.viz-nav-btn.disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

.viz-nav-btn .nav-icon {
    font-size: 1.1em;
}

/* Content Area */
.viz-content {
    flex: 1;
    overflow: auto;
    padding: 16px;
}

/* Loading/Error States */
.viz-loading,
.viz-error,
.viz-tenant-warning {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 48px;
    gap: 16px;
}

.viz-spinner {
    width: 40px;
    height: 40px;
    border: 3px solid var(--grid-color);
    border-top-color: var(--primary-blue);
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

.viz-error {
    color: var(--accent-red);
}

.viz-tenant-warning {
    color: var(--status-warning);
}

.warning-icon,
.error-icon {
    font-size: 2em;
}

/* Status Bar */
.viz-status-bar {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 16px;
    background: color-mix(in srgb, var(--card-bg) 90%, transparent);
    border-top: 1px solid var(--grid-color);
    font-family: var(--font-mono);
    font-size: 0.75em;
    color: var(--text-muted);
}

.connection-indicator {
    display: flex;
    align-items: center;
    gap: 6px;
}

.status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
}

.status-dot.connected {
    background: var(--status-success);
    box-shadow: 0 0 8px var(--status-success);
}

.status-dot.connecting {
    background: var(--status-warning);
    animation: pulse 1s ease-in-out infinite;
}

.status-dot.disconnected {
    background: var(--text-muted);
}

.status-dot.error {
    background: var(--status-error);
    box-shadow: 0 0 8px var(--status-error);
}

.status-text {
    font-size: 0.75em;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.status-text.connected {
    color: var(--status-success);
}

.status-text.connecting {
    color: var(--status-warning);
}

.status-text.disconnected {
    color: var(--text-color-secondary);
}

.status-text.error {
    color: var(--status-error);
}

/* Endpoint display in status bar */
.viz-endpoint {
    font-size: 0.7em;
    color: var(--text-color-secondary);
    font-family: 'Space Mono', monospace;
    opacity: 0.7;
}

/* No Data Overlay */
.no-data-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.7);
    backdrop-filter: blur(4px);
    z-index: 10;
}

.no-data-content {
    text-align: center;
    padding: 40px;
    background: var(--panel-bg);
    border-radius: 12px;
    border: 1px solid var(--border-color);
    max-width: 400px;
}

.no-data-icon {
    font-size: 3em;
    margin-bottom: 16px;
}

.no-data-icon.spinning {
    animation: spin 1.5s linear infinite;
}

@keyframes spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

.no-data-content h3 {
    margin: 0 0 12px 0;
    font-family: var(--font-display);
    color: var(--text-color-primary);
}

.no-data-content p {
    margin: 0 0 8px 0;
    color: var(--text-color-secondary);
    font-size: 0.9em;
}

.no-data-cmd {
    display: block;
    margin-top: 16px;
    padding: 12px 16px;
    background: var(--code-bg);
    border-radius: 6px;
    font-family: 'Space Mono', monospace;
}

/* Viz Status Indicator - Non-blocking */
.viz-status-indicator {
    position: absolute;
    top: 8px;
    right: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    background: rgba(0, 0, 0, 0.6);
    border-radius: 12px;
    font-size: 0.75em;
    z-index: 5;
    pointer-events: none;
}

.status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
}

.status-dot.connected {
    background: var(--color-success, #22c55e);
    box-shadow: 0 0 6px var(--color-success, #22c55e);
}

.status-dot.connecting {
    background: var(--color-warning, #f59e0b);
    animation: pulse 1s ease-in-out infinite;
}

.status-dot.disconnected {
    background: var(--color-error, #ef4444);
}

@keyframes pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.4; }
    font-size: 0.8em;
    color: var(--accent-green);
    border: 1px solid var(--border-color);
}

.no-data-hint {
    font-style: italic;
    opacity: 0.8;
}

/* Make viz-content relative for overlay positioning */
.viz-content {
    position: relative;
}

/* Equity Curve View */
.equity-curve-view {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 16px;
}

.curve-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.curve-header h3 {
    margin: 0;
    font-family: var(--font-display);
    font-size: 1.1em;
    color: var(--primary-blue);
}

.curve-stats {
    display: flex;
    gap: 16px;
}

.curve-stats .stat {
    display: flex;
    gap: 4px;
}

.curve-stats .stat-label {
    color: var(--text-muted);
}

.curve-stats .stat-value {
    font-family: var(--font-mono);
    color: var(--text-primary);
}

.curve-stats .stat.positive .stat-value {
    color: var(--status-success);
}

.curve-stats .stat.negative .stat-value {
    color: var(--status-error);
}

/* SVG Chart */
.curve-chart {
    flex: 1;
    min-height: 300px;
    background: rgba(0, 10, 20, 0.5);
    border: 1px solid var(--grid-color);
    border-radius: 8px;
    overflow: hidden;
}

.equity-svg {
    width: 100%;
    height: 100%;
}

.equity-svg .grid-line {
    stroke: var(--grid-color);
    stroke-width: 1;
}

.equity-svg .grid-label {
    fill: var(--text-muted);
    font-family: var(--font-mono);
    font-size: 10px;
    text-anchor: end;
}

.equity-svg .equity-line {
    stroke: var(--primary-blue);
    stroke-width: 2;
    filter: drop-shadow(0 0 4px var(--primary-blue-glow));
}

.equity-svg .drawdown-area {
    stroke: var(--accent-red);
    stroke-width: 1;
    opacity: 0.5;
}

.equity-svg .trade-marker {
    cursor: pointer;
    transition: all 0.2s ease;
}

.equity-svg .trade-marker.buy {
    fill: var(--status-success);
}

.equity-svg .trade-marker.sell {
    fill: var(--accent-red);
}

.equity-svg .trade-marker:hover {
    r: 8;
    filter: drop-shadow(0 0 6px currentColor);
}

.equity-svg .tooltip-bg {
    fill: var(--card-bg);
    stroke: var(--border-glow);
    stroke-width: 1;
}

.equity-svg .tooltip-text {
    fill: var(--text-primary);
    font-family: var(--font-mono);
    font-size: 11px;
    text-anchor: middle;
}

.empty-chart {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    gap: 12px;
    color: var(--text-muted);
}

.empty-chart .empty-icon {
    font-size: 3em;
    opacity: 0.5;
}

/* Trade List */
.trade-list {
    max-height: 150px;
    overflow-y: auto;
}

.trade-list h4 {
    margin: 0 0 8px;
    font-family: var(--font-display);
    font-size: 0.9em;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.1em;
}

.trade-items {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.trade-item {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 10px;
    background: color-mix(in srgb, var(--card-bg) 60%, transparent);
    border: 1px solid var(--grid-color);
    border-radius: 4px;
    font-family: var(--font-mono);
    font-size: 0.85em;
}

.trade-item.buy {
    border-color: color-mix(in srgb, var(--status-success) 30%, transparent);
}

.trade-item.sell {
    border-color: color-mix(in srgb, var(--status-error) 30%, transparent);
}

.trade-item .trade-icon {
    font-size: 1.1em;
}

.trade-item.buy .trade-icon {
    color: var(--status-success);
}

.trade-item.sell .trade-icon {
    color: var(--accent-red);
}

.trade-item .trade-symbol {
    font-weight: 500;
    color: var(--text-primary);
}

.trade-item .trade-price {
    color: var(--text-muted);
}

/* Placeholder Views */
.viz-placeholder {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 400px;
    gap: 16px;
    text-align: center;
}

.viz-placeholder .placeholder-icon {
    font-size: 4em;
    opacity: 0.5;
}

.viz-placeholder h3 {
    margin: 0;
    font-family: var(--font-display);
    font-size: 1.3em;
    color: var(--primary-blue);
}

.viz-placeholder p {
    margin: 0;
    color: var(--text-secondary);
    max-width: 400px;
}

.viz-placeholder .placeholder-status {
    font-family: var(--font-mono);
    font-size: 0.85em;
    color: var(--text-muted);
    padding: 4px 12px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: 4px;
}

.viz-placeholder .placeholder-note {
    font-size: 0.85em;
    color: var(--status-warning);
}

/* Fake Heatmap Preview */
.heatmap-grid {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 16px;
    opacity: 0.6;
}

.heatmap-row {
    display: flex;
    gap: 2px;
}

.heatmap-cell {
    width: 20px;
    height: 20px;
    border-radius: 2px;
}

/* GPU Canvas */
.gpu-canvas-container {
    position: relative;
    width: 100%;
    height: 100%;
    min-height: 400px;
}

.gpu-canvas {
    width: 100%;
    height: 100%;
    background: #000;
}

.gpu-status {
    position: absolute;
    bottom: 8px;
    right: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 4px 8px;
    background: rgba(0, 0, 0, 0.7);
    border-radius: 4px;
    font-family: var(--font-mono);
    font-size: 0.7em;
    color: var(--text-muted);
}

.gpu-indicator {
    width: 6px;
    height: 6px;
    border-radius: 50%;
}

.gpu-indicator.available {
    background: var(--status-success);
}

.gpu-indicator.unavailable {
    background: var(--status-warning);
}

.gpu-fallback {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    background: color-mix(in srgb, var(--card-bg) 90%, transparent);
}

.fallback-message {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    padding: 32px;
    text-align: center;
}

.fallback-icon {
    font-size: 2em;
    color: var(--status-warning);
}

.fallback-text {
    font-family: var(--font-display);
    color: var(--text-primary);
}

.fallback-detail {
    color: var(--text-muted);
    font-size: 0.9em;
    max-width: 300px;
}

/* Animations */
@keyframes pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
}

/* ============================================================================
   CORRELATION HEATMAP
   ============================================================================ */

.heatmap-view {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 12px;
}

.heatmap-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
}

.heatmap-header h3 {
    margin: 0;
    font-family: var(--font-display);
    font-size: 1.1em;
    color: var(--accent-red);
}

.heatmap-controls {
    display: flex;
    align-items: center;
    gap: 6px;
}

.zoom-btn {
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid var(--grid-color);
    border-radius: 4px;
    color: var(--primary-blue);
    font-size: 1.1em;
    cursor: pointer;
    transition: all 0.2s ease;
}

.zoom-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-color: var(--primary-blue);
}

.zoom-btn.reset {
    font-size: 0.9em;
}

.zoom-level {
    font-family: var(--font-mono);
    font-size: 0.8em;
    color: var(--text-muted);
    min-width: 45px;
    text-align: center;
}

.heatmap-stats {
    display: flex;
    gap: 16px;
}

.heatmap-stats .stat {
    display: flex;
    gap: 4px;
    font-family: var(--font-mono);
    font-size: 0.85em;
}

.heatmap-stats .stat-label {
    color: var(--text-muted);
}

.heatmap-stats .stat-value {
    color: var(--text-primary);
}

.heatmap-stats .stat.regime .stat-value {
    color: var(--status-success);
    text-transform: uppercase;
}

/* Heatmap container */
.heatmap-container {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    background: rgba(0, 10, 20, 0.5);
    border: 1px solid var(--grid-color);
    border-radius: 8px;
    overflow: auto;
    padding: 16px;
}

.heatmap-canvas {
    position: relative;
}

.heatmap-grid {
    display: grid;
    gap: 0;
}

.heatmap-cell {
    cursor: crosshair;
    transition: opacity 0.1s ease;
}

.heatmap-cell:hover {
    opacity: 0.8;
    outline: 1px solid var(--primary-blue);
    z-index: 1;
}

.heatmap-canvas-element {
    image-rendering: pixelated;
    cursor: crosshair;
}

/* Tooltip */
.heatmap-tooltip {
    position: absolute;
    top: 8px;
    right: 8px;
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 6px;
    padding: 8px 12px;
    font-family: var(--font-mono);
    pointer-events: none;
    z-index: 100;
}

.tooltip-pair {
    font-size: 0.9em;
    color: var(--text-secondary);
    margin-bottom: 4px;
}

.tooltip-value {
    font-size: 1.1em;
    font-weight: 600;
}

.tooltip-value.positive {
    color: var(--primary-blue);
}

.tooltip-value.negative {
    color: var(--accent-red);
}

/* Legend */
.heatmap-legend {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 8px;
}

.legend-label {
    font-family: var(--font-mono);
    font-size: 0.75em;
    color: var(--text-muted);
}

.legend-gradient {
    width: 200px;
    height: 16px;
    background: linear-gradient(to right, 
        rgb(255, 50, 50),
        rgb(255, 150, 150),
        rgb(255, 255, 255),
        rgb(150, 150, 255),
        rgb(50, 50, 255)
    );
    border-radius: 4px;
    border: 1px solid var(--grid-color);
}

.empty-heatmap {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    gap: 12px;
    color: var(--text-muted);
}

.empty-heatmap .empty-icon {
    font-size: 3em;
    opacity: 0.5;
}

/* ============================================================================
   3D REGIME PHASE SPACE
   ============================================================================ */

.phase-space-view {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 12px;
}

.phase-space-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
}

.phase-space-header h3 {
    margin: 0;
    font-family: var(--font-display);
    font-size: 1.1em;
    color: #4ecdc4;
}

.phase-space-controls {
    display: flex;
    align-items: center;
    gap: 12px;
}

.control-btn {
    padding: 6px 12px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid var(--grid-color);
    border-radius: 4px;
    color: var(--primary-blue);
    cursor: pointer;
    transition: all 0.2s ease;
}

.control-btn:hover,
.control-btn.active {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-color: var(--primary-blue);
}

.control-hint {
    font-size: 0.8em;
    color: var(--text-muted);
}

.phase-space-stats {
    display: flex;
    gap: 16px;
}

.phase-space-stats .stat {
    display: flex;
    gap: 4px;
    font-family: var(--font-mono);
    font-size: 0.85em;
}

.phase-space-stats .stat-label {
    color: var(--text-muted);
}

.phase-space-stats .stat-value {
    color: var(--text-primary);
}

.phase-space-stats .stat-value.velocity {
    color: var(--status-success);
}

.regime-counts {
    display: flex;
    gap: 4px;
}

.regime-badge {
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.75em;
    font-weight: 600;
    color: #000;
}

/* Phase space canvas */
.phase-space-canvas {
    flex: 1;
    min-height: 300px;
    background: rgba(0, 10, 20, 0.5);
    border: 1px solid var(--grid-color);
    border-radius: 8px;
    overflow: hidden;
    cursor: grab;
}

.phase-space-canvas:active {
    cursor: grabbing;
}

.phase-space-svg {
    width: 100%;
    height: 100%;
}

.phase-point {
    cursor: pointer;
    transition: all 0.2s ease;
}

.phase-point:hover {
    filter: drop-shadow(0 0 8px currentColor);
}

.point-glow {
    animation: pulse-glow 1.5s ease-in-out infinite;
}

@keyframes pulse-glow {
    0%, 100% { opacity: 0.3; }
    50% { opacity: 0.6; }
}

.phase-tooltip .tooltip-bg {
    fill: var(--card-bg);
    stroke: var(--border-glow);
    stroke-width: 1;
}

.phase-tooltip .tooltip-text {
    font-family: var(--font-mono);
    font-size: 9px;
    text-anchor: middle;
}

.phase-tooltip .tooltip-text.symbol {
    fill: var(--text-primary);
    font-weight: 600;
}

.phase-tooltip .tooltip-text.regime {
    font-size: 8px;
}

.axis-line {
    stroke: var(--grid-color);
    stroke-width: 1;
    opacity: 0.5;
}

/* Phase space legend */
.phase-space-legend {
    display: flex;
    justify-content: center;
    gap: 16px;
    padding: 8px;
}

.legend-item {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.8em;
}

.legend-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
}

.legend-name {
    color: var(--text-secondary);
}

.empty-phase-space {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    gap: 12px;
    color: var(--text-muted);
}

.empty-phase-space .empty-icon {
    font-size: 3em;
    opacity: 0.5;
}

/* ============================================================================
   ATTENTION HEAD FLOW
   ============================================================================ */

.attention-view {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 12px;
}

.attention-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
}

.attention-header h3 {
    margin: 0;
    font-family: var(--font-display);
    font-size: 1.1em;
    color: #ff00ff;
}

.attention-controls {
    display: flex;
    align-items: center;
    gap: 16px;
}

.head-tabs {
    display: flex;
    gap: 4px;
}

.head-tab {
    padding: 4px 10px;
    background: rgba(255, 0, 255, 0.1);
    border: 1px solid var(--grid-color);
    border-radius: 4px;
    color: var(--text-secondary);
    font-family: var(--font-mono);
    font-size: 0.8em;
    cursor: pointer;
    transition: all 0.2s ease;
}

.head-tab:hover {
    border-color: rgba(255, 0, 255, 0.5);
}

.head-tab.selected {
    background: rgba(255, 0, 255, 0.3);
    border-color: #ff00ff;
    color: var(--text-primary);
}

.head-tab.dominant {
    position: relative;
}

.dominant-star {
    color: var(--status-warning);
    margin-left: 2px;
}

.head-tab.all {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.speed-control {
    display: flex;
    align-items: center;
    gap: 8px;
}

.speed-label {
    font-size: 0.8em;
    color: var(--text-muted);
}

.speed-control input[type="range"] {
    width: 80px;
}

.speed-value {
    font-family: var(--font-mono);
    font-size: 0.8em;
    color: var(--text-secondary);
    min-width: 35px;
}

.attention-stats {
    display: flex;
    gap: 16px;
}

.attention-stats .stat {
    display: flex;
    gap: 4px;
    font-family: var(--font-mono);
    font-size: 0.85em;
}

/* Attention content */
.attention-content {
    flex: 1;
    min-height: 300px;
    background: rgba(0, 10, 20, 0.5);
    border: 1px solid var(--grid-color);
    border-radius: 8px;
    overflow: hidden;
}

.attention-flow-svg {
    width: 100%;
    height: 100%;
}

.feature-node {
    cursor: pointer;
}

.feature-node .feature-rect {
    fill: color-mix(in srgb, var(--card-bg) 80%, transparent);
    stroke: var(--grid-color);
    stroke-width: 1;
    transition: all 0.2s ease;
}

.feature-node:hover .feature-rect {
    fill: rgba(0, 40, 80, 0.8);
    stroke: var(--primary-blue);
}

.feature-node .feature-text {
    fill: var(--text-secondary);
    font-family: var(--font-mono);
    font-size: 9px;
    text-anchor: middle;
}

.attention-flow {
    stroke-dasharray: 4 2;
}

.head-label {
    fill: var(--text-muted);
    font-family: var(--font-display);
    font-size: 12px;
    text-anchor: middle;
}

/* All heads grid */
.attention-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 16px;
    padding: 16px;
    height: 100%;
    overflow: auto;
}

.attention-mini-head {
    background: color-mix(in srgb, var(--card-bg) 60%, transparent);
    border: 1px solid var(--grid-color);
    border-radius: 8px;
    padding: 12px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.attention-mini-head.dominant {
    border-color: var(--status-warning);
    box-shadow: 0 0 8px color-mix(in srgb, var(--status-warning) 30%, transparent);
}

.mini-head-label {
    font-family: var(--font-mono);
    font-size: 0.9em;
    color: var(--text-primary);
    display: flex;
    align-items: center;
    gap: 4px;
}

.mini-heatmap {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
}

.mini-attention-svg {
    width: 100%;
    max-width: 120px;
    aspect-ratio: 1;
}

.mini-stats {
    font-family: var(--font-mono);
    font-size: 0.75em;
    color: var(--text-muted);
    text-align: center;
}

/* Attention legend */
.attention-legend {
    display: flex;
    justify-content: center;
    gap: 24px;
    padding: 8px;
}

.legend-section {
    display: flex;
    align-items: center;
    gap: 8px;
}

.legend-title {
    font-size: 0.8em;
    color: var(--text-muted);
}

.attention-gradient-legend {
    display: flex;
    align-items: center;
    gap: 8px;
}

.legend-gradient.attention {
    width: 100px;
    height: 12px;
    background: linear-gradient(to right, 
        rgb(0, 0, 128),
        rgb(128, 128, 0),
        rgb(255, 0, 0)
    );
    border-radius: 2px;
}

.empty-attention {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    gap: 12px;
    color: var(--text-muted);
}

.empty-attention .empty-icon {
    font-size: 3em;
    opacity: 0.5;
}

.empty-attention .empty-hint {
    font-size: 0.85em;
    opacity: 0.7;
}

/* ============================================================================
   WHAT-IF TENSOR INJECTION
   ============================================================================ */

.whatif-view {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 16px;
    overflow-y: auto;
}

.whatif-header {
    margin-bottom: 8px;
}

.whatif-header h3 {
    margin: 0 0 8px;
    font-family: var(--font-display);
    font-size: 1.1em;
    color: var(--status-warning);
}

.whatif-description {
    margin: 0;
    font-size: 0.85em;
    color: var(--text-secondary);
    max-width: 600px;
}

.whatif-controls {
    display: flex;
    flex-direction: column;
    gap: 20px;
    padding: 16px;
    background: color-mix(in srgb, var(--card-bg) 50%, transparent);
    border: 1px solid var(--grid-color);
    border-radius: 8px;
}

.control-section {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.control-section h4 {
    margin: 0;
    font-family: var(--font-display);
    font-size: 0.9em;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.1em;
}

.regime-sliders {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.slider-control {
    display: flex;
    align-items: center;
    gap: 12px;
}

.slider-label {
    min-width: 100px;
    font-family: var(--font-mono);
    font-size: 0.85em;
    color: var(--text-secondary);
}

.slider-control input[type="range"] {
    flex: 1;
    max-width: 200px;
}

.slider-value {
    min-width: 50px;
    font-family: var(--font-mono);
    font-size: 0.9em;
    text-align: right;
}

.velocity-control {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.checkbox-label {
    display: flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    font-size: 0.9em;
    color: var(--text-secondary);
}

.checkbox-label input[type="checkbox"] {
    accent-color: var(--primary-blue);
}

.control-section.actions {
    flex-direction: row;
    gap: 12px;
}

.simulate-btn {
    padding: 10px 24px;
    background: linear-gradient(135deg, var(--status-warning), #ff7700);
    border: none;
    border-radius: 6px;
    color: #000;
    font-family: var(--font-display);
    font-size: 1em;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
}

.simulate-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 16px color-mix(in srgb, var(--status-warning) 40%, transparent);
}

.simulate-btn.simulating {
    opacity: 0.7;
    cursor: wait;
}

.reset-btn {
    padding: 10px 20px;
    background: transparent;
    border: 1px solid var(--grid-color);
    border-radius: 6px;
    color: var(--text-secondary);
    font-size: 0.9em;
    cursor: pointer;
    transition: all 0.2s ease;
}

.reset-btn:hover {
    border-color: var(--text-secondary);
    color: var(--text-primary);
}

/* What-if results */
.whatif-results {
    min-height: 100px;
}

.projection-display {
    padding: 16px;
    background: rgba(0, 30, 60, 0.5);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
}

.projection-display h4 {
    margin: 0 0 16px;
    font-family: var(--font-display);
    font-size: 1em;
    color: var(--primary-blue);
}

.projection-metrics {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 16px;
}

.projection-metrics .metric {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.metric-label {
    font-size: 0.8em;
    color: var(--text-muted);
}

.metric-value {
    font-family: var(--font-mono);
    font-size: 1.4em;
    font-weight: 600;
}

.metric-value.positive {
    color: var(--status-success);
}

.metric-value.negative {
    color: var(--accent-red);
}

.metric-range {
    font-family: var(--font-mono);
    font-size: 0.75em;
    color: var(--text-muted);
}

.prob-bar {
    width: 100%;
    height: 8px;
    background: rgba(0, 0, 0, 0.3);
    border-radius: 4px;
    overflow: hidden;
    margin-top: 4px;
}

.prob-fill {
    height: 100%;
    background: linear-gradient(to right, var(--accent-red), var(--status-success));
    border-radius: 4px;
    transition: width 0.5s ease;
}

.suggestions {
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid var(--grid-color);
}

.suggestions h5 {
    margin: 0 0 12px;
    font-family: var(--font-display);
    font-size: 0.9em;
    color: var(--status-warning);
}

.suggestions ul {
    margin: 0;
    padding-left: 20px;
}

.suggestions li {
    font-size: 0.85em;
    color: var(--text-secondary);
    margin-bottom: 6px;
}

/* What-if visualization */
.whatif-viz {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 16px;
}

.regime-vector-svg {
    width: 200px;
    height: 200px;
}

.vector-bg {
    fill: color-mix(in srgb, var(--card-bg) 60%, transparent);
    stroke: var(--grid-color);
    stroke-width: 1;
}

.axis-circle {
    fill: none;
    stroke: var(--grid-color);
    stroke-width: 1;
    opacity: 0.3;
}

.axis-label {
    fill: var(--text-muted);
    font-family: var(--font-mono);
    font-size: 10px;
    text-anchor: middle;
}

.magnitude-label {
    fill: var(--text-muted);
    font-family: var(--font-mono);
    font-size: 10px;
    text-anchor: middle;
}

/* ============================================================================
   MOBILE FALLBACK & RESPONSIVE DESIGN
   ============================================================================ */

/* Mobile warning for 3D views */
@media (max-width: 768px) {
    .phase-space-view,
    .attention-view {
        position: relative;
    }
    
    .phase-space-view::before,
    .attention-view::before {
        content: "⚠️ Best viewed on desktop";
        display: block;
        padding: 8px 12px;
        background: color-mix(in srgb, var(--status-warning) 20%, transparent);
        border: 1px solid color-mix(in srgb, var(--status-warning) 50%, transparent);
        border-radius: 6px;
        color: var(--status-warning);
        font-size: 0.85em;
        text-align: center;
        margin-bottom: 12px;
    }
    
    /* Simplified phase space on mobile */
    .phase-space-canvas {
        min-height: 250px;
    }
    
    .phase-space-header,
    .attention-header {
        flex-direction: column;
        align-items: flex-start;
    }
    
    .phase-space-stats,
    .attention-stats {
        flex-wrap: wrap;
        gap: 8px;
    }
    
    /* Hide rotation controls on touch devices */
    .control-hint {
        display: none;
    }
    
    /* Simplified attention grid */
    .attention-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 8px;
        padding: 8px;
    }
    
    .attention-mini-head {
        padding: 8px;
    }
    
    /* Stack head tabs */
    .head-tabs {
        flex-wrap: wrap;
    }
    
    /* Hide speed control on mobile */
    .speed-control {
        display: none;
    }
    
    /* What-If responsive */
    .whatif-controls {
        padding: 12px;
    }
    
    .slider-control {
        flex-direction: column;
        align-items: flex-start;
        gap: 6px;
    }
    
    .slider-label {
        min-width: auto;
    }
    
    .slider-control input[type="range"] {
        width: 100%;
        max-width: none;
    }
    
    .projection-metrics {
        grid-template-columns: 1fr;
    }
    
    .whatif-viz {
        display: none;
    }
}

/* Tablet adjustments */
@media (min-width: 769px) and (max-width: 1024px) {
    .attention-grid {
        grid-template-columns: repeat(3, 1fr);
    }
    
    .projection-metrics {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* Reduce motion for accessibility */
@media (prefers-reduced-motion: reduce) {
    .point-glow {
        animation: none;
    }
    
    .attention-flow animate {
        animation: none;
    }
    
    .viz-spinner {
        animation: none;
    }
}

/* High contrast mode support */
@media (prefers-contrast: high) {
    .phase-point {
        stroke: #fff;
        stroke-width: 1px;
    }
    
    .heatmap-cell {
        outline: 1px solid rgba(255, 255, 255, 0.3);
    }
    
    .tooltip-bg {
        fill: #000;
        stroke: #fff;
        stroke-width: 2px;
    }
}

/* Touch device optimizations */
@media (pointer: coarse) {
    .phase-point {
        cursor: pointer;
    }
    
    .phase-space-canvas {
        touch-action: none;
    }
    
    /* Larger touch targets */
    .head-tab {
        min-width: 44px;
        min-height: 44px;
        padding: 8px 12px;
    }
    
    .zoom-btn {
        min-width: 44px;
        min-height: 44px;
    }
    
    .control-btn {
        min-height: 44px;
    }
}

/* ============================================================================
   TRADE JOURNAL VIEW
   ============================================================================ */

.journal-view {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 16px;
    overflow: hidden;
}

.journal-loading {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 200px;
    gap: 12px;
    color: var(--text-secondary);
}

/* Summary Cards */
.journal-summary {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 12px;
    padding: 0 4px;
}

.summary-card {
    background: linear-gradient(145deg, 
        rgba(40, 40, 50, 0.8), 
        rgba(30, 30, 40, 0.9));
    border: 1px solid rgba(120, 120, 140, 0.3);
    border-radius: 8px;
    padding: 12px;
    text-align: center;
    transition: all 0.2s ease;
}

.summary-card:hover {
    border-color: rgba(120, 120, 140, 0.6);
    transform: translateY(-2px);
}

.summary-card.positive .card-value {
    color: var(--status-success);
}

.summary-card.negative .card-value {
    color: var(--status-error);
}

.card-title {
    font-size: 0.75em;
    color: var(--text-tertiary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 4px;
}

.card-value {
    font-size: 1.4em;
    font-weight: 600;
    font-family: 'JetBrains Mono', monospace;
    color: var(--text-primary);
}

.card-subtitle {
    font-size: 0.7em;
    color: var(--text-tertiary);
    margin-top: 4px;
}

/* Trade Table */
.journal-table-container {
    flex: 1;
    overflow: auto;
    border: 1px solid rgba(80, 80, 100, 0.4);
    border-radius: 8px;
    background: rgba(20, 20, 30, 0.6);
}

.journal-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.85em;
}

.journal-table thead {
    position: sticky;
    top: 0;
    z-index: 10;
    background: linear-gradient(180deg, 
        rgba(40, 40, 55, 0.98), 
        rgba(35, 35, 50, 0.95));
}

.journal-table th {
    padding: 10px 8px;
    text-align: left;
    font-weight: 500;
    color: var(--text-secondary);
    border-bottom: 2px solid rgba(100, 100, 120, 0.5);
    font-size: 0.85em;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    white-space: nowrap;
    user-select: none;
}

.journal-table th.sortable {
    cursor: pointer;
    transition: color 0.15s;
}

.journal-table th.sortable:hover {
    color: var(--text-primary);
}

.journal-table th.sortable.active {
    color: var(--accent-primary);
}

.sort-arrow {
    margin-left: 4px;
    opacity: 0.7;
}

.journal-table td {
    padding: 10px 8px;
    border-bottom: 1px solid rgba(60, 60, 80, 0.3);
    vertical-align: middle;
}

.trade-row {
    cursor: pointer;
    transition: background-color 0.15s;
}

.trade-row:hover {
    background: rgba(80, 80, 100, 0.2);
}

.trade-row.selected {
    background: rgba(80, 80, 100, 0.35);
}

.trade-row.winner .col-pnl {
    color: var(--status-success);
}

.trade-row.loser .col-pnl {
    color: var(--status-error);
}

/* Cell styling */
.symbol-badge {
    display: inline-block;
    padding: 2px 6px;
    background: rgba(100, 100, 130, 0.3);
    border-radius: 4px;
    font-family: 'JetBrains Mono', monospace;
    font-weight: 500;
    color: var(--accent-secondary);
}

.dir-badge {
    display: inline-block;
    width: 20px;
    height: 20px;
    border-radius: 4px;
    font-size: 0.8em;
    font-weight: 600;
    text-align: center;
    line-height: 20px;
}

.dir-badge.long {
    background: color-mix(in srgb, var(--status-success) 25%, transparent);
    color: var(--status-success);
    border: 1px solid color-mix(in srgb, var(--status-success) 40%, transparent);
}

.dir-badge.short {
    background: color-mix(in srgb, var(--status-error) 25%, transparent);
    color: var(--status-error);
    border: 1px solid color-mix(in srgb, var(--status-error) 40%, transparent);
}

.col-entry, .col-exit {
    font-family: 'JetBrains Mono', monospace;
    color: var(--text-secondary);
}

.col-pnl {
    font-family: 'JetBrains Mono', monospace;
    font-weight: 500;
}

.col-pnl.positive { color: var(--status-success); }
.col-pnl.negative { color: var(--status-error); }

.pnl-value {
    display: block;
}

.pnl-percent {
    font-size: 0.8em;
    opacity: 0.7;
}

/* Left on Table Bar */
.left-on-table-bar {
    position: relative;
    width: 60px;
    height: 8px;
    background: rgba(60, 60, 80, 0.5);
    border-radius: 4px;
    overflow: hidden;
    display: flex;
}

.left-on-table-bar .captured {
    height: 100%;
    background: linear-gradient(90deg, var(--status-success), color-mix(in srgb, var(--status-success) 60%, transparent));
}

.left-on-table-bar .left {
    height: 100%;
    background: linear-gradient(90deg, color-mix(in srgb, var(--status-warning) 60%, transparent), color-mix(in srgb, var(--status-warning) 30%, transparent));
}

.left-on-table-bar .label {
    position: absolute;
    right: -40px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 0.75em;
    color: var(--text-tertiary);
    font-family: 'JetBrains Mono', monospace;
}

/* Quality Badge */
.quality-badge {
    display: inline-block;
    width: 24px;
    height: 24px;
    border-radius: 4px;
    font-size: 0.85em;
    font-weight: 600;
    text-align: center;
    line-height: 24px;
}

.quality-badge.grade-a {
    background: color-mix(in srgb, var(--status-success) 30%, transparent);
    color: var(--status-success);
    border: 1px solid color-mix(in srgb, var(--status-success) 50%, transparent);
}

.quality-badge.grade-b {
    background: rgba(100, 200, 100, 0.25);
    color: #8fd68f;
    border: 1px solid rgba(100, 200, 100, 0.4);
}

.quality-badge.grade-c {
    background: rgba(255, 200, 0, 0.25);
    color: var(--status-warning);
    border: 1px solid rgba(255, 200, 0, 0.4);
}

.quality-badge.grade-d {
    background: rgba(255, 140, 0, 0.25);
    color: #ffaa50;
    border: 1px solid rgba(255, 140, 0, 0.4);
}

.quality-badge.grade-f {
    background: color-mix(in srgb, var(--status-error) 25%, transparent);
    color: var(--status-error);
    border: 1px solid color-mix(in srgb, var(--status-error) 40%, transparent);
}

/* Exit Reason */
.exit-reason {
    font-size: 1.2em;
    cursor: help;
}

/* Trade Detail Row */
.trade-detail-row {
    background: rgba(30, 30, 45, 0.6);
}

.trade-detail-row td {
    padding: 0;
}

.trade-detail {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
    padding: 16px;
    border-top: 1px solid rgba(80, 80, 100, 0.4);
}

.detail-section {
    background: rgba(40, 40, 55, 0.5);
    border-radius: 8px;
    padding: 12px;
}

.detail-section h4 {
    margin: 0 0 12px 0;
    font-size: 0.8em;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-tertiary);
}

/* Timeline */
.timeline-bar {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 0;
}

.entry-point, .exit-point {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
}

.entry-point .point, .exit-point .point {
    width: 12px;
    height: 12px;
    border-radius: 50%;
}

.entry-point .point.entry {
    background: var(--status-success);
    box-shadow: 0 0 8px color-mix(in srgb, var(--status-success) 50%, transparent);
}

.exit-point .point.exit {
    background: var(--status-error);
    box-shadow: 0 0 8px color-mix(in srgb, var(--status-error) 50%, transparent);
}

.entry-point .info, .exit-point .info {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    font-size: 0.75em;
}

.entry-point .label, .exit-point .label {
    color: var(--text-tertiary);
    text-transform: uppercase;
    font-size: 0.9em;
}

.entry-point .price, .exit-point .price {
    font-family: 'JetBrains Mono', monospace;
    font-weight: 500;
    color: var(--text-primary);
}

.entry-point .signal, .exit-point .signal {
    color: var(--text-tertiary);
}

.range-bar {
    flex: 1;
    height: 4px;
    background: linear-gradient(90deg, 
        color-mix(in srgb, var(--status-success) 30%, transparent), 
        rgba(255, 200, 0, 0.3), 
        color-mix(in srgb, var(--status-error) 30%, transparent));
    border-radius: 2px;
    position: relative;
}

.mfe-marker, .mae-marker {
    position: absolute;
    top: -10px;
    transform: translateX(-50%);
}

.mfe-marker::after, .mae-marker::after {
    content: '';
    display: block;
    width: 2px;
    height: 24px;
    border-radius: 1px;
}

.mfe-marker::after {
    background: var(--status-success);
}

.mae-marker::after {
    background: var(--status-error);
}

.marker-label {
    position: absolute;
    top: -16px;
    left: 50%;
    transform: translateX(-50%);
    font-size: 0.65em;
    color: var(--text-tertiary);
    white-space: nowrap;
}

/* Counterfactuals */
.cf-grid {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.cf-card {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    background: rgba(50, 50, 65, 0.5);
    border-radius: 6px;
    border-left: 3px solid transparent;
}

.cf-card.better {
    border-left-color: var(--status-success);
}

.cf-card.worse {
    border-left-color: var(--status-error);
}

.cf-icon {
    font-size: 1.2em;
}

.cf-content {
    flex: 1;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.cf-scenario {
    font-size: 0.85em;
    color: var(--text-secondary);
}

.cf-pnl {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.9em;
    color: var(--text-primary);
}

.cf-delta {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.8em;
    padding: 2px 6px;
    border-radius: 4px;
}

.cf-delta.positive {
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    color: var(--status-success);
}

.cf-delta.negative {
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
    color: var(--status-error);
}

/* Quality Breakdown */
.quality-bars {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.quality-bar-container {
    display: flex;
    align-items: center;
    gap: 8px;
}

.quality-label {
    width: 80px;
    font-size: 0.75em;
    color: var(--text-tertiary);
}

.quality-bar {
    flex: 1;
    height: 6px;
    background: rgba(60, 60, 80, 0.5);
    border-radius: 3px;
    overflow: hidden;
}

.quality-fill {
    height: 100%;
    border-radius: 3px;
    transition: width 0.3s ease;
}

.quality-fill.excellent {
    background: linear-gradient(90deg, var(--status-success), #4ade80);
}

.quality-fill.good {
    background: linear-gradient(90deg, #8fd68f, #a3e635);
}

.quality-fill.fair {
    background: linear-gradient(90deg, var(--status-warning), #fbbf24);
}

.quality-fill.poor {
    background: linear-gradient(90deg, #f97316, var(--status-error));
}

.quality-value {
    width: 25px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.75em;
    color: var(--text-secondary);
    text-align: right;
}

/* Metrics Grid */
.metrics-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
}

.metric {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 6px;
    background: rgba(50, 50, 65, 0.4);
    border-radius: 4px;
}

.metric .label {
    font-size: 0.7em;
    color: var(--text-tertiary);
    text-transform: uppercase;
}

.metric .value {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.9em;
    color: var(--text-primary);
}

.metric .value.positive { color: var(--status-success); }
.metric .value.negative { color: var(--status-error); }

/* Journal Responsive */
@media (max-width: 1200px) {
    .journal-summary {
        grid-template-columns: repeat(3, 1fr);
    }
    
    .trade-detail {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 768px) {
    .journal-summary {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .trade-detail {
        grid-template-columns: 1fr;
    }
    
    .left-on-table-bar .label {
        display: none;
    }
    
    .journal-table {
        font-size: 0.75em;
    }
    
    .col-entry, .col-exit {
        display: none;
    }
}

    display: block;
}

.doc-filename {
    font-size: 11px;
    color: var(--text-muted);
}

.doc-status {
    font-size: 11px;
    padding: 2px 8px;
    border-radius: var(--radius-pill);
}

.doc-verified .doc-status {
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    color: var(--status-success);
}

.doc-pending .doc-status {
    background: color-mix(in srgb, var(--status-warning) 20%, transparent);
    color: var(--status-warning);
}

.doc-rejected .doc-status {
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
    color: var(--status-error);
}

.doc-date {
    font-size: 11px;
    color: var(--text-muted);
}

.required-docs {
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    margin-top: var(--spacing-lg);
}

.required-docs h4 {
    font-size: 13px;
    color: var(--text-accent);
    margin-bottom: var(--spacing-sm);
}

.required-docs ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.required-docs li {
    font-size: 12px;
    padding: var(--spacing-xs) 0;
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.required-docs li::before {
    content: '☐';
    color: var(--text-muted);
}

.doc-required {
    color: var(--text-primary);
}

.doc-optional {
    color: var(--text-muted);
}

.doc-optional::after {
    content: ' (optional)';
    font-size: 10px;
    color: var(--text-muted);
}

/* ============================================================================
   EXPORT & INDEPENDENCE TAB
   ============================================================================ */

.export-independence-tab {
    padding: var(--spacing-md);
}

.export-content {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.export-section {
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-lg);
}

.export-section h3 {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-accent);
    margin-bottom: var(--spacing-md);
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.section-desc {
    font-size: 12px;
    color: var(--text-secondary);
    margin-bottom: var(--spacing-md);
}

/* Account Status Section */
.account-status-section .status-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

.status-item {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.status-label {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
}

.status-value {
    font-size: 13px;
    color: var(--text-primary);
}

.account-type-badge {
    display: inline-block;
    padding: 2px 8px;
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-accent);
    font-size: 11px;
}

/* Independence Action */
.independence-action {
    margin-top: var(--spacing-md);
    padding-top: var(--spacing-md);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.independence-btn {
    background: linear-gradient(135deg, var(--accent-red), var(--accent-red-dark));
    color: white;
    border: none;
    padding: var(--spacing-sm) var(--spacing-lg);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    font-weight: 600;
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: all var(--duration-fast);
    box-shadow: 0 0 15px color-mix(in srgb, var(--status-error) 30%, transparent);
}

.independence-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 0 25px color-mix(in srgb, var(--status-error) 50%, transparent);
}

.independence-hint {
    font-size: 11px;
    color: var(--text-muted);
    margin-top: var(--spacing-sm);
}

/* Export Cards */
.export-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--spacing-md);
}

.export-card {
    background: rgba(0, 0, 0, 0.2);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    text-align: center;
    transition: all var(--duration-fast);
}

.export-card:hover {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
}

.export-card-icon {
    font-size: 28px;
    margin-bottom: var(--spacing-sm);
}

.export-card h4 {
    font-size: 13px;
    color: var(--text-primary);
    margin-bottom: var(--spacing-xs);
}

.export-card p {
    font-size: 11px;
    color: var(--text-muted);
    margin-bottom: var(--spacing-md);
    line-height: 1.4;
}

.export-btn {
    width: 100%;
    background: linear-gradient(135deg, var(--primary-blue), var(--secondary-blue));
    color: white;
    border: none;
    padding: var(--spacing-sm) var(--spacing-md);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    font-weight: 600;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all var(--duration-fast);
}

.export-btn:hover:not(:disabled) {
    transform: translateY(-1px);
    box-shadow: var(--shadow-glow-blue);
}

.export-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* Exported Data Section */
.exported-data-section {
    border-color: var(--status-success);
    background: color-mix(in srgb, var(--status-success) 3%, transparent);
}

.exported-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--spacing-md);
}

.countdown-badge {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    background: color-mix(in srgb, var(--status-warning) 15%, transparent);
    border: 1px solid var(--status-warning);
    border-radius: var(--radius-pill);
    padding: 4px 12px;
}

.countdown-icon {
    font-size: 14px;
}

.countdown-time {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 14px;
    font-weight: 600;
    color: var(--status-warning);
}

.exported-content {
    background: rgba(0, 0, 0, 0.3);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

/* Seed Phrase Display */
.seed-phrase-display {
    text-align: center;
}

.seed-words {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-md);
}

.seed-word {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    padding: var(--spacing-sm);
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.word-num {
    font-size: 10px;
    color: var(--text-muted);
    min-width: 20px;
}

.word-text {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 12px;
    color: var(--text-primary);
}

.derivation-path {
    font-size: 11px;
    color: var(--text-muted);
}

.derivation-path code {
    background: rgba(0, 0, 0, 0.3);
    padding: 2px 6px;
    border-radius: 3px;
    font-family: 'IBM Plex Mono', monospace;
    color: var(--text-secondary);
}

/* Private Keys Display */
.private-keys-display {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.key-entry {
    background: rgba(0, 0, 0, 0.2);
    border-radius: var(--radius-sm);
    padding: var(--spacing-md);
}

.key-header {
    display: flex;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-sm);
}

.key-chain {
    background: var(--primary-blue);
    color: white;
    padding: 2px 8px;
    border-radius: var(--radius-sm);
    font-size: 10px;
    font-weight: 600;
}

.key-network {
    color: var(--text-muted);
    font-size: 11px;
}

.key-address, .key-private {
    font-size: 11px;
    margin-bottom: var(--spacing-xs);
}

.addr-label, .priv-label {
    color: var(--text-muted);
}

.key-address code, .key-private code {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 11px;
    word-break: break-all;
}

.private-key {
    color: var(--status-warning);
}

/* Hardware Instructions */
.hardware-instructions-display h4 {
    font-size: 13px;
    color: var(--text-primary);
    margin-bottom: var(--spacing-md);
}

.instructions-list {
    list-style: none;
    counter-reset: instruction;
    padding: 0;
}

.instructions-list li {
    counter-increment: instruction;
    padding: var(--spacing-sm) 0;
    padding-left: 30px;
    position: relative;
    font-size: 12px;
    color: var(--text-secondary);
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.instructions-list li:last-child {
    border-bottom: none;
}

.instructions-list li::before {
    content: counter(instruction);
    position: absolute;
    left: 0;
    width: 20px;
    height: 20px;
    background: var(--primary-blue);
    color: white;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 10px;
    font-weight: 600;
}

/* TSS Shares Display */
.tss-shares-display .tss-info {
    font-size: 12px;
    color: var(--text-accent);
    margin-bottom: var(--spacing-md);
    text-align: center;
}

.share-entry {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-sm);
    background: rgba(0, 0, 0, 0.2);
    border-radius: var(--radius-sm);
    margin-bottom: var(--spacing-sm);
}

.share-index {
    font-size: 11px;
    color: var(--text-muted);
    min-width: 60px;
}

.share-data {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 11px;
    color: var(--text-secondary);
    word-break: break-all;
}

/* Exported Actions */
.exported-actions {
    display: flex;
    gap: var(--spacing-sm);
    justify-content: center;
    margin-bottom: var(--spacing-md);
}

.copy-btn, .done-btn {
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.copy-btn {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid var(--primary-blue);
    color: var(--text-accent);
}

.copy-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.done-btn {
    background: linear-gradient(135deg, var(--status-success), var(--status-success));
    border: none;
    color: white;
}

.done-btn:hover {
    box-shadow: 0 0 15px color-mix(in srgb, var(--status-success) 40%, transparent);
}

/* Export Warning */
.export-warning {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--status-warning) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-warning) 30%, transparent);
    border-radius: var(--radius-sm);
    font-size: 11px;
    color: var(--status-warning);
}

.warning-icon {
    font-size: 14px;
}

/* Security Notice Section */
.security-notice-section {
    border-color: var(--status-warning);
    background: color-mix(in srgb, var(--status-warning) 3%, transparent);
}

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

.security-list li {
    font-size: 12px;
    color: var(--text-secondary);
    padding: var(--spacing-sm) 0;
    padding-left: 24px;
    position: relative;
}

.security-list li::before {
    content: '•';
    position: absolute;
    left: 8px;
    color: var(--status-warning);
}

/* Export History Section */
.export-history-section {
    border-color: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.empty-history {
    text-align: center;
    padding: var(--spacing-lg);
    color: var(--text-muted);
    font-size: 12px;
}

.history-list {
    max-height: 200px;
    overflow-y: auto;
}

.history-entry {
    display: flex;
    gap: var(--spacing-md);
    padding: var(--spacing-sm);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    font-size: 12px;
}

.history-entry:last-child {
    border-bottom: none;
}

.entry-date {
    color: var(--text-muted);
    min-width: 120px;
}

.entry-type {
    color: var(--text-primary);
    flex: 1;
}

.entry-method {
    color: var(--text-muted);
}

/* Independence Modal */
.independence-modal {
    max-width: 500px;
}

.independence-intro {
    font-size: 13px;
    color: var(--text-secondary);
    margin-bottom: var(--spacing-lg);
}

.independence-effects {
    background: color-mix(in srgb, var(--status-success) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 20%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
}

.independence-effects h4 {
    font-size: 12px;
    color: var(--status-success);
    margin-bottom: var(--spacing-sm);
}

.independence-effects ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.independence-effects li {
    font-size: 12px;
    color: var(--text-secondary);
    padding: var(--spacing-xs) 0;
}

.independence-options {
    margin-bottom: var(--spacing-lg);
}

.option-checkbox {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    font-size: 12px;
    color: var(--text-secondary);
    cursor: pointer;
}

.option-checkbox input[type="checkbox"] {
    width: 16px;
    height: 16px;
    accent-color: var(--primary-blue);
}

.confirmation-input {
    margin-bottom: var(--spacing-md);
}

.confirmation-input label {
    display: block;
    font-size: 12px;
    color: var(--text-secondary);
    margin-bottom: var(--spacing-sm);
}

.confirmation-input strong {
    color: var(--text-accent);
}

.confirmation-input input {
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 14px;
    text-align: center;
    letter-spacing: 2px;
}

.confirmation-input input:focus {
    outline: none;
    border-color: var(--primary-blue);
    box-shadow: 0 0 10px color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.btn-independence {
    background: linear-gradient(135deg, var(--accent-red), var(--accent-red-dark));
}

.btn-independence:hover:not(:disabled) {
    box-shadow: var(--shadow-glow-red);
}

.btn-independence:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* Responsive for export cards */
@media (max-width: 600px) {
    .export-cards {
        grid-template-columns: 1fr;
    }
    
    .seed-words {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .account-status-section .status-grid {
        grid-template-columns: 1fr;
    }
}

/* ============================================================================
   CONTRACT MANAGEMENT PANEL
   ============================================================================ */

.contract-management-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.contract-management-panel .header-subtitle {
    font-size: 12px;
    color: var(--text-muted);
    margin-top: var(--spacing-xs);
}

/* Toolbar */
.contracts-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    gap: var(--spacing-md);
    flex-wrap: wrap;
}

.toolbar-left, .toolbar-right {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
}

.filter-group {
    display: flex;
    gap: var(--spacing-sm);
}

.filter-group select {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    padding: 6px 10px;
    cursor: pointer;
}

.filter-group select:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.search-box input {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    padding: 8px 12px;
    width: 200px;
}

.search-box input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.search-box input::placeholder {
    color: var(--text-muted);
}

.create-contract-btn {
    background: linear-gradient(135deg, var(--status-success), var(--status-success));
    color: white;
    border: none;
    padding: 8px 16px;
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    font-weight: 600;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all var(--duration-fast);
    white-space: nowrap;
}

.create-contract-btn:hover {
    box-shadow: 0 0 15px color-mix(in srgb, var(--status-success) 40%, transparent);
    transform: translateY(-1px);
}

/* Contracts content area */
.contracts-content {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-md);
}

/* Contract list */
.contracts-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

/* Contract card */
.contract-card {
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    cursor: pointer;
    transition: all var(--duration-fast);
}

.contract-card:hover {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 6%, transparent);
}

.contract-card.selected {
    border-color: var(--primary-blue);
    box-shadow: 0 0 15px color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.contract-card-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-sm);
}

.contract-type-icon {
    font-size: 24px;
    min-width: 32px;
    text-align: center;
}

.contract-info {
    flex: 1;
}

.contract-name {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
    margin: 0;
}

.contract-type-label {
    font-size: 10px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
}

.contract-status {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: 4px 12px;
    border-radius: var(--radius-pill);
    font-size: 11px;
    font-weight: 600;
}

.contract-status.status-draft {
    background: rgba(128, 128, 128, 0.2);
    color: #888;
}

.contract-status.status-pending {
    background: color-mix(in srgb, var(--status-warning) 15%, transparent);
    color: var(--status-warning);
}

.contract-status.status-active {
    background: color-mix(in srgb, var(--status-success) 15%, transparent);
    color: var(--status-success);
}

.contract-status.status-paused {
    background: color-mix(in srgb, var(--status-warning) 15%, transparent);
    color: var(--status-warning);
}

.contract-status.status-completed {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    color: var(--primary-blue);
}

.contract-status.status-cancelled {
    background: color-mix(in srgb, var(--status-error) 15%, transparent);
    color: var(--accent-red);
}

.contract-card-body {
    margin-bottom: var(--spacing-sm);
}

.contract-description {
    font-size: 12px;
    color: var(--text-secondary);
    margin: 0 0 var(--spacing-sm) 0;
    line-height: 1.4;
}

.contract-meta {
    display: flex;
    gap: var(--spacing-lg);
    flex-wrap: wrap;
}

.meta-item {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.meta-label {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
}

.meta-value {
    font-size: 12px;
    color: var(--text-primary);
}

.meta-value.value-usd {
    color: var(--status-success);
    font-weight: 600;
}

.contract-card-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: var(--spacing-sm);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.contract-address code {
    font-size: 11px;
    color: var(--text-muted);
    background: rgba(0, 0, 0, 0.2);
    padding: 2px 6px;
    border-radius: 3px;
}

.contract-actions {
    display: flex;
    gap: var(--spacing-sm);
}

.contract-actions .action-btn {
    padding: 4px 10px;
    font-size: 10px;
    border-radius: var(--radius-sm);
    border: none;
    cursor: pointer;
    transition: all var(--duration-fast);
    font-family: 'Orbitron', monospace;
    font-weight: 500;
}

.action-btn.action-primary {
    background: linear-gradient(135deg, var(--primary-blue), var(--secondary-blue));
    color: white;
}

.action-btn.action-secondary {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    color: var(--text-accent);
}

.action-btn.action-success {
    background: linear-gradient(135deg, var(--status-success), var(--status-success));
    color: white;
}

.action-btn.action-warning {
    background: color-mix(in srgb, var(--status-warning) 20%, transparent);
    border: 1px solid var(--status-warning);
    color: var(--status-warning);
}

.action-btn.action-danger {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    color: var(--accent-red);
}

.action-btn:hover {
    transform: translateY(-1px);
}

/* Contracts summary */
.contracts-summary {
    display: flex;
    justify-content: space-around;
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.summary-stat {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
}

.summary-stat .stat-value {
    font-size: 18px;
    font-weight: 700;
    color: var(--text-accent);
}

.summary-stat .stat-label {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
}

/* Contract detail view */
.contract-detail {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.detail-header {
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.back-btn {
    background: none;
    border: none;
    color: var(--text-accent);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    cursor: pointer;
    padding: 0;
    margin-bottom: var(--spacing-sm);
}

.back-btn:hover {
    text-decoration: underline;
}

.detail-title {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

.detail-title .type-icon {
    font-size: 28px;
}

.detail-title h2 {
    font-size: 18px;
    font-weight: 600;
    margin: 0;
    flex: 1;
}

.status-badge {
    padding: 6px 14px;
    border-radius: var(--radius-pill);
    font-size: 12px;
    font-weight: 600;
}

.detail-actions {
    display: flex;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.detail-actions .action-btn {
    padding: 8px 14px;
    font-size: 11px;
}

/* Detail tabs */
.detail-tabs {
    display: flex;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm) var(--spacing-md);
    background: rgba(0, 0, 0, 0.2);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.tab-btn {
    background: none;
    border: none;
    color: var(--text-muted);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    padding: 8px 16px;
    cursor: pointer;
    border-radius: var(--radius-sm);
    transition: all var(--duration-fast);
}

.tab-btn:hover {
    color: var(--text-primary);
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
}

.tab-btn.active {
    color: var(--text-accent);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

/* Detail content */
.detail-content {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-md);
}

.tab-content {
    max-width: 800px;
}

.tab-content h3 {
    font-size: 14px;
    color: var(--text-accent);
    margin-bottom: var(--spacing-md);
}

/* Info section */
.info-section {
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

.info-section h3 {
    margin-top: 0;
}

.info-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--spacing-md);
}

.info-item {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.info-item.full-width {
    grid-column: span 2;
}

.info-label {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
}

.info-value {
    font-size: 13px;
    color: var(--text-primary);
}

.info-value.selectable {
    user-select: all;
    cursor: text;
}

.info-value.value-large {
    font-size: 20px;
    font-weight: 700;
    color: var(--status-success);
}

/* Parties tab */
.parties-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.parties-tab .party-card {
    background: rgba(0, 0, 0, 0.2);
    border: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
}

.party-role {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-accent);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    padding: 4px 10px;
    border-radius: var(--radius-sm);
    min-width: 80px;
    text-align: center;
}

.party-info {
    flex: 1;
}

.party-label {
    font-size: 13px;
    color: var(--text-primary);
    display: block;
}

.party-address {
    font-size: 11px;
    color: var(--text-muted);
}

.party-account {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.linked-badge {
    font-size: 10px;
    color: var(--status-success);
}

.account-id {
    font-size: 11px;
    color: var(--text-muted);
}

/* Conditions tab */
.conditions-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.condition-card {
    background: rgba(0, 0, 0, 0.2);
    border: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
}

.condition-card.satisfied {
    border-color: var(--status-success);
    background: color-mix(in srgb, var(--status-success) 3%, transparent);
}

.condition-status {
    font-size: 20px;
}

.condition-info {
    flex: 1;
}

.condition-type {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-accent);
    display: block;
}

.condition-desc {
    font-size: 12px;
    color: var(--text-secondary);
}

/* History tab */
.events-timeline {
    position: relative;
    padding-left: 20px;
}

.events-timeline::before {
    content: '';
    position: absolute;
    left: 5px;
    top: 0;
    bottom: 0;
    width: 2px;
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.event-item {
    position: relative;
    margin-bottom: var(--spacing-md);
}

.event-marker {
    position: absolute;
    left: -20px;
    top: 4px;
    width: 12px;
    height: 12px;
    background: var(--primary-blue);
    border-radius: 50%;
    border: 2px solid var(--dark-bg);
}

.event-content {
    background: rgba(0, 0, 0, 0.2);
    border-radius: var(--radius-md);
    padding: var(--spacing-sm) var(--spacing-md);
}

.event-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 4px;
}

.event-type {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-accent);
    font-weight: 600;
}

.event-time {
    font-size: 10px;
    color: var(--text-muted);
}

.event-desc {
    font-size: 12px;
    color: var(--text-secondary);
    margin: 0 0 4px 0;
}

.event-tx {
    font-size: 10px;
    color: var(--text-muted);
    display: block;
}

.event-actor {
    font-size: 10px;
    color: var(--text-muted);
}

/* Security tab */
.security-score {
    display: flex;
    align-items: center;
    gap: var(--spacing-lg);
    padding: var(--spacing-md);
}

.score-circle {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    background: conic-gradient(
        var(--status-success) calc(var(--score) * 3.6deg),
        rgba(0, 0, 0, 0.3) 0
    );
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
}

.score-circle::before {
    content: '';
    position: absolute;
    inset: 6px;
    border-radius: 50%;
    background: var(--dark-bg);
}

.score-value {
    font-size: 22px;
    font-weight: 700;
    color: var(--status-success);
    position: relative;
    z-index: 1;
}

.score-max {
    font-size: 10px;
    color: var(--text-muted);
    position: relative;
    z-index: 1;
}

.score-label {
    font-size: 14px;
    color: var(--text-secondary);
}

.patterns-list {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-sm);
}

.pattern-badge {
    display: flex;
    align-items: center;
    gap: 4px;
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 20%, transparent);
    border-radius: var(--radius-sm);
    padding: 4px 10px;
    font-size: 11px;
}

.pattern-check {
    color: var(--status-success);
}

.pattern-name {
    color: var(--text-secondary);
}

/* Empty state in contract panel */
.contract-management-panel .empty-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-xl) var(--spacing-md);
    text-align: center;
}

.contract-management-panel .empty-state .empty-icon {
    font-size: 48px;
    margin-bottom: var(--spacing-md);
}

.contract-management-panel .empty-state h3 {
    font-size: 16px;
    color: var(--text-primary);
    margin-bottom: var(--spacing-sm);
}

.contract-management-panel .empty-state p {
    font-size: 12px;
    color: var(--text-secondary);
    margin: 0;
}

.contract-management-panel .empty-state .empty-hint {
    color: var(--text-muted);
    font-style: italic;
    margin-top: var(--spacing-sm);
}

.empty-state.small {
    padding: var(--spacing-lg);
}

.empty-state.small p {
    font-size: 12px;
}

/* ============================================================================
   TRANSFER PANEL V2 - Redesigned
   ============================================================================ */

.transfer-panel-v2 {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--dark-bg);
}

/* Header with source selector */
.transfer-header {
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.transfer-header .header-title h2 {
    font-size: 18px;
    margin: 0 0 var(--spacing-sm) 0;
}

.source-selector {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.source-selector .selector-label {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
}

.source-dropdown {
    flex: 1;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    padding: 8px 12px;
    cursor: pointer;
}

.source-dropdown:focus {
    outline: none;
    border-color: var(--primary-blue);
}

/* Progress indicator v2 */
.transfer-progress-v2 {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-md);
    gap: var(--spacing-xs);
}

.progress-step {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
}

.progress-step .step-number {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 2px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 600;
    color: var(--text-muted);
    transition: all var(--duration-fast);
}

.progress-step.active .step-number {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-color: var(--primary-blue);
    color: var(--text-accent);
}

.progress-step.current .step-number {
    background: var(--primary-blue);
    border-color: var(--primary-blue);
    color: white;
    box-shadow: 0 0 15px color-mix(in srgb, var(--text-accent) 40%, transparent);
}

.progress-step .step-label {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-muted);
}

.progress-step.active .step-label {
    color: var(--text-secondary);
}

.progress-step.current .step-label {
    color: var(--text-accent);
}

.transfer-progress-v2 .step-connector {
    width: 20px;
    height: 2px;
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    margin-bottom: 20px;
}

.transfer-progress-v2 .step-connector.active {
    background: var(--primary-blue);
}

/* Content area */
.transfer-content-v2 {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-md);
}

.transfer-step {
    max-width: 500px;
    margin: 0 auto;
}

.transfer-step .step-title {
    font-size: 16px;
    color: var(--text-primary);
    margin: 0 0 var(--spacing-xs) 0;
    text-align: center;
}

.transfer-step .step-subtitle {
    font-size: 12px;
    color: var(--text-muted);
    margin: 0 0 var(--spacing-lg) 0;
    text-align: center;
}

/* Account cards */
.account-cards {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-lg);
}

.account-card {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: all var(--duration-fast);
    text-align: left;
    width: 100%;
}

.account-card:hover {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 6%, transparent);
}

.account-card.selected {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    box-shadow: 0 0 15px color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.account-icon {
    font-size: 24px;
}

.account-info {
    flex: 1;
}

.account-name {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
}

.account-balances {
    display: flex;
    gap: var(--spacing-xs);
    margin-top: 4px;
    flex-wrap: wrap;
}

.balance-chip {
    font-size: 10px;
    color: var(--text-muted);
    background: rgba(0, 0, 0, 0.2);
    padding: 2px 6px;
    border-radius: 3px;
}

.account-check {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--status-success);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    opacity: 0;
    transition: opacity var(--duration-fast);
}

.account-card.selected .account-check {
    opacity: 1;
}

/* Recipient search */
.recipient-search {
    margin-bottom: var(--spacing-md);
}

.recipient-search input {
    width: 100%;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    padding: 10px 14px;
}

.recipient-search input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.recipient-search input::placeholder {
    color: var(--text-muted);
}

/* Recipient categories */
.recipient-categories {
    display: flex;
    gap: var(--spacing-xs);
    margin-bottom: var(--spacing-md);
    overflow-x: auto;
    padding-bottom: 4px;
}

.category-tab {
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-radius: var(--radius-pill);
    color: var(--text-muted);
    font-family: 'Orbitron', monospace;
    font-size: 10px;
    padding: 6px 12px;
    cursor: pointer;
    white-space: nowrap;
    transition: all var(--duration-fast);
}

.category-tab:hover {
    border-color: var(--primary-blue);
    color: var(--text-primary);
}

.category-tab.active {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-color: var(--primary-blue);
    color: var(--text-accent);
}

/* Address book list */
.address-book-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    max-height: 280px;
    overflow-y: auto;
    margin-bottom: var(--spacing-md);
}

.recipient-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: rgba(0, 0, 0, 0.2);
    border: 1px solid transparent;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all var(--duration-fast);
    text-align: left;
    width: 100%;
}

.recipient-row:hover {
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border-color: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.recipient-row.selected {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
}

.recipient-icon {
    font-size: 18px;
    min-width: 24px;
    text-align: center;
}

.recipient-info {
    flex: 1;
    min-width: 0;
}

.recipient-name {
    font-size: 13px;
    font-weight: 500;
    color: var(--text-primary);
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
}

.own-account-badge {
    font-size: 9px;
    background: color-mix(in srgb, var(--status-success) 15%, transparent);
    color: var(--status-success);
    padding: 2px 6px;
    border-radius: 3px;
}

.recipient-details {
    display: flex;
    gap: var(--spacing-xs);
    font-size: 10px;
    color: var(--text-muted);
}

.recipient-chain {
    text-transform: uppercase;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    padding: 1px 4px;
    border-radius: 2px;
}

.verified-badge {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: var(--status-success);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 10px;
}

.add-recipient-btn {
    width: 100%;
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px dashed color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-accent);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    cursor: pointer;
    transition: all var(--duration-fast);
    margin-bottom: var(--spacing-md);
}

.add-recipient-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
}

/* Asset selector */
.asset-selector {
    display: flex;
    justify-content: center;
    gap: var(--spacing-xs);
    margin-bottom: var(--spacing-lg);
}

.asset-chip {
    padding: 8px 16px;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-pill);
    color: var(--text-muted);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.asset-chip:hover {
    border-color: var(--primary-blue);
    color: var(--text-primary);
}

.asset-chip.selected {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-color: var(--primary-blue);
    color: var(--text-accent);
}

/* Amount input v2 */
.amount-input-v2 {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-xs);
    margin-bottom: var(--spacing-sm);
}

.amount-input-v2 .currency-symbol {
    font-size: 32px;
    color: var(--text-muted);
}

.amount-input-v2 .amount-field {
    background: transparent;
    border: none;
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 42px;
    font-weight: 700;
    width: 200px;
    text-align: center;
}

.amount-input-v2 .amount-field:focus {
    outline: none;
}

.amount-input-v2 .amount-field::placeholder {
    color: var(--text-muted);
}

.balance-display {
    text-align: center;
    font-size: 12px;
    color: var(--text-muted);
    margin-bottom: var(--spacing-md);
}

/* Quick amounts */
.quick-amounts {
    display: flex;
    justify-content: center;
    gap: var(--spacing-xs);
    margin-bottom: var(--spacing-lg);
    flex-wrap: wrap;
}

.quick-amount {
    padding: 6px 14px;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.quick-amount:hover {
    border-color: var(--primary-blue);
    color: var(--text-accent);
}

.quick-amount.max {
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    border-color: color-mix(in srgb, var(--status-success) 30%, transparent);
    color: var(--status-success);
}

/* Memo input */
.memo-input {
    margin-bottom: var(--spacing-lg);
}

.memo-input label {
    display: block;
    font-size: 11px;
    color: var(--text-muted);
    margin-bottom: var(--spacing-xs);
}

.memo-input input {
    width: 100%;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    padding: 10px 14px;
}

.memo-input input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

/* Routes list v2 */
.routes-list-v2 {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-lg);
}

.route-card {
    display: flex;
    align-items: flex-start;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: all var(--duration-fast);
    text-align: left;
    width: 100%;
}

.route-card:hover:not(:disabled) {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 6%, transparent);
}

.route-card.selected {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.route-card.unavailable {
    opacity: 0.5;
    cursor: not-allowed;
}

.route-icon {
    font-size: 24px;
    min-width: 32px;
    text-align: center;
}

.route-info {
    flex: 1;
}

.route-name {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 4px;
}

.route-description {
    font-size: 11px;
    color: var(--text-muted);
    margin-bottom: var(--spacing-xs);
}

.route-meta {
    display: flex;
    gap: var(--spacing-md);
    font-size: 10px;
}

.route-fee {
    color: var(--status-success);
}

.route-time {
    color: var(--text-secondary);
}

.route-check {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--status-success);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    opacity: 0;
    transition: opacity var(--duration-fast);
}

.route-card.selected .route-check {
    opacity: 1;
}

/* Review card */
.review-card {
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

.review-section {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    padding: var(--spacing-sm) 0;
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.review-section:last-child {
    border-bottom: none;
}

.review-section.amount,
.review-section.total {
    padding: var(--spacing-md) 0;
}

.review-label {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
}

.review-value {
    font-size: 13px;
    color: var(--text-primary);
    text-align: right;
}

.review-value.large {
    font-size: 20px;
    font-weight: 700;
    color: var(--text-accent);
}

.review-subvalue {
    display: block;
    font-size: 11px;
    color: var(--text-muted);
    margin-top: 2px;
}

.asset-label {
    font-size: 12px;
    color: var(--text-muted);
    margin-left: 4px;
}

.review-section.total {
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    margin: var(--spacing-sm) calc(-1 * var(--spacing-md));
    padding: var(--spacing-md);
    border-radius: 0 0 var(--radius-md) var(--radius-md);
}

/* ETA display */
.eta-display {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border-radius: var(--radius-sm);
    margin-bottom: var(--spacing-lg);
}

.eta-icon {
    font-size: 16px;
}

.eta-text {
    font-size: 12px;
    color: var(--text-secondary);
}

/* Processing step */
.transfer-step.processing {
    text-align: center;
    padding: var(--spacing-xl) 0;
}

.processing-animation {
    margin-bottom: var(--spacing-lg);
}

.processing-animation .spinner {
    width: 60px;
    height: 60px;
    border: 3px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-top-color: var(--primary-blue);
    border-radius: 50%;
    margin: 0 auto;
    animation: spin 1s linear infinite;
}

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

.processing-text {
    font-size: 12px;
    color: var(--text-muted);
    margin: var(--spacing-sm) 0 var(--spacing-lg);
}

.processing-steps {
    text-align: left;
    max-width: 250px;
    margin: 0 auto;
}

.proc-step {
    font-size: 12px;
    padding: var(--spacing-xs) 0;
    color: var(--text-muted);
}

.proc-step.done {
    color: var(--status-success);
}

.proc-step.active {
    color: var(--text-accent);
}

/* Complete step */
.transfer-step.complete {
    text-align: center;
    padding: var(--spacing-xl) 0;
}

.success-animation {
    margin-bottom: var(--spacing-lg);
}

.success-check {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--status-success), var(--status-success));
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 40px;
    margin: 0 auto;
    animation: scaleIn 0.3s ease-out;
}

@keyframes scaleIn {
    from {
        transform: scale(0);
        opacity: 0;
    }
    to {
        transform: scale(1);
        opacity: 1;
    }
}

.completion-summary {
    margin-bottom: var(--spacing-lg);
}

.summary-amount {
    font-size: 28px;
    font-weight: 700;
    color: var(--text-accent);
    margin: 0;
}

.summary-recipient {
    font-size: 14px;
    color: var(--text-secondary);
    margin: var(--spacing-xs) 0 0;
}

.completion-actions {
    display: flex;
    justify-content: center;
    gap: var(--spacing-md);
}

.view-tx-btn {
    padding: 10px 20px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-accent);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    cursor: pointer;
}

.new-transfer-btn {
    padding: 10px 20px;
    background: linear-gradient(135deg, var(--primary-blue), var(--secondary-blue));
    border: none;
    border-radius: var(--radius-sm);
    color: white;
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
}

/* Step actions */
.step-actions {
    display: flex;
    gap: var(--spacing-md);
    justify-content: center;
    margin-top: var(--spacing-lg);
}

.back-btn {
    padding: 12px 24px;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.back-btn:hover {
    border-color: var(--primary-blue);
    color: var(--text-accent);
}

.next-btn {
    padding: 12px 32px;
    background: linear-gradient(135deg, var(--primary-blue), var(--secondary-blue));
    border: none;
    border-radius: var(--radius-sm);
    color: white;
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.next-btn:hover:not(:disabled) {
    box-shadow: 0 0 20px color-mix(in srgb, var(--text-accent) 40%, transparent);
}

.next-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.confirm-btn {
    padding: 14px 32px;
    background: linear-gradient(135deg, var(--status-success), var(--status-success));
    border: none;
    border-radius: var(--radius-sm);
    color: white;
    font-family: 'Orbitron', monospace;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.confirm-btn:hover {
    box-shadow: 0 0 20px color-mix(in srgb, var(--status-success) 40%, transparent);
}

/* Empty recipients */
.empty-recipients {
    text-align: center;
    padding: var(--spacing-lg);
    color: var(--text-muted);
}

/* ============================================================================
   ROUTE BUILDER PANEL
   ============================================================================ */

.route-builder-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.builder-header {
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.builder-header h2 {
    font-size: 18px;
    margin: 0 0 var(--spacing-xs) 0;
}

.builder-header .header-subtitle {
    font-size: 12px;
    color: var(--text-muted);
    margin: 0;
}

.builder-content {
    display: flex;
    flex: 1;
    overflow: hidden;
}

/* Provider Catalog */
.provider-catalog {
    width: 280px;
    border-right: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    background: rgba(0, 0, 0, 0.2);
    display: flex;
    flex-direction: column;
    overflow-y: auto;
}

.provider-catalog h3 {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
    padding: var(--spacing-md);
    margin: 0;
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.provider-list {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-sm);
}

.provider-card {
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-left: 3px solid var(--provider-color, var(--primary-blue));
    border-radius: var(--radius-sm);
    margin-bottom: var(--spacing-sm);
    overflow: hidden;
}

.provider-card.selected {
    border-color: var(--provider-color, var(--primary-blue));
    background: color-mix(in srgb, var(--text-accent) 6%, transparent);
}

.provider-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    cursor: pointer;
    transition: background var(--duration-fast);
}

.provider-header:hover {
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
}

.provider-icon {
    font-size: 20px;
}

.provider-name {
    flex: 1;
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
}

.provider-category {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-muted);
    background: rgba(0, 0, 0, 0.3);
    padding: 2px 6px;
    border-radius: 3px;
}

.hop-types {
    padding: var(--spacing-sm);
    background: rgba(0, 0, 0, 0.2);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.hop-type-btn {
    width: 100%;
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    cursor: pointer;
    text-align: left;
    margin-bottom: var(--spacing-xs);
    transition: all var(--duration-fast);
}

.hop-type-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
}

.hop-type-btn:last-child {
    margin-bottom: 0;
}

.hop-type-name {
    font-size: 12px;
    font-weight: 500;
    color: var(--text-primary);
    margin-bottom: 2px;
}

.hop-type-flow {
    font-size: 11px;
    color: var(--text-muted);
    margin-bottom: 2px;
}

.hop-type-meta {
    display: flex;
    gap: var(--spacing-sm);
    font-size: 10px;
    color: var(--text-muted);
}

.hop-time {
    color: var(--text-secondary);
}

.hop-manual {
    color: var(--status-warning);
}

/* Route Canvas */
.route-canvas {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.canvas-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.route-meta-inputs {
    display: flex;
    gap: var(--spacing-sm);
    flex: 1;
}

.route-name-input,
.route-desc-input {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    padding: 8px 12px;
}

.route-name-input {
    width: 200px;
}

.route-desc-input {
    flex: 1;
}

.route-name-input:focus,
.route-desc-input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.canvas-actions {
    display: flex;
    gap: var(--spacing-sm);
}

.btn-clear {
    padding: 8px 16px;
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--accent-red);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    cursor: pointer;
}

.btn-clear:hover {
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
}

/* Route Hops */
.route-hops {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-lg);
}

.empty-route {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    text-align: center;
    color: var(--text-muted);
}

.empty-route .empty-icon {
    font-size: 48px;
    margin-bottom: var(--spacing-md);
    opacity: 0.5;
}

.empty-route h4 {
    font-size: 16px;
    color: var(--text-secondary);
    margin: 0 0 var(--spacing-sm) 0;
}

.empty-route p {
    font-size: 12px;
    max-width: 300px;
}

.hop-card-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
}

.hop-card-wrapper.parallel {
    margin-left: 40px;
    position: relative;
}

.hop-card-wrapper.parallel::before {
    content: '⚡ Parallel';
    position: absolute;
    left: -50px;
    top: 50%;
    transform: translateY(-50%) rotate(-90deg);
    font-size: 9px;
    color: var(--status-warning);
    text-transform: uppercase;
    letter-spacing: 1px;
}

.hop-card {
    display: flex;
    align-items: flex-start;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-md);
    width: 100%;
    max-width: 500px;
}

.hop-order {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--primary-blue);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 700;
    flex-shrink: 0;
}

.hop-content {
    flex: 1;
}

.hop-card .hop-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-sm);
}

.hop-card .hop-provider {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-accent);
}

.hop-card .hop-type {
    font-size: 11px;
    color: var(--text-secondary);
    background: rgba(0, 0, 0, 0.2);
    padding: 2px 8px;
    border-radius: 3px;
}

.hop-card .hop-automation {
    font-size: 10px;
    color: var(--text-muted);
    margin-left: auto;
}

.hop-card .hop-flow {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.hop-card .hop-input,
.hop-card .hop-output {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
}

.hop-card .amount-input {
    width: 80px;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    padding: 4px 8px;
}

.hop-card .amount-input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.hop-card .asset-label,
.hop-card .output-label {
    font-size: 11px;
    color: var(--text-muted);
}

.hop-card .hop-arrow {
    color: var(--primary-blue);
    font-size: 16px;
}

.hop-actions {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.hop-action {
    width: 24px;
    height: 24px;
    border-radius: 4px;
    border: none;
    cursor: pointer;
    font-size: 12px;
    transition: all var(--duration-fast);
}

.hop-action.parallel {
    background: color-mix(in srgb, var(--status-warning) 10%, transparent);
    color: var(--status-warning);
}

.hop-action.parallel.active {
    background: var(--status-warning);
    color: white;
}

.hop-action.remove {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    color: var(--accent-red);
}

.hop-action.remove:hover {
    background: var(--accent-red);
    color: white;
}

.hop-connector {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: var(--spacing-sm) 0;
}

.hop-connector .connector-line {
    width: 2px;
    height: 20px;
    background: color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.hop-connector .connector-arrow {
    color: color-mix(in srgb, var(--text-accent) 50%, transparent);
    font-size: 10px;
}

/* Route Summary */
.route-summary {
    display: flex;
    justify-content: center;
    gap: var(--spacing-xl);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.route-summary .summary-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
}

.route-summary .summary-label {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
}

.route-summary .summary-value {
    font-size: 16px;
    font-weight: 600;
    color: var(--text-accent);
}

.route-actions {
    display: flex;
    justify-content: center;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.btn-save {
    padding: 10px 24px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-accent);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    cursor: pointer;
}

.btn-save:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.btn-execute {
    padding: 10px 24px;
    background: linear-gradient(135deg, var(--status-success), var(--status-success));
    border: none;
    border-radius: var(--radius-sm);
    color: white;
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
}

.btn-execute:hover:not(:disabled) {
    box-shadow: 0 0 20px color-mix(in srgb, var(--status-success) 40%, transparent);
}

.btn-execute:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* ============================================================================
   ADDRESS BOOK PANEL (legacy sibling rules — `.address-book-panel`
   root rule lives at the canonical block earlier in the file;
   these duplicates were resetting `min-height: 0` and the
   `--panel-edge-pad` so the canonical-Vault rebuild's panel-
   scrollable body / bar pinning never engaged. Removed
   2026-05-19 as part of the canonical-control-bar UX pass.)
   ============================================================================ */

.address-book-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.address-book-header h2 {
    font-size: 18px;
    margin: 0;
}

.add-contact-btn {
    padding: 8px 16px;
    background: linear-gradient(135deg, var(--primary-blue), var(--accent-cyan));
    border: none;
    border-radius: var(--radius-sm);
    color: white;
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.add-contact-btn:hover {
    box-shadow: 0 0 20px color-mix(in srgb, var(--text-accent) 40%, transparent);
}

.address-book-toolbar {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-sm) var(--spacing-md);
    background: rgba(0, 0, 0, 0.2);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.search-box {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    flex: 1;
    max-width: 300px;
}

.search-box .search-icon {
    color: var(--text-muted);
}

.search-box .search-input {
    flex: 1;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    padding: 6px 10px;
}

.search-box .search-input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.category-filters {
    display: flex;
    gap: 4px;
}

.filter-btn {
    padding: 4px 8px;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-muted);
    font-size: 11px;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.filter-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    color: var(--text-primary);
}

.filter-btn.active {
    background: var(--primary-blue);
    border-color: var(--primary-blue);
    color: white;
}

.address-book-content {
    display: flex;
    flex: 1;
    overflow: hidden;
}

/* Contacts List */
.contacts-list {
    width: 300px;
    border-right: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    overflow-y: auto;
}

.empty-contacts {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 200px;
    color: var(--text-muted);
}

.empty-contacts .empty-icon {
    font-size: 36px;
    margin-bottom: var(--spacing-sm);
    opacity: 0.5;
}

.contact-card {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 5%, transparent);
    cursor: pointer;
    transition: background var(--duration-fast);
}

.contact-card:hover {
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
}

.contact-card.selected {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-left: 3px solid var(--primary-blue);
}

.contact-avatar {
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: 50%;
    font-size: 16px;
}

.contact-info {
    flex: 1;
    min-width: 0;
}

.contact-name {
    font-size: 13px;
    font-weight: 500;
    color: var(--text-primary);
    display: flex;
    align-items: center;
    gap: 4px;
}

.verified-badge {
    font-size: 10px;
    color: var(--status-success);
}

.verified-badge.large {
    font-size: 11px;
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    padding: 2px 6px;
    border-radius: 3px;
    margin-left: var(--spacing-xs);
}

.contact-meta {
    font-size: 10px;
    color: var(--text-muted);
    display: flex;
    gap: var(--spacing-sm);
}

.contact-trust {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 2px;
}

.trust-score {
    font-size: 10px;
    color: var(--status-success);
    font-weight: 600;
}

.privacy-level {
    font-size: 12px;
}

/* Contact Detail */
.contact-detail {
    flex: 1;
    overflow-y: auto;
}

.no-contact-selected {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    color: var(--text-muted);
}

.no-contact-selected .no-select-icon {
    font-size: 36px;
    margin-bottom: var(--spacing-sm);
    opacity: 0.5;
}

.contact-detail-content {
    padding: var(--spacing-lg);
}

.detail-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
    padding-bottom: var(--spacing-md);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.detail-avatar {
    width: 48px;
    height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: 50%;
    font-size: 24px;
}

.detail-title h3 {
    font-size: 18px;
    margin: 0 0 4px 0;
    display: flex;
    align-items: center;
}

.detail-category {
    font-size: 11px;
    color: var(--text-muted);
}

.detail-section {
    margin-bottom: var(--spacing-lg);
}

.detail-section h4 {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
    margin: 0 0 var(--spacing-sm) 0;
}

.security-info {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.security-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.security-label {
    font-size: 12px;
    color: var(--text-secondary);
}

.security-value {
    font-size: 12px;
    color: var(--text-primary);
}

.trust-bar {
    width: 150px;
    height: 8px;
    background: rgba(0, 0, 0, 0.3);
    border-radius: 4px;
    position: relative;
    overflow: hidden;
}

.trust-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--status-warning), var(--status-success));
    border-radius: 4px;
}

.trust-bar .trust-label {
    position: absolute;
    right: 4px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 8px;
    color: white;
    font-weight: 600;
}

.addresses-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.address-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-radius: var(--radius-sm);
}

.chain-icon {
    font-size: 14px;
}

.chain-name {
    font-size: 11px;
    color: var(--text-muted);
    min-width: 70px;
}

.address-value {
    flex: 1;
    font-size: 11px;
    font-family: 'JetBrains Mono', monospace;
    color: var(--text-secondary);
}

.copy-btn {
    padding: 4px 6px;
    background: transparent;
    border: none;
    cursor: pointer;
    font-size: 12px;
    opacity: 0.5;
    transition: opacity var(--duration-fast);
}

.copy-btn:hover {
    opacity: 1;
}

.add-address-btn {
    margin-top: var(--spacing-sm);
    padding: 6px 12px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px dashed color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-accent);
    font-size: 11px;
    cursor: pointer;
}

.add-address-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
}

.tags-list {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-xs);
}

.tag {
    padding: 4px 8px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: 3px;
    font-size: 10px;
    color: var(--text-accent);
}

.notes-content {
    font-size: 12px;
    color: var(--text-secondary);
    line-height: 1.5;
    margin: 0;
}

.detail-footer {
    padding-top: var(--spacing-md);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    margin-top: var(--spacing-lg);
}

.created-date {
    font-size: 10px;
    color: var(--text-muted);
}

.detail-actions {
    display: flex;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-lg);
}

.action-btn {
    flex: 1;
    padding: 10px 16px;
    border-radius: var(--radius-sm);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    cursor: pointer;
    transition: all var(--duration-fast);
}

.action-btn.send {
    background: linear-gradient(135deg, var(--status-success), var(--status-success));
    border: none;
    color: white;
}

.action-btn.send:hover {
    box-shadow: 0 0 15px color-mix(in srgb, var(--status-success) 30%, transparent);
}

.action-btn.edit {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    color: var(--text-accent);
}

.action-btn.edit:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.action-btn.delete {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    color: var(--accent-red);
}

.action-btn.delete:hover {
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
}

/* Add Contact Modal */
.add-contact-modal {
    width: 500px;
    max-height: 80vh;
    background: var(--bg-card);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-md);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.modal-header h3 {
    margin: 0;
    font-size: 16px;
}

.modal-close {
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    color: var(--text-muted);
    font-size: 16px;
    cursor: pointer;
}

.modal-close:hover {
    color: var(--text-primary);
}

.modal-body {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-lg);
}

.form-group {
    margin-bottom: var(--spacing-md);
}

.form-group label {
    display: block;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
    margin-bottom: var(--spacing-xs);
}

.form-group .hint {
    text-transform: none;
    letter-spacing: 0;
    opacity: 0.7;
}

.form-input,
.form-textarea {
    width: 100%;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    padding: 10px 12px;
}

.form-textarea {
    min-height: 80px;
    resize: vertical;
}

.form-input:focus,
.form-textarea:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.category-selector,
.privacy-selector {
    display: grid;
    gap: var(--spacing-xs);
}

.category-selector {
    grid-template-columns: repeat(4, 1fr);
}

.privacy-selector {
    grid-template-columns: 1fr;
}

.category-option,
.privacy-option {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all var(--duration-fast);
}

.category-option:hover,
.privacy-option:hover {
    background: color-mix(in srgb, var(--text-accent) 8%, transparent);
}

.category-option.selected,
.privacy-option.selected {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-color: var(--primary-blue);
}

.cat-icon {
    font-size: 16px;
}

.cat-label {
    font-size: 9px;
    color: var(--text-muted);
}

.privacy-option {
    flex-direction: row;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
}

.privacy-icon {
    font-size: 20px;
}

.privacy-name {
    font-size: 12px;
    font-weight: 500;
    color: var(--text-primary);
}

.privacy-desc {
    font-size: 10px;
    color: var(--text-muted);
    margin-left: auto;
}

.added-addresses {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    margin-bottom: var(--spacing-sm);
}

.added-address {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    background: color-mix(in srgb, var(--status-success) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 20%, transparent);
    border-radius: var(--radius-sm);
}

.added-address .chain {
    font-size: 10px;
    text-transform: uppercase;
    color: var(--status-success);
    font-weight: 600;
}

.added-address .addr {
    flex: 1;
    font-size: 11px;
    font-family: 'JetBrains Mono', monospace;
    color: var(--text-secondary);
}

.added-address .remove-addr {
    padding: 2px 6px;
    background: transparent;
    border: none;
    color: var(--accent-red);
    cursor: pointer;
    font-size: 10px;
}

.address-input-row {
    display: flex;
    gap: var(--spacing-xs);
}

.chain-select {
    width: 120px;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    padding: 8px;
}

.address-input {
    flex: 1;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    padding: 8px;
}

.address-input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.validate-btn {
    padding: 8px 12px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-accent);
    font-size: 11px;
    cursor: pointer;
}

.validate-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.modal-footer {
    display: flex;
    justify-content: flex-end;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.btn-cancel {
    padding: 10px 20px;
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-muted);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    cursor: pointer;
}

.btn-cancel:hover {
    border-color: var(--text-muted);
    color: var(--text-primary);
}

.btn-create {
    padding: 10px 20px;
    background: linear-gradient(135deg, var(--primary-blue), var(--accent-cyan));
    border: none;
    border-radius: var(--radius-sm);
    color: white;
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    font-weight: 600;
    cursor: pointer;
}

.btn-create:hover:not(:disabled) {
    box-shadow: 0 0 20px color-mix(in srgb, var(--text-accent) 40%, transparent);
}

.btn-create:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* ============================================================================
   DATA INVENTORY PANEL
   ============================================================================ */

.data-inventory-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.inventory-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-md);
    background: linear-gradient(135deg, rgba(139, 92, 246, 0.1), color-mix(in srgb, var(--text-accent) 5%, transparent));
    border-bottom: 1px solid rgba(139, 92, 246, 0.2);
}

.header-title h2 {
    font-size: 18px;
    margin: 0;
    background: linear-gradient(135deg, #8B5CF6, var(--primary-blue));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.header-subtitle {
    font-size: 11px;
    color: var(--text-muted);
}

.header-stats {
    display: flex;
    gap: var(--spacing-lg);
}

.stat-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.stat-item .stat-value {
    font-size: 16px;
    font-weight: 700;
    color: var(--text-accent);
}

.stat-item .stat-label {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-muted);
}

.inventory-search {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: rgba(0, 0, 0, 0.2);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.inventory-search .search-icon {
    color: var(--text-muted);
}

.inventory-search .search-input {
    flex: 1;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'Orbitron', monospace;
    font-size: 12px;
    padding: 8px 12px;
}

.inventory-search .search-input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.inventory-content {
    display: flex;
    flex: 1;
    overflow: hidden;
}

/* Category list */
.category-list {
    width: 260px;
    border-right: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    overflow-y: auto;
    padding: var(--spacing-sm);
}

.category-card {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    margin-bottom: var(--spacing-xs);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all var(--duration-fast);
}

.category-card:hover {
    background: color-mix(in srgb, var(--text-accent) 8%, transparent);
    border-color: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.category-card.selected {
    background: rgba(139, 92, 246, 0.15);
    border-color: rgba(139, 92, 246, 0.4);
}

.category-card.add-new {
    border-style: dashed;
    opacity: 0.6;
}

.category-card.add-new:hover {
    opacity: 1;
}

.category-icon {
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    background: rgba(139, 92, 246, 0.1);
    border-radius: 6px;
}

.category-info {
    flex: 1;
    min-width: 0;
}

.category-name {
    font-size: 12px;
    font-weight: 500;
    color: var(--text-primary);
}

.category-meta {
    display: flex;
    gap: var(--spacing-sm);
    font-size: 10px;
    color: var(--text-muted);
}

.category-status .status-badge {
    font-size: 12px;
}

.status-active { color: var(--status-success); }
.status-stale { color: var(--status-warning); }
.status-error { color: var(--accent-red); }
.status-syncing { color: var(--primary-blue); }
.status-new { color: #8B5CF6; }

/* Table detail */
.table-detail {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-lg);
}

.no-selection {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    color: var(--text-muted);
    text-align: center;
}

.no-selection .no-select-icon {
    font-size: 36px;
    margin-bottom: var(--spacing-sm);
    opacity: 0.5;
}

.no-selection h4 {
    margin: 0 0 var(--spacing-xs) 0;
    color: var(--text-secondary);
}

.no-selection p {
    font-size: 12px;
    margin: 0;
}

/* Category detail */
.category-detail,
.table-detail-view {
    max-width: 700px;
}

.detail-header {
    display: flex;
    align-items: flex-start;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
}

.detail-icon {
    width: 48px;
    height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 28px;
    background: linear-gradient(135deg, rgba(139, 92, 246, 0.2), color-mix(in srgb, var(--text-accent) 10%, transparent));
    border-radius: 10px;
}

.detail-title h3 {
    font-size: 20px;
    margin: 0 0 4px 0;
}

.detail-title p {
    font-size: 12px;
    color: var(--text-muted);
    margin: 0;
}

.detail-stats {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-lg);
}

.stat-chip {
    display: flex;
    flex-direction: column;
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: var(--radius-sm);
}

.stat-chip .chip-value {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-accent);
}

.stat-chip .chip-label {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-muted);
}

.tables-header,
.section-header {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
    margin: var(--spacing-lg) 0 var(--spacing-sm) 0;
    padding-bottom: var(--spacing-xs);
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.tables-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.table-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all var(--duration-fast);
}

.table-row:hover {
    background: color-mix(in srgb, var(--text-accent) 8%, transparent);
    border-color: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.table-type-icon {
    font-size: 16px;
}

.table-info {
    flex: 1;
    min-width: 0;
}

.table-name {
    font-size: 13px;
    font-weight: 500;
    color: var(--text-primary);
    font-family: 'JetBrains Mono', monospace;
}

.table-desc {
    display: block;
    font-size: 10px;
    color: var(--text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.table-meta {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.table-rows,
.table-size {
    font-size: 10px;
    color: var(--text-secondary);
}

.table-badge {
    font-size: 10px;
    padding: 2px 4px;
    border-radius: 3px;
}

.table-badge.embeddings {
    background: rgba(139, 92, 246, 0.2);
}

.table-badge.hypertable {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

/* Table detail view */
.back-btn {
    padding: 6px 12px;
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-muted);
    font-size: 11px;
    cursor: pointer;
    margin-bottom: var(--spacing-md);
}

.back-btn:hover {
    border-color: var(--primary-blue);
    color: var(--text-primary);
}

.columns-list,
.indexes-list {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.column-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    background: rgba(0, 0, 0, 0.2);
    border-radius: var(--radius-sm);
    font-size: 11px;
}

.column-name {
    font-family: 'JetBrains Mono', monospace;
    color: var(--text-primary);
    min-width: 150px;
    display: flex;
    align-items: center;
    gap: 4px;
}

.pk-badge {
    font-size: 10px;
}

.column-type {
    font-family: 'JetBrains Mono', monospace;
    color: #8B5CF6;
    min-width: 150px;
}

.column-nullable {
    font-size: 9px;
    color: var(--text-muted);
    min-width: 60px;
}

.column-desc {
    font-size: 10px;
    color: var(--text-muted);
    font-style: italic;
}

.index-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    background: rgba(0, 0, 0, 0.2);
    border-radius: var(--radius-sm);
    font-size: 11px;
}

.index-icon {
    color: var(--status-warning);
}

.index-name {
    font-family: 'JetBrains Mono', monospace;
    color: var(--text-secondary);
}

.table-actions {
    display: flex;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-lg);
}

.query-btn,
.export-btn {
    padding: 10px 16px;
    border-radius: var(--radius-sm);
    font-family: 'Orbitron', monospace;
    font-size: 11px;
    cursor: pointer;
}

.query-btn {
    background: linear-gradient(135deg, #8B5CF6, var(--primary-blue));
    border: none;
    color: white;
}

.query-btn:hover {
    box-shadow: 0 0 20px rgba(139, 92, 246, 0.4);
}

.export-btn {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    color: var(--text-accent);
}

.export-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

/* ============================================================================
   RSS READER PANEL
   ============================================================================ */

.rss-reader-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.rss-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-md);
    background: linear-gradient(135deg, color-mix(in srgb, var(--text-accent) 10%, transparent), rgba(139, 92, 246, 0.05));
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.rss-header .header-title h2 {
    font-family: 'Orbitron', monospace;
    font-size: 18px;
    font-weight: 700;
    margin: 0;
    color: var(--text-primary);
}

.rss-header .header-subtitle {
    font-size: 11px;
    color: var(--text-muted);
}

.rss-header .header-actions {
    display: flex;
    gap: var(--spacing-sm);
}

.rss-header .action-btn {
    padding: 8px 12px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-size: 11px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.rss-header .action-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    color: var(--text-primary);
}

.rss-header .action-btn.active {
    background: color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}

.rss-toolbar {
    padding: var(--spacing-md);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    background: rgba(0, 0, 0, 0.2);
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.rss-toolbar .search-box {
    display: flex;
    align-items: center;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: var(--radius-sm);
    padding: 0 var(--spacing-sm);
}

.rss-toolbar .search-icon {
    font-size: 14px;
    margin-right: var(--spacing-xs);
}

.rss-toolbar .search-input {
    flex: 1;
    background: transparent;
    border: none;
    color: var(--text-primary);
    padding: 10px 0;
    font-size: 13px;
}

.rss-toolbar .search-input::placeholder {
    color: var(--text-muted);
}

.category-pills {
    display: flex;
    gap: var(--spacing-xs);
    flex-wrap: wrap;
}

.category-pills .pill {
    padding: 6px 12px;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 999px;
    color: var(--text-secondary);
    font-size: 11px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.category-pills .pill:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.category-pills .pill.active {
    background: var(--cat-color, var(--primary-blue));
    background: color-mix(in srgb, var(--cat-color, var(--primary-blue)) 20%, transparent);
    border-color: var(--cat-color, var(--primary-blue));
    color: var(--cat-color, var(--primary-blue));
}

.rss-content {
    flex: 1;
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    min-height: 0;
    overflow: hidden;
}

.article-list {
    overflow-y: auto;
    border-right: 1px solid rgba(255, 255, 255, 0.05);
}

.empty-articles {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 200px;
    color: var(--text-muted);
}

.empty-articles .empty-icon {
    font-size: 48px;
    margin-bottom: var(--spacing-md);
}

.article-card {
    padding: var(--spacing-md);
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
    cursor: pointer;
    transition: all 0.2s ease;
}

.article-card:hover {
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
}

.article-card.selected {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-left: 3px solid var(--primary-blue);
}

.article-card.read .article-title {
    color: var(--text-muted);
}

.article-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--spacing-xs);
}

.article-category {
    padding: 4px 8px;
    border-radius: var(--radius-sm);
    font-size: 10px;
    font-weight: 500;
}

.article-time {
    font-size: 10px;
    color: var(--text-muted);
}

.article-title {
    font-size: 14px;
    font-weight: 500;
    color: var(--text-primary);
    margin: 0 0 var(--spacing-sm) 0;
    line-height: 1.4;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.article-meta {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.article-source {
    font-size: 11px;
    color: var(--text-muted);
}

.article-tickers {
    display: flex;
    gap: 4px;
}

.ticker-badge {
    padding: 2px 6px;
    background: rgba(247, 147, 26, 0.2);
    border-radius: var(--radius-sm);
    font-size: 10px;
    font-weight: 600;
    color: #F7931A;
    font-family: 'JetBrains Mono', monospace;
}

.ticker-badge.large {
    padding: 4px 10px;
    font-size: 12px;
}

.bookmark-indicator {
    font-size: 12px;
}

.article-reader {
    overflow-y: auto;
    background: rgba(0, 0, 0, 0.2);
}

.no-article {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    color: var(--text-muted);
    text-align: center;
    padding: var(--spacing-lg);
}

.no-article .no-article-icon {
    font-size: 48px;
    margin-bottom: var(--spacing-md);
}

.no-article h4 {
    font-size: 16px;
    margin: 0 0 var(--spacing-xs) 0;
    color: var(--text-secondary);
}

.no-article p {
    font-size: 12px;
    margin: 0;
}

.article-content {
    padding: var(--spacing-lg);
}

.content-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

.content-category {
    padding: 6px 12px;
    border-radius: var(--radius-sm);
    font-size: 11px;
    font-weight: 500;
}

.content-source {
    font-size: 12px;
    color: var(--text-muted);
}

.content-title {
    font-size: 20px;
    font-weight: 600;
    color: var(--text-primary);
    margin: 0 0 var(--spacing-md) 0;
    line-height: 1.4;
}

.content-meta {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
    padding-bottom: var(--spacing-md);
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.content-time {
    font-size: 12px;
    color: var(--text-muted);
}

.content-tickers {
    display: flex;
    gap: var(--spacing-xs);
}

.content-body {
    font-size: 14px;
    line-height: 1.7;
    color: var(--text-secondary);
}

.content-body p {
    margin: 0 0 var(--spacing-md) 0;
}

.content-actions {
    display: flex;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-lg);
    padding-top: var(--spacing-md);
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.read-more-btn {
    padding: 10px 20px;
    background: linear-gradient(135deg, var(--primary-blue), var(--secondary-blue));
    border: none;
    border-radius: var(--radius-sm);
    color: white;
    font-size: 12px;
    font-weight: 500;
    cursor: pointer;
    text-decoration: none;
    transition: all 0.2s ease;
}

.read-more-btn:hover {
    box-shadow: 0 0 20px color-mix(in srgb, var(--text-accent) 40%, transparent);
}

.bookmark-btn,
.share-btn {
    padding: 10px 16px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-size: 12px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.bookmark-btn:hover,
.share-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    color: var(--text-primary);
}

/* Sources Panel */
.sources-panel {
    padding: var(--spacing-lg);
}

.sources-panel h3 {
    font-family: 'Orbitron', monospace;
    font-size: 16px;
    margin: 0 0 var(--spacing-xs) 0;
}

.sources-subtitle {
    font-size: 12px;
    color: var(--text-muted);
    margin: 0 0 var(--spacing-lg) 0;
}

.sources-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.source-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: rgba(0, 0, 0, 0.3);
    border-radius: var(--radius-sm);
    border: 1px solid rgba(255, 255, 255, 0.05);
}

.source-category {
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-sm);
    font-size: 14px;
}

.source-info {
    flex: 1;
    display: flex;
    flex-direction: column;
}

.source-name {
    font-size: 13px;
    color: var(--text-primary);
}

.source-count {
    font-size: 10px;
    color: var(--text-muted);
}

.source-priority {
    font-size: 10px;
    padding: 4px 8px;
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    border-radius: var(--radius-sm);
    color: var(--status-success);
    text-transform: uppercase;
}

.sources-footer {
    margin-top: var(--spacing-lg);
}

.add-feed-btn {
    width: 100%;
    padding: 12px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px dashed color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--primary-blue);
    font-size: 12px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.add-feed-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-style: solid;
}

/* ============================================================================
   WORKFLOW PROGRESS - Agent-driven workflow execution UI
   ============================================================================ */

.workflow-progress {
    background: linear-gradient(135deg, var(--card-bg) 0%, color-mix(in srgb, var(--text-accent) 5%, transparent) 100%);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-lg);
    padding: var(--spacing-lg);
    margin: var(--spacing-md) 0;
    position: relative;
    overflow: hidden;
}

.workflow-progress::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: linear-gradient(90deg, var(--primary-blue), var(--accent-red), var(--primary-blue));
    background-size: 200% 100%;
    animation: workflow-gradient 3s ease infinite;
}

@keyframes workflow-gradient {
    0%, 100% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
}

.workflow-progress.state-completed::before {
    background: var(--status-success);
    animation: none;
}

.workflow-progress.state-failed::before {
    background: var(--status-error);
    animation: none;
}

.workflow-progress.state-compensating::before {
    background: var(--status-warning);
    animation: pulse 1s ease infinite;
}

/* Header */
.workflow-header {
    margin-bottom: var(--spacing-md);
}

.workflow-title {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-xs);
}

.workflow-icon {
    font-size: 24px;
}

.workflow-name {
    font-family: var(--font-display);
    font-size: 16px;
    font-weight: 600;
    color: var(--text-primary);
}

.workflow-pattern-badge {
    font-size: 10px;
    padding: 2px 8px;
    border-radius: var(--radius-sm);
    text-transform: uppercase;
    font-weight: 500;
}

.badge-saga {
    background: color-mix(in srgb, var(--status-warning) 20%, transparent);
    color: var(--status-warning);
    border: 1px solid color-mix(in srgb, var(--status-warning) 30%, transparent);
}

.badge-dag {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    color: var(--primary-blue);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.badge-linear {
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    color: var(--status-success);
    border: 1px solid color-mix(in srgb, var(--status-success) 30%, transparent);
}

.workflow-description {
    font-size: 13px;
    color: var(--text-secondary);
}

/* Progress Bar */
.workflow-progress-bar {
    margin-bottom: var(--spacing-md);
}

.progress-track {
    height: 8px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: 4px;
    overflow: hidden;
    margin-bottom: var(--spacing-xs);
}

.progress-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--primary-blue), var(--status-success));
    border-radius: 4px;
    transition: width 0.5s ease;
    position: relative;
}

.progress-fill::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
    animation: shimmer 2s ease infinite;
}

@keyframes shimmer {
    0% { transform: translateX(-100%); }
    100% { transform: translateX(100%); }
}

.progress-text {
    font-size: 11px;
    color: var(--text-muted);
    text-align: right;
}

/* Steps List */
.workflow-steps {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-md);
}

.workflow-step {
    display: flex;
    align-items: flex-start;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border-radius: var(--radius-sm);
    border-left: 3px solid transparent;
    transition: all 0.2s ease;
}

.workflow-step.step-current {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-left-color: var(--primary-blue);
}

.workflow-step.step-completed {
    opacity: 0.8;
}

.workflow-step.step-completed .step-icon {
    color: var(--status-success);
}

.workflow-step.step-failed {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border-left-color: var(--status-error);
}

.workflow-step.step-failed .step-icon {
    color: var(--status-error);
}

.workflow-step.step-running .step-icon {
    color: var(--primary-blue);
    animation: pulse 1s ease infinite;
}

.workflow-step.step-auth {
    background: color-mix(in srgb, var(--status-warning) 10%, transparent);
    border-left-color: var(--status-warning);
}

.step-icon {
    font-size: 16px;
    width: 24px;
    text-align: center;
    flex-shrink: 0;
    margin-top: 2px;
    color: var(--text-muted);
}

.step-content {
    flex: 1;
    min-width: 0;
}

.step-name {
    font-size: 13px;
    font-weight: 500;
    color: var(--text-primary);
    margin-bottom: 2px;
}

.step-description {
    font-size: 11px;
    color: var(--text-secondary);
}

.step-spinner {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 11px;
    color: var(--primary-blue);
    margin-top: 4px;
}

.spinner {
    width: 12px;
    height: 12px;
    border: 2px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-top-color: var(--primary-blue);
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

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

.step-panel-badge {
    font-size: 9px;
    padding: 2px 6px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: var(--radius-sm);
    color: var(--primary-blue);
    flex-shrink: 0;
}

/* Auth Prompt */
.workflow-auth-prompt {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-lg);
    background: color-mix(in srgb, var(--status-warning) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-warning) 30%, transparent);
    border-radius: var(--radius-md);
    text-align: center;
}

.auth-icon {
    font-size: 32px;
}

.auth-message {
    font-size: 14px;
    color: var(--text-primary);
}

.btn-auth {
    padding: 10px 24px;
    background: linear-gradient(135deg, var(--status-warning), #ff8800);
    border: none;
    border-radius: var(--radius-sm);
    color: #000;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
}

.btn-auth:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px color-mix(in srgb, var(--status-warning) 40%, transparent);
}

/* Error State */
.workflow-error {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-lg);
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    border-radius: var(--radius-md);
    text-align: center;
}

.error-icon {
    font-size: 32px;
}

.error-message {
    font-size: 13px;
    color: var(--text-primary);
}

.error-actions {
    display: flex;
    gap: var(--spacing-sm);
}

.btn-retry {
    padding: 8px 16px;
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--primary-blue);
    font-size: 12px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.btn-retry:hover {
    background: color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.btn-cancel {
    padding: 8px 16px;
    background: transparent;
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-size: 12px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.btn-cancel:hover {
    border-color: color-mix(in srgb, var(--status-error) 50%, transparent);
    color: var(--status-error);
}

/* Completion State */
.workflow-complete {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-lg);
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 30%, transparent);
    border-radius: var(--radius-md);
    text-align: center;
}

.complete-icon {
    font-size: 32px;
}

.complete-message {
    font-size: 14px;
    color: var(--status-success);
    font-weight: 500;
}

/* Running Footer */
.workflow-running-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: var(--spacing-sm);
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.running-indicator {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12px;
    color: var(--primary-blue);
}

.pulse-dot {
    width: 8px;
    height: 8px;
    background: var(--primary-blue);
    border-radius: 50%;
    animation: pulse-scale 1.5s ease infinite;
}

@keyframes pulse-scale {
    0%, 100% { transform: scale(1); opacity: 1; }
    50% { transform: scale(1.5); opacity: 0.5; }
}

.btn-cancel-running {
    padding: 6px 12px;
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--status-error);
    font-size: 11px;
    cursor: pointer;
    opacity: 0.7;
    transition: all 0.2s ease;
}

.btn-cancel-running:hover {
    opacity: 1;
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
}

/* Compact Progress */
.workflow-progress-compact {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: 6px 12px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    font-size: 12px;
}

.compact-icon {
    font-size: 14px;
}

.compact-name {
    color: var(--text-primary);
    font-weight: 500;
}

.compact-progress {
    color: var(--text-muted);
}

.compact-state {
    padding: 2px 6px;
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: var(--radius-sm);
    color: var(--primary-blue);
    font-size: 10px;
    text-transform: uppercase;
}

/* ============================================================================
   OPPORTUNITY EXCHANGE PANEL - Asset-Backed Private Credit Marketplace
   ============================================================================ */

.opex-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--panel-bg);
    color: var(--text-primary);
    overflow: hidden;
}

/* Header */
.opex-header {
    padding: 16px 20px;
    background: var(--card-bg);
    border-bottom: 1px solid var(--border-glow);
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.opex-brand {
    display: flex;
    align-items: center;
    gap: 12px;
}

.opex-icon {
    font-size: 28px;
    filter: drop-shadow(0 0 8px var(--primary-blue-glow));
}

.opex-title h1 {
    font-family: var(--font-display);
    font-size: 18px;
    font-weight: 700;
    margin: 0;
    background: linear-gradient(135deg, var(--primary-blue), var(--patriot-white));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.opex-subtitle {
    font-size: 11px;
    color: var(--text-muted);
    margin: 0;
}

/* Navigation */
.opex-nav {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.opex-nav-btn {
    background: transparent;
    border: 1px solid var(--border-glow);
    border-radius: 6px;
    padding: 8px 14px;
    color: var(--text-secondary);
    font-size: 12px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 6px;
    transition: all 0.2s ease;
}

.opex-nav-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}

.opex-nav-btn.active {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}

.opex-nav-btn.create-btn {
    background: linear-gradient(135deg, var(--primary-blue), var(--secondary-blue));
    border: none;
    color: var(--star-white);
    font-weight: 600;
}

.opex-nav-btn.create-btn:hover {
    filter: brightness(1.1);
    box-shadow: 0 4px 16px var(--primary-blue-glow);
}

.nav-icon {
    font-size: 14px;
}

/* Content Area */
.opex-content {
    flex: 1;
    overflow-y: auto;
    padding: 20px;
}

/* Discover View */
.discover-view {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.discover-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 12px;
}

.stat-card {
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 16px;
    text-align: center;
}

.stat-value {
    display: block;
    font-family: var(--font-display);
    font-size: 24px;
    font-weight: 700;
    color: var(--primary-blue);
    text-shadow: 0 0 12px var(--primary-blue-glow);
}

.stat-label {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Filters */
.discover-filters {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.search-box {
    display: flex;
    align-items: center;
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 0 12px;
}

.search-icon {
    font-size: 16px;
    color: var(--text-muted);
}

.search-box input {
    flex: 1;
    background: transparent;
    border: none;
    padding: 12px;
    color: var(--text-primary);
    font-size: 14px;
    outline: none;
}

.search-box input::placeholder {
    color: var(--text-muted);
}

.asset-class-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.filter-chip {
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: 20px;
    padding: 6px 12px;
    color: var(--text-secondary);
    font-size: 12px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 4px;
    transition: all 0.2s ease;
}

.filter-chip:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
}

.filter-chip.active {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}

.chip-icon {
    font-size: 14px;
}

/* Opportunity Grid */
.opportunity-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 16px;
}

/* Opportunity Card */
.opportunity-card {
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 12px;
    padding: 16px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.opportunity-card:hover {
    border-color: var(--primary-blue);
    box-shadow: 0 8px 32px color-mix(in srgb, var(--text-accent) 15%, transparent);
    transform: translateY(-2px);
}

.opp-card-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
}

.asset-class-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: 4px;
    padding: 4px 8px;
    font-size: 11px;
    color: var(--primary-blue);
}

.asset-class-badge.large {
    font-size: 13px;
    padding: 6px 12px;
}

.badge-icon {
    font-size: 12px;
}

.status-badge {
    font-size: 10px;
    padding: 3px 8px;
    border-radius: 4px;
    text-transform: uppercase;
    font-weight: 600;
    letter-spacing: 0.5px;
}

.status-blue { background: color-mix(in srgb, var(--text-accent) 20%, transparent); color: var(--primary-blue); }
.status-green { background: color-mix(in srgb, var(--status-success) 20%, transparent); color: var(--status-success); }
.status-yellow { background: color-mix(in srgb, var(--status-warning) 20%, transparent); color: var(--status-warning); }
.status-red { background: color-mix(in srgb, var(--status-error) 20%, transparent); color: var(--status-error); }
.status-purple { background: rgba(156, 39, 176, 0.2); color: #ce93d8; }
.status-gray { background: rgba(107, 124, 147, 0.2); color: var(--text-muted); }
.status-teal { background: rgba(0, 188, 212, 0.2); color: #80deea; }

.opp-title {
    font-family: var(--font-display);
    font-size: 15px;
    font-weight: 600;
    margin: 0 0 8px 0;
    color: var(--text-primary);
}

.opp-description {
    font-size: 12px;
    color: var(--text-secondary);
    margin: 0 0 16px 0;
    line-height: 1.5;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.opp-metrics {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
    margin-bottom: 16px;
}

.metric {
    text-align: center;
}

.metric-value {
    display: block;
    font-family: var(--font-mono);
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
}

.metric-label {
    font-size: 9px;
    color: var(--text-muted);
    text-transform: uppercase;
}

.opp-card-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-top: 12px;
    border-top: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.matching-model {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 11px;
    color: var(--text-muted);
}

.model-icon {
    font-size: 14px;
}

.biomimicry-badge {
    font-size: 16px;
    filter: drop-shadow(0 0 4px color-mix(in srgb, var(--status-success) 50%, transparent));
    cursor: help;
}

.data-proofs-count {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 11px;
    color: var(--status-success);
}

.proofs-icon {
    font-size: 12px;
}

/* Empty State */
.empty-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 60px 20px;
    text-align: center;
}

.empty-icon {
    font-size: 48px;
    margin-bottom: 16px;
    opacity: 0.5;
}

.empty-state h3 {
    font-family: var(--font-display);
    font-size: 18px;
    margin: 0 0 8px 0;
    color: var(--text-primary);
}

.empty-state p {
    font-size: 13px;
    color: var(--text-muted);
    margin: 0 0 20px 0;
}

/* Buttons */
.primary-btn {
    background: linear-gradient(135deg, var(--primary-blue), var(--secondary-blue));
    border: none;
    border-radius: 8px;
    padding: 12px 24px;
    color: var(--star-white);
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
}

.primary-btn:hover:not(:disabled) {
    filter: brightness(1.1);
    box-shadow: 0 4px 16px var(--primary-blue-glow);
}

.primary-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.secondary-btn {
    background: transparent;
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 12px 24px;
    color: var(--text-secondary);
    font-size: 14px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.secondary-btn:hover:not(:disabled) {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}

/* My Opportunities View */
.my-opportunities-view {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.my-opps-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 16px;
}

/* Active Positions View */
.active-positions-view {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.positions-summary {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 16px;
}

.summary-card {
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 12px;
    padding: 20px;
}

.summary-card h4 {
    font-size: 12px;
    color: var(--text-muted);
    margin: 0 0 8px 0;
    text-transform: uppercase;
}

.summary-value {
    font-family: var(--font-display);
    font-size: 28px;
    font-weight: 700;
    color: var(--text-primary);
}

.summary-card.providing .summary-value {
    color: var(--primary-blue);
}

.summary-card.receiving .summary-value {
    color: var(--status-success);
}

.summary-label {
    font-size: 11px;
    color: var(--text-muted);
}

/* Opportunity Detail View */
.opportunity-detail-view {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.detail-header {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.back-btn {
    background: transparent;
    border: none;
    color: var(--text-muted);
    font-size: 13px;
    cursor: pointer;
    padding: 0;
    align-self: flex-start;
}

.back-btn:hover {
    color: var(--primary-blue);
}

.detail-title-section h2 {
    font-family: var(--font-display);
    font-size: 20px;
    margin: 12px 0 8px 0;
}

.detail-description {
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 1.5;
    margin: 0;
}

.detail-actions {
    display: flex;
    gap: 12px;
}

.detail-tabs {
    display: flex;
    gap: 4px;
    border-bottom: 1px solid var(--border-glow);
    padding-bottom: 0;
}

.detail-tab {
    background: transparent;
    border: none;
    border-bottom: 2px solid transparent;
    padding: 12px 16px;
    color: var(--text-muted);
    font-size: 13px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.detail-tab:hover {
    color: var(--text-primary);
}

.detail-tab.active {
    color: var(--primary-blue);
    border-bottom-color: var(--primary-blue);
}

.detail-content {
    padding-top: 8px;
}

/* Overview Tab */
.overview-tab {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.terms-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 16px;
}

.term-card {
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 16px;
}

.term-label {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    margin-bottom: 8px;
}

.term-value {
    font-family: var(--font-mono);
    font-size: 16px;
    color: var(--text-primary);
}

.additional-terms h4 {
    font-size: 14px;
    margin: 0 0 12px 0;
    color: var(--text-primary);
}

.additional-terms ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.additional-terms li {
    padding: 8px 0;
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
    font-size: 13px;
    color: var(--text-secondary);
}

.term-name {
    color: var(--text-muted);
    margin-right: 8px;
}

/* Collateral Tab */
.collateral-tab {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.collateral-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.collateral-header h4 {
    margin: 0;
    font-size: 14px;
}

.verification-badge {
    font-size: 11px;
    padding: 4px 10px;
    border-radius: 4px;
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    color: var(--status-success);
}

.collateral-details {
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 16px;
}

.detail-row {
    display: flex;
    justify-content: space-between;
    padding: 12px 0;
    border-bottom: 1px solid color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.detail-row:last-child {
    border-bottom: none;
}

.detail-label {
    color: var(--text-muted);
    font-size: 13px;
}

.detail-value {
    color: var(--text-primary);
    font-size: 13px;
    text-align: right;
}

.detail-value.highlight {
    font-family: var(--font-mono);
    font-weight: 600;
    color: var(--primary-blue);
}

.trust-score {
    font-size: 11px;
    color: var(--status-success);
    margin-left: 8px;
}

.encumbrances h5 {
    font-size: 13px;
    color: var(--text-primary);
    margin: 0 0 12px 0;
}

.encumbrances ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.encumbrances li {
    padding: 8px 12px;
    background: color-mix(in srgb, var(--status-warning) 10%, transparent);
    border-radius: 4px;
    font-size: 12px;
    color: var(--status-warning);
    margin-bottom: 8px;
}

/* Data Proofs Tab */
.data-proofs-tab {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.proofs-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 12px;
}

.proof-card {
    background: var(--card-bg);
    border: 1px solid rgba(107, 124, 147, 0.3);
    border-radius: 8px;
    padding: 14px;
    transition: all 0.2s ease;
}

.proof-card.verified {
    border-color: color-mix(in srgb, var(--status-success) 30%, transparent);
}

.proof-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 10px;
}

.proof-category {
    font-size: 10px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.visibility-badge {
    font-size: 11px;
    color: var(--text-secondary);
}

.proof-label {
    font-size: 13px;
    color: var(--text-primary);
    margin-bottom: 12px;
}

.proof-footer {
    font-size: 11px;
}

.verified-badge {
    color: var(--status-success);
}

.pending-badge {
    color: var(--text-muted);
}

/* Matching Tab */
.matching-tab {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.matching-model-display {
    text-align: center;
    padding: 24px;
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 12px;
}

.model-icon-large {
    font-size: 48px;
    margin-bottom: 12px;
}

.matching-model-display h3 {
    font-family: var(--font-display);
    font-size: 18px;
    margin: 0 0 8px 0;
}

.model-description {
    font-size: 13px;
    color: var(--text-secondary);
}

.model-config {
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 16px;
}

.config-details {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.config-row {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
}

.config-row span:first-child {
    color: var(--text-muted);
}

.config-row span:last-child {
    color: var(--text-primary);
    font-family: var(--font-mono);
}

.config-note {
    color: var(--text-muted);
    font-size: 13px;
    text-align: center;
}

/* Biomimicry Tab */
.biomimicry-tab {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.biomimicry-enabled {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.bio-header {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px;
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 30%, transparent);
    border-radius: 8px;
}

.bio-icon {
    font-size: 28px;
    filter: drop-shadow(0 0 8px color-mix(in srgb, var(--status-success) 50%, transparent));
}

.bio-header h3 {
    margin: 0;
    font-size: 16px;
    color: var(--status-success);
}

.bio-section h4 {
    font-size: 13px;
    color: var(--text-muted);
    text-transform: uppercase;
    margin: 0 0 12px 0;
}

.metrics-list, .patterns-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.metric-item, .pattern-item {
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 12px;
}

.metric-item {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.metric-name, .pattern-name {
    font-size: 13px;
    font-weight: 500;
    color: var(--text-primary);
}

.metric-desc, .pattern-desc {
    font-size: 11px;
    color: var(--text-muted);
}

.pattern-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
}

.pattern-icon {
    font-size: 24px;
}

.pattern-info {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.biomimicry-disabled {
    text-align: center;
    padding: 40px;
    color: var(--text-muted);
}

.bio-icon-muted {
    font-size: 48px;
    opacity: 0.3;
    margin-bottom: 16px;
}

.biomimicry-disabled h4 {
    margin: 0 0 8px 0;
    color: var(--text-secondary);
}

.biomimicry-disabled p {
    font-size: 13px;
    margin: 0;
}

/* Create Wizard */
.create-wizard {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.wizard-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 24px;
}

.wizard-header h2 {
    font-family: var(--font-display);
    font-size: 18px;
    margin: 0;
}

.cancel-btn {
    background: transparent;
    border: none;
    font-size: 20px;
    color: var(--text-muted);
    cursor: pointer;
}

.cancel-btn:hover {
    color: var(--accent-red);
}

.wizard-progress {
    display: flex;
    justify-content: space-between;
    margin-bottom: 32px;
    padding: 0 20px;
}

.progress-step {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    opacity: 0.4;
}

.progress-step.current, .progress-step.completed {
    opacity: 1;
}

.step-number {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--card-bg);
    border: 2px solid var(--border-glow);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 600;
}

.progress-step.current .step-number {
    background: var(--primary-blue);
    border-color: var(--primary-blue);
    color: var(--star-white);
}

.progress-step.completed .step-number {
    background: var(--status-success);
    border-color: var(--status-success);
    color: var(--dark-bg);
}

.step-label {
    font-size: 10px;
    color: var(--text-muted);
    text-align: center;
}

.progress-step.current .step-label {
    color: var(--primary-blue);
}

.wizard-content {
    flex: 1;
    overflow-y: auto;
}

.wizard-step {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.wizard-step h3 {
    font-family: var(--font-display);
    font-size: 16px;
    margin: 0;
}

.wizard-nav {
    display: flex;
    justify-content: space-between;
    padding-top: 24px;
    border-top: 1px solid var(--border-glow);
    margin-top: 24px;
}

/* Asset Class Step */
.asset-class-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 12px;
}

.asset-class-option {
    background: var(--card-bg);
    border: 2px solid var(--border-glow);
    border-radius: 12px;
    padding: 20px;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s ease;
}

.asset-class-option:hover {
    border-color: var(--primary-blue);
    transform: translateY(-2px);
}

.asset-class-option.selected {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.option-icon {
    font-size: 32px;
    margin-bottom: 12px;
}

.option-label {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 8px;
}

.option-desc {
    font-size: 11px;
    color: var(--text-muted);
    line-height: 1.4;
}

/* Form Elements */
.form-group {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.form-group label {
    font-size: 12px;
    color: var(--text-muted);
    text-transform: uppercase;
}

.form-group input, .form-group textarea {
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 12px;
    color: var(--text-primary);
    font-size: 14px;
    font-family: inherit;
    outline: none;
    transition: border-color 0.2s ease;
}

.form-group input:focus, .form-group textarea:focus {
    border-color: var(--primary-blue);
}

.form-group textarea {
    min-height: 100px;
    resize: vertical;
}

.form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}

.form-row.three-col {
    grid-template-columns: repeat(3, 1fr);
}

/* Data Proofs Step */
.step-description {
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 1.5;
}

.proof-categories {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 12px;
}

.proof-category-card {
    display: flex;
    align-items: center;
    gap: 12px;
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 14px;
}

.category-icon {
    font-size: 24px;
}

.category-name {
    flex: 1;
    font-size: 13px;
    color: var(--text-primary);
}

.add-proof-btn {
    background: transparent;
    border: 1px solid var(--primary-blue);
    border-radius: 4px;
    padding: 4px 10px;
    color: var(--primary-blue);
    font-size: 11px;
    cursor: pointer;
}

.add-proof-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.skip-note {
    font-size: 12px;
    color: var(--text-muted);
    text-align: center;
    font-style: italic;
}

/* Matching Model Step */
.matching-model-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 12px;
}

.matching-model-option {
    background: var(--card-bg);
    border: 2px solid var(--border-glow);
    border-radius: 12px;
    padding: 16px;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s ease;
}

.matching-model-option:hover {
    border-color: var(--primary-blue);
}

.matching-model-option.selected {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.model-icon {
    font-size: 28px;
    margin-bottom: 10px;
}

.model-name {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 6px;
}

.model-desc {
    font-size: 11px;
    color: var(--text-muted);
    line-height: 1.4;
}

/* Biomimicry Step */
.bio-toggle {
    padding: 20px;
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
}

.toggle-label {
    display: flex;
    align-items: center;
    gap: 12px;
    cursor: pointer;
}

.toggle-label input[type="checkbox"] {
    width: 20px;
    height: 20px;
    cursor: pointer;
}

.toggle-text {
    font-size: 14px;
    color: var(--text-primary);
}

.bio-preview {
    background: color-mix(in srgb, var(--status-success) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 20%, transparent);
    border-radius: 8px;
    padding: 20px;
}

.bio-preview h4 {
    font-size: 14px;
    margin: 0 0 16px 0;
    color: var(--status-success);
}

.bio-feature {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 12px;
}

.feature-icon {
    font-size: 20px;
}

.feature-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.feature-name {
    font-size: 13px;
    color: var(--text-primary);
}

.feature-desc {
    font-size: 11px;
    color: var(--text-muted);
}

.advanced-note {
    font-size: 11px;
    color: var(--text-muted);
    text-align: center;
    margin-top: 16px;
    font-style: italic;
}

/* Review Step */
.review-sections {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 16px;
    margin-bottom: 24px;
}

.review-section {
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
    padding: 16px;
}

.review-section h4 {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    margin: 0 0 8px 0;
}

.review-section p {
    font-size: 14px;
    color: var(--text-primary);
    margin: 0;
}

.review-section .value {
    font-family: var(--font-mono);
    font-size: 18px;
    font-weight: 600;
    color: var(--primary-blue);
}

.review-terms p {
    margin-bottom: 4px;
}

.submit-btn {
    width: 100%;
    background: linear-gradient(135deg, var(--primary-blue), var(--secondary-blue));
    border: none;
    border-radius: 8px;
    padding: 16px;
    color: var(--star-white);
    font-size: 16px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
}

.submit-btn:hover {
    filter: brightness(1.1);
    box-shadow: 0 4px 24px var(--primary-blue-glow);
}

/* ============================================================================
   PRESTIGE HUD STYLES
   ============================================================================ */

/* Full HUD */
.prestige-hud {
    background: linear-gradient(135deg, rgba(30, 35, 45, 0.95), rgba(20, 25, 35, 0.98));
    border: 1px solid rgba(100, 120, 150, 0.3);
    border-radius: 12px;
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 16px;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.05);
}

.hud-identity {
    display: flex;
    align-items: center;
    gap: 12px;
}

.hud-avatar {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: linear-gradient(135deg, #1a1f2e, #2a3040);
    border: 3px solid currentColor;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    font-weight: bold;
    color: var(--text-primary);
}

.hud-name-tier {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.hud-name {
    font-size: 16px;
    font-weight: 600;
    color: var(--text-primary);
}

.hud-tier-badge {
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: white;
}

/* Stats Grid */
.hud-stats-grid {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 12px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 8px;
}

.stat-bar-row {
    display: grid;
    grid-template-columns: 80px 1fr 30px;
    align-items: center;
    gap: 8px;
}

.stat-bar-label {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.stat-bar-track {
    height: 6px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 3px;
    overflow: hidden;
}

.stat-bar-fill {
    height: 100%;
    border-radius: 3px;
    transition: width 0.3s ease;
    box-shadow: 0 0 8px currentColor;
}

.stat-bar-level {
    font-size: 12px;
    font-weight: 700;
    text-align: right;
}

/* Trust Meter */
.hud-trust-meter {
    padding: 12px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 8px;
}

.trust-header {
    display: flex;
    justify-content: space-between;
    margin-bottom: 8px;
}

.trust-label {
    font-size: 12px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.trust-value {
    font-size: 12px;
    font-weight: 700;
    color: var(--text-primary);
}

.trust-bar-container {
    height: 8px;
    background: linear-gradient(90deg, 
        color-mix(in srgb, var(--status-error) 30%, transparent), 
        color-mix(in srgb, var(--status-warning) 30%, transparent), 
        color-mix(in srgb, var(--status-success) 30%, transparent)
    );
    border-radius: 4px;
    overflow: hidden;
}

.trust-bar-fill {
    height: 100%;
    background: linear-gradient(90deg, #ef4444, #f59e0b, #22c55e);
    border-radius: 4px;
    transition: width 0.3s ease;
}

/* Quick Stats */
.hud-quick-stats {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
}

.quick-stat {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 8px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 6px;
}

.qs-value {
    font-size: 14px;
    font-weight: 700;
    color: var(--text-primary);
}

.qs-label {
    font-size: 9px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

/* Level Progress */
.hud-progress {
    padding: 12px;
    background: rgba(100, 120, 200, 0.1);
    border-radius: 8px;
    border: 1px solid rgba(100, 120, 200, 0.2);
}

.progress-header {
    display: flex;
    justify-content: space-between;
    margin-bottom: 8px;
    font-size: 11px;
    color: var(--text-secondary);
}

.progress-bar-container {
    height: 6px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 3px;
    overflow: hidden;
}

.progress-bar-fill {
    height: 100%;
    background: linear-gradient(90deg, #3b82f6, #a855f7);
    border-radius: 3px;
    box-shadow: 0 0 10px rgba(59, 130, 246, 0.5);
}

/* Compact HUD */
.prestige-hud-compact {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 12px;
    background: rgba(0, 0, 0, 0.3);
    border-radius: 8px;
    border: 1px solid rgba(100, 120, 150, 0.2);
}

.hud-tier {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 4px 8px;
    border: 2px solid;
    border-radius: 6px;
}

.tier-label {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
}

.tier-points {
    font-size: 9px;
    color: var(--text-muted);
}

.hud-trust {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 8px;
}

.hud-trust .trust-bar {
    flex: 1;
    height: 4px;
    background: linear-gradient(90deg, #22c55e, #3b82f6, #a855f7);
    border-radius: 2px;
}

.hud-trust .trust-value {
    font-size: 12px;
    font-weight: 700;
    color: var(--text-primary);
}

/* Counterparty Card */
.counterparty-card {
    background: linear-gradient(135deg, rgba(30, 35, 45, 0.9), rgba(25, 30, 40, 0.95));
    border: 1px solid rgba(100, 120, 150, 0.25);
    border-radius: 12px;
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.counterparty-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.counterparty-role {
    font-size: 10px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.counterparty-tier {
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 10px;
    font-weight: 700;
    color: white;
}

.counterparty-identity {
    display: flex;
    align-items: center;
    gap: 12px;
}

.counterparty-avatar {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.3);
    border: 2px solid;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: bold;
    font-size: 16px;
}

.counterparty-name {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
}

.counterparty-trust {
    display: flex;
    align-items: center;
    gap: 8px;
}

.mini-trust-bar {
    flex: 1;
    height: 4px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 2px;
    overflow: hidden;
}

.mini-trust-fill {
    height: 100%;
    background: linear-gradient(90deg, #22c55e, #3b82f6);
    border-radius: 2px;
}

.mini-trust-label {
    font-size: 10px;
    color: var(--text-muted);
}

.counterparty-highlights {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
}

.highlight {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 8px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 6px;
}

.h-icon {
    font-size: 14px;
    margin-bottom: 2px;
}

.h-value {
    font-size: 13px;
    font-weight: 700;
    color: var(--text-primary);
}

.h-label {
    font-size: 9px;
    color: var(--text-muted);
    text-align: center;
}

.counterparty-prestige-bars {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 8px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 6px;
}

/* Model Access Badge */
.model-access-badge {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 30%, transparent);
    border-radius: 8px;
}

.model-access-badge.locked {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border-color: color-mix(in srgb, var(--status-error) 30%, transparent);
}

.model-icon {
    font-size: 16px;
}

.model-name {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
}

.access-status {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
}

.access-status.unlocked {
    color: #22c55e;
}

.access-status.locked {
    color: #ef4444;
}

/* Offer Modal */
.offer-modal {
    background: var(--card-bg);
    border-radius: 16px;
    padding: 24px;
    max-width: 600px;
    width: 90%;
    max-height: 85vh;
    overflow-y: auto;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
}

.modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}

.modal-header h2 {
    margin: 0;
    font-size: 20px;
    color: var(--text-primary);
}

.close-btn {
    background: none;
    border: none;
    font-size: 20px;
    color: var(--text-muted);
    cursor: pointer;
}

.close-btn:hover {
    color: var(--text-primary);
}

.offer-opp-summary {
    padding: 16px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 8px;
    margin-bottom: 16px;
}

.offer-opp-summary h3 {
    margin: 0 0 8px 0;
    font-size: 16px;
    color: var(--text-primary);
}

.opp-key-terms {
    display: flex;
    gap: 16px;
    font-size: 13px;
    color: var(--text-secondary);
}

.offer-your-profile {
    margin-bottom: 16px;
}

.offer-your-profile h4 {
    margin: 0 0 8px 0;
    font-size: 12px;
    color: var(--text-muted);
    text-transform: uppercase;
}

.access-warning {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px;
    background: color-mix(in srgb, var(--status-error) 15%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    border-radius: 8px;
    margin-bottom: 16px;
    font-size: 13px;
    color: #ef4444;
}

.offer-form {
    display: flex;
    flex-direction: column;
    gap: 16px;
    margin-bottom: 20px;
}

.form-row {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.form-row label {
    font-size: 12px;
    color: var(--text-secondary);
    font-weight: 500;
}

.form-row input,
.form-row textarea {
    padding: 10px 12px;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(100, 120, 150, 0.3);
    border-radius: 6px;
    color: var(--text-primary);
    font-size: 14px;
}

.form-row input:focus,
.form-row textarea:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.form-row input:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.form-hint {
    font-size: 11px;
    color: var(--text-muted);
}

.conditions-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 8px;
}

.condition-chip {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 4px 8px;
    background: rgba(59, 130, 246, 0.2);
    border: 1px solid rgba(59, 130, 246, 0.3);
    border-radius: 4px;
    font-size: 12px;
    color: var(--text-primary);
}

.remove-condition {
    background: none;
    border: none;
    color: var(--text-muted);
    cursor: pointer;
    font-size: 12px;
    padding: 0;
}

.add-condition {
    display: flex;
    gap: 8px;
}

.add-condition input {
    flex: 1;
}

.add-condition button {
    padding: 8px 16px;
    background: var(--primary-blue);
    border: none;
    border-radius: 6px;
    color: white;
    font-weight: 600;
    cursor: pointer;
}

.offer-summary {
    padding: 16px;
    background: rgba(59, 130, 246, 0.1);
    border: 1px solid rgba(59, 130, 246, 0.2);
    border-radius: 8px;
    margin-bottom: 20px;
}

.summary-row {
    display: flex;
    justify-content: space-between;
    padding: 8px 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
    font-size: 13px;
    color: var(--text-secondary);
}

.summary-row:last-child {
    border-bottom: none;
}

.summary-value {
    font-weight: 600;
    color: var(--text-primary);
}

.summary-value.bonus {
    color: #22c55e;
}

.modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
}

/* Offers List */
.offers-empty {
    text-align: center;
    padding: 40px;
    color: var(--text-muted);
}

.offers-empty .empty-icon {
    font-size: 40px;
    margin-bottom: 12px;
}

.offers-list {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.offer-card {
    background: rgba(0, 0, 0, 0.2);
    border: 1px solid rgba(100, 120, 150, 0.2);
    border-radius: 12px;
    padding: 16px;
}

.offer-card-header {
    margin-bottom: 16px;
}

.offer-terms {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    margin-bottom: 12px;
}

.offer-term {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.term-label {
    font-size: 10px;
    color: var(--text-muted);
    text-transform: uppercase;
}

.term-value {
    font-size: 16px;
    font-weight: 700;
    color: var(--text-primary);
}

.offer-conditions {
    padding: 12px;
    background: color-mix(in srgb, var(--status-warning) 10%, transparent);
    border-radius: 6px;
    margin-bottom: 12px;
}

.conditions-label {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    display: block;
    margin-bottom: 8px;
}

.offer-conditions ul {
    margin: 0;
    padding-left: 16px;
    font-size: 12px;
    color: var(--text-secondary);
}

.offer-actions {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.offer-status {
    padding: 4px 8px;
    border-radius: 4px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
}

.action-buttons {
    display: flex;
    gap: 8px;
}

.reject-btn {
    padding: 8px 16px;
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--status-error) 50%, transparent);
    border-radius: 6px;
    color: #ef4444;
    font-size: 12px;
    cursor: pointer;
}

.reject-btn:hover {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
}

.accept-btn {
    padding: 8px 16px;
    background: #22c55e;
    border: none;
    border-radius: 6px;
    color: white;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
}

.accept-btn:hover {
    background: #16a34a;
}



/* ============================================================================
   WHITELIST MANAGEMENT PANEL
   ============================================================================ */

.whitelist-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--dark-bg);
    color: var(--text-primary);
    padding: 20px;
    gap: 16px;
}

.whitelist-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
}

.header-title h1 {
    margin: 0;
    font-size: 24px;
    color: var(--text-primary);
}

.header-title .subtitle {
    margin: 4px 0 0 0;
    font-size: 13px;
    color: var(--text-muted);
}

.header-actions {
    display: flex;
    gap: 12px;
    align-items: center;
}

.view-toggle {
    display: flex;
    background: rgba(0, 0, 0, 0.3);
    border-radius: 6px;
    padding: 2px;
}

.toggle-btn {
    padding: 6px 12px;
    background: transparent;
    border: none;
    border-radius: 4px;
    color: var(--text-muted);
    font-size: 12px;
    cursor: pointer;
    transition: all 0.2s;
}

.toggle-btn:hover {
    color: var(--text-primary);
}

.toggle-btn.active {
    background: var(--primary-blue);
    color: white;
}

.add-invite-btn {
    padding: 8px 16px;
    background: var(--primary-blue);
    border: none;
    border-radius: 6px;
    color: white;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.2s;
}

.add-invite-btn:hover {
    background: #2563eb;
}

/* Stats Bar */
.stats-bar {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}

.stat-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 12px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 8px;
    border: 1px solid rgba(100, 120, 150, 0.2);
}

.stat-item.registered { border-color: color-mix(in srgb, var(--status-success) 30%, transparent); }
.stat-item.pending { border-color: color-mix(in srgb, var(--status-warning) 30%, transparent); }

.stat-item .stat-value {
    font-size: 24px;
    font-weight: 700;
    color: var(--text-primary);
}

.stat-item .stat-label {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
}

/* Error Banner */
.error-banner {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 16px;
    background: color-mix(in srgb, var(--status-error) 15%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    border-radius: 8px;
    color: #ef4444;
}

.error-banner button {
    background: none;
    border: none;
    color: #ef4444;
    cursor: pointer;
}

/* Loading State */
.loading-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 40px;
    color: var(--text-muted);
    gap: 12px;
}

.spinner {
    width: 24px;
    height: 24px;
    border: 2px solid rgba(255, 255, 255, 0.1);
    border-top-color: var(--primary-blue);
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

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

/* Content Area */
.whitelist-content {
    flex: 1;
    overflow: hidden;
}

/* List View */
.list-view {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 12px;
}

.list-filters {
    display: flex;
    gap: 12px;
}

.list-filters .search-box {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(100, 120, 150, 0.2);
    border-radius: 6px;
}

.list-filters .search-box input {
    flex: 1;
    background: transparent;
    border: none;
    color: var(--text-primary);
    font-size: 13px;
    outline: none;
}

.list-filters select {
    padding: 8px 12px;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(100, 120, 150, 0.2);
    border-radius: 6px;
    color: var(--text-primary);
    font-size: 13px;
}

/* Entries Table */
.entries-table {
    flex: 1;
    overflow: auto;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 8px;
    border: 1px solid rgba(100, 120, 150, 0.2);
}

.table-header {
    display: grid;
    grid-template-columns: 2fr 1.5fr 100px 70px 80px 1.5fr 100px;
    gap: 12px;
    padding: 12px 16px;
    background: rgba(0, 0, 0, 0.3);
    border-bottom: 1px solid rgba(100, 120, 150, 0.2);
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    position: sticky;
    top: 0;
}

.table-row {
    display: grid;
    grid-template-columns: 2fr 1.5fr 100px 70px 80px 1.5fr 100px;
    gap: 12px;
    padding: 12px 16px;
    border-bottom: 1px solid rgba(100, 120, 150, 0.1);
    font-size: 13px;
    align-items: center;
}

.table-row:hover {
    background: rgba(255, 255, 255, 0.02);
}

.table-row.revoked {
    opacity: 0.5;
}

.col-status {
    padding: 4px 8px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    text-align: center;
}

.status-pending {
    background: color-mix(in srgb, var(--status-warning) 20%, transparent);
    color: #f59e0b;
}

.status-registered {
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    color: #22c55e;
}

.status-revoked {
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
    color: #ef4444;
}

.depth-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    font-size: 11px;
    font-weight: 700;
    background: linear-gradient(135deg, 
        hsl(calc(200 + var(--depth, 0) * 30), 70%, 50%),
        hsl(calc(220 + var(--depth, 0) * 30), 70%, 40%)
    );
    color: white;
}

.col-referred {
    font-size: 12px;
    color: var(--text-secondary);
}

.revoke-btn {
    padding: 4px 12px;
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--status-error) 50%, transparent);
    border-radius: 4px;
    color: #ef4444;
    font-size: 11px;
    cursor: pointer;
    transition: all 0.2s;
}

.revoke-btn:hover {
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
}

/* Graph View */
.graph-view {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 16px;
}

.graph-legend {
    display: flex;
    gap: 16px;
    padding: 12px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 8px;
}

.legend-item {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 11px;
    color: var(--text-muted);
}

.legend-item::before {
    content: "";
    width: 12px;
    height: 12px;
    border-radius: 4px;
}

.legend-item.founder::before { background: #f59e0b; }
.legend-item.direct::before { background: #3b82f6; }
.legend-item.chain::before { background: #a855f7; }
.legend-item.pending::before { border: 2px dashed var(--text-muted); }
.legend-item.registered::before { background: #22c55e; }

.graph-container {
    flex: 1;
    overflow: auto;
    padding: 20px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 8px;
}

.tree-node-container {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.tree-node {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    background: rgba(30, 35, 45, 0.9);
    border-radius: 8px;
    border: 2px solid;
    width: fit-content;
    min-width: 200px;
}

.tree-node.founder { border-color: #f59e0b; }
.tree-node.direct { border-color: #3b82f6; }
.tree-node.chain { border-color: #a855f7; }
.tree-node.pending { border-style: dashed; }
.tree-node.registered { box-shadow: 0 0 0 2px color-mix(in srgb, var(--status-success) 30%, transparent); }

.node-avatar {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.3);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 14px;
    color: var(--text-primary);
}

.node-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.node-name {
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
}

.node-email {
    font-size: 11px;
    color: var(--text-muted);
}

.node-stats {
    margin-left: auto;
}

.stat-badge {
    padding: 4px 8px;
    background: rgba(0, 0, 0, 0.3);
    border-radius: 4px;
    font-size: 10px;
    color: var(--text-secondary);
}

.tree-children {
    margin-left: 40px;
    padding-left: 20px;
    border-left: 2px solid rgba(100, 120, 150, 0.3);
    display: flex;
    flex-direction: column;
    gap: 8px;
}

/* Stats View */
.stats-view {
    display: flex;
    flex-direction: column;
    gap: 24px;
    overflow: auto;
}

.stats-cards {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
}

.stats-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 24px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 12px;
    border: 1px solid rgba(100, 120, 150, 0.2);
}

.stats-card.highlight { border-color: var(--primary-blue); }
.stats-card.success { border-color: #22c55e; }
.stats-card.warning { border-color: #f59e0b; }
.stats-card.info { border-color: #06b6d4; }

.stats-card .card-value {
    font-size: 36px;
    font-weight: 700;
    color: var(--text-primary);
}

.stats-card .card-label {
    font-size: 12px;
    color: var(--text-muted);
    margin-top: 4px;
}

.stats-card .card-pct {
    font-size: 14px;
    color: #22c55e;
    margin-top: 4px;
}

.stats-section {
    background: rgba(0, 0, 0, 0.2);
    border-radius: 12px;
    padding: 20px;
}

.stats-section h3 {
    margin: 0 0 16px 0;
    font-size: 16px;
    color: var(--text-primary);
}

/* Top Referrers */
.top-referrers {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.referrer-row {
    display: grid;
    grid-template-columns: 40px 1fr 2fr 1fr;
    align-items: center;
    gap: 12px;
    padding: 12px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 8px;
}

.referrer-row .rank {
    font-size: 14px;
    font-weight: 700;
    color: var(--primary-blue);
}

.referrer-row .referrer-name {
    font-weight: 600;
    color: var(--text-primary);
}

.referrer-row .referrer-email {
    font-size: 12px;
    color: var(--text-muted);
}

.referrer-row .referrer-count {
    font-size: 13px;
    color: #22c55e;
    text-align: right;
}

/* Depth Chart */
.depth-chart {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.depth-row {
    display: grid;
    grid-template-columns: 80px 1fr 60px;
    align-items: center;
    gap: 12px;
}

.depth-label {
    font-size: 13px;
    color: var(--text-secondary);
}

.depth-bar-container {
    height: 20px;
    background: rgba(0, 0, 0, 0.3);
    border-radius: 4px;
    overflow: hidden;
}

.depth-bar {
    height: 100%;
    background: linear-gradient(90deg, var(--primary-blue), #a855f7);
    border-radius: 4px;
    transition: width 0.3s;
}

.depth-count {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
    text-align: right;
}

/* Add Invite Modal */
.add-invite-modal {
    background: var(--card-bg);
    border-radius: 12px;
    padding: 24px;
    width: 400px;
    max-width: 90%;
}

.add-invite-modal .modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}

.add-invite-modal .modal-header h2 {
    margin: 0;
    font-size: 18px;
    color: var(--text-primary);
}

.add-invite-modal .modal-body {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.add-invite-modal .form-group label {
    display: block;
    margin-bottom: 6px;
    font-size: 12px;
    color: var(--text-secondary);
}

.add-invite-modal .form-group input,
.add-invite-modal .form-group textarea {
    width: 100%;
    padding: 10px 12px;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(100, 120, 150, 0.3);
    border-radius: 6px;
    color: var(--text-primary);
    font-size: 14px;
    box-sizing: border-box;
}

.add-invite-modal .form-group textarea {
    min-height: 80px;
    resize: vertical;
}

.add-invite-modal .modal-footer {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    margin-top: 24px;
}

.empty-stats {
    text-align: center;
    padding: 40px;
    color: var(--text-muted);
}



/* ============================================================================
   SCOREBOARD PANEL - GRAPHITE & WHITE WITH CYBERPUNK HIGHLIGHTS
   ============================================================================
   LttR Trading Scoreboard - clean graphite with neon accents
   ============================================================================ */

/* Scoreboard CSS Variables */
.scoreboard-panel {
    --scb-graphite-dark: #1a1a1e;
    --scb-graphite: #242428;
    --scb-graphite-light: #2e2e34;
    --scb-graphite-hover: #38383e;
    --scb-white: #ffffff;
    --scb-white-muted: #e8e8ec;
    --scb-white-dim: #a8a8b0;
    --scb-accent-blue: #00a8ff;
    --scb-accent-red: #ff1744;
    --scb-accent-green: var(--status-success);
    --scb-accent-gold: var(--status-warning);
}

.scoreboard-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--scb-graphite-dark);
    color: var(--scb-white);
    font-family: 'IBM Plex Mono', monospace;
    overflow: hidden;
}

/* ========== HEADER ========== */

.scoreboard-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    background: linear-gradient(135deg, var(--scb-graphite) 0%, var(--scb-graphite-dark) 100%);
    border-bottom: 1px solid var(--scb-graphite-light);
    flex-shrink: 0;
}

.scoreboard-logo {
    display: flex;
    align-items: center;
    gap: 8px;
}

.scoreboard-logo .logo-icon {
    font-size: 24px;
    color: var(--scb-accent-blue);
    text-shadow: 0 0 10px var(--scb-accent-blue);
}

.scoreboard-logo .logo-text {
    font-size: 18px;
    font-weight: 700;
    color: var(--scb-white);
    letter-spacing: 2px;
}

.scoreboard-logo .logo-sub {
    font-size: 10px;
    color: var(--scb-white-dim);
    letter-spacing: 3px;
    margin-left: 4px;
}

.scoreboard-nav {
    display: flex;
    gap: 4px;
}

.scoreboard-nav .nav-item {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 8px 14px;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 6px;
    color: var(--scb-white-dim);
    font-family: inherit;
    font-size: 12px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.scoreboard-nav .nav-item:hover {
    background: var(--scb-graphite-hover);
    color: var(--scb-white);
}

.scoreboard-nav .nav-item.active {
    background: var(--scb-graphite-light);
    border-color: var(--scb-accent-blue);
    color: var(--scb-accent-blue);
    box-shadow: 0 0 8px color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.scoreboard-nav .nav-icon {
    font-size: 14px;
}

/* ========== LOADING & ERROR ========== */

.scoreboard-loading {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 60px;
    gap: 16px;
    color: var(--scb-white-dim);
}

.scoreboard-spinner {
    width: 32px;
    height: 32px;
    border: 3px solid var(--scb-graphite-light);
    border-top-color: var(--scb-accent-blue);
    border-radius: 50%;
    animation: scb-spin 1s linear infinite;
}

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

.mini-spinner {
    width: 16px;
    height: 16px;
    border: 2px solid var(--scb-graphite-light);
    border-top-color: var(--scb-accent-blue);
    border-radius: 50%;
    animation: scb-spin 0.8s linear infinite;
}

.scoreboard-error {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 16px;
    padding: 12px 16px;
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border: 1px solid var(--scb-accent-red);
    border-radius: 8px;
}

.scoreboard-error .error-icon {
    font-size: 20px;
    color: var(--scb-accent-red);
}

.scoreboard-error .error-text {
    flex: 1;
    color: var(--scb-accent-red);
}

.scoreboard-error .error-retry {
    padding: 6px 12px;
    background: var(--scb-accent-red);
    border: none;
    border-radius: 4px;
    color: var(--scb-white);
    font-family: inherit;
    font-size: 12px;
    cursor: pointer;
    transition: opacity 0.2s;
}

.scoreboard-error .error-retry:hover {
    opacity: 0.85;
}

/* ========== CONTENT AREA ========== */

.scoreboard-content {
    flex: 1;
    padding: 16px;
    overflow-y: auto;
}

.scoreboard-content::-webkit-scrollbar {
    width: 6px;
}

.scoreboard-content::-webkit-scrollbar-track {
    background: var(--scb-graphite-dark);
}

.scoreboard-content::-webkit-scrollbar-thumb {
    background: var(--scb-graphite-light);
    border-radius: 3px;
}

/* ========== SECTIONS ========== */

.section-title {
    font-size: 12px;
    font-weight: 600;
    color: var(--scb-white-dim);
    letter-spacing: 1.5px;
    text-transform: uppercase;
    margin-bottom: 12px;
}

.section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 12px;
}

.view-all-btn {
    padding: 4px 10px;
    background: transparent;
    border: 1px solid var(--scb-graphite-light);
    border-radius: 4px;
    color: var(--scb-white-dim);
    font-family: inherit;
    font-size: 11px;
    cursor: pointer;
    transition: all 0.2s;
}

.view-all-btn:hover {
    border-color: var(--scb-accent-blue);
    color: var(--scb-accent-blue);
}

/* ========== ACTIVE RUNS GRID ========== */

.active-runs-section {
    margin-bottom: 24px;
}

.active-runs-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
}

.active-run-card {
    background: var(--scb-graphite);
    border: 1px solid var(--scb-graphite-light);
    border-radius: 8px;
    padding: 14px;
    transition: border-color 0.2s;
}

.active-run-card:hover {
    border-color: var(--scb-graphite-hover);
}

.active-run-card.accent-live {
    border-left: 3px solid var(--scb-accent-red);
}

.active-run-card.accent-paper {
    border-left: 3px solid var(--scb-accent-blue);
}

.active-run-card.accent-backtest {
    border-left: 3px solid var(--scb-white-dim);
}

.active-run-card .run-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 10px;
}

.active-run-card .run-mode {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 1px;
    color: var(--scb-white-dim);
}

.active-run-card .run-status {
    font-size: 10px;
    padding: 2px 8px;
    border-radius: 10px;
    font-weight: 600;
}

.run-status.status-running {
    background: color-mix(in srgb, var(--status-success) 15%, transparent);
    color: var(--scb-accent-green);
}

.run-status.status-completed {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    color: var(--scb-accent-blue);
}

.run-status.status-cancelled,
.run-status.status-failed {
    background: color-mix(in srgb, var(--status-error) 15%, transparent);
    color: var(--scb-accent-red);
}

.active-run-card .run-details {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.active-run-card .run-id {
    font-size: 12px;
    color: var(--scb-white-muted);
    font-family: 'IBM Plex Mono', monospace;
}

.active-run-card .run-day {
    font-size: 11px;
    color: var(--scb-white-dim);
}

.active-run-card .view-run-btn {
    margin-top: 8px;
    padding: 6px 12px;
    background: var(--scb-graphite-light);
    border: none;
    border-radius: 4px;
    color: var(--scb-white);
    font-family: inherit;
    font-size: 11px;
    cursor: pointer;
    transition: background 0.2s;
}

.active-run-card .view-run-btn:hover {
    background: var(--scb-accent-blue);
}

.active-run-card .run-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 12px 0;
    color: var(--scb-white-dim);
}

.active-run-card .empty-icon {
    font-size: 24px;
    opacity: 0.5;
}

.active-run-card .empty-text {
    font-size: 11px;
    margin-top: 4px;
}

/* ========== STATS GRID ========== */

.quick-stats-section {
    margin-bottom: 24px;
}

.stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
}

.stat-card {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px;
    background: var(--scb-graphite);
    border: 1px solid var(--scb-graphite-light);
    border-radius: 8px;
}

.stat-card .stat-icon {
    font-size: 20px;
    color: var(--scb-accent-blue);
}

.stat-card .stat-content {
    display: flex;
    flex-direction: column;
}

.stat-card .stat-value {
    font-size: 18px;
    font-weight: 700;
    color: var(--scb-white);
}

.stat-card .stat-label {
    font-size: 10px;
    color: var(--scb-white-dim);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* ========== TABLES ========== */

.runs-table-container {
    overflow-x: auto;
}

.runs-table,
.trades-table,
.leaderboard-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}

.runs-table th,
.trades-table th,
.leaderboard-table th {
    padding: 10px 12px;
    text-align: left;
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 1px;
    text-transform: uppercase;
    color: var(--scb-white-dim);
    background: var(--scb-graphite);
    border-bottom: 1px solid var(--scb-graphite-light);
}

.runs-table td,
.trades-table td,
.leaderboard-table td {
    padding: 10px 12px;
    border-bottom: 1px solid var(--scb-graphite-light);
    color: var(--scb-white-muted);
}

.runs-table tr:hover td,
.trades-table tr:hover td,
.leaderboard-table tr:hover td {
    background: var(--scb-graphite);
}

.run-id-cell {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 11px;
}

.date-cell {
    font-size: 11px;
    color: var(--scb-white-dim);
}

.price-cell {
    font-family: 'IBM Plex Mono', monospace;
}

.symbol-cell {
    font-weight: 600;
    color: var(--scb-white);
}

/* Mode & Status Badges */

.mode-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 8px;
    border-radius: 4px;
    font-size: 10px;
    font-weight: 600;
}

.mode-badge.mode-live {
    background: color-mix(in srgb, var(--status-error) 15%, transparent);
    color: var(--scb-accent-red);
}

.mode-badge.mode-paper {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    color: var(--scb-accent-blue);
}

.mode-badge.mode-backtest {
    background: rgba(255, 255, 255, 0.1);
    color: var(--scb-white-dim);
}

.status-badge {
    display: inline-block;
    padding: 3px 8px;
    border-radius: 4px;
    font-size: 10px;
    font-weight: 600;
}

.status-badge.status-running {
    background: color-mix(in srgb, var(--status-success) 15%, transparent);
    color: var(--scb-accent-green);
}

.status-badge.status-completed {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    color: var(--scb-accent-blue);
}

.status-badge.status-open {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    color: var(--scb-accent-blue);
}

.status-badge.status-closed {
    background: rgba(255, 255, 255, 0.1);
    color: var(--scb-white-dim);
}

.status-badge.status-cancelled,
.status-badge.status-failed {
    background: color-mix(in srgb, var(--status-error) 15%, transparent);
    color: var(--scb-accent-red);
}

.row-action-btn {
    padding: 4px 10px;
    background: var(--scb-graphite-light);
    border: none;
    border-radius: 4px;
    color: var(--scb-white);
    font-size: 12px;
    cursor: pointer;
    transition: background 0.2s;
}

.row-action-btn:hover {
    background: var(--scb-accent-blue);
}

/* Positive/Negative values */

.positive {
    color: var(--scb-accent-green) !important;
}

.negative {
    color: var(--scb-accent-red) !important;
}

/* ========== FILTERS BAR ========== */

.filters-bar {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 16px;
    padding: 12px;
    background: var(--scb-graphite);
    border-radius: 8px;
}

.filter-group {
    display: flex;
    align-items: center;
    gap: 8px;
}

.filter-group label {
    font-size: 11px;
    color: var(--scb-white-dim);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.filter-select {
    padding: 6px 10px;
    background: var(--scb-graphite-dark);
    border: 1px solid var(--scb-graphite-light);
    border-radius: 4px;
    color: var(--scb-white);
    font-family: inherit;
    font-size: 12px;
    cursor: pointer;
}

.filter-select:focus {
    outline: none;
    border-color: var(--scb-accent-blue);
}

.filter-loading {
    margin-left: auto;
}

/* ========== RUN DETAIL VIEW ========== */

.run-detail-view {
    position: relative;
}

.run-detail-header {
    margin-bottom: 20px;
}

.run-title-section {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 8px;
}

.run-title {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 18px;
    font-weight: 600;
    color: var(--scb-white);
}

.mode-indicator {
    font-size: 16px;
}

.run-status-large {
    padding: 4px 12px;
    border-radius: 6px;
    font-size: 11px;
    font-weight: 600;
}

.run-meta {
    font-size: 11px;
    color: var(--scb-white-dim);
}

/* Summary Grid */

.run-summary-grid {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 10px;
    margin-bottom: 20px;
}

.summary-stat {
    display: flex;
    flex-direction: column;
    padding: 12px;
    background: var(--scb-graphite);
    border: 1px solid var(--scb-graphite-light);
    border-radius: 6px;
}

.summary-stat .stat-label {
    font-size: 10px;
    color: var(--scb-white-dim);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 4px;
}

.summary-stat .stat-value {
    font-size: 16px;
    font-weight: 700;
    color: var(--scb-white);
}

.summary-stat.positive .stat-value {
    color: var(--scb-accent-green);
}

.summary-stat.negative .stat-value {
    color: var(--scb-accent-red);
}

/* Detail Tabs */

.detail-tabs {
    display: flex;
    gap: 4px;
    margin-bottom: 16px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--scb-graphite-light);
}

.tab-btn {
    padding: 8px 16px;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 6px;
    color: var(--scb-white-dim);
    font-family: inherit;
    font-size: 12px;
    cursor: pointer;
    transition: all 0.2s;
}

.tab-btn:hover {
    background: var(--scb-graphite);
}

.tab-btn.active {
    background: var(--scb-graphite);
    border-color: var(--scb-accent-blue);
    color: var(--scb-accent-blue);
}

.tab-content {
    min-height: 200px;
}

/* ========== BREAKDOWN CARDS ========== */

.breakdown-section {
    margin-bottom: 24px;
}

.breakdown-title {
    font-size: 13px;
    font-weight: 600;
    color: var(--scb-white);
    margin-bottom: 12px;
}

.exit-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
}

.exit-card {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 12px;
    background: var(--scb-graphite);
    border-radius: 6px;
}

.exit-card .exit-label {
    font-size: 11px;
    font-weight: 600;
    color: var(--scb-white);
}

.exit-card .exit-count {
    font-size: 10px;
    color: var(--scb-white-dim);
}

.exit-card .exit-pnl {
    font-size: 14px;
    font-weight: 700;
}

.team-breakdown-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
}

.team-breakdown-card {
    padding: 14px;
    background: var(--scb-graphite);
    border-radius: 6px;
}

.team-breakdown-card .team-name {
    display: block;
    font-size: 14px;
    font-weight: 700;
    color: var(--scb-accent-blue);
    margin-bottom: 10px;
}

.team-breakdown-card .team-stats {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.team-breakdown-card .team-stat {
    display: flex;
    justify-content: space-between;
}

.team-breakdown-card .team-stat .label {
    font-size: 11px;
    color: var(--scb-white-dim);
}

.team-breakdown-card .team-stat .value {
    font-size: 11px;
    font-weight: 600;
    color: var(--scb-white);
}

/* ========== TRADE DETAIL ========== */

.trade-detail-view {
    position: relative;
}

.back-btn {
    margin-bottom: 16px;
    padding: 8px 14px;
    background: var(--scb-graphite);
    border: 1px solid var(--scb-graphite-light);
    border-radius: 6px;
    color: var(--scb-white);
    font-family: inherit;
    font-size: 12px;
    cursor: pointer;
    transition: border-color 0.2s;
}

.back-btn:hover {
    border-color: var(--scb-accent-blue);
}

.trade-header {
    margin-bottom: 16px;
}

.trade-title {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 20px;
    font-weight: 700;
}

.trade-symbol {
    color: var(--scb-white);
}

.trade-status {
    font-size: 11px;
    padding: 4px 10px;
    border-radius: 4px;
}

.trade-metrics-grid {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 10px;
    margin-bottom: 20px;
}

.metric-card {
    display: flex;
    flex-direction: column;
    padding: 12px;
    background: var(--scb-graphite);
    border-radius: 6px;
}

.metric-card .metric-label {
    font-size: 10px;
    color: var(--scb-white-dim);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 4px;
}

.metric-card .metric-value {
    font-size: 14px;
    font-weight: 700;
    color: var(--scb-white);
}

.context-section,
.signals-section,
.explanation-section {
    margin-bottom: 20px;
}

.context-section h3,
.signals-section h3,
.explanation-section h3 {
    font-size: 13px;
    font-weight: 600;
    color: var(--scb-white);
    margin-bottom: 12px;
}

.context-grid,
.signals-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
}

.context-item,
.signal-card {
    padding: 10px;
    background: var(--scb-graphite);
    border-radius: 6px;
}

.context-item .label,
.signal-card .team-name {
    font-size: 10px;
    color: var(--scb-white-dim);
    text-transform: uppercase;
}

.context-item .value {
    font-size: 13px;
    font-weight: 600;
    color: var(--scb-white);
}

.signal-card {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.signal-card .signal-direction {
    font-size: 12px;
    font-weight: 600;
    color: var(--scb-white);
}

.signal-card .signal-conviction {
    font-size: 11px;
    color: var(--scb-accent-blue);
}

/* ========== DECISION EXPLANATION ========== */

.decision-block {
    padding: 14px;
    background: var(--scb-graphite);
    border-radius: 8px;
    margin-bottom: 12px;
}

.decision-block h4 {
    font-size: 12px;
    font-weight: 600;
    color: var(--scb-white-dim);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 10px;
}

.decision-block .verdict {
    font-size: 14px;
    font-weight: 600;
    color: var(--scb-white);
    margin-bottom: 12px;
    padding: 8px 12px;
    background: var(--scb-graphite-dark);
    border-radius: 4px;
    border-left: 3px solid var(--scb-accent-blue);
}

.reasoning-chain {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.reasoning-step {
    display: flex;
    gap: 10px;
    padding: 8px;
    background: var(--scb-graphite-dark);
    border-radius: 4px;
}

.reasoning-step .step-num {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    background: var(--scb-graphite-light);
    border-radius: 50%;
    font-size: 11px;
    font-weight: 600;
    color: var(--scb-accent-blue);
    flex-shrink: 0;
}

.reasoning-step .step-component {
    font-size: 11px;
    font-weight: 600;
    color: var(--scb-white);
    margin-bottom: 2px;
}

.reasoning-step .step-rationale {
    font-size: 11px;
    color: var(--scb-white-dim);
    line-height: 1.4;
}

.counterfactual {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--scb-graphite-light);
}

.counterfactual h5 {
    font-size: 11px;
    color: var(--scb-white-dim);
    margin-bottom: 8px;
}

.cf-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
}

.cf-item {
    padding: 8px;
    background: var(--scb-graphite-dark);
    border-radius: 4px;
}

.cf-item .cf-label {
    font-size: 10px;
    color: var(--scb-white-dim);
    margin-bottom: 2px;
}

.cf-item .cf-value {
    font-size: 13px;
    font-weight: 600;
}

/* ========== LEADERBOARDS VIEW ========== */

.leaderboards-view {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.leaderboard-panels {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
}

.leaderboard-panel {
    background: var(--scb-graphite);
    border-radius: 8px;
    overflow: hidden;
}

.leaderboard-panel .panel-title {
    padding: 12px 14px;
    font-size: 12px;
    font-weight: 600;
    color: var(--scb-white);
    background: var(--scb-graphite-dark);
    border-bottom: 1px solid var(--scb-graphite-light);
}

.rank-cell {
    width: 40px;
}

.rank-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    font-size: 11px;
    font-weight: 700;
    background: var(--scb-graphite-light);
    color: var(--scb-white);
}

.rank-badge.rank-1 {
    background: linear-gradient(135deg, #ffd700, var(--status-warning));
    color: #1a1a1e;
}

.rank-badge.rank-2 {
    background: linear-gradient(135deg, #c0c0c0, #a0a0a0);
    color: #1a1a1e;
}

.rank-badge.rank-3 {
    background: linear-gradient(135deg, #cd7f32, #a06020);
    color: #1a1a1e;
}

.trend-cell {
    display: flex;
    align-items: center;
    gap: 4px;
}

.trend-icon.trend-up {
    color: var(--scb-accent-green);
}

.trend-icon.trend-down {
    color: var(--scb-accent-red);
}

/* ========== TEAMS VIEW ========== */

.teams-view {}

.teams-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 12px;
}

.team-card {
    padding: 14px;
    background: var(--scb-graphite);
    border: 1px solid var(--scb-graphite-light);
    border-radius: 8px;
    transition: border-color 0.2s;
}

.team-card:hover {
    border-color: var(--scb-accent-blue);
}

.team-card .team-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 8px;
}

.team-card .team-name {
    font-size: 14px;
    font-weight: 700;
    color: var(--scb-white);
}

.team-card .team-status {
    font-size: 10px;
    padding: 2px 8px;
    border-radius: 10px;
}

.team-card .team-status.status-active {
    background: color-mix(in srgb, var(--status-success) 15%, transparent);
    color: var(--scb-accent-green);
}

.team-card .team-status.status-idle {
    background: rgba(255, 255, 255, 0.1);
    color: var(--scb-white-dim);
}

.team-card .team-focus {
    font-size: 11px;
    color: var(--scb-white-dim);
    margin-bottom: 10px;
}

.team-card .team-agents,
.team-card .team-port {
    display: flex;
    justify-content: space-between;
    font-size: 11px;
    padding: 4px 0;
}

.team-card .agents-label,
.team-card .port-label {
    color: var(--scb-white-dim);
}

.team-card .agents-count,
.team-card .port-value {
    color: var(--scb-white);
    font-weight: 600;
}

/* ========== EMPTY STATE ========== */

.empty-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 40px;
    color: var(--scb-white-dim);
}

.empty-state .empty-icon {
    font-size: 32px;
    opacity: 0.5;
    margin-bottom: 12px;
}

.empty-state .empty-text {
    font-size: 13px;
}

/* ========== LOADING OVERLAY ========== */

.loading-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(26, 26, 30, 0.8);
    z-index: 10;
}

/* ========== RESPONSIVE ========== */

@media (max-width: 1200px) {
    .run-summary-grid,
    .trade-metrics-grid {
        grid-template-columns: repeat(3, 1fr);
    }
    
    .exit-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .context-grid,
    .signals-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .cf-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 900px) {
    .active-runs-grid {
        grid-template-columns: 1fr;
    }
    
    .stats-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .leaderboard-panels {
        grid-template-columns: 1fr;
    }
    
    .team-breakdown-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 600px) {
    .scoreboard-header {
        flex-direction: column;
        gap: 12px;
    }
    
    .scoreboard-nav {
        width: 100%;
        overflow-x: auto;
    }
    
    .run-summary-grid,
    .trade-metrics-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .stats-grid {
        grid-template-columns: 1fr;
    }
}

/* ============================================================================
   TRADING VISUALIZATION PANEL
   GPU-Native Trading Visualization for LttR
   ============================================================================ */

.trading-viz-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--panel-bg);
    color: var(--text-primary);
    overflow: hidden;
}

/* Header */
.viz-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 16px;
    border-bottom: 1px solid var(--border-glow);
    background: color-mix(in srgb, var(--card-bg) 80%, transparent);
}

.viz-title {
    display: flex;
    align-items: center;
    gap: 8px;
}

.viz-icon {
    font-size: 1.4em;
}

.viz-icon-right {
    font-size: 1.2em;
    margin-left: 4px;
}

.viz-title {
    display: flex;
    align-items: center;
    gap: 6px;
}

.viz-label {
    font-weight: 600;
    font-size: 1.1em;
    letter-spacing: 0.05em;
    background: linear-gradient(135deg, var(--status-error), #ffffff, #4444ff);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.viz-label {
    font-family: var(--font-display);
    font-size: 1.1em;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    background: linear-gradient(135deg, var(--primary-blue), var(--accent-red));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.viz-nav {
    display: flex;
    gap: 4px;
}

.viz-nav-btn {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    background: transparent;
    border: 1px solid var(--grid-color);
    border-radius: 4px;
    color: var(--text-secondary);
    font-family: var(--font-mono);
    font-size: 0.85em;
    cursor: pointer;
    transition: all 0.2s ease;
}

.viz-nav-btn:hover:not(.disabled) {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}

.viz-nav-btn.active {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-color: var(--primary-blue);
    color: var(--primary-blue);
    box-shadow: 0 0 10px var(--primary-blue-glow);
}

.viz-nav-btn.disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

.viz-nav-btn .nav-icon {
    font-size: 1.1em;
}

/* Content Area */
.viz-content {
    flex: 1;
    overflow: auto;
    padding: 16px;
}

/* Loading/Error States */
.viz-loading,
.viz-error,
.viz-tenant-warning {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 48px;
    gap: 16px;
}

.viz-spinner {
    width: 40px;
    height: 40px;
    border: 3px solid var(--grid-color);
    border-top-color: var(--primary-blue);
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

.viz-error {
    color: var(--accent-red);
}

.viz-tenant-warning {
    color: var(--status-warning);
}

.warning-icon,
.error-icon {
    font-size: 2em;
}

/* Status Bar */
.viz-status-bar {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 16px;
    background: color-mix(in srgb, var(--card-bg) 90%, transparent);
    border-top: 1px solid var(--grid-color);
    font-family: var(--font-mono);
    font-size: 0.75em;
    color: var(--text-muted);
}

.connection-indicator {
    display: flex;
    align-items: center;
    gap: 6px;
}

.status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
}

.status-dot.connected {
    background: var(--status-success);
    box-shadow: 0 0 8px var(--status-success);
}

.status-dot.connecting {
    background: var(--status-warning);
    animation: pulse 1s ease-in-out infinite;
}

.status-dot.disconnected {
    background: var(--text-muted);
}

.status-dot.error {
    background: var(--status-error);
    box-shadow: 0 0 8px var(--status-error);
}

.status-text {
    font-size: 0.75em;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.status-text.connected {
    color: var(--status-success);
}

.status-text.connecting {
    color: var(--status-warning);
}

.status-text.disconnected {
    color: var(--text-color-secondary);
}

.status-text.error {
    color: var(--status-error);
}

/* Endpoint display in status bar */
.viz-endpoint {
    font-size: 0.7em;
    color: var(--text-color-secondary);
    font-family: 'Space Mono', monospace;
    opacity: 0.7;
}

/* No Data Overlay */
.no-data-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.7);
    backdrop-filter: blur(4px);
    z-index: 10;
}

.no-data-content {
    text-align: center;
    padding: 40px;
    background: var(--panel-bg);
    border-radius: 12px;
    border: 1px solid var(--border-color);
    max-width: 400px;
}

.no-data-icon {
    font-size: 3em;
    margin-bottom: 16px;
}

.no-data-icon.spinning {
    animation: spin 1.5s linear infinite;
}

@keyframes spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

.no-data-content h3 {
    margin: 0 0 12px 0;
    font-family: var(--font-display);
    color: var(--text-color-primary);
}

.no-data-content p {
    margin: 0 0 8px 0;
    color: var(--text-color-secondary);
    font-size: 0.9em;
}

.no-data-cmd {
    display: block;
    margin-top: 16px;
    padding: 12px 16px;
    background: var(--code-bg);
    border-radius: 6px;
    font-family: 'Space Mono', monospace;
}

/* Viz Status Indicator - Non-blocking */
.viz-status-indicator {
    position: absolute;
    top: 8px;
    right: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    background: rgba(0, 0, 0, 0.6);
    border-radius: 12px;
    font-size: 0.75em;
    z-index: 5;
    pointer-events: none;
}

.status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
}

.status-dot.connected {
    background: var(--color-success, #22c55e);
    box-shadow: 0 0 6px var(--color-success, #22c55e);
}

.status-dot.connecting {
    background: var(--color-warning, #f59e0b);
    animation: pulse 1s ease-in-out infinite;
}

.status-dot.disconnected {
    background: var(--color-error, #ef4444);
}

@keyframes pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.4; }
    font-size: 0.8em;
    color: var(--accent-green);
    border: 1px solid var(--border-color);
}

.no-data-hint {
    font-style: italic;
    opacity: 0.8;
}

/* Make viz-content relative for overlay positioning */
.viz-content {
    position: relative;
}

/* Equity Curve View */
.equity-curve-view {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 16px;
}

.curve-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.curve-header h3 {
    margin: 0;
    font-family: var(--font-display);
    font-size: 1.1em;
    color: var(--primary-blue);
}

.curve-stats {
    display: flex;
    gap: 16px;
}

.curve-stats .stat {
    display: flex;
    gap: 4px;
}

.curve-stats .stat-label {
    color: var(--text-muted);
}

.curve-stats .stat-value {
    font-family: var(--font-mono);
    color: var(--text-primary);
}

.curve-stats .stat.positive .stat-value {
    color: var(--status-success);
}

.curve-stats .stat.negative .stat-value {
    color: var(--status-error);
}

/* SVG Chart */
.curve-chart {
    flex: 1;
    min-height: 300px;
    background: rgba(0, 10, 20, 0.5);
    border: 1px solid var(--grid-color);
    border-radius: 8px;
    overflow: hidden;
}

.equity-svg {
    width: 100%;
    height: 100%;
}

.equity-svg .grid-line {
    stroke: var(--grid-color);
    stroke-width: 1;
}

.equity-svg .grid-label {
    fill: var(--text-muted);
    font-family: var(--font-mono);
    font-size: 10px;
    text-anchor: end;
}

.equity-svg .equity-line {
    stroke: var(--primary-blue);
    stroke-width: 2;
    filter: drop-shadow(0 0 4px var(--primary-blue-glow));
}

.equity-svg .drawdown-area {
    stroke: var(--accent-red);
    stroke-width: 1;
    opacity: 0.5;
}

.equity-svg .trade-marker {
    cursor: pointer;
    transition: all 0.2s ease;
}

.equity-svg .trade-marker.buy {
    fill: var(--status-success);
}

.equity-svg .trade-marker.sell {
    fill: var(--accent-red);
}

.equity-svg .trade-marker:hover {
    r: 8;
    filter: drop-shadow(0 0 6px currentColor);
}

.equity-svg .tooltip-bg {
    fill: var(--card-bg);
    stroke: var(--border-glow);
    stroke-width: 1;
}

.equity-svg .tooltip-text {
    fill: var(--text-primary);
    font-family: var(--font-mono);
    font-size: 11px;
    text-anchor: middle;
}

.empty-chart {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    gap: 12px;
    color: var(--text-muted);
}

.empty-chart .empty-icon {
    font-size: 3em;
    opacity: 0.5;
}

/* Trade List */
.trade-list {
    max-height: 150px;
    overflow-y: auto;
}

.trade-list h4 {
    margin: 0 0 8px;
    font-family: var(--font-display);
    font-size: 0.9em;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.1em;
}

.trade-items {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.trade-item {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 10px;
    background: color-mix(in srgb, var(--card-bg) 60%, transparent);
    border: 1px solid var(--grid-color);
    border-radius: 4px;
    font-family: var(--font-mono);
    font-size: 0.85em;
}

.trade-item.buy {
    border-color: color-mix(in srgb, var(--status-success) 30%, transparent);
}

.trade-item.sell {
    border-color: color-mix(in srgb, var(--status-error) 30%, transparent);
}

.trade-item .trade-icon {
    font-size: 1.1em;
}

.trade-item.buy .trade-icon {
    color: var(--status-success);
}

.trade-item.sell .trade-icon {
    color: var(--accent-red);
}

.trade-item .trade-symbol {
    font-weight: 500;
    color: var(--text-primary);
}

.trade-item .trade-price {
    color: var(--text-muted);
}

/* Placeholder Views */
.viz-placeholder {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 400px;
    gap: 16px;
    text-align: center;
}

.viz-placeholder .placeholder-icon {
    font-size: 4em;
    opacity: 0.5;
}

.viz-placeholder h3 {
    margin: 0;
    font-family: var(--font-display);
    font-size: 1.3em;
    color: var(--primary-blue);
}

.viz-placeholder p {
    margin: 0;
    color: var(--text-secondary);
    max-width: 400px;
}

.viz-placeholder .placeholder-status {
    font-family: var(--font-mono);
    font-size: 0.85em;
    color: var(--text-muted);
    padding: 4px 12px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-radius: 4px;
}

.viz-placeholder .placeholder-note {
    font-size: 0.85em;
    color: var(--status-warning);
}

/* Fake Heatmap Preview */
.heatmap-grid {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 16px;
    opacity: 0.6;
}

.heatmap-row {
    display: flex;
    gap: 2px;
}

.heatmap-cell {
    width: 20px;
    height: 20px;
    border-radius: 2px;
}

/* GPU Canvas */
.gpu-canvas-container {
    position: relative;
    width: 100%;
    height: 100%;
    min-height: 400px;
}

.gpu-canvas {
    width: 100%;
    height: 100%;
    background: #000;
}

.gpu-status {
    position: absolute;
    bottom: 8px;
    right: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 4px 8px;
    background: rgba(0, 0, 0, 0.7);
    border-radius: 4px;
    font-family: var(--font-mono);
    font-size: 0.7em;
    color: var(--text-muted);
}

.gpu-indicator {
    width: 6px;
    height: 6px;
    border-radius: 50%;
}

.gpu-indicator.available {
    background: var(--status-success);
}

.gpu-indicator.unavailable {
    background: var(--status-warning);
}

.gpu-fallback {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    background: color-mix(in srgb, var(--card-bg) 90%, transparent);
}

.fallback-message {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    padding: 32px;
    text-align: center;
}

.fallback-icon {
    font-size: 2em;
    color: var(--status-warning);
}

.fallback-text {
    font-family: var(--font-display);
    color: var(--text-primary);
}

.fallback-detail {
    color: var(--text-muted);
    font-size: 0.9em;
    max-width: 300px;
}

/* Animations */
@keyframes pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
}

/* ============================================================================
   CORRELATION HEATMAP
   ============================================================================ */

.heatmap-view {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 12px;
}

.heatmap-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
}

.heatmap-header h3 {
    margin: 0;
    font-family: var(--font-display);
    font-size: 1.1em;
    color: var(--accent-red);
}

.heatmap-controls {
    display: flex;
    align-items: center;
    gap: 6px;
}

.zoom-btn {
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid var(--grid-color);
    border-radius: 4px;
    color: var(--primary-blue);
    font-size: 1.1em;
    cursor: pointer;
    transition: all 0.2s ease;
}

.zoom-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-color: var(--primary-blue);
}

.zoom-btn.reset {
    font-size: 0.9em;
}

.zoom-level {
    font-family: var(--font-mono);
    font-size: 0.8em;
    color: var(--text-muted);
    min-width: 45px;
    text-align: center;
}

.heatmap-stats {
    display: flex;
    gap: 16px;
}

.heatmap-stats .stat {
    display: flex;
    gap: 4px;
    font-family: var(--font-mono);
    font-size: 0.85em;
}

.heatmap-stats .stat-label {
    color: var(--text-muted);
}

.heatmap-stats .stat-value {
    color: var(--text-primary);
}

.heatmap-stats .stat.regime .stat-value {
    color: var(--status-success);
    text-transform: uppercase;
}

/* Heatmap container */
.heatmap-container {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    background: rgba(0, 10, 20, 0.5);
    border: 1px solid var(--grid-color);
    border-radius: 8px;
    overflow: auto;
    padding: 16px;
}

.heatmap-canvas {
    position: relative;
}

.heatmap-grid {
    display: grid;
    gap: 0;
}

.heatmap-cell {
    cursor: crosshair;
    transition: opacity 0.1s ease;
}

.heatmap-cell:hover {
    opacity: 0.8;
    outline: 1px solid var(--primary-blue);
    z-index: 1;
}

.heatmap-canvas-element {
    image-rendering: pixelated;
    cursor: crosshair;
}

/* Tooltip */
.heatmap-tooltip {
    position: absolute;
    top: 8px;
    right: 8px;
    background: var(--card-bg);
    border: 1px solid var(--border-glow);
    border-radius: 6px;
    padding: 8px 12px;
    font-family: var(--font-mono);
    pointer-events: none;
    z-index: 100;
}

.tooltip-pair {
    font-size: 0.9em;
    color: var(--text-secondary);
    margin-bottom: 4px;
}

.tooltip-value {
    font-size: 1.1em;
    font-weight: 600;
}

.tooltip-value.positive {
    color: var(--primary-blue);
}

.tooltip-value.negative {
    color: var(--accent-red);
}

/* Legend */
.heatmap-legend {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 8px;
}

.legend-label {
    font-family: var(--font-mono);
    font-size: 0.75em;
    color: var(--text-muted);
}

.legend-gradient {
    width: 200px;
    height: 16px;
    background: linear-gradient(to right, 
        rgb(255, 50, 50),
        rgb(255, 150, 150),
        rgb(255, 255, 255),
        rgb(150, 150, 255),
        rgb(50, 50, 255)
    );
    border-radius: 4px;
    border: 1px solid var(--grid-color);
}

.empty-heatmap {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    gap: 12px;
    color: var(--text-muted);
}

.empty-heatmap .empty-icon {
    font-size: 3em;
    opacity: 0.5;
}

/* ============================================================================
   3D REGIME PHASE SPACE
   ============================================================================ */

.phase-space-view {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 12px;
}

.phase-space-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
}

.phase-space-header h3 {
    margin: 0;
    font-family: var(--font-display);
    font-size: 1.1em;
    color: #4ecdc4;
}

.phase-space-controls {
    display: flex;
    align-items: center;
    gap: 12px;
}

.control-btn {
    padding: 6px 12px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid var(--grid-color);
    border-radius: 4px;
    color: var(--primary-blue);
    cursor: pointer;
    transition: all 0.2s ease;
}

.control-btn:hover,
.control-btn.active {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-color: var(--primary-blue);
}

.control-hint {
    font-size: 0.8em;
    color: var(--text-muted);
}

.phase-space-stats {
    display: flex;
    gap: 16px;
}

.phase-space-stats .stat {
    display: flex;
    gap: 4px;
    font-family: var(--font-mono);
    font-size: 0.85em;
}

.phase-space-stats .stat-label {
    color: var(--text-muted);
}

.phase-space-stats .stat-value {
    color: var(--text-primary);
}

.phase-space-stats .stat-value.velocity {
    color: var(--status-success);
}

.regime-counts {
    display: flex;
    gap: 4px;
}

.regime-badge {
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.75em;
    font-weight: 600;
    color: #000;
}

/* Phase space canvas */
.phase-space-canvas {
    flex: 1;
    min-height: 300px;
    background: rgba(0, 10, 20, 0.5);
    border: 1px solid var(--grid-color);
    border-radius: 8px;
    overflow: hidden;
    cursor: grab;
}

.phase-space-canvas:active {
    cursor: grabbing;
}

.phase-space-svg {
    width: 100%;
    height: 100%;
}

.phase-point {
    cursor: pointer;
    transition: all 0.2s ease;
}

.phase-point:hover {
    filter: drop-shadow(0 0 8px currentColor);
}

.point-glow {
    animation: pulse-glow 1.5s ease-in-out infinite;
}

@keyframes pulse-glow {
    0%, 100% { opacity: 0.3; }
    50% { opacity: 0.6; }
}

.phase-tooltip .tooltip-bg {
    fill: var(--card-bg);
    stroke: var(--border-glow);
    stroke-width: 1;
}

.phase-tooltip .tooltip-text {
    font-family: var(--font-mono);
    font-size: 9px;
    text-anchor: middle;
}

.phase-tooltip .tooltip-text.symbol {
    fill: var(--text-primary);
    font-weight: 600;
}

.phase-tooltip .tooltip-text.regime {
    font-size: 8px;
}

.axis-line {
    stroke: var(--grid-color);
    stroke-width: 1;
    opacity: 0.5;
}

/* Phase space legend */
.phase-space-legend {
    display: flex;
    justify-content: center;
    gap: 16px;
    padding: 8px;
}

.legend-item {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.8em;
}

.legend-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
}

.legend-name {
    color: var(--text-secondary);
}

.empty-phase-space {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    gap: 12px;
    color: var(--text-muted);
}

.empty-phase-space .empty-icon {
    font-size: 3em;
    opacity: 0.5;
}

/* ============================================================================
   ATTENTION HEAD FLOW
   ============================================================================ */

.attention-view {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 12px;
}

.attention-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
}

.attention-header h3 {
    margin: 0;
    font-family: var(--font-display);
    font-size: 1.1em;
    color: #ff00ff;
}

.attention-controls {
    display: flex;
    align-items: center;
    gap: 16px;
}

.head-tabs {
    display: flex;
    gap: 4px;
}

.head-tab {
    padding: 4px 10px;
    background: rgba(255, 0, 255, 0.1);
    border: 1px solid var(--grid-color);
    border-radius: 4px;
    color: var(--text-secondary);
    font-family: var(--font-mono);
    font-size: 0.8em;
    cursor: pointer;
    transition: all 0.2s ease;
}

.head-tab:hover {
    border-color: rgba(255, 0, 255, 0.5);
}

.head-tab.selected {
    background: rgba(255, 0, 255, 0.3);
    border-color: #ff00ff;
    color: var(--text-primary);
}

.head-tab.dominant {
    position: relative;
}

.dominant-star {
    color: var(--status-warning);
    margin-left: 2px;
}

.head-tab.all {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.speed-control {
    display: flex;
    align-items: center;
    gap: 8px;
}

.speed-label {
    font-size: 0.8em;
    color: var(--text-muted);
}

.speed-control input[type="range"] {
    width: 80px;
}

.speed-value {
    font-family: var(--font-mono);
    font-size: 0.8em;
    color: var(--text-secondary);
    min-width: 35px;
}

.attention-stats {
    display: flex;
    gap: 16px;
}

.attention-stats .stat {
    display: flex;
    gap: 4px;
    font-family: var(--font-mono);
    font-size: 0.85em;
}

/* Attention content */
.attention-content {
    flex: 1;
    min-height: 300px;
    background: rgba(0, 10, 20, 0.5);
    border: 1px solid var(--grid-color);
    border-radius: 8px;
    overflow: hidden;
}

.attention-flow-svg {
    width: 100%;
    height: 100%;
}

.feature-node {
    cursor: pointer;
}

.feature-node .feature-rect {
    fill: color-mix(in srgb, var(--card-bg) 80%, transparent);
    stroke: var(--grid-color);
    stroke-width: 1;
    transition: all 0.2s ease;
}

.feature-node:hover .feature-rect {
    fill: rgba(0, 40, 80, 0.8);
    stroke: var(--primary-blue);
}

.feature-node .feature-text {
    fill: var(--text-secondary);
    font-family: var(--font-mono);
    font-size: 9px;
    text-anchor: middle;
}

.attention-flow {
    stroke-dasharray: 4 2;
}

.head-label {
    fill: var(--text-muted);
    font-family: var(--font-display);
    font-size: 12px;
    text-anchor: middle;
}

/* All heads grid */
.attention-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 16px;
    padding: 16px;
    height: 100%;
    overflow: auto;
}

.attention-mini-head {
    background: color-mix(in srgb, var(--card-bg) 60%, transparent);
    border: 1px solid var(--grid-color);
    border-radius: 8px;
    padding: 12px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.attention-mini-head.dominant {
    border-color: var(--status-warning);
    box-shadow: 0 0 8px color-mix(in srgb, var(--status-warning) 30%, transparent);
}

.mini-head-label {
    font-family: var(--font-mono);
    font-size: 0.9em;
    color: var(--text-primary);
    display: flex;
    align-items: center;
    gap: 4px;
}

.mini-heatmap {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
}

.mini-attention-svg {
    width: 100%;
    max-width: 120px;
    aspect-ratio: 1;
}

.mini-stats {
    font-family: var(--font-mono);
    font-size: 0.75em;
    color: var(--text-muted);
    text-align: center;
}

/* Attention legend */
.attention-legend {
    display: flex;
    justify-content: center;
    gap: 24px;
    padding: 8px;
}

.legend-section {
    display: flex;
    align-items: center;
    gap: 8px;
}

.legend-title {
    font-size: 0.8em;
    color: var(--text-muted);
}

.attention-gradient-legend {
    display: flex;
    align-items: center;
    gap: 8px;
}

.legend-gradient.attention {
    width: 100px;
    height: 12px;
    background: linear-gradient(to right, 
        rgb(0, 0, 128),
        rgb(128, 128, 0),
        rgb(255, 0, 0)
    );
    border-radius: 2px;
}

.empty-attention {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    gap: 12px;
    color: var(--text-muted);
}

.empty-attention .empty-icon {
    font-size: 3em;
    opacity: 0.5;
}

.empty-attention .empty-hint {
    font-size: 0.85em;
    opacity: 0.7;
}

/* ============================================================================
   WHAT-IF TENSOR INJECTION
   ============================================================================ */

.whatif-view {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 16px;
    overflow-y: auto;
}

.whatif-header {
    margin-bottom: 8px;
}

.whatif-header h3 {
    margin: 0 0 8px;
    font-family: var(--font-display);
    font-size: 1.1em;
    color: var(--status-warning);
}

.whatif-description {
    margin: 0;
    font-size: 0.85em;
    color: var(--text-secondary);
    max-width: 600px;
}

.whatif-controls {
    display: flex;
    flex-direction: column;
    gap: 20px;
    padding: 16px;
    background: color-mix(in srgb, var(--card-bg) 50%, transparent);
    border: 1px solid var(--grid-color);
    border-radius: 8px;
}

.control-section {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.control-section h4 {
    margin: 0;
    font-family: var(--font-display);
    font-size: 0.9em;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.1em;
}

.regime-sliders {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.slider-control {
    display: flex;
    align-items: center;
    gap: 12px;
}

.slider-label {
    min-width: 100px;
    font-family: var(--font-mono);
    font-size: 0.85em;
    color: var(--text-secondary);
}

.slider-control input[type="range"] {
    flex: 1;
    max-width: 200px;
}

.slider-value {
    min-width: 50px;
    font-family: var(--font-mono);
    font-size: 0.9em;
    text-align: right;
}

.velocity-control {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.checkbox-label {
    display: flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    font-size: 0.9em;
    color: var(--text-secondary);
}

.checkbox-label input[type="checkbox"] {
    accent-color: var(--primary-blue);
}

.control-section.actions {
    flex-direction: row;
    gap: 12px;
}

.simulate-btn {
    padding: 10px 24px;
    background: linear-gradient(135deg, var(--status-warning), #ff7700);
    border: none;
    border-radius: 6px;
    color: #000;
    font-family: var(--font-display);
    font-size: 1em;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
}

.simulate-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 16px color-mix(in srgb, var(--status-warning) 40%, transparent);
}

.simulate-btn.simulating {
    opacity: 0.7;
    cursor: wait;
}

.reset-btn {
    padding: 10px 20px;
    background: transparent;
    border: 1px solid var(--grid-color);
    border-radius: 6px;
    color: var(--text-secondary);
    font-size: 0.9em;
    cursor: pointer;
    transition: all 0.2s ease;
}

.reset-btn:hover {
    border-color: var(--text-secondary);
    color: var(--text-primary);
}

/* What-if results */
.whatif-results {
    min-height: 100px;
}

.projection-display {
    padding: 16px;
    background: rgba(0, 30, 60, 0.5);
    border: 1px solid var(--border-glow);
    border-radius: 8px;
}

.projection-display h4 {
    margin: 0 0 16px;
    font-family: var(--font-display);
    font-size: 1em;
    color: var(--primary-blue);
}

.projection-metrics {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 16px;
}

.projection-metrics .metric {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.metric-label {
    font-size: 0.8em;
    color: var(--text-muted);
}

.metric-value {
    font-family: var(--font-mono);
    font-size: 1.4em;
    font-weight: 600;
}

.metric-value.positive {
    color: var(--status-success);
}

.metric-value.negative {
    color: var(--accent-red);
}

.metric-range {
    font-family: var(--font-mono);
    font-size: 0.75em;
    color: var(--text-muted);
}

.prob-bar {
    width: 100%;
    height: 8px;
    background: rgba(0, 0, 0, 0.3);
    border-radius: 4px;
    overflow: hidden;
    margin-top: 4px;
}

.prob-fill {
    height: 100%;
    background: linear-gradient(to right, var(--accent-red), var(--status-success));
    border-radius: 4px;
    transition: width 0.5s ease;
}

.suggestions {
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid var(--grid-color);
}

.suggestions h5 {
    margin: 0 0 12px;
    font-family: var(--font-display);
    font-size: 0.9em;
    color: var(--status-warning);
}

.suggestions ul {
    margin: 0;
    padding-left: 20px;
}

.suggestions li {
    font-size: 0.85em;
    color: var(--text-secondary);
    margin-bottom: 6px;
}

/* What-if visualization */
.whatif-viz {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 16px;
}

.regime-vector-svg {
    width: 200px;
    height: 200px;
}

.vector-bg {
    fill: color-mix(in srgb, var(--card-bg) 60%, transparent);
    stroke: var(--grid-color);
    stroke-width: 1;
}

.axis-circle {
    fill: none;
    stroke: var(--grid-color);
    stroke-width: 1;
    opacity: 0.3;
}

.axis-label {
    fill: var(--text-muted);
    font-family: var(--font-mono);
    font-size: 10px;
    text-anchor: middle;
}

.magnitude-label {
    fill: var(--text-muted);
    font-family: var(--font-mono);
    font-size: 10px;
    text-anchor: middle;
}

/* ============================================================================
   MOBILE FALLBACK & RESPONSIVE DESIGN
   ============================================================================ */

/* Mobile warning for 3D views */
@media (max-width: 768px) {
    .phase-space-view,
    .attention-view {
        position: relative;
    }
    
    .phase-space-view::before,
    .attention-view::before {
        content: "⚠️ Best viewed on desktop";
        display: block;
        padding: 8px 12px;
        background: color-mix(in srgb, var(--status-warning) 20%, transparent);
        border: 1px solid color-mix(in srgb, var(--status-warning) 50%, transparent);
        border-radius: 6px;
        color: var(--status-warning);
        font-size: 0.85em;
        text-align: center;
        margin-bottom: 12px;
    }
    
    /* Simplified phase space on mobile */
    .phase-space-canvas {
        min-height: 250px;
    }
    
    .phase-space-header,
    .attention-header {
        flex-direction: column;
        align-items: flex-start;
    }
    
    .phase-space-stats,
    .attention-stats {
        flex-wrap: wrap;
        gap: 8px;
    }
    
    /* Hide rotation controls on touch devices */
    .control-hint {
        display: none;
    }
    
    /* Simplified attention grid */
    .attention-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 8px;
        padding: 8px;
    }
    
    .attention-mini-head {
        padding: 8px;
    }
    
    /* Stack head tabs */
    .head-tabs {
        flex-wrap: wrap;
    }
    
    /* Hide speed control on mobile */
    .speed-control {
        display: none;
    }
    
    /* What-If responsive */
    .whatif-controls {
        padding: 12px;
    }
    
    .slider-control {
        flex-direction: column;
        align-items: flex-start;
        gap: 6px;
    }
    
    .slider-label {
        min-width: auto;
    }
    
    .slider-control input[type="range"] {
        width: 100%;
        max-width: none;
    }
    
    .projection-metrics {
        grid-template-columns: 1fr;
    }
    
    .whatif-viz {
        display: none;
    }
}

/* Tablet adjustments */
@media (min-width: 769px) and (max-width: 1024px) {
    .attention-grid {
        grid-template-columns: repeat(3, 1fr);
    }
    
    .projection-metrics {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* Reduce motion for accessibility */
@media (prefers-reduced-motion: reduce) {
    .point-glow {
        animation: none;
    }
    
    .attention-flow animate {
        animation: none;
    }
    
    .viz-spinner {
        animation: none;
    }
}

/* High contrast mode support */
@media (prefers-contrast: high) {
    .phase-point {
        stroke: #fff;
        stroke-width: 1px;
    }
    
    .heatmap-cell {
        outline: 1px solid rgba(255, 255, 255, 0.3);
    }
    
    .tooltip-bg {
        fill: #000;
        stroke: #fff;
        stroke-width: 2px;
    }
}

/* Touch device optimizations */
@media (pointer: coarse) {
    .phase-point {
        cursor: pointer;
    }
    
    .phase-space-canvas {
        touch-action: none;
    }
    
    /* Larger touch targets */
    .head-tab {
        min-width: 44px;
        min-height: 44px;
        padding: 8px 12px;
    }
    
    .zoom-btn {
        min-width: 44px;
        min-height: 44px;
    }
    
    .control-btn {
        min-height: 44px;
    }
}

/* ============================================================================
   TRADE JOURNAL VIEW
   ============================================================================ */

.journal-view {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 16px;
    overflow: hidden;
}

.journal-loading {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 200px;
    gap: 12px;
    color: var(--text-secondary);
}

/* Summary Cards */
.journal-summary {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 12px;
    padding: 0 4px;
}

.summary-card {
    background: linear-gradient(145deg, 
        rgba(40, 40, 50, 0.8), 
        rgba(30, 30, 40, 0.9));
    border: 1px solid rgba(120, 120, 140, 0.3);
    border-radius: 8px;
    padding: 12px;
    text-align: center;
    transition: all 0.2s ease;
}

.summary-card:hover {
    border-color: rgba(120, 120, 140, 0.6);
    transform: translateY(-2px);
}

.summary-card.positive .card-value {
    color: var(--status-success);
}

.summary-card.negative .card-value {
    color: var(--status-error);
}

.card-title {
    font-size: 0.75em;
    color: var(--text-tertiary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 4px;
}

.card-value {
    font-size: 1.4em;
    font-weight: 600;
    font-family: 'JetBrains Mono', monospace;
    color: var(--text-primary);
}

.card-subtitle {
    font-size: 0.7em;
    color: var(--text-tertiary);
    margin-top: 4px;
}

/* Trade Table */
.journal-table-container {
    flex: 1;
    overflow: auto;
    border: 1px solid rgba(80, 80, 100, 0.4);
    border-radius: 8px;
    background: rgba(20, 20, 30, 0.6);
}

.journal-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.85em;
}

.journal-table thead {
    position: sticky;
    top: 0;
    z-index: 10;
    background: linear-gradient(180deg, 
        rgba(40, 40, 55, 0.98), 
        rgba(35, 35, 50, 0.95));
}

.journal-table th {
    padding: 10px 8px;
    text-align: left;
    font-weight: 500;
    color: var(--text-secondary);
    border-bottom: 2px solid rgba(100, 100, 120, 0.5);
    font-size: 0.85em;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    white-space: nowrap;
    user-select: none;
}

.journal-table th.sortable {
    cursor: pointer;
    transition: color 0.15s;
}

.journal-table th.sortable:hover {
    color: var(--text-primary);
}

.journal-table th.sortable.active {
    color: var(--accent-primary);
}

.sort-arrow {
    margin-left: 4px;
    opacity: 0.7;
}

.journal-table td {
    padding: 10px 8px;
    border-bottom: 1px solid rgba(60, 60, 80, 0.3);
    vertical-align: middle;
}

.trade-row {
    cursor: pointer;
    transition: background-color 0.15s;
}

.trade-row:hover {
    background: rgba(80, 80, 100, 0.2);
}

.trade-row.selected {
    background: rgba(80, 80, 100, 0.35);
}

.trade-row.winner .col-pnl {
    color: var(--status-success);
}

.trade-row.loser .col-pnl {
    color: var(--status-error);
}

/* Cell styling */
.symbol-badge {
    display: inline-block;
    padding: 2px 6px;
    background: rgba(100, 100, 130, 0.3);
    border-radius: 4px;
    font-family: 'JetBrains Mono', monospace;
    font-weight: 500;
    color: var(--accent-secondary);
}

.dir-badge {
    display: inline-block;
    width: 20px;
    height: 20px;
    border-radius: 4px;
    font-size: 0.8em;
    font-weight: 600;
    text-align: center;
    line-height: 20px;
}

.dir-badge.long {
    background: color-mix(in srgb, var(--status-success) 25%, transparent);
    color: var(--status-success);
    border: 1px solid color-mix(in srgb, var(--status-success) 40%, transparent);
}

.dir-badge.short {
    background: color-mix(in srgb, var(--status-error) 25%, transparent);
    color: var(--status-error);
    border: 1px solid color-mix(in srgb, var(--status-error) 40%, transparent);
}

.col-entry, .col-exit {
    font-family: 'JetBrains Mono', monospace;
    color: var(--text-secondary);
}

.col-pnl {
    font-family: 'JetBrains Mono', monospace;
    font-weight: 500;
}

.col-pnl.positive { color: var(--status-success); }
.col-pnl.negative { color: var(--status-error); }

.pnl-value {
    display: block;
}

.pnl-percent {
    font-size: 0.8em;
    opacity: 0.7;
}

/* Left on Table Bar */
.left-on-table-bar {
    position: relative;
    width: 60px;
    height: 8px;
    background: rgba(60, 60, 80, 0.5);
    border-radius: 4px;
    overflow: hidden;
    display: flex;
}

.left-on-table-bar .captured {
    height: 100%;
    background: linear-gradient(90deg, var(--status-success), color-mix(in srgb, var(--status-success) 60%, transparent));
}

.left-on-table-bar .left {
    height: 100%;
    background: linear-gradient(90deg, color-mix(in srgb, var(--status-warning) 60%, transparent), color-mix(in srgb, var(--status-warning) 30%, transparent));
}

.left-on-table-bar .label {
    position: absolute;
    right: -40px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 0.75em;
    color: var(--text-tertiary);
    font-family: 'JetBrains Mono', monospace;
}

/* Quality Badge */
.quality-badge {
    display: inline-block;
    width: 24px;
    height: 24px;
    border-radius: 4px;
    font-size: 0.85em;
    font-weight: 600;
    text-align: center;
    line-height: 24px;
}

.quality-badge.grade-a {
    background: color-mix(in srgb, var(--status-success) 30%, transparent);
    color: var(--status-success);
    border: 1px solid color-mix(in srgb, var(--status-success) 50%, transparent);
}

.quality-badge.grade-b {
    background: rgba(100, 200, 100, 0.25);
    color: #8fd68f;
    border: 1px solid rgba(100, 200, 100, 0.4);
}

.quality-badge.grade-c {
    background: rgba(255, 200, 0, 0.25);
    color: var(--status-warning);
    border: 1px solid rgba(255, 200, 0, 0.4);
}

.quality-badge.grade-d {
    background: rgba(255, 140, 0, 0.25);
    color: #ffaa50;
    border: 1px solid rgba(255, 140, 0, 0.4);
}

.quality-badge.grade-f {
    background: color-mix(in srgb, var(--status-error) 25%, transparent);
    color: var(--status-error);
    border: 1px solid color-mix(in srgb, var(--status-error) 40%, transparent);
}

/* Exit Reason */
.exit-reason {
    font-size: 1.2em;
    cursor: help;
}

/* Trade Detail Row */
.trade-detail-row {
    background: rgba(30, 30, 45, 0.6);
}

.trade-detail-row td {
    padding: 0;
}

.trade-detail {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
    padding: 16px;
    border-top: 1px solid rgba(80, 80, 100, 0.4);
}

.detail-section {
    background: rgba(40, 40, 55, 0.5);
    border-radius: 8px;
    padding: 12px;
}

.detail-section h4 {
    margin: 0 0 12px 0;
    font-size: 0.8em;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-tertiary);
}

/* Timeline */
.timeline-bar {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 0;
}

.entry-point, .exit-point {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
}

.entry-point .point, .exit-point .point {
    width: 12px;
    height: 12px;
    border-radius: 50%;
}

.entry-point .point.entry {
    background: var(--status-success);
    box-shadow: 0 0 8px color-mix(in srgb, var(--status-success) 50%, transparent);
}

.exit-point .point.exit {
    background: var(--status-error);
    box-shadow: 0 0 8px color-mix(in srgb, var(--status-error) 50%, transparent);
}

.entry-point .info, .exit-point .info {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    font-size: 0.75em;
}

.entry-point .label, .exit-point .label {
    color: var(--text-tertiary);
    text-transform: uppercase;
    font-size: 0.9em;
}

.entry-point .price, .exit-point .price {
    font-family: 'JetBrains Mono', monospace;
    font-weight: 500;
    color: var(--text-primary);
}

.entry-point .signal, .exit-point .signal {
    color: var(--text-tertiary);
}

.range-bar {
    flex: 1;
    height: 4px;
    background: linear-gradient(90deg, 
        color-mix(in srgb, var(--status-success) 30%, transparent), 
        rgba(255, 200, 0, 0.3), 
        color-mix(in srgb, var(--status-error) 30%, transparent));
    border-radius: 2px;
    position: relative;
}

.mfe-marker, .mae-marker {
    position: absolute;
    top: -10px;
    transform: translateX(-50%);
}

.mfe-marker::after, .mae-marker::after {
    content: '';
    display: block;
    width: 2px;
    height: 24px;
    border-radius: 1px;
}

.mfe-marker::after {
    background: var(--status-success);
}

.mae-marker::after {
    background: var(--status-error);
}

.marker-label {
    position: absolute;
    top: -16px;
    left: 50%;
    transform: translateX(-50%);
    font-size: 0.65em;
    color: var(--text-tertiary);
    white-space: nowrap;
}

/* Counterfactuals */
.cf-grid {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.cf-card {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    background: rgba(50, 50, 65, 0.5);
    border-radius: 6px;
    border-left: 3px solid transparent;
}

.cf-card.better {
    border-left-color: var(--status-success);
}

.cf-card.worse {
    border-left-color: var(--status-error);
}

.cf-icon {
    font-size: 1.2em;
}

.cf-content {
    flex: 1;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.cf-scenario {
    font-size: 0.85em;
    color: var(--text-secondary);
}

.cf-pnl {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.9em;
    color: var(--text-primary);
}

.cf-delta {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.8em;
    padding: 2px 6px;
    border-radius: 4px;
}

.cf-delta.positive {
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
    color: var(--status-success);
}

.cf-delta.negative {
    background: color-mix(in srgb, var(--status-error) 20%, transparent);
    color: var(--status-error);
}

/* Quality Breakdown */
.quality-bars {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.quality-bar-container {
    display: flex;
    align-items: center;
    gap: 8px;
}

.quality-label {
    width: 80px;
    font-size: 0.75em;
    color: var(--text-tertiary);
}

.quality-bar {
    flex: 1;
    height: 6px;
    background: rgba(60, 60, 80, 0.5);
    border-radius: 3px;
    overflow: hidden;
}

.quality-fill {
    height: 100%;
    border-radius: 3px;
    transition: width 0.3s ease;
}

.quality-fill.excellent {
    background: linear-gradient(90deg, var(--status-success), #4ade80);
}

.quality-fill.good {
    background: linear-gradient(90deg, #8fd68f, #a3e635);
}

.quality-fill.fair {
    background: linear-gradient(90deg, var(--status-warning), #fbbf24);
}

.quality-fill.poor {
    background: linear-gradient(90deg, #f97316, var(--status-error));
}

.quality-value {
    width: 25px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.75em;
    color: var(--text-secondary);
    text-align: right;
}

/* Metrics Grid */
.metrics-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
}

.metric {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 6px;
    background: rgba(50, 50, 65, 0.4);
    border-radius: 4px;
}

.metric .label {
    font-size: 0.7em;
    color: var(--text-tertiary);
    text-transform: uppercase;
}

.metric .value {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.9em;
    color: var(--text-primary);
}

.metric .value.positive { color: var(--status-success); }
.metric .value.negative { color: var(--status-error); }

/* Journal Responsive */
@media (max-width: 1200px) {
    .journal-summary {
        grid-template-columns: repeat(3, 1fr);
    }
    
    .trade-detail {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 768px) {
    .journal-summary {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .trade-detail {
        grid-template-columns: 1fr;
    }
    
    .left-on-table-bar .label {
        display: none;
    }
    
    .journal-table {
        font-size: 0.75em;
    }
    
    .col-entry, .col-exit {
        display: none;
    }
}

/* ============================================================================
   PRIVATE CONTRACT ONBOARDING (Lending)
   ============================================================================ */

.lending-onboarding {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    background: linear-gradient(135deg, var(--dark-bg, #0a0f1a) 0%, var(--card-bg, #0d1929) 50%, var(--navy-dark, #001a33) 100%);
    color: var(--text-primary);
    font-family: 'Orbitron', 'IBM Plex Mono', monospace;
}

/* Header */
.lending-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1.5rem 2rem;
    background: var(--card-bg);
    border-bottom: 2px solid;
    border-image: linear-gradient(90deg, var(--accent-red), var(--primary-blue), var(--accent-red)) 1;
}

.lending-header .logo {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.lending-header .logo-icon {
    font-size: 1.5rem;
}

.lending-header .logo-text {
    font-size: 1.125rem;
    font-weight: 600;
    color: var(--primary-blue);
    text-transform: uppercase;
    letter-spacing: 0.1em;
}

.lending-header .contract-title {
    text-align: right;
}

.lending-header .contract-title h1 {
    font-size: 1.25rem;
    font-weight: 600;
    margin: 0;
    color: #fff;
}

.lending-header .contract-id {
    font-size: 0.75rem;
    color: rgba(255, 255, 255, 0.5);
    font-family: 'JetBrains Mono', monospace;
}

/* Main Content */
.lending-content {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem;
}

/* Footer */
.lending-footer {
    padding: 1rem 2rem;
    text-align: center;
    color: rgba(255, 255, 255, 0.4);
    font-size: 0.75rem;
    border-top: 1px solid rgba(255, 255, 255, 0.05);
}

/* Stage: Checking Whitelist */
.stage-checking {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.5rem;
}

.stage-checking .spinner {
    font-size: 3rem;
    animation: spin 1s linear infinite;
}

@keyframes spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

.stage-checking p {
    font-size: 1.125rem;
    color: rgba(255, 255, 255, 0.7);
}

/* Stage: Access Denied */
.stage-denied {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.5rem;
    max-width: 400px;
    text-align: center;
    padding: 2rem;
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    border-radius: 12px;
}

.stage-denied .denied-icon {
    font-size: 4rem;
}

.stage-denied h2 {
    font-size: 1.5rem;
    margin: 0;
    color: #f87171;
}

.stage-denied p {
    color: rgba(255, 255, 255, 0.7);
    margin: 0;
    line-height: 1.6;
}

.stage-denied .error-detail {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.75rem;
    color: rgba(255, 255, 255, 0.5);
    background: rgba(0, 0, 0, 0.3);
    padding: 0.75rem 1rem;
    border-radius: 6px;
    max-width: 100%;
    overflow-x: auto;
}

/* Stage: Create Account */
.stage-create {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.5rem;
    max-width: 400px;
    text-align: center;
}

.stage-create h2 {
    font-size: 1.75rem;
    margin: 0;
    color: #fff;
}

.stage-create p {
    color: rgba(255, 255, 255, 0.7);
    margin: 0;
}

/* Role Badge */
.role-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    background: linear-gradient(135deg, color-mix(in srgb, var(--text-accent) 15%, transparent), rgba(0, 82, 204, 0.15));
    border: 1px solid var(--primary-blue-glow);
    border-radius: 20px;
}

.role-badge .role-icon {
    font-size: 1.25rem;
}

.role-badge .role-text {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--primary-blue);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* Passkey Info */
.passkey-info {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    width: 100%;
    padding: 1.5rem;
    background: rgba(255, 255, 255, 0.05);
    border-radius: 12px;
    border: 1px solid rgba(255, 255, 255, 0.1);
}

.passkey-info .info-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.passkey-info .info-icon {
    font-size: 1.25rem;
}

.passkey-info .info-text {
    font-size: 0.875rem;
    color: rgba(255, 255, 255, 0.8);
    text-align: left;
}

/* Buttons - Cyberpunk Patriot Style */
.lending-onboarding .btn-primary {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 0.875rem 2rem;
    background: linear-gradient(135deg, var(--accent-red), var(--accent-red-dark));
    color: var(--star-white);
    font-family: 'Orbitron', monospace;
    font-size: 0.875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    border: 1px solid var(--accent-red);
    border-radius: 4px;
    cursor: pointer;
    transition: all 0.2s ease;
    min-width: 200px;
}

.lending-onboarding .btn-primary:hover:not(:disabled) {
    background: linear-gradient(135deg, var(--accent-red-dark), var(--accent-red));
    transform: translateY(-2px);
    box-shadow: var(--shadow-glow-red);
}

.lending-onboarding .btn-primary:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* Stage: Login */
.stage-login {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.5rem;
    max-width: 400px;
    text-align: center;
}

.stage-login .login-icon {
    font-size: 4rem;
}

.stage-login h2 {
    font-size: 1.75rem;
    margin: 0;
    color: #fff;
}

.stage-login p {
    color: rgba(255, 255, 255, 0.7);
    margin: 0;
}

/* Stage: Dashboard */
.stage-dashboard {
    display: flex;
    flex-direction: column;
    gap: 2rem;
    width: 100%;
    max-width: 800px;
}

.user-role {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 1rem 1.5rem;
    background: linear-gradient(135deg, color-mix(in srgb, var(--text-accent) 10%, transparent), rgba(0, 82, 204, 0.1));
    border: 1px solid var(--primary-blue-glow);
    border-radius: 4px;
}

.user-role .role-icon {
    font-size: 2rem;
}

.user-role .role-label {
    font-size: 0.75rem;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.user-role .role-name {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--primary-blue);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* Contract Summary */
.contract-summary {
    background: var(--card-bg);
    border: 1px solid var(--grid-color);
    border-radius: 4px;
    padding: 1.5rem;
    position: relative;
}

.contract-summary::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 2px;
    background: linear-gradient(90deg, var(--accent-red), var(--primary-blue), var(--accent-red));
}

.contract-summary h2 {
    font-family: 'Orbitron', monospace;
    font-size: 1.25rem;
    font-weight: 700;
    margin: 0 0 1.5rem 0;
    color: var(--patriot-white);
    text-transform: uppercase;
    letter-spacing: 0.1em;
}

.summary-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1rem;
}

.summary-item {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    padding: 1rem;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid var(--grid-color);
    border-radius: 4px;
}

.summary-item .item-label {
    font-size: 0.65rem;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-family: 'Orbitron', monospace;
}

.summary-item .item-value {
    font-size: 1rem;
    font-weight: 600;
    color: var(--patriot-white);
    font-family: 'IBM Plex Mono', monospace;
}

.summary-item .item-value.status {
    color: var(--status-success);
    text-transform: uppercase;
    text-shadow: 0 0 10px var(--status-success);
}

/* Role Actions */
.role-actions {
    background: var(--card-bg);
    border: 1px solid var(--grid-color);
    border-radius: 4px;
    padding: 1.5rem;
}

.role-actions h3 {
    font-family: 'Orbitron', monospace;
    font-size: 0.875rem;
    font-weight: 600;
    margin: 0 0 1rem 0;
    color: var(--primary-blue);
    text-transform: uppercase;
    letter-spacing: 0.1em;
}

.actions-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 1rem;
}

.action-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    padding: 1.25rem 1rem;
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-radius: 4px;
    color: var(--patriot-white);
    cursor: pointer;
    transition: all 0.2s ease;
    font-family: 'Orbitron', monospace;
}

.action-btn:hover {
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    border-color: var(--primary-blue);
    transform: translateY(-2px);
    box-shadow: 0 0 15px color-mix(in srgb, var(--text-accent) 30%, transparent);
}

.action-btn.primary {
    background: linear-gradient(135deg, color-mix(in srgb, var(--status-error) 20%, transparent), rgba(204, 0, 51, 0.2));
    border-color: var(--accent-red-glow);
}

.action-btn.primary:hover {
    background: linear-gradient(135deg, color-mix(in srgb, var(--status-error) 30%, transparent), rgba(204, 0, 51, 0.3));
    border-color: var(--accent-red);
    box-shadow: var(--shadow-glow-red);
}

.action-btn.secondary {
    background: color-mix(in srgb, var(--text-accent) 3%, transparent);
}

.action-btn.disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

.action-btn .btn-icon {
    font-size: 1.75rem;
}

.action-btn .btn-text {
    font-size: 0.75rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* Observer View */
.observer-view {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.5rem;
    text-align: center;
}

.observer-note {
    color: rgba(255, 255, 255, 0.6);
    font-style: italic;
    margin: 0;
}

/* Parties Section */
.parties-section {
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 16px;
    padding: 1.5rem;
}

.parties-section h3 {
    font-size: 1.125rem;
    margin: 0 0 1rem 0;
    color: rgba(255, 255, 255, 0.8);
}

.parties-list {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.party-item {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 0.75rem 1rem;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 8px;
}

.party-item .party-icon {
    font-size: 1.5rem;
}

.party-item .party-info {
    flex: 1;
}

.party-item .party-name {
    font-weight: 500;
    color: #fff;
}

.party-item .party-role {
    font-size: 0.75rem;
    color: rgba(255, 255, 255, 0.5);
}

.party-item.current-user {
    border: 1px solid rgba(167, 139, 250, 0.3);
    background: rgba(167, 139, 250, 0.1);
}

/* Error Message */
.error-message {
    padding: 0.75rem 1rem;
    background: color-mix(in srgb, var(--status-error) 15%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    border-radius: 8px;
    color: #fca5a5;
    font-size: 0.875rem;
}

/* Responsive */
@media (max-width: 768px) {
    .lending-header {
        flex-direction: column;
        gap: 1rem;
        text-align: center;
    }
    
    .lending-header .contract-title {
        text-align: center;
    }
    
    .summary-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .actions-grid {
        grid-template-columns: 1fr;
    }
}

/* Action Feedback */
.action-feedback {
    padding: 1rem 1.5rem;
    border-radius: 8px;
    font-size: 0.875rem;
    text-align: center;
}

.action-feedback.success {
    background: color-mix(in srgb, var(--status-success) 15%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 30%, transparent);
    color: #4ade80;
}

.action-feedback.error {
    background: color-mix(in srgb, var(--status-error) 15%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    color: #f87171;
}

/* Stage: Select Role */
.stage-select-role {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2rem;
    max-width: 500px;
    text-align: center;
}

.stage-select-role h2 {
    font-family: 'Orbitron', monospace;
    font-size: 1.5rem;
    font-weight: 700;
    margin: 0;
    color: var(--patriot-white);
    text-transform: uppercase;
    letter-spacing: 0.1em;
}

.stage-select-role p {
    color: var(--text-secondary);
    margin: 0;
}

.role-options {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    width: 100%;
}

.role-option {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem 1.5rem;
    background: var(--card-bg);
    border: 1px solid var(--grid-color);
    border-radius: 4px;
    color: var(--patriot-white);
    cursor: pointer;
    transition: all 0.2s ease;
    text-align: left;
    font-family: 'Orbitron', monospace;
}

.role-option:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
    transform: translateX(4px);
    box-shadow: 0 0 15px color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.role-option-icon {
    font-size: 2rem;
}

.role-option-info {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.role-option-name {
    font-weight: 600;
    font-size: 1rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.role-option-role {
    font-size: 0.75rem;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.role-option-arrow {
    font-size: 1.25rem;
    color: var(--text-muted);
    transition: all 0.2s ease;
}

.role-option:hover .role-option-arrow {
    color: var(--primary-blue);
    transform: translateX(4px);
    text-shadow: 0 0 10px var(--primary-blue);
}

.role-note {
    font-size: 0.75rem;
    color: var(--text-muted);
    font-style: normal;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* Stage: Account Created */
.stage-account-created {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.5rem;
    max-width: 450px;
    text-align: center;
}

.success-animation {
    width: 80px;
    height: 80px;
    border-radius: 4px;
    background: linear-gradient(135deg, color-mix(in srgb, var(--status-success) 10%, transparent), color-mix(in srgb, var(--text-accent) 10%, transparent));
    border: 2px solid var(--status-success);
    display: flex;
    align-items: center;
    justify-content: center;
    animation: scaleIn 0.5s ease;
    box-shadow: 0 0 20px color-mix(in srgb, var(--status-success) 30%, transparent);
}

@keyframes scaleIn {
    0% { transform: scale(0); opacity: 0; }
    50% { transform: scale(1.1); }
    100% { transform: scale(1); opacity: 1; }
}

.success-animation .checkmark {
    font-size: 2.5rem;
    color: var(--status-success);
    text-shadow: 0 0 10px var(--status-success);
}

.stage-account-created h2 {
    font-family: 'Orbitron', monospace;
    font-size: 1.5rem;
    font-weight: 700;
    margin: 0;
    color: var(--patriot-white);
    text-transform: uppercase;
    letter-spacing: 0.1em;
}

.stage-account-created > p {
    color: var(--text-secondary);
    margin: 0;
}

/* Credentials Card */
.credentials-card {
    width: 100%;
    background: var(--card-bg);
    border: 1px solid var(--grid-color);
    border-radius: 4px;
    padding: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.credential-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.5rem 0;
    border-bottom: 1px solid var(--grid-color);
}

.credential-item:last-child {
    border-bottom: none;
}

.credential-label {
    font-family: 'Orbitron', monospace;
    font-size: 0.7rem;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.1em;
}

.credential-value {
    font-size: 0.875rem;
    color: #fff;
}

.credential-value.monospace {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.8rem;
    background: rgba(0, 0, 0, 0.3);
    padding: 0.25rem 0.5rem;
    border-radius: 4px;
}

.credential-role {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.credential-role .role-icon {
    font-size: 1.25rem;
}

/* Recovery Prompt */
.recovery-prompt {
    width: 100%;
    background: linear-gradient(135deg, color-mix(in srgb, var(--status-warning) 10%, transparent), rgba(255, 136, 0, 0.1));
    border: 1px solid var(--status-warning);
    border-radius: 4px;
    padding: 1.5rem;
}

.recovery-prompt h3 {
    font-family: 'Orbitron', monospace;
    font-size: 0.875rem;
    font-weight: 600;
    margin: 0 0 0.5rem 0;
    color: var(--status-warning);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.recovery-prompt p {
    font-size: 0.875rem;
    color: var(--text-secondary);
    margin: 0 0 1rem 0;
}

.recovery-actions {
    display: flex;
    gap: 0.75rem;
}

.lending-onboarding .btn-secondary {
    padding: 0.75rem 1.5rem;
    background: transparent;
    border: 1px solid var(--primary-blue-glow);
    color: var(--primary-blue);
    border-radius: 4px;
    cursor: pointer;
    font-family: 'Orbitron', monospace;
    font-size: 0.75rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    transition: all 0.2s ease;
}

.lending-onboarding .btn-secondary:hover {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border-color: var(--primary-blue);
    box-shadow: 0 0 10px color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.btn-secondary:hover {
    background: rgba(255, 255, 255, 0.05);
    border-color: rgba(255, 255, 255, 0.3);
    color: #fff;
}

/* Recovery Success/Skipped */
.recovery-success, .recovery-skipped {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 1rem;
    border-radius: 8px;
    font-size: 0.875rem;
}

.recovery-success {
    background: color-mix(in srgb, var(--status-success) 15%, transparent);
    color: #4ade80;
}

.recovery-success .recovery-icon {
    font-size: 1.25rem;
}

.recovery-skipped {
    background: rgba(255, 255, 255, 0.05);
    color: rgba(255, 255, 255, 0.6);
}

.recovery-skipped .recovery-warning {
    font-size: 1.25rem;
}

/* Continue Button */
.btn-large {
    padding: 1rem 2.5rem;
    font-size: 1.125rem;
}

.btn-arrow {
    margin-left: 0.5rem;
    transition: transform 0.2s ease;
}

.btn-primary:hover .btn-arrow {
    transform: translateX(4px);
}

/* Spinner improvements */
.spinner-container {
    position: relative;
    width: 80px;
    height: 80px;
}

.spinner-ring {
    position: absolute;
    inset: 0;
    border: 3px solid color-mix(in srgb, var(--text-accent) 20%, transparent);
    border-top-color: var(--primary-blue);
    border-radius: 4px;
    animation: spin 1s linear infinite;
}

.spinner-icon {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 2rem;
}
/* ============================================================================
   FACTORY OBSERVER - Gaming-Style Trading Interface
   ============================================================================
   
   Design Philosophy:
   - Dark mode first with high contrast
   - Neon accents on dark backgrounds (Bloomberg terminal meets cyberpunk)
   - Sharp angles and gradients for tech aesthetic
   - Smooth micro-animations for feedback
   - GPU-accelerated transforms where possible
   ============================================================================ */

/* ============================================================================
   CSS VARIABLES
   ============================================================================ */

.factory-observer {
  /* === Colors: Dark Foundation === */
  --fo-bg-primary: #0a0b0f;
  --fo-bg-secondary: #12141a;
  --fo-bg-tertiary: #1a1d26;
  --fo-bg-card: #1e222d;
  --fo-bg-elevated: #252a38;
  --fo-bg-hover: #2d3344;
  
  /* === Colors: Text === */
  --fo-text-primary: #e8eaf0;
  --fo-text-secondary: #9ca3af;
  --fo-text-muted: #6b7280;
  --fo-text-dim: #4b5563;
  
  /* === Colors: Accent Palette === */
  --fo-accent-green: #22c55e;
  --fo-accent-green-dim: color-mix(in srgb, var(--status-success) 20%, transparent);
  --fo-accent-green-glow: color-mix(in srgb, var(--status-success) 40%, transparent);
  
  --fo-accent-red: #ef4444;
  --fo-accent-red-dim: color-mix(in srgb, var(--status-error) 20%, transparent);
  --fo-accent-red-glow: color-mix(in srgb, var(--status-error) 40%, transparent);
  
  --fo-accent-blue: #3b82f6;
  --fo-accent-blue-dim: rgba(59, 130, 246, 0.2);
  --fo-accent-blue-glow: rgba(59, 130, 246, 0.4);
  
  --fo-accent-amber: #f59e0b;
  --fo-accent-amber-dim: color-mix(in srgb, var(--status-warning) 20%, transparent);
  
  --fo-accent-purple: #a855f7;
  --fo-accent-purple-dim: rgba(168, 85, 247, 0.2);
  
  --fo-accent-cyan: #06b6d4;
  --fo-accent-cyan-dim: rgba(6, 182, 212, 0.2);
  
  /* === Regime Colors === */
  --fo-regime-stable: #22c55e;
  --fo-regime-transition: #f59e0b;
  --fo-regime-vacuum: #64748b;
  --fo-regime-chaos: #ef4444;
  
  /* === Typography === */
  --fo-font-display: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, sans-serif;
  --fo-font-mono: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace;
  
  /* === Borders === */
  --fo-border-subtle: 1px solid rgba(255, 255, 255, 0.06);
  --fo-border-accent: 1px solid rgba(59, 130, 246, 0.3);
  --fo-border-radius: 6px;
  --fo-border-radius-lg: 10px;
  
  /* === Shadows === */
  --fo-shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.3);
  --fo-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4);
  --fo-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.5);
  --fo-shadow-glow-green: 0 0 20px color-mix(in srgb, var(--status-success) 30%, transparent);
  --fo-shadow-glow-red: 0 0 20px color-mix(in srgb, var(--status-error) 30%, transparent);
  --fo-shadow-glow-blue: 0 0 20px rgba(59, 130, 246, 0.3);
  
  /* === Transitions === */
  --fo-transition-fast: 0.1s ease-out;
  --fo-transition-normal: 0.2s ease-out;
  --fo-transition-slow: 0.3s ease-out;
  
  /* === Layout === */
  --fo-spacing-xs: 4px;
  --fo-spacing-sm: 8px;
  --fo-spacing-md: 16px;
  --fo-spacing-lg: 24px;
  --fo-spacing-xl: 32px;
}

/* ============================================================================
   BASE PANEL
   ============================================================================ */

.factory-observer {
  display: flex;
  flex-direction: column;
  height: 100%;
  background: var(--fo-bg-primary);
  color: var(--fo-text-primary);
  font-family: var(--fo-font-display);
  font-size: 13px;
  line-height: 1.4;
  overflow: hidden;
  
  /* Subtle background pattern */
  background-image: 
    linear-gradient(to bottom, var(--fo-bg-primary), transparent),
    repeating-linear-gradient(
      45deg,
      transparent,
      transparent 40px,
      rgba(255, 255, 255, 0.01) 40px,
      rgba(255, 255, 255, 0.01) 80px
    );
}

/* ============================================================================
   MODE SELECTOR TABS
   ============================================================================ */

.mode-selector {
  display: flex;
  gap: 2px;
  padding: var(--fo-spacing-sm) var(--fo-spacing-md);
  background: var(--fo-bg-secondary);
  border-bottom: var(--fo-border-subtle);
}

.mode-tab {
  display: flex;
  align-items: center;
  gap: var(--fo-spacing-sm);
  padding: var(--fo-spacing-sm) var(--fo-spacing-md);
  background: transparent;
  border: none;
  color: var(--fo-text-muted);
  font-family: var(--fo-font-display);
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  border-radius: var(--fo-border-radius);
  transition: all var(--fo-transition-fast);
  position: relative;
}

.mode-tab:hover {
  color: var(--fo-text-secondary);
  background: var(--fo-bg-hover);
}

.mode-tab.active {
  color: var(--fo-text-primary);
  background: var(--fo-bg-card);
}

.mode-tab.active::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  right: 0;
  height: 2px;
  background: var(--fo-accent-blue);
  border-radius: 2px 2px 0 0;
}

.mode-tab-icon {
  font-size: 14px;
}

/* Mode-specific accent colors */
.mode-tab.mode-backtest.active { --fo-accent-active: var(--fo-accent-purple); }
.mode-tab.mode-paper.active { --fo-accent-active: var(--fo-accent-amber); }
.mode-tab.mode-live.active { --fo-accent-active: var(--fo-accent-cyan); }

.mode-tab.active::after {
  background: var(--fo-accent-active, var(--fo-accent-blue));
}

/* ============================================================================
   VIEW TABS (Sub-navigation)
   ============================================================================ */

.view-tabs {
  display: flex;
  gap: 4px;
  padding: var(--fo-spacing-xs) var(--fo-spacing-md);
  background: var(--fo-bg-tertiary);
  border-bottom: var(--fo-border-subtle);
}

.view-tab {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  background: transparent;
  border: none;
  color: var(--fo-text-muted);
  font-family: var(--fo-font-display);
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
  border-radius: var(--fo-border-radius);
  transition: all var(--fo-transition-fast);
}

.view-tab:hover {
  color: var(--fo-text-secondary);
  background: var(--fo-bg-hover);
}

.view-tab.active {
  color: var(--fo-text-primary);
  background: var(--fo-bg-card);
}

.tab-icon { font-size: 12px; }
.tab-label { letter-spacing: 0.02em; }

.tab-badge {
  padding: 1px 6px;
  background: var(--fo-accent-blue-dim);
  color: var(--fo-accent-blue);
  font-size: 10px;
  font-weight: 600;
  border-radius: 10px;
  min-width: 18px;
  text-align: center;
}

/* ============================================================================
   VIEW CONTENT
   ============================================================================ */

.view-content {
  flex: 1;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

/* ============================================================================
   BACKTEST VIEW - Results Browser
   ============================================================================ */

.backtest-view {
  display: flex;
  flex-direction: column;
  height: 100%;
}

.results-subview {
  display: flex;
  flex: 1;
  gap: 1px;
  background: rgba(0, 0, 0, 0.3);
  overflow: hidden;
}

.results-list-panel {
  width: 320px;
  min-width: 280px;
  display: flex;
  flex-direction: column;
  background: var(--fo-bg-secondary);
}

.result-detail-panel {
  flex: 1;
  display: flex;
  flex-direction: column;
  background: var(--fo-bg-primary);
  overflow-y: auto;
}

.fo-section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--fo-spacing-md);
  border-bottom: var(--fo-border-subtle);
}

.fo-section-header h3 {
  margin: 0;
  font-size: 14px;
  font-weight: 600;
  color: var(--fo-text-primary);
}

.results-list {
  flex: 1;
  overflow-y: auto;
  padding: var(--fo-spacing-sm);
}

.result-item {
  padding: var(--fo-spacing-sm) var(--fo-spacing-md);
  margin-bottom: 4px;
  background: var(--fo-bg-card);
  border-radius: var(--fo-border-radius);
  cursor: pointer;
  transition: all var(--fo-transition-fast);
  border: 1px solid transparent;
}

.result-item:hover {
  background: var(--fo-bg-elevated);
}

.result-item.selected {
  background: var(--fo-bg-elevated);
  border-color: var(--fo-accent-blue);
  box-shadow: inset 3px 0 0 var(--fo-accent-blue);
}

.result-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 6px;
}

.result-name {
  font-weight: 500;
  color: var(--fo-text-primary);
  font-size: 13px;
}

.result-date {
  color: var(--fo-text-muted);
  font-size: 11px;
  font-family: var(--fo-font-mono);
}

.result-metrics {
  display: flex;
  gap: 12px;
  font-size: 12px;
}

.result-return {
  font-family: var(--fo-font-mono);
  font-weight: 600;
}

.result-return.positive { color: var(--fo-accent-green); }
.result-return.negative { color: var(--fo-accent-red); }

.result-sharpe,
.result-trades {
  color: var(--fo-text-muted);
}

/* ============================================================================
   METRICS GRID
   ============================================================================ */

.metrics-section {
  padding: var(--fo-spacing-md);
  border-bottom: var(--fo-border-subtle);
}

.metrics-section h4 {
  margin: 0 0 var(--fo-spacing-sm) 0;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--fo-text-muted);
}

.metrics-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: var(--fo-spacing-sm);
}

.metric-card {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: var(--fo-spacing-sm) var(--fo-spacing-md);
  background: var(--fo-bg-card);
  border-radius: var(--fo-border-radius);
  border: var(--fo-border-subtle);
}

.metric-label {
  font-size: 10px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--fo-text-muted);
}

.metric-value {
  font-size: 18px;
  font-weight: 600;
  font-family: var(--fo-font-mono);
  color: var(--fo-text-primary);
}

.metric-value.positive { color: var(--fo-accent-green); }
.metric-value.negative { color: var(--fo-accent-red); }

/* ============================================================================
   GPU CANVAS CONTAINER
   ============================================================================ */

.viz-section {
  padding: var(--fo-spacing-md);
  border-bottom: var(--fo-border-subtle);
}

.viz-section h4 {
  margin: 0 0 var(--fo-spacing-sm) 0;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--fo-text-muted);
}

.gpu-canvas {
  position: relative;
  background: var(--fo-bg-secondary);
  border-radius: var(--fo-border-radius);
  overflow: hidden;
  border: var(--fo-border-subtle);
}

.gpu-canvas canvas {
  display: block;
  width: 100%;
  height: auto;
}

.canvas-overlay {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(10, 11, 15, 0.8);
  color: var(--fo-text-muted);
  font-size: 12px;
  pointer-events: none;
}

/* ============================================================================
   REGIME TIMELINE
   ============================================================================ */

.regime-canvas {
  background: var(--fo-bg-card);
  border-radius: var(--fo-border-radius);
  padding: var(--fo-spacing-md);
}

.regime-bar {
  display: flex;
  height: 24px;
  border-radius: 4px;
  overflow: hidden;
  margin-bottom: var(--fo-spacing-sm);
}

.regime-segment {
  transition: width var(--fo-transition-slow);
}

.regime-segment.stable { background: var(--fo-regime-stable); }
.regime-segment.transition { background: var(--fo-regime-transition); }
.regime-segment.vacuum { background: var(--fo-regime-vacuum); }
.regime-segment.chaos { background: var(--fo-regime-chaos); }

.regime-legend {
  display: flex;
  gap: var(--fo-spacing-lg);
  justify-content: center;
}

.legend-item {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  color: var(--fo-text-secondary);
}

.legend-item .dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
}

.dot.stable { background: var(--fo-regime-stable); }
.dot.transition { background: var(--fo-regime-transition); }
.dot.vacuum { background: var(--fo-regime-vacuum); }
.dot.chaos { background: var(--fo-regime-chaos); }

/* ============================================================================
   JOB CARDS
   ============================================================================ */

.jobs-subview {
  padding: var(--fo-spacing-md);
}

.job-list {
  display: flex;
  flex-direction: column;
  gap: var(--fo-spacing-sm);
}

.job-card {
  padding: var(--fo-spacing-md);
  background: var(--fo-bg-card);
  border-radius: var(--fo-border-radius);
  border: var(--fo-border-subtle);
  transition: all var(--fo-transition-fast);
}

.job-card.active {
  border-color: var(--fo-accent-blue);
  box-shadow: var(--fo-shadow-glow-blue);
}

.job-card.running {
  border-left: 3px solid var(--fo-accent-blue);
}

.job-card.completed {
  border-left: 3px solid var(--fo-accent-green);
  opacity: 0.8;
}

.job-card.failed {
  border-left: 3px solid var(--fo-accent-red);
}

.job-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--fo-spacing-sm);
}

.job-type {
  font-weight: 600;
  color: var(--fo-text-primary);
}

.job-id {
  font-family: var(--fo-font-mono);
  font-size: 11px;
  color: var(--fo-text-muted);
}

.job-status {
  display: flex;
  align-items: center;
  gap: var(--fo-spacing-sm);
  margin-bottom: var(--fo-spacing-sm);
}

.status-badge {
  font-size: 14px;
}

.job-stage {
  font-size: 12px;
  color: var(--fo-text-secondary);
  background: var(--fo-bg-tertiary);
  padding: 2px 8px;
  border-radius: 4px;
}

.job-progress {
  margin-bottom: var(--fo-spacing-sm);
}

.progress-bar {
  height: 6px;
  background: var(--fo-bg-tertiary);
  border-radius: 3px;
  overflow: hidden;
  margin-bottom: 4px;
}

.progress-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--fo-accent-blue), var(--fo-accent-cyan));
  border-radius: 3px;
  transition: width var(--fo-transition-slow);
  animation: progress-pulse 2s ease-in-out infinite;
}

@keyframes progress-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.7; }
}

.progress-text {
  display: flex;
  justify-content: space-between;
  font-size: 11px;
  color: var(--fo-text-muted);
  font-family: var(--fo-font-mono);
}

.eta {
  color: var(--fo-text-dim);
}

.job-error {
  display: flex;
  align-items: center;
  gap: var(--fo-spacing-sm);
  padding: var(--fo-spacing-sm);
  background: var(--fo-accent-red-dim);
  border-radius: var(--fo-border-radius);
  color: var(--fo-accent-red);
  font-size: 12px;
}

.job-actions {
  display: flex;
  gap: var(--fo-spacing-sm);
  margin-top: var(--fo-spacing-sm);
}

/* ============================================================================
   PAPER/LIVE VIEW - Control Bar
   ============================================================================ */

.control-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--fo-spacing-sm) var(--fo-spacing-md);
  background: var(--fo-bg-secondary);
  border-bottom: var(--fo-border-subtle);
}

.session-info {
  display: flex;
  align-items: center;
  gap: var(--fo-spacing-md);
}

.session-status {
  padding: 4px 10px;
  background: var(--fo-accent-green-dim);
  color: var(--fo-accent-green);
  font-weight: 600;
  font-size: 12px;
  border-radius: 4px;
  font-family: var(--fo-font-mono);
}

.session-time {
  color: var(--fo-text-muted);
  font-size: 12px;
}

.control-actions {
  display: flex;
  gap: var(--fo-spacing-sm);
}

/* ============================================================================
   PAPER DASHBOARD
   ============================================================================ */

.paper-dashboard {
  padding: var(--fo-spacing-md);
}

.summary-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: var(--fo-spacing-sm);
  margin-bottom: var(--fo-spacing-lg);
}

.summary-card {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: var(--fo-spacing-md);
  background: var(--fo-bg-card);
  border-radius: var(--fo-border-radius);
  border: var(--fo-border-subtle);
}

.summary-card.large {
  grid-column: span 2;
}

.summary-card .card-label {
  font-size: 10px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--fo-text-muted);
}

.summary-card .card-value {
  font-size: 22px;
  font-weight: 700;
  font-family: var(--fo-font-mono);
  color: var(--fo-text-primary);
}

.summary-card .card-value.positive { color: var(--fo-accent-green); }
.summary-card .card-value.negative { color: var(--fo-accent-red); }

.regime-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 14px !important;
  font-weight: 600 !important;
  color: white !important;
}

.dashboard-section {
  background: var(--fo-bg-card);
  border-radius: var(--fo-border-radius);
  border: var(--fo-border-subtle);
  margin-bottom: var(--fo-spacing-md);
  overflow: hidden;
}

.section-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--fo-spacing-sm) var(--fo-spacing-md);
  background: var(--fo-bg-tertiary);
  border-bottom: var(--fo-border-subtle);
}

.section-header h4 {
  margin: 0;
  font-size: 12px;
  font-weight: 600;
  color: var(--fo-text-primary);
}

.section-count {
  padding: 2px 8px;
  background: var(--fo-bg-elevated);
  color: var(--fo-text-muted);
  font-size: 11px;
  border-radius: 10px;
  font-family: var(--fo-font-mono);
}

.positions-preview {
  padding: var(--fo-spacing-sm);
}

.position-preview-item {
  display: flex;
  align-items: center;
  gap: var(--fo-spacing-md);
  padding: var(--fo-spacing-xs) var(--fo-spacing-sm);
  border-radius: 4px;
  transition: background var(--fo-transition-fast);
}

.position-preview-item:hover {
  background: var(--fo-bg-hover);
}

.pos-symbol {
  font-weight: 600;
  color: var(--fo-text-primary);
  width: 60px;
}

.pos-dir {
  width: 20px;
  text-align: center;
}

.pos-pnl {
  font-family: var(--fo-font-mono);
  font-weight: 500;
}

.pos-pnl.positive { color: var(--fo-accent-green); }
.pos-pnl.negative { color: var(--fo-accent-red); }

.mini-chart {
  padding: var(--fo-spacing-md);
  min-height: 100px;
}

.chart-placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  color: var(--fo-text-muted);
  font-size: 12px;
}

/* ============================================================================
   POSITIONS TABLE
   ============================================================================ */

.positions-table-container {
  padding: var(--fo-spacing-md);
  overflow-x: auto;
}

.positions-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}

.positions-table thead {
  position: sticky;
  top: 0;
  background: var(--fo-bg-tertiary);
}

.positions-table th {
  padding: var(--fo-spacing-sm) var(--fo-spacing-md);
  text-align: left;
  font-size: 10px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--fo-text-muted);
  border-bottom: var(--fo-border-subtle);
}

.positions-table td {
  padding: var(--fo-spacing-sm) var(--fo-spacing-md);
  border-bottom: var(--fo-border-subtle);
  color: var(--fo-text-secondary);
}

.positions-table tr:hover td {
  background: var(--fo-bg-hover);
}

.cell-symbol {
  font-weight: 600;
  color: var(--fo-text-primary);
}

.cell-price,
.cell-size {
  font-family: var(--fo-font-mono);
}

.cell-pnl,
.cell-mfe,
.cell-mae {
  font-family: var(--fo-font-mono);
  font-weight: 500;
}

.cell-pnl.positive,
.cell-mfe.positive { color: var(--fo-accent-green); }
.cell-pnl.negative,
.cell-mae.negative { color: var(--fo-accent-red); }

.cell-hold {
  color: var(--fo-text-muted);
  font-family: var(--fo-font-mono);
}

/* ============================================================================
   SIGNAL FEED
   ============================================================================ */

.signal-feed-container {
  padding: var(--fo-spacing-md);
}

.signal-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.signal-item {
  display: flex;
  align-items: center;
  gap: var(--fo-spacing-md);
  padding: var(--fo-spacing-sm) var(--fo-spacing-md);
  background: var(--fo-bg-card);
  border-radius: var(--fo-border-radius);
  font-size: 12px;
  border-left: 3px solid transparent;
}

.signal-item.accepted {
  border-left-color: var(--fo-accent-green);
}

.signal-item.rejected {
  opacity: 0.6;
  border-left-color: var(--fo-text-dim);
}

.signal-time {
  font-family: var(--fo-font-mono);
  font-size: 11px;
  color: var(--fo-text-muted);
  min-width: 60px;
}

.signal-symbol {
  font-weight: 600;
  color: var(--fo-text-primary);
  min-width: 50px;
}

.signal-dir {
  min-width: 20px;
  text-align: center;
}

.signal-score {
  font-family: var(--fo-font-mono);
  color: var(--fo-accent-blue);
  min-width: 40px;
}

.signal-action {
  font-size: 11px;
  padding: 2px 8px;
  background: var(--fo-bg-tertiary);
  border-radius: 4px;
  color: var(--fo-text-muted);
}

.signal-reason {
  color: var(--fo-text-dim);
  font-size: 11px;
  flex: 1;
  text-align: right;
}

/* ============================================================================
   LIVE VIEW - Kill Switch
   ============================================================================ */

.live-view {
  display: flex;
  flex-direction: column;
  height: 100%;
}

.kill-switch-container {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--fo-spacing-sm) var(--fo-spacing-md);
  background: linear-gradient(135deg, #1a1a2e, #16213e);
  border-bottom: 2px solid color-mix(in srgb, var(--status-error) 30%, transparent);
}

.kill-switch-btn {
  display: flex;
  align-items: center;
  gap: var(--fo-spacing-sm);
  padding: var(--fo-spacing-sm) var(--fo-spacing-lg);
  background: linear-gradient(135deg, #dc2626, #b91c1c);
  border: 2px solid #ef4444;
  border-radius: var(--fo-border-radius);
  color: white;
  font-family: var(--fo-font-display);
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  box-shadow: 
    var(--fo-shadow-glow-red),
    inset 0 1px 0 rgba(255, 255, 255, 0.2);
  transition: all var(--fo-transition-fast);
}

.kill-switch-btn:hover {
  transform: scale(1.02);
  box-shadow: 
    0 0 30px color-mix(in srgb, var(--status-error) 50%, transparent),
    inset 0 1px 0 rgba(255, 255, 255, 0.2);
}

.kill-switch-btn:active {
  transform: scale(0.98);
}

.kill-icon {
  font-size: 18px;
}

.broker-status {
  display: flex;
  align-items: center;
  gap: var(--fo-spacing-sm);
}

.broker-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  animation: broker-pulse 2s ease-in-out infinite;
}

.broker-dot.connected {
  background: var(--fo-accent-green);
  box-shadow: 0 0 10px var(--fo-accent-green);
}

.broker-dot.disconnected {
  background: var(--fo-accent-red);
  box-shadow: 0 0 10px var(--fo-accent-red);
  animation: broker-alert 0.5s ease-in-out infinite;
}

@keyframes broker-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.6; }
}

@keyframes broker-alert {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.2); }
}

.broker-label {
  font-size: 12px;
  font-weight: 500;
  color: var(--fo-text-secondary);
}

/* Alerts */
.alerts-container {
  padding: var(--fo-spacing-sm) var(--fo-spacing-md);
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.alert-item {
  display: flex;
  align-items: center;
  gap: var(--fo-spacing-sm);
  padding: var(--fo-spacing-sm) var(--fo-spacing-md);
  border-radius: var(--fo-border-radius);
  font-size: 12px;
}

.alert-item.critical {
  background: var(--fo-accent-red-dim);
  border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
  color: var(--fo-accent-red);
}

.alert-item.warning {
  background: var(--fo-accent-amber-dim);
  border: 1px solid color-mix(in srgb, var(--status-warning) 30%, transparent);
  color: var(--fo-accent-amber);
}

.alert-item.info {
  background: var(--fo-accent-blue-dim);
  border: 1px solid rgba(59, 130, 246, 0.3);
  color: var(--fo-accent-blue);
}

.alert-message {
  flex: 1;
}

.alert-dismiss {
  background: none;
  border: none;
  color: inherit;
  cursor: pointer;
  opacity: 0.6;
  font-size: 16px;
  padding: 0;
}

.alert-dismiss:hover {
  opacity: 1;
}

/* Live content layout */
.live-content {
  display: flex;
  flex: 1;
  gap: 1px;
  background: rgba(0, 0, 0, 0.3);
  overflow: hidden;
}

.live-left-panel {
  flex: 2;
  overflow-y: auto;
  background: var(--fo-bg-primary);
}

.live-right-panel {
  flex: 1;
  min-width: 320px;
  display: flex;
  flex-direction: column;
  background: var(--fo-bg-secondary);
  overflow-y: auto;
}

/* Order Book */
.order-book-section,
.sync-section,
.risk-section {
  border-bottom: var(--fo-border-subtle);
}

.order-list {
  padding: var(--fo-spacing-sm);
}

.order-item {
  display: flex;
  align-items: center;
  gap: var(--fo-spacing-sm);
  padding: var(--fo-spacing-xs) var(--fo-spacing-sm);
  font-size: 12px;
}

.order-side {
  font-weight: 600;
  width: 40px;
}

.order-symbol {
  font-weight: 500;
  color: var(--fo-text-primary);
  width: 50px;
}

.order-qty {
  font-family: var(--fo-font-mono);
  width: 60px;
}

.order-type,
.order-status {
  color: var(--fo-text-muted);
  font-size: 11px;
}

/* Sync Status */
.sync-status {
  font-size: 11px;
  font-weight: 500;
}

.sync-status.good { color: var(--fo-accent-green); }
.sync-status.warning { color: var(--fo-accent-amber); }
.sync-status.error { color: var(--fo-accent-red); }

.sync-details {
  padding: var(--fo-spacing-md);
}

.sync-row {
  display: flex;
  justify-content: space-between;
  font-size: 12px;
  color: var(--fo-text-secondary);
  padding: var(--fo-spacing-xs) 0;
}

/* Risk Meters */
.risk-meters {
  padding: var(--fo-spacing-md);
  display: flex;
  flex-direction: column;
  gap: var(--fo-spacing-md);
}

.risk-meter {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.meter-label {
  font-size: 11px;
  color: var(--fo-text-muted);
}

.meter-bar {
  height: 8px;
  background: var(--fo-bg-tertiary);
  border-radius: 4px;
  overflow: hidden;
}

.meter-fill {
  height: 100%;
  background: var(--fo-accent-blue);
  border-radius: 4px;
  transition: width var(--fo-transition-normal);
}

.meter-bar.warning .meter-fill {
  background: var(--fo-accent-amber);
}

.meter-bar.danger .meter-fill {
  background: var(--fo-accent-red);
}

.meter-value {
  font-size: 11px;
  font-family: var(--fo-font-mono);
  color: var(--fo-text-muted);
}

/* ============================================================================
   BUTTONS
   ============================================================================ */

.action-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  background: var(--fo-bg-card);
  border: var(--fo-border-subtle);
  border-radius: var(--fo-border-radius);
  color: var(--fo-text-secondary);
  font-family: var(--fo-font-display);
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
  transition: all var(--fo-transition-fast);
}

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

.action-btn.primary {
  background: var(--fo-accent-blue);
  border-color: var(--fo-accent-blue);
  color: white;
}

.action-btn.primary:hover {
  background: #2563eb;
}

.action-btn.danger {
  background: var(--fo-accent-red-dim);
  border-color: var(--fo-accent-red);
  color: var(--fo-accent-red);
}

.action-btn.danger:hover {
  background: var(--fo-accent-red);
  color: white;
}

.action-btn.warning {
  background: var(--fo-accent-amber-dim);
  border-color: var(--fo-accent-amber);
  color: var(--fo-accent-amber);
}

.action-btn.warning:hover {
  background: var(--fo-accent-amber);
  color: white;
}

/* ============================================================================
   EMPTY STATES
   ============================================================================ */

.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--fo-spacing-xl);
  text-align: center;
  color: var(--fo-text-muted);
}

.empty-state.large {
  min-height: 300px;
}

.empty-icon {
  font-size: 48px;
  margin-bottom: var(--fo-spacing-md);
  opacity: 0.5;
}

.empty-state h3 {
  margin: 0 0 var(--fo-spacing-sm);
  color: var(--fo-text-secondary);
  font-size: 16px;
}

.empty-state p {
  margin: 0;
  font-size: 13px;
}

.empty-state .hint {
  color: var(--fo-text-dim);
  font-size: 12px;
  margin-top: var(--fo-spacing-sm);
}

.empty-inline {
  padding: var(--fo-spacing-md);
  text-align: center;
  color: var(--fo-text-muted);
  font-size: 12px;
  font-style: italic;
}

/* ============================================================================
   LAYERS VIEW
   ============================================================================ */

.layers-subview {
  padding: var(--fo-spacing-md);
}

.layers-tree {
  display: flex;
  flex-direction: column;
  gap: var(--fo-spacing-sm);
}

.layer-group {
  background: var(--fo-bg-card);
  border-radius: var(--fo-border-radius);
  border: var(--fo-border-subtle);
  overflow: hidden;
}

.layer-group-header {
  display: flex;
  align-items: center;
  gap: var(--fo-spacing-sm);
  padding: var(--fo-spacing-sm) var(--fo-spacing-md);
  background: var(--fo-bg-tertiary);
  cursor: pointer;
}

.group-icon {
  font-size: 14px;
}

.group-name {
  font-weight: 600;
  font-size: 13px;
  color: var(--fo-text-primary);
}

.layer-items {
  padding: var(--fo-spacing-xs);
}

.layer-item {
  display: flex;
  align-items: center;
  gap: var(--fo-spacing-sm);
  padding: var(--fo-spacing-xs) var(--fo-spacing-md);
  border-radius: var(--fo-border-radius);
  font-size: 12px;
  cursor: pointer;
  transition: background var(--fo-transition-fast);
}

.layer-item:hover {
  background: var(--fo-bg-hover);
}

.layer-icon {
  font-size: 12px;
  opacity: 0.7;
}

.layer-name {
  flex: 1;
  font-family: var(--fo-font-mono);
  color: var(--fo-text-secondary);
}

.layer-size {
  color: var(--fo-text-muted);
  font-size: 11px;
}

/* ============================================================================
   SCROLLBARS
   ============================================================================ */

.factory-observer ::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

.factory-observer ::-webkit-scrollbar-track {
  background: var(--fo-bg-secondary);
}

.factory-observer ::-webkit-scrollbar-thumb {
  background: var(--fo-bg-elevated);
  border-radius: 4px;
}

.factory-observer ::-webkit-scrollbar-thumb:hover {
  background: var(--fo-bg-hover);
}

/* ============================================================================
   ANIMATIONS
   ============================================================================ */

@keyframes fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes slide-up {
  from { 
    opacity: 0;
    transform: translateY(10px);
  }
  to { 
    opacity: 1;
    transform: translateY(0);
  }
}

.result-item,
.job-card,
.signal-item {
  animation: slide-up 0.2s ease-out;
}

/* Staggered animation for lists */
.result-item:nth-child(1) { animation-delay: 0ms; }
.result-item:nth-child(2) { animation-delay: 30ms; }
.result-item:nth-child(3) { animation-delay: 60ms; }
.result-item:nth-child(4) { animation-delay: 90ms; }
.result-item:nth-child(5) { animation-delay: 120ms; }

/* ============================================================================
   RESPONSIVE
   ============================================================================ */

@media (max-width: 1200px) {
  .results-subview {
    flex-direction: column;
  }
  
  .results-list-panel {
    width: 100%;
    min-width: auto;
    max-height: 300px;
  }
  
  .live-content {
    flex-direction: column;
  }
  
  .live-right-panel {
    min-width: auto;
  }
}

@media (max-width: 768px) {
  .metrics-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  
  .summary-cards {
    grid-template-columns: repeat(2, 1fr);
  }
  
  .summary-card.large {
    grid-column: span 2;
  }
}

/* ============================================================================
   PANEL STRUCTURE
   ============================================================================ */

.factory-observer-panel {
  display: flex;
  flex-direction: column;
  height: 100%;
  background: var(--fo-bg-primary, #0a0b0f);
  color: var(--fo-text-primary, #e8eaf0);
  font-family: var(--fo-font-display, -apple-system, BlinkMacSystemFont, sans-serif);
}

.observer-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 16px;
  background: var(--fo-bg-secondary, #12141a);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.observer-title {
  display: flex;
  align-items: center;
  gap: 8px;
}

.observer-icon {
  font-size: 18px;
}

.observer-label {
  font-weight: 600;
  font-size: 14px;
}

.observer-mode-nav {
  display: flex;
  gap: 4px;
}

.observer-mode-btn {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 6px;
  color: var(--fo-text-muted, #6b7280);
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.15s ease-out;
}

.observer-mode-btn:hover {
  background: var(--fo-bg-hover, #2d3344);
  color: var(--fo-text-secondary, #9ca3af);
}

.observer-mode-btn.active {
  background: var(--fo-bg-card, #1e222d);
  border-color: var(--fo-accent-blue, #3b82f6);
  color: var(--fo-text-primary, #e8eaf0);
}

.observer-mode-btn.live-mode.active {
  border-color: var(--fo-accent-cyan, #06b6d4);
  box-shadow: 0 0 12px rgba(6, 182, 212, 0.3);
}

.mode-icon {
  font-size: 12px;
}

.mode-label {
  font-size: 12px;
}

/* Observer Content */
.observer-content {
  flex: 1;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

/* Status Bar */
.observer-status-bar {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 6px 16px;
  background: var(--fo-bg-secondary, #12141a);
  border-top: 1px solid rgba(255, 255, 255, 0.06);
  font-size: 11px;
}

.connection-indicator {
  display: flex;
  align-items: center;
  gap: 6px;
}

.status-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
}

.status-dot.connected {
  background: var(--fo-accent-green, #22c55e);
  box-shadow: 0 0 8px var(--fo-accent-green, #22c55e);
  animation: status-pulse 2s ease-in-out infinite;
}

.status-dot.connecting {
  background: var(--fo-accent-amber, #f59e0b);
  animation: status-blink 0.8s ease-in-out infinite;
}

.status-dot.disconnected {
  background: var(--fo-text-dim, #4b5563);
}

.status-dot.error {
  background: var(--fo-accent-red, #ef4444);
}

@keyframes status-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.6; }
}

@keyframes status-blink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.3; }
}

.status-text {
  font-family: var(--fo-font-mono, monospace);
  font-size: 10px;
  letter-spacing: 0.02em;
}

.status-text.connected { color: var(--fo-accent-green, #22c55e); }
.status-text.connecting { color: var(--fo-accent-amber, #f59e0b); }
.status-text.disconnected { color: var(--fo-text-muted, #6b7280); }
.status-text.error { color: var(--fo-accent-red, #ef4444); }

.observer-mode-label {
  color: var(--fo-text-muted, #6b7280);
  padding: 2px 8px;
  background: var(--fo-bg-card, #1e222d);
  border-radius: 4px;
  font-family: var(--fo-font-mono, monospace);
}

.observer-endpoint {
  color: var(--fo-text-dim, #4b5563);
  margin-left: auto;
  font-family: var(--fo-font-mono, monospace);
}

.connect-btn {
  padding: 4px 12px;
  background: var(--fo-accent-blue, #3b82f6);
  border: none;
  border-radius: 4px;
  color: white;
  font-size: 11px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.15s ease-out;
}

.connect-btn:hover {
  background: #2563eb;
  box-shadow: 0 0 12px rgba(59, 130, 246, 0.4);
}

/* Loading State */
.observer-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
  padding: 48px;
  color: var(--fo-text-muted, #6b7280);
}

.observer-spinner {
  width: 32px;
  height: 32px;
  border: 3px solid var(--fo-bg-card, #1e222d);
  border-top-color: var(--fo-accent-blue, #3b82f6);
  border-radius: 50%;
  animation: spin 1s linear infinite;
}

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

/* Tenant Warning */
.observer-tenant-warning {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px;
  margin: 16px;
  background: var(--fo-accent-amber-dim, color-mix(in srgb, var(--status-warning) 20%, transparent));
  border: 1px solid color-mix(in srgb, var(--status-warning) 30%, transparent);
  border-radius: 8px;
  color: var(--fo-accent-amber, #f59e0b);
  font-size: 13px;
}

.warning-icon {
  font-size: 20px;
}

/* ============================================================================
   PROVIDER HUB PANEL
   ============================================================================ */

.providers-panel {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    height: 100%;
    overflow-y: auto;
}

.providers-header {
    text-align: center;
    padding-bottom: var(--spacing-md);
    border-bottom: 1px solid color-mix(in srgb, var(--primary-blue) 20%, transparent);
}

.providers-title {
    font-family: 'Orbitron', sans-serif;
    font-size: 1.25rem;
    color: var(--text-primary);
    margin: 0 0 var(--spacing-xs);
}

.providers-subtitle {
    font-size: 0.85rem;
    color: var(--text-secondary);
    margin: 0 0 var(--spacing-md);
}

.providers-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.provider-card {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding: var(--spacing-lg);
    background: var(--card-bg);
    border: 1px solid color-mix(in srgb, var(--primary-blue) 30%, transparent);
    border-radius: var(--radius-md);
    transition: all var(--duration-normal) ease;
}

.provider-card:hover {
    border-color: var(--primary-blue);
    box-shadow: 0 0 20px var(--primary-blue-glow);
}

.provider-info {
    display: flex;
    gap: var(--spacing-md);
}

.provider-logo {
    width: 48px;
    height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, var(--primary-blue) 0%, var(--secondary-blue) 100%);
    border-radius: var(--radius-md);
    font-family: 'Orbitron', sans-serif;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--star-white);
    flex-shrink: 0;
}

.provider-details {
    flex: 1;
    min-width: 0;
}

.provider-name {
    font-family: 'Orbitron', sans-serif;
    font-size: 1rem;
    color: var(--text-primary);
    margin: 0 0 var(--spacing-xs);
}

.provider-description {
    font-size: 0.85rem;
    color: var(--text-secondary);
    margin: 0 0 var(--spacing-sm);
    line-height: 1.4;
}

.provider-capabilities {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-xs);
}

.capability-tag {
    display: inline-block;
    padding: 2px 8px;
    background: color-mix(in srgb, var(--primary-blue) 20%, transparent);
    border: 1px solid color-mix(in srgb, var(--primary-blue) 30%, transparent);
    border-radius: var(--radius-pill);
    font-size: 0.7rem;
    color: var(--text-accent);
    text-transform: capitalize;
}

.provider-status-section {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: var(--spacing-sm);
    border-top: 1px solid color-mix(in srgb, var(--primary-blue) 15%, transparent);
}

.provider-status {
    font-size: 0.85rem;
    font-weight: 500;
    padding: 4px 12px;
    border-radius: var(--radius-pill);
}

.provider-status.status-not-started,
.provider-status.status-disabled {
    color: var(--text-muted);
    background: rgba(96, 96, 112, 0.2);
}

.provider-status.status-pending {
    color: var(--status-warning);
    background: color-mix(in srgb, var(--accent-gold) 15%, transparent);
    border: 1px solid color-mix(in srgb, var(--accent-gold) 30%, transparent);
}

.provider-status.status-progress {
    color: var(--status-info);
    background: rgba(90, 143, 212, 0.15);
    border: 1px solid rgba(90, 143, 212, 0.3);
}

.provider-status.status-active {
    color: var(--status-success);
    background: rgba(0, 204, 106, 0.15);
    border: 1px solid rgba(0, 204, 106, 0.3);
}

.provider-status.status-error {
    color: var(--status-error);
    background: color-mix(in srgb, var(--status-error) 15%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
}

/* ADR-015: Provider verification lifecycle badges */
.provider-status.status-verified {
    color: var(--status-success);
    background: rgba(0, 204, 106, 0.15);
    border: 1px solid rgba(0, 204, 106, 0.3);
}

.provider-status.status-action-required {
    color: var(--status-warning);
    background: color-mix(in srgb, var(--accent-gold) 20%, transparent);
    border: 1px solid color-mix(in srgb, var(--accent-gold) 40%, transparent);
}

.provider-status.status-failed {
    color: var(--status-error);
    background: color-mix(in srgb, var(--status-error) 15%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
}

/* ============================================================================
   PROVIDER WIZARD OVERLAY
   ============================================================================ */

.wizard-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.8);
    backdrop-filter: blur(4px);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 2000;
    animation: fadeIn var(--duration-fast) ease;
}

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

.wizard-modal {
    width: 90%;
    max-width: 520px;
    max-height: 85vh;
    display: flex;
    flex-direction: column;
    background: var(--modal-bg);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-lg);
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5), var(--shadow-glow-blue);
    animation: slideUp var(--duration-normal) ease;
}

@keyframes slideUp {
    from { 
        opacity: 0;
        transform: translateY(20px);
    }
    to { 
        opacity: 1;
        transform: translateY(0);
    }
}

.wizard-modal .wizard-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-lg);
    border-bottom: 1px solid color-mix(in srgb, var(--primary-blue) 20%, transparent);
}

.wizard-modal .wizard-title {
    font-family: 'Orbitron', sans-serif;
    font-size: 1.1rem;
    color: var(--text-primary);
    margin: 0;
}

.wizard-modal .wizard-close {
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: var(--radius-sm);
    color: var(--text-muted);
    font-size: 1.25rem;
    cursor: pointer;
    transition: all var(--duration-fast) ease;
}

.wizard-modal .wizard-close:hover {
    color: var(--text-primary);
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--primary-blue) 20%, transparent);
}

.wizard-modal .wizard-progress {
    display: flex;
    justify-content: space-between;
    padding: var(--spacing-md) var(--spacing-lg);
    background: rgba(0, 0, 0, 0.2);
}

.wizard-modal .progress-step {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-xs);
    flex: 1;
    position: relative;
}

.wizard-modal .progress-step:not(:last-child)::after {
    content: '';
    position: absolute;
    top: 12px;
    left: calc(50% + 16px);
    right: calc(-50% + 16px);
    height: 2px;
    background: color-mix(in srgb, var(--primary-blue) 30%, transparent);
}

.wizard-modal .progress-step.complete:not(:last-child)::after {
    background: var(--status-success);
}

.wizard-modal .progress-step .step-number {
    width: 24px;
    height: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--primary-blue) 20%, transparent);
    border: 2px solid color-mix(in srgb, var(--primary-blue) 40%, transparent);
    border-radius: 50%;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--text-muted);
    z-index: 1;
    transition: all var(--duration-normal) ease;
}

.wizard-modal .progress-step.current .step-number {
    background: var(--primary-blue);
    border-color: var(--primary-blue);
    color: var(--star-white);
    box-shadow: 0 0 12px var(--primary-blue-glow);
}

.wizard-modal .progress-step.complete .step-number {
    background: var(--status-success);
    border-color: var(--status-success);
    color: var(--star-white);
}

.wizard-modal .progress-step .step-title {
    font-size: 0.7rem;
    color: var(--text-muted);
    text-align: center;
}

.wizard-modal .progress-step.current .step-title {
    color: var(--primary-blue);
}

.wizard-modal .progress-step.complete .step-title {
    color: var(--status-success);
}

.wizard-modal .wizard-content {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-lg);
}

.wizard-modal .wizard-step {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.wizard-modal .wizard-step h3 {
    font-family: 'Orbitron', sans-serif;
    font-size: 1rem;
    color: var(--text-primary);
    margin: 0;
}

.wizard-modal .step-intro {
    color: var(--text-secondary);
    font-size: 0.9rem;
    line-height: 1.5;
    margin: 0;
}

.wizard-modal .agreement-summary {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    background: rgba(0, 204, 106, 0.05);
    border: 1px solid rgba(0, 204, 106, 0.2);
    border-radius: var(--radius-md);
}

.wizard-modal .summary-item {
    display: flex;
    gap: var(--spacing-sm);
    font-size: 0.85rem;
    color: var(--text-secondary);
}

.wizard-modal .summary-item .check-icon {
    color: var(--status-success);
    flex-shrink: 0;
}

.wizard-modal .agreement-link {
    text-align: center;
}

.wizard-modal .agreement-link a,
.wizard-modal .link-primary {
    color: var(--primary-blue);
    text-decoration: none;
    font-size: 0.9rem;
    transition: color var(--duration-fast) ease;
}

.wizard-modal .agreement-link a:hover,
.wizard-modal .link-primary:hover {
    color: var(--text-accent);
    text-decoration: underline;
}

.wizard-modal .agreement-actions {
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--primary-blue) 10%, transparent);
    border-radius: var(--radius-md);
}

.wizard-modal .checkbox-label {
    display: flex;
    align-items: flex-start;
    gap: var(--spacing-sm);
    cursor: pointer;
    font-size: 0.9rem;
    color: var(--text-primary);
}

.wizard-modal .checkbox-label input[type="checkbox"] {
    width: 18px;
    height: 18px;
    margin-top: 2px;
    accent-color: var(--primary-blue);
    cursor: pointer;
}

.wizard-modal .kyc-requirements {
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--primary-blue) 10%, transparent);
    border-radius: var(--radius-md);
}

.wizard-modal .kyc-requirements h4 {
    font-size: 0.9rem;
    color: var(--text-primary);
    margin: 0 0 var(--spacing-sm);
}

.wizard-modal .kyc-requirements ul {
    margin: 0;
    padding-left: var(--spacing-lg);
    color: var(--text-secondary);
    font-size: 0.85rem;
    line-height: 1.6;
}

.wizard-modal .account-preview {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    background: var(--card-bg);
    border: 1px solid color-mix(in srgb, var(--primary-blue) 20%, transparent);
    border-radius: var(--radius-md);
}

.wizard-modal .preview-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.wizard-modal .preview-item .label {
    font-size: 0.85rem;
    color: var(--text-muted);
}

.wizard-modal .preview-item .value {
    font-size: 0.9rem;
    color: var(--text-primary);
    font-weight: 500;
}

.wizard-modal .preview-item .value.status-ready {
    color: var(--status-success);
}

.wizard-modal .wizard-buttons {
    display: flex;
    justify-content: flex-end;
    gap: var(--spacing-sm);
    padding-top: var(--spacing-md);
    border-top: 1px solid color-mix(in srgb, var(--primary-blue) 15%, transparent);
    margin-top: var(--spacing-md);
}

.wizard-modal .step-complete {
    text-align: center;
    padding: var(--spacing-xl) 0;
}

.wizard-modal .step-complete .success-icon {
    width: 64px;
    height: 64px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto var(--spacing-md);
    background: rgba(0, 204, 106, 0.15);
    border: 2px solid var(--status-success);
    border-radius: 50%;
    font-size: 2rem;
    color: var(--status-success);
    animation: scaleIn var(--duration-normal) ease;
}

@keyframes scaleIn {
    from { transform: scale(0.5); opacity: 0; }
    to { transform: scale(1); opacity: 1; }
}

/* Empty State */
.providers-panel .empty-state {
    text-align: center;
    padding: var(--spacing-xl);
    color: var(--text-muted);
    font-size: 0.9rem;
}

/* Alert Styles for Provider Panel */
.providers-panel .alert {
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    font-size: 0.85rem;
    margin-bottom: var(--spacing-md);
}

.providers-panel .alert-error {
    background: color-mix(in srgb, var(--status-error) 15%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    color: var(--status-error);
}

.wizard-modal .alert {
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    font-size: 0.85rem;
    margin-bottom: var(--spacing-md);
}

.wizard-modal .alert-error {
    background: color-mix(in srgb, var(--status-error) 15%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 30%, transparent);
    color: var(--status-error);
}

/* ============================================================================
   DATA VAULT PANEL - Quest/Badge/Inventory System
   ============================================================================ */

/* ============================================================================
   DATA VAULT PANEL — gamified financial-identity inventory
   ============================================================================
   Reframed 2026-04-21 to mirror the Home panel vocabulary: compact
   header (m0 mark + headline + tier chip), Active Entity context
   first, Quests as the primary work surface, Badges + Storage
   demoted to Collapsibles. Theme-token only — anthracite-and-platinum
   palette repaints cleanly.
*/

.vault-panel {
    /* `display: flex; flex-direction: column;` inherited from
       the global [class$="-panel"] rule.
       `overflow: hidden` from the canonical-bar override list
       above so the inner `.panel-scrollable` owns scroll and
       the `<PanelBar>` sits naturally pinned at the bottom of
       the flex column. */
    height: 100%;
    min-height: 0;
}

.vault-panel > .panel-scrollable {
    /* Move the panel's old root padding + gap onto the
       scrollable body so the visual rhythm is preserved while
       the chrome (header + bar) sits outside the scroll
       region. */
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
    padding: var(--spacing-lg);
}

/* ----- Compact header (m0 mark · headline · tier chip + xp meter) ----- */

.vault-header {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: var(--spacing-lg);
    padding: var(--spacing-md) 0 var(--spacing-md);
    border-bottom: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 25%, transparent);
}

.vault-mark {
    width: 48px;
    height: 48px;
    flex-shrink: 0;
    border-radius: var(--radius-md);
    overflow: hidden;
    position: relative;
    background-color: var(--dark-bg);
    background-image: url('/static/m0-logo.jpg');
    background-size: 175%;
    background-position: center 38%;
    background-repeat: no-repeat;
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 45%, transparent);
    box-shadow:
        0 4px 16px color-mix(in srgb, var(--anviz-accent-secondary) 25%, transparent),
        inset 0 1px 0 color-mix(in srgb, var(--patriot-white) 12%, transparent);
}

.vault-mark-letter {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'Orbitron', monospace;
    font-size: 1.5rem;
    font-weight: 900;
    color: transparent;
}

.vault-header-text {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    min-width: 0;
}

.vault-eyebrow {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--anviz-accent-primary);
}

.vault-headline {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 1rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: var(--patriot-white);
}

/* XP meter — compact column on the right of the header. The status
   chip is the rank (Newcomer/Verified/Established/Institutional);
   the count is the raw XP; the track is a thin progress bar that
   uses the brand blue→gold gradient (electric → engaged) so the
   gamification thread continues the metals/electrics narrative. */
.vault-xp-meter {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    min-width: 180px;
}

.vault-xp-meter-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-sm);
}

.vault-xp-count {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-secondary);
}

.vault-xp-track {
    height: 4px;
    background: color-mix(in srgb, var(--anviz-accent-secondary) 12%, transparent);
    border-radius: var(--radius-pill);
    overflow: hidden;
}

.vault-xp-fill {
    height: 100%;
    background: linear-gradient(
        90deg,
        var(--anviz-accent-secondary) 0%,
        var(--anviz-accent-primary) 100%
    );
    border-radius: var(--radius-pill);
    transition: width 0.5s ease;
    box-shadow: 0 0 8px color-mix(in srgb, var(--anviz-accent-primary) 50%, transparent);
}

/* ----- Restore-error surface (orthogonal to empty-state banner) ------ */

.vault-restore-error {
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--status-error) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 35%, transparent);
    border-radius: var(--radius-sm);
    color: var(--status-error);
    font-size: 0.82rem;
    line-height: 1.4;
}

/* ----- Empty-state banner (when vault has zero data) ----- */

.vault-empty-banner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-lg);
    padding: var(--spacing-lg);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 8%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 35%, transparent);
    border-radius: var(--radius-md);
}

.vault-empty-banner-body {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    flex: 1;
    min-width: 0;
}

.vault-empty-banner-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.92rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: var(--patriot-white);
}

.vault-empty-banner-desc {
    margin: 0;
    font-size: 0.82rem;
    line-height: 1.5;
    color: var(--text-secondary);
    max-width: 56ch;
}

/* ----- Footer (ghost link parity with home-footer) ----- */

.vault-footer {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-md);
    border-top: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 20%, transparent);
}

/* ----- Quest grouping (Personal vs Entity subjects) -----
   The Quests section interleaves group-header rows between batches
   of quest cards so the user reads the IA: Personal data is about
   them (universal); Entity data is about the active business
   entity (changes when entity selection changes). The headers use
   a thin top border + Orbitron eyebrow + reactive subtitle so they
   read as section dividers, not full sub-headers. */

.quest-group-header {
    display: flex;
    align-items: baseline;
    gap: var(--spacing-md);
    padding: var(--spacing-sm) 0 var(--spacing-xs);
    border-top: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 18%, transparent);
}

.quest-group-header:first-child {
    border-top: none;
    padding-top: 0;
}

.quest-group-title {
    font-family: 'Orbitron', monospace;
    font-size: 0.74rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--anviz-accent-primary);
}

.quest-group-subtitle {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.74rem;
    color: var(--text-muted);
}

/* Business-group subtitle composes a small accent-tinted chip
   echoing the selected-entity card's gold treatment, so the
   visual link is immediate: the entity that's lit up gold above
   appears as a lit-up gold chip in the subtitle. The chip is
   reactive to the entity selector — switching entities updates
   the chip name without a section re-render. */

.quest-group-subtitle-row {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-xs);
    flex-wrap: wrap;
}

.quest-group-entity-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 1px var(--spacing-xs);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-accent-primary) 14%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-primary) 45%, transparent);
}

.quest-group-entity-chip-dot {
    color: var(--anviz-accent-primary);
    font-size: 0.55rem;
    line-height: 1;
}

.quest-group-entity-chip-name {
    font-family: 'Orbitron', monospace;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: var(--anviz-accent-primary);
}

/* Spatial scope hint: Business quest cards get a subtle gold
   left-edge that visually "hangs" from the selected entity card
   above, reinforcing "all this stuff is data about that entity."
   Personal cards stay un-marked so the difference is legible. */
.quest-card[data-subject="entity"] {
    border-left: 2px solid color-mix(in srgb, var(--anviz-accent-primary) 50%, transparent);
}

.quest-card[data-subject="entity"].quest-locked {
    border-left-color: color-mix(in srgb, var(--text-muted) 40%, transparent);
}

/* ----- Sections (reuse home-row rhythm) ----- */

.vault-section {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.vault-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
}

.vault-section-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--patriot-white);
}

.vault-section-meta {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.74rem;
    letter-spacing: 0.04em;
    color: var(--text-muted);
}

/* Storage section — vault provider list + planned-scope affordance.
   Default state today (single Monetic-hosted provider, disabled +Add)
   matches the surface the SDK will eventually drive. The chrome stays
   subdued so the existing entity / quest content remains the primary
   surface; storage is a "set it and (mostly) forget it" concern. */
.vault-storage-section {
    /* Inherits vault-section base; no override needed today. */
}

.vault-storage-summary {
    margin: 0;
    font-size: 0.82rem;
    color: var(--text-muted);
    line-height: 1.5;
}

.vault-provider-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.vault-provider-row {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 20%, transparent);
}

/* Subtle accent on the default-provider row so the user understands
   "this is what's holding your vault right now" without it being
   loud. */
.vault-provider-row--default {
    border-color: color-mix(in srgb, var(--anviz-accent-secondary) 40%, transparent);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 4%, transparent);
}

.vault-provider-primary {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.vault-provider-name {
    font-family: 'Orbitron', monospace;
    font-size: 0.86rem;
    font-weight: 700;
    color: var(--patriot-white);
}

.vault-provider-kind {
    font-size: 0.74rem;
    color: var(--text-secondary);
}

.vault-provider-tag {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.66rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 2px var(--spacing-xs);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--text-muted) 14%, transparent);
    color: var(--text-secondary);
}

.vault-provider-tag--active {
    background: color-mix(in srgb, var(--status-active) 18%, transparent);
    color: var(--status-active);
}

.vault-provider-meta {
    font-size: 0.78rem;
    color: var(--text-muted);
    line-height: 1.4;
}

/* Disabled "+ Add provider" affordance. Same dashed-border treatment
   we use for other "coming soon" / placeholder triggers across the
   IA (Home row stubs, principal-management add-member trigger) so
   the visual vocabulary is consistent. */
.vault-storage-add-trigger {
    appearance: none;
    align-self: flex-start;
    border: 1px dashed
        color-mix(in srgb, var(--anviz-accent-secondary) 40%, transparent);
    background: transparent;
    color: var(--text-secondary);
    font: inherit;
    font-size: 0.78rem;
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-sm);
    cursor: not-allowed;
    opacity: 0.6;
}

/* Bare-h3 fallback for legacy `vault-section` consumers that haven't
   migrated to `vault-section-header` + `vault-section-title` yet. */
.vault-section > h3 {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--patriot-white);
}

/* ----- Badges grid (rendered inside the Earned-badges Collapsible) -- */

.badges-grid {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-sm);
}

.badge-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-xs);
    padding: var(--spacing-md);
    min-width: 96px;
    background: color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 20%, transparent);
    border-radius: var(--radius-md);
    transition:
        border-color var(--duration-fast),
        background var(--duration-fast),
        box-shadow var(--duration-fast);
}

.badge-card.earned {
    border-color: color-mix(in srgb, var(--anviz-accent-primary) 50%, transparent);
    background: linear-gradient(
        135deg,
        color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent) 0%,
        color-mix(in srgb, var(--anviz-accent-primary) 8%, transparent) 100%
    );
    box-shadow: 0 0 16px color-mix(in srgb, var(--anviz-accent-primary) 18%, transparent);
}

.badge-card.upcoming {
    opacity: 0.6;
}

.badge-card.in-progress {
    opacity: 0.85;
    border-color: color-mix(in srgb, var(--anviz-accent-secondary) 45%, transparent);
}

.badge-icon {
    font-size: 1.8rem;
    line-height: 1;
}

.badge-icon.dimmed {
    filter: grayscale(1);
}

.badge-name {
    font-family: 'Orbitron', monospace;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    color: var(--text-secondary);
    text-align: center;
}

.badge-xp {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--anviz-accent-primary);
}

.badge-progress {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--anviz-accent-secondary);
}

.badge-locked {
    font-size: 0.78rem;
    color: var(--text-muted);
}

/* Quest Cards */
.quests-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.quest-card {
    background: var(--card-bg);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: var(--radius-md);
    overflow: hidden;
    transition: all 0.2s ease;
}

.quest-card.quest-in-progress {
    border-color: var(--primary-blue);
}

.quest-card.quest-complete {
    border-color: var(--status-success);
}

.quest-card.quest-locked {
    opacity: 0.5;
}

.quest-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    cursor: pointer;
}

.quest-header:hover {
    background: rgba(255, 255, 255, 0.02);
}

.quest-icon {
    font-size: 1.5rem;
}

.quest-info {
    flex: 1;
}

.quest-name {
    font-weight: 600;
    color: var(--patriot-white);
    margin-bottom: 2px;
}

.quest-description {
    font-size: 0.8rem;
    color: var(--text-muted);
}

/* Progress Ring */
.quest-progress-ring {
    position: relative;
    width: 40px;
    height: 40px;
}

.quest-progress-ring svg {
    width: 100%;
    height: 100%;
    transform: rotate(-90deg);
}

.quest-progress-ring .progress-bg {
    fill: none;
    stroke: rgba(255, 255, 255, 0.1);
    stroke-width: 3;
}

.quest-progress-ring .progress-fill {
    fill: none;
    stroke: var(--primary-blue);
    stroke-width: 3;
    stroke-linecap: round;
    stroke-dashoffset: 0;
    transition: stroke-dasharray 0.5s ease;
}

.quest-card.quest-complete .quest-progress-ring .progress-fill {
    stroke: var(--status-success);
}

.quest-progress-ring .progress-text {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 0.6rem;
    font-weight: 600;
    color: var(--text-secondary);
}

.quest-xp {
    font-size: 0.75rem;
    color: var(--accent-gold);
    font-weight: 600;
    white-space: nowrap;
}

/* Quest Details */
.quest-details {
    padding: var(--spacing-md);
    background: rgba(0, 0, 0, 0.2);
    border-top: 1px solid rgba(255, 255, 255, 0.05);
}

.quest-details h4 {
    margin: 0 0 var(--spacing-sm);
    font-size: 0.75rem;
    color: var(--text-muted);
    text-transform: uppercase;
}

.requirements-list {
    margin-bottom: var(--spacing-md);
}

.requirement-item {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-xs) 0;
    font-size: 0.85rem;
}

.requirement-item .req-status {
    color: var(--text-muted);
}

.requirement-item.satisfied .req-status {
    color: var(--status-success);
}

.requirement-item .req-name {
    flex: 1;
    color: var(--text-secondary);
}

.requirement-item.satisfied .req-name {
    color: var(--patriot-white);
}

.btn-add-item {
    padding: 2px 8px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-sm);
    color: var(--primary-blue);
    font-size: 0.7rem;
    cursor: pointer;
}

.btn-add-item:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.capabilities-preview .capability-tags {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-xs);
}

.capability-tag {
    padding: 2px 8px;
    background: color-mix(in srgb, var(--accent-gold) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--accent-gold) 30%, transparent);
    border-radius: var(--radius-sm);
    font-size: 0.7rem;
    color: var(--accent-gold);
}

/* Inventory Grid */
.inventory-grid {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.inventory-category {
    background: var(--card-bg);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: var(--radius-md);
    overflow: hidden;
}

.inventory-category.expanded {
    border-color: var(--primary-blue);
}

.category-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    cursor: pointer;
}

.category-header:hover {
    background: rgba(255, 255, 255, 0.02);
}

.category-icon {
    font-size: 1.5rem;
}

.category-info {
    flex: 1;
}

.category-name {
    font-weight: 600;
    color: var(--patriot-white);
}

.category-count {
    font-size: 0.8rem;
    color: var(--text-muted);
}

.category-progress {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    min-width: 120px;
}

.category-progress .progress-bar {
    flex: 1;
    height: 6px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: var(--radius-full);
    overflow: hidden;
}

.category-progress .progress-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--primary-blue), var(--status-success));
    border-radius: var(--radius-full);
    transition: width 0.3s ease;
}

.category-progress .progress-text {
    font-size: 0.75rem;
    color: var(--text-secondary);
    min-width: 35px;
    text-align: right;
}

/* Category Items */
.category-items {
    padding: var(--spacing-sm) var(--spacing-md) var(--spacing-md);
    background: rgba(0, 0, 0, 0.2);
    border-top: 1px solid rgba(255, 255, 255, 0.05);
}

.inventory-item {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
    border-radius: var(--radius-sm);
}

.inventory-item:hover {
    background: rgba(255, 255, 255, 0.02);
}

.inventory-item .item-status {
    font-size: 0.9rem;
    width: 20px;
    text-align: center;
}

.inventory-item.status-missing .item-status {
    color: var(--text-muted);
}

.inventory-item.status-pending .item-status {
    color: var(--status-warning);
}

.inventory-item.status-complete .item-status {
    color: var(--status-success);
}

.inventory-item.status-expired .item-status {
    color: var(--status-error);
}

.inventory-item .item-info {
    flex: 1;
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.inventory-item .item-name {
    font-size: 0.85rem;
    color: var(--text-secondary);
}

.inventory-item.status-complete .item-name {
    color: var(--patriot-white);
}

.verified-badge {
    font-size: 0.65rem;
    color: var(--status-success);
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    padding: 2px 6px;
    border-radius: var(--radius-sm);
}

.btn-view-item {
    padding: 2px 8px;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-size: 0.7rem;
    cursor: pointer;
}

.btn-view-item:hover {
    background: rgba(255, 255, 255, 0.1);
    color: var(--patriot-white);
}

/* Capabilities Grid */
.capabilities-grid {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-sm);
}

.capability-card {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm) var(--spacing-md);
    background: linear-gradient(135deg, color-mix(in srgb, var(--accent-gold) 10%, transparent), color-mix(in srgb, var(--accent-gold) 5%, transparent));
    border: 1px solid color-mix(in srgb, var(--accent-gold) 30%, transparent);
    border-radius: var(--radius-md);
}

.capability-icon {
    color: var(--accent-gold);
}

.capability-name {
    font-size: 0.8rem;
    color: var(--accent-gold);
    text-transform: capitalize;
}

/* Loading State */
.vault-loading {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-md);
    padding: var(--spacing-xl);
    color: var(--text-muted);
}


/* Vault Forms & Entity Additions */

.section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.btn-add-small {
    padding: 4px 12px;
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-sm);
    color: var(--primary-blue);
    font-size: 0.8rem;
    cursor: pointer;
    transition: all 0.2s ease;
}

.btn-add-small:hover {
    background: color-mix(in srgb, var(--text-accent) 20%, transparent);
}

/* Add Entity Form */
.add-entity-form {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
    border: 1px dashed var(--primary-blue);
    border-radius: var(--radius-md);
    margin-top: var(--spacing-sm);
}

.add-entity-form input,
.add-entity-form select {
    padding: var(--spacing-sm) var(--spacing-md);
    background: var(--card-bg);
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: var(--radius-sm);
    color: var(--patriot-white);
    font-size: 0.9rem;
}

.add-entity-form input:focus,
.add-entity-form select:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.form-actions {
    display: flex;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-xs);
}

.btn-primary {
    padding: var(--spacing-sm) var(--spacing-lg);
    background: var(--primary-blue);
    border: none;
    border-radius: var(--radius-sm);
    color: white;
    font-weight: 600;
    cursor: pointer;
}

.btn-primary:hover {
    background: #1a5fa8;
}

.btn-secondary {
    padding: var(--spacing-sm) var(--spacing-lg);
    background: transparent;
    border: 1px solid rgba(255, 255, 255, 0.3);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    cursor: pointer;
}

.btn-secondary:hover {
    background: rgba(255, 255, 255, 0.05);
}

/* ----- Entity selector (the workflow context picker) ----- */

.entity-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.entity-card {
    appearance: none;
    text-align: left;
    width: 100%;
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 20%, transparent);
    border-radius: var(--radius-sm);
    color: inherit;
    font: inherit;
    cursor: pointer;
    transition:
        border-color var(--duration-fast),
        background var(--duration-fast);
}

.entity-card:hover {
    border-color: color-mix(in srgb, var(--anviz-accent-secondary) 50%, transparent);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 6%, transparent);
}

.entity-card.selected {
    border-color: color-mix(in srgb, var(--anviz-accent-primary) 65%, transparent);
    background: color-mix(in srgb, var(--anviz-accent-primary) 8%, transparent);
    box-shadow: 0 0 12px color-mix(in srgb, var(--anviz-accent-primary) 20%, transparent);
}

.entity-card:focus-visible {
    outline: 2px solid var(--anviz-accent-primary);
    outline-offset: 2px;
}

/* Letter-tile entity icon — replaces the 👤/🏢 emoji with an
   accent-tinted square that carries a single character (P for
   Personal, B for Business). Same vocabulary as the quest-icon-tile
   so the surface reads as a coherent system. */
.entity-tile {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 18%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 35%, transparent);
    color: var(--anviz-accent-secondary);
    font-family: 'Orbitron', monospace;
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.04em;
}

.entity-card.selected .entity-tile {
    background: color-mix(in srgb, var(--anviz-accent-primary) 18%, transparent);
    border-color: color-mix(in srgb, var(--anviz-accent-primary) 50%, transparent);
    color: var(--anviz-accent-primary);
}

.entity-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.entity-name {
    font-family: 'Orbitron', monospace;
    font-size: 0.86rem;
    font-weight: 700;
    color: var(--patriot-white);
}

.entity-type {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
    color: var(--text-secondary);
}

/* ----- Quest icon tile (frames the quest emoji intentionally) ----- */

.quest-icon-tile {
    flex-shrink: 0;
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 30%, transparent);
    transition: background var(--duration-fast), border-color var(--duration-fast);
}

.quest-icon-tile .quest-icon {
    font-size: 1.4rem;
    line-height: 1;
}

.quest-card.quest-complete .quest-icon-tile {
    background: color-mix(in srgb, var(--anviz-accent-primary) 14%, transparent);
    border-color: color-mix(in srgb, var(--anviz-accent-primary) 45%, transparent);
}

.quest-card.quest-locked .quest-icon-tile {
    background: color-mix(in srgb, var(--text-muted) 8%, transparent);
    border-color: color-mix(in srgb, var(--text-muted) 30%, transparent);
    filter: grayscale(0.6);
    opacity: 0.7;
}

/* ----- Collapsible primitive (components/collapsible.rs) -----
   Used to demote secondary content (Earned badges, Storage) without
   removing it. The summary line stays visible (title + meta);
   chevron rotates on open. Scoped to vault today via the
   `vault-collapsible` modifier; lift to a panel-agnostic block once
   another panel adopts the primitive. */

.collapsible {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.collapsible-summary {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    width: 100%;
    appearance: none;
    background: transparent;
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 25%, transparent);
    border-radius: var(--radius-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
    transition:
        border-color var(--duration-fast),
        background var(--duration-fast);
}

.collapsible-summary:hover {
    border-color: color-mix(in srgb, var(--anviz-accent-primary) 50%, transparent);
    background: color-mix(in srgb, var(--anviz-accent-primary) 6%, transparent);
}

.collapsible-summary:focus-visible {
    outline: 2px solid var(--anviz-accent-primary);
    outline-offset: 2px;
}

.collapsible-chevron {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    color: var(--text-muted);
    font-size: 1.1rem;
    transition: transform var(--duration-fast);
}

.collapsible.open .collapsible-chevron {
    transform: rotate(90deg);
    color: var(--anviz-accent-primary);
}

.collapsible-title {
    flex: 1;
    font-family: 'Orbitron', monospace;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--patriot-white);
}

.collapsible-meta {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.74rem;
    letter-spacing: 0.04em;
    color: var(--text-muted);
}

.collapsible-body {
    padding: var(--spacing-sm) var(--spacing-md) 0;
}

/* Quest Form */
.quest-form {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

/* ADR-015: Action Required banner when provider needs resubmission */
.quest-action-required-section {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-md);
}

.quest-action-required-banner {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--accent-gold) 15%, transparent);
    border: 1px solid color-mix(in srgb, var(--accent-gold) 40%, transparent);
    border-radius: var(--radius-sm);
    color: var(--status-warning);
}

.quest-action-required-banner .action-required-icon {
    font-size: 1.2rem;
}

.quest-action-required-banner .action-required-text {
    font-size: 0.9rem;
}

/* ADR-015: Highlight fields that need correction */
.form-field.field-needs-correction {
    border: 1px solid color-mix(in srgb, var(--accent-gold) 50%, transparent);
    border-radius: var(--radius-sm);
    padding: var(--spacing-sm);
    background: color-mix(in srgb, var(--accent-gold) 8%, transparent);
}

.form-field.field-needs-correction label {
    color: var(--status-warning);
}

.form-field {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.form-field label {
    font-size: 0.8rem;
    color: var(--text-secondary);
    font-weight: 500;
}

/* ============================================================================
   FORM-FIELD PRIMITIVES (components/form_field/)
   ============================================================================
   Companion styling for the shared field primitives. Vault still uses bare
   `<input>` inside `.form-field`; the primitives use scoped `.form-field-*`
   classes so they style cleanly without depending on the wider vault CSS
   inheritance. Both patterns coexist intentionally — vault's deep custom
   surfaces (zip lookup, document extraction) keep their bespoke chrome.
   See ADR-020. */

.form-field-label {
    font-size: 0.8rem;
    color: var(--text-secondary);
    font-weight: 500;
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

.form-field-required {
    color: var(--status-warning);
    font-weight: 600;
}

.form-field-input {
    padding: var(--spacing-sm) var(--spacing-md);
    background: var(--card-bg);
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: var(--radius-sm);
    color: var(--patriot-white);
    font-size: 0.9rem;
    font-family: inherit;
    transition: border-color var(--duration-fast);
}

.form-field-input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.form-field-input:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.form-field-input--secret {
    /* Slight visual marker so users can see at a glance the field is masked. */
    font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
    letter-spacing: 0.1em;
}

/* Select fields render as flat form-inputs, NOT as buttons. The
   browser-default `<select>` styling on Chrome/macOS draws a
   pill-shaped, filled button with a chevron — visually
   indistinguishable from an action button. That violated the
   "actions live in the control bar; field controls look like
   fields" canon: a dropdown is field input, not navigation.

   Overrides below: kill the browser appearance, inherit the
   `.form-field-input` flat-rectangle treatment exactly, then draw
   our own subtle chevron via inline SVG background so the
   "this is selectable" hint stays without the button geometry. */
.form-field-input--select {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    cursor: pointer;
    /* Inline SVG chevron — neutral color, fixed size, padded right
       so the value text doesn't collide with it. */
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M3 5l3 3 3-3' stroke='rgba(255,255,255,0.5)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right var(--spacing-md) center;
    background-size: 12px 12px;
    padding-right: calc(var(--spacing-md) * 2 + 12px);
}

/* Disable native dropdown arrow on Firefox and IE/Edge legacy. */
.form-field-input--select::-ms-expand {
    display: none;
}

/* Modal-form layout. Stacks form-fields with consistent vertical
   rhythm; the help paragraph above explains what the form does;
   the error block below surfaces upstream failures verbatim per
   the project's "no anti-patterns" rule.
   Used by the Home panel's create modals (Add universal,
   Import blockchain) and any future modal-driven create flow. */
.form-stack {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.form-help {
    margin: 0;
    font-size: 0.85rem;
    color: var(--text-secondary);
    line-height: 1.5;
}

.form-error {
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--status-error) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-error) 40%, transparent);
    border-radius: var(--radius-sm);
    color: var(--status-error);
    font-size: 0.85rem;
    line-height: 1.4;
}

/* === Self-custodial key-import inputs + preview === */

/* Sensitive form fields (seed phrase + private key inputs).
   Tinted border + warning-pill label so the user reads them as
   "this is the dangerous bit" before they paste anything. */
.form-field--sensitive .form-field-input--sensitive {
    font-family: 'IBM Plex Mono', monospace;
    border-color: color-mix(in srgb, var(--anviz-accent-secondary) 40%, transparent);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 4%, transparent);
}

.form-field--sensitive .form-field-input--sensitive:focus {
    border-color: var(--anviz-accent-secondary);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--anviz-accent-secondary) 20%, transparent);
    outline: none;
}

.form-field-help {
    display: block;
    margin-top: var(--spacing-xs);
    font-size: 0.75rem;
    color: var(--text-muted);
    line-height: 1.4;
}

/* Derivation preview block — shows the user the EVM address
   their seed/key produces before they hit Import. Three visual
   states: empty hint (instruction), error (validation failed),
   derived (success). The derived state is the rich one with the
   network chips. */
.key-import-preview {
    margin-top: var(--spacing-xs);
}

.key-import-preview-empty {
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--anviz-bg-panel) 60%, transparent);
    border: 1px dashed
        color-mix(in srgb, var(--text-muted) 50%, transparent);
    border-radius: var(--radius-sm);
    font-size: 0.78rem;
    color: var(--text-muted);
    line-height: 1.5;
}

.key-import-preview-derived {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--status-active) 6%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-active) 35%, transparent);
    border-radius: var(--radius-md);
}

.key-import-preview-label {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--text-muted);
}

.key-import-preview-address {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.92rem;
    color: var(--patriot-white);
    word-break: break-all;
    user-select: all;
}

.key-import-preview-networks {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-xs);
}

.key-import-preview-network-chip {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 2px var(--spacing-sm);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 14%, transparent);
    color: var(--text-secondary);
}

.key-import-preview-footnote {
    font-size: 0.72rem;
    color: var(--text-muted);
    line-height: 1.4;
}

/* Document upload — picker label looks like a button, selected filename
   sits next to it. */
.form-field--document .form-field-document-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    flex-wrap: wrap;
}

.form-field-document-picker {
    position: relative;
    display: inline-flex;
    align-items: center;
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--text-accent) 40%, transparent);
    border-radius: var(--radius-sm);
    color: var(--primary-blue);
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    transition: background var(--duration-fast);
}

.form-field-document-picker:hover {
    background: color-mix(in srgb, var(--text-accent) 18%, transparent);
}

.form-field-document-input {
    /* Hide the native picker; the wrapping label is the click target. */
    position: absolute;
    inset: 0;
    opacity: 0;
    cursor: pointer;
}

.form-field-document-selected {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-xs);
    color: var(--text-secondary);
    font-size: 0.85rem;
}

.form-field-document-icon {
    font-size: 1rem;
}

.form-field-document-filename {
    word-break: break-all;
}

/* ----- AddressField (composite address with ZIP lookup) ----- */

.form-field--address .form-field-address-grid {
    display: grid;
    grid-template-columns: 100px 1fr 80px;
    grid-template-areas:
        "zip  city   state"
        "street street unit";
    gap: var(--spacing-sm);
}

.form-field-address-cell {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
    position: relative;
}

.form-field-address-cell--zip    { grid-area: zip; }
.form-field-address-cell--city   { grid-area: city; }
.form-field-address-cell--state  { grid-area: state; }
.form-field-address-cell--street { grid-area: street; }
.form-field-address-cell--unit   { grid-area: unit; }

.form-field-address-hint {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--text-muted);
}

.form-field-input--readonly {
    cursor: default;
    color: var(--text-secondary);
    background: color-mix(in srgb, var(--anviz-bg-panel) 50%, transparent);
}

.form-field-input--readonly:focus {
    border-color: color-mix(in srgb, var(--anviz-accent-secondary) 30%, transparent);
    box-shadow: none;
}

.form-field-input--zip {
    font-family: 'IBM Plex Mono', monospace;
    letter-spacing: 0.04em;
}

.form-field-address-loading {
    position: absolute;
    right: var(--spacing-sm);
    bottom: var(--spacing-xs);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--anviz-accent-primary);
    pointer-events: none;
}

.form-field-address-error {
    margin-top: 2px;
    font-size: 0.74rem;
    color: var(--status-error);
}

.form-field.field-complete label {
    color: var(--status-success);
}

/* ----- Vault-side wrappers around primitives -----
   The vault wraps each form-field primitive with its own additional
   chrome: the saved-values list (rendered above the primitive), an
   optional label-input for multi-allowed fields, and a Save button.
   These classes give that surrounding chrome a layout without
   conflicting with the primitive's internal `.form-field` styles. */

.vault-field-stack {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.vault-address-field {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.vault-field-actions {
    display: flex;
    justify-content: flex-end;
    gap: var(--spacing-sm);
}

.vault-field-label-input {
    /* The "Label (e.g., Work)" input that appears above multi-allowed
       fields. Slimmer than a normal field input so it reads as
       metadata rather than content. */
    font-size: 0.82rem;
    padding: var(--spacing-xs) var(--spacing-sm);
}

.field-input-row {
    display: flex;
    gap: var(--spacing-sm);
}

.field-input-row input {
    flex: 1;
    padding: var(--spacing-sm) var(--spacing-md);
    background: var(--card-bg);
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: var(--radius-sm);
    color: var(--patriot-white);
    font-size: 0.9rem;
}

.field-input-row input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.btn-save-field {
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    border: 1px solid var(--status-success);
    border-radius: var(--radius-sm);
    color: var(--status-success);
    font-size: 0.8rem;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
}

.btn-save-field:hover {
    background: color-mix(in srgb, var(--status-success) 20%, transparent);
}

.saved-value {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--status-success) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 30%, transparent);
    border-radius: var(--radius-sm);
}

.saved-value .value-text {
    flex: 1;
    color: var(--patriot-white);
}

.saved-value .verified-badge {
    font-size: 0.7rem;
    color: var(--status-success);
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    padding: 2px 8px;
    border-radius: var(--radius-sm);
}

/* Quest Status */
.quest-status {
    min-width: 70px;
    text-align: right;
}

.status-complete {
    color: var(--status-success);
    font-weight: 600;
    font-size: 0.8rem;
}

.status-progress {
    color: var(--text-muted);
    font-size: 0.8rem;
}

.status-locked {
    color: var(--text-muted);
    font-size: 0.8rem;
    opacity: 0.7;
}

/* Quest Prerequisites Notice */
.quest-prereq-notice {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--status-warning) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-warning) 30%, transparent);
    border-radius: var(--radius-sm);
    margin-bottom: var(--spacing-md);
}

.prereq-icon {
    font-size: 1.2rem;
}

.prereq-text {
    font-size: 0.85rem;
    color: var(--status-warning);
}

/* Quest Unlocks */
.quest-unlocks {
    padding-top: var(--spacing-md);
    border-top: 1px solid rgba(255, 255, 255, 0.05);
}

.quest-unlocks h4 {
    margin: 0 0 var(--spacing-sm);
    font-size: 0.75rem;
    color: var(--text-muted);
    text-transform: uppercase;
}

/* Empty State */
.empty-state {
    padding: var(--spacing-lg);
    text-align: center;
    color: var(--text-muted);
    font-size: 0.9rem;
    background: rgba(255, 255, 255, 0.02);
    border-radius: var(--radius-md);
    border: 1px dashed rgba(255, 255, 255, 0.1);
}


/* Multi-value field support */
.field-values {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.saved-value {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    background: color-mix(in srgb, var(--status-success) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-success) 30%, transparent);
    border-radius: var(--radius-sm);
}

.saved-value .value-text {
    flex: 1;
    color: var(--patriot-white);
    font-size: 0.9rem;
}

.saved-value .value-label {
    font-size: 0.7rem;
    color: var(--text-muted);
    background: rgba(255, 255, 255, 0.05);
    padding: 2px 6px;
    border-radius: var(--radius-sm);
}

.saved-value .verified-badge {
    font-size: 0.7rem;
    color: var(--status-success);
}

.btn-delete-value {
    padding: 0 6px;
    background: transparent;
    border: none;
    color: var(--text-muted);
    font-size: 1rem;
    cursor: pointer;
    opacity: 0.5;
    transition: opacity 0.2s;
}

.btn-delete-value:hover {
    opacity: 1;
    color: var(--status-error);
}

.field-input-group {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    margin-top: var(--spacing-xs);
}

.field-label-input {
    padding: var(--spacing-xs) var(--spacing-sm);
    background: var(--card-bg);
    border: 1px solid rgba(255, 255, 255, 0.15);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-size: 0.8rem;
    width: 200px;
}

.field-label-input:focus {
    outline: none;
    border-color: var(--primary-blue);
}


/* Address Form Styles */
.address-form {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    background: rgba(255, 255, 255, 0.02);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: var(--radius-md);
}

.address-row {
    display: flex;
    gap: var(--spacing-sm);
}

.address-field {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.address-field .field-hint {
    font-size: 0.7rem;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.address-field input {
    padding: var(--spacing-sm) var(--spacing-md);
    background: var(--card-bg);
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: var(--radius-sm);
    color: var(--patriot-white);
    font-size: 0.9rem;
}

.address-field input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.address-field input.readonly-input {
    background: rgba(255, 255, 255, 0.03);
    border-color: rgba(255, 255, 255, 0.1);
    color: var(--text-secondary);
    cursor: not-allowed;
}

.zip-field {
    width: 100px;
}

.city-field {
    flex: 2;
}

.state-field {
    width: 60px;
}

.street-field {
    flex: 3;
}

.unit-field {
    width: 120px;
}

.loading-indicator {
    font-size: 0.8rem;
    color: var(--primary-blue);
    animation: pulse 1s infinite;
}

.error-text {
    font-size: 0.75rem;
    color: var(--status-error);
}

@keyframes pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
}

/* SSN masked input */
input[type="text"].ssn-input {
    font-family: monospace;
    letter-spacing: 1px;
}

/* Provider Select Styles */
.provider-select,
.jurisdiction-select {
    display: flex;
    flex-direction: row;
    gap: var(--spacing-sm);
    align-items: center;
}

.provider-dropdown,
.jurisdiction-dropdown {
    flex: 1;
    padding: var(--spacing-sm);
    background: var(--bg-tertiary);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 0.9rem;
    cursor: pointer;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2394a3b8' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right var(--spacing-sm) center;
    padding-right: calc(var(--spacing-sm) * 3);
}

.provider-dropdown:hover,
.jurisdiction-dropdown:hover {
    border-color: var(--primary-blue);
}

.provider-dropdown:focus,
.jurisdiction-dropdown:focus {
    outline: none;
    border-color: var(--primary-blue);
    box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);
}

/* Secret Input Styles */
.secret-input {
    display: flex;
    flex-direction: row;
    gap: var(--spacing-sm);
    align-items: center;
}

.secret-field {
    flex: 1;
    padding: var(--spacing-sm);
    background: var(--bg-tertiary);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: monospace;
    font-size: 0.9rem;
}

.secret-field:focus {
    outline: none;
    border-color: var(--primary-blue);
    box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);
}

/* Document Form Styles */
.document-form {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--status-warning) 3%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-warning) 20%, transparent);
    border-radius: var(--radius-md);
}

.doc-description {
    font-size: 0.8rem;
    color: var(--text-muted);
    font-style: italic;
    margin-bottom: var(--spacing-xs);
}

.doc-upload-row {
    display: flex;
    gap: var(--spacing-sm);
    align-items: center;
}

.doc-filename-input {
    flex: 1;
    padding: var(--spacing-sm) var(--spacing-md);
    background: var(--card-bg);
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: var(--radius-sm);
    color: var(--patriot-white);
    font-size: 0.9rem;
}

.doc-filename-input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.btn-expand-fields {
    padding: var(--spacing-xs) var(--spacing-md);
    background: color-mix(in srgb, var(--status-warning) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-warning) 30%, transparent);
    border-radius: var(--radius-sm);
    color: color-mix(in srgb, var(--status-warning) 90%, transparent);
    font-size: 0.8rem;
    cursor: pointer;
    white-space: nowrap;
}

.btn-expand-fields:hover {
    background: color-mix(in srgb, var(--status-warning) 20%, transparent);
}

.extracted-fields {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    background: rgba(0, 0, 0, 0.2);
    border-radius: var(--radius-sm);
    margin-top: var(--spacing-xs);
}

.extract-hint {
    font-size: 0.75rem;
    color: var(--text-muted);
    margin-bottom: var(--spacing-xs);
}

.extract-field-row {
    display: flex;
    gap: var(--spacing-sm);
    align-items: center;
}

.extract-label {
    min-width: 140px;
    font-size: 0.8rem;
    color: var(--text-secondary);
    text-transform: capitalize;
}

.extract-field-row input {
    flex: 1;
    padding: var(--spacing-xs) var(--spacing-sm);
    background: var(--card-bg);
    border: 1px solid rgba(255, 255, 255, 0.15);
    border-radius: var(--radius-sm);
    color: var(--patriot-white);
    font-size: 0.85rem;
}

.extract-field-row input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.doc-icon {
    font-size: 1rem;
    margin-right: var(--spacing-xs);
}


/* File Upload Styles */
.file-upload-label {
    display: inline-flex;
    cursor: pointer;
    flex: 1;
}

.file-upload-input {
    display: none;
}

.file-upload-btn {
    flex: 1;
    padding: var(--spacing-sm) var(--spacing-md);
    background: var(--card-bg);
    border: 1px dashed rgba(255, 255, 255, 0.3);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-size: 0.9rem;
    text-align: center;
    transition: all 0.2s ease;
}

.file-upload-label:hover .file-upload-btn {
    border-color: var(--primary-blue);
    color: var(--primary-blue);
}

.extraction-status {
    font-size: 0.8rem;
    padding: var(--spacing-xs) var(--spacing-sm);
    border-radius: var(--radius-sm);
    margin-top: var(--spacing-xs);
}

.extraction-status.extracting {
    color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.extraction-status.error {
    color: var(--status-error);
    background: rgba(255, 77, 77, 0.1);
}

.extraction-status.success {
    color: var(--status-success);
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
}

/* Extraction Review UI */
.extraction-review {
    background: linear-gradient(135deg, color-mix(in srgb, var(--text-accent) 8%, transparent), rgba(255, 200, 0, 0.05));
    border: 1px solid color-mix(in srgb, var(--text-accent) 30%, transparent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    margin-top: var(--spacing-sm);
}

.review-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-sm);
    padding-bottom: var(--spacing-sm);
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.review-icon {
    font-size: 1.2rem;
}

.review-title {
    font-weight: 600;
    color: var(--text-primary);
    flex: 1;
}

.review-count {
    font-size: 0.75rem;
    color: var(--text-secondary);
    background: color-mix(in srgb, var(--text-accent) 15%, transparent);
    padding: 2px 8px;
    border-radius: var(--radius-sm);
}

.review-fields {
    max-height: 200px;
    overflow-y: auto;
    margin-bottom: var(--spacing-sm);
}

.review-field {
    display: flex;
    gap: var(--spacing-sm);
    padding: var(--spacing-xs) 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.review-field:last-child {
    border-bottom: none;
}

.review-key {
    flex: 0 0 45%;
    font-size: 0.75rem;
    color: var(--text-secondary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.review-value {
    flex: 1;
    font-size: 0.8rem;
    color: var(--primary-blue);
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.review-summary {
    font-size: 0.8rem;
    color: var(--status-success);
    margin-bottom: var(--spacing-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    background: color-mix(in srgb, var(--status-success) 10%, transparent);
    border-radius: var(--radius-sm);
}

.review-actions {
    display: flex;
    gap: var(--spacing-sm);
    justify-content: flex-end;
}

.btn-accept {
    background: linear-gradient(135deg, var(--status-success), #00994d);
    color: white;
    border: none;
    padding: var(--spacing-xs) var(--spacing-md);
    border-radius: var(--radius-sm);
    font-size: 0.85rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s;
}

.btn-accept:hover {
    transform: translateY(-1px);
    box-shadow: 0 2px 8px color-mix(in srgb, var(--status-success) 30%, transparent);
}

.btn-reject {
    background: transparent;
    color: var(--text-secondary);
    border: 1px solid rgba(255, 255, 255, 0.2);
    padding: var(--spacing-xs) var(--spacing-md);
    border-radius: var(--radius-sm);
    font-size: 0.85rem;
    cursor: pointer;
    transition: all 0.2s;
}

.btn-reject:hover {
    border-color: var(--status-error);
    color: var(--status-error);
}


/* QR Upload Component Styles */
.qr-upload-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: var(--spacing-lg);
    text-align: center;
}

.qr-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-md);
}

.qr-content h4 {
    color: var(--text-primary);
    margin: 0;
    font-size: 1.1rem;
}

.qr-instructions {
    color: var(--text-secondary);
    font-size: 0.9rem;
    max-width: 300px;
    margin: 0;
}

.qr-code {
    background: white;
    padding: var(--spacing-md);
    border-radius: var(--radius-md);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}

.qr-code svg {
    display: block;
    width: 200px;
    height: 200px;
}

.qr-url {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    font-size: 0.8rem;
}

.qr-url .url-label {
    color: var(--text-muted);
}

.qr-url .url-value {
    background: var(--card-bg);
    padding: var(--spacing-xs) var(--spacing-sm);
    border-radius: var(--radius-sm);
    color: var(--primary-blue);
    font-size: 0.75rem;
    word-break: break-all;
    max-width: 280px;
}

.qr-waiting {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    color: var(--text-secondary);
    font-size: 0.9rem;
}

.pulse-dot {
    width: 10px;
    height: 10px;
    background: var(--primary-blue);
    border-radius: 50%;
    animation: pulse-dot 1.5s ease-in-out infinite;
}

@keyframes pulse-dot {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.5; transform: scale(1.2); }
}

.qr-status {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-lg);
}

.qr-status.creating .loading-spinner,
.qr-status.uploading .loading-spinner {
    width: 40px;
    height: 40px;
    border: 3px solid var(--border-color);
    border-top-color: var(--primary-blue);
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

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

.qr-status.complete .success-icon {
    width: 50px;
    height: 50px;
    background: var(--status-success);
    color: white;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
}

.qr-status.error .error-icon {
    width: 50px;
    height: 50px;
    background: var(--status-error);
    color: white;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
}

.qr-status.expired .warning-icon {
    width: 50px;
    height: 50px;
    background: var(--status-warning);
    color: white;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
}

.btn-cancel-qr {
    margin-top: var(--spacing-md);
    padding: var(--spacing-sm) var(--spacing-lg);
    background: transparent;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    cursor: pointer;
    transition: all 0.2s ease;
}

.btn-cancel-qr:hover {
    border-color: var(--text-secondary);
    color: var(--text-primary);
}


/* QR Modal Overlay */
.qr-modal-overlay {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.7);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1000;
    animation: fadeIn 0.2s ease;
}

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

.qr-modal {
    background: var(--panel-bg);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-lg);
    max-width: 400px;
    width: 90%;
    max-height: 90vh;
    overflow: auto;
    animation: slideUp 0.3s ease;
}

@keyframes slideUp {
    from { transform: translateY(20px); opacity: 0; }
    to { transform: translateY(0); opacity: 1; }
}

/* QR upload button in doc row */
.btn-qr-upload {
    padding: var(--spacing-sm);
    background: transparent;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    cursor: pointer;
    font-size: 1.2rem;
    line-height: 1;
    transition: all 0.2s ease;
}

.btn-qr-upload:hover {
    border-color: var(--primary-blue);
    color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 5%, transparent);
}

/* ============================================================================
   PRECIOUS METALS TOKENIZATION & GOLD MARKETS
   ============================================================================ */

/* Tokenization View */
.tokenization-view {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.tokenization-view .view-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
}

.tokenization-view .view-header h2 {
    margin: 0;
    font-size: 1.25rem;
}

.tokenization-intro {
    padding: var(--spacing-md);
    background: color-mix(in srgb, var(--status-warning) 5%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-warning) 20%, transparent);
    border-radius: var(--radius-md);
}

.tokenization-intro p {
    margin: 0 0 var(--spacing-sm);
    color: var(--text-secondary);
}

.tokenization-intro .prereq-notice {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    font-size: 0.85rem;
}

/* Wizard Progress */
.wizard-progress {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-xs);
    padding: var(--spacing-md) 0;
}

.wizard-progress .step {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-xs);
    opacity: 0.5;
}

.wizard-progress .step.active {
    opacity: 1;
}

.wizard-progress .step.complete {
    opacity: 1;
}

.wizard-progress .step .step-number {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--bg-tertiary);
    border: 2px solid var(--border-color);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
}

.wizard-progress .step.active .step-number {
    background: var(--primary-blue);
    border-color: var(--primary-blue);
    color: white;
}

.wizard-progress .step.complete .step-number {
    background: var(--status-success);
    border-color: var(--status-success);
    color: white;
}

.wizard-progress .step .step-label {
    font-size: 0.7rem;
    color: var(--text-muted);
    text-align: center;
}

.wizard-progress .step.active .step-label {
    color: var(--primary-blue);
    font-weight: 500;
}

.step-connector {
    width: 40px;
    height: 2px;
    background: var(--border-color);
    margin: 0 var(--spacing-xs);
}

/* Tokenization Wizard Content */
.step-content {
    padding: var(--spacing-lg);
    background: var(--card-bg);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
}

.step-content h3 {
    margin: 0 0 var(--spacing-md);
    font-size: 1.1rem;
}

/* Metal Selection */
.metal-options {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
}

.metal-option {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-xs);
    padding: var(--spacing-md);
    background: var(--bg-tertiary);
    border: 2px solid var(--border-color);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: all 0.2s ease;
}

.metal-option:hover {
    border-color: var(--primary-blue);
}

.metal-option.selected {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.metal-icon {
    font-size: 2rem;
}

.metal-label {
    font-weight: 500;
}

.metal-symbol {
    font-size: 0.8rem;
    color: var(--text-muted);
}

/* Allocation Options */
.allocation-options {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--spacing-md);
}

.allocation-option {
    padding: var(--spacing-md);
    background: var(--bg-tertiary);
    border: 2px solid var(--border-color);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: all 0.2s ease;
}

.allocation-option:hover {
    border-color: var(--primary-blue);
}

.allocation-option.selected {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

.option-title {
    font-weight: 600;
    font-size: 0.95rem;
}

.option-desc {
    font-size: 0.8rem;
    color: var(--text-muted);
    margin: var(--spacing-xs) 0 0;
}

/* Token Standard Options */
.token-standard-options {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-sm);
}

.standard-option {
    padding: var(--spacing-sm) var(--spacing-md);
    background: var(--bg-tertiary);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 0.85rem;
    transition: all 0.2s ease;
}

.standard-option:hover,
.standard-option.selected {
    border-color: var(--primary-blue);
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
}

/* Config Info */
.config-info {
    margin-top: var(--spacing-lg);
    padding: var(--spacing-md);
    background: var(--bg-tertiary);
    border-radius: var(--radius-sm);
}

.config-info h4 {
    margin: 0 0 var(--spacing-xs);
    font-size: 0.9rem;
}

.config-info ul {
    margin: var(--spacing-sm) 0;
    padding-left: var(--spacing-lg);
}

.config-info li {
    font-size: 0.85rem;
    color: var(--text-secondary);
}

.info-note {
    font-size: 0.8rem;
    color: var(--text-muted);
    font-style: italic;
}

/* Custody Provider Select */
.custody-provider-select {
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    background: var(--bg-tertiary);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-size: 0.9rem;
    cursor: pointer;
    transition: border-color 0.2s ease;
}

.custody-provider-select:hover {
    border-color: var(--primary-blue);
}

.custody-provider-select:focus {
    outline: none;
    border-color: var(--primary-blue);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--text-accent) 20%, transparent);
}

.custody-provider-select option {
    background: var(--bg-secondary);
    color: var(--text-primary);
    padding: var(--spacing-sm);
}

.custody-provider-select option:disabled {
    color: var(--text-muted);
    font-style: italic;
}

/* Review Summary */
.review-summary {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-lg);
}

.review-item {
    display: flex;
    justify-content: space-between;
    padding: var(--spacing-sm);
    background: var(--bg-tertiary);
    border-radius: var(--radius-sm);
}

.review-label {
    color: var(--text-muted);
}

.review-value {
    font-weight: 500;
}

.btn-create-token {
    width: 100%;
    padding: var(--spacing-md);
    font-size: 1rem;
}

.create-note {
    text-align: center;
    font-size: 0.8rem;
    color: var(--text-muted);
    margin-top: var(--spacing-sm);
}

/* Wizard Navigation */
.wizard-nav {
    display: flex;
    justify-content: space-between;
    padding-top: var(--spacing-md);
}

/* Holdings Entry */
.holdings-entry .form-group {
    margin-bottom: var(--spacing-md);
}

.holdings-entry label {
    display: block;
    margin-bottom: var(--spacing-xs);
    font-size: 0.85rem;
    color: var(--text-secondary);
}

.holdings-entry input,
.holdings-entry select,
.holdings-entry textarea {
    width: 100%;
    padding: var(--spacing-sm);
    background: var(--bg-tertiary);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
}

.holdings-entry .field-hint {
    font-size: 0.75rem;
    color: var(--text-muted);
    margin-top: var(--spacing-xs);
}

/* Gold Markets View */
.gold-markets-view {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.gold-markets-view .view-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
}

.gold-markets-view h2 {
    margin: 0;
    flex: 1;
}

/* Market Tabs */
.market-tabs {
    display: flex;
    gap: var(--spacing-xs);
    border-bottom: 1px solid var(--border-color);
    padding-bottom: var(--spacing-xs);
}

.market-tabs .tab {
    padding: var(--spacing-sm) var(--spacing-md);
    background: transparent;
    border: none;
    color: var(--text-muted);
    cursor: pointer;
    border-radius: var(--radius-sm) var(--radius-sm) 0 0;
    transition: all 0.2s ease;
}

.market-tabs .tab:hover {
    background: rgba(255, 255, 255, 0.05);
    color: var(--text-primary);
}

.market-tabs .tab.active {
    background: color-mix(in srgb, var(--text-accent) 10%, transparent);
    color: var(--primary-blue);
    border-bottom: 2px solid var(--primary-blue);
}

/* Order Book */
.order-book-view {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.market-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.price-display {
    display: flex;
    align-items: baseline;
    gap: var(--spacing-sm);
}

.price-label {
    font-size: 0.85rem;
    color: var(--text-muted);
}

.price-value {
    font-size: 1.5rem;
    font-weight: 600;
}

.price-change {
    font-size: 0.85rem;
}

.price-change.positive {
    color: var(--status-success);
}

.price-change.negative {
    color: var(--status-error);
}

/* Order Book */
.order-book {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.book-side {
    padding: var(--spacing-md);
    background: var(--card-bg);
    border-radius: var(--radius-md);
}

.book-side h4 {
    margin: 0 0 var(--spacing-sm);
    font-size: 0.85rem;
}

.book-side.asks h4 {
    color: var(--status-error);
}

.book-side.bids h4 {
    color: var(--status-success);
}

.order-row {
    display: flex;
    justify-content: space-between;
    padding: var(--spacing-xs) 0;
    font-size: 0.85rem;
}

.book-spread {
    text-align: center;
    padding: var(--spacing-sm);
    font-size: 0.8rem;
    color: var(--text-muted);
}

/* Trade Form */
.trade-form {
    padding: var(--spacing-md);
    background: var(--card-bg);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
}

.trade-form h4 {
    margin: 0 0 var(--spacing-md);
}

.trade-form .form-row {
    display: flex;
    gap: var(--spacing-xs);
    margin-bottom: var(--spacing-md);
}

.trade-form .btn-buy,
.trade-form .btn-sell {
    flex: 1;
    padding: var(--spacing-sm);
    border: 1px solid var(--border-color);
    background: transparent;
    border-radius: var(--radius-sm);
    cursor: pointer;
}

.trade-form .btn-buy.active {
    background: color-mix(in srgb, var(--status-success) 15%, transparent);
    border-color: var(--status-success);
    color: var(--status-success);
}

.trade-form .btn-sell.active {
    background: rgba(255, 85, 85, 0.15);
    border-color: var(--status-error);
    color: var(--status-error);
}

.trade-form .form-group {
    margin-bottom: var(--spacing-md);
}

.trade-form label {
    display: block;
    margin-bottom: var(--spacing-xs);
    font-size: 0.8rem;
    color: var(--text-muted);
}

.trade-form input {
    width: 100%;
    padding: var(--spacing-sm);
    background: var(--bg-tertiary);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
}

/* AMM View */
.amm-view h3 {
    margin: 0 0 var(--spacing-md);
}

.pool-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.pool-card {
    padding: var(--spacing-md);
    background: var(--card-bg);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
}

.pool-header {
    display: flex;
    justify-content: space-between;
    margin-bottom: var(--spacing-sm);
}

.pool-name {
    font-weight: 600;
}

.pool-apy {
    color: var(--status-success);
    font-size: 0.9rem;
}

.pool-stats {
    display: flex;
    gap: var(--spacing-lg);
    margin-bottom: var(--spacing-md);
}

.pool-stats .stat {
    display: flex;
    flex-direction: column;
}

.stat-label {
    font-size: 0.75rem;
    color: var(--text-muted);
}

.stat-value {
    font-weight: 500;
}

/* OTC View */
.otc-view h3 {
    margin: 0 0 var(--spacing-xs);
}

.otc-desc {
    color: var(--text-muted);
    font-size: 0.85rem;
    margin-bottom: var(--spacing-lg);
}

.otc-listings {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
}

.otc-card {
    padding: var(--spacing-md);
    background: var(--card-bg);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
}

.otc-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}

.otc-type {
    padding: var(--spacing-xs) var(--spacing-sm);
    border-radius: var(--radius-sm);
    font-size: 0.75rem;
    font-weight: 600;
}

.otc-type.sell {
    background: rgba(255, 85, 85, 0.15);
    color: var(--status-error);
}

.otc-type.buy {
    background: color-mix(in srgb, var(--status-success) 15%, transparent);
    color: var(--status-success);
}

.otc-amount {
    font-weight: 600;
}

.otc-details {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    margin-bottom: var(--spacing-md);
}

.otc-details .detail {
    display: flex;
    justify-content: space-between;
    font-size: 0.85rem;
}

.otc-details .label {
    color: var(--text-muted);
}

.otc-details .verified {
    color: var(--status-success);
}

.btn-create-otc {
    width: 100%;
}

/* Tokenization Nav Button */
.opex-nav-btn.tokenization-btn {
    background: linear-gradient(135deg, #f5a623, #e88a00);
    border: none;
    color: var(--star-white);
    font-weight: 500;
}

.opex-nav-btn.tokenization-btn:hover {
    filter: brightness(1.1);
    box-shadow: 0 4px 16px rgba(245, 166, 35, 0.3);
}
/* ═══════════════════════════════════════════════════════════════════
   Loadout Panel
   ═══════════════════════════════════════════════════════════════════ */

.loadout-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
}

.loadout-header {
    padding: 16px 16px 12px;
    border-bottom: 1px solid var(--border-subtle);
    flex-shrink: 0;
}

.loadout-title-row {
    display: flex;
    align-items: baseline;
    gap: 10px;
}

.loadout-title {
    font-family: var(--font-display);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--text-secondary);
}

.loadout-name {
    font-family: var(--font-display);
    font-size: 14px;
    font-weight: 500;
    color: var(--accent-gold);
    letter-spacing: 0.04em;
}

.loadout-content {
    flex: 1;
    overflow-y: auto;
    padding: 16px;
}

.loadout-loading,
.loadout-error {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 120px;
    color: var(--text-secondary);
    font-size: 13px;
}

.loadout-error {
    color: var(--status-error, #e05c5c);
}

.loadout-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 48px 16px;
    text-align: center;
}

.loadout-empty-headline {
    font-family: var(--font-display);
    font-size: 14px;
    font-weight: 600;
    color: var(--text-primary);
}

.loadout-empty-sub {
    font-size: 12px;
    color: var(--text-secondary);
    max-width: 260px;
    line-height: 1.5;
}

/* Sections */
.capability-sections {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.capability-section {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.capability-section-label {
    font-family: var(--font-display);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--text-secondary);
    padding-left: 2px;
}

/* Capability grid */
.capability-grid {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

/* Capability tile */
.capability-tile {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 16px;
    border-radius: 8px;
    border: 1px solid var(--border-subtle);
    background: var(--surface-raised, #1a1a24);
    cursor: default;
    transition: border-color 0.15s, background 0.15s;
    user-select: none;
}

.capability-tile--unlocked {
    cursor: pointer;
    border-color: var(--border-glow-gold);
}

.capability-tile--unlocked:hover {
    background: var(--surface-hover, #1e1e2e);
    border-color: var(--accent-gold);
}

.capability-tile--pending {
    opacity: 0.7;
}

.capability-tile--locked {
    opacity: 0.45;
}

/* Tile icon */
.cap-tile-icon {
    font-size: 18px;
    width: 32px;
    text-align: center;
    color: var(--accent-gold);
    flex-shrink: 0;
}

.capability-tile--pending .cap-tile-icon,
.capability-tile--locked .cap-tile-icon {
    color: var(--text-secondary);
}

/* Tile body */
.cap-tile-body {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}

.cap-tile-label {
    font-family: var(--font-display);
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
    letter-spacing: 0.02em;
}

.cap-tile-desc {
    font-size: 11px;
    color: var(--text-secondary);
    line-height: 1.4;
}

.cap-tile-hint {
    font-size: 10px;
    color: var(--text-accent-gold, #d4af37);
    margin-top: 2px;
}

/* State indicator dot */
.cap-tile-status {
    font-size: 10px;
    flex-shrink: 0;
    color: var(--text-secondary);
}

.capability-tile--unlocked .cap-tile-status {
    color: var(--accent-gold);
}

/* ── Phase 2: persona switcher ───────────────────────────────────────────── */

.loadout-persona-strip {
    display: flex;
    gap: 6px;
    margin-top: 12px;
    overflow-x: auto;
    padding-bottom: 2px;
    scrollbar-width: none;
}
.loadout-persona-strip::-webkit-scrollbar { display: none; }

.persona-chip {
    flex-shrink: 0;
    padding: 4px 12px;
    border-radius: 20px;
    border: 1px solid var(--border-subtle);
    background: transparent;
    color: var(--text-secondary);
    font-family: var(--font-display);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.06em;
    cursor: pointer;
    transition: border-color 0.15s, color 0.15s, background 0.15s;
    user-select: none;
}
.persona-chip:hover {
    border-color: var(--border-color, rgba(255,255,255,0.2));
    color: var(--text-primary);
}
.persona-chip--active {
    border-color: var(--accent-gold);
    color: var(--accent-gold);
    background: rgba(212, 175, 55, 0.08);
}

/* ── Available state (unlocked but outside active loadout) ───────────────── */

.capability-tile--available {
    opacity: 0.5;
    cursor: default;
    border-style: dashed;
}
.capability-tile--available:hover {
    opacity: 0.65;
    background: var(--surface-raised, #1a1a24);
}
.capability-tile--available .cap-tile-icon {
    color: var(--text-secondary);
}

/* ── Phase 3: workflow / composed tiles ──────────────────────────────────── */

.workflow-tile {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 16px;
    border-radius: 8px;
    border: 1px solid var(--border-subtle);
    background: var(--surface-raised, #1a1a24);
    cursor: default;
    transition: border-color 0.15s, background 0.15s;
    user-select: none;
}

.workflow-tile--available {
    cursor: pointer;
    border-color: rgba(100, 200, 255, 0.3);
}
.workflow-tile--available:hover {
    border-color: rgba(100, 200, 255, 0.6);
    background: rgba(100, 200, 255, 0.04);
}
.workflow-tile--available .cap-tile-icon {
    color: var(--cyber-cyan, #00c3ff);
}

.workflow-tile--partial {
    opacity: 0.65;
}
.workflow-tile--partial .cap-tile-icon {
    color: var(--text-secondary);
}

.workflow-tile--locked {
    opacity: 0.35;
}

.workflow-requires {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    margin-top: 6px;
}

.workflow-req-badge {
    font-family: var(--font-mono);
    font-size: 9px;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    padding: 2px 6px;
    border-radius: 3px;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.1);
    color: var(--text-secondary);
}

.workflow-tile--available .workflow-req-badge {
    background: rgba(100, 200, 255, 0.08);
    border-color: rgba(100, 200, 255, 0.2);
    color: var(--cyber-cyan, #00c3ff);
}

.workflow-status-ok {
    font-size: 12px;
    color: var(--cyber-cyan, #00c3ff);
}

.workflow-status-partial {
    font-size: 10px;
    font-family: var(--font-mono);
    color: var(--text-secondary);
}

/* ============================================================================
   ONBOARDING PANEL — pre-auth canned chat experience
   ============================================================================
   Visual vocabulary mirrors the Home panel (`.home-panel`, `.home-row`):
   theme-token-only colors, accent-tinted surfaces, restrained
   typography rhythm. Renders correctly under Dark / Light /
   High Contrast and any tenant or NFT theme.

   Watermark and ambient glow stay — they're the one place we go
   bigger than Home. They use `--anviz-accent-secondary` (gold
   family) and `--anviz-accent-primary` (blue/brand) directly so
   they repaint with the theme rather than baking in a single
   palette.
*/

.onboarding-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
    position: relative;
    overflow: hidden;
    background:
        linear-gradient(
            180deg,
            var(--dark-bg) 0%,
            color-mix(in srgb, var(--anviz-accent-secondary) 8%, var(--dark-bg)) 100%
        );
    /* Panel padding lives inside the header / footer / thread so each
       section can opt in to its own breathing room without the outer
       container fighting the watermark layout. */
    padding: 0;
    gap: 0;
}

/* Ambient glow overlay — derives from the active theme accents so
   it follows the same repaint as the rest of the chrome. */
.onboarding-panel::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(
            ellipse 120% 80% at 50% 60%,
            color-mix(in srgb, var(--anviz-accent-secondary) 10%, transparent) 0%,
            transparent 60%
        ),
        radial-gradient(
            circle at 20% 20%,
            color-mix(in srgb, var(--anviz-accent-primary) 8%, transparent) 0%,
            transparent 50%
        ),
        radial-gradient(
            circle at 80% 80%,
            color-mix(in srgb, var(--anviz-accent-secondary) 6%, transparent) 0%,
            transparent 50%
        );
    pointer-events: none;
    z-index: 1;
}

/* Floating M watermark — the one place we deliberately go louder
   than Home does. Glow color tracks the active theme via
   `--anviz-accent-secondary` (gold in Dark, deep blue in Light,
   gold again in High Contrast). Animation respects
   `prefers-reduced-motion`. */
.onboarding-panel::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 150%;
    height: 150%;
    transform: translate(-50%, -42%);
    background: url('/static/m0-logo.jpg') center center no-repeat;
    background-size: contain;
    opacity: 0.045;
    pointer-events: none;
    z-index: 0;
    filter:
        drop-shadow(0 0 80px color-mix(in srgb, var(--anviz-accent-secondary) 25%, transparent))
        drop-shadow(0 0 160px color-mix(in srgb, var(--anviz-accent-primary) 12%, transparent))
        contrast(1.2)
        brightness(0.85);
    animation:
        onboarding-watermark-float 25s ease-in-out infinite,
        onboarding-watermark-glow 10s ease-in-out infinite;
}

@keyframes onboarding-watermark-float {
    0%, 100% {
        transform: translate(-50%, -42%) scale(1);
    }
    50% {
        transform: translate(-50%, -44%) scale(1.02);
    }
}

@keyframes onboarding-watermark-glow {
    0%, 100% {
        filter:
            drop-shadow(0 0 80px color-mix(in srgb, var(--anviz-accent-secondary) 25%, transparent))
            drop-shadow(0 0 160px color-mix(in srgb, var(--anviz-accent-primary) 12%, transparent))
            contrast(1.2)
            brightness(0.85);
        opacity: 0.045;
    }
    50% {
        filter:
            drop-shadow(0 0 100px color-mix(in srgb, var(--anviz-accent-secondary) 35%, transparent))
            drop-shadow(0 0 200px color-mix(in srgb, var(--anviz-accent-primary) 18%, transparent))
            contrast(1.25)
            brightness(0.95);
        opacity: 0.06;
    }
}

@media (prefers-reduced-motion: reduce) {
    .onboarding-panel::after {
        animation: none;
    }
}

/* ----- Header (mirrors home-panel-header rhythm + an oversized mark) ----- */

.onboarding-header {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    gap: var(--spacing-lg);
    padding: var(--spacing-lg) var(--spacing-md) var(--spacing-md);
    border-bottom: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 25%, transparent);
}

/* The header mark and the chat agent avatar both render the m0
   brushed-metal M (`/static/m0-logo.jpg`) — the same artwork that
   sits behind the panel as the watermark. We crop in on the M
   itself via `background-size: 175%` + `background-position` so
   the surrounding dark canvas of the source image stays out of
   frame; an accent-tinted ring + soft glow sits on top to anchor
   the avatar against any theme background.
   The "M" character is set as a fallback below the image (only
   visible if the asset fails to load) and provides the accessible
   name via `aria-label` on the container. */

.onboarding-mark {
    width: 56px;
    height: 56px;
    flex-shrink: 0;
    border-radius: var(--radius-md);
    overflow: hidden;
    position: relative;
    background-color: var(--dark-bg);
    background-image: url('/static/m0-logo.jpg');
    background-size: 175%;
    background-position: center 38%;
    background-repeat: no-repeat;
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 45%, transparent);
    box-shadow:
        0 8px 32px color-mix(in srgb, var(--anviz-accent-secondary) 25%, transparent),
        inset 0 1px 0 color-mix(in srgb, var(--patriot-white) 12%, transparent);
}

.onboarding-mark-letter {
    /* Visually hidden — only painted if the background image fails
       to load (then the text shows through the transparent layer
       and gives the viewer something rather than a blank tile). */
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'Orbitron', monospace;
    font-size: 1.85rem;
    font-weight: 900;
    color: transparent;
}

.onboarding-title {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.onboarding-headline {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 1.25rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    color: var(--patriot-white);
    line-height: 1.2;
}

/* ----- Browser-compat warning banner ----- */

.onboarding-warning {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: flex-start;
    gap: var(--spacing-md);
    margin: 0 var(--spacing-lg);
    padding: var(--spacing-md) var(--spacing-lg);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--status-warning) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--status-warning) 35%, transparent);
    animation: onboarding-warning-in var(--duration-normal) ease;
}

@keyframes onboarding-warning-in {
    from { opacity: 0; transform: translateY(-6px); }
    to   { opacity: 1; transform: translateY(0); }
}

.onboarding-warning-body {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.onboarding-warning-title {
    font-family: 'Orbitron', monospace;
    font-size: 0.82rem;
    font-weight: 700;
    color: var(--text-primary);
    letter-spacing: 0.04em;
}

.onboarding-warning-text {
    margin: 0;
    font-size: 0.78rem;
    line-height: 1.5;
    color: var(--text-secondary);
}

/* ----- Chat thread -----
   Vertically centered when content is small (the welcome state, ~1
   message) so the composition reads as a hero, not a top-anchored
   chat. As more turns arrive, content grows and naturally flows
   downward; once it overflows the viewport the scroll container
   takes over. The trick is `min-height: 100%` on the inner +
   `justify-content: safe center` — `safe` keeps overflowing content
   accessible (no clipping above the scroll area). */

.onboarding-thread {
    position: relative;
    z-index: 1;
    flex: 1;
    min-height: 0;
    padding: 0 var(--spacing-lg);
}

.onboarding-thread-inner {
    display: flex;
    flex-direction: column;
    justify-content: safe center;
    gap: var(--spacing-md);
    width: 100%;
    max-width: 720px;
    margin: 0 auto;
    padding: var(--spacing-md) 0 var(--spacing-xl);
    min-height: 100%;
    box-sizing: border-box;
}

.onboarding-message {
    display: flex;
    gap: var(--spacing-md);
    animation: onboarding-message-in var(--duration-normal) ease;
}

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

.onboarding-message.from-user {
    flex-direction: row-reverse;
}

.onboarding-message-avatar {
    flex-shrink: 0;
    width: 44px;
    height: 44px;
    border-radius: var(--radius-md);
    overflow: hidden;
    position: relative;
    background-color: var(--dark-bg);
    background-image: url('/static/m0-logo.jpg');
    background-size: 175%;
    background-position: center 38%;
    background-repeat: no-repeat;
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 40%, transparent);
    box-shadow:
        0 4px 12px color-mix(in srgb, var(--anviz-accent-secondary) 20%, transparent),
        inset 0 1px 0 color-mix(in srgb, var(--patriot-white) 12%, transparent);
}

.onboarding-message-avatar-letter {
    /* Same fallback strategy as `.onboarding-mark-letter` — the
       letter sits underneath the background image and only shows
       through if the image fails. Real accessible name lives on
       the parent via `aria-label`. */
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'Orbitron', monospace;
    font-size: 1.1rem;
    font-weight: 700;
    color: transparent;
}

.onboarding-message-body {
    flex: 1;
    min-width: 0;
    max-width: 560px;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.onboarding-message-text {
    padding: var(--spacing-md) var(--spacing-lg);
    border-radius: var(--radius-lg);
    font-size: 1rem;
    line-height: 1.6;
    color: var(--text-primary);
}

.from-m .onboarding-message-text {
    background: color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 25%, transparent);
    border-top-left-radius: var(--radius-sm);
    backdrop-filter: blur(8px);
}

.from-user .onboarding-message-text {
    background: color-mix(in srgb, var(--anviz-accent-secondary) 14%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 45%, transparent);
    border-top-right-radius: var(--radius-sm);
    backdrop-filter: blur(8px);
}

.onboarding-message-text code {
    padding: 1px 6px;
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-bg-panel) 70%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 20%, transparent);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.82rem;
    color: var(--text-accent);
}

.onboarding-message-text strong {
    color: var(--patriot-white);
    font-weight: 700;
}

.onboarding-message-text p {
    margin: 0 0 var(--spacing-sm) 0;
}

.onboarding-message-text p:last-child {
    margin-bottom: 0;
}

.onboarding-message-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-sm);
    padding-left: var(--spacing-xs);
}

/* The pending-entity-invite list reuses the message-actions row but
   sits outside a chat bubble — give it a touch of breathing room
   so the buttons read as a group, not afterthoughts. */
.onboarding-entity-choice {
    margin-top: var(--spacing-sm);
}

/* ----- Email input row ----- */

.onboarding-email-row {
    display: flex;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--anviz-bg-panel) 70%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 25%, transparent);
    backdrop-filter: blur(8px);
    animation: onboarding-message-in var(--duration-normal) ease;
}

.onboarding-email-input {
    flex: 1;
    min-width: 0;
    padding: var(--spacing-sm) var(--spacing-md);
    background: color-mix(in srgb, var(--dark-bg) 60%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 30%, transparent);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.95rem;
    outline: none;
    transition: border-color var(--duration-fast), box-shadow var(--duration-fast);
}

.onboarding-email-input::placeholder {
    color: var(--text-muted);
}

.onboarding-email-input:focus {
    border-color: var(--anviz-accent-primary);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--anviz-accent-primary) 25%, transparent);
}

/* ----- Typing indicator ----- */

.onboarding-typing {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 25%, transparent);
    border-top-left-radius: var(--radius-sm);
    width: max-content;
}

.onboarding-typing-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--anviz-accent-primary);
    animation: onboarding-typing-bounce 1.4s infinite;
}

.onboarding-typing-dot:nth-child(2) { animation-delay: 0.2s; }
.onboarding-typing-dot:nth-child(3) { animation-delay: 0.4s; }

@keyframes onboarding-typing-bounce {
    0%, 60%, 100% { transform: translateY(0);    opacity: 0.4; }
    30%           { transform: translateY(-6px); opacity: 1;   }
}

/* ============================================================================
   MODAL PRIMITIVE (components/modal.rs)
   ============================================================================
   The `<Modal>` component renders `.modal-overlay > .modal > (.modal-header
   .modal-body .modal-footer)` plus a `.modal-close-btn`. None of those
   classes had styles before now (legacy CSS targeted `.modal-content`
   / `.close-btn` from a removed pattern), which is why earlier modals
   rendered as full-bleed unstyled containers with browser-default
   buttons. This block is the canonical chrome.

   Theme-token only — overlay tints from text.primary so it inverts
   correctly under Light, panel surface from --modal-bg (= bg.elevated),
   accents from --anviz-accent-secondary (blue family) for the rest
   ring and --anviz-accent-primary (gold) for hover/focus glow.
*/

.modal-overlay {
    position: fixed;
    inset: 0;
    z-index: 2000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-lg);
    /* Scrim derived from text.primary so it inverts cleanly between
       Dark (near-white text → near-white scrim with low alpha reads
       as a soft frost) and Light (near-black text → near-black scrim
       reads as a proper dim). */
    background: color-mix(in srgb, var(--text-primary) 8%, transparent);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}

.modal {
    position: relative;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 560px;
    max-height: calc(100vh - var(--spacing-xl) * 2);
    background: var(--modal-bg);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 50%, transparent);
    border-radius: var(--radius-lg);
    box-shadow:
        0 24px 64px color-mix(in srgb, var(--dark-bg) 80%, transparent),
        0 0 0 1px color-mix(in srgb, var(--patriot-white) 4%, transparent),
        var(--shadow-glow-blue);
    overflow: hidden;
    animation: modal-in var(--duration-normal) ease;
}

@keyframes modal-in {
    from { opacity: 0; transform: translateY(8px) scale(0.98); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* Mobile: take the full viewport. The desktop card sits centered
   with margin-around (`max-height: calc(100vh - spacing-xl*2)`),
   but on phone-sized viewports that margin + the iOS toolbar
   chrome leaves the form body too narrow — long forms (Generate
   invite code, Sponsor someone, Add entity) clip at top + bottom
   and only show a sliver of scrollable middle. Full-screen on
   mobile gives the form the whole visible viewport for the
   modal-body scroll surface; `.modal-header` stays pinned at top
   and `.modal-footer` at bottom thanks to the flex-column +
   `overflow: hidden` on `.modal` and `overflow-y: auto` on
   `.modal-body` (which is in the body's own rule block above).
   Removing the radius + glow on mobile is canonical — full-bleed
   surfaces don't have visible borders on phone screens. */
@media (max-width: 768px) {
    .modal {
        max-width: 100vw;
        max-height: 100vh;
        width: 100vw;
        height: 100vh;
        border-radius: 0;
        border: none;
        box-shadow: none;
    }
    .modal-body {
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }
}

.modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
    padding: var(--spacing-md) var(--spacing-lg);
    border-bottom: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 25%, transparent);
}

.modal-header h3,
.modal-header h2 {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.92rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--patriot-white);
}

.modal-close-btn {
    appearance: none;
    background: transparent;
    border: 1px solid transparent;
    border-radius: var(--radius-sm);
    color: var(--text-muted);
    font-size: 1.25rem;
    line-height: 1;
    width: 28px;
    height: 28px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition:
        color var(--duration-fast),
        border-color var(--duration-fast),
        background var(--duration-fast);
}

.modal-close-btn:hover {
    color: var(--text-primary);
    border-color: color-mix(in srgb, var(--anviz-accent-primary) 50%, transparent);
    background: color-mix(in srgb, var(--anviz-accent-primary) 10%, transparent);
}

.modal-close-btn:focus-visible {
    outline: 2px solid var(--anviz-accent-primary);
    outline-offset: 2px;
}

.modal-body {
    padding: var(--spacing-lg);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

.modal-footer {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: var(--spacing-sm);
    padding: var(--spacing-md) var(--spacing-lg);
    border-top: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 25%, transparent);
    background: color-mix(in srgb, var(--anviz-bg-panel) 50%, transparent);
}

/* ----- Form field token compliance -----
   The `.form-field-input` family used `rgba(255, 255, 255, 0.2)` for
   borders, which reads as a hard white edge on Light themes. Switch
   to a theme-token-derived border that inverts cleanly. */
.form-field-input {
    background: color-mix(in srgb, var(--anviz-bg-panel) 70%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 30%, transparent);
    color: var(--text-primary);
    transition:
        border-color var(--duration-fast),
        box-shadow var(--duration-fast),
        background var(--duration-fast);
}

.form-field-input:focus {
    outline: none;
    border-color: var(--anviz-accent-secondary);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--anviz-accent-secondary) 25%, transparent);
}

.form-field-input::placeholder {
    color: var(--text-muted);
}

/* Native <select> dropdown chevron — CSS-drawn so it tracks the
   active theme via currentColor (was an embedded SVG with a
   hard-coded blue fill in legacy `.modal-body .form-group select`). */
.form-field-input--select {
    appearance: none;
    -webkit-appearance: none;
    cursor: pointer;
    padding-right: calc(var(--spacing-md) + 16px);
    background-image: linear-gradient(45deg, transparent 50%, currentColor 50%),
        linear-gradient(135deg, currentColor 50%, transparent 50%);
    background-position:
        calc(100% - 14px) center,
        calc(100% - 9px) center;
    background-size: 5px 5px, 5px 5px;
    background-repeat: no-repeat;
}

.form-field-input--select option {
    background: var(--modal-bg);
    color: var(--text-primary);
}

/* ============================================================================
   CHAT BOTTOM BAR (panels/chat/bottom_bar.rs)
   ============================================================================
   The compact controls row that sits between the chat messages and the
   chat input. Replaced the legacy in-chat header dropdowns
   (SessionManager + ModalitySelector). Two children:
   - Conversations button — opens the Conversations panel as an aux slot.
     Label tracks the active thread title.
   - Modality picker — per-thread cognitive mode, kept inline so the
     user can read their current mode while composing.
*/

/* ============================================================================
   CHAT BAR — Row A of the chat panel's two-row chrome
   (PR Series A.4 hotfix, 2026-05-11)

   Replaces the legacy `.chat-action-bar` + `.chat-bottom-bar-row`
   + `.chat-bottom-bar` stack. Two clusters: leading (Threads +
   D.B.O.M.) and trailing (Send + Receive quick-nav).

   Dimensionally aligned with `.m-panel-bar__row` (52px container,
   44px inner controls) so chat + auxiliary panel chrome rows
   land at the same horizontal lines across the workspace.
   ============================================================================ */

/* Outer chat-bar wrapper hosts the chrome (background +
   border-top above + border-bottom below). Mirrors the
   panel-bar's `.m-panel-bar` + `__row--top` border treatment
   exactly: bar's own border-top separates the bar from the
   message thread above; border-bottom separates Row A from
   Row B (the chat input). Square corners by design — the bar
   is a horizontal band of chrome, not a discrete card. */
.chat-bar-row {
    flex-shrink: 0;
    background: var(--bar-row-bg);
    border-top: var(--bar-row-border);
    border-bottom: var(--bar-row-divider);
}

.chat-bar {
    height: var(--bar-row-height-top);
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 var(--panel-edge-pad);
    gap: var(--spacing-sm);
}

.chat-bar__leading,
.chat-bar__trailing {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-shrink: 0;
}

/* Chat-bar buttons mirror the panel-bar's switcher-tab visual
   contract EXACTLY: same gradient, same inset shadow, same
   hover lift, same active gold-fill. One button design across
   both bars — a lit nav button means the same thing wherever
   it appears in the workspace chrome. */
.chat-bar__button {
    height: var(--bar-button-size);
    padding: 0 var(--spacing-md);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-xs);
    background: linear-gradient(
        180deg,
        color-mix(in srgb, var(--primary-blue) 14%, transparent) 0%,
        color-mix(in srgb, var(--primary-blue) 6%, transparent) 100%
    );
    border: 1px solid var(--primary-blue);
    border-radius: var(--radius-md);
    color: var(--primary-blue);
    font-family: 'Orbitron', monospace;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 1px;
    text-transform: uppercase;
    cursor: pointer;
    box-shadow:
        inset 0 1px 0 color-mix(in srgb, var(--text-accent) 18%, transparent),
        inset 0 -1px 0 color-mix(in srgb, black 30%, transparent);
    transition: background 160ms ease, color 120ms ease,
        border-color 160ms ease, box-shadow 160ms ease, transform 120ms ease;
}

.chat-bar__button:hover:not(:disabled):not(.active) {
    background: linear-gradient(
        180deg,
        color-mix(in srgb, var(--primary-blue) 22%, transparent) 0%,
        color-mix(in srgb, var(--primary-blue) 12%, transparent) 100%
    );
    color: var(--text-primary);
    transform: translateY(-1px);
    box-shadow:
        inset 0 1px 0 color-mix(in srgb, var(--text-accent) 28%, transparent),
        inset 0 -1px 0 color-mix(in srgb, black 30%, transparent),
        var(--shadow-glow-blue);
}

.chat-bar__button:active:not(:disabled):not(.active) {
    transform: translateY(0);
    box-shadow:
        inset 0 2px 4px color-mix(in srgb, black 40%, transparent),
        inset 0 -1px 0 color-mix(in srgb, var(--text-accent) 12%, transparent);
}

.chat-bar__button.active {
    background: linear-gradient(
        180deg,
        color-mix(in srgb, var(--accent-gold) 100%, white 8%) 0%,
        var(--accent-gold) 100%
    );
    border-color: var(--accent-gold);
    color: var(--dark-bg);
    box-shadow:
        inset 0 1px 0 color-mix(in srgb, white 25%, transparent),
        inset 0 -1px 0 color-mix(in srgb, black 25%, transparent),
        var(--shadow-glow-gold);
}

.chat-bar__button:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}

/* D.B.O.M. stub — slightly subdued treatment so it doesn't read
   as a primary action while functional wiring is pending. The
   button is reachable + tooltip-discoverable but visually
   defers to the live Threads / Send / Receive buttons next to
   it. */
.chat-bar__button--dbom {
    border-style: dashed;
    color: var(--text-muted);
    border-color: color-mix(in srgb, var(--text-muted) 65%, transparent);
}

.chat-bar__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: 0.95rem;
    line-height: 1;
}

.chat-bar__label {
    line-height: 1;
}

@media (max-width: 480px) {
    .chat-bar {
        height: 48px;
    }
    .chat-bar__button {
        height: 40px;
        padding: 0 var(--spacing-sm);
        font-size: 0.62rem;
    }
}

/* ============================================================================
   CONVERSATIONS PANEL (panels/conversations/mod.rs)
   ============================================================================
   Sibling-panel replacement for the legacy in-chat thread dropdown.
   Two regions: header (eyebrow + subtitle + "+ New conversation"),
   then a scrollable list of past threads sorted most-recent-first.
*/

.conversations-panel {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    height: 100%;
    padding: var(--spacing-lg);
    overflow-y: auto;
}

.conversations-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--spacing-md);
    flex-shrink: 0;
    padding-bottom: var(--spacing-md);
    border-bottom: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 25%, transparent);
}

.conversations-header-text {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.conversations-eyebrow {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--anviz-accent-primary);
}

.conversations-subtitle {
    margin: 0;
    font-size: 0.82rem;
    line-height: 1.5;
    color: var(--text-secondary);
}

.conversations-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.conversations-list-item {
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--anviz-bg-panel) 100%, transparent);
    border: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 20%, transparent);
    transition: background var(--duration-fast), border-color var(--duration-fast);
}

.conversations-list-item:hover {
    border-color: color-mix(in srgb, var(--anviz-accent-secondary) 50%, transparent);
    background: color-mix(in srgb, var(--anviz-accent-secondary) 6%, transparent);
}

.conversations-list-item.active {
    border-color: color-mix(in srgb, var(--anviz-accent-primary) 65%, transparent);
    background: color-mix(in srgb, var(--anviz-accent-primary) 10%, transparent);
    box-shadow: 0 0 12px color-mix(in srgb, var(--anviz-accent-primary) 18%, transparent);
}

.conversations-list-item-button {
    appearance: none;
    width: 100%;
    background: transparent;
    border: none;
    padding: var(--spacing-sm) var(--spacing-md);
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
}

.conversations-list-item-button:focus-visible {
    outline: 2px solid var(--anviz-accent-primary);
    outline-offset: 2px;
}

.conversations-list-item-title {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-family: 'Orbitron', monospace;
    font-size: 0.86rem;
    font-weight: 600;
    color: var(--patriot-white);
}

.conversations-list-item-meta {
    flex-shrink: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
    color: var(--text-muted);
}

.conversations-empty {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-lg);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--anviz-bg-panel) 60%, transparent);
    border: 1px dashed color-mix(in srgb, var(--text-muted) 60%, transparent);
}

.conversations-empty-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    color: var(--text-secondary);
}

.conversations-empty-hint {
    margin: 0;
    font-size: 0.78rem;
    line-height: 1.4;
    color: var(--text-muted);
}

/* ----- Footer (mirrors home-footer vocabulary) ----- */

.onboarding-footer {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    border-top: 1px solid color-mix(in srgb, var(--anviz-accent-secondary) 20%, transparent);
}

.onboarding-footer-icon {
    font-size: 0.88rem;
    line-height: 1;
}

.onboarding-footer-text {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-secondary);
}

/* ============================================================================
   PROVIDER CATALOG + ROUTE AVAILABILITY (ADR-030 Phase 4)
   ============================================================================ */

.provider-catalog-panel,
.route-availability-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--bg-secondary);
    color: var(--text-primary);
}

.provider-catalog-header,
.route-availability-header {
    padding: var(--spacing-md);
    border-bottom: 1px solid var(--border-color);
    background: rgba(0, 0, 0, 0.3);
}

.provider-catalog-title,
.route-availability-title {
    margin: 0 0 var(--spacing-xs) 0;
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--primary-blue);
}

.provider-catalog-subtitle,
.route-availability-subtitle {
    margin: 0;
    font-size: 0.78rem;
    color: var(--text-secondary);
}

.provider-catalog-content,
.route-availability-content {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-md);
}

/* Catalog list rows */
.provider-catalog-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.provider-catalog-row {
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
    background: rgba(255, 255, 255, 0.02);
    transition: border-color var(--duration-fast);
}

.provider-catalog-row:hover {
    border-color: var(--primary-blue);
}

.provider-catalog-row-button {
    width: 100%;
    background: transparent;
    border: none;
    color: inherit;
    text-align: left;
    padding: var(--spacing-md);
    cursor: pointer;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.provider-catalog-row-name {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--text-primary);
}

.provider-catalog-row-meta {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-xs);
    align-items: center;
}

.provider-catalog-row-id {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.7rem;
    color: var(--text-secondary);
}

/* Provider detail */
.provider-detail {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.provider-detail-back {
    align-self: flex-start;
    background: transparent;
    border: 1px solid var(--border-color);
    color: var(--text-secondary);
    padding: 4px 10px;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 0.78rem;
}

.provider-detail-back:hover {
    color: var(--text-primary);
    border-color: var(--primary-blue);
}

.provider-detail-header h3 {
    margin: 0 0 var(--spacing-xs) 0;
    font-size: 1.1rem;
    color: var(--text-primary);
}

.provider-detail-meta {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-xs);
    align-items: center;
}

.provider-detail-id {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
    color: var(--text-secondary);
}

.provider-detail-section {
    border-top: 1px solid var(--border-color);
    padding-top: var(--spacing-md);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.provider-detail-section-label {
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-secondary);
}

.provider-detail-section-count {
    margin-left: 4px;
    color: var(--text-secondary);
    font-weight: 400;
}

.provider-detail-link {
    color: var(--primary-blue);
    text-decoration: none;
    font-size: 0.85rem;
    word-break: break-all;
}

.provider-detail-link:hover {
    text-decoration: underline;
}

.provider-detail-notes {
    margin: 0;
    font-size: 0.85rem;
    color: var(--text-primary);
    line-height: 1.4;
}

.provider-detail-empty {
    margin: 0;
    font-size: 0.8rem;
    color: var(--text-secondary);
    font-style: italic;
}

.provider-detail-json {
    background: rgba(0, 0, 0, 0.4);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    padding: var(--spacing-sm);
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.75rem;
    color: var(--text-primary);
    overflow-x: auto;
    white-space: pre;
}

.provider-detail-gate-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.provider-detail-gate-row {
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    padding: var(--spacing-sm);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.provider-detail-gate-line {
    display: flex;
    gap: var(--spacing-sm);
    align-items: center;
}

.gate-requirements {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-xs);
}

.gate-requirement {
    font-size: 0.72rem;
    padding: 2px 8px;
    border-radius: var(--radius-sm);
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid var(--border-color);
}

.gate-requirement-kyc {
    color: var(--accent-gold);
}

.gate-requirement-kyb {
    color: var(--primary-blue);
}

.gate-requirements-empty {
    font-size: 0.72rem;
    color: var(--text-secondary);
    font-style: italic;
}

/* Provider kind / integration / jurisdiction badges */
.provider-kind-badge,
.integration-status-badge,
.jurisdiction-status-badge {
    font-size: 0.65rem;
    padding: 2px 6px;
    border-radius: var(--radius-sm);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    border: 1px solid var(--border-color);
}

.provider-kind-bridge { color: var(--cyber-cyan, #61dafb); }
.provider-kind-fiat { color: var(--accent-gold); }
.provider-kind-payment { color: var(--primary-blue); }
.provider-kind-custody { color: var(--text-primary); }

.integration-status-active { color: var(--status-success, #22c55e); }
.integration-status-paused { color: var(--status-warning, #fbbf24); }
.integration-status-sunset { color: var(--text-secondary); }
.integration-status-coming-soon { color: var(--accent-gold); }

.jurisdiction-status-active { color: var(--status-success, #22c55e); }
.jurisdiction-status-suspended { color: var(--status-warning, #fbbf24); }
.jurisdiction-status-sunset { color: var(--text-secondary); }
.jurisdiction-status-coming-soon { color: var(--accent-gold); }

.jurisdiction-code {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-primary);
    text-transform: uppercase;
}

/* Route availability panel */
.route-availability-section {
    margin-bottom: var(--spacing-lg);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
    background: rgba(255, 255, 255, 0.02);
}

.route-availability-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-sm) var(--spacing-md);
    border-bottom: 1px solid var(--border-color);
}

.route-availability-section-title {
    margin: 0;
    font-size: 0.9rem;
    color: var(--text-primary);
}

.route-availability-section-count {
    margin-left: 4px;
    color: var(--text-secondary);
    font-weight: 400;
    font-size: 0.78rem;
}

.route-availability-section-empty {
    margin: 0;
    padding: var(--spacing-md);
    font-size: 0.8rem;
    color: var(--text-secondary);
    font-style: italic;
}

.route-availability-toggle {
    background: transparent;
    border: 1px solid var(--border-color);
    color: var(--text-secondary);
    padding: 2px 8px;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 0.72rem;
}

.route-availability-toggle:hover {
    color: var(--text-primary);
    border-color: var(--primary-blue);
}

.route-availability-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
}

.route-availability-row {
    display: grid;
    grid-template-columns: 1.5fr auto auto 1fr;
    gap: var(--spacing-sm);
    align-items: center;
    padding: var(--spacing-sm) var(--spacing-md);
    border-bottom: 1px solid var(--border-color);
    font-size: 0.85rem;
}

.route-availability-row:last-child {
    border-bottom: none;
}

.route-availability-row-name {
    font-weight: 600;
    color: var(--text-primary);
}

.route-availability-row-status,
.route-availability-row-reason {
    text-align: right;
    font-size: 0.78rem;
}

.route-availability-row-status-reachable {
    color: var(--status-success, #22c55e);
    font-weight: 600;
}

.route-availability-row-reason {
    color: var(--accent-gold);
}

.route-availability-row-blocked {
    opacity: 0.85;
}

.route-availability-empty {
    text-align: center;
    padding: var(--spacing-xl) var(--spacing-md);
}

.route-availability-empty-title {
    margin: 0 0 var(--spacing-xs) 0;
    font-size: 0.95rem;
    color: var(--text-primary);
}

.route-availability-empty-subtitle {
    margin: 0;
    font-size: 0.8rem;
    color: var(--text-secondary);
}

.provider-catalog-empty {
    padding: var(--spacing-md);
    color: var(--text-secondary);
    font-style: italic;
}

/* ============================================================================
   FIRST-ENTITY ONBOARDING PROMPT (ADR-033 onboarding-gap fix)
   ============================================================================
   Replaces the (now-deleted) operator-claim row from ADR-030 Phase 5.
   Reuses the same prominent-banner visual treatment: the gold-tinted
   gradient pulls the eye when a new user lands on Home with no Entities
   yet, so they never have to hunt for the "create my first Entity" path.
   Disappears automatically the moment principals.is_empty() flips false. */

.home-first-entity-prompt {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--spacing-md);
    margin: var(--spacing-md) 0;
    padding: var(--spacing-md);
    background: linear-gradient(
        135deg,
        color-mix(in srgb, var(--accent-gold) 8%, transparent) 0%,
        color-mix(in srgb, var(--primary-blue) 6%, transparent) 100%
    );
    border: 1px solid color-mix(in srgb, var(--accent-gold) 35%, transparent);
    border-radius: var(--radius-md);
}

.home-first-entity-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.home-first-entity-title {
    margin: 0;
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--accent-gold);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.home-first-entity-subtitle {
    margin: 0;
    font-size: 0.82rem;
    color: var(--text-primary);
    line-height: 1.4;
}

.home-first-entity-hint {
    margin: var(--spacing-xs) 0 0 0;
    font-size: 0.78rem;
    color: var(--text-muted);
    line-height: 1.35;
    font-style: italic;
}

.home-first-entity-button {
    align-self: center;
    background: var(--accent-gold);
    color: var(--bg-primary);
    border: none;
    padding: 8px 16px;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 0.85rem;
    font-weight: 600;
    white-space: nowrap;
    transition: filter var(--duration-fast);
}

.home-first-entity-button:hover:not(:disabled) {
    filter: brightness(1.1);
}

.home-first-entity-button:disabled {
    opacity: 0.6;
    cursor: progress;
}

/* ============================================================================
   INTELLIGENCE INSPECTOR (ADR-032 Phase 6)
   ============================================================================ */

.intelligence-inspector-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--bg-secondary);
    color: var(--text-primary);
}

.intelligence-inspector-header {
    padding: var(--spacing-md);
    border-bottom: 1px solid var(--border-color);
    background: rgba(0, 0, 0, 0.3);
}

.intelligence-inspector-title {
    margin: 0 0 var(--spacing-xs) 0;
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--primary-blue);
}

.intelligence-inspector-subtitle {
    margin: 0;
    font-size: 0.78rem;
    color: var(--text-secondary);
}

.intelligence-inspector-content {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-md);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.intelligence-inspector-empty {
    text-align: center;
    padding: var(--spacing-xl) var(--spacing-md);
}

.intelligence-inspector-empty-title {
    margin: 0 0 var(--spacing-xs) 0;
    font-size: 0.95rem;
    color: var(--text-primary);
}

.intelligence-inspector-empty-subtitle {
    margin: 0;
    font-size: 0.8rem;
    color: var(--text-secondary);
    line-height: 1.4;
}

.intelligence-inspector-status {
    margin: 0;
    padding: var(--spacing-md);
    color: var(--text-secondary);
    font-style: italic;
}

.intelligence-inspector-error {
    margin: 0;
    padding: var(--spacing-md);
    color: var(--status-error, #f87171);
    font-family: 'IBM Plex Mono', monospace;
}

.intelligence-inspector-stats {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    background: rgba(255, 255, 255, 0.03);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
}

.intelligence-inspector-stat {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.intelligence-inspector-stat-label {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-secondary);
}

.intelligence-inspector-stat-value {
    font-size: 1.2rem;
    font-weight: 600;
    color: var(--text-primary);
    font-family: 'IBM Plex Mono', monospace;
}

.intelligence-inspector-events {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.intelligence-inspector-section-title {
    margin: 0;
    font-size: 0.85rem;
    color: var(--text-primary);
}

.intelligence-inspector-section-count {
    margin-left: 4px;
    color: var(--text-secondary);
    font-weight: 400;
    font-size: 0.78rem;
}

.intelligence-inspector-event-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.intelligence-inspector-event {
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    padding: var(--spacing-sm);
    background: rgba(255, 255, 255, 0.02);
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.intelligence-inspector-event-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    flex-wrap: wrap;
}

.intelligence-inspector-event-kind {
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--accent-gold);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.intelligence-inspector-event-timestamp {
    font-size: 0.72rem;
    font-family: 'IBM Plex Mono', monospace;
    color: var(--text-secondary);
}

.intelligence-inspector-trust-class {
    font-size: 0.65rem;
    padding: 2px 6px;
    border-radius: var(--radius-sm);
    font-weight: 600;
    text-transform: uppercase;
    border: 1px solid var(--border-color);
}

.trust-low { color: var(--text-secondary); }
.trust-medium { color: var(--primary-blue); }
.trust-high { color: var(--accent-gold); }
.trust-authoritative { color: var(--status-success, #22c55e); }

.intelligence-inspector-event-preview {
    margin: 0;
    font-size: 0.82rem;
    color: var(--text-primary);
    line-height: 1.4;
}

.intelligence-inspector-event-meta {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-xs);
    font-size: 0.7rem;
    color: var(--text-secondary);
    font-family: 'IBM Plex Mono', monospace;
}

/* ============================================================================
   SUPPORT ACCESS (ADR-Phase-7)
   ============================================================================ */

.support-access-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--bg-secondary);
    color: var(--text-primary);
}

.support-access-header {
    padding: var(--spacing-md);
    border-bottom: 1px solid var(--border-color);
    background: rgba(0, 0, 0, 0.3);
}

.support-access-title {
    margin: 0 0 var(--spacing-xs) 0;
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--primary-blue);
}

.support-access-subtitle {
    margin: 0;
    font-size: 0.78rem;
    color: var(--text-secondary);
}

.support-access-content {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-md);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.support-access-empty {
    text-align: center;
    padding: var(--spacing-xl) var(--spacing-md);
}

.support-access-empty-title {
    margin: 0 0 var(--spacing-xs) 0;
    font-size: 0.95rem;
    color: var(--text-primary);
}

.support-access-empty-subtitle {
    margin: 0;
    font-size: 0.8rem;
    color: var(--text-secondary);
    line-height: 1.4;
}

.support-access-status {
    margin: 0;
    padding: var(--spacing-md);
    color: var(--text-secondary);
    font-style: italic;
}

.support-access-error {
    margin: 0;
    padding: var(--spacing-sm) var(--spacing-md);
    color: var(--status-error, #f87171);
    border: 1px solid color-mix(in srgb, var(--status-error, #f87171) 35%, transparent);
    border-radius: var(--radius-sm);
    background: rgba(248, 113, 113, 0.05);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.8rem;
}

.support-access-toggle {
    align-self: flex-start;
    background: transparent;
    border: 1px solid var(--accent-gold);
    color: var(--accent-gold);
    padding: 6px 14px;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 0.85rem;
    font-weight: 600;
}

.support-access-toggle:hover {
    background: color-mix(in srgb, var(--accent-gold) 10%, transparent);
}

.support-access-section-title {
    margin: 0 0 var(--spacing-sm) 0;
    font-size: 0.9rem;
    color: var(--text-primary);
}

.support-access-create-form {
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    background: rgba(255, 255, 255, 0.03);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.support-access-field {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.support-access-field-label {
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-secondary);
}

.support-access-input {
    background: var(--bg-primary, rgba(0, 0, 0, 0.3));
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    color: var(--text-primary);
    padding: 6px 10px;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.82rem;
}

.support-access-input:focus {
    outline: none;
    border-color: var(--primary-blue);
}

.support-access-scopes {
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    padding: var(--spacing-sm);
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.support-access-scope-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    font-size: 0.82rem;
    color: var(--text-primary);
    cursor: pointer;
}

.support-access-form-actions {
    display: flex;
    justify-content: flex-end;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-xs);
}

.support-access-button-primary {
    background: var(--accent-gold);
    color: var(--bg-primary);
    border: none;
    padding: 8px 16px;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 0.85rem;
    font-weight: 600;
}

.support-access-button-primary:hover:not(:disabled) {
    filter: brightness(1.1);
}

.support-access-button-primary:disabled {
    opacity: 0.6;
    cursor: progress;
}

.support-access-button-revoke {
    align-self: flex-start;
    background: transparent;
    border: 1px solid var(--status-error, #f87171);
    color: var(--status-error, #f87171);
    padding: 4px 10px;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 0.78rem;
    font-weight: 600;
}

.support-access-button-revoke:hover:not(:disabled) {
    background: color-mix(in srgb, var(--status-error, #f87171) 10%, transparent);
}

.support-access-button-revoke:disabled {
    opacity: 0.6;
    cursor: progress;
}

.support-access-grants {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.support-access-grant-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.support-access-grant {
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    padding: var(--spacing-sm);
    background: rgba(255, 255, 255, 0.02);
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.support-access-grant-active {
    border-color: color-mix(in srgb, var(--status-success, #22c55e) 35%, var(--border-color));
}

.support-access-grant-inactive {
    opacity: 0.7;
}

.support-access-grant-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.support-access-grant-grantee {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.85rem;
    color: var(--text-primary);
    word-break: break-all;
}

.support-access-status-pill {
    font-size: 0.65rem;
    padding: 2px 8px;
    border-radius: var(--radius-sm);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    border: 1px solid var(--border-color);
}

.status-active {
    color: var(--status-success, #22c55e);
}

.status-revoked {
    color: var(--status-error, #f87171);
}

.support-access-grant-meta {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-sm);
    font-size: 0.72rem;
    color: var(--text-secondary);
    font-family: 'IBM Plex Mono', monospace;
}

.support-access-grant-revoked-at,
.support-access-grant-reason,
.support-access-grant-principal {
    white-space: nowrap;
}

.support-access-grant-details {
    border-top: 1px solid var(--border-color);
    padding-top: 6px;
    font-size: 0.78rem;
}

.support-access-grant-details > summary {
    cursor: pointer;
    color: var(--text-secondary);
}

.support-access-scope-list {
    list-style: none;
    margin: 4px 0 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.support-access-scope-line {
    font-size: 0.78rem;
    color: var(--text-primary);
    padding-left: var(--spacing-sm);
    border-left: 2px solid var(--accent-gold);
}

.support-access-binding-hash {
    margin: 6px 0 0 0;
    font-size: 0.7rem;
    color: var(--text-secondary);
    font-family: 'IBM Plex Mono', monospace;
}

.support-access-binding-hash code {
    color: var(--text-primary);
    background: rgba(0, 0, 0, 0.3);
    padding: 1px 4px;
    border-radius: 3px;
}

/* ===========================================================================
   Agent playback visual affordances (Phase 3a — agent-as-input)
   ===========================================================================
   When the WASM orchestrator (`crates/ui-app/src/runtime/agent_playback.rs`)
   dispatches a synthetic Click against a `[data-agent-target]` element, it
   stamps `data-agent-active="click"` on that element for ~220ms. The
   selectors below paint a brief outline + glow so the user perceives the
   agent's action even when the synthetic click otherwise leaves the
   element in its visual resting state (e.g. clicking the P2P method tab
   when P2P is already the current method — `aria-selected` doesn't
   change, so without this cue the tap is invisible).

   The TypeText path doesn't need its own affordance: the per-character
   keystroke animation in the orchestrator already makes typing
   perceivable.

   Per the spec's "user can see what the agent is doing" rule
   (`docs/specs/agent-addressable-ui.md`).
   ========================================================================= */

@keyframes agent-action-flash {
    0% {
        box-shadow: 0 0 0 0 var(--agent-action-flash-color, rgba(255, 196, 0, 0.85));
        outline-color: var(--agent-action-flash-color, rgba(255, 196, 0, 0.85));
    }
    60% {
        box-shadow: 0 0 0 6px transparent;
        outline-color: var(--agent-action-flash-color, rgba(255, 196, 0, 0.85));
    }
    100% {
        box-shadow: 0 0 0 6px transparent;
        outline-color: transparent;
    }
}

[data-agent-active="click"] {
    /* Outline (not border) so we don't shift layout while the flash
       runs. Animation fades the colored outline + a glow ring out
       over the orchestrator's `AGENT_CLICK_FLASH_MS` window. */
    outline: 2px solid transparent;
    outline-offset: 2px;
    animation: agent-action-flash 220ms ease-out forwards;
    /* Force a stacking context so the box-shadow ring isn't clipped
       by overflow-hidden ancestors. */
    position: relative;
    z-index: 1;
}


/* TaxClassificationPicker (Phase F1 UX, 2026-05-06) — typed
 * (jurisdiction, entity_form, flow_kind, recipient_form, subdivision)
 * authoring inside the Charter editor's tax aspect. */
.tax-classification-picker {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  padding: 0.75rem;
  border: 1px solid var(--color-border, #2a2a2a);
  border-radius: 6px;
  background: var(--color-surface-subtle, #161616);
}

.tax-classification-picker-help {
  margin: 0;
  font-size: 0.85rem;
  color: var(--color-text-muted, #888);
}

.tax-classification-picker-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0.5rem 0.75rem;
}

@media (max-width: 600px) {
  .tax-classification-picker-grid {
    grid-template-columns: 1fr;
  }
}

.tax-classification-picker-error {
  padding: 0.5rem 0.75rem;
  background: var(--color-error-bg, #2a1a1a);
  border-left: 3px solid var(--color-error, #c14545);
  border-radius: 3px;
  font-size: 0.85rem;
}

.tax-classification-picker-error code {
  font-family: var(--font-mono, monospace);
  font-size: 0.85em;
}

.tax-classification-picker-summary {
  padding: 0.5rem 0.75rem;
  background: var(--color-success-bg, #1a2a1a);
  border-left: 3px solid var(--color-success, #45c145);
  border-radius: 3px;
  font-size: 0.85rem;
}

.tax-classification-picker-summary code {
  font-family: var(--font-mono, monospace);
}

.tax-classification-picker-subdivision {
  margin-left: 0.5rem;
  color: var(--color-text-muted, #888);
}

/* ===========================================================================
 * PROVIDERS PANEL (Phase 4 Step 4)
 * ===========================================================================
 *
 * Customer-facing browse panel over the fintech partners powering the
 * user's money movement. Mirrors the chrome conventions used by
 * AccountManagement / PrincipalManagement (header + scroll body +
 * canonical PanelBar at the bottom). Tab-specific surfaces use scoped
 * `providers-tab-*` classes so the panel never inherits sibling-panel
 * CSS by accident.
 *
 * Color modifiers for the user-grade Earn / Hold / Spend axis use
 * subtle tint shifts (no garish backgrounds) so the verb framing reads
 * at a glance without visual noise. */

.providers-panel {
    display: flex;
    flex-direction: column;
    gap: 0;
    min-height: 0;
    /* Explicit `padding-block-end: 0` neutralizes the legacy
       `.providers-panel { padding: var(--spacing-md) }` rule at
       line 42596 (the retired operator-panel CSS block, kept
       alive because the `.provider-card` / `.providers-header`
       / `.wizard-modal` siblings are still consumed by
       `panels/accounts/views/provider_select.rs` +
       `function_providers.rs` + `panels/vault/mod.rs`). Without
       this override, the legacy block's `padding` shorthand
       leaks a bottom-padding band below the canonical PanelBar,
       breaking the bar-flush-to-panel-edge canon. The other
       three sides land via `padding-inline` + `padding-block-start`
       which both override the legacy shorthand naturally. */
    padding-inline: var(--panel-edge-pad);
    padding-block-start: var(--panel-edge-pad);
    padding-block-end: 0;
}

.providers-panel-header {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding-bottom: var(--spacing-md);
}

.providers-panel-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--anviz-accent-primary);
}

.providers-panel-subtitle {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.8rem;
    color: var(--text-muted);
    line-height: 1.5;
}

.providers-panel-scroll {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
    padding: var(--spacing-xs) 0 var(--spacing-lg);
    min-height: 0;
    /* Hide the scroll-track on desktop. The base
       `.panel-scrollable` rule sets `overflow-y: auto` which
       reveals the canonical 8px scrollbar (line 10172) when
       content overflows; sibling list-then-tab panels
       (AccountManagement / PrincipalManagement) only avoid
       this by accident — their content fits the viewport so
       the bar never triggers. The Providers detail view's
       full-catalog list reliably overflows, so we hide
       explicitly. Mobile media query at line 9642+ already
       hides for `.panel-scrollable` system-wide; this just
       lifts the same treatment to desktop for our panel. */
    scrollbar-width: none;
    -ms-overflow-style: none;
}

.providers-panel-scroll::-webkit-scrollbar {
    display: none;
}

/* ----- Priorities-load error banner ------------------------------------ */
/*
 * Renders between the panel header and the scrollable list/detail
 * area when the priorities-track auto-loader fails (substrate 4xx
 * / 5xx, or `monetic-context` rejecting the bearer token). The
 * banner is the user-visible signal that the chip-cluster default
 * (IntentPreset::Speed) is in effect because the substrate-side
 * record couldn't be fetched, plus a Retry affordance that calls
 * the force-refresh primitive `load_provider_priorities` directly.
 *
 * The banner styling intentionally mirrors `.providers-list-error`
 * (same accent border, same warm-tint background) so the two error
 * surfaces feel consistent. Catalog errors render via the existing
 * `ProvidersList` `error` prop and get the list-error treatment;
 * priorities errors get this banner because the priorities track
 * is non-critical (panel still renders the catalog) and shouldn't
 * displace the list view.
 */
.providers-priorities-banner {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
    padding: var(--spacing-sm) var(--spacing-md);
    margin-bottom: var(--spacing-md);
    border-left: 3px solid var(--color-error, #c14545);
    background: color-mix(in srgb, var(--color-error, #c14545) 8%, transparent);
    border-radius: 4px;
}

.providers-priorities-banner-text {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.providers-priorities-banner-title {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--text-secondary);
    line-height: 1.3;
}

.providers-priorities-banner-desc {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
    color: var(--text-muted);
    line-height: 1.4;
    word-break: break-word;
}

/* ----- Pending-KYC-URL banner (hosted-flow providers; today Bridge) ----- */

.providers-kyc-link-banner {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
    padding: var(--spacing-sm) var(--spacing-md);
    margin-bottom: var(--spacing-md);
    border-left: 3px solid var(--color-accent, #d4a14f);
    background: color-mix(in srgb, var(--color-accent, #d4a14f) 10%, transparent);
    border-radius: 4px;
}

.providers-kyc-link-banner-text {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.providers-kyc-link-banner-title {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--text-secondary);
    line-height: 1.3;
}

.providers-kyc-link-banner-desc {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
    color: var(--text-muted);
    line-height: 1.4;
    word-break: break-word;
}

.providers-kyc-link-banner-action {
    flex-shrink: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--color-accent, #d4a14f);
    text-decoration: none;
    padding: 6px 12px;
    border: 1px solid color-mix(in srgb, var(--color-accent, #d4a14f) 60%, transparent);
    border-radius: 4px;
    background: color-mix(in srgb, var(--color-accent, #d4a14f) 5%, transparent);
    transition: background 120ms ease;
}

.providers-kyc-link-banner-action:hover,
.providers-kyc-link-banner-action:focus {
    background: color-mix(in srgb, var(--color-accent, #d4a14f) 20%, transparent);
    outline: none;
}

/* ----- L0 / L1 list view ------------------------------------------------ */

.providers-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.providers-list-empty,
.providers-list-error {
    margin: 0;
    padding: var(--spacing-md);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.82rem;
    color: var(--text-muted);
    line-height: 1.5;
}

.providers-list-error {
    border-left: 3px solid var(--color-error, #c14545);
    background: color-mix(in srgb, var(--color-error, #c14545) 8%, transparent);
}

.providers-list-row {
    display: flex;
    align-items: flex-start;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    border: 1px solid var(--panel-border);
    border-radius: 6px;
    background: var(--panel-row-bg, transparent);
    color: inherit;
    text-align: left;
    cursor: pointer;
    transition: border-color 120ms ease, background 120ms ease, transform 120ms ease;
    font: inherit;
}

.providers-list-row:hover {
    border-color: color-mix(in srgb, var(--accent-gold) 60%, var(--panel-border));
    background: color-mix(in srgb, var(--accent-gold) 4%, transparent);
}

.providers-list-row.active {
    border-color: var(--accent-gold);
    box-shadow:
        inset 0 0 0 1px color-mix(in srgb, var(--accent-gold) 50%, transparent),
        0 0 8px color-mix(in srgb, var(--accent-gold) 25%, transparent);
}

.providers-list-row-icon {
    flex: 0 0 auto;
    font-size: 1.4rem;
    line-height: 1;
    width: 1.8rem;
    text-align: center;
}

.providers-list-row-body {
    display: flex;
    flex-direction: column;
    gap: 4px;
    flex: 1 1 auto;
    min-width: 0;
}

.providers-list-row-name {
    font-family: 'Orbitron', monospace;
    font-size: 0.85rem;
    font-weight: 600;
    letter-spacing: 1px;
    color: var(--text-primary);
}

.providers-list-row-meta {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
}

.providers-list-row-tag {
    display: inline-block;
    padding: 2px 6px;
    border-radius: 3px;
    border: 1px solid var(--panel-border);
    color: var(--text-muted);
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 1px;
}

/* ----- Status pill ------------------------------------------------------ */

.providers-status-pill {
    display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    font-family: 'IBM Plex Mono', monospace;
    border: 1px solid var(--panel-border);
    color: var(--text-muted);
}

.providers-status-pill.active {
    color: var(--color-success, #45c145);
    border-color: color-mix(in srgb, var(--color-success, #45c145) 50%, transparent);
}

.providers-status-pill.degraded {
    color: var(--color-warn, #c19f45);
    border-color: color-mix(in srgb, var(--color-warn, #c19f45) 50%, transparent);
}

.providers-status-pill.maintenance {
    color: var(--color-info, #4598c1);
    border-color: color-mix(in srgb, var(--color-info, #4598c1) 50%, transparent);
}

.providers-status-pill.disabled {
    color: var(--text-muted);
    border-color: var(--panel-border);
    opacity: 0.7;
}

/* ----- Verb chip strip (Earn / Hold / Spend tally) ---------------------- */

.providers-list-verbs {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-top: 2px;
}

.providers-list-verb-chip {
    display: inline-flex;
    align-items: center;
    padding: 2px 6px;
    border-radius: 3px;
    border: 1px solid var(--panel-border);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.7rem;
    color: var(--text-muted);
}

.providers-list-verb-chip.zero {
    opacity: 0.45;
}

.providers-list-verb-chip--earn {
    border-color: color-mix(in srgb, #6fb37a 45%, var(--panel-border));
    color: color-mix(in srgb, #6fb37a 80%, var(--text-primary));
}

.providers-list-verb-chip--hold {
    border-color: color-mix(in srgb, #6f8fb3 45%, var(--panel-border));
    color: color-mix(in srgb, #6f8fb3 80%, var(--text-primary));
}

.providers-list-verb-chip--spend {
    border-color: color-mix(in srgb, #b39a6f 45%, var(--panel-border));
    color: color-mix(in srgb, #b39a6f 80%, var(--text-primary));
}

/* ----- Eligibility badge (per-row read-only status) --------------------- */
/*
 * Per the 2026-05-13 design memo + 2026-05-14 panel-bar canon
 * §0 role split, the badge is read-only orientation ("which
 * providers need my attention?"). The action affordance lives
 * in the bar's middle slot as the `onboard` chip. Variants
 * mirror the eligibility states; visual treatment uses the
 * canonical color tokens (success/warn/info/error/muted) so
 * theme switches don't require per-state overrides.
 */
.providers-list-eligibility-badge {
    display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    font-family: 'IBM Plex Mono', monospace;
    border: 1px solid var(--panel-border);
    color: var(--text-muted);
}

/* `Eligible` — gold border + dimmed fill (mirrors ChipSpec's
   `selected` semantic per the bar canon: "this is your active
   provider" rather than "click to commit"). */
.providers-list-eligibility-badge.eligibility-eligible {
    color: var(--color-accent, #c19f45);
    border-color: color-mix(in srgb, var(--color-accent, #c19f45) 60%, transparent);
}

/* `PendingVerification` — substrate is doing work; user has no
   action. Subtle info treatment so it doesn't read as
   urgent. */
.providers-list-eligibility-badge.eligibility-pending {
    color: var(--color-info, #4598c1);
    border-color: color-mix(in srgb, var(--color-info, #4598c1) 50%, transparent);
}

/* `ActionRequired` — substrate rejected, user must update
   specific items. Warn treatment. */
.providers-list-eligibility-badge.eligibility-action-required {
    color: var(--color-warn, #c19f45);
    border-color: color-mix(in srgb, var(--color-warn, #c19f45) 60%, transparent);
}

/* `Failed` — terminal substrate failure. Error treatment. */
.providers-list-eligibility-badge.eligibility-failed {
    color: var(--color-error, #c14545);
    border-color: color-mix(in srgb, var(--color-error, #c14545) 50%, transparent);
}

/* `ReadyToSubmit` / `NeedsAgreement` / `NeedsItems` — user has
   work to do; consumer-side gates. Subtle accent treatment so
   the row reads as actionable without competing with the
   gold-fill commit-action chip the bar will surface. */
.providers-list-eligibility-badge.eligibility-ready,
.providers-list-eligibility-badge.eligibility-agreement,
.providers-list-eligibility-badge.eligibility-items {
    color: color-mix(in srgb, var(--text-primary) 85%, var(--color-accent, #c19f45));
    border-color: color-mix(in srgb, var(--color-accent, #c19f45) 35%, var(--panel-border));
}

/* ----- Accept-agreement modal (Providers Onboard chip target) ----------- */
/*
 * Per the 2026-05-13 design memo (rev 3) §"AcceptAgreementModal":
 * the one new UI piece for the eligibility ship. Click-to-sign
 * primitive; the inventory-model UX doesn't extend to agreements
 * because "I agreed to terms" isn't a vault item the user fills
 * in. Modal stays open through write-failure so the user can
 * retry without losing context.
 */
.accept-agreement-modal-backdrop {
    position: fixed;
    inset: 0;
    background: color-mix(in srgb, #000 60%, transparent);
    backdrop-filter: blur(4px);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 200;
}

.accept-agreement-modal {
    width: min(520px, 92vw);
    max-height: 80vh;
    overflow-y: auto;
    background: var(--card-bg);
    border: 1px solid color-mix(in srgb, var(--color-accent, #c19f45) 30%, var(--panel-border));
    border-radius: 8px;
    padding: var(--spacing-lg);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    box-shadow: 0 24px 64px -12px color-mix(in srgb, #000 70%, transparent);
}

.accept-agreement-modal-header {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.accept-agreement-modal-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.95rem;
    font-weight: 600;
    letter-spacing: 1px;
    text-transform: uppercase;
    color: var(--text-primary);
}

.accept-agreement-modal-subtitle {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-muted);
    line-height: 1.5;
}

.accept-agreement-modal-body {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md) 0;
    border-top: 1px solid var(--panel-border);
    border-bottom: 1px solid var(--panel-border);
}

.accept-agreement-modal-link-row {
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.75rem;
}

.accept-agreement-modal-link-label {
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    font-size: 0.65rem;
}

.accept-agreement-modal-link {
    color: var(--color-accent, #c19f45);
    text-decoration: underline;
    word-break: break-all;
}

.accept-agreement-modal-version {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
    color: var(--text-muted);
}

.accept-agreement-modal-version code {
    color: var(--text-primary);
    background: color-mix(in srgb, var(--panel-border) 60%, transparent);
    padding: 1px 4px;
    border-radius: 2px;
    font-size: 0.7rem;
}

.accept-agreement-modal-error {
    margin: 0;
    padding: var(--spacing-sm);
    border: 1px solid color-mix(in srgb, var(--color-error, #c14545) 50%, transparent);
    border-radius: 4px;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.75rem;
    color: var(--color-error, #c14545);
    background: color-mix(in srgb, var(--color-error, #c14545) 10%, transparent);
}

.accept-agreement-modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: var(--spacing-sm);
}

/* ----- Detail tabs ------------------------------------------------------ */

.providers-tab {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.providers-tab-empty {
    margin: 0;
    padding: var(--spacing-md);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-muted);
    line-height: 1.5;
    border: 1px dashed var(--panel-border);
    border-radius: 4px;
}

/* ----- Verb-grouped capability sections (Capabilities tab) -------------- */

.providers-verb-section {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    border-left: 3px solid var(--panel-border);
    padding-left: var(--spacing-md);
}

.providers-verb-section--earn {
    border-left-color: color-mix(in srgb, #6fb37a 60%, var(--panel-border));
}

.providers-verb-section--hold {
    border-left-color: color-mix(in srgb, #6f8fb3 60%, var(--panel-border));
}

.providers-verb-section--spend {
    border-left-color: color-mix(in srgb, #b39a6f 60%, var(--panel-border));
}

.providers-verb-section--unknown {
    border-left-color: var(--panel-border);
    opacity: 0.85;
}

.providers-verb-section-header {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.providers-verb-section-title {
    margin: 0;
    font-family: 'Orbitron', monospace;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--text-primary);
}

.providers-verb-section-subtitle {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.75rem;
    color: var(--text-muted);
    line-height: 1.4;
}

.providers-capability-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.providers-capability-row {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: var(--spacing-sm) var(--spacing-md);
    border: 1px solid var(--panel-border);
    border-radius: 4px;
}

.providers-capability-row.novel {
    border-color: color-mix(in srgb, var(--accent-gold) 50%, var(--panel-border));
    background: color-mix(in srgb, var(--accent-gold) 4%, transparent);
}

.providers-capability-row--unknown {
    opacity: 0.75;
}

.providers-capability-row-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.providers-capability-row-name {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.85rem;
    color: var(--text-primary);
    font-weight: 500;
}

.providers-capability-row-description {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.75rem;
    color: var(--text-muted);
    line-height: 1.5;
}

.providers-capability-row-meta {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.providers-capability-row-flow {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.72rem;
    color: var(--text-muted);
}

.providers-capability-row-tag {
    display: inline-block;
    padding: 1px 6px;
    border-radius: 3px;
    border: 1px solid var(--panel-border);
    color: var(--text-muted);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.providers-capability-row-tag--novel {
    border-color: color-mix(in srgb, var(--accent-gold) 60%, transparent);
    color: var(--accent-gold);
}

/* ----- Jurisdictions tab ------------------------------------------------ */

.providers-jurisdictions-section {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

/* ----- SLA tab table ---------------------------------------------------- */

.providers-sla-table {
    width: 100%;
    border-collapse: collapse;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-primary);
}

.providers-sla-table th,
.providers-sla-table td {
    text-align: left;
    padding: var(--spacing-sm) var(--spacing-md);
    border-bottom: 1px solid var(--panel-border);
}

.providers-sla-table th {
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1px;
    font-size: 0.7rem;
    color: var(--text-muted);
}

.providers-sla-table tr.novel {
    background: color-mix(in srgb, var(--accent-gold) 4%, transparent);
}

.providers-sla-cell-name {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

/* ===========================================================================
 * SEND CONFIRM MODAL (Phase 4 Step 5)
 * ===========================================================================
 *
 * Renders inside the canonical `<Modal>` primitive's body slot. Modal
 * chrome (overlay, header, ✕) ships from the primitive; this block
 * only styles the Step-5 specific content (picked-route summary,
 * score breakdown, alternates list, custom footer with disabled-
 * aware Confirm). */

.send-confirm-modal-body {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding: var(--spacing-md) 0;
}

.send-confirm-modal-loading,
.send-confirm-modal-empty,
.send-confirm-modal-error {
    margin: 0;
    padding: var(--spacing-md);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.82rem;
    line-height: 1.5;
    color: var(--text-muted);
    border: 1px dashed var(--panel-border);
    border-radius: 4px;
}

.send-confirm-modal-error {
    border: 1px solid color-mix(in srgb, var(--color-error, #c14545) 50%, transparent);
    background: color-mix(in srgb, var(--color-error, #c14545) 8%, transparent);
    color: var(--text-primary);
}

/* ----- Picked-route summary -------------------------------------------- */

.send-confirm-pick {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-md);
    border: 1px solid var(--accent-gold);
    border-radius: 6px;
    background: color-mix(in srgb, var(--accent-gold) 4%, transparent);
}

.send-confirm-pick-header {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 4px;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.85rem;
    color: var(--text-primary);
}

.send-confirm-pick-via {
    color: var(--text-muted);
}

.send-confirm-pick-provider {
    font-family: 'Orbitron', monospace;
    letter-spacing: 1px;
}

.send-confirm-pick-rail,
.send-confirm-pick-settle {
    color: var(--text-muted);
}

.send-confirm-pick-reason {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    color: var(--text-muted);
    line-height: 1.5;
}

.send-confirm-pick-reason-prefix {
    color: var(--accent-gold);
}

.send-confirm-pick-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: var(--spacing-sm);
    margin: 0;
    padding: var(--spacing-sm) 0 0;
    border-top: 1px solid color-mix(in srgb, var(--accent-gold) 20%, var(--panel-border));
}

.send-confirm-pick-stat {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.send-confirm-pick-stat dt {
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
}

.send-confirm-pick-stat dd {
    margin: 0;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.85rem;
    color: var(--text-primary);
}

/* ----- Toggle (score breakdown / alternates) --------------------------- */

.send-confirm-toggle {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    border: 1px solid var(--panel-border);
    border-radius: 4px;
    background: transparent;
    color: var(--text-primary);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.78rem;
    text-align: left;
    cursor: pointer;
    transition: border-color 120ms ease, background 120ms ease;
}

.send-confirm-toggle:hover {
    border-color: color-mix(in srgb, var(--accent-gold) 50%, var(--panel-border));
    background: color-mix(in srgb, var(--accent-gold) 4%, transparent);
}

.send-confirm-toggle.open {
    border-color: var(--accent-gold);
    color: var(--text-accent);
}

.send-confirm-toggle-chevron {
    color: var(--accent-gold);
    width: 0.9rem;
    text-align: center;
}

/* ----- Score breakdown panel ------------------------------------------- */

.send-confirm-breakdown {
    padding: var(--spacing-sm) var(--spacing-md);
    border: 1px solid var(--panel-border);
    border-radius: 4px;
}

.send-confirm-breakdown-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.send-confirm-breakdown-list li {
    display: flex;
    justify-content: space-between;
    gap: var(--spacing-md);
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.75rem;
}

.send-confirm-breakdown-label {
    color: var(--text-muted);
}

.send-confirm-breakdown-value {
    color: var(--text-primary);
}

/* ----- Alternates list ------------------------------------------------- */

.send-confirm-alternates {
    border: 1px solid var(--panel-border);
    border-radius: 4px;
    overflow: hidden;
}

.send-confirm-alternates-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.send-confirm-alternates-row {
    display: grid;
    grid-template-columns: 1.5fr 0.8fr 0.8fr 1fr 0.6fr;
    gap: var(--spacing-sm);
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    background: transparent;
    border: none;
    border-bottom: 1px solid var(--panel-border);
    color: inherit;
    text-align: left;
    cursor: pointer;
    transition: background 120ms ease;
    font-family: 'IBM Plex Mono', monospace;
    font-size: 0.75rem;
}

.send-confirm-alternates-list li:last-child .send-confirm-alternates-row {
    border-bottom: none;
}

.send-confirm-alternates-row:hover {
    background: color-mix(in srgb, var(--accent-gold) 4%, transparent);
}

.send-confirm-alternates-row.selected {
    background: color-mix(in srgb, var(--accent-gold) 8%, transparent);
    color: var(--text-accent);
}

.send-confirm-alternates-provider {
    font-weight: 600;
}

.send-confirm-alternates-rail,
.send-confirm-alternates-settle,
.send-confirm-alternates-cost {
    color: var(--text-muted);
}

.send-confirm-alternates-score {
    text-align: right;
}

/* ----- Footer (custom — primitive's footer is for the auto-confirm
 *               path, which we bypass to render a disabled-aware
 *               Confirm button) ------------------------------------- */

.send-confirm-modal-footer {
    display: flex;
    justify-content: flex-end;
    gap: var(--spacing-sm);
    padding-top: var(--spacing-md);
    margin-top: var(--spacing-sm);
    border-top: 1px solid var(--panel-border);
}

.send-confirm-modal-cancel,
.send-confirm-modal-confirm {
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: 4px;
    font-family: 'Orbitron', monospace;
    font-size: 0.78rem;
    letter-spacing: 1px;
    text-transform: uppercase;
    cursor: pointer;
    transition: background 120ms ease, transform 120ms ease, opacity 120ms ease;
}

.send-confirm-modal-cancel {
    border: 1px solid var(--panel-border);
    background: transparent;
    color: var(--text-muted);
}

.send-confirm-modal-cancel:hover {
    border-color: color-mix(in srgb, var(--accent-gold) 40%, var(--panel-border));
    color: var(--text-primary);
}

.send-confirm-modal-confirm {
    border: 1px solid var(--accent-gold);
    background: var(--accent-gold);
    color: var(--bg-primary);
}

.send-confirm-modal-confirm:hover:not(:disabled) {
    transform: translateY(-1px);
    box-shadow: 0 0 8px color-mix(in srgb, var(--accent-gold) 40%, transparent);
}

.send-confirm-modal-confirm:disabled {
    opacity: 0.4;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}
