/* =========================================================
   Checkout — Chave Vertical
   Layout focado em conversão, leitura e confiança.
   Mantém intacta a lógica nativa do WooCommerce.
   ========================================================= */

body.woocommerce-checkout:not(.woocommerce-order-received) .cvl-woocommerce-shell{
  width:min(var(--cvl-shell),1460px);
  padding-top:30px;
}

body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-breadcrumb{
  margin-bottom:18px;
  color:#7b878e;
  font-size:11px;
}

body.woocommerce-checkout:not(.woocommerce-order-received) .entry-title,
body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce > h1{
  margin:0 0 26px;
  color:var(--cvl-ink);
  font-size:clamp(30px,3vw,42px);
  line-height:1.08;
  letter-spacing:-.035em;
}

body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-notices-wrapper,
body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-form-login-toggle,
body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-form-coupon-toggle{
  max-width:100%;
}

body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-info,
body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-message,
body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-error{
  margin:0 0 16px!important;
  padding:14px 18px 14px 46px!important;
  border:1px solid #dce7e5!important;
  border-top:1px solid #dce7e5!important;
  border-radius:8px;
  background:#f7fbfa;
  color:#324148;
  font-size:12px;
  line-height:1.55;
}

body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-info::before,
body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-message::before{
  top:14px;
  color:var(--cvl-teal)!important;
}

body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-error{
  border-color:#f0d4d4!important;
  background:#fff7f7;
}

body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-form-login,
body.woocommerce-checkout:not(.woocommerce-order-received) .checkout_coupon{
  margin:0 0 22px!important;
  padding:20px!important;
  border:1px solid var(--cvl-line)!important;
  border-radius:10px!important;
  background:#fff;
  box-shadow:0 8px 28px rgba(16,24,32,.04);
}

body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout.woocommerce-checkout{
  display:grid;
  grid-template-columns:minmax(0,1.2fr) minmax(390px,.8fr);
  gap:0 38px;
  align-items:start;
}

body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout > .woocommerce-NoticeGroup{
  grid-column:1/-1;
  margin-bottom:18px;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #customer_details{
  grid-column:1;
  grid-row:2 / span 2;
  display:block!important;
  min-width:0;
  padding:30px;
  border:1px solid var(--cvl-line);
  border-radius:12px;
  background:#fff;
  box-shadow:0 12px 34px rgba(16,24,32,.05);
}

body.woocommerce-checkout:not(.woocommerce-order-received) #customer_details .col-1,
body.woocommerce-checkout:not(.woocommerce-order-received) #customer_details .col-2{
  float:none!important;
  width:100%!important;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #customer_details .col-2{
  margin-top:28px;
  padding-top:28px;
  border-top:1px solid #edf0f1;
}

body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-billing-fields > h3,
body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-additional-fields > h3,
body.woocommerce-checkout:not(.woocommerce-order-received) #ship-to-different-address{
  margin:0 0 22px!important;
  color:var(--cvl-ink);
  font-size:20px!important;
  font-weight:900;
  line-height:1.25;
  letter-spacing:-.02em;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #ship-to-different-address label{
  display:flex;
  align-items:center;
  gap:9px;
  cursor:pointer;
  font-size:14px;
}

body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-billing-fields__field-wrapper,
body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-shipping-fields__field-wrapper,
body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-additional-fields__field-wrapper{
  display:flex;
  flex-wrap:wrap;
  margin-inline:-6px;
}

body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce form .form-row,
body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout .form-row{
  float:none;
  width:100%;
  margin:0 0 16px;
  padding-inline:6px;
}

body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout .form-row-first,
body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout .form-row-last{
  width:50%;
}

body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout .form-row label{
  margin:0 0 7px;
  color:#425058;
  font-size:11px;
  font-weight:900;
  letter-spacing:.015em;
}

body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout .form-row label .required{
  color:var(--cvl-red);
}

body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout input.input-text,
body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout textarea,
body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout select,
body.woocommerce-checkout:not(.woocommerce-order-received) .select2-container .select2-selection--single{
  min-height:48px;
  border:1px solid #cfd7db;
  border-radius:7px;
  background:#fff;
  color:var(--cvl-ink);
  font-size:13px;
  transition:border-color .15s ease,box-shadow .15s ease,background .15s ease;
}

body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout textarea{
  min-height:104px;
  resize:vertical;
}

body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout input.input-text:hover,
body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout textarea:hover,
body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout select:hover,
body.woocommerce-checkout:not(.woocommerce-order-received) .select2-container .select2-selection--single:hover{
  border-color:#aebbc1;
}

