:root{--bg: #0b1020;--bg-soft: #111834;--card: #141c33;--card-2: #19223d;--line: #263252;--line-soft: #1d2742;--text: #e8ecf6;--muted: #94a0bd;--dim: #6b779a;--accent: #6ea8ff;--accent-dim: #23375f;--up: #34d399;--down: #f87171;--warn: #fbbf24;--radius: 14px;--radius-sm: 10px;--shadow: 0 6px 24px rgba(0, 0, 0, .35);--safe-b: env(safe-area-inset-bottom, 0px);color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;overflow-x:hidden;background:var(--bg);color:var(--text);font:15px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}a{color:var(--accent);text-decoration:none}button{font:inherit;color:inherit}.app{min-height:100%;display:flex;flex-direction:column;padding-bottom:calc(64px + var(--safe-b))}.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:10px;padding:12px 16px;background:#0b1020e6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line-soft)}.topbar h1{font-size:17px;font-weight:650;margin:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar .back{background:none;border:0;padding:4px;margin-left:-4px;cursor:pointer;color:var(--muted);display:flex}.avatar{width:30px;height:30px;border-radius:50%;background:var(--accent-dim);color:var(--accent);display:grid;place-items:center;font-size:12px;font-weight:700;border:1px solid var(--line);cursor:pointer;flex:0 0 auto;overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover}main{flex:1;padding:16px;max-width:1100px;width:100%;margin:0 auto}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;background:#111834f5;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line-soft);padding-bottom:var(--safe-b)}.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:9px 4px 8px;color:var(--dim);font-size:11px;font-weight:550}.tabbar a.active{color:var(--accent)}.card{background:var(--card);border:1px solid var(--line-soft);border-radius:var(--radius);padding:16px}.card+.card,.stack>*+*{margin-top:12px}.stack-lg>*+*{margin-top:20px}.section-title{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--dim);font-weight:650;margin:0 0 10px}.hero{padding:18px 16px}.hero .label{font-size:12px;color:var(--muted)}.hero .value{font-size:32px;font-weight:700;letter-spacing:-.02em;margin:2px 0 6px;font-variant-numeric:tabular-nums}.hero .sub{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px}.kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:14px}.kpi{background:var(--card-2);border:1px solid var(--line-soft);border-radius:var(--radius-sm);padding:10px 12px}.kpi .k{font-size:11px;color:var(--dim);text-transform:uppercase;letter-spacing:.05em}.kpi .v{font-size:16px;font-weight:650;margin-top:2px;font-variant-numeric:tabular-nums}.up{color:var(--up)}.down{color:var(--down)}.flat{color:var(--muted)}.num{font-variant-numeric:tabular-nums}.pf-list{display:grid;gap:10px}@media(min-width:720px){.pf-list{grid-template-columns:repeat(2,1fr)}}.pf-card{display:block;background:var(--card);border:1px solid var(--line-soft);border-radius:var(--radius);padding:14px 16px;color:var(--text);transition:border-color .15s,transform .1s}.pf-card:active{transform:scale(.995)}.pf-card:hover{border-color:var(--line)}.pf-card .row1{display:flex;align-items:baseline;gap:8px}.pf-card .name{font-weight:650;font-size:15px;flex:1;min-width:0}.pf-card .tag{font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--dim);border:1px solid var(--line);border-radius:20px;padding:1px 7px}.pf-card .amount{font-size:22px;font-weight:700;margin-top:6px;font-variant-numeric:tabular-nums}.pf-card .meta{display:flex;gap:12px;font-size:12.5px;color:var(--muted);margin-top:4px;flex-wrap:wrap}.bar{display:flex;height:5px;border-radius:3px;overflow:hidden;background:var(--line-soft);margin-top:10px}.bar i{display:block;height:100%}.bar .equity{background:var(--accent)}.bar .fund{background:#a78bfa}.holdings{display:grid;gap:2px}.h-row{display:grid;grid-template-columns:1fr auto;gap:4px 10px;padding:11px 12px;background:var(--card);border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;align-items:center}.h-row:hover{border-color:var(--line-soft);background:var(--card-2)}.h-name{font-weight:550;font-size:14.5px;line-height:1.25}.h-sym{font-size:11.5px;color:var(--dim);margin-top:2px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}.h-right{text-align:right}.h-value{font-weight:650;font-variant-numeric:tabular-nums}.h-delta{font-size:12.5px;font-variant-numeric:tabular-nums;margin-top:2px}.pill{font-size:10px;letter-spacing:.04em;text-transform:uppercase;padding:1px 6px;border-radius:20px;border:1px solid var(--line);color:var(--dim)}.pill.warn{color:var(--warn);border-color:#5a4413;background:#2a1f06}.periods{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--line-soft);border:1px solid var(--line-soft);border-radius:var(--radius-sm);overflow:hidden}.periods .cell{background:var(--card);padding:8px 4px;text-align:center}.periods .p-label{font-size:10px;color:var(--dim);text-transform:uppercase;letter-spacing:.04em}.periods .p-value{font-size:13px;font-weight:650;margin-top:2px;font-variant-numeric:tabular-nums}@media(max-width:420px){.periods{grid-template-columns:repeat(4,minmax(0,1fr))}}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -16px;padding:0 16px}table.grid{width:100%;border-collapse:collapse;font-size:13.5px;min-width:640px}table.grid th{text-align:right;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--dim);font-weight:650;padding:6px 8px;border-bottom:1px solid var(--line-soft);white-space:nowrap}table.grid th:first-child,table.grid td:first-child{text-align:left;position:sticky;left:0;background:var(--bg)}table.grid td{text-align:right;padding:9px 8px;border-bottom:1px solid var(--line-soft);font-variant-numeric:tabular-nums;white-space:nowrap}table.grid tbody tr:hover td,table.grid tbody tr:hover td:first-child{background:var(--card-2)}table.grid tr.group-row td{background:var(--bg-soft);font-weight:650}table.grid tr.group-row td:first-child{background:var(--bg-soft)}table.grid td.name-cell{max-width:240px;white-space:normal}.seg{display:inline-flex;background:var(--card-2);border:1px solid var(--line-soft);border-radius:10px;padding:2px;gap:2px}.seg button{border:0;background:none;color:var(--muted);padding:5px 11px;border-radius:8px;font-size:12.5px;font-weight:600;cursor:pointer}.seg button.on{background:var(--accent-dim);color:var(--accent)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--line);background:var(--card-2);color:var(--text);padding:10px 16px;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer}.btn:hover{border-color:var(--accent)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#06102a}.btn.primary:hover{filter:brightness(1.08)}.btn.danger{color:var(--down);border-color:#4a2222}.btn.small{padding:6px 11px;font-size:12.5px;border-radius:8px}.btn.ghost{background:none}.btn.block{width:100%}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.row.between{justify-content:space-between}.spacer{flex:1}label.field{display:block;margin-bottom:12px}label.field>span{display:block;font-size:12px;color:var(--muted);margin-bottom:5px;font-weight:550}input,select,textarea{width:100%;background:var(--bg-soft);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:11px 12px;font:inherit;font-size:16px}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent)}input::placeholder{color:var(--dim)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.checks{display:grid;gap:8px;max-height:240px;overflow-y:auto}.check{display:flex;align-items:center;gap:10px;background:var(--bg-soft);border:1px solid var(--line-soft);border-radius:10px;padding:10px 12px;cursor:pointer;font-size:14px}.check input{width:auto;flex:0 0 auto;accent-color:var(--accent)}.check.on{border-color:var(--accent);background:var(--accent-dim)}.notice{border-radius:var(--radius-sm);padding:11px 13px;font-size:13.5px;border:1px solid var(--line);background:var(--card-2);color:var(--muted)}.notice.error{border-color:#4a2222;background:#2a1414;color:#fca5a5}.notice.warn{border-color:#5a4413;background:#241c07;color:#fcd34d}.notice.ok{border-color:#14532d;background:#0d2a1b;color:#86efac}.empty{text-align:center;padding:44px 20px;color:var(--muted)}.empty h3{margin:0 0 6px;color:var(--text);font-size:16px}.empty p{margin:0 0 16px;font-size:14px}.skeleton{background:linear-gradient(90deg,var(--card) 25%,var(--card-2) 50%,var(--card) 75%);background-size:300% 100%;animation:shimmer 1.3s infinite;border-radius:var(--radius-sm)}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#040814b3;display:flex;align-items:flex-end;justify-content:center;animation:fade .15s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}.sheet{background:var(--bg-soft);border:1px solid var(--line);border-bottom:0;border-radius:18px 18px 0 0;width:100%;max-width:560px;max-height:92vh;overflow-y:auto;padding:8px 16px calc(20px + var(--safe-b));box-shadow:var(--shadow);animation:rise .2s cubic-bezier(.2,.9,.3,1)}@keyframes rise{0%{transform:translateY(24px)}to{transform:translateY(0)}}@media(min-width:640px){.backdrop{align-items:center}.sheet{border-radius:18px;border-bottom:1px solid var(--line);max-height:88vh}}.sheet .handle{width:38px;height:4px;border-radius:2px;background:var(--line);margin:6px auto 12px}.sheet h2{margin:0 0 4px;font-size:18px}.sheet .sub{color:var(--muted);font-size:13px;margin:0 0 16px}.sheet-actions{display:flex;gap:10px;margin-top:18px;position:sticky;bottom:0;background:var(--bg-soft);padding-top:12px}.sheet-actions .btn{flex:1}.results{display:grid;gap:6px;margin-top:8px;max-height:300px;overflow-y:auto}.result{text-align:left;width:100%;background:var(--card);border:1px solid var(--line-soft);border-radius:10px;padding:10px 12px;cursor:pointer}.result:hover{border-color:var(--accent)}.result .r-name{font-size:13.5px;font-weight:550}.result .r-sym{font-size:11.5px;color:var(--dim);margin-top:2px}.person{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line-soft);border-radius:var(--radius-sm);padding:12px}.person .who{flex:1;min-width:0}.person .em{font-size:14px;font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.person .ro{font-size:12px;color:var(--muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.role-badge{font-size:10px;text-transform:uppercase;letter-spacing:.05em;font-weight:700;padding:2px 8px;border-radius:20px}.role-badge.admin{background:#3b2a05;color:var(--warn)}.role-badge.editor{background:var(--accent-dim);color:var(--accent)}.role-badge.viewer{background:#1f2740;color:var(--muted)}.login-wrap{min-height:100dvh;display:grid;place-items:center;padding:24px}.login{width:100%;max-width:380px;background:var(--card);border:1px solid var(--line-soft);border-radius:18px;padding:28px 24px;box-shadow:var(--shadow)}.login .brand{display:flex;align-items:center;gap:10px;margin-bottom:4px}.login h1{font-size:21px;margin:0}.login p.lede{color:var(--muted);font-size:13.5px;margin:4px 0 22px}.divider{display:flex;align-items:center;gap:10px;color:var(--dim);font-size:11.5px;margin:18px 0;text-transform:uppercase;letter-spacing:.06em}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--line-soft)}.chart-wrap{position:relative}.chart-wrap svg{display:block;width:100%;height:auto;touch-action:pan-y}.chart-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-top:8px}.chart-legend i{display:inline-block;width:10px;height:3px;border-radius:2px;margin-right:5px;vertical-align:middle}.chart-tip{position:absolute;pointer-events:none;background:#0a0f1ef2;border:1px solid var(--line);border-radius:8px;padding:6px 9px;font-size:12px;white-space:nowrap;transform:translate(-50%,-120%);font-variant-numeric:tabular-nums}.donut-row{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.donut-legend{flex:1 1 160px;min-width:0;display:grid;grid-template-columns:minmax(0,1fr);gap:7px}.donut-legend .li{display:flex;align-items:center;gap:8px;font-size:13px;min-width:0}.donut-legend .sw{width:9px;height:9px;border-radius:3px;flex:0 0 auto}.donut-legend .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.donut-legend .vl{color:var(--muted);font-variant-numeric:tabular-nums;flex:0 0 auto;white-space:nowrap}.muted{color:var(--muted)}.dim{color:var(--dim)}.tiny{font-size:12px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.nowrap{white-space:nowrap}.hide-sm{display:none}@media(min-width:640px){.hide-sm{display:initial}}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.btn.ghost.danger{color:var(--down)}@media(min-width:720px){.kpis{grid-template-columns:repeat(4,1fr)}.hero .value{font-size:38px}.tabbar{justify-content:center}.tabbar a{flex:0 1 180px}}.chart-wrap svg{height:200px}@media(min-width:720px){.chart-wrap svg{height:240px}}.topbar{position:sticky}.topbar-progress{position:absolute;left:0;right:0;bottom:-1px;height:2px;overflow:hidden;background:transparent}.topbar-progress:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;width:40%;background:linear-gradient(90deg,transparent,var(--accent),transparent);animation:slide 1.1s ease-in-out infinite}@keyframes slide{0%{transform:translate(-100%)}to{transform:translate(320%)}}
