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

/* ── Shared Lab chrome (same as assess) ── */
    .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;text-decoration:none; }
    .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; }
    .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); }
    .assess-topbar { display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap; }
    .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); }
    .token-chip img { width:14px;height:14px;border-radius:50%; }

    /* ── PR hero banner (same as declare/assess) ── */
    .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-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; }
    .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); }

    /* ── Assess card (same as lab_assess) ── */
    .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; }

    /* 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);object-fit:cover; }
    .ac-hero .tk-info .nm { font-size:16px;font-weight:700;letter-spacing:-0.01em;line-height:1.1;color:var(--text);text-decoration:none; }
    .ac-hero .tk-info .meta { font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted);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 (same as assess) */
    .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; }
    @media (max-width:880px) { .votes2.split-2 { 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 .q { font-size:13px;font-weight:600;color:var(--text);letter-spacing:-0.005em; }

    /* Segmented control (same as assess) */
    .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 .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(--brand-amber);color:var(--text);box-shadow:0 0 0 3px rgba(255,180,0,0.10); }
    .seg-track.fluid .chart-ctrl-btn.active::before { background:var(--brand-amber);box-shadow:0 0 0 2px rgba(255,180,0,0.22); }

    /* Similar signals card */
    .rv-similar-list { display:flex;flex-direction:column;gap:4px; }
    .rv-similar-item { width:100%;display:flex;align-items:center;gap:6px;font-size:11px;font-family:inherit;color:var(--text-secondary);padding:5px 4px;border:none;border-bottom:1px solid var(--gray-50);background:none;text-align:left;cursor:pointer;border-radius:6px;transition:background 0.12s; }
    .rv-similar-item:last-child { border-bottom:none; }
    .rv-similar-item:hover { background:var(--gray-50); }
    .rv-sim-title { flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
    .rv-sim-badge { font-family:var(--font-mono);font-size:7px;padding:1px 5px;border-radius:4px;background:var(--gray-100);color:var(--text-muted);flex-shrink:0;text-transform:uppercase; }
    .rv-sim-conf { font-family:var(--font-mono);font-size:9px;color:var(--text-muted);flex-shrink:0; }
    .rv-sim-arrow { color:var(--text-muted);flex-shrink:0; }
    .rv-empty-sim { font-size:10px;color:var(--text-muted);text-align:center;padding:8px 0; }

    /* Similar-declaration preview popup (compressed event-card details) */
    .rv-pv-panel { width:min(540px,100%); }
    .rv-pv-card { padding:30px 28px 24px; }
    /* padding-right reserves space for the absolute .rfpp-close (× at top:16 right:16)
       so the right-aligned status badge (ACTIVE) doesn't slide underneath it. */
    .rv-pv-head { display:flex;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap;padding-right:40px; }
    .rv-pv-logo { width:22px;height:22px;border-radius:50%; }
    .rv-pv-sym { font-family:var(--font-mono);font-size:13px;font-weight:700;color:var(--text); }
    .rv-pv-type { font-family:var(--font-mono);font-size:8px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;padding:3px 9px;border-radius:6px; }
    .rv-pv-status { font-family:var(--font-mono);font-size:8px;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;color:var(--text-muted);background:var(--gray-100);padding:3px 8px;border-radius:6px;margin-left:auto; }
    .rv-pv-title { font-size:17px;font-weight:700;letter-spacing:-0.02em;line-height:1.25;margin-bottom:8px; }
    .rv-pv-desc { font-size:12.5px;line-height:1.55;color:var(--text-secondary);margin:0 0 12px; }
    .rv-pv-meta { font-family:var(--font-mono);font-size:10px;color:var(--text-muted);margin-bottom:18px; }
    .rv-pv-open { display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--brand-amber-strong,#B07A00);text-decoration:none;padding:9px 15px;border:1px solid var(--gray-100);border-radius:9px;transition:background 0.12s,border-color 0.12s; }
    .rv-pv-open:hover { background:rgba(255,180,0,0.08);border-color:rgba(255,180,0,0.35); }

    /* Review progress bar */
    .rv-bar { height:6px;background:var(--gray-100);border-radius:3px;position:relative;margin-top:4px; }
    .rv-bar-fill { height:100%;border-radius:3px;background:linear-gradient(90deg,rgba(255,180,0,0.1) 0%,#FFB400 100%);position:relative;transition:width 0.3s; }
    .rv-bar-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); }
    .rv-progress-label { display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:9px;color:var(--text-muted);margin-top:6px; }

    /* Footer */
    .foot2 { padding:12px 22px;display:flex;align-items:center;gap:10px; }
    .foot2 .spacer { flex:1; }
    .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; }

    /* Success overlay (same as assess 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); }

    /* 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(--brand-amber);color:var(--text); }
    .ac.is-voted .vote-card .vh::after { content:"\2713 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; }
    .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:flex;align-items:center;justify-content:center; }
    .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; }

    /* Carousel */
    .rv-card-wrap { display:none; }
    .rv-card-wrap.is-current { display:block; }

    /* Responsive */
    @media (max-width:640px) {
      .pr-card-body { padding:20px 16px 18px; }
      .pr-title { font-size:15px; }
      .pr-sub { font-size:11px; }
      .pr-stats { flex-wrap:wrap;gap:10px;padding:8px 12px; }
      .votes2.split-2 { grid-template-columns:1fr; }
      .decl2-subj { font-size:16px; }
    }

/* extracted free inline styles (css-verify) */
.lrf-1 { margin-left:2px;opacity:0.5;font-size:12px;color:inherit;text-decoration:none; }
.lrf-2 { position:relative; }
.lrf-3 { flex-shrink:0; }

/* Rumor "materialize by" deadline callout (shown instead of a price chart — no move yet) */
.rv-rumor-by { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-top:10px; padding:10px 12px; border:1px solid rgba(217,70,239,0.22); background:rgba(217,70,239,0.06); border-radius:var(--radius-md); }
.rv-rumor-k { font-family:var(--font-mono); font-size:8px; font-weight:700; letter-spacing:0.1em; text-transform:uppercase; color:var(--text-muted); }
.rv-rumor-v { font-family:var(--font-mono); font-size:12px; font-weight:700; color:var(--text); }
.rv-rumor-hint { flex-basis:100%; font-size:10.5px; color:var(--text-secondary); line-height:1.4; }
.lrf-4 { overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.lrf-5 { font-size:11px; }

/* 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; }

/* ── Action 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; } }

/* 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); }


/* Validation checklist — curator ticks each declared detail; Approve gated until all checked. */
.rv-check { display:flex; flex-direction:column; gap:6px; margin:10px 0 12px; }
.rv-chk-row { display:flex; align-items:flex-start; gap:8px; font-size:12px; color:var(--text-secondary); cursor:pointer; line-height:1.4; }
.rv-chk-row input { margin-top:1px; accent-color:#16a34a; flex-shrink:0; cursor:pointer; }
.rv-check-hint { font-family:var(--font-mono); font-size:9px; color:var(--text-muted); margin-top:6px; }
.rv-check-hint[data-tick="1"] { color:#16a34a; }
.seg-track .chart-ctrl-btn:disabled { opacity:0.4; cursor:not-allowed; }
body.dark .rv-chk-row input { accent-color:#22c55e; }
body.dark .rv-check-hint[data-tick="1"] { color:#22c55e; }
