/*
 * Picks & Shovels — REDESIGN layer (PNS_REDESIGN=1)
 * ================================================================
 *
 * Aesthetic direction: "Editorial Terminal".
 *   Bloomberg data-density wedded to FT-Weekend / Monocle editorial
 *   gravitas. Three families of moves push past the baseline theme.css:
 *
 *   1. Typography. Newsreader (display italic, optical sizes) +
 *      Geist (sans labels) + JetBrains Mono (data). Three real,
 *      distinctive faces. Newsreader's optical-size axis lets the
 *      page-title italic land at 144 while the marginalia lands at 9
 *      with full personality preserved.
 *
 *   2. Layered colour. Warmer ink ramp, vermillion bear (oklch 0.66
 *      0.22 28) instead of generic red, oxidised bull, saffron gold
 *      reserved for A+ only, plus a dedicated "phosphor" terminal
 *      tint at oklch(0.78 0.15 165) that lights up *only* live-data
 *      indicators (SSE-connected, just-hot flash, fresh tick). One
 *      hue per role, never overlapping.
 *
 *   3. Editorial structure.
 *        - Masthead bar above each page title — date · session ·
 *          regime · positions · capital — set in smallcaps with
 *          em-dash separators, no pipes. Reads like the strap line
 *          of an investment weekly.
 *        - Drop-cap on the recommendations primer (Newsreader 144).
 *        - Marginalia: page title gets a vertical italic standfirst
 *          rotated 90° in the left gutter (FT page-furniture echo).
 *        - Tile: a horizontal SCORE GAUGE under the grade — the
 *          0.50→1.00 win-rate range plotted as a hairline scale with
 *          a tick at the displayed score. Grade is now FELT visually
 *          on top of the existing accent bar + numeric grade.
 *        - Three rule weights: solid (primary), dashed (secondary),
 *          dotted (tertiary). Hierarchy without colour.
 *        - Stats strip rendered as a continuous monospace ticker —
 *          em-dashes, no bullet pipes.
 *
 * Layered ON TOP of theme.css; loads only when PNS_REDESIGN=1. Every
 * existing class + data-attribute the JS modules consume is preserved
 * (.pns-tile, .pns-tile--new/--score-up/--just-hot/--stale,
 * .pns-pin-btn, .pns-pinned-band, data-osi, data-score, data-vol-oi).
 *
 * Wrapped in :root[data-pns-redesign="on"] so we can flip the flag
 * with a single attribute on <html> without round-tripping CSS.
 */

/* ---------- Fonts -------------------------------------------------- */
@import url('https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,400;0,6..72,500;0,6..72,600;0,6..72,700;1,6..72,400;1,6..72,500;1,6..72,600&family=Geist:wght@300;400;500;600;700&family=JetBrains+Mono:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap');

:root[data-pns-redesign="on"] {
    /* ---- Editorial type stack ---- */
    --pnsx-display:  'Newsreader', 'Iowan Old Style', 'Hoefler Text', Georgia, serif;
    --pnsx-sans:     'Geist', -apple-system, system-ui, sans-serif;
    --pnsx-mono:     'JetBrains Mono', 'IBM Plex Mono', ui-monospace, monospace;

    /* ---- Surface system (warmer than baseline) ---- */
    --pnsx-bg:       oklch(0.115 0.012 250);   /* near-pitch w/ blue undertone */
    --pnsx-bg-2:     oklch(0.135 0.011 250);
    --pnsx-surf:     oklch(0.165 0.013 252);
    --pnsx-surf-hi:  oklch(0.198 0.014 254);
    --pnsx-rule:     oklch(0.255 0.012 252);
    --pnsx-rule-2:   oklch(0.310 0.014 252);   /* primary rule  */
    --pnsx-rule-3:   oklch(0.380 0.016 252);   /* heavy rule   */

    /* ---- Ink ramp ---- */
    --pnsx-ink:      oklch(0.965 0.005 90);
    --pnsx-ink-2:    oklch(0.800 0.008 90);
    --pnsx-ink-3:    oklch(0.620 0.010 90);
    --pnsx-ink-4:    oklch(0.460 0.012 90);
    --pnsx-ink-5:    oklch(0.330 0.012 90);

    /* ---- Signal palette (hue-distinct, role-locked) ---- */
    --pnsx-bull:     oklch(0.74 0.180 152);    /* oxidised green */
    --pnsx-bull-q:   oklch(0.42 0.110 152);
    --pnsx-bear:     oklch(0.66 0.220 28);     /* vermillion, NOT red */
    --pnsx-bear-q:   oklch(0.42 0.140 28);
    --pnsx-gold:     oklch(0.85 0.155 84);     /* saffron, A+ only */
    --pnsx-gold-q:   oklch(0.55 0.110 84);
    --pnsx-amber:    oklch(0.79 0.150 70);     /* heat / warning */
    --pnsx-phos:     oklch(0.81 0.150 168);    /* phosphor — live data only */
    --pnsx-phos-q:   oklch(0.50 0.100 168);
    --pnsx-violet:   oklch(0.72 0.180 295);    /* fresh-tile pulse */

    /* ---- Geometry / rhythm ---- */
    --pnsx-rule-w:   1px;
    --pnsx-accent-w: 4px;
    --pnsx-radius:   2px;
    --pnsx-tile-pad: 18px 22px 16px 26px;
    --pnsx-shadow-1: 0 1px 0 0 oklch(0.255 0.012 252);
}

/* =================================================================
   GLOBAL — body, headings, links
   ================================================================= */

:root[data-pns-redesign="on"] html[data-theme] body,
html[data-pns-redesign="on"] body,
[data-pns-redesign="on"] body {
    background:
        radial-gradient(at 12% 0%, color-mix(in oklch, var(--pnsx-violet) 6%, transparent) 0px, transparent 540px),
        radial-gradient(at 100% 100%, color-mix(in oklch, var(--pnsx-phos) 4%, transparent) 0px, transparent 620px),
        var(--pnsx-bg);
    color: var(--pnsx-ink);
    font-family: var(--pnsx-sans);
    font-feature-settings: 'ss01', 'ss02', 'cv01', 'cv11', 'tnum';
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

/* Override baseline tokens so any consumer of var(--pns-*) auto-inherits. */
[data-pns-redesign="on"] {
    --pns-bg:           var(--pnsx-bg);
    --pns-surface:      var(--pnsx-surf);
    --pns-surface-hi:   var(--pnsx-surf-hi);
    --pns-rule:         var(--pnsx-rule);
    --pns-rule-strong:  var(--pnsx-rule-2);
    --pns-ink:          var(--pnsx-ink);
    --pns-ink-2:        var(--pnsx-ink-2);
    --pns-ink-3:        var(--pnsx-ink-3);
    --pns-ink-4:        var(--pnsx-ink-4);
    --pns-bull:         var(--pnsx-bull);
    --pns-bull-quiet:   var(--pnsx-bull-q);
    --pns-bear:         var(--pnsx-bear);
    --pns-bear-quiet:   var(--pnsx-bear-q);
    --pns-gold:         var(--pnsx-gold);
    --pns-gold-quiet:   var(--pnsx-gold-q);
    --pns-amber:        var(--pnsx-amber);
    --pns-mono:         var(--pnsx-mono);
    --pns-serif:        var(--pnsx-display);
    --pns-accent-width: var(--pnsx-accent-w);
}

/* H1 — display italic Newsreader, generous tracking-tight, optical 60-ish */
[data-pns-redesign="on"] html[data-theme] h1,
[data-pns-redesign="on"] .pns-page-title {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-optical-sizing: auto;
    font-weight: 500;
    font-size: clamp(2.2rem, 3vw + 1rem, 3.4rem);
    letter-spacing: -0.022em;
    line-height: 0.96;
    color: var(--pnsx-ink);
}

[data-pns-redesign="on"] html[data-theme] h2 {
    font-family: var(--pnsx-sans);
    font-weight: 500;
    letter-spacing: -0.005em;
    color: var(--pnsx-ink);
}
[data-pns-redesign="on"] html[data-theme] h3 {
    font-family: var(--pnsx-mono);
    font-weight: 500;
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--pnsx-ink-3);
}

/* Links — gold underline appears on hover (subtle, deliberate) */
[data-pns-redesign="on"] html[data-theme] a:not(.btn):not(.menu a):not(.pns-pin-btn) {
    color: var(--pnsx-ink-2);
    text-decoration: none;
    background-image: linear-gradient(currentColor, currentColor);
    background-size: 0 1px;
    background-repeat: no-repeat;
    background-position: 0 100%;
    transition: color 0.15s, background-size 0.25s ease;
}
[data-pns-redesign="on"] html[data-theme] a:not(.btn):not(.menu a):not(.pns-pin-btn):hover {
    color: var(--pnsx-gold);
    background-size: 100% 1px;
}

/* Selection — phosphor */
[data-pns-redesign="on"] ::selection {
    background: color-mix(in oklch, var(--pnsx-phos) 35%, transparent);
    color: var(--pnsx-ink);
}

/* =================================================================
   MASTHEAD — sits above page-title, hairline rules, smallcaps
   ================================================================= */

[data-pns-redesign="on"] .pns-page-head {
    position: relative;
    padding: 38px 28px 22px 56px;          /* extra left for marginalia */
    background: var(--pnsx-bg);
    border-bottom: 1px solid var(--pnsx-rule-2);
}

/* Marginalia — vertical, italic, in the left gutter. Echoes FT
 * page furniture. Hidden on narrow viewports where there's no room. */
[data-pns-redesign="on"] .pns-page-head::before {
    content: 'PICKS · & · SHOVELS';
    position: absolute;
    left: 18px;
    top: 50%;
    transform: rotate(-90deg) translateX(50%);
    transform-origin: left center;
    font-family: var(--pnsx-mono);
    font-size: 0.62rem;
    letter-spacing: 0.36em;
    color: var(--pnsx-ink-5);
    white-space: nowrap;
    pointer-events: none;
}
@media (max-width: 900px) {
    [data-pns-redesign="on"] .pns-page-head { padding-left: 22px; }
    [data-pns-redesign="on"] .pns-page-head::before { display: none; }
}

[data-pns-redesign="on"] .pns-page-title {
    margin: 0 0 10px 0;
}

