/* Lead Review — Project Detail (2026-10-02, third layout: the QualifAI design
   system). The card keeps the page's own head (title · PERIOD · RANGE, like
   Telesales Performance); inside it the v2 components — capQKpi cards, the
   intel panel for the AI, lv2Panel / lv2HBars / lv2Strip / lv2-tbl in a bento.
   Tokens come from assets/lv2.css (#lrv-section is in the token list); the
   Project Detail root itself is untouched. */
#lrv-range .tsp-lbl{font-size:10px;color:#64748B;font-weight:700;letter-spacing:.5px}
#lrv-range .tsp-gap{width:6px}
#lrv-range input[type=date]{font-size:11px;padding:4px 6px;border:1px solid #E2E8F3;border-radius:8px;color:#475569}

.lrv-q{padding:16px 18px 18px;background:#FCFDFF;border-top:1px solid var(--lv-border-soft)}
.lv2-kpis.lrv-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
.lrv-bento{margin-bottom:0}

/* The v2 reveal is driven by an observer that only runs on the unit pages; a
   class-driven reveal here would leave the panels at opacity 0. Keyframe. */
#lrv-section .lv2-rv,#lrv-ai-campaign .lv2-rv{opacity:1;transform:none;animation:lrvRise var(--lv-slow) var(--lv-ease) both;animation-delay:var(--d,0ms)}
@keyframes lrvRise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
/* Same for the bar growth (.lv2-grow waits for .is-in from that observer). */
#lrv-section .lv2-grow i,#lrv-ai-campaign .lv2-grow i{transform:none;animation:lrvGrow 800ms var(--lv-ease) both;animation-delay:var(--d,0ms);transform-origin:left}
@keyframes lrvGrow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media (prefers-reduced-motion:reduce){#lrv-section .lv2-rv,#lrv-section .lv2-grow i,#lrv-ai-campaign .lv2-rv{animation:none}}

/* AI (intel panel) */
.lrv-ai__state{font-size:13px;color:var(--lv-body);display:flex;align-items:center;gap:8px;flex-wrap:wrap;line-height:1.5}
.lrv-spin{width:14px;height:14px;border-radius:50%;border:2px solid #DBEAFE;border-top-color:var(--lv-primary);animation:lrvSpin .8s linear infinite;flex:none;display:inline-block}
@keyframes lrvSpin{to{transform:rotate(360deg)}}
/* AI review — Project Detail → Campaign (2026-10-17, fourth cut). MKT Agents'
   parts (mkaAv, .mka-btn, lgc-seg in assets/lv2.css) in a compact frame: one
   head (Seoul's photo, "AI Review by Seoul", the verdict under the title),
   three boxed columns of equal height, the evidence with both panes stacked in
   one grid cell so a tab switch never changes the height, and evidence cards
   on a subgrid so their parts line up. One rhythm with the design system's
   filter rows: 14px between rows, 14px above and below the tab row. */
#lrv-ai-campaign{margin-bottom:20px;--mka-line:#DCE3EC}
html[data-theme="dark"] #lrv-ai-campaign{--mka-line:#303034}
/* lv2Still() freezes every keyframe under .lv2-still; the spinner must keep turning. */
#lrv-ai-campaign.lv2-still .lrv-spin{animation-duration:.8s !important}
.lrv-ai .lv2-panel__act .mka-btn svg{margin-right:2px}
.lrv-head{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:14px;align-items:center}
.lrv-head .mka-av{width:52px;height:52px}
.lrv-head__n{font-size:15px;font-weight:700;letter-spacing:-.01em;line-height:1.3;color:var(--lv-text)}
.lrv-head__act{display:flex;align-items:center;gap:12px;align-self:start}
.lrv-head__m{display:flex;align-items:center;gap:6px;font-size:11.5px;line-height:1.4;color:var(--lv-muted);white-space:nowrap}
.lrv-head__m i{font-style:normal;color:var(--lv-faint)}
/* the verdict and any state line sit under the title, beside the photo */
.lrv-verdict{margin-top:4px;font-size:16px;font-weight:800;letter-spacing:-.02em;line-height:1.35;color:var(--lv-text)}
.lrv-state{margin-top:4px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px;line-height:1.5;color:var(--lv-body)}
.lrv-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:stretch;margin-top:14px}
.lrv-box{min-width:0;display:flex;flex-direction:column;padding:14px 16px;border-radius:var(--lv-r-md);background:#fff;border:1px solid var(--mka-line)}
.lrv-box__h,.lrv-h{display:flex;align-items:center;gap:8px;min-height:22px;font-size:10.5px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--lv-muted)}
.lrv-box__h{margin-bottom:12px}
.lrv-box__b{display:flex;flex-direction:column;gap:10px;min-width:0}
.lrv-h{margin:14px 0}
.lrv-box__h em,.lrv-h em,.lrv-h--tabs button em{font-style:normal;display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--lv-soft);color:var(--lv-primary);font-size:10.5px;letter-spacing:0;text-transform:none}
.lrv-h--tabs{justify-content:flex-start}
.lrv-h--tabs .lgc-seg{text-transform:none;letter-spacing:0}
.lrv-h--tabs button{display:inline-flex;align-items:center;gap:6px}
.lrv-iss{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.lrv-iss li{display:grid;grid-template-columns:24px minmax(0,1fr);gap:10px;align-items:start}
.lrv-iss li+li{padding-top:12px;border-top:1px solid var(--lv-border-soft)}
.lrv-iss__n{display:grid;place-items:center;width:24px;height:24px;border-radius:8px;font-size:11.5px;font-weight:800;background:var(--lv-soft);color:var(--lv-primary)}
.lrv-iss__n.lrv-t-red{background:var(--lv-danger-soft);color:var(--lv-danger-ink)}.lrv-iss__n.lrv-t-amber{background:var(--lv-warning-soft);color:var(--lv-warning-ink)}.lrv-iss__n.lrv-t-green{background:var(--lv-success-soft);color:var(--lv-success-ink)}
.lrv-iss b{display:block;font-size:12.5px;font-weight:700;line-height:1.4;color:var(--lv-text)}
.lrv-iss p{margin:4px 0 0;font-size:11.5px;line-height:1.5;color:var(--lv-body)}
.lrv-iss p em{font-style:normal;font-weight:700;margin-right:6px;color:var(--lv-primary)}
.lrv-iss p em.lrv-t-red{color:var(--lv-danger-ink)}.lrv-iss p em.lrv-t-amber{color:var(--lv-warning-ink)}
.lrv-owner+.lrv-owner{padding-top:10px;border-top:1px solid var(--lv-border-soft)}
.lrv-owner__h{display:flex;align-items:center;justify-content:space-between;gap:8px}
.lrv-owner__h>span{font-size:11px;color:var(--lv-faint)}
.lrv-owner ul{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.lrv-owner li{display:grid;grid-template-columns:16px minmax(0,1fr);gap:7px;font-size:11.5px;line-height:1.5;color:var(--lv-body)}
.lrv-owner li i{display:grid;place-items:center;width:16px;height:16px;margin-top:1px;border-radius:50%;background:var(--lv-success-soft);color:var(--lv-success-ink)}
.lrv-warm__i{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:start}
.lrv-warm__i+.lrv-warm__i{padding-top:10px;border-top:1px solid var(--lv-border-soft)}
.lrv-warm__i b{display:block;font-size:12.5px;font-weight:650;line-height:1.4;color:var(--lv-text)}
.lrv-warm__i span{display:flex;gap:5px;align-items:flex-start;margin-top:3px;font-size:11.5px;line-height:1.45;color:var(--lv-muted)}
.lrv-warm__i span svg{flex:none;margin-top:3px;color:var(--lv-primary)}
/* Both evidence panes share one cell: the hidden one keeps its height. */
.lrv-evp{display:grid}
.lrv-evp>.lrv-cards{grid-area:1/1}
.lrv-evp>.lrv-cards[hidden]{display:grid;visibility:hidden}
/* block-flow (his default): the count follows the width, then the cards stretch flush right. */
.lrv-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));column-gap:10px;row-gap:10px}
.lrv-card{min-width:0;display:grid;grid-row:span 3;grid-template-rows:subgrid;row-gap:6px;padding:11px 13px;border-radius:12px;background:var(--lv-bg);border:1px solid var(--mka-line)}
.lrv-card__h{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.lrv-card__h>span{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:700;line-height:1.35;color:var(--lv-text)}
.lrv-card__q{font-size:11.5px;line-height:1.5;color:var(--lv-body)}
.lrv-card__f{padding-top:6px;border-top:1px dashed var(--mka-line);font-size:11.5px;line-height:1.45;color:var(--lv-muted)}
.lrv-card__k{display:block;margin-bottom:2px;font-size:10px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;color:var(--lv-faint)}
.lrv-card__to{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--lv-text)}
.lrv-card__to svg{color:var(--lv-primary);flex:none}
.lrv-dot{flex:none;width:7px;height:7px;border-radius:50%;background:var(--lv-faint)}
.lrv-dot.lrv-t-red{background:var(--lv-danger)}.lrv-dot.lrv-t-amber{background:var(--lv-warning)}.lrv-dot.lrv-t-green{background:var(--lv-success)}.lrv-dot.lrv-t-sky{background:#38BDF8}
/* MD() emits <i>/<b> for the model's *emphasis* — inline, inside text only. */
.lrv-ai :is(.lrv-iss b,.lrv-iss p,.lrv-card__q,.lrv-card__f>div,.lrv-verdict,.lrv-owner li span,.lrv-warm__i b,.lrv-warm__i span) :is(i,b){display:inline;margin:0;font-size:inherit;line-height:inherit;letter-spacing:inherit}
.lrv-ai :is(.lrv-iss p,.lrv-card__q,.lrv-verdict) i{font-style:italic;color:var(--lv-text)}
html[data-theme="dark"] .lrv-ai .lrv-box{background:#18181B}
html[data-theme="dark"] .lrv-ai .lrv-card{background:#141416}
@media (max-width:1200px){.lrv-cols{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.lrv-cols>.lrv-box:first-child{grid-column:1/-1}}
@media (max-width:900px){.lrv-cols{grid-template-columns:minmax(0,1fr)}.lrv-head{grid-template-columns:52px minmax(0,1fr)}.lrv-head__act{grid-column:1/-1;flex-wrap:wrap}}

/* Panels */
.lrv-chk{border-bottom:1px solid var(--lv-border-soft);padding:9px 0}
.lrv-chk:last-child{border-bottom:0}
.lrv-chk summary{list-style:none;display:flex;align-items:center;gap:10px;cursor:pointer;font-size:12.5px;color:var(--lv-body);line-height:1.35}
.lrv-chk summary::-webkit-details-marker{display:none}
.lrv-chk summary b{flex:none;min-width:32px;height:24px;padding:0 7px;border-radius:8px;display:grid;place-items:center;font-size:12.5px;font-weight:800;background:#F1F5F9;color:var(--lv-muted)}
.lrv-chk summary span{flex:1}
.lrv-chk summary:after{content:'›';color:#CBD5E1;font-size:16px;transition:transform var(--lv-fast) var(--lv-ease)}
.lrv-chk[open] summary:after{transform:rotate(90deg)}
.lrv-chk.lrv-t-red summary b{background:var(--lv-danger-soft);color:var(--lv-danger-ink)}
.lrv-chk.lrv-t-amber summary b{background:var(--lv-warning-soft);color:var(--lv-warning-ink)}
.lrv-ids{display:flex;flex-wrap:wrap;gap:4px;margin:9px 0 2px 42px}
.lrv-id{display:inline-flex;align-items:center;height:20px;padding:0 6px;border:0;border-radius:6px;background:var(--lv-soft);color:var(--lv-primary);font-size:11px;font-weight:700;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;flex:none;cursor:pointer;transition:background var(--lv-fast) var(--lv-ease),color var(--lv-fast) var(--lv-ease)}
.lrv-id:hover{background:var(--lv-primary);color:#fff}
.lrv-id.is-static{background:#F1F5F9;color:var(--lv-muted);cursor:default}
.lrv-ok{font-size:12.5px;color:var(--lv-success-ink)}
.lrv-adscroll{max-height:none}
/* Tables follow the lv2-tbl standard (2026-10-08, his check "same width and
   rata tengah"): fixed layout, the name column left, every measured column the
   same width and centred; a narrow screen scrolls sideways, never squeezes. */
.lrv-ads-tbl{table-layout:fixed;min-width:960px}
.lrv-ads-tbl th:first-child,.lrv-ads-tbl td:first-child{width:34%;overflow:hidden;text-overflow:ellipsis}
/* Tag corrections are sentences, not measurements: the change and the reason
   read left, like the cases beside them — centring a sentence is not the
   standard's intent. Lead id and change keep fixed widths so rows line up. */
.lrv-fix-tbl{table-layout:fixed}
.lrv-fix-tbl td{white-space:normal;vertical-align:top}
.lrv-fix-tbl td:not(:first-child){text-align:left}
.lrv-fix-tbl td:nth-child(1){width:96px}
.lrv-fix-tbl td:nth-child(2){width:300px}
.lrv-link{border:0;background:none;padding:0;color:var(--lv-primary);font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.lrv-bad{color:var(--lv-danger-ink) !important;font-weight:700}
.lrv-good{color:var(--lv-success-ink) !important;font-weight:700}
.lrv-muted{color:var(--lv-faint)}
.lv2-hbars small{color:var(--lv-faint);font-weight:600}
@media (max-width:1280px){.lv2-kpis.lrv-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:1100px){.lrv-aigrid{grid-template-columns:1fr}.lrv-acts{grid-template-columns:1fr}.lrv-bento>.lv2-c4{grid-column:span 12}}

/* SOP panel (2026-10-08): a check with nothing to fix stays visible, green. */
#lrv-section .lrv-chk--zero{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--lv-muted);line-height:1.35}
#lrv-section .lrv-chk--zero b{flex:none;min-width:32px;height:24px;padding:0 7px;border-radius:8px;display:grid;place-items:center;font-size:12.5px;font-weight:800;background:#ECFDF5;color:#15803D}
#lrv-section .lrv-sop-note{margin-top:10px;font-size:11.5px;line-height:1.45}
