/* Source-specific chart geometry. Publication tokens replace the old colours. */
/* system */
.prose blockquote .attr{ display: block; font-style: normal; font-family: var(--label); font-size: 0.75rem; color: var(--text-dim); margin-top: 12px; letter-spacing: 0.02em; }
.prose .td-bright{ color: var(--ink); font-weight: 500; }
.prose .td-dim{ color: var(--text-dim); }
/* copying */
.prose blockquote .attr{ display: block; font-style: normal; font-family: var(--label); font-size: 0.75rem; color: var(--text-dim); margin-top: 12px; letter-spacing: 0.02em; }
.prose .td-bright{ color: var(--ink); font-weight: 500; }
.prose .td-dim{ color: var(--text-dim); }
/* model */
.prose blockquote .attr{ display: block; font-style: normal; font-family: var(--label); font-size: 0.75rem; color: var(--text-dim); margin-top: 12px; letter-spacing: 0.02em; }
/* emergency */
.prose blockquote .attr{ display: block; font-style: normal; font-family: var(--label); font-size: 0.75rem; color: var(--text-dim); margin-top: 12px; letter-spacing: 0.02em; }
.prose .td-bright{ color: var(--ink); font-weight: 500; }
.prose .td-dim{ color: var(--text-dim); }
/* nonprofit */
.prose blockquote .attr{ display: block; font-style: normal; font-family: var(--label); font-size: 0.75rem; color: var(--text-dim); margin-top: 12px; letter-spacing: 0.02em; }
.prose .td-bright{ color: var(--ink); font-weight: 500; }
.prose .td-dim{ color: var(--text-dim); }
/* anyone-could-make-it */
.prose blockquote .attr{ display: block; font-style: normal; font-family: var(--label); font-size: 0.75rem; color: var(--text-dim); margin-top: 12px; letter-spacing: 0.02em; }
/* airline */
.prose blockquote .attr{
            display: block;
            font-style: normal;
            font-family: var(--label);
            font-size: 0.72rem;
            color: var(--text-dim);
            margin-top: 0.5rem;
        }
/* map */
.prose blockquote .attr{ display: block; font-style: normal; font-family: var(--label); font-size: 0.75rem; color: var(--text-dim); margin-top: 12px; letter-spacing: 0.02em; }
.prose .td-bright{ color: var(--ink); font-weight: 500; }
.prose .td-dim{ color: var(--text-dim); }
/* doctor */
.prose blockquote .attr{ display: block; font-style: normal; font-family: var(--label); font-size: 0.75rem; color: var(--text-dim); margin-top: 12px; letter-spacing: 0.02em; }
.prose .td-bright{ color: var(--ink); font-weight: 500; }
.prose .td-dim{ color: var(--text-dim); }
/* chess */
.prose blockquote .attr{ display: block; font-style: normal; font-family: var(--label); font-size: 0.72rem; color: var(--text-dim); margin-top: 0.5rem; }
/* table */
.prose blockquote .attr{
            display: block;
            font-style: normal;
            font-family: var(--label);
            font-size: 0.72rem;
            color: var(--text-dim);
            margin-top: 0.5rem;
        }
.prose .td-bright{
            color: var(--ink);
            font-weight: 500;
        }
.prose .td-dim{
            color: var(--text-dim);
        }
.prose .chart-svg{
            width: 100%;
            height: auto;
            margin: 1.5em 0;
        }
.prose .hierarchy-bars{
            margin: 1.5em 0;
        }
.prose .hierarchy-row{
            display: grid;
            grid-template-columns: 100px 1fr 60px;
            align-items: center;
            gap: clamp(8px, 1.5vw, 16px);
            padding: 0.4rem 0;
        }
.prose .hierarchy-label{
            font-family: var(--label);
            font-size: 0.72rem;
            color: var(--text-dim);
            text-align: right;
        }
.prose .hierarchy-bar-bg{
            height: 20px;
            background: color-mix(in srgb, var(--ink) 2.0%, transparent);
            border-radius: 2px;
            overflow: hidden;
        }
.prose .hierarchy-bar{
            height: 100%;
            background: color-mix(in srgb,var(--hi) 18.0%,transparent);
            border-radius: 2px;
            transition: width 0.6s ease;
        }
.prose .hierarchy-bar.bright{
            background: color-mix(in srgb,var(--hi) 35.0%,transparent);
        }
.prose .hierarchy-val{
            font-family: var(--label);
            font-size: 0.72rem;
            color: var(--text-mid);
        }