/* Strap-line under the title — Newsreader italic 18, slimmed to 60ch */
[data-pns-redesign="on"] .pns-page-sub {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-weight: 400;
    font-size: 1.02rem;
    line-height: 1.45;
    color: var(--pnsx-ink-3);
    max-width: 64ch;
    letter-spacing: 0.005em;
}
[data-pns-redesign="on"] .pns-page-sub .pns-tabular {
    font-family: var(--pnsx-mono);
    font-style: normal;
    font-size: 0.82rem;
    color: var(--pnsx-ink-2);
}

/* =================================================================
   TOPBAR — flat hairline, smallcaps, ticker-tape shape
   ================================================================= */

[data-pns-redesign="on"] header.h-14 {
    background: var(--pnsx-bg);
    border-bottom: 1px solid var(--pnsx-rule-2);
    position: relative;
}
/* Top hairline — phosphor "bar lit" indicator across the whole topbar */
[data-pns-redesign="on"] header.h-14::before {
    content: '';
    position: absolute;
    left: 0; right: 0; top: 0;
    height: 1px;
    background: linear-gradient(
        90deg,
        transparent 0%,
        color-mix(in oklch, var(--pnsx-phos) 55%, transparent) 28%,
        color-mix(in oklch, var(--pnsx-phos) 70%, transparent) 50%,
        color-mix(in oklch, var(--pnsx-phos) 55%, transparent) 72%,
        transparent 100%
    );
}

/* PnL header text — mono small */
[data-pns-redesign="on"] #pnl-header {
    font-family: var(--pnsx-mono);
    font-size: 0.78rem;
    letter-spacing: 0.04em;
    color: var(--pnsx-ink-3);
}
[data-pns-redesign="on"] #pnl-header .font-bold {
    color: var(--pnsx-ink);
    font-weight: 600;
}
[data-pns-redesign="on"] #pnl-header .text-success { color: var(--pnsx-bull) !important; }
[data-pns-redesign="on"] #pnl-header .text-error,
[data-pns-redesign="on"] #pnl-header .text-warning { color: var(--pnsx-bear) !important; }
[data-pns-redesign="on"] #pnl-header .opacity-60 { color: var(--pnsx-rule-2); opacity: 1; }

/* Macro regime badge — square, mono, fully-coloured stripe */
[data-pns-redesign="on"] header.h-14 > span.badge {
    border-radius: 0;
    border: 1px solid currentColor;
    background: transparent;
    font-family: var(--pnsx-mono);
    font-size: 0.66rem;
    font-weight: 500;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    padding: 3px 9px;
    box-shadow: inset 3px 0 0 0 currentColor;
    padding-left: 12px;
}
[data-pns-redesign="on"] header.h-14 > span.badge.badge-success { color: var(--pnsx-bull); }
[data-pns-redesign="on"] header.h-14 > span.badge.badge-error   { color: var(--pnsx-bear); }
[data-pns-redesign="on"] header.h-14 > span.badge.badge-ghost   { color: var(--pnsx-ink-3); }

/* =================================================================
   SIDEBAR — heavier brand mark, rule-led nav
   ================================================================= */

[data-pns-redesign="on"] aside {
    background: var(--pnsx-bg-2) !important;
    border-right: 1px solid var(--pnsx-rule-2);
    padding-top: 22px;
}

/* Brand: editorial italic mark + smallcaps lede + thin gold rule */
[data-pns-redesign="on"] .pns-brand {
    border-bottom: 1px solid var(--pnsx-rule-2);
    padding-bottom: 18px;
    margin-bottom: 22px;
    position: relative;
}
[data-pns-redesign="on"] .pns-brand::after {
    content: '';
    position: absolute;
    left: 0; bottom: -1px;
    width: 24px; height: 1px;
    background: var(--pnsx-gold);
}
[data-pns-redesign="on"] .pns-brand-mark {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-weight: 600;
    font-size: 2.2rem;
    letter-spacing: -0.04em;
    color: var(--pnsx-gold);
    line-height: 0.9;
}
[data-pns-redesign="on"] .pns-brand-sub {
    font-family: var(--pnsx-mono);
    font-size: 0.6rem;
    letter-spacing: 0.32em;
    text-transform: uppercase;
    color: var(--pnsx-ink-4);
    margin-top: 6px;
}

/* Group titles — smallcaps mono */
[data-pns-redesign="on"] aside .text-xs.uppercase {
    font-family: var(--pnsx-mono);
    font-size: 0.6rem;
    letter-spacing: 0.22em;
    color: var(--pnsx-ink-5);
    margin-bottom: 4px;
    padding-left: 2px;
}

/* Nav links — sans, slightly tighter, phosphor active state */
[data-pns-redesign="on"] aside .menu li > a {
    font-family: var(--pnsx-sans);
    font-size: 0.86rem;
    font-weight: 400;
    letter-spacing: -0.005em;
    color: var(--pnsx-ink-2);
    border-radius: 0;
    padding: 5px 10px;
    border-left: 2px solid transparent;
}
[data-pns-redesign="on"] aside .menu li > a:hover {
    color: var(--pnsx-ink);
    background: var(--pnsx-surf);
    border-left-color: var(--pnsx-rule-2);
}
[data-pns-redesign="on"] aside .menu li > a.active {
    color: var(--pnsx-gold);
    background: color-mix(in oklch, var(--pnsx-gold) 10%, transparent);
    border-left-color: var(--pnsx-gold);
    font-weight: 500;
}

/* =================================================================
   FILTER BAR — flat, hairline-only, sticky, smallcaps labels
   ================================================================= */

[data-pns-redesign="on"] .pns-filterbar {
    background: color-mix(in oklch, var(--pnsx-bg) 90%, transparent);
    backdrop-filter: blur(10px) saturate(1.1);
    border-top: 1px solid var(--pnsx-rule-2);
    border-bottom: 1px solid var(--pnsx-rule-2);
    padding: 11px 28px;
    font-family: var(--pnsx-mono);
    font-size: 0.78rem;
    color: var(--pnsx-ink-3);
}
[data-pns-redesign="on"] .pns-filterbar label {
    color: var(--pnsx-ink-3);
    font-size: 0.7rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}
[data-pns-redesign="on"] .pns-filterbar label > span:first-child {
    font-family: var(--pnsx-mono);
    color: var(--pnsx-ink-4);
}
[data-pns-redesign="on"] .pns-filterbar .pns-readout {
    border-radius: 0;
    background: var(--pnsx-bg);
    border: 1px solid var(--pnsx-gold-q);
    color: var(--pnsx-gold);
    padding: 3px 10px;
    font-family: var(--pnsx-mono);
    font-size: 0.85rem;
    box-shadow: inset 0 0 0 1px color-mix(in oklch, var(--pnsx-gold) 15%, transparent);
}
[data-pns-redesign="on"] .pns-filterbar input[type="range"] {
    accent-color: var(--pnsx-gold);
}
[data-pns-redesign="on"] .pns-filterbar .pns-chip {
    border-radius: 0;
    border: 1px solid var(--pnsx-rule-2);
    color: var(--pnsx-ink-2);
    padding: 4px 11px;
    font-family: var(--pnsx-mono);
    font-size: 0.7rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    background: transparent;
    transition: border-color 0.15s, color 0.15s, background 0.15s;
}
[data-pns-redesign="on"] .pns-filterbar .pns-chip:hover {
    border-color: var(--pnsx-ink-2);
    color: var(--pnsx-ink);
    background: var(--pnsx-surf);
}
[data-pns-redesign="on"] .pns-filterbar .pns-chip.is-active {
    border-color: var(--pnsx-gold);
    color: var(--pnsx-gold);
    background: color-mix(in oklch, var(--pnsx-gold) 8%, transparent);
}

/* =================================================================
   STATS STRIP — ticker-tape, em-dash separators (no pipes)
   ================================================================= */

[data-pns-redesign="on"] .pns-stats {
    font-family: var(--pnsx-mono);
    font-size: 0.74rem;
    letter-spacing: 0.04em;
    color: var(--pnsx-ink-4);
    padding: 9px 28px !important;
    border-top: 1px dashed var(--pnsx-rule);
    background: color-mix(in oklch, var(--pnsx-bg) 60%, transparent);
}
[data-pns-redesign="on"] .pns-stats > span:not(.pns-marque):not(.pns-cap-warn) + span:not(.pns-cap-warn):not(.pns-marque)::before {
    content: '— ';
    color: var(--pnsx-ink-5);
    margin-right: 4px;
}
/* Hide the literal pipe chars from baseline markup */
[data-pns-redesign="on"] .pns-stats span[style*="rule-strong"] { display: none; }

[data-pns-redesign="on"] .pns-marque {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-weight: 500;
    font-size: 0.78rem;
    letter-spacing: 0.04em;
    text-transform: none;
    color: var(--pnsx-ink-2);
}

/* =================================================================
   RECOMMENDATIONS PRIMER — drop-cap, two-column editorial list
   ================================================================= */

[data-pns-redesign="on"] .pns-primer {
    margin: 18px 28px;
    padding: 18px 24px;
    border: 0;
    border-top: 1px solid var(--pnsx-rule-2);
    border-bottom: 1px solid var(--pnsx-rule);
    background: linear-gradient(
        180deg,
        color-mix(in oklch, var(--pnsx-surf) 50%, transparent) 0%,
        transparent 100%
    );
    position: relative;
}
[data-pns-redesign="on"] .pns-primer summary {
    font-family: var(--pnsx-mono);
    font-size: 0.7rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--pnsx-ink-3);
    list-style: none;
    cursor: pointer;
}
[data-pns-redesign="on"] .pns-primer summary::-webkit-details-marker { display: none; }
[data-pns-redesign="on"] .pns-primer summary::before {
    content: '§';
    color: var(--pnsx-gold);
    font-family: var(--pnsx-display);
    font-style: italic;
    font-size: 1.3rem;
    margin-right: 10px;
    vertical-align: -3px;
    font-weight: 500;
}
[data-pns-redesign="on"] .pns-primer[open] ul {
    margin-top: 14px;
    grid-template-columns: 1fr 1fr;
    gap: 14px 36px;
    font-family: var(--pnsx-sans);
    font-size: 0.86rem;
    line-height: 1.5;
    color: var(--pnsx-ink-2);
}
[data-pns-redesign="on"] .pns-primer li {
    border-left: 1px solid var(--pnsx-rule-2);
    padding-left: 14px;
}
[data-pns-redesign="on"] .pns-primer li strong {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-weight: 500;
    color: var(--pnsx-ink);
    font-size: 0.94rem;
    margin-right: 4px;
}
/* Drop-cap on the first list item */
[data-pns-redesign="on"] .pns-primer[open] li:first-child::first-letter {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-weight: 600;
    font-size: 3em;
    line-height: 0.84;
    float: left;
    margin: 4px 8px 0 0;
    color: var(--pnsx-gold);
}

