:root{
  --ink:#1e1e5a;
  --ink-soft:#4a4a6e;
  --violet:#9d8cb8;
  --violet-deep:#7a6a98;
  --paper:#faf8f5;
  --paper-line:#e3ddd2;
  --surface:#ffffff;
  --positive:#2f7d52;
  --positive-bg:#eaf5ef;
  --warning:#b5530a;
  --warning-bg:#fdf0e4;
  --danger:#b3261e;
  --danger-bg:#fbeae8;
  --radius:14px;
  --shadow:0 1px 2px rgba(30,30,90,0.04), 0 6px 20px rgba(30,30,90,0.06);
}

.cfp-wrap *{box-sizing:border-box;}
.cfp-wrap{
  max-width:760px;
  margin:0 auto;
  padding:0 18px;
  font-family:'Inter',system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
  line-height:1.5;
  color:var(--ink);
}

.cfp-hero{
  background:linear-gradient(160deg,var(--ink) 0%, #2c2c74 55%, var(--violet-deep) 100%);
  color:#fff;
  padding:36px 18px 30px;
  border-radius:0 0 28px 28px;
  margin-bottom:24px;
}
.cfp-hero .eyebrow{
  font-size:12.5px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:#d8cfe6;
  font-weight:600;
  margin:0 0 8px;
}
.cfp-hero h1{
  font-family:'Fraunces',serif;
  font-optical-sizing:auto;
  font-weight:600;
  font-size:30px;
  line-height:1.15;
  margin:0 0 10px;
  max-width:480px;
}
.cfp-hero p{
  margin:0;
  color:#e6e1ee;
  font-size:14.5px;
  max-width:440px;
}

.cfp-card{
  background:var(--surface);
  border:1px solid var(--paper-line);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  padding:22px;
  margin-bottom:18px;
}
.cfp-card h2{
  font-family:'Fraunces',serif;
  font-weight:600;
  font-size:19px;
  margin:0 0 4px;
  color:var(--ink);
}
.cfp-card .card-sub{
  font-size:13px;
  color:var(--ink-soft);
  margin:0 0 18px;
}

details.cfp-card{padding:0;}
details.cfp-card summary{
  cursor:pointer;
  padding:22px;
  font-family:'Fraunces',serif;
  font-weight:600;
  font-size:17px;
  color:var(--ink);
  list-style:none;
}
details.cfp-card summary::-webkit-details-marker{display:none;}
details.cfp-card summary::before{content:"+ "; color:var(--violet-deep);}
details.cfp-card[open] summary::before{content:"- "; color:var(--violet-deep);}
details.cfp-card summary .sub{
  display:block;
  font-family:'Inter',sans-serif;
  font-weight:400;
  font-size:12.5px;
  color:var(--ink-soft);
  margin-top:4px;
}
details.cfp-card .cfp-details-body{padding:0 22px 22px;}
.rl-row-acconto .rl-value{color:var(--warning);}
.rl-row-credito .rl-value{color:var(--positive);}

.cfp-field{margin-bottom:18px;}
.cfp-field label.field-label{
  display:block;
  font-size:13.5px;
  font-weight:600;
  color:var(--ink);
  margin-bottom:6px;
}
.cfp-field .hint{
  font-size:12px;
  color:var(--ink-soft);
  margin-top:5px;
}
.cfp-field input[type=number], .cfp-field select{
  width:100%;
  font-family:'Inter',sans-serif;
  font-size:15.5px;
  padding:11px 13px;
  border:1.5px solid var(--paper-line);
  border-radius:10px;
  background:#fff;
  color:var(--ink);
  appearance:none;
  -webkit-appearance:none;
}
.cfp-field select{
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'><path d='M1 1l6 6 6-6' stroke='%231e1e5a' stroke-width='1.6' fill='none' stroke-linecap='round'/></svg>");
  background-repeat:no-repeat;
  background-position:right 14px center;
  padding-right:38px;
}
.cfp-field input:focus, .cfp-field select:focus{
  outline:2.5px solid var(--violet);
  outline-offset:1px;
  border-color:var(--violet);
}

.cfp-euro{position:relative;}
.cfp-euro span{
  position:absolute;
  left:13px; top:50%; transform:translateY(-50%);
  color:var(--ink-soft);
  font-weight:600;
  font-size:15px;
  pointer-events:none;
}
.cfp-euro input{padding-left:30px !important;}

.cfp-radio-row{display:flex; gap:10px;}
.cfp-radio-card{
  flex:1;
  border:1.5px solid var(--paper-line);
  border-radius:10px;
  padding:11px 12px;
  cursor:pointer;
  transition:border-color .15s, background .15s;
  position:relative;
}
.cfp-radio-card input{position:absolute; opacity:0; pointer-events:none;}
.cfp-radio-card.checked{
  border-color:var(--violet);
  background:#f6f1fa;
}
.cfp-radio-card:focus-within{
  outline:2.5px solid var(--violet);
  outline-offset:1px;
}
.cfp-radio-card .r-title{font-weight:700; font-size:14.5px; color:var(--ink);}
.cfp-radio-card .r-desc{font-size:11.5px; color:var(--ink-soft); margin-top:2px;}

.cfp-checkline{
  display:flex;
  align-items:flex-start;
  gap:10px;
  background:#f6f4ef;
  border:1px solid var(--paper-line);
  border-radius:10px;
  padding:11px 12px;
  margin-top:10px;
  cursor:pointer;
}
.cfp-checkline input{margin-top:2px; width:16px; height:16px; accent-color:var(--violet-deep);}
.cfp-checkline .ct-label{font-size:13px; font-weight:600; color:var(--ink);}
.cfp-checkline .ct-desc{font-size:11.5px; color:var(--ink-soft); margin-top:1px;}

.cfp-hidden{display:none !important;}

.cfp-calc-btn{
  width:100%;
  background:var(--ink);
  color:#fff;
  border:none;
  border-radius:12px;
  padding:15px;
  font-size:16px;
  font-weight:700;
  font-family:'Inter',sans-serif;
  cursor:pointer;
  transition:background .15s, transform .05s;
}
.cfp-calc-btn:hover{background:#2c2c74;}
.cfp-calc-btn:active{transform:scale(.99);}

.cfp-btn-secondary{
  background:transparent;
  color:var(--ink);
  border:1.5px solid var(--paper-line);
  border-radius:10px;
  padding:10px 16px;
  font-size:13px;
  font-weight:600;
  font-family:'Inter',sans-serif;
  cursor:pointer;
  transition:all .15s;
}
.cfp-btn-secondary:hover{border-color:var(--violet); background:#f6f1fa;}

.cfp-alert{
  border-radius:10px;
  padding:11px 13px;
  font-size:12.5px;
  margin-bottom:16px;
  display:flex;
  gap:9px;
}
.cfp-alert.warn{background:var(--warning-bg); color:var(--warning); border:1px solid #f0d2b0;}
.cfp-alert.danger{background:var(--danger-bg); color:var(--danger); border:1px solid #f0c4c0;}
.cfp-alert.info{background:#e8f0fe; color:#1557b0; border:1px solid #c2d8f7;}

.cfp-results{display:none;}
.cfp-result-row{
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  padding:10px 0;
  border-bottom:1px dotted var(--paper-line);
}
.cfp-result-row:last-child{border-bottom:none;}
.cfp-result-row .rl-label{
  font-size:13.5px;
  color:var(--ink-soft);
}
.cfp-result-row .rl-label .rl-sub{display:block; font-size:11px; color:#9b96a8;}
.cfp-result-row .rl-value{
  font-family:'Inter',sans-serif;
  font-weight:700;
  font-size:15.5px;
  color:var(--ink);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.cfp-result-row.total{
  margin-top:6px;
  padding-top:14px;
  border-top:1.5px solid var(--ink);
  border-bottom:none;
}
.cfp-result-row.total .rl-label{font-weight:700; color:var(--ink); font-size:14.5px;}
.cfp-result-row.total .rl-value{font-size:19px; color:var(--violet-deep);}
.cfp-result-row.net .rl-value{color:var(--positive);}

.cfp-section-tag{
  font-size:11px;
  letter-spacing:.08em;
  text-transform:uppercase;
  font-weight:700;
  color:var(--violet-deep);
  margin:22px 0 4px;
}
.cfp-section-tag:first-child{margin-top:0;}

.cfp-compare-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
  margin-top:12px;
}
.cfp-compare-card{
  border:1.5px solid var(--paper-line);
  border-radius:10px;
  padding:14px;
  text-align:center;
}
.cfp-compare-card.winner{
  border-color:var(--positive);
  background:var(--positive-bg);
}
.cfp-compare-card .cmp-title{
  font-size:12px;
  font-weight:700;
  color:var(--ink-soft);
  text-transform:uppercase;
  letter-spacing:.04em;
}
.cfp-compare-card .cmp-value{
  font-family:'Fraunces',serif;
  font-size:24px;
  font-weight:700;
  color:var(--ink);
  margin:6px 0;
}
.cfp-compare-card .cmp-diff{
  font-size:12px;
  font-weight:600;
  color:var(--positive);
}

.cfp-scadenzario{
  margin-top:8px;
  position:relative;
  padding-left:22px;
}
.cfp-scadenzario::before{
  content:"";
  position:absolute;
  left:6px; top:6px; bottom:6px;
  width:1.5px;
  background:repeating-linear-gradient(to bottom, var(--paper-line) 0 5px, transparent 5px 9px);
}
.cfp-scad-item{
  position:relative;
  padding-bottom:18px;
}
.cfp-scad-item:last-child{padding-bottom:0;}
.cfp-scad-item::before{
  content:"";
  position:absolute;
  left:-22px; top:3px;
  width:11px; height:11px;
  border-radius:50%;
  background:var(--surface);
  border:2.5px solid var(--violet-deep);
}
.cfp-scad-item.muted::before{border-color:#c9c4d3;}
.cfp-scad-date{
  font-size:11px;
  font-weight:700;
  letter-spacing:.04em;
  color:var(--ink-soft);
  text-transform:uppercase;
}
.cfp-scad-title{font-size:14px; font-weight:600; color:var(--ink); margin-top:1px;}
.cfp-scad-amount{
  font-size:17px;
  font-weight:700;
  color:var(--violet-deep);
  font-variant-numeric:tabular-nums;
  margin-top:2px;
}
.cfp-scad-note{font-size:11.5px; color:var(--ink-soft); margin-top:2px;}

.cfp-actions-row{
  display:flex;
  gap:10px;
  margin-top:18px;
  flex-wrap:wrap;
}

.cfp-disclaimer{
  margin-top:8px;
  font-size:11.5px;
  color:#8d889c;
  line-height:1.55;
}
.cfp-disclaimer strong{color:var(--ink-soft);}

.cfp-cliente-form{
  background:#f6f4ef;
  border:1px solid var(--paper-line);
  border-radius:10px;
  padding:16px;
  margin-bottom:18px;
}
.cfp-cliente-form h3{
  font-size:14px;
  font-weight:700;
  color:var(--ink);
  margin:0 0 12px;
}
.cfp-cliente-form .cfp-field{margin-bottom:12px;}
.cfp-cliente-form .cfp-field:last-child{margin-bottom:0;}

@media print{
  .cfp-hero, .cfp-calc-btn, .cfp-btn-secondary, .cfp-actions-row, .cfp-cliente-form{display:none;}
  .cfp-card{box-shadow:none; border:1px solid #ddd;}
  .cfp-wrap{background:#fff;}
}
