/* 올댓벤처스 어드민 — 플랫 괘선 스타일 (design-tokens-v2 기반, 그림자 없음) */

:root{
  /* 색 토큰 */
  --navy:#14356B; --navy-hover:#0D2450; --navy-deep:#0A1A38;
  --cyan-mid:#0A9BD8; --cyan-light:#45E6F5;
  --ink:#1F2328; --body:#3C4149; --label:#5B6470; --muted:#6B7280; --light:#8A9097;
  --bg-app:#F6F7F9; --surface:#FFFFFF; --surface-sub:#F8F9FB; --thead:#FBFCFD;
  --border:#DFE3E8; --border-input:#C9CCD1; --hairline:#EEF0F2; --rule-strong:#1F2328;
  --tint-navy:#EEF2F8; --on-navy:#FFFFFF; --on-navy-sub:#C8D3E6; --on-navy-label:#8FA3C4;
  /* 상태 토큰 */
  --st-db-bg:#EEF1F5; --st-db-fg:#5B6470;
  --st-dm-bg:#EEF2F8; --st-dm-fg:#14356B;
  --st-contact-bg:#EAF6FD; --st-contact-fg:#0B6FA4;
  --st-progress-bg:#DCE7F7; --st-progress-fg:#0D2450;
  --st-done-bg:#EAF6EC; --st-done-fg:#1B7A3D;
  --st-noreply-bg:#FBF2DC; --st-noreply-fg:#8A5C00;
  --st-rejected-bg:#FAECEC; --st-rejected-fg:#A1272C;
  --st-submit-bg:#EFF9F1; --st-submit-border:#C4E4CC; --st-submit-fg:#1B7A3D;
  /* 형태 토큰 */
  --r:6px; --r-badge:999px;
  --rule-top:2px solid var(--navy);
  --rule-drawer:2.5px solid var(--navy);
}

