@font-face{font-family:system;src:local('Apple SD Gothic Neo')}*{box-sizing:border-box}html{font-size:16px;color:#17324a;background:#f3f6fa}body{margin:0;font-family:system,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;line-height:1.55}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.48;cursor:wait}button,input,select,textarea{border-radius:12px}input,select,textarea{width:100%;border:1px solid #bac8d4;background:#fff;padding:12px;color:#17324a;min-height:48px}textarea{resize:vertical;min-height:140px}label{display:block;font-size:.9rem;font-weight:600;margin:14px 0 6px}label.check{display:flex;align-items:flex-start;gap:10px;font-weight:500}input[type=checkbox]{width:22px;height:22px;min-height:22px;flex:none;accent-color:#007c83}h1,h2,h3,p{margin:0 0 12px}h1{font-size:2rem;letter-spacing:-.07em}h2{font-size:1.2rem;letter-spacing:-.04em}h3{font-size:1rem}.muted{color:#536e80;font-size:.9rem}.eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.16em;color:#00767d;margin-top:20px}.primary,.secondary,.quiet,.danger{padding:12px 18px;border:0;min-height:48px;font-weight:600}.primary{background:#007a80;color:#fff}.secondary{background:#e6eef4;color:#25445c}.quiet{background:transparent;color:#426277;padding:8px}.danger{background:#ffebeb;color:#aa2d2d}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.actions>*{flex:1}.gate{max-width:430px;margin:8vh auto;padding:28px}.gate h1{font-size:2.7rem}.brand-mark{display:grid;place-items:center;background:#102a43;color:white;width:54px;height:54px;border-radius:17px;font-size:1.7rem;font-weight:700}.gate form{margin-top:28px}.gate button{width:100%;margin-top:16px}.gate .help{border-top:1px solid #ccd8e2;padding-top:20px;margin-top:28px;color:#516c80;font-size:.9rem}.shell{max-width:960px;margin:auto;padding:0 22px 120px}.topbar{display:flex;align-items:center;justify-content:space-between;padding:28px 0 20px}.topbar p{font-size:.78rem;letter-spacing:.14em;color:#647e91;margin:0}.topbar h1{font-size:1.6rem;margin:0}.topbar button{font-size:.85rem}.tabs{position:fixed;bottom:0;left:0;right:0;background:#fffffff5;backdrop-filter:blur(14px);border-top:1px solid #d8e1e8;z-index:8;display:flex;justify-content:center;padding:8px 10px max(10px,env(safe-area-inset-bottom))}.tabs button{flex:1;max-width:150px;min-height:52px;border:0;background:transparent;color:#627b8e;font-size:.85rem;border-radius:12px}.tabs button.active{background:#e0f2f1;color:#006c73;font-weight:750}.filters{display:flex;gap:12px;margin-bottom:18px}.filters label{flex:1;margin:0}.filters select{margin-top:5px}.hero{background:#102a43;color:#fff;border-radius:24px;padding:28px;margin-bottom:18px;position:relative;overflow:hidden}.hero .muted{color:#bdcddd}.hero .amount{font-size:clamp(1.8rem,6.5vw,3rem);font-weight:750;letter-spacing:-.06em;overflow-wrap:anywhere;margin:12px 0}.hero .badge{font-size:.78rem;color:#8fdfd5;background:#173e51;border-radius:20px;padding:5px 10px;display:inline-block}.hero-footer{display:flex;justify-content:space-between;gap:16px;border-top:1px solid #395267;padding-top:16px;margin-top:20px}.card{background:white;border:1px solid #e0e7ee;border-radius:20px;padding:22px;margin-bottom:16px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid .card{margin:0}.empty{padding:30px 6px;text-align:center;color:#597285}.empty h2{color:#223f56}.row{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:13px 0;border-bottom:1px solid #eef2f5}.row:last-child{border:0}.row>div{min-width:0}.row strong{overflow-wrap:anywhere}.row .value{white-space:nowrap;font-weight:650}.pill{font-size:.75rem;border-radius:8px;background:#ecf2f7;color:#486478;padding:3px 7px;display:inline-block}.warning{background:#fff4df;color:#765309;border-radius:12px;padding:12px 14px;font-size:.9rem;margin:12px 0}.success{background:#e5f4ee;color:#21644c;border-radius:12px;padding:12px 14px;font-size:.9rem}.note{font-size:.85rem;color:#61798c}.bar{height:9px;border-radius:8px;background:#e8f0f4;margin:7px 0 14px;overflow:hidden}.bar>span{display:block;height:100%;background:#079b9b;border-radius:8px}.candidate{background:#f7f9fb;border:1px solid #d8e4eb;border-radius:16px;padding:16px;margin:16px 0}.fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.fields label{margin:0}.fields input,.fields select{margin-top:6px}.thumbnails{display:flex;overflow-x:auto;gap:12px;margin-top:16px}.thumbnails img{height:180px;max-width:180px;object-fit:contain;border:1px solid #d9e3eb;border-radius:10px;background:#edf3f6}.source{font-size:.78rem;color:#5c7181;overflow-wrap:anywhere;white-space:pre-wrap}.full{width:100%}.file-control{display:block;background:#e5f2f1;border:1px dashed #70aaa8;border-radius:14px;text-align:center;padding:20px;margin:16px 0;color:#006e73;font-weight:600}.file-control input{margin-top:12px;background:white;font-size:.85rem}.divider{margin:24px 0;border:0;border-top:1px solid #e0e7ed}.screen-title{margin:12px 0 20px}.screen-title p{color:#61798c}.status{font-size:.85rem;color:#336c7c}#notice{position:fixed;left:50%;bottom:100px;transform:translateX(-50%);background:#18394e;color:white;border-radius:14px;padding:12px 18px;z-index:30;max-width:min(90vw,600px);box-shadow:0 5px 30px #0002;display:none}#notice.visible{display:block}dialog{border:0;border-radius:22px;padding:26px;max-width:min(92vw,440px);color:#18394e;box-shadow:0 15px 60px #0003}dialog::backdrop{background:#102a4377}.chart{width:100%;height:180px;background:#f9fbfc;border-radius:12px}.chart text{font-size:12px;fill:#516c80}.chart circle{fill:#008d91}.history-list{max-height:460px;overflow:auto}details summary{cursor:pointer;font-weight:600}details>p{margin-top:12px}.privacy-cover{position:fixed;inset:0;background:#102a43;z-index:100;color:white;display:grid;place-items:center}@media(min-width:760px){.shell{padding-top:10px}.dashboard-columns{display:grid;grid-template-columns:1.2fr 1fr;gap:18px}.hero{min-height:220px}.tabs{left:50%;right:auto;transform:translateX(-50%);width:600px;bottom:20px;border:1px solid #d8e1e8;border-radius:22px;padding:8px}.gate{margin-top:10vh}}@media(max-width:420px){.shell{padding-left:16px;padding-right:16px}.hero{padding:23px}.card{padding:18px}.fields{grid-template-columns:1fr}.grid{grid-template-columns:1fr}.row .value{white-space:normal;text-align:right}h1{font-size:1.8rem}}@media(prefers-reduced-motion:no-preference){button{transition:background .15s,transform .15s}button:active{transform:translateY(1px)}}:focus-visible{outline:3px solid #2aaeb5;outline-offset:3px}
.allocation{width:100%;height:9px;border:0;border-radius:8px;overflow:hidden;accent-color:#008d91}.allocation::-webkit-progress-bar{background:#e7eef3}.allocation::-webkit-progress-value{background:#008d91}.allocation::-moz-progress-bar{background:#008d91}

.app-update{position:relative;display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;padding:12px 16px;margin:0 auto 110px;max-width:600px;font-size:.85rem;color:#426277}.app-update button{border:1px solid #bac8d4;background:white;color:#25445c;padding:10px 14px;min-height:44px}
.viz{margin:0 0 8px}.viz svg{width:100%;height:auto;display:block;touch-action:manipulation}.viz .tick{font-size:17px;fill:#61798c}.viz .hit{cursor:pointer}
.legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.8rem;color:#455f73;margin:6px 0}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.viz-tip{min-height:1.3em;margin:4px 0 0}
.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.85rem}th,td{padding:7px 6px;border-bottom:1px solid #eef2f5;text-align:right;white-space:nowrap}th:first-child,td:first-child{text-align:left}th{color:#61798c;font-weight:600}
.close-form{border-top:1px solid #eef2f5;padding-top:12px;margin-top:12px}
optgroup{font-weight:700}
.meter{display:block;width:100%;height:9px;margin:7px 0 4px}.legend svg,.viz .legend svg{width:10px;height:10px;display:inline-block;flex:none;margin-right:5px}
.legend span{display:inline-flex;align-items:center;white-space:nowrap}
.recovery{border-top:1px solid #ccd8e2;padding-top:20px;margin-top:24px}.recovery h2{font-size:1.05rem}
.gate ol{padding-left:20px;margin:8px 0}.gate details{margin-top:22px}.gate details form{margin-top:10px}.reset{border-top:1px solid #ccd8e2;padding-top:14px}
.crop{display:block;max-width:100%;height:auto;border:1px solid #d9e3eb;border-radius:8px;margin:8px 0;background:#fff}.review{border-top:1px dashed #d8e4eb;margin-top:12px;padding-top:10px}
.asset-row{border-bottom:1px solid #eef2f5;padding:12px 0;display:grid;gap:6px}.asset-row:last-child{border:0}.asset-head{display:flex;flex-direction:column}.asset-row .fields{margin:0}.asset-row label{margin:0}.asset-row button{justify-self:end;min-height:40px;padding:8px 18px}
/* 숫자는 모두 오른쪽 정렬(천단위 콤마, 자릿수 맞춤) */
.row{justify-content:space-between}.row .value,.row>span:last-child,.row>strong:last-child{text-align:right;font-variant-numeric:tabular-nums;margin-left:auto}
input[inputmode=decimal]{text-align:right;font-variant-numeric:tabular-nums}
td,th{font-variant-numeric:tabular-nums}
.num-input{background:#fffdf3;border:2px solid #9fb8c8;font-weight:600;font-size:1.05rem}.num-input:focus{border-color:#007a80;background:#fff}

/* 아이폰 폭(320~430px) 줄바꿈 방지: 한글은 단어 단위로만 줄바꿈, 금액·버튼·탭은 한 줄 고정 */
body{word-break:keep-all;overflow-wrap:break-word}
.row{display:flex;align-items:center;gap:6px 8px;flex-wrap:wrap}
.row>div:first-child{flex:1 1 140px;min-width:0}
.row strong{overflow-wrap:break-word}
.row .value,.row>span:last-child,.row>strong:last-child,.row .value *{white-space:nowrap}
.row .value{white-space:nowrap;flex:none}
.row button,.row .quiet{white-space:nowrap;flex:none;min-height:40px;padding:6px 8px}
.tabs button{white-space:nowrap;font-size:.8rem;padding:0 2px}
button,.badge,.legend span,th{white-space:nowrap}
td{white-space:nowrap}
@media (max-width:360px){.tabs button{font-size:.72rem}.amount{font-size:1.9rem}}
.row>button:first-of-type{margin-left:auto}
.row>button+button{margin-left:0}
.row>span:first-child{flex:1 1 0;min-width:0}
.saved{background:#e0f2f1;color:#006c73;font-weight:700}

.tree-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:11px 0;border-bottom:1px solid #eef2f5;list-style:none}.tree-head::-webkit-details-marker{display:none}.tree-head::before{content:'▸';color:#7b93a6;margin-right:6px}details[open]>.tree-head::before{content:'▾'}.tree-head>span:first-child{flex:1;min-width:0;overflow-wrap:anywhere}.tree details{margin-left:14px}.tree-leaf{margin-left:28px;padding:9px 0;font-size:.92rem}.pct{color:#627d98;font-size:.8rem;font-weight:500;margin-left:8px}

/* ---- 새 앱에서 추가: 입력·관리 화면, 알림, 평가손익, 월별 표 ---- */
.pick{display:grid;grid-template-columns:repeat(4,1fr) 150px;gap:10px}
.pick label{margin:0;font-size:.82rem;color:#61798c}.pick select,.pick input{margin-top:4px}
@media(max-width:700px){.pick{grid-template-columns:1fr 1fr}}
.card table input,.card table select{min-height:40px;padding:7px 9px;border-radius:10px}
td.num,th.num{text-align:right}td input.num{text-align:right;font-variant-numeric:tabular-nums}
.warn{background:#fff4df;color:#765309;border-radius:12px;padding:10px 14px;font-size:.9rem;margin:10px 0}
.ok{background:#e5f4ee;color:#21644c;border-radius:12px;padding:10px 14px;font-size:.9rem;margin:10px 0}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.chip{padding:6px 12px;min-height:0;border-radius:16px;border:1px solid #cfd8dc;background:#f4f6f7;color:#555;font-size:.85rem;font-weight:500}.chip.done{background:#e0f2f1;border-color:#4db6ac;color:#006c73;font-weight:700}
.pos{color:#c62828}.neg{color:#1565c0}
.scrollbox{max-height:440px;overflow:auto;border:1px solid #eceff1;border-radius:12px}.scrollbox thead th{position:sticky;top:0;background:#fff;z-index:1}tr.muted td{color:#90a4ae}
.card{overflow-x:auto}
#status{position:fixed;left:50%;bottom:100px;transform:translateX(-50%);z-index:50;max-width:90vw;background:#18394e;color:#fff;font-weight:600;padding:12px 20px;border-radius:14px;box-shadow:0 5px 30px #0003}
#status.err{background:#b71c1c}#status:empty{display:none}
.success{display:inline-block}
.actions>label+button{flex:none;min-height:40px}

/* 그래프: 축 글자 = 범례 크기, 손가락·마우스 값 상자 */
.viz{position:relative}.viz .tick{font-size:var(--tick,13px);fill:#61798c}.viz .tick.last{fill:#17324a;font-weight:700}
.viz .hit.on{fill:#102a4314}
.viz-float{position:absolute;top:4px;z-index:3;background:#fff;border:1px solid #d8e1e8;border-radius:10px;padding:8px 11px;font-size:.8rem;line-height:1.5;box-shadow:0 6px 18px #102a4322;pointer-events:none;white-space:nowrap;color:#17324a}
.viz-float b{display:block;margin-bottom:2px}

/* 종목 합산 표: 제목 줄과 칸 맞춤 */
.hgrid{display:grid;grid-template-columns:minmax(0,1.7fr) .6fr 1.2fr 1.1fr .7fr;gap:8px;align-items:center;padding:10px 0;border-bottom:1px solid #eef2f5;font-variant-numeric:tabular-nums;font-size:.9rem}
.hgrid>span{text-align:right;white-space:nowrap}.hgrid>span.hn{text-align:left;white-space:normal;min-width:0;overflow-wrap:anywhere}
.hhead{font-size:.78rem;color:#61798c;font-weight:600;padding:6px 0;border-bottom:1px solid #d8e1e8}
.hold>summary{list-style:none;cursor:pointer;font-weight:600}.hold>summary::-webkit-details-marker{display:none}
.hold>summary .hn::before{content:'▸ ';color:#7b93a6}.hold[open]>summary .hn::before{content:'▾ '}
.hgrid.sub{font-size:.82rem;color:#455f73;background:#f8fafb}.hgrid.sub .hn{padding-left:16px}
@media(max-width:600px){.hgrid{grid-template-columns:minmax(0,1.3fr) .55fr 1.15fr 1fr .65fr;gap:5px;font-size:.74rem}.hhead{font-size:.7rem}.hgrid.sub{font-size:.7rem}.hgrid.sub .hn{padding-left:8px}}
.card .viz{margin-left:-10px;margin-right:-10px}
/* 자산 트리: 비중 칸 폭 고정 → 금액 끝자리가 줄마다 같은 위치 */
.tree-head .pct,.total-row .pct{display:inline-block;min-width:4.2em;text-align:right}
.total-row::before{content:'';margin-right:0}.total-row{padding-left:0}
.seg{display:flex;gap:6px;margin:4px 0 10px}.seg button{flex:1;min-height:36px;padding:6px 0;border:1px solid #d8e1e8;background:#fff;color:#426277;font-size:.85rem;border-radius:10px}.seg button.on{background:#e0f2f1;border-color:#4db6ac;color:#006c73;font-weight:700}
.viz .tick.last{paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round}
@media(max-width:600px){table.mom th,table.mom td{padding:6px 3px;font-size:.74rem}.card table:not(.mom) td{white-space:normal}}
/* 휴대폰(16 Pro Max 440px 포함, 600px 이하): 바깥·카드 여백을 줄여 내용 폭을 넓게 */
@media(max-width:600px){.shell{padding-left:12px;padding-right:12px}.hero{padding:20px}.card{padding:16px 14px}table.mom th,table.mom td{font-size:.8rem}}
