:root{
  --pf-primary:#0f8a3b;
  --pf-primary-dark:#0a6b2d;
  --pf-primary-soft:rgba(15,138,59,.08);
  --pf-text:#111111;
  --pf-muted:rgba(0,0,0,.62);
  --pf-border:rgba(0,0,0,.10);
  --pf-border-soft:rgba(0,0,0,.06);
  --pf-bg:#ffffff;
  --pf-bg-soft:#f8faf8;
  --pf-shadow:0 16px 40px rgba(0,0,0,.08);
  --pf-radius:22px;
}

.pf-step--hidden{
  display:none !important;
}

.pf-step-actions{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  margin-top:20px;
}

.pf-btn.is-disabled{
  opacity:.5;
  pointer-events:none;
}

/* Gesamtbereich */
.pf-review{
  display:grid;
  grid-template-columns:minmax(0, 1fr);
  gap:22px;
  align-items:start;
}

@media (min-width: 980px){
  .pf-review{
    grid-template-columns:minmax(0, 1fr) 410px;
    gap:26px;
  }
}

/* Linke Seite */
.pf-review__main{
  min-width:0;
}

.pf-review__header{
  margin-bottom:14px;
}

.pf-review__eyebrow{
  font-size:13px;
  font-weight:800;
  letter-spacing:.03em;
  text-transform:uppercase;
  color:var(--pf-primary);
  margin-bottom:4px;
}

.pf-review__title{
  margin:0;
  font-size:28px;
  line-height:1.1;
  font-weight:900;
  color:var(--pf-text);
}

@media (max-width: 767px){
  .pf-review__title{
    font-size:23px;
  }
}

/* Produktliste */
.pf-items{
  display:grid;
  gap:14px;
}

.pf-item{
  display:grid;
  grid-template-columns:108px minmax(0, 1fr);
  gap:16px;
  align-items:center;
  padding:16px 18px;
  border:1px solid var(--pf-border);
  border-radius:24px;
  background:var(--pf-bg);
  box-shadow:0 8px 24px rgba(0,0,0,.03);
}

.pf-item__media{
  display:flex;
  align-items:center;
  justify-content:center;
}

.pf-item__img{
  width:96px;
  height:96px;
  border-radius:18px;
  object-fit:cover;
  background:#fff;
  border:1px solid var(--pf-border-soft);
}

.pf-item__img--ph{
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--pf-muted);
  font-size:12px;
}

.pf-item__body{
  min-width:0;
}

.pf-item__head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
}

.pf-item__title{
  font-size:18px;
  line-height:1.25;
  font-weight:850;
  color:var(--pf-text);
}

.pf-item__meta{
  margin-top:8px;
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}

.pf-item__tag{
  display:inline-flex;
  align-items:center;
  min-height:30px;
  padding:6px 10px;
  border-radius:999px;
  background:var(--pf-bg-soft);
  border:1px solid var(--pf-border-soft);
  color:var(--pf-muted);
  font-size:14px;
  line-height:1;
}

.pf-item__footer{
  margin-top:14px;
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:16px;
  flex-wrap:wrap;
}

/* Stepper ohne Box drumherum */
.pf-stepper-inline{
  display:inline-flex;
  align-items:center;
  gap:12px;
}

.pf-qty__btn{
  width:42px;
  height:42px;
  border-radius:12px;
  border:1px solid rgba(0,0,0,.12);
  background:#fff;
  color:var(--pf-text);
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:22px;
  font-weight:700;
  line-height:1;
  cursor:pointer;
  transition:transform .12s ease, background .12s ease, border-color .12s ease;
  -webkit-appearance:none;
  appearance:none;
}

.pf-qty__btn:hover{
  transform:translateY(-1px);
  background:var(--pf-primary-soft);
  border-color:rgba(15,138,59,.24);
}

.pf-qty__val{
  min-width:20px;
  text-align:center;
  font-size:24px;
  line-height:1;
  font-weight:900;
  color:var(--pf-text);
}

.pf-btn--remove{
  min-height:42px;
  padding:10px 16px;
}

/* Rechte Seite */
.pf-review__side{
  min-width:0;
}

.pf-sidecard{
  position:sticky;
  top:18px;
  border:1px solid var(--pf-border);
  border-radius:28px;
  background:
    linear-gradient(180deg, rgba(15,138,59,.04) 0%, rgba(15,138,59,0) 36%),
    #fff;
  padding:22px;
  box-shadow:var(--pf-shadow);
}

.pf-sidecard__eyebrow{
  font-size:13px;
  font-weight:800;
  letter-spacing:.03em;
  text-transform:uppercase;
  color:var(--pf-primary);
}

.pf-sidecard__title{
  margin-top:6px;
  font-size:24px;
  line-height:1.12;
  font-weight:900;
  color:var(--pf-text);
}

.pf-sidecard__text{
  margin-top:10px;
  color:var(--pf-muted);
  line-height:1.5;
  font-size:16px;
}

