:root{color:#24312f;background:#f4f1eb;font-family:Inter,Noto Sans TC,PingFang TC,Microsoft JhengHei,system-ui,sans-serif;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,select{font:inherit}button{cursor:pointer}.auth-page{align-items:center;background:radial-gradient(circle at top,#fffaf0 0,#f4f1eb 58%);display:flex;justify-content:center;min-height:100vh;padding:24px}.auth-card{align-items:center;background:#fff;border:1px solid #d9ded6;border-radius:16px;box-shadow:0 18px 55px #31413c1f;display:grid;gap:18px;justify-items:center;max-width:430px;padding:42px 38px;text-align:center;width:100%}.auth-card h1,.auth-card p{margin:0}.auth-card h1{font-size:26px}.auth-card>p{color:#66736c;line-height:1.65}.auth-card small{color:#7a867f}.auth-card .alert{margin:0;width:100%}.auth-eyebrow{color:#2f6f58;font-size:12px;font-weight:800;letter-spacing:.16em;margin-bottom:6px!important}.auth-mark{align-items:center;background:#d3a25f;border-radius:13px;color:#22322d;display:flex;font-weight:900;height:58px;justify-content:center;width:58px}.auth-login{align-items:center;background:#2f6f58;border:1px solid #2f6f58;border-radius:9px;color:#fff;display:inline-flex;gap:9px;justify-content:center;min-height:46px;padding:0 20px;width:100%}.app-shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{background:#31413c;color:#fffaf0;padding:24px 16px}.brand{align-items:center;display:flex;gap:12px;margin-bottom:28px}.brand>span{align-items:center;background:#d3a25f;border-radius:9px;color:#22322d;display:flex;font-size:14px;font-weight:800;height:44px;justify-content:center;width:44px}.brand h1,.brand p,header h2,header p,h3{margin:0}.brand h1{font-size:21px}.brand p{color:#d6dfd7;font-size:13px;margin-top:3px}.sidebar nav{display:grid;gap:8px}.sidebar nav button{align-items:center;background:transparent;border:1px solid transparent;border-radius:8px;color:#f6f1e8;display:flex;gap:10px;min-height:44px;padding:0 12px}.sidebar nav button:hover{background:#ffffff17}.sidebar nav button.active{background:#fff7e8;color:#24312f}main{min-width:0;padding:26px}header{align-items:center;display:flex;justify-content:space-between;margin-bottom:22px}header p{color:#718078;font-size:13px;margin-bottom:4px}header h2{font-size:28px}.header-actions{align-items:center;display:flex;gap:9px}.signed-in-email{color:#718078;font-size:12px;margin-right:4px}.stack{display:grid;gap:18px}.panel,.metric{background:#fff;border:1px solid #d9ded6;border-radius:9px}.panel{padding:18px}.panel h3{font-size:18px;margin-bottom:15px}.metrics{display:grid;gap:14px;grid-template-columns:repeat(4,minmax(0,1fr))}.metric{min-height:104px;padding:16px}.metric span{color:#66736c;display:block;font-size:13px;margin-bottom:10px}.metric strong{display:block;font-size:22px;overflow-wrap:anywhere}.metric small{color:#728078;display:block;line-height:1.4;margin-top:8px}.form{display:grid;gap:10px}.trade-form{grid-template-columns:145px 210px 155px 120px minmax(130px,1fr) auto}.trade-form:has(select){grid-template-columns:145px 150px 200px 145px 110px minmax(120px,1fr) auto}.vertical{grid-template-columns:1fr 1fr}.vertical label{color:#66736c;display:grid;font-size:12px;gap:4px}.vertical button{grid-column:1 / -1}input,select{background:#fbfcfa;border:1px solid #cbd2ca;border-radius:8px;color:#24312f;min-height:40px;min-width:0;padding:0 10px;width:100%}input:focus,select:focus{border-color:#2f6f58;outline:2px solid rgb(47 111 88 / 16%)}button.primary,button.secondary{align-items:center;border-radius:8px;display:inline-flex;gap:7px;justify-content:center;min-height:40px;padding:0 14px}button.primary{background:#2f6f58;border:1px solid #2f6f58;color:#fff}button.secondary{background:#fff;border:1px solid #c9d0c7;color:#24312f}.symbol-field{display:grid;gap:6px;grid-template-columns:minmax(0,1fr) 40px}button.icon{align-items:center;background:#fff;border:1px solid #cbd2ca;border-radius:8px;display:flex;justify-content:center}.quote{align-items:center;background:#eef7ef;border-radius:8px;display:flex;gap:12px;margin-top:12px;padding:11px 13px}.quote span{color:#66736c}.quote b{margin-left:auto}.quote.error{background:#fff0ed;color:#953327}.tool-grid{display:grid;gap:18px;grid-template-columns:repeat(2,minmax(0,1fr))}.compact-rows{border-top:1px solid #e2e6df;display:grid;margin-top:16px;max-height:240px;overflow:auto}.compact-rows>div{align-items:center;border-bottom:1px solid #ecefe9;display:flex;justify-content:space-between;padding:10px 2px}.compact-rows span{display:grid;gap:3px}.compact-rows small{color:#728078}button.delete{align-items:center;background:transparent;border:0;border-radius:6px;color:#a33b32;display:flex;height:32px;justify-content:center;width:32px}button.delete:hover{background:#fff0ed}.holdings{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.holding{background:#f8f8f4;border:1px solid #dfe4da;border-radius:9px;padding:15px}.holding-head{align-items:baseline;display:flex;gap:10px;margin-bottom:13px}.holding-head>strong{color:#2f6f58;font-size:18px}.holding-head>span{color:#718078;font-size:13px}.holding-stats{display:grid;gap:12px;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:12px}.holding-stats span{color:#718078;display:block;font-size:12px;margin-bottom:4px}.holding-stats strong{font-size:15px;overflow-wrap:anywhere}.holding>small{color:#718078;display:block;line-height:1.5}.holding>small.danger{color:#a33b32}.holding>small.quote-stale{color:#9a6a22}.table-wrap{overflow-x:auto}table{border-collapse:collapse;min-width:760px;width:100%}th,td{border-bottom:1px solid #e2e6df;padding:11px 10px;text-align:left;white-space:nowrap}th{color:#66736c;font-size:12px;font-weight:600}td{font-size:14px}td:last-child{text-align:right;width:42px}.empty{color:#7a867f;padding:16px 4px;text-align:center}.alert,.loading{border-radius:8px;margin-bottom:16px;padding:12px 14px}.alert{background:#fff0ed;color:#953327}.loading{background:#fff;color:#66736c}.allocation-heading{align-items:flex-start;display:flex;gap:20px;justify-content:space-between;margin-bottom:14px}.allocation-heading h3{margin-bottom:5px}.allocation-heading p{color:#718078;font-size:13px;margin:0}.allocation-heading>strong{font-size:22px;white-space:nowrap}.allocation-layout{align-items:center;display:grid;gap:30px;grid-template-columns:minmax(260px,.8fr) minmax(340px,1.2fr)}.allocation-chart{display:grid;min-height:300px;place-items:center;position:relative}.allocation-chart svg{height:300px;width:300px}.allocation-ring-base,.allocation-ring-segment{fill:none;stroke-width:32}.allocation-ring-base{stroke:#e7e8e0}.allocation-ring-segment{transform:rotate(-90deg);transform-origin:50% 50%;transition:opacity .2s ease}.allocation-ring-segment:hover{opacity:.8}.allocation-total{display:grid;gap:5px;left:50%;max-width:135px;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%)}.allocation-total span{color:#718078;font-size:12px}.allocation-total strong{font-size:17px;line-height:1.25;overflow-wrap:anywhere}.allocation-legend{display:grid;gap:4px}.allocation-row{align-items:center;border-bottom:1px solid #ecefe9;display:grid;gap:10px;grid-template-columns:12px minmax(72px,1fr) 64px minmax(110px,1fr);min-height:45px}.allocation-row>span:nth-child(3),.allocation-row>b{text-align:right}.allocation-row>span:nth-child(3){color:#66736c}.allocation-dot{border-radius:999px;height:11px;width:11px}.overall-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.overall-layout{align-items:center;display:grid;gap:34px;grid-template-columns:minmax(360px,.9fr) minmax(420px,1.1fr)}.overall-chart{display:grid;min-height:430px;place-items:center;position:relative}.overall-chart svg{height:420px;width:420px}.overall-ring-base,.overall-ring-segment{fill:none}.overall-ring-base.outer,.overall-ring-segment.outer{stroke-width:22}.overall-ring-base.inner,.overall-ring-segment.inner{stroke-width:24}.overall-ring-base{stroke:#e7e8e0}.overall-ring-segment{transform:rotate(-90deg);transform-origin:50% 50%;transition:opacity .2s ease}.overall-ring-segment:hover{opacity:.78}.overall-total{display:grid;gap:4px;left:50%;max-width:115px;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%)}.overall-total span{color:#718078;font-size:12px}.overall-total strong{font-size:16px;line-height:1.25;overflow-wrap:anywhere}.overall-breakdown{display:grid;gap:18px}.market-breakdown{background:#f8f8f4;border:1px solid #dfe4da;border-radius:9px;padding:14px}.market-breakdown-heading{align-items:center;border-bottom:1px solid #dfe4da;display:grid;gap:10px;grid-template-columns:12px minmax(70px,1fr) 58px minmax(120px,1fr);padding:0 2px 11px}.market-breakdown-heading b,.market-breakdown-heading>span:last-child{text-align:right}.market-breakdown-heading>span:last-child{color:#66736c}.overall-target-row{align-items:center;border-bottom:1px solid #ecefe9;display:grid;gap:10px;grid-template-columns:12px 72px minmax(100px,1fr) 58px minmax(120px,1fr);min-height:45px}.overall-target-row:last-child{border-bottom:0}.overall-target-row small{color:#718078}.overall-target-row>span:nth-child(4),.overall-target-row>b{text-align:right}.overall-target-row>span:nth-child(4){color:#66736c}@media(max-width:1180px){.trade-form,.trade-form:has(select){grid-template-columns:repeat(3,minmax(0,1fr))}.trade-form button.primary{grid-column:1 / -1}.metrics,.holding-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.overall-layout{grid-template-columns:1fr}}@media(max-width:780px){.app-shell{grid-template-columns:1fr}.sidebar{padding:16px}.brand{margin-bottom:14px}.sidebar nav{grid-template-columns:repeat(2,1fr)}main{padding:18px 14px}header{align-items:flex-start;gap:14px}.header-actions{flex-wrap:wrap;justify-content:flex-end}.signed-in-email{display:none}header h2{font-size:24px}.tool-grid,.holdings,.allocation-layout{grid-template-columns:1fr}.allocation-chart{min-height:250px}.allocation-chart svg{height:250px;width:250px}.allocation-heading{display:grid}.overall-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.overall-chart{min-height:300px}.overall-chart svg{height:300px;width:300px}.overall-target-row{grid-template-columns:12px 60px minmax(80px,1fr) 52px}.overall-target-row>b{grid-column:2 / -1;padding-bottom:8px}.trade-form,.trade-form:has(select),.vertical{grid-template-columns:1fr}.vertical button,.trade-form button.primary{grid-column:auto}}
