:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#08110e;--panel:#101c17;--panel2:#15251e;--line:#294137;--text:#f1f7f3;--muted:#91a99d;--green:#63e6a6;--red:#ff8d91;--gold:#e8c878}*{box-sizing:border-box}html,body{background:radial-gradient(circle at 15% -10%,#183d2f 0,transparent 38%),var(--bg);min-height:100%;color:var(--text);margin:0;font-family:Inter,Noto Sans TC,system-ui,sans-serif}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button{cursor:pointer}.shell{grid-template-columns:240px 1fr;min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--line);background:#09130fdd;height:100vh;padding:28px 20px;position:sticky;top:0}.brand{align-items:center;gap:10px;margin:0 10px 32px;font-size:21px;font-weight:800;display:flex}.brand-mark{color:#062116;background:var(--green);border-radius:10px;place-items:center;width:32px;height:32px;display:grid}.nav{gap:16px;display:grid}.nav-group{gap:4px;display:grid}.nav-group-label{color:var(--muted);text-transform:uppercase;letter-spacing:.09em;opacity:.75;padding:0 13px;font-size:11px}.nav a{color:var(--muted);border-radius:10px;padding:10px 13px}.nav a:hover{color:var(--text);background:var(--panel2)}.nav a.active{color:var(--text);background:var(--panel2);box-shadow:inset 3px 0 0 var(--green)}.sidebar-footer{gap:9px;display:grid;position:absolute;bottom:24px;left:20px;right:20px}.user-name{font-size:12px}.tabbar,.tab-sheet,.tab-backdrop{display:none}.main{width:100%;max-width:1500px;margin:auto;padding:36px clamp(20px,4vw,56px)}.top{justify-content:space-between;align-items:center;gap:20px;margin-bottom:30px;display:flex}h1{letter-spacing:-.04em;margin:0 0 6px;font-size:clamp(28px,4vw,42px)}h2{margin:0 0 18px;font-size:19px}.muted{color:var(--muted)}.grid{gap:18px;display:grid}.metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.two{grid-template-columns:repeat(2,minmax(0,1fr))}.three{grid-template-columns:repeat(3,minmax(0,1fr))}.card{border:1px solid var(--line);background:linear-gradient(145deg,#13221bdd,#0d1814dd);border-radius:18px;padding:22px;box-shadow:0 18px 50px #0003}.metric .label{color:var(--muted);margin-bottom:12px;font-size:13px}.metric .value{letter-spacing:-.04em;font-size:clamp(22px,3vw,34px);font-weight:750}.positive{color:var(--red)}.negative{color:var(--green)}.section{margin-top:24px}.table-wrap{overflow:auto}.portfolio-summary{margin-bottom:24px}.portfolio-summary .muted{margin-top:8px;font-size:12px}.section-heading{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;display:flex}.section-heading h2{margin-bottom:5px}.section-heading p{margin:0;font-size:13px}.statement-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.statement-status{border:1px solid var(--line);background:#09130f;border-radius:13px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:5px 14px;padding:16px;display:grid}.statement-status>div:first-child{gap:4px;display:grid}.statement-status span,.statement-status>.muted{font-size:12px}.statement-value{grid-area:1/2/span 2;font-size:20px;font-weight:750}.disclosure{padding:0;overflow:hidden}.disclosure>summary{cursor:pointer;justify-content:space-between;align-items:center;gap:18px;padding:20px 22px;list-style:none;display:flex}.disclosure>summary::-webkit-details-marker{display:none}.disclosure>summary span{gap:5px;display:grid}.disclosure>summary strong{font-size:17px}.disclosure>summary small{color:var(--muted);font-size:12px;font-weight:400}.disclosure>summary i{color:var(--green);white-space:nowrap;font-size:12px;font-style:normal}.disclosure>summary i:before{content:"＋ "}.disclosure[open]>summary{border-bottom:1px solid var(--line);background:#14271f}.disclosure[open]>summary i:before{content:"− "}.disclosure-body{padding:22px}.holdings-wrap{border-radius:10px}.holdings-table tbody tr:hover td{background:#14271f}table{border-collapse:collapse;width:100%;min-width:680px}th,td{text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:13px 12px}.total-row td{background:#14271f;border-top:2px solid #4d7161;border-bottom:0}th{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:12px}td.num,th.num{text-align:right}.pill{color:#adf2cf;background:#28483a;border-radius:999px;padding:4px 9px;font-size:12px}.forms{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:24px;display:grid}form.stack{gap:13px;display:grid}label{color:var(--muted);gap:7px;font-size:13px;display:grid}input,select{border:1px solid var(--line);width:100%;color:var(--text);background:#09130f;border-radius:10px;outline:none;padding:11px 12px}input:focus,select:focus{border-color:var(--green);box-shadow:0 0 0 3px #63e6a61f}.button{background:var(--green);color:#062116;border:0;border-radius:10px;padding:11px 15px;font-weight:700}.button.secondary{color:var(--text);background:var(--panel2);border:1px solid var(--line)}.button.danger{color:#ffd7d8;background:#55272b}.button.small{padding:7px 10px;font-size:12px}.login-wrap{place-items:center;min-height:100vh;padding:24px;display:grid}.login{width:min(430px,100%);padding:36px}.login .brand{margin:0 0 30px}.notice{color:#f3d997;background:#342b16;border:1px solid #725a28;border-radius:10px;padding:11px 13px;font-size:13px}.tax-options{align-items:stretch}.tax-option{position:relative}.tax-option.recommended{border-color:#9f4b50;box-shadow:0 0 0 1px #9f4b5044,0 18px 50px #0003}.tax-total{letter-spacing:-.05em;margin:18px 0;font-size:clamp(30px,5vw,46px);font-weight:780}.tax-option.recommended .tax-total{color:var(--red)}.tax-lines{color:var(--muted);gap:9px;font-size:13px;display:grid}.tax-lines span{border-top:1px solid var(--line);justify-content:space-between;gap:14px;padding-top:9px;display:flex}.tax-lines strong{color:var(--text);text-align:right}.four{grid-template-columns:repeat(4,minmax(0,1fr))}.tax-year-tabs{margin:0 0 18px}.tax-month-table{min-width:620px}.tax-month-table input{text-align:right;font-variant-numeric:tabular-nums;min-width:130px;padding:8px 10px}.tax-dividend-list{gap:14px;display:grid}.tax-dividend{border:1px solid var(--line);background:#09130f;border-radius:14px;gap:16px;padding:18px;display:grid}.tax-dividend-heading{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.tax-dividend-heading>div{gap:5px;display:grid}.tax-dividend-heading span{color:var(--muted);font-size:12px}.tax-dividend-heading>span{white-space:nowrap;font-size:13px}.risk-summary{grid-template-columns:minmax(150px,.7fr) minmax(0,2fr);align-items:center;gap:22px;display:grid}.risk-score{border:1px solid var(--line);text-align:center;background:#09130f;border-radius:14px;place-items:center;gap:8px;padding:20px;display:grid}.risk-score strong{font-size:clamp(30px,5vw,48px);line-height:1}.risk-score.low strong{color:var(--green)}.risk-score.watch strong{color:var(--gold)}.risk-score.high strong,.risk-score.very-high strong{color:var(--red)}.risk-details{gap:14px;display:grid}.risk-factors{flex-wrap:wrap;gap:8px;display:flex}.risk-factor{color:#f3d997;background:#342b16;border-radius:8px;padding:6px 9px;font-size:12px}.global-market-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.global-region{border:1px solid var(--line);background:#09130f;border-radius:14px;padding:16px}.global-region h3{color:var(--muted);letter-spacing:.08em;margin:0 0 8px;font-size:13px}.global-index-list{display:grid}.global-index{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;padding:12px 0;display:grid}.global-index:last-child{border-bottom:0;padding-bottom:0}.global-index>div{gap:4px;min-width:0;display:grid}.global-index>div>strong{font-variant-numeric:tabular-nums}.global-index span{color:var(--muted);font-size:11px}.global-index .num{text-align:right}.global-index .num span.positive,.global-index .num span.negative{font-size:12px}.empty{color:var(--muted);text-align:center;padding:28px 0}.error-state{text-align:center;justify-items:center;gap:14px;max-width:680px;margin:12vh auto 0;padding:36px;display:grid}.error-state h1{margin:0;font-size:clamp(24px,4vw,34px)}.error-state p{max-width:520px;margin:0;line-height:1.7}.error-mark{width:48px;height:48px;color:var(--gold);background:#342b16;border:1px solid #725a28;border-radius:50%;place-items:center;font-size:24px;font-weight:800;display:grid}.error-actions{gap:10px;margin:8px 0;display:flex}.page-loading{min-height:45vh;color:var(--muted);place-content:center;justify-items:center;gap:12px;display:grid}.loading-spinner{border:3px solid var(--line);border-top-color:var(--green);border-radius:50%;width:30px;height:30px;animation:.7s linear infinite loading-spin}@keyframes loading-spin{to{transform:rotate(360deg)}}.chart-wrap{width:100%;padding-top:8px;position:relative;overflow-x:auto}.chart-wrap svg{width:100%;min-width:650px;height:auto;display:block}.chart-grid{stroke:var(--line);stroke-width:1px;stroke-dasharray:4 5}.chart-axis{stroke:#587064;stroke-width:1.3px}.chart-label{fill:var(--muted);font-size:11px}.chart-title{fill:var(--muted);font-size:12px;font-weight:650}.chart-bar{opacity:.82;outline:none;transition:filter .15s,opacity .15s}.chart-bar.assets,.legend-color.assets{fill:#45c486;background:#45c486}.chart-bar.debt,.legend-color.debt{fill:#ef6b6b;background:#ef6b6b}.chart-bar.net-worth,.legend-color.net-worth{fill:#56a8f5;background:#56a8f5}.chart-bar.seg-cash,.legend-color.seg-cash{fill:#e8c878;background:#e8c878}.chart-bar.seg-invest,.legend-color.seg-invest{fill:#45c486;background:#45c486}.chart-bar.seg-other,.legend-color.seg-other{fill:#9b8cf5;background:#9b8cf5}.chart-bar.active{opacity:1;filter:drop-shadow(0 0 5px #fff5)}.chart-legend{color:var(--muted);flex-wrap:wrap;gap:10px 18px;margin:10px 0 0;font-size:12px;display:flex}.chart-legend span{align-items:center;gap:6px;display:inline-flex}.chart-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 18px;display:flex}.legend-toggle{color:inherit;background:0 0;border:0;align-items:center;gap:6px;padding:0;font-size:12px;display:inline-flex}.legend-toggle.off{opacity:.45;text-decoration:line-through}.range-tabs{gap:8px;margin-top:10px;display:flex}.range-tab{border:1px solid var(--line);color:var(--muted);background:0 0;border-radius:999px;padding:5px 12px;font-size:12px}.range-tab:hover{color:var(--text)}.range-tab.active{background:var(--panel2);color:var(--text);border-color:#4d7161}.stock-link{color:inherit}.stock-link:hover{color:var(--green)}.stock-link:after{content:"↗";color:var(--muted);margin-left:4px;font-size:10px}.goal-bar{border:1px solid var(--line);background:#09130f;border-radius:999px;height:16px;display:flex;overflow:hidden}.goal-fill{background:#45c486;height:100%;display:block}.goal-fill.expected{background:#e8c878}.goal-legend{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px 18px;margin-top:10px;font-size:12px;display:flex}.goal-legend span{align-items:center;gap:6px;display:inline-flex}.goal-form{align-items:end;gap:12px;margin-top:18px;margin-bottom:12px;display:flex}.goal-form label{flex:0 0 260px}.legend-color{border-radius:3px;width:10px;height:10px;display:inline-block}.chart-tooltip{border:1px solid var(--line);pointer-events:none;background:#07100deb;border-radius:9px;gap:4px;min-width:185px;padding:9px 12px;display:grid;position:absolute;top:5px;right:8px;box-shadow:0 8px 25px #0008}.chart-tooltip strong{color:var(--text);font-size:13px}.chart-tooltip span{font-size:12px}.chart-tooltip .assets{color:#70dca5}.chart-tooltip .debt{color:#ff8c8c}.chart-tooltip .net-worth{color:#7bbcff}.chart-tooltip .seg-cash{color:#e8c878}.chart-tooltip .seg-invest{color:#70dca5}.chart-tooltip .seg-other{color:#b3a7f8}.pnl-bar{opacity:.82;transition:opacity .15s,filter .15s}.pnl-bar.positive{fill:#ef6b6b}.pnl-bar.negative{fill:#45c486}.pnl-bar.active{opacity:1;filter:drop-shadow(0 0 5px #fff5)}.heatmap-wrap{overflow-x:auto}.return-heatmap{grid-template-columns:64px repeat(12,minmax(48px,1fr));align-items:center;gap:6px;min-width:760px;display:grid}.heatmap-corner,.heatmap-month{color:var(--muted);text-align:center;font-size:11px}.heatmap-year-row{display:contents}.heatmap-year-row>strong{font-size:13px}.heatmap-cell{min-height:42px;color:var(--text);font-variant-numeric:tabular-nums;border:0;border-radius:7px;place-items:center;font-size:11px;display:grid}.heatmap-cell.gain{background:#b94349}.heatmap-cell.loss{background:#238057}.heatmap-cell.empty-cell{background:var(--panel2);color:var(--muted);opacity:.55}.heatmap-legend{color:var(--muted);flex-wrap:wrap;gap:14px;margin-top:12px;font-size:12px;display:flex}.heatmap-legend strong{color:var(--text);margin-left:auto}.donut-wrap{grid-template-columns:230px 1fr;align-items:center;gap:22px;display:grid}.donut-wrap svg{width:100%;max-width:230px;height:auto}.donut-wrap circle{cursor:pointer;outline:none;transition:stroke-width .15s}.donut-label{fill:var(--muted);font-size:13px}.donut-value{fill:var(--text);font-size:17px;font-weight:750}.donut-pct{fill:var(--muted);font-size:12px}.donut-legend{align-content:center;gap:8px;font-size:13px;display:grid}.donut-legend span{color:var(--muted);align-items:center;gap:8px;display:flex}.donut-legend span.active{color:var(--text)}.donut-legend em{white-space:nowrap;margin-left:auto;font-style:normal}.rings-wrap{grid-template-columns:270px 1fr}.ring-group{gap:5px;display:grid}.ring-group>span{cursor:default}.ring-child{padding-left:18px;font-size:12px}.sort-head{color:inherit;font:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:5px;padding:0;display:inline-flex}th.num .sort-head{flex-direction:row-reverse}.sort-head:hover{color:var(--text)}.sort-head.active{color:var(--green)}.sort-head i{opacity:.35;font-size:9px;font-style:normal}.sort-head.active i{opacity:1}.rings-wrap svg{max-width:270px}.rings-wrap circle{cursor:pointer;outline:none;transition:opacity .15s}.donut-legend .ring-note{color:var(--muted);font-size:12px}@media (max-width:640px){.rings-wrap{grid-template-columns:minmax(0,1fr)}.donut-wrap{grid-template-columns:minmax(0,1fr);justify-items:center}.donut-legend{width:100%}.donut-legend span{flex-wrap:wrap}.donut-legend em{white-space:normal;text-align:right}.three,.statement-grid{grid-template-columns:minmax(0,1fr)}.goal-form{flex-direction:column;align-items:stretch}.goal-form label{flex:auto}.section-heading{align-items:center}.statement-value{font-size:18px}.disclosure>summary,.disclosure-body{padding:16px}.risk-summary{grid-template-columns:minmax(0,1fr)}.risk-score{text-align:left;place-items:start}}@media (max-width:900px){.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.forms,.two{grid-template-columns:minmax(0,1fr)}.shell{display:block}.sidebar{border-right:0;border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;height:auto;padding:13px 20px;display:flex;position:static}.brand{margin:0;font-size:19px}.nav{display:none}.sidebar-footer{align-items:center;gap:10px;display:flex;position:static}.main{padding-top:26px;padding-bottom:calc(86px + env(safe-area-inset-bottom))}.global-market-grid{grid-template-columns:minmax(0,1fr)}.global-region{padding:14px 16px}.four{grid-template-columns:repeat(2,minmax(0,1fr))}.tabbar{z-index:60;border-top:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:6px 6px calc(6px + env(safe-area-inset-bottom));background:#0a1410f5;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px;display:grid;position:fixed;bottom:0;left:0;right:0}.tab-item{color:var(--muted);background:0 0;border:0;border-radius:10px;justify-items:center;gap:3px;padding:6px 2px;font-size:11px;display:grid}.tab-item svg{width:21px;height:21px}.tab-item.active{color:var(--green)}.tab-backdrop{z-index:58;background:#00000073;display:block;position:fixed;inset:0}.tab-sheet{right:10px;bottom:calc(76px + env(safe-area-inset-bottom));z-index:59;border:1px solid var(--line);background:#101c17fa;border-radius:14px;gap:2px;min-width:200px;padding:8px;display:grid;position:fixed;box-shadow:0 18px 50px #000c}.tab-sheet a{color:var(--muted);border-radius:9px;padding:12px 13px;font-size:14px}.tab-sheet a.active,.tab-sheet a:hover{color:var(--text);background:var(--panel2)}}@media (max-width:520px){.metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.metric .value{font-size:clamp(17px,5.5vw,26px)}.top{flex-direction:column;align-items:flex-start}.login{padding:25px}.card{padding:16px}.main{padding-left:12px;padding-right:12px}.forms{gap:16px}table{min-width:0}th,td{padding:10px 8px;font-size:13px}th{font-size:11px}.chart-wrap svg{min-width:560px}.four{grid-template-columns:minmax(0,1fr)}.tax-dividend{padding:14px}.tax-dividend-heading{display:grid}.tax-dividend-heading>span{white-space:normal}}@media (max-width:720px){.holdings-table{min-width:760px}.holdings-table .holding-market,.holdings-table .holding-ytd{display:none}.holdings-table th:first-child,.holdings-table td:first-child{z-index:2;background:#101c17;position:sticky;left:0;box-shadow:8px 0 12px -12px #000}.holdings-table thead th:first-child{z-index:3}.holdings-table .total-row td:first-child{background:#14271f}}.app-version{letter-spacing:.02em;font-variant-numeric:tabular-nums;font-size:11px;display:block}.app-version:hover{color:var(--text)}
