/* Shoya Finance — Wow enhancements */

/* Skeleton loading */
.skel-overlay{
  position:fixed;inset:0;z-index:3000;
  background:color-mix(in srgb,var(--bg) 88%,transparent);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  display:flex;align-items:center;justify-content:center;
  transition:opacity .35s ease;
}
.skel-overlay.hide{opacity:0;pointer-events:none}
.skel-box{width:min(420px,90vw);padding:28px;border-radius:20px;background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow-3d)}
.skel-line{height:12px;border-radius:8px;background:linear-gradient(90deg,var(--bg-elev),var(--border),var(--bg-elev));background-size:200% 100%;animation:skelShine 1.2s ease infinite;margin-bottom:12px}
.skel-line.lg{height:28px;width:70%}
.skel-line.sm{width:45%}
@keyframes skelShine{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* Stagger cards */
.page.active .card,.page.active .balance-hero{
  animation:cardIn .45s cubic-bezier(.34,.9,.32,1) both;
}
.page.active .grid > :nth-child(1){animation-delay:.04s}
.page.active .grid > :nth-child(2){animation-delay:.08s}
.page.active .grid > :nth-child(3){animation-delay:.12s}
.page.active .grid > :nth-child(4){animation-delay:.16s}
@keyframes cardIn{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}

/* Sparkline in hero */
.spark-wrap{margin-top:14px;height:44px;position:relative;z-index:1}
.spark-wrap canvas{width:100%!important;height:44px!important}

/* Notification panel */
.notif-panel{
  position:absolute;top:calc(100% + 10px);right:0;width:min(360px,92vw);
  background:var(--card);border:1px solid var(--border);border-radius:16px;
  box-shadow:var(--shadow-lg);z-index:120;display:none;overflow:hidden;
}
.notif-panel.show{display:block;animation:cardIn .28s ease}
.notif-head{padding:14px 16px;border-bottom:1px solid var(--border);font-weight:800;display:flex;justify-content:space-between;align-items:center}
.notif-list{max-height:340px;overflow-y:auto}
.notif-item{padding:12px 16px;border-bottom:1px solid var(--border-soft);display:flex;gap:12px;cursor:pointer;transition:var(--transition)}
.notif-item:hover{background:var(--bg-elev)}
.notif-item:last-child{border-bottom:none}
.notif-item .ni-ico{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;flex-shrink:0}
.notif-item .ni-title{font-weight:700;font-size:13px;color:var(--text)}
.notif-item .ni-sub{font-size:11.5px;color:var(--muted);margin-top:2px}
.notif-empty{padding:28px 16px;text-align:center;color:var(--muted)}
.header-actions{position:relative}
#notifDot:not(.hidden){display:block}

/* Onboarding */
.ob-overlay{
  position:fixed;inset:0;z-index:4000;background:rgba(0,0,0,.62);
  backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:16px;
}
.ob-card{
  width:min(440px,100%);background:var(--card);border:1px solid var(--border);
  border-radius:22px;padding:28px;box-shadow:var(--shadow-lg);text-align:center;
}
.ob-steps{display:flex;gap:6px;justify-content:center;margin-bottom:18px}
.ob-dot{width:8px;height:8px;border-radius:50%;background:var(--border)}
.ob-dot.active{background:var(--accent);box-shadow:0 0 10px var(--accent-glow);width:22px;border-radius:6px}
.ob-ico{font-size:42px;color:var(--accent);margin-bottom:12px}
.ob-title{font-size:20px;font-weight:800;color:var(--text);margin-bottom:8px}
.ob-sub{font-size:13.5px;color:var(--muted);line-height:1.55;margin-bottom:22px}
.ob-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}

/* Logout / session card */
.session-card .btn-logout{
  width:100%;margin-top:12px;
  background:var(--danger-soft)!important;color:var(--danger)!important;
  -webkit-text-fill-color:var(--danger)!important;
  border:1px solid color-mix(in srgb,var(--danger) 35%,transparent);
  font-weight:700;border-radius:var(--radius-sm);padding:11px 16px;
  display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;
}
.session-card .btn-logout:hover{filter:brightness(1.08)}