body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout input.input-text:focus,
body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout textarea:focus,
body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout select:focus,
body.woocommerce-checkout:not(.woocommerce-order-received) .select2-container--focus .select2-selection--single{
  border-color:var(--cvl-teal)!important;
  outline:0;
  box-shadow:0 0 0 3px rgba(0,114,103,.10)!important;
}

body.woocommerce-checkout:not(.woocommerce-order-received) .select2-container .select2-selection--single{
  padding:9px 12px;
}

body.woocommerce-checkout:not(.woocommerce-order-received) .select2-container--default .select2-selection--single .select2-selection__rendered{
  padding:0;
  line-height:28px;
}

body.woocommerce-checkout:not(.woocommerce-order-received) .select2-container--default .select2-selection--single .select2-selection__arrow{
  height:46px;
  right:7px;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #order_review_heading{
  grid-column:2;
  grid-row:2;
  margin:0!important;
  padding:23px 24px 16px;
  border:1px solid var(--cvl-line);
  border-bottom:0;
  border-radius:12px 12px 0 0;
  background:#fff;
  color:var(--cvl-ink);
  font-size:19px!important;
  font-weight:900;
  line-height:1.25;
  letter-spacing:-.02em;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #order_review{
  grid-column:2;
  grid-row:3;
  position:sticky;
  top:132px;
  min-width:0;
  padding:0 24px 24px;
  border:1px solid var(--cvl-line);
  border-top:0;
  border-radius:0 0 12px 12px;
  background:#fff;
  box-shadow:0 12px 34px rgba(16,24,32,.06);
}

body.woocommerce-checkout:not(.woocommerce-order-received) #order_review table.shop_table{
  margin:0 0 20px!important;
  border:0!important;
  border-collapse:collapse;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #order_review table.shop_table th,
body.woocommerce-checkout:not(.woocommerce-order-received) #order_review table.shop_table td{
  padding:13px 0!important;
  border:0!important;
  border-bottom:1px solid #edf0f1!important;
  background:#fff!important;
  color:#354149;
  font-size:12px;
  line-height:1.45;
  vertical-align:top;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #order_review table.shop_table thead th{
  padding-top:4px!important;
  color:#78848b;
  font-size:9px;
  font-weight:900;
  letter-spacing:.075em;
  text-transform:uppercase;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #order_review table.shop_table th:last-child,
body.woocommerce-checkout:not(.woocommerce-order-received) #order_review table.shop_table td:last-child{
  padding-left:18px!important;
  text-align:right;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #order_review .product-name{
  color:#27343b;
  font-weight:700;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #order_review .product-quantity{
  color:#7a858c;
  font-weight:700;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #order_review .cart-subtotal th,
body.woocommerce-checkout:not(.woocommerce-order-received) #order_review .shipping th{
  font-weight:800;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #order_review .order-total th,
body.woocommerce-checkout:not(.woocommerce-order-received) #order_review .order-total td{
  padding-top:17px!important;
  border-bottom:0!important;
  color:var(--cvl-ink);
  font-size:15px;
  font-weight:900;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #order_review .order-total .amount{
  color:var(--cvl-commercial-green);
  font-size:22px;
  letter-spacing:-.02em;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #order_review .woocommerce-shipping-methods{
  margin:0;
  padding:0;
  list-style:none;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #order_review .woocommerce-shipping-methods li{
  margin:5px 0;
  text-align:left;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #order_review .woocommerce-shipping-methods label{
  cursor:pointer;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #payment{
  margin-top:4px;
  border-radius:10px!important;
  background:#f6f8f8!important;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #payment ul.payment_methods{
  padding:16px!important;
  border-bottom:1px solid #e1e6e8!important;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #payment ul.payment_methods > li{
  margin:0 0 9px!important;
  padding:13px 14px;
  border:1px solid #dce2e5;
  border-radius:8px;
  background:#fff;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #payment ul.payment_methods > li:last-child{
  margin-bottom:0!important;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #payment ul.payment_methods li > label{
  cursor:pointer;
  color:#26343b;
  font-size:12px;
  font-weight:900;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #payment .payment_box{
  margin:12px -3px 0!important;
  padding:13px!important;
  border-radius:6px!important;
  background:#f1f5f4!important;
  color:#546169;
  font-size:11px;
  line-height:1.55;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #payment .payment_box::before{
  border-bottom-color:#f1f5f4!important;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #payment .place-order{
  margin:0!important;
  padding:18px 16px 16px!important;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #payment .place-order .woocommerce-privacy-policy-text,
