:root{font-family:Inter,Segoe UI,Arial,sans-serif;color:#1d2433;background:#f4f6fa;line-height:1.4}*{box-sizing:border-box}body{margin:0}.shell{min-height:100vh}.topbar{height:72px;background:#111827;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 32px}.brand{font-weight:800;letter-spacing:.12em}.topbar select{background:#273449;border:1px solid #516074;color:#fff;border-radius:8px;padding:10px 14px;min-width:220px}.nav{background:#fff;border-bottom:1px solid #e3e8ef;display:flex;gap:6px;padding:0 32px}.nav button{border:0;background:none;padding:16px 18px;color:#657086;cursor:pointer;font-size:14px}.nav button.active{color:#111827;border-bottom:2px solid #111827;font-weight:700}.content{max-width:1280px;margin:0 auto;padding:28px 32px}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}.card,.panel{background:#fff;border:1px solid #e3e8ef;border-radius:14px;padding:20px;box-shadow:0 4px 16px #13213d08}.card .label{color:#738096;font-size:13px}.card .value{font-size:26px;font-weight:750;margin-top:8px}.panel{margin-bottom:20px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.panel h2{font-size:18px;margin:0}.btn{border:0;border-radius:9px;padding:10px 14px;background:#1d4ed8;color:#fff;cursor:pointer;font-weight:650}.btn.secondary{background:#eef2f7;color:#253047}.btn.danger{background:#b42318}.btn:disabled{opacity:.45;cursor:not-allowed}.input,.select{border:1px solid #cbd5e1;border-radius:8px;padding:10px;width:100%;background:#fff}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:12px 10px;border-bottom:1px solid #edf0f4;white-space:nowrap}th{font-size:12px;color:#738096;text-transform:uppercase;letter-spacing:.04em}.category-row{cursor:pointer;transition:background .15s ease}.category-row:hover{background:#f8fafc}.category-row:focus{outline:2px solid #93c5fd;outline-offset:-2px}.category-chevron{display:inline-block;width:16px;color:#738096;transition:transform .15s ease}.category-row.expanded .category-chevron{transform:rotate(90deg)}.category-asset-row td{background:#fbfcfe;color:#536174}.asset-indent{padding-left:22px}.bar.unallocated{background:#4b5563}.unallocated-row:hover{background:#f3f4f6}.filter-row th{padding:0 6px 10px;text-transform:none}.column-filter{min-width:115px;padding:7px 8px;font-size:12px}.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px}.good{color:#137333}.warn{color:#9a6700}.bad{color:#b42318}.bar{width:5px;height:32px;border-radius:4px;background:#94a3b8}.bar.good{background:#24a148}.bar.warn{background:#e5a000}.bar.bad{background:#d92d20}.deviation{border-radius:7px;padding:7px 9px}.deviation.good{background:#24a14820}.deviation.warn{background:#e5a00022}.deviation.bad{background:#d92d2022}.muted{color:#738096}.notice{padding:12px 14px;border-radius:9px;background:#fff7d6;color:#735400;margin-bottom:16px}.error{padding:12px 14px;border-radius:9px;background:#fff0f0;color:#9c1c1c;margin-bottom:16px}.empty{padding:36px;text-align:center;color:#738096}.modal-back{position:fixed;inset:0;background:#11182799;display:grid;place-items:center;padding:20px}.modal{background:#fff;border-radius:14px;width:min(440px,100%);padding:24px}.modal h2{margin-top:0}.actions{display:flex;gap:8px;justify-content:flex-end;margin-top:18px}.login{min-height:100vh;display:grid;place-items:center;background:linear-gradient(145deg,#111827,#243b63)}.login-card{background:#fff;border-radius:18px;padding:34px;width:min(400px,calc(100% - 32px));box-shadow:0 20px 70px #0004}.login-card h1{margin:0 0 4px}.login-card p{color:#738096}.sync{display:flex;align-items:center;gap:8px;color:#536174;font-size:13px}.spinner{width:14px;height:14px;border:2px solid #cbd5e1;border-top-color:#1d4ed8;border-radius:50%;animation:spin .8s linear infinite}.unallocated-cell{background:#d92d2012}.asset-cat.unallocated{background:#fff1f0;border-color:#f2b8b5;color:#9c1c1c}.planner-categories{width:fit-content;max-width:100%;margin:18px auto 4px;padding:4px 20px}.planner-category{display:grid;grid-template-columns:max-content max-content max-content;align-items:center;column-gap:12px;padding:14px 0;border-bottom:1px solid #edf0f4}.planner-category:last-child{border-bottom:0}.planner-category-name{font-weight:650}.planner-category-target{display:block;margin-top:2px;font-size:13px}.switch{position:relative;display:inline-flex;align-items:center;cursor:pointer}.switch input{position:absolute;opacity:0;width:1px;height:1px}.switch-track{width:44px;height:24px;border-radius:999px;background:#cbd5e1;position:relative;transition:background .18s ease}.switch-track:after{content:'';position:absolute;width:18px;height:18px;top:3px;left:3px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:transform .18s ease}.switch input:checked+.switch-track{background:#1d4ed8}.switch input:checked+.switch-track:after{transform:translateX(20px)}.switch input:focus-visible+.switch-track{outline:3px solid #93c5fd;outline-offset:2px}.planner-sale-status{font-size:13px;font-weight:650;color:#607087;white-space:nowrap}.planner-deposit{display:grid;grid-template-columns:minmax(0,420px) auto;align-items:end;gap:12px}.planner-deposit label{display:grid;gap:7px;font-weight:650}.planner-deposit .input{font-size:20px;font-weight:700}.planner-result{margin-top:16px;padding:12px 14px;border-radius:9px;background:#f1f5f9;color:#536174}.planner-result:empty{display:none}.planner-plan-summary{line-height:1.6}.planner-plan-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:14px}.planner-plan-grid section{padding:14px;background:#fff;border-radius:8px}.planner-plan-grid h3{margin:0 0 8px;font-size:14px;color:#253047}.planner-plan-grid ul{list-style:none;margin:0;padding:0}.planner-plan-grid li{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-top:1px solid #edf0f4}.planner-cash{margin:14px 0 0}@media(max-width:800px){.topbar{padding:0 16px}.content{padding:20px 16px}.nav{padding:0 8px;overflow:auto}.grid{grid-template-columns:1fr}.form-row{grid-template-columns:1fr}.planner-deposit{grid-template-columns:1fr}.planner-categories{margin-left:0;padding-left:0}.planner-category{grid-template-columns:minmax(0,1fr) max-content;row-gap:6px}.planner-sale-status{grid-column:2}.planner-plan-grid{grid-template-columns:1fr}}
