/* Portfolio Tracker (r32): effective r337 composition of tools/portfolio-tracker (portfolio-tracker.v2909.css with its
   revision layers, the Welle-1 section icons and the v1866 head runtime) in FINAL v18 tokens, light and dark. r337 showed
   the page dark only; colours now follow the central theme. Loaded only on /tools/portfolio-tracker/.
   Staged r337 elements keep their form: the status hero with gauge, flanks and facts, the signal rows with icon and state,
   the Plus strip, the performer and fact cards with symbol tiles, the donut with legend, the two-tier position table and
   the mobile position cards, the journal rows with type pill and metric tiles, the stepped position modal.
   Semantic colours (Todoist UI-004): steel blue = open/due (--info), gold = brand/selection, green = success,
   orange = warning, red = error. Text never goes below .66rem; labels and marks use .72rem. r337 breakpoint 760 stays.
   UX improvements (user approval 02.10.2026, docs/v18-abweichungen.md): the gauge delta sits below the ring instead of
   covering it, the Investment Hub link stays on one line on phones, the Plus strip wraps instead of cutting its CTA,
   the primary actions use the central gold button. */
@layer components {
 /* r33: also on :root (this sheet loads only on the tracker): r337 appends the Bitpanda preview, the Verlauf dialog and
    the toast to body, outside the route root. */
 :root, .tool-page--portfolio-tracker {
  --pt-card: var(--surface);
  --pt-tile: var(--surface-muted);
  --pt-head: var(--surface-strong);
  --pt-line: var(--border-soft);
  --pt-steel: var(--info);
  --pt-steel-soft: var(--info-soft);
  --pt-steel-border: var(--info-border);
  --pt-pos: var(--success);
  --pt-neg: var(--danger);
  --pt-warn: var(--warning);
  --pt-warn-soft: color-mix(in srgb, var(--warning) 12%, transparent);
  --pt-warn-border: color-mix(in srgb, var(--warning) 42%, transparent);
  --pt-sticky-top: var(--pt-area-tabs-sticky-top, 72px);
  /* Paket AQ (UI-124): a warm gold wash for heads and leads, and the r337 tracker card picture (Hilfsmittel card,
     feature-portfolio-tracker-card-v1) as the quiet stage behind the overview values. */
  --pt-wash: linear-gradient(90deg, var(--gold-soft), transparent 62%);
  --pt-art: url('/assets/anzeige/feature-carousel/feature-portfolio-tracker-card-v1-800.3378a3b2.webp');
  --pt-art-opacity: .2;
 }
 html[data-theme='dark'] .tool-page--portfolio-tracker { --pt-art-opacity: .3; }
 /* r34: page scroll locks of the r337 modals by class instead of inline priority styles (same properties). The hard lock
    holds while a position, snapshot, confirm or overview layer is open; the Bitpanda preview also pins the body at its
    scroll offset (r337 iOS lock, offset in --pt-preview-scroll-top). */
 html.pt-scroll-locked, html.pt-scroll-locked body { overflow: hidden; }
 /* r337 (portfolio-tracker.v2909.css) also locked the page by class while the confirm dialog is open; not taken over in r32. */
 body.pt-confirm-open { overflow: hidden; }
 html.pt-bitpanda-preview-open-root { overflow: hidden; overscroll-behavior: none; height: 100%; }
 html.pt-bitpanda-preview-open-root body.pt-bitpanda-preview-open { position: fixed; top: var(--pt-preview-scroll-top, 0); left: 0; right: 0; width: 100%; overflow: hidden; touch-action: none; overscroll-behavior: none; }
 .tool-page--portfolio-tracker :is(button, a, summary, input, select, textarea, [role="button"]):focus-visible { outline: 2px solid var(--accent-text); outline-offset: 2px; }
 .pt-page { display: block; color: var(--text); font-size: .9rem; line-height: 1.55; }
 .pt-page :is(h2, h3, h4) { margin: 0; color: var(--text); letter-spacing: -.01em; }
 .pt-page p { margin: 0; }
 /* Central semantic buttons retain their own text colour. */
 /* The central currency switch (UI-041) keeps its own type and colour. */
 .pt-page button:not(.currency-switch__option) { font: inherit; cursor: pointer; }
 .pt-page button:not(.btn):not(.currency-switch__option) { color: inherit; }
 .pt-page :is(input, select, textarea), .pt-modal :is(input, select, textarea) { font: inherit; }
 .pt-kicker { margin: 0 0 4px; color: var(--accent-text); font-size: .72rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; }
 .pt-muted { color: var(--text-faint); }
 .pt-pos, .pos, .is-positive { color: var(--pt-pos); }
 .pt-neg, .neg, .is-negative { color: var(--pt-neg); }

 /* ── Buttons ─────────────────────────────────────────────────
    UI-042: the shared Free/Plus/danger variants own button appearance;
    .pt-btn and its modifiers remain script and layout hooks;
    a file input inside a label button keeps the pointer of a button. */
 label.pt-btn { cursor: pointer; }
 .pt-icon-btn, .pt-mini-btn { width:var(--touch-target);padding:0; }
 .pt-mini-btn { font-size: .86rem; }
 .pt-btn-icon { display: inline-flex; align-items: center; justify-content: center; line-height: 1; }
 .pt-steuer-btn__icon { line-height: 1; }
 .pt-chip, .pt-chip-cash, .pt-chip-grid button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 36px; padding: 5px 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface); color: var(--text-muted); font-size: .82rem; font-weight: 500; cursor: pointer; }
 .pt-chip:hover, .pt-chip-grid button:hover { border-color: var(--gold-border); color: var(--text); }
 .pt-chip.is-active, .pt-chip-grid button.is-active { border-color: var(--gold-border); background: var(--gold-soft); color: var(--accent-text); }

 /* ── Head ─────────────────────────────────────────────────── */
 /* Paket AQ (UI-124): the head carries a fine gold top line and a soft gold light at its right corner. */
 .pt-shell-head { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 520px); gap: var(--s5); align-items: center; margin: 0 0 10px; padding: 22px 26px 24px; border: 1px solid var(--border); border-radius: var(--radius-card); background: radial-gradient(70% 150% at 100% 0, var(--gold-soft), transparent 62%), var(--pt-card); box-shadow: inset 0 2px 0 var(--gold-border), var(--shadow-card); }
 .pt-shell-head .r4x-tool-title-row { display: flex; align-items: center; gap: var(--s3); }
 /* r34: the title is the central FINAL v18 h1 (size, weight, tracking); only its margin follows the icon row. */
 .pt-shell-head h1 { margin: 0; }
 .pt-shell-head .r4x-tool-page-hero-icon img { width: 32px; height: 32px; object-fit: contain; }
 .pt-lede { max-width: 520px; margin: 6px 0 0; color: var(--text-muted); }
 [data-info-slot="portfolio-intro"] { display: none; }



 .pt-exit-slot { margin-top: 14px; max-width: 330px; }
 .pt-exit-slot:empty { display: none; }
 .pt-head-actions { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 10px; align-items: center; justify-items: end; }
 .pt-currency-switch { justify-self: start; }
 .pt-hub-link { justify-self: end; white-space: nowrap; }
 .pt-hub-link-main, .pt-hub-link-text { display: inline-flex; align-items: center; gap: 6px; }
 .pt-hub-lock { display: inline-flex; color: var(--accent-text); }
 .pt-tool-cta-icon { width: 20px; height: 20px; padding: 1px; border-radius: var(--radius-button); background: var(--tool-surface); box-shadow: 0 0 0 1px var(--tool-border); }
 .pt-header-price-status { grid-column: 1 / -1; justify-self: stretch; display: grid; gap: 4px; padding: 8px 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); color: var(--text-muted); font-size: .82rem; text-align: center; }
 .pt-header-price-status:empty { display: none; }
 .pt-header-price-status__top, .pt-header-price-status__copy { display: grid; gap: 4px; justify-items: center; }
 .pt-header-price-status--free, .pt-header-price-status--plus { color: var(--accent-text); }
 .pt-header-price-status :is(strong, b) { color: var(--text); font-weight: 600; }
 .pt-header-price-status small { color: var(--text-faint); font-size: .72rem; }

 /* ── Area tabs (sticky below the central shell) ───────────── */
 .pt-area-tabs { position: sticky; z-index: var(--z-sticky); top: var(--pt-sticky-top); display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; margin: 12px 0 14px; padding: 4px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--pt-card); box-shadow: var(--shadow-card); overflow-x: auto; scrollbar-width: none; }
 .pt-area-tabs::-webkit-scrollbar { display: none; }
 .pt-area-tab { display: flex; align-items: center; justify-content: center; min-width: 0; min-height: 40px; padding: 8px 10px; border: 0; border-radius: var(--radius-control); background: transparent; color: var(--text-muted); font-size: .84rem; font-weight: 500; white-space: nowrap; cursor: pointer; }
 .pt-area-tab:hover { background: var(--pt-tile); color: var(--text); }
 /* Paket AQ (UI-124): the open area reads as selected through a gold base line, not only through colour. */
 .pt-area-tab.is-active { background: var(--gold-soft); color: var(--text); font-weight: 600; box-shadow: inset 0 0 0 1px var(--gold-border), inset 0 -2px 0 var(--gold); }
 .pt-tab-label-mobile { display: none; }

 /* ── Areas (r337: only the active area shows) ─────────────── */
 [data-pt-area] { display: none; }
 [data-pt-area].is-pt-active-area { display: block; }
 .pt-main-grid.is-pt-active-area { display: grid; }
 .pt-tool-area { padding-top: var(--s4); }
 .pt-main-grid--structure { display: grid; gap: 12px; }

 /* ── Cards and section heads ──────────────────────────────── */
 .pt-card { position: relative; margin: 0 0 14px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--pt-card); box-shadow: var(--shadow-card); overflow: hidden; }
 .pt-card--overview-insights { border: 0; background: transparent; box-shadow: none; overflow: visible; }
 .pt-section-head { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 78px; padding: 18px 20px 18px 80px; border-bottom: 1px solid var(--pt-line); background: var(--pt-wash), var(--pt-head); }
 .pt-section-head-left { min-width: 0; }
 .pt-section-head-right { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 8px; }
 .pt-section-title { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; font-size: 1.12rem; font-weight: 600; line-height: 1.3; }
 .pt-section-subtext { max-width: 860px; margin-top: 6px; color: var(--text-muted); }
 .pt-count-badge { display: inline-flex; align-items: center; justify-content: center; min-height: 26px; padding: 2px 10px; border: 1px solid var(--pt-steel-border); border-radius: var(--radius-pill); background: var(--pt-steel-soft); color: var(--text); font-size: .86rem; font-weight: 500; letter-spacing: 0; }
 .pt-count-badge:empty { display: none; }
 .pt-w1-icon { position: absolute; left: 18px; top: 50%; display: grid; place-items: center; width: 44px; height: 44px; margin: 0; border: 1px solid var(--gold-border); border-radius: var(--radius-control); background: var(--gold-soft); color: var(--accent-text); transform: translateY(-50%); pointer-events: none; }
 .pt-w1-icon svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.7; }
 .pt-source { padding: 8px 20px 14px; color: var(--text-muted); font-size: .82rem; }
 .pt-limit-box { margin: 12px 20px 0; }
 .pt-lock-note { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; padding: 12px 14px; border: 1px solid var(--gold-border); border-radius: var(--radius-control); background: var(--gold-soft); color: var(--text-muted); font-size: .86rem; }
 .pt-lock-note strong { color: var(--text); }
 .pt-lock-line { display: inline-flex; align-items: center; gap: 7px; margin-top: 10px; padding: 6px 10px; border: 1px solid var(--gold-border); border-radius: var(--radius-pill); background: var(--gold-soft); color: var(--text-muted); font-size: .82rem; }
 .pt-empty-state { padding: 22px; border: 1px dashed var(--gold-border); border-radius: var(--radius-card); background: var(--gold-soft); }
 .pt-empty-state :is(h3, strong) { display: block; margin-bottom: 6px; color: var(--text); font-size: .94rem; font-weight: 600; }
 .pt-empty-state p { margin-bottom: 12px; color: var(--text-muted); }

 /* r337 effective cascade (v2909 l. 24148): the older summary strip stays hidden; the status hero carries the figures. */
 #summary-cards { display: none; }

 /* ── Overview: status hero (staged r337 gauge, flanks, facts) ─ */
 .pt-overview-dashboard { display: grid; gap: 18px; }
 /* Paket AQ (UI-124): the hero is a quiet stage. Behind the ring and its flanks the r337 tracker card picture shows
    faintly at the upper right (veiled by the card colour, faded at its edges, never under the figures' own surfaces);
    a soft gold light sits above the ring. Figures, ring and texts stay in front at full contrast. */
 .pt-hero { position: relative; isolation: isolate; padding: 18px 16px 16px; border: 1px solid var(--border); border-radius: var(--radius-card); background: radial-gradient(48% 36% at 50% 0, var(--gold-soft), transparent 72%), var(--pt-card); box-shadow: var(--shadow-card); overflow: hidden; }
 .pt-hero::before { content: ''; position: absolute; z-index: -1; inset-block-start: 0; inset-inline-end: -12%; width: min(50%, 620px); aspect-ratio: 16 / 9; background: var(--pt-art) center / cover no-repeat; opacity: var(--pt-art-opacity); mask-image: radial-gradient(58% 68% at 52% 44%, var(--gold) 30%, transparent 80%); pointer-events: none; }
 .pt-hero__top { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 2px; }
 .pt-hero__badge { display: inline-flex; align-items: center; gap: 7px; padding: 5px 12px; border: 1px solid var(--gold-border); border-radius: var(--radius-pill); background: var(--gold-soft); color: var(--accent-text); font-size: .84rem; }
 .pt-hero__badge::before { content: ''; width: 6px; height: 6px; border-radius: var(--radius-pill); background: currentColor; }
 .pt-hero__stage { display: flex; align-items: center; justify-content: center; gap: var(--s7); margin-top: var(--s2); }
 .pt-hero__flank { display: flex; flex-direction: column; gap: var(--s4); min-width: 120px; }
 .pt-hero__flank--r { align-items: flex-end; text-align: right; }
 .pt-hero__mini { display: flex; flex-direction: column; gap: 1px; }
 .pt-hero__mini :is(span, small, em) { color: var(--text-faint); font-size: .72rem; font-style: normal; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
 .pt-hero__mini :is(b, strong) { color: var(--text); font-size: 1.25rem; font-weight: 600; font-variant-numeric: tabular-nums; }
 /* UX (r32): the change pill sits below the ring (r337 placed it over the ring's lower edge). */
 .pt-hero__gauge { position: relative; display: flex; flex-direction: column; align-items: center; gap: 8px; margin-top: 4px; }
 /* r69 design pass: on tablet and desktop the value ring is the visual anchor of the overview (180 px read as a thumbnail
    between empty flanks); phones keep their own size below. */
 .pt-hero__gauge svg { display: block; width: 236px; max-width: 100%; height: auto; filter: drop-shadow(0 10px 26px var(--gold-glow)); }
 .pt-hero__gauge :is(text, tspan) { fill: var(--text); }
 /* SVG text in viewBox units (ring drawn at 180 of 200): 12 units ≈ 10.8 px keeps the v18 floor (r337: 10.5). */
 .pt-hero__g-lab { fill: var(--text-faint); font-size: 12px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
 .pt-hero__g-big { fill: var(--text); font-size: 21px; font-weight: 600; letter-spacing: -.02em; }
 .pt-hero__g-big.is-pos { fill: var(--pt-pos); }
 .pt-hero__g-big.is-neg { fill: var(--pt-neg); }
 .pt-hero__gauge circle:first-of-type { stroke: var(--border); }
 /* Paket AQ (BUG-074): the ring tone follows the total result in theme tokens; an unknown result is neutral gold. */
 .pt-hero__ring.is-pos { stroke: color-mix(in srgb, var(--pt-pos) 78%, var(--pt-card)); }
 .pt-hero__ring.is-neg { stroke: color-mix(in srgb, var(--pt-neg) 78%, var(--pt-card)); }
 .pt-hero__ring.is-neutral { stroke: var(--gold); }
 /* r337 staging (v2909): the ring pulses after a value change (is-blink-up/-down/-flat) with ▲/▼/→ in the pill.
    Paket AQ (Todoist BUG-074): the pill shows amount and percent and stays after the pulse (is-held-*); it is written
    only when there is something to say. With reduced motion nothing moves. */
 .pt-hero__delta { display: inline-flex; align-items: center; gap: var(--s1); padding: var(--s1) var(--s3); border: 1px solid var(--border); border-radius: var(--radius-pill); background: var(--surface); color: var(--text); font-size: .82rem; white-space: nowrap; }
 .pt-hero__delta b { font-weight: 600; font-variant-numeric: tabular-nums; }
 .pt-hero__delta-ar { font-style: normal; }
 .pt-hero__delta-ar::before { display: inline-block; }
 .pt-hero__delta-sep, .pt-hero__delta-cap { color: var(--text-faint); }
 .pt-hero__delta--hint { border-color: var(--attention-border); background: var(--attention-soft); white-space: normal; text-align: center; }
 .pt-hero__delta--hint .pt-hero__delta-cap { color: var(--text); }
 .pt-hero__basis { color: var(--text-faint); font-size: .72rem; font-variant-numeric: tabular-nums; }
 .pt-hero__pulse { opacity: 0; }
 .pt-hero__gauge:is(.is-blink-up, .is-blink-down, .is-blink-flat) .pt-hero__delta { animation: ptDeltaShow var(--motion-base) var(--ease-standard) 1 both; }
 .pt-hero__gauge:is(.is-blink-up, .is-held-up) .pt-hero__delta { color: var(--pt-pos); border-color: var(--success-border); background: var(--success-soft); }
 .pt-hero__gauge:is(.is-blink-down, .is-held-down) .pt-hero__delta { color: var(--pt-neg); border-color: var(--danger-border); background: var(--danger-soft); }
 .pt-hero__gauge:is(.is-blink-up, .is-held-up) .pt-hero__delta-ar::before { content: "\25B2"; }
 .pt-hero__gauge:is(.is-blink-down, .is-held-down) .pt-hero__delta-ar::before { content: "\25BC"; }
 .pt-hero__gauge:is(.is-blink-flat, .is-held-flat) .pt-hero__delta-ar::before { content: "\2192"; }
 .pt-hero__gauge.is-blink-up .pt-hero__pulse { stroke: var(--pt-pos); color: var(--pt-pos); animation: ptPulseRing 1.3s ease-in-out 4; }
 .pt-hero__gauge.is-blink-down .pt-hero__pulse { stroke: var(--pt-neg); color: var(--pt-neg); animation: ptPulseRing 1.3s ease-in-out 4; }
 .pt-hero__gauge.is-blink-flat .pt-hero__pulse { stroke: var(--text); color: var(--text); animation: ptPulseRing 1.3s ease-in-out 4; }
 @keyframes ptPulseRing { 0%, 100% { opacity: 0; filter: none; } 50% { opacity: .9; filter: drop-shadow(0 0 9px currentColor); } }
 @keyframes ptDeltaShow { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
 @media (prefers-reduced-motion: reduce) {
  .pt-hero__pulse { animation: none; }
  .pt-hero__gauge:is(.is-blink-up, .is-blink-down, .is-blink-flat) .pt-hero__delta { animation: none; }
 }
 .pt-hero__fact > .pt-hero__fact-note { display: block; margin-top: 2px; color: var(--text-muted); font-size: .76rem; font-weight: 500; letter-spacing: 0; text-transform: none; }
 /* Todoist UI-001: Cash and Stablecoins below the joint figure, compact on phones. */
 .pt-hero__splits { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin-top: 10px; }
 .pt-hero__split { display: flex; align-items: baseline; gap: 8px; padding: 5px 12px; border: 1px solid var(--border); border-radius: var(--radius-pill); background: var(--pt-tile); }
 .pt-hero__split span { color: var(--text-faint); font-size: .72rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
 .pt-hero__split b { color: var(--text); font-size: .86rem; font-weight: 600; white-space: nowrap; }
 .pt-hero__split--cash { border-color: var(--pt-steel-border); }
 .pt-hero__split--stable { border-color: var(--success-border); }
 /* Paket AQ (UI-124): the three facts are tiles; the result tile takes the tone of the result. */
 .pt-hero__facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s2); margin: var(--s4) 0 var(--s3); }
 .pt-hero__fact { display: grid; align-content: start; gap: 2px; padding: var(--s3); border: 1px solid var(--pt-line); border-radius: var(--radius-control); background: color-mix(in srgb, var(--pt-head) 70%, transparent); text-align: center; }
 .pt-hero__fact:has(> b.pos) { border-color: var(--success-border); background: var(--success-soft); }
 .pt-hero__fact:has(> b.neg) { border-color: var(--danger-border); background: var(--danger-soft); }
 .pt-hero__fact :is(span, small) { display: block; color: var(--text-faint); font-size: .72rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
 .pt-hero__fact b { color: var(--text); font-size: 1.15rem; font-weight: 600; font-variant-numeric: tabular-nums; }
 .pt-hero__fact b.pos { color: var(--pt-pos); }
 .pt-hero__fact b.neg { color: var(--pt-neg); }
 .pt-hero__fact em { display: block; margin-top: 1px; font-size: .78rem; font-style: normal; font-weight: 600; font-variant-numeric: tabular-nums; }
 .pt-hero__lead { margin-top: 12px; padding: 14px 16px; border: 1px solid var(--pt-line); border-left: 3px solid var(--gold); border-radius: var(--radius-control); background: var(--pt-wash), var(--pt-tile); color: var(--text-muted); text-align: center; }
 .pt-hero__lead-actions { display: flex; justify-content: center; margin-top: 10px; }
 .pt-hero__signals { display: flex; flex-direction: column; gap: 8px; margin-top: 16px; }
 .pt-hero__sig { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border: 1px solid var(--pt-line); border-left: 3px solid var(--pt-steel); border-radius: var(--radius-control); background: linear-gradient(90deg, var(--pt-steel-soft), transparent 28%), var(--pt-tile); }
 .pt-hero__sig[role="button"] { cursor: pointer; }
 .pt-hero__sig[role="button"]:hover { border-color: var(--pt-steel-border); border-left-color: var(--pt-steel); }
 .pt-hero__sig[data-pt-hero-rules-card] { border-left-color: var(--gold); background: linear-gradient(90deg, var(--gold-soft), transparent 28%), var(--pt-tile); }
 .pt-hero__sig:nth-child(3) { border-left-color: var(--pt-pos); background: linear-gradient(90deg, var(--success-soft), transparent 28%), var(--pt-tile); }
 .pt-hero__sig--save { flex-wrap: wrap; gap: 10px 12px; border-left-color: var(--text-faint); background: var(--pt-tile); }
 .pt-hero__sig-ico { display: grid; place-items: center; flex: 0 0 34px; width: 34px; height: 34px; border-radius: var(--radius-control); background: var(--pt-steel-soft); color: var(--pt-steel); }
 .pt-hero__sig[data-pt-hero-rules-card] .pt-hero__sig-ico { background: var(--gold-soft); color: var(--accent-text); }
 .pt-hero__sig:nth-child(3) .pt-hero__sig-ico { background: var(--success-soft); color: var(--pt-pos); }
 .pt-hero__sig--save .pt-hero__sig-ico { background: var(--surface); color: var(--text-muted); box-shadow: inset 0 0 0 1px var(--border); }
 .pt-hero__sig-main { flex: 1 1 auto; min-width: 0; }
 .pt-hero__sig-main b { display: block; color: var(--text); font-weight: 600; }
 .pt-hero__sig-main span { color: var(--text-muted); }
 /* Paket AQ (UI-124): the state of a row is a small chip in its tone (steel = open, green = in frame, orange = attention). */
 .pt-hero__sig-state { padding: 2px var(--s2); border: 1px solid var(--border); border-radius: var(--radius-pill); color: var(--text-faint); font-size: .76rem; white-space: nowrap; }
 .pt-hero__sig-state.is-info { border-color: var(--pt-steel-border); background: var(--pt-steel-soft); color: var(--pt-steel); }
 .pt-hero__sig-state.is-ok { border-color: var(--success-border); background: var(--success-soft); color: var(--pt-pos); }
 .pt-hero__sig-state.is-warn { border-color: var(--attention-border); background: var(--attention-soft); color: var(--attention); }
 .pt-hero__sig-state.is-alert, .pt-hero__sig-state.is-bad { border-color: var(--danger-border); background: var(--danger-soft); color: var(--pt-neg); }
 .pt-hero__sig-chev { flex: none; color: var(--text-faint); }
 .pt-hero__sig-act { display: flex; align-items: center; gap: 8px; margin-left: auto; }
 .pt-hero__sig-note-btn { width:var(--touch-target);padding:0; }
 .pt-hero__sig-btn { flex:none; }
 .pt-hero__sig-note { padding: 0 2px; }
 .pt-hero__sig-note-field { display: grid; gap: 6px; color: var(--text-muted); font-size: .82rem; }
 .pt-hero__sig-note-field input { min-height: 44px; padding: 8px 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--input); color: var(--text); }
 /* Plus strip. UX (r32): the CTA wraps below the copy on phones instead of being cut off. */
 .pt-ov-strip { display: flex; align-items: center; gap: 12px; margin-top: 12px; padding: 12px 14px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--pt-wash), var(--pt-card); box-shadow: var(--shadow-card); color: var(--text); text-align: left; text-decoration: none; width: 100%; }
 .pt-ov-strip:hover { border-color: var(--gold-border); }
 .pt-ov-strip__ico { display: grid; place-items: center; flex: 0 0 34px; width: 34px; height: 34px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); color: var(--accent-text); }
 .pt-ov-strip__main { flex: 1 1 auto; min-width: 0; }
 .pt-ov-strip__main b { display: block; color: var(--text); font-weight: 600; }
 .pt-ov-strip__main span { color: var(--text-muted); }
 .pt-ov-strip__cta { flex: none; color: var(--accent-text); font-weight: 500; white-space: nowrap; }
 .pt-ov-chart-placeholder { display: grid; place-items: center; min-height: 140px; padding: var(--s4); border: 1px dashed var(--border); border-radius: var(--radius-control); color: var(--text-muted); text-align: center; }
 .pt-ov-chart-placeholder__body { display: grid; gap: var(--s2); justify-items: center; max-width: 35rem; }
 .pt-ov-chart-placeholder__body--action { gap: var(--s3); }

 /* ── Positions (Paket AR, Daniel 22.10.2026: "wie bei einem Premium Portfolio, alle Informationen sofort erfasst") ──
    Each position is a card. First tier: the asset, its value with the holding below, the result as a toned figure with
    percent and break-even, the share with a bar. Second tier: the market facts of the coin (price, entry, market cap,
    1d, 7d, 1Y) as a labelled band across the card. Cash (steel edge) and holdings without price source (orange edge,
    the reason instead of empty values) show their kind. The labels stand in each card; the r337 column head band and
    its two-tier columns (BUG-022, AQ _v2) give way to them. */
 .pt-table-wrap { margin-top: var(--s2); padding: var(--s2) var(--s5) var(--s2); font-variant-numeric: tabular-nums; }
 .pt-mobile-position-list { display: none; }
 .pt-desktop-movement { display: grid; gap: var(--s3); }
 .pt-movement-head { display: none; }
 .pt-movement-row { position: relative; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)) calc(3 * var(--touch-target) + 2 * var(--s1)); column-gap: var(--s3); row-gap: var(--s1); align-items: start; padding: var(--s4) var(--s4) 0; border: 1px solid var(--border); border-left: 3px solid var(--gold-border); border-radius: var(--radius-card); background: var(--pt-wash), var(--pt-card); box-shadow: var(--shadow-card); font-size: .86rem; overflow: hidden; }
 .pt-movement-row:hover { border-color: var(--gold-border); }
 /* The market band is a pseudo row behind the second tier, flush with the card edges. */
 .pt-movement-row::before { content: ''; grid-column: 1 / -1; grid-row: 3; margin: var(--s3) calc(-1 * var(--s4)) 0; border-top: 1px solid var(--pt-line); background: var(--pt-tile); }
 .pt-movement-row > * { min-width: 0; }
 .pt-movement-row > .pt-asset-cell { grid-column: 1 / 5; grid-row: 1 / 3; }
 .pt-movement-row > .pt-cell--value { grid-column: 5 / 8; grid-row: 1; }
 .pt-movement-row > .pt-cell--amount { grid-column: 5 / 8; grid-row: 2; }
 .pt-movement-row > .pt-cell--result { grid-column: 8 / 11; grid-row: 1 / 3; }
 .pt-movement-row > .pt-cell--share { grid-column: 11 / 13; grid-row: 1 / 3; }
 .pt-movement-row > .pt-tracking-actions { grid-column: 13; grid-row: 1 / 3; }
 .pt-movement-row > :is(.pt-cell--price, .pt-cell--entry, .pt-cell--marketcap, .pt-cell--day1, .pt-cell--day7, .pt-cell--day1y) { grid-row: 3; padding: calc(var(--s3) + var(--s2)) 0 var(--s3); }
 /* Daniel 22.10.2026: the average purchase price first, then the current price, both in full strength; the market
    figures of the coin follow quieter behind a hairline. */
 .pt-movement-row > .pt-cell--entry { grid-column: 1 / 3; }
 .pt-movement-row > .pt-cell--price { grid-column: 3 / 5; }
 .pt-movement-row > :is(.pt-cell--entry, .pt-cell--price) .pt-cell-value { color: var(--text); font-size: 1rem; font-weight: 700; }
 .pt-movement-row > .pt-cell--marketcap { padding-left: var(--s3); border-left: 1px solid var(--pt-line); }
 .pt-movement-row > .pt-cell--marketcap { grid-column: 5 / 7; }
 .pt-movement-row > .pt-cell--day1 { grid-column: 7 / 9; }
 .pt-movement-row > .pt-cell--day7 { grid-column: 9 / 11; }
 .pt-movement-row > .pt-cell--day1y { grid-column: 11 / 14; }
 .pt-movement-row > :is(.pt-tax-detail, .pt-thesis-block) { grid-column: 1 / -1; }
 .pt-movement-row .pt-cell { text-align: left; }
 .pt-movement-row .pt-cell-label { display: block; margin-bottom: var(--s1); color: var(--text-faint); font-size: .72rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
 /* The holding stands under the value, without its own label. */
 .pt-movement-row > .pt-cell--amount .pt-cell-label { display: none; }
 .pt-movement-row > .pt-cell--amount .pt-cell-value { color: var(--text-muted); }
 .pt-movement-row > .pt-cell--value .pt-cell-value { font-size: 1.3rem; font-weight: 700; line-height: 1.2; }
 .pt-movement-row > .pt-cell--share .pt-cell-value { font-size: 1rem; font-weight: 600; }
 .pt-movement-row :is(.pt-result-cell, .pt-result-stack) { align-items: flex-start; gap: var(--s1); }
 .pt-movement-row .pt-result-pct-row { justify-content: flex-start; align-items: center; }
 /* The result reads first: its amount is a toned figure. */
 :is(.pt-movement-row .pt-result-stack, .pt-mobile-position-card__metric--result) > :first-child.pt-trend, .pt-mobile-position-card__metric--result > strong > .pt-trend { padding: 2px var(--s2); border-radius: var(--radius-pill); background: var(--surface-muted); font-size: 1rem; font-weight: 700; }
 :is(.pt-movement-row .pt-result-stack, .pt-mobile-position-card__metric--result) > :first-child.pt-trend.is-positive, .pt-mobile-position-card__metric--result > strong > .pt-trend.is-positive { background: var(--success-soft); }
 :is(.pt-movement-row .pt-result-stack, .pt-mobile-position-card__metric--result) > :first-child.pt-trend.is-negative, .pt-mobile-position-card__metric--result > strong > .pt-trend.is-negative { background: var(--danger-soft); }
 .pt-share-meter { display: block; width: 100%; height: 6px; margin-top: var(--s2); border: 0; border-radius: var(--radius-pill); background: var(--surface-strong); appearance: none; }
 .pt-share-meter::-webkit-meter-bar { height: 6px; border: 0; border-radius: var(--radius-pill); background: var(--surface-strong); }
 .pt-share-meter::-webkit-meter-optimum-value { border-radius: var(--radius-pill); background: linear-gradient(90deg, var(--gold-border), var(--gold)); }
 .pt-share-meter::-moz-meter-bar { border-radius: var(--radius-pill); background: linear-gradient(90deg, var(--gold-border), var(--gold)); }
 /* Cash: steel edge; no market band and no result (cash has no market facts, its result is always € 0,00). */
 .pt-movement-row--cash { padding-bottom: var(--s4); border-left-color: var(--pt-steel); background: linear-gradient(90deg, var(--pt-steel-soft), transparent 62%), var(--pt-card); }
 .pt-movement-row--cash::before, .pt-movement-row--cash > :is(.pt-cell--result, .pt-cell--price, .pt-cell--entry, .pt-cell--marketcap, .pt-cell--day1, .pt-cell--day7, .pt-cell--day1y) { display: none; }
 /* Without price source: orange edge; the holding and the reason with the way to Daten instead of empty values. */
 .pt-movement-row--unpriced { padding-bottom: var(--s4); border-left-color: var(--attention-border); background: linear-gradient(90deg, var(--attention-soft), transparent 62%), var(--pt-card); }
 .pt-movement-row--unpriced::before, .pt-movement-row--unpriced > :is(.pt-cell--value, .pt-cell--result, .pt-cell--share, .pt-cell--price, .pt-cell--entry, .pt-cell--marketcap, .pt-cell--day1, .pt-cell--day7, .pt-cell--day1y) { display: none; }
 .pt-movement-row--unpriced > .pt-cell--amount { grid-row: 1 / 3; }
 .pt-movement-row--unpriced > .pt-cell--amount .pt-cell-label { display: block; }
 .pt-movement-row--unpriced > .pt-cell--amount .pt-cell-value { color: var(--text); font-size: 1.05rem; font-weight: 600; }
 .pt-position-status { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s2) var(--s3); padding: var(--s2) var(--s3); border: 1px solid var(--attention-border); border-radius: var(--radius-control); background: var(--attention-soft); }
 .pt-movement-row > .pt-position-status { grid-column: 8 / 13; grid-row: 1 / 3; }
 .pt-position-status > b { color: var(--attention); font-weight: 600; }
 .pt-position-status__holding { flex: 1 0 100%; color: var(--text-muted); }
 .pt-position-status__holding b { color: var(--text); font-weight: 600; }
 /* r337 desktop rows and phone cards (portfolio-tracker.v2909.css:1444) show icon buttons; the word stays for screen
    readers (title and label). Without this the phone card's "Steuer" spilled out of its 44 px button. */
 :is(.pt-desktop-movement, .pt-mobile-position-card) :is(.pt-btn-label, .pt-steuer-btn__label) { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
 .pt-asset-cell { display: flex; align-items: center; gap: 10px; min-width: 0; text-align: left; }
 .pt-movement-row > .pt-asset-cell { align-items: flex-start; gap: var(--s3); }
 .pt-movement-row > .pt-asset-cell .pt-logo { flex-basis: 44px; width: 44px; height: 44px; font-size: .78rem; }
 .pt-movement-row .pt-asset-name-row { color: var(--text); font-size: 1rem; font-weight: 700; }
 .pt-asset-cell__copy { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
 .pt-asset-name-row { display: flex; align-items: center; gap: 6px; }
 .pt-asset-name { color: var(--text); font-weight: 600; }
 .pt-asset-meta { color: var(--text-muted); font-size: .8rem; }
 .pt-logo { position: relative; display: grid; place-items: center; flex: 0 0 34px; width: 34px; height: 34px; border: 1px solid var(--border); border-radius: var(--radius-pill); background: var(--gold-soft); color: var(--accent-text); font-size: .72rem; font-weight: 700; overflow: hidden; }
 /* The symbol is the r337 fallback under the logo image (the image is removed when it fails to load). */
 .pt-logo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; background: var(--surface); }
 .pt-inline-star { display: inline-grid; place-items: center; width: 26px; height: 24px; padding: 0; border: 1px solid var(--gold-border); border-radius: var(--radius-button); background: var(--gold-soft); color: var(--accent-text); font-size: .86rem; line-height: 1; }
 .pt-cell { text-align: right; }
 .pt-cell-label { display: none; }
 .pt-cell-value { display: block; color: var(--text); }
 .pt-result-cell, .pt-result-stack { display: flex; flex-direction: column; align-items: flex-end; gap: 3px; }
 .pt-result-pct-row { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; }
 .pt-breakeven { display: inline-block; margin-top: 2px; padding: 1px 6px; border-radius: var(--radius-badge); background: var(--gold-soft); color: var(--accent-text); font-size: .76rem; }
 .pt-tracking-actions { display: flex; align-items: center; justify-content: flex-end; gap: var(--s1); }

 /* ── Structure ────────────────────────────────────────────── */
 /* Paket AQ (UI-124): the distribution sits on its own framed stage with a soft gold light behind the donut; the legend
    reads as a ruled list. */
 .pt-chart { margin: 10px 18px 14px; padding: 18px; border: 1px solid var(--pt-line); border-radius: var(--radius-card); background: radial-gradient(40% 70% at 14% 50%, var(--gold-soft), transparent 70%), var(--pt-tile); }
 .pt-chart-layout { display: grid; grid-template-columns: 250px minmax(0, 1fr); gap: 18px; align-items: center; }
 .pt-donut-wrap { position: relative; width: 196px; height: 196px; filter: drop-shadow(0 10px 22px var(--gold-glow)); }
 .pt-donut { width: 196px; height: 196px; border-radius: var(--radius-pill); box-shadow: inset 0 0 0 1px var(--border); }
 .pt-donut-center { position: absolute; inset: 0; display: grid; place-content: center; padding: 0 48px; text-align: center; }
 .pt-donut-center::before { content: ''; position: absolute; inset: 52px; z-index: -1; border-radius: var(--radius-pill); background: var(--pt-card); }
 .pt-donut-center { isolation: isolate; }
 .pt-donut-center > div { display: grid; gap: 2px; }
 .pt-donut-center :is(strong, b) { color: var(--text); font-size: .94rem; }
 .pt-donut-center :is(span, small) { color: var(--text-faint); font-size: .72rem; }
 .pt-legend--columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 56px; }
 .pt-legend-col { display: grid; gap: 0; align-content: start; }
 .pt-legend-row { display: grid; grid-template-columns: 10px minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: var(--s2) 0; border-bottom: 1px solid var(--pt-line); color: var(--text-muted); font-variant-numeric: tabular-nums; }
 .pt-dot { width: 10px; height: 10px; border-radius: var(--radius-badge); }
 .pt-legend-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
 .pt-legend-value { color: var(--text); font-weight: 600; text-align: right; }
 /* Paket AQ (UI-124): from tablet width the measured facts stand in two columns; the two sentences span the row. */
 .pt-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 0 18px 18px; padding: 18px; }
 .pt-fact { display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: 4px 12px; align-items: center; min-height: 72px; padding: 16px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-card); box-shadow: var(--shadow-card); }
 .pt-fact--statement { grid-column: 1 / -1; background: var(--pt-wash), var(--pt-card); }
 .pt-fact--metric { grid-template-columns: 34px minmax(0, 1fr) auto; }
 .pt-fact-symbol { grid-row: span 2; display: grid; place-items: center; width: 32px; height: 32px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface); color: var(--text-muted); }
 .pt-fact-symbol svg { width: 16px; height: 16px; }
 .pt-fact-symbol--largest, .pt-fact-symbol--top2 { border-color: var(--gold-border); background: var(--gold-soft); color: var(--accent-text); }
 .pt-fact-symbol--best { border-color: var(--success-border); background: var(--success-soft); color: var(--pt-pos); }
 .pt-fact-symbol--worst { border-color: var(--danger-border); background: var(--danger-soft); color: var(--pt-neg); }
 .pt-fact-symbol--stable, .pt-fact-symbol--altcoin, .pt-fact-symbol--bitcoin { border-color: var(--pt-steel-border); background: var(--pt-steel-soft); color: var(--pt-steel); }
 .pt-fact--statement .pt-fact-symbol { grid-row: auto; }
 .pt-fact-text { color: var(--text); }
 .pt-fact-label { color: var(--text-faint); font-size: .72rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
 .pt-fact-sub { color: var(--text-faint); font-size: .76rem; }
 .pt-fact-value { grid-column: 3; grid-row: 1 / span 2; color: var(--text); font-size: 1.2rem; font-weight: 600; font-variant-numeric: tabular-nums; text-align: right; }
 .pt-plus-section { margin: 0 18px 18px; padding: 18px; }
 .pt-plus-section:empty { display: none; }
 .pt-plus-accordion { position: relative; margin-top: 12px; padding: 14px 16px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--pt-wash), var(--pt-tile); }
 .pt-plus-accordion:first-child { margin-top: 0; }
 .pt-plus-accordion > summary { display: flex; align-items: center; justify-content: space-between; gap: 14px; list-style: none; cursor: pointer; }
 .pt-plus-accordion > summary::-webkit-details-marker { display: none; }
 .pt-plus-accordion > summary h3 { display: flex; align-items: center; gap: 6px; font-size: .98rem; font-weight: 600; }
 .pt-plus-accordion > summary i { display: grid; place-items: center; flex: none; width: 32px; height: 32px; border: 1px solid var(--border); border-radius: var(--radius-pill); color: var(--text-muted); font-style: normal; transition: transform var(--motion-fast) var(--ease-standard); }
 .pt-plus-accordion[open] > summary i { transform: rotate(180deg); }
 .pt-plus-summary-copy { max-width: 760px; margin-top: 2px; color: var(--text-muted); }
 .pt-plus-subline { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 6px; color: var(--text-muted); font-size: .82rem; }
 .pt-plus-accordion-body { padding-top: 10px; }
 .pt-plus-lock-dot { font-size: .86rem; }
 .pt-plus-structure-unlock { margin-top: 12px; }
 .pt-plus-unlock-summary { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 12px; padding: 14px 16px; border: 1px solid var(--gold-border); border-radius: var(--radius-card); background: var(--gold-soft); }
 .pt-plus-unlock-summary h3 { margin: 2px 0 4px; font-size: .98rem; }
 .pt-plus-unlock-summary p { color: var(--text-muted); }

 /* ── Watchlist ────────────────────────────────────────────── */
 .pt-watchlist-block { overflow: hidden; }
 .pt-watchlist-block-inner { margin-top: 10px; padding: 4px 18px 16px; }
 .pt-wl-list { display:grid;gap:var(--s3); }
 /* Paket AQ (UI-124): a watched coin is a raised tile with a gold edge; price figures in tabular digits. */
 .pt-wl-row { display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.85fr) minmax(0,1.3fr) minmax(0,.9fr) auto;grid-template-areas:"asset price targets note actions";gap:var(--s4);align-items:center;padding:var(--s4);border:1px solid var(--border);border-left:3px solid var(--gold-border);border-radius:var(--radius-control);background:var(--pt-wash),var(--pt-card);box-shadow:var(--shadow-card);font-variant-numeric:tabular-nums; }
 .pt-wl-row.wl-alert--high { border-color:var(--success-border);border-left-color:var(--pt-pos);background:var(--success-soft); }
 .pt-wl-row.wl-alert--low { border-color:var(--pt-warn-border);border-left-color:var(--pt-warn);background:var(--warning-soft); }
 .pt-wl-asset { grid-area:asset;display:flex;align-items:center;gap:var(--s3);min-width:0; }
 .pt-wl-asset>div { min-width:0;overflow-wrap:anywhere; }
 .pt-wl-price { grid-area:price;min-width:0;overflow-wrap:anywhere; }
 .pt-wl-price strong { display:block;color:var(--text);font-size:1.05rem; }
 .pt-wl-price small { color:var(--text-faint);font-size:.74rem; }
 .pt-wl-price[data-price-state="loading"] strong, .pt-wl-price[data-price-state="unavailable"] strong { color:var(--text-muted);font-weight:500; }
 .pt-wl-targets { grid-area:targets;display:grid;gap:var(--s2); }
 .pt-wl-note-col { grid-area:note; }
 .pt-wl-targets, .pt-wl-note-col { min-width:0;color:var(--text-muted);font-size:.84rem;overflow-wrap:anywhere; }
 .pt-wl-target--high { color:var(--success); }
 .pt-wl-target--low { color:var(--warning); }
 .pt-wl-hit-detail { display:grid;gap:var(--s1);padding:var(--s2);border-radius:var(--radius-control);border:1px solid var(--border); }
 .pt-wl-hit-detail--high { color:var(--success);border-color:var(--success-border); }
 .pt-wl-hit-detail--low { color:var(--warning);border-color:var(--pt-warn-border); }
 .pt-wl-hit-detail small { color:var(--text-muted); }
 .pt-wl-actions { grid-area:actions;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--s2); }
 .pt-wl-action-icon { display:inline-grid;place-items:center;flex:none;width:var(--s5);height:var(--s5);font-size:1rem;line-height:1; }
 .pt-wl-remove-btn { padding:var(--s2); }
 .pt-wl-modal .pt-modal-head>div { min-width:0;overflow-wrap:anywhere; }
 .pt-wl-modal .pt-field input { min-height:var(--touch-target); }
 .pt-wl-feedback { margin-bottom: 10px; padding: 8px 12px; border: 1px solid var(--pt-steel-border); border-radius: var(--radius-control); background: var(--pt-steel-soft); color: var(--text); font-size: .84rem; }
 .pt-wl-pick-price { display: block; color: var(--text-muted); font-size: .78rem; }
 .pt-wl-pick-hint { display: block; color: var(--text-faint); font-size: .74rem; }
 .pt-wl-pick-hint.is-watched, .pt-wl-pick-hint.is-portfolio { color: var(--accent-text); }
 .pt-wl-pick-hint.is-limit { color: var(--pt-warn); }
 .pt-wl-current-price { display: grid; gap: 2px; margin-bottom: 14px; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-wl-current-price span { color: var(--text-faint); font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; }
 .pt-wl-current-price strong { color: var(--text); }
 .pt-wl-currency-hint { margin: -4px 0 14px; color: var(--text-faint); font-size: .78rem; }
 .pt-wl-toast { position: fixed; z-index: var(--z-toast); left: 50%; bottom: max(var(--s5), env(safe-area-inset-bottom)); max-width: min(420px, calc(100vw - 32px)); padding: 10px 16px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface); box-shadow: var(--shadow-elevated); color: var(--text); font-size: .86rem; transform: translateX(-50%); }

 /* ── Transactions ─────────────────────────────────────────── */
 .pt-card--journal { padding: 13px 14px; }
 .pt-transactions-head { display: flex; flex-direction: column; gap: 14px; padding: 18px 20px 20px; border-radius: var(--radius-card); background: var(--pt-wash), var(--pt-head); }
 .pt-transactions-head__layout { display: grid; grid-template-columns: minmax(0, .6fr) minmax(0, 1fr); gap: 20px; }
 .pt-transactions-head__main { display: flex; flex-direction: column; gap: 8px; }
 .pt-transactions-head__main h2, .pt-transactions-head__main h3 { font-size: 1.12rem; font-weight: 600; }
 .pt-transactions-head__copy { color: var(--text-muted); }
 .pt-transactions-head__status-actions { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; align-items: start; }
 .pt-transactions-head__stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
 .pt-journal-status { display: flex; flex-direction: column; gap: 4px; min-height: 86px; padding: 13px 15px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-card); color: var(--text-muted); }
 .pt-journal-status :is(strong, b) { color: var(--text); font-size: 1.2rem; font-variant-numeric: tabular-nums; }
 .pt-journal-status small { color: var(--text-faint); font-size: .74rem; }
 .pt-transactions-tools { position: relative; }
 .pt-transactions-tools > summary { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 8px 14px; border: 1px solid var(--gold-border); border-radius: var(--radius-button); background: var(--pt-card); color: var(--text); list-style: none; cursor: pointer; white-space: nowrap; }
 .pt-transactions-tools > summary::-webkit-details-marker { display: none; }
 .pt-transactions-tools__summary-icon { display: grid; place-items: center; width: 22px; height: 22px; border-radius: var(--radius-button); background: var(--gold-soft); color: var(--accent-text); }
 .pt-transactions-tools__menu { position: absolute; z-index: var(--z-drawer); right: 0; top: calc(100% + 8px); display: grid; width: min(360px, 86vw); padding: 7px; border: 1px solid var(--gold-border); border-radius: var(--radius-card); background: var(--surface); box-shadow: var(--shadow-elevated); }
 .pt-transactions-tools__menu :is(button, a) { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 48px; padding: 8px 10px; border: 0; border-radius: var(--radius-control); background: transparent; color: var(--text); text-align: left; text-decoration: none; }
 .pt-transactions-tools__menu :is(button, a):hover { background: var(--gold-soft); }
 .pt-transactions-tools__icon { display: grid; place-items: center; flex: 0 0 30px; width: 30px; height: 30px; border: 1px solid var(--gold-border); border-radius: var(--radius-control); background: var(--tool-surface); color: var(--button-text); font-size: .72rem; }
 .pt-transactions-tools__icon img { width: 20px; height: 20px; object-fit: contain; }
 .pt-journal-view-switch { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 14px; padding: 6px; border: 1px solid var(--gold-border); border-radius: var(--radius-card); background: var(--pt-tile); }
 .pt-journal-view-switch button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; border: 1px solid transparent; border-radius: var(--radius-control); background: transparent; color: var(--text-muted); font-weight: 500; }
 .pt-journal-view-switch button.is-active, .pt-journal-view-switch button[aria-pressed="true"], .pt-journal-view-switch button[aria-selected="true"] { border-color: var(--gold-border); background: var(--gold-soft); color: var(--text); font-weight: 600; box-shadow: inset 0 -2px 0 var(--gold); }
 .pt-journal-view-switch button span:not(:first-child) { display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 6px; border-radius: var(--radius-pill); background: var(--surface); color: var(--text-muted); font-size: .72rem; }
 .pt-journal-zone { padding: 22px 4px 0; }
 .pt-journal-zone-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin: 0 0 18px; padding: 0 18px 14px; border-bottom: 1px solid var(--pt-line); }
 .pt-journal-zone-head-main { display: flex; align-items: flex-start; gap: 14px; min-width: 0; }
 .pt-journal-zone-head-icon { display: grid; place-items: center; flex: 0 0 40px; width: 40px; height: 40px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); color: var(--accent-text); }
 .pt-journal-zone-head-icon svg { width: 18px; height: 18px; }
 .pt-journal-zone-head-copy { display: flex; flex-direction: column; gap: 2px; }
 .pt-journal-zone-head-copy :is(h3, strong) { color: var(--text); font-size: 1rem; font-weight: 600; }
 .pt-journal-zone-kicker { color: var(--text-faint); font-size: .84rem; }
 .pt-journal-zone-head-copy p:not(.pt-journal-zone-kicker) { color: var(--text-muted); }
 .pt-journal-zone-badge { display: flex; flex-direction: column; align-items: flex-end; padding: 6px 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); color: var(--text-muted); font-size: .82rem; text-align: right; white-space: nowrap; }
 .pt-journal-zone-badge :is(strong, b) { color: var(--text); }
 .pt-journal-history-toolbar { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, .9fr) minmax(0, 1.4fr); gap: 12px; align-items: end; margin: 0 0 16px; padding: 14px 18px 8px; }
 .pt-journal-history-search, .pt-journal-history-sort { display: flex; flex-direction: column; gap: 6px; color: var(--text-muted); font-size: .84rem; font-weight: 500; }
 .pt-journal-history-filters-wrap { grid-column: 1 / -1; display: flex; flex-direction: column; gap: 6px; }
 .pt-journal-history-filters-head { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; color: var(--text-muted); font-size: .84rem; }
 .pt-journal-history-filters-head small { color: var(--text-faint); font-size: .74rem; }
 .pt-journal-history-filters { display: flex; flex-wrap: wrap; gap: 6px; }
 /* r337: the compact filter picker replaces the chip row on phones only. */
 .pt-journal-history-filter-select { display: none; }
 .pt-journal-history-filter-picker { position: relative; }
 .pt-journal-history-filter-trigger { display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; min-height: 44px; padding: 8px 12px; border: 1px solid var(--gold-border); border-radius: var(--radius-control); background: var(--input); color: var(--text); }
 .pt-journal-history-filter-trigger i { font-style: normal; color: var(--text-muted); }
 .pt-journal-history-filter-menu { position: absolute; z-index: var(--z-drawer); left: 0; right: 0; top: calc(100% + 6px); display: grid; gap: 2px; padding: 6px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface); box-shadow: var(--shadow-elevated); }
 .pt-journal-history-filter-option { min-height: 44px; padding: 8px 10px; border: 0; border-radius: var(--radius-control); background: transparent; color: var(--text); text-align: left; }
 .pt-journal-history-filter-option.is-active { background: var(--gold-soft); color: var(--accent-text); }
 .pt-journal-list { display: flex; flex-direction: column; gap: 8px; padding: 8px 18px 18px; }
 /* BUG-023: one card grammar for every movement. Row 1: identity · metric tiles · actions; row 2: platform and note. */
 .pt-journal-row { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr) auto; gap: 12px 16px; align-items: center; padding: 14px 16px; border: 1px solid var(--border); border-left: 3px solid var(--border); border-radius: var(--radius-control); background: var(--pt-card); box-shadow: var(--shadow-card); font-variant-numeric: tabular-nums; }
 .pt-journal-row--in { border-left-color: var(--pt-pos); }
 .pt-journal-row--out { border-left-color: var(--pt-neg); }
 .pt-journal-row--neutral, .pt-journal-row--transfer, .pt-journal-row--swap { border-left-color: var(--pt-steel); }
 .pt-journal-row__main { position: relative; grid-column: 1; grid-row: 1; min-width: 0; }
 .pt-journal-identity { display: flex; align-items: center; gap: 12px; min-width: 0; }
 .pt-journal-identity .pt-logo, .pt-journal-note-logo { flex: 0 0 38px; width: 38px; height: 38px; border-radius: var(--radius-control); }
 .pt-journal-note-logo { display: grid; place-items: center; border: 1px solid var(--border); background: var(--pt-card); color: var(--accent-text); }
 .pt-journal-identity > div { display: grid; justify-items: start; gap: 3px; min-width: 0; }
 .pt-journal-identity strong small { color: var(--text-faint); font-weight: 400; }
 .pt-journal-identity :is(strong, b) { color: var(--text); }
 .pt-journal-identity small, .pt-journal-identity em { color: var(--text-faint); font-size: .8rem; }
 .pt-journal-type { display: inline-flex; align-items: center; gap: 5px; padding: 2px 9px; border-radius: var(--radius-pill); background: var(--pt-steel-soft); color: var(--pt-steel); font-size: .8rem; font-weight: 500; }
 .pt-journal-row--in .pt-journal-type { background: var(--success-soft); color: var(--pt-pos); }
 .pt-journal-row--out .pt-journal-type { background: var(--danger-soft); color: var(--pt-neg); }
 .pt-journal-row__metrics { grid-column: 2; grid-row: 1; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; min-width: 0; }
 .pt-journal-row__metrics > span, .pt-journal-metric--muted { display: block; min-width: 0; padding: 8px 10px; border: 1px solid var(--pt-line); border-radius: var(--radius-control); background: var(--pt-tile); color: var(--text); }
 .pt-journal-row__metrics b { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
 .pt-journal-row__metrics .pt-journal-metric--muted b { color: var(--text-faint); }
 .pt-journal-row__metrics small, .pt-journal-row__metrics em { display: block; color: var(--text-faint); font-size: .74rem; font-style: normal; }
 .pt-journal-note { grid-column: 1 / -1; grid-row: 2; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; margin: 0; padding-left: 50px; color: var(--text-muted); }
 .pt-journal-note > span { display: inline-flex; align-items: center; padding: 1px 8px; border: 1px solid var(--gold-border); border-radius: var(--radius-pill); background: var(--gold-soft); color: var(--accent-text); font-size: .8rem; }
 .pt-journal-row__actions { grid-column: 3; grid-row: 1; display: flex; align-items: center; justify-content: flex-end; gap: 8px; }
 .pt-journal-more { display: flex; justify-content: center; padding-top: 8px; }
 /* Linked swap: one card with both sides (r337 swap group). */
 .pt-journal-row--swap-group { grid-template-columns: minmax(0, 1fr) auto; }
 .pt-journal-swap-head { grid-column: 1; grid-row: 1; min-width: 0; }
 .pt-journal-row--swap-group .pt-journal-row__actions { grid-column: 2; }
 .pt-journal-swap-grid { grid-column: 1 / -1; grid-row: 2; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
 .pt-journal-row--swap-group .pt-journal-note { grid-row: 3; }
 .pt-journal-swap-side { display: grid; gap: 10px; min-width: 0; padding: 12px 14px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-card); }
 .pt-journal-swap-side__label span { color: var(--text-faint); font-size: .72rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
 .pt-journal-swap-side--out .pt-journal-swap-side__label span { color: var(--pt-neg); }
 .pt-journal-swap-side--in .pt-journal-swap-side__label span { color: var(--pt-pos); }
 .pt-journal-swap-side .pt-journal-row__metrics { grid-column: auto; grid-row: auto; grid-template-columns: repeat(2, minmax(0, 1fr)); }

 /* ── Transactions: entry form (BUG-023; r337 final "Welle 1" composer) ── */
 .pt-journal-form { display: grid; gap: var(--s5); padding: 0 18px 22px; border-left: 3px solid var(--gold-border); }
 .pt-journal-form[data-journal-type="buy"] { border-left-color: var(--pt-pos); }
 .pt-journal-form[data-journal-type="sell"] { border-left-color: var(--pt-neg); }
 .pt-journal-form:is([data-journal-type="transfer"], [data-journal-type="linked_swap"]) { border-left-color: var(--pt-steel); }
 .pt-journal-form[data-journal-type="correction"] { border-left-color: var(--pt-warn); }
 .pt-journal-composer-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; }
 .pt-journal-composer-main { display: flex; flex: 1 1 320px; align-items: center; gap: 14px; min-width: 0; }
 .pt-journal-composer-copy-wrap { display: grid; gap: 2px; min-width: 0; }
 .pt-journal-composer-kicker { color: var(--text-faint); font-size: .8rem; }
 .pt-journal-composer-copy-wrap strong { color: var(--text); font-size: 1.02rem; }
 .pt-journal-composer-copy-wrap p { max-width: 62ch; color: var(--text-muted); }
 /* The r337 type marks: a line icon in the type tone instead of the emoji (the emoji stays as the hidden fallback). */
 .pt-journal-composer-icon { position: relative; display: grid; place-items: center; flex: 0 0 48px; width: 48px; height: 48px; border: 1px solid var(--gold-border); border-radius: var(--radius-control); background: var(--gold-soft); color: var(--accent-text); font-size: 0; }
 .pt-journal-composer-icon::after { content: ''; width: 24px; height: 24px; background: currentColor; mask: var(--pt-journal-type-icon) center / contain no-repeat; }
 .pt-journal-composer-head { --pt-journal-type-icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><path d='M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z'/><polyline points='14 3 14 9 20 9'/><line x1='8' y1='13' x2='15' y2='13'/><line x1='8' y1='17' x2='13' y2='17'/></svg>"); }
 .pt-journal-composer-head[data-journal-type="buy"] { --pt-journal-type-icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='10'/><polyline points='8 12 12 8 16 12'/><line x1='12' y1='8' x2='12' y2='16'/></svg>"); }
 .pt-journal-composer-head[data-journal-type="sell"] { --pt-journal-type-icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='10'/><polyline points='8 12 12 16 16 12'/><line x1='12' y1='8' x2='12' y2='16'/></svg>"); }
 .pt-journal-composer-head[data-journal-type="transfer"] { --pt-journal-type-icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><path d='M3 7h14M14 4l3 3-3 3'/><path d='M21 17H7M10 14l-3 3 3 3'/></svg>"); }
 .pt-journal-composer-head[data-journal-type="linked_swap"] { --pt-journal-type-icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><path d='M3 8c0-3 2-5 5-5s5 2 5 5'/><path d='M21 16c0 3-2 5-5 5s-5-2-5-5'/><path d='M3 8h-2l3-3 3 3h-2'/><path d='M21 16h2l-3 3-3-3h2'/></svg>"); }
 .pt-journal-composer-head[data-journal-type="fee"] { --pt-journal-type-icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><path d='M4 2h11l4 4v16l-3-2-2 2-2-2-2 2-2-2-2 2-2-2z'/><path d='M7 8h9M7 12h9M7 16h6'/></svg>"); }
 .pt-journal-composer-head[data-journal-type="correction"] { --pt-journal-type-icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><path d='M3 12a9 9 0 0 1 15.5-6.3L21 8'/><polyline points='21 3 21 8 16 8'/><path d='M21 12a9 9 0 0 1-15.5 6.3L3 16'/><polyline points='3 21 3 16 8 16'/></svg>"); }
 .pt-journal-composer-head[data-journal-type="buy"] .pt-journal-composer-icon { border-color: var(--success-border); background: var(--success-soft); color: var(--pt-pos); }
 .pt-journal-composer-head[data-journal-type="sell"] .pt-journal-composer-icon { border-color: var(--danger-border); background: var(--danger-soft); color: var(--pt-neg); }
 .pt-journal-composer-head:is([data-journal-type="transfer"], [data-journal-type="linked_swap"]) .pt-journal-composer-icon { border-color: var(--pt-steel-border); background: var(--pt-steel-soft); color: var(--pt-steel); }
 .pt-journal-composer-head[data-journal-type="fee"] .pt-journal-composer-icon { border-color: var(--learning-relevance-border); background: var(--learning-relevance-soft); color: var(--learning-relevance); }
 .pt-journal-composer-head[data-journal-type="correction"] .pt-journal-composer-icon { border-color: var(--pt-warn-border); background: var(--pt-warn-soft); color: var(--pt-warn); }
 .pt-journal-composer-type { flex: 0 1 280px; min-width: 0; }
 .pt-journal-basic-fields, .pt-linked-swap-form:not([hidden]) { display: grid; gap: var(--s5); }
 .pt-journal-card-head { display: flex; align-items: center; gap: 12px; margin: 0 0 14px; padding: 0 0 10px; border-bottom: 1px solid var(--pt-line); }
 .pt-journal-card-head strong { display: block; color: var(--text); }
 .pt-journal-card-head p { margin: 2px 0 0; color: var(--text-muted); font-size: .84rem; }
 .pt-journal-card-icon { display: grid; place-items: center; flex: 0 0 30px; width: 30px; height: 30px; border: 1px solid var(--border); border-radius: var(--radius-button); background: var(--pt-tile); color: var(--accent-text); font-size: .9rem; }
 .pt-journal-linked-head { display: flex; align-items: flex-start; gap: 12px; }
 .pt-journal-linked-head > span { display: grid; place-items: center; flex: 0 0 42px; width: 42px; height: 42px; border: 1px solid var(--pt-steel-border); border-radius: var(--radius-control); background: var(--pt-steel-soft); color: var(--pt-steel); font-size: 1.1rem; }
 .pt-journal-linked-head strong { display: block; color: var(--text); }
 .pt-journal-linked-head p { max-width: 70ch; color: var(--text-muted); }
 .pt-journal-form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; align-items: end; }
 .pt-journal-asset-search { grid-column: span 2; position: relative; }
 :is(.pt-journal-form, .pt-journal-edit-panel) label, .pt-journal-note-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; color: var(--text-muted); font-size: .84rem; font-weight: 500; }
 .pt-journal-note-field { margin-top: 14px; }
 .pt-linked-swap-search { position: relative; margin-bottom: 10px; }
 .pt-linked-swap-results { max-height: 260px; overflow: auto; }
 .pt-linked-swap-selected:not([hidden]):not(:empty) { display: flex; align-items: center; gap: 10px; min-height: 44px; margin-top: 10px; padding: 10px 14px; border: 1px solid var(--gold-border); border-radius: var(--radius-control); background: var(--gold-soft); color: var(--text); }
 .pt-linked-swap-selected small { display: block; color: var(--text-muted); }
 .pt-linked-swap-clear { min-height: var(--touch-target); margin-left: auto; border: 0; background: transparent; color: var(--accent-text); text-decoration: underline; }
 .pt-linked-swap-mode { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 12px 0; }
 .pt-linked-swap-mode button { min-height: var(--touch-target); padding: 8px 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface); color: var(--text-muted); }
 .pt-linked-swap-mode button.is-active { border-color: var(--gold-border); background: var(--gold-soft); color: var(--text); font-weight: 600; }
 /* p.: the hints are paragraphs; .pt-page p would otherwise remove their spacing. */
 p.pt-journal-form-hint, p.pt-linked-swap-hint { display: flex; align-items: flex-start; gap: 8px; margin: 12px 0 0; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); color: var(--text-muted); }
 .pt-journal-form-hint strong { color: var(--text); }
 .pt-linked-swap-preview { display: grid; gap: 3px; margin-top: 10px; padding: 10px 12px; border: 1px dashed var(--border); border-radius: var(--radius-control); background: var(--pt-tile); color: var(--text-muted); }
 .pt-linked-swap-preview strong { color: var(--text); }
 .pt-journal-form-actions, .pt-journal-edit-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
 .pt-journal-form-actions .pt-btn--primary { min-width: 230px; }
 /* Editing a recorded movement (same field grammar as the composer). */
 .pt-journal-edit-panel { display: grid; gap: 14px; margin: 0 18px 16px; padding: 16px; border: 1px solid var(--gold-border); border-radius: var(--radius-card); background: var(--pt-card); }
 .pt-journal-edit-head { display: flex; align-items: flex-start; gap: 12px; }
 .pt-journal-edit-head > span { display: grid; place-items: center; flex: 0 0 34px; width: 34px; height: 34px; border: 1px solid var(--gold-border); border-radius: var(--radius-control); background: var(--gold-soft); color: var(--accent-text); }
 .pt-journal-edit-head strong { color: var(--text); }
 .pt-journal-edit-head p { color: var(--text-muted); }

 /* ── Data area (r33 designs it; readable baseline now) ────── */
 .pt-data-dashboard { display: grid; gap: 16px; }
 .pt-data-hero { padding: 18px 20px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--pt-wash), var(--pt-head); }
 .pt-plus-archive-banner { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 16px; border: 1px solid var(--gold-border); border-radius: var(--radius-card); background: var(--gold-soft); }
 .pt-data-origin-card { padding: 20px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--pt-wash), var(--pt-card); box-shadow: var(--shadow-card); }
 .pt-data-origin-card:empty { display: none; }
 .pt-data-origin-card__head { display: flex; align-items: flex-start; gap: 12px; }
 .pt-data-origin-icon { display: grid; place-items: center; flex: 0 0 34px; width: 34px; height: 34px; border: 1px solid var(--gold-border); border-radius: var(--radius-control); background: var(--gold-soft); color: var(--accent-text); font-weight: 600; }
 .pt-data-origin-card__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 16px; }
 .pt-data-origin-card__grid > * { padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-data-workspace { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; align-items: stretch; }
 /* Paket AQ (UI-124): each data group carries its tone as a top line and a symbol tile (r337 coloured dot as a line
    symbol: read in, secure, pass on); the danger zone uses the same grammar in red. */
 .pt-data-group { display: flex; flex-direction: column; justify-content: space-between; gap: 18px; margin: 0; padding: 20px; box-shadow: inset 0 3px 0 var(--pt-data-tone, var(--gold)), var(--shadow-card); }
 .pt-data-group--import { --pt-data-tone: var(--pt-pos); border-color: var(--success-border); }
 .pt-data-group--backup { --pt-data-tone: var(--pt-steel); border-color: var(--pt-steel-border); }
 .pt-data-group--export { border-color: var(--gold-border); }
 .pt-data-group__head { display: flex; align-items: flex-start; gap: 12px; }
 .pt-data-group__head h3 { margin: 4px 0; font-size: 1rem; font-weight: 600; }
 .pt-data-group__head p:not(.pt-data-group__eyebrow) { color: var(--text-muted); }
 .pt-data-group-icon, .pt-data-danger__icon { display: grid; place-items: center; flex: 0 0 38px; width: 38px; height: 38px; border: 1px solid var(--gold-border); border-radius: var(--radius-control); background: var(--gold-soft); color: var(--accent-text); }
 .pt-data-group-icon::after, .pt-data-danger__icon::after { content: ''; width: 20px; height: 20px; background: currentColor; mask: var(--pt-data-icon) center / contain no-repeat; }
 .pt-data-group-icon { --pt-data-icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><path d='M12 15V3'/><path d='m7 8 5-5 5 5'/><path d='M5 21h14'/></svg>"); }
 .pt-data-group-icon--import { --pt-data-icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><path d='M12 3v12'/><path d='m7 10 5 5 5-5'/><path d='M5 21h14'/></svg>"); border-color: var(--success-border); background: var(--success-soft); color: var(--pt-pos); }
 .pt-data-group-icon--backup { --pt-data-icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><path d='M12 3 5 6v5c0 4.5 3 7.5 7 9 4-1.5 7-4.5 7-9V6z'/><path d='m9 12 2 2 4-4'/></svg>"); border-color: var(--pt-steel-border); background: var(--pt-steel-soft); color: var(--pt-steel); }
 .pt-data-group__eyebrow { color: var(--text-faint); font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; }
 .pt-data-group__footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-top: 18px; border-top: 1px solid var(--pt-line); }
 .pt-data-group__hint { color: var(--text-faint); font-size: .76rem; }
 .pt-data-action-list, .pt-data-export-grid { display: grid; gap: 8px; padding-top: 16px; }
 .pt-data-action-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-data-action-row strong { display: block; color: var(--text); }
 .pt-data-action-row span { color: var(--text-muted); font-size: .82rem; }
 .pt-data-export-item { display: flex; flex-direction: column; gap: 12px; padding: 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-data-export-item__head { display: flex; align-items: flex-start; gap: 10px; }
 .pt-data-export-item__head h4 { font-size: .94rem; font-weight: 600; }
 .pt-data-export-item__head p { color: var(--text-muted); font-size: .82rem; }
 .pt-data-export-item__icon { flex: 0 0 10px; width: 10px; height: 10px; margin-top: 6px; border-radius: var(--radius-badge); background: var(--pt-steel); }
 .pt-data-export-item__icon--tax { background: var(--gold); }
 .pt-data-export-actions { display: flex; flex-wrap: wrap; gap: 8px; }
 .pt-tax-export-step { display: inline-grid; place-items: center; min-width: 24px; height: 24px; padding: 0 5px; border: 1px solid currentColor; border-radius: var(--radius-control); font-size: .74rem; opacity: .8; }
 .pt-tax-next-tool-icon { width: 20px; height: 20px; }
 .pt-import input[type="file"] { display: none; }
 .pt-data-danger { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 14px 16px; border: 1px solid var(--danger-border); border-radius: var(--radius-card); background: var(--danger-soft); }
 .pt-data-danger__copy { display: flex; align-items: flex-start; gap: 12px; }
 .pt-data-danger__copy h3 { margin: 2px 0; font-size: .98rem; }
 .pt-data-danger__copy p:not(.pt-data-group__eyebrow) { color: var(--text-muted); }
 .pt-data-danger__icon { --pt-data-icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><path d='M12 3 2 21h20z'/><path d='M12 10v5'/><path d='M12 18h.01'/></svg>"); border-color: var(--danger-border); background: var(--surface); color: var(--pt-neg); }
 .pt-data-feedback { padding: 10px 14px; border: 1px solid var(--pt-steel-border); border-radius: var(--radius-control); background: var(--pt-steel-soft); color: var(--text); }
 .pt-note { margin-top: 10px; padding: 11px 13px; border: 1px solid var(--border); border-radius: var(--radius-card); color: var(--text-faint); font-size: .76rem; line-height: 1.5; }
 .pt-bitpanda-preview { padding: 16px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--pt-card); }

 /* ── History area (r33 designs it; readable baseline now) ─── */
 .pt-history-overview { padding: 16px 16px 0; }
 .pt-history-hero { position: relative; padding: 16px; }
 .pt-history-hero h3 { margin: 4px 0; font-size: 1.04rem; }
 .pt-history-hero p { color: var(--text-muted); }
 .pt-history-unlock { margin-top:12px; }
 .pt-history-locked-preview { position: relative; min-height: 128px; margin-top: 14px; border: 1px solid var(--border); border-radius: var(--radius-card); background: radial-gradient(260px 110px at 82% 0%, var(--gold-soft), transparent 66%), var(--pt-tile); overflow: hidden; }
 .pt-history-locked-pill { position: absolute; top: 12px; left: 12px; padding: 4px 10px; border: 1px solid var(--gold-border); border-radius: var(--radius-pill); background: var(--gold-soft); color: var(--accent-text); font-size: .82rem; }
 .pt-history-locked-line { position: absolute; left: 21px; right: 21px; top: 32px; height: 204px; border-bottom: 2px solid var(--gold-border); border-radius: var(--radius-pill); opacity: .75; }
 .pt-history-locked-dots { position: absolute; left: 43px; right: 43px; top: 73px; display: flex; justify-content: space-between; }
 .pt-history-locked-dots > * { width: 9px; height: 9px; border-radius: var(--radius-pill); background: var(--gold); }
 .pt-history-stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 8px; margin-top: 12px; }
 .pt-history-stat-grid > div { padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-history-stat-grid span, .pt-history-stat-grid small { display: block; color: var(--text-faint); font-size: .74rem; }
 .pt-history-stat-grid strong { color: var(--text); }

 /* ── r33: data area in its r337 composition (danger zone across the row, button on the right) ── */
 .pt-data-danger { grid-column: 1 / -1; }
 .pt-data-origin-card__grid > * { display: grid; gap: 2px; }
 .pt-data-origin-card__grid > * > :first-child { color: var(--text-muted); font-size: .76rem; }
 .pt-data-danger .pt-btn { flex: 0 0 auto; white-space: nowrap; }
 .pt-data-group--import .pt-data-group__head + .pt-data-group__footer { margin-top: auto; }
 .pt-data-feedback.is-error { border-color: var(--danger-border); background: var(--danger-soft); }
 .pt-data-feedback.is-success { border-color: var(--success-border); background: var(--success-soft); }
 .pt-data-feedback.is-warning { border-color: var(--pt-warn-border); background: var(--pt-warn-soft); }
 /* Todoist BUG-001: price-source assignment card (r337 "Preisquelle zuordnen" markup). */
 .pt-price-sources { padding: 0; border: 0; background: none; box-shadow: none; }
 .pt-bitpanda-currency-alert { display: grid; gap: 8px; padding: 14px 16px; border: 1px solid var(--pt-warn-border); border-radius: var(--radius-card); background: var(--pt-warn-soft); color: var(--text); }
 .pt-bitpanda-currency-alert > strong { color: var(--text); font-weight: 600; }
 .pt-bitpanda-currency-alert p { color: var(--text-muted); }
 .pt-bp-assign { border-color: var(--pt-steel-border); background: var(--pt-tile); }
 .pt-bp-assign-warn { color: var(--text); font-weight: 500; }
 .pt-bp-assign-row { display: grid; grid-template-columns: minmax(72px, auto) minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface); }
 .pt-bp-assign-row strong { color: var(--text); font-weight: 600; }
 .pt-bp-assign-row .pt-select { width: 100%; min-height: var(--touch-target); padding: 6px 10px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface); color: var(--text); }
 .pt-bp-assign-hint { color: var(--text-muted); font-size: .82rem; }
 
 /* r33 history (decision 25.09.2026): Free note below the chart copy. */
 .pt-history-free-note { margin-top: 10px; color: var(--text-muted); font-size: .86rem; }
 .pt-history-free-note a { color: var(--accent-text); font-weight: 500; }
 /* r33: "BTC-Anteil" stays one word on phones (the label is set in capitals at the .72rem floor). */
 .pt-hero__mini > span { white-space: nowrap; hyphens: none; }

 /* ── r33: Bitpanda CSV preview (r337 composition: lockup head, meta tiles, two numbered steps, processing columns,
    category tiles, details accordion, sticky actions) in FINAL v18 tokens, light and dark. ── */
 .pt-bitpanda-preview-modal { position: fixed; inset: 0; z-index: var(--z-modal); display: grid; place-items: center; padding: 20px; background: var(--overlay); }
 .pt-bitpanda-preview-modal[hidden] { display: none; }
 .pt-bitpanda-preview-dialog { display: grid; grid-template-rows: auto minmax(0, 1fr); width: min(1240px, 100%); max-height: calc(100dvh - 40px); border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--surface); box-shadow: var(--shadow-elevated); color: var(--text); font-size: .88rem; line-height: 1.5; overflow: hidden; }
 .pt-bitpanda-preview-dialog__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 20px 24px; border-bottom: 1px solid var(--border); background: var(--pt-head); }
 .pt-bitpanda-preview-dialog__head h2 { margin: 2px 0; color: var(--text); font-size: 1.24rem; font-weight: 600; }
 .pt-bp-title-lockup { display: flex; align-items: center; gap: 14px; min-width: 0; }
 .pt-bp-header-copy { color: var(--text-muted); }
 .pt-modal-x { display: inline-grid; place-items: center; flex: 0 0 auto; width: 40px; height: 40px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface); color: var(--text); font-size: 1.1rem; cursor: pointer; }
 .pt-modal-x:hover { border-color: var(--gold-border); color: var(--accent-text); }
 .pt-bitpanda-preview-dialog__body { position: relative; min-height: 0; padding: 20px 24px 0; overflow: hidden auto; overscroll-behavior: contain; }
 .pt-bp-shell { display: grid; gap: 14px; }
 .pt-bp-icon { display: inline-grid; place-items: center; flex: 0 0 28px; width: 28px; height: 28px; border: 1px solid var(--gold-border); border-radius: var(--radius-control); background: var(--gold-soft); color: var(--accent-text); font-size: .86rem; font-weight: 600; line-height: 1; }
 .pt-bp-icon::before { content: '•'; }
 .pt-bp-icon--file::before { content: '□'; } .pt-bp-icon--list::before { content: '☰'; } .pt-bp-icon--time::before { content: '◷'; }
 .pt-bp-icon--chart::before, .pt-bp-icon--trend::before { content: '↗'; } .pt-bp-icon--cart::before { content: '↘'; } .pt-bp-icon--down::before { content: '↙'; }
 .pt-bp-icon--star::before { content: '★'; } .pt-bp-icon--swap::before { content: '⇄'; } .pt-bp-icon--stack::before { content: '▣'; } .pt-bp-icon--cloud::before { content: '⇧'; }
 .pt-bp-icon--transfer::before { content: '↔'; } .pt-bp-icon--alert::before { content: '!'; } .pt-bp-icon--cash::before { content: '▤'; } .pt-bp-icon--euro::before { content: '€'; }
 .pt-bp-icon--info::before { content: 'i'; } .pt-bp-icon--wallet::before { content: '▱'; } .pt-bp-icon--minus::before { content: '–'; } .pt-bp-icon--chain::before { content: '∞'; }
 .pt-bp-icon--gift::before { content: '✦'; } .pt-bp-icon--coin::before { content: '●'; } .pt-bp-icon--balance::before { content: '≋'; } .pt-bp-icon--shield::before { content: '◇'; } .pt-bp-icon--check::before { content: '✓'; }
 .pt-bp-title-icon { flex-basis: 36px; width: 36px; height: 36px; }
 .pt-bp-meta-grid { display: grid; grid-template-columns: 1.3fr .6fr 1.6fr .8fr .8fr; gap: 10px; }
 .pt-bp-meta-card, .pt-bp-summary-card, .pt-bp-category-card { display: flex; align-items: flex-start; gap: 10px; min-width: 0; padding: 12px 14px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-bp-meta-card > span:last-child, .pt-bp-summary-card > span:last-child { display: grid; min-width: 0; }
 .pt-bp-meta-card small, .pt-bp-summary-card small { color: var(--text-muted); font-size: .76rem; }
 .pt-bp-meta-card strong, .pt-bp-summary-card strong { overflow-wrap: anywhere; color: var(--text); font-weight: 600; }
 .pt-bp-summary-card em { color: var(--text-muted); font-size: .82rem; font-style: normal; }
 .pt-bp-section { display: grid; gap: 12px; padding: 16px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--pt-card); }
 .pt-bp-step-title { display: flex; align-items: flex-start; gap: 12px; }
 .pt-bp-step-title h3, .pt-bp-sub-title h3 { color: var(--text); font-size: 1rem; font-weight: 600; }
 .pt-bp-step-title p { color: var(--text-muted); }
 .pt-bp-step-number { display: inline-grid; place-items: center; flex: 0 0 26px; width: 26px; height: 26px; border: 1px solid var(--gold-border); border-radius: var(--radius-pill); background: var(--gold-soft); color: var(--accent-text); font-size: .82rem; font-weight: 600; }
 .pt-bp-choice-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
 .pt-bp-choice-card { position: relative; display: grid; grid-template-columns: 22px minmax(0, 1fr) 24px; gap: 12px; align-items: start; padding: 16px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--surface); cursor: pointer; }
 .pt-bp-choice-card input { position: absolute; opacity: 0; pointer-events: none; }
 .pt-bp-radio { width: 20px; height: 20px; margin-top: 2px; border: 2px solid var(--border); border-radius: var(--radius-pill); }
 .pt-bp-choice-card:has(input:checked) { border-color: var(--gold); background: var(--gold-soft); }
 .pt-bp-choice-card:has(input:checked) .pt-bp-radio { border-color: var(--gold); box-shadow: inset 0 0 0 4px var(--surface), inset 0 0 0 10px var(--gold); }
 .pt-bp-choice-card:has(input:focus-visible) { outline: 2px solid var(--accent-text); outline-offset: 2px; }
 .pt-bp-choice-copy { display: grid; gap: 6px; }
 .pt-bp-choice-title { color: var(--text); font-weight: 600; }
 .pt-bp-choice-copy > small { color: var(--text-muted); font-size: .82rem; }
 .pt-bp-choice-info { display: flex; align-items: flex-start; gap: 8px; padding: 8px 10px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-bp-choice-info-kicker { flex: 0 0 auto; padding: 1px 8px; border: 1px solid var(--gold-border); border-radius: var(--radius-pill); background: var(--gold-soft); color: var(--accent-text); font-size: .76rem; }
 .pt-bp-choice-mark { display: none; place-items: center; width: 24px; height: 24px; border-radius: var(--radius-pill); background: var(--gold); color: var(--button-text); font-style: normal; font-size: .8rem; }
 .pt-bp-choice-card:has(input:checked) .pt-bp-choice-mark { display: inline-grid; align-self: center; }
 .pt-bp-summary-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 10px; }
 .pt-bp-summary-card.is-cash { border-color: var(--success-border); background: var(--success-soft); }
 .pt-bp-summary-card.is-warn { border-color: var(--pt-warn-border); background: var(--pt-warn-soft); }
 .pt-bp-summary-card.is-ok { border-color: var(--success-border); }
 .pt-bp-summary-card.is-warn .pt-bp-icon { border-color: var(--pt-warn-border); background: var(--pt-warn-soft); color: var(--pt-warn); }
 .pt-bp-processing-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 14px; align-items: start; }
 .pt-bp-section-head { display: grid; gap: 2px; }
 .pt-bp-eyebrow { color: var(--accent-text); font-size: .76rem; font-weight: 600; }
 .pt-bp-section-head h3 { color: var(--text); font-size: .94rem; font-weight: 600; }
 .pt-bp-manual-card, .pt-bp-auto-card { display: grid; gap: 8px; padding: 14px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--surface); }
 .pt-bp-manual-card:not(.is-ok) { border-color: var(--pt-warn-border); background: var(--pt-warn-soft); }
 .pt-bp-manual-card p, .pt-bp-auto-card p { color: var(--text-muted); font-size: .82rem; }
 .pt-bp-card-title { display: flex; align-items: flex-start; gap: 10px; }
 .pt-bp-card-title h4 { color: var(--text); font-size: .9rem; font-weight: 600; }
 .pt-bp-card-title small { color: var(--text-muted); font-size: .76rem; }
 .pt-bp-card-title em { margin-left: auto; padding: 2px 10px; border: 1px solid var(--pt-warn-border); border-radius: var(--radius-pill); color: var(--text); font-size: .8rem; white-space: nowrap; }
 .pt-bp-transaction-list { display: grid; gap: 8px; padding-top: 8px; border-top: 1px solid var(--pt-line); }
 .pt-bp-transaction-row { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 4px 12px; align-items: baseline; }
 .pt-bp-transaction-asset strong { color: var(--text); }
 .pt-bp-transaction-asset small, .pt-bp-transaction-meta { color: var(--text-muted); font-size: .76rem; }
 .pt-bp-transaction-meta { grid-column: 1 / -1; }
 .pt-bp-auto-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px; }
 .pt-bp-auto-card { grid-template-columns: 28px minmax(0, 1fr); align-items: start; }
 .pt-bp-auto-card.is-imported { border-color: var(--success-border); }
 .pt-bp-auto-title { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
 .pt-bp-auto-title h4 { color: var(--text); font-size: .9rem; font-weight: 600; }
 .pt-bp-status-chip { display: inline-flex; margin: 4px 0; padding: 1px 8px; border: 1px solid var(--pt-steel-border); border-radius: var(--radius-pill); background: var(--pt-steel-soft); color: var(--text); font-size: .76rem; }
 .pt-bp-status-chip.is-green { border-color: var(--success-border); background: var(--success-soft); }
 .pt-bp-main-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 14px; align-items: start; }
 .pt-bp-category-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
 .pt-bp-category-card { align-items: center; }
 .pt-bp-category-card > span:nth-child(2) { flex: 1 1 auto; min-width: 0; color: var(--text-muted); }
 .pt-bp-category-card strong { color: var(--text); font-weight: 600; }
 .pt-bp-audit-pills { display: flex; flex-wrap: wrap; gap: 6px; }
 .pt-bp-pill { padding: 2px 10px; border: 1px solid var(--border); border-radius: var(--radius-pill); background: var(--pt-tile); color: var(--text-muted); font-size: .8rem; }
 .pt-bp-pill.is-ok { border-color: var(--success-border); color: var(--text); }
 .pt-bp-pill.is-warn, .pt-bp-pill.is-alert { border-color: var(--pt-warn-border); color: var(--text); }
 .pt-bp-audit-list { display: grid; gap: 4px; }
 .pt-bp-audit-head, .pt-bp-audit-row { display: grid; grid-template-columns: 1fr 1fr 1fr 2fr; gap: 8px; padding: 6px 8px; }
 .pt-bp-audit-head { color: var(--text-muted); font-size: .76rem; }
 .pt-bp-audit-row { border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-bp-small, .pt-bp-muted { display: flex; align-items: flex-start; gap: 8px; color: var(--text-muted); font-size: .82rem; }
 .pt-bp-accordion { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; align-items: start; }
 .pt-bp-accordion-item { border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-bp-accordion-item[open] { grid-column: 1 / -1; }
 .pt-bp-accordion-item summary { display: grid; gap: 2px; padding: 12px 14px; color: var(--text); font-weight: 600; cursor: pointer; list-style: none; }
 .pt-bp-accordion-item summary::-webkit-details-marker { display: none; }
 .pt-bp-accordion-item summary small { color: var(--text-muted); font-size: .78rem; font-weight: 400; }
 .pt-bp-accordion-content { display: grid; gap: 10px; padding: 0 14px 14px; color: var(--text-muted); }
 .pt-bp-accordion-content h4 { color: var(--text); font-size: .88rem; font-weight: 600; }
 .pt-bp-note-list article { display: flex; align-items: flex-start; gap: 10px; }
 .pt-bp-actions { position: sticky; bottom: 0; z-index: 1; display: flex; justify-content: flex-end; gap: 10px; margin: 14px -24px 0; padding: 14px 24px; border-top: 1px solid var(--border); background: var(--surface); }
 .pt-bp-cta-short { display: none; }
 .pt-bp-import-progress { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 14px; padding: 14px 16px; border: 1px solid var(--pt-steel-border); border-radius: var(--radius-card); background: var(--pt-steel-soft); color: var(--text); }
 .pt-bp-import-progress[data-kind="success"] { border-color: var(--success-border); background: var(--success-soft); }
 .pt-bp-import-progress[data-kind="error"] { border-color: var(--danger-border); background: var(--danger-soft); }
 .pt-bp-import-progress strong { color: var(--text); font-weight: 600; }
 .pt-bp-import-progress p { color: var(--text-muted); }
 .pt-bp-import-progress__mark { flex: 0 0 12px; width: 12px; height: 12px; margin-top: 5px; border-radius: var(--radius-pill); background: var(--pt-steel); }
 .pt-bp-import-progress[data-kind="busy"] .pt-bp-import-progress__mark { animation: pt-bp-pulse 1.2s var(--ease-standard) infinite; }
 .pt-bp-import-progress[data-kind="success"] .pt-bp-import-progress__mark { background: var(--pt-pos); }
 .pt-bp-import-progress[data-kind="error"] .pt-bp-import-progress__mark { background: var(--pt-neg); }
 @keyframes pt-bp-pulse { 50% { opacity: .35; } }
 @media (prefers-reduced-motion: reduce) { .pt-bp-import-progress[data-kind="busy"] .pt-bp-import-progress__mark { animation: none; } }
 .pt-bitpanda-inline-ready { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
 .pt-bitpanda-inline-ready > div { display: grid; gap: 2px; }
 .pt-bitpanda-inline-ready span { color: var(--text-muted); }
 @media (max-width: 1100px) {
  .pt-bp-meta-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .pt-bp-summary-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .pt-bp-accordion { grid-template-columns: repeat(2, minmax(0, 1fr)); }
 }
 @media (max-width: 760px) {
  .pt-data-danger { flex-direction: column; align-items: stretch; }
  .pt-bp-assign-row { grid-template-columns: minmax(0, 1fr); }
  .pt-bitpanda-preview-modal { padding: 0; place-items: stretch; }
  .pt-bitpanda-preview-dialog { width: 100%; max-height: 100dvh; height: 100dvh; border-radius: var(--radius-none, 0); }
  .pt-bitpanda-preview-dialog__head { padding: 14px 16px; }
  .pt-bitpanda-preview-dialog__body { padding: 14px 16px 0; }
  .pt-bp-meta-grid, .pt-bp-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pt-bp-meta-card:first-child { grid-column: 1 / -1; }
  .pt-bp-choice-grid, .pt-bp-processing-grid, .pt-bp-category-grid, .pt-bp-accordion { grid-template-columns: minmax(0, 1fr); }
  .pt-bp-section { padding: 12px; }
  .pt-bp-audit-head { display: none; }
  .pt-bp-audit-row { grid-template-columns: 1fr 1fr; }
  .pt-bp-actions { margin: 14px -16px 0; padding: 12px 16px; }
  .pt-bp-actions .pt-btn { flex: 1 1 0; }
  .pt-bp-cta-long { display: none; }
  .pt-bp-cta-short { display: inline; }
  .pt-bitpanda-inline-ready { flex-direction: column; align-items: stretch; }
 }

 /* ── r33: Portfolio-Stände in the r337 composition (range pills, save control, value contract left / period right,
    framed chart with axis tags, three stand tiles, stand cards that open into summary, positions, note and comparison). ── */
 .pt-history-overview { padding: 18px 20px 4px; }
 .pt-history-hero--chart { display: grid; gap: 14px; padding: 0; }
 .pt-history-hero__copy { display: grid; gap: 8px; justify-items: start; }
 .pt-history-hero__copy > h3 { margin: 0; }
 .pt-history-system-badge { display: inline-flex; padding: 2px 10px; border: 1px solid var(--pt-steel-border); border-radius: var(--radius-pill); background: var(--pt-steel-soft); color: var(--text); font-size: .78rem; }
 .pt-range-tabs { display: flex; flex-wrap: wrap; gap: 6px; }
 .pt-range-tabs button { min-width: 48px; min-height: 36px; padding: 4px 12px; border: 1px solid var(--border); border-radius: var(--radius-pill); background: var(--surface); color: var(--text-muted); font-size: .82rem; font-weight: 600; }
 .pt-range-tabs button:hover:not(:disabled) { border-color: var(--gold-border); color: var(--text); }
 .pt-range-tabs button.is-active { border-color: var(--gold-border); background: var(--gold-soft); color: var(--accent-text); }
 .pt-range-tabs button:disabled { opacity: .45; cursor: not-allowed; }
 .pt-history-save-control { display: grid; gap: 8px; }
 .pt-history-save-control__actions { display: flex; align-items: center; gap: 8px; }
 .pt-history-note-btn { width:var(--touch-target);padding:0; }
 .pt-history-save-btn { flex:none; }
 .pt-history-save-btn:disabled { opacity: .55; }
 .pt-history-save-control__field { display: grid; gap: 4px; max-width: 420px; color: var(--text-muted); font-size: .82rem; }
 .pt-history-save-control__field input, .pt-snapshot-note__field textarea, .pt-ov-input { width: 100%; min-height: var(--touch-target); padding: 8px 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface); color: var(--text); }
 .pt-contract-summary { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
 .pt-contract-left, .pt-contract-right { display: grid; gap: 8px; }
 .pt-contract-right { justify-items: end; text-align: right; }
 .pt-contract-current { display: grid; gap: 2px; }
 .pt-contract-current > span, .pt-contract-label > span { color: var(--text-muted); font-size: .82rem; }
 .pt-contract-current > strong { color: var(--text); font-size: 1.5rem; font-weight: 600; font-variant-numeric: tabular-nums; }
 .pt-contract-price-basis, .pt-contract-label small { color: var(--text-muted); font-size: .76rem; }
 .pt-contract-label { display: flex; align-items: baseline; gap: 8px; }
 .pt-contract-row, .pt-contract-period { display: grid; gap: 2px; }
 .pt-contract-right .pt-contract-label { justify-content: flex-end; }
 .pt-trend { font-style: normal; font-weight: 600; }
 .pt-trend.is-neutral, em.is-neutral, .pt-snapshot-delta.is-neutral { color: var(--text-muted); }
 .pt-history-chart { position: relative; height: 220px; border: 1px solid var(--border); border-radius: var(--radius-card); background: radial-gradient(60% 80% at 100% 0, var(--gold-soft), transparent 70%), var(--pt-tile); overflow: hidden; }
 .pt-history-chart svg { position: absolute; inset: 0; width: 100%; height: 100%; }
 .pt-history-chart svg circle { stroke: var(--pt-tile); }
 .pt-history-chart__y, .pt-history-chart__x { position: absolute; z-index: 1; display: inline-flex; align-items: baseline; gap: 6px; padding: 2px 8px; border-radius: var(--radius-control); background: var(--surface); color: var(--text); font-size: .8rem; line-height: 1.3; }
 .pt-history-chart__y em, .pt-history-chart__x em { color: var(--text-muted); font-size: .76rem; }
 .pt-history-chart__y--max { top: 10px; right: 10px; }
 .pt-history-chart__y--min { bottom: 52px; right: 10px; }
 .pt-history-chart__x { bottom: 8px; flex-direction: column; align-items: flex-start; gap: 0; }
 .pt-history-chart__x--start { left: 10px; }
 .pt-history-chart__x--mid { left: 50%; transform: translateX(-50%); align-items: center; }
 .pt-history-chart__x--current { right: 10px; align-items: flex-end; }
 .pt-history-chart__reference { position: absolute; z-index: 1; top: 10px; left: 10px; color: var(--pt-steel); font-size: .78rem; }
 /* Paket AQ (Todoist BUG-073): with exactly one saved stand r337 draws that stand twice as a calm start line
    (renderOverviewHistoryChart, is-single); its r337 styles were missing here, so only two black dots showed. Same frame
    and tags as the stand chart above; the dates stand below the line as in r337. */
 .pt-ov-chart-wrap { position: relative; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--pt-tile); color: var(--text); overflow: hidden; }
 .pt-ov-chart-svg { display: block; width: 100%; height: 220px; }
 .pt-ov-grid-line { stroke: var(--pt-line); stroke-width: 1; }
 .pt-ov-chart-area { fill: color-mix(in srgb, var(--text-faint) 14%, transparent); }
 .pt-ov-chart-wrap.is-positive .pt-ov-chart-area { fill: color-mix(in srgb, var(--pt-pos) 14%, transparent); }
 .pt-ov-chart-wrap.is-negative .pt-ov-chart-area { fill: color-mix(in srgb, var(--pt-neg) 14%, transparent); }
 .pt-ov-chart-wrap.is-single .pt-ov-chart-area { fill: color-mix(in srgb, var(--text-faint) 14%, transparent); }
 .pt-ov-chart-segment { fill: none; stroke: var(--text-muted); stroke-width: 4; stroke-linecap: round; }
 .pt-ov-chart-segment.is-positive { stroke: var(--pt-pos); }
 .pt-ov-chart-segment.is-negative { stroke: var(--pt-neg); }
 .pt-ov-chart-dot { fill: var(--text-faint); stroke: var(--pt-tile); stroke-width: 3; }
 .pt-ov-chart-dot.is-positive { fill: var(--pt-pos); }
 .pt-ov-chart-dot.is-negative { fill: var(--pt-neg); }
 .pt-ov-chart-current { stroke: var(--text-faint); stroke-width: 1; stroke-dasharray: 5 6; opacity: .6; }
 .pt-ov-chart-reference-line { stroke: var(--pt-steel); stroke-width: 2; stroke-dasharray: 6 7; }
 .pt-ov-chart-reference-dot { fill: var(--pt-steel); }
 .pt-ov-chart-y { position: absolute; z-index: 1; right: var(--s3); display: inline-flex; align-items: baseline; gap: var(--s2); padding: 2px var(--s2); border-radius: var(--radius-control); background: var(--surface); color: var(--text); font-size: .8rem; line-height: 1.3; }
 .pt-ov-chart-y em, .pt-ov-chart-dates em { color: var(--text-muted); font-size: .76rem; }
 .pt-ov-chart-y--max { top: var(--s3); }
 .pt-ov-chart-y--min { bottom: calc(var(--s6) + var(--s5)); }
 .pt-ov-chart-dates { display: flex; justify-content: space-between; gap: var(--s3); padding: 0 var(--s3) var(--s3); color: var(--text); font-size: .8rem; }
 .pt-ov-chart-dates > span { display: grid; gap: 2px; }
 .pt-ov-chart-dates > span:nth-child(2) { text-align: center; }
 .pt-ov-chart-dates > span:last-child { text-align: right; }
 .pt-ov-chart-reference { position: absolute; z-index: 1; top: var(--s3); color: var(--pt-steel); font-size: .78rem; }
 .pt-history-hero--chart > .pt-ov-chart-wrap { margin-top: var(--s1); }
 .pt-history-stat-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
 .pt-history-stat-grid > div { display: grid; gap: 2px; }
 .pt-history-stat-grid > div > span { color: var(--accent-text); font-size: .82rem; }
 .pt-history-stat-grid > div.is-current { border-color: var(--gold-border); background: var(--gold-soft); box-shadow: inset 0 -2px 0 var(--gold); }
 .pt-history-stat-grid strong { font-variant-numeric: tabular-nums; }
 .pt-history-stat-grid em { font-style: normal; font-size: .84rem; }
 .pt-ov-reference-strip { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 10px 12px; border: 1px solid var(--pt-steel-border); border-radius: var(--radius-control); background: var(--pt-steel-soft); }
 .pt-ov-reference-strip span, .pt-ov-reference-strip small { color: var(--text-muted); font-size: .78rem; }
 .pt-plus-section { display: block; }
 /* Paket AQ (UI-124): the saved stands align with the chart above (the section's own inset doubled the indent). */
 .pt-card--history > .pt-plus-section { margin: 0; padding: 0; }
 .pt-snapshot-manager { display: grid; gap: 14px; margin: 14px 20px 20px; padding: 16px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--pt-wash), var(--pt-card); }
 .pt-snapshot-list-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
 .pt-snapshot-list-head h3 { margin: 2px 0 4px; font-size: 1.04rem; }
 .pt-snapshot-compare-hint { color: var(--text-muted); }
 .pt-snapshot-list-actions { display: grid; justify-items: end; gap: 4px; flex: 0 0 auto; }
 .pt-snapshot-archive-open { border-color: var(--gold-border); color: var(--accent-text); }
 .pt-snapshot-archive-count { color: var(--text-muted); font-size: .76rem; }
 .pt-snapshot-list, .pt-snapshot-archive-list { display: grid; gap: 10px; }
 .pt-snapshot-item, .pt-snapshot-archive-item, .pt-review-archive-item { border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--surface); }
 .pt-snapshot-item.is-reference, .pt-snapshot-archive-item.is-reference { border-color: var(--pt-steel-border); }
 .pt-snapshot-item > summary, .pt-snapshot-archive-item > summary, .pt-review-archive-item__head { display: flex; align-items: center; gap: 14px; padding: 14px 16px; cursor: pointer; list-style: none; }
 .pt-snapshot-item > summary::-webkit-details-marker, .pt-snapshot-archive-item > summary::-webkit-details-marker, .pt-review-archive-item__head::-webkit-details-marker, .pt-snapshot-position-details > summary::-webkit-details-marker, .pt-snapshot-note > summary::-webkit-details-marker, .pt-rules-group > summary::-webkit-details-marker, .pt-ov-insights-summary::-webkit-details-marker { display: none; }
 .pt-snapshot-item > summary > i, .pt-snapshot-archive-item > summary > i, .pt-review-archive-item__head > i { display: inline-grid; place-items: center; flex: 0 0 auto; width: 30px; height: 30px; border: 1px solid var(--border); border-radius: var(--radius-pill); color: var(--text-muted); font-style: normal; font-size: .76rem; transition: transform var(--motion-fast) var(--ease-standard); }
 .pt-snapshot-item[open] > summary > i, .pt-snapshot-archive-item[open] > summary > i, .pt-review-archive-item[open] > .pt-review-archive-item__head > i { transform: rotate(180deg); }
 .pt-snapshot-title-wrap { display: grid; gap: 6px; flex: 1 1 auto; min-width: 0; }
 .pt-snapshot-title-line { display: flex; align-items: center; gap: 12px; }
 .pt-snapshot-title-icon { display: inline-grid; place-items: center; flex: 0 0 38px; width: 38px; height: 38px; border: 1px solid var(--gold-border); border-radius: var(--radius-control); background: var(--gold-soft); color: var(--accent-text); }
 .pt-snapshot-title { color: var(--accent-text); font-weight: 600; }
 .pt-snapshot-meta-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; color: var(--text-muted); font-size: .8rem; }
 .pt-snapshot-item .pt-snapshot-meta-row { padding-left: 50px; }
 .pt-snapshot-meta-badges { display: inline-flex; gap: 6px; }
 .pt-snapshot-meta-badges > span { padding: 1px 8px; border: 1px solid var(--border); border-radius: var(--radius-pill); color: var(--text); font-size: .76rem; }
 .pt-snapshot-meta-badges > .pt-snapshot-reference-badge { border-color: var(--pt-steel-border); background: var(--pt-steel-soft); }
 .pt-snapshot-value-wrap { display: grid; justify-items: end; gap: 4px; flex: 0 0 auto; text-align: right; }
 .pt-snapshot-value-wrap > strong { color: var(--text); }
 .pt-snapshot-delta { font-size: .84rem; font-weight: 600; }
 .pt-snapshot-open-hint { padding: 2px 10px; border: 1px solid var(--gold-border); border-radius: var(--radius-pill); color: var(--accent-text); font-size: .78rem; }
 .pt-snapshot-row-actions { display: flex; align-items: center; gap: 6px; }
 .pt-snapshot-action { padding:6px 12px; }
 .pt-snapshot-item > :not(summary), .pt-snapshot-archive-item > :not(summary) { margin: 0 16px 14px; }
 .pt-snapshot-summary-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; }
 .pt-snapshot-summary-metric { display: flex; align-items: flex-start; gap: 8px; padding: 10px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-snapshot-summary-icon, .pt-stat-row-icon, .pt-compare-icon, .pt-snapshot-insight-icon { display: inline-grid; place-items: center; flex: 0 0 26px; width: 26px; height: 26px; border: 1px solid var(--gold-border); border-radius: var(--radius-control); background: var(--gold-soft); color: var(--accent-text); font-size: .8rem; font-style: normal; }
 .pt-snapshot-summary-copy { display: grid; min-width: 0; }
 .pt-snapshot-summary-copy small { color: var(--text-muted); font-size: .76rem; }
 .pt-snapshot-summary-copy strong { overflow-wrap: anywhere; color: var(--text); font-size: .88rem; }
 .pt-snapshot-summary-copy em { color: var(--text-muted); font-size: .78rem; font-style: normal; }
 .pt-snapshot-position-details, .pt-snapshot-note { border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-snapshot-position-details > summary, .pt-snapshot-note > summary { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; padding: 10px 12px; color: var(--text); font-weight: 600; cursor: pointer; list-style: none; }
 .pt-snapshot-position-details > summary small, .pt-snapshot-note > summary small { color: var(--text-muted); font-size: .78rem; font-weight: 400; }
 .pt-snapshot-position-details > summary i, .pt-snapshot-note > summary i { margin-left: auto; font-style: normal; color: var(--text-muted); }
 .pt-snapshot-position-details > p { padding: 0 12px 12px; color: var(--text-muted); }
 .pt-snapshot-position-list { display: grid; gap: 6px; padding: 0 12px 12px; }
 .pt-snapshot-position-row { display: grid; grid-template-columns: minmax(150px, 1.4fr) repeat(5, minmax(0, 1fr)) minmax(130px, 1.2fr); gap: 10px; align-items: center; padding: 8px 10px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface); }
 .pt-snapshot-position-row > div > span:first-child { display: block; color: var(--text-muted); font-size: .74rem; }
 .pt-snapshot-position-row strong { color: var(--text); font-size: .84rem; }
 .pt-snapshot-position-asset { display: flex; align-items: center; gap: 8px; min-width: 0; }
 .pt-snapshot-position-asset small { color: var(--text-muted); font-size: .76rem; }
 .pt-snapshot-position-market strong { display: flex; gap: 6px; }
 .pt-snapshot-note__display { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; }
 .pt-snapshot-note__copy span { color: var(--text-muted); font-size: .76rem; }
 .pt-snapshot-note__copy p { color: var(--text); }
 .pt-snapshot-note__editor > summary { padding: 0 12px 10px; color: var(--accent-text); cursor: pointer; }
 .pt-snapshot-note__field { display: grid; gap: 4px; padding: 0 12px; color: var(--text-muted); font-size: .82rem; }
 .pt-snapshot-note__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 8px 12px 12px; }
 .pt-snapshot-note__actions small { color: var(--text-muted); font-size: .76rem; }
 .pt-snapshot-compare-wrap { display: grid; gap: 10px; padding-top: 4px; }
 .pt-snapshot-compare-wrap > h4 { color: var(--text); font-size: .94rem; font-weight: 600; }
 .pt-snapshot-compare-section { display: grid; gap: 8px; }
 .pt-snapshot-compare-section > h5 { margin: 0; color: var(--accent-text); font-size: .76rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
 .pt-snapshot-compare { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 8px; }
 .pt-compare-card { display: grid; grid-template-columns: 26px minmax(0, 1fr); gap: 4px 10px; align-items: center; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-compare-card > span:not(.pt-compare-icon) { color: var(--text-muted); font-size: .82rem; }
 .pt-compare-card > :is(.pt-compare-flow, small, .pt-compare-side, .pt-compare-asset-name) { grid-column: 2; }
 .pt-compare-flow { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px; color: var(--text); }
 .pt-compare-unchanged { color: var(--text-muted); font-size: .76rem; }
 .pt-snapshot-stat-list { display: grid; gap: 4px; }
 .pt-stat-row { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr); gap: 10px; align-items: center; padding: 8px 10px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface); }
 .pt-stat-row-label { display: flex; align-items: center; gap: 8px; }
 .pt-stat-row-copy small { color: var(--text-muted); font-size: .84rem; }
 .pt-stat-row-value b { color: var(--text); font-weight: 600; }
 .pt-stat-row-delta { justify-self: end; }
 .pt-stat-row-note { color: var(--text-muted); font-size: .78rem; }
 .pt-snapshot-insights { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 8px; }
 .pt-snapshot-insight { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-snapshot-insight strong { display: block; color: var(--text); font-size: .86rem; }
 .pt-snapshot-insight small { color: var(--text-muted); font-size: .8rem; }
 .pt-snapshot-insight.is-positive { border-color: var(--success-border); }
 .pt-snapshot-insight.is-negative { border-color: var(--danger-border); }
 .pt-snapshot-info { padding: 10px 12px; border: 1px solid var(--pt-steel-border); border-radius: var(--radius-control); background: var(--pt-steel-soft); color: var(--text); }
 .pt-snapshot-manager__reference { display: grid; gap: 8px; }
 .pt-snapshot-reference-compare { display: grid; gap: 8px; padding: 12px; border: 1px solid var(--pt-steel-border); border-radius: var(--radius-card); background: var(--pt-steel-soft); }
 .pt-snapshot-reference-compare__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; }
 .pt-snapshot-reference-compare__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 8px; }
 .pt-snapshot-reference-compare__grid > * { padding: 8px 10px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface); }
 .pt-snapshot-status-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
 .pt-snapshot-status-row > div { padding: 8px 10px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-snapshot-status-row span { display: block; color: var(--text-muted); font-size: .76rem; }
 /* Verlauf dialog (stands and reviews) and the review archive. */
 .pt-snapshot-overlay { position: fixed; inset: 0; z-index: var(--z-modal); display: grid; place-items: center; padding: 20px; }
 .pt-snapshot-overlay[hidden] { display: none; }
 .pt-snapshot-overlay__backdrop, .pt-ov-sheet__backdrop, .pt-rules-modal__backdrop { position: absolute; inset: 0; background: var(--overlay); }
 .pt-snapshot-overlay__panel { position: relative; display: grid; gap: 14px; width: min(980px, 100%); max-height: calc(100dvh - 40px); padding: 20px 24px 24px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--surface); box-shadow: var(--shadow-elevated); overflow: hidden auto; overscroll-behavior: contain; }
 .pt-snapshot-overlay__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding-bottom: 14px; border-bottom: 1px solid var(--border); }
 .pt-snapshot-overlay__head h3 { margin: 2px 0; font-size: 1.08rem; }
 .pt-snapshot-overlay__head p:not(.pt-kicker) { color: var(--text-muted); }
 .pt-history-modal-tabs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; padding: 6px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--pt-tile); }
 .pt-history-modal-tab { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: var(--touch-target); padding: 8px 12px; border: 1px solid transparent; border-radius: var(--radius-control); background: none; color: var(--text-muted); }
 .pt-history-modal-tab > span { display: inline-flex; align-items: center; gap: 8px; }
 .pt-history-modal-tab i { font-style: normal; color: var(--accent-text); }
 .pt-history-modal-tab small { color: var(--text-muted); font-size: .78rem; }
 .pt-history-modal-tab.is-active { border-color: var(--gold-border); background: var(--gold-soft); color: var(--text); }
 .pt-history-modal-panels, .pt-history-modal-panel { display: grid; gap: 12px; }
 .pt-history-modal-panel[hidden] { display: none; }
 .pt-history-modal-panel-head { padding: 12px 14px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--pt-tile); }
 .pt-history-modal-panel-head h4 { font-size: .94rem; font-weight: 600; }
 .pt-history-modal-panel-head p { color: var(--text-muted); }
 .pt-snapshot-archive-group { display: grid; gap: 8px; }
 .pt-snapshot-archive-group > h4 { color: var(--text-muted); font-size: .86rem; font-weight: 600; }
 .pt-review-archive-list { display: grid; gap: 8px; }
 .pt-review-archive-item__head > div { display: grid; gap: 2px; flex: 1 1 auto; }
 .pt-review-archive-item__head strong { color: var(--text); }
 .pt-review-archive-item__head small { color: var(--text-muted); font-size: .78rem; }
 .pt-review-archive-item__body { display: grid; gap: 8px; padding: 0 16px 14px; color: var(--text-muted); }
 .pt-review-archive-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; }
 .pt-review-archive-stats > div { display: grid; gap: 2px; padding: 8px 10px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-review-archive-stats span, .pt-review-archive-stats small { color: var(--text-muted); font-size: .76rem; }
 .pt-review-archive-latest-badge { display: inline-flex; justify-self: start; width: fit-content; padding: 1px 10px; border: 1px solid var(--gold-border); border-radius: var(--radius-pill); background: var(--gold-soft); color: var(--accent-text); font-size: .76rem; font-style: normal; }
 .pt-review-archive-note { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 14px; border: 1px solid var(--gold-border); border-radius: var(--radius-card); background: var(--gold-soft); color: var(--text-muted); }
 .pt-review-archive-note strong { color: var(--text); }
 .pt-review-archive-note a { color: var(--accent-text); font-weight: 600; }
 .pt-review-archive-entry { display: grid; gap: 10px; }
 /* Overview sheets (Rückblick, Rahmen, Zielwert) and their cards; the overview strip.
    Paket AR _v2 (Daniel 22.10.2026: "komplett überarbeiten und Premium Inszenierung … Mindest Standard ist hier R337"):
    each sheet carries the tone of its overview row (Rückblick steel, Rahmen gold, Zielwert green). The r337 card inside
    becomes the sheet itself (no card in a card); its head is a toned band with an icon tile, the close control floats
    over the band. Content keeps the r337 markup, values and actions; tiles, bars and lists are drawn from tokens. */
 .pt-ov-sheet { --pt-sheet-tone: var(--gold); --pt-sheet-soft: var(--gold-soft); --pt-sheet-border: var(--gold-border); --pt-sheet-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l7 3v5c0 4.5-3 8.2-7 10-4-1.8-7-5.5-7-10V6z'/%3E%3Cpath d='M9 12l2 2 4-4'/%3E%3C/svg%3E"); position: fixed; inset: 0; z-index: var(--z-modal); display: grid; place-items: center; padding: var(--s5); }
 .pt-ov-sheet--review { --pt-sheet-tone: var(--pt-steel); --pt-sheet-soft: var(--pt-steel-soft); --pt-sheet-border: var(--pt-steel-border); --pt-sheet-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 3v5h5'/%3E%3Cpath d='M3.05 13A9 9 0 1 0 6 5.3L3 8'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E"); }
 .pt-ov-sheet--goal { --pt-sheet-tone: var(--success); --pt-sheet-soft: var(--success-soft); --pt-sheet-border: var(--success-border); --pt-sheet-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Ccircle cx='12' cy='12' r='5'/%3E%3Ccircle cx='12' cy='12' r='1.5'/%3E%3C/svg%3E"); }
 .pt-ov-sheet[hidden] { display: none; }
 .pt-ov-sheet__panel { position: relative; width: min(720px, 100%); max-height: calc(100dvh - 2 * var(--s5)); padding: 0; border: 1px solid var(--pt-sheet-border); border-radius: var(--radius-card); background: radial-gradient(90% 50% at 100% 0, var(--pt-sheet-soft), transparent 60%), var(--surface); box-shadow: inset 0 2px 0 var(--pt-sheet-border), var(--shadow-elevated); overflow: hidden auto; overscroll-behavior: contain; }
 .pt-ov-sheet--review .pt-ov-sheet__panel { width: min(1080px, 100%); }
 /* The close control floats over the head band and stays reachable while the sheet scrolls. */
 .pt-ov-sheet__head { position: sticky; top: 0; z-index: 3; display: flex; justify-content: flex-end; height: 0; margin: 0; padding: 0; }
 .pt-ov-sheet__close { display: inline-grid; place-items: center; flex: none; width: var(--touch-target); height: var(--touch-target); margin: var(--s4) var(--s4) 0 0; border: 1px solid var(--border); border-radius: var(--radius-pill); background: var(--surface); box-shadow: var(--shadow-card); color: var(--text); font-size: 1.15rem; }
 .pt-ov-sheet__close:hover { border-color: var(--pt-sheet-border); color: var(--pt-sheet-tone); }
 .pt-ov-sheet .pt-ov-card { gap: var(--s4); padding: 0 var(--s5) var(--s5); border: 0; border-radius: var(--radius-none, 0); background: transparent; }
 .pt-ov-sheet .pt-ov-card-head { position: relative; align-items: center; min-height: calc(52px + 2 * var(--s5)); margin: 0 calc(-1 * var(--s5)); padding: var(--s5) calc(var(--touch-target) + 2 * var(--s4)) var(--s4) calc(52px + var(--s5) + var(--s4)); border-bottom: 1px solid var(--pt-line); background: linear-gradient(90deg, var(--pt-sheet-soft), transparent 75%); }
 /* Icon tile of the sheet: the tile (::before) and its line icon in the sheet tone (::after). */
 .pt-ov-sheet .pt-ov-card-head::before, .pt-ov-sheet .pt-ov-card-head::after { content: ''; position: absolute; top: var(--s5); left: var(--s5); width: 52px; height: 52px; }
 .pt-ov-sheet .pt-ov-card-head::before { border: 1px solid var(--pt-sheet-border); border-radius: var(--radius-control); background: var(--pt-sheet-soft); box-shadow: 0 0 24px var(--pt-sheet-soft); }
 .pt-ov-sheet .pt-ov-card-head::after { background: var(--pt-sheet-tone); mask: var(--pt-sheet-icon) center / 26px no-repeat; }
 .pt-ov-sheet .pt-ov-card-head .pt-kicker { color: var(--pt-sheet-tone); }
 .pt-ov-sheet .pt-ov-card-head h3 { color: var(--text); font-size: 1.3rem; font-weight: 700; line-height: 1.25; }
 .pt-ov-sheet .pt-ov-system-icon { display: none; }
 .pt-ov-sheet .pt-ov-system-title { gap: var(--s2); }
 .pt-ov-sheet .pt-ov-card-actions--head { margin-top: var(--s2); }
 .pt-ov-sheet .pt-ov-muted { color: var(--text-muted); line-height: 1.55; }
 /* An empty sheet (no Rückblick yet, no frame, no goal) reads as a calm note with the next step. */
 .pt-ov-sheet .pt-ov-review--empty > .pt-ov-muted, .pt-ov-sheet .pt-ov-rules-body > .pt-ov-muted:only-child, .pt-ov-sheet .pt-ov-goal > .pt-ov-muted { margin: 0; padding: var(--s4); border: 1px dashed var(--pt-sheet-border); border-radius: var(--radius-card); background: var(--pt-sheet-soft); }
 .pt-ov-card { display: grid; gap: 14px; padding: 18px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--pt-card); }
 .pt-ov-card-head { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 12px; padding-bottom: 12px; border-bottom: 1px solid var(--pt-line); }
 .pt-ov-card-head > div { display: grid; gap: 4px; justify-items: start; }
 .pt-ov-card-head h3 { margin: 0; font-size: 1.04rem; }
 .pt-ov-muted { color: var(--text-muted); }
 .pt-ov-review-period { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; color: var(--text-muted); font-size: .78rem; }
 .pt-ov-badge { padding: 2px 10px; border: 1px solid var(--gold-border); border-radius: var(--radius-pill); background: var(--gold-soft); color: var(--accent-text); font-size: .8rem; }
 .pt-ov-review-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
 .pt-ov-review-stat { display: grid; gap: 2px; padding: 12px 14px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-ov-review-stat > span, .pt-ov-review-stat > small { color: var(--text-muted); font-size: .8rem; }
 .pt-ov-review-stat > strong { font-size: 1rem; }
 .pt-ov-review-stat > strong:not([class]) { color: var(--text); }
 .pt-ov-review-stat--highlight { border-color: var(--success-border); background: var(--success-soft); }
 .pt-ov-performers { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
 .pt-ov-performer { display: grid; grid-template-columns: 36px minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 12px 14px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface); }
 .pt-ov-performer > div:nth-child(2) { display: grid; gap: 2px; min-width: 0; }
 .pt-ov-performer span, .pt-ov-performer small { color: var(--text-muted); font-size: .78rem; }
 .pt-ov-performer strong { color: var(--text); }
 .pt-ov-performer em { font-style: normal; font-weight: 600; }
 .pt-ov-performer--best { border-color: var(--success-border); }
 .pt-rb-logo { display: grid; place-items: center; width: 36px; height: 36px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); overflow: hidden; }
 .pt-rb-logo img { width: 24px; height: 24px; }
 .pt-ov-insights-panel { border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--pt-tile); }
 .pt-ov-insights-summary { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 14px; cursor: pointer; list-style: none; }
 .pt-ov-insights-summary > div { display: grid; gap: 2px; }
 .pt-ov-insights-summary span { color: var(--accent-text); font-size: .82rem; }
 .pt-ov-insights-summary strong { color: var(--text); }
 .pt-ov-insights-summary em { padding: 6px 12px; border: 1px solid var(--gold-border); border-radius: var(--radius-pill); color: var(--accent-text); font-style: normal; font-size: .84rem; }
 .pt-ov-review-insights { display: grid; gap: 8px; padding: 0 14px 14px; }
 .pt-ov-rb-insight { display: flex; align-items: flex-start; gap: 10px; color: var(--text-muted); }
 .pt-ov-rb-insight-icon img { width: 24px; height: 24px; }
 .pt-ins-pos { color: var(--pt-pos); font-weight: 600; }
 .pt-ins-neg { color: var(--pt-neg); font-weight: 600; }
 .pt-ins-b { color: var(--text); }
 .pt-ov-review-next { padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); color: var(--text-muted); font-size: .84rem; }
 .pt-ov-action-btn { font-weight:600; }
 .pt-ov-goal-input-row { display: flex; gap: 8px; }
 .pt-ov-goal-input-row .pt-ov-input { flex: 1 1 auto; }
 .pt-ov-system-head { align-items: center; justify-content: flex-start; }
 .pt-ov-system-icon { display: inline-grid; place-items: center; flex: 0 0 40px; width: 40px; height: 40px; border: 1px solid var(--gold-border); border-radius: var(--radius-control); background: var(--gold-soft); color: var(--accent-text); }
 .pt-ov-system-title { display: grid; gap: 6px; justify-items: start; }
 /* Paket AR _v2: Zielwert. The input sits in a framed field row; current value and distance are two figure tiles; the
    progress is a toned bar with its scale; each position's contribution is a row with logo, bar and share. */
 .pt-ov-sheet .pt-ov-goal-input-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--s2); padding: var(--s3); border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--pt-tile); }
 .pt-ov-sheet .pt-ov-goal-input-row .pt-ov-input { min-height: 52px; padding-inline: var(--s4); background: var(--input); font-size: 1.1rem; font-weight: 600; }
 .pt-ov-sheet .pt-ov-goal-input-row .pt-ov-set-btn { min-height: 52px; padding-inline: var(--s5); }
 .pt-ov-goal-hero { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s3); }
 .pt-ov-goal-tile { display: grid; gap: var(--s1); align-content: start; padding: var(--s4); border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--pt-tile); }
 .pt-ov-goal-tile span, .pt-ov-progress > div span, .pt-ov-mini-title, .pt-rule-row__label { color: var(--text-faint); font-size: .72rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
 .pt-ov-goal-tile strong { color: var(--text); font-size: 1.55rem; font-weight: 700; line-height: 1.2; }
 .pt-ov-goal-tile small { color: var(--text-muted); font-size: .8rem; }
 .pt-ov-goal-tile--primary { border-color: var(--pt-sheet-border, var(--gold-border)); background: linear-gradient(135deg, var(--pt-sheet-soft, var(--gold-soft)), transparent 70%), var(--pt-tile); }
 .pt-ov-progress { display: grid; gap: var(--s2); padding: var(--s4); border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--pt-tile); }
 .pt-ov-progress > div { display: flex; align-items: baseline; justify-content: space-between; gap: var(--s3); }
 .pt-ov-progress > div strong { color: var(--pt-sheet-tone, var(--accent-text)); font-size: 1.45rem; font-weight: 700; }
 .pt-ov-progress > i { display: block; height: 12px; border-radius: var(--radius-pill); background: var(--surface-strong); overflow: hidden; }
 .pt-ov-progress > i b { display: block; height: 100%; border-radius: var(--radius-pill); background: linear-gradient(90deg, var(--gold-border), var(--pt-sheet-tone, var(--gold))); box-shadow: 0 0 14px var(--pt-sheet-soft, var(--gold-soft)); }
 .pt-ov-progress > small { display: flex; justify-content: space-between; color: var(--text-faint); font-size: .72rem; }
 .pt-ov-goal-positions { display: grid; gap: var(--s2); }
 .pt-ov-goal-positions-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--s3); margin-top: var(--s2); }
 .pt-ov-goal-positions-head small { color: var(--text-muted); font-size: .8rem; }
 .pt-ov-goal-pos { display: grid; grid-template-columns: 36px minmax(0, 1.1fr) minmax(0, 1fr) 4.5em; align-items: center; gap: var(--s3); padding: var(--s2) var(--s3); border: 1px solid var(--pt-line); border-radius: var(--radius-control); background: var(--pt-card); }
 .pt-ov-goal-pos .pt-logo { flex-basis: 36px; width: 36px; height: 36px; }
 .pt-ov-goal-pos-name { display: grid; gap: 2px; min-width: 0; }
 .pt-ov-goal-pos-name strong { overflow: hidden; color: var(--text); font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
 .pt-ov-goal-pos-name span { color: var(--text-muted); font-size: .8rem; }
 .pt-ov-goal-pos-bar { height: 8px; border-radius: var(--radius-pill); background: var(--surface-strong); overflow: hidden; }
 .pt-ov-goal-pos-bar i { display: block; height: 100%; border-radius: var(--radius-pill); background: var(--pt-goal-color, var(--gold)); }
 .pt-ov-goal-pos > b { color: var(--text); font-weight: 700; text-align: right; }
 .pt-ov-goal-positions:not(.is-expanded) .pt-ov-goal-pos--desktop-extra { display: none; }
 .pt-ov-goal-more { display: inline-flex; align-items: center; justify-self: center; gap: var(--s2); min-height: var(--touch-target); padding: 0 var(--s4); border: 1px solid var(--border); border-radius: var(--radius-pill); background: var(--surface); color: var(--accent-text); font-weight: 600; }
 .pt-ov-goal-more i { font-style: normal; transition: transform var(--motion-base) var(--ease-standard); }
 .pt-ov-goal-positions.is-expanded .pt-ov-goal-more i { transform: rotate(180deg); }
 /* Paket AR _v2: Rahmen. The summary is a toned banner, each rule a card with its status chip, the r337 graphic and
    the review action; the personal note closes the sheet. */
 .pt-ov-rules-body { display: grid; gap: var(--s3); }
 .pt-rule-summary { display: grid; gap: var(--s1); padding: var(--s3) var(--s4); border: 1px solid var(--success-border); border-left-width: 3px; border-radius: var(--radius-control); background: var(--success-soft); }
 .pt-rule-summary strong { color: var(--text); font-weight: 600; }
 .pt-rule-summary span { color: var(--text-muted); font-size: .84rem; }
 .pt-rule-summary.is-check { border-color: var(--attention-border); background: var(--attention-soft); }
 .pt-rule-summary.is-reviewed { border-color: var(--pt-steel-border); background: var(--pt-steel-soft); }
 .pt-rules-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s3); }
 .pt-rule-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-content: start; gap: var(--s1) var(--s3); padding: var(--s4); border: 1px solid var(--border); border-left: 3px solid var(--success-border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-rule-row.is-check { border-left-color: var(--attention); background: linear-gradient(90deg, var(--attention-soft), transparent 70%), var(--pt-tile); }
 .pt-rule-row.is-reviewed { border-left-color: var(--pt-steel); }
 .pt-rule-row.is-missing { border-left-color: var(--border); }
 .pt-rule-row__label { grid-column: 1 / -1; }
 .pt-rule-row__value { grid-column: 1 / -1; color: var(--text); font-size: 1.35rem; font-weight: 700; line-height: 1.2; }
 .pt-rule-row__meta { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s2); grid-column: 1 / -1; padding-top: var(--s2); border-top: 1px solid var(--pt-line); }
 .pt-rule-row__limit { color: var(--text-muted); font-size: .8rem; }
 .pt-rule-row__status { padding: 2px var(--s2); border: 1px solid var(--success-border); border-radius: var(--radius-pill); background: var(--success-soft); color: var(--pt-pos); font-size: .76rem; font-weight: 600; white-space: nowrap; }
 .pt-rule-row.is-check .pt-rule-row__status { border-color: var(--attention-border); background: var(--attention-soft); color: var(--attention); }
 .pt-rule-row.is-reviewed .pt-rule-row__status { border-color: var(--pt-steel-border); background: var(--pt-steel-soft); color: var(--pt-steel); }
 .pt-rule-row.is-missing .pt-rule-row__status { border-color: var(--border); background: var(--surface); color: var(--text-muted); }
 .pt-rule-row > .r4x-rule-graphic { grid-column: 1 / -1; margin-top: var(--s1); }
 .pt-rule-row__actions { grid-column: 1 / -1; margin-top: var(--s1); }
 .pt-rule-check-btn { min-height: var(--touch-target); padding: 0 var(--s4); border: 1px solid var(--attention-border); border-radius: var(--radius-pill); background: var(--surface); color: var(--attention); font-weight: 600; }
 .pt-rule-check-btn.is-reviewed { border-color: var(--pt-steel-border); color: var(--pt-steel); }
 .pt-rule-note { display: grid; gap: var(--s1); padding: var(--s4); border: 1px solid var(--gold-border); border-radius: var(--radius-card); background: linear-gradient(135deg, var(--gold-soft), transparent 70%), var(--pt-tile); }
 .pt-rule-note span { color: var(--accent-text); font-size: .72rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
 .pt-rule-note p { margin: 0; color: var(--text); }
 .pt-rule-note--empty p { color: var(--text-muted); }
 .pt-rule-plus-paused { display: grid; gap: var(--s2); padding: var(--s4); border: 1px solid var(--gold-border); border-radius: var(--radius-card); background: var(--gold-soft); }
 .pt-rule-plus-paused p { margin: var(--s1) 0 0; color: var(--text-muted); }
 .pt-rule-plus-paused a { color: var(--accent-text); font-weight: 600; }
 /* Paket AR _v2: Rückblick. The period sits as a steel chip in the head; the four figures are tiles with large
    numbers (the portfolio tile in the tone of its result); each position card carries the tone of its statement. */
 .pt-ov-sheet .pt-ov-review-period { display: grid; justify-items: end; gap: var(--s1); font-size: .82rem; }
 .pt-ov-sheet .pt-ov-review-period small { font-size: .82rem; }
 .pt-ov-sheet .pt-ov-review-period .pt-ov-badge { border-color: var(--pt-steel-border); background: var(--pt-steel-soft); color: var(--pt-steel); font-weight: 600; }
 .pt-ov-sheet .pt-ov-review-stats { gap: var(--s3); }
 .pt-ov-sheet .pt-ov-review-stat { gap: var(--s1); align-content: start; padding: var(--s4); border-radius: var(--radius-card); }
 .pt-ov-sheet .pt-ov-review-stat > span { color: var(--text-faint); font-size: .72rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
 .pt-ov-sheet .pt-ov-review-stat > strong { font-size: 1.5rem; font-weight: 700; line-height: 1.2; }
 .pt-ov-sheet .pt-ov-review-stat--highlight { border-color: var(--success-border); background: linear-gradient(135deg, var(--success-soft), transparent 75%), var(--pt-tile); }
 .pt-ov-sheet .pt-ov-review-stat--negative { border-color: var(--danger-border); background: linear-gradient(135deg, var(--danger-soft), transparent 75%), var(--pt-tile); }
 .pt-ov-sheet .pt-ov-performers { gap: var(--s3); }
 .pt-ov-sheet .pt-ov-performer { gap: var(--s3); padding: var(--s3) var(--s4); border-left: 3px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-ov-sheet .pt-ov-performer > div:nth-child(2) > span { color: var(--text-faint); font-size: .72rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
 .pt-ov-sheet .pt-ov-performer strong { font-size: .98rem; font-weight: 700; }
 .pt-ov-sheet .pt-ov-performer em { font-size: 1.05rem; font-weight: 700; white-space: nowrap; }
 .pt-ov-sheet :is(.pt-ov-performer--best, .pt-ov-performer--gain) { border-left-color: var(--success); }
 .pt-ov-sheet :is(.pt-ov-performer--worst, .pt-ov-performer--loss, .pt-ov-performer--relative) { border-left-color: var(--danger); }
 .pt-ov-sheet :is(.pt-ov-performer--relative-best, .pt-ov-performer--stable, .pt-ov-performer--spread) { border-left-color: var(--pt-steel); }
 .pt-ov-sheet .pt-rb-logo { width: 40px; height: 40px; border-radius: var(--radius-pill); background: var(--surface-strong); }
 .pt-ov-sheet .pt-rb-logo .pt-logo { width: 40px; height: 40px; flex-basis: 40px; border: 0; }
 .pt-ov-sheet .pt-ov-insights-panel { border-color: var(--pt-steel-border); background: linear-gradient(90deg, var(--pt-steel-soft), transparent 70%), var(--pt-tile); }
 .pt-ov-sheet .pt-ov-insights-summary { min-height: var(--touch-target); padding: var(--s3) var(--s4); }
 .pt-ov-sheet .pt-ov-insights-summary span { color: var(--pt-steel); font-size: .72rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
 .pt-ov-sheet .pt-ov-insights-summary em { display: inline-flex; align-items: center; gap: var(--s1); border-color: var(--pt-steel-border); background: var(--surface); color: var(--pt-steel); font-weight: 600; }
 .pt-ov-sheet .pt-ov-review-insights { gap: var(--s3); padding: 0 var(--s4) var(--s4); }
 .pt-ov-sheet .pt-ov-rb-insight { padding: var(--s3); border: 1px solid var(--pt-line); border-radius: var(--radius-control); background: var(--pt-card); line-height: 1.55; }
 .pt-ov-sheet .pt-ov-rb-insight p { margin: 0; }
 .pt-ov-sheet .pt-ov-review-next { display: flex; align-items: center; gap: var(--s2); margin: 0; padding: var(--s3) var(--s4); border-color: var(--pt-line); border-radius: var(--radius-control); }
 .pt-ov-sheet .pt-ov-review-next::before { content: ''; flex: none; width: 18px; height: 18px; background: var(--pt-steel); mask: var(--pt-sheet-icon) center / contain no-repeat; }
 .pt-ov-sheet .pt-review-archive-open { width: 100%; min-height: var(--touch-target); }
 .pt-ov-strip { display: flex; align-items: center; gap: 12px; }
 .pt-ov-strip__main { display: grid; gap: 0; }
 .pt-ov-strip__span { color: var(--text-muted); font-size: .78rem; }
 .pt-ov-strip__delta { font-weight: 600; white-space: nowrap; }
 .pt-ov-strip__spark { flex: 1 1 auto; min-width: 60px; height: 28px; }
 .pt-ov-strip__spark svg { width: 100%; height: 100%; }
 /* Personal rules (r337 "Mein Portfolio-Rahmen"). */
 .pt-rules-modal { position: fixed; inset: 0; z-index: calc(var(--z-modal) + 2); display: grid; place-items: center; padding: 20px; }
 .pt-rules-modal[hidden] { display: none; }
 /* Paket AR _v2: the Rahmen form wears the chrome of the Rahmen sheet (gold tone, toned head band, icon tile). */
 .pt-rules-modal__panel { position: relative; display: grid; gap: 14px; width: min(860px, 100%); max-height: calc(100dvh - 2 * var(--s5)); padding: 0 var(--s5); border: 1px solid var(--gold-border); border-radius: var(--radius-card); background: radial-gradient(90% 40% at 100% 0, var(--gold-soft), transparent 60%), var(--surface); box-shadow: inset 0 2px 0 var(--gold-border), var(--shadow-elevated); overflow: hidden auto; overscroll-behavior: contain; }
 .pt-rules-modal__head { position: relative; display: flex; align-items: flex-start; justify-content: space-between; gap: var(--s4); margin: 0 calc(-1 * var(--s5)); padding: var(--s5) var(--s5) var(--s4) calc(52px + 2 * var(--s5) - var(--s1)); border-bottom: 1px solid var(--pt-line); background: linear-gradient(90deg, var(--gold-soft), transparent 75%); }
 .pt-rules-modal__head::before, .pt-rules-modal__head::after { content: ''; position: absolute; top: var(--s5); left: var(--s5); width: 52px; height: 52px; }
 .pt-rules-modal__head::before { border: 1px solid var(--gold-border); border-radius: var(--radius-control); background: var(--gold-soft); }
 .pt-rules-modal__head::after { background: var(--accent-text); mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l7 3v5c0 4.5-3 8.2-7 10-4-1.8-7-5.5-7-10V6z'/%3E%3Cpath d='M9 12l2 2 4-4'/%3E%3C/svg%3E") center / 26px no-repeat; }
 .pt-rules-modal__head .pt-icon-btn { border-radius: var(--radius-pill); }
 .pt-rules-titleline { display: flex; align-items: center; gap: 8px; }
 .pt-rules-titleline h3 { margin: 0; font-size: 1.3rem; font-weight: 700; }
 .pt-rules-modal__desc { margin-top: 4px; color: var(--text-muted); }
 .pt-rules-quicklinks { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
 .pt-rules-quicklinks__label { color: var(--text-muted); font-size: .82rem; }
 .pt-rule-jump-cta { min-height: 34px; padding: 4px 12px; border: 1px solid var(--gold-border); border-radius: var(--radius-pill); background: var(--gold-soft); color: var(--accent-text); font-size: .82rem; font-weight: 600; }
 .pt-rule-jump-cta i { font-style: normal; }
 .pt-rules-form { display: grid; gap: 14px; }
 .pt-rules-block, .pt-rules-note-block { display: grid; gap: 10px; padding: 16px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--pt-card); }
 .pt-rules-block-head { display: grid; gap: 2px; }
 .pt-rules-block-head__eyebrow, .pt-rules-note-block__eyebrow { color: var(--accent-text); font-size: .76rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
 .pt-rules-block-head strong, .pt-rules-note-block > strong { color: var(--text); }
 .pt-rules-block-head p, .pt-rules-note-block > p { color: var(--text-muted); }
 .pt-rules-fieldset { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 10px; margin: 0; padding: 12px; border: 1px solid var(--border); border-radius: var(--radius-control); }
 .pt-rules-fieldset > legend { padding: 0 6px; color: var(--text); font-weight: 600; }
 .pt-rules-fieldset label, .pt-rules-group__body label, .pt-rules-form__note { display: grid; gap: 4px; align-content: start; color: var(--text); font-size: .86rem; }
 .pt-rules-fieldset small, .pt-rules-group__body small, .pt-rules-form__note small { color: var(--text-muted); font-size: .76rem; }
 .pt-rules-form :is(input[type="number"], input[type="text"], select, textarea) { width: 100%; min-height: var(--touch-target); padding: 6px 10px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface); color: var(--text); }
 .pt-rules-group { border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface); }
 .pt-rules-group > summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px; cursor: pointer; list-style: none; }
 .pt-rules-group__summary { display: flex; align-items: center; gap: 10px; }
 .pt-rules-group__icon { display: inline-grid; place-items: center; flex: 0 0 32px; width: 32px; height: 32px; border: 1px solid var(--gold-border); border-radius: var(--radius-control); background: var(--gold-soft); color: var(--accent-text); }
 .pt-rules-group__copy { display: grid; gap: 2px; }
 .pt-rules-group__copy small { color: var(--text-muted); font-size: .82rem; }
 .pt-rules-group__meta { display: flex; align-items: center; gap: 8px; color: var(--text-muted); font-size: .8rem; }
 .pt-rules-group__meta em { font-style: normal; }
 .pt-rules-group__meta i { font-style: normal; }
 .pt-rules-group__body { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 10px; padding: 0 12px 12px; }
 .pt-rules-check { grid-template-columns: auto minmax(0, 1fr); column-gap: 10px; }
 .pt-rules-check input { margin-top: 3px; }
 .pt-rules-check small { grid-column: 2; }
 .pt-rules-modal__actions { position: sticky; bottom: 0; display: flex; justify-content: flex-end; gap: 10px; margin: 0 -24px; padding: 14px 24px; border-top: 1px solid var(--border); background: var(--surface); }
 
 /* Short confirmation (r337 toast of the watchlist and the stand save). */
 .pt-watchlist-toast { position: fixed; left: 50%; bottom: 24px; z-index: var(--z-modal); padding: 10px 16px; border: 1px solid var(--border); border-radius: var(--radius-pill); background: var(--surface); box-shadow: var(--shadow-elevated); color: var(--text); font-weight: 500; opacity: 0; pointer-events: none; transform: translate(-50%, 8px); transition: opacity var(--motion-fast) var(--ease-standard), transform var(--motion-fast) var(--ease-standard); }
 .pt-watchlist-toast.is-visible { opacity: 1; transform: translate(-50%, 0); }
 @media (max-width: 760px) {
  .pt-history-overview { padding: 14px 12px 4px; }
  .pt-contract-summary { flex-direction: column; gap: 10px; }
  .pt-contract-right { justify-items: start; text-align: left; }
  .pt-contract-right .pt-contract-label { justify-content: flex-start; }
  .pt-history-chart { height: 180px; }
  .pt-history-chart__x--mid { display: none; }
  .pt-history-stat-grid { grid-template-columns: minmax(0, 1fr); }
  .pt-snapshot-manager { margin: 12px; padding: 12px; }
  .pt-snapshot-list-head { flex-direction: column; }
  .pt-snapshot-list-actions { justify-items: start; }
  .pt-snapshot-item > summary, .pt-snapshot-archive-item > summary { flex-wrap: wrap; padding: 12px; }
  .pt-snapshot-item .pt-snapshot-meta-row { padding-left: 0; }
  .pt-snapshot-value-wrap { justify-items: start; text-align: left; }
  .pt-snapshot-item > :not(summary), .pt-snapshot-archive-item > :not(summary) { margin: 0 12px 12px; }
  .pt-snapshot-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pt-snapshot-position-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pt-snapshot-position-asset, .pt-snapshot-position-market { grid-column: 1 / -1; }
  .pt-stat-row { grid-template-columns: minmax(0, 1fr) auto; }
  .pt-stat-row-delta { grid-column: 1 / -1; justify-self: start; }
  .pt-snapshot-status-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pt-snapshot-overlay, .pt-ov-sheet, .pt-rules-modal { padding: 0; place-items: stretch; }
  .pt-snapshot-overlay__panel, .pt-ov-sheet__panel, .pt-rules-modal__panel { width: 100%; max-height: 100dvh; height: 100dvh; border-radius: var(--radius-none, 0); }
  .pt-snapshot-overlay__panel { padding: 14px 16px 20px; }
  .pt-rules-modal__panel { padding: 0 var(--s4); }
  /* On phones the long form head keeps its full width: no icon tile, the toned band stays. */
  .pt-rules-modal__head { margin: 0 calc(-1 * var(--s4)); padding: var(--s4) var(--s4) var(--s3); }
  .pt-rules-modal__head::before, .pt-rules-modal__head::after { display: none; }
  .pt-rules-titleline h3 { font-size: 1.15rem; }
  .pt-rules-modal__actions { margin: 0 calc(-1 * var(--s4)); padding: var(--s3) var(--s4); }
  .pt-rules-modal__actions .pt-btn { flex: 1 1 0; }
  .pt-history-modal-tabs { grid-template-columns: minmax(0, 1fr); }
  .pt-ov-review-stats, .pt-ov-performers { grid-template-columns: minmax(0, 1fr); }
  .pt-ov-goal-input-row { flex-direction: column; }
  .pt-rules-fieldset, .pt-rules-group__body { grid-template-columns: minmax(0, 1fr); }
  /* Paket AR _v2: the sheets on phones fill the screen; a smaller icon tile, figures in two columns. */
  .pt-ov-sheet .pt-ov-card { padding: 0 var(--s4) var(--s5); }
  .pt-ov-sheet .pt-ov-card-head { min-height: calc(44px + 2 * var(--s4)); margin: 0 calc(-1 * var(--s4)); padding: var(--s4) calc(var(--touch-target) + 2 * var(--s3)) var(--s3) calc(44px + 2 * var(--s4)); }
  .pt-ov-sheet .pt-ov-card-head::before, .pt-ov-sheet .pt-ov-card-head::after { top: var(--s4); left: var(--s4); width: 44px; height: 44px; }
  .pt-ov-sheet .pt-ov-card-head::after { mask-size: 22px; }
  .pt-ov-sheet .pt-ov-card-head h3 { font-size: 1.15rem; }
  .pt-ov-sheet__close { margin: var(--s3) var(--s3) 0 0; }
  .pt-ov-sheet .pt-ov-review-period { justify-items: start; }
  .pt-ov-sheet .pt-ov-review-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pt-ov-sheet .pt-ov-review-stat > strong { font-size: 1.25rem; }
  .pt-ov-sheet .pt-ov-goal-input-row { grid-template-columns: minmax(0, 1fr); }
  .pt-ov-goal-tile strong { font-size: 1.25rem; }
  .pt-ov-goal-pos { grid-template-columns: 32px minmax(0, 1fr) auto; row-gap: var(--s2); }
  .pt-ov-goal-pos .pt-logo { flex-basis: 32px; width: 32px; height: 32px; }
  .pt-ov-goal-pos-bar { grid-column: 2 / -1; grid-row: 2; }
  .pt-ov-goal-positions:not(.is-expanded) .pt-ov-goal-pos--mobile-extra { display: none; }
  .pt-rules-list { grid-template-columns: minmax(0, 1fr); }
 }

 /* ── Modals (position, watchlist search and edit) ─────────── */
 .pt-modal { position: fixed; inset: 0; z-index: var(--z-modal); display: grid; place-items: center; padding: 20px; }
 .pt-modal-backdrop { position: absolute; inset: 0; background: var(--overlay); }
 .pt-modal-card { position: relative; width: min(1160px, 100%); max-height: calc(100dvh - 40px); padding: 0; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--surface); box-shadow: var(--shadow-elevated); color: var(--text); font-size: .86rem; line-height: 1.5; overflow: hidden auto; overscroll-behavior: contain; }
 #wl-search-modal .pt-modal-card, #wl-edit-modal .pt-modal-card { width: min(560px, 100%); }
 #wl-search-modal .pt-form-step, #wl-edit-modal .pt-form-step { margin: 18px; }
 .pt-modal-head { position: sticky; z-index: 2; top: 0; display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; padding: 20px 24px 18px 30px; border-bottom: 1px solid var(--border); background: var(--surface); }
 .pt-modal-head h2 { margin: 2px 0 0; font-size: 1.12rem; font-weight: 600; }
 .pt-modal-subline { max-width: 490px; margin-top: 6px; color: var(--text-muted); }
 .pt-form { padding: 22px 24px 24px; }
 .pt-form-grid-main { display: grid; grid-template-columns: minmax(0, 360px) minmax(0, 1fr); gap: 18px 22px; align-items: start; }
 .pt-form-step { position: relative; max-width: 100%; padding: 17px 18px 18px; border: 1px solid var(--border); border-left: 3px solid var(--pt-steel); border-radius: var(--radius-card); background: var(--pt-tile); }
 #position-value-step { border-left-color: var(--gold); }
 .pt-form-step--change { border-left-color: var(--gold); }
 .pt-form-step--journal, .pt-form-step--actions { grid-column: 1 / -1; }
 .pt-form-step--journal { display: grid; gap: 14px; border-left-width: 1px; border-color: var(--gold-border); }
 .pt-form-step--actions { padding: 18px 0 0; border: 0; border-top: 1px solid var(--border); border-radius: inherit; background: transparent; }
 .pt-step-label { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; min-height: 34px; margin: 0 0 14px; padding: 0 0 12px; border-bottom: 1px solid var(--pt-line); color: var(--text); font-size: .9rem; font-weight: 600; }
 .pt-step-index { display: grid; place-items: center; width: 30px; height: 30px; border: 1px solid var(--pt-steel-border); border-radius: var(--radius-control); background: var(--pt-steel-soft); color: var(--pt-steel); font-weight: 600; }
 #position-value-step .pt-step-index { border-color: var(--gold-border); background: var(--gold-soft); color: var(--accent-text); }
 .pt-step-required, .pt-step-optional { padding: 2px 8px; border: 1px solid var(--border); border-radius: var(--radius-badge); color: var(--text-faint); font-size: .72rem; font-weight: 600; letter-spacing: .04em; }
 .pt-step-required { border-color: var(--gold-border); background: var(--gold-soft); color: var(--accent-text); }
 .pt-step-helper { margin: -6px 0 16px; color: var(--text-muted); }
 .pt-field { position: relative; display: flex; flex-direction: column; gap: 6px; margin: 0 0 14px; color: var(--text); font-weight: 500; }
 .pt-field > span:first-child { color: var(--text); }
 .pt-field small { color: var(--text-faint); font-size: .74rem; font-weight: 400; }
 .pt-field :is(input, select, textarea), .pt-journal-history-toolbar :is(input, select), .pt-form :is(input[type="text"], input[type="date"], input[type="number"], select, textarea), :is(.pt-journal-form, .pt-journal-edit-panel) :is(input:not([type="hidden"]), select) { width: 100%; min-height: 44px; padding: 9px 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--input); color: var(--text); font-size: .92rem; }
 .pt-field textarea { min-height: 72px; resize: vertical; }
 .pt-field :is(input, select, textarea):focus, .pt-journal-history-toolbar :is(input, select):focus, :is(.pt-journal-form, .pt-journal-edit-panel) :is(input, select):focus { outline: none; border-color: var(--gold); }
 .pt-field input::placeholder, .pt-field textarea::placeholder, :is(.pt-journal-form, .pt-journal-edit-panel) input::placeholder { color: var(--text-faint); }
 :is(.pt-journal-form, .pt-journal-edit-panel) :is(input, select):disabled { background: var(--pt-tile); }
 .pt-search-field input { border-color: var(--gold-border); }
 .pt-chip-grid { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 14px; }
 .pt-results { display: grid; gap: 6px; margin-top: 8px; }
 .pt-results:empty { display: none; }
 .pt-result-btn { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 48px; padding: 8px 10px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface); color: var(--text); text-align: left; }
 .pt-result-btn:hover, .pt-result-btn:focus-visible { border-color: var(--gold-border); background: var(--gold-soft); }
 .pt-result-btn--owned { border-style: dashed; }
 .pt-result-name { display: block; color: var(--text); font-weight: 500; }
 .pt-selected { margin-top: 10px; padding: 10px 12px; border: 1px solid var(--gold-border); border-radius: var(--radius-control); background: var(--gold-soft); }
 .pt-value-groups { display: grid; grid-template-columns: minmax(0, .7fr) minmax(0, 1fr); gap: 14px; align-items: stretch; }
 .pt-value-group { position: relative; padding: 16px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--surface); }
 .pt-value-group--valuation { border-color: var(--gold-border); }
 .pt-value-group--origin { grid-column: 1 / -1; border-color: var(--success-border); }
 .pt-value-group-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin: 0 0 15px; padding: 0 0 11px; border-bottom: 1px solid var(--pt-line); }
 .pt-value-group-head span { color: var(--text-faint); font-size: .8rem; }
 .pt-linear-section-label { color: var(--text); font-weight: 600; }
 .pt-value-origin-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 14px; }
 .pt-value-origin-grid > :last-child { grid-column: 1 / -1; }
 .pt-mode { display: grid; gap: 7px; margin: 0 0 8px; }
 .pt-mode > span { color: var(--text); font-weight: 500; }
 .pt-mode-buttons { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 3px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-mode-buttons button { min-height: 40px; border: 0; border-radius: var(--radius-control); background: transparent; color: var(--text-muted); font-weight: 600; }
 .pt-mode-buttons button.is-active { background: var(--gold); color: var(--button-text); }
 .pt-mode-hint { margin: 0 0 14px; color: var(--text-muted); }
 .pt-field-disabled { opacity: .85; }
 .pt-field-disabled input { background: var(--pt-tile); }
 .pt-cash-hint { margin: -6px 0 14px; color: var(--text-muted); font-size: .82rem; }
 .pt-dca-hint { margin-top: 12px; padding: 10px 12px; border: 1px solid var(--pt-steel-border); border-radius: var(--radius-control); background: var(--pt-steel-soft); color: var(--text); }
 .pt-input-mode-panel { margin-bottom: 14px; }
 .pt-input-mode-title { margin-bottom: 8px; color: var(--text); font-weight: 600; }
 .pt-input-mode-grid, .pt-change-option-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 8px; }
 .pt-input-mode-card, .pt-change-option-grid button { display: grid; gap: 4px; padding: 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface); color: var(--text); text-align: left; }
 .pt-input-mode-card small, .pt-change-option-grid button small { color: var(--text-muted); font-size: .78rem; }
 .pt-input-mode-card.is-active, .pt-change-option-grid button.is-active, .pt-change-option-grid button[aria-pressed="true"] { border-color: var(--gold); background: var(--gold-soft); }
 .pt-change-flow-native { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
 .pt-change-subline { color: var(--text-muted); }
 .pt-journal-head { display: block; }
 .pt-journal-toggle { display: flex; align-items: center; justify-content: space-between; gap: 14px; width: 100%; padding: 14px 18px; border: 1px dashed var(--border); border-radius: var(--radius-card); background: transparent; color: var(--text); text-align: left; }
 .pt-journal-toggle-copy { display: flex; flex-direction: column; gap: 4px; }
 .pt-journal-toggle .pt-step-label { margin: 0; padding: 0; border: 0; }
 .pt-journal-subline { color: var(--text-muted); font-weight: 400; }
 .pt-journal-toggle-action { flex: none; padding: 8px 14px; border: 1px solid var(--gold-border); border-radius: var(--radius-button); color: var(--accent-text); white-space: nowrap; }
 .pt-journal-body { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
 .pt-journal-panel { padding: 14px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--surface); }
 .pt-journal-panel-head { display: flex; gap: 10px; margin-bottom: 10px; }
 .pt-journal-panel-head h3 { font-size: .94rem; font-weight: 600; }
 .pt-journal-panel-head p { color: var(--text-muted); font-size: .8rem; }
 .pt-journal-panel-icon { flex: none; }
 .pt-holding-card { display: grid; gap: 8px; }
 .pt-de-holding-toggle { display: flex; align-items: flex-start; gap: 10px; cursor: pointer; }
 .pt-de-holding-toggle input { width: 20px; height: 20px; margin-top: 2px; accent-color: var(--gold); }
 .pt-de-holding-toggle__box { display: none; }
 .pt-de-holding-toggle__copy { display: grid; gap: 2px; }
 .pt-de-holding-toggle__copy small { color: var(--text-muted); font-size: .78rem; }
 .pt-de-holding-date-hint { color: var(--text-faint); font-size: .78rem; }
 .pt-thesis-counter { align-self: flex-end; }
 .pt-save-summary { margin-bottom: 14px; padding: 14px; border: 1px solid var(--success-border); border-radius: var(--radius-card); background: var(--success-soft); }
 .pt-save-summary-head { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
 .pt-save-summary-head small { display: block; color: var(--text-muted); font-size: .78rem; }
 .pt-save-summary-icon { display: grid; place-items: center; width: 28px; height: 28px; border-radius: var(--radius-pill); background: var(--pt-pos); color: var(--surface); }
 .pt-change-summary { color: var(--text); }
 .pt-modal-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
 .pt-modal-actions--3 { grid-template-columns: 2fr 1fr 1fr; }
 .pt-feedback { min-height: 20px; margin-top: 9px; color: var(--text-muted); }
 .pt-feedback.is-error, .pt-feedback[data-tone="error"] { color: var(--pt-neg); }
 .pt-feedback.is-success, .pt-feedback[data-tone="success"] { color: var(--pt-pos); }

 .pt-label-note { color: var(--text-faint); font-size: .72rem; font-weight: 400; }

 /* ── Todoist FEATURE-004: quick / guided entry ────────────── */
 .pt-entry-mode { display: inline-grid; grid-template-columns: repeat(2, minmax(0, auto)); gap: 4px; margin-top: 12px; padding: 3px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-tile); }
 .pt-entry-mode button { min-height: 40px; padding: 6px 14px; border: 0; border-radius: var(--radius-control); background: transparent; color: var(--text-muted); font-size: .84rem; font-weight: 600; }
 .pt-entry-mode button[aria-pressed="true"] { background: var(--gold-soft); color: var(--accent-text); box-shadow: inset 0 0 0 1px var(--gold-border); }
 .pt-guided { margin: 0 0 16px; padding: 16px 18px; border: 1px solid var(--pt-steel-border); border-left: 3px solid var(--pt-steel); border-radius: var(--radius-card); background: var(--pt-steel-soft); }
 .pt-guided-progress { color: var(--pt-steel); font-size: .72rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
 .pt-guided-title { margin: 4px 0 6px; font-size: 1.06rem; font-weight: 600; }
 .pt-guided-what { color: var(--text); line-height: 1.55; }
 /* Beginner help (02.10.2026): example above the field; where to find it, when unsure and why below it. */
 .pt-guided-block { margin-top: 12px; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface); }
 .pt-guided-block__label { margin: 0 0 4px; color: var(--text-faint); font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
 .pt-guided-block p:not(.pt-guided-block__label) { margin: 0; color: var(--text); font-size: .9rem; line-height: 1.55; }
 .pt-guided-block ul { display: grid; gap: 6px; margin: 0; padding-left: 18px; color: var(--text); font-size: .9rem; line-height: 1.5; }
 .pt-guided-block--example { border-left: 3px solid var(--gold); }
 .pt-guided-more { display: grid; gap: 8px; margin: 4px 0 0; }
 .pt-guided-more .pt-guided-block { margin-top: 0; }
 .pt-guided-block--why { border-color: var(--pt-steel-border); background: var(--pt-steel-soft); }
 .pt-guided-choices { margin-top: 14px; }
 .pt-guided-message { margin-top: 10px; color: var(--pt-warn); font-weight: 500; }
 .pt-guided-summary { display: grid; gap: 6px; margin: 14px 0 0; }
 .pt-guided-summary > div { display: grid; grid-template-columns: minmax(120px, .4fr) minmax(0, 1fr); gap: 12px; padding: 8px 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--surface); }
 .pt-guided-summary dt { color: var(--text-faint); font-size: .8rem; }
 .pt-guided-summary dd { margin: 0; color: var(--text); font-weight: 500; overflow-wrap: anywhere; }
 .pt-guided-nav { display: flex; justify-content: space-between; gap: 10px; margin-top: 16px; }
 .pt-guided-nav .pt-btn { min-width: 140px; }
 /* Guided mode shows only the parts of the current step; r337 keeps the form, its hidden states and its save. */
 #position-modal[data-pt-guided] .pt-form-grid-main { display: block; }
 #position-modal[data-pt-guided] .pt-form-step { display: none; margin-bottom: 14px; }
 #position-modal[data-pt-guided] .pt-form-step[data-pt-guided-active], #position-modal[data-pt-guided] .pt-form-step:has([data-pt-guided-active]) { display: block; }
 #position-modal[data-pt-guided] .pt-form-step--journal[data-pt-guided-active] { display: grid; }
 #position-modal[data-pt-guided] :is(.pt-step-label, .pt-step-helper, .pt-change-head, .pt-value-group-head) { display: none; }
 #position-modal[data-pt-guided] #position-value-step > :not(.pt-value-groups):not([data-pt-guided-active]) { display: none; }
 #position-modal[data-pt-guided] .pt-value-groups { display: block; }
 #position-modal[data-pt-guided] .pt-value-group:not([data-pt-guided-active]):not(:has([data-pt-guided-active])) { display: none; }
 #position-modal[data-pt-guided] .pt-value-group { margin-bottom: 12px; }
 #position-modal[data-pt-guided] .pt-value-group--amount > :not([data-pt-guided-active]) { display: none; }
 #position-modal[data-pt-guided] .pt-value-origin-grid { display: block; }
 #position-modal[data-pt-guided] .pt-value-origin-grid > :not([data-pt-guided-active]) { display: none; }
 #position-modal[data-pt-guided] .pt-form-step--journal .pt-step-label { display: flex; }
 .pt-cash-flow .pt-input-mode-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

 /* ── r337 confirm dialog (ptConfirm/ptAlert) and sheets ──── */
 #pt-confirm-overlay { position: fixed; inset: 0; z-index: var(--z-toast); display: grid; grid-template-columns: minmax(0, 1fr); place-items: center; padding: var(--s4); background: var(--overlay); }
 #pt-confirm-card { width: min(440px, 100%); min-width: 0; overflow-wrap: anywhere; padding: 22px; border: 1px solid var(--border); border-radius: var(--radius-card); background: var(--surface); box-shadow: var(--shadow-elevated); color: var(--text); }
 #pt-confirm-title { margin: 0 0 8px; font-size: 1.06rem; }
 #pt-confirm-body { color: var(--text-muted); }
 #pt-confirm-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; margin-top: 16px; }
 /* The overview sheets are styled with the Portfolio-Stände block above (r33). */

 /* ── Desktop narrower ─────────────────────────────────────── */
 @media (max-width: 1080px) {
  .pt-wl-row { grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"asset price" "targets note" "actions actions"; }
  .pt-data-workspace { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pt-form-grid-main { grid-template-columns: minmax(0, 1fr); }
  /* Narrower desktop: actions stay beside the identity, the metric tiles move below, the note follows. */
  .pt-journal-row { grid-template-columns: minmax(0, 1fr) auto; }
  .pt-journal-row__actions { grid-column: 2; }
  .pt-journal-row__metrics { grid-column: 1 / -1; grid-row: 2; }
  .pt-journal-note { grid-row: 3; }
  /* Paket AR: narrower desktop, the asset takes the first line beside the actions; value, result and share follow. */
  .pt-table-wrap { padding-inline: var(--s4); }
  .pt-movement-row > .pt-asset-cell { grid-column: 1 / 13; grid-row: 1; }
  .pt-movement-row > .pt-tracking-actions { grid-row: 1; }
  .pt-movement-row > .pt-cell--value { grid-column: 1 / 5; grid-row: 2; padding-top: var(--s3); }
  .pt-movement-row > .pt-cell--amount { grid-column: 1 / 5; grid-row: 3; }
  .pt-movement-row > .pt-cell--result { grid-column: 5 / 10; grid-row: 2 / 4; padding-top: var(--s3); }
  .pt-movement-row > .pt-cell--share { grid-column: 10 / 14; grid-row: 2 / 4; padding-top: var(--s3); }
  .pt-movement-row::before, .pt-movement-row > :is(.pt-cell--price, .pt-cell--entry, .pt-cell--marketcap, .pt-cell--day1, .pt-cell--day7, .pt-cell--day1y) { grid-row: 4; }
  .pt-movement-row--unpriced > .pt-cell--amount { grid-row: 2 / 4; padding-top: var(--s3); }
  .pt-movement-row > .pt-position-status { grid-column: 5 / 14; grid-row: 2 / 4; margin-top: var(--s3); }
 }

 /* ── Phones (r337 breakpoint 760) ─────────────────────────── */
 @media (max-width: 760px) {
  .pt-page { font-size: .86rem; }
  .pt-shell-head { grid-template-columns: minmax(0, 1fr); gap: 10px; padding: 16px; }
  .pt-lede { display: none; }
  [data-info-slot="portfolio-intro"] { display: inline-block; }
  .pt-head-actions { grid-template-columns: auto minmax(0, 1fr); justify-items: stretch; gap: 8px; }
  /* UX (r32): one line for the Investment Hub link (r337 wrapped "öffnen" below the name). */
  .pt-hub-link { justify-self: end; padding: 8px 10px; font-size: .8rem; }
  .pt-area-tabs { display: flex; gap: 4px; margin-inline: 0; }
  .pt-area-tab { flex: 0 0 auto; min-width: 104px; font-size: .8rem; }
  .pt-section-head { flex-wrap: wrap; gap: 10px; min-height: 64px; padding: 14px 14px 14px 58px; }
  .pt-section-head-right { width: 100%; justify-content: flex-start; }
  .pt-section-head-right .pt-btn { flex: 1 1 auto; }
  .pt-w1-icon { left: 14px; top: 30px; width: 34px; height: 34px; border-radius: var(--radius-control); transform: none; }
  .pt-w1-icon svg { width: 18px; height: 18px; }
  .pt-section-title { font-size: 1.02rem; }
  .pt-hero { padding: 14px 12px; }
  .pt-hero__stage { gap: 6px; justify-content: space-between; }
  .pt-hero__flank { min-width: 70px; gap: 14px; }
  /* r337 at 390 px: flanks 70 px, the ring takes the rest (up to 186 px; 169 px with a classic scrollbar). The label
     gets 12.6 units without tracking: ≥ 10.6 px rendered (v18 floor) and inside the ring. */
  .pt-hero__stage { gap: 4px; }
  .pt-hero__gauge { flex: 1 1 auto; min-width: 0; }
  .pt-hero__gauge svg { width: 186px; max-width: 100%; }
  .pt-hero__flank { flex: 0 0 70px; min-width: 70px; }
  .pt-hero__g-lab { font-size: 12.6px; letter-spacing: 0; }
  /* The pill (with the r337 arrow) stays narrower than the ring so the flank labels keep one line. */
  .pt-hero__delta { gap: 4px; padding: 2px 8px; font-size: .74rem; }
  .pt-hero__fact b { font-size: .92rem; }
  .pt-hero__mini :is(b, strong) { font-size: .94rem; }
  .pt-hero__splits { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
  .pt-hero__split { flex-direction: column; align-items: flex-start; gap: 1px; padding: 6px 10px; border-radius: var(--radius-control); }
  .pt-hero__split b { font-size: .82rem; }
  .pt-hero__sig { padding: 11px 12px; gap: 10px; }
  .pt-hero__sig--save { flex-wrap: wrap; }
  .pt-hero__sig--save .pt-hero__sig-act { margin-left: 44px; }
  .pt-ov-strip { flex-wrap: wrap; }
  .pt-ov-strip__main { flex: 1 1 calc(100% - 50px); }
  .pt-ov-strip__cta { margin-left: 46px; white-space: normal; }
  .pt-table-wrap { padding: 0 0 8px; overflow: visible; }
  .pt-desktop-movement { display: none; }
  .pt-mobile-position-list { display: grid; gap: var(--s3); padding: var(--s3) var(--s3) var(--s4); }
  /* Paket AR: one card per position, read like a portfolio app. Top: logo, name and holding left, value and the toned
     result right; then the share with its bar and the price; at the foot the details and the actions. The asset head
     and the r337 metric row become parts of one grid (display: contents keeps their markup and order). */
  .pt-mobile-position-card { display: grid; grid-template-columns: 40px minmax(0, 1fr) auto; grid-template-areas: "logo copy value" "logo copy result" "facts facts facts" "share share share" "status status status" "panel panel panel" "details details details" "toggle toggle actions"; column-gap: var(--s3); align-items: start; padding: var(--s3) var(--s3) 0; border: 1px solid var(--border); border-left: 3px solid var(--gold-border); border-radius: var(--radius-card); background: var(--pt-wash), var(--pt-card); box-shadow: var(--shadow-card); overflow: hidden; font-variant-numeric: tabular-nums; }
  .pt-mobile-position-card--cash { border-left-color: var(--pt-steel); background: linear-gradient(90deg, var(--pt-steel-soft), transparent 62%), var(--pt-card); }
  .pt-mobile-position-card--unpriced { border-left-color: var(--attention-border); background: linear-gradient(90deg, var(--attention-soft), transparent 62%), var(--pt-card); }
  /* The foot line (details and actions) sits on a hairline across the card. */
  .pt-mobile-position-card::before { content: ''; grid-column: 1 / -1; grid-row: 8; margin: 0 calc(-1 * var(--s3)); border-top: 1px solid var(--pt-line); }
  .pt-mobile-position-card__asset, .pt-mobile-position-card__summary { display: contents; }
  .pt-mobile-position-card__asset > .pt-logo { grid-area: logo; flex-basis: 40px; width: 40px; height: 40px; }
  .pt-mobile-position-card__asset-copy { grid-area: copy; min-width: 0; }
  .pt-mobile-position-card__asset-copy .pt-asset-name-row { color: var(--text); font-size: .98rem; font-weight: 700; }
  .pt-mobile-position-card__quick-actions { grid-area: actions; display: flex; gap: var(--s1); align-items: center; align-self: center; justify-self: end; padding: var(--s2) 0; }
  /* BUG-022: icon actions keep the 44px touch size on phones too. */
  .pt-mini-btn--icon-only { width: var(--touch-target); height: var(--touch-target); min-height: var(--touch-target); }
  .pt-mobile-position-card__metric { min-width: 0; }
  .pt-mobile-position-card__metric > span { color: var(--text-faint); font-size: .74rem; }
  .pt-mobile-position-card__metric :is(strong, b) { color: var(--text); }
  /* Value and result stand right of the name; their labels are the place itself (like a portfolio list). */
  .pt-mobile-position-card__metric:nth-child(2) { grid-area: value; text-align: right; }
  .pt-mobile-position-card__metric:nth-child(2) > span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .pt-mobile-position-card__metric:nth-child(2) > strong { display: block; font-size: 1.12rem; font-weight: 700; white-space: nowrap; }
  .pt-mobile-position-card__metric--result { grid-area: result; display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: center; gap: var(--s1); margin-top: var(--s1); }
  .pt-mobile-position-card__metric--result > span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .pt-mobile-position-card__metric--result > strong > .pt-trend { font-size: .86rem; white-space: nowrap; }
  .pt-mobile-position-card__metric--result > small { font-size: .78rem; font-weight: 600; }
  /* Average purchase price and current price as two tiles (the r337 price metric moves into them). */
  .pt-mobile-position-card__metric:first-child { display: none; }
  .pt-mobile-position-card__facts { grid-area: facts; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s2); margin-top: var(--s3); }
  .pt-mobile-position-card__facts > div { display: grid; gap: 2px; min-width: 0; padding: var(--s2) var(--s3); border: 1px solid var(--pt-line); border-radius: var(--radius-control); background: var(--pt-tile); }
  .pt-mobile-position-card__facts span { color: var(--text-faint); font-size: .72rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
  .pt-mobile-position-card__facts b { overflow: hidden; color: var(--text); font-size: .94rem; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
  .pt-mobile-position-card__share { grid-area: share; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--s2); margin: var(--s3) 0 var(--s1); padding: var(--s3) 0 var(--s2); border-top: 1px solid var(--pt-line); }
  .pt-mobile-position-card__share > span { color: var(--text-faint); font-size: .74rem; }
  .pt-mobile-position-card__share > b { color: var(--text); font-size: .86rem; font-weight: 600; }
  .pt-mobile-position-card__share > .pt-share-meter { margin-top: 0; }
  .pt-mobile-position-card > .pt-position-status { grid-area: status; margin: var(--s3) 0 var(--s1); }
  .pt-mobile-position-card > .pt-steuer-prefill { grid-area: panel; }
  /* Cash has no price line and no result; without price source only the holding and the reason stay. */
  .pt-mobile-position-card--cash > .pt-mobile-position-card__summary > :is(.pt-mobile-position-card__metric:first-child, .pt-mobile-position-card__metric--result) { display: none; }
  .pt-mobile-position-card--unpriced > .pt-mobile-position-card__summary > .pt-mobile-position-card__metric { display: none; }
  /* Cash details would only repeat the value and list empty market figures. */
  .pt-mobile-position-card--cash > :is(.pt-mobile-position-card__toggle, .pt-mobile-position-card__details) { display: none; }
  .pt-mobile-position-card__toggle { grid-area: toggle; display: inline-flex; align-items: center; gap: var(--s2); align-self: center; justify-self: start; min-height: var(--touch-target); padding: var(--s2) 0; border: 0; background: transparent; color: var(--accent-text); font-weight: 600; text-align: left; }
  /* A gold chevron that turns when the details are open. */
  .pt-mobile-position-card__toggle::after { content: ''; width: 7px; height: 7px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: translateY(-2px) rotate(45deg); transition: transform var(--motion-base) var(--ease-standard); }
  .pt-mobile-position-card__toggle[aria-expanded="true"]::after { transform: translateY(2px) rotate(-135deg); }
  .pt-mobile-position-card__details { grid-area: details; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s2); margin: var(--s2) calc(-1 * var(--s3)) 0; padding: var(--s3); border-top: 1px solid var(--pt-line); background: var(--pt-tile); }
  /* The opened details read as the same quiet tiles (label above value); the share stands above already. */
  .pt-mobile-position-card__detail-row { display: grid; gap: 2px; align-content: start; min-width: 0; padding: var(--s2) var(--s3); border: 1px solid var(--pt-line); border-radius: var(--radius-control); background: var(--pt-card); }
  .pt-mobile-position-card__detail-row > span { color: var(--text-faint); font-size: .72rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
  .pt-mobile-position-card__detail-row > strong { color: var(--text); font-size: .9rem; font-weight: 700; }
  .pt-mobile-position-card__detail-row:nth-last-child(2) { display: none; }
  .pt-mobile-position-card__detail-row--breakeven { grid-column: 1 / -1; }
  .pt-mobile-position-card__detail-row--breakeven .pt-breakeven { justify-self: start; }
  .pt-mobile-position-card__details > .pt-mobile-position-card__thesis { grid-column: 1 / -1; }
  .pt-source { padding: 6px 14px 12px; }
  .pt-chart { margin: 8px 12px; padding: 12px 6px; }
  .pt-chart-layout { grid-template-columns: minmax(0, 1fr); justify-items: center; }
  .pt-legend--columns { grid-template-columns: minmax(0, 1fr); gap: 8px 0; width: 100%; }
  .pt-facts, .pt-plus-section { margin: 0 12px 12px; padding: 6px; }
  .pt-facts { grid-template-columns: minmax(0, 1fr); }
  .pt-fact { padding: 12px; }
  .pt-plus-unlock-summary { flex-direction: column; align-items: stretch; }
  .pt-watchlist-block-inner { padding: 4px 12px 14px; }
  .pt-wl-row { grid-template-columns:minmax(0,1fr);grid-template-areas:"asset" "price" "targets" "note" "actions"; }

  .pt-card--journal { padding: 10px; }
  .pt-transactions-head { padding: 14px; }
  .pt-transactions-head__layout, .pt-transactions-head__status-actions { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .pt-journal-zone-head { flex-wrap: wrap; padding: 0 10px 14px; }
  .pt-journal-history-toolbar { grid-template-columns: minmax(0, 1fr); padding: 14px 10px 8px; }
  .pt-journal-history-filter-select { display: block; }
  .pt-journal-history-filters { display: none; }
  .pt-journal-list { padding: 8px 6px 14px; }
  .pt-journal-row { padding: 12px; }
  /* r337 phone card: two metric tiles per line, the last one across; note as its own box. */
  .pt-journal-row__metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pt-journal-row:not(.pt-journal-row--swap-group) .pt-journal-row__metrics > :last-child { grid-column: 1 / -1; }
  .pt-journal-row__metrics b { white-space: normal; overflow-wrap: anywhere; }
  .pt-journal-note { padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius-control); background: var(--pt-card); }
  .pt-journal-swap-grid { grid-template-columns: minmax(0, 1fr); }
  .pt-journal-form { padding: 0 6px 18px; }
  .pt-journal-asset-search { grid-column: 1 / -1; }
  .pt-journal-composer-type { flex-basis: 100%; }
  .pt-linked-swap-mode { grid-template-columns: minmax(0, 1fr); }
  .pt-journal-form-actions .pt-btn--primary { width: 100%; min-width: 0; }
  .pt-journal-edit-panel { margin-inline: 6px; padding: 12px; }
  .pt-data-workspace, .pt-data-origin-card__grid { grid-template-columns: minmax(0, 1fr); }
  .pt-data-danger { flex-direction: column; align-items: stretch; }
  .pt-modal { padding: 0; place-items: stretch; }
  .pt-modal-card { width: 100%; max-height: 100dvh; min-height: 100dvh; border-radius: inherit; }
  .pt-modal-head { padding: 16px 16px 14px; }
  .pt-form { padding: 16px; }
  .pt-value-groups, .pt-value-origin-grid, .pt-journal-body { grid-template-columns: minmax(0, 1fr); }
  .pt-modal-actions--3 { grid-template-columns: minmax(0, 1fr); }
  .pt-journal-toggle { flex-direction: column; align-items: stretch; }
  .pt-entry-mode { display: grid; width: 100%; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pt-guided { padding: 14px; }
  .pt-guided-summary > div { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .pt-guided-nav { position: sticky; bottom: 0; z-index: 2; margin: 16px -16px -16px; padding: 12px 16px; border-top: 1px solid var(--border); background: var(--surface); }
  .pt-guided-nav .pt-btn { flex: 1 1 0; min-width: 0; }
  .pt-cash-flow .pt-input-mode-grid { grid-template-columns: minmax(0, 1fr); }
 }
 @media (max-width: 420px) {
  .pt-section-head { padding-left: 54px; }
  .pt-w1-icon { left: 12px; }
 }
 /* Paket AQ: below 370 px the ring gets 20 px more width, so its label keeps the v18 floor (AP _v2: 9.7 px at 360). */
 @media (max-width: 370px) {
  .pt-hero { padding-inline: var(--s2); }
  .pt-hero__flank { flex: 0 0 64px; min-width: 64px; }
 }

 /* r337: inactive areas and closed layers stay hidden even where a rule above sets a display value. */
 .tool-page--portfolio-tracker [hidden][hidden] { display: none; }
 /* r43 (Prüfliste B2): empty positions and watchlist show their r337 tool symbol (own rounded surface) above the text. */
 .tool-page--portfolio-tracker .pt-empty-state::before { content: ''; display: block; width: var(--s7); height: var(--s7); margin-bottom: var(--s3); background: url('/assets/r4x-canva-icons/portfolio-tracker.v988.svg') center / contain no-repeat; }
 .tool-page--portfolio-tracker .pt-empty-state--watchlist::before { background-image: url('/assets/r4x-canva-icons/web3-monitor.v932.svg'); }
}