/* =================================================================
   GRID — tighter rule, no outer rounding, hairline mortar
   ================================================================= */

[data-pns-redesign="on"] .pns-grid {
    grid-template-columns: repeat(auto-fill, minmax(440px, 1fr));
    gap: 1px;
    background: var(--pnsx-rule-2);
    border-top: 1px solid var(--pnsx-rule-2);
    border-bottom: 1px solid var(--pnsx-rule-2);
}

/* =================================================================
   TILE — the heart of the redesign
   ================================================================= */

[data-pns-redesign="on"] .pns-tile {
    background: var(--pnsx-surf);
    padding: var(--pnsx-tile-pad);
    font-family: var(--pnsx-mono);
    border: 0;
    border-left: 0;                /* accent comes from ::before */
    border-radius: 0;
    transition: background 0.15s, transform 0.2s;
}
[data-pns-redesign="on"] .pns-tile:hover {
    background: var(--pnsx-surf-hi);
    transform: translateY(-1px);
}
[data-pns-redesign="on"] .pns-tile::before {
    width: var(--pnsx-accent-w);
    transition: width 0.15s ease;
}
[data-pns-redesign="on"] .pns-tile:hover::before { width: calc(var(--pnsx-accent-w) + 4px); }

/* A+ accent — saffron with editorial shimmer (slower, more dignified) */
[data-pns-redesign="on"] .pns-tile[data-grade="A+"]::before {
    background: linear-gradient(
        180deg,
        var(--pnsx-gold) 0%,
        color-mix(in oklch, var(--pnsx-gold) 55%, transparent) 50%,
        var(--pnsx-gold) 100%
    );
    background-size: 100% 240%;
    animation: pnsx-shimmer 6s ease-in-out infinite;
}
@keyframes pnsx-shimmer {
    0%, 100% { background-position: 0 0%; }
    50%      { background-position: 0 100%; }
}

/* TILE HEAD — score + grade + meta */
[data-pns-redesign="on"] .pns-tile-head {
    align-items: center;
    gap: 14px;
    margin-bottom: 6px;
}

/* Grade — editorial italic Newsreader (NOT mono). Big visual weight. */
[data-pns-redesign="on"] .pns-tile-grade {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-weight: 600;
    font-size: 2.3rem;
    line-height: 0.9;
    letter-spacing: -0.04em;
    padding: 0;
    border: 0;
    color: var(--pns-accent, var(--pnsx-ink-2));
    text-shadow: 0 0 24px color-mix(in oklch, var(--pns-accent, transparent) 40%, transparent);
    min-width: 1.8em;
}
[data-pns-redesign="on"] .pns-tile[data-grade="A+"] .pns-tile-grade { color: var(--pnsx-gold); }
[data-pns-redesign="on"] .pns-tile[data-grade="A"]  .pns-tile-grade { color: var(--pnsx-ink); }

/* Meta row — tighter, smallcaps */
[data-pns-redesign="on"] .pns-tile-meta {
    font-family: var(--pnsx-mono);
    font-size: 0.7rem;
    color: var(--pnsx-ink-4);
    letter-spacing: 0.04em;
    gap: 10px;
}

/* SCORE GAUGE — horizontal hairline scale 0.50→1.00 with a tick at
 * the displayed score. Sits between head and symbol line. Reads at a
 * glance: position of the tick = grade band visually. */
[data-pns-redesign="on"] .pns-tile-gauge {
    position: relative;
    height: 10px;
    margin: 6px 0 14px 0;
    border-top: 1px dotted var(--pnsx-rule-2);
}
[data-pns-redesign="on"] .pns-tile-gauge::before {
    /* Three threshold bands: B (0.70), A (0.80), A+ (0.90) */
    content: '';
    position: absolute;
    left: 0; right: 0; top: 4px;
    height: 1px;
    background: linear-gradient(
        90deg,
        transparent 0%,
        var(--pnsx-rule-3) 40%,            /* B threshold = 40% along [0.50..1.00] */
        var(--pnsx-rule-3) 40.5%,
        transparent 40.5%,
        transparent 60%,
        var(--pnsx-rule-3) 60%,            /* A threshold = 60% along */
        var(--pnsx-rule-3) 60.5%,
        transparent 60.5%,
        transparent 80%,
        var(--pnsx-gold-q) 80%,            /* A+ threshold = 80% along */
        var(--pnsx-gold-q) 80.5%,
        transparent 80.5%
    );
}
[data-pns-redesign="on"] .pns-tile-gauge-tick {
    position: absolute;
    top: 0; bottom: 0;
    width: 2px;
    background: var(--pnsx-ink);
    box-shadow: 0 0 10px color-mix(in oklch, var(--pnsx-phos) 60%, transparent);
    /* CSS variable --pnsx-tick-x set inline on the element */
    left: var(--pnsx-tick-x, 50%);
    transform: translateX(-50%);
}
[data-pns-redesign="on"] .pns-tile[data-grade="A+"] .pns-tile-gauge-tick { background: var(--pnsx-gold); }
[data-pns-redesign="on"] .pns-tile[data-dir="C"][data-grade="A"] .pns-tile-gauge-tick,
[data-pns-redesign="on"] .pns-tile[data-dir="C"][data-grade="B"] .pns-tile-gauge-tick { background: var(--pnsx-bull); }
[data-pns-redesign="on"] .pns-tile[data-dir="P"][data-grade="A"] .pns-tile-gauge-tick,
[data-pns-redesign="on"] .pns-tile[data-dir="P"][data-grade="B"] .pns-tile-gauge-tick { background: var(--pnsx-bear); }

/* SYMBOL LINE — bigger ticker, editorial dir glyph */
[data-pns-redesign="on"] .pns-tile-sym {
    font-family: var(--pnsx-mono);
    font-size: 1.65rem;
    font-weight: 600;
    letter-spacing: -0.018em;
    color: var(--pnsx-ink);
    margin-bottom: 10px;
    align-items: baseline;
    gap: 12px;
}
[data-pns-redesign="on"] .pns-tile-sym .pns-strike {
    color: var(--pnsx-ink-3);
    font-weight: 400;
    font-size: 1.18rem;
    letter-spacing: 0;
}
[data-pns-redesign="on"] .pns-tile-sym .pns-dir {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-weight: 600;
    font-size: 1.05rem;
    letter-spacing: 0.04em;
    color: var(--pns-accent, var(--pnsx-ink-2));
    padding: 0 2px;
}
[data-pns-redesign="on"] .pns-tile[data-dir="C"] .pns-tile-sym .pns-dir { color: var(--pnsx-bull); }
[data-pns-redesign="on"] .pns-tile[data-dir="P"] .pns-tile-sym .pns-dir { color: var(--pnsx-bear); }

/* Spot price — pull margin so it sits as a continuation line */
[data-pns-redesign="on"] .pns-tile-spot {
    font-family: var(--pnsx-mono);
    font-size: 0.74rem;
    margin-top: -4px;
    margin-bottom: 12px;
    letter-spacing: 0.02em;
    gap: 7px;
}
[data-pns-redesign="on"] .pns-tile-spot .pns-spot-tag {
    font-family: var(--pnsx-mono);
    font-weight: 600;
    border-radius: 0;
    border: 1px solid currentColor;
    padding: 1px 5px;
    font-size: 0.62rem;
    letter-spacing: 0.12em;
}

/* Action summary — Geist body (NOT mono). Reads as a sentence. */
[data-pns-redesign="on"] .pns-tile-summary {
    font-family: var(--pnsx-sans);
    font-size: 0.86rem;
    line-height: 1.5;
    color: var(--pnsx-ink-2);
    margin-bottom: 14px;
    letter-spacing: -0.005em;
}
[data-pns-redesign="on"] .pns-tile-summary .pns-px {
    font-family: var(--pnsx-mono);
    font-weight: 500;
    color: var(--pnsx-ink);
    font-size: 0.84rem;
    letter-spacing: 0;
}
[data-pns-redesign="on"] .pns-tile-summary .pns-stop   { color: var(--pnsx-bear); }
[data-pns-redesign="on"] .pns-tile-summary .pns-target { color: var(--pnsx-bull); }

/* R:R bar — taller, with end-caps + tick-marks */
[data-pns-redesign="on"] .pns-rr-bar {
    height: 8px;
    border-radius: 0;
    margin-bottom: 10px;
    background: var(--pnsx-bg);
    border: 1px solid var(--pnsx-rule);
    overflow: hidden;
    position: relative;
}
[data-pns-redesign="on"] .pns-rr-bar .pns-rr-risk {
    background: linear-gradient(90deg,
        color-mix(in oklch, var(--pnsx-bear) 60%, transparent),
        var(--pnsx-bear));
}
[data-pns-redesign="on"] .pns-rr-bar .pns-rr-reward {
    background: linear-gradient(90deg,
        var(--pnsx-bull),
        color-mix(in oklch, var(--pnsx-bull) 60%, transparent));
}
/* Hairline tick marks at 25 / 50 / 75 */
[data-pns-redesign="on"] .pns-rr-bar::after {
    content: '';
    position: absolute;
    inset: 0;
    background:
        linear-gradient(90deg, transparent 24.8%, rgba(0,0,0,0.35) 24.8%, rgba(0,0,0,0.35) 25.2%, transparent 25.2%) ,
        linear-gradient(90deg, transparent 49.8%, rgba(0,0,0,0.5)  49.8%, rgba(0,0,0,0.5)  50.2%, transparent 50.2%) ,
        linear-gradient(90deg, transparent 74.8%, rgba(0,0,0,0.35) 74.8%, rgba(0,0,0,0.35) 75.2%, transparent 75.2%);
    pointer-events: none;
}

