/* Shared CRM layout: all selectors stay inside this component. */
.fx-member-ltv{--ltv-page:var(--bg);--ltv-card:var(--card);--ltv-text:var(--text);--ltv-muted:var(--text-sub);--ltv-border:var(--border);--ltv-accent:var(--primary);--ltv-on-accent:var(--card);--ltv-soft:var(--bg);--ltv-font:inherit;--ltv-mono:monospace;--ltv-control:4px;--ltv-radius:6px;--ltv-sheet:10px;--ltv-gap:16px;--ltv-pad:24px;--ltv-focus:var(--primary);--ltv-scrim:rgba(0,0,0,.6);color:var(--ltv-text);font-family:var(--ltv-font);font-size:14px;line-height:1.6;max-width:1440px;margin:auto;padding:var(--ltv-pad);box-sizing:border-box}
.fx-member-ltv *{box-sizing:border-box}
.fx-member-ltv :is(h1,h2,h3,p){margin:0 0 var(--space-3,8px)}
.fx-member-ltv h1{font-size:30px;line-height:1.3}
.fx-member-ltv h2{font-size:21px}
.fx-member-ltv h3{font-size:18px}
.fx-member-ltv small{display:block;font-size:12px;color:var(--ltv-muted);line-height:1.6;overflow-wrap:anywhere}
.fx-member-ltv .ltv-header{display:flex;align-items:start;justify-content:space-between;gap:var(--ltv-gap);margin-bottom:var(--ltv-gap)}
.fx-member-ltv .ltv-eyebrow{font-size:12px;font-weight:700;color:var(--ltv-muted)}
.fx-member-ltv .ltv-button{display:inline-flex;align-items:center;justify-content:center;min-height:var(--tap-min,48px);padding:var(--space-3,8px) var(--space-5,16px);border:1px solid var(--ltv-border);border-radius:var(--ltv-control);background:var(--ltv-card);color:var(--ltv-text);font:inherit;cursor:pointer;white-space:nowrap}
.fx-member-ltv .ltv-button:hover{border-color:var(--ltv-accent)}
.fx-member-ltv .ltv-button.is-primary{background:var(--ltv-accent);border-color:var(--ltv-accent);color:var(--ltv-on-accent);font-weight:700}
.fx-member-ltv :is(button,input,select,textarea):focus-visible{outline:2px solid var(--ltv-focus);outline-offset:3px}
.fx-member-ltv button:disabled{opacity:.5;cursor:default}
.fx-member-ltv :is(.ltv-nav,.ltv-switches){display:flex;gap:var(--space-3,8px);flex-wrap:wrap;margin:var(--ltv-gap) 0}
.fx-member-ltv [aria-current="page"],.fx-member-ltv [aria-pressed="true"]{font-weight:700;border-color:var(--ltv-accent);box-shadow:inset 0 -2px var(--ltv-accent)}
.fx-member-ltv .ltv-filters{display:grid;grid-template-columns:repeat(6,minmax(120px,1fr)) auto;gap:var(--space-4,12px);align-items:end;background:var(--ltv-card);border:1px solid var(--ltv-border);border-radius:var(--ltv-radius);padding:var(--ltv-gap)}
.fx-member-ltv label{display:flex;flex-direction:column;gap:var(--space-2,4px);font-size:12px;font-weight:600}
.fx-member-ltv :is(input,select,textarea){min-height:var(--tap-min,48px);width:100%;min-width:0;background:var(--ltv-card);color:var(--ltv-text);border:1px solid var(--ltv-border);border-radius:var(--ltv-control);padding:var(--space-3,8px);font:inherit;font-size:14px}
.fx-member-ltv textarea{resize:vertical}
.fx-member-ltv :is(.ltv-note,.ltv-meta){font-size:12px;color:var(--ltv-muted);margin:var(--space-4,12px) 0}
.fx-member-ltv .ltv-note{padding:var(--ltv-gap);border-left:3px solid var(--ltv-accent);background:var(--ltv-soft)}
.fx-member-ltv .ltv-sources{display:flex;gap:var(--ltv-gap);flex-wrap:wrap;margin-top:var(--ltv-gap)}
.fx-member-ltv .ltv-sources article{flex:1;min-width:200px;border:1px solid var(--ltv-border);border-radius:var(--ltv-radius);padding:var(--space-4,12px);background:var(--ltv-card)}
.fx-member-ltv .ltv-badge{display:inline-block;padding:var(--space-1,2px) var(--space-3,8px);border:1px solid var(--ltv-border);border-radius:var(--ltv-control);font-size:11px;line-height:1.6;font-weight:600;margin-left:var(--space-3,8px);background:var(--ltv-soft);color:var(--ltv-text)}
.fx-member-ltv .ltv-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--ltv-gap);margin:var(--ltv-gap) 0}
.fx-member-ltv .ltv-kpis article{padding:var(--ltv-pad);border:1px solid var(--ltv-border);border-radius:var(--ltv-radius);background:var(--ltv-card)}
.fx-member-ltv .ltv-kpis article>span{color:var(--ltv-muted)}
.fx-member-ltv .ltv-kpis strong{display:block;font-family:var(--ltv-mono);font-size:25px;line-height:1.5;overflow-wrap:anywhere;margin:var(--space-3,8px) 0}
.fx-member-ltv .ltv-panel{margin:var(--ltv-gap) 0;padding:var(--ltv-pad);border:1px solid var(--ltv-border);border-radius:var(--ltv-radius);background:var(--ltv-card)}
.fx-member-ltv .ltv-table-wrap{overflow:auto;max-width:100%;border:1px solid var(--ltv-border);border-radius:var(--ltv-radius);background:var(--ltv-card)}
.fx-member-ltv table{width:100%;border-collapse:collapse;font-size:13px}
.fx-member-ltv :is(th,td){padding:var(--space-4,12px) var(--ltv-gap);text-align:left;vertical-align:top;border-bottom:1px solid var(--ltv-border);overflow-wrap:anywhere}
.fx-member-ltv th{font-size:12px;background:var(--ltv-soft);font-weight:600}
.fx-member-ltv tbody tr:last-child :is(td,th){border-bottom:0}
.fx-member-ltv .ltv-cohorts{min-width:820px}
.fx-member-ltv .ltv-cohorts .ltv-badge{margin:var(--space-2,4px) 0}
.fx-member-ltv .ltv-cohorts td{min-width:160px}
.fx-member-ltv .ltv-empty{padding:var(--space-9,40px) var(--ltv-gap);text-align:center;border:1px solid var(--ltv-border);border-radius:var(--ltv-radius);background:var(--ltv-card)}
.fx-member-ltv .ltv-pagination{display:flex;justify-content:space-between;align-items:center;gap:var(--ltv-gap);margin-top:var(--ltv-gap)}
.fx-member-ltv .ltv-dialog{position:fixed;width:min(760px,calc(100% - 32px));max-width:760px;max-height:90dvh;margin:auto;padding:var(--ltv-pad);border:1px solid var(--ltv-border);border-radius:var(--ltv-sheet);background:var(--ltv-card);color:var(--ltv-text);overflow:auto}
.fx-member-ltv .ltv-dialog::backdrop{background:var(--ltv-scrim)}
.fx-member-ltv .ltv-consult{display:grid;gap:var(--space-4,12px);margin-top:var(--ltv-pad)}
.fx-member-ltv .ltv-conflict p{white-space:pre-wrap}
.fx-member-ltv .ltv-dialog td:nth-child(2){white-space:nowrap;font-family:var(--ltv-mono)}
@media(max-width:1100px){.fx-member-ltv .ltv-filters{grid-template-columns:repeat(3,minmax(0,1fr))}.fx-member-ltv .ltv-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.fx-member-ltv{padding:var(--space-4,12px)}.fx-member-ltv .ltv-header{flex-wrap:wrap}.fx-member-ltv .ltv-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.fx-member-ltv .ltv-kpis{grid-template-columns:1fr}.fx-member-ltv .ltv-kpis article{padding:var(--ltv-gap)}.fx-member-ltv .ltv-panel{padding:var(--space-4,12px)}.fx-member-ltv .ltv-members thead{display:none}.fx-member-ltv .ltv-members :is(tbody,tr,td){display:block;width:100%}.fx-member-ltv .ltv-members tr{padding:var(--space-4,12px);border-bottom:1px solid var(--ltv-border)}.fx-member-ltv .ltv-members td{padding:var(--space-2,4px) 0;border:0}.fx-member-ltv .ltv-members td[data-label]::before{content:attr(data-label);display:inline-block;min-width:90px;color:var(--ltv-muted);font-size:12px}.fx-member-ltv .ltv-members td small{margin-left:90px}.fx-member-ltv .ltv-dialog{width:calc(100% - 16px);padding:var(--ltv-gap)}}
/* The LTV form owns the server-authorized branch selection for this screen. */
#page-dashboard:has(.fx-member-ltv) #branch-selector { display: none !important; }

