:root{--bg: #16120f;--surface: #1f1a16;--surface-2: #2a231d;--border: #3a3029;--border-soft: #2e2721;--text: #f2e9dd;--text-dim: #a89880;--text-faint: #6d6055;--gold: #d4a24c;--gold-dim: #8a6a2f;--teal: #4f9d94;--teal-dim: #2f5f5a;--rose: #c96a5e;--rose-dim: #7d3d36;--ember: #e08a3c;--radius: 10px;--radius-sm: 6px;--shadow: 0 1px 2px rgba(0,0,0,.4), 0 8px 24px rgba(0,0,0,.28);--shadow-sm: 0 1px 3px rgba(0,0,0,.35);--font: "IBM Plex Sans Arabic", "Segoe UI", system-ui, -apple-system, sans-serif;--mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace}:root[data-theme=light]{--bg: #f5f1ea;--surface: #ffffff;--surface-2: #ebe4d9;--border: #d8cec0;--border-soft: #e6ded2;--text: #241d17;--text-dim: #6b5c4b;--text-faint: #9c8d7d;--gold: #8a6416;--gold-dim: #b99447;--teal: #2c6f68;--teal-dim: #7fb3ad;--rose: #a33f33;--rose-dim: #cf8d84;--ember: #b5641d;--shadow: 0 1px 2px rgba(60,45,30,.08), 0 8px 24px rgba(60,45,30,.1);--shadow-sm: 0 1px 3px rgba(60,45,30,.1)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}.num{font-family:var(--mono);font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:embed;display:inline-block}.app{display:flex;min-height:100%}.sidebar{width:248px;flex-shrink:0;background:var(--surface);border-inline-start:1px solid var(--border-soft);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{padding:22px 20px 18px;border-bottom:1px solid var(--border-soft)}.brand h1{font-size:17px;font-weight:650;letter-spacing:-.01em;line-height:1.35}.brand span{display:block;font-size:11.5px;color:var(--text-faint);letter-spacing:.06em;margin-top:3px}.nav{padding:10px;flex:1;overflow-y:auto}.nav-item{display:flex;align-items:center;gap:11px;width:100%;padding:10px 12px;margin-bottom:2px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-dim);font:inherit;font-size:14.5px;text-align:start;cursor:pointer;transition:background .13s,color .13s}.nav-item:hover{background:var(--surface-2);color:var(--text)}.nav-item.active{background:var(--surface-2);color:var(--gold);font-weight:600}.nav-item svg{width:17px;height:17px;flex-shrink:0}.nav-foot{padding:12px;border-top:1px solid var(--border-soft);font-size:13px}.nav-user{color:var(--text-dim);padding:0 4px 8px}.nav-user b{display:block;color:var(--text);font-weight:600}.main{flex:1;min-width:0;padding:26px 30px 60px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:22px}.page-head h2{font-size:23px;font-weight:650;letter-spacing:-.015em}.page-head p{color:var(--text-dim);font-size:13.5px;margin-top:2px}.card{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow-sm)}.card-title{font-size:12px;font-weight:600;color:var(--text-faint);letter-spacing:.08em;margin-bottom:14px}.grid{display:grid;gap:14px}.grid-4{grid-template-columns:repeat(4,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-2{grid-template-columns:repeat(2,1fr)}.stat{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);padding:16px 18px;position:relative;overflow:hidden}.stat:before{content:"";position:absolute;inset-inline-start:0;top:0;bottom:0;width:3px;background:var(--border)}.stat.is-profit:before{background:var(--gold)}.stat.is-stock:before{background:var(--teal)}.stat.is-loss:before{background:var(--rose)}.stat-label{font-size:12.5px;color:var(--text-dim);margin-bottom:6px}.stat-value{font-size:25px;font-weight:650;letter-spacing:-.02em;line-height:1.2}.stat.is-profit .stat-value{color:var(--gold)}.stat.is-stock .stat-value{color:var(--teal)}.stat.is-loss .stat-value{color:var(--rose)}.stat-sub{font-size:12px;color:var(--text-faint);margin-top:5px}.ledger-note{display:flex;gap:10px;align-items:flex-start;background:var(--surface-2);border:1px solid var(--border-soft);border-radius:var(--radius-sm);padding:11px 13px;font-size:12.8px;color:var(--text-dim);line-height:1.55}.ledger-note b{color:var(--text);font-weight:600}.ledger-note .dot{width:8px;height:8px;border-radius:50%;margin-top:6px;flex-shrink:0}.field{margin-bottom:14px}.field label{display:block;font-size:13px;font-weight:550;color:var(--text-dim);margin-bottom:6px}input,select,textarea{width:100%;padding:11px 13px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font:inherit;font-size:15px;transition:border-color .13s,box-shadow .13s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--gold-dim);box-shadow:0 0 0 3px #d4a24c21}input[type=number]{font-family:var(--mono);direction:ltr;text-align:end}input::placeholder{color:var(--text-faint)}select{cursor:pointer}input:disabled,select:disabled{opacity:.5;cursor:not-allowed}.hint{font-size:12px;color:var(--text-faint);margin-top:5px}.linked{display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:10px}.linked .link-icon{color:var(--text-faint);padding-bottom:12px;font-size:15px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:11px 17px;border:1px solid transparent;border-radius:var(--radius-sm);font:inherit;font-size:14.5px;font-weight:600;cursor:pointer;transition:background .13s,border-color .13s,opacity .13s;white-space:nowrap}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--gold);color:#1a1206}.btn-primary:not(:disabled):hover{background:#e0b25e}.btn-ghost{background:transparent;border-color:var(--border);color:var(--text)}.btn-ghost:not(:disabled):hover{background:var(--surface-2)}.btn-danger{background:transparent;border-color:var(--rose-dim);color:var(--rose)}.btn-danger:not(:disabled):hover{background:#c96a5e1a}.btn-sm{padding:7px 11px;font-size:13px}.btn-lg{padding:14px 22px;font-size:16px;width:100%}.btn-icon{padding:7px;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text-faint);cursor:pointer;display:inline-flex;transition:color .13s,background .13s}.btn-icon:hover{color:var(--text);background:var(--surface-2)}.btn-icon.danger:hover{color:var(--rose)}.btn-icon:disabled{opacity:.3;cursor:not-allowed}.btn-icon svg{width:16px;height:16px}.table-wrap{overflow-x:auto;border:1px solid var(--border-soft);border-radius:var(--radius);background:var(--surface)}table{width:100%;border-collapse:collapse;font-size:14px}thead th{text-align:start;padding:11px 14px;font-size:11.5px;font-weight:600;color:var(--text-faint);letter-spacing:.06em;background:var(--surface-2);border-bottom:1px solid var(--border-soft);white-space:nowrap}tbody td{padding:12px 14px;border-bottom:1px solid var(--border-soft);vertical-align:middle}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:var(--surface-2)}td.num-cell,th.num-cell{text-align:end}.profit-pos{color:var(--gold);font-weight:600}.profit-neg{color:var(--rose);font-weight:600}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:99px;font-size:11.5px;font-weight:600;letter-spacing:.01em;white-space:nowrap}.badge-gold{background:#d4a24c24;color:var(--gold)}.badge-teal{background:#4f9d9424;color:var(--teal)}.badge-rose{background:#c96a5e24;color:var(--rose)}.badge-mute{background:var(--surface-2);color:var(--text-faint)}.fifo{border:1px solid var(--border-soft);border-radius:var(--radius);background:var(--surface);overflow:hidden}.fifo-head{padding:13px 16px;border-bottom:1px solid var(--border-soft);display:flex;align-items:baseline;justify-content:space-between;gap:10px}.fifo-head h4{font-size:13px;font-weight:650}.fifo-head span{font-size:11.5px;color:var(--text-faint);letter-spacing:.05em}.fifo-bar{display:flex;height:34px;margin:16px;border-radius:var(--radius-sm);overflow:hidden;background:var(--surface-2)}.fifo-seg{display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:11px;font-weight:600;color:#1a1206;border-inline-end:1px solid rgba(0,0,0,.28);min-width:0;overflow:hidden;transition:flex-grow .28s cubic-bezier(.4,0,.2,1);animation:seg-in .3s cubic-bezier(.4,0,.2,1)}.fifo-seg:last-child{border-inline-end:0}@keyframes seg-in{0%{opacity:.35}to{opacity:1}}.fifo-seg:nth-child(1){background:#d4a24c}.fifo-seg:nth-child(2){background:#c08f42}.fifo-seg:nth-child(3){background:#a97b38}.fifo-seg:nth-child(4){background:#92682f}.fifo-seg:nth-child(n+5){background:#7b5626;color:var(--text)}.fifo-lines{padding:0 16px 4px}.fifo-line{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--border-soft);font-size:13px}.fifo-line:last-child{border-bottom:0}.fifo-swatch{width:9px;height:9px;border-radius:2px;flex-shrink:0}.fifo-line-left{display:flex;align-items:center;gap:9px;min-width:0}.fifo-line-date{color:var(--text-dim);font-size:12.5px}.fifo-line-right{color:var(--text-dim);white-space:nowrap}.fifo-total{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--border-soft);background:var(--surface-2)}.fifo-total>div{padding:13px 16px;text-align:center;border-inline-end:1px solid var(--border-soft)}.fifo-total>div:last-child{border-inline-end:0}.fifo-total dt{font-size:11.5px;color:var(--text-faint);margin-bottom:4px}.fifo-total dd{font-size:18px;font-weight:650;letter-spacing:-.01em}.fifo-total .v-profit{color:var(--gold)}.fifo-total .v-loss{color:var(--rose)}.fifo-empty{padding:34px 20px;text-align:center;color:var(--text-faint);font-size:13.5px}.fifo-error{margin:16px;padding:13px 15px;background:#c96a5e17;border:1px solid var(--rose-dim);border-radius:var(--radius-sm);color:var(--rose);font-size:13.5px;line-height:1.55}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#080604a8;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:20px;z-index:100;animation:fade .14s ease}@keyframes fade{0%{opacity:0}}.modal{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);width:100%;max-width:480px;max-height:88vh;overflow-y:auto;animation:rise .17s cubic-bezier(.4,0,.2,1)}.modal.wide{max-width:620px}@keyframes rise{0%{transform:translateY(10px);opacity:0}}.modal-head{padding:17px 20px;border-bottom:1px solid var(--border-soft);display:flex;align-items:center;justify-content:space-between}.modal-head h3{font-size:17px;font-weight:650}.modal-body{padding:20px}.modal-foot{padding:15px 20px;border-top:1px solid var(--border-soft);display:flex;gap:10px;justify-content:flex-end}.empty{text-align:center;padding:64px 24px;color:var(--text-faint)}.empty svg{width:38px;height:38px;opacity:.35;margin-bottom:14px}.empty p{font-size:14.5px;margin-bottom:4px;color:var(--text-dim)}.empty small{font-size:13px}.toast-stack{position:fixed;bottom:22px;inset-inline-start:22px;z-index:200;display:flex;flex-direction:column;gap:9px}.toast{background:var(--surface);border:1px solid var(--border);border-inline-start:3px solid var(--gold);border-radius:var(--radius-sm);box-shadow:var(--shadow);padding:12px 16px;font-size:14px;min-width:260px;max-width:400px;animation:toast-in .2s cubic-bezier(.4,0,.2,1)}.toast.err{border-inline-start-color:var(--rose)}@keyframes toast-in{0%{transform:translateY(8px);opacity:0}}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.auth-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--border-soft);border-radius:14px;box-shadow:var(--shadow);padding:34px 30px}.auth-brand{text-align:center;margin-bottom:26px}.auth-brand h1{font-size:21px;font-weight:650;letter-spacing:-.015em}.auth-brand p{font-size:13px;color:var(--text-faint);margin-top:5px}.auth-mark{width:46px;height:46px;margin:0 auto 16px;border-radius:12px;background:linear-gradient(150deg,var(--gold),var(--gold-dim));display:grid;place-items:center;color:#1a1206;font-weight:700;font-size:19px}.err-box{background:#c96a5e17;border:1px solid var(--rose-dim);border-radius:var(--radius-sm);padding:11px 13px;color:var(--rose);font-size:13.5px;margin-bottom:15px}.row{display:flex;align-items:center;gap:10px}.row-between{display:flex;align-items:center;justify-content:space-between;gap:12px}.wrap{flex-wrap:wrap}.muted{color:var(--text-dim)}.faint{color:var(--text-faint)}.mt{margin-top:16px}.mb{margin-bottom:16px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border-soft);margin-bottom:20px}.tab{padding:10px 15px;border:0;background:transparent;color:var(--text-dim);font:inherit;font-size:14px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.tab.active{color:var(--gold);border-bottom-color:var(--gold);font-weight:600}.filters{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin-bottom:18px}.filters .field{margin-bottom:0;min-width:150px}.spin{width:15px;height:15px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .6s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.loading{display:grid;place-items:center;min-height:100vh;color:var(--text-faint)}.bottom-nav{display:none}@media(max-width:900px){.sidebar{display:none}.main{padding:18px 15px 88px}.grid-4{grid-template-columns:repeat(2,1fr)}.grid-3,.grid-2{grid-template-columns:1fr}.page-head h2{font-size:20px}.bottom-nav{display:flex;position:fixed;bottom:0;inset-inline:0;background:var(--surface);border-top:1px solid var(--border);padding:7px 4px calc(7px + env(safe-area-inset-bottom));z-index:50}.bottom-nav button{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 2px;border:0;background:transparent;color:var(--text-faint);font:inherit;font-size:10.5px;cursor:pointer;border-radius:var(--radius-sm)}.bottom-nav button.active{color:var(--gold)}.bottom-nav svg{width:20px;height:20px}.btn{padding:13px 18px}.btn-icon{padding:10px}input,select{padding:13px;font-size:16px}.fifo-total{grid-template-columns:1fr}.fifo-total>div{border-inline-end:0;border-bottom:1px solid var(--border-soft)}.fifo-total>div:last-child{border-bottom:0}.linked{grid-template-columns:1fr}.linked .link-icon{display:none}table{font-size:13.5px}thead th,tbody td{padding:10px 11px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