body.woocommerce-checkout:not(.woocommerce-order-received) #payment .place-order .woocommerce-terms-and-conditions-wrapper{
  color:#69757c;
  font-size:10px;
  line-height:1.55;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #payment .place-order a{
  color:var(--cvl-teal-dark);
  font-weight:800;
  text-decoration:underline;
  text-underline-offset:2px;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #place_order{
  width:100%;
  min-height:56px;
  margin-top:12px;
  padding:13px 20px!important;
  border-radius:7px!important;
  background:var(--cvl-commercial-green)!important;
  box-shadow:0 8px 18px rgba(0,154,86,.18);
  font-size:13px!important;
  font-weight:900!important;
  letter-spacing:.015em;
  transition:transform .15s ease,background .15s ease,box-shadow .15s ease;
}

body.woocommerce-checkout:not(.woocommerce-order-received) #place_order:hover{
  transform:translateY(-1px);
  background:var(--cvl-commercial-green-dark)!important;
  box-shadow:0 10px 22px rgba(0,154,86,.23);
}

body.woocommerce-checkout:not(.woocommerce-order-received) #place_order:focus-visible{
  outline:3px solid rgba(0,154,86,.25);
  outline-offset:3px;
}

body.woocommerce-checkout:not(.woocommerce-order-received) input[type="checkbox"],
body.woocommerce-checkout:not(.woocommerce-order-received) input[type="radio"]{
  accent-color:var(--cvl-teal);
}

body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-terms-and-conditions{
  margin:10px 0!important;
  padding:14px!important;
  border:1px solid var(--cvl-line)!important;
  border-radius:7px;
  background:#fff!important;
  font-size:11px;
}

@media(max-width:1100px){
  body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout.woocommerce-checkout{
    grid-template-columns:minmax(0,1fr) 360px;
    gap:0 26px;
  }

  body.woocommerce-checkout:not(.woocommerce-order-received) #customer_details{
    padding:24px;
  }

  body.woocommerce-checkout:not(.woocommerce-order-received) #order_review_heading{
    padding-inline:20px;
  }

  body.woocommerce-checkout:not(.woocommerce-order-received) #order_review{
    padding-inline:20px;
  }
}

@media(max-width:900px){
  body.woocommerce-checkout:not(.woocommerce-order-received) .cvl-woocommerce-shell{
    padding-top:24px;
  }

  body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout.woocommerce-checkout{
    display:block;
  }

  body.woocommerce-checkout:not(.woocommerce-order-received) #customer_details{
    margin-bottom:24px;
  }

  body.woocommerce-checkout:not(.woocommerce-order-received) #order_review_heading{
    padding:22px 22px 14px;
  }

  body.woocommerce-checkout:not(.woocommerce-order-received) #order_review{
    position:static;
    padding:0 22px 22px;
  }
}

@media(max-width:640px){
  body.woocommerce-checkout:not(.woocommerce-order-received) .cvl-woocommerce-shell{
    padding-block:20px 46px;
  }

  body.woocommerce-checkout:not(.woocommerce-order-received) .entry-title,
  body.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce > h1{
    margin-bottom:20px;
    font-size:30px;
  }

  body.woocommerce-checkout:not(.woocommerce-order-received) #customer_details{
    margin-inline:-2px;
    padding:20px 16px;
    border-radius:9px;
    box-shadow:none;
  }

  body.woocommerce-checkout:not(.woocommerce-order-received) #customer_details .col-2{
    margin-top:22px;
    padding-top:22px;
  }

  body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout .form-row-first,
  body.woocommerce-checkout:not(.woocommerce-order-received) form.checkout .form-row-last{
    width:100%;
  }

  body.woocommerce-checkout:not(.woocommerce-order-received) #order_review_heading{
    padding:20px 16px 12px;
    border-radius:9px 9px 0 0;
  }

  body.woocommerce-checkout:not(.woocommerce-order-received) #order_review{
    padding:0 16px 18px;
    border-radius:0 0 9px 9px;
    box-shadow:none;
  }

  body.woocommerce-checkout:not(.woocommerce-order-received) #payment ul.payment_methods{
    padding:12px!important;
  }

  body.woocommerce-checkout:not(.woocommerce-order-received) #payment .place-order{
    padding:16px 12px 12px!important;
  }

  body.woocommerce-checkout:not(.woocommerce-order-received) #place_order{
    min-height:54px;
  }
}

