.portal-shell .portal-banner{
  position:sticky;
  top:72px; /* onder de sticky header */
  z-index:9;
}

.portal-shell .portal-banner::after{
  /* zorg dat gradient boven content blijft */
  z-index:0;
}

.portal-shell .portal-banner-inner{
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:minmax(0, 1fr) auto;
  grid-template-areas:
    "title action"
    "sub action";
  align-items:end;
  column-gap:16px;
  row-gap:6px;
}

.portal-shell .portal-banner-deal-btn{
  grid-area:action;
  position:relative;
  align-self:end;
  margin-bottom:0;
  transform:translateY(30px);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:42px;
  padding:0 16px;
  border-radius:12px;
  text-decoration:none;
  font-weight:800;
  color:#fff;
  background:var(--ik-primary-grad);
  box-shadow:var(--ik-primary-shadow);
}

.portal-shell .portal-banner-inner h1{
  grid-area:title;
}

.portal-shell .portal-banner-inner p{
  grid-area:sub;
  max-width:58ch;
}

.portal-shell-main{
  max-width:1320px;
  margin:0 auto;
  padding:clamp(20px, 3vw, 28px) clamp(16px, 4vw, 40px) 48px;
}

/* Frame views: houd ~30px ruimte onder banner */
body.portal-shell[data-portal-view="dashboard"] .portal-shell-main,
body.portal-shell[data-portal-view="inkomsten"] .portal-shell-main{
  padding-top:30px !important;
}

/* Mijn iKash: iframe moet direct aansluiten onder banner
   (de 30px spacing zit in de embedded pagina zelf, met een doorlopende achtergrondstrip) */
body.portal-shell[data-portal-view="mijn-ikash"] .portal-shell-main{
  padding-top:0 !important;
}

.portal-shell-home{
  display:grid;
  gap:14px;
}

/* Zorg dat home echt verdwijnt bij andere views */
.portal-shell-home[hidden]{
  display:none !important;
}

.portal-home-hero,
.portal-home-kpi,
.portal-home-card{
  border-radius:16px;
  background:#fff;
  border:1px solid rgba(35,34,59,0.11);
  box-shadow:0 14px 32px rgba(35,34,59,0.07);
}

.portal-home-hero{
  display:grid;
  grid-template-columns:minmax(0,1.6fr) minmax(240px,1fr);
  gap:14px;
  padding:20px;
}

.portal-home-hero-copy h2{
  margin:0 0 8px;
  color:#23223B;
  letter-spacing:-0.025em;
}

.portal-home-hero-copy p{
  margin:0;
  color:#64748b;
  line-height:1.58;
  max-width:66ch;
}

.portal-home-hero-actions{
  margin-top:14px;
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}

.portal-home-hero-visual{
  position:relative;
  min-height:150px;
  border-radius:14px;
  border:1px solid rgba(99,102,241,0.18);
  background:
    radial-gradient(circle at 26% 22%, rgba(99,102,241,0.34), transparent 55%),
    radial-gradient(circle at 72% 58%, rgba(188,105,0,0.24), transparent 62%),
    linear-gradient(160deg, rgba(35,34,59,0.96), rgba(55,48,163,0.94));
  overflow:hidden;
}

.portal-home-orb{
  position:absolute;
  border-radius:50%;
}
.portal-home-orb-a{ width:98px; height:98px; left:12%; top:14%; background:rgba(255,255,255,0.15); }
.portal-home-orb-b{ width:130px; height:130px; right:-14px; top:18%; background:rgba(120,126,255,0.45); }
.portal-home-orb-c{ width:84px; height:84px; right:22%; bottom:-10px; background:rgba(255,203,128,0.42); }

.portal-home-kpis{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
}

.portal-home-kpi{
  padding:12px 13px;
}

.portal-home-kpi-label{
  display:block;
  margin-bottom:6px;
  font-size:12px;
  color:#64748b;
  text-transform:uppercase;
  letter-spacing:.05em;
}

.portal-home-kpi strong{
  display:block;
  color:#23223B;
  font-size:1.34rem;
  letter-spacing:-0.02em;
}

.portal-home-kpi em{
  display:block;
  margin-top:4px;
  font-style:normal;
  color:#64748b;
  font-size:12px;
}

.portal-home-grid{
  display:grid;
  grid-template-columns:1.35fr 1fr;
  gap:12px;
}

.portal-home-card{
  padding:16px;
}

.portal-home-card-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:12px;
}

.portal-home-card-head h3{
  margin:0;
  color:#23223B;
  letter-spacing:-0.015em;
}

