:root{
  --bg:#eef5fb;
  --panel:#ffffff;
  --panel-soft:#f6fbff;
  --line:#c4d7ea;
  --line-strong:#89abcf;
  --text:#12324d;
  --muted:#5f7995;
  --brand:#0a6ed1;
  --brand-dark:#0b4f92;
  --brand-soft:#e8f2ff;
  --savy-navy:#081742;
  --savy-blue:#1f66f2;
  --savy-blue-soft:#dcebff;
  --savy-sky:#eef7ff;
  --savy-border:#d9e3f0;
  --savy-muted:#667491;
  --positive:#11845a;
  --negative:#c74a32;
  --neutral:#376b91;
  --shadow:0 18px 36px rgba(10,46,84,.10);
}

*{box-sizing:border-box}
html,body{margin:0;padding:0;min-height:100%;width:100%;overflow-x:hidden;background:linear-gradient(180deg,#f7fbff,#e6f0fa);color:var(--text);font-family:Segoe UI,Arial,sans-serif;font-size:13px}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
.material-symbols-outlined{
  font-family:"Material Symbols Outlined";
  font-weight:normal;
  font-style:normal;
  font-size:20px;
  line-height:1;
  letter-spacing:normal;
  text-transform:none;
  display:inline-block;
  white-space:nowrap;
  word-wrap:normal;
  direction:ltr;
  font-feature-settings:"liga";
  -webkit-font-feature-settings:"liga";
  -webkit-font-smoothing:antialiased;
}

.page-shell{max-width:1320px;margin:0 auto;padding:18px 16px 32px;overflow-x:hidden}
.app-bootstrap-loader{
  position:fixed;
  inset:0;
  z-index:5000;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:28px 16px;
  background:
    radial-gradient(circle at 20% 18%,rgba(10,110,209,.10),transparent 34%),
    radial-gradient(circle at 82% 78%,rgba(17,132,90,.10),transparent 32%),
    linear-gradient(180deg,#f7fbff,#e6f0fa);
}
.app-bootstrap-loader[hidden]{display:none !important}
.app-bootstrap-card{
  width:min(440px,100%);
  display:grid;
  justify-items:center;
  gap:12px;
  padding:30px 28px;
  border:1px solid var(--line);
  border-radius:22px;
  background:rgba(255,255,255,.94);
  box-shadow:0 26px 60px rgba(10,46,84,.16);
  text-align:center;
}
.app-bootstrap-logo{
  width:58px;
  height:58px;
  display:grid;
  place-items:center;
  border-radius:18px;
  overflow:hidden;
  background:transparent;
  box-shadow:0 18px 32px rgba(31,102,242,.22);
}
.app-bootstrap-logo img{width:100%;height:100%;object-fit:cover;border-radius:18px}
.app-bootstrap-card h1{font-size:1.7rem}
.app-bootstrap-card .subcopy{margin:0;max-width:34ch}
.app-bootstrap-spinner{
  width:46px;
  height:46px;
  border-radius:50%;
  border:4px solid #dcebf8;
  border-top-color:var(--brand);
  box-shadow:0 0 0 8px rgba(10,110,209,.06);
  animation:appBootstrapSpin .82s linear infinite;
}
.app-bootstrap-shimmer{
  width:100%;
  display:grid;
  gap:8px;
  margin-top:4px;
}
.app-bootstrap-shimmer span{
  height:9px;
  border-radius:999px;
  background:linear-gradient(90deg,#e7f1fb 0%,#f8fbff 44%,#dbe9f6 78%,#e7f1fb 100%);
  background-size:220% 100%;
  animation:appBootstrapShimmer 1.25s ease-in-out infinite;
}
.app-bootstrap-shimmer span:nth-child(1){width:82%}
.app-bootstrap-shimmer span:nth-child(2){width:100%}
.app-bootstrap-shimmer span:nth-child(3){width:68%}
.sheet-loading-logo-wrap,.dashboard-loading-logo-wrap{min-height:calc(100vh - 128px);display:flex;align-items:center;justify-content:center;padding:48px 16px;background:linear-gradient(180deg,#f7fbff,#e6f0fa)}
.sheet-loading-logo,.dashboard-loading-logo{width:56px;height:56px;border-radius:50%;border:4px solid rgba(10,110,209,.14);border-top-color:var(--brand);border-right-color:rgba(10,110,209,.64);box-shadow:0 0 0 8px rgba(10,110,209,.045),0 12px 28px rgba(10,46,84,.10);animation:dashboardLogoSpin .82s linear infinite}
body.sheet-logo-loading .sheet-loading-indicator{display:none!important}
@keyframes appBootstrapSpin{to{transform:rotate(360deg)}}
@keyframes appBootstrapShimmer{0%{background-position:120% 0}100%{background-position:-120% 0}}
@keyframes dashboardLogoSpin{to{transform:rotate(360deg)}}
.auth-screen{
  height:100vh;
  height:100dvh;
  min-height:0;
  display:flex;
  align-items:stretch;
  justify-content:center;
  padding:0;
  overflow:hidden;
  background:linear-gradient(180deg,#f9fbff 0%,#f2f6fb 100%);
}
.auth-screen[hidden],.app-shell[hidden],[hidden]{display:none !important}
.auth-shell{
  width:100%;
  height:100vh;
  height:100dvh;
  min-height:0;
  overflow:hidden;
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(380px,.9fr);
  background:#f8fbff;
}
.auth-main{
  min-width:0;
  min-height:0;
  overflow:hidden;
  display:grid;
  align-content:center;
  justify-items:center;
  gap:clamp(10px,1.9vh,18px);
  padding:clamp(18px,4.5vw,64px);
}
.auth-hero-panel{
  position:relative;
  min-width:0;
  min-height:0;
  overflow:hidden;
  display:grid;
  grid-template-rows:auto auto minmax(120px,1fr) auto;
  gap:clamp(14px,3vh,30px);
  padding:clamp(24px,4.6vw,68px);
  background:
    radial-gradient(circle at 96% 0%,rgba(113,169,255,.42),transparent 27%),
    radial-gradient(circle at 4% 92%,rgba(255,255,255,.36),transparent 24%),
    linear-gradient(135deg,#dcecff 0%,#b7d7ff 48%,#9fc8ff 100%);
  color:var(--savy-navy);
}
.auth-hero-bg{position:absolute;border-radius:50%;background:rgba(255,255,255,.18);pointer-events:none}
.auth-hero-bg-one{width:360px;height:360px;right:-110px;top:-90px}
.auth-hero-bg-two{width:280px;height:280px;left:-112px;bottom:-80px}
.auth-dot-grid{
  position:absolute;
  right:7%;
  top:37%;
  width:126px;
  height:78px;
  opacity:.34;
  background-image:radial-gradient(circle,rgba(31,102,242,.42) 0 4px,transparent 4px);
  background-size:22px 22px;
}
.auth-brand-row{position:relative;z-index:1;display:flex;align-items:center;gap:22px}
.auth-logo-tile{
  width:clamp(58px,5.7vw,76px);
  height:clamp(58px,5.7vw,76px);
  display:grid;
  place-items:center;
  border-radius:clamp(17px,1.8vw,22px);
  overflow:hidden;
  background:transparent;
  box-shadow:0 18px 34px rgba(31,102,242,.24);
}
.auth-logo-tile img{width:100%;height:100%;object-fit:cover;border-radius:inherit}
.auth-brand-row strong{
  color:var(--savy-navy);
  font-size:clamp(3rem,5.2vw,5rem);
  line-height:1;
  letter-spacing:0;
}
.auth-hero-copy{position:relative;z-index:1;display:grid;gap:clamp(10px,2vh,18px);max-width:520px}
.auth-hero-copy h1{
  display:grid;
  gap:4px;
  color:var(--savy-navy);
  font-family:Inter,"Segoe UI",Arial,sans-serif;
  font-size:clamp(2rem,4vw,3.85rem);
  line-height:1.08;
  letter-spacing:0;
}
.auth-hero-copy h1 span{display:block}
.auth-hero-copy h1 span:last-child{color:var(--savy-blue)}
.auth-hero-copy p{
  margin:0;
  max-width:36ch;
  color:#153160;
  font-size:clamp(1rem,1.4vw,1.18rem);
  line-height:1.55;
}
.auth-finance-art{
  position:relative;
  z-index:1;
  align-self:end;
  justify-self:center;
  width:min(460px,92%);
  height:clamp(142px,29vh,270px);
}
.auth-art-platform{
  position:absolute;
  left:5%;
  right:2%;
  bottom:24px;
  height:92px;
  border-radius:50%;
  background:linear-gradient(180deg,rgba(255,255,255,.72),rgba(127,179,255,.22));
  box-shadow:0 36px 70px rgba(31,102,242,.17);
  transform:skewX(-8deg);
}
.auth-bars{position:absolute;left:14%;bottom:75px;display:flex;align-items:flex-end;gap:14px}
.auth-bars span{width:42px;border-radius:8px 8px 2px 2px;background:linear-gradient(180deg,#ffffff,#6ca8ff);box-shadow:0 12px 24px rgba(31,102,242,.14)}
.auth-bars span:nth-child(1){height:82px}.auth-bars span:nth-child(2){height:124px}.auth-bars span:nth-child(3){height:68px}
.auth-pie{
  position:absolute;
  left:37%;
  bottom:52px;
  width:150px;
  height:92px;
  border-radius:50%;
  background:conic-gradient(from -18deg,#1f66f2 0 68%,#ffffff 68% 100%);
  box-shadow:0 20px 34px rgba(31,102,242,.18);
}
.auth-pie span{position:absolute;inset:15px;border-radius:50%;background:rgba(255,255,255,.42)}
.auth-card-chip{
  position:absolute;
  right:9%;
  bottom:118px;
  width:136px;
  height:78px;
  padding:18px;
  border-radius:20px;
  background:rgba(255,255,255,.74);
  box-shadow:0 16px 30px rgba(31,102,242,.13);
  transform:rotate(9deg);
}
.auth-card-chip span{display:block;height:12px;margin-bottom:12px;border-radius:999px;background:#b7d0f8}
.auth-card-chip span:first-child{width:26px;height:22px;border-radius:7px}
.auth-coins{position:absolute;right:2%;bottom:65px;display:grid;gap:5px}
.auth-coins span{width:62px;height:17px;border-radius:50%;background:linear-gradient(180deg,#ffffff,#4486f4);box-shadow:0 7px 12px rgba(31,102,242,.14)}
.auth-trend{position:absolute;right:9%;top:34px;width:170px;height:84px;border-bottom:4px solid rgba(31,102,242,.22);transform:rotate(-2deg)}
.auth-trend span{position:absolute;width:54px;height:4px;border-radius:999px;background:rgba(31,102,242,.28)}
.auth-trend span:nth-child(1){left:4px;bottom:18px;transform:rotate(-35deg)}.auth-trend span:nth-child(2){left:48px;bottom:31px;transform:rotate(28deg)}.auth-trend span:nth-child(3){left:96px;bottom:48px;transform:rotate(-42deg);background:#4f8ef6}
.auth-security-badge{
  position:relative;
  z-index:1;
  width:max-content;
  max-width:100%;
  display:flex;
  align-items:center;
  gap:12px;
  padding:14px 18px;
  border:1px solid rgba(31,102,242,.22);
  border-radius:16px;
  background:rgba(255,255,255,.76);
  color:#243d70;
  box-shadow:0 18px 34px rgba(31,102,242,.12);
  backdrop-filter:blur(10px);
  font-weight:700;
}
.auth-security-badge .material-symbols-outlined{color:var(--savy-blue)}
.auth-signout-ghost{justify-self:end}
.app-shell{display:grid;gap:16px}
.topbar{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;margin:0}
.eyebrow,.section-kicker{margin:0 0 8px;color:var(--brand-dark);text-transform:uppercase;letter-spacing:.18em;font-size:11px;font-weight:800}
h1,h2,h3{margin:0;font-family:Georgia,"Times New Roman",serif}
h1{font-size:clamp(2rem,4vw,3rem)}
h2{font-size:1.4rem}
h3{font-size:1rem}
.subcopy{margin:8px 0 0;color:var(--muted);line-height:1.5;max-width:72ch}

.status-stack{display:flex;flex-direction:column;gap:10px;align-items:flex-end}
.status-pill{display:inline-flex;align-items:center;padding:4px 9px;border-radius:999px;background:#d7e8fb;color:var(--brand-dark);font-weight:700;border:1px solid #9ebcdf}
.status-pill.live{background:#d9f5ea;color:#106a4d;border-color:#93d1b5}

.main-grid,.app-area{display:grid;gap:18px;min-width:0}
.sticky-shell{position:sticky;top:0;z-index:40;display:grid;gap:12px;padding:8px 0 10px;background:linear-gradient(180deg,#eef5fb 0%,#eef5fb 78%,rgba(238,245,251,.92) 100%);backdrop-filter:blur(10px)}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);padding:14px;min-width:0}
.notice-panel{background:linear-gradient(180deg,#ffffff,#f4f9ff)}
.panel-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:16px}
.compact-header{margin-bottom:12px}
.hint-text{color:var(--muted);font-size:13px;max-width:26ch;text-align:right}
.compact-list{margin:12px 0 0;padding-left:18px;color:var(--muted);line-height:1.7}

.auth-shell .notice-panel,.auth-shell .auth-panel,.auth-shell .household-panel{max-width:none}
.auth-panel,.household-panel{max-width:760px}
.auth-screen .notice-panel,
.auth-screen .household-panel{
  width:min(680px,100%);
  border-color:var(--savy-border);
  border-radius:24px;
  background:rgba(255,255,255,.96);
  box-shadow:0 22px 54px rgba(8,23,66,.08);
}
.auth-screen .auth-panel{
  width:min(620px,100%);
  max-height:calc(100dvh - clamp(36px,9vh,128px));
  overflow:hidden;
  display:block;
  padding:clamp(22px,3.2vw,34px);
  border:1px solid var(--savy-border);
  border-radius:24px;
  background:rgba(255,255,255,.98);
  box-shadow:0 24px 58px rgba(8,23,66,.10);
}
.auth-card-tabs,
.segmented.auth-card-tabs{
  width:100%;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:0;
  padding:4px;
  border:1px solid #dfe7f2;
  border-radius:12px;
  background:#f7f9fd;
}
.auth-card-tabs .segmented-btn,
.segmented.auth-card-tabs .segmented-btn{
  width:100%;
  min-width:0;
  min-height:48px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:0;
  border-radius:9px;
  background:transparent;
  color:#39435c;
  font-size:15px;
  font-weight:800;
  box-shadow:none;
}
.auth-card-tabs .segmented-btn.active{
  background:#fff;
  color:var(--savy-blue);
  box-shadow:0 8px 20px rgba(8,23,66,.08);
}
.auth-card-head{margin:clamp(22px,3.8vh,34px) 0 clamp(16px,2.7vh,24px)}
.auth-card-head h2{
  color:var(--savy-navy);
  font-family:Inter,"Segoe UI",Arial,sans-serif;
  font-size:clamp(1.9rem,2.8vw,2.7rem);
  line-height:1.08;
  letter-spacing:0;
}
.auth-screen .section-kicker{
  color:var(--savy-blue);
  letter-spacing:.16em;
  font-size:12px;
}
.dual-grid,.two-col,.three-col,.stats-grid,.toolbar-grid{display:grid;gap:18px;min-width:0}
.dual-grid,.two-col{grid-template-columns:repeat(2,minmax(0,1fr))}
.three-col{grid-template-columns:repeat(3,minmax(0,1fr))}
.stats-grid{grid-template-columns:repeat(5,minmax(0,1fr))}
.balance-stats{grid-template-columns:repeat(3,minmax(0,1fr))}
.toolbar-grid{grid-template-columns:repeat(2,minmax(220px,280px))}
.sheet-stack{display:grid;gap:18px;min-width:0}

.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.form-grid label,.compact-field,.mini-form{display:grid;gap:6px;font-weight:700;color:#1f476d}
.form-grid label[hidden],.compact-field[hidden],.mini-form[hidden]{display:none !important}
.form-grid input,.form-grid select,.form-grid textarea,.compact-field select,.mini-form input{
  width:100%;
  padding:8px 10px;
  border:1px solid var(--line-strong);
  border-radius:12px;
  background:#fff;
  color:var(--text);
}
.auth-login-form{
  grid-template-columns:1fr;
  gap:clamp(12px,2vh,18px);
}
.auth-login-form label{
  color:var(--savy-navy);
  gap:9px;
  font-size:14px;
}
.auth-input-wrap{position:relative}
.auth-login-form .auth-input-wrap input{
  height:clamp(48px,6.2vh,56px);
  padding:0 48px;
  border:1px solid #d6dfeb;
  border-radius:12px;
  background:#fff;
  color:var(--savy-navy);
  font-size:16px;
  box-shadow:0 1px 0 rgba(8,23,66,.02);
  transition:border-color .16s ease,box-shadow .16s ease;
}
.auth-login-form .auth-input-wrap input:focus{
  outline:none;
  border-color:#7aa9ff;
  box-shadow:0 0 0 4px rgba(31,102,242,.12);
}
.auth-login-form .auth-input-wrap input::placeholder{color:#9aa6ba}
.auth-field-icon{
  position:absolute;
  left:16px;
  top:50%;
  color:#8793aa;
  transform:translateY(-50%);
  pointer-events:none;
}
.auth-field-icon-right{left:auto;right:16px}
.auth-login-form #authSubmitBtn{
  position:relative;
  min-height:clamp(50px,6.2vh,56px);
  margin-top:8px;
  border-radius:12px;
  background:linear-gradient(135deg,#226cf2 0%,#0d55df 100%);
  color:#fff;
  font-size:17px;
  box-shadow:0 14px 24px rgba(31,102,242,.22);
}
.auth-login-form #authSubmitBtn::after{
  content:"\2192";
  position:absolute;
  right:22px;
  top:50%;
  font-size:24px;
  font-weight:500;
  transform:translateY(-54%);
}
.auth-screen .auth-actions{
  justify-content:flex-end;
  margin:-2px 0 0;
}
.auth-screen #forgotPasswordBtn,
.auth-screen .text-link{
  padding:0;
  border:0;
  background:transparent;
  color:var(--savy-blue);
  box-shadow:none;
  font-weight:800;
}
.auth-screen #forgotPasswordBtn{font-size:14px}
.auth-divider{
  display:flex;
  align-items:center;
  gap:16px;
  margin:28px 0 18px;
  color:var(--savy-muted);
  font-weight:700;
}
.auth-divider::before,
.auth-divider::after{content:"";height:1px;flex:1;background:#dfe7f2}
.auth-bottom-text{
  margin:0;
  text-align:center;
  color:#4d5871;
  font-size:15px;
}
.auth-support-note{
  margin:12px 0 0;
  text-align:center;
  color:var(--savy-muted);
  font-size:13px;
  line-height:1.4;
}
.auth-support-note a{color:var(--savy-blue);font-weight:700;text-decoration:none}
.auth-support-note a:hover{text-decoration:underline}
.form-grid textarea{resize:vertical}
.span-2{grid-column:span 2}
.span-4{grid-column:span 4}
.form-actions,.mini-form{display:flex;gap:10px;align-items:center}
.strict-list-input{
  padding-right:38px !important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 20 20'%3E%3Cpath fill='%2312324d' d='M5.2 7.4a1 1 0 0 1 1.4 0L10 10.8l3.4-3.4a1 1 0 1 1 1.4 1.4l-4.1 4.1a1 1 0 0 1-1.4 0L5.2 8.8a1 1 0 0 1 0-1.4Z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 12px center;
  background-size:14px 14px;
  cursor:pointer;
}
.strict-list-input.strict-list-open{
  border-color:var(--brand);
  border-bottom-left-radius:0 !important;
  border-bottom-right-radius:0 !important;
  box-shadow:0 0 0 3px rgba(10,110,209,.12);
}
.strict-list-input.strict-list-invalid{
  border-color:#c74a32 !important;
  box-shadow:0 0 0 3px rgba(199,74,50,.12);
}
.strict-list-panel{
  position:fixed;
  z-index:2105;
  display:grid;
  gap:0;
  padding:0;
  border:1px solid var(--line-strong);
  border-top:none;
  border-radius:0;
  background:#fff;
  box-shadow:none;
  max-height:min(320px,60vh);
  overflow:hidden;
}
.strict-list-search{
  width:100%;
  padding:6px 10px;
  border:none;
  border-bottom:1px solid var(--line-strong);
  border-radius:0;
  background:#fff;
  color:var(--text);
  outline:none;
}
.strict-list-options{
  display:grid;
  gap:0;
  max-height:220px;
  overflow:auto;
}
.strict-list-option{
  width:100%;
  text-align:left;
  padding:5px 12px;
  border:none;
  border-radius:0;
  background:#fff;
  color:var(--text);
  font-weight:500;
}
.strict-list-option:hover,.strict-list-option.active{
  background:#2b69c9;
  color:#fff;
}
.strict-list-empty{
  color:var(--muted);
  font-size:13px;
  padding:12px 14px;
}
input.strict-list-input{
  padding-right:38px !important;
  background-color:#fff !important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 20 20'%3E%3Cpath fill='%2312324d' d='M5.2 7.4a1 1 0 0 1 1.4 0L10 10.8l3.4-3.4a1 1 0 1 1 1.4 1.4l-4.1 4.1a1 1 0 0 1-1.4 0L5.2 8.8a1 1 0 0 1 0-1.4Z'/%3E%3C/svg%3E") !important;
  background-repeat:no-repeat !important;
  background-position:right 12px center !important;
  background-size:14px 14px !important;
}
.table-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:center;margin:0 0 12px}
.table-toolbar .hint-text{max-width:none;text-align:left}
.table-toolbar-meta{display:flex;gap:10px;align-items:center;justify-content:flex-end;flex-wrap:wrap}
.compact-filter-toolbar{justify-content:flex-start}
.compact-filter-toolbar .table-filter-input{max-width:360px}
.mini-form input{flex:1}
.checkbox-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}
.check-card{display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:#fff}
.check-card input{width:18px;height:18px}
.checkbox-row{display:flex;align-items:center;gap:10px;font-weight:600;color:var(--text);padding:8px 0}
.checkbox-row input{width:18px;height:18px;flex:0 0 auto}
.checkbox-row span{font-weight:600;color:var(--text)}
.inline-number-input{
  width:120px;
  padding:8px 10px;
  border:1px solid var(--line-strong);
  border-radius:10px;
  background:#fff;
  color:var(--text);
}

button{
  border:none;
  border-radius:12px;
  background:linear-gradient(135deg,var(--brand),var(--brand-dark));
  color:#fff;
  font-weight:700;
  padding:8px 14px;
}
.ghost-btn{
  background:#eff6ff;
  color:var(--brand-dark);
  border:1px solid var(--line-strong);
}
.danger-btn{
  background:linear-gradient(135deg,#c74a32,#962d19);
}
.segmented{display:flex;gap:8px}
.segmented-btn{background:#eff6ff;color:var(--brand-dark);border:1px solid var(--line-strong)}
.segmented-btn.active,.tab-btn.active{background:linear-gradient(135deg,#7fb3ea,#4f93dc);color:#001b36}
.auth-actions{display:flex;justify-content:flex-start;margin-top:12px}
.feedback{min-height:20px;margin:12px 0 0;color:var(--brand-dark);font-weight:600}
.feedback.error{color:var(--negative)}
.feedback.success{color:var(--positive)}
.admin-note{margin:0 0 14px;padding:12px 14px;border-radius:14px;background:#fff5df;border:1px solid #ebd39c;color:#70510b;font-weight:700}
.inline-note{margin-top:0}
.admin-panel{background:linear-gradient(180deg,#fffaf0,#fff4d8)}
.danger-panel{background:linear-gradient(180deg,#fff5f1,#ffe1d9)}
.narrow-panel{max-width:760px}
.transaction-top-grid{grid-template-columns:minmax(0,700px) minmax(300px,1fr);align-items:stretch}
.transaction-entry-panel{width:100%;justify-self:stretch}
.transaction-entry-panel .form-grid{max-width:none}
.pending-refund-panel{
  display:grid;
  grid-template-rows:auto minmax(0,1fr) auto;
  align-self:stretch;
  min-height:0;
  max-height:480px;
  overflow:hidden;
}
.refund-case-list{
  display:grid;
  align-content:start;
  gap:12px;
  min-height:0;
  overflow:auto;
  padding-right:4px;
  overscroll-behavior:contain;
}
.refund-case-card{display:grid;gap:10px;padding:14px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(180deg,#fff,#f7fbff)}
.refund-case-head{display:flex;justify-content:space-between;gap:12px;align-items:center}
.refund-case-meta,.refund-case-body{display:grid;gap:6px;font-size:13px;color:#34506d}
.refund-case-meta{grid-template-columns:repeat(2,minmax(0,1fr))}
.refund-case-actions{display:flex;justify-content:flex-end;align-items:center;gap:6px;flex-wrap:wrap}
.transaction-form-grid{grid-template-columns:repeat(4,minmax(0,1fr));align-items:end}
.tx-date-field,.tx-type-field,.tx-amount-field{grid-column:span 2}
.tx-category-field,.tx-account-field,.tx-from-field,.tx-to-field{grid-column:span 2}
.tx-split-category-action{grid-column:span 2;display:flex;align-items:end;justify-content:flex-start}
.tx-split-category-action .split-category-btn{
  display:inline-flex;
  align-items:center;
  gap:6px;
  min-height:36px;
  padding:7px 12px;
  border-radius:8px;
  background:#f8fbff;
  border-color:#a8bfdb;
  color:#173d63;
  font-size:12px;
  font-weight:800;
  box-shadow:none;
}
.tx-split-category-action .split-category-btn:hover{background:#eef6ff;border-color:#7fa6d1}
.tx-split-category-action .split-category-btn .material-symbols-outlined{font-size:16px;line-height:1}
.transaction-form-grid:not(.transaction-form-transfer) .tx-amount-field{grid-column:1 / 3;grid-row:2}
.transaction-form-grid:not(.transaction-form-transfer) .tx-account-field{grid-column:3 / 5;grid-row:2}
.transaction-form-grid:not(.transaction-form-transfer) .tx-category-field{grid-column:1 / 3;grid-row:3}
.transaction-form-grid:not(.transaction-form-transfer) .tx-split-category-action{grid-column:3 / 5;grid-row:3}
.transaction-form-grid.transaction-form-income .tx-account-field{grid-column:1 / 3;grid-row:2}
.transaction-form-grid.transaction-form-income .tx-category-field{grid-column:3 / 5;grid-row:2}
.transaction-form-grid.transaction-form-income .tx-amount-field{grid-column:1 / 3;grid-row:3}
.transaction-form-grid.transaction-form-no-split .tx-split-category-action,
.transaction-form-grid.transaction-form-transfer .tx-split-category-action{display:none}
.transaction-form-grid.transaction-form-transfer .tx-from-field{grid-column:1 / 3;grid-row:2}
.transaction-form-grid.transaction-form-transfer .tx-to-field{grid-column:3 / 5;grid-row:2}
.transaction-form-grid.transaction-form-transfer .tx-amount-field{grid-column:1 / 3;grid-row:3}
.tx-notes-field,.tx-actions{grid-column:1 / -1}
.report-stack{grid-template-columns:1fr}
.nested-panel{padding:16px}
.override-cell{display:grid;gap:8px;min-width:140px}
.override-actual{font-size:12px;font-weight:700;text-align:right}
.status-stack-cell{display:grid;gap:1px}
.status-subcopy{font-size:11px;color:var(--muted);line-height:1.2}

.workspace-banner{display:flex;justify-content:space-between;gap:20px;align-items:center;background:linear-gradient(135deg,#ffffff,#edf6ff)}
.compact-topbar{padding:0 2px}
.compact-topbar h1{font-size:clamp(1.5rem,2vw,2rem)}
.compact-topbar .subcopy{max-width:50ch}
.compact-workspace-banner{padding:14px 16px}
.compact-workspace-banner h2{font-size:1.35rem}
.workspace-meta{display:flex;flex-wrap:wrap;gap:14px;align-items:stretch}
.compact-workspace-meta{justify-content:flex-end;align-items:center}
.compact-workspace-meta .member-strip{margin-top:0;justify-content:flex-end}
.invite-block{min-width:170px;padding:14px;border-radius:16px;background:var(--panel-soft);border:1px solid var(--line);text-align:center}
.invite-block span{display:block;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.1em}
.invite-block strong{display:block;margin-top:8px;font-size:1.5rem}
.role-block strong{font-size:1.15rem}

.filter-panel{background:linear-gradient(180deg,#ffffff,#f7fbff)}
.member-strip{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.member-chip{padding:4px 9px;border-radius:999px;background:#eef6ff;border:1px solid var(--line);color:var(--brand-dark);font-weight:700}

.tabbar{display:flex;flex-wrap:wrap;gap:10px}
.tab-btn{padding:6px 14px;border-radius:999px;border:1px solid var(--line-strong);background:#eff6ff;color:var(--brand-dark);font-weight:700}
.mobile-only-tab{display:none}
.tab-period-panel{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;padding:14px 16px}
.tab-period-copy h2{margin:0 0 2px}
.tab-period-copy .subcopy{margin:0;max-width:620px}
.tab-period-field{min-width:220px;margin:0}
.budget-toolbar-panel{align-items:center;justify-content:space-between;padding:10px 16px}
.budget-controls{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}
.budget-controls .compact-field{min-width:190px}
.budget-actions{margin-left:auto;justify-content:flex-end;flex-wrap:wrap}
#budgetTrackerSheet{gap:8px}
#budgetTrackerSheet #budgetFeedback{min-height:0;margin:0}
#budgetTrackerSheet #budgetFeedback:empty{display:none}
#budgetTrackerSheet #budgetFeedback:not(:empty){display:block;margin:2px 4px 0;min-height:18px}
.budget-summary-panel{padding:12px}
.budget-summary-wrap{max-height:none}
.budget-summary-variance-table{table-layout:fixed;width:100%}
.budget-summary-variance-table .budget-summary-metric-col{width:44%}
.budget-summary-variance-table .budget-summary-amount-col{width:18.6667%}
.budget-summary-variance-table th,.budget-summary-variance-table td{overflow:hidden;text-overflow:ellipsis}
.budget-summary-variance-table td:first-child{font-weight:400;color:var(--text)}
.budget-summary-variance-table .amount-positive{color:var(--positive);font-weight:400}
.budget-summary-variance-table .amount-negative{color:var(--negative);font-weight:400}
.budget-summary-variance-table .amount-neutral{color:var(--neutral);font-weight:400}
.budget-summary-variance-table tbody td:nth-child(4),.budget-summary-variance-table tbody .table-total-row td{font-weight:800}
.budget-summary-variance-table tbody .table-total-row td.amount-positive{color:var(--positive) !important}
.budget-summary-variance-table tbody .table-total-row td.amount-negative{color:var(--negative) !important}
.budget-summary-variance-table tbody .table-total-row td.amount-neutral{color:var(--neutral) !important}
.budget-summary-plain-amount{color:var(--text);font-weight:400;text-align:right}
.budget-variance-table{table-layout:fixed;width:100%}
.budget-variance-table .budget-category-col{width:40%}
.budget-variance-table .budget-control-col{width:16%}
.budget-variance-table .budget-amount-col{width:12%}
.budget-variance-table .budget-percent-col{width:8%}
.budget-variance-table th,.budget-variance-table td{overflow:hidden;text-overflow:ellipsis}
.budget-variance-table th,.budget-variance-table td{padding-top:4px;padding-bottom:4px;line-height:1.15;vertical-align:middle}
.budget-variance-table .budget-assignment-head,.budget-variance-table .budget-assignment-cell{text-align:center}
.budget-variance-table .expense-control-pill{min-width:92px;padding:2px 8px;font-size:10px;font-weight:800;line-height:1.05}
.budget-expense-filter-field{min-width:190px;margin:0}
.budget-status-ok{color:var(--positive);font-weight:800}
.budget-status-watch{color:#a86b00;font-weight:800}
.budget-status-over{color:var(--negative);font-weight:800}
.budget-status-empty{color:var(--muted);font-weight:700}
.budget-editor-grid{display:grid;gap:16px}
.budget-editor-section{display:grid;gap:8px;padding:10px;border:1px solid var(--line);border-radius:12px;background:#fbfdff}
.budget-editor-section-income{border-left:4px solid var(--positive)}
.budget-editor-section-expense{border-left:4px solid var(--negative)}
.budget-editor-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:2px}
.budget-editor-head h3{margin:0;font-size:15px;color:var(--brand-dark)}
.budget-editor-wrap{max-height:calc(100vh - 180px)}
.budget-editor-table{--budget-copy-row-height:24px;--budget-month-row-height:24px;--budget-total-row-height:26px}
.budget-editor-table thead th{position:sticky;top:0;z-index:3;background:#eef5fb;box-sizing:border-box}
.budget-editor-table .budget-editor-copy-row th{top:0;height:var(--budget-copy-row-height);z-index:5}
.budget-editor-table .budget-editor-month-row th{top:var(--budget-copy-row-height);height:var(--budget-month-row-height);z-index:5}
.budget-editor-table .budget-editor-total-row th{top:calc(var(--budget-copy-row-height) + var(--budget-month-row-height));height:var(--budget-total-row-height);z-index:6}
.budget-editor-copy-row th{padding:3px 5px;background:#f8fbff}
.budget-editor-total-row th{padding:4px 5px;background:#eaf4ff;color:var(--brand-dark);font-size:10px;font-weight:900;border-bottom:2px solid var(--line-strong)}
.budget-editor-table tbody tr:first-child td{padding-top:8px}
.budget-editor-month-total{white-space:nowrap}
.budget-month-copy-btn{padding:2px 5px;font-size:10px;border-radius:7px;min-width:38px}
.budget-copy-placeholder{display:block;text-align:center;color:var(--muted);font-size:10px}
.budget-editor-table td input.budget-editor-input{width:84px;max-width:100%;padding:4px 6px;border:1px solid var(--line-strong);border-radius:8px;text-align:right;font-size:12px}
.budget-editor-row-total{font-weight:700}
.budget-editor-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:4px}
.budget-editor-feedback{min-height:18px;margin:0}
.app-dialog.budget-editor-dialog{width:min(1480px,calc(100vw - 12px));max-height:calc(100vh - 12px);padding:10px 12px;gap:8px}
.app-dialog.budget-editor-dialog .app-dialog-header{gap:6px}
.app-dialog.budget-editor-dialog #appDialogTitle{font-size:1.1rem}
.app-dialog.budget-editor-dialog .app-dialog-message{font-size:12px;line-height:1.25}
.app-dialog.budget-editor-dialog .app-dialog-body{max-height:calc(100vh - 100px);overflow:auto;padding-right:2px}
@media(max-width:980px){
  .budget-toolbar-panel{align-items:stretch}
  .budget-actions{margin-left:0}
}
@media(max-width:760px){
  .budget-controls{width:100%}
  .budget-controls .compact-field{min-width:0;flex:1 1 150px}
}
.liquidity-snapshot-list{display:grid;gap:8px}
.liquidity-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;border:1px solid var(--line);border-radius:12px;background:#f8fbff}
.liquidity-row span{color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}
.liquidity-row strong{font-size:16px}
.liquidity-row-total{background:#fff;border-color:var(--line-strong)}
.liquidity-row-total span,.liquidity-row-total strong{font-size:15px;color:var(--brand-dark)}
.sheet{display:none;gap:18px;min-width:0}
.sheet.active{display:grid}
@media (prefers-reduced-motion:reduce){
  .app-bootstrap-spinner,
  .app-bootstrap-shimmer span,
  .sheet-loading-logo,.dashboard-loading-logo{animation:none}
}

.quick-entry-sheet{max-width:720px}
.quick-entry-panel{display:grid;gap:16px}
.quick-entry-form{display:grid;gap:14px}
.quick-entry-block{display:grid;gap:10px;padding:14px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(180deg,#fff,#f7fbff)}
.quick-entry-block-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.quick-chip-grid{display:flex;flex-wrap:wrap;gap:10px}
.quick-chip-btn{padding:6px 12px;border-radius:14px;border:1px solid var(--line-strong);background:#eff6ff;color:var(--brand-dark);font-weight:700}
.quick-chip-btn.active{background:linear-gradient(135deg,#7fb3ea,#4f93dc);color:#001b36}
.quick-entry-input-field{display:grid;gap:6px;font-weight:700;color:#1f476d}
.quick-entry-input-field input,.quick-entry-input-field textarea,.quick-entry-date-field input{
  width:100%;
  padding:8px 10px;
  border:1px solid var(--line-strong);
  border-radius:12px;
  background:#fff;
  color:var(--text);
}
.quick-entry-input-field textarea{resize:vertical}
.quick-entry-date-field{display:grid;gap:6px;font-weight:700;color:#1f476d}

.stat-card{padding:12px;background:linear-gradient(180deg,#ffffff,#f5faff)}
.stat-label{display:block;color:var(--muted);font-size:10px;letter-spacing:.12em;text-transform:uppercase}
.stat-value{display:block;margin-top:5px;font-size:1.3rem}
.dashboard-metrics-panel{padding:14px}
.dashboard-top-grid{grid-template-columns:minmax(0,1fr);align-items:start}
.compact-panel-header{margin-bottom:10px}
.dashboard-metric-wrap{max-width:none}
.dashboard-metric-table th,.dashboard-metric-table td{padding:9px 12px}
.dashboard-metric-table th{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700;background:var(--panel-soft)}
.dashboard-metric-table td:first-child{font-weight:700;color:var(--text)}
.dashboard-metric-amount{font-size:16px;font-weight:800;text-align:right}
.dashboard-yoy-actions{display:flex;align-items:flex-start;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.dashboard-cashflow-grid{grid-template-columns:minmax(0,1fr)}
.dashboard-expense-row{grid-template-columns:minmax(0,1fr)}
.dashboard-investment-panel{grid-column:1/-1}
.dashboard-yoy-table{min-width:1180px;table-layout:fixed}
.dashboard-yoy-table th,.dashboard-yoy-table td{vertical-align:middle}
.dashboard-yoy-table th:nth-child(1),.dashboard-yoy-table td:nth-child(1){width:90px;text-align:left}
.dashboard-yoy-table th:nth-child(2),.dashboard-yoy-table td:nth-child(2){width:140px}
.dashboard-yoy-table th:nth-child(3),.dashboard-yoy-table td:nth-child(3),
.dashboard-yoy-table th:nth-child(4),.dashboard-yoy-table td:nth-child(4),
.dashboard-yoy-table th:nth-child(5),.dashboard-yoy-table td:nth-child(5){width:105px}
.dashboard-yoy-table th:nth-child(6),.dashboard-yoy-table td:nth-child(6){width:140px}
.dashboard-yoy-table th:nth-child(7),.dashboard-yoy-table td:nth-child(7){width:135px}
.dashboard-yoy-table th:nth-child(8),.dashboard-yoy-table td:nth-child(8),
.dashboard-yoy-table th:nth-child(9),.dashboard-yoy-table td:nth-child(9){width:155px}
.dashboard-yoy-table th:nth-child(10),.dashboard-yoy-table td:nth-child(10){width:95px;text-align:center}
.dashboard-yoy-table td:nth-child(n+2):nth-child(-n+9){text-align:right}
.manual-yoy-year-cell{display:flex;align-items:center;gap:7px;flex-wrap:wrap;min-width:150px}
.manual-yoy-action-cell{display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;width:100%}
.manual-yoy-badge{display:inline-flex;align-items:center;padding:2px 6px;border-radius:999px;background:#fff5f3;color:var(--negative);border:1px solid rgba(199,74,50,.28);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
.manual-yoy-edit-btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:1px solid var(--line-strong);border-radius:50%;background:#fff;color:var(--brand-dark);font-size:12px;font-weight:800;line-height:1;cursor:pointer;transition:background .16s ease,border-color .16s ease,transform .16s ease}
.manual-yoy-edit-btn:hover,.manual-yoy-edit-btn:focus{background:#eef6ff;border-color:var(--brand);transform:translateY(-1px)}
.manual-yoy-actions{display:inline-flex;align-items:center;gap:5px}
.investment-year-head{display:inline-flex;align-items:center;justify-content:flex-end;gap:6px;white-space:nowrap}
.investment-year-edit-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:1px solid var(--line-strong);border-radius:50%;background:#fff;color:var(--primary);font-size:12px;font-weight:800;line-height:1;cursor:pointer}
.investment-year-edit-btn:hover{background:#eef6ff}
.investment-class-btn{padding:0;border:0;background:transparent;color:var(--text);font:inherit;font-weight:400;text-align:left;cursor:pointer;text-decoration:none}
.investment-class-btn:hover{color:var(--primary)}
.investment-report-chart{margin-bottom:10px}
.investment-chart-layout{display:grid;grid-template-columns:190px minmax(0,1fr);gap:18px;align-items:center;padding:12px;border:1px solid #dbe7f3;border-radius:12px;background:#fbfdff}
.investment-chart-donut-wrap{position:relative;width:178px;height:178px;margin:auto}
.investment-chart-donut{display:block;width:178px;height:178px;transform:rotate(0deg)}
.investment-chart-slice{cursor:pointer;stroke:#fff;stroke-width:1.2;transition:transform .18s ease,filter .18s ease,opacity .18s ease}
.investment-chart-slice:hover{filter:drop-shadow(0 2px 4px rgba(15,39,64,.18))}
.investment-chart-slice.active{stroke-width:2.2;filter:drop-shadow(0 4px 7px rgba(15,39,64,.28))}
.investment-chart-center{position:absolute;inset:47px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;border-radius:50%;background:#fff}
.investment-chart-center span{max-width:74px;font-size:9px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.investment-chart-center strong{font-size:13px;line-height:1.15;color:var(--text)}
.investment-chart-center em{font-size:9px;color:var(--muted);font-style:normal;font-weight:700}
.investment-chart-legend{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:5px 12px;min-width:0}
.investment-chart-legend-row{display:grid;grid-template-columns:10px minmax(0,1fr) auto 36px;gap:7px;align-items:center;width:100%;padding:5px 6px;border:1px solid transparent;border-radius:8px;background:transparent;font:inherit;font-size:11px;color:var(--text);cursor:pointer;text-align:left}
.investment-chart-legend-row:hover,.investment-chart-legend-row.active{background:#eef6ff;border-color:#d6e7f8}
.investment-chart-dot{width:9px;height:9px;border-radius:50%}
.investment-chart-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}
.investment-chart-legend-row strong{text-align:right;font-size:11px}
.investment-chart-legend-row em{text-align:right;font-size:10px;color:var(--muted);font-style:normal;font-weight:700}
.manual-investment-dialog{gap:14px}
.manual-investment-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}
.investment-detail-wrap{max-height:58vh}
.investment-detail-toggle{display:inline-flex;align-items:center;gap:7px;padding:0;border:0;background:transparent;color:var(--text);font:inherit;font-weight:800;cursor:pointer}
.investment-detail-caret{display:inline-flex;align-items:center;justify-content:center;width:12px;font-size:12px;color:var(--muted);font-weight:900}
.investment-detail-group-row td{background:#f5f9ff;font-weight:800}
.investment-detail-indent{display:inline-block;padding-left:22px}
.tiny-btn{padding:3px 7px;border-radius:8px;font-size:11px;line-height:1.1}
.manual-yoy-dialog{display:grid;gap:12px}
.manual-yoy-dialog label{display:grid;gap:5px;font-weight:700;color:#1f476d}
.manual-yoy-dialog input{width:100%;padding:8px 10px;border:1px solid var(--line-strong);border-radius:12px;background:#fff;color:var(--text)}

#dashboardSheet .table-wrap,#dashboardSheet .cf-tbl-wrap{border-radius:10px;border-color:#dbe7f3}
#dashboardSheet table,#dashboardSheet .cf-statement-table{font-size:12px}
#dashboardSheet th,#dashboardSheet .cf-th{
  padding:5px 8px;
  font-size:10px;
  line-height:1.15;
  letter-spacing:.07em;
  font-weight:700;
  color:var(--muted);
  background:#f5f9ff;
  border-bottom:1px solid #dbe7f3;
}
#dashboardSheet td,#dashboardSheet .cf-c{
  padding:4px 8px;
  font-size:12px;
  line-height:1.15;
  border-bottom:1px solid #edf3f9;
}
#dashboardSheet .dashboard-metric-table th,#dashboardSheet .dashboard-metric-table td{padding:5px 8px}
#dashboardSheet .dashboard-metric-amount{font-size:13px}
#dashboardSheet .cf-foot td,#dashboardSheet .cf-foot .cf-c{padding:5px 8px;border-top:1px solid var(--line-strong)}
#dashboardSheet .summary-list{gap:7px}
#dashboardSheet .summary-list li,#dashboardSheet .liquidity-row{padding:6px 8px;border-radius:9px}
#dashboardSheet .liquidity-row span{font-size:10px;letter-spacing:.04em}
#dashboardSheet .liquidity-row strong{font-size:13px}
.expense-trend-chart{padding:8px;border:1px solid #dbe7f3;border-radius:12px;background:#fbfdff;overflow:hidden}
.expense-trend-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;font-size:10px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.05em}
.expense-trend-head strong{display:flex;align-items:center;gap:14px;font-size:11px;text-transform:none;letter-spacing:normal;white-space:nowrap}
.expense-trend-head-income{color:var(--positive)}
.expense-trend-head-expense{color:var(--negative)}
.expense-trend-bars{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-items:stretch;gap:6px;height:300px;padding-top:20px;border-top:1px solid #edf3f9}
.expense-trend-bar{display:grid;grid-template-rows:minmax(0,1fr) 16px;align-items:end;justify-items:center;height:100%;min-width:0;padding:0;border:0;background:transparent;cursor:pointer}
.expense-trend-plot{grid-row:1;display:flex;align-items:flex-end;justify-content:center;width:100%;height:100%;min-height:0}
.expense-trend-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:end;gap:6px;width:min(72px,100%);height:100%}
.expense-trend-series{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px;min-width:0;height:100%;border:0;background:transparent}
.expense-trend-amount{position:relative;z-index:2;display:inline-block;white-space:nowrap;text-align:center;font-size:10px;font-weight:800;line-height:1;text-shadow:0 1px 0 #fff,1px 0 0 #fff,-1px 0 0 #fff,0 -1px 0 #fff}
.expense-trend-amount-income{color:var(--positive)}
.expense-trend-amount-expense{color:var(--negative)}
.expense-trend-amount-stagger-high{transform:translate(-7px,-9px)}
.expense-trend-amount-stagger-low{transform:translate(7px,3px)}
.expense-trend-fill{flex:0 1 auto;align-self:center;width:clamp(12px,76%,28px);max-height:calc(100% - 26px);border-radius:8px 8px 3px 3px;transition:height .18s ease,transform .18s ease,box-shadow .18s ease}
.expense-trend-fill-income{background:linear-gradient(180deg,#42d58b,#058450)}
.expense-trend-fill-expense{background:linear-gradient(180deg,#ff9c8f,#e15d4f)}
.expense-trend-bar:hover .expense-trend-fill,.expense-trend-bar.active .expense-trend-fill{transform:translateY(-3px)}
.expense-trend-series:hover .expense-trend-fill,.expense-trend-series:focus-within .expense-trend-fill{transform:translateY(-4px)}
.expense-trend-bar:hover .expense-trend-fill-income,.expense-trend-bar.active .expense-trend-fill-income{box-shadow:0 6px 12px rgba(5,132,80,.2)}
.expense-trend-bar:hover .expense-trend-fill-expense,.expense-trend-bar.active .expense-trend-fill-expense{box-shadow:0 6px 12px rgba(199,74,50,.2)}
.expense-trend-series:hover .expense-trend-fill-income{box-shadow:0 8px 14px rgba(5,132,80,.24)}
.expense-trend-series:hover .expense-trend-fill-expense{box-shadow:0 8px 14px rgba(199,74,50,.24)}
.expense-trend-label{grid-row:2;align-self:end;font-size:9px;color:var(--muted);font-weight:800;text-align:center}
.expense-trend-empty{padding:8px}
.savings-trend-chart{padding:8px;border:1px solid #dbe7f3;border-radius:12px;background:#fbfdff;overflow:hidden}
.savings-trend-svg{display:block;width:100%;height:auto;min-height:230px}
.savings-trend-grid{stroke:#dbe7f3;stroke-width:1;stroke-dasharray:4 4;opacity:.72}
.savings-trend-area{fill:rgba(17,132,90,.18)}
.savings-trend-line{fill:none;stroke:#07864f;stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}
.savings-trend-marker{transition:filter .18s ease}
.savings-trend-marker:hover{filter:drop-shadow(0 3px 5px rgba(17,132,90,.22))}
.savings-trend-point-halo{fill:#fff;stroke:rgba(255,255,255,.9);stroke-width:1}
.savings-trend-point{fill:#fff;stroke-width:2.2}
.savings-trend-point-positive{stroke:#07864f}
.savings-trend-point-negative{stroke:var(--negative)}
.savings-trend-axis{fill:var(--text);font-size:11px;font-weight:700}
.savings-trend-y{text-anchor:end}
.savings-trend-x{text-anchor:middle;fill:#1f476d;font-size:10px;font-weight:800}
.savings-trend-value{font-size:11px;font-weight:800;text-anchor:middle;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round}
.savings-trend-value-positive{fill:#07864f}
.savings-trend-value-negative{fill:var(--negative)}
.net-worth-trend-panel{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:stretch}
.net-worth-trend-panel>.empty-state{grid-column:1/-1}
.net-worth-trend-card{display:grid;gap:14px;align-content:start;min-width:0;min-height:360px;padding:22px;border:1px solid #d9e3f0;border-radius:18px;background:#fff;box-shadow:0 10px 24px rgba(15,39,64,.05)}
.net-worth-trend-card .panel-header{margin-bottom:0}
.net-worth-trend-card .section-kicker{font-size:11px;letter-spacing:2px;color:#5f7da0}
.net-worth-trend-card h2{font-size:23px;line-height:1.15}
.net-worth-trend-card-risk{overflow:hidden}
.net-worth-trend-card-risk .table-wrap{border-radius:10px}
.net-worth-trend-chart{padding:8px;border:1px solid #dbe7f3;border-radius:12px;background:#fbfdff;overflow:hidden}
.net-worth-trend-widget{display:grid;grid-template-columns:34px minmax(0,1fr);gap:6px;min-height:250px}
.net-worth-trend-yaxis{display:flex;flex-direction:column;justify-content:space-between;height:232px;margin-top:8px;margin-bottom:18px;color:var(--muted);font-size:10px;font-weight:800}
.net-worth-trend-plot-area{position:relative;height:250px;min-width:0}
.net-worth-trend-grid{position:absolute;inset:8px 0 18px;z-index:0;display:flex;flex-direction:column;justify-content:space-between;pointer-events:none}
.net-worth-trend-grid span{display:block;border-top:1px dashed #dbe7f3}
.net-worth-trend-line-svg{position:absolute;inset:8px 0 18px;z-index:2;width:100%;height:calc(100% - 26px);overflow:visible;pointer-events:none}
.net-worth-line{fill:none;stroke:#8fc2ff;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.net-worth-line-dot{fill:#fff;stroke:#6aa9ff;stroke-width:1;vector-effect:non-scaling-stroke}
.net-worth-trend-bars{position:relative;z-index:1;display:grid;align-items:stretch;gap:5px;height:100%}
.net-worth-trend-bar{display:grid;grid-template-rows:minmax(0,1fr) 18px;align-items:end;justify-items:center;height:100%;min-width:0;padding:0;border:0;background:transparent;cursor:pointer}
.net-worth-trend-bar-plot{grid-row:1;display:flex;align-items:flex-end;justify-content:center;width:100%;height:100%;min-height:0}
.net-worth-trend-series{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px;min-width:0;width:100%;height:100%}
.net-worth-trend-amount{white-space:nowrap;text-align:center;font-size:10px;font-weight:800;line-height:1;color:#2368e8}
.net-worth-trend-fill{flex:0 1 auto;align-self:center;width:clamp(20px,46%,46px);max-height:calc(100% - 14px);border-radius:8px 8px 3px 3px;background:linear-gradient(180deg,#5f9af5,#2f74e6);transition:height .18s ease,transform .18s ease,box-shadow .18s ease}
.net-worth-trend-bar:hover .net-worth-trend-fill,.net-worth-trend-bar:focus .net-worth-trend-fill{transform:translateY(-3px);box-shadow:0 7px 14px rgba(47,116,230,.24)}
.net-worth-trend-label{grid-row:2;align-self:end;font-size:9px;color:var(--muted);font-weight:800;text-align:center}
.app-dialog.expense-month-dialog{width:min(720px,calc(100vw - 32px))}
.expense-month-detail-wrap{max-height:56vh}
.risk-chart-box{margin-bottom:10px}
.risk-chart-layout{display:grid;grid-template-columns:132px minmax(0,1fr);gap:14px;align-items:center;padding:8px;border:1px solid #dbe7f3;border-radius:12px;background:#fbfdff}
.risk-donut-wrap{position:relative;width:120px;height:120px;margin:auto}
.risk-donut-svg{width:120px;height:120px;display:block}
.risk-donut-slice{cursor:pointer;stroke:#fff;stroke-width:1.2;transition:transform .18s ease,filter .18s ease,opacity .18s ease}
.risk-donut-slice:hover{filter:drop-shadow(0 2px 4px rgba(15,39,64,.18))}
.risk-donut-slice.active{stroke-width:2.2;filter:drop-shadow(0 4px 7px rgba(15,39,64,.28))}
.risk-donut-center{position:absolute;inset:32px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;border-radius:50%;background:#fff}
.risk-donut-center span{max-width:62px;font-size:9px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.risk-donut-center strong{font-size:13px;color:var(--text)}
.risk-donut-center em{font-size:9px;color:var(--muted);font-style:normal;font-weight:700}
.risk-legend{display:grid;gap:5px;min-width:0}
.risk-legend-row{display:grid;grid-template-columns:10px minmax(0,1fr) auto 34px;gap:7px;align-items:center;width:100%;padding:4px 5px;border:1px solid transparent;border-radius:8px;background:transparent;font:inherit;font-size:11px;color:var(--text);cursor:pointer;text-align:left}
.risk-legend-row:hover,.risk-legend-row.active{background:#eef6ff;border-color:#d6e7f8}
.risk-dot{width:9px;height:9px;border-radius:50%}
.risk-legend-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}
.risk-legend-row strong{text-align:right;font-size:11px}
.risk-legend-row em{text-align:right;font-size:10px;color:var(--muted);font-style:normal}
.risk-chart-empty{padding:8px}
.risk-summary-row-btn{padding:0;border:0;background:transparent;color:var(--text);font:inherit;font-weight:400;text-align:left;cursor:pointer}
.risk-summary-row-btn:hover{color:var(--brand-dark)}
.clickable-risk-row{cursor:pointer}
.clickable-risk-row:hover td{background:#f7fbff}

.table-wrap{max-width:100%;overflow:auto;border:1px solid var(--line);border-radius:16px;background:#fff}
.line-item-wrap{max-height:400px;overscroll-behavior:auto}
.short-wrap{max-height:280px}
.medium-wrap{max-height:340px}
.tall-wrap{max-height:460px}
.compact-wrap{max-height:360px}
table{width:100%;border-collapse:collapse}
th,td{padding:5px 8px;border-bottom:1px solid #d9e6f3;text-align:left;white-space:nowrap}
td{font-size:13px;line-height:1.2}
th{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);background:#f2f8ff;position:sticky;top:0;z-index:2;line-height:1.2}
.amount-head,.amount-cell{text-align:right !important}
thead tr.table-filter-row th{top:23px;padding:4px 8px;background:#f8fbff;z-index:3}
.table-top-total-row th{font-size:11px;font-weight:800;text-transform:none;letter-spacing:normal;color:var(--brand-dark);background:#dfeefe;position:sticky;top:23px;z-index:2;border-bottom:2px solid var(--line-strong)}
.table-filter-input{width:100%;padding:5px 8px;border:1px solid var(--line-strong);border-radius:10px;background:#fff;color:var(--text);font-size:12px;text-transform:none;letter-spacing:normal}
tbody tr:hover{background:#f9fcff}
.table-total-row td{font-weight:800;background:#f7fbff}
.ledger-table th,.ledger-table td{padding:3px 8px;line-height:1.1;vertical-align:middle}
.ledger-table th{font-size:10px;letter-spacing:.12em}
.ledger-table td{font-size:13px}
.ledger-table thead tr.table-filter-row th{top:18px;padding:3px 8px}
.ledger-table .table-filter-input{padding:4px 8px;height:24px;border-radius:8px;font-size:12px}
.ledger-table .type-pill,.ledger-table .status-tag{padding:1px 6px;font-size:11px;line-height:1.2}
.ledger-table .status-stack-cell{gap:0}
.ledger-table .status-stack-cell small,.ledger-table .status-stack-cell .subcopy,.ledger-table .status-stack-cell .hint-text{font-size:10px;line-height:1.15}
.ledger-table .action-btns{gap:4px}
.ledger-table .small-btn{padding:2px 7px;font-size:10px;border-radius:7px}
.split-toggle-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:18px;
  height:18px;
  flex:0 0 auto;
  margin-left:8px;
  border:1px solid var(--line-strong);
  border-radius:5px;
  background:#f7fbff;
  color:var(--brand-dark);
  font-size:11px;
  font-weight:900;
  line-height:1;
}
.split-toggle-btn:hover{background:#eaf4ff}
.split-category-cell{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;width:100%;white-space:nowrap}
.split-category-cell span{min-width:0;overflow:hidden;text-overflow:ellipsis;font-weight:400;color:var(--text)}
.category-split-detail-row td{background:#fbfdff;color:#24445f;font-size:11.5px;font-style:italic;font-weight:400;padding-top:2px !important;padding-bottom:2px !important}
.category-split-detail-row:hover td{background:#f4f9ff}
.category-split-detail-category{padding-left:24px !important;font-weight:400}
.category-split-detail-category span{display:inline-block;margin-right:6px;color:var(--muted)}
.category-split-detail-note{color:#60768c;white-space:normal}
.category-split-detail-amount{font-size:11.5px;font-style:italic;font-weight:700}
.doc-number-btn{
  display:inline-flex;
  align-items:center;
  justify-content:flex-start;
  padding:1px 4px;
  border:1px solid transparent;
  border-radius:6px;
  background:transparent;
  color:var(--brand-dark);
  box-shadow:none;
}
.doc-number-btn:hover{
  background:var(--brand-soft);
  border-color:var(--line-strong);
}
.doc-number-btn code{font:inherit;font-family:Consolas,"Courier New",monospace;font-weight:700;color:inherit}
.transaction-detail-card{display:grid;gap:14px}
.transaction-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px}
.transaction-detail-row{
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding:8px 10px;
  border:1px solid var(--line);
  border-radius:10px;
  background:#fff;
}
.transaction-detail-row span,.transaction-detail-notes span{color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}
.transaction-detail-row strong{text-align:right;white-space:normal;overflow-wrap:anywhere}
.transaction-detail-notes{display:grid;gap:6px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel-soft)}
.transaction-detail-notes p{margin:0;white-space:pre-wrap;line-height:1.45}
.transaction-detail-actions{justify-content:flex-end}
.transaction-detail-empty-actions{max-width:none;text-align:right}
.soft-success-btn{
  background:#e9f8ef;
  border-color:#a8dfbd;
  color:#11723d;
}
.soft-success-btn:hover{background:#dff4e8}
.soft-danger-btn{
  background:#fff1f0;
  border-color:#f0b8b2;
  color:#b63324;
}
.soft-danger-btn:hover{background:#ffe7e4}
.empty-state{padding:18px;color:var(--muted);text-align:center}
.select-col,.select-cell{width:64px;min-width:64px;max-width:64px;text-align:center !important}
.select-cell{padding-left:0;padding-right:0}
.row-select{width:15px;height:15px;vertical-align:middle;display:inline-block;margin:0;accent-color:var(--brand)}
.dashboard-skeleton-line,.dashboard-skeleton-bar,.dashboard-skeleton-donut{
  display:block;
  position:relative;
  overflow:hidden;
  background:linear-gradient(90deg,#edf4fb 0%,#f8fbff 45%,#e5eff8 100%);
  background-size:220% 100%;
  animation:dashboardSkeletonShimmer 1.2s ease-in-out infinite;
}
.dashboard-skeleton-line{height:10px;width:72%;border-radius:999px}
.dashboard-skeleton-row td{height:27px}
.dashboard-skeleton-row td:nth-child(n+2){text-align:right}
.dashboard-skeleton-row td:nth-child(n+2) .dashboard-skeleton-line{margin-left:auto}
.skel-w-year{width:64px}
.skel-w-action{width:54px;margin:0 auto}
.skel-w-wide{width:86%}
.skel-w-mid{width:64%}
.skel-w-short{width:42%}
.dashboard-skeleton-table-wrap{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}
.dashboard-skeleton-chart{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-items:end;gap:10px;height:300px;padding:26px 16px 18px;border:1px solid #dbe7f3;border-radius:12px;background:#fbfdff}
.dashboard-skeleton-expense-chart{height:300px}
.dashboard-skeleton-bar-group{display:flex;align-items:flex-end;justify-content:center;gap:6px;height:100%}
.dashboard-skeleton-bar{width:clamp(14px,36%,34px);border-radius:8px 8px 3px 3px}
.dashboard-skeleton-bar-soft{opacity:.72}
.dashboard-skeleton-split{display:grid;grid-template-columns:180px minmax(0,1fr);gap:18px;align-items:center;padding:12px;border:1px solid #dbe7f3;border-radius:12px;background:#fbfdff}
.dashboard-skeleton-risk{grid-template-columns:132px minmax(0,1fr)}
.dashboard-skeleton-donut{width:126px;height:126px;border-radius:50%;margin:auto}
.dashboard-skeleton-stack{display:grid;gap:13px}
@keyframes dashboardSkeletonShimmer{
  0%{background-position:120% 0}
  100%{background-position:-120% 0}
}
@media (prefers-reduced-motion:reduce){
  .dashboard-skeleton-line,.dashboard-skeleton-bar,.dashboard-skeleton-donut{animation:none}
}

.app-dialog-backdrop{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(7,24,43,.45);backdrop-filter:blur(4px);z-index:2000}
.app-dialog-backdrop.dialog-opening{animation:appDialogBackdropOpen 230ms cubic-bezier(.2,.8,.2,1) both}
.app-dialog-backdrop.dialog-closing{pointer-events:none;animation:appDialogBackdropClose 360ms cubic-bezier(.2,.8,.2,1) both}
.app-dialog{width:min(520px,100%);display:grid;gap:12px;padding:16px;border:1px solid var(--line);border-radius:22px;background:linear-gradient(180deg,#fff,#f7fbff);box-shadow:0 30px 60px rgba(8,32,58,.24);transform-origin:center center}
.app-dialog-backdrop.dialog-opening .app-dialog{animation:appDialogBottomPopOpen 230ms cubic-bezier(.2,.8,.2,1) both}
.app-dialog-backdrop.dialog-closing .app-dialog{animation:appDialogBottomPopClose 360ms cubic-bezier(.2,.8,.2,1) both}
@keyframes appDialogBackdropOpen{from{opacity:0}to{opacity:1}}
@keyframes appDialogBackdropClose{from{opacity:1}to{opacity:0}}
@keyframes appDialogBottomPopOpen{from{opacity:0;transform:translateY(32px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes appDialogBottomPopClose{from{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(32px) scale(.97)}}
@media(prefers-reduced-motion:reduce){
  .app-dialog-backdrop.dialog-opening,
  .app-dialog-backdrop.dialog-closing,
  .app-dialog-backdrop.dialog-opening .app-dialog,
  .app-dialog-backdrop.dialog-closing .app-dialog{animation:none}
}
.app-dialog.wide-dialog{width:min(1160px,calc(100vw - 24px))}
.app-dialog.cc-config-dialog{width:min(760px,calc(100vw - 32px))}
.app-dialog.loan-editor-dialog{width:min(920px,calc(100vw - 32px));max-height:min(94vh,960px)}
.app-dialog.loan-editor-dialog .app-dialog-body{max-height:calc(min(94vh,960px) - 180px);overflow:auto;padding-right:4px}
.app-dialog.loan-preview-dialog,.app-dialog.loan-planner-dialog{width:min(1080px,calc(100vw - 32px));max-height:min(88vh,860px)}
.app-dialog.loan-preview-dialog .app-dialog-body,.app-dialog.loan-planner-dialog .app-dialog-body{max-height:calc(min(88vh,860px) - 180px);overflow:auto;padding-right:4px}
.app-dialog.risk-detail-dialog{width:min(860px,calc(100vw - 32px));max-height:min(86vh,760px)}
.app-dialog.risk-detail-dialog .app-dialog-body{max-height:calc(min(86vh,760px) - 130px);overflow:auto;padding-right:4px}
.app-dialog.category-split-dialog{
  width:min(820px,calc(100vw - 28px));
  max-height:min(88vh,740px);
  gap:0;
  padding:0;
  border:1px solid #cfdbe8;
  border-radius:16px;
  background:#fff;
  box-shadow:0 18px 38px rgba(8,32,58,.18);
  overflow:hidden;
}
.app-dialog.category-split-dialog .app-dialog-header{
  display:block;
  padding:18px 22px 14px;
  border-bottom:1px solid #d8e3ee;
  background:#fff;
}
.app-dialog.category-split-dialog #appDialogTitle{margin:0;color:#0f2f4f;font-size:18px;line-height:1.2}
.app-dialog.category-split-dialog .app-dialog-message{
  display:none;
  margin:0;
  color:#58708b;
  font-size:12.5px;
  line-height:1.35;
}
.app-dialog.category-split-dialog .app-dialog-body{
  display:grid;
  gap:12px;
  max-height:calc(min(88vh,740px) - 112px);
  overflow:auto;
  padding:14px 22px 0;
  background:#fff;
}
.category-split-editor{display:grid;gap:12px}
.category-split-transaction-summary{
  display:grid;
  grid-template-columns:minmax(180px,.75fr) minmax(0,1.25fr);
  border:1px solid #d8e3ee;
  border-radius:10px;
  overflow:hidden;
  background:#fff;
}
.category-split-summary-main{
  display:grid;
  align-content:center;
  gap:4px;
  padding:12px 14px;
  border-right:1px solid #d8e3ee;
  background:#f7fbff;
  text-align:right;
}
.category-split-summary-main span,.category-split-summary-grid span{
  color:#5f7690;
  font-size:10px;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.category-split-summary-main strong{
  color:#0f4f8f;
  font-size:21px;
  line-height:1.1;
  font-weight:900;
  font-variant-numeric:tabular-nums;
}
.category-split-summary-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
}
.category-split-summary-grid div{
  display:grid;
  gap:4px;
  min-width:0;
  padding:10px 12px;
  border-right:1px solid #edf2f7;
  border-bottom:1px solid #edf2f7;
}
.category-split-summary-grid div:nth-child(3){border-right:0}
.category-split-summary-grid .category-split-summary-wide{
  grid-column:1 / -1;
  border-right:0;
  border-bottom:0;
}
.category-split-summary-grid strong{
  min-width:0;
  color:#17324d;
  font-size:12.5px;
  font-weight:700;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.category-split-editor-head{
  display:flex;
  justify-content:space-between;
  gap:16px;
  align-items:center;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  color:var(--muted);
  font-size:12px;
}
.category-split-editor-head,
.category-split-table-wrap,
.category-split-summary,
.category-split-footer{width:100%;max-width:100%}
.category-split-editor-head span{display:block;color:#2f5576;font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}
.category-split-editor-head p{margin:3px 0 0;line-height:1.3}
.category-split-add-btn{display:inline-flex;align-items:center;gap:5px;flex:0 0 auto;min-width:98px;min-height:31px;padding:5px 10px;border-radius:8px;background:#fff;border-color:#9db8d7;color:#173d63;box-shadow:none;white-space:nowrap}
.category-split-add-btn:hover{background:#edf6ff;border-color:#6f99c8}
.category-split-add-btn .material-symbols-outlined{font-size:15px}
.category-split-table-wrap{width:100%;max-width:100%;border:1px solid #d8e3ee;border-radius:10px;background:#fff;overflow:auto}
.category-split-table{width:100%;min-width:720px;border-collapse:collapse;table-layout:fixed}
.category-split-table th,.category-split-table td{padding:7px 8px;vertical-align:middle;border-bottom:1px solid #e5edf5;border-right:1px solid #edf2f7}
.category-split-table th:last-child,.category-split-table td:last-child{border-right:0}
.category-split-table th{background:#f4f8fc;color:#45617e;font-size:10px;font-weight:800;letter-spacing:.09em}
.category-split-table tbody tr:last-child td{border-bottom:0}
.category-split-table input{width:100%;min-height:32px;padding:5px 8px;border:1px solid #bccfe3;border-radius:7px;background:#fff;color:var(--text);font-size:12.5px;box-shadow:none}
.category-split-table input:focus{border-color:#5797d6;box-shadow:0 0 0 2px rgba(87,151,214,.12);outline:0}
.category-split-table th:nth-child(1),.category-split-table td:nth-child(1){width:42px;text-align:center}
.category-split-table th:nth-child(2),.category-split-table td:nth-child(2){width:220px}
.category-split-table th:nth-child(3),.category-split-table td:nth-child(3){width:132px}
.category-split-table th:nth-child(4),.category-split-table td:nth-child(4){width:250px}
.category-split-table th:nth-child(5),.category-split-table td:nth-child(5){width:76px;text-align:center}
.category-split-index-cell{color:#5f7690;font-weight:800}
.category-split-currency-field{display:flex;align-items:center;gap:4px}
.category-split-currency-field span{color:#5f7690;font-weight:800}
.category-split-table .category-split-amount{padding-left:4px;padding-right:6px;text-align:right;font-variant-numeric:tabular-nums}
.category-split-action-cell{text-align:center}
.category-split-delete-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:28px;
  height:28px;
  padding:0;
  border:1px solid #efc5bf;
  border-radius:7px;
  background:#fff;
  color:#b63324;
  box-shadow:none;
}
.category-split-delete-btn:hover{background:#fff1f0;border-color:#d97063;color:#9d2618}
.category-split-delete-btn .material-symbols-outlined{font-size:16px}
.category-split-summary{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:0;
  border:1px solid #d8e3ee;
  border-radius:8px;
  overflow:hidden;
  background:#fff;
}
.category-split-summary div{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  min-height:34px;
  padding:6px 10px;
  border:0;
  border-right:1px solid #d8e3ee;
  border-radius:0;
  background:#fbfdff;
}
.category-split-summary div:last-child{border-right:0}
.category-split-summary span{color:#5f7690;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.category-split-summary strong{color:#17324d;font-size:13px;font-weight:900;font-variant-numeric:tabular-nums}
.category-split-summary em{margin-left:2px;font-style:normal;font-size:10.5px;font-weight:800;white-space:nowrap}
.category-split-difference{flex-wrap:wrap}
.category-split-difference span{flex:0 0 auto}
.category-split-difference strong{margin-left:auto}
.category-split-difference.balanced strong,.category-split-difference.balanced em{color:#17834b}
.category-split-difference.pending strong,.category-split-difference.pending em{color:#c53727}
.category-split-footer{
  position:sticky;
  bottom:0;
  display:flex;
  justify-content:flex-end;
  gap:8px;
  margin:0 -22px;
  padding:11px 22px 12px;
  border-top:1px solid #d8e3ee;
  background:#fff;
}
.category-split-footer .voucher-btn:disabled{opacity:.55;cursor:not-allowed;background:#e8eef6;border-color:#c8d5e4;color:#6e8197}
@media(max-width:720px){
  .category-split-transaction-summary{grid-template-columns:1fr}
  .category-split-summary-main{border-right:0;border-bottom:1px solid #d8e3ee;text-align:left}
  .category-split-summary-grid{grid-template-columns:1fr}
  .category-split-summary-grid div{border-right:0}
  .category-split-editor-head{align-items:stretch;flex-direction:column}
  .category-split-add-btn{justify-content:center;width:100%}
  .category-split-summary{grid-template-columns:1fr}
  .category-split-summary div{border-right:0;border-bottom:1px solid #d8e3ee}
  .category-split-summary div:last-child{border-bottom:0}
}
.risk-detail-wrap{max-height:52vh}
.risk-detail-toggle{display:inline-flex;align-items:center;gap:7px;padding:0;border:0;background:transparent;color:var(--text);font:inherit;font-weight:800;text-align:left;cursor:pointer}
.risk-detail-toggle:hover{color:var(--brand-dark)}
.risk-detail-caret{display:inline-flex;align-items:center;justify-content:center;width:12px;font-size:12px;color:var(--muted);font-weight:900}
.risk-detail-class-row td{background:#f5f9ff;font-weight:800}
.risk-detail-head-row td{background:#fbfdff;font-weight:700}
.risk-detail-account-row td{background:#fff}
.risk-detail-indent{display:inline-block;padding-left:20px}
.risk-detail-account-indent{padding-left:44px;color:var(--text);font-weight:400}
.app-dialog.ledger-fullscreen-dialog{width:min(1380px,calc(100vw - 12px));max-height:calc(100vh - 12px);padding:16px 18px}
.app-dialog.voucher-dialog{
  width:min(680px,calc(100vw - 96px));
  max-width:min(680px,calc(100vw - 96px));
  min-width:0;
  max-height:min(74vh,500px);
  gap:0;
  padding:0;
  border:1px solid #b6c9dc;
  border-radius:10px;
  background:#fff;
  overflow:hidden;
  box-shadow:0 24px 54px rgba(8,24,43,.28);
}
.app-dialog.voucher-dialog.wide-dialog{
  width:min(680px,calc(100vw - 96px));
  max-width:min(680px,calc(100vw - 96px));
}
.app-dialog.voucher-dialog .app-dialog-header,
.app-dialog.voucher-dialog .app-dialog-message{display:none}
.app-dialog.voucher-dialog .app-dialog-body{
  display:block;
  max-height:min(74vh,500px);
  overflow:hidden;
  min-height:0;
  min-width:0;
}
.voucher-document{
  display:grid;
  grid-template-rows:auto minmax(0,1fr) auto;
  max-height:min(74vh,500px);
  min-height:0;
  min-width:0;
  width:100%;
  color:var(--text);
  background:#fff;
}
.voucher-header{
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:10px;
  padding:6px 9px 5px;
  border-bottom:2px solid #b6c9dc;
  background:#fff;
}
.voucher-heading{display:grid;align-content:center;gap:2px;min-width:0}
.voucher-kicker{
  color:#315c82;
  font-size:10px;
  font-weight:800;
  letter-spacing:.14em;
  text-transform:uppercase;
}
.voucher-title-line{display:flex;align-items:center;gap:6px;min-width:0}
.voucher-title-line h3{
  margin:0;
  color:#102b44;
  font-family:Georgia,"Times New Roman",serif;
  font-size:1rem;
  line-height:1.1;
}
.voucher-heading p{margin:0;color:var(--muted);font-size:10.5px;line-height:1.25}
.voucher-doc-reference{
  display:flex;
  align-items:center;
  gap:8px;
  margin-top:1px;
  color:#5f7184;
  font-size:11px;
  font-weight:700;
}
.voucher-doc-reference strong{
  color:#102b44;
  font-family:Consolas,"Courier New",monospace;
  font-size:12px;
  letter-spacing:.02em;
}
.voucher-content{
  display:grid;
  align-content:start;
  grid-auto-rows:max-content;
  gap:5px;
  overflow:auto;
  padding:6px 9px 7px;
  background:#f8fafc;
  min-width:0;
}
.voucher-section{
  min-height:max-content;
  min-width:0;
  border:1px solid #d3e0ec;
  border-radius:3px;
  overflow:hidden;
  background:#fff;
}
.voucher-section-title{
  padding:4px 8px;
  border-bottom:1px solid #d3e0ec;
  background:#f1f6fb;
  color:#2f5576;
  font-size:10px;
  font-weight:800;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.voucher-table{display:grid;min-width:0}
.voucher-table{grid-auto-rows:minmax(24px,auto)}
.voucher-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  min-width:0;
  min-height:24px;
  border-bottom:1px solid #e1e9f1;
}
.voucher-row:last-child{border-bottom:0}
.voucher-row-single{grid-template-columns:minmax(0,1fr)}
.voucher-field{
  display:grid;
  grid-template-columns:98px minmax(0,1fr);
  align-items:stretch;
  gap:0;
  min-width:0;
  padding:0;
}
.voucher-row .voucher-field:first-child{border-right:1px solid #e1e9f1}
.voucher-row-single .voucher-field:first-child{border-right:0}
.voucher-label{
  display:flex;
  align-items:center;
  min-width:0;
  padding:4px 6px;
  border-right:1px solid #e5edf4;
  background:#f7fafd;
  color:#5a7188;
  font-size:10px;
  font-weight:700;
}
.voucher-value{
  display:flex;
  align-items:center;
  min-width:0;
  padding:4px 6px;
  color:#102a43;
  font-size:11.5px;
  font-weight:600;
  text-align:left;
  overflow-wrap:anywhere;
}
.voucher-value.voucher-amount-value{
  justify-content:flex-start;
  font-variant-numeric:tabular-nums;
}
.voucher-value .status-tag{
  padding:2px 7px;
  font-size:11px;
  line-height:1.15;
}
.voucher-doc-link{
  display:inline;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  color:var(--brand-dark);
  font:inherit;
  font-family:Consolas,"Courier New",monospace;
  font-weight:700;
  text-decoration:underline;
  text-underline-offset:2px;
}
.voucher-doc-link:hover{color:var(--brand);background:transparent}
.voucher-doc-list{
  display:grid;
  gap:3px;
}
.voucher-doc-list-item{
  line-height:1.35;
}
.voucher-doc-link-suffix,.voucher-doc-link-separator{
  color:#405973;
  font-weight:500;
}
.voucher-split-grid{
  display:grid;
  min-width:0;
  background:#fff;
}
.voucher-split-head,.voucher-split-line,.voucher-split-total{
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(0,1.55fr) minmax(76px,.65fr);
  min-width:0;
  min-height:26px;
  border-bottom:1px solid #e1e9f1;
}
.voucher-split-head{
  min-height:24px;
  background:#f7fafd;
  color:#5a7188;
  font-size:11px;
  font-weight:700;
}
.voucher-split-line:last-of-type{border-bottom:1px solid #e1e9f1}
.voucher-split-head span,.voucher-split-line span,.voucher-split-total span{
  display:flex;
  align-items:center;
  min-width:0;
  padding:4px 7px;
  border-right:1px solid #e5edf4;
  overflow-wrap:anywhere;
}
.voucher-split-head span:last-child,.voucher-split-line span:last-child,.voucher-split-total span:last-child{border-right:0}
.voucher-split-line span{color:#102a43;font-size:11.5px;font-weight:500}
.voucher-split-line span:last-child,.voucher-split-total span:last-child{
  justify-content:flex-start;
  font-variant-numeric:tabular-nums;
}
.voucher-split-total{
  border-bottom:0;
  background:#fbfdff;
  color:#102a43;
  font-size:11.5px;
  font-weight:800;
}
.voucher-note-value{
  white-space:pre-wrap;
  line-height:1.35;
}
.voucher-footer{
  position:sticky;
  bottom:0;
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:7px;
  padding:6px 10px;
  border-top:1px solid #d3e0ec;
  background:#fafcff;
}
.voucher-footer-actions{
  display:flex;
  justify-content:flex-end;
  gap:7px;
  flex-wrap:wrap;
}
.voucher-no-actions{
  margin-right:auto;
  color:var(--muted);
  font-size:12px;
}
.voucher-btn{
  min-height:27px;
  padding:4px 10px;
  border:1px solid var(--line-strong);
  border-radius:5px;
  background:#fff;
  box-shadow:none;
  font-size:12px;
  font-weight:800;
}
.voucher-btn-secondary{color:var(--brand-dark)}
.voucher-btn-danger{
  border-color:#e2a59d;
  color:#b63324;
}
.voucher-btn-danger:hover{background:#fff1f0}
.voucher-btn-success{
  border-color:#9dd8b5;
  color:#11723d;
}
.voucher-btn-success:hover{background:#e9f8ef}
.voucher-btn-primary{
  border-color:var(--brand);
  background:var(--brand);
  color:#fff;
}
.voucher-btn-primary:hover{background:var(--brand-dark)}
.app-dialog.ledger-fullscreen-dialog .app-dialog-header{gap:6px}
.app-dialog.ledger-fullscreen-dialog #appDialogTitle{margin:0}
.app-dialog.ledger-fullscreen-dialog .app-dialog-message{font-size:12px;line-height:1.3}
.app-dialog.ledger-fullscreen-dialog .app-dialog-body{max-height:calc(100vh - 110px);overflow:auto;padding-right:2px;gap:10px}
.app-dialog .line-item-wrap,.app-dialog .loan-preview-table-wrap,.ledger-fullscreen-wrap,.schedule-editor-lines-list,.loan-rate-change-list{overscroll-behavior:contain}
.ledger-fullscreen-toolbar{display:grid;grid-template-columns:170px 190px minmax(260px,1fr) auto;gap:10px;align-items:end}
.ledger-fullscreen-control{display:grid;gap:4px;font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}
.ledger-fullscreen-control select{width:100%;padding:8px 10px;border:1px solid var(--line-strong);border-radius:10px;background:#fff;color:var(--text);font-size:13px}
.ledger-fullscreen-search-control{min-width:0}
.ledger-fullscreen-search-control .table-filter-input{max-width:none}
.ledger-fullscreen-toolbar .dialog-inline-actions{justify-self:end;align-self:end}
.ledger-fullscreen-meta{font-size:12px;color:var(--muted)}
.ledger-fullscreen-wrap{max-height:calc(100vh - 210px);overflow:auto}
.app-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.app-dialog-message{margin:0;color:var(--text);line-height:1.6}
.app-dialog-body{display:grid;gap:12px}
.app-dialog-field{display:grid;gap:6px;font-weight:700;color:#1f476d}
.app-dialog-field input,.app-dialog-field select{width:100%;padding:8px 10px;border:1px solid var(--line-strong);border-radius:12px;background:#fff;color:var(--text)}
.app-dialog-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.app-dialog.session-timeout-dialog{width:min(500px,calc(100vw - 32px));border-color:#bfdbfe;background:#fff;box-shadow:0 34px 70px rgba(8,23,66,.28)}
.app-dialog.session-timeout-dialog .app-dialog-message{font-size:15px;color:var(--savy-navy)}
.session-timeout-countdown{margin:0;padding:12px 14px;border:1px solid #dbe7ff;border-radius:14px;background:#f5f9ff;color:#40506d;font-weight:700}
.session-timeout-countdown strong{color:var(--savy-blue);font-size:20px}
.support-access-card{display:grid;gap:12px;padding:16px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(180deg,#fff,#f7fbff)}
.support-code-display{display:grid;gap:6px;padding:14px 16px;border:1px dashed var(--line-strong);border-radius:16px;background:#fff}
.support-code-display strong{font-size:26px;letter-spacing:.14em;color:#16385d}

#masterSheet,.master-data-sheet{min-width:0}
#masterSheet .panel,#masterSheet .table-toolbar,#masterSheet .table-wrap,#masterSheet table{min-width:0}
#masterSheet.sheet.active{display:grid;grid-template-rows:auto auto minmax(0,1fr);align-content:stretch;gap:8px;min-height:calc(100vh - 92px)}
.master-data-header{display:grid;gap:6px;margin:0 0 2px;padding:0 2px 0}
.master-data-header h1{font-size:1.75rem;color:#182c52}
.master-subtabs{display:flex;gap:20px;align-items:flex-end;overflow-x:auto;border-bottom:1px solid #d7e1ee;scrollbar-width:thin}
.master-subtab{flex:0 0 auto;padding:0 0 7px;border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:#17284c;font-weight:800;white-space:nowrap}
.master-subtab.active{background:transparent;color:#2f6be6;border-bottom-color:#2f6be6}
.master-sheet-feedback{margin:0 0 8px;min-height:0;padding:0 2px}
.master-sheet-feedback:empty{display:none}
.master-sheet-feedback:not(:empty){display:block;padding:9px 12px;border:1px solid #cfe0f2;border-radius:10px;background:#f5faff;color:var(--brand-dark);font-weight:700}
.master-tab-panel{border-radius:14px;padding:12px 14px;align-self:stretch;min-height:0;grid-template-rows:auto auto minmax(0,1fr)}
.master-tab-panel.active{display:grid}
.master-tab-panel[hidden]{display:none !important}
.master-tab-panel .panel-header{align-items:center;justify-content:space-between;margin-bottom:6px;gap:14px}
.master-tab-panel .panel-header h2{font-size:1.25rem;color:#182c52}
.master-panel-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-left:auto}
.master-panel-actions button{height:30px;min-height:30px;display:inline-flex;align-items:center;justify-content:center;padding:0 14px;font-size:12px;border-radius:8px;line-height:1}
.master-panel-actions .small-btn{padding:0 12px;font-size:12px;border-radius:8px}
.danger-outline-btn{border-color:#f0a99b;background:#fff6f4;color:#b73522}
.danger-outline-btn:hover{border-color:#d85b46;background:#fff0ed;color:#9d2e1c}
.master-table-wrap button[data-action="delete-master"],
.master-table-wrap button[data-action="delete-account-master"]{border-color:#f0a99b;background:#fff;color:#c43a28}
.master-table-wrap button[data-action="delete-master"]:hover,
.master-table-wrap button[data-action="delete-account-master"]:hover{border-color:#d85b46;background:#fff0ed;color:#9d2e1c}
.master-table-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px;padding-right:18px}
.master-filter-input{flex:0 1 380px;max-width:380px;height:30px;padding:6px 9px}
.master-table-toolbar .small-btn{height:30px;min-height:30px;padding:0 12px;font-size:12px;border-radius:8px;line-height:1}
.master-table-wrap{height:100%;max-height:none;min-height:260px;overflow:auto}
.master-table-wrap table{table-layout:fixed}
.master-table-wrap th,.master-table-wrap td{height:28px;vertical-align:middle;padding-top:4px;padding-bottom:4px}
.master-table-wrap .master-select-col{width:64px}
.master-table-wrap .master-category-col{width:auto}
.master-table-wrap .master-assignment-col{width:190px}
.master-table-wrap .master-actions-col{width:190px}
.master-table-wrap .master-value-cell{white-space:normal;line-height:1.25}
.master-table-wrap .master-assignment-cell{width:190px;text-align:right}
.master-table-wrap .master-actions-cell{width:190px;padding-right:16px}
.master-table-wrap .master-assignment-cell .expense-control-select{display:block;margin-left:auto}
.master-table-wrap .action-btns{justify-content:flex-end}
.master-table-wrap th:last-child,.master-table-wrap td:last-child{width:190px}
.expense-master-table{min-width:900px}
.expense-control-select{width:100%;max-width:170px;min-height:26px;padding:3px 28px 3px 12px;border:1px solid var(--line-strong);border-radius:999px;background-color:#fff;color:var(--brand-dark);font-size:12px;font-weight:800}
.expense-control-select-controllable{border-color:#8bcfa7;background:#eaf7ef;color:#08723f}
.expense-control-select-uncontrollable{border-color:#f0bd7a;background:#fff3e5;color:#8a4200}
.expense-control-select option{background:#fff;color:var(--text)}
.expense-control-pill{display:inline-flex;align-items:center;justify-content:center;min-width:112px;padding:4px 10px;border-radius:999px;border:1px solid var(--line);font-size:11px;font-weight:900;line-height:1.2;white-space:nowrap}
.expense-control-pill-controllable{background:#eaf7ef;color:#08723f;border-color:#bfe7cf}
.expense-control-pill-uncontrollable{background:#fff3e5;color:#9a4d00;border-color:#f2cf9e}
#masterAccountsPanel .master-table-wrap table{min-width:1240px}
.master-table-wrap .account-master-account-col{width:270px}
.master-table-wrap .account-master-class-col{width:230px}
.master-table-wrap .account-master-head-col{width:230px}
.master-table-wrap .account-master-risk-col{width:100px}
.master-table-wrap .account-master-year-col{width:130px}
.master-table-wrap .account-master-actions-col{width:190px}
.master-table-wrap .account-master-account-col,
.master-table-wrap .account-master-class-col,
.master-table-wrap .account-master-head-col,
.master-table-wrap .account-master-risk-col{white-space:normal;line-height:1.25;overflow-wrap:anywhere}
.master-table-wrap .account-master-risk-col{overflow-wrap:normal}
.master-tab-panel#masterCashflowConfigPanel{grid-template-rows:auto minmax(0,1fr) auto}
.master-tab-panel#masterCashflowConfigPanel #cashflowGroupsBody{align-self:start}
.master-add-expense-dialog{display:grid;gap:12px}

.accounting-admin-sheet{align-content:start;gap:16px;min-height:calc(100vh - 104px)}
.accounting-admin-sheet .admin-panel{background:linear-gradient(180deg,#fff,#f8fbff);border-color:#d9e4f1;border-radius:16px;padding:18px 20px}
.accounting-admin-sheet .danger-panel{background:linear-gradient(180deg,#fff8f6,#fff)}
.accounting-admin-sheet .panel-header{align-items:flex-start;margin-bottom:14px}
.accounting-admin-sheet .panel-header h2{font-size:1.35rem;color:#182c52}
.accounting-admin-sheet .section-kicker{color:#667894}
#scheduledTransactionsPanel:not([hidden]){display:grid;gap:14px;min-height:auto}
.schedule-admin-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.schedule-admin-title h2{margin:2px 0 4px;font-size:22px;letter-spacing:0;color:var(--brand-dark)}
.schedule-admin-title .subcopy{margin:0;color:#516a86}
.schedule-info-banner{padding:10px 12px;border:1px solid #cfe0f2;border-radius:12px;background:#eef7ff;color:#23496b;font-weight:700}
.schedule-list-card{border:1px solid #dbe7f3;border-radius:14px;background:#fff;box-shadow:0 10px 24px rgba(21,42,74,.06);overflow:hidden}
.schedule-toolbar{position:relative;z-index:4;display:grid;grid-template-columns:minmax(220px,1fr) 150px 150px 150px auto;gap:10px;align-items:end;margin:0;padding:10px 14px 9px;background:#f8fbff;border-bottom:1px solid #dbe7f3;border-radius:14px 14px 0 0;box-shadow:0 1px 0 rgba(21,42,74,.03)}
.schedule-toolbar label{display:grid;gap:5px;min-width:0}
.schedule-toolbar span{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:800}
.schedule-toolbar input,.schedule-toolbar select{width:100%;min-width:0;height:36px;padding:8px 10px;border:1px solid #cbdced;border-radius:11px;background:#fff;color:var(--text);font:inherit;box-shadow:inset 0 1px 0 rgba(21,42,74,.02)}
.schedule-toolbar input:focus,.schedule-toolbar select:focus{outline:2px solid rgba(10,110,209,.16);border-color:#8cb8e6}
.schedule-toolbar button{height:36px;white-space:nowrap}
.admin-table-wrap{border-radius:14px}
.schedule-admin-wrap{height:auto;max-height:calc(100vh - 260px);min-height:300px;overflow:auto;border:0;border-radius:0;margin:0;background:#fff}
.schedule-admin-table{min-width:1180px;table-layout:fixed;background:#fff}
.schedule-admin-table thead th{position:sticky;top:0;z-index:5;background:#f2f8ff;border-bottom:1px solid #c8daee;box-shadow:0 2px 6px rgba(21,42,74,.08)}
.schedule-admin-table th,.schedule-admin-table td{vertical-align:middle}
.schedule-admin-table tbody tr:first-child td{border-top:0}
.schedule-admin-table td{padding-top:9px;padding-bottom:9px}
.schedule-admin-table th:nth-child(1),.schedule-admin-table td:nth-child(1){width:35%}
.schedule-admin-table th:nth-child(2),.schedule-admin-table td:nth-child(2){width:90px}
.schedule-admin-table th:nth-child(3),.schedule-admin-table td:nth-child(3){width:150px}
.schedule-admin-table th:nth-child(4),.schedule-admin-table td:nth-child(4),
.schedule-admin-table th:nth-child(5),.schedule-admin-table td:nth-child(5),
.schedule-admin-table th:nth-child(6),.schedule-admin-table td:nth-child(6){width:112px}
.schedule-admin-table th:nth-child(7),.schedule-admin-table td:nth-child(7){width:116px}
.schedule-admin-table th:nth-child(8),.schedule-admin-table td:nth-child(8){width:138px}
.schedule-name-cell{white-space:normal}
.schedule-name-cell strong{display:block;font-size:13px;line-height:1.25;color:var(--brand-dark)}
.schedule-line-count{display:block;margin-top:3px;font-size:11px;font-weight:700;color:#5b7189}
.schedule-flow-text{margin-top:3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:#486785;font-size:11px;line-height:1.3}
.schedule-frequency-cell strong{display:block;font-size:12px;color:var(--text)}
.schedule-frequency-cell span{display:block;margin-top:3px;color:#60758d;font-size:11px}
.schedule-type-cell,.schedule-date-cell,.schedule-status-cell,.schedule-actions-cell{text-align:left}
.schedule-status-cell .status-tag{min-width:92px;justify-content:center}
.schedule-actions-cell .action-btns{gap:7px;align-items:center;position:relative}
.schedule-row-menu{position:relative}
.schedule-row-menu summary{display:inline-flex;align-items:center;justify-content:center;width:30px;height:28px;border:1px solid #9ebcdf;border-radius:9px;background:#fff;color:var(--brand-dark);font-weight:900;letter-spacing:1px;cursor:pointer;list-style:none}
.schedule-row-menu summary::-webkit-details-marker{display:none}
.schedule-row-menu-list{position:absolute;right:0;top:32px;z-index:8;display:grid;min-width:138px;padding:6px;border:1px solid #cbdced;border-radius:12px;background:#fff;box-shadow:0 12px 28px rgba(21,42,74,.16)}
.schedule-row-menu-list button{display:block;width:100%;padding:7px 8px;border:0;border-radius:8px;background:transparent;color:var(--text);font:inherit;font-size:12px;font-weight:700;text-align:left;cursor:pointer}
.schedule-row-menu-list button:hover{background:#eef5fb}
.schedule-row-menu-list .danger-menu-item{color:var(--negative)}
.schedule-history-wrap{max-height:min(58vh,560px)}

.type-pill{display:inline-flex;align-items:center;padding:2px 7px;border-radius:999px;font-size:11px;font-weight:700}
.type-income{background:#daf5e7;color:#0c6f4b}
.type-expense{background:#fde0db;color:#9a311f}
.type-transfer{background:#dcecff;color:#175794}
.type-mixed{background:#eadffc;color:#6b3bb0}
.type-asset{background:#daf5e7;color:#0c6f4b}
.type-liability{background:#fde0db;color:#9a311f}

.amount-positive{color:var(--positive);font-weight:700;text-align:right}
.amount-negative{color:var(--negative);font-weight:700;text-align:right}
.amount-neutral{color:var(--neutral);font-weight:700;text-align:right}
.amount-positive,.amount-negative,.amount-neutral,.inline-number-input{text-align:right}
.balance-exact-amount{appearance:none;border:0;background:transparent;color:inherit;font:inherit;font-weight:inherit;text-align:right;padding:0;margin:0;cursor:pointer}
.balance-exact-amount:hover,.balance-exact-amount:focus-visible{text-decoration:underline;text-underline-offset:3px;outline:none}
.balance-exact-dialog{display:grid;gap:8px}
.balance-exact-dialog div{display:flex;justify-content:space-between;gap:16px;padding:8px 10px;border:1px solid var(--line);border-radius:12px;background:#fff}
.balance-exact-dialog span{color:var(--muted);font-size:12px;font-weight:700}
.balance-exact-dialog strong{color:var(--brand-dark);font-size:18px}

.flow-list,.summary-list{display:grid;gap:12px}
.flow-row,.summary-row{display:grid;grid-template-columns:120px 1fr 120px;gap:14px;align-items:center}
.flow-label,.summary-label{font-weight:700;color:#204261}
.flow-track,.summary-track{height:12px;border-radius:999px;background:#deebf7;overflow:hidden}
.flow-bar,.summary-bar{height:100%;background:linear-gradient(90deg,var(--brand),#56a4f0)}
.flow-bar.negative{background:linear-gradient(90deg,#d56c57,#c74a32)}
.summary-bar.negative{background:linear-gradient(90deg,#d56c57,#c74a32)}
.flow-value,.summary-value{text-align:right;font-weight:700}


.subpanel{padding:16px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(180deg,#ffffff,#f8fbff);display:grid;gap:12px}
.action-btns{display:flex;gap:5px;align-items:center}
.small-btn{padding:3px 8px;font-size:11px;border-radius:8px}
.status-tag{display:inline-flex;align-items:center;padding:2px 7px;border-radius:999px;font-size:11px;font-weight:700}
.refund-editor-row td{background:#fbfdff;white-space:normal;padding:0 10px 12px}
.refund-editor{display:grid;gap:12px;padding:14px;border:1px solid #d9e6f3;border-radius:14px;background:linear-gradient(180deg,#ffffff,#f6faff)}
.refund-editor-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.refund-multiple-toggle{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:#204261}
.refund-editor-summary{display:flex;flex-wrap:wrap;gap:14px;font-size:13px;color:#34506d}
.refund-editor-existing{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:12px;color:#4c6885}
.refund-existing-pill{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;background:#eef5ff;color:#204261;font-weight:700}
.refund-date-row{display:flex;align-items:center;gap:10px;padding:4px 0}
.refund-date-field{display:grid;gap:5px;font-size:13px}
.refund-date-field span{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700}
.refund-date-field input{padding:9px 12px;border:1px solid var(--line-strong);border-radius:10px;background:#fff;color:var(--text);font-size:13px}
.refund-lines{display:grid;gap:8px}
.refund-line{display:grid;grid-template-columns:120px minmax(0,1fr) auto;gap:10px;align-items:center}
.refund-line label,.refund-line-field{display:grid;gap:6px;min-width:0}
.refund-line label span{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700}
.refund-line input{width:100%;min-width:0;padding:7px 10px;border:1px solid var(--line-strong);border-radius:12px;background:#fff;color:var(--text)}
.refund-line-remove{display:flex;align-items:center;justify-content:flex-end}
.refund-line-error{grid-column:2 / -1;font-size:12px;font-weight:700;color:var(--negative);margin-top:-2px}
.refund-editor-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.dialog-inline-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.schedule-editor{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:10px;height:100%;min-height:0}
.app-dialog.schedule-editor-dialog,.app-dialog.schedule-editor-dialog.wide-dialog{width:calc(100vw - 16px);max-width:none;max-height:min(92vh,920px);padding:12px 16px}
.app-dialog.schedule-editor-dialog .app-dialog-header{gap:6px}
.app-dialog.schedule-editor-dialog .app-dialog-message{font-size:12px;line-height:1.35}
.app-dialog.schedule-editor-dialog .app-dialog-body{height:calc(min(92vh,920px) - 102px);max-height:calc(min(92vh,920px) - 102px);overflow:hidden;padding-right:2px}
.schedule-editor-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:7px 10px;align-items:end;padding:7px 9px;border:1px solid #dbe8f6;border-radius:12px;background:#fbfdff}
.schedule-editor-name-field{grid-column:span 5}
.schedule-editor-frequency-field{grid-column:span 4}
.schedule-editor-date-field{grid-column:span 4}
.schedule-editor-grid label,.schedule-line-field{display:grid;gap:4px;min-width:0}
.schedule-editor-grid label span,.schedule-line-field span{font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:800}
.schedule-editor-grid input,.schedule-editor-grid select,.schedule-line-field input,.schedule-line-field select{width:100%;min-width:0;box-sizing:border-box;height:32px;padding:5px 8px;border:1px solid var(--line-strong);border-radius:8px;background:#fff;color:var(--text);font-size:12px}
.schedule-editor-active-row{grid-column:span 3;align-self:end;margin:0}
.schedule-editor-active-title{font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:800}
.schedule-editor-active-control{height:32px;display:inline-flex;align-items:center;gap:7px;width:100%;box-sizing:border-box;padding:5px 9px;border:1px solid #cfe0f3;border-radius:8px;background:#fff;color:#4d6883;font-size:11px;font-weight:800;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease}
.schedule-editor-active-control:hover{border-color:#9fc6ee;box-shadow:0 2px 8px rgba(34,76,130,.08)}
.schedule-editor-active-control input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.schedule-editor-active-control input:checked+.schedule-line-switch-track{background:#16a34a;border-color:#16a34a;box-shadow:inset 0 0 0 1px rgba(255,255,255,.22),0 0 0 3px rgba(22,163,74,.12)}
.schedule-editor-active-control input:checked+.schedule-line-switch-track .schedule-line-switch-thumb{transform:translateX(20px)}
.schedule-editor-active-control input:focus+.schedule-line-switch-track{box-shadow:0 0 0 3px rgba(10,110,209,.18)}
.schedule-editor-active-control .schedule-line-switch-text{color:#4d6883}
.schedule-editor-lines{position:relative;display:grid;grid-template-rows:auto minmax(0,auto);align-content:start;gap:8px;min-height:0}
.schedule-editor-lines-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap}
.schedule-editor-lines-head>div{display:grid;gap:3px}
.schedule-editor-lines-head strong{font-size:14px;color:var(--text)}
.schedule-editor-lines-head .hint-text{max-width:none;text-align:left;font-size:12px}
.schedule-editor-lines-list{display:block;height:100%;min-height:190px;overflow:auto;padding:0 0 38px;border:1px solid #d9e6f3;border-radius:12px;background:#fff;scroll-padding-bottom:48px;scrollbar-gutter:stable;transition:min-height .18s ease}
.schedule-editor-lines-list.schedule-editor-lines-count-1{height:auto;min-height:92px;max-height:128px;overflow-x:auto;overflow-y:hidden}
.schedule-editor-lines-list.schedule-editor-lines-count-2{height:auto;min-height:136px;max-height:172px;overflow-x:auto;overflow-y:hidden}
.schedule-editor-lines-list.schedule-editor-lines-count-3{height:auto;min-height:178px;max-height:214px;overflow-x:auto;overflow-y:hidden}
.schedule-editor-lines-list.schedule-editor-lines-count-4{min-height:220px}
.schedule-editor-lines-list.schedule-editor-lines-count-5{min-height:262px}
.schedule-editor-lines::after{display:none}
.schedule-line{display:grid;gap:0;padding:0;border:0;border-bottom:1px solid #e5eef8;border-radius:0;background:#fff}
.schedule-line:last-child{border-bottom:0}
.schedule-line-grid{display:grid;grid-template-columns:34px 92px minmax(150px,1fr) minmax(175px,1.12fr) 104px minmax(120px,.86fr) minmax(145px,.9fr) 88px 130px 34px;gap:7px;align-items:center;min-width:1137px;padding:6px 9px}
.schedule-line-head{position:sticky;top:0;z-index:2;padding-top:8px;padding-bottom:8px;background:#f3f8ff;border-bottom:1px solid #d5e4f5;color:#5f7893;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.09em;box-shadow:0 1px 0 rgba(25,72,128,.04)}
.schedule-line-head>div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.schedule-line-number{color:#64809b;font-size:12px;font-weight:800;text-align:center}
.schedule-line-amount-head{text-align:right;padding-right:4px}
.schedule-line-type-field select{text-align:left}
.schedule-line-amount-field input{text-align:right}
.schedule-line-rd-na{display:flex;align-items:center;height:32px;color:#9aaabc;font-weight:700}
.schedule-line .schedule-line-field{gap:0}
.schedule-line .schedule-line-field input,.schedule-line .schedule-line-field select{height:32px;padding:5px 8px;border-radius:8px;font-size:12px;border-color:#9fc0e8;background:#fff}
.schedule-line .schedule-line-field input:focus,.schedule-line .schedule-line-field select:focus{outline:2px solid rgba(10,110,209,.18);border-color:var(--primary)}
.schedule-line-reversal-toggle{padding-left:8px;border-left:1px solid #dce9f8}
.schedule-line-switch-label{display:inline-flex;align-items:center;gap:6px;height:32px;min-width:0;color:#4d6883;font-size:11px;font-weight:800;text-transform:none;letter-spacing:0;line-height:1;white-space:nowrap}
.schedule-line-switch-label input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.schedule-line-switch-track{position:relative;display:inline-flex;align-items:center;width:42px;height:22px;border-radius:999px;background:linear-gradient(180deg,#e5edf6,#d4deea);border:1px solid #c0cfdf;box-shadow:inset 0 1px 2px rgba(19,45,75,.12);transition:background .34s cubic-bezier(.22,1,.36,1),border-color .34s cubic-bezier(.22,1,.36,1),box-shadow .34s cubic-bezier(.22,1,.36,1),transform .22s ease}
.schedule-line-switch-thumb{position:absolute;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 2px 5px rgba(15,45,80,.28),0 0 0 1px rgba(15,45,80,.04);transition:transform .34s cubic-bezier(.22,1,.36,1),box-shadow .28s ease}
.schedule-line-switch-label:hover .schedule-line-switch-track{border-color:#9fb7d1;box-shadow:inset 0 1px 2px rgba(19,45,75,.12),0 2px 8px rgba(34,76,130,.1)}
.schedule-line-switch-label:active .schedule-line-switch-track{transform:scale(.96)}
.schedule-line-switch-label:active .schedule-line-switch-thumb{box-shadow:0 1px 3px rgba(15,45,80,.24),0 0 0 1px rgba(15,45,80,.05)}
.schedule-line-switch-label input:checked+.schedule-line-switch-track{background:linear-gradient(180deg,#22c55e,#16a34a);border-color:#16a34a;box-shadow:inset 0 0 0 1px rgba(255,255,255,.22),0 0 0 3px rgba(22,163,74,.12)}
.schedule-line-switch-label input:checked+.schedule-line-switch-track .schedule-line-switch-thumb{transform:translateX(20px)}
.schedule-line-switch-label input:focus+.schedule-line-switch-track{box-shadow:0 0 0 3px rgba(10,110,209,.18)}
.schedule-line-switch-label:has(input:checked) .schedule-line-switch-text{color:#15803d}
.schedule-line-switch-text{position:relative;display:inline-block;min-width:20px;height:12px;color:#5a728c;transition:color .3s cubic-bezier(.22,1,.36,1),transform .3s cubic-bezier(.22,1,.36,1)}
.schedule-line-switch-text span{position:absolute;left:0;top:0;transition:opacity .28s cubic-bezier(.22,1,.36,1),transform .28s cubic-bezier(.22,1,.36,1)}
.switch-text-on{opacity:0;transform:translateY(4px)}
.switch-text-off{opacity:1;transform:translateY(0)}
.schedule-line-switch-label:has(input:checked) .switch-text-on{opacity:1;transform:translateY(0)}
.schedule-line-switch-label:has(input:checked) .switch-text-off{opacity:0;transform:translateY(-4px)}
.schedule-line-switch-label:has(input:checked) .schedule-line-switch-text{transform:translateX(1px)}
.schedule-line-reversal-date-shell{position:relative;min-width:0;height:32px}
.schedule-line-reversal-date-field{position:absolute;inset:0;opacity:0;transform:translateY(-4px) scale(.98);pointer-events:none;transition:opacity .34s cubic-bezier(.22,1,.36,1),transform .34s cubic-bezier(.22,1,.36,1),filter .34s cubic-bezier(.22,1,.36,1);filter:saturate(.82)}
.schedule-line-reversal-date-field input{background:linear-gradient(180deg,#fff,#f8fbff);transition:border-color .28s ease,box-shadow .28s ease,background .28s ease}
.schedule-line-reversal-date-field input:focus{background:#fff;box-shadow:0 0 0 3px rgba(10,110,209,.16)}
.schedule-line-reversal-date-cell,.schedule-line-reversal-na{display:flex;align-items:center;height:32px;color:#8b9eb2;font-weight:700}
.schedule-line-reversal-na{position:absolute;inset:0;opacity:1;transform:translateX(0);transition:opacity .3s cubic-bezier(.22,1,.36,1),transform .3s cubic-bezier(.22,1,.36,1)}
.schedule-line-grid:has(.schedule-line-auto-reverse:checked) .schedule-line-reversal-date-field{opacity:1;transform:translateY(0) scale(1);pointer-events:auto;filter:saturate(1)}
.schedule-line-grid:has(.schedule-line-auto-reverse:checked) .schedule-line-reversal-na{opacity:0;transform:translateX(4px);pointer-events:none}
.schedule-line-remove-cell{display:flex;align-items:center;justify-content:center;min-width:0}
.schedule-line-remove-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid #b9d0ec;border-radius:8px;background:#fff;color:#0a5cab;cursor:pointer}
.schedule-line-remove-btn:hover{background:#eef6ff;border-color:#7fb0eb}
.schedule-line-remove-btn .material-symbols-outlined{font-size:17px;line-height:1}
.schedule-line-error{font-size:12px;font-weight:700;color:var(--negative)}
.account-deposit-ref{color:#94a3b8;font-style:italic;font-weight:400;white-space:nowrap}
.schedule-editor>.dialog-inline-actions{position:relative;bottom:auto;margin-top:0;padding:10px 0 0;background:#fff;border-top:1px solid #edf3fa;box-shadow:none;z-index:1}
.loan-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.loan-summary-card{display:grid;gap:4px}
.loan-summary-hint{display:block;margin-top:4px;font-size:12px;color:var(--muted)}
#potentialLoanCalculatorPanel{display:none}
.loan-calculator-panel{display:grid;gap:16px;margin-bottom:16px;border-color:#b9d2ff;background:linear-gradient(135deg,#ffffff 0%,#f6fbff 56%,#eef6ff 100%);box-shadow:0 14px 34px rgba(30,58,138,.08)}
.loan-calculator-top{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.loan-calculator-top h2{margin:2px 0 4px;font-size:20px}
.loan-calculator-chip{flex-shrink:0;border:1px solid #bfdbfe;background:#eff6ff;color:#1d4ed8;border-radius:999px;padding:6px 11px;font-size:11px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap}
.loan-calculator-form{display:grid;grid-template-columns:minmax(190px,1.2fr) minmax(145px,.85fr) minmax(112px,.7fr) minmax(112px,.7fr) minmax(155px,.9fr);gap:12px;align-items:end}
.loan-calculator-form label{display:grid;gap:6px;min-width:0}
.loan-calculator-form label span{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:800}
.loan-calculator-form input{width:100%;min-width:0;height:34px;padding:7px 10px;border:1px solid #9fc0f2;border-radius:10px;background:#fff;color:var(--text);font:inherit;box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}
.loan-calculator-form input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.16);outline:0}
.loan-calculator-form .loan-calc-amount{font-weight:800;color:#072f5f;text-align:right}
.loan-calculator-actions{grid-column:1/-1;display:flex;gap:8px;align-items:center;justify-content:flex-start;flex-wrap:wrap;padding-top:2px}
.loan-calculator-actions .small-btn{white-space:nowrap}
.loan-calculator-feedback{min-height:18px;margin:0}
.loan-calculator-result{display:grid;gap:12px}
.loan-calculator-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.loan-calculator-summary .summary-card{border-color:#d6e6ff;background:rgba(255,255,255,.82)}
.loan-calculator-table-wrap{max-height:min(58vh,620px);border-radius:12px}
.app-dialog.loan-calculator-dialog{width:min(1180px,calc(100vw - 24px))}
.app-dialog.loan-calculator-dialog .app-dialog-body{max-height:calc(100vh - 112px);overflow:auto;padding-right:2px}
.app-dialog.loan-calculator-dialog .loan-calculator-panel{margin:0;border-color:#cfe0f8;box-shadow:none;background:linear-gradient(135deg,#ffffff 0%,#f7fbff 100%)}
.app-dialog.loan-calculator-dialog .loan-calculator-table-wrap{max-height:min(48vh,520px)}
.app-dialog.loan-calculator-dialog .loan-calculator-top{align-items:flex-start}
.loan-calculator-table-wrap table th:first-child,
.loan-calculator-table-wrap table td:first-child{width:54px;text-align:center}
.loan-row-selected td{background:#f5f9ff}
.loan-schedule-summary,.loan-preview-shell,.loan-planner-shell{display:grid;gap:12px}
.loan-plan-panel{display:grid;gap:12px}
.loan-plan-list{display:grid;gap:10px}
.loan-plan-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 14px;border:1px solid rgba(132,154,190,.2);border-radius:16px;background:rgba(244,248,255,.72)}
.loan-plan-copy{display:grid;gap:4px}
.loan-plan-actions{justify-content:flex-end;align-items:center}
.repayment-plans-shell{display:grid;gap:12px}
.repayment-plans-note{padding:7px 12px;background:rgba(255,251,230,.9);border:1px solid rgba(210,175,40,.3);border-radius:8px;font-size:12px;color:var(--muted)}
.repayment-plans-list{display:grid;gap:8px}
.repayment-plan-card{display:grid;gap:8px;padding:12px 14px;border:1px solid rgba(132,154,190,.22);border-radius:12px;background:rgba(244,248,255,.8)}
.repayment-plan-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.repayment-plan-name{font-weight:700;color:var(--text);font-size:14px}
.repayment-plan-actions{display:flex;gap:6px;flex-shrink:0}
.repayment-plan-stats{display:flex;flex-wrap:wrap;gap:6px 20px}
.repayment-plan-stat{display:flex;flex-direction:column;gap:1px;min-width:100px}
.repayment-stat-label{font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:700}
.repayment-stat-val{font-size:13px;font-weight:600;color:var(--text)}
.danger-text-btn{color:var(--negative)!important}
@media(max-width:600px){.repayment-plan-stats{gap:8px 14px}.repayment-plan-stat{min-width:80px}}
.loan-detail-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.loan-meta-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.loan-meta-card{display:grid;gap:4px}
.loan-meta-label{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:700}
.loan-meta-value{font-size:16px;color:var(--text)}
.loan-preview-table-wrap{max-height:min(48vh,420px);overflow:auto}
.autofit-table{width:100%;table-layout:auto}
.autofit-table th,.autofit-table td{white-space:nowrap}
.loan-planner-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.loan-planner-summary{display:grid;gap:12px;grid-template-columns:repeat(4,minmax(0,1fr))}
.loan-planner-note{margin-top:-4px}
.loan-editor-preview{margin-top:-2px}
.loan-rate-change-block{gap:10px}
.loan-rate-change-list{display:grid;gap:8px;max-height:220px;overflow:auto;padding-right:4px}
.loan-rate-change-row{display:grid;grid-template-columns:minmax(0,190px) minmax(0,180px) auto;gap:10px;align-items:end}
.loan-rate-change-remove{display:flex;align-items:flex-end;justify-content:flex-end}
.loan-editor-active-row{display:flex;align-items:center;gap:10px;padding:6px 0;font-size:13px;font-weight:600;color:var(--text);cursor:pointer}
.loan-editor-active-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary);cursor:pointer;flex-shrink:0}
.loan-rate-head{display:flex;align-items:baseline;gap:0;flex-wrap:wrap}
.compact-empty{padding:12px}
.loan-detail-popup{display:grid;gap:10px}
.loan-popup-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
.loan-popup-stat{display:grid;gap:2px;padding:10px 14px;border:1px solid var(--line);border-radius:12px;background:linear-gradient(160deg,#fff 60%,#f0f6ff)}
.loan-popup-stat--primary{border-color:rgba(59,130,246,.3);background:linear-gradient(160deg,#f0f7ff 40%,#e0eeff)}
.loan-popup-stat-kicker{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700}
.loan-popup-stat strong{font-size:16px;color:var(--text);font-weight:700}
.loan-popup-stat-sub{font-size:11px;color:var(--muted)}
.loan-popup-meta-strip{display:flex;flex-wrap:wrap;gap:3px 18px;padding:7px 12px;background:rgba(244,248,255,.7);border:1px solid var(--line);border-radius:10px;font-size:12px;color:var(--text)}
.loan-popup-meta-strip .mk{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700;margin-right:3px}
.loan-detail-popup .loan-plan-panel .hint-text{display:none}
.loan-detail-popup .loan-plan-panel.subpanel{padding:10px 12px;border-radius:10px;gap:6px}
.loan-detail-popup .loan-plan-list{gap:6px}
.loan-detail-popup .loan-plan-row{padding:7px 10px;border-radius:8px;gap:8px}
.loan-detail-popup .schedule-editor-lines-head strong{font-size:12px}

/* ── Loan Detail v2 ────────────────────────────────────────────────────── */
.ldv2{display:grid;gap:14px}
.ldv2-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.ldv2-header-left{display:flex;flex-direction:column;gap:2px}
.ldv2-loanname{font-size:17px;font-weight:800;color:var(--text)}
.ldv2-lender{font-size:12px;color:var(--muted)}
.ldv2-header-actions{display:flex;gap:6px;flex-wrap:wrap}
.ldv2-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.ldv2-stat{display:grid;gap:4px;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:#fff}
.ldv2-stat--primary{border-color:rgba(10,110,209,.25);background:linear-gradient(150deg,#eaf3ff,#daeeff)}
.ldv2-stat-label{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700}
.ldv2-stat-value{font-size:15px;font-weight:700;color:var(--text)}
.ldv2-stat-big{font-size:20px;color:var(--brand-dark)}
.ldv2-stat-sub{font-size:11px;color:var(--muted)}
.ldv2-prog-track{height:6px;background:var(--line);border-radius:4px;overflow:hidden;margin:4px 0 2px}
.ldv2-prog-fill{height:100%;background:var(--brand);border-radius:4px;transition:width .4s}
.ldv2-strip{display:flex;flex-wrap:wrap;align-items:center;gap:4px 0;padding:8px 14px;background:rgba(240,247,255,.8);border:1px solid var(--line);border-radius:10px;font-size:12.5px;color:var(--text)}
.ldv2-dot{margin:0 8px;color:var(--muted)}
.ldv2-body{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ldv2-panel{padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:#fff;display:grid;gap:10px;align-content:start}
.ldv2-panel-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.ldv2-gauge-wrap{display:grid;gap:8px}
.ldv2-gauge-labels{display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}
.ldv2-gauge-track{height:10px;background:var(--line);border-radius:6px;position:relative;margin:2px 0}
.ldv2-gauge-paid{height:100%;background:linear-gradient(90deg,var(--brand),#3b9af8);border-radius:6px}
.ldv2-gauge-marker{position:absolute;top:-3px;transform:translateX(-50%)}
.ldv2-gauge-pin{width:16px;height:16px;background:#fff;border:3px solid var(--brand);border-radius:50%;margin:0 auto}
.ldv2-gauge-tip{font-size:10px;color:var(--muted);white-space:nowrap;text-align:center;margin-top:4px}
.ldv2-gauge-amts{display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}
.ldv2-gauge-amts strong{color:var(--text)}
.ldv2-breakdown{display:grid;gap:0}
.ldv2-brow{display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-bottom:1px solid var(--line);font-size:13px}
.ldv2-brow:last-child{border-bottom:none}
.ldv2-bkey{color:var(--muted);font-size:12px}
.ldv2-bval{font-weight:600;color:var(--text);text-align:right}
.ldv2-actions{display:flex;gap:8px;flex-wrap:wrap}
@media(max-width:600px){.ldv2-stats{grid-template-columns:1fr 1fr}.ldv2-stats .ldv2-stat--primary{grid-column:1/-1}.ldv2-body{grid-template-columns:1fr}}
.status-active{background:#daf5e7;color:#0c6f4b}
.status-blocked{background:#fde0db;color:#9a311f}
.status-deleted{background:#e5e7eb;color:#45556c}
.status-pending{background:#fff0d8;color:#8d5a00}
.status-reversal{background:#fde8e3;color:#b12f1f}
.status-scheduled{background:#dcecff;color:#175794}
.status-paused{background:#e5e7eb;color:#45556c}
.status-overdue{background:#fde0db;color:#9a311f}
.status-failed{background:#fde0db;color:#9a311f}
.status-completed{background:#eef2f7;color:#526070}

/* ── Loan Tracker Dashboard ─────────────────────────── */
.ltdb{display:grid;grid-template-columns:1fr 268px;gap:20px;align-items:start}
.ltdb-main{display:grid;gap:16px}
.ltdb-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.ltdb-tile{padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:#fff;display:grid;gap:3px;box-shadow:0 1px 4px rgba(30,58,138,.04)}
.ltdb-tile-label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700}
.ltdb-tile-value{font-size:20px;font-weight:700;color:var(--text);line-height:1.2}
.ltdb-tile-value-sm{font-size:14px;font-weight:700;color:var(--text);line-height:1.3}
.ltdb-tile-sub{font-size:11px;margin-top:1px}
.ltdb-tile-neg{color:#dc2626}.ltdb-tile-pos{color:#16a34a}.ltdb-tile-neu{color:var(--muted)}
.ltdb-cards-head{display:flex;align-items:center;justify-content:space-between;padding:2px 0}
.ltdb-cards-title{font-size:13px;font-weight:700;color:var(--text)}
.ltdb-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px}
.ltdb-card{border:1px solid var(--line);border-radius:14px;background:#fff;overflow:hidden;transition:box-shadow .15s,transform .15s;box-shadow:0 1px 4px rgba(30,58,138,.04)}
.ltdb-card:hover{box-shadow:0 4px 16px rgba(30,58,138,.1);transform:translateY(-1px)}
.ltdb-card-head{display:flex;align-items:center;gap:10px;padding:11px 13px 0}
.ltdb-card-icon{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;color:#fff;flex-shrink:0}
.ltdb-card-name-wrap{flex:1;min-width:0}
.ltdb-card-name{font-size:13px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ltdb-card-lender{font-size:10px;color:var(--muted)}
.ltdb-badge{margin-left:auto;font-size:9px;font-weight:800;padding:3px 9px;border-radius:99px;text-transform:uppercase;letter-spacing:.07em;white-space:nowrap;flex-shrink:0}
.ltdb-badge-ok{background:#dcfce7;color:#15803d}
.ltdb-badge-soon{background:#fef9c3;color:#92400e}
.ltdb-badge-late{background:#fee2e2;color:#b91c1c}
.ltdb-badge-closed{background:#f1f5f9;color:#64748b}
.ltdb-card-body{padding:9px 13px 11px;display:grid;gap:7px}
.ltdb-card-stats{display:flex;align-items:center;justify-content:space-between;gap:8px}
.ltdb-card-left{display:grid;gap:1px}
.ltdb-card-label{font-size:9px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:700}
.ltdb-card-amount{font-size:17px;font-weight:700;color:var(--text);line-height:1.2}
.ltdb-card-emi{font-size:10px;color:var(--muted);margin-top:1px}
.ltdb-card-emi-over{color:#16a34a;font-weight:600}
.ltdb-ring-wrap{flex-shrink:0;width:52px;height:52px}
.ltdb-ring-svg{width:52px;height:52px}
.ltdb-card-meta{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:11px;color:var(--text)}
.ltdb-card-meta-k{font-size:9px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:700;margin-right:2px;display:block}
.ltdb-progress-track{height:3px;background:#f0f4ff;border-radius:3px;overflow:hidden}
.ltdb-progress-fill{height:100%;border-radius:3px}
.ltdb-card-actions{display:flex;gap:6px;flex-wrap:wrap}
.ltdb-card-btn{padding:5px 11px;border-radius:7px;font-size:11px;font-weight:600;cursor:pointer;border:1px solid var(--line);background:#fff;color:var(--text);transition:background .12s}
.ltdb-card-btn-primary{background:#1e3a8a;color:#fff;border-color:#1e3a8a}
.ltdb-card-btn-pay{background:#16a34a;color:#fff;border-color:#16a34a}
.ltdb-card-btn-auto-on{background:#16a34a;color:#fff;border-color:#16a34a}
.ltdb-card-btn-auto-on:hover{background:#15803d;border-color:#15803d}
.ltdb-card-btn-auto-off{background:#f59e0b;color:#fff;border-color:#f59e0b}
.ltdb-card-btn-auto-off:hover{background:#d97706;border-color:#d97706}
.ltdb-card-btn:hover{background:#eef3ff;border-color:#bfdbfe}
.ltdb-card-btn-primary:hover{background:#1d4ed8;border-color:#1d4ed8}
.ltdb-card-btn-pay:hover{background:#15803d;border-color:#15803d}
.ltdb-empty{padding:24px;text-align:center;color:var(--muted);font-size:13px;background:#f8fbff;border-radius:12px;border:1px dashed var(--line)}
/* EMI Payment Dialog */
.emi-dialog{display:grid;gap:14px}
.emi-breakdown{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#f8fbff}
.emi-breakdown-row{display:flex;justify-content:space-between;align-items:center;padding:8px 14px;font-size:13px;border-bottom:1px solid var(--line)}
.emi-breakdown-row:last-child{border-bottom:none;font-weight:700;background:#eef3ff}
.emi-breakdown-label{color:var(--muted);font-size:12px}
.emi-breakdown-value{font-weight:600;color:var(--text)}
.emi-breakdown-row:last-child .emi-breakdown-value{font-size:15px;color:#1e3a8a}
/* Sidebar */
.ltdb-side{display:grid;gap:12px}
.ltdb-side-section{border:1px solid var(--line);border-radius:14px;background:#fff;overflow:hidden;box-shadow:0 1px 4px rgba(30,58,138,.04)}
.ltdb-side-head{display:flex;align-items:center;justify-content:space-between;padding:11px 14px 9px;font-size:12px;font-weight:700;color:var(--text);border-bottom:1px solid var(--line)}
.ltdb-upcoming-row{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--line)}
.ltdb-upcoming-row:last-child{border-bottom:none}
.ltdb-upcoming-row-overdue{background:#fff5f5}
.ltdb-upcoming-date{width:30px;text-align:center;flex-shrink:0}
.ltdb-upcoming-day{font-size:15px;font-weight:700;line-height:1}
.ltdb-upcoming-month{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.ltdb-upcoming-info{flex:1;min-width:0}
.ltdb-upcoming-name{font-size:12px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ltdb-upcoming-lender{font-size:10px;color:var(--muted)}
.ltdb-upcoming-cc-tag{display:inline-block;font-size:9px;font-weight:700;background:#ede9fe;color:#6d28d9;border-radius:3px;padding:1px 4px;vertical-align:middle;margin-left:3px}
.ltdb-upcoming-overdue-tag{display:inline-block;font-size:9px;font-weight:700;background:#fee2e2;color:#dc2626;border-radius:3px;padding:1px 4px;margin-top:2px}
.ltdb-upcoming-amount-wrap{display:flex;flex-direction:column;align-items:flex-end;gap:3px;flex-shrink:0}
.ltdb-upcoming-amount{font-size:12px;font-weight:700;color:var(--text);white-space:nowrap}
.ltdb-upcoming-amount-overdue{color:#dc2626}
.ltdb-upcoming-pay-btn{font-size:10px;font-weight:600;color:#6d28d9;background:#ede9fe;border:none;border-radius:4px;padding:2px 7px;cursor:pointer;white-space:nowrap}
.ltdb-upcoming-pay-btn:hover{background:#ddd6fe}
.ltdb-side-empty{padding:12px 14px;font-size:12px;color:var(--muted)}
.ltdb-insight{display:flex;align-items:flex-start;gap:8px;padding:9px 14px;border-bottom:1px solid var(--line);font-size:11px;color:var(--text);line-height:1.5}
.ltdb-insight:last-child{border-bottom:none}
.ltdb-insight-icon{font-size:12px;flex-shrink:0;margin-top:1px}
.ltdb-quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px 12px}
.ltdb-quick-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 6px;border:1px solid var(--line);border-radius:9px;background:#f8fbff;font-size:10px;font-weight:700;color:var(--text);cursor:pointer;transition:background .12s}
.ltdb-quick-btn:hover{background:#eef3ff;border-color:#bfdbfe}
.ltdb-quick-icon{font-size:16px;line-height:1}
/* ── Credit Card Card Styles ─────────────────────────────────────────────── */
.cc-issuer-block{margin:16px 0 4px}
.cc-issuer-header{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;background:var(--panel-soft);border:1px solid var(--line);border-radius:10px;cursor:pointer;text-align:left;font:inherit;color:inherit;appearance:none;-webkit-appearance:none}
.cc-issuer-header:hover{background:var(--hover)}
.cc-issuer-arrow{font-size:11px;color:var(--muted);flex-shrink:0;display:inline-block}
.cc-issuer-left{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}
.cc-issuer-name{font-size:13px;font-weight:700;color:var(--text)}
.cc-issuer-stats{display:flex;gap:12px;flex-wrap:wrap}
.cc-issuer-stats span{font-size:12px;color:var(--muted)}
.cc-issuer-stats strong{color:var(--text);font-weight:600}
.cc-issuer-shortfall strong{color:#dc2626!important}
.cc-issuer-payacct{font-size:12px;color:var(--muted);margin-top:1px}
.cc-issuer-payacct strong{font-weight:600}
.cc-card-amounts{display:flex;gap:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:10px 0 0}
.cc-card-col{flex:1;padding:10px 10px 8px;border-right:1px solid var(--line)}
.cc-card-col:last-child{border-right:none}
.cc-amount-overdue{color:#dc2626!important}
.cc-amount-paid{color:#16a34a!important}
/* Income & Expense Split Panel */
.ie-split-panel{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.ie-half{display:flex;flex-direction:column}
.ie-half-expense{border-right:2px solid var(--line-strong)}
.ie-half-head{display:flex;align-items:center;gap:8px;padding:6px 10px;border-bottom:1px solid var(--line)}
.ie-half-expense .ie-half-head{background:#fff5f3}
.ie-half-income .ie-half-head{background:#f0fdf6}
.ie-half-label{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;flex-shrink:0;white-space:nowrap}
.ie-half-expense .ie-half-label{color:#9a311f}
.ie-half-income .ie-half-label{color:#0c6f4b}
.ie-half-filter{flex:1;padding:4px 8px;border:1px solid var(--line-strong);border-radius:8px;font-size:12px;background:#fff;color:var(--text);font:inherit;min-width:0}
.ie-col-head{display:grid;grid-template-columns:1fr auto;padding:5px 10px;background:#f2f8ff;border-bottom:1px solid var(--line);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.ie-col-head-amount{text-align:right}
.ie-half-scroll{overflow-y:auto;max-height:480px;overscroll-behavior:auto}
.ie-half-table{width:100%;border-collapse:collapse}
.ie-half-table tr:hover{background:#f9fcff}
.ie-half-table td{padding:6px 10px;border-bottom:1px solid #d9e6f3;font-size:13px;white-space:nowrap}
.ie-half-table td:last-child{text-align:right}
.ie-half-table .table-total-row td{font-weight:800;background:#f7fbff;border-bottom:none;position:sticky;bottom:0}
/* ie-half-table thead — used by balance matrix + trend split panels */
.ie-half-table thead th{padding:5px 8px;background:#f2f8ff;border-bottom:1px solid var(--line);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);white-space:nowrap;position:sticky;top:0;z-index:2}
.ie-half-table .table-top-total-row th{position:sticky;top:23px;z-index:2;background:#edf5ff;font-weight:700;font-size:11px;padding:5px 8px;white-space:nowrap;border-bottom:1px solid var(--line)}
/* Balance RF (Risk & Use Of Funds) split */
.ie-half-use{border-right:2px solid var(--line-strong)}
.ie-half-use .ie-half-head{background:#f0f7ff}
.ie-half-use .ie-half-label{color:#1a5276}
.ie-half-risk .ie-half-head{background:#fef9f0}
.ie-half-risk .ie-half-label{color:#7e5109}
/* YoY + Monthly Trend split */
.ie-trend-split{grid-template-columns:1fr}
.ie-trend-split .ie-half-yoy{border-right:2px solid var(--line-strong)}
.ie-half-yoy .ie-half-head{background:#f5f3ff}
.ie-half-yoy .ie-half-label{color:#4a2d8a}
.ie-half-monthly .ie-half-head{background:#f0fdf4}
.ie-half-monthly .ie-half-label{color:#166534}
/* Trend table: right-align all amount columns */
.ie-trend-table td:not(:first-child){text-align:right}
/* CC Pay Summary */
.cc-pay-summary{background:var(--panel-soft);border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:4px}
.cc-pay-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0;font-size:12px;color:var(--text);border-bottom:1px solid var(--line)}
.cc-pay-row:last-child{border-bottom:none}
.cc-pay-row span{color:var(--muted);font-size:11px}
/* CC Transactions View */
.cc-tx-section{margin-bottom:16px}
.cc-tx-head{font-size:11px;font-weight:700;color:var(--text);background:var(--panel-soft);border:1px solid var(--line);border-radius:8px 8px 0 0;padding:8px 12px}
.cc-tx-table{width:100%;border-collapse:collapse;font-size:12px}
.cc-tx-table th{text-align:left;padding:7px 10px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:#f8fbff;border-bottom:1px solid var(--line)}
.cc-tx-table td{padding:7px 10px;border-bottom:1px solid var(--line);color:var(--text)}
.cc-tx-table td.amount-positive{color:var(--positive);font-weight:700}
.cc-tx-table td.amount-negative{color:var(--negative);font-weight:700}
.cc-tx-table tr:last-child td{border-bottom:none}
/* CC Config Form */
.cc-config-form{padding:0}
.cc-config-shell{display:grid;gap:16px}
.cc-config-intro{margin:0;color:var(--muted);font-size:13px;line-height:1.5}
.cc-config-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(190px,.7fr);gap:16px 18px;align-items:end}
.cc-config-grid label{display:grid;gap:6px;font-weight:700;color:#1f476d}
.cc-config-grid input,.cc-config-grid select{width:100%;padding:8px 10px;border:1px solid var(--line-strong);border-radius:14px;background:#fff;color:var(--text)}
.cc-config-grid .cc-config-primary,.cc-config-grid .cc-config-wide{grid-column:span 2}

@media (max-width:1100px){
  .auth-shell{
    grid-template-columns:1fr;
    grid-template-rows:minmax(170px,.34fr) minmax(0,.66fr);
  }
  .auth-hero-panel{
    min-height:0;
    grid-template-rows:auto auto;
    grid-template-columns:minmax(0,.42fr) minmax(0,.58fr);
    align-items:center;
    gap:18px 24px;
    padding:clamp(18px,3vw,34px) clamp(20px,4vw,42px);
  }
  .auth-brand-row{align-self:start}
  .auth-hero-copy{align-self:center}
  .auth-hero-copy h1{font-size:clamp(1.9rem,4vw,2.7rem)}
  .auth-hero-copy p{font-size:.98rem}
  .auth-finance-art{display:none}
  .auth-security-badge{grid-column:1 / -1;align-self:end;justify-self:start;padding:10px 14px;font-size:13px}
  .auth-main{padding:clamp(16px,3vw,30px) 20px}
  .auth-screen .auth-panel{padding:22px}
  .auth-card-tabs .segmented-btn,
  .segmented.auth-card-tabs .segmented-btn{min-height:42px}
  .auth-card-head{margin:18px 0 14px}
  .auth-card-head h2{font-size:clamp(1.8rem,4vw,2.2rem)}
  .auth-login-form{gap:10px}
  .auth-login-form .auth-input-wrap input{height:48px}
  .auth-login-form #authSubmitBtn{min-height:50px;margin-top:4px}
  .auth-divider{margin:16px 0 12px}
  .stats-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .three-col,.transaction-top-grid{grid-template-columns:1fr}
  .loan-summary-grid,.loan-calculator-summary,.loan-detail-grid,.loan-planner-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .loan-calculator-top{display:grid}
  .loan-calculator-form{grid-template-columns:repeat(2,minmax(0,1fr))}
  .loan-calculator-actions{justify-content:flex-start}
  .loan-meta-grid,.loan-planner-grid{grid-template-columns:1fr}
  .loan-plan-row{grid-template-columns:1fr}
  .loan-plan-actions{justify-content:flex-start}
  .ltdb{grid-template-columns:1fr}
  .ltdb-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media (max-height:780px) and (min-width:1101px){
  .auth-main{padding:clamp(18px,3.4vw,46px)}
  .auth-hero-panel{
    grid-template-rows:auto auto minmax(92px,1fr) auto;
    gap:clamp(10px,2vh,16px);
    padding:clamp(22px,3.2vw,46px);
  }
  .auth-logo-tile{width:62px;height:62px;border-radius:18px}
  .auth-logo-tile img{width:100%;height:100%;border-radius:inherit}
  .auth-brand-row{gap:16px}
  .auth-brand-row strong{font-size:clamp(3rem,4.4vw,4.15rem)}
  .auth-hero-copy{gap:10px}
  .auth-hero-copy h1{font-size:clamp(2rem,3.25vw,3.2rem);line-height:1.04}
  .auth-hero-copy p{font-size:1rem;line-height:1.42}
  .auth-finance-art{height:clamp(110px,21vh,165px);width:min(390px,82%)}
  .auth-security-badge{padding:10px 14px;font-size:12px}
  .auth-screen .auth-panel{padding:24px}
  .auth-card-tabs .segmented-btn,
  .segmented.auth-card-tabs .segmented-btn{min-height:42px}
  .auth-card-head{margin:18px 0 14px}
  .auth-card-head h2{font-size:clamp(1.8rem,2.5vw,2.25rem)}
  .auth-login-form{gap:11px}
  .auth-login-form .auth-input-wrap input{height:48px}
  .auth-login-form #authSubmitBtn{min-height:50px;margin-top:4px}
  .auth-divider{margin:16px 0 12px}
}

@media (max-height:680px) and (min-width:1101px){
  .auth-hero-panel{
    grid-template-rows:auto auto auto;
    align-content:center;
  }
  .auth-finance-art,
  .auth-security-badge{display:none}
  .auth-screen .auth-panel{padding:20px}
  .auth-card-head{margin:16px 0 12px}
  .auth-login-form{gap:10px}
}

@media (max-width:820px){
  .auth-screen{
    overflow:hidden;
  }
  .auth-shell{
    grid-template-rows:auto minmax(0,1fr);
  }
  .auth-hero-panel{
    gap:20px;
    min-height:0;
    grid-template-columns:1fr;
    grid-template-rows:auto auto;
    padding:20px 18px 12px;
  }
  .auth-brand-row{gap:14px}
  .auth-logo-tile{width:58px;height:58px;border-radius:17px}
  .auth-logo-tile img{width:100%;height:100%;border-radius:inherit}
  .auth-brand-row strong{font-size:2.65rem}
  .auth-hero-copy h1{font-size:2.25rem}
  .auth-finance-art{display:none}
  .auth-security-badge{display:none}
  .auth-main{padding:12px 18px 20px}
  .auth-screen .auth-panel{padding:24px 18px;border-radius:22px}
  .auth-card-head{margin:26px 0 20px}
  .auth-card-head h2{font-size:2rem}
  .app-dialog.voucher-dialog{width:min(820px,calc(100vw - 16px));max-height:calc(100vh - 16px)}
  .app-dialog.voucher-dialog .app-dialog-body,.voucher-document{max-height:calc(100vh - 16px)}
  .voucher-header{padding:12px;gap:10px}
  .voucher-heading{gap:4px}
  .voucher-doc-reference{flex-wrap:wrap}
  .voucher-content{padding:10px 12px}
  .voucher-row{grid-template-columns:1fr}
  .voucher-row .voucher-field:first-child{border-right:0;border-bottom:1px solid #dce7f1}
  .voucher-row .voucher-field:last-child{border-bottom:0}
  .voucher-field{grid-template-columns:118px minmax(0,1fr);min-height:34px}
  .voucher-footer{padding:9px 12px;flex-wrap:wrap}
  .two-col,.dual-grid,.stats-grid,.balance-stats,.toolbar-grid,.form-grid,.cc-config-grid{grid-template-columns:1fr}
  .net-worth-trend-panel{grid-template-columns:1fr}
  .investment-chart-layout{grid-template-columns:1fr}
  .investment-chart-legend{grid-template-columns:1fr}
  .span-2{grid-column:span 1}
  .span-4{grid-column:span 1}
  .flow-row,.summary-row{grid-template-columns:1fr}
  .loan-summary-grid,.loan-calculator-summary,.loan-calculator-form,.loan-detail-grid,.loan-meta-grid,.loan-planner-summary,.loan-planner-grid{grid-template-columns:1fr}
  .loan-calculator-chip{justify-self:start}
  .transaction-entry-panel .form-grid{max-width:none}
  .refund-editor-header,.refund-line,.refund-case-meta,.schedule-editor-grid,.loan-rate-change-row{grid-template-columns:1fr}
  .schedule-editor-name-field,.schedule-editor-frequency-field,.schedule-editor-date-field,.schedule-editor-active-row{grid-column:auto}
  .refund-line-remove,.refund-line-error{grid-column:auto}
  .cc-config-grid .cc-config-primary,.cc-config-grid .cc-config-wide{grid-column:auto}
  .sticky-shell{top:0}
  .line-item-wrap,.short-wrap,.medium-wrap,.tall-wrap{max-height:320px}
}

@media (max-width:760px){
  .auth-hero,.topbar,.workspace-banner{flex-direction:column;align-items:flex-start}
  .status-stack{align-items:flex-start}
  .hint-text{text-align:left;max-width:none}
  .compact-workspace-meta{justify-content:flex-start}
  .compact-workspace-meta .member-strip{justify-content:flex-start}
  .master-data-header{gap:6px;margin-bottom:4px}
  .master-data-header h1{font-size:1.45rem}
  .master-subtabs{gap:18px;padding-bottom:1px}
  #masterSheet.sheet.active,.accounting-admin-sheet{min-height:auto}
  .master-tab-panel{padding:12px;border-radius:12px;min-height:auto}
  .master-tab-panel .panel-header{align-items:flex-start;gap:12px}
  .master-panel-actions{justify-content:flex-end;margin-left:auto}
  .master-table-toolbar{align-items:center;flex-direction:row;flex-wrap:wrap}
  .master-filter-input{max-width:none}
  .master-table-wrap,.admin-table-wrap{height:360px}
  .schedule-admin-wrap{height:auto;max-height:calc(100vh - 300px);min-height:260px;overflow:auto}
  #scheduledTransactionsPanel:not([hidden]){min-height:auto}
  .schedule-toolbar{position:static;grid-template-columns:1fr}
  .schedule-admin-table thead th{position:static;top:auto;z-index:auto}
  .schedule-toolbar button{justify-self:start}
  .accounting-admin-sheet .admin-panel{padding:16px}
  .mobile-only-tab{display:inline-flex}
}

/* ── Cashflow Groups Config (Master Data) ─────────────────────────── */
.cf-groups-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-top:4px}
.cf-group-col{display:flex;flex-direction:column;gap:8px;background:var(--panel-soft);border:1px solid var(--line);border-radius:14px;padding:12px}
.cf-group-col-head{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.14em;color:var(--brand-dark);margin-bottom:2px}
.cf-group-chips{display:flex;flex-direction:column;gap:5px;min-height:28px}
.cf-group-chip{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:5px 8px 5px 10px;border-radius:8px;font-size:12px;font-weight:600;background:var(--brand-soft);border:1px solid #9ebcdf;color:var(--brand-dark)}
.cf-chip-remove{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:18px;height:18px;border:none;border-radius:50%;background:rgba(10,110,209,.15);color:var(--brand-dark);font-size:14px;line-height:1;padding:0;cursor:pointer}
.cf-chip-remove:hover{background:rgba(199,74,50,.2);color:var(--negative)}
.cf-group-add-select{width:100%;border:1px solid var(--line);border-radius:8px;padding:5px 8px;background:#fff;color:var(--text);font-size:12px;margin-top:auto}
.cf-no-heads{color:var(--muted);font-size:12px;font-style:italic}
.cf-all-assigned{margin:0;color:var(--muted);font-size:12px;font-style:italic}

/* ── Cashflow Statement Table ──────────────────────────────────────── */
/* Wrapper */
.cf-tbl-wrap{width:100%;overflow-x:auto;overflow-y:auto;border:1px solid var(--line);border-radius:14px;background:#fff}
.cf-tbl-compact{max-height:320px}

/* Table base */
.cf-statement-table{table-layout:fixed;width:100%;border-collapse:collapse;font-size:13px}

/* Column widths */
.cf-col-month{width:96px}
.cf-col-num{width:108px}
.cf-col-net{width:108px}
.cf-col-bal{width:108px}

/* Header */
.cf-statement-table thead{position:sticky;top:0;z-index:3}
.cf-th{padding:11px 14px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);background:var(--panel-soft);text-align:right;border-bottom:2px solid var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cf-th-left{text-align:left}
.cf-th-net{color:var(--brand-dark);background:#eaf2ff}
.cf-th-sep{border-left:2px solid var(--line)}

/* Body cells */
.cf-c{padding:10px 14px;text-align:right;font-weight:600;border-bottom:1px solid #f0f4f8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Row states */
.cf-row-alt{background:#fafcff}
.cf-statement-table tbody tr:hover{background:var(--brand-soft)}

/* Net column highlight */
.cf-net{background:#f5f9ff;font-weight:700}
.cf-statement-table tbody tr:hover .cf-net{background:#e6f0ff}
.cf-row-alt .cf-net{background:#eef5ff}

/* Opening/Closing separator */
.cf-bal{border-left:2px solid var(--line);font-weight:700;color:var(--text)}

/* Colors */
.cf-pos{color:var(--positive)}
.cf-neg{color:var(--negative)}
.cf-zero{color:var(--muted);font-weight:400}

/* Footer / Total row — sticky at bottom */
.cf-statement-table tfoot{position:sticky;bottom:0;z-index:3}
.cf-foot td,.cf-foot .cf-c{font-weight:800;background:#eef4fb;border-top:2px solid var(--line-strong);border-bottom:none;padding:10px 14px}

/* Month cell with view button */
.cf-month{display:flex;align-items:center;justify-content:space-between;gap:4px;text-align:left;font-weight:600;color:var(--text)}
.cf-month[data-action],.cf-month-simple[data-action]{cursor:pointer}
.cf-month-simple{display:flex;align-items:center;justify-content:space-between;gap:6px;font-weight:600;color:var(--text)}
.cf-month-detail-btn{width:100%;display:flex;align-items:center;justify-content:space-between;gap:6px;background:none;border:0;padding:0;color:inherit;font:inherit;text-align:left;cursor:pointer}
.cf-month-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cf-view-btn{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;font-size:11px;font-weight:700;color:var(--brand-dark);opacity:.78;border-radius:999px;line-height:1;background:var(--brand-soft);transition:opacity .15s,background .15s}
.cf-month:hover .cf-view-btn,.cf-month-simple:hover .cf-view-btn,.cf-month-detail-btn:hover .cf-view-btn{opacity:1;background:var(--brand-soft)}

/* Detail table label column */
.cf-col-label{width:180px}
.cf-label-cell{text-align:left;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Fullscreen dialog */
.cf-fullscreen-dialog .app-dialog-body{padding:0}
.cf-fullscreen-toolbar{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);gap:12px}
.cf-fullscreen-dialog .cf-tbl-wrap{border-radius:0;border:none;max-height:calc(90vh - 110px)}
.yoy-fullscreen-dialog .app-dialog-body{padding:0}
.yoy-fullscreen-toolbar{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);gap:12px}
.yoy-fullscreen-dialog .yoy-fullscreen-wrap{max-height:calc(90vh - 110px);overflow:auto;border:0;border-radius:0}
.yoy-fullscreen-dialog .dashboard-yoy-table{min-width:1180px;table-layout:fixed}

/* Detail label column */
.cf-col-label{width:180px}

/* Download toolbar */
.cf-detail-toolbar{display:flex;justify-content:flex-end;padding:8px 4px 10px}

/* Top-level expandable rows — full row is the click target */
.cf-detail-top-row{cursor:pointer}
.cf-detail-top-row td{font-weight:700;background:var(--panel-soft)}
.cf-detail-top-row:hover td{background:var(--brand-soft)}
.cf-detail-label{display:flex;align-items:center;justify-content:space-between;gap:8px}
.cf-detail-label>span:first-child{flex:1}
.cf-expand-icon{flex-shrink:0;font-size:9px;color:var(--muted);line-height:1;user-select:none;transition:color .15s;padding:4px 2px}
.cf-detail-top-row:hover .cf-expand-icon{color:var(--brand-dark)}

/* Sub-rows (category / account breakdown) */
.cf-sub-row{display:none}
.cf-sub-row.cf-sub-open{display:table-row}
/* L1 – Balance Class row (indent 1) */
.cf-sub-label{text-align:left;padding:7px 14px 7px 28px !important;font-weight:600;font-size:12px;color:var(--text);border-bottom:1px dashed #e8edf3;cursor:pointer}
.cf-sub-l1-row:hover td{background:var(--panel-soft)}
/* L2 – Account Head row (indent 2) */
.cf-sub-l2-label{text-align:left;padding:6px 14px 6px 44px !important;font-weight:400;font-size:12px;color:var(--text-secondary);border-bottom:1px dashed #e8edf3;cursor:pointer}
.cf-sub-l2-row:hover td{background:var(--panel-soft)}
/* L3 – Account row (indent 3) */
.cf-sub-l3-label{text-align:left;padding:5px 14px 5px 60px !important;font-weight:400;font-size:11px;color:var(--muted);border-bottom:1px dotted #e8edf3}
.cf-sub-row td.cf-c{border-bottom:1px dashed #e8edf3;font-size:12px;font-weight:500}
.cf-sub-l3-row td.cf-c{font-size:11px;border-bottom:1px dotted #e8edf3}

/* Scrollable detail table */
.cf-tbl-detail{max-height:420px;overflow-y:auto}

/* Month detail dialog */
.cf-detail-dialog .app-dialog-body{padding:16px}

@media (max-width:1100px){
  .cf-groups-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:820px){
  .cf-groups-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* FD and RD tracker */
#depositTrackerDashboard{width:100%;max-width:100%;min-width:0}
.deposit-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:6px 0 18px;border-bottom:1px solid var(--line)}
.deposit-hero h2{margin:2px 0 5px;font-size:24px;letter-spacing:0}
.deposit-hero button{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto}
.deposit-hero button .material-symbols-outlined{font-size:19px}
.deposit-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;padding:18px 0}
.deposit-stat{min-width:0;display:flex;align-items:center;gap:12px;padding:15px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 4px 14px rgba(15,45,85,.045)}
.deposit-stat>.material-symbols-outlined{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:#eaf2ff;color:#2563eb;font-size:21px;flex:0 0 auto}
.deposit-stat:nth-child(2)>.material-symbols-outlined{background:#e9fbf4;color:#079a63}
.deposit-stat:nth-child(3)>.material-symbols-outlined{background:#fff4df;color:#8a5700}
.deposit-stat:nth-child(4)>.material-symbols-outlined{background:#f4efff;color:#7c3aed}
.deposit-stat div{min-width:0;display:grid;gap:2px}
.deposit-stat span,.deposit-stat small{color:var(--muted);font-size:12px}
.deposit-stat strong{font-size:19px;line-height:1.2;overflow-wrap:anywhere}
.deposit-table-section{padding:16px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 4px 14px rgba(15,45,85,.045)}
.deposit-toolbar{display:grid;grid-template-columns:minmax(240px,1fr) repeat(3,minmax(130px,auto));gap:9px;align-items:center;margin:0 0 12px}
.deposit-search{display:flex;align-items:center;gap:7px;border:1px solid var(--line-strong);background:#fff;padding:0 10px;border-radius:9px}
.deposit-search .material-symbols-outlined{font-size:18px;color:var(--muted)}
.deposit-search input{border:0!important;box-shadow:none!important;padding-left:0;width:100%}
.deposit-table-wrap{width:100%;max-width:100%;overflow-x:auto}
.deposit-table-wrap table{min-width:1180px}
.deposit-table-wrap td small{display:block;margin-top:3px;color:var(--muted);font-size:11px;white-space:normal}
.deposit-type-badge,.deposit-status,.deposit-fund-tag{display:inline-flex;align-items:center;white-space:nowrap;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:800}
.deposit-type-fd{background:#e6f1ff;color:#155c96}.deposit-type-rd{background:#e8f7ee;color:#176a42}
.deposit-status-active{background:#e8f7ee;color:#176a42}.deposit-status-matured{background:#fff3d7;color:#805300}.deposit-status-closed{background:#edf0f3;color:#495562}.deposit-status-renewed{background:#efe9fa;color:#684094}.deposit-status-archived{background:#f0f0f0;color:#616161}
.fund-emergency{background:#fff0ec;color:#9a3c28}.fund-normal{background:#eef3f7;color:#405667}
.deposit-link-btn{border:0;background:none;color:var(--brand-dark);padding:0;font-weight:800;text-align:left;text-decoration:underline;text-decoration-color:#b6d1e8;text-underline-offset:3px}
.deposit-table-wrap .icon-btn,.deposit-dialog .icon-btn{width:32px;height:32px;display:inline-grid;place-items:center;padding:0;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}
.deposit-table-wrap .icon-btn .material-symbols-outlined,.deposit-dialog .icon-btn .material-symbols-outlined{font-size:17px}
.deposit-dialog-backdrop{position:fixed;inset:0;z-index:2400;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(7,24,43,.5);backdrop-filter:blur(4px)}
.deposit-dialog{width:min(820px,100%);max-height:min(880px,calc(100vh - 40px));display:flex;flex-direction:column;background:#fff;border:1px solid #cbd9e6;border-radius:14px;box-shadow:0 24px 60px rgba(8,34,59,.28)}
.deposit-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 22px 14px;border-bottom:1px solid var(--line)}
.deposit-dialog-header h3{margin:2px 0 0;font-size:21px;letter-spacing:0}
.deposit-dialog-body{overflow:auto;padding:18px 22px}
.deposit-dialog-actions{display:flex;justify-content:flex-end;gap:9px;padding:14px 22px;border-top:1px solid var(--line);background:#f8fafc}
.deposit-dialog-feedback{margin:0;padding:0 22px 10px}
.deposit-link-summary{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:11px;padding:12px;border:1px solid #cddfee;background:#f4f9fd;border-radius:10px;margin-bottom:14px}
.deposit-link-summary>.material-symbols-outlined{color:#155c96}
.deposit-link-summary div{display:grid;gap:2px;min-width:0}.deposit-link-summary div span{font-size:12px;color:var(--muted)}
.deposit-mode-field{display:grid;gap:6px;margin-bottom:14px}.deposit-mode-field>span{font-size:12px;font-weight:700;color:var(--muted)}
.deposit-prompt-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.deposit-prompt-grid label{display:grid;gap:6px}.deposit-prompt-grid label>span{font-size:12px;font-weight:700;color:var(--muted)}
.deposit-existing-summary,.deposit-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.deposit-existing-summary>div,.deposit-detail-grid>div{display:grid;gap:3px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:#fbfcfd}
.deposit-existing-summary span,.deposit-detail-grid span{font-size:11px;color:var(--muted)}
.deposit-warning{grid-column:1/-1;margin:0;padding:9px 10px;background:#fff6df;color:#775000;border-left:3px solid #dda627;font-size:12px}
.deposit-estimate{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2px 16px;margin-top:14px;padding:12px 14px;border:1px solid #c9dfcf;border-radius:10px;background:#f1f9f3}
.deposit-estimate>span,.deposit-estimate>small{color:#42634c;font-size:12px}.deposit-estimate>strong{font-size:20px;color:#165b32}.deposit-estimate>small{grid-column:1/-1}
.transaction-deposit-summary{display:flex;align-items:center;gap:10px;margin-top:13px;padding:11px 12px;border:1px solid #c9dfcf;border-radius:10px;background:#f1f9f3}
.transaction-deposit-summary>.material-symbols-outlined{color:#176a42}.transaction-deposit-summary div{display:grid;gap:2px}.transaction-deposit-summary span,.transaction-deposit-summary small{font-size:11px;color:var(--muted)}
.deposit-detail-heading{margin:18px 0 9px;font-size:14px;letter-spacing:0}
body.deposit-dialog-open{overflow:hidden}
@media(max-width:1050px){.deposit-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.deposit-toolbar{grid-template-columns:minmax(220px,1fr) repeat(2,minmax(120px,auto))}.deposit-filter-fund{grid-column:2/-1}}
@media(max-width:700px){.deposit-hero{align-items:flex-start}.deposit-hero h2{font-size:21px}.deposit-stats{grid-template-columns:1fr}.deposit-toolbar{grid-template-columns:1fr 1fr}.deposit-search{grid-column:1/-1}.deposit-filter-fund{grid-column:auto}.deposit-dialog-backdrop{padding:0;align-items:flex-end}.deposit-dialog{max-height:94vh;border-radius:14px 14px 0 0}.deposit-dialog-header,.deposit-dialog-body,.deposit-dialog-actions{padding-left:16px;padding-right:16px}.deposit-prompt-grid,.deposit-existing-summary,.deposit-detail-grid{grid-template-columns:1fr}.deposit-link-summary{grid-template-columns:auto minmax(0,1fr)}.deposit-link-summary>strong{grid-column:2}.deposit-dialog-actions>*{flex:1}}