/* Shared CRM sections stay inside the CRM surface in either operating mode. */
.fx-crm-nav{display:flex;flex-wrap:wrap;gap:var(--space-3,8px);margin-bottom:var(--space-5,16px)}
.fx-crm-nav button{min-height:calc(var(--space-7,24px)*2);padding:var(--space-3,8px) var(--space-5,16px);border:1px solid var(--ltv-border,var(--border));border-radius:var(--ltv-control,4px);background:var(--ltv-card,var(--card));color:var(--ltv-text,var(--text));font:inherit;cursor:pointer}
.fx-crm-nav button[aria-current="page"]{border-color:var(--ltv-accent,var(--primary));box-shadow:inset 0 -2px var(--ltv-accent,var(--primary));font-weight:700}
.fx-crm-nav button:focus-visible{outline:2px solid var(--ltv-focus,var(--primary));outline-offset:3px}
aside>.fx-crm-nav{grid-column:1/-1;flex-direction:column;margin-bottom:0}
@media(max-width:900px){aside>.fx-crm-nav{flex-direction:row}aside>.fx-crm-nav button{flex:1}}
/* CRM 섹션 공통 틀 — CRM 홈(출입 패턴 분석)과 같은 자리: 왼쪽 메뉴 카드, 오른쪽 화면. 회원 LTV·상담 관리·오늘의 액션·회원 360·만료 관리·메시지 큐가 같이 쓴다.
   Be:Move 브랜드는 같은 요소의 bm-access-* 클래스로 CRM 홈과 똑같이 그려지고(brands/bemove/theme.css), 아래는 그 밖의 브랜드 기본 모양이다. */
