
:root{
  --jf-bg:#f5f7fa;
  --jf-surface:#ffffff;
  --jf-surface-soft:#f8fafc;
  --jf-border:#e5e9f0;
  --jf-text:#172033;
  --jf-muted:#687386;
  --jf-navy:#102a43;
  --jf-navy-2:#173f6b;
  --jf-green:#2f7d5a;
  --jf-green-soft:#edf8f2;
  --jf-amber:#b26a00;
  --jf-amber-soft:#fff7e8;
  --jf-red:#b42318;
  --jf-shadow:0 12px 30px rgba(16,42,67,.07);
  --jf-radius:18px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body.jf-app-body{background:var(--jf-bg);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;color:var(--jf-text)}
.jf-app{min-height:100vh;display:flex}
.jf-sidebar{position:fixed;inset:0 auto 0 0;width:268px;background:#0e2741;color:#fff;padding:22px 16px;display:flex;flex-direction:column;z-index:40}
.jf-brand{display:flex;align-items:center;gap:12px;padding:2px 8px 24px}
.jf-brand-mark{width:42px;height:42px;border-radius:13px;background:linear-gradient(145deg,#3b8d68,#2c6f53);display:grid;place-items:center;font-weight:800;letter-spacing:.5px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.15)}
.jf-brand strong{display:block;font-size:15px;line-height:1.15}
.jf-brand span{display:block;font-size:13px;color:#aac0d4;margin-top:3px}
.jf-mobile-close{display:none;margin-left:auto;background:transparent;border:0;color:#fff;font-size:28px}
.jf-nav{display:flex;flex-direction:column;gap:5px}
.jf-nav a{display:flex;align-items:center;gap:11px;color:#bfd0df;text-decoration:none;padding:11px 12px;border-radius:12px;font-weight:600;font-size:14px;transition:.18s ease}
.jf-nav a:hover{background:rgba(255,255,255,.07);color:#fff}
.jf-nav a.is-active{background:#fff;color:#102a43;box-shadow:0 8px 20px rgba(0,0,0,.08)}
.jf-nav-icon{width:21px;height:21px;display:inline-grid;place-items:center}
.jf-nav-icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.jf-nav a em{margin-left:auto;font-style:normal;font-size:10px;background:#2f7d5a;color:#fff;border-radius:999px;padding:2px 6px}
.jf-sidebar-bottom{margin-top:auto;border-top:1px solid rgba(255,255,255,.1);padding-top:16px}
.jf-user-card{display:flex;align-items:center;gap:10px;padding:0 6px 14px}
.jf-avatar,.jf-top-avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#dce8f3;color:#173f6b;font-weight:800}
.jf-user-copy{min-width:0}
.jf-user-copy strong{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jf-user-copy span{display:block;font-size:11px;color:#9fb5c8;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jf-signout{display:block;text-decoration:none;text-align:center;color:#cbd8e5;border:1px solid rgba(255,255,255,.14);padding:9px 12px;border-radius:10px;font-size:13px}
.jf-main{margin-left:268px;min-width:0;width:calc(100% - 268px);display:flex;min-height:100vh;flex-direction:column}
.jf-topbar{height:72px;background:rgba(255,255,255,.94);backdrop-filter:blur(10px);border-bottom:1px solid var(--jf-border);display:flex;align-items:center;padding:0 30px;position:sticky;top:0;z-index:25}
.jf-menu-button{display:none;width:38px;height:38px;border:1px solid var(--jf-border);border-radius:10px;background:#fff;padding:9px;margin-right:12px}
.jf-menu-button span{display:block;height:2px;background:#27445f;margin:4px 0}
.jf-topbar-title strong{display:block;font-size:14px}
.jf-topbar-title span{font-size:12px;color:var(--jf-muted)}
.jf-topbar-right{margin-left:auto;display:flex;align-items:center;gap:10px}
.jf-top-links{display:flex;align-items:center;gap:0;border:1px solid var(--jf-border);border-radius:11px;background:#fff;overflow:hidden}
.jf-top-links a{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:0 11px;color:#173f6b;text-decoration:none;font-size:12px;font-weight:800;letter-spacing:.02em;border-right:1px solid var(--jf-border);transition:.16s ease}
.jf-top-links a:last-child{border-right:0}.jf-top-links a:hover{background:#f0f4f8;color:#102a43}
.jf-login-icon{width:38px;height:38px;border:1px solid var(--jf-border);border-radius:11px;background:#fff;display:grid;place-items:center;color:#173f6b;text-decoration:none;box-shadow:0 3px 10px rgba(16,42,67,.04);transition:.16s ease}
.jf-login-icon:hover{background:#f4f8fb;border-color:#cad5df}
.jf-login-icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.jf-secure-pill{display:flex;align-items:center;gap:7px;background:var(--jf-green-soft);color:#246c4c;border:1px solid #d8eee2;border-radius:999px;padding:7px 10px;font-size:12px;font-weight:700}
.jf-secure-pill i{width:7px;height:7px;border-radius:50%;background:#2f9a68}
.jf-content{padding:34px;max-width:1480px;width:100%;margin:0 auto;flex:1}
.jf-page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:26px}
.jf-page-heading h1{font-size:32px;line-height:1.05;margin:5px 0 8px;letter-spacing:-.8px}
.jf-page-heading p{margin:0;color:var(--jf-muted);font-size:15px}
.jf-eyebrow{display:block;text-transform:uppercase;letter-spacing:.11em;color:#718096;font-size:10px;font-weight:800}
.jf-period-pill{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--jf-border);border-radius:999px;padding:9px 13px;font-size:12px;font-weight:700;box-shadow:0 4px 12px rgba(16,42,67,.04)}
.jf-period-dot{width:8px;height:8px;background:#2f9a68;border-radius:50%}
.jf-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}
.jf-kpi{background:#fff;border:1px solid var(--jf-border);border-radius:16px;padding:18px;box-shadow:0 6px 18px rgba(16,42,67,.035)}
.jf-kpi>span{display:block;color:var(--jf-muted);font-size:12px;font-weight:700}
.jf-kpi>strong{display:block;font-size:23px;line-height:1.15;margin:10px 0 7px;letter-spacing:-.35px}
.jf-kpi>small{font-size:11px;color:#7f8998}
.jf-kpi-success{border-top:3px solid #55a77d}
.jf-kpi-warning{border-top:3px solid #dfa84b}
.jf-kpi-neutral{border-top:3px solid #86a4bd}
.jf-grid{display:grid;gap:20px}
.jf-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.jf-card{background:var(--jf-surface);border:1px solid var(--jf-border);border-radius:var(--jf-radius);padding:24px;box-shadow:var(--jf-shadow)}
.jf-card-accent{background:linear-gradient(145deg,#102a43,#173f6b);color:#fff;border:0}
.jf-card-accent .jf-eyebrow,.jf-card-accent p{color:#b9ccdc}
.jf-card h2{font-size:19px;margin:6px 0 9px}
.jf-card p{line-height:1.6}
.jf-card-head{display:flex;align-items:center;justify-content:space-between;gap:16px}
.jf-status{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800}
.jf-status-open{background:#edf8f2;color:#26704f}
.jf-status-pending{background:#f5f7fa;color:#64748b;border:1px solid #e4e9ef}
.jf-workflow-list{margin-top:18px;border-top:1px solid var(--jf-border)}
.jf-workflow-item{display:flex;align-items:center;gap:13px;text-decoration:none;color:inherit;padding:16px 3px;border-bottom:1px solid var(--jf-border);transition:.15s}
.jf-workflow-item:hover{transform:translateX(2px)}
.jf-step{width:31px;height:31px;border-radius:10px;background:#edf3f8;color:#173f6b;display:grid;place-items:center;font-weight:800;font-size:12px}
.jf-workflow-copy{display:flex;flex-direction:column;gap:3px}
.jf-workflow-copy strong{font-size:14px}
.jf-workflow-copy small{color:var(--jf-muted)}
.jf-workflow-action{margin-left:auto;font-size:12px;font-weight:800;color:#2f6f9f}
.jf-checklist{display:flex;flex-direction:column;gap:11px;margin-top:20px}
.jf-checklist div{display:flex;align-items:center;gap:10px;font-size:13px}
.jf-checklist span{width:24px;height:24px;border-radius:8px;background:rgba(255,255,255,.11);display:grid;place-items:center;font-weight:800}
.jf-numbered span{background:#edf3f8;color:#173f6b}
.jf-muted{color:var(--jf-muted);font-size:13px}
.jf-dropzone{margin-top:18px;min-height:225px;border:1.5px dashed #cbd5e1;border-radius:16px;background:#f9fbfd;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:28px;gap:7px}
.jf-dropzone input{display:none}
.jf-upload-icon{width:46px;height:46px;border-radius:14px;background:#e9f1f8;color:#173f6b;display:grid;place-items:center;font-size:24px;font-weight:300}
.jf-dropzone strong{font-size:14px;margin-top:5px}
.jf-dropzone small{color:var(--jf-muted)}
.jf-badge{display:inline-flex;padding:5px 8px;border-radius:999px;background:#eef3f7;color:#62758a;font-size:10px;font-weight:800}
.jf-budget-current{display:flex;align-items:center;gap:18px}
.jf-big-check{width:56px;height:56px;border-radius:16px;background:#e9f7ef;color:#287752;display:grid;place-items:center;font-size:27px;font-weight:900}
.jf-budget-current h2{font-size:28px;margin:3px 0}
.jf-budget-current p{margin:0;color:var(--jf-muted)}
.jf-divider{height:1px;background:var(--jf-border);margin:22px 0}
.jf-transit-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.jf-metric-box{background:#f8fafc;border:1px solid var(--jf-border);border-radius:14px;padding:18px}
.jf-metric-box span{display:block;font-size:11px;color:var(--jf-muted);font-weight:700}
.jf-metric-box strong{display:block;font-size:24px;margin:10px 0 6px}
.jf-metric-box small{color:#8b95a3}
.jf-button{border:0;border-radius:11px;background:#173f6b;color:#fff;padding:11px 15px;font-weight:800}
.jf-button-muted{background:#dce4eb;color:#728093}
.jf-chart-placeholder{min-height:300px}
.jf-placeholder-bars{height:190px;display:flex;align-items:end;gap:18px;padding:25px 15px 0}
.jf-placeholder-bars i{display:block;flex:1;max-width:55px;border-radius:7px 7px 0 0;background:linear-gradient(#d7e4ef,#edf2f7)}
.jf-placeholder-bars i:nth-child(1){height:42%}.jf-placeholder-bars i:nth-child(2){height:68%}.jf-placeholder-bars i:nth-child(3){height:50%}.jf-placeholder-bars i:nth-child(4){height:82%}.jf-placeholder-bars i:nth-child(5){height:60%}.jf-placeholder-bars i:nth-child(6){height:74%}
.jf-placeholder-line{height:185px;margin-top:22px;border-radius:14px;background:
linear-gradient(155deg,transparent 0 16%,#d8e4ee 16.5% 17.5%,transparent 18% 30%,#d8e4ee 30.5% 31.5%,transparent 32% 46%,#d8e4ee 46.5% 47.5%,transparent 48% 62%,#d8e4ee 62.5% 63.5%,transparent 64% 78%,#d8e4ee 78.5% 79.5%,transparent 80%),
repeating-linear-gradient(0deg,#fff,#fff 37px,#eef2f6 38px)}
.jf-assistant-card{text-align:center;padding:50px 24px}
.jf-ai-orb{margin:0 auto 18px;width:64px;height:64px;border-radius:20px;background:linear-gradient(145deg,#173f6b,#2f7d5a);display:grid;place-items:center;color:#fff;font-weight:900;box-shadow:0 10px 24px rgba(23,63,107,.18)}
.jf-assistant-card p{max-width:620px;margin:0 auto;color:var(--jf-muted)}
.jf-prompt-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin-top:24px}
.jf-prompt-chips span{background:#f4f7fa;border:1px solid var(--jf-border);border-radius:999px;padding:8px 11px;font-size:12px}
.jf-setting-row{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--jf-border);font-size:13px}
.jf-setting-row:last-child{border-bottom:0}
.jf-footer{display:flex;justify-content:space-between;align-items:center;padding:17px 34px;border-top:1px solid var(--jf-border);color:#8b95a3;font-size:11px}
.jf-overlay{display:none}

@media(max-width:1050px){
  .jf-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .jf-transit-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:820px){
  .jf-sidebar{transform:translateX(-100%);transition:.22s ease}
  .jf-sidebar.is-open{transform:translateX(0)}
  .jf-mobile-close{display:block}
  .jf-main{margin-left:0;width:100%}
  .jf-menu-button{display:block}
  .jf-content{padding:24px 18px}
  .jf-grid-2{grid-template-columns:1fr}
  .jf-overlay{position:fixed;inset:0;background:rgba(2,12,27,.38);z-index:35}
  .jf-overlay.is-open{display:block}
}
@media(max-width:560px){
  .jf-topbar{padding:0 12px}
  .jf-topbar-title span,.jf-secure-pill{display:none}
  .jf-topbar-title{display:none}
  .jf-topbar-right{margin-left:auto;gap:7px}
  .jf-top-links{gap:0}
  .jf-top-links a{padding:0 6px;font-size:10px}
  .jf-login-icon{width:36px;height:36px}
  .jf-kpi-grid,.jf-transit-grid{grid-template-columns:1fr}
  .jf-page-heading{flex-direction:column}
  .jf-page-heading h1{font-size:28px}
  .jf-card{padding:19px}
  .jf-footer{padding:15px 18px}
}

/* Income engine */
.jf-income-upload-grid{align-items:start}
.jf-upload-form{margin-top:18px}
.jf-field-label{display:block;font-size:12px;font-weight:800;color:#475569;margin:0 0 7px}
.jf-field{width:100%;border:1px solid var(--jf-border);background:#fff;border-radius:11px;padding:11px 12px;font:inherit;color:var(--jf-text);outline:none;margin-bottom:14px}
.jf-field:focus{border-color:#7da5c7;box-shadow:0 0 0 3px rgba(55,111,159,.10)}
.jf-dropzone-active{cursor:pointer;min-height:156px;margin-top:12px;transition:.18s ease}
.jf-dropzone-active:hover{border-color:#7da5c7;background:#f5f9fc}
.jf-dropzone-active input{display:none}
.jf-dropzone-active.has-file{border-style:solid;border-color:#76ad91;background:#f2faf6}
.jf-button-primary{background:linear-gradient(145deg,#173f6b,#20517f);cursor:pointer;box-shadow:0 8px 18px rgba(23,63,107,.14)}
.jf-upload-form>.jf-button{margin-top:16px;width:100%}
.jf-form-note{margin:10px 0 0;text-align:center}
.jf-review-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin:32px 0 15px}
.jf-review-heading h2{font-size:24px;margin:5px 0 4px}
.jf-review-heading p{margin:0;color:var(--jf-muted);font-size:13px}
.jf-status-ready{background:#eaf8f0;color:#216c4a;border:1px solid #d3eddf}
.jf-status-review{background:#fff4e8;color:#9a5a00;border:1px solid #f3dfc0}
.jf-control-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:20px}
.jf-control-tile{background:#fff;border:1px solid var(--jf-border);border-radius:14px;padding:15px 16px;box-shadow:0 5px 16px rgba(16,42,67,.035)}
.jf-control-tile span{display:block;color:var(--jf-muted);font-size:11px;font-weight:700;min-height:28px}
.jf-control-tile strong{display:block;font-size:17px;margin-top:5px;letter-spacing:-.2px}
.jf-review-card{margin-bottom:20px}
.jf-review-error{border-color:#f1cbc7;background:#fffafa}
.jf-review-error h2{color:#9f2d24}
.jf-needs-review{border-left:4px solid #df9b32}
.jf-count-badge{min-width:30px;height:30px;border-radius:10px;background:#fff1dc;color:#985700;display:grid;place-items:center;font-weight:900;font-size:12px}
.jf-count-ok{background:#eaf8f0;color:#216c4a}
.jf-table-wrap{overflow:auto;margin-top:16px;border:1px solid var(--jf-border);border-radius:12px}
.jf-table{width:100%;border-collapse:collapse;font-size:12px;min-width:680px;background:#fff}
.jf-table th{background:#f7f9fb;color:#67768a;font-size:10px;text-transform:uppercase;letter-spacing:.07em;text-align:left;padding:11px 12px;border-bottom:1px solid var(--jf-border);white-space:nowrap}
.jf-table td{padding:11px 12px;border-bottom:1px solid #edf0f3;vertical-align:top}
.jf-table tbody tr:last-child td{border-bottom:0}
.jf-table-compact{max-height:420px}
.jf-review-grid{align-items:start}
.jf-category-list{margin-top:14px;border-top:1px solid var(--jf-border)}
.jf-category-list>div{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 0;border-bottom:1px solid var(--jf-border);font-size:12px}
.jf-category-list span{color:#506176}
.jf-category-list strong{white-space:nowrap}
.jf-download-card{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:4px}
.jf-download-card h2{margin:5px 0 6px}
.jf-download-card p{margin:0;color:var(--jf-muted);font-size:13px}
.jf-download-card.is-ready{border-left:4px solid #4da277}
.jf-download-card.is-locked{border-left:4px solid #c8d0d8}
.jf-download-button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;white-space:nowrap}

@media(max-width:1050px){
  .jf-control-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:640px){
  .jf-control-grid{grid-template-columns:1fr 1fr}
  .jf-review-heading,.jf-download-card{align-items:flex-start;flex-direction:column}
  .jf-download-button,.jf-download-card .jf-button{width:100%;text-align:center}
}
@media(max-width:430px){
  .jf-control-grid{grid-template-columns:1fr}
}


/* v0.3 reference files */
.jf-reference-strip{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:-6px 0 20px}
.jf-reference-pill{background:#fff;border:1px solid var(--jf-border);border-radius:13px;padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12px}
.jf-reference-pill span{color:var(--jf-muted);font-weight:700}
.jf-reference-pill strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jf-reference-pill.is-ready{border-color:#d6eadf;background:#f8fcfa}
.jf-reference-pill.is-ready strong{color:#26704f}
.jf-reference-pill.is-missing{border-color:#f0d0cd;background:#fff9f8}
.jf-reference-pill.is-missing strong{color:#b42318}
.jf-reference-saved,.jf-reference-empty{border:1px solid var(--jf-border);background:#f8fafc;border-radius:14px;padding:14px;margin:14px 0 18px}
.jf-reference-saved{display:grid;grid-template-columns:auto 1fr;gap:5px 10px;align-items:center}
.jf-reference-saved>strong{font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.jf-reference-saved>small{grid-column:2;color:var(--jf-muted)}
.jf-reference-empty p{font-size:13px;color:var(--jf-muted);margin:10px 0 0}
.jf-reference-form{margin-top:8px}
.jf-reference-form .jf-dropzone{min-height:175px}
.jf-settings-notice{margin-bottom:20px;padding:16px 20px}
.jf-settings-notice.is-success{border-color:#cfe7da;background:#f4fbf7;color:#26704f}
.jf-settings-notice.is-error{border-color:#f0c9c5;background:#fff7f6;color:#b42318}
.jf-review-reference{font-size:11px!important;color:var(--jf-muted)!important;margin-top:4px!important}
@media(max-width:650px){.jf-reference-strip{grid-template-columns:1fr}}


/* v0.3.2 review reset + reference browser */
.jf-clear-review-form{margin-bottom:8px;text-align:right}
.jf-link-button{border:0;background:transparent;color:#55738f;font-size:11px;font-weight:800;cursor:pointer;padding:3px 0;text-decoration:underline;text-underline-offset:3px}
.jf-reference-saved .jf-reference-view-link{grid-column:2;font-size:11px;font-weight:800;color:#2f6f9f;text-decoration:none;margin-top:3px}
.jf-reference-tabs{display:flex;gap:8px;margin-bottom:16px}
.jf-reference-tabs a{background:#fff;border:1px solid var(--jf-border);border-radius:11px;padding:9px 13px;text-decoration:none;color:#64748b;font-size:12px;font-weight:800}
.jf-reference-tabs a.is-active{background:#173f6b;color:#fff;border-color:#173f6b}
.jf-table-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}
.jf-table-toolbar strong{display:block;font-size:13px;margin-top:3px}
.jf-table-search{width:min(360px,100%);border:1px solid var(--jf-border);border-radius:11px;padding:10px 12px;font-size:13px;outline:none;background:#fff}
.jf-table-search:focus{border-color:#86a8c5;box-shadow:0 0 0 3px rgba(134,168,197,.15)}
.jf-reference-table-wrap{max-height:650px;overflow:auto;border:1px solid var(--jf-border);border-radius:13px}
.jf-reference-table{margin:0;border:0}
.jf-reference-table thead th{position:sticky;top:0;background:#f7f9fb;z-index:2}
.jf-reference-table tr.is-filtered-out{display:none}
@media(max-width:650px){.jf-table-toolbar{align-items:stretch;flex-direction:column}.jf-table-search{width:100%}}

.jf-review-heading-actions{display:flex;align-items:flex-end;flex-direction:column;gap:6px}


/* v0.4 month control + customer groups */
.jf-month-close-box{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:20px;padding:16px;border:1px solid #f0d7d4;background:#fff9f8;border-radius:14px}
.jf-month-close-box strong{display:block;font-size:13px;color:#7b2f29}
.jf-month-close-box small{display:block;margin-top:4px;color:#8b6a67;line-height:1.4}
.jf-button-danger-soft{background:#fff;color:#a33a31;border:1px solid #e7b9b5;white-space:nowrap}
.jf-inline-warning{margin:-6px 0 14px;padding:9px 11px;border-radius:10px;background:#fff7e8;color:#925d08;font-size:12px}
.jf-closed-months{margin-top:18px}
.jf-closed-month-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--jf-border)}
.jf-closed-month-row:last-child{border-bottom:0}
.jf-closed-month-row strong{display:block;font-size:13px}
.jf-closed-month-row small{display:block;color:var(--jf-muted);font-size:11px;margin-top:3px}
@media(max-width:650px){.jf-month-close-box{align-items:flex-start;flex-direction:column}}

.jf-cell-note{display:block;margin-top:3px;color:var(--jf-muted);font-size:10px;line-height:1.3}


/* v0.7 budget */
.jf-budget-current-card{margin-bottom:20px}
.jf-budget-current-controls{margin-top:18px}
.jf-budget-reminder{margin-bottom:20px}


/* v0.8.0 - PDF-first annual budget workflow */
.jf-budget-pdf-card{margin-bottom:20px}
.jf-budget-pdf-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;margin-top:16px}
.jf-budget-pdf-dropzone{margin:0;min-height:82px}
.jf-file-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:12px;background:#eef3ff;color:#173b7a;font-size:12px;font-weight:800;letter-spacing:.05em;flex:0 0 auto}
.jf-file-copy{display:flex;flex-direction:column;gap:4px;min-width:0}
.jf-file-copy strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jf-file-copy small{color:var(--jf-muted)}
.jf-budget-pdf-status{margin-top:12px;padding:11px 13px;border-radius:10px;background:#f6f8fb;color:var(--jf-muted);font-size:13px}
.jf-budget-pdf-status.is-working{background:#eef3ff;color:#173b7a}
.jf-budget-pdf-status.is-success{background:#edf8f2;color:#14633f}
.jf-budget-pdf-status.is-warning{background:#fff7e8;color:#8a5a00}
.jf-budget-pdf-status.is-error{background:#fff0f0;color:#a22a2a}
.jf-budget-entry-card{margin-bottom:20px}
.jf-budget-year-box{width:170px}
.jf-budget-section{border:1px solid var(--jf-border);border-radius:12px;margin-top:14px;background:#fff;overflow:hidden}
.jf-budget-section summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;background:#f8fafc;font-weight:750;color:#14233c;list-style:none}
.jf-budget-section summary::-webkit-details-marker{display:none}
.jf-budget-section summary small{color:var(--jf-muted);font-weight:600}
.jf-budget-head-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--jf-border)}
.jf-budget-head{display:flex;justify-content:space-between;gap:16px;align-items:center;background:#fff;padding:12px 14px;min-width:0}
.jf-budget-head-name{font-size:13px;font-weight:650;line-height:1.3;color:#22334d}
.jf-budget-amount-wrap{display:flex;align-items:center;gap:7px;flex:0 0 auto;color:var(--jf-muted);font-size:11px;font-weight:700}
.jf-budget-amount{width:124px;border:1px solid var(--jf-border);border-radius:8px;padding:9px 10px;text-align:right;font:inherit;font-variant-numeric:tabular-nums;background:#fff;color:#17243a;outline:none}
.jf-budget-amount:focus{border-color:#6d8fd0;box-shadow:0 0 0 3px rgba(72,111,184,.12)}
.jf-budget-amount.is-pdf-extracted{background:#f0faf5;border-color:#9cd1b8}
.jf-budget-form-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:18px;padding-top:18px;border-top:1px solid var(--jf-border)}
.jf-budget-form-footer p{margin:5px 0 0}
.jf-budget-advanced{margin-bottom:20px;padding:0;overflow:hidden}
.jf-budget-advanced>summary{display:flex;justify-content:space-between;align-items:center;cursor:pointer;padding:16px 18px;list-style:none}
.jf-budget-advanced>summary::-webkit-details-marker{display:none}
.jf-budget-advanced>summary small{color:var(--jf-muted)}
.jf-budget-advanced-body{padding:0 18px 18px;border-top:1px solid var(--jf-border)}
.jf-budget-rules-card{margin-bottom:20px}
.jf-budget-source-summary{margin-top:18px}
.jf-budget-warning-card{margin-top:18px;border-color:#eed39d;background:#fffaf0}
.jf-budget-warning-line{margin:10px 0;padding:10px 12px;border-radius:9px;background:#fff3d9;color:#744d00;font-weight:650}
@media (max-width:900px){.jf-budget-head-grid{grid-template-columns:1fr}.jf-budget-pdf-row{grid-template-columns:1fr}.jf-budget-pdf-row .jf-button{width:100%}.jf-budget-form-footer{align-items:stretch;flex-direction:column}.jf-budget-form-footer .jf-button{width:100%}.jf-budget-year-box{width:100%}}
@media (max-width:540px){.jf-budget-head{align-items:flex-start;flex-direction:column}.jf-budget-amount-wrap{width:100%}.jf-budget-amount{width:100%}}


/* v0.8.1 - calculated CR / Markaz share */
.jf-budget-section-note{
  display:inline-block;
  margin-left:8px;
  color:#64748b;
  font-size:11px;
  font-style:normal;
  font-weight:600;
}
.jf-budget-head-control{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:4px;
  flex:0 0 auto;
}
.jf-budget-amount.is-cr-calculated{
  background:#f4f7fb;
  border-color:#b8c7dc;
}
.jf-budget-calc-note{
  min-height:14px;
  max-width:180px;
  text-align:right;
  font-size:10px;
  line-height:1.25;
  font-weight:700;
}
.jf-budget-calc-note:empty{
  display:none;
}
.jf-budget-calc-note.is-discrepancy{
  display:block;
  color:#c62828;
}
@media (max-width:540px){
  .jf-budget-head-control{width:100%;align-items:stretch}
  .jf-budget-calc-note{max-width:none;text-align:left}
}


/* v0.8.2 - simplified Budget workflow */
.jf-budget-workflow-anchor{scroll-margin-top:18px}
.jf-budget-pdf-card .jf-card-head{margin-bottom:16px}
.jf-budget-pdf-row-simple{align-items:center;justify-content:flex-start;gap:12px}
.jf-budget-file-button{position:relative;cursor:pointer}
.jf-budget-file-button .jf-file-input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.jf-budget-head-actions{display:flex;align-items:flex-start;gap:16px}
.jf-budget-inline-summary{margin:4px 0 18px}
.jf-budget-inline-warning,.jf-budget-inline-issues{margin:0 0 18px;padding:13px 15px;border-radius:12px;font-size:12px;line-height:1.5}
.jf-budget-inline-warning{background:#fff8e8;border:1px solid #f0d28a;color:#795400}
.jf-budget-inline-warning p,.jf-budget-inline-issues p{margin:4px 0}
.jf-budget-inline-issues{background:#fff1f1;border:1px solid #efb6b6;color:#a51f1f}
.jf-budget-entry-card.is-reviewed .jf-budget-head.is-zero-review{display:none}
.jf-budget-entry-card.is-reviewed .jf-budget-amount{background:#f5f7fa;border-color:#d8e0ea;color:#102a4c;cursor:default}
.jf-budget-account-badge{display:inline-flex;min-width:38px;margin-right:7px;padding:2px 6px;align-items:center;justify-content:center;border-radius:6px;background:#eaf1f9;color:#315477;font-size:10px;font-weight:800}
.jf-budget-form-footer-simple{align-items:center}
.jf-budget-primary-actions{display:flex;gap:12px;flex-wrap:wrap}
.jf-budget-primary-actions .jf-button{min-width:190px;justify-content:center}
.jf-button.is-disabled,a.jf-button.is-disabled{opacity:.48;pointer-events:none;cursor:not-allowed}
@media (max-width:700px){
  .jf-budget-head-actions{width:100%;flex-direction:column}
  .jf-budget-primary-actions{width:100%}
  .jf-budget-primary-actions .jf-button{flex:1 1 100%}
}


/* v1.0.1 - configurable interface branding */
.jf-ui-settings-card{margin-bottom:20px}
.jf-ui-settings-card .jf-card-head{margin-bottom:18px}
.jf-ui-settings-card .jf-card-head p{margin:5px 0 0;color:var(--jf-muted);font-size:13px}
.jf-ui-settings-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.jf-ui-settings-group{margin:0;padding:18px;border:1px solid var(--jf-border);border-radius:14px;background:#fbfcfe}
.jf-ui-settings-group legend{padding:0 8px;font-size:13px;font-weight:800;color:var(--jf-text)}
.jf-ui-settings-group .jf-field:last-child{margin-bottom:0}
.jf-ui-settings-actions{display:flex;justify-content:flex-end;margin-top:18px}
@media (max-width:900px){.jf-ui-settings-grid{grid-template-columns:1fr}}

/* v1.1.0 - e-conomic API connection */
.jf-integration-card{display:flex;flex-direction:column}
.jf-integration-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.jf-integration-title-row h2{margin-bottom:0}
.jf-economic-form{margin-top:16px;padding-top:16px;border-top:1px solid var(--jf-border)}
.jf-field-help{margin:-5px 0 14px;color:var(--jf-muted);font-size:11px;line-height:1.5}
.jf-integration-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:18px}
.jf-button-secondary{background:#eef3f8;color:#173f6b;border:1px solid #d8e2ec;cursor:pointer}
.jf-danger-link{color:#a33a31}
@media (max-width:540px){.jf-integration-title-row{align-items:flex-start;flex-direction:column}.jf-integration-actions{align-items:stretch;flex-direction:column}.jf-integration-actions .jf-button{width:100%}}

/* v1.1.2 - public legal/support URLs */
.jf-public-urls-card{grid-column:1/-1}
.jf-public-url-list{margin-top:12px}
.jf-public-url-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-top:1px solid var(--jf-border)}
.jf-public-url-row:first-child{border-top:0}
.jf-public-url-row>div{min-width:0}
.jf-public-url-row strong{display:block;font-size:13px;color:var(--jf-text)}
.jf-public-url-row small{display:block;margin-top:4px;color:var(--jf-muted);font-size:12px;overflow-wrap:anywhere}
@media (max-width:700px){.jf-public-url-row{align-items:flex-start;flex-direction:column}}

/* v1.1.3 - public legal/support navigation */


/* v1.1.6 - standalone public legal/support pages */
.jf-public-body{margin:0!important;background:#fff;color:#0f2540;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-height:100vh;display:flex;flex-direction:column}
.jf-public-header{min-height:82px;display:grid;grid-template-columns:minmax(220px,1fr) auto 44px;align-items:center;gap:22px;padding:0 clamp(20px,5vw,72px);border-top:16px solid #202b31;border-bottom:1px solid #e5e9ef;background:#fff;box-sizing:border-box}
.jf-public-brand{display:flex;flex-direction:column;text-decoration:none;color:#102a43;line-height:1.1}.jf-public-brand strong{font-size:17px;font-weight:850}.jf-public-brand span{margin-top:4px;font-size:12px;color:#62758a;font-weight:650}
.jf-public-nav{display:flex;align-items:center;gap:8px}.jf-public-nav a{display:inline-flex;align-items:center;justify-content:center;min-width:44px;height:36px;padding:0 10px;border-radius:9px;color:#173f6b;text-decoration:none;font-size:12px;font-weight:850}.jf-public-nav a:hover{background:#eef4f8}
.jf-public-login{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:#173f6b;text-decoration:none;border:1px solid #dfe6ed;background:#fff}.jf-public-login:hover{background:#eef4f8}.jf-public-login svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.jf-public-main{flex:1}.jf-public-hero{background:#f1f3fb;padding:28px clamp(20px,8.5vw,172px)}.jf-public-hero h1{margin:0;font-size:clamp(28px,3vw,40px);line-height:1.15;color:#071d36;letter-spacing:-.02em}
.jf-public-content{width:min(100% - 40px,1020px);margin:0 auto;padding:34px 0 56px;font-size:17px;line-height:1.7;color:#132d49}.jf-public-content h2{font-size:22px;line-height:1.25;margin:30px 0 10px;color:#071d36}.jf-public-content p{margin:0 0 16px}.jf-public-content ul{margin:0 0 18px;padding-left:22px}.jf-public-content a{color:#1f5f93}
.jf-public-footer{display:flex;justify-content:space-between;gap:20px;padding:18px clamp(20px,5vw,72px);border-top:1px solid #e5e9ef;color:#7b8997;font-size:12px}
@media(max-width:760px){.jf-public-header{grid-template-columns:1fr 40px;gap:10px;padding:14px 16px;border-top-width:10px}.jf-public-brand{grid-column:1}.jf-public-login{grid-column:2;grid-row:1}.jf-public-nav{grid-column:1/-1;justify-content:flex-start;overflow:auto;padding-bottom:2px}.jf-public-hero{padding:24px 20px}.jf-public-content{width:min(100% - 32px,1020px);padding-top:26px}.jf-public-footer{padding:16px;flex-direction:column;gap:4px}}

/* v1.1.7 - unified public/auth UI, contact menu, account dropdown */
.jf-support-menu{margin-top:14px;border-top:1px solid rgba(255,255,255,.1);padding-top:12px;color:#bfd0df}
.jf-support-menu>summary{display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:12px;cursor:pointer;list-style:none;font-weight:650;font-size:14px;transition:.18s ease}
.jf-support-menu>summary::-webkit-details-marker{display:none}
.jf-support-menu>summary:hover{background:rgba(255,255,255,.07);color:#fff}
.jf-support-menu .jf-nav-icon{flex:0 0 21px}
.jf-support-chevron{margin-left:auto;font-size:14px;transition:transform .18s ease}
.jf-support-menu[open] .jf-support-chevron{transform:rotate(180deg)}
.jf-support-links{display:flex;flex-direction:column;gap:3px;padding:5px 0 2px 32px}
.jf-support-links a{display:block;padding:8px 10px;border-radius:9px;color:#afc2d4;text-decoration:none;font-size:12px;line-height:1.25}
.jf-support-links a:hover{background:rgba(255,255,255,.07);color:#fff}

.jf-account-menu{position:relative;z-index:80}
.jf-account-menu>summary{list-style:none}
.jf-account-menu>summary::-webkit-details-marker{display:none}
.jf-account-trigger{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:#dce8f3;color:#173f6b;border:1px solid #cad8e5;font-size:14px;font-weight:850;cursor:pointer;user-select:none;box-shadow:0 3px 10px rgba(16,42,67,.05)}
.jf-account-trigger:hover{background:#cfdfec}
.jf-account-dropdown{position:absolute;right:0;top:48px;width:190px;padding:8px;background:#fff;border:1px solid var(--jf-border);border-radius:12px;box-shadow:0 16px 36px rgba(16,42,67,.14)}
.jf-account-dropdown strong{display:block;padding:8px 10px 9px;border-bottom:1px solid var(--jf-border);font-size:12px;color:var(--jf-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jf-account-dropdown a{display:block;margin-top:5px;padding:9px 10px;border-radius:8px;color:#9c2e27;text-decoration:none;font-size:13px;font-weight:750}
.jf-account-dropdown a:hover{background:#fff1f0}

/* Finance top bar intentionally contains account controls only. */
.jf-topbar-right{margin-left:auto;display:flex;align-items:center;gap:10px}

/* Public information and authentication pages */
.jf-public-body{margin:0!important;background:var(--jf-bg);color:var(--jf-text);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;min-height:100vh;display:flex;flex-direction:column}
.jf-public-header{min-height:76px;display:grid;grid-template-columns:minmax(230px,1fr) auto 44px;align-items:center;gap:24px;padding:0 clamp(20px,4vw,56px);border-bottom:1px solid var(--jf-border);background:rgba(255,255,255,.97);box-shadow:0 5px 20px rgba(16,42,67,.035);box-sizing:border-box;position:relative;z-index:40}
.jf-public-brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--jf-navy);min-width:0}
.jf-public-brand-mark{width:38px;height:38px;border-radius:12px;background:linear-gradient(145deg,#3b8d68,#2c6f53);display:grid;place-items:center;color:#fff;font-weight:850;letter-spacing:.4px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.15);flex:0 0 38px}
.jf-public-brand-copy{min-width:0;line-height:1.1}.jf-public-brand-copy strong{display:block;font-size:14px;font-weight:850;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.jf-public-brand-copy small{display:block;margin-top:4px;font-size:11px;color:#718096;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jf-public-nav{display:flex;align-items:center;justify-content:center;gap:4px}.jf-public-nav a{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:0 10px;border-radius:9px;color:#38536e;text-decoration:none;font-size:12px;font-weight:700;white-space:nowrap;transition:.16s ease}.jf-public-nav a:hover{background:#eef4f8;color:#102a43}
.jf-public-account{display:flex;align-items:center;justify-content:flex-end}
.jf-public-main{flex:1;width:100%}
.jf-public-hero{background:linear-gradient(145deg,#102a43,#173f6b);padding:42px clamp(20px,6vw,88px);color:#fff}
.jf-public-hero-inner{width:min(100%,1100px);margin:0 auto}.jf-public-hero .jf-eyebrow{color:#b7cce0}.jf-public-hero h1{margin:7px 0 0;font-size:clamp(30px,3.4vw,44px);line-height:1.08;color:#fff;letter-spacing:-.03em}
.jf-public-content-wrap{width:min(100% - 40px,1100px);margin:0 auto;padding:30px 0 54px}
.jf-public-content{background:#fff;border:1px solid var(--jf-border);border-radius:18px;box-shadow:var(--jf-shadow);padding:clamp(24px,4vw,42px);font-size:15px;line-height:1.72;color:#263c53}
.jf-public-content h2{font-size:20px;line-height:1.25;margin:30px 0 10px;color:#102a43}.jf-public-content h2:first-child{margin-top:0}.jf-public-content p{margin:0 0 16px}.jf-public-content ul{margin:0 0 18px;padding-left:22px}.jf-public-content a{color:#1f5f93;font-weight:650}.jf-public-content li+li{margin-top:5px}
.jf-public-footer{display:flex;justify-content:space-between;gap:20px;padding:18px clamp(20px,4vw,56px);border-top:1px solid var(--jf-border);background:#fff;color:#7b8997;font-size:12px}

.jf-auth-main{flex:1;display:flex;align-items:center;justify-content:center;padding:42px 20px 56px;background:radial-gradient(circle at top,#edf3f8 0,#f5f7fa 42%,#f5f7fa 100%)}
.jf-auth-shell{width:min(100%,560px)}
.jf-auth-shell .jfa-login-wrap,.jf-auth-shell .jfa-setup-wrap{min-height:auto!important;padding:0!important;background:transparent!important}
.jf-auth-shell .jfa-login-card,.jf-auth-shell .jfa-setup-card{width:100%!important;border:1px solid var(--jf-border)!important;border-radius:18px!important;box-shadow:0 18px 48px rgba(16,42,67,.10)!important;color:var(--jf-text)!important}
.jf-auth-shell .jfa-login-card h1,.jf-auth-shell .jfa-login-card h2,.jf-auth-shell .jfa-setup-card h1{color:var(--jf-navy)!important}
.jf-auth-shell .jfa-button{background:#1f527f!important;border-radius:10px!important;box-shadow:0 7px 18px rgba(31,82,127,.16)!important}

@media(max-width:1080px){
  .jf-public-header{grid-template-columns:minmax(200px,1fr) 44px;gap:12px;padding:13px 22px}
  .jf-public-nav{grid-column:1/-1;grid-row:2;justify-content:flex-start;overflow-x:auto;padding-bottom:2px}
  .jf-public-account{grid-column:2;grid-row:1}
}
@media(max-width:760px){
  .jf-public-header{padding:12px 16px}
  .jf-public-nav{gap:2px}
  .jf-public-nav a{font-size:11px;padding:0 8px}
  .jf-public-hero{padding:30px 20px}
  .jf-public-content-wrap{width:min(100% - 28px,1100px);padding:20px 0 36px}
  .jf-public-content{padding:22px}
  .jf-public-footer{padding:16px;flex-direction:column;gap:4px}
  .jf-account-dropdown{right:-2px}
}