.portal-home-chip{
  border-radius:999px;
  padding:4px 10px;
  font-size:11px;
  font-weight:800;
  text-transform:uppercase;
  color:#334155;
  background:linear-gradient(180deg,#eef2ff,#e2e8f0);
}

.portal-home-trend-controls{
  display:inline-flex;
  align-items:center;
  gap:8px;
}

.portal-home-trend-btn{
  appearance:none;
  border:1px solid rgba(255,255,255,0.28);
  border-radius:999px;
  min-height:30px;
  padding:0 12px;
  font:inherit;
  font-size:12px;
  font-weight:800;
  letter-spacing:0.01em;
  cursor:pointer;
  color:#fff;
  background:var(--ik-primary-grad);
  box-shadow:var(--ik-primary-shadow);
  transition:filter .18s ease, box-shadow .18s ease, transform .1s ease;
}

.portal-home-trend-btn:hover{
  filter:brightness(1.05);
}

.portal-home-trend-btn:active{
  transform:translateY(1px);
}

.portal-home-trend-btn:focus-visible{
  outline:3px solid rgba(99,102,241,0.35);
  outline-offset:2px;
}

.portal-home-trend-btn[aria-pressed="false"]:not(.is-active){
  color:#23223B;
  background:linear-gradient(180deg,#f8faff 0%,#eef2ff 100%);
  border-color:rgba(35,34,59,0.16);
  box-shadow:0 6px 18px rgba(15,23,42,0.08);
}

.portal-home-chart{
  border-radius:12px;
  background:linear-gradient(180deg,#fafbff,#f6f8ff);
  border:1px solid rgba(99,102,241,0.16);
  padding:10px 10px 4px;
}

.portal-home-chart svg{
  width:100%;
  height:auto;
  display:block;
}

.portal-home-line{
  fill:none;
  stroke:#4f46e5;
  stroke-width:3;
  stroke-linecap:round;
  stroke-linejoin:round;
}

.portal-home-area{
  fill:url(#portalAreaFill);
}

.portal-home-area-index{
  fill:url(#indexPortalAreaFill);
}

.portal-home-note{
  margin:9px 0 0;
  color:#64748b;
  line-height:1.5;
  font-size:13px;
}

.portal-home-live-summary{
  border-radius:12px;
  border:1px solid rgba(99,102,241,0.14);
  background:linear-gradient(180deg,#fafbff,#f6f8ff);
  overflow:hidden;
}

.portal-home-live-head,
.portal-home-live-row{
  display:grid;
  grid-template-columns:1.5fr .7fr 1fr .8fr;
  gap:10px;
  align-items:center;
  padding:10px 12px;
}

.portal-home-live-head{
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.05em;
  color:#64748b;
  font-weight:800;
  border-bottom:1px solid rgba(99,102,241,0.14);
}

.portal-home-live-row{
  font-size:14px;
  color:#334155;
  border-bottom:1px solid rgba(15,23,42,0.08);
}

.portal-home-live-row strong{
  color:#1e293b;
}

.portal-home-live-row:last-child{
  border-bottom:none;
}

.portal-home-list{
  margin:0;
  padding:0;
  list-style:none;
}

.portal-home-list li{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:9px 0;
  border-bottom:1px solid rgba(15,23,42,0.08);
  color:#334155;
}

.portal-home-list li:last-child{
  border-bottom:none;
}

.portal-home-actions-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}

.portal-shell-home-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:44px;
  padding:0 16px;
  border-radius:14px;
  text-decoration:none;
  font-weight:900;
  color:#fff;
  background:var(--ik-primary-grad);
  box-shadow:var(--ik-primary-shadow);
}

.portal-shell-home-btn--alt{
  color:#23223B;
  background:#fff;
  border:1px solid rgba(35,34,59,0.18);
  box-shadow:none;
}

.portal-home-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:none;
  border-radius:11px;
  min-height:42px;
  padding:0 12px;
  color:#fff;
  cursor:pointer;
  font-weight:800;
  text-decoration:none;
  background:var(--ik-primary-grad);
  box-shadow:var(--ik-primary-shadow);
}

.portal-home-btn--alt{
  background:linear-gradient(180deg,#8290ff 0%,#4f46e5 60%,#3730a3 100%);
}

.portal-home-btn--ghost{
  background:#fff;
  color:#23223B;
  border:1px solid rgba(35,34,59,0.2);
  box-shadow:none;
}

.portal-home-card--gold{
  position:relative;
}

.portal-home-card--gold::before{
  content:"";
  position:absolute;
  inset:0;
  border-radius:16px;
  padding:1.5px;
  background:linear-gradient(120deg, rgba(255,220,145,0.75), rgba(255,255,255,0.8) 45%, rgba(170,124,36,0.6));
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask-composite:exclude;
  pointer-events:none;
}

.portal-shell-frame{
  width:100%;
  height:calc(100vh - 260px);
  border:0;
  border-radius:12px;
  background:transparent;
}

.portal-shell-frame[hidden]{
  display:none;
}

@media (max-width:900px){
  .portal-shell .portal-banner-deal-btn{
    position:static;
    margin-top:12px;
    margin-bottom:0;
    transform:none;
  }
  .portal-shell .portal-banner-inner{
    grid-template-columns:1fr;
    grid-template-areas:
      "title"
      "sub"
      "action";
    align-items:start;
  }
  .portal-shell .portal-banner-inner p{
    max-width:38rem;
  }
  .portal-shell .portal-banner{
    top:60px;
  }
  .portal-home-hero{
    grid-template-columns:1fr;
  }
  .portal-home-kpis{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .portal-home-grid{
    grid-template-columns:1fr;
  }
  .portal-home-actions-grid{
    grid-template-columns:1fr;
  }
  .portal-home-live-head,
  .portal-home-live-row{
    grid-template-columns:1.3fr .8fr .95fr .8fr;
    font-size:12px;
  }
  .portal-shell-frame{
    height:calc(100vh - 220px);
  }
}

