:root { --bg: #ffffff; --bg-soft: #f5f5f5; --card: #ffffff; --line: #e7e7e7; --line-strong: #d4d4d4; --ink: #191919; --ink-2: #626262; --ink-3: #767676; --accent: #3271c8; --accent-soft: #eaf3fc; --mint: #4db6a0; --mint-soft: #e6f6f2; --up: #e5484d; --up-soft: #fdeeee; --down: #16a34a; --down-soft: #e9f7f0; --warn: #d9932f; --warn-soft: #fdf4e6; --radius: 10px; --radius-sm: 9px; --shadow: none; --font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB",
    "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif; --mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace; }
* { box-sizing: border-box; }
html { color-scheme: light; }
html[data-theme="dark"] { color-scheme: dark; }
[data-theme="dark"] { --bg: #000000; --bg-soft: #171717; --card: #0c0c0c; --line: #252525; --line-strong: #3c3c3c; --ink: #f1f1f1; --ink-2: #a3a3a3; --ink-3: #929292; --accent: #5aa0e0; --accent-soft: #1b2d3f; --mint: #45b09a; --mint-soft: #14312b; --up: #f0616a; --up-soft: #381d20; --down: #2fb36d; --down-soft: #12301f; --warn: #e0a347; --warn-soft: #332818; --shadow: none; }
:where(a, button, summary, [tabindex], [role="button"]):focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 5px; }
[data-theme="dark"] ::-webkit-scrollbar-thumb:hover { background: #46565f; background-clip: content-box; }
[data-theme="dark"] .btn.primary:hover { background: #6aa9e8; }
[data-theme="dark"] .btn.mint:hover { background: #52c0aa; }
[data-theme="dark"] .btn.danger { border-color: #55333a; }
[data-theme="dark"] .btn.danger:hover { background: #45262b; }
[data-theme="dark"] .plan.paused { border-left-color: var(--ink-3); background: var(--bg-soft); }
[data-theme="dark"] .banner.info { color: #8fc1ee; }
[data-theme="dark"] .banner.warn { color: #e5b869; }
[data-theme="dark"] .banner.err { color: #f0959b; }
[data-theme="dark"] .banner.ok { color: #7fd0bc; }
[data-theme="dark"] .modal-wrap { background: rgba(0, 0, 0, .58); }
[data-theme="dark"] .tv-legend .lg b.up { color: var(--up); }
[data-theme="dark"] .tv-legend .lg b.down { color: var(--down); }
[data-theme="dark"] .tag.mode.live { color: #7fd0bc; }
[data-theme="dark"] .tag.mode.warn { color: #f0c274; }
[data-theme="dark"] .tag.mode.intraday { color: #8fc1ee; }
[data-theme="dark"] .tx-type.buy { color: #7fd0bc; box-shadow: inset 0 0 0 1px #23493e; }
[data-theme="dark"] .auth-err { color: #f0959b; }
[data-theme="dark"] .tag.purple { background: #27233d; color: #a89ae0; }
[data-theme="dark"] .qnum { background: #27233d; color: #a89ae0; }
[data-theme="dark"] .ver-chip:hover { border-color: #33506b; }
[data-theme="dark"] .cat-pill { background: color-mix(in srgb, var(--cat) 18%, var(--card)); border-color: color-mix(in srgb, var(--cat) 34%, var(--card)); }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--line-strong); border-radius: 8px; border: 2px solid transparent; background-clip: content-box; }
::-webkit-scrollbar-thumb:hover { background: #b8c6cf; background-clip: content-box; }
* { scrollbar-width: thin; scrollbar-color: var(--line-strong) transparent; }
html, body { margin: 0; padding: 0; background: var(--bg); color: var(--ink); font-family: var(--font); font-size: 14px; line-height: 1.6; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: 100%; }
button, input, select, textarea { font-family: inherit; font-size: inherit; color: inherit; }
a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }
::selection { background: var(--accent-soft); color: var(--ink); }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; } }
.tv-chart,
.tv-chart *,
.tv-chart *::before,
.tv-chart *::after { transition: none !important; animation: none !important; }
.hidden { display: none !important; }
.stale-hint { font-size: 11.5px; color: var(--ink-3); margin-top: 3px; line-height: 1.35; }
.vl-sub { font-size: 11.5px; color: var(--ink-3); margin-left: 6px; }
.mono { font-family: var(--mono); font-variant-numeric: tabular-nums; }
.brand-mark { width: 32px; height: 32px; border-radius: 10px; background: var(--accent-soft); color: var(--accent); display: flex; align-items: center; justify-content: center; }
.card { background: var(--card); border: 0; border-top: 1px solid var(--line-strong); border-radius: 0; padding: 20px 0; box-shadow: none; margin-bottom: 16px; }
.card-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; flex-wrap: wrap; }
.card-head h2 { font-size: 15px; font-weight: 600; margin: 0; }
.card-head .sub { font-size: 12px; color: var(--ink-3); font-weight: 400; margin-left: 8px; }
.grid { display: grid; gap: 14px; }
.grid.c2 { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.grid.c3 { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.grid.metrics { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }
.metric { background: transparent; border-bottom: 1px solid var(--line); border-radius: 0; padding: 12px 0; }
.metric .label { font-size: 12px; color: var(--ink-3); margin-bottom: 2px; }
.metric .value { font-size: 21px; font-weight: 600; letter-spacing: -.3px; }
.metric .value.sm { font-size: 17px; }
.metric .foot { font-size: 12px; color: var(--ink-3); margin-top: 2px; }
.up { color: var(--up); }
.down { color: var(--down); }
.up, .down { font-variant-numeric: tabular-nums; }
.flat { color: var(--ink-2); }
.pill { display: inline-flex; align-items: center; gap: 3px; font-size: 14px; font-weight: 500; padding: 1px 5px; border-radius: 3px; font-variant-numeric: tabular-nums; }
.pill.up { background: var(--up-soft); color: var(--up); }
.pill.down { background: var(--down-soft); color: var(--down); }
.pill.flat { background: var(--bg-soft); color: var(--ink-2); }
.table-wrap { overflow-x: auto; margin: 0 -18px -18px; padding: 0 18px 18px; }
table.data { width: 100%; border-collapse: collapse; font-size: 14px; }
table.data th { text-align: right; font-weight: 500; color: var(--ink-3); font-size: 12px; padding: 12px 10px; border-bottom: 1px solid var(--line-strong); white-space: nowrap; position: sticky; top: 0; background: var(--bg-soft); }
table.data th:first-child, table.data td:first-child { text-align: left; }
table.data td { text-align: right; padding: 11px 10px; border-bottom: 1px solid var(--line); white-space: nowrap; font-variant-numeric: tabular-nums; }
table.data tbody tr { cursor: pointer; transition: background .12s; }
table.data tbody tr:hover { background: var(--bg-soft); }
table.data tbody tr:last-child td { border-bottom: none; }
table.data th.sortable { cursor: pointer; user-select: none; transition: color .12s; }
table.data th.sortable:hover { color: var(--accent); }
table.data th.sortable.on { color: var(--accent); font-weight: 600; }
table.data th.sortable.on::after { content: ''; }
.name-cell { display: flex; flex-direction: column; gap: 1px; }
.name-cell .nm { font-weight: 500; }
.name-cell .cd { font-size: 11px; color: var(--ink-3); font-family: var(--mono); }
.tag { display: inline-block; font-size: 11px; padding: 1px 7px; border-radius: 6px; background: var(--accent-soft); color: var(--accent); font-weight: 500; }
.tag.gray { background: var(--bg-soft); color: var(--ink-2); }
.tag.mint { background: var(--mint-soft); color: var(--mint); }
.tag.warn { background: var(--warn-soft); color: var(--warn); }
.tag.red { background: var(--up-soft); color: var(--up); }
.btn { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 8px 14px; border-radius: 4px; border: 1px solid var(--line-strong); background: var(--card); color: var(--ink); cursor: pointer; font-weight: 500; transition: background .15s, border-color .15s; white-space: nowrap; }
.btn:hover { background: var(--bg-soft); }
.btn:active { transform: translateY(1px); }
.btn:disabled { opacity: .5; cursor: not-allowed; }
.btn.primary { background: var(--accent); border-color: var(--accent); color: #fff; }
.btn.primary:hover { background: #3f81c4; }
.btn.mint { background: var(--mint); border-color: var(--mint); color: #fff; }
.btn.mint:hover { background: #43a48f; }
.btn.danger { color: var(--up); border-color: #f0cccc; background: var(--up-soft); }
.btn.danger:hover { background: #fbe2e2; }
.btn.sm { padding: 7px 10px; font-size: 14px; border-radius: 4px; }
.btn.ghost { border-color: transparent; background: transparent; color: var(--ink-2); }
.btn.ghost:hover { background: var(--bg-soft); }
.btn-row { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.field { display: flex; flex-direction: column; gap: 5px; margin-bottom: 12px; }
.field > label { font-size: 12px; color: var(--ink-2); font-weight: 500; }
.field .hint { font-size: 11px; color: var(--ink-3); }
input[type=text], input[type=number], input[type=date], input[type=time], input[type=password], input[type=search], select, textarea { width: 100%; min-height: 44px; padding: 9px 11px; border: 1px solid var(--line-strong); border-radius: 9px; background: var(--card); outline: none; transition: border-color .15s, box-shadow .15s; }
input:focus, select:focus, textarea:focus { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
textarea { resize: vertical; min-height: 120px; font-family: var(--mono); font-size: 12.5px; line-height: 1.7; }
.form-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 0 14px; }
.seg { display: flex; gap: 0; background: transparent; border-bottom: 1px solid var(--line); padding: 0; border-radius: 0; }
.seg button { flex: 1; min-height: 44px; padding: 7px 12px; border: 0; border-bottom: 2px solid transparent; background: transparent; border-radius: 0; cursor: pointer; color: var(--ink-2); font-weight: 500; font-size: 14px; }
.seg button.active { background: transparent; color: var(--accent); border-bottom-color: var(--accent); box-shadow: none; }
.seg button.active.buy { background: var(--up-soft); color: var(--up); }
.seg button.active.sell { background: var(--down-soft); color: var(--down); }
.plan { border: 0; border-top: 1px solid var(--line); border-left: 3px solid var(--accent); border-radius: 0; padding: 18px; background: var(--card); display: flex; flex-direction: column; gap: 14px; }
.plan.paused { border-left-color: var(--ink-3); background: var(--bg-soft); }
.plan-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.plan-name { font-weight: 600; font-size: 14px; }
.plan-meta { font-size: 14px; color: var(--ink-3); margin-top: 2px; }
.plan-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.plan-stats .s { min-width: 0; padding: 8px 0; background: transparent; border-bottom: 1px solid var(--line); border-radius: 0; }
.plan-stats .s .l { font-size: 14px; color: var(--ink-3); }
.plan-stats .s .v { font-size: 14px; font-weight: 600; font-variant-numeric: tabular-nums; }
.switch { display: inline-flex; align-items: center; gap: 7px; cursor: pointer; user-select: none; font-size: 12px; position: relative; }
.switch input { position: absolute; width: 1px; height: 1px; margin: 0; padding: 0; opacity: 0; pointer-events: none; }
.switch input:focus-visible + .track { outline: 2px solid var(--accent); outline-offset: 2px; }
.switch .track { width: 38px; height: 21px; border-radius: 20px; background: var(--line-strong); position: relative; transition: background .18s; flex: none; }
.switch .track::after { content: ''; position: absolute; top: 2px; left: 2px; width: 17px; height: 17px; border-radius: 50%; background: #fff; transition: transform .18s; box-shadow: 0 1px 3px rgba(0, 0, 0, .18); }
.switch input:checked + .track { background: var(--mint); }
.switch input:checked + .track::after { transform: translateX(17px); }
.bell { position: relative; padding-left: 10px; padding-right: 10px; }
.bell .ic svg { width: 17px; height: 17px; }
.bell.on { color: var(--accent); border-color: var(--accent); }
.nt-badge { position: absolute; top: -6px; right: -6px; min-width: 16px; height: 16px; border-radius: 9px; background: #e5484d; color: #fff; font-size: 10px; line-height: 16px; padding: 0 4px; font-weight: 600; text-align: center; box-shadow: 0 0 0 2px var(--card); }
.nt-ch-head { display: flex; gap: 10px; align-items: flex-start; margin-bottom: 12px; }
.nt-ch-head .t { font-weight: 600; font-size: 13px; }
.nt-ch-head .d { font-size: 12px; color: var(--ink-3); margin-top: 2px; }
.nt-row { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; margin: 10px 0; }
.nt-row .sub { font-size: 12px; color: var(--ink-3); }
.chk { display: inline-flex; gap: 6px; align-items: center; font-size: 13px; cursor: pointer; user-select: none; }
.chk input { accent-color: var(--accent); width: 15px; height: 15px; }
.nt-type .hint { margin-top: 6px; }
.bar { height: 7px; border-radius: 6px; background: var(--bg-soft); overflow: hidden; }
.bar > span { display: block; height: 100%; border-radius: 6px; background: var(--accent); }
.list { display: flex; flex-direction: column; }
.list-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 0; border-bottom: 1px solid var(--line); }
.list-item:last-child { border-bottom: none; }
.list-item .l { min-width: 0; }
.list-item .t { font-weight: 500; }
.list-item .d { font-size: 12px; color: var(--ink-3); }
.empty { text-align: center; padding: 40px 20px; color: var(--ink-3); }
.empty::before { content: ''; display: block; width: 36px; height: 36px; margin: 0 auto 10px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23a8b6be' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 13h4l2-6 4 12 2-6h6'/%3E%3C/svg%3E") center/contain no-repeat; opacity: .6; }
.empty .big { font-size: 15px; color: var(--ink-2); font-weight: 500; margin-bottom: 6px; }
.loading { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; padding: 32px 20px; color: var(--ink-3); font-size: 12.5px; }
.spinner { width: 22px; height: 22px; border: 2.5px solid var(--line-strong); border-top-color: var(--accent); border-radius: 50%; animation: spin .7s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.spinner-sm { display: inline-block; width: 12px; height: 12px; vertical-align: -1px; border: 2px solid rgba(255, 255, 255, .4); border-top-color: #fff; border-radius: 50%; animation: spin .7s linear infinite; }
.btn:not(.primary):not(.mint) .spinner-sm { border-color: var(--line-strong); border-top-color: var(--ink-2); }
.banner { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; border-radius: var(--radius-sm); font-size: 13px; margin-bottom: 14px; }
.banner.info { background: var(--accent-soft); color: #2a5f92; }
.banner.warn { background: var(--warn-soft); color: #8a5b13; }
.banner.err { background: var(--up-soft); color: #982e2e; }
.banner.ok { background: var(--mint-soft); color: #1f6b5c; }
.banner ul { margin: 4px 0 0; padding-left: 18px; }
.toast-wrap { position: fixed; right: 18px; bottom: 18px; display: flex; flex-direction: column; gap: 8px; z-index: 90; }
.toast { background: #23313a; color: #fff; padding: 11px 15px; border-radius: 10px; font-size: 13px; box-shadow: 0 8px 26px rgba(0, 0, 0, .2); max-width: 340px; animation: slideIn .2s ease; }
.toast.err { background: #a53232; }
.toast.ok { background: #21876a; }
@keyframes slideIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.modal-wrap { position: fixed; inset: 0; background: rgba(23, 37, 44, .42); z-index: 100; display: flex; align-items: center; justify-content: center; padding: 18px; backdrop-filter: blur(2px); }
.modal { background: var(--card); border-radius: 16px; width: 100%; max-width: 620px; max-height: 88vh; overflow-y: auto; box-shadow: 0 20px 60px rgba(0, 0, 0, .22); }
.modal.wide { max-width: 860px; }
.modal-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 18px 20px 0; }
.modal-head h3 { margin: 0; font-size: 16px; font-weight: 600; }
.modal-body { padding: 16px 20px; }
.modal-foot { display: flex; justify-content: flex-end; gap: 8px; padding: 0 20px 18px; flex-wrap: wrap; }
.modal-foot .spacer { flex: 1; }
.x-btn { border: none; background: var(--bg-soft); width: 30px; height: 30px; border-radius: 8px; cursor: pointer; color: var(--ink-2); display: flex; align-items: center; justify-content: center; }
.x-btn:hover { background: var(--line); }
.chart { width: 100%; display: block; }
.tv-chart { width: 100%; display: block; }
.tv-legend { display: flex; flex-wrap: wrap; gap: 6px 20px; margin-bottom: 10px; padding: 0 2px; }
.tv-legend .lg { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--ink-2); }
.tv-legend .lg b { font-variant-numeric: tabular-nums; font-weight: 600; color: var(--ink); }
.tv-legend .lg b.up { color: #e5484d; }
.tv-legend .lg b.down { color: #16a34a; }
.legend-dot { width: 9px; height: 9px; border-radius: 3px; flex: none; }
.spark { display: block; width: 100%; height: 44px; }
.search-box { position: relative; }
.suggest { position: absolute; top: calc(100% + 4px); left: 0; right: 0; background: var(--card); border: 1px solid var(--line-strong); border-radius: 10px; box-shadow: var(--shadow); max-height: 260px; overflow-y: auto; z-index: 20; }
.suggest button { display: flex; width: 100%; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 12px; border: none; background: transparent; cursor: pointer; text-align: left; }
.suggest button:hover { background: var(--bg-soft); }
.suggest .nm { font-weight: 500; }
.suggest .cd { font-size: 11px; color: var(--ink-3); font-family: var(--mono); }
.kv { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px 18px; }
.kv .k { font-size: 12px; color: var(--ink-3); }
.kv .v { font-weight: 600; font-variant-numeric: tabular-nums; }
.hint-line { font-size: 12px; color: var(--ink-3); line-height: 1.7; }
.divider { height: 1px; background: var(--line); margin: 16px 0; }
.tag.mode { font-weight: 500; }
.tag.mode.live { background: var(--mint-soft); color: #1f6b5c; }
.tag.mode.intraday { background: var(--accent-soft); color: #2a5f92; }
.tag.mode.fixed { background: var(--bg-soft); color: var(--ink-2); }
.tag.mode.warn { background: var(--warn-soft); color: var(--warn); }
.tag.mode.settled { background: var(--mint-soft); color: #17795f; box-shadow: inset 0 0 0 1px #cbe9df; }
.cat-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; margin-right: 5px; vertical-align: 1px; flex: none; }
.dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin: 0 3px 0 8px; vertical-align: -1px; flex: none; }
.dot.red { background: #e5484d; }
.dot.green { background: #16a34a; }
.dot.blue { background: #4a8fd4; }
.dot.amber { background: #f0a020; }
.dot.mint { background: #4db6a0; }
.cat-chip { display: inline-block; font-size: 11px; padding: 1px 7px; border-radius: 6px; font-weight: 500; color: var(--cat, var(--ink-2)); background: var(--bg-soft); border: 1px solid transparent; }
@supports (background: color-mix(in srgb, red 10%, white)) { .cat-chip { background: color-mix(in srgb, var(--cat) 12%, #fff); border-color: color-mix(in srgb, var(--cat) 26%, #fff); } }
.metric { position: relative; overflow: hidden; }
.metric .value { font-variant-numeric: tabular-nums; }
.metric.tone-accent { box-shadow: inset 3px 0 0 var(--accent); }
.metric.tone-up { box-shadow: inset 3px 0 0 var(--up); }
.metric.tone-down { box-shadow: inset 3px 0 0 var(--down); }
.alloc-chart { flex: none; }
.col-invest { color: var(--ink-2); }
.mv-cell { display: inline-flex; flex-direction: column; align-items: flex-end; line-height: 1.35; }
.mv-cell strong { font-weight: 600; }
.mv-cell .share { font-size: 10.5px; color: var(--ink-3); font-variant-numeric: tabular-nums; }
.chips { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 12px; }
.chip { display: inline-flex; align-items: center; gap: 7px; padding: 6px 11px; border: 1px solid var(--line); border-radius: 999px; background: var(--bg-soft); font-size: 12.5px; }
.chip .nm { font-weight: 600; }
.chip .vl { font-weight: 600; font-variant-numeric: tabular-nums; }
.group-head { display: flex; align-items: center; gap: 9px; margin: 18px 0 8px; padding-bottom: 7px; border-bottom: 1px solid var(--line); }
.group-head:first-of-type { margin-top: 10px; }
.group-head .gh-date { font-weight: 600; font-size: 13.5px; font-family: var(--mono); }
.group-head .gh-sum { font-size: 12px; color: var(--ink-3); margin-left: auto; }
.notice-banner { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.notice-banner .x-btn { flex: none; background: transparent; border: none; cursor: pointer; color: inherit; opacity: .5; font-size: 14px; line-height: 1; padding: 2px 4px; }
.notice-banner .x-btn:hover { opacity: 1; }
.login-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 24px 18px; }
.login-card { width: 100%; max-width: 386px; background: var(--card); border: 1px solid var(--line); border-radius: 18px; padding: 26px 24px 20px; box-shadow: 0 14px 44px rgba(23, 37, 44, .08); display: flex; flex-direction: column; gap: 14px; }
.login-brand { display: flex; align-items: center; gap: 11px; }
.login-brand .brand-mark { width: 38px; height: 38px; border-radius: 9px; overflow: hidden; background: transparent; display: flex; align-items: center; justify-content: center; flex: none; }
.login-brand .brand-mark img, .wb-monogram img { display: block; width: 100%; height: 100%; object-fit: contain; }
[data-theme="dark"] .login-brand .brand-mark img, [data-theme="dark"] .wb-monogram img { filter: drop-shadow(0 0 .65px rgba(255,255,255,.85)); }
.login-brand h1 { font-size: 16px; font-weight: 600; margin: 0; letter-spacing: .2px; }
.login-brand p { margin: 2px 0 0; font-size: 12px; color: var(--ink-3); }
.login-lock { display: flex; align-items: center; gap: 7px; font-size: 12px; color: var(--ink-2); background: var(--bg-soft); border-radius: 9px; padding: 9px 12px; }
.login-lock svg { color: var(--mint); flex: none; }
.login-err { font-size: 12.5px; color: #982e2e; background: var(--up-soft); border-radius: 9px; padding: 9px 12px; line-height: 1.6; }
.lg-btn { width: 100%; justify-content: center; padding: 10px 14px; font-size: 14px; }
.login-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 11px; color: var(--ink-3); line-height: 1.6; }
.login-foot .lf-ver { font-family: var(--mono); flex: none; }
.check.inline { display: flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--ink-2); cursor: pointer; user-select: none; }
.check.inline input { width: 15px; height: 15px; margin: 0; accent-color: var(--accent); flex: none; }
.sec-state { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 12px 14px; border-radius: 10px; background: var(--bg-soft); margin-bottom: 16px; }
.sec-state .st-dot { width: 8px; height: 8px; border-radius: 50%; flex: none; }
.sec-state.on .st-dot { background: var(--mint); box-shadow: 0 0 0 3px var(--mint-soft); }
.sec-state.off .st-dot { background: var(--line-strong); }
.sec-state .st-txt { font-weight: 600; font-size: 13px; }
.sec-state .st-sub { font-size: 12px; color: var(--ink-3); margin-left: auto; }
.amt-history { display: flex; flex-wrap: wrap; gap: 6px; }
.amt-chip { display: inline-flex; align-items: center; gap: 5px; font-size: 11.5px; padding: 3px 9px; border-radius: 999px; line-height: 1.5; background: #efeafb; color: #7a68c4; font-variant-numeric: tabular-nums; }
.amt-chip b { font-weight: 600; }
.amt-chip.base { background: var(--bg-soft); color: var(--ink-2); }
.correct-now { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 16px; }
.correct-now .cn-item { background: var(--bg-soft); border-radius: 10px; padding: 10px 12px; }
.correct-now .cn-item .l { font-size: 11px; color: var(--ink-3); margin-bottom: 2px; }
.correct-now .cn-item .v { font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums; }
.tx-scroll { max-height: 470px; overflow: auto; margin: 0 -18px; padding: 0 18px; }
.tx-scroll thead th { position: sticky; top: 0; z-index: 2; background: var(--card); box-shadow: inset 0 -1px 0 var(--line); }
.tx-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 12px; flex-wrap: wrap; }
.tx-foot .sub { font-size: 12px; color: var(--ink-3); }
.col-act { width: 1%; white-space: nowrap; text-align: right; }
.nowrap { white-space: nowrap; }
.warn { color: var(--warn); }
.ok { color: var(--mint); }
.sub-head { font-size: 12.5px; color: var(--ink-2); font-weight: 600; margin-bottom: 8px; }
.sub-head .sub { font-weight: 400; color: var(--ink-3); margin-left: 6px; }
.grid.metrics.three { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
.tag.accent { background: var(--accent-soft); color: var(--accent); }
.tag.purple { background: #efeafb; color: #7a68c4; }
.ver-chip { display: inline-flex; align-items: center; gap: 6px; padding: 5px 11px; border-radius: 999px; cursor: pointer; border: 1px solid var(--line-strong); background: var(--card); color: var(--ink-2); font-size: 12px; font-weight: 600; font-variant-numeric: tabular-nums; line-height: 1.4; transition: background .15s, border-color .15s, color .15s; }
.ver-chip:hover { background: var(--accent-soft); border-color: #cfe2f5; color: var(--accent); }
.ver-chip:active { transform: translateY(1px); }
.ver-chip .vc-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--mint); flex: none; box-shadow: 0 0 0 3px var(--mint-soft); }
.ch-body { padding-top: 10px; }
.ch-cur { font-size: 12px; color: var(--ink-3); margin-left: auto; margin-right: 2px; white-space: nowrap; }
.ch-cur strong { color: var(--ink); font-variant-numeric: tabular-nums; }
.ch-summary { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 4px 0 16px; }
.ch-sum-item { background: var(--bg-soft); border-radius: 10px; padding: 9px 12px; }
.ch-sum-item .k { font-size: 11px; color: var(--ink-3); }
.ch-sum-item .v { font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums; }
.ch-timeline { list-style: none; margin: 0; padding: 0; }
.ch-rel { position: relative; padding: 0 0 20px 24px; }
.ch-rel::before { content: ''; position: absolute; left: 5px; top: 17px; bottom: 2px; width: 1px; background: var(--line); }
.ch-rel:last-child { padding-bottom: 2px; }
.ch-rel:last-child::before { display: none; }
.ch-rel-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ch-node { position: absolute; left: 0; top: 5px; width: 11px; height: 11px; border-radius: 50%; background: var(--card); border: 2px solid var(--line-strong); }
.ch-rel.is-latest .ch-node { border-color: var(--mint); background: var(--mint); box-shadow: 0 0 0 4px var(--mint-soft); }
.ch-ver { font-size: 14px; font-weight: 700; font-variant-numeric: tabular-nums; }
.ch-spacer { flex: 1; }
.ch-date { font-size: 12px; color: var(--ink-3); font-variant-numeric: tabular-nums; }
.ch-sub { font-size: 12.5px; color: var(--ink-2); margin: 6px 0 2px; }
.ch-group { margin-top: 10px; }
.ch-g-label { display: flex; align-items: center; gap: 6px; margin-bottom: 6px; }
.ch-g-count { font-size: 11px; color: var(--ink-3); }
.ch-items { margin: 0; padding-left: 18px; }
.ch-items li { font-size: 13px; color: var(--ink-2); margin-bottom: 4px; line-height: 1.65; }
.ch-items li::marker { color: var(--line-strong); }
.ch-foot-hint { font-size: 11.5px; color: var(--ink-3); }
.cal-panel { margin-bottom: 14px; }
button.tap { font: inherit; color: inherit; border: none; margin: 0; text-align: left; cursor: pointer; border-radius: var(--radius-sm); transition: background .15s; }
button.tap:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
button.metric.tap { background: var(--card); }
button.tap:hover, button.tap.on { background: var(--accent-soft); }
.caret { font-size: 10px; opacity: .7; margin-left: 2px; }
.cal-nav { display: flex; align-items: center; gap: 6px; }
.cal-title { font-size: 14px; font-weight: 600; min-width: 92px; text-align: center; font-variant-numeric: tabular-nums; }
.cal-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 16px; }
.cal-stats .metric { background: var(--bg-soft); border-radius: var(--radius-sm); padding: 10px 12px; }
.cal-stats .sep { color: var(--ink-3); margin: 0 3px; font-weight: 400; }
.cal-dow { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; margin-bottom: 6px; }
.cal-dow span { text-align: center; font-size: 12px; color: var(--ink-3); font-weight: 500; }
.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.cal-cell { border: 1px solid var(--line); background: var(--card); border-radius: var(--radius-sm); padding: 6px 2px 7px; min-height: 54px; font: inherit; color: inherit; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; cursor: pointer; transition: border-color .15s, background .15s; }
.cal-cell .d { font-size: 12px; color: var(--ink-3); font-variant-numeric: tabular-nums; }
.cal-cell .v { font-size: 13px; font-weight: 600; font-variant-numeric: tabular-nums; }
.cal-cell.up { background: var(--up-soft); border-color: var(--up-soft); }
.cal-cell.up .v { color: var(--up); }
.cal-cell.down { background: var(--down-soft); border-color: var(--down-soft); }
.cal-cell.down .v { color: var(--down); }
.cal-cell.flat .v { color: var(--ink-3); }
.cal-cell.none { background: var(--bg-soft); cursor: default; }
.cal-cell.none .v { color: var(--ink-3); font-weight: 400; }
.cal-cell.empty { border: none; background: none; cursor: default; min-height: 0; }
.cal-cell.empty::before { content: none; }
.cal-cell.today { border-color: var(--accent); }
.cal-cell.today .d { color: var(--accent); font-weight: 600; }
.cal-cell.open { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-soft); }
.cal-cell:hover:not(.empty):not(.none) { border-color: var(--line-strong); }
.cal-cell:disabled { cursor: default; }
.cal-detail { margin-top: 16px; border-top: 1px solid var(--line); padding-top: 14px; }
.cal-detail .cd-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.cal-detail .cd-head strong { font-size: 14px; }
.cal-detail .cd-head .sub { font-size: 12px; color: var(--ink-3); }
.cal-detail .cd-trades { margin-top: 10px; display: flex; gap: 6px; flex-wrap: wrap; align-items: center; font-size: 12px; color: var(--ink-2); }
@media (max-width: 560px) { .cal-stats { grid-template-columns: repeat(2, 1fr); }
.cal-grid, .cal-dow { gap: 4px; }
.cal-cell { min-height: 48px; padding: 5px 1px 6px; }
.cal-cell .d { font-size: 11px; }
.cal-cell .v { font-size: 11.5px; }
.cal-title { min-width: 78px; font-size: 13px; } }
.market-workspace { background: var(--card); border: 1px solid var(--line); border-radius: 10px; overflow: hidden; box-shadow: var(--shadow); }
.market-top { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 22px; border-bottom: 1px solid var(--line); }
.market-eyebrow { display: block; font-size: 14px; color: var(--ink-3); letter-spacing: 1.8px; }
.market-title { display: inline-block; margin: 3px 12px 0 0; font-size: 23px; letter-spacing: -.6px; line-height: 1.4; }
.market-code { font: 14px var(--mono); color: var(--ink-2); }
.market-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.market-body { display: grid; grid-template-columns: minmax(0, 1fr) 288px; }
.market-main { min-width: 0; }
.market-toolbar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; padding: 10px 14px; border-bottom: 1px solid var(--line); }
.market-periods, .market-native-tools, .market-indicators, .market-range { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; }
.market-workspace button { cursor: pointer; }
.market-toolbar button, .market-indicators button, .market-range button { min-width: 44px; min-height: 44px; }
.market-toolbar button, .market-indicators button, .market-range button { border: 0; padding: 5px 9px; border-radius: 10px; background: transparent; font-size: 14px; color: var(--ink-2); white-space: nowrap; }
.market-toolbar button:hover, .market-range button:hover { background: var(--bg-soft); }
.market-toolbar button.on { background: var(--accent-soft); color: var(--accent); font-weight: 700; }
.market-workspace button:disabled { cursor: not-allowed; opacity: .35; }
.market-indicators { padding: 7px 15px 0; }
.market-indicators button { opacity: .5; padding-left: 0; padding-right: 12px; }
.market-indicators button.on { color: var(--ema, var(--accent)); opacity: 1; }
.market-ohlc { display: flex; flex-wrap: wrap; gap: 14px; min-height: 34px; padding: 4px 16px; font-size: 14px; color: var(--ink-3); font-variant-numeric: tabular-nums; }
.market-ohlc b { color: var(--ink); font-weight: 500; }
.market-canvas { height: clamp(420px, 62vh, 750px); width: 100%; position: relative; contain: layout; }
.market-canvas *, .market-canvas *::before, .market-canvas *::after { transition: none !important; }
.market-bottom { padding: 6px 14px 10px; border-top: 1px solid var(--line); }
.market-status { margin: 4px 2px 0; font-size: 14px; color: var(--ink-2); line-height: 1.7; }
.market-sidebar { min-width: 0; border-left: 1px solid var(--line); background: var(--bg-soft); }
.market-side-title { display: flex; flex-direction: column; padding: 16px; gap: 2px; }
.market-side-title strong { font-size: 14px; }
.market-side-title span { font-size: 14px; color: var(--ink-3); }
.market-watch-row { display: flex; position: relative; }
.market-watch-row > button:first-child { display: flex; flex-direction: column; text-align: left; width: 100%; gap: 2px; padding: 11px 148px 11px 16px; min-height: 66px; border: none; border-left: 3px solid transparent; background: transparent; }
.market-watch-row > button:first-child.on { background: var(--card); border-left-color: var(--accent); color: var(--accent); }
.market-watch-row small { font: 14px var(--mono); color: var(--ink-3); }
.market-remove { position: absolute; right: 5px; top: 50%; transform: translateY(-50%); width: 44px; height: 44px; border-radius: 10px; background: transparent; border: 0; color: var(--ink-3); font-size: 21px; }
.market-remove:hover { color: var(--up); background: var(--card); }
input.market-watch-search { box-sizing: border-box; width: calc(100% - 24px); margin: 0 12px 8px; padding: 9px 11px; border: 1px solid var(--line); border-radius: 10px; background: var(--card); color: var(--ink); font: inherit; }
.market-restore { margin: 0 12px 8px; border: 0; background: transparent; color: var(--accent); font: inherit; font-size: 14px; cursor: pointer; }
.market-restore[hidden] { display: none; }
.market-watch-empty { padding: 18px 14px; color: var(--ink-3); font-size: 14px; }
.market-free-drag { cursor: grab; }
.market-free-drag:active { cursor: grabbing; }
.market-add { margin: 14px; border-top: 1px solid var(--line); padding-top: 14px; }
.market-add summary { cursor: pointer; min-height: 44px; color: var(--accent); font-size: 14px; }
.market-add form { margin-top: 12px; }
.market-add label { display: block; margin-bottom: 8px; font-size: 14px; color: var(--ink-2); }
.market-add input, .market-add select { width: 100%; padding: 8px; margin-top: 3px; border: 1px solid var(--line); border-radius: 10px; background: var(--card); }
.market-add p, .market-help { font-size: 14px; color: var(--ink-3); line-height: 1.8; }
.market-help { padding: 0 16px 16px; }
.market-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; gap: 12px; padding: 25px; text-align: center; }
.market-empty p { color: var(--ink-2); }
.market-attribution { display: block; height: 28px; text-align: center; font-size: 12px; padding: 5px; }
.market-workspace [hidden] { display: none !important; }
.market-workspace:fullscreen { border-radius: 0; overflow: auto; }
.market-workspace:fullscreen .market-canvas { height: calc(100dvh - 220px); }
.market-order { position: absolute; right: 51px; top: 50%; transform: translateY(-50%); display: flex; gap: 2px; }
.market-order button { width: 44px; height: 44px; padding: 0; background: transparent; color: var(--ink-2); border: 1px solid var(--line); border-radius: 10px; font-size: 15px; }
.market-order button:hover:not(:disabled) { color: var(--accent); background: var(--accent-soft); }
.market-watch-row > button:first-child span { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.market-expanded-open { overflow: hidden; }
.market-workspace.market-expanded { position: fixed; inset: 0; z-index: 110; width: 100%; height: 100dvh; box-sizing: border-box; border: 0; border-radius: 0; display: flex; flex-direction: column; padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left); }
.market-expanded .market-top { flex-shrink: 0; padding: 10px 16px; }
.market-expanded .market-body { flex: 1; min-height: 0; }
.market-expanded .market-main { display: flex; flex-direction: column; min-height: 0; }
.market-expanded .market-canvas { flex: 1; height: auto; min-height: 160px; }
.market-expanded .market-sidebar { overflow: auto; }
.market-expanded .market-toolbar, .market-expanded .market-indicators, .market-expanded .market-ohlc, .market-expanded .market-bottom { flex-shrink: 0; }
.market-focus-controls { display: none; }
.market-expanded .market-focus-controls { display: flex; position: absolute; right: max(10px, env(safe-area-inset-right)); top: max(8px, env(safe-area-inset-top)); gap: 4px; z-index: 5; }
.market-focus-controls button { width: 44px; height: 44px; border: 1px solid var(--line); border-radius: 7px; background: var(--card); color: var(--ink); opacity: .7; font-size: 17px; box-shadow: var(--shadow); }
.market-focus-controls button:hover, .market-focus-controls button:focus-visible { opacity: 1; }
.market-expanded:not(.market-focus) .market-focus-controls { top: auto; bottom: max(10px, env(safe-area-inset-bottom)); }
.market-focus .market-top, .market-focus .market-sidebar, .market-focus .market-toolbar, .market-focus .market-indicators, .market-focus .market-ohlc, .market-focus .market-bottom { display: none; }
.market-focus .market-body { display: flex; }
.market-focus .market-main { width: 100%; flex: 1; }
.market-focus .market-canvas { min-height: 0; }
.market-focus .tradingview-widget-container__widget { height: 100% !important; }
.market-focus .market-attribution { position: absolute; bottom: 3px; left: 46px; height: auto; padding: 1px 4px; font-size: 9px; line-height: 12px; background: var(--card); border-radius: 3px; }
@media (max-width: 720px) { .market-top { padding: 13px; flex-direction: column; align-items: flex-start; gap: 10px; }
.market-title { font-size: 21px; }
.market-toolbar button, .market-indicators button, .market-range button, .market-code, .market-side-title span, .market-restore, .market-watch-empty, .market-add summary, .market-add label, .market-add p, .market-help { font-size: 15px; }
.market-body { display: flex; flex-direction: column-reverse; }
.market-sidebar { border-left: 0; border-bottom: 1px solid var(--line); background: var(--card); }
.market-side-title, .market-help { display: none; }
.market-watchlist { display: flex; overflow-x: auto; padding: 7px 9px; gap: 5px; }
.market-watch-row { flex: 0 0 330px; max-width: calc(100vw - 44px); }
.market-watch-row > button:first-child { border: 1px solid var(--line); border-radius: 6px; padding: 8px 148px 8px 10px; min-height: 66px; font-size: 15px; }
.market-watch-row > button:first-child span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 160px; }
.market-watch-row > button:first-child.on { border-color: var(--accent); background: var(--accent-soft); }
.market-watch-row small { font-size: 15px; }
input.market-watch-search { margin-top: 10px; margin-bottom: 0; }
.market-add { margin: 0; border: 0; padding: 0 12px 9px; }
.market-add form { max-width: 400px; padding-bottom: 8px; }
.market-toolbar { padding: 6px 8px; gap: 2px; }
.market-toolbar button { padding: 6px 8px; }
.market-ohlc { gap: 8px; padding: 6px 10px; font-size: 15px; }
.market-canvas { height: 440px; }
.market-actions .btn { font-size: 15px; }
.market-status { font-size: 15px; }
.market-expanded .market-top { flex-direction: row; flex-wrap: wrap; padding: 8px 10px; gap: 4px; }
.market-expanded .market-eyebrow { display: none; }
.market-expanded .market-title { font-size: 17px; }
.market-expanded .market-sidebar { max-height: 135px; flex-shrink: 0; }
.market-expanded .market-main { flex: 1; }
.market-expanded .market-status { max-height: 32px; overflow: auto; }
.market-expanded .market-ohlc { min-height: 0; } }
:root { --sat: env(safe-area-inset-top, 0px); --sab: env(safe-area-inset-bottom, 0px); --sal: env(safe-area-inset-left, 0px); --sar: env(safe-area-inset-right, 0px); --tabbar-h: 60px; }
html { -webkit-tap-highlight-color: transparent; }
.login-wrap { min-height: 100vh; min-height: 100dvh; padding: calc(24px + var(--sat)) calc(18px + var(--sar)) calc(24px + var(--sab)) calc(18px + var(--sal)); }
.toast-wrap { bottom: calc(18px + var(--sab)); right: calc(18px + var(--sar)); }
.modal { max-height: 88vh; max-height: calc(92dvh - var(--sat) - var(--sab)); }
@media (max-width: 720px) { html, body { font-size: 15px; }
body { overflow-x: hidden; }
.toast-wrap { bottom: calc(var(--tabbar-h) + 16px + var(--sab)); left: 12px; right: 12px; }
.toast { max-width: none; }
input:not([type=checkbox]):not([type=radio]), select, textarea { font-size: 16px; }
.btn { min-height: 44px; padding: 10px 15px; }
.btn.sm { min-height: 44px; padding: 8px 12px; font-size: 13px; }
.x-btn { width: 44px; height: 44px; }
.ver-chip { min-height: 44px; }
.modal-wrap { padding: 0; align-items: flex-end; }
.modal { max-width: none; width: 100%; border-radius: 12px 12px 0 0; max-height: 92dvh; padding-bottom: var(--sab); }
.modal.wide { max-width: none; }
.modal-head { padding: 16px 16px 0; }
.modal-body { padding: 14px 16px; }
.modal-foot { padding: 0 16px 18px; gap: 10px; }
.modal-foot .btn { min-height: 46px; flex: 1 1 auto; }
.mcards { display: flex; flex-direction: column; gap: 10px; }
.mcard { background: var(--card); border: 1px solid var(--line); border-radius: 13px; padding: 12px 13px; display: flex; flex-direction: column; gap: 10px; }
.mcard[data-act]:active { background: var(--bg-soft); }
.mcard .mc-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.mcard .mc-name { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.mcard .mc-name .nm { font-weight: 600; font-size: 14.5px; line-height: 1.35; }
.mcard .mc-name .cd { font-size: 11.5px; color: var(--ink-3); font-family: var(--mono); }
.mcard .mc-hero { flex: none; text-align: right; }
.mcard .mc-hero .vl { font-size: 16.5px; font-weight: 600; font-variant-numeric: tabular-nums; }
.mcard .mc-hero .sh { font-size: 11px; color: var(--ink-3); margin-top: 2px; }
.mcard .mc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 7px 14px; }
.mcard .mf { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; min-width: 0; }
.mcard .mf .k { font-size: 11.5px; color: var(--ink-3); flex: none; }
.mcard .mf .v { font-size: 13.5px; font-weight: 600; text-align: right; font-variant-numeric: tabular-nums; min-width: 0; }
.mcard .mc-foot { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; font-size: 11.5px; color: var(--ink-3); padding-top: 9px; border-top: 1px dashed var(--line); }
.mcard .mc-note { font-size: 12px; color: var(--ink-2); }
.mcard .mc-acts { display: flex; justify-content: flex-end; gap: 8px; }
.mcard .mc-acts .btn { min-height: 44px; }
.card { padding: 16px 0; border-radius: 0; }
.card-head { gap: 6px; margin-bottom: 12px; }
.card-head .sub { margin-left: 0; width: 100%; }
.table-wrap { margin: 0; padding: 0; }
.grid { gap: 10px; }
.grid.c2, .grid.c3 { grid-template-columns: 1fr; }
.grid.metrics, .grid.metrics.three { grid-template-columns: 1fr 1fr; gap: 9px; }
.grid.metrics.three > :nth-child(3):last-child { grid-column: 1 / -1; }
.metric { padding: 12px 0; border-radius: 0; }
.metric .value { font-size: 19px; }
.metric .value.sm { font-size: 16px; }
.correct-now { grid-template-columns: 1fr 1fr; }
.plan { padding: 13px; gap: 10px; }
.plan-stats { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 7px; }
.plan-stats .s:first-child { grid-column: 1 / -1; }
.plan-stats .s .l, .plan-meta { font-size: 15px; }
.plan-stats .s { min-width: 0; }
.plan-stats .s { padding: 7px 8px; }
.plan-stats .s .v { font-size: 16px; overflow-wrap: anywhere; }
.list-item { align-items: flex-start; gap: 8px; }
.list-item .num { flex-wrap: wrap; }
.cal-stats { grid-template-columns: 1fr 1fr; gap: 8px; }
.cal-cell { min-height: 50px; padding: 5px 1px 6px; }
.cal-cell .d { font-size: 11px; }
.cal-cell .v { font-size: 11.5px; }
.cal-title { min-width: 80px; font-size: 13px; }
.cal-detail .cd-trades { font-size: 11.5px; }
.chips { gap: 6px; }
.chip { padding: 5px 10px; font-size: 12px; } }
.sheet-mask { position: fixed; inset: 0; z-index: 95; background: rgba(23, 37, 44, .42); animation: fadeIn .16s ease; }
.sheet { position: fixed; left: 0; right: 0; bottom: 0; z-index: 96; display: flex; flex-direction: column; gap: 2px; max-height: calc(100dvh - 16px); overflow-y: auto; overscroll-behavior: contain; background: var(--card); border-radius: 12px 12px 0 0; padding: 6px calc(10px + var(--sar)) calc(14px + var(--sab)) calc(10px + var(--sal)); box-shadow: 0 -12px 40px rgba(23, 37, 44, .22); animation: sheetUp .22s cubic-bezier(.2, .8, .3, 1); }
.sheet > * { flex-shrink: 0; }
.sheet-grip { width: 38px; height: 4px; border-radius: 3px; margin: 4px auto 6px; background: var(--line-strong); }
.sheet-title { display: flex; align-items: center; justify-content: space-between; font-size: 14px; color: var(--ink-2); padding: 0 12px; margin-bottom: 6px; }
.sheet-title .btn { min-height: 44px; }
.sheet-item { display: flex; align-items: center; gap: 12px; width: 100%; padding: 13px 12px; border: none; border-radius: 12px; background: transparent; font: inherit; color: var(--ink); text-align: left; cursor: pointer; }
.sheet-item:active { background: var(--bg-soft); }
.sheet-item.on { background: var(--accent-soft); color: var(--accent); font-weight: 600; }
.sheet-item .ic { width: 22px; height: 22px; flex: none; }
.sheet-item .ic svg { width: 100%; height: 100%; display: block; }
.sheet-item .lb { flex: 1; }
.sheet-item .cnt { font-size: 11px; padding: 1px 7px; border-radius: 8px; background: var(--warn); color: #fff; font-variant-numeric: tabular-nums; }
@keyframes sheetUp { from { transform: translateY(100%); } to { transform: none; } }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@media (min-width: 721px) { .sheet, .sheet-mask { display: none; } }

/* Private ledger: permanent dark rail and editorial financial workspace. */
.workbench { min-height: 100dvh; }
.workbench :where(small,.label,.sub,.hint,.hint-line,.tag,.chip,.plan-meta,.plan-stats .s .l,.stale-hint,.field > label,.kv .k,.metric .foot,.name-cell .cd,table.data th) { font-size: 14px; }
.workbench .btn.sm, .workbench .seg button { min-height: 44px; font-size: 14px; }
.wb-sidebar { position: fixed; inset: 0 auto 0 0; z-index: 70; width: 208px; display: flex; flex-direction: column; overflow-y: auto; overscroll-behavior: contain; padding: 28px 0 18px; border-right: 1px solid #171a20; background: #080a0e; color: #f4f5f7; }
.wb-sidebar > * { flex-shrink: 0; }
.wb-brand { display: flex; align-items: center; gap: 10px; padding: 0 18px 36px; font-size: 14px; font-weight: 600; }
.wb-brand .ic, .wb-brand-mark, .wb-monogram { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; flex: none; border: 1px solid #b1bac7; color: #fff; font: 18px var(--mono); letter-spacing: -1px; }
.wb-brand .wb-monogram { border: 0; border-radius: 8px; overflow: hidden; }
.wb-brand svg { width: 22px; height: 22px; }
.wb-brand small { display: block; margin-top: 5px; color: #8d96a5; font: 10px var(--mono); letter-spacing: .6px; }
.wb-nav { display: flex; flex-direction: column; }
.wb-nav-label, .wb-nav-section { padding: 12px 22px 10px; font-size: 12px; color: #6b7483; letter-spacing: 1px; }
.wb-nav-button { display: flex; align-items: center; gap: 12px; min-height: 48px; width: 100%; padding: 10px 20px; border: 0; border-left: 2px solid transparent; border-radius: 0; color: #929dad; background: transparent; cursor: pointer; text-align: left; }
.wb-nav-button:hover { color: #fff; background: #131720; }
.wb-nav-button.active { border-left-color: #619cff; color: #fff; background: #11151c; }
.wb-nav-button .ic { display: block; flex: none; width: 18px; height: 18px; }
.wb-nav-button .ic svg { display: block; width: 100%; height: 100%; }
.wb-nav-button .lb { flex: 1; }
.wb-nav-button .cnt { font: 12px var(--mono); color: #a8b5c7; }
.wb-sidebar-footer { margin-top: auto; border-top: 1px solid #20242d; padding-top: 12px; }
.wb-main { margin-left: 208px; padding: 0 40px 40px; }
.wb-main > :not(.wb-toolbar) { max-width: 1360px; margin-left: auto; margin-right: auto; }
.wb-toolbar { position: sticky; top: 0; z-index: 60; display: flex; align-items: center; justify-content: space-between; min-height: 88px; gap: 16px; padding: 18px 0; margin-bottom: 24px; border-bottom: 1px solid var(--line); background: var(--bg); }
.wb-toolbar h1 { margin: 0; font-size: 20px; font-weight: 500; line-height: 1.35; }
.wb-toolbar .sub, .wb-status { color: var(--ink-3); font-size: 14px; }
.wb-tools { display: flex; align-items: center; gap: 8px; }
.wb-tools .btn.primary { background: var(--ink); border-color: var(--ink); color: var(--bg); }
.wb-mobile-nav { display: none; }
.wb-preview { margin-bottom: 18px; padding: 8px 0; border-bottom: 1px solid var(--line); color: var(--ink-2); font-size: 14px; }
.wb-overview { display: flex; flex-direction: column; gap: 0; }
.wb-ledger-heading, .wb-ledger-intro { margin-bottom: 16px; color: var(--ink-3); font: 12px var(--mono); letter-spacing: 1.8px; }
.wb-section { min-width: 0; margin: 0 0 28px; padding: 0 0 24px; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: transparent; }
.wb-section-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 20px; }
.wb-section-head h2 { margin: 0; font-size: 20px; font-weight: 500; letter-spacing: -.3px; }
.wb-section-head > div, .wb-section-head .btn-row { display: flex; align-items: center; gap: 6px; }
.wb-section-index { margin-right: 10px; color: var(--ink-3); font: 12px var(--mono); vertical-align: 2px; }
.wb-section-head .btn { color: var(--ink-3); padding: 4px 7px; border: 0; background: transparent; }
.wb-section-head .btn:hover { color: var(--ink); background: var(--bg-soft); }
.wb-allocation { display: flex; flex-direction: column; align-items: stretch; gap: 16px; }
.wb-allocation .alloc-chart { align-self: center; padding: 8px 0 12px; }
.wb-allocation svg { width: 216px; height: 216px; }
.wb-dial-ticks { stroke: var(--line-strong); }
.wb-dial-track { stroke: var(--bg-soft); }
.wb-dial-inner { stroke: var(--line); stroke-width: 1; }
.wb-dial-segment { transition: stroke-width .15s; }
.wb-dial-segment:hover { stroke-width: 22; }
.wb-dial-label { fill: var(--ink-3); font-size: 12px; }
.wb-dial-value { fill: var(--ink); font-size: 17px; font-weight: 650; font-variant-numeric: tabular-nums; }
.wb-curve-legend { display: flex; gap: 14px; flex-wrap: wrap; font-size: 14px; }
.wb-curve-legend span { display: inline-flex; align-items: center; gap: 6px; }
.wb-curve-legend i { width: 16px; height: 3px; border-radius: 2px; }
.wb-allocation-list { display: flex; flex-direction: column; min-width: 0; }
.wb-allocation-row { display: grid; grid-template-columns: minmax(0,1fr) auto 50px; align-items: center; gap: 10px; width: 100%; min-height: 44px; padding: 11px 0; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: transparent; color: var(--ink); text-align: left; font-size: 14px; }
button.wb-allocation-row { cursor: pointer; }
button.wb-allocation-row:hover { background: var(--bg-soft); }
.wb-allocation-row:last-child { border-bottom: 0; }
.wb-allocation-row .nm { min-width: 0; white-space: normal; overflow-wrap: anywhere; }
.wb-allocation-row .legend-dot { display: inline-block; width: 6px; height: 6px; margin-right: 7px; border-radius: 0; }
.wb-allocation-row strong { font-weight: 500; font-variant-numeric: tabular-nums; text-align: right; }
.wb-allocation-row > span:last-child { text-align: right; color: var(--ink-3); }
.wb-allocation-row small { display: block; color: var(--ink-3); font-size: 14px; }
.wb-allocation-row:not(:has(>span:nth-child(3))) { grid-template-columns: minmax(0,1fr) auto; }
.wb-allocation-bar { display: block; height: 2px; background: var(--line); margin-top: 8px; }
.wb-allocation-bar i { display: block; height: 100%; }
.wb-section .seg { margin-bottom: 20px; }
.wb-section .seg button.on { color: var(--ink); border-bottom-color: var(--ink); background: transparent; }
.wb-movers { display: flex; flex-direction: column; }
.wb-mover { display: grid; grid-template-columns: 28px minmax(0,1fr) auto; align-items: center; gap: 14px; width: 100%; min-height: 76px; padding: 14px 0; border: 0; border-bottom: 1px solid var(--line); background: transparent; text-align: left; cursor: pointer; }
.wb-mover:last-child { border-bottom: 0; }
.wb-mover:hover { background: var(--bg-soft); }
.wb-mover-rank { align-self: start; padding-top: 4px; font: 12px var(--mono); color: var(--ink-3); }
.wb-mover-name { min-width: 0; }
.wb-mover-name strong { font-weight: 500; }
.wb-mover small { display: block; color: var(--ink-3); font-size: 14px; }
.wb-mover-value { text-align: right; font-variant-numeric: tabular-nums; }
.wb-mover-value b { font-size: 18px; font-weight: 500; }
body.wb-dialog-open { overflow: hidden; }
.wb-detail-wrap { position: fixed; inset: 0; z-index: 96; display: flex; justify-content: flex-end; background: rgba(0,0,0,.4); }
.wb-detail { display: flex; flex-direction: column; width: min(760px,90vw); height: 100dvh; background: var(--bg); border-left: 1px solid var(--line); }
.wb-detail-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 22px 28px; border-bottom: 1px solid var(--ink); }
.wb-detail-header h2 { margin: 2px 0 0; font-size: 28px; font-weight: 500; }
.wb-detail-header .sub { color: var(--ink-3); font: 12px var(--mono); letter-spacing: 1px; }
.wb-detail-tabs { display: flex; gap: 20px; padding: 0 28px; overflow-x: auto; border-bottom: 1px solid var(--line); }
.wb-detail-tabs button { min-height: 52px; padding: 8px 0; border: 0; border-bottom: 2px solid transparent; border-radius: 0; background: transparent; color: var(--ink-2); cursor: pointer; white-space: nowrap; }
.wb-detail-tabs button[aria-selected="true"] { color: var(--ink); border-bottom-color: var(--ink); }
.wb-detail-body { flex: 1; min-height: 0; overflow-y: auto; padding: 24px 28px; }
.wb-position-list { display: flex; flex-direction: column; }
.wb-position-row { padding: 10px 0; border-bottom: 1px solid var(--line); }
.wb-position-header { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 12px; align-items: start; }
.wb-position-market { text-align: right; font-variant-numeric: tabular-nums; }
.wb-position-market small { display: block; color: var(--ink-3); }
.wb-position-market strong { font-size: 17px; font-weight: 600; }
.wb-position-footer { display: flex; gap: 8px; align-items: center; justify-content: space-between; flex-wrap: wrap; margin-top: 6px; }
.wb-position-footer .chips { flex: 1; margin: 0; }
.wb-position-footer .wb-position-actions { margin-top: 0; gap: 2px; }
.wb-position-name { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; min-height: 44px; padding: 0; border: 0; background: transparent; text-align: left; cursor: pointer; }
.wb-position-name strong { font-weight: 500; white-space: normal; overflow-wrap: anywhere; }
.wb-position-name small { display: block; color: var(--ink-3); font-size: 14px; }
.wb-position-values { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; margin-top: 6px; }
.wb-holding-search { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; }
.wb-holding-search input { width: min(320px,100%); flex: 1 1 160px; }
.wb-position-values > div { min-width: 0; }
.wb-position-values small { display: block; color: var(--ink-3); font-size: 14px; }
.wb-position-values strong { display: block; font-size: 16px; font-weight: 500; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.wb-position-actions { display: flex; align-items: center; gap: 6px; justify-content: flex-end; margin-top: 12px; }
.wb-position-table { overflow-x: auto; width: 100%; table-layout: fixed; }
.wb-position-table th:first-child { width: 28%; }
.wb-position-table th:last-child { width: 180px; }
.wb-position-table td { white-space: normal; overflow-wrap: anywhere; }
.wb-position-table td small { display: block; font-size: 13px; color: var(--ink-3); }
.wb-position-table td small.up { color: var(--up); }
.wb-position-table td small.down { color: var(--down); }
.wb-position-table .wb-position-name { width: 100%; }
.wb-section-title { display: flex; gap: 12px; align-items: center; min-width: 0; }
.wb-section-title .wb-collapse { display: inline-flex; gap: 5px; min-height: 36px; border: 1px solid var(--line); border-radius: 6px; padding: 4px 8px; font-size: 13px; }
.wb-collapse svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.6; transition: transform .15s; }
.wb-collapse[aria-expanded="true"] svg { transform: rotate(180deg); }
.wb-position-extra { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 5px 12px; margin: 8px 0; }
.wb-position-extra > div { display: flex; justify-content: space-between; gap: 8px; min-width: 0; }
.wb-position-extra small { color: var(--ink-3); }
.wb-position-extra b { font-weight: 500; overflow-wrap: anywhere; }
.wb-trade-toolbar { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; padding: 12px 0 20px; border-bottom: 1px solid var(--line); }
.wb-trade-toolbar h2 { font-size: 20px; margin: 0; }
.wb-trade-toolbar p { margin: 5px 0 0; }
.wb-trade-filters { display: flex; justify-content: space-between; gap: 16px; align-items: center; flex-wrap: wrap; margin: 16px 0 10px; }
.wb-trade-filters form { display: flex; gap: 8px; max-width: 100%; }
.wb-trade-filters input { width: 280px; min-width: 0; min-height: 44px; background: var(--card); color: var(--ink); border: 1px solid var(--line-strong); border-radius: 6px; padding: 8px 12px; }
.wb-trade-records { max-height: none; overflow: visible; margin: 12px 0 0; padding: 0; }
.wb-tx-record { padding: 18px 0; border-bottom: 1px solid var(--line); }
.wb-tx-main { display: grid; grid-template-columns: 100px minmax(0,1fr) 120px 150px 64px; gap: 16px; align-items: center; }
.wb-tx-name { min-width: 0; overflow-wrap: anywhere; }
.wb-tx-name strong { font-weight: 600; }
.wb-tx-main small { display: block; font-size: 13px; color: var(--ink-3); }
.wb-tx-main > .tag { justify-self: start; white-space: normal; }
.wb-tx-amount { text-align: right; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
.wb-tx-amount strong { font-size: 20px; }
.wb-tx-details { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 8px 16px; margin: 12px 0 0 116px; color: var(--ink-3); }
.wb-tx-details b { color: var(--ink); font-weight: 500; overflow-wrap: anywhere; }
.wb-tx-note { margin: 8px 0 0 116px; overflow-wrap: anywhere; color: var(--ink-2); font-size: 14px; }
.wb-trade-assets { margin-top: 28px; padding-top: 20px; border-top: 1px solid var(--line-strong); }
.wb-trade-assets .list-item { flex-wrap: wrap; }
.wb-trade-assets .list-item .l { min-width: 0; overflow-wrap: anywhere; flex: 1 1 240px; }
@media (max-width:1023px) {
  .wb-position-table th:last-child { width: 156px; }
  .wb-position-table th:first-child { width: 24%; }
  .wb-position-table .wb-position-actions { flex-wrap: wrap; }
  .wb-position-table th .btn { white-space: normal; }
}
@media (max-width:720px) {
  .wb-section-title { gap: 8px; }
  .wb-section-title .wb-collapse { min-height: 44px; font-size: 14px; }
  .wb-position-extra { font-size: 14px; }
  .wb-position-extra > div { flex-direction: column; gap: 0; }
  .wb-trade-filters form { width: 100%; }
  .wb-trade-filters input { flex: 1; width: 0; }
  .wb-trade-filters .seg { flex-wrap: wrap; }
  .wb-tx-main { grid-template-columns: minmax(0,1fr) auto; gap: 8px 12px; }
  .wb-tx-main time { grid-column: 1; grid-row: 1; color: var(--ink-3); }
  .wb-tx-main > .tag { grid-column: 2; grid-row: 1; justify-self: end; }
  .wb-tx-name { grid-column: 1 / -1; grid-row: 2; }
  .wb-tx-amount { text-align: left; grid-column: 1; grid-row: 3; }
  .wb-tx-main > button { grid-column: 2; grid-row: 3; }
  .wb-tx-details { grid-template-columns: repeat(2,minmax(0,1fr)); margin-left: 0; font-size: 14px; }
  .wb-tx-note { margin-left: 0; }
}
.wb-position-table td { padding: 6px 8px; }
.wb-position-table .wb-position-actions { margin: 0; gap: 2px; }
.wb-position-table td:first-child { min-width: 160px; max-width: 240px; white-space: normal; }
.wb-position-table .chips { margin-top: 4px; margin-bottom: 0; }
.wb-plan-list { display: grid; grid-template-columns: repeat(auto-fit,minmax(290px,1fr)); gap: 20px; }
.wb-plan-metrics { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 24px; margin-bottom: 24px; border-top: 1px solid var(--ink); }
.wb-plan-metrics > div { display: flex; flex-direction: column; gap: 5px; padding: 18px 0; border-bottom: 1px solid var(--line); }
.wb-plan-metrics .label, .wb-plan-metrics small { color: var(--ink-2); font-size: 14px; }
.wb-plan-metrics > div > strong { font-size: 28px; font-weight: 500; }
@media (min-width:721px) and (max-width:1150px) {
  .wb-main { padding-left: 28px; padding-right: 28px; }
  .wb-section-head { flex-wrap: wrap; gap: 6px; }
}
@media (min-width:721px) and (max-width:1023px) {
  .wb-sidebar { width: 72px; padding-top: 24px; }
  .wb-brand { justify-content: center; padding: 0 0 30px; }
  .wb-brand > span:not(.ic):not(.wb-brand-mark):not(.wb-monogram), .wb-brand > div:not(.wb-brand-mark):not(.wb-monogram), .wb-nav-button .lb, .wb-nav-button .cnt, .wb-nav-label, .wb-nav-section { display: none; }
  .wb-nav-button { justify-content: center; padding: 12px; }
  .wb-main { margin-left: 72px; padding-left: 24px; padding-right: 24px; }
}
@media (max-width:720px) {
  html, body { font-size: 15px; }
  .workbench :where(small,.label,.sub,.hint,.hint-line,.tag,.chip,.plan-meta,.plan-stats .s .l,.stale-hint,.field > label,.kv .k,.metric .foot,.name-cell .cd,table.data th), .workbench .btn.sm, .workbench .seg button { font-size: 15px; }
  .wb-sidebar { display: none; }
  .wb-main { margin-left: 0; padding: 0 calc(18px + var(--sar)) calc(88px + var(--sab)) calc(18px + var(--sal)); }
  .wb-toolbar { min-height: 76px; gap: 10px; margin-bottom: 18px; padding-top: calc(12px + var(--sat)); }
  .wb-toolbar h1 { font-size: 18px; }
  .wb-toolbar .sub { font-size: 15px; }
  .wb-tools { gap: 6px; }
  .wb-tools .btn { padding: 8px 10px; font-size: 15px; }
  .wb-mobile-nav { position: fixed; inset: auto 0 0; z-index: 80; display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); padding: 5px calc(4px + var(--sar)) calc(5px + var(--sab)) calc(4px + var(--sal)); border-top: 1px solid var(--line); background: var(--bg); }
  .wb-mobile-nav .wb-nav-button { position: relative; min-height: 58px; flex-direction: column; gap: 4px; padding: 6px 2px; border: 0; color: var(--ink-2); font-size: 14px; text-align: center; }
  .wb-mobile-nav .wb-nav-button.active { background: transparent; color: var(--accent); }
  .wb-mobile-nav .wb-nav-button.active::before { content: ""; position: absolute; top: -5px; left: 24%; right: 24%; height: 2px; background: var(--accent); }
  .wb-mobile-nav .wb-nav-button .lb { flex: none; }
  .wb-mobile-nav .cnt { position: absolute; top: 1px; right: 12%; font-size: 11px; color: var(--accent); }
  .wb-section { margin-bottom: 22px; padding-bottom: 20px; }
  .wb-section-head { gap: 8px; flex-wrap: wrap; margin-bottom: 12px; }
  .wb-section-head h2 { font-size: 18px; }
  .wb-section-head .btn-row { gap: 2px; }
  .wb-section-index { font-size: 12px; }
  .wb-mover { grid-template-columns: 24px minmax(0,1fr) auto; gap: 10px; }
  .wb-mover-value b { font-size: 18px; }
  .wb-allocation { gap: 12px; }
  .wb-detail { width: 100%; border: 0; }
  .wb-detail-header { padding: calc(16px + var(--sat)) 18px 18px; }
  .wb-detail-header h2 { font-size: 24px; }
  .wb-detail-tabs { padding: 0 18px; gap: 18px; }
  .wb-detail-body { padding: 18px 18px calc(24px + var(--sab)); }
  .wb-position-name small, .wb-position-values small { font-size: 15px; }
  .wb-position-values { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .wb-position-values > div:first-child { grid-column: auto; }
  .wb-plan-list, .wb-plan-metrics { grid-template-columns: minmax(0,1fr); gap: 14px; }
  .wb-plan-metrics > div { padding: 14px 0; }
}
@media print {
  .wb-sidebar, .wb-toolbar, .wb-mobile-nav, .wb-taskbar, .btn { display: none; }
  .wb-main { margin: 0; padding: 0; }
}

/* Overview: continuous asset workspace, no tiled dashboard cards. */
.home-dashboard { display: flex; flex-direction: column; gap: 26px; }
.home-upper { display: grid; grid-template-columns: minmax(0,1fr) 260px; gap: 32px; }
.home-performance { min-width: 0; }
.home-capital { display: flex; justify-content: space-between; align-items: center; gap: 24px; padding: 8px 0 24px; }
.home-dashboard .wb-kpi { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; padding: 0; min-width: 0; min-height: 44px; border: 0; background: transparent; text-align: left; cursor: pointer; }
.home-dashboard .wb-kpi .label { color: var(--ink-2); font-size: 14px; }
.home-dashboard .wb-kpi small { color: var(--ink-3); font-size: 13px; }
.home-dashboard .wb-kpi strong { max-width: 100%; font-weight: 600; font-variant-numeric: tabular-nums; line-height: 1.2; overflow-wrap: anywhere; }
.home-dashboard .home-total strong { font-size: clamp(34px,3.5vw,48px); letter-spacing: -1.7px; }
.home-unit { font: 11px var(--mono); margin-left: 7px; }
.home-returns { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 22px; }
.home-dashboard .home-return strong { font-size: 24px; letter-spacing: -.6px; }
.home-returns .home-return + .home-return { border-left: 1px solid var(--line); padding-left: 22px; }
.home-dashboard .wb-section { margin: 0; padding: 0; border: 0; }
.home-dashboard .wb-section-head { margin-bottom: 12px; gap: 8px; }
.home-dashboard .wb-section-head h2 { font-size: 18px; font-weight: 600; letter-spacing: 0; }
.home-dashboard .wb-section-index { display: none; }
.home-dashboard .wb-section-title .wb-collapse { min-height: 36px; padding: 4px; border: 0; background: transparent; }
.home-dashboard .wb-section-title .wb-collapse span { display: none; }
.home-chart { border-top: 1px solid var(--line); padding-top: 18px; }
.portfolio-chart{--pc-value:#2269f5;--pc-cost:#808894;--pc-pnl:var(--up);padding-top:0}
[data-theme="dark"] .portfolio-chart{--pc-value:#64a2ff;--pc-cost:#929ba8}
.pc-top{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 16px;margin-bottom:8px;font-size:12px;color:var(--ink-3)}
.pc-date{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:13px;color:var(--ink-2)}
.pc-date-controls{display:flex;align-items:center;border:1px solid var(--line);border-radius:8px;background:var(--card);overflow:hidden}
.pc-date-controls button{width:44px;min-height:44px;border:0;background:transparent;color:var(--ink);font-size:24px;cursor:pointer}
.pc-date-controls button:disabled{opacity:.3;cursor:default}
.pc-date-controls button:hover:not(:disabled){background:var(--bg-soft)}
.pc-date-controls input{width:148px;min-width:0;min-height:44px;padding:0 4px;border:0;border-radius:0;background:transparent;color:var(--ink);font:inherit;font-size:14px;font-variant-numeric:tabular-nums}
.pc-date-controls :focus-visible{outline:2px solid var(--accent);outline-offset:-3px}
[data-theme="dark"] .pc-date-controls input{color-scheme:dark}
.pc-date-note{font-size:13px;color:var(--ink-2);margin:0 0 8px}
.pc-ranges{display:flex;flex-wrap:wrap;gap:0;padding:2px;max-width:100%;border:1px solid var(--line);border-radius:10px;background:var(--bg-soft)}
.home-chart .wb-section-head .btn-row{min-width:0;max-width:100%;flex-wrap:wrap}
.pc-ranges button,.pc-foot button{border:0;background:transparent;color:var(--ink-2);font:inherit;cursor:pointer}
.pc-ranges button{min-height:44px;min-width:54px;padding:0 12px;font-size:14px;border-radius:8px}
.pc-ranges button[aria-pressed="true"]{color:white;background:#2269f5;font-weight:600}
.pc-readouts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin:18px 0 0;padding-bottom:14px;border-bottom:1px solid var(--line)}
.pc-readout{min-width:0;text-align:left;background:none;border:0;padding:0;cursor:pointer;color:var(--ink);font:inherit;min-height:64px}
.pc-readout+.pc-readout{border-left:1px solid var(--line);padding-left:24px}
.pc-readout span{display:flex;align-items:center;gap:7px;font-size:14px;color:var(--ink-2);margin-bottom:6px}
.pc-readout i{height:9px;width:9px;border-radius:50%;background:var(--pc-value)}
.pc-readout.pc-cost i{background:var(--pc-cost)}
.pc-readout.pc-pnl i{background:var(--pc-pnl)}
.pc-readout strong{display:block;font-size:clamp(18px,2vw,26px);font-weight:700;font-variant-numeric:tabular-nums;line-height:1.3;letter-spacing:-.5px;overflow-wrap:anywhere}
.pc-readout[aria-pressed="false"]{opacity:.4}
.pc-plot{height:250px;width:100%;overflow:hidden}
.pc-plot svg{display:block;width:100%;height:100%;touch-action:pan-y;cursor:crosshair;outline-offset:-2px}
.pc-plot text{fill:var(--ink-3);font-size:12px;font-family:inherit;font-variant-numeric:tabular-nums}
.pc-grid{stroke:var(--line);stroke-width:1;stroke-dasharray:3 4}
.pc-zero{stroke:var(--line-strong);stroke-dasharray:none}
.pc-cross{stroke:var(--ink-3);stroke-width:1;stroke-dasharray:3 4;opacity:.55}
.pc-date-badge rect{fill:var(--ink)}
.pc-date-badge text{fill:var(--card);font-size:13px;font-weight:600}
.pc-line{fill:none;stroke:var(--pc-value);stroke-width:2;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
.pc-area{fill:var(--pc-value);opacity:.055}
.pc-line.pc-cost{stroke:var(--pc-cost);stroke-dasharray:6 4}
.pc-line.pc-pnl{stroke:var(--pc-pnl);stroke-dasharray:2 4}
.pc-profit-part.pc-positive{stroke:var(--up)}
.pc-profit-part.pc-negative{stroke:var(--down)}
.pc-dot{fill:var(--pc-value);stroke:var(--card);stroke-width:2}
.pc-dot.pc-cost{fill:var(--pc-cost)}
.pc-dot.pc-pnl{fill:var(--pc-pnl)}
.pc-end{fill:var(--pc-value);stroke:var(--pc-value)}
.pc-end.pc-cost{fill:var(--pc-cost);stroke:var(--pc-cost)}
.pc-end.pc-positive{fill:var(--up);stroke:var(--up)}
.pc-end.pc-negative{fill:var(--down);stroke:var(--down)}
.pc-end path{fill:none;stroke-width:1;opacity:.45}
.pc-end circle{stroke:var(--card);stroke-width:1.5}
.pc-end text{fill:inherit;stroke:none;font-size:12px;font-weight:600}
.pc-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--ink-3);font-size:12px;margin-top:8px}
.pc-foot button{color:var(--accent);min-height:44px}
@media(max-width:720px){
.home-chart .wb-section-head{gap:8px;justify-content:space-between}
.home-chart .wb-section-head h2{font-size:16px}
.pc-ranges button{min-width:36px;padding:0 7px;font-size:13px}
.pc-top{gap:6px;font-size:12px}
.pc-date{width:100%;justify-content:space-between;font-size:13px;gap:4px}
.pc-date-controls input{width:140px;font-size:16px}
.pc-plot{height:210px}.pc-readouts{gap:8px;margin-top:12px}
.pc-readout+.pc-readout{padding-left:8px}.pc-readout strong{font-size:15px;letter-spacing:-.6px}
.pc-readout span{font-size:13px;gap:4px}.pc-foot{font-size:11px;flex-wrap:wrap}
}
.home-dashboard .wb-curve-caption { color: var(--ink-3); font-size: 13px; margin-bottom: 8px; }
.home-chart-note { margin: 8px 0 0; font-size: 13px; color: var(--ink-3); }
.home-account { padding: 12px 0 0 24px; border-left: 1px solid var(--line); min-width: 0; align-self: start; }
.home-account-heading { display: flex; align-items: center; justify-content: space-between; font-size: 15px; font-weight: 600; margin-bottom: 22px; }
.home-live-dot { width: 5px; height: 5px; border-radius: 50%; background: var(--ink-3); }
.home-dashboard .home-pending strong { font-size: 30px; letter-spacing: -.8px; }
.home-actions { margin-top: 22px; border-top: 1px solid var(--line); }
.home-actions button { width: 100%; display: flex; align-items: center; gap: 8px; min-height: 54px; padding: 8px 0; border: 0; border-bottom: 1px solid var(--line); background: transparent; text-align: left; cursor: pointer; font-size: 14px; color: var(--ink-2); }
.home-actions b { margin-left: auto; color: var(--ink); font-weight: 500; }
.home-account-note { font-size: 13px; color: var(--ink-3); margin: 18px 0; }
.home-position-link { display: flex; justify-content: space-between; align-items: center; width: 100%; min-height: 44px; padding: 0; border: 0; background: transparent; color: var(--ink); cursor: pointer; font-size: 14px; }
.home-footer { display: grid; grid-template-columns: minmax(0,1.15fr) minmax(0,1fr); gap: 32px; padding-top: 22px; border-top: 1px solid var(--line-strong); }
.home-allocation, .home-movements { min-width: 0; }
.home-movements { padding-left: 24px; border-left: 1px solid var(--line); }
.home-allocation .wb-allocation { display: grid; grid-template-columns: 170px minmax(0,1fr); align-items: start; gap: 16px; }
.home-allocation .wb-allocation svg { width: 170px; height: 170px; }
.home-allocation .alloc-chart { position: static; align-self: start; padding: 8px 0; }
.home-allocation .wb-allocation-row { grid-template-columns: minmax(0,1fr) auto; gap: 2px 8px; min-height: 44px; padding: 7px 0; }
.home-allocation .wb-allocation-row .nm { grid-row: 1 / span 2; }
.home-allocation .wb-allocation-row > span:last-child { grid-column: 2; font-size: 12px; }
.home-dashboard .wb-mover { min-height: 62px; padding: 10px 0; gap: 10px; grid-template-columns: 20px minmax(0,1fr) auto; }
.home-dashboard .wb-mover-name strong { font-size: 14px; font-weight: 500; }
.home-dashboard .wb-mover small { font-size: 13px; }
@media (min-width:721px) and (max-width:1200px) {
  .home-upper { grid-template-columns: minmax(0,1fr) 220px; gap: 20px; }
  .home-capital { flex-direction: column; align-items: flex-start; gap: 18px; }
  .home-returns { width: 100%; }
  .home-dashboard .home-total strong { font-size: 40px; }
  .home-footer { grid-template-columns: minmax(0,1fr); gap: 24px; }
  .home-movements { border-left: 0; padding-left: 0; padding-top: 20px; border-top: 1px solid var(--line); }
}
@media (max-width:720px) {
  .home-dashboard { gap: 20px; }
  .home-upper { grid-template-columns: minmax(0,1fr); gap: 18px; }
  .home-capital { flex-direction: column; align-items: flex-start; gap: 18px; padding: 4px 0 18px; }
  .home-dashboard .home-total strong { font-size: 40px; letter-spacing: -1.3px; }
  .home-returns { width: 100%; gap: 16px; }
  .home-returns .home-return + .home-return { padding-left: 16px; }
  .home-dashboard .home-return strong { font-size: 26px; }
  .home-dashboard .wb-kpi .label, .home-dashboard .wb-kpi small { font-size: 14px; }
  .home-dashboard .wb-section-title .wb-collapse { min-height: 44px; min-width: 30px; }
  .home-dashboard .wb-section-head { flex-wrap: wrap; }
  .home-chart .tv-chart[data-tv="overview"] { height: 200px; }
  .home-chart-note { font-size: 13px; }
  .home-account { border-left: 0; border-top: 1px solid var(--line); padding: 16px 0 0; }
  .home-account-heading { display: none; }
  .home-dashboard .home-pending { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 4px 12px; width: 100%; }
  .home-dashboard .home-pending strong { font-size: 24px; grid-column: 2; grid-row: 1 / span 2; align-self: center; }
  .home-account-note { display: none; }
  .home-actions { display: flex; gap: 16px; margin-top: 14px; }
  .home-actions button { flex-wrap: wrap; gap: 4px; font-size: 14px; min-height: 48px; }
  .home-position-link { margin-top: 4px; }
  .home-footer { grid-template-columns: minmax(0,1fr); gap: 22px; padding-top: 18px; }
  .home-movements { padding-left: 0; border-left: 0; border-top: 1px solid var(--line); padding-top: 18px; }
  .home-allocation .wb-allocation { grid-template-columns: minmax(0,1fr); gap: 8px; }
  .home-allocation .alloc-chart { position: static; justify-self: center; }
  .home-allocation .wb-allocation svg { width: 190px; height: 190px; }
  .home-allocation .wb-allocation-row { grid-template-columns: minmax(0,1fr) auto 48px; gap: 10px; }
  .home-allocation .wb-allocation-row .nm { grid-row: auto; }
  .home-allocation .wb-allocation-row > span:last-child { grid-column: auto; font-size: 14px; }
  .home-dashboard .wb-mover-name strong, .home-dashboard .wb-mover small { font-size: 14px; }
}
/* Verified schedules: natural height, no nested scrolling, mobile readable. */
.wb-calendar-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.wb-calendar-market{min-width:0;border-bottom:1px solid var(--line);padding-bottom:16px}
.wb-calendar-market h3{margin:0 0 8px;font-size:16px}
.wb-calendar-market p{margin:8px 0}
.wb-calendar-market summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-size:14px}
.wb-calendar-market summary::after{content:'⌄';margin-left:auto;color:var(--ink-2)}
.wb-calendar-market details[open] summary::after{transform:rotate(180deg)}
.wb-calendar-dates{list-style:none;padding:0;margin:0}
.wb-calendar-dates li{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px 12px;padding:8px 0;border-top:1px solid var(--line);font-size:14px}
.wb-calendar-dates span{color:var(--ink-2)}
@media(max-width:720px){.wb-calendar-grid{grid-template-columns:1fr;gap:16px}}

/* Amount-only applications remain distinct from confirmed transactions. */
.fund-orders{margin-bottom:16px}
.fund-order{padding:20px 0;border-top:1px solid var(--line);min-width:0}
.fund-order:first-child{border-top:0;padding-top:8px}
.fund-order:last-child{padding-bottom:0}
.fund-order-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.fund-order-head strong{font-size:16px;overflow-wrap:anywhere}
.fund-order-head .tag{flex-shrink:0}
.fund-order-values{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:16px 0}
.fund-order-values small{display:block;color:var(--ink-2);font-size:13px;margin-bottom:6px}
.fund-order-values b{font-size:18px;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.fund-order-actions{display:flex;gap:8px;flex-wrap:wrap}
.fund-order-actions .btn{min-height:44px}
@media(max-width:480px){.fund-order-head{flex-wrap:wrap}.fund-order-values{gap:8px}.fund-order-values b{font-size:15px}.fund-order-values small{font-size:12px}}
.wb-layout-hint{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 16px;padding:8px 0;border-bottom:1px solid var(--line)}
/* Explicit desktop preference is local to this browser. Auto/mobile remains unchanged. */
@media screen {
html[data-layout="desktop"]{min-width:1120px}
html[data-layout="desktop"] .wb-sidebar{display:flex;width:208px;padding:28px 0 18px}
html[data-layout="desktop"] .wb-brand{justify-content:flex-start;padding:0 24px 30px}
html[data-layout="desktop"] .wb-brand>span{display:block}
html[data-layout="desktop"] .wb-nav-button{justify-content:flex-start;padding:12px 24px}
html[data-layout="desktop"] .wb-nav-button .lb,html[data-layout="desktop"] .wb-nav-label,html[data-layout="desktop"] .wb-nav-section{display:block}
html[data-layout="desktop"] .wb-main{margin-left:208px;padding:0 32px 40px;min-width:912px}
html[data-layout="desktop"] .wb-toolbar{min-height:96px}
html[data-layout="desktop"] .wb-mobile-nav,html[data-layout="desktop"] .sheet,html[data-layout="desktop"] .sheet-mask{display:none}
}