/* Risk row — DaisyUI badges → flat hairline pills */
[data-pns-redesign="on"] .pns-tile-risk { margin-bottom: 12px; gap: 10px; }
[data-pns-redesign="on"] .pns-tile-risk .badge {
    border-radius: 0;
    background: transparent !important;
    border: 1px solid currentColor !important;
    font-family: var(--pnsx-mono);
    font-size: 0.7rem;
    letter-spacing: 0.04em;
    text-transform: none;
    padding: 2px 8px;
    height: auto;
}
[data-pns-redesign="on"] .pns-tile-risk .pns-risk-val   { color: var(--pnsx-bear); }
[data-pns-redesign="on"] .pns-tile-risk .pns-rr-val     { color: var(--pnsx-ink); }
[data-pns-redesign="on"] .pns-tile-risk .pns-reward-val { color: var(--pnsx-bull); }
[data-pns-redesign="on"] .pns-tile-risk .badge-warning  { color: var(--pnsx-amber); }
[data-pns-redesign="on"] .pns-tile-risk .badge-error    { color: var(--pnsx-bear); }
[data-pns-redesign="on"] .pns-tile-risk .badge-success  { color: var(--pnsx-bull); }

/* Catalyst — Newsreader italic, gold rule + saffron pull-quote */
[data-pns-redesign="on"] .pns-tile-catalyst {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-weight: 400;
    font-size: 0.96rem;
    line-height: 1.45;
    color: var(--pnsx-ink-2);
    border-left: 2px solid var(--pnsx-gold-q);
    padding: 4px 0 4px 14px;
    margin: 4px 0 14px 0;
    letter-spacing: 0.005em;
}
[data-pns-redesign="on"] .pns-tile-catalyst .pns-tile-catalyst-strength {
    font-family: var(--pnsx-mono);
    font-style: normal;
    font-size: 0.6rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    border-radius: 0;
    padding: 1px 6px;
    margin-left: 8px;
}
[data-pns-redesign="on"] .pns-tile-catalyst .pns-tile-catalyst-strength[data-catalyst-tier="strong"] {
    color: var(--pnsx-bull);
    background: color-mix(in oklch, var(--pnsx-bull) 12%, transparent);
    border: 1px solid var(--pnsx-bull-q);
}
[data-pns-redesign="on"] .pns-tile-catalyst .pns-tile-catalyst-strength[data-catalyst-tier="moderate"] {
    color: var(--pnsx-ink-2);
    border: 1px solid var(--pnsx-rule-2);
    background: transparent;
}
[data-pns-redesign="on"] .pns-tile-catalyst .pns-tile-catalyst-strength[data-catalyst-aligned="no"] {
    color: var(--pnsx-amber);
    border-color: var(--pnsx-amber);
    background: color-mix(in oklch, var(--pnsx-amber) 12%, transparent);
}

/* TTP authors — quieter, mono pills */
[data-pns-redesign="on"] .pns-tile-authors {
    font-family: var(--pnsx-mono);
    font-size: 0.7rem;
    color: var(--pnsx-ink-3);
}
[data-pns-redesign="on"] .pns-tile-authors-label {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-weight: 500;
    font-size: 0.78rem;
    letter-spacing: 0.04em;
    text-transform: none;
    color: var(--pnsx-ink-3);
}
[data-pns-redesign="on"] .pns-author-pill {
    border-radius: 0;
    border: 1px solid var(--pnsx-rule-2);
    padding: 1px 6px;
    background: var(--pnsx-bg);
}
[data-pns-redesign="on"] .pns-author-handle { color: var(--pnsx-ink-2); }
[data-pns-redesign="on"] .pns-author-winrate[data-wr-tier="good"] { color: var(--pnsx-bull); }
[data-pns-redesign="on"] .pns-author-winrate[data-wr-tier="bad"]  { color: var(--pnsx-bear); }

/* Liquidity row — no padding-top border; smaller, denser */
[data-pns-redesign="on"] .pns-tile-liq {
    border-top: 1px dashed var(--pnsx-rule-2);
    padding-top: 10px;
    margin-top: 4px;
    gap: 14px;
    font-size: 0.7rem;
    letter-spacing: 0.06em;
    color: var(--pnsx-ink-4);
}
[data-pns-redesign="on"] .pns-tile-liq .pns-liq-val { color: var(--pnsx-ink-2); }

[data-pns-redesign="on"] .pns-hot-badge {
    background: var(--pnsx-amber);
    color: var(--pnsx-bg);
    border-radius: 0;
    box-shadow: inset 0 -2px 0 0 color-mix(in oklch, var(--pnsx-amber) 60%, black);
    padding: 1px 7px;
    font-family: var(--pnsx-mono);
    font-size: 0.68rem;
    letter-spacing: 0.03em;
}
[data-pns-redesign="on"] .pns-hot-badge--thin {
    background: transparent;
    color: var(--pnsx-amber);
    box-shadow: none;
    border: 1px solid var(--pnsx-amber);
}
[data-pns-redesign="on"] .pns-active-badge {
    border-radius: 0;
    border: 1px solid var(--pnsx-rule-2);
    color: var(--pnsx-ink-2);
    padding: 1px 6px;
    font-size: 0.68rem;
}
[data-pns-redesign="on"] .pns-iv-rank-pill {
    border-radius: 0;
    border: 1px solid var(--pnsx-rule-2);
    color: var(--pnsx-ink-2);
    padding: 1px 6px;
    font-family: var(--pnsx-mono);
    font-size: 0.68rem;
}
[data-pns-redesign="on"] .pns-iv-rank-pill[data-iv-tier="cheap"] {
    color: var(--pnsx-bull);
    border-color: var(--pnsx-bull-q);
}
[data-pns-redesign="on"] .pns-iv-rank-pill[data-iv-tier="rich"] {
    color: var(--pnsx-amber);
    border-color: var(--pnsx-amber);
}

[data-pns-redesign="on"] .pns-verify-btn {
    border-radius: 0;
    border-color: var(--pnsx-rule-2);
    color: var(--pnsx-ink-3);
    font-family: var(--pnsx-mono);
    font-size: 0.66rem;
    letter-spacing: 0.1em;
}
[data-pns-redesign="on"] .pns-verify-btn:hover {
    color: var(--pnsx-phos);
    border-color: var(--pnsx-phos);
}

/* Webull ticket */
[data-pns-redesign="on"] .pns-ticket-summary {
    border-radius: 0;
    border-color: var(--pnsx-rule-2);
    color: var(--pnsx-ink-3);
    font-family: var(--pnsx-mono);
    font-size: 0.66rem;
    letter-spacing: 0.14em;
}
[data-pns-redesign="on"] .pns-ticket-summary:hover {
    color: var(--pnsx-gold);
    border-color: var(--pnsx-gold);
}
[data-pns-redesign="on"] .pns-ticket-summary .pns-kbd {
    background: color-mix(in oklch, var(--pnsx-gold) 14%, transparent);
    color: var(--pnsx-gold);
    border-radius: 0;
}
[data-pns-redesign="on"] .pns-ticket-body {
    border-radius: 0;
    border: 1px solid var(--pnsx-rule-2);
    background: var(--pnsx-bg);
}
[data-pns-redesign="on"] .pns-btn {
    border-radius: 0;
    border: 1px solid var(--pnsx-rule-2);
    color: var(--pnsx-ink-2);
    font-family: var(--pnsx-mono);
    font-size: 0.68rem;
    letter-spacing: 0.1em;
    padding: 6px 14px;
}
[data-pns-redesign="on"] .pns-btn:hover {
    color: var(--pnsx-ink);
    border-color: var(--pnsx-ink-2);
}
[data-pns-redesign="on"] .pns-btn.pns-btn-primary {
    color: var(--pnsx-gold);
    border-color: var(--pnsx-gold);
}
[data-pns-redesign="on"] .pns-btn.pns-btn-primary:hover {
    background: color-mix(in oklch, var(--pnsx-gold) 18%, transparent);
    color: var(--pnsx-gold);
}

/* ER inline badge */
[data-pns-redesign="on"] .pns-tile-er-inline {
    border-radius: 0;
    background: var(--pnsx-amber);
    color: var(--pnsx-bg);
    font-family: var(--pnsx-mono);
    box-shadow: inset 0 -2px 0 0 color-mix(in oklch, var(--pnsx-amber) 60%, black);
    letter-spacing: 0.06em;
}

/* Pin button — bigger, cleaner star */
[data-pns-redesign="on"] .pns-pin-btn {
    color: var(--pnsx-ink-5);
    font-size: 1.05rem;
    transition: color 0.15s, transform 0.2s;
}
[data-pns-redesign="on"] .pns-pin-btn:hover {
    color: var(--pnsx-gold);
    transform: scale(1.18) rotate(-6deg);
}
[data-pns-redesign="on"] .pns-pin-btn[data-pinned="yes"] { color: var(--pnsx-gold); }

/* =================================================================
   PINNED BAND — gold-tinted strip
   ================================================================= */

[data-pns-redesign="on"] .pns-pinned-band {
    background:
        repeating-linear-gradient(
            45deg,
            transparent 0,
            transparent 16px,
            color-mix(in oklch, var(--pnsx-gold) 3%, transparent) 16px,
            color-mix(in oklch, var(--pnsx-gold) 3%, transparent) 32px
        ),
        color-mix(in oklch, var(--pnsx-gold) 5%, var(--pnsx-bg));
    border-top: 1px solid var(--pnsx-gold-q);
    border-bottom: 1px solid var(--pnsx-gold-q);
}
[data-pns-redesign="on"] .pns-pinned-band-label {
    font-family: var(--pnsx-mono);
    font-size: 0.6rem;
    letter-spacing: 0.32em;
    text-transform: uppercase;
    color: var(--pnsx-gold);
    padding: 9px 28px 5px;
}
[data-pns-redesign="on"] .pns-pinned-band-label::before {
    content: '★ ';
    font-style: italic;
}
[data-pns-redesign="on"] .pns-pinned-band-empty {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-size: 0.86rem;
    color: var(--pnsx-ink-3);
    padding: 12px 28px;
}

/* =================================================================
   TILE LIVE-EVENT CLASSES — preserved + amplified
   ================================================================= */

@keyframes pnsx-tile-new-pulse {
    0%   { box-shadow: inset 0 0 0 1px transparent, 0 0 0 0 color-mix(in oklch, var(--pnsx-violet) 60%, transparent); }
    50%  { box-shadow: inset 0 0 0 1px color-mix(in oklch, var(--pnsx-violet) 50%, transparent), 0 0 22px 2px color-mix(in oklch, var(--pnsx-violet) 45%, transparent); }
    100% { box-shadow: inset 0 0 0 1px transparent, 0 0 0 0 color-mix(in oklch, var(--pnsx-violet) 0%, transparent); }
}
[data-pns-redesign="on"] .pns-tile.pns-tile--new {
    animation: pnsx-tile-new-pulse 2.2s ease-in-out 0s 2;
    border-color: transparent;
}