.prose .hierarchy-val.bright{
            color: var(--ink);
            font-weight: 500;
        }
@media (max-width: 500px){.prose .hierarchy-row{
                grid-template-columns: 70px 1fr 50px;
            }}
/* game */
.prose blockquote .attr{
            display: block;
            font-style: normal;
            font-family: var(--label);
            font-size: 0.72rem;
            color: var(--text-dim);
            margin-top: 0.5rem;
        }
.prose .revenue-svg{
            width: 100%;
            height: auto;
            margin: 1.5em 0;
        }
/* cars */
.prose .viewers-svg{
            width: 100%;
            height: auto;
            margin: 1.5em 0;
        }
.prose .audience-grid{
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 16px;
            margin: 1.5em 0;
        }
.prose .audience-stat{
            padding: clamp(20px, 2.5vw, 28px) clamp(16px, 2vw, 24px);
            background: color-mix(in srgb, var(--ink) 2.0%, transparent);
            border: 1px solid color-mix(in srgb, var(--ink) 6.0%, transparent);
            border-radius: 3px;
        }
.prose .audience-stat-number{
            font-family: var(--serif);
            font-size: clamp(1.4rem, 2.5vw, 1.8rem);
            font-weight: 600;
            color: var(--ink);
            line-height: 1.2;
            margin-bottom: 0.4rem;
        }
.prose .audience-stat-desc{
            font-family: var(--label);
            font-size: 0.72rem;
            color: var(--text-body);
            line-height: 1.5;
        }
.prose .valuation-visual{
            display: flex;
            align-items: flex-end;
            gap: clamp(32px, 5vw, 48px);
            justify-content: center;
            padding: 2em 0 1em;
        }
.prose .val-block{
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 10px;
        }
.prose .val-bar{
            width: clamp(60px, 12vw, 100px);
            border-radius: 3px 3px 0 0;
        }
.prose .val-bar.before{
            height: 50px;
            background: color-mix(in srgb, var(--ink) 6.0%, transparent);
        }
.prose .val-bar.after{
            height: 280px;
            background: color-mix(in srgb,var(--hi) 18.0%,transparent);
        }
.prose .val-amount{
            font-family: var(--serif);
            font-size: clamp(1.1rem, 1.8vw, 1.3rem);
            font-weight: 600;
            color: var(--ink);
            line-height: 1;
        }
.prose .val-amount.dim{
            color: var(--text-dim);
        }
.prose .val-label{
            font-family: var(--label);
            font-size: 0.68rem;
            letter-spacing: 0.08em;
            text-transform: uppercase;
            color: var(--text-dim);
        }
.prose .val-multiplier{
            font-family: var(--serif);
            font-size: 1rem;
            font-weight: 600;
            color: var(--ink);
            text-align: center;
            margin-top: 0.25em;
            margin-bottom: 1.5em;
        }
.prose .rights-timeline{
            margin: 1.5em 0;
        }
.prose .rights-step{
            display: grid;
            grid-template-columns: 60px auto 1fr;
            align-items: center;
            gap: clamp(12px, 2vw, 24px);
            padding: 1rem 0;
            border-bottom: 1px solid color-mix(in srgb, var(--ink) 4.0%, transparent);
        }
.prose .rights-step:last-child{
            border-bottom: none;
        }
.prose .rights-year{
            font-family: var(--label);
            font-size: 0.78rem;
            color: var(--text-dim);
        }
.prose .rights-amount{
            font-family: var(--serif);
            font-size: clamp(1.4rem, 2.5vw, 1.8rem);
            font-weight: 600;
            color: var(--ink);
            line-height: 1;
        }
.prose .rights-amount.zero{
            color: var(--text-dim);
        }
.prose .rights-detail{
            font-family: var(--label);
            font-size: 0.72rem;
            color: var(--text-dim);
        }
.prose .rights-detail em{
            color: var(--text-body);
            font-style: normal;
        }
@media (max-width: 500px){.prose .audience-grid{
                grid-template-columns: 1fr;
            }
.prose .val-bar.after{
                height: 180px;
            }
.prose .rights-step{
                grid-template-columns: 50px auto 1fr;
            }}
/* marginal */
.prose blockquote .attr{
            display: block;
            font-style: normal;
            font-family: var(--label);
            font-size: 0.72rem;
            color: var(--text-dim);
            margin-top: 0.5rem;
        }
