:root{
  --vcp-green:#0f4b3a;
  --vcp-green-dark:#0b3b2e;
  --vcp-black:#151515;
  --vcp-text:#334155;
  --vcp-muted:#64748b;
  --vcp-bg:#ffffff;
  --vcp-bg-soft:#f8f6f1;
  --vcp-border:#e7e1d8;
  --vcp-shadow:0 18px 48px rgba(15,23,42,.18);
  --vcp-radius:24px;
}

/* =========================================================
   BANNER
========================================================= */
.vcp-banner{
  position:fixed;
  inset:auto 16px 16px 16px;
  z-index:99990;
}

.vcp-banner__box{
  max-width:980px;
  margin:0 auto;
  background:rgba(255,255,255,.98);
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  border:1px solid rgba(231,225,216,.95);
  border-radius:28px;
  box-shadow:var(--vcp-shadow);
  padding:22px;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:18px;
  align-items:end;
}

.vcp-banner__content{
  min-width:0;
}

.vcp-banner__eyebrow{
  margin:0 0 8px;
  font-size:12px;
  font-weight:900;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--vcp-green);
}

.vcp-banner__title{
  margin:0 0 10px;
  font-size:34px;
  line-height:.98;
  letter-spacing:-.04em;
  color:var(--vcp-black);
}

.vcp-banner__text{
  margin:0;
  font-size:15px;
  line-height:1.6;
  color:var(--vcp-text);
  max-width:70ch;
}

.vcp-banner__links{
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  margin-top:14px;
}

.vcp-banner__links a{
  color:var(--vcp-green);
  text-decoration:none;
  font-weight:800;
}

.vcp-banner__links a:hover{
  text-decoration:underline;
}

.vcp-banner__actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  justify-content:flex-end;
}

/* =========================================================
   MADE BY
========================================================= */
.vcp-madeby{
  margin-top:16px;
  display:inline-flex;
  align-items:center;
  gap:12px;
  text-decoration:none;
  color:var(--vcp-black);
  padding:10px 12px;
  border-radius:18px;
  background:#f8f6f1;
  border:1px solid var(--vcp-border);
}

.vcp-madeby img{
  display:block;
  width:140px;
  max-width:100%;
  height:auto;
}

.vcp-madeby span{
  display:block;
  font-size:13px;
  line-height:1.35;
  color:var(--vcp-text);
}

.vcp-madeby strong{
  color:var(--vcp-green);
}

.vcp-madeby--panel{
  margin-top:16px;
}

/* =========================================================
   BUTTONS
========================================================= */
.vcp-btn{
  min-height:50px;
  padding:0 18px;
  border-radius:999px;
  border:0;
  font:inherit;
  font-size:14px;
  font-weight:900;
  letter-spacing:.01em;
  cursor:pointer;
  transition:transform .12s ease, box-shadow .18s ease, background .18s ease, color .18s ease;
}

.vcp-btn:active{
  transform:translateY(1px);
}

.vcp-btn--primary{
  background:var(--vcp-green);
  color:#fff;
}

.vcp-btn--primary:hover{
  background:var(--vcp-green-dark);
}

.vcp-btn--secondary{
  background:#eef4f0;
  color:var(--vcp-green);
  border:1px solid #d5e6dd;
}

.vcp-btn--secondary:hover{
  background:#e5efe9;
}

.vcp-btn--ghost{
  background:#fff;
  color:var(--vcp-black);
  border:1px solid var(--vcp-border);
}

.vcp-btn--ghost:hover{
  background:#fafafa;
}

/* =========================================================
   PANEL
========================================================= */
.vcp-panel{
  position:fixed;
  inset:0;
  z-index:99995;
}

.vcp-panel__backdrop{
  position:absolute;
  inset:0;
  background:rgba(15,23,42,.54);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
}

.vcp-panel__dialog{
  position:absolute;
  right:16px;
  bottom:16px;
  width:min(560px, calc(100vw - 32px));
  max-height:min(86vh, 820px);
  overflow:auto;
  background:#fff;
  border:1px solid rgba(231,225,216,.95);
  border-radius:28px;
  box-shadow:0 22px 60px rgba(15,23,42,.22);
  padding:22px;
}

.vcp-panel__head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  margin-bottom:12px;
}

.vcp-panel__title{
  margin:6px 0 0;
  font-size:34px;
  line-height:.98;
  letter-spacing:-.04em;
  color:var(--vcp-black);
}

.vcp-panel__close{
  width:44px;
  height:44px;
  border:0;
  border-radius:999px;
  background:#f8fafc;
  color:#0f172a;
  font-size:28px;
  line-height:1;
  cursor:pointer;
}

.vcp-panel__section{
  display:grid;
  gap:12px;
  margin-top:16px;
}

.vcp-toggle{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  padding:16px 18px;
  background:var(--vcp-bg-soft);
  border:1px solid var(--vcp-border);
  border-radius:20px;
}