[data-pns-redesign="on"] .pns-tile.pns-tile--score-up::after,
[data-pns-redesign="on"] .pns-tile.pns-tile--score-down::after {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-weight: 600;
    font-size: 1.2rem;
    top: 6px; right: 32px;
}
[data-pns-redesign="on"] .pns-tile.pns-tile--score-up::after   { color: var(--pnsx-bull); }
[data-pns-redesign="on"] .pns-tile.pns-tile--score-down::after { color: var(--pnsx-bear); }

[data-pns-redesign="on"] .pns-tile.pns-tile--just-hot .pns-hot-badge,
[data-pns-redesign="on"] .pns-tile.pns-tile--just-hot .pns-active-badge {
    animation: pnsx-just-hot-flash 1.2s ease-out 0s 2;
}
@keyframes pnsx-just-hot-flash {
    0%   { background: var(--pnsx-amber); color: var(--pnsx-bg); box-shadow: 0 0 22px var(--pnsx-amber); }
    100% {}
}

[data-pns-redesign="on"] .pns-tile.pns-tile--stale {
    opacity: 0.55;
    filter: saturate(0.7);
}

@media (prefers-reduced-motion: reduce) {
    [data-pns-redesign="on"] .pns-tile.pns-tile--new { animation: none; }
    [data-pns-redesign="on"] .pns-tile[data-grade="A+"]::before { animation: none; }
}

/* =================================================================
   POSITIONS / GREEKS / ALERT-FEED — flat terminal lists
   ================================================================= */

[data-pns-redesign="on"] .pns-pos-grid {
    grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
    background: var(--pnsx-rule-2);
    border-color: var(--pnsx-rule-2);
}
[data-pns-redesign="on"] .pns-pos-tile {
    background: var(--pnsx-surf);
    padding: 14px 18px 14px 22px;
}
[data-pns-redesign="on"] .pns-pos-tile:hover { background: var(--pnsx-surf-hi); }
[data-pns-redesign="on"] .pns-pos-tile[data-pnl="win"]::before  { background: var(--pnsx-bull); }
[data-pns-redesign="on"] .pns-pos-tile[data-pnl="loss"]::before { background: var(--pnsx-bear); }
[data-pns-redesign="on"] .pns-pos-sym {
    font-family: var(--pnsx-mono);
    font-size: 1.18rem;
    color: var(--pnsx-ink);
    letter-spacing: -0.01em;
}
[data-pns-redesign="on"] .pns-pos-pnl-pct {
    font-family: var(--pnsx-mono);
    font-size: 0.95rem;
}
[data-pns-redesign="on"] .pns-pos-pnl-usd {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-weight: 600;
    font-size: 1.7rem;
    line-height: 1;
    letter-spacing: -0.03em;
}

/* Tables */
[data-pns-redesign="on"] .pns-table {
    font-family: var(--pnsx-mono);
    font-size: 0.8rem;
}
[data-pns-redesign="on"] .pns-table thead th {
    border-top: 1px solid var(--pnsx-rule-2);
    border-bottom: 1px solid var(--pnsx-rule-2);
    color: var(--pnsx-ink-4);
    font-family: var(--pnsx-mono);
    font-size: 0.66rem;
    letter-spacing: 0.18em;
    background: var(--pnsx-bg);
}
[data-pns-redesign="on"] .pns-table tbody tr:hover td { background: var(--pnsx-surf); }

/* DaisyUI .stat — square, mono */
[data-pns-redesign="on"] html[data-theme] .stats {
    background: var(--pnsx-surf) !important;
    border: 1px solid var(--pnsx-rule-2);
    border-radius: 0;
}
[data-pns-redesign="on"] html[data-theme] .stat-title {
    font-family: var(--pnsx-mono);
    font-size: 0.62rem;
    letter-spacing: 0.22em;
    color: var(--pnsx-ink-4);
}
[data-pns-redesign="on"] html[data-theme] .stat-value {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-weight: 600;
    font-size: 2rem;
    letter-spacing: -0.02em;
    color: var(--pnsx-ink);
}
[data-pns-redesign="on"] html[data-theme] .stat-value.text-success { color: var(--pnsx-bull); }
[data-pns-redesign="on"] html[data-theme] .stat-value.text-error   { color: var(--pnsx-bear); }

/* =================================================================
   MANUAL-CLOSE WARNING — caution-tape, NOT generic red alert
   ================================================================= */

[data-pns-redesign="on"] .alert.alert-error {
    background:
        repeating-linear-gradient(
            -45deg,
            color-mix(in oklch, var(--pnsx-bear) 18%, var(--pnsx-bg)) 0,
            color-mix(in oklch, var(--pnsx-bear) 18%, var(--pnsx-bg)) 18px,
            color-mix(in oklch, var(--pnsx-bear) 8%, var(--pnsx-bg))  18px,
            color-mix(in oklch, var(--pnsx-bear) 8%, var(--pnsx-bg))  36px
        );
    border: 0;
    border-top: 2px solid var(--pnsx-bear);
    border-bottom: 2px solid var(--pnsx-bear);
    border-radius: 0;
    color: var(--pnsx-ink);
    box-shadow: none;
    padding: 14px 22px;
    font-family: var(--pnsx-sans);
    font-size: 0.9rem;
}
[data-pns-redesign="on"] .alert.alert-error .font-bold.uppercase {
    font-family: var(--pnsx-mono);
    font-size: 0.7rem;
    letter-spacing: 0.22em;
    color: var(--pnsx-bear);
}

/* =================================================================
   EARNINGS / ACTIVE-ALERT BARS
   ================================================================= */

[data-pns-redesign="on"] .pns-earnings-bar {
    background: color-mix(in oklch, var(--pnsx-amber) 10%, var(--pnsx-bg));
    border-top: 1px solid var(--pnsx-amber);
    border-bottom: 1px solid var(--pnsx-amber);
    font-family: var(--pnsx-mono);
}
[data-pns-redesign="on"] .pns-earnings-bar .pns-label {
    font-family: var(--pnsx-mono);
    font-size: 0.66rem;
    letter-spacing: 0.22em;
    color: var(--pnsx-amber);
}

[data-pns-redesign="on"] .pns-alert-bar {
    background: color-mix(in oklch, var(--pnsx-bear) 16%, var(--pnsx-bg));
    border-top: 2px solid var(--pnsx-bear);
    border-bottom: 2px solid var(--pnsx-bear);
}
[data-pns-redesign="on"] .pns-alert-bar .pns-label {
    font-family: var(--pnsx-mono);
    font-size: 0.66rem;
    letter-spacing: 0.26em;
    color: var(--pnsx-bear);
}

/* =================================================================
   NOTIFICATIONS DROPDOWN
   ================================================================= */

[data-pns-redesign="on"] .pns-notif-trigger {
    border-radius: 0;
    border: 1px solid var(--pnsx-rule-2);
    color: var(--pnsx-ink-3);
    font-family: var(--pnsx-mono);
    font-size: 0.66rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    padding: 5px 12px;
    background: transparent;
}
[data-pns-redesign="on"] .pns-notif-trigger:hover,
[data-pns-redesign="on"] .pns-notif-trigger[data-active="yes"] {
    color: var(--pnsx-phos);
    border-color: var(--pnsx-phos);
}
[data-pns-redesign="on"] .pns-notif-status-dot[data-connected="yes"] {
    background: var(--pnsx-phos);
    box-shadow: 0 0 10px var(--pnsx-phos);
}
[data-pns-redesign="on"] .pns-notif-panel {
    background: var(--pnsx-surf);
    border: 1px solid var(--pnsx-rule-3);
    border-radius: 0;
    font-family: var(--pnsx-sans);
}
[data-pns-redesign="on"] .pns-notif-panel h4 {
    font-family: var(--pnsx-mono);
    font-size: 0.62rem;
    letter-spacing: 0.22em;
    color: var(--pnsx-ink-4);
}

/* =================================================================
   FRESHNESS TICK — phosphor for hot
   ================================================================= */

[data-pns-redesign="on"] .pns-fresh-tick { width: 3px; height: 16px; }
[data-pns-redesign="on"] .pns-fresh-tick[data-freshness="hot"]  {
    background: var(--pnsx-phos);
    box-shadow: 0 0 8px var(--pnsx-phos);
}
[data-pns-redesign="on"] .pns-fresh-tick[data-freshness="warm"] { background: var(--pnsx-amber); }
[data-pns-redesign="on"] .pns-fresh-tick[data-freshness="cool"] { background: var(--pnsx-ink-3); }
[data-pns-redesign="on"] .pns-fresh-tick[data-freshness="stale"]{ background: var(--pnsx-ink-5); }

/* =================================================================
   LEAPS — match tile family
   ================================================================= */

