/* Public campaign experience. Keep this file mirrored in public/build/public-campaign.css. */
.public-body-campaign{
    --campaign-primary:#ff8a5b;
    --campaign-accent:#ff6a3a;
    background:
        radial-gradient(circle at 50% -12rem,color-mix(in srgb,var(--campaign-primary) 11%,transparent),transparent 32rem),
        #f7f7f5;
}
.public-main-campaign{
    width:min(100% - 2rem,1040px);
    margin:clamp(1rem,4vw,3rem) auto clamp(3rem,7vw,6rem);
}
.public-main-campaign>.alert{width:min(100%,760px);margin:0 auto 1rem}
.campaign-shell{
    --primary:var(--campaign-primary);
    --primary-strong:var(--campaign-accent);
    --primary-soft:color-mix(in srgb,var(--campaign-primary) 10%,#fff);
    width:100%;
    max-width:820px;
    margin:0 auto;
    color:var(--text);
}
.campaign-shell--booking,.campaign-shell--landing{max-width:1040px}
.campaign-brandbar{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:1rem;
    margin-bottom:clamp(1.8rem,4vw,3.25rem);
}
.campaign-brand{
    display:flex;
    align-items:center;
    gap:.8rem;
    min-width:0;
}
.campaign-brand-logo{
    display:grid;
    place-items:center;
    width:46px;
    height:46px;
    flex:0 0 46px;
    border:1px solid color-mix(in srgb,var(--campaign-primary) 18%,var(--line));
    border-radius:14px;
    object-fit:cover;
    background:#fff;
    box-shadow:0 8px 24px rgba(17,24,39,.06);
}
.campaign-brand-fallback{
    color:#fff;
    background:linear-gradient(135deg,var(--campaign-primary),var(--campaign-accent));
    font-size:.9rem;
    font-weight:900;
    letter-spacing:.04em;
}
.campaign-brand-copy{display:grid;min-width:0;line-height:1.2}
.campaign-brand-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.96rem}
.campaign-brand-copy span{margin-top:.2rem;color:var(--muted);font-size:.76rem;font-weight:650}
.campaign-type-badge{
    display:inline-flex;
    align-items:center;
    min-height:32px;
    padding:.38rem .72rem;
    border:1px solid color-mix(in srgb,var(--campaign-primary) 20%,var(--line));
    border-radius:999px;
    background:color-mix(in srgb,var(--campaign-primary) 7%,#fff);
    color:color-mix(in srgb,var(--campaign-accent) 80%,#4b5563);
    font-size:.72rem;
    font-weight:850;
    white-space:nowrap;
}
.campaign-preview-alert{
    margin-bottom:1.25rem;
    border:1px solid #f3ce76;
    background:#fffbeb;
    color:#854d0e;
}
.campaign-hero{
    display:grid;
    gap:.75rem;
    max-width:720px;
    margin:0 auto clamp(1.4rem,3vw,2rem);
    text-align:center;
}
.campaign-hero-kicker{
    margin:0;
    color:var(--campaign-accent);
    font-size:.76rem;
    font-weight:900;
    letter-spacing:.12em;
    text-transform:uppercase;
}
.campaign-hero h1{
    margin:0;
    font-size:clamp(2.25rem,7vw,4.5rem);
    line-height:1.02;
    text-wrap:balance;
}
.campaign-hero h2{
    margin:.1rem 0 0;
    color:var(--text);
    font-size:clamp(1.05rem,2vw,1.3rem);
    line-height:1.3;
}
.campaign-hero p{
    max-width:62ch;
    margin:0 auto;
    color:var(--muted);
    font-size:clamp(.96rem,1.7vw,1.06rem);
    line-height:1.7;
    text-wrap:pretty;
}
.campaign-surface{
    overflow:hidden;
    border:1px solid color-mix(in srgb,var(--text) 9%,transparent);
    border-radius:24px;
    background:#fff;
    box-shadow:0 18px 54px rgba(17,24,39,.07);
}
.campaign-form-intro{
    display:grid;
    gap:.4rem;
    padding:clamp(1.15rem,3vw,1.6rem) clamp(1.1rem,4vw,2rem) 0;
}
.campaign-form-intro h2{margin:0;font-size:clamp(1.2rem,3vw,1.55rem)}
.campaign-form-intro p{margin:0;color:var(--muted);line-height:1.6}
.campaign-content{width:min(100%,760px);margin:0 auto}

/* Dynamic forms */
.dynamic-form{
    display:grid;
    gap:0;
    padding:0;
    border:0;
    border-radius:0;
    background:transparent;
    box-shadow:none;
}
.campaign-form-progress{
    display:grid;
    gap:.65rem;
    padding:1.25rem clamp(1.1rem,4vw,2rem);
    border-bottom:1px solid var(--line);
    background:#fbfbfa;
}
.campaign-form-progress-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:1rem;
    color:var(--muted);
    font-size:.78rem;
    font-weight:750;
}
.campaign-form-progress-head strong{color:var(--text);font-size:.84rem;text-align:right}
.campaign-form-progress-track{
    width:100%;
    height:6px;
    overflow:hidden;
    border-radius:999px;
    background:#e9e9e6;
}
.campaign-form-progress-track span{
    display:block;
    height:100%;
    border-radius:inherit;
    background:linear-gradient(90deg,var(--campaign-primary),var(--campaign-accent));
    transition:width .25s ease;
}
.campaign-form-error-summary{
    display:grid;
    gap:.25rem;
    margin:1.25rem clamp(1.1rem,4vw,2rem) 0;
    padding:.9rem 1rem;
    border:1px solid #fecaca;
    border-radius:14px;
    background:#fff7f7;
    color:#991b1b;
}
.campaign-form-error-summary strong{font-size:.9rem}
.campaign-form-error-summary span{font-size:.84rem}
.campaign-form-page{
    display:grid;
    gap:1.1rem;
    padding:clamp(1.25rem,4vw,2rem);
}
.campaign-form-page-title{
    margin:0 0 .25rem;
    font-size:clamp(1.25rem,3vw,1.65rem);
    line-height:1.2;
    scroll-margin-top:1rem;
}
.campaign-form-page-title:focus{outline:none}
.form-question{
    display:grid;
    gap:.8rem;
    min-width:0;
    padding:1rem 0 1.15rem;
    border-bottom:1px solid #ececea;
}
.form-question:last-child{padding-bottom:0;border-bottom:0}
.dynamic-form[data-layout="conversational"] .campaign-form-page{gap:1.3rem;padding-block:clamp(1.5rem,5vw,2.5rem)}
.dynamic-form[data-layout="conversational"] .form-question{
    padding:clamp(1rem,3vw,1.35rem);
    border:1px solid var(--line);
    border-radius:18px;
    background:#fdfdfc;
}
.form-question-heading{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:1rem;
}
.form-question-copy{display:grid;gap:.3rem;min-width:0}
.form-question-copy strong{font-size:1rem;line-height:1.45;text-wrap:pretty}
.dynamic-form[data-layout="conversational"] .form-question-copy strong{font-size:1.08rem}
.form-question-copy small{font-size:.82rem;font-weight:550;line-height:1.5}
.form-question-requirement{
    flex:0 0 auto;
    margin-top:.05rem;
    padding:.22rem .5rem;
    border-radius:999px;
    background:#f2f2ef;
    color:var(--muted);
    font-size:.67rem;
    font-weight:800;
}
.form-question-requirement.is-required{
    background:color-mix(in srgb,var(--campaign-primary) 10%,#fff);
    color:color-mix(in srgb,var(--campaign-accent) 85%,#4b5563);
}
.form-question input:not([type="radio"]):not([type="checkbox"]):not([type="file"]),
.form-question select,.form-question textarea{
    min-height:50px;
    border-radius:12px;
    background:#fff;
}
.form-question textarea{min-height:130px;resize:vertical}
.form-choice-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:.6rem;
    min-width:0;
}
.form-choice{
    position:relative;
    display:flex;
    align-items:center;
    gap:.7rem;
    min-width:0;
    min-height:48px;
    padding:.7rem .8rem;
    border:1px solid var(--line);
    border-radius:12px;
    background:#fff;
    color:var(--text);
    cursor:pointer;
    font-size:.88rem;
    font-weight:750;
    transition:border-color .16s ease,background .16s ease,box-shadow .16s ease,transform .16s ease;
}
.form-choice:hover{border-color:color-mix(in srgb,var(--campaign-primary) 48%,var(--line));transform:translateY(-1px)}
.form-choice input{
    position:absolute;
    width:1px;
    height:1px;
    opacity:0;
    pointer-events:none;
}
.form-choice-control{
    width:18px;
    height:18px;
    flex:0 0 18px;
    border:2px solid #c8c8c3;
    border-radius:50%;
    background:#fff;
    box-shadow:inset 0 0 0 4px #fff;
}
.form-choice input[type="checkbox"]+.form-choice-control{border-radius:5px}
.form-choice:has(input:checked){
    border-color:var(--campaign-primary);
    background:color-mix(in srgb,var(--campaign-primary) 7%,#fff);
    box-shadow:0 0 0 2px color-mix(in srgb,var(--campaign-primary) 10%,transparent);
}
.form-choice input:checked+.form-choice-control{
    border-color:var(--campaign-primary);
    background:var(--campaign-primary);
}
.form-choice input[type="checkbox"]:checked+.form-choice-control{
    box-shadow:inset 0 0 0 3px #fff;
}
.form-choice:has(input:focus-visible){
    outline:3px solid color-mix(in srgb,var(--campaign-primary) 28%,transparent);
    outline-offset:2px;
}
.form-choice-label{min-width:0;overflow-wrap:anywhere}
.form-choice-grid--rating,.form-choice-grid--csat{
    grid-template-columns:repeat(5,minmax(52px,1fr));
}
.form-choice-grid--rating .form-choice,.form-choice-grid--csat .form-choice{
    justify-content:center;
    gap:.35rem;
    padding:.65rem .4rem;
}
.form-choice-grid--rating .form-choice-control,.form-choice-grid--csat .form-choice-control{display:none}
.form-choice-star{color:#f59e0b;font-size:1.15rem}
.form-choice-grid--nps,.form-choice-grid--linear_scale,.matrix-scale{
    grid-template-columns:repeat(auto-fit,minmax(42px,1fr));
}
.form-choice-grid--nps .form-choice,.form-choice-grid--linear_scale .form-choice,.matrix-scale .form-choice{
    justify-content:center;
    min-height:44px;
    padding:.55rem .3rem;
}
.form-choice-grid--nps .form-choice-control,.form-choice-grid--linear_scale .form-choice-control,.matrix-scale .form-choice-control{display:none}
.form-ranking-list,.form-matrix-list{display:grid;gap:.65rem}
.form-ranking-row{
    display:grid;
    grid-template-columns:32px minmax(0,1fr) 82px;
    align-items:center;
    gap:.75rem;
    padding:.7rem;
    border:1px solid var(--line);
    border-radius:12px;
    background:#fff;
}
.form-ranking-index{
    display:grid;
    place-items:center;
    width:30px;
    height:30px;
    border-radius:9px;
    background:#f3f3f0;
    color:var(--muted);
    font-size:.75rem;
    font-weight:900;
}
.form-ranking-row input{min-height:42px!important;padding:.5rem!important;text-align:center}
.form-matrix-row{
    display:grid;
    gap:.7rem;
    min-width:0;
    padding:.8rem;
    border:1px solid var(--line);
    border-radius:12px;
    background:#fff;
}
.form-matrix-row legend{padding:0 .25rem;font-size:.86rem;font-weight:800}
.form-file-control{
    padding:1rem;
    border:1px dashed color-mix(in srgb,var(--campaign-primary) 42%,var(--line));
    border-radius:14px;
    background:color-mix(in srgb,var(--campaign-primary) 4%,#fff);
}
.form-file-control input{padding:0;border:0;background:transparent}
.form-consent-control,.campaign-consent{
    padding:.9rem 1rem;
    border:1px solid var(--line);
    border-radius:14px;
    background:#fafaf8;
}
.form-consent-control.check,.campaign-consent.check{align-items:flex-start}
.form-consent-control input,.campaign-consent input{margin-top:.18rem}
.form-contact-preferences{
    margin:0 clamp(1.1rem,4vw,2rem) 1.25rem;
    padding:1rem;
    border:1px solid var(--line);
    border-radius:14px;
    background:#fafaf8;
}
.form-contact-preferences summary{cursor:pointer;font-size:.86rem;font-weight:800}
.dynamic-form>.campaign-consent{margin:0 clamp(1.1rem,4vw,2rem) 1.25rem}
.dynamic-form>.form-actions{
    position:sticky;
    bottom:0;
    z-index:3;
    justify-content:flex-end;
    margin-top:0;
    padding:1rem clamp(1.1rem,4vw,2rem);
    border-top:1px solid var(--line);
    background:rgba(255,255,255,.94);
    backdrop-filter:blur(12px);
}
.dynamic-form>.form-actions .button{min-width:120px}
.dynamic-form>.form-actions .button-secondary{margin-right:auto}
.form-ending{
    justify-items:center;
    padding:clamp(2rem,6vw,4rem);
    border:0;
    text-align:center;
    box-shadow:none;
}
.form-ending h2{margin:0;font-size:clamp(1.6rem,4vw,2.25rem)}
.form-ending p{max-width:52ch;margin:0;color:var(--muted)}
.form-ending .button{margin-top:.5rem}
.error{color:#b91c1c!important;font-weight:700}

/* Review, coupon and landing */
.review-card,.coupon-card{
    display:grid;
    gap:1rem;
    padding:clamp(1.25rem,4vw,2rem);
}
.review-card h2,.coupon-card h2{margin:0;font-size:clamp(1.2rem,3vw,1.5rem)}
.review-card>p,.coupon-card>p{margin:-.35rem 0 .25rem;color:var(--muted);line-height:1.6}
.review-rating{
    display:grid;
    grid-template-columns:repeat(5,minmax(52px,1fr));
    gap:.55rem;
}
.review-rating button{
    display:grid;
    place-items:center;
    gap:.1rem;
    min-height:72px;
    padding:.6rem;
    border:1px solid var(--line);
    border-radius:14px;
    background:#fff;
    color:#f59e0b;
    font-size:1.45rem;
    cursor:pointer;
    transition:.16s ease;
}
.review-rating button:hover,.review-rating button.is-active{
    border-color:var(--campaign-primary);
    background:color-mix(in srgb,var(--campaign-primary) 7%,#fff);
    transform:translateY(-1px);
}
.review-rating button:focus-visible{outline:3px solid color-mix(in srgb,var(--campaign-primary) 28%,transparent);outline-offset:2px}
.review-rating small{color:var(--muted);font-size:.68rem;font-weight:850}
.coupon-offer{
    display:grid;
    justify-items:center;
    gap:.55rem;
    padding:clamp(1.5rem,5vw,2.5rem);
    border-bottom:1px solid var(--line);
    background:linear-gradient(180deg,color-mix(in srgb,var(--campaign-primary) 8%,#fff),#fff);
    text-align:center;
}
.coupon-offer span{color:var(--campaign-accent);font-size:.76rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase}
.coupon-offer strong{font-family:"Paytone One";font-size:clamp(3rem,10vw,5rem);font-weight:400;line-height:1;color:var(--campaign-accent)}
.coupon-offer p{max-width:52ch;margin:0;color:var(--muted)}
.coupon-form{padding:clamp(1.25rem,4vw,2rem);border:0;box-shadow:none}
.landing-content{padding:clamp(1.1rem,4vw,2rem)}

/* Booking: a single reading axis with an inline summary. */
.campaign-booking-intro{
    display:flex;
    align-items:center;
    gap:.9rem;
    margin:0 auto 1rem;
    padding:1rem 1.1rem;
    border:1px solid color-mix(in srgb,var(--campaign-primary) 16%,var(--line));
    border-radius:18px;
    background:color-mix(in srgb,var(--campaign-primary) 5%,#fff);
}
.campaign-booking-intro p{margin:0;color:var(--muted)}
.booking-scheduler,.booking-workspace{width:100%;min-width:0}
.booking-workspace{display:flex!important;flex-direction:column;align-items:stretch;gap:1rem}
.booking-stage{order:1;align-self:stretch;width:100%;min-height:0!important;padding:clamp(1rem,4vw,1.5rem)}
.booking-details-form .form-grid{align-items:start}
.booking-details-form .form-grid>label{align-content:start}
.booking-field-label{display:flex;align-items:baseline;gap:.35rem}
.booking-field-label small{font-size:.78rem;font-weight:550}
.booking-summary-card{
    order:2;
    position:static!important;
    align-self:stretch;
    width:100%;
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:.75rem;
    padding:1rem 1.1rem;
    border:1px solid var(--line);
    border-radius:18px;
    background:#fff;
    box-shadow:none;
}
.booking-summary-card>.eyebrow{grid-column:1/-1;margin:0}
.booking-summary-card .booking-summary-service,
.booking-summary-card .booking-summary-line{
    min-height:72px;
    margin:0;
    padding:.75rem;
    border:1px solid var(--line);
    border-radius:12px;
    background:#fafaf8;
}
.booking-summary-card .booking-summary-line{border-bottom:1px solid var(--line)}
.booking-summary-card .booking-trust{grid-column:1/-1}
.booking-summary-card .booking-summary-service{background:color-mix(in srgb,var(--campaign-primary) 6%,#fff)}

.campaign-footer{
    justify-content:center;
    padding-bottom:2rem;
    font-size:.78rem;
}
.campaign-footer .public-footer-links{position:absolute;left:-10000px}

@media(max-width:760px){
    .public-main-campaign{width:min(100% - 1rem,1040px);margin-top:.75rem}
    .campaign-brandbar{margin:.35rem .35rem 1.7rem}
    .campaign-brand-copy span{display:none}
    .campaign-type-badge{min-height:28px;padding:.3rem .58rem}
    .campaign-hero{padding:0 .6rem}
    .campaign-surface{border-radius:20px}
    .form-choice-grid{grid-template-columns:1fr}
    .form-choice-grid--rating,.form-choice-grid--csat{grid-template-columns:repeat(5,minmax(44px,1fr))}
    .form-choice-grid--nps,.form-choice-grid--linear_scale,.matrix-scale{grid-template-columns:repeat(6,minmax(38px,1fr))}
    .booking-summary-card{grid-template-columns:repeat(2,minmax(0,1fr))}
    .booking-summary-card .booking-summary-service{grid-column:1/-1}
}
@media(max-width:480px){
    .campaign-brand-logo{width:40px;height:40px;flex-basis:40px;border-radius:12px}
    .campaign-hero h1{font-size:clamp(2rem,12vw,3rem)}
    .form-question-heading{display:grid;gap:.5rem}
    .form-question-requirement{justify-self:start}
    .form-choice-grid--rating,.form-choice-grid--csat{gap:.35rem}
    .form-choice-grid--rating .form-choice,.form-choice-grid--csat .form-choice{min-height:44px}
    .form-choice-star{display:none}
    .form-ranking-row{grid-template-columns:28px minmax(0,1fr) 66px;gap:.5rem;padding:.55rem}
    .dynamic-form>.form-actions{gap:.5rem}
    .dynamic-form>.form-actions .button{min-width:0;flex:1}
    .review-rating{gap:.35rem}
    .review-rating button{min-height:58px;padding:.4rem;font-size:1.2rem}
    .booking-summary-card{grid-template-columns:1fr}
    .booking-summary-card .booking-summary-service,.booking-summary-card .booking-trust{grid-column:auto}
}