.pf-budgetcard{
  margin-top:18px;
  padding:16px;
  border-radius:20px;
  background:#fff;
  border:1px solid var(--pf-border-soft);
}

.pf-budgetcard__head{
  display:flex;
  flex-direction:column;
  gap:4px;
}

.pf-budgetcard__title{
  font-size:15px;
  font-weight:800;
  color:var(--pf-text);
}

.pf-budgetcard__value{
  font-size:15px;
  color:var(--pf-muted);
  font-weight:700;
}

.pf-progresswrap{
  width:100%;
  margin-top:12px;
}

.pf-progressbar{
  width:100%;
  height:16px;
  background:rgba(0,0,0,.08);
  border-radius:999px;
  overflow:hidden;
}

.pf-progressbar__fill{
  height:100%;
  width:0%;
  background:linear-gradient(90deg, var(--pf-primary-dark) 0%, var(--pf-primary) 100%);
  border-radius:999px;
  transition:width .2s ease;
}

.pf-sidecard__actions{
  margin-top:18px;
  display:flex;
  flex-direction:column;
  gap:12px;
}

.pf-linkback{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:46px;
  border-radius:999px;
  text-decoration:none;
  color:var(--pf-text);
  font-weight:700;
  background:rgba(0,0,0,.03);
  border:1px solid rgba(0,0,0,.08);
  transition:background .12s ease, transform .12s ease;
}

.pf-linkback:hover{
  background:rgba(0,0,0,.05);
  transform:translateY(-1px);
}

.pf-sidecard__hint{
  margin-top:14px;
  color:var(--pf-muted);
  font-size:13px;
  line-height:1.45;
}

/* Hinweise */
.pf-note{
  margin-top:14px;
  padding:12px 14px;
  border-radius:16px;
  font-weight:700;
  line-height:1.4;
}

.pf-note--soft{
  background:rgba(255,122,0,.08);
  border:1px solid rgba(255,122,0,.18);
  color:#8a4b00;
}

.pf-note--danger{
  background:rgba(220,38,38,.10);
  border:1px solid rgba(220,38,38,.20);
  color:#991b1b;
}

/* Empty / Error */
.pf-summary-state{
  border:1px solid var(--pf-border);
  border-radius:22px;
  background:#fff;
  padding:18px;
}

.pf-summary-state__sub{
  margin-top:6px;
  color:var(--pf-muted);
}

.pf-summary-state--error{
  border-color:rgba(220,38,38,.18);
}

/* Buttons */
.pf-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  min-height:46px;
  padding:10px 16px;
  border-radius:999px;
  border:1px solid rgba(0,0,0,.12);
  background:#fff;
  cursor:pointer;
  font:inherit;
  text-decoration:none;
  color:var(--pf-text);
  transition:transform .12s ease, box-shadow .12s ease, background .12s ease;
}

.pf-btn:hover{
  transform:translateY(-1px);
}

.pf-btn--primary{
  background:var(--pf-primary);
  border-color:var(--pf-primary);
  color:#fff;
  font-weight:800;
  box-shadow:0 10px 24px rgba(15,138,59,.18);
}

.pf-btn--primary:hover{
  background:var(--pf-primary-dark);
  border-color:var(--pf-primary-dark);
}

.pf-btn--ghost{
  background:#fff;
  border-color:rgba(0,0,0,.10);
}

.pf-btn--lg{
  width:100%;
  min-height:52px;
  font-size:16px;
}

/* Signature */
.pf-sign{
  margin-top:18px;
}

#pf-sign-canvas{
  width:100%;
  max-width:100%;
  border:1px solid rgba(0,0,0,.12);
  border-radius:14px;
  background:#fff;
}

.pf-sign__actions{
  margin-top:10px;
}

.pf-sign__hint{
  opacity:.7;
  margin-top:8px;
}

/* Mobile */
@media (max-width: 979px){
  .pf-review__side .pf-sidecard{
    position:static;
    top:auto;
  }
}

@media (max-width: 767px){
  .pf-item{
    grid-template-columns:80px minmax(0, 1fr);
    gap:12px;
    padding:14px;
    border-radius:20px;
  }

  .pf-item__img{
    width:72px;
    height:72px;
    border-radius:14px;
  }

  .pf-item__title{
    font-size:16px;
  }

  .pf-item__tag{
    font-size:13px;
  }

  .pf-item__footer{
    gap:12px;
  }

  .pf-stepper-inline{
    gap:10px;
  }

  .pf-qty__btn{
    width:40px;
    height:40px;
  }

  .pf-qty__val{
    font-size:22px;
  }

  .pf-sidecard{
    padding:18px;
    border-radius:22px;
  }

  .pf-sidecard__title{
    font-size:21px;
  }

  .pf-sidecard__text{
    font-size:15px;
  }

  .pf-step-actions{
    flex-direction:column;
    align-items:stretch;
  }

  .pf-step-actions .pf-btn{
    width:100%;
  }
}