[data-pns-redesign="on"] .leaps-page { padding: 0; }
[data-pns-redesign="on"] .leaps-header {
    padding: 38px 28px 18px 56px;
    background: var(--pnsx-bg);
    border-bottom: 1px solid var(--pnsx-rule-2);
    position: relative;
}
[data-pns-redesign="on"] .leaps-header::before {
    content: 'LONG-DATED · LEAPS';
    position: absolute;
    left: 18px; top: 50%;
    transform: rotate(-90deg) translateX(50%);
    transform-origin: left center;
    font-family: var(--pnsx-mono);
    font-size: 0.62rem;
    letter-spacing: 0.36em;
    color: var(--pnsx-ink-5);
    white-space: nowrap;
}
[data-pns-redesign="on"] .leaps-header h1 {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-weight: 500;
    font-size: clamp(2.2rem, 3vw + 1rem, 3.4rem);
    letter-spacing: -0.022em;
    margin: 0 0 14px 0;
}
[data-pns-redesign="on"] .leaps-mode-toggle {
    display: flex;
    gap: 0;
    border: 1px solid var(--pnsx-rule-2);
    width: fit-content;
}
[data-pns-redesign="on"] .leaps-mode-toggle a {
    font-family: var(--pnsx-mono);
    font-size: 0.7rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--pnsx-ink-3);
    padding: 6px 16px;
    border-right: 1px solid var(--pnsx-rule-2);
    background: var(--pnsx-bg);
}
[data-pns-redesign="on"] .leaps-mode-toggle a:last-child { border-right: 0; }
[data-pns-redesign="on"] .leaps-mode-toggle a.active {
    color: var(--pnsx-gold);
    background: color-mix(in oklch, var(--pnsx-gold) 10%, transparent);
}
[data-pns-redesign="on"] .leaps-subtle {
    padding: 16px 28px;
    font-family: var(--pnsx-display);
    font-style: italic;
    color: var(--pnsx-ink-3);
    font-size: 0.96rem;
    max-width: 80ch;
    line-height: 1.5;
}
[data-pns-redesign="on"] .leaps-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));
    gap: 1px;
    background: var(--pnsx-rule-2);
    border-top: 1px solid var(--pnsx-rule-2);
    border-bottom: 1px solid var(--pnsx-rule-2);
}
[data-pns-redesign="on"] .leap-tile {
    padding: 18px 22px;
    background: var(--pnsx-surf);
}
[data-pns-redesign="on"] .leap-tile:hover { background: var(--pnsx-surf-hi); }
[data-pns-redesign="on"] .leap-score-grade {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-weight: 600;
    font-size: 2rem;
    letter-spacing: -0.04em;
    line-height: 0.9;
}
[data-pns-redesign="on"] .leap-score-grade[data-tier="A"] { color: var(--pnsx-gold); }
[data-pns-redesign="on"] .leap-score-grade[data-tier="B"] { color: var(--pnsx-bull); }
[data-pns-redesign="on"] .leap-score-grade[data-tier="C"] { color: var(--pnsx-amber); }
[data-pns-redesign="on"] .leap-score-grade[data-tier="D"] { color: var(--pnsx-bear); }
[data-pns-redesign="on"] .leap-score-breakdown {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin: 8px 0 12px;
    font-family: var(--pnsx-mono);
    font-size: 0.7rem;
    color: var(--pnsx-ink-3);
}
[data-pns-redesign="on"] .leap-score-breakdown span {
    border: 1px solid var(--pnsx-rule);
    padding: 1px 7px;
    color: var(--pnsx-ink-2);
}
[data-pns-redesign="on"] .leap-iv-rank[data-tier="cheap"] { color: var(--pnsx-bull); border-color: var(--pnsx-bull-q); }
[data-pns-redesign="on"] .leap-iv-rank[data-tier="rich"]  { color: var(--pnsx-amber); border-color: var(--pnsx-amber); }
[data-pns-redesign="on"] .leap-delta[data-in-band="yes"] { color: var(--pnsx-bull); border-color: var(--pnsx-bull-q); }
[data-pns-redesign="on"] .leap-delta[data-in-band="no"]  { color: var(--pnsx-amber); border-color: var(--pnsx-amber); }
[data-pns-redesign="on"] .leap-breakeven, [data-pns-redesign="on"] .leap-cost {
    font-family: var(--pnsx-mono);
    font-size: 0.78rem;
    color: var(--pnsx-ink-2);
    margin-bottom: 6px;
}
[data-pns-redesign="on"] .leap-alerts {
    list-style: none;
    padding: 0;
    margin: 10px 0 6px;
    font-family: var(--pnsx-mono);
    font-size: 0.74rem;
    border-top: 1px dashed var(--pnsx-rule);
    padding-top: 8px;
}
[data-pns-redesign="on"] .leap-alerts li {
    padding: 3px 0 3px 16px;
    border-left: 2px solid var(--pnsx-amber);
    margin-bottom: 4px;
    color: var(--pnsx-ink-2);
}
[data-pns-redesign="on"] .leap-alerts li[data-urgency="high"] { border-left-color: var(--pnsx-bear); }
[data-pns-redesign="on"] .leap-alerts li[data-urgency="low"]  { border-left-color: var(--pnsx-rule-2); }
[data-pns-redesign="on"] .leap-alert-dot {
    color: var(--pnsx-bear);
    font-size: 0.7rem;
    text-shadow: 0 0 8px var(--pnsx-bear);
}
[data-pns-redesign="on"] .leap-tile-actions {
    margin-top: 12px;
    padding-top: 8px;
    border-top: 1px dashed var(--pnsx-rule);
}
[data-pns-redesign="on"] .leap-drilldown-link {
    font-family: var(--pnsx-mono);
    font-size: 0.66rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--pnsx-gold);
}
[data-pns-redesign="on"] .leap-drilldown-link:hover { color: var(--pnsx-gold); }
[data-pns-redesign="on"] .leaps-empty {
    padding: 80px 32px;
    text-align: center;
    font-family: var(--pnsx-display);
    font-style: italic;
    color: var(--pnsx-ink-3);
}

/* =================================================================
   LOGIN — magazine cover treatment
   ================================================================= */

[data-pns-redesign="on"] body:has(form[action="/login"]) {
    background:
        radial-gradient(at 50% 20%, color-mix(in oklch, var(--pnsx-gold) 8%, transparent) 0px, transparent 480px),
        var(--pnsx-bg) !important;
}
[data-pns-redesign="on"] form[action="/login"] {
    background: var(--pnsx-surf);
    border: 1px solid var(--pnsx-rule-2);
    border-radius: 0;
    box-shadow:
        0 0 0 1px var(--pnsx-bg),
        0 22px 60px -20px rgba(0,0,0,0.6);
    padding: 36px 32px !important;
    width: 28rem !important;
    position: relative;
}
[data-pns-redesign="on"] form[action="/login"]::before {
    content: 'PICKS · & · SHOVELS';
    display: block;
    font-family: var(--pnsx-mono);
    font-size: 0.62rem;
    letter-spacing: 0.36em;
    color: var(--pnsx-ink-5);
    margin-bottom: 22px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--pnsx-rule-2);
}
[data-pns-redesign="on"] form[action="/login"] h1 {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-weight: 600;
    font-size: 2.6rem;
    letter-spacing: -0.025em;
    color: var(--pnsx-ink);
    margin-bottom: 28px;
    line-height: 1;
}
[data-pns-redesign="on"] form[action="/login"] h1::after {
    content: '';
    display: block;
    width: 30px; height: 2px;
    background: var(--pnsx-gold);
    margin-top: 14px;
}
[data-pns-redesign="on"] form[action="/login"] .form-control {
    width: 100%;
    margin-bottom: 14px;
    display: block;
}
[data-pns-redesign="on"] form[action="/login"] .label-text {
    font-family: var(--pnsx-mono);
    font-size: 0.66rem;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--pnsx-ink-4);
    display: block;
    margin-bottom: 6px;
}
[data-pns-redesign="on"] form[action="/login"] .input {
    width: 100%;
    background: var(--pnsx-bg);
    border: 1px solid var(--pnsx-rule-2);
    border-radius: 0;
    color: var(--pnsx-ink);
    font-family: var(--pnsx-mono);
    font-size: 0.92rem;
    height: 42px;
    padding: 0 12px;
}
[data-pns-redesign="on"] form[action="/login"] .input:focus {
    border-color: var(--pnsx-gold);
    outline: none;
    box-shadow: 0 0 0 1px var(--pnsx-gold);
}
[data-pns-redesign="on"] form[action="/login"] .btn.btn-primary {
    background: var(--pnsx-gold);
    border: 0;
    border-radius: 0;
    color: var(--pnsx-bg);
    font-family: var(--pnsx-mono);
    font-size: 0.78rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    height: 44px;
    margin-top: 18px;
    transition: background 0.15s, transform 0.15s;
}
[data-pns-redesign="on"] form[action="/login"] .btn.btn-primary:hover {
    background: color-mix(in oklch, var(--pnsx-gold) 88%, white);
    transform: translateY(-1px);
}

/* =================================================================
   EMPTY STATES
   ================================================================= */

[data-pns-redesign="on"] .pns-empty {
    padding: 96px 32px;
    border-bottom: 1px solid var(--pnsx-rule-2);
}
[data-pns-redesign="on"] .pns-empty-title {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-weight: 500;
    font-size: 1.6rem;
    color: var(--pnsx-ink-2);
    letter-spacing: -0.01em;
    margin-bottom: 10px;
}

/* =================================================================
   FOCUS RINGS — phosphor across all interactive elements
   ================================================================= */

[data-pns-redesign="on"] :is(button, input, select, textarea, a, [tabindex]):focus-visible {
    outline: 2px solid var(--pnsx-phos);
    outline-offset: 2px;
}

/* =================================================================
   LEAPs — extended structural styles (book strip, controls,
   watchlist panel, near-miss list, sections). The base leaps.html
   template carries far more chrome than the original /leaps shipped
   with — book P&L 4-cell strip, filter chips, sort row, watchlist
   form, and a near-miss bridge for empty days.
   ================================================================= */

[data-pns-redesign="on"] .leaps-header-titlerow {
    display: flex;
    align-items: baseline;
    gap: 18px;
    margin-bottom: 18px;
}
[data-pns-redesign="on"] .leaps-header-marker {
    color: var(--pnsx-gold);
    font-size: 1.4rem;
    line-height: 1;
}
[data-pns-redesign="on"] .leaps-header h1 {
    margin: 0;
    flex: 0 1 auto;
}

/* 4-cell book strip */
[data-pns-redesign="on"] .leaps-book-strip {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 0;
    margin: 14px 0 18px 0;
    padding: 0;
    border: 1px solid var(--pnsx-rule-2);
    background: var(--pnsx-surf);
}
[data-pns-redesign="on"] .leaps-book-cell {
    padding: 14px 18px;
    border-right: 1px solid var(--pnsx-rule);
    margin: 0;
}
[data-pns-redesign="on"] .leaps-book-cell:last-child { border-right: 0; }
[data-pns-redesign="on"] .leaps-book-cell dt {
    font-family: var(--pnsx-mono);
    font-size: 0.6rem;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--pnsx-ink-4);
    margin-bottom: 6px;
}
[data-pns-redesign="on"] .leaps-book-cell dd {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-weight: 600;
    font-size: 1.85rem;
    line-height: 1;
    letter-spacing: -0.02em;
    color: var(--pnsx-ink);
    margin: 0;
}
[data-pns-redesign="on"] .leaps-book-cell dd.is-bull { color: var(--pnsx-bull); }
[data-pns-redesign="on"] .leaps-book-cell dd.is-bear { color: var(--pnsx-bear); }
[data-pns-redesign="on"] .leaps-book-cell .leaps-book-sub {
    margin-top: 6px;
    font-family: var(--pnsx-mono);
    font-style: normal;
    font-size: 0.7rem;
    font-weight: 400;
    color: var(--pnsx-ink-4);
    letter-spacing: 0.04em;
}
[data-pns-redesign="on"] .leaps-deployed-bar {
    width: 100%;
    height: 6px;
    border: 0;
    border-radius: 0;
    background: var(--pnsx-bg);
    accent-color: var(--pnsx-gold);
}
[data-pns-redesign="on"] .leaps-deployed-bar::-webkit-progress-bar {
    background: var(--pnsx-bg);
    border-radius: 0;
}
[data-pns-redesign="on"] .leaps-deployed-bar::-webkit-progress-value {
    background: var(--pnsx-gold);
    border-radius: 0;
}

