/* ===== SETTINGS MODAL ===== */
.settings-modal{
  background:var(--modal-bg);
  backdrop-filter:blur(40px);
  border:1px solid var(--border-s);
  border-radius:var(--r4);
  max-width:760px;width:100%;
  max-height:90vh;overflow-y:auto;
  box-shadow:var(--sh4);
  animation:slideUp .35s cubic-bezier(.34,1.4,.64,1);
  display:flex;flex-direction:column;
}
.settings-modal-header{
  background:var(--surface);
  border-bottom:1px solid var(--border);
  padding:20px 26px;
  border-radius:var(--r4) var(--r4) 0 0;
  display:flex;justify-content:space-between;align-items:center;
}
.settings-modal-title-group{display:flex;align-items:center;gap:12px}
.settings-modal-title{font-size:1.05rem;font-weight:800;color:var(--t1)}
.settings-modal-close-btn{
  background:var(--over-h);border:1px solid var(--border);color:var(--t2);
  width:32px;height:32px;border-radius:50%;font-size:16px;
  cursor:pointer;transition:var(--transition);
  display:flex;align-items:center;justify-content:center;
}
.settings-modal-close-btn:hover{background:var(--border);color:var(--t1);transform:rotate(90deg)}
.settings-modal-body{padding:24px 26px;overflow-y:auto;flex:1;min-height:0}
.settings-section{margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid var(--border)}
.settings-section:last-child{border-bottom:none;margin-bottom:0}
.settings-section-title{font-size:13px;font-weight:800;color:var(--t1);margin-bottom:6px}
.settings-section-description{font-size:11.5px;color:var(--t3);margin-bottom:14px}
.settings-option{
  display:flex;justify-content:space-between;align-items:center;
  padding:12px 14px;background:var(--surface);
  border:1px solid var(--border);border-radius:var(--r2);margin-bottom:8px;
}
.settings-option-label{font-weight:700;color:var(--t1);font-size:13px}
.settings-option-description{font-size:11px;color:var(--t3);margin-top:2px}
.toggle-switch{position:relative;display:inline-block;width:50px;height:26px}
.toggle-switch input{opacity:0;width:0;height:0}
.toggle-slider{
  position:absolute;cursor:pointer;inset:0;
  background:var(--over-h);border:1.5px solid var(--border);
  transition:.3s;border-radius:26px;
}
.toggle-slider:before{
  position:absolute;content:'';height:18px;width:18px;
  left:3px;bottom:3px;background:var(--t3);transition:.3s;border-radius:50%;
}
input:checked+.toggle-slider{background:var(--gold);border-color:var(--gold)}
input:checked+.toggle-slider:before{transform:translateX(24px);background:#fff}
.language-select{
  width:180px;padding:8px 12px;
  background:var(--input-bg);border:1.5px solid var(--border);
  border-radius:var(--r1);color:var(--t1);
  font-size:13px;font-family:var(--f);cursor:pointer;outline:none;
}
.language-select:focus{border-color:var(--gold)}
.language-select option{background:var(--card);color:var(--t1)}
.reorder-list{list-style:none;padding:0}
.reorder-item{
  display:flex;align-items:center;
  padding:10px 12px;background:var(--surface);
  border:1px solid var(--border);border-radius:var(--r1);
  margin-bottom:6px;cursor:grab;user-select:none;transition:var(--transition);
  /* Tell mobile browsers that touch on these rows is not a scroll gesture —
     our JS touchmove handler reorders the list and calls preventDefault().
     Without this, iOS/Android may decide a finger drag should pan the page
     and ignore preventDefault, blocking the reorder. */
  touch-action:none;
}
.reorder-item:active,.reorder-item.dragging{cursor:grabbing;background:var(--surface-alt);box-shadow:var(--sh2)}
.reorder-item.dragging{opacity:.5}
.drag-handle{font-size:18px;margin-right:10px;color:var(--t3)}
.reorder-item-label{font-weight:700;color:var(--t1);flex:1;font-size:13px}
.reorder-hide-btn{
  background:transparent;border:1px solid var(--border);color:var(--t3);
  width:32px;height:28px;border-radius:var(--r1);cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:var(--transition);margin-left:8px;font-size:12px;
}
.reorder-hide-btn:hover{border-color:var(--gold);color:var(--gold);background:var(--surface-alt)}
.reorder-item-hidden{opacity:.5}
.reorder-item-hidden .reorder-item-label{text-decoration:line-through;color:var(--t3)}
.reorder-item-hidden .reorder-hide-btn{color:var(--gold);border-color:var(--gold)}
.settings-footer{
  padding:16px 26px;background:var(--surface);
  border-top:1px solid var(--border);
  border-radius:0 0 var(--r4) var(--r4);
  display:flex;justify-content:flex-end;gap:10px;
}
.settings-btn{
  padding:9px 20px;border:none;border-radius:var(--r1);
  font-size:12.5px;font-weight:800;font-family:var(--f);
  cursor:pointer;transition:var(--transition);letter-spacing:.3px;
}
.settings-btn-primary{background:var(--gold);color:#fff}
body.dark-mode .settings-btn-primary{color:#0b1a2a}
.settings-btn-primary:hover{background:var(--gold-l)}
.settings-btn-secondary{background:var(--over-h);color:var(--t2);border:1px solid var(--border)}
.settings-btn-secondary:hover{background:var(--border);color:var(--t1)}
.settings-btn-danger{background:var(--red-d);color:var(--red);border:1px solid var(--red)}
.settings-btn-danger:hover{background:rgba(196,43,34,.2)}
@media(max-width:768px){
  .settings-modal-body{padding:18px}
  .settings-option{flex-direction:column;align-items:flex-start;gap:10px}
  .language-select{width:100%}
  .settings-footer{flex-direction:column}
  .settings-btn{width:100%}
}

/* ===== MODAL OVERLAYS ===== */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.55);backdrop-filter:blur(10px);z-index:10000}
.modal-overlay.show{display:flex;align-items:center;justify-content:center;padding:20px}
@keyframes slideUp{from{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}

.alert-modal{
  background:var(--modal-bg);backdrop-filter:blur(30px);
  border:1px solid var(--border-s);
  border-radius:var(--r4);max-width:480px;width:100%;
  box-shadow:var(--sh4);animation:slideUp .3s ease;overflow:hidden;
}
.alert-modal-header{
  background:var(--red-d);border-bottom:1px solid var(--red);
  padding:20px 24px;display:flex;align-items:center;gap:12px;
}
.alert-modal-title{font-size:1.05rem;font-weight:800;color:var(--t1)}
.alert-modal-body{padding:24px}
.alert-modal-message{font-size:14px;line-height:1.6;color:var(--t2);margin-bottom:20px}
.alert-modal-footer{display:flex;gap:10px;flex-wrap:wrap}
.alert-btn{flex:1;min-width:120px;padding:12px 18px;border:none;border-radius:var(--r2);font-size:13px;font-weight:800;font-family:var(--f);cursor:pointer;transition:var(--transition)}
.alert-btn-primary{background:var(--gold);color:#fff}
body.dark-mode .alert-btn-primary{color:#0b1a2a}
.alert-btn-primary:hover{background:var(--gold-l)}
.alert-btn-dismiss{background:var(--over-h);color:var(--t2);border:1px solid var(--border)}
.alert-btn-dismiss:hover{background:var(--border);color:var(--t1)}

/* ===== CONFIRM MODAL ===== */
.cmodal-overlay{
  position:fixed;inset:0;
  background:rgba(0,0,0,0);backdrop-filter:blur(0px);
  z-index:25000;display:flex;align-items:center;justify-content:center;
  padding:20px;transition:background .25s,backdrop-filter .25s;pointer-events:none;
}
.cmodal-overlay.show{background:rgba(0,0,0,.55);backdrop-filter:blur(10px);pointer-events:all}
.cmodal{
  background:var(--modal-bg);backdrop-filter:blur(30px);
  border:1px solid var(--border-s);
  border-radius:var(--r4);max-width:380px;width:100%;
  box-shadow:var(--sh4);
  transform:translateY(40px) scale(.93);opacity:0;
  transition:transform .4s cubic-bezier(.34,1.4,.64,1),opacity .25s;
  overflow:hidden;
  display:flex;flex-direction:column;max-height:calc(100vh - 40px);
}
.cmodal.cmodal-wide{max-width:880px;}
.cmodal.cmodal-wide .cmodal-msg{margin:8px 24px 0;padding:0 6px 4px 0;}
.cmodal-overlay.show .cmodal{transform:translateY(0) scale(1);opacity:1}
.cmodal-top{padding:30px 24px 0;text-align:center;flex-shrink:0}
.cmodal-icon{font-size:48px;display:block;animation:iconPop .45s cubic-bezier(.34,1.56,.64,1) .1s both;line-height:1}
@keyframes iconPop{from{transform:scale(0) rotate(-20deg)}to{transform:scale(1) rotate(0)}}
.cmodal-title{font-family:var(--fs);font-size:1.3rem;font-weight:600;color:var(--t1);margin:14px 0 0}
.cmodal-msg{color:var(--t2);font-size:13px;line-height:1.6;margin:8px 24px 0;padding-bottom:4px;min-height:0;overflow-y:auto;flex:1 1 auto}
.cmodal-actions{display:flex;gap:10px;padding:20px;flex-shrink:0}
.mbtn{flex:1;padding:12px 16px;border:none;border-radius:var(--r2);font-size:13px;font-weight:800;font-family:var(--f);cursor:pointer;transition:var(--transition);letter-spacing:.3px}
.mbtn-cancel{background:var(--over-h);color:var(--t2);border:1.5px solid var(--border)}
.mbtn-cancel:hover{background:var(--border);color:var(--t1)}
.mbtn-primary{background:var(--gold);color:#fff;box-shadow:0 4px 14px var(--gold-glow)}
body.dark-mode .mbtn-primary{color:#0b1a2a}
.mbtn-primary:hover{background:var(--gold-l);transform:translateY(-1px)}
.mbtn-danger{background:var(--red);color:#fff;box-shadow:0 4px 14px var(--red-d)}
.mbtn-danger:hover{transform:translateY(-1px)}
.mbtn-info{background:var(--blue);color:#fff;box-shadow:0 4px 14px var(--blue-d)}
.mbtn-info:hover{transform:translateY(-1px)}

/* ===== FORM MODAL ===== */
.fmodal-overlay{
  position:fixed;inset:0;
  background:rgba(0,0,0,0);backdrop-filter:blur(0px);
  z-index:25000;display:flex;align-items:center;justify-content:center;
  padding:20px;transition:background .25s,backdrop-filter .25s;pointer-events:none;
}
.fmodal-overlay.show{background:rgba(0,0,0,.55);backdrop-filter:blur(10px);pointer-events:all}
.fmodal{
  background:var(--modal-bg);backdrop-filter:blur(30px);
  border:1px solid var(--border-s);
  border-radius:var(--r4);max-width:500px;width:100%;
  box-shadow:var(--sh4);
  transform:translateY(40px) scale(.93);opacity:0;
  transition:transform .4s cubic-bezier(.34,1.4,.64,1),opacity .25s;
  max-height:90vh;display:flex;flex-direction:column;overflow:hidden;
}
.fmodal.fmodal-wide{max-width:920px}
.fmodal-overlay.show .fmodal{transform:translateY(0) scale(1);opacity:1}
.fmodal-head{
  background:var(--surface);border-bottom:1px solid var(--border);
  padding:20px 22px;display:flex;align-items:center;gap:12px;
}
.fmodal-head-icon{font-size:24px}
.fmodal-head-title{font-family:var(--fs);font-size:1.1rem;font-weight:600;color:var(--t1);flex:1}
.fmodal-close{
  background:var(--over-h);border:1px solid var(--border);color:var(--t2);
  width:28px;height:28px;border-radius:50%;font-size:16px;
  cursor:pointer;transition:var(--transition);
  display:flex;align-items:center;justify-content:center;
}
.fmodal-close:hover{background:var(--border);color:var(--t1);transform:rotate(90deg)}
.fmodal-body{padding:22px;overflow-y:auto;flex:1;min-height:0}
.fmodal-group{margin-bottom:16px}
.fmodal-group:last-child{margin-bottom:0}
.fmodal-label{display:block;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.9px;color:var(--t3);margin-bottom:7px}
.fmodal-req{color:var(--red);margin-left:2px}
.fmodal-input{
  width:100%;padding:11px 14px;
  background:var(--input-bg);border:1.5px solid var(--border);
  border-radius:var(--r2);font-size:13px;font-family:var(--f);
  color:var(--t1);transition:var(--transition);outline:none;
}
.fmodal-input:focus{border-color:var(--gold);background:var(--input-focus);box-shadow:0 0 0 3px var(--gold-d)}
.fmodal-input.error{border-color:var(--red);animation:shake .3s ease}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
.fmodal-hint{font-size:11px;color:var(--t3);margin-top:5px;display:flex;align-items:center;gap:4px}
.fmodal-error{background:var(--red-d,rgba(196,43,34,.1));color:var(--red,#C42B22);border:1px solid var(--red,#C42B22);padding:10px 12px;border-radius:var(--r1);margin-bottom:14px;font-size:13px;line-height:1.4;animation:shake .3s ease}
.fmodal-foot{
  padding:14px 22px;background:var(--surface);
  border-top:1px solid var(--border);
  display:flex;justify-content:flex-end;gap:10px;flex-shrink:0;
}
.fmodal-input option{background:var(--card);color:var(--t1)}

/* ===== TOAST ===== */
#toastContainer{position:fixed;bottom:24px;right:24px;display:flex;flex-direction:column;gap:8px;z-index:30000;pointer-events:none;max-width:340px}
.toast{
  background:var(--modal-bg);
  border:1px solid var(--border-s);
  backdrop-filter:blur(20px);
  color:var(--t1);padding:13px 14px 16px;
  border-radius:var(--r3);box-shadow:var(--sh3);
  display:flex;align-items:center;gap:10px;pointer-events:all;
  transform:translateX(calc(100% + 40px));opacity:0;
  transition:transform .45s cubic-bezier(.34,1.4,.64,1),opacity .3s;
  position:relative;overflow:hidden;
}
.toast.show{transform:translateX(0);opacity:1}
.toast.hide{transform:translateX(calc(100% + 40px));opacity:0;transition:transform .3s,opacity .3s}
.toast.success{border-color:var(--green)}
.toast.error{border-color:var(--red)}
.toast.warning{border-color:var(--amber)}
.toast.info{border-color:var(--blue)}
.toast-icon{font-size:18px;flex-shrink:0}
.toast-text{flex:1;font-size:13px;font-weight:600;line-height:1.45}
.toast-close{
  background:var(--over-h);border:none;color:var(--t2);
  cursor:pointer;font-size:14px;width:20px;height:20px;
  border-radius:50%;display:flex;align-items:center;justify-content:center;
  flex-shrink:0;transition:background .2s;
}
.toast-close:hover{background:var(--border)}
.toast-bar{position:absolute;bottom:0;left:0;height:2px;border-radius:0 1px 1px 0;animation:toastBar var(--toast-dur,3.5s) linear forwards}
.toast.success .toast-bar{background:var(--green)}
.toast.error .toast-bar{background:var(--red)}
.toast.warning .toast-bar{background:var(--amber)}
.toast.info .toast-bar{background:var(--blue)}
.toast:not(.success):not(.error):not(.warning):not(.info) .toast-bar{background:var(--gold)}
@keyframes toastBar{from{width:100%}to{width:0%}}

/* ===== MISC ===== */
.loading{text-align:center;padding:40px;color:var(--t3);font-size:13px}
.form-group select,.fmodal-input[type=date],.fmodal-input[type=number]{appearance:auto}
.fmodal-input[type=file]{appearance:auto;cursor:pointer;padding:6px 8px;}
.fmodal-input[type=file]::file-selector-button{padding:6px 14px;background:var(--gold);color:var(--navy);border:none;border-radius:var(--r1);cursor:pointer;font-size:12px;font-weight:700;margin-right:10px;transition:var(--transition);}
.fmodal-input[type=file]::file-selector-button:hover{opacity:.85;}
/* ===== ALERT RECIPIENT LIST ===== */
.alert-recipient-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--r1);cursor:pointer;transition:var(--transition);border:1px solid transparent;}
.alert-recipient-item:hover{background:var(--over-h);border-color:var(--border);}
.alert-recipient-item input[type="checkbox"]{width:16px;height:16px;cursor:pointer;accent-color:var(--gold);flex-shrink:0;}
.alert-recipient-info{display:flex;align-items:center;gap:8px;flex:1;}
.alert-recipient-name{font-weight:600;font-size:13px;color:var(--t1);}
.alert-recipient-role{font-size:11px;padding:2px 8px;}
.alert-recipients-group{margin-bottom:8px;}
.alert-recipients-group-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--t3);padding:6px 12px 2px;margin-top:4px;}
/* ===== NUMBER TYPOGRAPHY ===== */
.stat-value, .rent-amount, #netAmount, .transaction-amount {
  font-family: var(--fd);
  font-weight: 500;
  font-variant-numeric: tabular-nums;
}
