:root{
  --accent-1:#1f2d4d;
  --accent-2:#26456e;
  --accent-3:#2f5c8f;
  --ink:#2b2b3d;
  --good:#8fe388;
  --bad:#f0a06b;
  --card-radius:28px;
}

*{box-sizing:border-box;margin:0;padding:0;}
body{
  font-family:'Segoe UI',system-ui,-apple-system,sans-serif;
  color:var(--ink);
  min-height:100vh;
  background:linear-gradient(160deg,#eef6ef 0%,#e3eef1 45%,#e7ecfa 100%);
}

.page-bg{
  position:relative;
  min-height:100vh;
  display:flex;
  padding:0;
}

.stack-card{
  display:none;
}

.app-card{
  position:relative;
  width:100vw;
  min-height:100vh;
  border-radius:0;
  background:linear-gradient(135deg,var(--accent-1),var(--accent-2) 55%,var(--accent-3));
  box-shadow:none;
  display:flex;
  overflow:hidden;
}

/* SIDEBAR */
.sidebar{
  width:220px;
  flex-shrink:0;
  background:rgba(255,255,255,0.14);
  padding:26px 18px;
  display:flex;
  flex-direction:column;
  gap:28px;
}
.logo{
  width:42px;height:42px;
  border-radius:12px;
  background:#fff;
  color:var(--accent-2);
  font-weight:800;
  font-size:15px;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
}
.side-nav{display:flex;flex-direction:column;gap:6px;flex:1;}
.nav-item{
  display:flex;align-items:center;gap:12px;
  padding:11px 12px;
  border:none;background:transparent;
  border-radius:12px;
  color:rgba(255,255,255,0.85);
  font-size:14.5px;font-weight:500;
  cursor:pointer;
  text-align:left;
  transition:background .15s ease, color .15s ease;
}
.nav-item svg{
  width:19px;height:19px;
  fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;
  flex-shrink:0;
}
.nav-item:hover{background:rgba(255,255,255,0.15);}
.nav-item.active{background:rgba(255,255,255,0.9);color:var(--accent-2);}
.side-footer .nav-item{color:rgba(255,255,255,0.7);}
.cloud-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:7px;vertical-align:middle;background:#999;}
.cloud-dot.off{background:#999;}
.cloud-dot.warn{background:#e3b23c;}
.cloud-dot.ok{background:#5fd18c;}

/* CONTENT */
.content{
  flex:1;
  padding:28px 34px 34px;
  overflow-y:auto;
  max-height:100vh;
  color:#fff;
}
.topbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  margin-bottom:26px;
  flex-wrap:wrap;
}
.welcome h1{font-size:22px;font-weight:600;margin-bottom:10px;}
.goal-progress{display:flex;align-items:center;gap:12px;}
.goal-label{font-size:13px;opacity:.85;white-space:nowrap;}
.progress-track{
  width:160px;height:8px;border-radius:6px;
  background:rgba(255,255,255,0.3);overflow:hidden;
}
.progress-fill{height:100%;background:#d6f26d;border-radius:6px;transition:width .4s ease;}
.goal-fraction{font-size:13px;font-weight:600;opacity:.9;}

.top-icons{display:flex;align-items:center;gap:10px;}
.icon-btn{
  width:38px;height:38px;border-radius:10px;
  border:none;background:rgba(255,255,255,0.16);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;color:#fff;
}
.icon-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.icon-btn:hover{background:rgba(255,255,255,0.3);}

/* Generic panels used across pages */
.panel{
  background:rgba(255,255,255,0.14);
  border-radius:20px;
  padding:20px 22px;
}
.panel-title{font-size:14px;font-weight:600;opacity:.9;margin-bottom:14px;}

/* DASHBOARD LAYOUT */
.dash-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:22px;}
.avatar-card{
  background:rgba(255,255,255,0.14);
  border-radius:24px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:18px;
  padding:26px;
  min-height:380px;
}
.avatar-display{
  position:relative;
  flex:1;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:10px;
}
.avatar-frame{
  position:relative;
  height:320px;
  aspect-ratio:543/1155;
  display:flex;align-items:flex-end;justify-content:center;
}
.avatar-frame::before{
  content:'';
  position:absolute;
  top:-12%;left:50%;
  width:150%;height:78%;
  transform:translateX(-50%);
  background:radial-gradient(circle, rgba(255,255,255,0.35) 0%, rgba(255,255,255,0.12) 45%, rgba(255,255,255,0) 72%);
  filter:blur(4px);
  pointer-events:none;
}
.avatar-frame img{
  position:relative;
  width:100%;height:100%;object-fit:contain;
  filter:
    drop-shadow(0 2px 3px rgba(10,15,30,0.35))
    drop-shadow(0 14px 12px rgba(10,15,30,0.35))
    drop-shadow(0 34px 26px rgba(6,10,25,0.32));
}
.avatar-pedestal{
  position:relative;
  width:130px;height:22px;
  border-radius:50%;
  background:radial-gradient(ellipse, rgba(6,10,25,0.45) 0%, rgba(6,10,25,0.22) 55%, rgba(6,10,25,0) 78%);
  filter:blur(2px);
  margin-top:-6px;
}
.avatar-name{font-size:16px;font-weight:600;margin-top:6px;}
.avatar-sub{font-size:13px;opacity:.8;}

.side-stats{display:flex;flex-direction:column;gap:16px;}

.stat-card{
  background:rgba(255,255,255,0.14);
  border-radius:18px;
  padding:16px 18px;
}
.stat-value{font-size:30px;font-weight:700;margin-bottom:10px;}
.stat-label{font-size:12px;opacity:.8;margin-top:8px;}
.stat-bar{width:100%;height:7px;border-radius:6px;background:rgba(255,255,255,0.3);overflow:hidden;}
.stat-bar-fill{height:100%;border-radius:6px;}
.stat-bar-fill.good{background:var(--good);}
.stat-bar-fill.bad{background:var(--bad);}

.cta-btn{
  border:none;border-radius:14px;
  background:#3d3357;color:#fff;
  font-size:15px;font-weight:600;
  padding:14px 20px;
  cursor:pointer;
  width:100%;
}
.cta-btn:hover{background:#2c2542;}

/* Section pages (patrimonio / investimenti / spese) */
.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;flex-wrap:wrap;gap:12px;}
.page-header h2{font-size:20px;font-weight:600;}
.btn-primary{
  border:none;border-radius:12px;background:rgba(255,255,255,0.9);
  color:var(--accent-2);font-weight:700;font-size:13.5px;
  padding:10px 16px;cursor:pointer;
}
.btn-primary:hover{background:#fff;}
.btn-ghost{
  border:1px solid rgba(255,255,255,0.5);background:transparent;color:#fff;
  border-radius:10px;padding:8px 12px;font-size:13px;cursor:pointer;
}

.summary-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:22px;}
.summary-card{background:rgba(255,255,255,0.14);border-radius:16px;padding:16px 18px;}
.summary-card .lbl{font-size:12px;opacity:.8;margin-bottom:6px;}
.summary-card .val{font-size:22px;font-weight:700;}
.summary-card .val.pos{color:#c9f97b;}
.summary-card .val.neg{color:#ffb08a;}

.table-scroll{overflow-x:auto;}
.data-table{width:100%;border-collapse:collapse;font-size:13.5px;}
.data-table th{text-align:left;padding:10px 12px;opacity:.75;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid rgba(255,255,255,0.2);}
.data-table td{padding:11px 12px;border-bottom:1px solid rgba(255,255,255,0.12);}
.data-table tr:last-child td{border-bottom:none;}
.tag{display:inline-block;padding:3px 10px;border-radius:20px;background:rgba(255,255,255,0.2);font-size:11.5px;}
.row-actions{display:flex;gap:8px;}
.icon-mini{background:rgba(255,255,255,0.16);border:none;width:28px;height:28px;border-radius:8px;color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;}
.icon-mini:hover{background:rgba(255,255,255,0.3);}
.icon-mini svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;}
.icon-btn-refresh{background:rgba(255,255,255,0.16);border:none;width:38px;height:38px;border-radius:10px;color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;}
.icon-btn-refresh:hover{background:rgba(255,255,255,0.3);}
.icon-btn-refresh svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;}
.icon-btn-refresh.spinning svg{animation:spin-rotate 0.9s linear infinite;}
.icon-btn-refresh:disabled{cursor:default;opacity:.8;}
@keyframes spin-rotate{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}

.pos{color:#c9f97b;}
.neg{color:#ffb08a;}

.chart-panel{margin-bottom:22px;}
.bar-row{display:flex;align-items:center;gap:12px;margin-bottom:10px;font-size:13px;}
.bar-row .bar-label{width:120px;flex-shrink:0;opacity:.85;}
.bar-track{flex:1;height:10px;border-radius:6px;background:rgba(255,255,255,0.2);overflow:hidden;}
.bar-fill{height:100%;border-radius:6px;background:linear-gradient(90deg,#d6f26d,#8fe388);}
.bar-amount{width:80px;text-align:right;flex-shrink:0;font-weight:600;}

.empty-state{opacity:.75;font-size:13.5px;padding:30px;text-align:center;}

/* SCHERMATA DI ACCESSO */
.lock-screen{
  position:fixed;inset:0;z-index:200;
  display:none;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--accent-1),var(--accent-2) 55%,var(--accent-3));
}
.lock-screen.open{display:flex;}
.lock-box{
  background:#fff;color:var(--ink);
  border-radius:var(--card-radius);
  padding:34px 32px;
  width:min(360px,90vw);
}
.lock-box h2{font-size:20px;margin-bottom:6px;}
.lock-box .lock-sub{font-size:13px;opacity:.7;margin-bottom:20px;}
.lock-box .lock-error{color:#c0392b;font-size:13px;min-height:18px;margin-bottom:6px;}

/* MODAL */
.modal-overlay{
  position:fixed;inset:0;background:rgba(20,15,40,0.45);
  display:none;align-items:center;justify-content:center;z-index:50;
}
.modal-overlay.open{display:flex;}
.modal{
  background:#fff;color:var(--ink);
  border-radius:20px;padding:26px 28px;
  width:min(420px,92vw);
  max-height:86vh;overflow-y:auto;
}
.modal h3{font-size:18px;margin-bottom:16px;}
.field{margin-bottom:14px;}
.field label{display:block;font-size:12.5px;font-weight:600;opacity:.7;margin-bottom:5px;}
.field input,.field select{
  width:100%;padding:10px 12px;border-radius:10px;
  border:1px solid #ddd;font-size:14px;
}
.password-field{position:relative;}
.password-field input{padding-right:40px;}
.toggle-pass{
  position:absolute;top:50%;right:6px;transform:translateY(-50%);
  background:none;border:none;padding:6px;cursor:pointer;
  color:#888;display:flex;align-items:center;justify-content:center;
}
.toggle-pass:hover{color:#333;}
.toggle-pass svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px;}
.btn-cancel{border:none;background:#eee;color:#333;padding:10px 16px;border-radius:10px;cursor:pointer;font-size:13.5px;}
.btn-save{border:none;background:var(--accent-2);color:#fff;padding:10px 18px;border-radius:10px;cursor:pointer;font-size:13.5px;font-weight:600;}

/* Icona informativa (tooltip cliccabile) e relativo overlay */
.info-btn{
  display:inline-flex;align-items:center;justify-content:center;
  width:16px;height:16px;
  border:none;background:transparent;padding:0;margin-left:6px;
  color:var(--accent-2);cursor:pointer;vertical-align:middle;
}
.info-btn svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}

.info-overlay{
  position:fixed;inset:0;background:rgba(20,15,40,0.45);
  display:none;align-items:center;justify-content:center;z-index:60;
}
.info-overlay.open{display:flex;}
.info-box{
  background:#fff;color:var(--ink);
  border-radius:20px;padding:28px 26px;
  width:min(360px,90vw);
  text-align:center;
}
.info-box .info-icon{color:var(--accent-2);display:flex;justify-content:center;margin-bottom:12px;}
.info-box .info-icon svg{width:38px;height:38px;fill:none;stroke:currentColor;stroke-width:1.6;}
.info-box h3{font-size:17px;margin-bottom:10px;}
.info-box p{font-size:13.5px;line-height:1.55;opacity:.75;margin-bottom:20px;}
.info-box .btn-save{width:100%;}

/* Impostazioni page */
.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
@media (max-width:760px){.settings-grid{grid-template-columns:1fr;}}

@media (max-width:900px){
  .app-card{flex-direction:column;min-height:auto;}
  .sidebar{width:100%;flex-direction:row;align-items:center;overflow-x:auto;}
  .side-nav{flex-direction:row;}
  .side-footer{display:none;}
  .dash-grid{grid-template-columns:1fr;}
  .content{max-height:none;}
}

/* PHONE: layout a schermo intero con barra di navigazione fissa in basso */
@media (max-width:600px){
  .page-bg{padding:0;}
  .stack-card{display:none;}
  .app-card{
    width:100vw;min-height:100vh;
    border-radius:0;box-shadow:none;
  }

  .sidebar{
    position:fixed;left:14px;right:14px;bottom:calc(14px + env(safe-area-inset-bottom));
    width:auto;
    padding:8px 6px;
    background:rgba(255,255,255,0.16);
    backdrop-filter:blur(24px) saturate(180%);
    -webkit-backdrop-filter:blur(24px) saturate(180%);
    border:1px solid rgba(255,255,255,0.28);
    border-radius:26px;
    box-shadow:0 14px 34px rgba(10,15,35,0.35);
    z-index:40;
    overflow-x:visible;
  }
  .logo{display:none;}
  .side-nav{width:100%;justify-content:space-around;gap:0;}
  .nav-item{
    flex-direction:column;
    flex:1;
    gap:3px;
    padding:7px 2px;
    font-size:10px;
    border-radius:16px;
    text-align:center;
  }
  .nav-item span{font-size:10px;}
  .nav-item svg{width:20px;height:20px;}
  .nav-item.active{background:rgba(255,255,255,0.95);}

  .content{
    padding:16px 14px calc(96px + env(safe-area-inset-bottom));
  }

  .topbar{gap:12px;margin-bottom:18px;}
  .welcome h1{font-size:18px;margin-bottom:8px;}
  .goal-label{display:none;}
  .progress-track{width:80px;}
  .top-icons{display:none;}

  .avatar-card{min-height:auto;padding:18px;}
  .avatar-frame{height:200px;}
  .avatar-name{font-size:15px;}
  .avatar-sub{font-size:12px;text-align:center;}

  .stat-value{font-size:24px;}

  .summary-row{grid-template-columns:repeat(2,1fr);gap:10px;}
  .summary-card{padding:12px 14px;}
  .summary-card .val{font-size:18px;}

  .data-table{font-size:12px;}
  .data-table th,.data-table td{padding:8px;}

  .modal{padding:20px 18px;}

  .page-header h2{font-size:18px;}
}
