/* invest-hub 추가 스타일 — 기본 디자인은 asset-command 의 styles.css 를 그대로 쓴다 */
/* hidden 속성은 언제나 숨김 — 아래 클래스의 display 지정이 [hidden] 을 덮어쓰지 않게 (D1 로그인 화면 버그) */
[hidden]{display:none!important}
.nav-item.soon{opacity:.45;cursor:not-allowed}
.nav-item.soon em{margin-left:auto;font-style:normal;font-size:10px;color:#7e8590}
.notice{margin:-12px 0 18px;padding:12px 16px;border-radius:12px;background:#fff6e0;border:1px solid #f0ca6d;color:#6b5414;font-size:12px;line-height:1.6}
.notice.error{background:#ffecea;border-color:#e85845;color:#8f2a1d}
.top-holdings-head{margin-top:18px}
.side-card{padding:22px 24px}
.legend .bucket-change{font-size:10px;color:var(--muted);font-family:'DM Sans';min-width:52px;text-align:right}
.tag{display:inline-block;padding:2px 7px;border-radius:20px;background:#f0f1ee;color:#5f6670;font-size:10px}
.stale{color:#b57a00}
td .sub{display:block;color:var(--muted);font-size:9px;margin-top:2px}
.dark-card .benchmark b.money{color:#fff}
/* 좁은 화면: 아이콘만 (원본은 선택된 메뉴 글자가 세로로 쪼개짐) */
@media(max-width:1050px){.sidebar .nav-item{font-size:0}.nav-item span{font-size:18px}.nav-item.soon em{display:none}}
@media(max-width:760px){.sidebar .nav-item{font-size:8px}.sidebar nav{grid-template-columns:repeat(10,1fr)}}
/* P9b: 입출금·성과·입력 대화상자 */
.toolbar-right{margin-left:auto}
.toolbar-note{align-self:center;font-size:12px;color:var(--muted)}
.ledger-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ledger-actions select,.ledger-actions input{height:36px;border:1px solid var(--line);border-radius:9px;padding:0 10px;background:#fff;font-size:12px}
.ledger-type.transfer{background:#eef1ff;color:#3c4fb5}
.compact-table{min-width:0}
.content-grid .compact-table td,.content-grid .compact-table th{padding:9px 8px}
tr.total-row td{font-weight:700;border-top:2px solid var(--line);background:#fafbf8}
tr.reported td{color:#5f6670}
.hub-dialog{width:min(480px,calc(100% - 32px))}
.hub-dialog form{padding:25px}
.hub-dialog label{display:block;font-size:12px;font-weight:600;margin:14px 0 0;position:static;transform:none;color:var(--ink)}
.hub-dialog label input,.hub-dialog label select{display:block;width:100%;margin-top:7px;padding:11px;border:1px solid var(--line);border-radius:9px;background:#fff;font:inherit;font-weight:400}
.hub-dialog .check-label{display:flex;gap:8px;align-items:center;font-weight:500}
.hub-dialog .check-label input{width:auto;margin:0}
.hub-dialog .segmented{display:flex;margin-bottom:4px}
.hub-dialog .segmented button{flex:1}
.dialog-help{font-size:11px;color:var(--muted);line-height:1.6;margin:0 0 4px}
.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:22px}
.form-error{color:var(--red);font-size:12px;margin:12px 0 0}
/* D1: 로그인 */
.login-screen{position:fixed;inset:0;z-index:50;background:#10131a;display:grid;place-items:center;padding:16px}
.login-card{width:min(360px,100%);padding:30px 28px;display:grid;gap:4px}
.login-card .brand{color:var(--ink);padding:0 0 14px}
.login-card label{display:block;font-size:12px;font-weight:600;margin:6px 0 10px;position:static;transform:none;color:var(--ink)}
.login-card input{display:block;width:100%;margin-top:7px;padding:12px;border:1px solid var(--line);border-radius:9px;font:inherit}
.login-card .primary-button{margin-top:10px;padding:12px}
.login-card .brand span:last-child{font-size:19px}
/* E2: ETF 실질 보유 */
.table-more{display:flex;justify-content:center;margin-top:14px}
.lt-funds{margin-top:18px}
.fund-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.fund-chips span{font-size:11px;padding:6px 10px;border-radius:20px;background:#f2f3f0}
.fund-chips span.stale{background:#fff1d6;color:#8a5b00}
tr.special td{color:var(--muted);font-style:italic}
.src-list{font-size:10px;color:var(--muted);max-width:260px;overflow:hidden;text-overflow:ellipsis}
/* E3: 편출입 */
.sub-head{font-size:12px;margin:20px 0 6px;color:var(--ink)}
#recentBody tr{cursor:pointer}
#recentBody tr.selected td{background:#f4f9e4}
.fund-chips span.up{background:#eaf8ed;color:#27723d}
.fund-chips span.down{background:#fff0ed;color:#b74839}
/* E4: 페어 비교 */
.conv-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
@media(max-width:1050px){.conv-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.conv-grid{grid-template-columns:1fr}}
.inline-label{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--muted)}
.tag.a{background:#fff0ed;color:#b74839}
.tag.b{background:#eef1ff;color:#3c4fb5}
/* E5: 노출 변화·자산 추이·섹터 */
.trend-svg{width:100%;height:210px;display:block;margin-top:10px}
.fund-chips i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px}
#scThemes > div{cursor:default}
#scThemes small.themes-top{grid-column:1/-1;color:var(--muted);font-family:inherit;text-align:left;min-width:0}
.tag.new{background:#eaf8ed;color:#27723d}
.tag.out{background:#fff0ed;color:#b74839}
/* V1: Valuation */
.va-table th small{display:block;font-weight:400;font-size:9px;color:var(--muted);margin-top:2px}
.va-table th.sortable{cursor:pointer;user-select:none;white-space:nowrap}
.va-table th.sortable[data-dir=asc]:after{content:' ▲';font-size:8px}
.va-table th.sortable[data-dir=desc]:after{content:' ▼';font-size:8px}
.va-table tbody tr{cursor:pointer}
.va-table tbody tr.selected td{background:#f4f9e4}
.va-table td{vertical-align:top}
.va-table .big{font-family:'DM Sans';font-weight:600}
.va-table .up{color:#27723d}.va-table .down{color:#b74839}
.targets-grid{display:grid;grid-template-columns:repeat(4,minmax(46px,auto));column-gap:10px;font-size:11px;text-align:right}
.targets-grid .lbl{font-size:9px;color:var(--muted)}
.targets-grid .val.mean{font-weight:700}
.targets-grid .px{font-size:9px;color:var(--muted)}
.w52{position:relative;height:4px;background:#e9ebe6;border-radius:3px;margin:5px 0 3px;min-width:70px}
.w52 i{position:absolute;top:-3px;width:10px;height:10px;margin-left:-5px;border-radius:50%;background:var(--ink)}
.tag.cat-held{background:#10131a;color:#d8ff52}
.tag.cat-watch{background:#eef1ff;color:#3c4fb5}
.tag.badge{background:#eaf8ed;color:#27723d;font-weight:600}
.tag.flag{background:#fff1d6;color:#8a5b00}
.tag.flag.info{background:#eef1ff;color:#3c4fb5}
.va-flags{display:flex;flex-wrap:wrap;gap:4px;max-width:220px}
.va-add{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px;align-items:center}
.va-add input{height:36px;border:1px solid var(--line);border-radius:9px;padding:0 10px;font-size:12px}
.va-add input:first-child{width:180px;text-transform:uppercase}
.va-add input:nth-child(2){flex:1;min-width:160px}
#vaDetail{margin-top:18px}
.va-notice{padding:10px 14px;border-radius:10px;background:#fff6e0;border:1px solid #f0ca6d;color:#6b5414;font-size:12px;line-height:1.6;margin-top:8px}
.va-notice.info{background:#eef1ff;border-color:#c5cdf5;color:#33429a}
.kv-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:8px}
.kv-grid > div{padding:12px 14px;border:1px solid var(--line);border-radius:12px}
.kv-grid span{display:block;font-size:11px;color:var(--muted)}
.kv-grid b{display:block;font-family:'DM Sans';font-size:18px;margin:4px 0 2px}
.kv-grid small{display:block;font-size:10px;color:var(--muted);line-height:1.5}
@media(max-width:1050px){.kv-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.kv-grid{grid-template-columns:1fr}}
.va-memo{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
.va-memo input{flex:1;min-width:200px;height:36px;border:1px solid var(--line);border-radius:9px;padding:0 10px;font-size:12px}
/* R1: 부동산 */
.re-table th small{display:block;font-weight:400;font-size:9px;color:var(--muted);margin-top:2px}
.re-table tbody tr[data-cno]{cursor:pointer}
.re-table tbody tr.selected td{background:#f4f9e4}
.re-table td{vertical-align:top}
.re-table .up{color:#b74839}.re-table .down{color:#27723d}
tr.re-group td{background:#f6f7f4;font-weight:700;font-size:12px;padding-top:10px}
tr.re-group small{font-weight:400;color:var(--muted);margin-left:6px}
tr.muted-row td{opacity:.55}
.re-tp{border:1px dashed var(--line);background:#fff;border-radius:7px;padding:4px 8px;font:inherit;cursor:pointer}
.re-tp:hover{border-color:var(--ink)}
.re-drop{display:grid;grid-template-columns:62px 1fr;align-items:center;gap:2px 8px;min-width:150px}
.re-drop i{display:block;height:6px;border-radius:3px;background:#e85845}
.re-drop i.good{background:#27723d}.re-drop i.warn{background:#e0a020}
.re-drop small{grid-column:2;font-size:10px;color:var(--muted)}
.good{color:#27723d;font-weight:700}.warn{color:#b57a00;font-weight:700}.bad{color:#b74839;font-weight:700}
.re-chart{height:230px}
.re-arts{max-height:320px;overflow:auto}
#reDetail{margin-top:18px}
/* R1c: 부동산 매수 타이밍 · 재화 배수 */
.re-signals{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}
@media(max-width:1050px){.re-signals{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.re-signals{grid-template-columns:1fr}}
.re-sig strong{font-size:22px}
.re-sig strong.good{color:#27723d}.re-sig strong.bad{color:#b74839}
.re-idx{height:300px}
.re-dumbs{display:grid;gap:10px;margin-top:10px}
.re-dumb{display:grid;grid-template-columns:minmax(150px,1.2fr) 80px 2fr 80px 56px;gap:10px;align-items:center;font-size:12px}
.re-dumb .nm small{display:block;color:var(--muted);font-size:10px}
.re-dumb .num{text-align:right;font-family:'DM Sans'}
.re-dumb .trk{position:relative;height:16px}
.re-dumb .trk i{position:absolute}
.re-dumb .trk .ax{left:0;right:0;top:7px;height:2px;background:#e7e8e5}
.re-dumb .trk .seg{top:6px;height:4px;border-radius:2px}
.re-dumb .trk .dot{top:2px;width:12px;height:12px;margin-left:-6px;border-radius:50%;background:var(--ink)}
.re-dumb .trk .dot.a{background:#c9cdc4}
@media(max-width:760px){.re-dumb{grid-template-columns:1fr 60px 60px}.re-dumb .trk,.re-dumb .num:last-child{display:none}}
/* R2: 전체 자산 */
.combined-bars>div{grid-template-columns:150px minmax(100px,1fr) auto}
.combined-bars small.sub,.liability-list small.sub{display:block;font-size:9px;color:var(--muted)}
.liability-list{display:grid;gap:14px;margin-top:22px}
.liability-list>div{display:flex;justify-content:space-between;align-items:center}
.liability-list .total{border-top:1px solid var(--line);padding-top:12px;font-weight:700}
.combined-empty{color:var(--muted);font-size:12px}
.nw-bp{display:grid;grid-template-columns:150px 1fr auto;gap:12px;align-items:center;margin-top:18px;font-size:12px}
.nw-bp i{display:block;height:10px;border-radius:99px;background:#eef0ec;overflow:hidden}
.nw-bp i b{display:block;height:100%;background:var(--sand)}
.nw-bp i b.ok{background:#4fbf9f}
.nw-dialog{width:min(560px,calc(100% - 32px))}
.nw-edit-row{display:grid;grid-template-columns:1fr 170px 34px;gap:8px;margin:8px 0}
.nw-edit-row input{padding:10px;border:1px solid var(--line);border-radius:9px;font:inherit}
.nw-edit-row .val{text-align:right}
#nwTrend{height:200px}
/* 데일리 시장 */
.sig-cols{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media(max-width:1050px){.sig-cols{grid-template-columns:1fr}}
.sig-col-head{font-size:14px;margin:0 0 10px}
.sig-card{padding:16px 18px;margin-bottom:12px}
.sig-head{display:flex;justify-content:space-between;align-items:center;font-size:13px}
.sig-main{display:flex;align-items:baseline;gap:12px;margin-top:8px;flex-wrap:wrap}
.sig-main strong{font:700 24px 'DM Sans'}
.sig-main span{font:600 13px 'DM Sans'}
.sig-main small{font-weight:400;color:var(--muted)}
.sig-spark{width:120px;height:30px;margin-left:auto}
.sig-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px 12px;margin-top:12px}
.sig-grid span{font-size:10px;color:var(--muted)}
.sig-grid b{display:block;font:600 13px 'DM Sans';color:var(--ink)}
.sig-grid b.up{color:#27723d}.sig-grid b.down{color:#b74839}
.sig-src{margin-top:10px;font-size:11px;color:var(--muted)}
.sig-src summary{cursor:pointer}
.sig-src div{margin-top:6px;line-height:1.6}
.sig-table td{vertical-align:top}
.sig-table .sig-src{margin-top:0}
.sig-unavail{display:grid;gap:10px;margin-top:12px}
.sig-unavail small{display:block;color:var(--muted);font-size:11px;margin-top:3px}
.sig-gold small{line-height:1.5}
#sigAnalysis .kv-grid b{font-size:16px}

/* 포트폴리오 위험 입력 줄 */
.risk-form { display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: center; margin: 6px 0; }
.risk-form label { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; }
.risk-form input { width: 92px; }
.risk-form input[name="add_amount"], .risk-form input[name="extra_cash"] { width: 130px; }

/* 텔레그램 발췌 */
.tg-table td { vertical-align: top; }
.tg-snippet { white-space: pre-line; max-height: 7.5em; overflow: hidden; font-size: 13px; line-height: 1.5; }
.tg-table .nowrap { white-space: nowrap; }
#sigTelegram .search { margin: 8px 0; }
#tgCollect { white-space: nowrap; flex-shrink: 0; }
.tg-table { min-width: 0; table-layout: fixed; width: 100%; }
.tg-table th:first-child { width: 108px; }
.tg-table th:last-child { width: 96px; }
.tg-snippet, .tg-table small { overflow-wrap: anywhere; }
.tg-table td:last-child .tag { display: inline-block; margin: 0 2px 2px 0; }
@media (max-width: 640px) {
  .tg-table th:first-child { width: 72px; } .tg-table th:last-child { width: 62px; }
  .tg-table .nowrap { white-space: normal; font-size: 12px; }
  .tg-table td:last-child .tag { display: block; width: fit-content; font-size: 11px; padding: 1px 5px; }
  .tg-table td, .tg-table th { padding-left: 4px; padding-right: 4px; }
}
.tg-table small.sub { white-space: normal; display: block; }

/* 텔레그램 AI 요약 (4b) */
.tg-summary, .tg-more, .tg-claims, .tg-assets .tag { white-space: normal; }
.tg-summary { font-size: 13px; line-height: 1.55; overflow-wrap: anywhere; }
.tg-assets { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.tg-more { margin-top: 6px; font-size: 12px; }
.tg-more > summary { cursor: pointer; color: #5f6670; }
.tg-claims { margin: 6px 0 6px 18px; padding: 0; font-size: 12px; line-height: 1.5; }
.tg-claims li { margin-bottom: 4px; }
.tg-actions { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
#tgSummarize { white-space: nowrap; }
#tgSumMeta { margin-top: 2px; }