/* Month ring */
.balance-hero{padding-right:92px}
.month-ring{
  position:absolute;right:18px;top:18px;width:64px;height:64px;z-index:1;
}
@media(max-width:480px){
  .balance-hero{padding-right:20px}
  .month-ring{right:12px;top:12px;transform:scale(.85);transform-origin:top right}
}
.month-ring svg{transform:rotate(-90deg)}
.month-ring .ring-label{
  position:absolute;inset:0;display:grid;place-items:center;
  font-size:11px;font-weight:800;color:var(--accent);
}

/* Media gallery */
.media-card{overflow:hidden}
.media-thumb{
  width:100%;aspect-ratio:4/3;border-radius:12px;
  background-size:cover;background-position:center;
  background-color:var(--bg-elev);border:1px solid var(--border);
}
.media-thumb.pdf{
  display:grid;place-items:center;font-size:42px;color:var(--danger);
  background:linear-gradient(160deg,var(--danger-soft),var(--bg-elev));
}

/* PWA install chip */
.pwa-install-btn{
  position:fixed;left:16px;bottom:24px;z-index:1390;
  border:1px solid var(--border);background:var(--card);color:var(--text);
  border-radius:999px;padding:10px 16px;font-weight:800;font-size:13px;
  display:flex;align-items:center;gap:8px;cursor:pointer;
  box-shadow:var(--shadow-lg);animation:cardIn .35s ease;
}
.pwa-install-btn.hidden{display:none!important}
.pwa-install-btn i{color:var(--accent)}
.pwa-install-btn:hover{border-color:var(--accent);background:var(--bg-elev)}
@media(max-width:640px){
  .pwa-install-btn{bottom:92px;left:14px}
}

/* Quick FAB */
#quickFab{
  position:fixed;right:20px;bottom:24px;z-index:1400;
  display:flex;flex-direction:column-reverse;align-items:flex-end;gap:10px;
}
.fab-main{
  width:58px;height:58px;border-radius:18px;border:none;cursor:pointer;
  background:linear-gradient(145deg,var(--accent),color-mix(in srgb,var(--accent) 70%,#0a3d32));
  color:#04251e;font-size:26px;box-shadow:0 10px 28px color-mix(in srgb,var(--accent) 45%,transparent);
  display:grid;place-items:center;transition:transform .2s ease,box-shadow .2s;
}
.fab-main:active{transform:scale(.94)}
.fab-menu{
  display:flex;flex-direction:column;gap:8px;align-items:stretch;
  animation:cardIn .25s ease;
}
.fab-menu.hidden{display:none}
.fab-menu button{
  border:1px solid var(--border);background:var(--card);color:var(--text);
  border-radius:14px;padding:10px 14px;font-weight:700;font-size:13px;
  display:flex;align-items:center;gap:10px;cursor:pointer;min-width:160px;
  box-shadow:var(--shadow-lg);text-align:left;
}
.fab-menu button:hover{background:var(--bg-elev);border-color:var(--accent)}
.fab-menu button i{color:var(--accent)}

/* Split bill rows */
.split-row{
  display:grid;grid-template-columns:1.2fr 1fr .9fr 36px;gap:8px;margin-bottom:8px;align-items:center;
}
@media(max-width:640px){
  .split-row{grid-template-columns:1fr 1fr; }
  .split-row [data-del]{grid-column:span 2;justify-self:end}
}

/* Tx detail media */
.tx-media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px}
.tx-media-item{
  aspect-ratio:1;border-radius:12px;border:1px solid var(--border);
  background-size:cover;background-position:center;background-color:var(--bg-elev);
  display:grid;place-items:center;font-size:28px;color:var(--danger);
}
.tx-media-item.pdf{background:linear-gradient(160deg,var(--danger-soft),var(--bg-elev))}
tr.tx-clickable:hover td{background:color-mix(in srgb,var(--accent-soft) 55%,transparent)}

@media(prefers-reduced-motion:reduce){
  .page.active .card,.page.active .balance-hero,.skel-line{animation:none}
}
