.gv-page { padding-top: 28px; padding-bottom: 44px; }
.gv-page h1 { margin-bottom: 28px; }
.gv-configurator { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(300px, 1fr); gap: 40px; align-items: start; }
.gv-preview { position: sticky; top: 24px; container-type: inline-size; }
.gv-card {
    display: grid;
    grid-template-columns: minmax(0, 100fr) minmax(0, 110fr);
    min-height: 50cqw;
    overflow: hidden;
    border: 1px solid #dce3e8;
    border-radius: 12px;
    background: #fff;
    color: #2d3032;
    box-shadow: 0 2px 6px rgba(0, 0, 0, .16);
}
.gv-card__artwork { position: relative; min-width: 0; background: #003b5c; }
.gv-card__image { width: 100%; height: 100%; position: absolute; inset: 0; object-fit: cover; }
.gv-card__brand {
    position: absolute;
    z-index: 1;
    left: 8%;
    bottom: 7%;
    display: flex;
    align-items: flex-end;
    width: 78%;
    height: 20%;
    color: #fff;
    font-weight: 800;
    letter-spacing: .04em;
    font-size: clamp(10px, 2.7cqw, 18px);
}
.gv-card__body { display: flex; flex-direction: column; min-width: 0; padding: 9%; text-align: right; }
.gv-card__title { margin: 0; font-size: clamp(13px, 4.3cqw, 28px); font-weight: 700; line-height: 1.15; overflow-wrap: anywhere; }
.gv-card__value { display: block; margin-top: 5%; font-size: clamp(20px, 6cqw, 40px); line-height: 1.15; overflow-wrap: anywhere; }
.gv-card__code { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 5px 9px; margin-top: 13%; }
.gv-card__code-label { font-size: clamp(9px, 1.8cqw, 12px); line-height: 1.3; }
.gv-card__code-value { padding: .45em .9em; border-radius: 2em; background: #2d3032; color: #fff; font-size: clamp(10px, 2.6cqw, 17px); font-weight: 700; letter-spacing: .08em; line-height: 1.1; }
.gv-card__dedication { white-space: pre-wrap; overflow-wrap: anywhere; font-size: clamp(10px, 2cqw, 13px); margin: 9% 0 0; line-height: 1.4; }
.gv-card__dedication:empty { display: none; }
.gv-card__footer { margin-top: auto; padding-top: 9%; font-size: clamp(9px, 1.8cqw, 12px); line-height: 1.35; }
.gv-options fieldset { border: 0; padding: 0; margin: 0 0 24px; }
.gv-options legend { font-size: 17px; font-weight: 700; margin-bottom: 10px; }
.gv-values, .gv-themes { display: flex; flex-wrap: wrap; gap: 10px; }
.gv-choice { margin: 0; position: relative; cursor: pointer; }
.gv-choice input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.gv-choice > span { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 11px 16px; border: 2px solid #dce3e8; border-radius: 8px; min-height: 46px; font-weight: 600; transition: border-color .15s ease, background-color .15s ease; }
.gv-choice input:checked + span { border-color: #00aeef; background: #edfaff; }
.gv-choice input:focus-visible + span { outline: 3px solid #075277; outline-offset: 3px; }
@media (hover: hover) {
    .gv-choice:hover > span { border-color: #00aeef; background-color: #edfaff; }
    .gv-choice:hover input:checked + span { border-color: #075277; background-color: #dcf4ff; }
}
@media (prefers-reduced-motion: reduce) {
    .gv-choice > span { transition: none; }
}
.gv-choice > .gv-theme-swatch {
    width: 88px;
    height: 88px;
    padding: 0;
    border-radius: 50%;
    background: #f6f8fa;
}
.gv-theme-swatch__card {
    display: grid;
    grid-template-columns: minmax(0, 100fr) minmax(0, 110fr);
    width: 84%;
    aspect-ratio: 2 / 1;
    overflow: hidden;
    border: 1px solid #dce3e8;
    border-radius: 3px;
    background: #fff;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .14);
}
.gv-theme-swatch__artwork { position: relative; min-width: 0; }
.gv-theme-swatch__image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.gv-theme-swatch__brand { position: absolute; left: 8%; bottom: 7%; color: #fff; font-size: 3px; font-weight: 800; line-height: 1; }
.gv-theme-swatch__details { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; min-width: 0; padding: 4px; color: #2d3032; text-align: right; line-height: 1.1; }
.gv-theme-swatch__details strong { max-width: 100%; max-height: 7px; overflow: hidden; font-size: 3px; }
.gv-theme-swatch__details b { font-size: 4px; white-space: nowrap; }
.gv-theme-swatch__details i { width: 60%; height: 3px; margin-top: 2px; border-radius: 3px; background: #2d3032; }
.gv-delivery { display: flex; align-items: center; gap: 8px; min-height: 44px; margin: 0; }
.gv-checkout-option { padding-left: 0; }
.gv-checkout-option + .gv-checkout-option { border-top: 1px solid #f1f1f1; }
.gv-checkout-option .custom-control-label {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 54px;
    margin: 0;
    padding: 12px 12px 12px 42px;
    font-weight: 400;
    line-height: 1.3;
    transition: color .15s ease, background-color .15s ease;
}
.gv-checkout-option .custom-control-label::before,
.gv-checkout-option .custom-control-label::after {
    left: 12px;
    top: 50%;
    transform: translateY(-50%);
}
.gv-checkout-option .custom-control-input:checked ~ .custom-control-label {
    color: #01aced;
    font-weight: 700;
    background-color: #f5f7fb;
}
.gv-checkout-option__icon { flex: 0 0 30px; font-size: 24px; text-align: center; }
@media (prefers-reduced-motion: reduce) {
    .gv-checkout-option .custom-control-label { transition: none; }
}
.gv-help { display: block; font-size: 13px; color: #59646e; margin-top: 12px; }
.gv-error { margin-top: 14px; }
.gv-information { max-width: 75ch; margin-top: 36px; line-height: 1.7; }
.gv-information h2 { margin: 28px 0 12px; }
.gv-information__text { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.gv-basket-product { width: 100%; min-width: 0; }
.gv-line-summary { margin-top: 6px; font-size: 12px; color: #59646e; white-space: normal; overflow-wrap: anywhere; }
.gv-line-summary span { display: block; }
.gv-line-summary__dedication { white-space: pre-wrap; }
.gv-payment { margin: 12px 0; }
@media (max-width: 991px) {
    .basket-shipping-status__content > .calendar.basket-delivery-summary.gv-digital-delivery { max-width: 100%; white-space: normal; }
    .gv-configurator { grid-template-columns: 1fr; gap: 24px; }
    .gv-preview { position: static; width: 100%; max-width: 620px; margin: 0 auto; }
}