/* =========================================================
   Dados de faturacao: Particular (NIF) ou Empresa (NIPC)
   Este desenho aplica-se apenas ao checkout classico.
   ========================================================= */

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout #billing_customer_type_field {
  width:100%;
  margin:0 0 23px;
  padding:0 6px 20px;
  border-bottom:1px solid #e7eaee;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout #billing_customer_type_field > label {
  display:block;
  margin:0 0 12px;
  color:#26343c;
  font-size:12px;
  font-weight:800;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout #billing_customer_type_field .woocommerce-input-wrapper {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:11px;
  position:relative;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout #billing_customer_type_field input[type="radio"] {
  position:absolute;
  opacity:0;
  width:1px;
  height:1px;
  margin:0;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout #billing_customer_type_field label.radio {
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:53px;
  margin:0!important;
  padding:13px 16px;
  border:1px solid #cfd7db;
  border-radius:8px;
  background:#fff;
  color:#273841;
  font-size:13px;
  font-weight:800;
  letter-spacing:0;
  cursor:pointer;
  transition:background .15s ease,border-color .15s ease,box-shadow .15s ease;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout #billing_customer_type_field label.radio .required {
  display:none;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout #billing_customer_type_field input[type="radio"]:checked + label.radio {
  border-color:var(--cvl-teal,#08776e);
  background:#eef9f7;
  color:#065a52;
  box-shadow:inset 0 0 0 1px var(--cvl-teal,#08776e);
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout #billing_customer_type_field input[type="radio"]:focus-visible + label.radio {
  outline:3px solid rgba(0,126,112,.32);
  outline-offset:2px;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-fiscal-conditional .optional {
  display:none!important;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-fiscal-conditional.cvl-fiscal-required > label:first-child::after {
  content:" *";
  color:var(--cvl-red,#d71920);
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout.cvl-customer-fields-ready .cvl-fiscal-conditional.cvl-fiscal-hidden {
  display:none!important;
}

@media (max-width:420px) {
  body.woocommerce-checkout:not(.woocommerce-order-received)
    form.checkout #billing_customer_type_field .woocommerce-input-wrapper {
    gap:8px;
  }

  body.woocommerce-checkout:not(.woocommerce-order-received)
    form.checkout #billing_customer_type_field label.radio {
    min-height:49px;
    padding:10px 9px;
  }
}

/* Estado informativo do NIF/NIPC: validação imediata e acessível. */
body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-fiscal-feedback {
  display:block;
  margin-top:6px;
  font-size:11px;
  line-height:1.5;
  color:#bc2633;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-fiscal-feedback:empty {
  display:none;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-fiscal-invalid input.input-text {
  border-color:#bc2633!important;
  background:#fff9f9!important;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-fiscal-conditional .description {
  display:block;
  margin-top:6px;
  font-size:11px;
  line-height:1.55;
  color:#6a7885;
}


/* VIES: uma ajuda na faturação, nunca um requisito para a encomenda. */
body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout #billing_nipc_field .cvl-vies-controls {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:9px 13px;
  margin-top:11px;
  width:100%;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout #billing_nipc_field.cvl-vies-unsupported .cvl-vies-controls {
  display:none!important;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout #billing_nipc_field .cvl-vies-button {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:40px;
  padding:9px 15px;
  border:1px solid #007769;
  border-radius:7px;
  background:#f0faf8;
  color:#006c60;
  font-size:12px;
  font-weight:800;
  letter-spacing:0;
  line-height:1.3;
  white-space:nowrap;
  box-shadow:none;
  cursor:pointer;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout #billing_nipc_field .cvl-vies-button:hover {
  background:#e2f6f1;
  border-color:#005b50;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout #billing_nipc_field .cvl-vies-button:focus-visible {
  outline:3px solid rgba(0,119,105,.23);
  outline-offset:2px;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout #billing_nipc_field .cvl-vies-button:disabled {
  opacity:.65;
  cursor:wait;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-vies-message {
  display:block;
  flex:1 1 100%;
  font-size:11px;
  line-height:1.5;
  color:#637184;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-vies-message:empty {
  display:none;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-vies-message.is-success {
  color:#006e5d;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-vies-message.is-warning {
  color:#a84d13;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-vies-profile {
  display:block;
  width:100%;
  margin:12px 0 1px;
  padding:13px 14px;
  border:1px solid #d7e7e1;
  border-radius:8px;
  background:#f6fbf9;
  color:#2e4246;
  font-size:12px;
  line-height:1.6;
  white-space:normal;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-vies-profile[hidden] {
  display:none!important;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-vies-profile > strong,
body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-vies-profile > span,
body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-vies-profile > small {
  display:block;
  margin:0 0 5px;
  overflow-wrap:anywhere;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-vies-profile > small {
  color:#5b6c74;
  margin-bottom:0;
}


/* Códigos postais PT: leitura imediata, separados por faturação e entrega. */
body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout #billing_postcode_field .cvl-postcode-help,
body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout #shipping_postcode_field .cvl-postcode-help {
  display:block;
  margin:8px 0 0;
  color:#6a7885;
  font-size:11px;
  line-height:1.55;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-postcode-help a {
  color:var(--cvl-teal,#00776b);
  font-weight:750;
  text-decoration:underline;
  text-underline-offset:2px;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-postcode-error {
  display:block;
  margin-top:6px;
  color:#b42336;
  font-size:11px;
  line-height:1.5;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-postcode-error:empty {
  display:none;
}

body.woocommerce-checkout:not(.woocommerce-order-received)
  form.checkout .cvl-postcode-invalid input.input-text {
  border-color:#b42336!important;
  background:#fff9fa!important;
}


/* WooCommerce Checkout Blocks: ajuda não intrusiva, com dados separados. */
body.woocommerce-checkout .wc-block-checkout .cvl-postcode-block-help {
  display:block;
  margin:0 0 15px;
  padding:0 3px;
  font-size:11px;
  line-height:1.55;
  color:#657484;
}

body.woocommerce-checkout .wc-block-checkout .cvl-postcode-block-help[hidden] {
  display:none!important;
}

body.woocommerce-checkout .wc-block-checkout .cvl-postcode-block-help a {
  color:var(--cvl-teal,#00776b);
  font-weight:750;
  text-decoration:underline;
  text-underline-offset:2px;
}

body.woocommerce-checkout .wc-block-checkout .cvl-postcode-block-error {
  display:block;
  margin-top:5px;
  color:#b42336;
  font-size:11px;
  line-height:1.45;
}

body.woocommerce-checkout .wc-block-checkout .cvl-postcode-block-error:empty {
  display:none;
}

body.woocommerce-checkout .wc-block-checkout .cvl-postcode-block-help.is-invalid {
  border-left:2px solid #b42336;
  padding-left:11px;
}


/* Localidade sugerida automaticamente a partir do código postal. */
body.woocommerce-checkout .cvl-postcode-locality-status {
  display:block;
  margin:5px 0 13px;
  color:#526978;
  font-size:11px;
  line-height:1.5;
  overflow-wrap:anywhere;
}

body.woocommerce-checkout .cvl-postcode-locality-status[hidden] {
  display:none!important;
}

body.woocommerce-checkout .cvl-postcode-locality-status.is-loading {
  color:#63788b;
}

body.woocommerce-checkout .cvl-postcode-locality-status.is-success {
  color:#126347;
}

body.woocommerce-checkout .cvl-postcode-locality-status.is-notice {
  color:#7b5d26;
}

/* Dentro dos Checkout Blocks, o campo continua totalmente editável. */
body.woocommerce-checkout .wc-block-checkout .cvl-postcode-locality-status {
  padding:0 3px;
}


/* ============================================================
   Faturação primeiro — checkout WooCommerce Blocks
   A cópia para entrega é tratada pelo store oficial, não pelo DOM.
   ============================================================ */

/* O controlo nativo inverte o sentido pedido (Envio -> Faturação).
   Ocultá-lo APENAS depois de confirmar que a faturação independente
   está ativa. O controlo efetivo fica na secção Dados de faturação. */
body.cvl-billing-first-active.woocommerce-checkout
  .wc-block-checkout .wc-block-checkout__use-address-for-billing {
  display:none!important;
}

/* O cliente escolheu "Usar a mesma morada de faturação para entrega":
   apenas ocultar os inputs duplicados; métodos de transporte continuam. */
body.cvl-billing-first-active.cvl-use-billing-for-shipping.woocommerce-checkout
  .wc-block-checkout .wp-block-woocommerce-checkout-shipping-address-block {
  display:none!important;
}

/* Evitar disponibilizar a opção de entrega em encomendas digitais/levantamento. */
body.cvl-billing-first-active.cvl-delivery-unavailable.woocommerce-checkout
  .wc-block-checkout #order-cvl-fiscal-use-billing-for-shipping {
  display:none!important;
}

body.cvl-billing-first-active.woocommerce-checkout
  .wc-block-checkout label[for="order-cvl-fiscal-use-billing-for-shipping"] {
  display:inline-block;
  font-weight:700;
  color:#25353e;
}

/* Identificação fiscal integra visualmente a faturação. */
body.cvl-billing-first-active.woocommerce-checkout
  .wc-block-checkout .wp-block-woocommerce-checkout-additional-information-block {
  margin-top:5px;
  margin-bottom:18px;
}

body.cvl-billing-first-active.woocommerce-checkout
  .wc-block-checkout .wp-block-woocommerce-checkout-additional-information-block
  .wc-block-components-title {
  margin-bottom:12px;
}


/* ================================================================
   Faturação: Particular / Empresa com bolinhas e dados ao lado
   Woo Blocks mantém SELECT nativo, obrigatório e validado pelo servidor.
   ================================================================ */
body.woocommerce-checkout .wc-block-checkout
  #order.cvl-fiscal-radio-layout {
  display:grid!important;
  grid-template-columns:minmax(180px, 0.85fr) minmax(0, 1.45fr)!important;
  gap:11px 22px!important;
  align-items:start;
  width:100%;
}

body.woocommerce-checkout .wc-block-checkout
  #order.cvl-fiscal-radio-layout > .cvl-fiscal-native-select-hidden {
  position:absolute!important;
  top:auto!important;
  left:-10000px!important;
  width:1px!important;
  height:1px!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  opacity:0!important;
  overflow:hidden!important;
  clip-path:inset(50%)!important;
  pointer-events:none!important;
}

body.woocommerce-checkout .wc-block-checkout
  #order.cvl-fiscal-radio-layout > .cvl-fiscal-customer-radios {
  grid-column:1!important;
  grid-row:1 / span 2!important;
  min-width:0;
  width:100%;
  margin:0;
  padding:0;
  border:0;
  background:transparent;
}

body.woocommerce-checkout .wc-block-checkout
  .cvl-fiscal-customer-radios__legend {
  display:block;
  float:none;
  width:100%;
  margin:0 0 10px;
  padding:0;
  color:#263842;
  font-size:13px;
  font-weight:800;
  line-height:1.4;
}

body.woocommerce-checkout .wc-block-checkout
  .cvl-fiscal-customer-radios__required {
  color:#c62036;
  font-weight:900;
}

body.woocommerce-checkout .wc-block-checkout
  .cvl-fiscal-customer-radios__options {
  display:flex;
  flex-direction:column;
  gap:9px;
}

body.woocommerce-checkout .wc-block-checkout
  .cvl-fiscal-customer-radios__option {
  display:flex;
  align-items:center;
  gap:11px;
  width:100%;
  min-height:53px;
  margin:0;
  padding:11px 14px;
  border:1px solid #d4dce0;
  border-radius:7px;
  background:#fff;
  color:#23343c;
  font-size:13px;
  font-weight:750;
  letter-spacing:0;
  cursor:pointer;
  transition:border-color .15s ease,background .15s ease;
}

body.woocommerce-checkout .wc-block-checkout
  .cvl-fiscal-customer-radios__option:has(input:checked) {
  border-color:var(--cvl-teal,#08776e);
  background:#f0faf8;
}

body.woocommerce-checkout .wc-block-checkout
  .cvl-fiscal-customer-radios__option:has(input:focus-visible) {
  outline:3px solid rgba(0,119,105,.25);
  outline-offset:2px;
}

body.woocommerce-checkout .wc-block-checkout
  .cvl-fiscal-customer-radios__input {
  display:block!important;
  flex:0 0 17px;
  width:17px!important;
  height:17px!important;
  min-width:17px;
  margin:0!important;
  accent-color:var(--cvl-teal,#08776e);
  cursor:pointer;
}

body.woocommerce-checkout .wc-block-checkout
  .cvl-fiscal-customer-radios__error {
  margin:9px 0 0;
  color:#b42336;
  font-size:12px;
  line-height:1.45;
}

body.woocommerce-checkout .wc-block-checkout
  .cvl-fiscal-customer-radios__error[hidden] {
  display:none!important;
}

body.woocommerce-checkout .wc-block-checkout
  .cvl-fiscal-choice-invalid .cvl-fiscal-customer-radios__option {
  border-color:#c62438;
}

body.woocommerce-checkout .wc-block-checkout
  #order.cvl-fiscal-radio-layout >
  .wc-block-components-text-input.wc-block-components-address-form__cvl-fiscal-nif,
body.woocommerce-checkout .wc-block-checkout
  #order.cvl-fiscal-radio-layout >
  .wc-block-components-text-input.wc-block-components-address-form__cvl-fiscal-company-name {
  grid-column:2!important;
  grid-row:1!important;
  min-width:0;
  width:100%;
  margin:0!important;
}

body.woocommerce-checkout .wc-block-checkout
  #order.cvl-fiscal-radio-layout >
  .wc-block-components-text-input.wc-block-components-address-form__cvl-fiscal-nipc {
  grid-column:2!important;
  grid-row:2!important;
  min-width:0;
  width:100%;
  margin:0!important;
}

body.woocommerce-checkout .wc-block-checkout
  #order.cvl-fiscal-radio-layout >
  .wc-block-components-checkbox.wc-block-components-address-form__cvl-fiscal-use-billing-for-shipping {
  grid-column:1 / -1!important;
  grid-row:3!important;
  width:100%;
  margin:12px 0 0;
}

/* A seleção é sempre obrigatória, mas os campos não selecionados nunca
   ficam visíveis. O estado efetivo é controlado pelo WooCommerce. */
@media (max-width:700px) {
  body.woocommerce-checkout .wc-block-checkout
    #order.cvl-fiscal-radio-layout {
    grid-template-columns:minmax(0,1fr)!important;
    gap:13px!important;
  }

  body.woocommerce-checkout .wc-block-checkout
    #order.cvl-fiscal-radio-layout > .cvl-fiscal-customer-radios {
    grid-column:1!important;
    grid-row:1!important;
  }

  body.woocommerce-checkout .wc-block-checkout
    .cvl-fiscal-customer-radios__options {
    flex-direction:row;
    gap:10px;
  }

  body.woocommerce-checkout .wc-block-checkout
    .cvl-fiscal-customer-radios__option {
    justify-content:center;
    min-width:0;
    padding:10px;
    min-height:48px;
  }

  body.woocommerce-checkout .wc-block-checkout
    #order.cvl-fiscal-radio-layout >
    .wc-block-components-text-input.wc-block-components-address-form__cvl-fiscal-nif,
  body.woocommerce-checkout .wc-block-checkout
    #order.cvl-fiscal-radio-layout >
    .wc-block-components-text-input.wc-block-components-address-form__cvl-fiscal-company-name {
    grid-column:1!important;
    grid-row:2!important;
  }

  body.woocommerce-checkout .wc-block-checkout
    #order.cvl-fiscal-radio-layout >
    .wc-block-components-text-input.wc-block-components-address-form__cvl-fiscal-nipc {
    grid-column:1!important;
    grid-row:3!important;
  }

  body.woocommerce-checkout .wc-block-checkout
    #order.cvl-fiscal-radio-layout >
    .wc-block-components-checkbox.wc-block-components-address-form__cvl-fiscal-use-billing-for-shipping {
    grid-column:1!important;
    grid-row:4!important;
    margin-top:4px;
  }
}


/* ============================================================
   Nome completo único — faturação e entrega, WooCommerce Blocks.
   Esconde o par nativo apenas quando o substituto foi montado.
   Os dois campos obrigatórios continuam sincronizados no store.
   ============================================================ */
body.woocommerce-checkout .wc-block-checkout
  #billing.cvl-full-name-enabled > .wc-block-components-address-form__first_name,
body.woocommerce-checkout .wc-block-checkout
  #billing.cvl-full-name-enabled > .wc-block-components-address-form__last_name,
body.woocommerce-checkout .wc-block-checkout
  #shipping.cvl-full-name-enabled > .wc-block-components-address-form__first_name,
body.woocommerce-checkout .wc-block-checkout
  #shipping.cvl-full-name-enabled > .wc-block-components-address-form__last_name {
  display:none!important;
}

body.woocommerce-checkout .wc-block-checkout
  .cvl-full-name-field {
  display:flex;
  flex-direction:column;
  grid-column:1 / -1!important;
  min-width:0;
  width:100%;
  margin:0 0 15px;
  padding:0;
}

body.woocommerce-checkout .wc-block-checkout
  .cvl-full-name-label {
  margin:0 0 7px;
  color:#283740;
  font-size:13px;
  font-weight:650;
  line-height:1.4;
}

body.woocommerce-checkout .wc-block-checkout
  .cvl-full-name-required {
  color:#c22138;
  font-weight:800;
}

body.woocommerce-checkout .wc-block-checkout
  .cvl-full-name-input {
  box-sizing:border-box;
  width:100%!important;
  min-width:0;
  height:48px;
  padding:10px 14px;
  background:#fff;
  color:#273943;
  border:1px solid #909ca5;
  border-radius:5px;
  box-shadow:none;
  font-family:inherit;
  font-size:14px;
  line-height:1.4;
  transition:border-color .15s ease,box-shadow .15s ease;
}

body.woocommerce-checkout .wc-block-checkout
  .cvl-full-name-input:focus-visible {
  border-color:var(--cvl-teal,#08776e);
  box-shadow:0 0 0 2px rgba(8,119,110,.15);
  outline:none;
}

body.woocommerce-checkout .wc-block-checkout
  .cvl-full-name-invalid .cvl-full-name-input {
  border-color:#bb233a;
}

body.woocommerce-checkout .wc-block-checkout
  .cvl-full-name-message {
  display:block;
  color:#bb233a;
  font-size:12px;
  line-height:1.5;
  margin-top:6px;
}

body.woocommerce-checkout .wc-block-checkout
  .cvl-full-name-message:empty {
  display:none;
}


/* CV checkout Blocks: alinhamento fiscal e pagamento na coluna direita. */
/* Titulos dos dois grupos na mesma linha, com opcoes alinhadas aos inputs. */
@media (min-width:701px){
  body.woocommerce-checkout .wc-block-checkout #order.cvl-fiscal-radio-layout {
    grid-template-rows:auto auto auto auto!important;
    gap:10px 22px!important;
  }
  body.woocommerce-checkout .wc-block-checkout #order.cvl-fiscal-radio-layout
    > .cvl-fiscal-customer-radios {
    grid-column:1!important;
    grid-row:1 / span 3!important;
  }
  body.woocommerce-checkout .wc-block-checkout #order.cvl-fiscal-radio-layout
    > .cvl-fiscal-fields-heading {
    grid-column:2!important;
    grid-row:1!important;
    display:block;
    margin:0;
    padding:0;
    color:#263842;
    font-size:13px;
    font-weight:800;
    line-height:1.4;
  }
  body.woocommerce-checkout .wc-block-checkout #order.cvl-fiscal-radio-layout
    > .cvl-fiscal-fields-heading[hidden] {
    display:none!important;
  }
  body.woocommerce-checkout .wc-block-checkout #order.cvl-fiscal-radio-layout
    > .wc-block-components-text-input.wc-block-components-address-form__cvl-fiscal-company-name,
  body.woocommerce-checkout .wc-block-checkout #order.cvl-fiscal-radio-layout
    > .wc-block-components-text-input.wc-block-components-address-form__cvl-fiscal-nif {
    grid-column:2!important;
    grid-row:2!important;
  }
  body.woocommerce-checkout .wc-block-checkout #order.cvl-fiscal-radio-layout
    > .wc-block-components-text-input.wc-block-components-address-form__cvl-fiscal-nipc {
    grid-column:2!important;
    grid-row:3!important;
  }
  body.woocommerce-checkout .wc-block-checkout #order.cvl-fiscal-radio-layout
    > .wc-block-components-checkbox.wc-block-components-address-form__cvl-fiscal-use-billing-for-shipping {
    grid-column:1 / -1!important;
    grid-row:4!important;
  }
}
@media (max-width:700px){
  /* Na vista de uma coluna, o titulo redundante desaparece. */
  body.woocommerce-checkout .wc-block-checkout #order.cvl-fiscal-radio-layout
    > .cvl-fiscal-fields-heading {
    display:none!important;
  }
}

/* Apenas reposicionamento VISUAL: o WooCommerce mantem os componentes React,
   os meios de pagamento, os termos e o botao dentro do formulario original. */
@media (min-width:1100px){
  body.cvl-checkout-payment-right.woocommerce-checkout
    .wc-block-components-sidebar-layout.wc-block-checkout {
    position:relative!important;
    min-height:var(--cvl-payment-side-min-height,auto)!important;
  }
  body.cvl-checkout-payment-right.woocommerce-checkout
    .wc-block-components-sidebar-layout.wc-block-checkout > .wc-block-checkout__sidebar {
    position:static!important;
  }
  body.cvl-checkout-payment-right.woocommerce-checkout
    .wc-block-components-sidebar-layout.wc-block-checkout #payment-method,
  body.cvl-checkout-payment-right.woocommerce-checkout
    .wc-block-components-sidebar-layout.wc-block-checkout .wc-block-checkout__terms,
  body.cvl-checkout-payment-right.woocommerce-checkout
    .wc-block-components-sidebar-layout.wc-block-checkout .wc-block-checkout__actions {
    position:absolute!important;
    box-sizing:border-box!important;
    left:var(--cvl-payment-side-left)!important;
    width:var(--cvl-payment-side-width)!important;
    max-width:var(--cvl-payment-side-width)!important;
    min-width:0!important;
    margin:0!important;
  }
  body.cvl-checkout-payment-right.woocommerce-checkout
    .wc-block-components-sidebar-layout.wc-block-checkout #payment-method {
    top:var(--cvl-payment-side-top)!important;
  }
  body.cvl-checkout-payment-right.woocommerce-checkout
    .wc-block-components-sidebar-layout.wc-block-checkout .wc-block-checkout__terms {
    top:var(--cvl-payment-terms-top)!important;
  }
  body.cvl-checkout-payment-right.woocommerce-checkout
    .wc-block-components-sidebar-layout.wc-block-checkout .wc-block-checkout__actions {
    top:var(--cvl-payment-actions-top)!important;
  }
}
