:root{--bg: oklch(.13 .01 250);--surface: oklch(.17 .01 250);--surface-2: oklch(.21 .01 250);--border: oklch(.28 .015 250);--text: oklch(.95 .005 250);--muted: oklch(.58 .02 250);--accent: oklch(.72 .14 158);--accent-fg: oklch(.13 .02 158);--pos: oklch(.72 .17 145);--neg: oklch(.65 .18 27);--warn: oklch(.8 .16 80);--pos-bg: color-mix(in oklch, var(--pos) 12%, transparent);--neg-bg: color-mix(in oklch, var(--neg) 12%, transparent);--warn-bg: color-mix(in oklch, var(--warn) 15%, transparent);--sans: "Plus Jakarta Sans", system-ui, sans-serif;--mono: "IBM Plex Mono", "Courier New", monospace;--main-pad: 28px;--sidebar-w: 220px}[data-theme=light]{--bg: oklch(.96 .005 250);--surface: oklch(1 0 0);--surface-2: oklch(.93 .005 250);--border: oklch(.87 .008 250);--text: oklch(.15 .01 250);--muted: oklch(.48 .02 250);--pos: oklch(.42 .17 145);--neg: oklch(.46 .18 27);--warn: oklch(.55 .16 80);--pos-bg: color-mix(in oklch, var(--pos) 12%, transparent);--neg-bg: color-mix(in oklch, var(--neg) 12%, transparent);--warn-bg: color-mix(in oklch, var(--warn) 15%, transparent)}[data-theme=light] body{-webkit-font-smoothing:auto}[data-theme=light] .dropdown-menu{box-shadow:0 12px 36px #0000001f}[data-theme=light] .toast{box-shadow:0 8px 30px #0000001a}@media(max-width:900px){[data-theme=light] .sidebar{box-shadow:4px 0 30px #00000026}}[data-density=compact]{--main-pad: 18px;--row-py: 8px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--sans);background:var(--bg);color:var(--text);min-height:100vh;line-height:1.5;font-size:14px;-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit}a{color:var(--accent);text-decoration:none}img,svg{display:block}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}::-webkit-scrollbar-thumb:hover{background:var(--muted)}.app-shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:color-mix(in oklch,var(--bg) 60%,var(--surface));border-right:1px solid var(--border);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:30;transition:transform .2s ease}.sidebar-brand{display:flex;align-items:center;gap:11px;padding:22px 20px 26px}.sidebar-logo{width:34px;height:34px;border-radius:9px;overflow:hidden;display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar-title{font-size:15px;font-weight:700;letter-spacing:-.02em}.sidebar-sub{font-size:11px;color:var(--muted)}.sidebar-nav{display:flex;flex-direction:column;gap:3px;padding:0 12px}.sidebar-footer{margin-top:auto;padding:16px}.sidebar-status{padding:14px;border-radius:11px;background:var(--surface);border:1px solid var(--border)}.status-dot{width:7px;height:7px;border-radius:99px;background:var(--pos);box-shadow:0 0 8px var(--pos);display:inline-block}.navbtn{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:none;border-radius:8px;font-size:13.5px;font-weight:500;transition:background .12s,color .12s;text-align:left}.navbtn:hover{background:var(--surface);color:var(--text)}.main-area{flex:1;min-width:0;display:flex;flex-direction:column;margin-left:var(--sidebar-w)}.app-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 28px;padding-top:calc(14px + env(safe-area-inset-top,0));border-bottom:1px solid var(--border);position:sticky;top:0;background:color-mix(in oklch,var(--bg) 88%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);z-index:20}.header-left{display:flex;align-items:center;gap:14px;min-width:0}.header-right{display:flex;align-items:center;gap:12px}.header-title{font-size:14px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-brand{display:none;align-items:center;gap:8px;cursor:pointer;flex-shrink:0}.header-logo{width:26px;height:26px;border-radius:7px;overflow:hidden;display:flex;align-items:center;justify-content:center;flex-shrink:0}.header-brand-text{display:flex;flex-direction:column;gap:3px;min-width:0;line-height:1.15}.header-brand-title{font-size:14px;font-weight:700;letter-spacing:-.02em;white-space:nowrap}.header-brand-sub{font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.iconbtn{width:34px;height:34px;border:1px solid var(--border);border-radius:8px;background:transparent;color:var(--muted);display:flex;align-items:center;justify-content:center;transition:color .12s,border-color .12s}.iconbtn:hover{color:var(--text);border-color:var(--muted)}.burger{display:none;width:36px;height:36px;border:none;background:transparent;color:var(--muted);align-items:center;justify-content:center;border-radius:8px}.burger:hover{color:var(--text)}.scrim{display:none;position:fixed;inset:0;background:#00000080;z-index:25}.bottom-dock{display:none;position:fixed;left:0;right:0;bottom:0;z-index:30;background:color-mix(in oklch,var(--bg) 92%,var(--surface));backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-top:1px solid var(--border);padding:6px 4px env(safe-area-inset-bottom,0)}.dock-item{flex:1 1 0;display:flex;flex-direction:column;align-items:center;gap:3px;background:none;border:none;padding:6px 2px;font-size:10.5px;font-weight:600;color:var(--muted);border-radius:8px}.dock-item.active{color:var(--accent)}.dock-item span{white-space:nowrap}.who{line-height:1.25;text-align:left}.profile-btn{display:flex;align-items:center;gap:10px;padding-left:4px;background:none;border:none}.avatar{width:32px;height:32px;border-radius:99px;background:var(--accent);color:var(--accent-fg);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;font-family:var(--mono);flex-shrink:0}.dropdown-menu{position:absolute;right:0;top:calc(100% + 8px);width:220px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 36px #00000080;overflow:hidden;z-index:40}.dropdown-header{padding:13px 15px;border-bottom:1px solid var(--border)}.menuitem{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:none;border:none;padding:11px 15px;font-size:13.5px;color:var(--text)}.menuitem:hover{background:var(--surface-2)}.menuitem.danger{color:var(--neg)}.screen-main{padding:var(--main-pad);max-width:1320px;width:100%;margin:0 auto}@keyframes screenEnter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.screen-enter{animation:screenEnter .18s ease}.dash-main{display:grid;grid-template-columns:1fr 320px;gap:20px;align-items:start}.dash-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.dash-flow .dash-growth-card{order:1}.dash-flow .dash-allocation-card{order:2}.dash-flow .dash-topholdings-card{order:3}.dash-flow .dash-movers-card{order:4}.dash-flow .dash-history-card{order:5;grid-column:1 / -1}.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden}.card-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 12px}.card-title{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.card-body{padding:0 18px 18px}.kpi-value{font-size:26px;font-weight:700;font-family:var(--mono);letter-spacing:-.03em}.kpi-sub{font-size:12px;color:var(--muted);margin-top:4px}.table-wrap{overflow-x:auto}table,.data-table{width:100%;border-collapse:collapse}th{padding:10px 14px;text-align:left;font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--border);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}th:hover{color:var(--text)}td{padding:12px 14px;border-bottom:1px solid color-mix(in oklch,var(--border) 50%,transparent);font-family:var(--mono);font-size:13px;white-space:nowrap}td.name-cell{font-family:var(--sans);white-space:normal}tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--surface-2)}.pos{color:var(--pos)}.neg{color:var(--neg)}.pos-bg{background:var(--pos-bg);color:var(--pos)}.neg-bg{background:var(--neg-bg);color:var(--neg)}.badge{display:inline-flex;align-items:center;padding:3px 8px;border-radius:6px;font-size:11px;font-weight:600;font-family:var(--sans)}.tag{display:inline-flex;align-items:center;padding:2px 7px;border-radius:99px;font-size:11px;font-weight:500;font-family:var(--sans)}.seg-tabs{display:inline-flex;max-width:100%;background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:3px;gap:2px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.seg-tab{padding:6px 14px;border-radius:7px;border:none;font-size:13px;font-weight:500;background:transparent;color:var(--muted);transition:background .12s,color .12s;white-space:nowrap;flex-shrink:0}.seg-tab.active{background:var(--surface-2);color:var(--text);box-shadow:0 1px 3px #0003}.seg-tab:hover:not(.active){color:var(--text)}.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.form-label{font-size:12px;font-weight:600;color:var(--muted)}.form-input{padding:10px 12px;border-radius:9px;background:var(--surface);border:1px solid var(--border);color:var(--text);font-size:14px;font-family:var(--sans);transition:border-color .12s;width:100%}.form-input:focus{outline:none;border-color:var(--accent)}.form-input::placeholder{color:var(--muted)}.form-select{padding:10px 36px 10px 12px;border-radius:9px;background:var(--surface);border:1px solid var(--border);color:var(--text);font-size:14px;font-family:var(--sans);width:100%;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.form-select:focus{outline:none;border-color:var(--accent)}.form-error{font-size:12px;color:var(--neg);margin-top:2px}.form-hint{font-size:12px;color:var(--muted);margin-top:2px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 18px;border-radius:9px;border:none;font-size:14px;font-weight:600;font-family:var(--sans);transition:opacity .12s,transform .08s;white-space:nowrap}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--accent-fg)}.btn-primary:hover:not(:disabled){opacity:.88}.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--muted)}.btn-ghost:hover:not(:disabled){color:var(--text);border-color:var(--muted)}.btn-danger{background:var(--neg-bg);color:var(--neg);border-color:transparent}.btn-danger:hover:not(:disabled){background:color-mix(in oklch,var(--neg) 22%,transparent)}.btn-sm{padding:6px 12px;font-size:12.5px;border-radius:7px}.toggle-wrap{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--border)}.toggle-wrap:last-child{border-bottom:none}.toggle-info{display:flex;flex-direction:column;gap:2px}.toggle-label{font-size:13.5px;font-weight:500}.toggle-desc{font-size:12px;color:var(--muted)}.toggle{position:relative;width:40px;height:22px;flex-shrink:0}.toggle input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;inset:0;background:var(--border);border-radius:99px;transition:background .15s}.toggle-slider:before{content:"";position:absolute;width:16px;height:16px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:transform .15s}.toggle input:checked+.toggle-slider{background:var(--accent)}.toggle input:checked+.toggle-slider:before{transform:translate(18px)}.asset-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.asset-form-grid>.form-group{min-width:0}.asset-form-grid input[type=date]{box-sizing:border-box;width:100%;-webkit-appearance:none;appearance:none}@media(max-width:560px){.asset-form-grid{grid-template-columns:1fr}}.drop-zone{border:2px dashed var(--border);border-radius:14px;padding:48px 24px;text-align:center;transition:border-color .15s,background .15s;cursor:pointer}.drop-zone.drag-over{border-color:var(--accent);background:color-mix(in oklch,var(--accent) 6%,transparent)}.drop-zone:hover{border-color:var(--muted)}.progress{height:4px;background:var(--border);border-radius:99px;overflow:hidden}.progress-bar{height:100%;background:var(--accent);border-radius:99px;transition:width .3s ease}@keyframes priceFlashUp{0%{background:transparent}20%{background:color-mix(in oklch,var(--pos) 22%,transparent)}to{background:transparent}}@keyframes priceFlashDown{0%{background:transparent}20%{background:color-mix(in oklch,var(--neg) 22%,transparent)}to{background:transparent}}.price-flash-up{animation:priceFlashUp 1.5s ease-out}.price-flash-down{animation:priceFlashDown 1.5s ease-out}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg,var(--surface) 25%,var(--surface-2) 50%,var(--surface) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:8px}.toast{position:fixed;bottom:24px;right:24px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px 18px;box-shadow:0 8px 30px #0006;z-index:100;max-width:340px;animation:screenEnter .2s ease}.login-shell{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.login-brand{background:color-mix(in oklch,var(--accent) 8%,var(--surface));border-right:1px solid var(--border);display:flex;flex-direction:column;justify-content:center;padding:60px}.login-form-area{display:flex;align-items:center;justify-content:center;padding:40px 60px}.login-form-box{width:100%;max-width:380px}@media(max-width:900px){.sidebar{transform:translate(-100%);box-shadow:4px 0 30px #00000080;padding-top:env(safe-area-inset-top,0)}.sidebar.open{transform:translate(0)}.scrim.open{display:block}.main-area{margin-left:0}.burger{display:none}.header-brand{display:flex}.who{display:none}.dash-main{grid-template-columns:1fr}.responsive-2col{grid-template-columns:1fr!important}.bottom-dock{display:flex}.sidebar-nav-full{display:none}.screen-main{padding-bottom:calc(84px + env(safe-area-inset-bottom,0))}.sidebar-footer{padding-bottom:calc(100px + env(safe-area-inset-bottom,0))}}@media(min-width:901px){.sidebar-nav-more{display:none}}@media(max-width:700px){.login-shell{grid-template-columns:1fr}.login-brand{display:none}.login-brand-mobile{display:flex!important}.login-pitch-mobile{display:block!important}.login-form-area{padding:32px 24px}.dash-grid{grid-template-columns:repeat(2,1fr)}.app-header{padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top,0))}.screen-main{padding:16px;padding-bottom:calc(84px + env(safe-area-inset-bottom,0))}.dash-flow .dash-allocation-card{order:1}.dash-flow .dash-topholdings-card{order:2}.dash-flow .dash-movers-card{order:3}.dash-flow .dash-growth-card{order:4}.dash-flow .dash-history-card{order:5}.header-title{display:none}.seg-tabs{display:flex;width:100%}.holdings-filter-bar .seg-tabs{flex-wrap:nowrap;width:100%}.holdings-filter-bar .seg-tab{flex:1 1 0;flex-shrink:1;text-align:center;padding:6px 2px;font-size:11px;white-space:normal;line-height:1.25;min-width:0}.holdings-search{flex:1 1 100%!important;max-width:none!important}.page-head-action{flex:1 1 100%}.summary-bar{flex-wrap:wrap}.summary-bar>.summary-tile{flex:1 1 50%!important;min-width:50%;box-sizing:border-box}.summary-bar>.summary-tile:nth-child(2){border-right:none!important}.summary-bar>.summary-tile:nth-child(4){border-right:none!important}.summary-bar>.summary-tile:nth-child(1),.summary-bar>.summary-tile:nth-child(2){border-bottom:1px solid var(--border)}.select-all-bar{display:flex!important}.table-wrap.responsive-table table,.table-wrap.responsive-table thead,.table-wrap.responsive-table tbody,.table-wrap.responsive-table th,.table-wrap.responsive-table td,.table-wrap.responsive-table tr{display:block}.table-wrap.responsive-table thead{position:absolute;top:-9999px;left:-9999px}.table-wrap.responsive-table tr{border-bottom:1px solid var(--border);padding:14px;display:flex;flex-wrap:wrap}.table-wrap.responsive-table tr:last-child{border-bottom:none}.table-wrap.responsive-table td{border-bottom:1px dashed color-mix(in oklch,var(--border) 45%,transparent);padding:7px 0;white-space:normal;text-align:right!important;display:flex;justify-content:space-between;align-items:center;gap:12px;flex:1 1 100%;font-size:13.5px}.table-wrap.responsive-table td:last-of-type{border-bottom:none}.table-wrap.responsive-table td:before{content:attr(data-label);font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;text-align:left;flex-shrink:0}.table-wrap.responsive-table td[data-label=""]:before,.table-wrap.responsive-table td:not([data-label]):before{content:none}.table-wrap.responsive-table td.cell-meta:first-child{flex:0 0 auto;order:-1;margin-right:10px}.table-wrap.responsive-table td.cell-meta:last-child{justify-content:flex-end;margin-top:4px;padding-top:8px;border-bottom:none}.table-wrap.responsive-table td.cell-meta:before{content:none}.table-wrap.responsive-table td.name-cell{text-align:left!important;justify-content:space-between;font-size:14px;flex:1 1 auto}.table-wrap.responsive-table td.name-cell:before{content:none}.table-wrap.responsive-table td.cell-secondary{font-size:12px;color:var(--muted);padding:5px 0}.table-wrap.responsive-table td.cell-secondary:before{font-size:10px}.table-wrap.responsive-table td.cell-primary{font-size:15px;font-weight:700;padding:9px 0}.table-wrap.responsive-table td.cell-primary:before{font-size:11.5px}.table-wrap.responsive-table td.cell-value{order:1}.table-wrap.responsive-table td.cell-pnl{order:2}.table-wrap.responsive-table td.cell-daychg{order:3}.table-wrap.responsive-table td.cell-ltp{order:4}.table-wrap.responsive-table td.cell-qty{order:5}.table-wrap.responsive-table td.cell-avg{order:6}.table-wrap.responsive-table td.cell-xirr{order:7}.table-wrap.responsive-table td.cell-meta:last-child{order:8}}@media(max-width:480px){.dash-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:700px){input.form-input,select.form-select,textarea.form-input,input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],select,textarea{font-size:16px}}
