/* lab_assess.html — page-specific styles */

.lab-sec { display:flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:var(--text-muted);margin:0 0 14px;padding-left:12px; }
    .lab-sec::before { content:"";width:6px;height:6px;border-radius:50%;background:#FFB400;flex-shrink:0; }
    .lab-sec .lab-sec-line { flex:1;height:1px;background:var(--border-card); }

    .lab-tabs { display:flex;gap:4px;padding:3px;background:var(--gray-100);border-radius:8px;width:fit-content; }
    .lab-tab { font-family:var(--font-mono);font-size:10.5px;font-weight:600;padding:6px 16px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--text-muted);cursor:pointer;transition:background 0.18s,color 0.15s,box-shadow 0.18s; }
    .lab-tab:hover { color:var(--text);background:rgba(0,0,0,0.04); }
    .lab-tab.active { background:var(--surface);color:var(--text);border-color:rgba(14,14,14,0.08);box-shadow:0 1px 3px rgba(14,14,14,0.06),0 0 0 1px rgba(255,180,0,0.18) inset; }
    .lab-panel { display:none;opacity:0;transition:opacity 0.2s ease; }
    .lab-panel.active { display:block;opacity:1; }

    .lab-card { background:var(--surface);border:1px solid var(--border-card);border-radius:var(--radius);padding:16px 18px; }
    .lab-card-head { display:flex;justify-content:space-between;align-items:center;padding-bottom:10px;margin-bottom:12px;border-bottom:1px solid var(--gray-100); }
    .lab-card-label { font-family:var(--font-mono);font-size:9px;letter-spacing:0.12em;text-transform:uppercase;color:var(--text-muted);font-weight:600; }

    /* ── Top bar: tabs + token filter ── */
    .assess-topbar { display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap; }
    .tab-count {
      display:inline-flex;align-items:center;justify-content:center;
      min-width:16px;height:16px;padding:0 5px;
      border-radius:999px;background:var(--gray-200);
      font-family:var(--font-mono);font-size:9px;font-weight:700;
      color:var(--text-muted);margin-left:3px;letter-spacing:-0.02em;
    }
    .lab-tab.active .tab-count { background:rgba(255,180,0,0.18);color:var(--brand-amber-strong); }

    /* ── Token filter chips ── */
    .token-chip {
      display:inline-flex;align-items:center;gap:4px;padding:3px 8px 3px 4px;
      border-radius:var(--radius-full);background:rgba(255,180,0,0.12);
      font-size:10px;font-weight:600;color:var(--brand-amber-strong);cursor:default;
    }
    .token-chip img { width:14px;height:14px;border-radius:50%; }
    .token-chip .chip-x { cursor:pointer;margin-left:2px;opacity:0.5;font-size:12px; }
    .token-chip .chip-x:hover { opacity:1; }

    /* ── Assess card root (V2 — left-aligned hero · vote sub-cards) ── */
    .assess-main { margin-bottom:16px;position:relative; }
    .ac { background:var(--surface);border:1px solid var(--border-card);border-radius:var(--radius);overflow:hidden;position:relative; }

    /* ── Counter strip ── */
    .ac-counter {
      display:flex;align-items:center;justify-content:space-between;
      padding:12px 18px;border-bottom:1px solid var(--gray-100);
      font-family:var(--font-mono);font-size:10.5px;
    }
    .ac-counter .pos { color:var(--text);font-weight:600;letter-spacing:0.02em; }
    .ac-counter .pos b { font-weight:700; }
    .ac-counter .pos .total { color:var(--text-muted);font-weight:500; }
    .ac-counter .progress-dots { display:inline-flex;gap:3px;flex:1;justify-content:center;padding:0 24px; }
    .ac-counter .progress-dots span { width:14px;height:3px;border-radius:2px;background:var(--gray-200); }
    .ac-counter .progress-dots span.done { background:var(--gray-400); }
    .ac-counter .progress-dots span.now { background:var(--brand-amber); }
    .ac-counter .rem { color:var(--brand-amber-strong);font-weight:700;letter-spacing:0.04em;text-transform:uppercase; }

    /* ── Hero strip ── */
    .ac-hero {
      padding:18px 22px;display:flex;align-items:center;gap:14px;
      border-bottom:1px solid var(--gray-100);
    }
    .ac-hero .tk-logo { width:36px;height:36px;border-radius:999px;flex-shrink:0;box-shadow:0 0 0 1px var(--gray-200); }
    .ac-hero .tk-info .nm { font-size:16px;font-weight:700;letter-spacing:-0.01em;line-height:1.1; }
    .ac-hero .tk-info .meta { font-family:var(--font-mono);font-size:9.5px;font-weight:400;color:var(--text-muted);letter-spacing:0.04em;margin-top:2px; }
    .ac-hero .badges { margin-left:auto;display:flex;align-items:center;gap:8px; }

    /* ── Declaration body ── */
    .decl2 { padding:20px 22px 22px;border-bottom:1px solid var(--gray-100); }
    .decl2-row {
      display:flex;align-items:center;gap:10px;margin-bottom:12px;
      font-family:var(--font-mono);font-size:9px;font-weight:600;letter-spacing:0.12em;
      text-transform:uppercase;color:var(--text-muted);
    }
    .decl2-row .live { display:inline-flex;align-items:center;gap:5px;color:var(--brand-amber-strong); }
    .decl2-row .live::before { content:"";width:5px;height:5px;border-radius:999px;background:var(--brand-amber);box-shadow:0 0 0 2px rgba(255,180,0,0.2); }
    .decl2-row .sep { color:var(--gray-300); }
    .decl2-subj { font-size:20px;font-weight:700;letter-spacing:-0.02em;line-height:1.2;color:var(--text);margin-bottom:8px; }
    .decl2-subj .pill {
      display:inline;vertical-align:baseline;padding:0 2px;
      -webkit-box-decoration-break:clone;box-decoration-break:clone;
      color:var(--text);background:transparent;
      box-shadow:inset 0 -10px 0 var(--brand-amber-bg);
    }
    .decl2-desc { font-size:12.5px;color:var(--text-secondary);line-height:1.55; }

    /* ── Vote sub-cards ── */
    .votes2 {
      padding:18px 22px;display:grid;gap:12px;
      background:var(--gray-50);border-bottom:1px solid var(--gray-100);
    }
    /* darker vote panel in dark theme (matches the lab declare card #0e101a) */
    body.dark .votes2 { background:#0e101a; }
    .votes2.split-2 { grid-template-columns:1fr 1fr; }
    .votes2.split-3 { grid-template-columns:minmax(180px,0.7fr) 1fr 1.6fr; }
    @media (max-width:880px) { .votes2.split-2,.votes2.split-3 { grid-template-columns:1fr; } }
    .vote-card {
      background:var(--surface);border:1px solid var(--gray-200);
      border-radius:var(--radius);padding:14px 16px;
      display:flex;flex-direction:column;gap:12px;
    }
    .vote-card .vh { display:flex;align-items:center;gap:8px; }
    .vote-card .vh .qn {
      width:18px;height:18px;border-radius:6px;
      background:var(--gray-100);border:1px solid var(--gray-200);
      display:inline-flex;align-items:center;justify-content:center;
      font-family:var(--font-mono);font-size:10px;font-weight:700;color:var(--text-secondary);
    }
    .vote-card .vh .lbl {
      font-family:var(--font-mono);font-size:9px;font-weight:600;letter-spacing:0.12em;
      text-transform:uppercase;color:var(--text-muted);
    }
    .vote-card .vh .v {
      margin-left:auto;font-family:var(--font-mono);font-size:16px;font-weight:700;
      color:var(--brand-amber-strong);letter-spacing:-0.02em;
    }
    .vote-card .q { font-size:13px;font-weight:600;color:var(--text);letter-spacing:-0.005em; }
    .vote-card .ticks {
      display:flex;justify-content:space-between;padding:0 2px;
      font-family:var(--font-mono);font-size:9px;color:var(--text-muted);letter-spacing:0.04em;
    }
    .vote-card .ticks.ticks-9 { font-size:8px;letter-spacing:0.02em; }

    /* ── Fluid segmented control (vote buttons) ── */
    .seg-track.fluid { display:grid;width:100%;padding:0;background:transparent;gap:8px; }
    .seg-track.fluid.s2 { grid-template-columns:repeat(2,1fr); }
    .seg-track.fluid.s3 { grid-template-columns:repeat(3,1fr); }
    .seg-track.fluid.s5 { grid-template-columns:repeat(5,1fr); }
    .seg-track.fluid .chart-ctrl-btn {
      display:inline-flex;align-items:center;justify-content:center;gap:8px;
      padding:10px 12px;font-size:12px;font-weight:600;
      background:var(--gray-50);border:1px solid var(--gray-200);border-radius:10px;
      color:var(--text);cursor:pointer;
      transition:background 0.18s,box-shadow 0.18s,color 0.15s;
    }
    .seg-track.fluid.lg .chart-ctrl-btn { padding:13px 12px;font-size:13px;border-radius:12px; }
    .seg-track.fluid .chart-ctrl-btn:hover { background:var(--surface);border-color:var(--gray-300); }
    .seg-track.fluid .chart-ctrl-btn::before {
      content:"";width:6px;height:6px;border-radius:999px;
      background:var(--gray-300);flex-shrink:0;
      transition:background 0.15s,box-shadow 0.15s;
    }
    .seg-track.fluid .chart-ctrl-btn.active {
      background:var(--brand-amber-bg);border-color:var(--gray-200);
      color:var(--text);
    }
    .seg-track.fluid .chart-ctrl-btn.active::before {
      background:var(--brand-amber);box-shadow:0 0 0 2px rgba(255,180,0,0.22);
    }

    /* ── Validity bar (DS canon) with interactive range input ── */
    .vbar-wrap { position:relative;padding:4px 0; }
    .vbar { height:6px;background:var(--gray-100);border-radius:3px;position:relative; }
    .vbar-fill {
      height:100%;border-radius:3px;
      background:linear-gradient(90deg,rgba(255,180,0,0.1) 0%,#FFB400 100%);
      position:relative;transition:width 0.05s;
    }
    .vbar-fill::after {
      content:"";position:absolute;top:50%;right:0;
      width:8px;height:8px;border-radius:50%;background:#FFB400;
      transform:translate(50%,-50%);box-shadow:0 0 6px rgba(255,180,0,0.4);
    }
    .vbar-input {
      position:absolute;top:0;left:0;width:100%;height:100%;
      opacity:0;cursor:pointer;margin:0;z-index:1;
      -webkit-appearance:none;appearance:none;
    }

    /* ── Footer bar ── */
    .foot2 { padding:12px 22px;display:flex;align-items:center;gap:10px; }
    .foot2 .spacer { flex:1; }
    /* ── Buttons: uses .rf-btn-tiny from style.css ── */
    .rf-btn-tiny.is-icon { padding:0;width:32px;height:32px;justify-content:center; }
    /* explicit icon size — without this the svg's width attr gets squished by flex
       to ~4px (every icon button in this codebase sets svg width/height in CSS). */
    .rf-btn-tiny.is-icon svg { width:18px; height:18px; flex:none; }
    .rf-btn-tiny.is-icon:not(.no-arrow)::after { display:none; }
    /* Colour/opacity handled by the canonical disabled rule (component-colors.css /
       dark-colors.css). Keep only the interaction lock here. */
    .rf-btn-tiny.disabled { pointer-events:none; }

    /* ── Success overlay (V2) ── */
    .ac-success {
      position:absolute;inset:0;z-index:20;
      background:rgba(255,255,255,0.96);
      -webkit-backdrop-filter:blur(8px) saturate(120%);backdrop-filter:blur(8px) saturate(120%);
      display:flex;flex-direction:column;align-items:center;justify-content:center;
      gap:18px;padding:32px;
      opacity:0;pointer-events:none;transition:opacity 0.22s;border-radius:var(--radius);
    }
    .ac.is-success .ac-success { opacity:1;pointer-events:auto; }
    .ac-success-check {
      width:52px;height:52px;border-radius:999px;background:var(--brand-amber);
      display:inline-flex;align-items:center;justify-content:center;color:#0E0E0E;
      box-shadow:0 0 0 8px rgba(255,180,0,0.18),0 6px 20px rgba(255,180,0,0.32);
      animation:ckPop 0.5s cubic-bezier(.16,1.7,.3,1) both;
    }
    .ac-success-check svg { width:24px;height:24px; }
    .ac-success-check svg path { stroke-dasharray:24;stroke-dashoffset:24;animation:ckDraw 0.45s 0.16s cubic-bezier(.65,0,.45,1) forwards; }
    @keyframes ckPop { 0%{transform:scale(0.6);opacity:0;} 60%{transform:scale(1.08);opacity:1;} 100%{transform:scale(1);opacity:1;} }
    @keyframes ckDraw { to{stroke-dashoffset:0;} }
    .ac-success-msg { text-align:center;animation:msgRise 0.4s 0.24s cubic-bezier(.16,1,.3,1) both; }
    .ac-success-msg .ttl { font-size:17px;font-weight:700;letter-spacing:-0.015em;color:var(--text);margin-bottom:4px; }
    .ac-success-msg .sub { font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted);letter-spacing:0.04em; }
    @keyframes msgRise { from{transform:translateY(6px);opacity:0;} }
    .ac-success-summary { display:flex;gap:8px;flex-wrap:wrap;justify-content:center;animation:msgRise 0.4s 0.32s cubic-bezier(.16,1,.3,1) both; }
    .ac-success-summary .chip {
      display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;
      background:var(--brand-amber-bg);color:var(--text);
      font-family:var(--font-mono);font-size:11px;font-weight:700;letter-spacing:-0.005em;
    }
    .ac-success-summary .chip::before { content:"";width:5px;height:5px;border-radius:999px;background:var(--brand-amber); }
    .ac-success-cohort {
      display:flex;align-items:center;gap:8px;padding-top:16px;margin-top:4px;
      border-top:1px dashed var(--gray-200);
      font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted);
      animation:msgRise 0.4s 0.4s cubic-bezier(.16,1,.3,1) both;
    }
    .ac-success-cohort b { color:var(--green);font-weight:700; }
    .ac-success-cohort .arrow { color:var(--gray-300); }

    /* ── Already-voted state ── */
    .ac.is-voted .vote-card { pointer-events:none; }
    .ac.is-voted .vote-card .chart-ctrl-btn:not(.active) { opacity:0.35; }
    .ac.is-voted .vote-card .chart-ctrl-btn.active { background:var(--brand-amber-bg);border-color:var(--gray-200);color:var(--text); }
    .ac.is-voted .vote-card .vh::after {
      content:"✓ voted";margin-left:auto;
      font-family:var(--font-mono);font-size:9px;font-weight:700;letter-spacing:0.1em;
      text-transform:uppercase;color:var(--green);
      background:var(--green-bg);padding:2px 8px;border-radius:999px;
    }
    .ac.is-voted .vote-card .vh .v { display:none; }
    .ac.is-voted .vbar { opacity:0.65; }
    .voted-banner {
      display:none;align-items:center;gap:10px;padding:10px 18px;
      background:var(--brand-amber-bg);border-bottom:1px solid rgba(255,180,0,0.32);
    }
    .ac.is-voted .voted-banner { display:flex; }
    .voted-banner .ic {
      width:18px;height:18px;border-radius:999px;background:var(--brand-amber);color:#0E0E0E;
      display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;
    }
    .voted-banner .ic svg { width:10px;height:10px; }
    .voted-banner .msg { font-size:12.5px;color:var(--text);font-weight:600; }
    .voted-banner .when { font-family:var(--font-mono);font-size:10.5px;color:var(--brand-amber-strong);letter-spacing:0.04em; }
    .voted-banner .spacer { flex:1; }
    .voted-banner .edit-link {
      font-family:var(--font-body);font-size:11px;font-weight:600;
      color:var(--brand-amber-strong);background:transparent;border:none;
      padding:4px 10px;border-radius:6px;cursor:pointer;
    }
    .voted-banner .edit-link:hover { background:rgba(255,180,0,0.18); }

    /* ── Chart container ── */
    /* .ac-chart / .ac-chart-loading / .ac-chart-msg moved to lab-shared.css (shared with Validate) */

    /* ── Chart labels ── */
    .chart-label-layer { position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;overflow:hidden;z-index:4; }
    .chart-leaders-svg { position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible; }
    .chart-dot { position:absolute;width:6px;height:6px;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;box-shadow:0 0 0 2px var(--surface),0 0 4px rgba(0,0,0,0.1);z-index:5; }
    .chart-dot-end { position:absolute;width:6px;height:6px;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;border:2px solid;box-sizing:content-box;background:var(--surface);box-shadow:0 0 4px rgba(0,0,0,0.1);z-index:5; }
    .chart-pill { position:absolute;transform:translate(-50%,0);padding:2px 7px;border-radius:4px;font-size:10px;font-weight:600;line-height:1.4;font-family:var(--font-mono);white-space:nowrap;pointer-events:auto;cursor:default;transition:transform 0.15s ease; }
    .chart-pill:hover { transform:translate(-50%,-1px);z-index:20; }
    .pill-neutral { background:var(--gray-100);color:var(--text-muted);border:1px solid var(--gray-200);box-shadow:0 1px 3px rgba(0,0,0,0.04); }
    .pill-up { background:rgba(16,185,129,0.08);color:#059669;border:1px solid rgba(16,185,129,0.2);box-shadow:0 1px 3px rgba(16,185,129,0.06); }
    .pill-down { background:rgba(239,68,68,0.08);color:#dc2626;border:1px solid rgba(239,68,68,0.15);box-shadow:0 1px 3px rgba(239,68,68,0.06); }

    /* ── Tags (DS canon) ── */
    .tag { display:inline-flex;align-items:center;background:var(--gray-100);color:var(--text-secondary);padding:2px 9px;border-radius:999px;font-size:10px;font-weight:500;line-height:1.5;white-space:nowrap; }
    .tag.partnership { background:rgba(22,163,74,0.08);color:var(--green); }
    .tag.utility { background:var(--brand-amber-bg);color:var(--text); }
    .tag.category { background:rgba(59,130,246,0.10);color:var(--text); }
    .phase { font-family:var(--font-mono);font-size:9px;font-weight:700;padding:2px 9px;border-radius:999px;letter-spacing:0.06em;line-height:1.6;display:inline-flex;align-items:center; }
    .phase.heat { background:var(--brand-amber-bg);color:var(--brand-amber); }

    /* ── Token filter checkbox ── */
    .pn-cb {
      width:14px;height:14px;border-radius:4px;border:1.5px solid var(--gray-300);
      display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;
      color:transparent;transition:all 0.15s;
    }
    .pn-cb.is-on { background:#FFB400;border-color:#FFB400;color:#fff; }

    /* ── Trending section ── */
    .trending-grid { display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:16px; }
    @media (max-width:900px) { .trending-grid { grid-template-columns:1fr; } }
    .trending-item { display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--gray-50);font-size:11px; }
    .assess-btn.is-voted svg { transition:transform 0.18s cubic-bezier(.16,1,.3,1); }
    .assess-btn.is-voted:hover svg { transform:translateX(3px); }
    .trending-item:last-child { border-bottom:none; }
    .trending-votes { font-family:var(--font-mono);font-size:9px;color:var(--text-muted);margin-left:auto;flex-shrink:0; }

    /* ── Token search ── */
    .lab-dd-search { width:100%;padding:6px 10px;font-size:11px;border:1px solid var(--border-card);border-radius:var(--radius-full);background:var(--surface);color:var(--text);outline:none;transition:border-color 0.15s,box-shadow 0.15s; }
    .lab-dd-search:focus { border-color:#FFB400; }
    .lab-token-result { display:flex;align-items:center;gap:10px;width:100%; }
    .lab-token-result img { width:28px;height:28px;border-radius:50%;flex-shrink:0;box-shadow:0 0 0 1px var(--gray-100); }
    .lab-token-result .ltr-info { flex:1;min-width:0; }
    .lab-token-result .ltr-name { font-size:13px;font-weight:600;color:var(--text); }
    .lab-token-result .ltr-sym { font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted); }
    .lab-token-result .ltr-right { text-align:right;flex-shrink:0;margin-left:auto; }
    .lab-token-result .ltr-price { font-family:var(--font-mono);font-size:13px;font-weight:700;color:var(--text); }
    .lab-token-result .ltr-mcap { font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted); }

    /* ── PR card (Pattern Recognition style hero) ── */
    .pr-card-wrap { position:relative;background:var(--surface);border:1px solid var(--border-card);border-radius:var(--radius);overflow:hidden;isolation:isolate; }
    .pr-card-bg { position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden; }
    .pr-scan-grid { position:absolute;inset:0;width:100%;height:100%;opacity:0.85; }
    .pr-overlay { position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,0.4),rgba(255,255,255,0.85) 60%,rgba(255,255,255,0.92));backdrop-filter:blur(0.5px); }
    .pr-card-head { position:relative;z-index:1;padding:10px 16px;border-bottom:1px solid var(--gray-100);background:var(--surface);display:flex;align-items:center; }
    .pr-status { display:inline-flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:8.5px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--text-muted);padding:2px 8px;background:var(--gray-100);border-radius:999px;line-height:1.5; }
    .pr-pulse-dot { width:5px;height:5px;border-radius:50%;background:#FFB400;animation:prDotPulse 1.8s ease-in-out infinite; }
    @keyframes prDotPulse { 0%,100% { box-shadow:0 0 0 0 rgba(255,180,0,0.55); } 50% { box-shadow:0 0 0 4px rgba(255,180,0,0); } }
    .pr-card-body { position:relative;z-index:1;padding:28px 24px 22px;text-align:center; }
    .pr-ai-badge { position:relative;width:44px;height:44px;border-radius:12px;margin:0 auto 12px;background:#FFB400;color:white;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px rgba(255,180,0,0.35); }
    .pr-ai-badge svg { width:18px;height:18px;position:relative;z-index:1;stroke:white; }
    .pr-ai-pulse,.pr-ai-pulse--2 { position:absolute;inset:0;border-radius:12px;border:1.5px solid rgba(255,180,0,0.4);opacity:0;animation:prAiPulse 2.4s cubic-bezier(.16,1,.3,1) infinite; }
    .pr-ai-pulse--2 { animation-delay:1.2s; }
    @keyframes prAiPulse { 0% { transform:scale(1);opacity:0.55; } 80%,100% { transform:scale(1.7);opacity:0; } }
    .pr-title { font-size:18px;font-weight:700;color:var(--text);letter-spacing:-0.02em;margin-bottom:6px;line-height:1.2; }
    .pr-sub { font-size:12px;color:var(--text-muted);line-height:1.55;max-width:460px;margin:0 auto 18px; }
    .pr-stats { display:inline-flex;align-items:center;gap:18px;padding:10px 16px;background:var(--surface);border:1px solid var(--gray-200);border-radius:999px; }
    .pr-stat { display:flex;flex-direction:column;align-items:center;gap:3px; }
    .pr-stat-num { font-family:var(--font-mono);font-size:13px;font-weight:700;color:var(--text);letter-spacing:-0.02em;display:inline-flex;align-items:center;justify-content:center;min-height:14px; }
    .pr-stat-label { font-family:var(--font-mono);font-size:8.5px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:var(--text-muted); }
    .pr-stat-divider { width:1px;height:24px;background:var(--gray-200); }
    .pr-skel { display:inline-block;height:10px;border-radius:999px;background:linear-gradient(90deg,var(--gray-100) 0%,var(--gray-200) 50%,var(--gray-100) 100%);background-size:200% 100%;animation:prSkel 1.6s ease-in-out infinite; }
    @keyframes prSkel { 0% { background-position:200% 0; } 100% { background-position:-200% 0; } }

    /* ── Responsive ── */
    @media (max-width:768px) {
      .trending-grid { grid-template-columns:1fr 1fr; }
    }
    @media (max-width:640px) {
      /* Tabs */
      .lab-tabs { gap:2px;padding:2px; }
      .lab-tab { padding:5px 10px;font-size:10px; }
      .tab-count { font-size:8px;min-width:14px;height:14px;padding:0 4px; }

      /* Assess card */
      .ac-hero { padding:14px 16px;gap:10px; }
      .ac-hero .tk-info .nm { font-size:14px; }
      .ac-hero .badges { margin-left:auto; }
      .ac-counter { padding:10px 16px;font-size:10px; }
      .ac-counter .progress-dots { padding:0 12px; }
      .ac-counter .progress-dots span { width:10px;height:2px; }
      .decl2 { padding:16px; }
      .decl2-subj { font-size:16px;margin-bottom:6px; }
      .decl2-desc { font-size:11.5px; }

      /* Vote cards: stack vertically */
      .votes2.split-2, .votes2.split-3 { grid-template-columns:1fr;gap:10px; }
      .votes2 { padding:14px 16px; }
      .vote-card { padding:12px 14px; }
      .vote-card .q { font-size:12px; }
      .seg-track.fluid .chart-ctrl-btn { padding:10px 8px;font-size:11px;min-height:44px; }
      .ticks span { font-size:8px; }

      /* Chart responsive height — see lab-shared.css */

      /* Footer — allow wrap so the cost/points strip (.ax-econ, width:100% below
         520px) drops to its own row and the Skip / Submit vote buttons stop being
         pushed off the right edge by the spacer. */
      .foot2 { padding:12px 16px; flex-wrap:wrap; row-gap:8px; }

      /* Trending */
      .trending-grid { grid-template-columns:1fr; }
      .trending-item { gap:6px;padding:5px 0;font-size:10px; }

      /* Hero banner */
      .pr-card-body { padding:20px 16px 18px; }
      .pr-title { font-size:16px; }
      .pr-sub { font-size:11px; }
      .pr-stats { gap:12px;padding:8px 12px; }

      /* Topbar */
      .assess-topbar { flex-direction:column;align-items:stretch;gap:8px; }
      .assess-topbar .lab-tabs { width:100%; }
      .assess-topbar .lab-tab { flex:1;text-align:center; }

      /* Voted banner */
      .voted-banner { padding:8px 14px;gap:8px; }
      .voted-banner .msg { font-size:11px; }
      .voted-banner .when { font-size:9px; }
      .voted-banner .edit-link { font-size:9px;padding:3px 8px; }
    }
    @media (max-width:480px) {
      .ac-hero { flex-wrap:wrap; }
      .pr-stats { gap:8px;padding:6px 10px; }
      .pr-stat-divider { width:100%;height:1px; }
      #assess-bottom-bar { flex-direction:column;gap:10px;align-items:flex-start !important; }
    }

/* extracted free inline styles (css-verify) */
.laf-1 { margin-left:2px; }
.laf-2 { font-weight:400;font-size:10px;text-transform:none;letter-spacing:0; }
.laf-3 { color:var(--brand-amber-strong); }
.laf-4 { margin-top:12px; }
.laf-5 { flex-shrink:0; }

/* no amber focus outline/glow on the segment toggles (persists after click) */
.seg-track .chart-ctrl-btn:focus, .seg-track .chart-ctrl-btn:focus-visible { outline:none !important; box-shadow:none !important; }

/* ── Assess-bar economy chips: cost / instant reward / retrospective (TBD) ── */
.ax-econ { display:inline-flex; align-items:center; gap:14px; padding:0 2px; font-family:var(--font-mono); }
.ax-econ-i { display:inline-flex; align-items:center; gap:6px; }
.ax-econ-k { font-size:8.5px; font-weight:700; letter-spacing:0.12em; text-transform:uppercase; color:var(--text-muted); }
.ax-econ-v { font-size:11.5px; font-weight:700; color:var(--text); white-space:nowrap; }
.ax-econ-pos { color:#FFB400; }
.ax-econ-tbd { color:var(--text-muted); font-weight:600; letter-spacing:0.04em; }
@media (max-width: 720px) { .ax-econ { gap:10px; } .ax-econ-k { display:none; } }
@media (max-width: 520px) { .ax-econ { order:-1; width:100%; justify-content:space-between; margin-bottom:4px; } }

/* Dark-theme fix: the success overlay hardcoded a light background, so its themed
   near-white title/chips were invisible against it in dark mode. */
body.dark .ac-success { background: rgba(19,20,21,0.96); }

/* ── Read-only focused assess card (settled / closed / in-validation) ──
   Reached via Trending "View" or any ?event= deep link to a non-votable signal.
   Shows revealed consensus + your-vote-vs-consensus + the actual reward earned. */
.ac.is-readonly { opacity: 1; }
.ro-logo { width:36px; height:36px; border-radius:999px; box-shadow:0 0 0 1px var(--gray-200); object-fit:cover; flex-shrink:0; }
.ro-nm { text-decoration:none; color:var(--text); }
.ro-declrow { justify-content:space-between; }
.ro-assessors { font-family:var(--font-mono); font-size:9px; color:var(--text-muted); }
.ro-st-ok { color:#16a34a; font-weight:700; }
.ro-st-muted { color:var(--text-muted); font-weight:600; }
.ro-st-bad { color:#dc2626; font-weight:600; }

.ro-consensus { margin:14px 0 4px; padding:14px 16px; border:1px solid var(--gray-100); border-radius:var(--radius-md); background:var(--gray-50); }
.ro-row { display:flex; align-items:center; justify-content:space-between; margin:0 0 6px; }
.ro-row:last-child { margin-bottom:0; }
.ro-k { font-family:var(--font-mono); font-size:10px; letter-spacing:0.04em; color:var(--text-secondary); display:inline-flex; align-items:center; gap:6px; }
.ro-v { font-family:var(--font-mono); font-size:11px; font-weight:700; color:var(--text); }
.ro-v-big { font-size:15px; color:var(--brand-amber-strong); }
.ro-delta { color:var(--text-muted); font-weight:600; font-size:9px; }
.ro-missed .ro-k { color:var(--text-muted); }
.ro-dot { width:8px; height:8px; border-radius:999px; display:inline-block; }
.ro-dot-mine { background:var(--text); }

/* consensus bar with a marker for the viewer's own vote */
.ro-bar { position:relative; height:8px; border-radius:999px; background:var(--gray-200); margin:8px 0 12px; overflow:visible; }
.ro-bar.has-mine { margin:28px 0 30px; }   /* room for the "Your assessment" label above + value below */
.ro-bar-fill { height:100%; border-radius:999px; background:#FFB400; width:0; }
.ro-bar-mine { position:absolute; top:-3px; width:3px; height:14px; border-radius:2px; background:var(--text); box-shadow:0 0 0 2px var(--card-bg, #fff); left:0; }
.ro-mine-top, .ro-mine-bot { position:absolute; left:50%; transform:translateX(-50%); white-space:nowrap; font-family:var(--font-mono); }
.ro-mine-top { bottom:16px; font-size:8px; font-weight:600; letter-spacing:0.06em; text-transform:uppercase; color:var(--text-muted); }
.ro-mine-bot { top:16px; font-size:10px; font-weight:700; color:var(--text); }
.ro-dim { margin-bottom:6px; }
.ro-dim:last-child { margin-bottom:0; }
.ro-trust { margin-top:12px; padding-top:10px; border-top:1px dashed var(--gray-200); font-size:10.5px; color:var(--text-secondary); line-height:1.4; }
.ro-trust b { color:var(--text); }
body.dark .ro-trust { border-top-color:rgba(255,255,255,0.1); }

.ro-note { margin:14px 0 4px; padding:13px 16px; border:1px dashed var(--gray-200); border-radius:var(--radius-md); font-size:12px; color:var(--text-secondary); line-height:1.5; }
.ro-note a { color:var(--brand-amber-strong); text-decoration:none; font-weight:600; white-space:nowrap; }
.ro-viewonly { font-family:var(--font-mono); font-size:9px; color:var(--text-muted); }

.trending-empty { font-size:10px; color:var(--text-muted); padding:8px 0; font-style:italic; }

body.dark .ro-consensus { background:rgba(255,255,255,0.03); border-color:rgba(255,255,255,0.08); }
body.dark .ro-bar { background:rgba(255,255,255,0.1); }
body.dark .ro-bar-mine { background:#fff; box-shadow:0 0 0 2px rgba(19,20,21,0.96); }
body.dark .ro-dot-mine { background:#fff; }
body.dark .ro-note { border-color:rgba(255,255,255,0.12); }
body.dark .ro-st-ok { color:#22c55e; }
body.dark .ro-st-bad { color:#f87171; }

/* Activity-feed status filter (All / Actionable / Awaiting / Settled). */
.lab-feed-filter { margin-bottom: 10px; }
.lab-feed-row.is-hidden { display: none; }
.lab-feed-none { padding: 14px; text-align: center; font-size: 11px; color: var(--text-muted); }
.lab-feed-none.is-hidden { display: none; }

/* Read-only settled card v2: prominent reward summary + per-dimension question/points. */
.ro-reward { margin:14px 0 0; padding:14px 18px; background:rgba(255,180,0,0.08); border:1px solid rgba(255,180,0,0.22);
  border-radius:var(--radius-md); display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px; }
.ro-reward-main { display:flex; align-items:baseline; gap:10px; }
.ro-reward-k { font-family:var(--font-mono); font-size:9px; font-weight:600; letter-spacing:0.12em; text-transform:uppercase; color:var(--text-muted); }
.ro-reward-v { font-family:var(--font-mono); font-size:22px; font-weight:800; color:var(--brand-amber-strong); letter-spacing:-0.02em; }
.ro-reward-sub { display:flex; flex-wrap:wrap; gap:6px; }
.ro-chip { font-family:var(--font-mono); font-size:10px; font-weight:600; padding:3px 9px; border-radius:var(--radius-full);
  background:var(--surface); border:1px solid var(--gray-200); color:var(--text-secondary); }
.ro-trust-chip b { font-weight:800; }
.ro-trust-chip.ro-up { color:#16a34a; border-color:rgba(22,163,74,0.3); }
.ro-trust-chip.ro-down { color:#dc2626; border-color:rgba(220,38,38,0.3); }
.ro-trust-chip.ro-flat { color:var(--text-muted); }
.ro-dim-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:2px; }
.ro-dim-label { font-family:var(--font-mono); font-size:11px; font-weight:700; letter-spacing:0.04em; text-transform:uppercase; color:var(--text); display:flex; flex-direction:column; gap:2px; }
.ro-dim-q { font-family:var(--font-body); font-size:11px; font-weight:400; letter-spacing:0; text-transform:none; color:var(--text-muted); }
.ro-dim-right { display:flex; align-items:baseline; gap:10px; flex-shrink:0; }
.ro-dim-pts { font-family:var(--font-mono); font-size:12px; font-weight:800; color:#16a34a; }
body.dark .ro-reward { background:rgba(255,180,0,0.1); border-color:rgba(255,180,0,0.28); }
body.dark .ro-chip { background:rgba(255,255,255,0.04); border-color:rgba(255,255,255,0.1); }
body.dark .ro-dim-pts { color:#22c55e; }

/* Strip stage filter (To assess / Awaiting / Settled) — browse a type across lifecycle stages. */
.assess-stage { display:inline-flex; gap:4px; padding:3px; background:var(--gray-100); border-radius:8px; flex-wrap:wrap; }
.assess-stage .chart-ctrl-btn { font-family:var(--font-mono); font-size:10px; font-weight:600; padding:6px 12px; }
body.dark .assess-stage { background:rgba(255,255,255,0.05); }

/* Per-dimension reward derivation (shows the formula with numbers). */
.ro-deriv { font-family:var(--font-mono); font-size:9.5px; color:var(--text-muted); margin:1px 0 3px; line-height:1.4; }
.ro-deriv b { color:var(--text-secondary); }

/* Activity-table rules (.lab-activity-*/.lat-*) moved to lab-shared.css — now shared
   with the leaderboard's "Your Recent Activity" table. */

/* ── Filters popover (Assess strip) — stage + mine-only + token in one panel ── */
.assess-filters .rf-dd-trigger { display: inline-flex; align-items: center; gap: 6px; }
.aff-funnel { flex-shrink: 0; opacity: 0.7; }
/* Total items in the current stage (+filters), across all type tabs. */
.assess-filter-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 16px; height: 16px; padding: 0 5px; border-radius: 999px; background: rgba(255, 180, 0, 0.18); color: var(--brand-amber-strong); font-family: var(--font-mono); font-size: 9px; font-weight: 700; }
/* Two-class selector beats the base .rf-dd-panel (padding:0; overflow:hidden) from components.css. */
.rf-dd-panel.assess-filters-panel { right: 0; width: 264px; max-width: calc(100vw - 32px); padding: 14px; max-height: min(72vh, 460px); overflow-y: auto; display: flex; flex-direction: column; gap: 16px; }
.aff-sec { display: flex; flex-direction: column; gap: 8px; }
.aff-label { font-family: var(--font-mono); font-size: 8.5px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-muted); }
/* Stage as a clean segmented control (gray track like .lab-tabs). */
.assess-filters-panel .assess-stage { display: flex; gap: 3px; padding: 3px; background: var(--gray-100); border-radius: 9px; }
.assess-filters-panel .assess-stage .chart-ctrl-btn { flex: 1; padding: 6px 4px; font-size: 10.5px; }
.aff-part.is-disabled { opacity: 0.4; pointer-events: none; }
.aff-chips { display: flex; flex-wrap: wrap; gap: 4px; }
.aff-chips:empty { display: none; }
.assess-filters-panel .lab-dd-search { width: 100%; }
.assess-filters-panel .rf-dd-items { max-height: 170px; padding: 0; }

/* ── Contribute lists: robust row layout + mobile stacking ──
   (.lac-* base classes live in inline-extracted.css with no responsive rules, so the
   Contribute grid stayed 2-up on mobile and long titles collided with the badge/votes.
   Two-class selectors below win on specificity regardless of file load order.) */
.trending-grid.lac-13 .trending-item { gap: 8px; }
.trending-grid.lac-13 .trending-item .lac-16 { flex-shrink: 0; }
.trending-grid.lac-13 .trending-item .lac-17 { flex-shrink: 0; }
.trending-grid.lac-13 .trending-item .lac-18 { flex: 1 1 auto; min-width: 0; }   /* title truncates */
.trending-grid.lac-13 .trending-item .lac-19 { flex-shrink: 0; }
.trending-grid.lac-13 .trending-item .rf-btn-tiny { flex-shrink: 0; }
@media (max-width: 760px) { .trending-grid.lac-13 { grid-template-columns: 1fr; } }
.tr-type-badge { font-family: var(--font-mono); font-size: 8px; padding: 1px 6px; border-radius: var(--radius-full); margin-left: auto; white-space: nowrap; flex-shrink: 0; }
/* Extra top gap when a section title follows the bottom bar (no margin between them otherwise). */
.lab-sec.lab-sec-top { margin-top: 30px; }