/* score */
.prose blockquote .attr{ display: block; font-style: normal; font-family: var(--label); font-size: 0.72rem; color: var(--text-dim); margin-top: 0.5rem; }
/* school */
.prose blockquote .attr{ display: block; font-style: normal; font-family: var(--label); font-size: 0.75rem; color: var(--text-dim); margin-top: 12px; letter-spacing: 0.02em; }
.prose .td-bright{ color: var(--ink); font-weight: 500; }
.prose .td-dim{ color: var(--text-dim); }
/* degree */
.prose blockquote .attr{ display: block; font-style: normal; font-family: var(--label); font-size: 0.75rem; color: var(--text-dim); margin-top: 12px; letter-spacing: 0.02em; }
.prose .td-bright{ color: var(--ink); font-weight: 500; }
.prose .td-dim{ color: var(--text-dim); }
/* gotin */
.prose blockquote .attr{ display: block; font-style: normal; font-family: var(--label); font-size: 0.75rem; color: var(--text-dim); margin-top: 12px; letter-spacing: 0.02em; }
/* talented */
.prose blockquote .attr{ display: block; font-style: normal; font-family: var(--label); font-size: 0.72rem; color: var(--text-dim); margin-top: 0.5rem; }
.prose .td-bright{ color: var(--ink); font-weight: 500; }
.prose .td-dim{ color: var(--text-dim); }
/* anyone */
.prose blockquote .attr{ display: block; font-style: normal; font-family: var(--label); font-size: 0.72rem; color: var(--text-dim); margin-top: 0.5rem; }
.prose .td-bright{ color: var(--ink); font-weight: 500; }
.prose .td-dim{ color: var(--text-dim); }
/* mortgage */
.prose blockquote .attr{
            display: block;
            font-style: normal;
            font-family: var(--label);
            font-size: 0.72rem;
            color: var(--text-dim);
            margin-top: 0.5rem;
        }
.prose .revenue-svg{
            width: 100%;
            height: auto;
            margin: 1.5em 0;
        }
.prose .series-nav{
            margin-top: clamp(48px, 6vw, 72px);
            padding-top: clamp(20px, 3vw, 36px);
            border-top: 1px solid color-mix(in srgb, var(--ink) 6.0%, transparent);
            font-family: var(--label);
            font-size: 0.8rem;
        }
.prose .series-nav .series-label{
            color: var(--text-dim);
            font-size: 0.68rem;
            letter-spacing: 0.1em;
            text-transform: uppercase;
            margin-bottom: 0.75rem;
        }
.prose .series-nav a{
            display: block;
            color: var(--text-mid);
            border-bottom: none;
            margin-bottom: 0.4rem;
        }
.prose .series-nav a:hover{
            color: var(--ink);
        }
.prose .series-nav .current{
            color: var(--ink);
        }
/* mortgage-designed */
.prose blockquote .attr{
            display: block;
            font-style: normal;
            font-family: var(--label);
            font-size: 0.72rem;
            color: var(--text-dim);
            margin-top: 0.5rem;
        }
.prose .series-nav{
            margin-top: clamp(48px, 6vw, 72px);
            padding-top: clamp(20px, 3vw, 36px);
            border-top: 1px solid color-mix(in srgb, var(--ink) 6.0%, transparent);
            font-family: var(--label);
            font-size: 0.8rem;
        }
.prose .series-nav .series-label{
            color: var(--text-dim);
            font-size: 0.68rem;
            letter-spacing: 0.1em;
            text-transform: uppercase;
            margin-bottom: 0.75rem;
        }
.prose .series-nav a{
            display: block;
            color: var(--text-mid);
            border-bottom: none;
            margin-bottom: 0.4rem;
        }
.prose .series-nav a:hover{
            color: var(--ink);
        }
.prose .series-nav .current{
            color: var(--ink);
        }
/* mortgage-inherited */
.prose blockquote .attr{
            display: block;
            font-style: normal;
            font-family: var(--label);
            font-size: 0.72rem;
            color: var(--text-dim);
            margin-top: 0.5rem;
        }
.prose .series-nav{
            margin-top: clamp(48px, 6vw, 72px);
            padding-top: clamp(20px, 3vw, 36px);
            border-top: 1px solid color-mix(in srgb, var(--ink) 6.0%, transparent);
            font-family: var(--label);
            font-size: 0.8rem;
        }
.prose .series-nav .series-label{
            color: var(--text-dim);
            font-size: 0.68rem;
            letter-spacing: 0.1em;
            text-transform: uppercase;
            margin-bottom: 0.75rem;
        }