/* Mode toggle (Daily / Weekly) */
[data-pns-redesign="on"] .leaps-mode-toggle {
    display: inline-flex;
    border: 1px solid var(--pnsx-rule-2);
}
[data-pns-redesign="on"] .leaps-mode-toggle a {
    font-family: var(--pnsx-mono);
    font-size: 0.66rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--pnsx-ink-3);
    padding: 6px 14px;
    border-right: 1px solid var(--pnsx-rule-2);
    background: var(--pnsx-bg);
}
[data-pns-redesign="on"] .leaps-mode-toggle a:last-child { border-right: 0; }
[data-pns-redesign="on"] .leaps-mode-toggle a.active {
    color: var(--pnsx-gold);
    background: color-mix(in oklch, var(--pnsx-gold) 10%, transparent);
}

/* Filter / sort row */
[data-pns-redesign="on"] .leaps-controls {
    display: flex;
    align-items: center;
    gap: 22px;
    flex-wrap: wrap;
    padding: 8px 0 0;
    border-top: 1px dashed var(--pnsx-rule);
}
[data-pns-redesign="on"] .leaps-filter-chips,
[data-pns-redesign="on"] .leaps-sort-block {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
[data-pns-redesign="on"] .leaps-chip,
[data-pns-redesign="on"] .leaps-sort-link {
    font-family: var(--pnsx-mono);
    font-size: 0.66rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--pnsx-ink-3);
    padding: 4px 10px;
    border: 1px solid var(--pnsx-rule-2);
    background: transparent;
}
[data-pns-redesign="on"] .leaps-chip:hover,
[data-pns-redesign="on"] .leaps-sort-link:hover {
    color: var(--pnsx-ink);
    border-color: var(--pnsx-ink-3);
}
[data-pns-redesign="on"] .leaps-chip.is-active,
[data-pns-redesign="on"] .leaps-sort-link.is-active {
    color: var(--pnsx-gold);
    border-color: var(--pnsx-gold);
    background: color-mix(in oklch, var(--pnsx-gold) 10%, transparent);
}
[data-pns-redesign="on"] .leaps-sort-label {
    font-family: var(--pnsx-mono);
    font-size: 0.66rem;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--pnsx-ink-4);
    margin-right: 4px;
}

/* Sub-section header (OPEN POSITIONS, NEAR MISS, etc.) */
[data-pns-redesign="on"] .leaps-section-head,
[data-pns-redesign="on"] .leap-watchlist-head .leap-watchlist-title {
    display: flex;
    align-items: baseline;
    gap: 12px;
    padding: 22px 28px 10px;
    border-bottom: 1px dashed var(--pnsx-rule-2);
}
[data-pns-redesign="on"] .leaps-section-head h2,
[data-pns-redesign="on"] .leap-watchlist-head h2 {
    font-family: var(--pnsx-mono);
    font-size: 0.75rem;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--pnsx-ink);
    margin: 0;
}
[data-pns-redesign="on"] .leaps-section-marker,
[data-pns-redesign="on"] .leap-watchlist-marker {
    color: var(--pnsx-gold);
    font-size: 1rem;
}
[data-pns-redesign="on"] .leaps-section-count,
[data-pns-redesign="on"] .leap-watchlist-count {
    font-family: var(--pnsx-mono);
    font-size: 0.7rem;
    color: var(--pnsx-ink-4);
    letter-spacing: 0.1em;
}
[data-pns-redesign="on"] .leaps-section-head--warn h2 { color: var(--pnsx-amber); }
[data-pns-redesign="on"] .leaps-section-head--warn .leaps-section-marker { color: var(--pnsx-amber); }

/* Watchlist panel */
[data-pns-redesign="on"] .leap-watchlist {
    border-top: 1px solid var(--pnsx-rule-2);
    border-bottom: 1px solid var(--pnsx-rule-2);
    background: var(--pnsx-bg-2);
    margin: 14px 0;
}
[data-pns-redesign="on"] .leap-watchlist-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 18px 28px 14px;
}
[data-pns-redesign="on"] .leap-watchlist-form {
    display: flex;
    gap: 8px;
    align-items: center;
}
[data-pns-redesign="on"] .leap-watchlist-ticker-input,
[data-pns-redesign="on"] .leap-watchlist-thesis-input {
    background: var(--pnsx-bg);
    border: 1px solid var(--pnsx-rule-2);
    color: var(--pnsx-ink);
    font-family: var(--pnsx-mono);
    font-size: 0.78rem;
    padding: 6px 10px;
    border-radius: 0;
}
[data-pns-redesign="on"] .leap-watchlist-ticker-input { width: 100px; text-transform: uppercase; }
[data-pns-redesign="on"] .leap-watchlist-thesis-input { width: 320px; }
[data-pns-redesign="on"] .leap-watchlist-add-btn {
    background: transparent;
    border: 1px solid var(--pnsx-gold);
    color: var(--pnsx-gold);
    font-family: var(--pnsx-mono);
    font-size: 0.7rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    padding: 6px 14px;
    cursor: pointer;
    border-radius: 0;
}
[data-pns-redesign="on"] .leap-watchlist-add-btn:hover {
    background: color-mix(in oklch, var(--pnsx-gold) 18%, transparent);
}
[data-pns-redesign="on"] .leap-watchlist-empty {
    padding: 36px 28px;
    color: var(--pnsx-ink-3);
}
[data-pns-redesign="on"] .leap-watchlist-empty-headline {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-size: 1.2rem;
    color: var(--pnsx-ink-2);
    margin-bottom: 8px;
}
[data-pns-redesign="on"] .leap-watchlist-empty-sub {
    font-family: var(--pnsx-sans);
    font-size: 0.86rem;
    line-height: 1.5;
    max-width: 64ch;
    color: var(--pnsx-ink-4);
}
[data-pns-redesign="on"] .leap-watchlist-list {
    list-style: none;
    padding: 0;
    margin: 0;
}
[data-pns-redesign="on"] .leap-watchlist-row {
    border-top: 1px solid var(--pnsx-rule);
    padding: 16px 28px;
}
[data-pns-redesign="on"] .leap-watchlist-row-head {
    display: grid;
    grid-template-columns: auto 1fr auto;
    gap: 18px;
    align-items: baseline;
    margin-bottom: 10px;
}
[data-pns-redesign="on"] .leap-watchlist-ticker {
    font-family: var(--pnsx-mono);
    font-size: 1.15rem;
    font-weight: 600;
    color: var(--pnsx-ink);
}
[data-pns-redesign="on"] .leap-watchlist-added-at {
    font-family: var(--pnsx-mono);
    font-size: 0.66rem;
    color: var(--pnsx-ink-5);
    letter-spacing: 0.1em;
    margin-left: 8px;
}
[data-pns-redesign="on"] .leap-watchlist-thesis {
    font-family: var(--pnsx-display);
    font-style: italic;
    color: var(--pnsx-ink-2);
    margin: 0;
    font-size: 0.95rem;
    max-width: 70ch;
}
[data-pns-redesign="on"] .leap-watchlist-remove-btn {
    background: transparent;
    border: 1px solid var(--pnsx-rule-2);
    color: var(--pnsx-ink-4);
    font-size: 0.85rem;
    padding: 2px 8px;
    cursor: pointer;
    border-radius: 0;
}
[data-pns-redesign="on"] .leap-watchlist-remove-btn:hover {
    color: var(--pnsx-bear);
    border-color: var(--pnsx-bear);
}

/* Suggestion grid */
[data-pns-redesign="on"] .leap-suggestions-grid {
    list-style: none;
    padding: 0;
    margin: 8px 0 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 1px;
    background: var(--pnsx-rule);
    border: 1px solid var(--pnsx-rule);
}
[data-pns-redesign="on"] .leap-suggestion-card {
    background: var(--pnsx-surf);
    padding: 12px 14px;
    font-family: var(--pnsx-mono);
}
[data-pns-redesign="on"] .leap-suggestion-head {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 8px;
}
[data-pns-redesign="on"] .leap-suggestion-strike {
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--pnsx-ink);
    letter-spacing: -0.01em;
}
[data-pns-redesign="on"] .leap-suggestion-expiry {
    font-size: 0.66rem;
    color: var(--pnsx-ink-4);
    letter-spacing: 0.1em;
}
[data-pns-redesign="on"] .leap-suggestion-reasons {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    margin-bottom: 8px;
}
[data-pns-redesign="on"] .leap-reason-pill {
    font-family: var(--pnsx-mono);
    font-size: 0.6rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    padding: 1px 6px;
    border: 1px solid var(--pnsx-rule-2);
    color: var(--pnsx-ink-3);
}
[data-pns-redesign="on"] .leap-reason-pill[data-reason="best_hybrid"] {
    color: var(--pnsx-gold);
    border-color: var(--pnsx-gold-q);
}
[data-pns-redesign="on"] .leap-reason-pill[data-reason="lowest_iv_rank"] {
    color: var(--pnsx-bull);
    border-color: var(--pnsx-bull-q);
}
[data-pns-redesign="on"] .leap-reason-pill[data-reason="highest_gamma_per_dollar"] {
    color: var(--pnsx-phos);
    border-color: var(--pnsx-phos-q);
}
[data-pns-redesign="on"] .leap-suggestion-stats {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 4px 14px;
    font-size: 0.72rem;
    color: var(--pnsx-ink-3);
}
[data-pns-redesign="on"] .leap-suggestion-stats > div {
    display: flex;
    justify-content: space-between;
}
[data-pns-redesign="on"] .leap-suggestion-stats dt {
    color: var(--pnsx-ink-4);
    letter-spacing: 0.06em;
}
[data-pns-redesign="on"] .leap-suggestion-stats dd {
    color: var(--pnsx-ink);
    margin: 0;
    font-variant-numeric: tabular-nums;
}
[data-pns-redesign="on"] .leap-suggestions-empty {
    margin-top: 10px;
    color: var(--pnsx-ink-4);
    font-family: var(--pnsx-display);
    font-style: italic;
    font-size: 0.86rem;
}

