:root{--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", ui-monospace, Menlo, monospace;--font-tc: "Noto Sans TC", "Inter", sans-serif;--accent: #1f6feb;--accent-soft: color-mix(in oklch, var(--accent) 12%, transparent);--accent-text: var(--accent);--green: #15803d;--green-bg: #ecfdf5;--red: #b91c1c;--red-bg: #fef2f2;--amber: #b45309;--amber-bg: #fffbeb;--amber-border: #fcd34d}:root,[data-theme=light]{--bg: #fafafa;--bg-elev: #ffffff;--bg-subtle: #f4f4f5;--bg-hover: #f9fafb;--border: #e5e7eb;--border-strong: #d4d4d8;--text: #18181b;--text-muted: #52525b;--text-subtle: #71717a;--text-faint: #a1a1aa;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .04);--shadow-md: 0 4px 14px rgba(15, 23, 42, .06), 0 1px 2px rgba(15, 23, 42, .04);--shadow-lg: 0 24px 60px rgba(15, 23, 42, .12), 0 6px 16px rgba(15, 23, 42, .08)}[data-theme=dark]{--bg: #0a0a0b;--bg-elev: #131316;--bg-subtle: #1a1a1d;--bg-hover: #1f1f23;--border: #27272a;--border-strong: #3f3f46;--text: #fafafa;--text-muted: #a1a1aa;--text-subtle: #71717a;--text-faint: #52525b;--green: #4ade80;--green-bg: rgba(74, 222, 128, .1);--red: #f87171;--red-bg: rgba(248, 113, 113, .1);--amber: #fbbf24;--amber-bg: rgba(251, 191, 36, .1);--amber-border: rgba(251, 191, 36, .4);--shadow-sm: 0 1px 2px rgba(0,0,0,.3);--shadow-md: 0 4px 14px rgba(0,0,0,.4), 0 1px 2px rgba(0,0,0,.3);--shadow-lg: 0 24px 60px rgba(0,0,0,.6), 0 6px 16px rgba(0,0,0,.4)}:root,[data-density=compact]{--row-h: 36px;--pad-x: 12px;--pad-y: 8px;--gap: 14px}[data-density=tight]{--row-h: 28px;--pad-x: 10px;--pad-y: 5px;--gap: 10px}[data-density=comfy]{--row-h: 44px;--pad-x: 16px;--pad-y: 11px;--gap: 18px}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:13px;line-height:1.45;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv11","ss01","tnum"}button{font-family:inherit;font-size:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}.tnum{font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.zh{font-family:var(--font-tc)}.app{display:grid;grid-template-columns:232px 1fr;grid-template-rows:100vh;width:100%;height:100vh;overflow:hidden}.sidebar{background:var(--bg-elev);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:16px 18px 14px;border-bottom:1px solid var(--border)}.brand-mark{width:28px;height:28px;border-radius:7px;background:var(--text);color:var(--bg-elev);display:grid;place-items:center;font-weight:700;font-size:13px;letter-spacing:-.02em}.brand-name{font-weight:600;font-size:14px;letter-spacing:-.01em}.brand-sub{font-size:11px;color:var(--text-faint);margin-top:-1px}.sidebar-nav{flex:1;overflow-y:auto;padding:10px 8px 12px}.nav-section-label{font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);padding:14px 12px 6px}.nav-item{display:flex;align-items:center;gap:10px;padding:6px 10px;border-radius:6px;color:var(--text-muted);cursor:pointer;font-size:13px;-webkit-user-select:none;user-select:none;border:1px solid transparent}.nav-item:hover{background:var(--bg-hover);color:var(--text)}.nav-item.active{background:var(--bg-subtle);color:var(--text);font-weight:500}.nav-item .nav-ic{width:14px;height:14px;flex:0 0 14px;color:var(--text-faint)}.nav-item.active .nav-ic{color:var(--accent)}.nav-children{margin-left:22px;border-left:1px solid var(--border);padding-left:6px}.nav-children .nav-item{font-size:12.5px;padding:5px 10px}.sidebar-foot{border-top:1px solid var(--border);padding:10px 12px;display:flex;align-items:center;gap:10px}.avatar{width:26px;height:26px;border-radius:50%;background:linear-gradient(135deg,var(--accent),color-mix(in oklch,var(--accent) 60%,#000));color:#fff;font-size:11px;font-weight:600;display:grid;place-items:center}.main{display:flex;flex-direction:column;background:var(--bg);overflow:hidden}.topbar{height:52px;flex:0 0 52px;border-bottom:1px solid var(--border);background:var(--bg-elev);display:flex;align-items:center;padding:0 20px;gap:14px}.crumbs{font-size:12.5px;color:var(--text-muted);display:flex;align-items:center;gap:8px}.crumbs .sep{color:var(--text-faint)}.crumbs .leaf{color:var(--text);font-weight:500}.spacer{flex:1}.scroll{flex:1;overflow-y:auto;overflow-x:hidden}.page{padding:20px 24px 80px;max-width:1500px;margin:0 auto}.page-head{display:flex;align-items:flex-end;gap:16px;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid var(--border)}.page-h1{font-size:22px;font-weight:600;letter-spacing:-.02em;margin:0;line-height:1.15}.page-zh{font-size:13px;color:var(--text-subtle);margin-top:2px;font-weight:400}.page-sub{color:var(--text-muted);font-size:13px;margin-top:4px}.btn{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border:1px solid var(--border-strong);background:var(--bg-elev);color:var(--text);border-radius:6px;font-size:12.5px;font-weight:500;white-space:nowrap;transition:background 80ms}.btn:hover{background:var(--bg-hover)}.btn-primary{background:var(--text);color:var(--bg-elev);border-color:var(--text)}.btn-primary:hover{opacity:.9;background:var(--text)}.btn-accent{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-accent:hover{opacity:.92;background:var(--accent)}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-muted)}.btn-ghost:hover{background:var(--bg-hover);color:var(--text)}.btn-sm{padding:3px 8px;font-size:11.5px}.btn-icon{width:28px;height:28px;padding:0;display:grid;place-items:center}.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;overflow:hidden}.card-h{padding:12px 14px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px}.card-h .title{font-weight:600;font-size:13px}.card-h .sub{font-size:11.5px;color:var(--text-subtle)}.card-body{padding:14px}.kpi{background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;padding:14px 16px 16px;display:flex;flex-direction:column;gap:4px;position:relative;overflow:visible}.kpi-label{font-size:11.5px;color:var(--text-muted);font-weight:500;display:flex;align-items:center;gap:6px}.kpi-label .zh{color:var(--text-faint);font-weight:400}.kpi-value{font-family:var(--font-mono);font-size:22px;font-weight:600;letter-spacing:-.02em;color:var(--text);margin-top:2px;font-variant-numeric:tabular-nums}.kpi-sub{font-size:11.5px;color:var(--text-subtle);display:flex;align-items:center;gap:6px}.kpi-trend.pos{color:var(--green)}.kpi-trend.neg{color:var(--red)}.kpi-currency{font-size:11px;color:var(--text-faint);margin-right:4px}.table-wrap{background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;overflow:hidden}.tbl{width:100%;border-collapse:collapse;font-size:12.5px}.tbl thead th{text-align:left;font-weight:500;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint);background:var(--bg-subtle);padding:8px var(--pad-x);border-bottom:1px solid var(--border);position:sticky;top:0;white-space:nowrap}.tbl tbody td{padding:var(--pad-y) var(--pad-x);border-bottom:1px solid var(--border);height:var(--row-h);vertical-align:middle;white-space:nowrap}.tbl tfoot td{padding:var(--pad-y) var(--pad-x);height:var(--row-h);vertical-align:middle;white-space:nowrap}.tbl tbody tr:last-child td{border-bottom:none}.tbl tbody tr:hover{background:var(--bg-hover)}.tbl tbody tr.row-group td{background:var(--bg-subtle);font-weight:600;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);padding:6px var(--pad-x);height:26px}.tbl tbody tr.row-total td,.tbl tfoot tr.row-total td{font-weight:600;background:var(--bg-subtle);border-top:2px solid var(--border-strong)}.tbl td.num,.tbl th.num{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.tbl td.center,.tbl th.center{text-align:center}.tbl td.shrink{width:1%}.tbl thead th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.tbl thead th.sortable:hover{color:var(--text-muted)}.sort-ind{font-size:9px;opacity:.8;margin-left:3px}.cell-name{display:flex;flex-direction:column;line-height:1.2}.cell-name .en{font-weight:500;color:var(--text)}.cell-name .zh{font-size:11px;color:var(--text-subtle);margin-top:1px}.money{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.money.neg{color:var(--red)}.money.pos{color:var(--green)}.money.zero{color:var(--text-faint)}.money .ccy{color:var(--text-faint);font-size:.85em;margin-right:4px}.money .conv{color:var(--text-faint);font-size:11px;margin-left:6px}[data-neg=parens] .money.neg .sign{display:none}[data-neg=parens] .money.neg:before{content:"("}[data-neg=parens] .money.neg:after{content:")"}[data-neg=minus] .money.neg{color:var(--text)}[data-neg=red] .money.neg .sign{display:none}[data-neg=red] .money.neg:before{content:"−"}.badge{display:inline-flex;align-items:center;gap:4px;padding:1px 7px;border-radius:4px;font-size:10.5px;font-weight:500;letter-spacing:.02em;background:var(--bg-subtle);color:var(--text-muted);border:1px solid var(--border);white-space:nowrap}.badge.cash{color:#15803d;background:#22c55e14;border-color:#22c55e33}.badge.bank{color:#1d4ed8;background:#3b82f614;border-color:#3b82f633}.badge.brokerage{color:#7c3aed;background:#7c3aed14;border-color:#7c3aed33}.badge.crypto{color:#c2410c;background:#ea580c14;border-color:#ea580c33}.badge.e_wallet{color:#0e7490;background:#0e749014;border-color:#0e749033}.badge.pension{color:#4338ca;background:#4338ca14;border-color:#4338ca33}.badge.insurance{color:#9d174d;background:#9d174d14;border-color:#9d174d33}.badge.liability{color:var(--red);background:var(--red-bg);border-color:#b91c1c33}.badge.other{color:var(--text-muted)}[data-theme=dark] .badge.cash{color:#4ade80;background:#4ade801a;border-color:#4ade8040}[data-theme=dark] .badge.bank{color:#60a5fa;background:#60a5fa1a;border-color:#60a5fa40}[data-theme=dark] .badge.brokerage{color:#a78bfa;background:#a78bfa1a;border-color:#a78bfa40}[data-theme=dark] .badge.crypto{color:#fb923c;background:#fb923c1a;border-color:#fb923c40}[data-theme=dark] .badge.e_wallet{color:#22d3ee;background:#22d3ee1a;border-color:#22d3ee40}[data-theme=dark] .badge.pension{color:#818cf8;background:#818cf81a;border-color:#818cf840}[data-theme=dark] .badge.insurance{color:#f472b6;background:#f472b61a;border-color:#f472b640}.stale{display:inline-flex;align-items:center;gap:4px;padding:1px 6px;border-radius:4px;font-size:10.5px;font-weight:500;background:var(--amber-bg);color:var(--amber);border:1px solid var(--amber-border);font-family:var(--font-mono)}.stale-dot{width:5px;height:5px;border-radius:50%;background:var(--amber)}.fresh-date{color:var(--text-subtle);font-size:11.5px}.drawer-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a66;z-index:50;animation:scrimFade .16s ease-out}[data-theme=dark] .drawer-scrim{background:#000000a6}@keyframes scrimFade{0%{opacity:0}to{opacity:1}}.drawer{position:fixed;right:0;top:0;bottom:0;width:460px;background:var(--bg-elev);border-left:1px solid var(--border);z-index:51;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);animation:drawerIn .2s cubic-bezier(.32,.72,0,1)}@keyframes drawerIn{0%{transform:translate(100%)}to{transform:translate(0)}}.drawer-h{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;gap:12px}.drawer-h .title{font-weight:600;font-size:15px}.drawer-h .zh{font-size:12px;color:var(--text-subtle)}.drawer-body{flex:1;overflow-y:auto;padding:18px 20px}.drawer-foot{padding:12px 20px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}.field-label{font-size:11.5px;color:var(--text-muted);font-weight:500}.field-hint{font-size:11px;color:var(--text-faint)}.input,.select,textarea.input{background:var(--bg);border:1px solid var(--border-strong);border-radius:6px;padding:7px 10px;font-size:13px;color:var(--text);outline:none;transition:border 80ms,box-shadow 80ms;width:100%}.input:focus,.select:focus,textarea.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input.mono{font-family:var(--font-mono)}.input-prefix{display:flex;align-items:center}.input-prefix .pfx{background:var(--bg-subtle);border:1px solid var(--border-strong);border-right:none;border-radius:6px 0 0 6px;padding:7px 10px;font-size:11.5px;font-family:var(--font-mono);color:var(--text-muted)}.input-prefix .input{border-radius:0 6px 6px 0}.modal-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;z-index:60;display:grid;place-items:center;animation:scrimFade .16s ease-out}[data-theme=dark] .modal-scrim{background:#000000b3}.modal{background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;width:540px;max-width:92vw;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);animation:modalIn .18s cubic-bezier(.32,.72,0,1)}@keyframes modalIn{0%{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-h{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px}.modal-body{padding:18px 20px;overflow-y:auto}.modal-foot{padding:12px 20px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end}.modal-h .title{font-weight:600;font-size:15px;flex:1}.toasts{position:fixed;bottom:18px;left:50%;transform:translate(-50%);z-index:70;display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast{background:var(--text);color:var(--bg-elev);padding:10px 14px;border-radius:8px;box-shadow:var(--shadow-lg);font-size:12.5px;display:flex;align-items:center;gap:12px;animation:toastIn .24s cubic-bezier(.32,.72,0,1);pointer-events:auto;max-width:480px}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.toast .undo{color:var(--accent);cursor:pointer;font-weight:500}[data-theme=dark] .toast{background:var(--bg-subtle);color:var(--text);border:1px solid var(--border)}.snapshot-banner{background:linear-gradient(90deg,color-mix(in oklch,var(--accent) 14%,var(--bg-elev)),var(--bg-elev));border-bottom:1px solid var(--accent);padding:8px 20px;font-size:12.5px;display:flex;align-items:center;gap:12px}.snapshot-banner strong{font-weight:600}.snapshot-banner .pin{color:var(--accent)}.rail{display:flex;flex-direction:column;gap:12px}.fx-row{display:grid;grid-template-columns:56px 1fr auto;align-items:center;gap:8px;padding:6px 0;font-family:var(--font-mono);font-size:12.5px;border-bottom:1px dashed var(--border)}.fx-row:last-child{border-bottom:none}.fx-row .pair{color:var(--text-muted);font-size:11.5px}.fx-row input{background:transparent;border:none;outline:none;font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right;color:var(--text);width:80px;padding:3px 6px;border-radius:4px}.fx-row input:hover,.fx-row input:focus{background:var(--bg-subtle)}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:14px}.tab{padding:8px 12px;font-size:12.5px;color:var(--text-muted);border-bottom:2px solid transparent;cursor:pointer;font-weight:500;margin-bottom:-1px}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.seg{display:inline-flex;background:var(--bg-subtle);border:1px solid var(--border);border-radius:7px;padding:2px;gap:1px}.seg button{border:none;background:transparent;padding:4px 10px;border-radius:5px;font-size:12px;color:var(--text-muted);font-weight:500}.seg button.active{background:var(--bg-elev);color:var(--text);box-shadow:var(--shadow-sm)}.row{display:flex;align-items:center;gap:8px}.col{display:flex;flex-direction:column}.between{display:flex;align-items:center;justify-content:space-between;gap:12px}.muted{color:var(--text-muted)}.faint{color:var(--text-faint)}.green{color:var(--green)}.red{color:var(--red)}.amber{color:var(--amber)}.divider{height:1px;background:var(--border);margin:12px 0}.ic{width:14px;height:14px;flex:0 0 14px}.spark{display:flex;gap:2px;align-items:flex-end;height:22px}.spark span{width:3px;background:var(--accent);border-radius:1px;opacity:.7}.login-wrap{height:100vh;display:grid;place-items:center;background:radial-gradient(1200px 600px at 80% -10%,color-mix(in oklch,var(--accent) 10%,transparent),transparent 60%),radial-gradient(900px 500px at -10% 110%,color-mix(in oklch,var(--accent) 6%,transparent),transparent 60%),var(--bg)}.login-card{width:380px;background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;padding:36px 32px 28px;text-align:center;box-shadow:var(--shadow-lg)}.login-mark{width:44px;height:44px;border-radius:10px;background:var(--text);color:var(--bg-elev);display:grid;place-items:center;font-weight:700;font-size:20px;margin:0 auto 14px}.login-title{font-size:18px;font-weight:600;letter-spacing:-.01em}.login-sub{color:var(--text-subtle);font-size:12.5px;margin-top:4px}.gbtn{margin-top:24px;width:100%;display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:10px 14px;border:1px solid var(--border-strong);background:var(--bg-elev);border-radius:8px;font-size:13.5px;font-weight:500;color:var(--text)}.gbtn:hover{background:var(--bg-hover)}.placeholder{background:repeating-linear-gradient(135deg,var(--bg-subtle) 0 6px,var(--bg) 6px 12px);border:1px solid var(--border);border-radius:6px;display:grid;place-items:center;color:var(--text-faint);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase}.diff-pos{color:var(--green)}.diff-neg{color:var(--red)}.datepick{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--border-strong);background:var(--bg-elev);border-radius:6px;font-size:12.5px;font-family:var(--font-mono)}.rail .card-body{padding:12px 14px}.link{color:var(--accent);cursor:pointer}.link:hover{text-decoration:underline}.donut-wrap{display:flex;align-items:center;gap:12px}.donut svg{display:block}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:0;border:1px solid var(--border);border-radius:8px;background:var(--bg-elev);overflow:hidden}.stat{padding:12px 14px;border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.stat-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);font-weight:600}.stat-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:16px;font-weight:600;margin-top:4px}.stat-sub{font-size:11px;color:var(--text-subtle);margin-top:2px}.tag-dir-buy{color:#15803d;font-weight:600;font-family:var(--font-mono);font-size:11px}.tag-dir-sell{color:#b91c1c;font-weight:600;font-family:var(--font-mono);font-size:11px}[data-theme=dark] .tag-dir-buy{color:#4ade80}[data-theme=dark] .tag-dir-sell{color:#f87171}.wl-w{background:var(--green-bg);color:var(--green);padding:1px 6px;border-radius:4px;font-size:10.5px;font-weight:600}.wl-l{background:var(--red-bg);color:var(--red);padding:1px 6px;border-radius:4px;font-size:10.5px;font-weight:600}.scroll::-webkit-scrollbar,.drawer-body::-webkit-scrollbar,.modal-body::-webkit-scrollbar,.sidebar-nav::-webkit-scrollbar{width:10px;height:10px}.scroll::-webkit-scrollbar-thumb,.drawer-body::-webkit-scrollbar-thumb,.modal-body::-webkit-scrollbar-thumb,.sidebar-nav::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:4px}.scroll::-webkit-scrollbar-thumb:hover,.drawer-body::-webkit-scrollbar-thumb:hover{background:var(--text-faint)}.empty{border:1px dashed var(--border-strong);border-radius:8px;padding:28px 16px;text-align:center;color:var(--text-muted);font-size:12.5px}.tbl td.note{max-width:220px;overflow:hidden;text-overflow:ellipsis}.editable{cursor:text;border-radius:4px;padding:2px 4px;margin:-2px -4px}.editable:hover{background:var(--bg-hover);outline:1px solid var(--border)}.editable:focus{background:var(--bg-elev);outline:2px solid var(--accent)}.pnl-row-target td{color:var(--text-muted)}.pnl-row-section td{background:var(--bg-subtle);font-weight:600;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);padding:6px var(--pad-x)}.bar-stack{display:flex;height:8px;border-radius:4px;overflow:hidden;background:var(--bg-subtle)}.bar-stack span{display:block;height:100%}.tbl tr[draggable=true]{cursor:default}.tbl tr[data-dragging=true]{opacity:.4}.tbl tr[data-dragover=true] td{box-shadow:inset 0 2px 0 0 var(--accent)}.drag-handle{display:inline-flex;align-items:center;justify-content:center;color:var(--text-faint);cursor:grab;padding:0 2px}.drag-handle:active{cursor:grabbing}.tbl tr:hover .drag-handle{color:var(--text-muted)}td.drag-cell{width:22px;padding-right:0;text-align:center}.tip-wrap{position:relative;display:inline-flex;align-items:center;gap:3px;cursor:default}.tip-box{visibility:hidden;opacity:0;position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--text);color:var(--bg-elev);font-size:11px;font-weight:400;line-height:1.5;padding:5px 9px;border-radius:5px;white-space:normal;max-width:200px;text-align:left;pointer-events:none;z-index:200;transition:opacity .12s}.tip-box.tip-right{left:auto;right:0;transform:none}.tip-box.tip-left{left:0;right:auto;transform:none}.tip-box.tip-wide{max-width:280px;width:max-content}.tip-wrap:hover .tip-box{visibility:visible;opacity:1}.tip-pnl{display:grid;grid-template-columns:1fr auto;gap:2px 14px}.tip-pnl .tip-formula{grid-column:1 / -1;color:var(--bg-elev);opacity:.7;margin-bottom:4px;font-style:italic}.tip-pnl .tip-val{font-variant-numeric:tabular-nums;text-align:right}.tip-pnl .tip-val.pos{color:#86efac}.tip-pnl .tip-val.neg{color:#fca5a5}.tip-pnl .tip-rule{grid-column:1 / -1;border-top:1px solid rgba(255,255,255,.25);margin:4px 0}.tip-pnl .tip-net{font-weight:600}.tip-pnl .tip-note{grid-column:1 / -1;opacity:.65;margin-top:5px}.print-receipt{display:none}@media print{.sidebar,.topbar,.no-print{display:none!important}.app,.main,.scroll{display:block!important;height:auto!important;overflow:visible!important}.scroll{padding:0!important}body{background:#fff;color:#000}.print-receipt{display:block;color:#000;font-size:11px}.pr-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}.pr-title{font-size:16px;font-weight:700}.pr-year{font-size:14px;font-weight:600}.print-receipt table{width:100%;border-collapse:collapse}.pr-info td{border:1px solid #000;padding:4px 6px}.pr-info .pr-lbl{background:#f0f0f0;font-weight:600;white-space:nowrap;width:1%}.pr-info .pr-val{min-width:120px}.pr-salary{margin-top:10px}.pr-salary th,.pr-salary td{border:1px solid #000;padding:4px 6px;text-align:left;white-space:nowrap}.pr-salary th{background:#f0f0f0;font-weight:600;font-size:10px}.pr-salary td{height:20px}.pr-salary .pr-period{white-space:normal}.pr-holidays{display:flex;gap:16px;margin-top:12px}.pr-hcol{flex:1}.pr-hhead{font-weight:600;border-bottom:1px solid #000;padding-bottom:3px;margin-bottom:4px}.pr-list{margin:0;padding-left:22px}.pr-list li.pr-litem{display:flex;align-items:flex-end;gap:8px;height:18px;margin-bottom:2px}.pr-ldate{min-width:82px}.pr-lsig{flex:1;border-bottom:1px solid #000;height:13px}@page{margin:14mm}}.rle-page{max-width:760px}.rle-capture{display:flex;gap:10px;align-items:center;margin:4px 0 18px}.rle-capture-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:10px;padding:16px;font-size:15px;font-weight:600;color:#fff;background:var(--accent);border:none;border-radius:12px;cursor:pointer}.rle-capture-btn:disabled{opacity:.6;cursor:default}.rle-manual{white-space:nowrap}.rle-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}.rle-months{display:flex;gap:6px;overflow-x:auto;padding-bottom:6px;margin-bottom:16px;-webkit-overflow-scrolling:touch}.rle-month{flex:0 0 auto;padding:6px 12px;font-size:12px;border:1px solid var(--border);border-radius:999px;background:var(--bg);color:var(--text-muted);cursor:pointer}.rle-month.active{background:var(--accent);color:#fff;border-color:var(--accent)}.rle-charts{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:18px}.rle-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:8px;justify-content:center}.rle-list{display:flex;flex-direction:column;gap:8px}.rle-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--bg)}.rle-thumb{flex:0 0 auto;width:38px;height:38px;display:flex;align-items:center;justify-content:center;border-radius:8px;background:var(--accent-bg, var(--bg-subtle));color:var(--accent);text-decoration:none}.rle-thumb-empty{color:var(--text-faint);background:var(--bg-subtle)}.rle-item-main{flex:1;min-width:0}.rle-note{font-size:12px;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rle-cat{font-size:11px;font-weight:600;padding:1px 7px;border:1px solid;border-radius:999px;white-space:nowrap}.rle-item-amt{text-align:right;white-space:nowrap}.rle-item-actions{display:flex;gap:2px}.rle-cat-picker{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.rle-cat-opt{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 4px;font-size:12px;font-weight:500;border:1.5px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text-muted);cursor:pointer}.rle-cat-opt.active{background:var(--bg-subtle)}.rle-preview{position:relative;margin-bottom:14px;text-align:center}.rle-preview img{max-height:220px;max-width:100%;border-radius:10px;border:1px solid var(--border)}.rle-preview-scan{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;color:#fff;background:#00000073;border-radius:10px}@media (max-width: 640px){.rle-charts,.rle-cat-picker{grid-template-columns:1fr}.rle-cat-opt{flex-direction:row;justify-content:center;gap:6px}}