.vcp-toggle strong{
  display:block;
  font-size:16px;
  line-height:1.2;
  color:var(--vcp-black);
  margin-bottom:6px;
}

.vcp-toggle p{
  margin:0;
  font-size:14px;
  line-height:1.55;
  color:var(--vcp-text);
  max-width:40ch;
}

.vcp-toggle input[type="checkbox"]{
  width:22px;
  height:22px;
  margin-top:2px;
  accent-color:var(--vcp-green);
  flex:0 0 auto;
}

.vcp-toggle__fixed{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:34px;
  padding:0 12px;
  border-radius:999px;
  background:#e8f4ed;
  color:var(--vcp-green);
  font-size:12px;
  font-weight:900;
  white-space:nowrap;
}

.vcp-panel__footer{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  justify-content:flex-end;
  margin-top:18px;
}

/* =========================================================
   INLINE BUTTON
========================================================= */
.vcp-inline-button{
  min-height:46px;
  padding:0 18px;
  border-radius:999px;
  border:1px solid var(--vcp-border);
  background:#fff;
  color:var(--vcp-black);
  font:inherit;
  font-weight:800;
  cursor:pointer;
}

/* =========================================================
   COOKIE MANAGE BUTTON - LINGUETTA LATERALE
========================================================= */
.vcp-manage-button{
  position:fixed !important;
  right:-34px !important;
  left:auto !important;
  top:50% !important;
  bottom:auto !important;
  transform:translateY(-50%) rotate(-90deg) !important;
  transform-origin:center !important;
  z-index:99980 !important;
  min-height:42px !important;
  padding:0 16px !important;
  border:0 !important;
  border-radius:16px 16px 0 0 !important;
  background:var(--vcp-green) !important;
  color:#fff !important;
  font:inherit !important;
  font-size:13px !important;
  font-weight:900 !important;
  letter-spacing:.04em !important;
  text-transform:uppercase !important;
  cursor:pointer !important;
  box-shadow:0 12px 28px rgba(15,23,42,.18) !important;
}

.vcp-manage-button:hover{
  background:var(--vcp-green-dark) !important;
}

.vcp-manage-button:active{
  transform:translateY(-50%) rotate(-90deg) translateY(1px) !important;
}

/* =========================================================
   POLICY PAGE
========================================================= */
.vcp-policy{
  max-width:900px;
  margin:0 auto;
  color:var(--vcp-black);
}

.vcp-policy h1{
  font-size:44px;
  line-height:.95;
  letter-spacing:-.04em;
  margin-bottom:18px;
}

.vcp-policy h2{
  margin-top:34px;
  margin-bottom:12px;
  font-size:28px;
  line-height:1.02;
  letter-spacing:-.03em;
}

.vcp-policy h3{
  margin-top:18px;
  margin-bottom:8px;
  font-size:20px;
  line-height:1.1;
}

.vcp-policy p,
.vcp-policy li{
  font-size:16px;
  line-height:1.7;
  color:var(--vcp-text);
}

.vcp-policy ul{
  padding-left:20px;
}

/* =========================================================
   MOBILE
========================================================= */
@media (max-width: 991px){
  .vcp-banner{
    inset:auto 10px calc(84px + env(safe-area-inset-bottom,0px)) 10px;
  }

  .vcp-banner__box{
    grid-template-columns:1fr;
    gap:16px;
    padding:18px;
    border-radius:24px;
  }

  .vcp-banner__title{
    font-size:28px;
  }

  .vcp-banner__text{
    font-size:14px;
  }

  .vcp-banner__actions{
    justify-content:stretch;
  }

  .vcp-btn{
    flex:1 1 100%;
    width:100%;
  }

  .vcp-panel__dialog{
    right:10px;
    left:10px;
    bottom:calc(10px + env(safe-area-inset-bottom,0px));
    width:auto;
    max-height:82vh;
    border-radius:24px;
    padding:18px;
  }

  .vcp-panel__title{
    font-size:28px;
  }

  .vcp-toggle{
    padding:14px;
    border-radius:18px;
  }

  .vcp-panel__footer{
    justify-content:stretch;
  }

  .vcp-panel__footer .vcp-btn{
    width:100%;
  }

  .vcp-madeby{
    align-items:flex-start;
    flex-direction:column;
  }

  .vcp-madeby img{
    width:120px;
  }

  .vcp-manage-button{
    right:-30px !important;
    left:auto !important;
    top:auto !important;
    bottom:38% !important;
    transform:rotate(-90deg) !important;
    font-size:12px !important;
    min-height:40px !important;
    padding:0 14px !important;
    border-radius:14px 14px 0 0 !important;
  }
}

@media (max-width: 640px){
  .vcp-policy h1{
    font-size:34px;
  }

  .vcp-policy h2{
    font-size:24px;
  }
}