.fx-crm-layout{display:grid;grid-template-columns:190px minmax(0,1fr);gap:var(--space-5,16px);align-items:start;margin-top:var(--space-5,16px)}
.fx-crm-side{display:grid;gap:var(--space-1,4px);padding:var(--space-4,12px);border:1px solid var(--ltv-border,var(--border));border-radius:var(--ltv-radius,8px);background:var(--ltv-card,var(--card))}
.fx-crm-side-title{padding:var(--space-2,6px) var(--space-3,8px) var(--space-4,12px);font-size:20px;font-weight:700;letter-spacing:.02em;color:var(--ltv-text,var(--text))}
.fx-crm-side>.fx-crm-nav{display:grid;gap:var(--space-1,4px);margin-bottom:0}
.fx-crm-side>.fx-crm-nav button{min-height:var(--tap-min,44px);padding:0 var(--space-3,8px);border:1px solid transparent;border-radius:var(--ltv-control,4px);background:transparent;color:var(--ltv-muted,var(--text-sub));font-weight:700;text-align:left;box-shadow:none}
.fx-crm-side>.fx-crm-nav button:hover,.fx-crm-side>.fx-crm-nav button[aria-current="page"]{background:color-mix(in srgb,var(--ltv-accent,var(--primary)) 12%,transparent);color:var(--ltv-accent,var(--primary));border-color:color-mix(in srgb,var(--ltv-accent,var(--primary)) 35%,transparent);box-shadow:none}
.fx-crm-main{min-width:0}
@media(max-width:900px){.fx-crm-layout{grid-template-columns:1fr}.fx-crm-side{grid-template-columns:repeat(3,minmax(0,1fr));padding:var(--space-2,6px)}.fx-crm-side-title{grid-column:1/-1;padding:var(--space-2,6px) var(--space-3,8px)}.fx-crm-side>.fx-crm-nav{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr))}.fx-crm-side>.fx-crm-nav button{padding:0 var(--space-2,6px);text-align:center;font-size:12px}}