*{box-sizing:border-box; margin:0; padding:0}
html,body{height:100%}
body{
  font-family:'Pretendard Variable','Pretendard',-apple-system,BlinkMacSystemFont,'Segoe UI','Malgun Gothic','Apple SD Gothic Neo',sans-serif;
  background:var(--bg-app); color:var(--ink); font-size:13px; line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
button{font:inherit; cursor:pointer; border:none; background:none; color:inherit}
button:disabled{opacity:.5; cursor:not-allowed}
input,select,textarea{font:inherit; color:var(--ink)}
a{color:var(--navy)}
.num{font-variant-numeric:tabular-nums; text-align:right}
.tnum{font-variant-numeric:tabular-nums}
.muted{color:var(--muted)}
.hidden{display:none !important}

/* ── 공용 폼 ── */
.inp{height:32px; border:1px solid var(--border-input); border-radius:var(--r); padding:0 10px; font-size:12.5px; background:#fff; width:100%}
.inp:focus,select:focus,textarea:focus{outline:2px solid var(--tint-navy); border-color:var(--navy)}
select.inp{padding:0 6px}
textarea.inp{height:auto; padding:8px 10px}

/* ── 버튼 ── */
.btn{display:inline-flex; align-items:center; gap:6px; height:32px; padding:0 13px; border-radius:var(--r); font-size:12.5px; font-weight:600; border:1px solid var(--border-input); background:var(--surface); color:var(--body); cursor:pointer}
.btn:hover{border-color:var(--navy); color:var(--navy)}
.btn.primary{height:32px; padding:0 14px; font-weight:700; background:var(--navy); color:#fff; border-color:var(--navy)}
.btn.primary:hover{background:var(--navy-hover); border-color:var(--navy-hover); color:#fff}
.btn.danger{color:var(--st-rejected-fg); border-color:var(--border)}
.btn.danger:hover{background:var(--st-rejected-bg)}
.btn.sm{height:26px; padding:0 9px; font-size:11.5px}
.abtn{height:24px; padding:0 9px; border-radius:5px; font-size:10.5px; font-weight:700; border:1px solid var(--border-input); background:var(--surface); color:var(--body); white-space:nowrap}
.abtn:hover{border-color:var(--navy); color:var(--navy)}
.abtn.result{border-color:#A9CDB2; color:var(--st-submit-fg)}
.abtn.result:hover{background:#F1F8F2; border-color:#A9CDB2; color:var(--st-submit-fg)}
.abtn.ok-btn{border-color:var(--st-submit-border); color:var(--st-done-fg)}
.abtn.rj-btn{border-color:var(--border); color:var(--st-rejected-fg)}
.link-btn{font-size:11.5px; color:var(--navy); text-decoration:underline}

/* ── 로그인 ── */
.login-wrap{min-height:100vh; display:flex; align-items:center; justify-content:center; padding:24px;
  background:linear-gradient(160deg,var(--navy-deep) 0%,var(--navy) 60%,var(--navy) 100%)}
.login-shell{display:flex; width:880px; max-width:96vw; border:1px solid rgba(255,255,255,.14); border-radius:var(--r); overflow:hidden}
.login-brand{flex:1; background:linear-gradient(155deg,var(--navy-deep) 0%,var(--navy) 50%,var(--navy) 100%);
  color:var(--on-navy); padding:44px 40px 30px; display:flex; flex-direction:column; border-right:1px solid rgba(255,255,255,.12)}
.lb-logo{display:flex; align-items:center; gap:10px; font-size:16px; font-weight:800; margin-bottom:42px}
.login-brand h2{font-size:23px; font-weight:800; line-height:1.45; letter-spacing:-.02em}
.login-brand p{margin-top:12px; font-size:12.5px; color:var(--on-navy-sub); line-height:1.75}
.lb-stats{display:flex; gap:28px; margin-top:34px}
.lb-stats b{display:block; font-size:20px; font-weight:800; font-variant-numeric:tabular-nums; letter-spacing:-.02em}
.lb-stats b i{font-style:normal; font-size:12px; font-weight:700; color:var(--on-navy-sub); margin-left:1px}
.lb-stats span{font-size:11px; color:var(--on-navy-label)}
.lb-foot{margin-top:auto; font-size:11px; color:var(--on-navy-label); letter-spacing:.03em}
.login-card{width:400px; flex:0 0 400px; background:#fff; padding:44px 36px 30px; border-top:var(--rule-top)}
.login-sub-top{font-size:18px; font-weight:800; letter-spacing:-.01em}
.login-sub{color:var(--muted); font-size:12px; margin:2px 0 26px}
.field{margin-bottom:14px}
.field label{display:block; font-size:12px; font-weight:600; color:var(--label); margin-bottom:6px}
.field input{width:100%; height:44px; border:1px solid var(--border-input); border-radius:var(--r); padding:0 14px; font-size:14px}
.field input:focus{outline:2px solid var(--tint-navy); border-color:var(--navy)}
.btn-login{width:100%; height:46px; border-radius:var(--r); background:var(--navy); color:#fff; font-size:14px; font-weight:700; margin-top:8px}
.btn-login:hover{background:var(--navy-hover)}
.login-hint{margin-top:18px; padding:11px 13px; background:var(--tint-navy); border-radius:var(--r); font-size:12px; color:var(--navy); line-height:1.6}
.login-err{margin-top:12px; font-size:12px; color:var(--st-rejected-fg); background:var(--st-rejected-bg); border-radius:var(--r); padding:9px 12px}
.login-foot{margin-top:22px; text-align:center; font-size:11px; color:var(--light)}

/* ── 앱 프레임 ── */
.app{display:flex; min-height:100vh}
.side{width:232px; flex:0 0 232px; background:var(--navy); color:var(--on-navy-sub);
  display:flex; flex-direction:column; position:sticky; top:0; height:100vh; overflow-y:auto; overflow-x:hidden}
.side::before{content:""; position:absolute; bottom:64px; left:-34px; width:250px; height:120px; opacity:.05;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 142 68'><path d='M2 62 L40 5 L58 5 L20 62 Z' fill='%23fff'/><path d='M40 5 L78 62 L96 62 L58 5 Z' fill='%23fff'/><path d='M78 62 L116 5 L134 5 L96 62 Z' fill='%23fff'/></svg>") no-repeat; pointer-events:none}
.side-brand{display:flex; align-items:center; gap:9px; padding:17px 16px 15px; flex:0 0 auto; border-bottom:1px solid rgba(255,255,255,.12)}
.side-brand b{font-size:15px; letter-spacing:-.01em; color:#fff}
.side-sec{padding:14px 10px 4px; position:relative; z-index:1}
.side-sec .cap{font-size:10px; font-weight:700; color:var(--on-navy-label); letter-spacing:.14em; padding:0 10px 7px}
.nav-item{display:flex; align-items:center; gap:9px; width:100%; padding:7px 10px; border-radius:var(--r);
  color:var(--on-navy-sub); font-size:13px; font-weight:500; text-align:left; position:relative; background:transparent}
.nav-item:hover{background:rgba(255,255,255,.07)}
.nav-item.on{background:rgba(255,255,255,.11); color:#fff; font-weight:700}
.nav-item .nav-ico{width:16px; height:16px; flex:0 0 16px; opacity:.75}
.nav-item.on .nav-ico{opacity:1}
.nav-item .cnt{margin-left:auto; font-size:10.5px; font-weight:700; color:var(--on-navy-label);
  background:rgba(255,255,255,.12); border-radius:var(--r-badge); padding:1px 8px; font-variant-numeric:tabular-nums}
.nav-item.on .cnt{color:#9FE8F5; background:rgba(69,230,245,.16); font-weight:800}
.nav-item .badge-soon{margin-left:auto; font-size:9.5px; font-weight:700; color:var(--on-navy-label);
  background:rgba(255,255,255,.12); padding:2px 7px; border-radius:var(--r-badge)}
.nav-item .dot{width:7px; height:7px; border-radius:50%; background:#F08C8C; position:absolute; right:-1px; top:7px}
.nav-item.lv2{width:calc(100% - 16px); margin-left:16px}
.nav-item.lv3{width:calc(100% - 28px); margin-left:28px}
.funnel-note{margin:6px 10px 2px 12px; font-size:10px; color:var(--on-navy-label)}
.side-user{margin-top:auto; display:flex; align-items:center; gap:10px; padding:13px 14px;
  border-top:1px solid rgba(255,255,255,.12); position:relative; z-index:1}
.side-user .avatar{width:30px; height:30px; border-radius:50%; background:rgba(255,255,255,.16); color:#fff;
  display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:700; flex:0 0 30px}
.side-user .nm{display:block; font-size:13px; font-weight:700; color:#fff}
.side-user .sub{display:block; font-size:11px; color:var(--on-navy-label)}
.side-user .out{margin-left:auto; font-size:11px; color:var(--on-navy-label); text-decoration:underline}
.main{flex:1; min-width:0; padding:18px 26px 44px; background:var(--bg-app)}
.crumb{font-size:12px; color:var(--muted); margin-bottom:4px}
.page-head{display:flex; align-items:flex-end; gap:12px; margin-bottom:13px; border-bottom:2px solid var(--navy); padding-bottom:11px}
.page-head h1{margin:0; font-size:19px; font-weight:800; letter-spacing:-.01em}
.page-head .desc{font-size:12px; color:var(--muted); padding-bottom:2px}
.page-head .actions{margin-left:auto; display:flex; gap:8px}

/* ── 상태 메시지(로딩/빈/에러) ── */
.state-box{padding:44px 20px; text-align:center; color:var(--muted); font-size:13px}
.state-box.error{color:var(--st-rejected-fg)}
.state-box .retry{margin-top:10px}
.spinner{display:inline-block; width:16px; height:16px; border:2px solid var(--border); border-top-color:var(--navy);
  border-radius:50%; animation:spin .8s linear infinite; vertical-align:-3px; margin-right:8px}
@keyframes spin{to{transform:rotate(360deg)}}

/* ── 알림 스트립 (새 제출자료) ── */
.alert-strip{display:flex; align-items:center; gap:10px; width:100%; text-align:left; background:var(--surface); border:1px solid var(--border); border-left:3px solid var(--st-submit-fg); border-radius:var(--r); padding:8px 14px; margin-bottom:10px}
.alert-strip:hover{background:#F7FBF8}
.alert-strip b{font-size:12.5px; color:#166232}
.alert-strip .as-sub{font-size:12px; color:var(--body)}
.alert-strip .as-go{margin-left:auto; font-size:12px; font-weight:700; color:var(--st-submit-fg); white-space:nowrap}

/* ── 진행 파이프라인 (C안: 이탈 내장) ── */
.pipe-card{background:var(--surface); border:1px solid var(--border); border-top:var(--rule-top); border-radius:var(--r); margin-bottom:10px}
.pipe-cap{display:flex; align-items:center; gap:8px; margin-bottom:8px}
.pipe-cap b{font-size:13px}
.pipe-cap .hint{font-size:11px; color:var(--muted)}
.pipe-cap .clear{margin-left:auto; font-size:11px; color:var(--navy); text-decoration:underline}
.cards{display:grid; grid-template-columns:repeat(5,1fr); gap:10px}
.ccard{border:1px solid var(--border); border-radius:var(--r); background:#fff; text-align:left; position:relative; cursor:pointer; overflow:hidden}
.ccard:hover{border-color:var(--border-input)}
.ccard .top{padding:8px 12px 7px; width:100%; text-align:left; display:block}
.ccard .t{font-size:10px; font-weight:700; color:var(--label); letter-spacing:.06em}
.ccard .t b{color:var(--ink); font-size:12px; margin-left:3px; letter-spacing:0}
.ccard .c{font-size:19px; font-weight:800; letter-spacing:-.02em; margin-top:1px; font-variant-numeric:tabular-nums}
.ccard .p{font-size:10px; color:var(--muted); font-weight:600; margin-left:5px}
.ccard:not(.last)::after{content:"→"; position:absolute; right:-11px; top:20px; color:var(--navy); font-weight:800; font-size:13px; z-index:2}
.ccard .sub{border-top:1px dashed var(--border); padding:5px 12px 6px; display:flex; align-items:center; gap:6px;
  font-size:10.5px; font-weight:700; width:100%; text-align:left}
.ccard .sub b{margin-left:auto; font-size:12.5px; font-weight:800; font-variant-numeric:tabular-nums}
.ccard .sub small{font-size:9px; font-weight:700; opacity:.75}
.ccard .sub.empty{color:var(--border-input); font-weight:500; cursor:default}
.ccard .sub.w{background:var(--st-noreply-bg); color:var(--st-noreply-fg)}
.ccard .sub.d{background:var(--st-rejected-bg); color:var(--st-rejected-fg)}
.ccard .sub.selx{outline:1.5px solid currentColor; outline-offset:-1.5px}
.ccard.sel{border-color:var(--navy); background:var(--tint-navy); border-top:2px solid var(--navy)}
.ccard.sel .c{color:var(--navy)}
.ccard.done .c{color:var(--st-done-fg)}

/* ── 필터 바 ── */
.filters{display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:10px}
.search{display:flex; align-items:center; gap:7px; background:var(--surface); border:1px solid var(--border-input); border-radius:var(--r); height:32px; padding:0 11px; width:270px; color:var(--light)}
.search input{border:none; outline:none; width:100%; font-size:12px; background:transparent; color:var(--ink)}
.filters select{height:32px; border:1px solid var(--border-input); border-radius:var(--r); background:var(--surface); padding:0 8px; font-size:12px; color:var(--body)}
.toggle{display:inline-flex; align-items:center; gap:7px; height:32px; padding:0 11px; background:var(--surface); border:1px solid var(--border-input); border-radius:var(--r); font-size:12px; color:var(--body); user-select:none; cursor:pointer}
.toggle .sw{width:26px; height:15px; border-radius:var(--r-badge); background:#C9CCD1; position:relative; transition:background .15s}
.toggle .sw::after{content:""; position:absolute; width:11px; height:11px; border-radius:50%; background:#fff; top:2px; left:2px; transition:left .15s}
.toggle.on{border-color:var(--st-submit-border)}
.toggle.on .sw{background:var(--navy)}
.toggle.on .sw::after{left:13px}
.filters .total{margin-left:auto; font-size:12px; color:var(--muted)}
.filters .total b{color:var(--ink); font-variant-numeric:tabular-nums}

/* ── 테이블 ── */
.tbl-card{background:var(--surface); border:1px solid var(--border); border-radius:var(--r); overflow:hidden}
.tbl-scroll{overflow-x:auto}
table.list{border-collapse:collapse; width:max-content; min-width:100%}
.list thead th{position:sticky; top:0; z-index:3; background:var(--thead); font-size:10px; font-weight:700; color:var(--label); letter-spacing:.06em; text-align:left; padding:8px 10px; border-bottom:1px solid var(--rule-strong); white-space:nowrap}
.list thead th.num{text-align:right}
.list tbody td{padding:7px 10px; border-bottom:1px solid var(--hairline); white-space:nowrap; font-size:12px; vertical-align:middle; font-variant-numeric:tabular-nums}
.list tbody tr{cursor:pointer}
.list tbody tr:hover{background:#F4F7FB}
.list tbody tr.has-sub td:first-child{box-shadow:inset 3px 0 0 var(--st-submit-fg)}
.list tbody tr.has-sub td:first-child{box-shadow:inset 3px 0 0 var(--st-submit-fg)}
td.sticky-l,th.sticky-l{position:sticky; left:0; z-index:2}
th.sticky-l{background:var(--thead); z-index:4}
.list tbody td.sticky-l{background:#fff; border-right:1px solid var(--hairline)}
.list tbody tr:hover td.sticky-l{background:var(--surface-sub)}
.list tbody tr.has-sub td:first-child{box-shadow:inset 3px 0 0 var(--st-submit-fg)}
td.sticky-r,th.sticky-r{position:sticky; right:0; z-index:2; border-left:1px solid var(--hairline)}
th.sticky-r{background:var(--thead); z-index:4}
.list tbody td.sticky-r{background:#fff}
.list tbody tr:hover td.sticky-r{background:var(--surface-sub)}
.list tbody tr.has-sub td:first-child{box-shadow:inset 3px 0 0 var(--st-submit-fg)}
.co{display:flex; align-items:center; gap:7px; font-weight:700}
.co .sub-flag{display:inline-flex; align-items:center; gap:4px; font-size:10px; font-weight:800; color:var(--st-submit-fg); background:var(--st-submit-bg); border:1px solid var(--st-submit-border); padding:1px 7px; border-radius:var(--r-badge)}
.co .sub-flag::before{content:""; width:6px; height:6px; border-radius:50%; background:var(--st-done-fg)}
.co .star{color:var(--st-noreply-fg); font-size:11px}
.addr{display:inline-block; max-width:150px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; vertical-align:bottom}
.vp{font-size:12px; color:var(--body); line-height:1.3}
.vd{font-size:10.5px; color:var(--muted); line-height:1.4}
.vd.warn{color:var(--st-noreply-fg); font-weight:700}
.vd.urgent{color:var(--st-rejected-fg); font-weight:800}
.chip{display:inline-block; font-size:11px; font-weight:700; padding:2px 8px; border-radius:var(--r-badge); white-space:nowrap}
.chip.st-db{background:var(--st-db-bg); color:var(--st-db-fg)}
.chip.st-dm_sent{background:var(--st-dm-bg); color:var(--st-dm-fg)}
.chip.st-contacting{background:var(--st-contact-bg); color:var(--st-contact-fg)}
.chip.st-in_progress{background:var(--st-progress-bg); color:var(--st-progress-fg)}
.chip.st-done{background:var(--st-done-bg); color:var(--st-done-fg)}
.chip.sub-no_reply{background:var(--st-noreply-bg); color:var(--st-noreply-fg)}
.chip.sub-rejected,.chip.sub-failed{background:var(--st-rejected-bg); color:var(--st-rejected-fg)}
.dday{font-size:11px; font-weight:800; padding:2px 8px; border-radius:var(--r); font-variant-numeric:tabular-nums}
.dday.d30{background:var(--st-rejected-bg); color:var(--st-rejected-fg)}
.dday.d90{background:var(--st-noreply-bg); color:var(--st-noreply-fg)}
.dday.d180{background:var(--st-contact-bg); color:var(--st-contact-fg)}
.refund{font-weight:800; color:var(--navy)}
.row-acts{display:flex; gap:5px}
.tbl-foot{display:flex; align-items:center; gap:6px; padding:9px 14px; font-size:12px; color:var(--muted); border-top:1px solid var(--border-input)}
.pg{display:flex; gap:4px; margin-left:auto}
.pg button{min-width:26px; height:26px; border-radius:5px; border:1px solid var(--border-input); background:var(--surface); font-size:11.5px; color:var(--body)}
.pg button.on{border-color:var(--navy); background:var(--navy); color:#fff; font-weight:700}
.footnote{margin-top:10px; font-size:11px; color:var(--muted); line-height:1.7}

/* ── 오버레이 · 모달 · 드로어 ── */
.overlay{position:fixed; inset:0; background:rgba(10,26,56,.45); z-index:300; display:flex;
  align-items:flex-start; justify-content:center; padding:40px 20px; overflow-y:auto}
.modal{background:#fff; border:1px solid var(--border); border-top:var(--rule-top); border-radius:var(--r); width:100%; overflow:hidden}
.modal-head{display:flex; align-items:center; gap:10px; padding:14px 20px; border-bottom:1px solid var(--border); flex-wrap:wrap}
.modal-head h2{font-size:16px; font-weight:800}
.modal-head .x{margin-left:auto; width:30px; height:30px; border-radius:var(--r); color:var(--muted); font-size:16px; flex:0 0 auto}
.modal-head .x:hover{background:var(--hairline)}

.drawer-wrap{position:fixed; inset:0; z-index:300; background:rgba(10,26,56,.45)}
.drawer{position:absolute; top:0; right:0; bottom:0; width:1280px; max-width:97vw; background:#fff;
  border-left:1px solid var(--border); display:flex; flex-direction:column; overflow:hidden}
.drawer .modal-head{border-bottom:var(--rule-drawer)}
.drawer-scroll{flex:1; overflow-y:auto}

/* ── 드로어: 스텝퍼/탭 ── */
.detail-stage{padding:12px 20px 4px; border-bottom:1px solid var(--hairline)}
.case-tabs{display:flex; align-items:center; gap:6px; margin-bottom:10px; flex-wrap:wrap}
.case-tab{display:inline-flex; align-items:center; gap:7px; border:1px solid var(--border); border-radius:var(--r-badge);
  padding:5px 13px; font-size:12px; font-weight:700; color:var(--body); background:#fff}
.case-tab .ct-st{font-size:10px; font-weight:700; color:var(--muted)}
.case-tab.on{border-color:var(--navy); background:var(--tint-navy); color:var(--navy)}
.case-tab.on .ct-st{color:var(--navy)}
.case-hint{margin-left:auto; font-size:10.5px; color:var(--muted)}
.mini-pipe{display:flex; align-items:center; flex-wrap:wrap; padding-bottom:10px}
.mstep{display:flex; align-items:center; gap:7px; padding:5px 10px 5px 6px}
.mstep .b{width:22px; height:22px; border-radius:50%; background:var(--hairline); color:var(--muted);
  font-size:11px; font-weight:800; display:flex; align-items:center; justify-content:center}
.mstep .t{font-size:12px; font-weight:600; color:var(--muted)}
.mstep.done .b{background:var(--st-done-fg); color:#fff}
.mstep.done .t{color:var(--body)}
.mstep.cur .b{background:var(--navy); color:#fff; outline:3px solid var(--tint-navy)}
.mstep.cur .t{color:var(--navy); font-weight:800}
.mstep:not(:last-of-type)::after{content:""; width:22px; height:1.5px; background:var(--border); margin-left:6px}
.stage-set{margin-left:auto; display:flex; gap:6px; align-items:center}
.stage-set select{height:30px; border:1px solid var(--border); border-radius:var(--r); font-size:12px; padding:0 8px; background:#fff}
.sub-flagline{font-size:11px; font-weight:700; padding:2px 9px; border-radius:var(--r-badge)}
.sub-flagline.no_reply{background:var(--st-noreply-bg); color:var(--st-noreply-fg)}
.sub-flagline.rejected,.sub-flagline.failed{background:var(--st-rejected-bg); color:var(--st-rejected-fg)}

/* ── 드로어: 본문 ── */
.detail-body{display:grid; grid-template-columns:520px 1fr; gap:0; min-height:100%}
.detail-left{padding:16px 20px 22px; border-right:1px solid var(--hairline)}
.sec-cap{display:flex; align-items:center; gap:6px; font-size:11px; font-weight:800; color:var(--label); letter-spacing:.06em; margin:18px 0 8px}
.sec-cap:first-child{margin-top:0}
.sec-cap .cap-sub{font-weight:600; color:var(--muted); letter-spacing:0}
.sec-cap .cap-act{margin-left:auto}
.info-grid{display:grid; grid-template-columns:76px 1fr; row-gap:9px; column-gap:14px; font-size:12.5px; line-height:1.55}
.info-grid dt{color:var(--muted)}
.info-grid dd{font-weight:600; word-break:break-all}
.tel{color:var(--navy); font-weight:700; text-decoration:none}
.tel:hover{text-decoration:underline}
.edit-form{border:1px solid var(--border); border-radius:var(--r); padding:12px; margin-top:4px; background:var(--surface-sub)}
.edit-form .row2{display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-bottom:8px}
.edit-form .row1{margin-bottom:8px}
.edit-form label{display:block; font-size:10.5px; font-weight:700; color:var(--label); margin-bottom:3px}
.edit-form .acts{display:flex; gap:6px; justify-content:flex-end; margin-top:4px}

.contact-card{border:1px solid var(--border); border-radius:var(--r); padding:10px 12px; margin-bottom:8px; background:#fff}
.contact-view{display:flex; align-items:center; gap:8px; font-size:12.5px; flex-wrap:wrap}
.contact-view b{font-size:13px}
.contact-view .rl{color:var(--muted); font-size:11.5px}
.contact-view .mail{color:var(--muted); font-size:11.5px}
.contact-view .ops{margin-left:auto; display:flex; gap:7px; visibility:hidden}
.contact-card:hover .contact-view .ops{visibility:visible}
.contact-view .ops button{font-size:11px; color:var(--muted)}
.contact-view .ops button:hover{color:var(--navy); text-decoration:underline}
.cc-grid{display:grid; grid-template-columns:1fr 1fr; gap:6px; margin-top:8px}
.cc-grid .inp{height:30px; font-size:12px}
.cc-acts{display:flex; gap:6px; justify-content:flex-end; margin-top:8px}
.add-dashed{width:100%; height:32px; border:1.5px dashed var(--border-input); border-radius:var(--r); color:var(--muted); font-size:12px; font-weight:600; background:none}
.add-dashed:hover{border-color:var(--navy); color:var(--navy); background:var(--tint-navy)}

/* 투자·환급 계산기 */
.calcT{width:100%; border-collapse:collapse; font-size:11px; background:#fff; border:1px solid var(--border)}
.calcT th{font-size:9.5px; font-weight:700; color:var(--label); letter-spacing:.05em; text-align:left; padding:6px 7px;
  background:var(--thead); border-bottom:1px solid var(--rule-strong); white-space:nowrap}
.calcT th.num{text-align:right}
.calcT th i{font-style:normal; font-size:8.5px; color:var(--navy); border:1px solid var(--on-navy-sub); border-radius:var(--r); padding:0 3px; margin-left:2px}
.calcT td{padding:5px 7px; border-bottom:1px solid var(--hairline); white-space:nowrap; font-variant-numeric:tabular-nums}
.calcT td input{width:64px; height:24px; border:1px solid var(--border-input); border-radius:var(--r); padding:0 6px;
  font-size:11px; text-align:right; background:var(--surface-sub); font-variant-numeric:tabular-nums}
.calcT td input:focus{outline:2px solid var(--tint-navy); border-color:var(--navy)}
.calcT .rf{color:var(--navy); font-weight:800}
.calcT tfoot td{background:var(--tint-navy); font-weight:800; border-bottom:none; padding:7px}
.calcT .del-iv{color:var(--light); font-size:12px}
.calcT .del-iv:hover{color:var(--st-rejected-fg)}
.calc-note{margin-top:7px; font-size:10px; color:var(--muted); line-height:1.6}
.calc-note b{color:var(--body)}
.iv-add{display:flex; gap:6px; margin-top:6px; align-items:center; flex-wrap:wrap}
.iv-add .inp{height:28px; font-size:11.5px}
.iv-add .y{width:70px} .iv-add .nm{width:90px; flex:1} .iv-add .amt{width:110px}

/* ── 타임라인 ── */
.detail-right{padding:16px 20px 22px; background:var(--surface-sub); display:flex; flex-direction:column; min-height:520px}
.composer{background:#fff; border:1px solid var(--border); border-radius:var(--r); padding:10px 12px}
.composer textarea{width:100%; border:none; outline:none; resize:vertical; min-height:54px; font-size:13px; background:none}
.composer .c-foot{display:flex; align-items:center; gap:8px; margin-top:6px; flex-wrap:wrap}
.ghost{display:inline-flex; align-items:center; gap:5px; font-size:11.5px; color:var(--muted); padding:4px 8px; border-radius:var(--r)}
.ghost:hover{background:var(--hairline); color:var(--body)}
.paste-hint{font-size:10.5px; color:var(--muted)}
.kbd{font-size:10px; border:1px solid var(--border); border-bottom-width:2px; border-radius:var(--r); padding:0 4px; background:#fff; color:var(--body)}
.c-foot .send{margin-left:auto}
.pending-files{display:flex; flex-wrap:wrap; gap:5px; margin-top:6px}
.file-chip{display:inline-flex; align-items:center; gap:6px; border:1px solid var(--border);
  background:var(--surface-sub); border-radius:var(--r); padding:4px 10px; font-size:11.5px; color:var(--body); font-weight:600; max-width:100%}
.file-chip .fn{overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:220px}
.file-chip .rm{color:var(--light); font-size:12px}
.file-chip .rm:hover{color:var(--st-rejected-fg)}
.file-chip.dl{cursor:pointer}
.file-chip.dl:hover{border-color:var(--navy); color:var(--navy)}
.timeline{position:relative; margin-top:14px; padding-left:38px; display:flex; flex-direction:column; gap:8px}
.timeline::before{content:""; position:absolute; left:13px; top:6px; bottom:4px; width:2px; background:var(--border)}
.tl-day{position:relative; font-size:10.5px; font-weight:800; color:var(--label); letter-spacing:.05em; margin:8px 0 -2px}
.tl-day:first-child{margin-top:0}
.tl-day::before{content:""; position:absolute; left:-28px; top:3px; width:7px; height:7px; border-radius:50%; background:var(--border-input); outline:3px solid var(--surface-sub)}
.titem{position:relative; display:block}
.titem .avatar{position:absolute; left:-38px; top:2px; width:28px; height:28px; font-size:11px; outline:3px solid var(--surface-sub)}
.titem .bubble{background:#fff; border:1px solid var(--border); border-radius:var(--r); padding:9px 12px; min-width:0}
.titem .meta{display:flex; align-items:center; gap:7px; font-size:11px; color:var(--muted); margin-bottom:3px}
.titem .meta b{color:var(--ink); font-size:12px}
.titem .meta .ops{margin-left:auto; display:flex; gap:8px; visibility:hidden}
.titem:hover .meta .ops{visibility:visible}
.titem .meta .ops button{font-size:11px; color:var(--muted)}
.titem .meta .ops button:hover{color:var(--navy); text-decoration:underline}
.titem .tbody{font-size:12.5px; color:var(--ink); white-space:pre-wrap; word-break:break-word}
.titem .files{display:flex; flex-wrap:wrap; gap:5px; margin-top:7px}
.sys-item{position:relative; display:flex; align-items:center; gap:6px; font-size:11.5px; color:var(--body); padding:2px 0; flex-wrap:wrap}
.sys-item .sys-ico{position:absolute; left:-36px; top:-1px; width:22px; height:22px; border-radius:50%; background:#fff;
  border:1.5px solid var(--border); display:flex; align-items:center; justify-content:center; font-size:10px; outline:3px solid var(--surface-sub)}
.sys-item b{font-weight:800; color:var(--ink)}
.sys-d{color:var(--muted)}
.sys-t{margin-left:auto; font-size:10px; color:var(--muted); white-space:nowrap}
.sys-item.ok{background:var(--st-submit-bg); border:1px solid var(--st-submit-border); border-radius:var(--r); padding:5px 10px}
.sys-item.ok b{color:var(--st-done-fg)}
.sys-item.ok .sys-ico{left:-44px; top:3px; border-color:var(--st-submit-border); color:var(--st-done-fg)}
.case-badge{font-size:9.5px; font-weight:800; padding:1px 7px; border-radius:var(--r-badge); background:var(--tint-navy); color:var(--navy)}
.case-badge.warn{background:var(--st-noreply-bg); color:var(--st-noreply-fg)}

/* ── DM 모달 ── */
.dm-modal{max-width:860px}
.dm-body{display:grid; grid-template-columns:1fr 280px; gap:0}
.dm-preview{background:var(--hairline); padding:20px; display:flex; align-items:flex-start; justify-content:center; min-height:480px}
.dm-preview iframe{width:100%; height:600px; max-height:66vh; border:1px solid var(--border); background:#fff}
.dm-side{padding:16px 18px; border-left:1px solid var(--border)}
.dm-side .row{margin-bottom:12px}
.dm-side .row .k{font-size:10px; font-weight:700; color:var(--label); letter-spacing:.06em; margin-bottom:3px}
.dm-side .row .v{font-size:12.5px; font-weight:600}
.dm-acts{display:flex; flex-direction:column; gap:8px; margin-top:18px}
.dm-acts .btn{height:38px; font-size:13px}
.api-note{margin-top:10px; font-size:10.5px; color:var(--muted); line-height:1.5}

/* ── 서류링크 모달 ── */
.doclink-modal{max-width:980px}
.dl-body{display:grid; grid-template-columns:1fr 320px}
.dl-left{padding:14px 18px 20px; border-right:1px solid var(--hairline)}
.dl-toolbar{display:flex; gap:8px; margin-bottom:10px}
.dl-toolbar select{flex:1; height:32px; border:1px solid var(--border); border-radius:var(--r); padding:0 8px; font-size:12.5px; color:var(--body); background:#fff}
.dl-item{border:1px solid var(--border); border-left-width:3px; border-radius:var(--r); padding:9px 12px; margin-bottom:7px; background:#fff}
.dl-item.done{border-left-color:var(--st-done-fg)}
.dl-item.pend{border-left-color:var(--st-noreply-fg)}
.dl-item.rej{border-left-color:var(--st-rejected-fg)}
.dl-main{display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.dl-main b{font-size:13px}
.type-ic{font-size:11px; opacity:.75; width:16px; text-align:center; flex:0 0 16px}
.req-badge{font-size:10px; font-weight:800; color:var(--st-rejected-fg); background:var(--st-rejected-bg); padding:1px 7px; border-radius:var(--r-badge)}
.opt-badge{font-size:10px; font-weight:700; color:var(--muted); background:var(--hairline); padding:1px 7px; border-radius:var(--r-badge)}
.st-badge{font-size:10px; font-weight:800; padding:1px 8px; border-radius:var(--r-badge); margin-left:2px}
.st-badge.ok{background:var(--st-done-bg); color:var(--st-done-fg)}
.st-badge.w{background:var(--st-noreply-bg); color:var(--st-noreply-fg)}
.st-badge.d{background:var(--st-rejected-bg); color:var(--st-rejected-fg)}
.dl-ops{margin-left:auto; display:flex; gap:8px; visibility:hidden}
.dl-item:hover .dl-ops{visibility:visible}
.dl-ops button{font-size:11px; color:var(--muted)}
.dl-ops button:hover{color:var(--navy); text-decoration:underline}
.drag{color:var(--border-input); font-size:11px; cursor:grab}
.sort-btn{color:var(--light); font-size:10px; padding:0 2px}
.sort-btn:hover{color:var(--navy)}
.dl-desc{font-size:11.5px; color:var(--muted); margin:3px 0 0 24px}
.opt-list{display:flex; gap:12px; margin:5px 0 0 24px; font-size:11.5px; color:var(--body); flex-wrap:wrap}
.dl-guides{display:flex; flex-wrap:wrap; gap:5px; margin:7px 0 0 24px}
.gchip{display:inline-flex; align-items:center; gap:4px; font-size:11px; font-weight:600; padding:3px 9px;
  border-radius:var(--r-badge); border:1px solid var(--border); background:var(--surface-sub); color:var(--body); max-width:100%}
.gchip .gx{color:var(--light); font-size:11px} .gchip .gx:hover{color:var(--st-rejected-fg)}
.gchip.link{color:var(--navy); border-color:var(--on-navy-sub); background:var(--tint-navy); text-decoration:none}
.gadd{font-size:11px; font-weight:700; color:var(--muted); border:1.5px dashed var(--border-input); border-radius:var(--r-badge); padding:2px 9px; background:none}
.gadd:hover{color:var(--navy); border-color:var(--navy)}
.up-row{display:flex; align-items:center; gap:7px; margin:7px 0 0 24px; border-radius:var(--r); padding:6px 10px; font-size:11.5px; font-weight:600; flex-wrap:wrap}
.up-row.ok{background:var(--st-done-bg)} .up-row.w{background:var(--st-noreply-bg)} .up-row.d{background:var(--st-rejected-bg); color:var(--st-rejected-fg)}
.up-meta{font-size:10px; color:var(--muted); font-weight:500}
.up-row .abtn{height:22px; padding:0 8px; font-size:10px}
.dl-add{border:1.5px dashed var(--border-input); border-radius:var(--r); padding:10px 12px; margin-top:10px; background:var(--surface-sub)}
.dl-add-cap{font-size:11px; font-weight:800; color:var(--navy); margin-bottom:7px}
.dl-add-row{display:flex; gap:6px; margin-bottom:6px; align-items:center; flex-wrap:wrap}
.dl-add-row:last-child{margin-bottom:0}
.dl-add-row .inp{height:30px; font-size:12px; width:auto; flex:1}
.tchip{font-size:11px; font-weight:700; border:1px solid var(--border); border-radius:var(--r-badge); padding:4px 11px; color:var(--body); background:#fff}
.tchip.on{border-color:var(--navy); color:var(--navy); background:var(--tint-navy)}
.dl-req{display:flex; align-items:center; gap:4px; font-size:11.5px; color:var(--body); white-space:nowrap}
.dl-foot{display:flex; align-items:center; gap:8px; margin-top:12px; flex-wrap:wrap}
.dl-right{padding:14px 18px 20px; background:var(--surface-sub)}
.rcpt{display:flex; align-items:flex-start; gap:8px; border:1px solid var(--border); border-radius:var(--r);
  padding:7px 10px; margin-bottom:6px; font-size:12.5px; font-weight:600; background:#fff; cursor:pointer}
.rcpt input[type=checkbox]{accent-color:var(--navy); margin-top:3px}
.rcpt.on{border-color:var(--navy); background:var(--tint-navy)}
.rc-body{display:flex; flex-direction:column; gap:3px; flex:1; min-width:0}
.rc-body b{font-size:12.5px} .rc-body b i{font-style:normal; font-weight:500; color:var(--muted); font-size:11px}
.rc-line{font-size:11px; color:var(--muted)}
.rc-mail{height:26px; border:1px solid var(--border-input); border-radius:var(--r); padding:0 8px; font-size:11px; background:var(--surface-sub); width:100%}
.chan-row{display:flex; gap:6px; align-items:center; flex-wrap:wrap}
.chan{display:inline-flex; align-items:center; gap:5px; font-size:11.5px; font-weight:700; border:1px solid var(--border);
  border-radius:var(--r); padding:5px 10px; color:var(--body); background:#fff; cursor:pointer}
.chan input{accent-color:var(--navy)}
.chan.on{border-color:var(--navy); color:var(--navy); background:var(--tint-navy)}
.chan-note{margin-top:6px; font-size:10.5px; color:var(--muted)}
.chan-note b{color:var(--navy)}
.link-box{display:flex; gap:7px; margin-bottom:12px}
.link-box input{flex:1; height:34px; border:1px solid var(--border); border-radius:var(--r); padding:0 11px;
  font-size:11.5px; background:var(--surface-sub); color:var(--navy); font-weight:600; min-width:0}

/* ── 템플릿 관리 모달 ── */
.tpl-modal{max-width:900px}
.tpl-body{display:grid; grid-template-columns:230px 1fr}
.tpl-list{border-right:1px solid var(--hairline); padding:14px 12px; background:var(--surface-sub)}
.tpl-row{display:flex; flex-direction:column; gap:2px; width:100%; text-align:left; border:1px solid var(--border);
  border-radius:var(--r); padding:9px 12px; margin-bottom:6px; background:#fff}
.tpl-row b{font-size:12.5px}
.tpl-row span{font-size:10.5px; color:var(--muted)}
.tpl-row.on{border-color:var(--navy); background:var(--tint-navy)}
.tpl-row.on b{color:var(--navy)}
.tpl-edit{padding:14px 18px 18px; max-height:74vh; overflow-y:auto}
.tpl-edit-head{display:flex; gap:7px; margin-bottom:10px}
.tpl-name{flex:1; height:32px; border:1px solid var(--border-input); border-radius:var(--r); padding:0 11px; font-size:13px; font-weight:700; min-width:0}

/* ── 설정 ── */
.settings-card{max-width:440px; background:#fff; border:1px solid var(--border); border-top:var(--rule-top); border-radius:var(--r); padding:22px 24px}
.force-note{max-width:440px; margin-bottom:12px; padding:11px 14px; background:var(--st-noreply-bg); color:var(--st-noreply-fg);
  border-radius:var(--r); font-size:12.5px; font-weight:600; line-height:1.6}

/* ── 검색 팔레트 ── */
.palette{max-width:520px; margin-top:8vh}
.palette .p-input{display:flex; align-items:center; gap:8px; padding:12px 16px; border-bottom:1px solid var(--border)}
.palette .p-input input{flex:1; border:none; outline:none; font-size:14px}
.palette .p-res{max-height:50vh; overflow-y:auto; padding:6px}
.p-row{display:flex; align-items:center; gap:9px; width:100%; text-align:left; padding:9px 12px; border-radius:var(--r); font-size:13px}
.p-row:hover{background:var(--tint-navy)}
.p-row .tag{font-size:10px; font-weight:800; padding:1px 7px; border-radius:var(--r-badge); background:var(--hairline); color:var(--label); flex:0 0 auto}
.p-row .tag.doc{background:var(--st-dm-bg); color:var(--st-dm-fg)}
.p-row .lb{font-weight:700}
.p-row .sb{color:var(--muted); font-size:11.5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}

/* ── 토스트 ── */
#toast-root{position:fixed; bottom:22px; left:50%; transform:translateX(-50%); z-index:500; display:flex; flex-direction:column; gap:8px; align-items:center}
.toast{background:var(--ink); color:#fff; font-size:12.5px; font-weight:600; padding:10px 18px; border-radius:var(--r);
  animation:toastIn .18s ease; max-width:80vw}
.toast.err{background:var(--st-rejected-fg)}
.toast.ok{background:var(--st-done-fg)}
@keyframes toastIn{from{opacity:0; transform:translateY(8px)}to{opacity:1; transform:none}}

/* ── 반응형 (조회 중심 최소 대응) ── */
.topnav{display:none}

@media (max-width: 920px){
  .side{display:none}
  .topnav{display:flex; align-items:center; gap:8px; position:sticky; top:0; z-index:100;
    background:var(--surface); border-bottom:1px solid var(--border); padding:10px 14px}
  .topnav b{font-size:14px}
  .topnav select{flex:1; height:34px; border:1px solid var(--border); border-radius:var(--r); padding:0 8px; background:#fff; min-width:0}
  .topnav .out{font-size:11px; color:var(--muted); text-decoration:underline; white-space:nowrap}
  .app{display:block}
  .main{padding:14px 12px 40px}
  .cards{grid-template-columns:repeat(2,1fr)}
  .ccard::after{display:none}
  .login-shell{flex-direction:column}
  .login-brand{border-right:none}
  .login-card{width:100%; flex:auto}
  .detail-body{grid-template-columns:1fr}
  .detail-left{border-right:none; border-bottom:1px solid var(--hairline)}
  .dm-body,.dl-body,.tpl-body{grid-template-columns:1fr}
  .dm-side,.dl-right{border-left:none; border-top:1px solid var(--border)}
  .drawer{width:100vw; max-width:100vw}
  .filters .search{width:100%}
  .filters .total{margin-left:0; width:100%}
}

/* ── 계산기 정돈 (디자인 가이드: 명확한 입력 영역·정렬) ── */
.calcT{table-layout:fixed; width:100%}
.calcT th:nth-child(1){width:44px}
.calcT th:nth-child(2){width:64px}
.calcT th:nth-child(3){width:88px}
.calcT th:nth-child(4),.calcT th:nth-child(5){width:96px}
.calcT td input{width:100%; box-sizing:border-box; height:28px; font-size:12px; text-align:right; padding:0 7px}
.calcT td input::placeholder{font-size:10px; letter-spacing:-.02em; color:var(--light)}
.calcT .rf{white-space:nowrap}

/* ── 재무 기준연도 2줄 표시 ── */
.fin-y{display:block; font-size:9.5px; color:var(--muted); font-weight:500; line-height:1.2}

/* ── 엑셀식 칼럼 리사이즈 그립 ── */
th{position:relative}
.col-grip{position:absolute; top:0; right:-4px; width:8px; height:100%; cursor:col-resize; z-index:6}
.col-grip:hover,.col-grip.on{background:rgba(20,53,107,.18)}

/* ── 모달 3종을 상세 드로어와 동일한 우측 시트로 통일 ── */
.modal.dm-modal,.modal.doclink-modal,.modal.tpl-modal{
  position:fixed; top:0; right:0; bottom:0; height:100vh; max-height:100vh;
  width:1280px; max-width:97vw; border-radius:0; border-top:none;
  border-left:2.5px solid var(--navy);
  display:flex; flex-direction:column; overflow:hidden;
  animation:sheetIn .16s ease;
}
@keyframes sheetIn{from{transform:translateX(28px); opacity:.5}to{transform:none; opacity:1}}
.modal.dm-modal .dm-body{flex:1; min-height:0; height:100%; grid-template-columns:1fr 300px}
.modal.dm-modal .dm-preview{overflow:hidden; display:flex; height:100%; min-height:0; background:var(--surface-sub); padding:0}
.modal.dm-modal .dm-preview iframe{width:100%; height:100%; min-height:0; border:0; flex:1; display:block; background:#fff}
.modal.dm-modal .dm-side{overflow-y:auto}
.modal.doclink-modal .dl-body{flex:1; min-height:0; overflow:hidden}
.modal.doclink-modal .dl-left{overflow-y:auto; height:100%}
.modal.doclink-modal .dl-right{overflow-y:auto; height:100%}
.modal.tpl-modal .tpl-body{flex:1; min-height:0; overflow:hidden}
.modal.tpl-modal .tpl-list,.modal.tpl-modal .tpl-edit{overflow-y:auto; height:100%; max-height:none}
@media (max-width:1320px){
  .drawer,.modal.dm-modal,.modal.doclink-modal,.modal.tpl-modal{width:100vw; max-width:100vw}
}

/* 계산기: 가정값(회색·이탤릭) vs 확정값(검정) · 투자자 인라인 입력 */
.calcT td input.assumed{color:var(--light); font-style:italic}
.calcT td input.assumed:focus{color:var(--ink); font-style:normal}
.calcT .inv-nm{width:100%; box-sizing:border-box; height:28px; border:1px solid transparent; background:transparent;
  font-size:12px; padding:0 6px; border-radius:var(--r)}
.calcT .inv-nm:hover{border-color:var(--border); background:#fff}
.calcT .inv-nm:focus{border-color:var(--navy); background:#fff; outline:none}
.calcT .inv-nm::placeholder{color:var(--light)}

/* ── 설정 화면 (플랫 패널 2단) ── */
.settings-grid{display:grid; grid-template-columns:repeat(auto-fit, minmax(320px, 440px)); gap:14px; align-items:start}
.panel-card{background:var(--surface); border:1px solid var(--border); border-top:var(--rule-top); padding:18px 20px 16px}
.panel-cap{font-size:13px; font-weight:800; letter-spacing:.02em; color:var(--navy)}
.panel-desc{font-size:11.5px; color:var(--muted); margin:5px 0 14px; line-height:1.6}
.panel-card .field{margin-bottom:11px}
.panel-card .field label{display:block; font-size:11px; font-weight:700; color:var(--label); margin-bottom:5px; letter-spacing:.04em}
.panel-card .field input{width:100%; box-sizing:border-box; height:36px; border:1px solid var(--border); padding:0 11px; font-size:13px; border-radius:var(--r)}
.panel-card .field input:focus{outline:none; border-color:var(--navy)}
.panel-card .field-hint{font-size:10.5px; color:var(--light); margin-top:4px}
.panel-card .row2{display:grid; grid-template-columns:1fr 1fr; gap:8px}
.panel-foot{margin-top:14px; display:flex; justify-content:flex-end}
@media (max-width:900px){ .settings-grid{grid-template-columns:1fr} }

/* DM 모달 수신자 인라인 수정 */
.dm-rcpt-edit{display:grid; grid-template-columns:44px 1fr; gap:6px 8px; margin-top:8px; align-items:center}
.dm-rcpt-edit label{font-size:10.5px; font-weight:700; color:var(--label)}
.dm-edit{height:30px; border:1px solid var(--border); border-radius:var(--r); padding:0 9px; font-size:12px; width:100%; box-sizing:border-box}
.dm-edit:focus{outline:none; border-color:var(--navy)}
.msg-area{width:100%; box-sizing:border-box; border:1px solid var(--border); border-radius:var(--r); padding:8px 10px; font-size:12px; font-family:inherit; resize:vertical; line-height:1.5}
.msg-area:focus{outline:none; border-color:var(--navy)}

/* 서류링크: 투자자 섹션 헤더 */
.dl-sec{display:flex; align-items:center; gap:8px; margin:14px 0 8px; padding:7px 10px; background:var(--tint-navy); border-left:3px solid var(--navy)}
.dl-sec-tag{font-size:9.5px; font-weight:800; color:#fff; background:var(--navy); padding:2px 7px; border-radius:var(--r); letter-spacing:.04em}
.sec-name{flex:1; height:28px; border:1px solid transparent; background:transparent; font-size:12.5px; font-weight:700; color:var(--navy); padding:0 7px; border-radius:var(--r)}
.sec-name:hover{border-color:var(--border-input); background:#fff}
.sec-name:focus{outline:none; border-color:var(--navy); background:#fff}
.dl-sec-cnt{font-size:10.5px; font-weight:700; color:var(--label); white-space:nowrap}

.pipe-head{display:flex; align-items:center; gap:8px; padding:9px 14px 8px; border-bottom:1px solid var(--hairline)}
.pipe-head b{font-size:12.5px}
.pipe-head .hint{font-size:11px; color:var(--muted)}
.pipe-head .clear{margin-left:auto; font-size:11px; color:var(--navy); text-decoration:underline}
.pipe-grid{display:grid; grid-template-columns:repeat(5,1fr)}
.stage-cell{display:block; text-align:left; padding:10px 14px; background:var(--surface); border-left:1px solid var(--hairline); transition:background .13s}
.stage-cell.first{border-left:none}
.stage-cell:hover{background:var(--surface-sub)}
.stage-cell.sel{background:var(--tint-navy); box-shadow:inset 0 -2px 0 0 var(--navy)}
.st-top{display:block; font-size:9.5px; font-weight:700; color:var(--label); letter-spacing:.12em}
.st-top b{color:var(--ink); font-size:11px; letter-spacing:.02em}
.st-count{display:block; font-size:22px; font-weight:800; letter-spacing:-.02em; margin-top:2px; font-variant-numeric:tabular-nums; color:var(--ink)}
.stage-cell.sel .st-count{color:var(--navy)}
.st-pct{font-size:10px; color:var(--light); font-weight:600; margin-left:6px; letter-spacing:0}
.st-sub{display:block; margin-top:6px; border-top:1px dashed #E2E6EA; padding-top:6px}
.sub-chip{display:inline-block; font-size:10.5px; font-weight:800; padding:2px 8px; border-radius:4px; font-variant-numeric:tabular-nums; cursor:pointer}
.sub-chip.warn{background:var(--st-noreply-bg); color:var(--st-noreply-fg)}
.sub-chip.danger{background:var(--st-rejected-bg); color:var(--st-rejected-fg)}
.sub-chip.on{outline:1.5px solid currentColor; outline-offset:-1.5px}
.sub-none{display:inline-block; font-size:10.5px; font-weight:500; color:#B7BDC6; padding:2px 0}
.side-sec:first-of-type{padding-top:16px}

/* ── 표 세로 구분선 (칼럼 경계 가시화) ── */
.list thead th{border-right:1px solid var(--border)}
.list tbody td{border-right:1px solid var(--hairline)}
.list thead th:last-child,.list tbody td:last-child{border-right:none}
.list th.sticky-r,.list td.sticky-r{border-left:1px solid var(--border)}
/* 리사이즈 그립은 경계선 위에 겹치도록 */
.col-grip{right:-4px}
.col-grip:hover,.col-grip.on{background:var(--navy); opacity:.35}