.prose .series-nav a{
            display: block;
            color: var(--text-mid);
            border-bottom: none;
            margin-bottom: 0.4rem;
        }
.prose .series-nav a:hover{
            color: var(--ink);
        }
.prose .series-nav .current{
            color: var(--ink);
        }
/* profitable */
.prose blockquote .attr{ display: block; font-style: normal; font-family: var(--label); font-size: 0.72rem; color: var(--text-dim); margin-top: 0.5rem; }
/* expert */
.prose blockquote .attr{ display: block; font-style: normal; font-family: var(--label); font-size: 0.72rem; color: var(--text-dim); margin-top: 0.5rem; }
.prose .divergence{ margin: 2em 0; }
.prose .divergence svg{ width: 100%; height: auto; display: block; }
.prose .divergence-note{ font-family: var(--label); font-size: 0.72rem; color: var(--text-dim); display: block; margin-top: 0.75rem; }
.prose .cascade{ margin: 2em 0; padding: 1.25rem 0; }
.prose .cascade-title{ font-family: var(--label); font-size: 0.7rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-dim); display: block; margin-bottom: 1.25rem; }
.prose .cascade-row{ display: flex; align-items: center; margin-bottom: 10px; gap: 12px; }
.prose .cascade-label{ font-family: var(--label); font-size: 0.68rem; color: var(--text-dim); width: 120px; flex-shrink: 0; text-align: right; line-height: 1.3; }
.prose .cascade-track{ flex: 1; height: 32px; background: color-mix(in srgb, var(--ink) 2.5%, transparent); border-radius: 2px; position: relative; }
.prose .cascade-fill{ height: 100%; border-radius: 2px; display: flex; align-items: center; justify-content: flex-end; padding-right: 12px; }
.prose .cascade-value{ font-family: var(--label); font-size: 0.8rem; font-weight: 600; color: var(--ink); }
.prose .cascade-row:last-child .cascade-fill{ background: color-mix(in srgb,var(--hi) 20.0%,transparent); }
.prose .cascade-row:last-child .cascade-value{ color: var(--hi); }
.prose .cascade-result{ font-family: var(--label); font-size: 0.78rem; color: var(--ink); font-weight: 500; margin-top: 1rem; display: block; }
.prose .line-chart{ margin: 2em 0; }
.prose .line-chart svg{ width: 100%; height: auto; display: block; }
.prose .hbar-chart{ margin: 2em 0; }
.prose .hbar-row{ display: flex; align-items: center; margin-bottom: 10px; gap: 12px; }
.prose .hbar-label{ font-family: var(--label); font-size: 0.72rem; color: var(--text-dim); width: 140px; flex-shrink: 0; text-align: right; line-height: 1.3; }
.prose .hbar-track{ flex: 1; height: 32px; background: color-mix(in srgb, var(--ink) 2.5%, transparent); border-radius: 2px; position: relative; }
.prose .hbar-fill{ height: 100%; border-radius: 2px; display: flex; align-items: center; padding-left: 12px; }
.prose .hbar-fill .hbar-value{ font-family: var(--label); font-size: 0.8rem; font-weight: 600; white-space: nowrap; }
.prose .hbar-fill.accent{ background: color-mix(in srgb,var(--hi) 15.0%,transparent); }
.prose .hbar-fill.accent .hbar-value{ color: var(--ink); }
.prose .hbar-fill.dim{ background: rgba(115, 115, 115, 0.12); }
.prose .hbar-fill.dim .hbar-value{ color: var(--text-dim); }
.prose .hbar-note{ font-family: var(--label); font-size: 0.72rem; color: var(--text-dim); display: block; margin-top: 0.75rem; }
.prose .detect-bar{ display: inline-block; width: 60px; height: 6px; background: color-mix(in srgb, var(--ink) 4.0%, transparent); border-radius: 2px; position: relative; vertical-align: middle; margin-right: 6px; }
.prose .detect-fill{ position: absolute; left: 0; top: 0; height: 100%; background: var(--hi); border-radius: 2px; min-width: 1px; }
@media (max-width: 500px){.prose .cascade-label,.prose .hbar-label{ width: 90px; font-size: 0.62rem; }
.prose .cascade-fill,.prose .hbar-fill{ padding-right: 8px; padding-left: 8px; }
.prose .detect-bar{ width: 40px; }}
/* winner */
.prose blockquote .attr{ display: block; font-style: normal; font-family: var(--label); font-size: 0.72rem; color: var(--text-dim); margin-top: 0.5rem; }