/* Near-miss list */
[data-pns-redesign="on"] .leaps-near-miss-section {
    border-top: 1px solid var(--pnsx-amber);
    margin-top: 22px;
}
[data-pns-redesign="on"] .leaps-near-miss-blurb {
    padding: 12px 28px;
    font-family: var(--pnsx-display);
    font-style: italic;
    font-size: 0.92rem;
    color: var(--pnsx-amber);
    background: color-mix(in oklch, var(--pnsx-amber) 6%, transparent);
    border-bottom: 1px dashed var(--pnsx-rule);
    line-height: 1.5;
    max-width: 80ch;
}
[data-pns-redesign="on"] .leaps-near-miss-list {
    list-style: none;
    padding: 0;
    margin: 0;
}
[data-pns-redesign="on"] .leaps-near-miss-row {
    display: grid;
    grid-template-columns: minmax(180px, auto) 60px 100px auto auto;
    align-items: baseline;
    gap: 18px;
    padding: 10px 28px;
    border-bottom: 1px solid var(--pnsx-rule);
    font-family: var(--pnsx-mono);
    font-size: 0.78rem;
    color: var(--pnsx-ink-3);
}
[data-pns-redesign="on"] .leaps-near-miss-osi {
    font-weight: 600;
    color: var(--pnsx-ink);
    letter-spacing: -0.01em;
}
[data-pns-redesign="on"] .leaps-near-miss-ticker {
    color: var(--pnsx-ink-2);
}
[data-pns-redesign="on"] .leaps-near-miss-score {
    color: var(--pnsx-ink-3);
    font-size: 0.7rem;
    letter-spacing: 0.06em;
}
[data-pns-redesign="on"] .leaps-near-miss-failed-gate code {
    color: var(--pnsx-amber);
    font-family: var(--pnsx-mono);
    background: transparent;
    padding: 0 2px;
}
[data-pns-redesign="on"] .leaps-near-miss-observed {
    color: var(--pnsx-ink-2);
    font-size: 0.72rem;
    letter-spacing: 0.04em;
}

/* Subtle leaps subtitle paragraph */
[data-pns-redesign="on"] .leaps-subtle {
    padding: 14px 28px;
    border-bottom: 1px dashed var(--pnsx-rule);
    font-family: var(--pnsx-display);
    font-style: italic;
    font-size: 0.92rem;
    color: var(--pnsx-ink-3);
    line-height: 1.5;
    max-width: 80ch;
    margin: 0;
}

/* =================================================================
   POSITIONS / GENERIC PAGE — make /positions feel coherent
   ================================================================= */

[data-pns-redesign="on"] .pns-pos-tile {
    border: 0;
}
[data-pns-redesign="on"] .pns-pos-pnl-pct {
    color: var(--pnsx-accent, var(--pnsx-ink));
}

/* Earnings-watch and other amber bars */
[data-pns-redesign="on"] .pns-earnings-bar .pns-entry strong {
    color: var(--pnsx-amber);
}

/* Verify result fragments */
[data-pns-redesign="on"] .pns-verified-badge {
    border-radius: 0;
}

/* =================================================================
   LEAP TARGETS CARD — Editorial Terminal aesthetic
   §6 sizing + §3 alerts targets vs measured shadow-trade progress.
   Behind PNS_LEAPS_TARGETS env flag; partial render-gated as well.
   ================================================================= */

[data-pns-redesign="on"] .leap-targets-card {
    margin: 0 0 18px 0;
    padding: 0;
    border: 1px solid var(--pnsx-rule-2);
    background: var(--pnsx-surf);
}

[data-pns-redesign="on"] .leap-targets-head {
    display: flex;
    align-items: baseline;
    gap: 10px;
    padding: 10px 16px;
    border-bottom: 1px solid var(--pnsx-rule);
    background: var(--pnsx-bg);
}
[data-pns-redesign="on"] .leap-targets-head--sub {
    background: transparent;
    border-top: 1px dashed var(--pnsx-rule);
}
[data-pns-redesign="on"] .leap-targets-marker {
    color: var(--pnsx-gold);
    font-size: 0.8rem;
}
[data-pns-redesign="on"] .leap-targets-title {
    font-family: var(--pnsx-display);
    font-style: italic;
    font-size: 1.05rem;
    font-weight: 600;
    letter-spacing: -0.01em;
    color: var(--pnsx-ink);
    margin: 0;
}
[data-pns-redesign="on"] .leap-targets-sub {
    font-family: var(--pnsx-mono);
    font-size: 0.66rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--pnsx-ink-4);
}
[data-pns-redesign="on"] .leap-targets-sub strong {
    color: var(--pnsx-gold);
    font-weight: 600;
}

/* Section 1 — TARGETS row, 5 compact cells */
[data-pns-redesign="on"] .leap-targets-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 0;
    margin: 0;
    padding: 0;
}
[data-pns-redesign="on"] .leap-target-cell {
    padding: 10px 14px;
    border-right: 1px solid var(--pnsx-rule);
    margin: 0;
}
[data-pns-redesign="on"] .leap-target-cell:last-child { border-right: 0; }
[data-pns-redesign="on"] .leap-target-cell dt {
    font-family: var(--pnsx-mono);
    font-size: 0.58rem;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--pnsx-ink-4);
    margin-bottom: 4px;
}
[data-pns-redesign="on"] .leap-target-cell dd {
    font-family: var(--pnsx-mono);
    font-size: 0.95rem;
    line-height: 1.15;
    color: var(--pnsx-ink);
    margin: 0;
}
[data-pns-redesign="on"] .leap-target-goal {
    color: var(--pnsx-ink-2);
    font-weight: 500;
}
[data-pns-redesign="on"] .leap-target-actual {
    margin-top: 2px;
    font-size: 0.78rem;
    color: var(--pnsx-ink-3);
}
[data-pns-redesign="on"] .leap-target-actual span[data-status="ahead"]    { color: var(--pnsx-bull); }
[data-pns-redesign="on"] .leap-target-actual span[data-status="on-track"] { color: var(--pnsx-gold); }
[data-pns-redesign="on"] .leap-target-actual span[data-status="behind"]   { color: var(--pnsx-bear); }
[data-pns-redesign="on"] .leap-target-actual span[data-status="unknown"]  { color: var(--pnsx-ink-4); }
[data-pns-redesign="on"] .leap-target-na {
    color: var(--pnsx-ink-4);
    font-style: italic;
}
[data-pns-redesign="on"] .leap-target-n {
    margin-left: 6px;
    color: var(--pnsx-ink-4);
    font-size: 0.66rem;
    letter-spacing: 0.08em;
}

/* Section 2 — V1 PROGRESS list */
[data-pns-redesign="on"] .leap-v1-list {
    list-style: none;
    margin: 0;
    padding: 8px 16px 12px;
}
[data-pns-redesign="on"] .leap-v1-row {
    padding: 6px 0;
    border-top: 1px dashed var(--pnsx-rule);
}
[data-pns-redesign="on"] .leap-v1-row:first-child {
    border-top: 0;
}
[data-pns-redesign="on"] .leap-v1-row-head {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 12px;
    margin-bottom: 3px;
}
[data-pns-redesign="on"] .leap-v1-name {
    font-family: var(--pnsx-mono);
    font-size: 0.7rem;
    letter-spacing: 0.06em;
    color: var(--pnsx-ink-2);
}
[data-pns-redesign="on"] .leap-v1-value {
    font-family: var(--pnsx-mono);
    font-size: 0.7rem;
    color: var(--pnsx-ink-3);
}
[data-pns-redesign="on"] .leap-v1-bar {
    width: 100%;
    height: 4px;
    border: 0;
    background: var(--pnsx-bg);
    accent-color: var(--pnsx-gold);
}
[data-pns-redesign="on"] .leap-v1-bar::-webkit-progress-bar {
    background: var(--pnsx-bg);
}
[data-pns-redesign="on"] .leap-v1-bar::-webkit-progress-value {
    background: var(--pnsx-ink-3);
}
[data-pns-redesign="on"] .leap-v1-bar[data-status="ahead"]::-webkit-progress-value     { background: var(--pnsx-bull); }
[data-pns-redesign="on"] .leap-v1-bar[data-status="on-track"]::-webkit-progress-value  { background: var(--pnsx-gold); }
[data-pns-redesign="on"] .leap-v1-bar[data-status="behind"]::-webkit-progress-value    { background: var(--pnsx-bear); }
[data-pns-redesign="on"] .leap-v1-bar[data-status="unknown"]::-webkit-progress-value   { background: var(--pnsx-rule-2); }
[data-pns-redesign="on"] .leap-v1-row[data-status="ahead"]    .leap-v1-name { color: var(--pnsx-bull); }
[data-pns-redesign="on"] .leap-v1-row[data-status="on-track"] .leap-v1-name { color: var(--pnsx-gold); }
[data-pns-redesign="on"] .leap-v1-row[data-status="behind"]   .leap-v1-name { color: var(--pnsx-bear); }

/* Per-tile shadow-trade tracking row (EXP EV / REAL / VAR) */
[data-pns-redesign="on"] .leap-track-row {
    display: flex;
    gap: 10px;
    margin: 4px 0 0 0;
    padding: 4px 0 0;
    border-top: 1px dashed var(--pnsx-rule);
}
[data-pns-redesign="on"] .leap-track-cell {
    display: flex;
    align-items: baseline;
    gap: 4px;
    margin: 0;
}
[data-pns-redesign="on"] .leap-track-cell dt {
    font-family: var(--pnsx-mono);
    font-size: 0.56rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--pnsx-ink-4);
    margin: 0;
}
[data-pns-redesign="on"] .leap-track-cell dd {
    font-family: var(--pnsx-mono);
    font-size: 0.72rem;
    color: var(--pnsx-ink);
    margin: 0;
}
[data-pns-redesign="on"] .leap-track-cell[data-sign="up"]   dd { color: var(--pnsx-bull); }
[data-pns-redesign="on"] .leap-track-cell[data-sign="down"] dd { color: var(--pnsx-bear); }

