:root{color-scheme:light;--background:#f6f9fd;--foreground:#0f1f3d;--muted:#66748a;--line:#d9e1ec;--surface:rgba(255,255,255,0.9);--surface-solid:#ffffff;--surface-alt:#f1f6ff;--accent:#005bea;--accent-strong:#0047c7;--accent-soft:#edf5ff;--blue-deep:#001b68;--blue-mid:#005bea;--blue-light:#a9cfff;--blue-pale:#edf5ff;--orange:#ff7a00;--orange-soft:#fff1e0;--danger:#b42318;--success:#137333;--warning:#9a5a00;--shadow:0 18px 45px rgba(18,42,78,0.09);--shadow-soft:0 8px 22px rgba(18,42,78,0.06);--table-row-height:38px}*{box-sizing:border-box}body,html{min-height:100%;margin:0}body{background:linear-gradient(180deg,#ffffff 0,var(--background) 100%);color:var(--foreground);font-family:Arial,Hiragino Sans,Yu Gothic,sans-serif;font-size:14px}.buttonLink,button,input,select{min-height:36px;border:1px solid var(--line);border-radius:8px;background:var(--surface-solid);color:var(--foreground);font:inherit;transition:background .16s ease,border-color .16s ease,box-shadow .16s ease,transform .16s ease}.buttonLink,button{cursor:pointer;padding:0 12px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;font-weight:700}.buttonLink:hover,button:hover{border-color:var(--active-user-color,var(--accent));background:var(--active-user-soft,var(--accent-soft));color:var(--foreground);box-shadow:var(--shadow-soft);transform:translateY(-1px)}.buttonLink:focus-visible,button:focus-visible,input:focus,select:focus{outline:none;border-color:var(--active-user-color,var(--accent));box-shadow:0 0 0 3px var(--active-user-focus,rgba(0,91,234,.14))}button:disabled{cursor:not-allowed;opacity:.55}.dangerButton{border-color:#f2b8b5;background:#fff3f2;color:var(--danger)}.dangerButton:hover{border-color:var(--danger);background:#ffe7e5;color:var(--danger)}input,select{height:36px;width:100%;padding:0 10px}input[type=date]{display:block;box-sizing:border-box;font-size:16px;font-weight:800;inline-size:100%;line-height:34px;max-inline-size:100%;overflow:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:center}input[type=date]::-webkit-date-and-time-value,input[type=date]::-webkit-datetime-edit,input[type=date]::-webkit-datetime-edit-fields-wrapper{display:block;inline-size:100%;max-inline-size:100%;min-inline-size:0;overflow:hidden;font:inherit;font-size:16px;font-weight:800;line-height:34px;text-align:center}input[type=date]::-webkit-calendar-picker-indicator{margin:0;padding:0}.page{width:min(1480px,calc(100% - 28px));margin:0 auto;padding:10px 0 34px}.loginPage{display:grid;align-content:center;width:min(520px,calc(100% - 28px));min-height:100vh;margin:0 auto;padding:32px 0}.loginPanel{display:grid;grid-gap:16px;gap:16px;box-shadow:var(--shadow)}.loginTitle{display:flex;align-items:flex-start;justify-content:center;gap:16px}.loginTitle h1{font-size:28px}.loginPanel .formGrid{grid-template-columns:1fr;margin-bottom:0}.loginPanel .toolbar{justify-content:stretch}.loginPanel .toolbar button{flex:1 1 180px}.adminLoginTools{display:grid;grid-gap:12px;gap:12px;border:1px solid rgba(255,122,0,.22);border-radius:8px;background:var(--orange-soft);padding:14px}.adminLoginTools h2{margin:0;color:#8f4600;font-size:15px}.appHeader{position:-webkit-sticky;position:sticky;top:0;z-index:30;display:flex;justify-content:space-between;gap:14px;min-height:56px;margin-bottom:14px;border:0;border-bottom:1px solid rgba(210,210,215,.86);border-radius:0;background:rgba(255,255,255,.92);box-shadow:none;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);padding:0}.appHeader,.brand{align-items:center}.brand{gap:10px;min-width:204px;white-space:nowrap}.brand,.brand div{display:inline-flex}.brand div{align-items:baseline;gap:7px}.brand h1{font-size:20px;font-weight:900}.brand span{color:var(--foreground);font-size:14px;font-weight:700}.brandIcon{width:26px;height:26px;display:inline-block;object-fit:contain}.eyebrow{margin:0 0 4px;color:var(--foreground);font-size:13px;font-weight:800;text-transform:uppercase}h1,h2,h3,h4{margin:0;letter-spacing:0}h1{font-size:19px}h1,h2{color:var(--foreground)}h2{font-size:20px;margin-bottom:14px}h3{font-size:16px;margin:22px 0 10px}h4{font-size:14px;margin:0 0 8px}.statusBar,.tabs,.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.tabs{flex:1 1 auto;flex-wrap:nowrap;align-self:stretch;border:0;border-radius:0;padding:0;margin:0;box-shadow:none;overflow-x:auto}.tabs,.tabs button{background:transparent}.tabs button{flex:0 0 auto;min-width:88px;height:56px;min-height:56px;border-color:transparent;border-radius:0;color:var(--foreground);box-shadow:inset 0 -2px 0 transparent}.tabs button:hover:not(.active){box-shadow:inset 0 -2px 0 var(--active-user-color,var(--accent))}.tabs .active,.tabs button:hover:not(.active){border-color:transparent;background:var(--active-user-soft,var(--accent-soft))}.tabs .active{box-shadow:inset 0 -3px 0 var(--active-user-color,var(--accent))}.badge,.tabs .active{color:var(--foreground)}.badge{border:1px solid rgba(0,91,234,.14);border-radius:999px;background:var(--accent-soft);font-weight:700;padding:7px 10px;white-space:nowrap}.badge.admin{border-color:rgba(15,31,61,.14);background:#f5f7fb;color:var(--foreground)}.userButton{gap:4px;border-color:var(--active-user-focus,rgba(0,91,234,.14));border-radius:999px;background:#ffffff;color:var(--foreground);padding:7px 12px;white-space:nowrap}.userName{font-weight:800}.panel{border:1px solid rgba(210,210,215,.86);border-radius:8px;background:var(--surface);box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);padding:18px}.empty,.loading,.message{border:1px solid var(--line);border-radius:8px;margin:10px 0;padding:10px 12px;box-shadow:var(--shadow-soft)}.message.success{border-color:#b7dfc2;background:#eef8f1;color:var(--success)}.message.error{border-color:#f2b8b5;background:#fff3f2;color:var(--danger)}.message.warning{border-color:var(--blue-light);background:var(--blue-pale);color:var(--foreground)}.formGrid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));grid-gap:12px;gap:12px;align-items:end;margin-bottom:14px}label{display:grid;grid-gap:5px;gap:5px;color:var(--foreground);font-size:12px;font-weight:700}label.wide{grid-column:span 2}.entryForm{display:grid;grid-gap:12px;gap:12px}.expenseEntryLayout{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,360px);grid-gap:16px;gap:16px;align-items:start}.bulkPanel,.entrySection{border:1px solid rgba(210,210,215,.9);border-radius:8px;background:rgba(255,255,255,.72);padding:14px}.bulkPanel h3,.entrySection h3{margin:0 0 10px}.bulkPanel{display:grid;grid-gap:12px;gap:12px}.bulkPanel p{margin:0;color:var(--muted);line-height:1.55}.dropZone{position:relative;display:grid;align-content:center;justify-items:center;min-height:160px;border:1px dashed var(--line);border-radius:8px;background:#ffffff;color:var(--foreground);cursor:pointer;padding:18px 14px;text-align:center;transition:background .16s ease,border-color .16s ease,box-shadow .16s ease,transform .16s ease}.dropZone.dragging,.dropZone:focus-within,.dropZone:hover{border-color:var(--active-user-color,var(--accent));background:var(--active-user-soft,var(--accent-soft));box-shadow:0 0 0 3px var(--active-user-focus,rgba(0,91,234,.14));transform:translateY(-1px)}.dropZone.hasFile{border-style:solid;background:var(--active-user-soft,var(--accent-soft))}.fileInput{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.dropZoneTitle{width:100%;color:var(--foreground);font-size:16px;font-weight:900;line-height:1.4;overflow-wrap:anywhere}.dropZoneText{margin-top:6px;color:var(--foreground);font-size:12px;font-weight:700}.dropZoneMeta{margin-top:10px;border:1px solid rgba(15,31,61,.12);border-radius:999px;background:rgba(255,255,255,.72);color:var(--muted);font-size:11px;font-weight:800;padding:5px 9px}.entryGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:12px;gap:12px}.entryFooter{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:12px;gap:12px;align-items:end}.entryFooter button{min-width:132px}.field{display:grid;grid-gap:6px;gap:6px}.field span{color:var(--foreground);font-size:12px;font-weight:800}.inline{width:min(240px,100%);margin-bottom:12px}.totalButton{min-width:150px;justify-content:flex-end;background:var(--surface-alt);color:var(--foreground)}.filter{width:min(340px,100%);margin-bottom:12px}.tableWrap{max-width:100%;max-height:460px;overflow:auto;border:1px solid rgba(210,210,215,.86);border-radius:8px;margin:10px 0;background:rgba(255,255,255,.68);box-shadow:inset 0 1px 0 rgba(255,255,255,.9)}table{width:100%;min-width:820px;border-collapse:separate;border-spacing:0}td,th{border-bottom:1px solid var(--line);height:var(--table-row-height);padding:4px 8px;text-align:left;vertical-align:middle;white-space:nowrap}th{position:-webkit-sticky;position:sticky;top:0;z-index:5;background:#f5f5f7;color:var(--foreground);font-weight:700}td{background:rgba(255,255,255,.92)}tr.selected td{background:#f2f2f7}.loadMoreRow td{height:42px;background:#fbfbfd;color:var(--foreground);text-align:center;font-weight:800}tr.addRow td{background:#f7fbff}tr.addRow td:first-child{box-shadow:inset 3px 0 0 var(--active-user-color,var(--accent))}td input,td select{height:30px;min-height:30px;min-width:120px}td input[type=checkbox]{width:14px;min-width:14px;height:14px;min-height:14px;padding:0}.rowActions{display:inline-flex;gap:6px;align-items:center;white-space:nowrap}.negative{color:var(--danger);font-weight:700}.resultBox{overflow:auto;border:1px solid var(--line);border-radius:6px;background:#ffffff;color:var(--foreground);padding:12px;max-height:260px}.categoryGrid,.split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:16px;gap:16px}.reportPanel{border:0;background:transparent;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;padding:0}.reportTopbar{display:flex;align-items:flex-start;justify-content:flex-end;gap:16px;margin:-2px 0 12px}.reportTopbar h2{margin-bottom:0}.reportTopbar p,.sectionTitle p{margin:4px 0 0;color:var(--foreground);font-size:12px}.reportControls{display:flex;align-items:center;gap:8px}.monthControl{display:grid;grid-template-columns:auto minmax(150px,1fr);grid-gap:8px;gap:8px;align-items:center;min-width:180px;margin:0;border:1px solid var(--line);border-radius:6px;background:#ffffff;padding:0 8px}.monthControl select{border:0;background:transparent;box-shadow:none}.calendarIcon{display:inline-block;width:18px;height:18px;object-fit:contain}.iconButton{width:40px;min-width:40px;padding:0;border-radius:6px}.refreshButton img{width:19px;height:19px;display:block;object-fit:contain}.reportDashboard{display:block}.reportKpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:20px;gap:20px;margin-bottom:12px}.reportKpi{display:grid;grid-template-columns:78px minmax(0,1fr);grid-gap:16px;gap:16px;align-items:center;min-height:116px;border:1px solid rgba(210,210,215,.92);border-radius:8px;background:#ffffff;box-shadow:0 10px 26px rgba(18,42,78,.06);padding:16px 22px}.reportKpi p{margin:0 0 4px;color:var(--foreground);font-size:15px;font-weight:800}.reportKpi strong{font-size:34px;font-weight:900;line-height:1.08}.reportKpi span,.reportKpi strong{display:block;color:var(--foreground)}.reportKpi span{margin-top:6px;font-size:12px;font-weight:700}.kpiIconImage{width:64px;height:64px;display:block;border-radius:0;object-fit:contain}.reportBlock{border:1px solid rgba(210,210,215,.92);border-radius:8px;background:#ffffff;box-shadow:0 10px 26px rgba(18,42,78,.06);padding:12px 14px 10px}.reportChartBlock{margin-bottom:12px}.sectionTitle{display:flex;align-items:baseline;flex-wrap:wrap;justify-content:space-between;gap:12px;margin-bottom:8px}.sectionTitle h3{flex:0 1 auto;min-width:0;margin:0}.periodSwitch{display:inline-grid;flex:0 0 auto;grid-template-columns:repeat(3,72px);border:1px solid var(--line);border-radius:6px;overflow:hidden}.periodSwitch button{min-height:30px;height:30px;border:0;border-radius:0;background:#ffffff;color:var(--foreground);font-size:12px}.periodSwitch button+button{border-left:1px solid var(--line)}.periodSwitch button:hover:not(.active){background:var(--active-user-soft,var(--accent-soft));box-shadow:none;transform:none}.periodSwitch .active{background:var(--active-user-color,var(--foreground));color:#ffffff}.chartFrame{overflow-x:auto;border:0;border-radius:8px;background:#ffffff;padding:0}.plotlyHost{min-width:1040px;min-height:360px}.balanceCard,.categoryCard{border:1px solid rgba(210,210,215,.86);border-radius:8px;background:#ffffff;box-shadow:0 10px 26px rgba(18,42,78,.06);padding:14px 16px}.categoryGrid{margin-bottom:12px}.categorySummary{display:block;margin-bottom:8px}.categorySummary h4{font-size:16px;font-weight:700}.balanceCard p,.categorySummary p{margin:4px 0 0;color:var(--foreground)}.categorySummary h4 span{color:var(--foreground);font-size:16px;font-weight:700}.categoryContent{display:grid;grid-template-columns:minmax(220px,280px) minmax(0,1fr);grid-gap:18px;gap:18px;align-items:center}.plotlyPieHost{min-height:260px}.miniTable{display:grid;grid-gap:0;gap:0;max-height:calc(34px * 7);overflow-y:auto;padding-right:4px}.miniTable div{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:10px;gap:10px;align-items:center;min-height:33px;border-top:1px solid var(--line);padding:6px 0}.miniTable .miniTableHeader{position:-webkit-sticky;position:sticky;top:0;z-index:2;min-height:28px;border-top:0;border-bottom:1px solid var(--line);background:#ffffff;color:var(--foreground);font-size:12px;font-weight:800}.miniTable span{display:inline-flex;min-width:0;align-items:center;gap:8px;color:var(--foreground)}.miniTable span i{display:inline-block;flex:0 0 auto;width:10px;height:10px;border-radius:50%}.miniTable strong{color:var(--foreground);text-align:right}.miniTable em{display:inline-block;min-width:54px;color:var(--foreground);font-style:normal;font-weight:800}.miniTable .totalRow{background:#fbfbfd;font-weight:900}.balanceGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:12px;gap:12px}.accountForecast{padding:14px}.accountTableWrap{max-width:100%;overflow:auto;border:1px solid var(--line);border-radius:8px;background:#ffffff}.accountForecastTable{min-width:1220px}.accountForecastTable td,.accountForecastTable th{height:58px;padding:7px 18px;text-align:right}.accountForecastTable td:first-child,.accountForecastTable td:last-child,.accountForecastTable th:first-child,.accountForecastTable th:last-child{text-align:left}.accountForecastTable td:first-child,.accountForecastTable th:first-child{width:210px;padding-left:12px;padding-right:10px}.accountForecastTable th{background:#fbfbfd;color:var(--foreground)}.accountForecastTable td{color:var(--foreground)}.accountForecastTable td:last-child{width:290px;padding:4px 18px 4px 34px}.accountForecastTable th:last-child{width:290px;padding-left:34px}.accountForecastTable td:nth-last-child(2),.accountForecastTable th:nth-last-child(2){padding-right:34px}.accountNameCell{display:inline-flex;align-items:center;gap:10px;font-weight:800}.accountGlyph{display:inline-block;width:24px;height:24px;flex:0 0 auto;object-fit:contain}.forecastValue{color:var(--foreground);font-size:16px;font-weight:900}.accountForecastTable .totalRow td{background:#fbfbfd;font-weight:900}.balanceSparkline,.sparklineEmpty{display:block;width:220px;height:48px}.balanceCard dl{display:grid;grid-gap:8px;gap:8px;margin:12px 0 0}.balanceCard dl div{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--line);padding-top:8px}.balanceCard dt{color:var(--foreground)}.balanceCard dd{margin:0;font-weight:800}@media (max-width:1100px){.categoryContent,.categoryGrid{grid-template-columns:1fr}.categoryContent{align-items:stretch}}@media (max-width:860px){.split{grid-template-columns:1fr;flex-direction:column;align-items:flex-start}.appHeader{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand status" "tabs tabs";align-items:center;grid-gap:8px 10px;gap:8px 10px;min-height:0;padding-top:6px}.brand{grid-area:brand;min-width:0}.statusBar{grid-area:status;justify-self:end;flex-wrap:nowrap}.userButton{min-height:36px;padding:6px 9px;font-size:12px}.tabs{grid-area:tabs;width:100%;align-self:auto}.tabs button{height:44px;min-height:44px}.entryFooter,.entryGrid,.expenseEntryLayout,.formGrid{grid-template-columns:1fr}label.wide{grid-column:auto}h1{font-size:24px}table{min-width:720px}.categoryContent,.categorySummary,.reportTopbar{grid-template-columns:1fr;flex-direction:column}.balanceGrid,.categoryGrid,.reportKpis,.split{grid-template-columns:1fr}.reportKpi{grid-template-columns:58px minmax(0,1fr);min-height:96px}.kpiIconImage{width:52px;height:52px}.reportDashboard{grid-template-columns:1fr}.reportChartBlock{padding:10px 10px 8px}.plotlyHost{min-width:760px;min-height:280px}.monthControl,.reportControls{width:100%}.accountForecast{padding:10px}.accountForecastTable{min-width:760px}.accountForecastTable td,.accountForecastTable th{height:48px;padding:5px 8px;font-size:12px}.accountForecastTable td:first-child,.accountForecastTable th:first-child{width:128px;padding-left:6px;padding-right:4px}.accountForecastTable td:nth-last-child(2),.accountForecastTable th:nth-last-child(2){padding-right:12px}.accountForecastTable td:last-child,.accountForecastTable th:last-child{width:164px;padding-left:12px;padding-right:8px}.accountNameCell{gap:4px}.accountNameCell>span{display:block;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.accountGlyph{width:18px;height:18px}.forecastValue{font-size:13px}.balanceSparkline,.sparklineEmpty{width:144px;height:34px}}